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

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

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

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

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

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

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

अगर निजी कुंजी ऐसी जगह पर है जहां मैसेज आसानी से नहीं भेजा जा सकता, जैसे कि HSM या केएमएस, तो Prehash और SignPrehash देखें. यह हस्ताक्षर करने की प्रोसेस को दो हिस्सों में बांटता है: पहला, सिर्फ़ सार्वजनिक कुंजी का इस्तेमाल करके हैश करना और दूसरा, सिर्फ़ निजी कुंजी का इस्तेमाल करके हस्ताक्षर करना.

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

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

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

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

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

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

बदलाव करने की क्षमता

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

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

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