डिजिटल हस्ताक्षर

डिजिटल हस्ताक्षर प्राइमिटिव की मदद से, यह पुष्टि की जा सकती है कि आपके डेटा में किसी ने छेड़छाड़ तो नहीं की है. इससे हस्ताक्षर किए गए डेटा की पुष्टि और सुरक्षा की गारंटी मिलती है, लेकिन डेटा को गुप्त रखने की गारंटी नहीं मिलती. यह असिमेट्रिक है, इसका मतलब है कि यह कुंजियों के जोड़े (सार्वजनिक कुंजी और निजी कुंजी) का इस्तेमाल करता है.

डिजिटल हस्ताक्षर प्राइमिटिव में ये प्रॉपर्टी होती हैं:

  • प्रामाणिकता: जब तक आपके पास निजी कुंजी नहीं है, तब तक ऐसा हस्ताक्षर नहीं बनाया जा सकता जिसकी पुष्टि PublicKeyVerify.Verify(signature, message) करे.
  • असिममेट्रिक: हस्ताक्षर बनाने के लिए, पुष्टि करने के लिए इस्तेमाल की जाने वाली कुंजी से अलग कुंजी का इस्तेमाल किया जाता है. इससे, हस्ताक्षर की पुष्टि करने के लिए, सार्वजनिक पासकोड को उन पक्षों के साथ शेयर किया जा सकता है जो हस्ताक्षर खुद नहीं बना सकते.

अगर आपको असिमेट्री की ज़रूरत नहीं है, तो इसके बजाय आसान और ज़्यादा असरदार MAC प्राइमिटिव का इस्तेमाल करें.

डिजिटल हस्ताक्षर की सुविधा को Tink में, प्राइमिटिव के एक जोड़े के तौर पर दिखाया गया है:

  • डेटा पर हस्ताक्षर करने के लिए PublicKeySign
  • सिग्नेचर की पुष्टि करने के लिए PublicKeyVerify

कुंजी का टाइप चुनना

हमारा सुझाव है कि ज़्यादातर इस्तेमाल के उदाहरणों के लिए, ECDSA_P256 का इस्तेमाल करें. हालांकि, इसके अलावा भी कई विकल्प उपलब्ध हैं. आम तौर पर, ये बातें सही हैं:

  • ECDSA_P256 सबसे ज़्यादा इस्तेमाल किया जाने वाला विकल्प है और यह डिफ़ॉल्ट रूप से सेट होता है. हालांकि, ध्यान रखें कि ईसीएसडीए हस्ताक्षर बदले जा सकते हैं.
  • ED25519, डिटरमिनिस्टिक हस्ताक्षर बनाता है और ECDSA_P256 की तुलना में बेहतर परफ़ॉर्मेंस देता है.
  • RSA_SSA_PKCS1_3072_SHA256_F4, डिटरमिनिस्टिक हस्ताक्षर बनाता है और पुष्टि करने की सबसे अच्छी परफ़ॉर्मेंस देता है. हालांकि, हस्ताक्षर करने की प्रोसेस, ECDSA_P256 या ED25519 की तुलना में काफ़ी धीमी होती है.

सुरक्षा से जुड़ी कम से कम गारंटी

  • हस्ताक्षर किए जाने वाले डेटा की लंबाई कोई भी हो सकती है
  • एलिप्टिक कर्व पर आधारित स्कीम के लिए, चुने गए मैसेज पर आधारित अडैप्टिव हमलों के ख़िलाफ़ 128-बिट सुरक्षा लेवल
  • आरएसए आधारित स्कीम के लिए, अडैप्टिव चुने गए मैसेज वाले हमलों के ख़िलाफ़ 112-बिट सुरक्षा लेवल (2048-बिट कुंजियों की अनुमति देता है)

बदलाव करने की सुविधा

अगर कोई हमलावर, पहले से हस्ताक्षर किए गए मैसेज के लिए कोई दूसरा मान्य हस्ताक्षर बना सकता है, तो हस्ताक्षर की स्कीम को बदला जा सकता है. हालांकि, ज़्यादातर मामलों में यह समस्या नहीं होती, लेकिन कुछ मामलों में प्रोग्रामर यह मान लेते हैं कि मान्य हस्ताक्षर यूनीक होते हैं. इससे अनचाहे नतीजे मिल सकते हैं.

इस्तेमाल के उदाहरण

देखें कि मुझे डेटा पर डिजिटल हस्ताक्षर करना है.