हाइब्रिड एन्क्रिप्शन

हाइब्रिड एन्क्रिप्शन प्रिमिटिव, सार्वजनिक कुंजी (ऐसिमेट्रिक) क्रिप्टोग्राफ़ी की सुविधा के साथ सिमेट्रिक एन्क्रिप्शन की क्षमता को जोड़ता है. कोई भी व्यक्ति सार्वजनिक कुंजी का इस्तेमाल करके डेटा को एन्क्रिप्ट (सुरक्षित) कर सकता है, लेकिन सिर्फ़ निजी कुंजी वाले उपयोगकर्ता ही डेटा को डिक्रिप्ट कर सकते हैं.

हाइब्रिड एन्क्रिप्शन के लिए, मैसेज भेजने वाला हर मैसेज के सादे टेक्स्ट को एन्क्रिप्ट (सुरक्षित) करने के लिए, एक नई सिमेट्रिक कुंजी जनरेट करता है. ऐसा करके, उस मैसेज को एन्क्रिप्ट करने में मदद मिलती है. सिमेट्रिक कुंजी को पाने वाले की सार्वजनिक कुंजी के साथ एनकैप्सुलेट किया जाता है. हाइब्रिड डिक्रिप्शन के लिए, पाने वाले व्यक्ति सिमेट्रिक कुंजी को डिकैप्सुलेट करते हैं. इसके बाद, मूल सादे टेक्स्ट को वापस पाने के लिए, सिफ़रटेक्स्ट को डिक्रिप्ट करने के लिए इसका इस्तेमाल किया जाता है. एन्क्रिप्ट (सुरक्षित) करने के लिए इस्तेमाल किए गए टेक्स्ट को एन्क्रिप्ट (सुरक्षित) करने के तरीके और पासकोड को एन्क्रिप्ट (सुरक्षित) करने के तरीके के बारे में जानने के लिए, Tink हाइब्रिड एन्क्रिप्शन वायर फ़ॉर्मैट देखें.

हाइब्रिड एन्क्रिप्शन में ये प्रॉपर्टी होती हैं:

  • निजता: एन्क्रिप्ट (सुरक्षित) किए गए सादे टेक्स्ट के बारे में कोई भी जानकारी (अवधि को छोड़कर) तब तक नहीं पाई जा सकती, जब तक कि उसके पास निजी कुंजी का ऐक्सेस न हो.
  • असमानता: साइफ़रटेक्स्ट को सार्वजनिक कुंजी से एन्क्रिप्ट किया जा सकता है, लेकिन डिक्रिप्शन के लिए निजी कुंजी की ज़रूरत होती है.
  • किसी भी क्रम में लगाने की सुविधा: एन्क्रिप्ट (सुरक्षित) करने का तरीका किसी भी क्रम में लगाया जाता है. एक ही सादे टेक्स्ट वाले दो मैसेज, एक ही सादे टेक्स्ट में नहीं जाएंगे. इससे हमलावरों को यह पता नहीं चल पाता कि कौनसा साइफ़रटेक्स्ट, दिए गए सादे टेक्स्ट से जुड़ा है.

हाइब्रिड एन्क्रिप्शन को Tink में, प्रिमिटिव के जोड़े के तौर पर दिखाया जाता है:

  • एन्क्रिप्ट (सुरक्षित) करने के लिए, HybridEncrypt का इस्तेमाल करना
  • डिक्रिप्शन के लिए HybridDecrypt

कॉन्टेक्स्ट जानकारी पैरामीटर

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

हाइब्रिड एन्क्रिप्शन को एक साथ लागू करने से, कॉन्टेक्स्ट की जानकारी को साइफ़रटेक्स्ट से कई तरह से जोड़ा जा सकता है. उदाहरण के लिए:

  • AEAD सिमेट्रिक एन्क्रिप्शन के लिए, असोसिएट किए गए डेटा इनपुट के रूप में context_info का इस्तेमाल करें (cf. RFC 5116).
  • HKDF के लिए, context_info को “CtxInfo” इनपुट के तौर पर इस्तेमाल करें. अगर लागू करने के लिए, HKDF का इस्तेमाल मुख्य डेरिवेशन फ़ंक्शन के तौर पर किया जाता है, सीएफ़. आरएफ़सी 5869.

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

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

DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_256_GCM खास तौर पर काम करता है:

  • केईएम: डिफ़ी–हेलमैन ओवर Curve25519, HKDF-SHA-256
  • KDF: भेजने वाले और पाने वाले का कॉन्टेक्स्ट पाने के लिए HKDF-SHA-256.
  • AEAD: 12-बाइट वाला नॉन्स वाला AES-256-GCM, जो HPKE स्टैंडर्ड के हिसाब से जनरेट किया गया है.

काम करने वाले अन्य HPKE की कुंजियों में, इनके अलावा और भी चीज़ें शामिल हो सकती हैं:

  • DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_128_GCM
  • DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_CHACHA20_POLY1305
  • DHKEM_P256_HKDF_SHA256_HKDF_SHA256_AES_128_GCM
  • DHKEM_P521_HKDF_SHA512_HKDF_SHA512_AES_256_GCM

KEM, KDF, और AEAD के लिए एल्गोरिदम के विकल्पों के बारे में ज़्यादा जानकारी के लिए, RFC 9180 देखें.

हालांकि, अब इसका सुझाव नहीं दिया जाता है, लेकिन Tink ईसीईईएस के कुछ वैरिएंट के साथ भी काम करता है, जैसा कि विक्टर शोप के आईएसओ 18033-2 स्टैंडर्ड में बताया गया है. कुछ काम करने वाले ECIES कुंजी के टाइप नीचे दिए गए हैं:

  • ECIES_P256_HKDF_HMAC_SHA256_AES128_GCM
  • ECIES_P256_COMPRESSED_HKDF_HMAC_SHA256_AES128_GCM
  • ECIES_P256_HKDF_HMAC_SHA256_AES128_CTR_HMAC_SHA256
  • ECIES_P256_COMPRESSED_HKDF_HMAC_SHA256_AES128_CTR_HMAC_SHA256

कम से कम प्रॉपर्टी

  • सादे टेक्स्ट और कॉन्टेक्स्ट की जानकारी की लंबाई, अपने हिसाब से सेट की जा सकती है (0..232 बाइट की रेंज में)
  • ज़रूरत के हिसाब से चुने गए साइफ़रटेक्स्ट हमलों से सुरक्षित रहें
  • एलिप्टिक कर्व आधारित स्कीम के लिए 128-बिट सिक्योरिटी

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

देखें कि मुझे डेटा बदलना है.