डिजिटल हस्ताक्षर से यह पुष्टि की जा सकती है कि कोई भी व्यक्ति आपके डेटा से छेड़छाड़ नहीं कर रहा है. यह हस्ताक्षर किए गए डेटा की प्रामाणिकता और प्रामाणिकता की जानकारी देता है, लेकिन उसकी निजता नहीं. यह ऐसिमेट्रिकल नहीं है, जिसका मतलब है कि इसमें कुंजियों (सार्वजनिक कुंजी और निजी कुंजी) के जोड़े का इस्तेमाल किया जाता है.
हस्ताक्षर में ये प्रॉपर्टी शामिल होती हैं:
- पुष्टि करना: ऐसा हस्ताक्षर नहीं बनाया जा सकता जिसकी
PublicKeyVerify.Verify(signature, message)
पुष्टि करता हो. ऐसा तब तक नहीं किया जा सकता, जब तक आपके पास निजी पासकोड न हो. - ऐसिमेट्रिक: हस्ताक्षर बनाने के लिए उसकी पुष्टि करने के बजाय, एक अलग कुंजी का इस्तेमाल किया जाता है. इससे, उन पक्षों को हस्ताक्षर की पुष्टि करने के लिए सार्वजनिक पासकोड उपलब्ध कराया जा सकता है जो खुद हस्ताक्षर नहीं बना सकते.
अगर आपको अलग-अलग तरह की चीज़ों की ज़रूरत नहीं है, तो आसान और ज़्यादा कारगर एमएसी का इस्तेमाल करें.
डिजिटल हस्ताक्षर के फ़ंक्शन को Tink में, प्रिमिटिव के जोड़े के तौर पर दिखाया जाता है:
- साइन डेटा के लिए PublicKeySign
- हस्ताक्षर की पुष्टि करने के लिए PublicKeyVerify
कोई कुंजी टाइप चुनें
हम ज़्यादातर मामलों में, ECDSA_P256 का इस्तेमाल करने का सुझाव देते हैं. हालांकि, कई तरह के विकल्प भी उपलब्ध हैं. आम तौर पर, नीचे दी गई बातें सही होती हैं:
- ECDSA_P256 सबसे ज़्यादा इस्तेमाल किया जाने वाला विकल्प है और एक उचित डिफ़ॉल्ट विकल्प है. ध्यान दें कि ईसीडीएसए हस्ताक्षर नुकसान पहुंचाने वाले हैं.
- ED25519, तय किए गए हस्ताक्षर बनाता है और ECDSA_P256 की तुलना में बेहतर परफ़ॉर्मेंस देता है.
- आरएसए_SSA_PKCS1_3072_SHA256_F4, डिटरमिनिस्टिक सिग्नेचर बनाता है और पुष्टि करने का सबसे अच्छा परफ़ॉर्मेंस देता है. हालांकि, ECDSA_P256 या ED25519 की तुलना में, साइनिंग की प्रोसेस ज़्यादा धीमी होती है.
सुरक्षा की कम से कम गारंटी
- हस्ताक्षर किए जाने वाले डेटा में, मनमुताबिक लंबाई हो सकती है
- इलिप्टिकल कर्व आधारित स्कीम के लिए एडैप्टिव चुने गए मैसेज अटैक के लिए 128-बिट का सुरक्षा स्तर
- आरएसए पर आधारित स्कीम के लिए, ज़रूरत के हिसाब से चुने गए मैसेज के हमलों के लिए 112-बिट की सुरक्षा लेवल (2048-बिट कुंजियों को अनुमति दी जाती है)
इस्तेमाल का उदाहरण
मुझे डेटा पर डिजिटल रूप से हस्ताक्षर करना है को देखें.
मैलेबिलिटी
अगर कोई हमलावर पहले से साइन किए गए मैसेज के लिए एक अलग मान्य हस्ताक्षर बना सकता है, तो उस मैसेज को आसानी से समझा जा सकता है. हालांकि, ज़्यादातर स्थितियों में इस तरह की समस्या नहीं होती, लेकिन कुछ मामलों में प्रोग्रामर अनुमान लगाते हैं कि मान्य हस्ताक्षर यूनीक होते हैं. इससे अनचाहे नतीजे मिल सकते हैं.