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

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

डिजिटल सिग्नेचर प्रिमिटिव में ये प्रॉपर्टी होती हैं:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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