डेटा के साथ पुष्टि की गई एन्क्रिप्शन (डेटा के साथ पुष्टि की गई एन्क्रिप्शन) की सुविधा देने वाला प्रिमिटिव, डिटरमिनिस्टिक प्रॉपर्टी के साथ एन्क्रिप्शन की सुविधा देता है: एक ही डेटा को एन्क्रिप्ट करने पर हमेशा एक ही साइफ़रटेक्स्ट मिलता है. इस तरह का एन्क्रिप्शन, की रैपिंग या एन्क्रिप्ट किए गए डेटा को खोजने की कुछ स्कीम के लिए फ़ायदेमंद होता है. ज़्यादा जानकारी के लिए, RFC 5297, सेक्शन 1.3 देखें. डिटरमिनिस्टिक प्रॉपर्टी की वजह से, इस प्रिमिटिव को लागू करने पर गोपनीयता का उल्लंघन हो सकता है. ऐसा इसलिए, क्योंकि हमलावर को किसी मैसेज के अन्य इंस्टेंस की पहचान करने के लिए, सिर्फ़ उस मैसेज के सिफ़रटेक्स्ट का पता लगाना होता है.
डिटरमिनिस्टिक एईएडी में ये प्रॉपर्टी होती हैं:
- Secrecy: सादे टेक्स्ट के बारे में कुछ भी पता नहीं चलता. सिर्फ़ इसकी लंबाई और दोहराए गए सादे टेक्स्ट की समानता के बारे में पता चलता है.
- भरोसेमंद होना: एन्क्रिप्ट (सुरक्षित) किए गए टेक्स्ट के पीछे मौजूद सादे टेक्स्ट को बिना पता चले बदला नहीं जा सकता.
- सिमेट्रिक: इसमें प्लेनटेक्स्ट को एन्क्रिप्ट (सुरक्षित) करने और सिफ़रटेक्स्ट को डिक्रिप्ट (सुरक्षित तरीके से बदलना) करने के लिए, एक ही कुंजी का इस्तेमाल किया जाता है.
- डिटरमिनिस्टिक: जब तक प्राइमरी कुंजी नहीं बदली जाती, तब तक एक ही पैरामीटर का इस्तेमाल करके किसी सादे टेक्स्ट को दो बार एन्क्रिप्ट (सुरक्षित) करने पर, एक ही साइफ़रटेक्स्ट मिलता है.
आपके बच्चे का डेटा
डिटरमिनिस्टिक एईएडी का इस्तेमाल, साइफ़रटेक्स्ट को किसी खास एसोसिएटेड डेटा से जोड़ने के लिए किया जा सकता है. मान लें कि आपके पास एक डेटाबेस है, जिसमें user-id और encrypted-medical-history फ़ील्ड हैं. इस उदाहरण में, user-id को encrypted-medical-history को एन्क्रिप्ट (सुरक्षित) करते समय, उससे जुड़ा डेटा के तौर पर इस्तेमाल किया जा सकता है. इससे हमलावर को किसी उपयोगकर्ता की मेडिकल हिस्ट्री को दूसरे उपयोगकर्ता के खाते में ट्रांसफ़र करने से रोका जा सकता है.
डेटा को लिंक करना ज़रूरी नहीं है. अगर ऐसा किया जाता है, तो डिक्रिप्ट करने की प्रोसेस सिर्फ़ तब पूरी होगी, जब एन्क्रिप्ट और डिक्रिप्ट, दोनों कॉल में एक जैसा डेटा पास किया गया हो.
कुंजी का टाइप चुनें
हमारा सुझाव है कि सभी इस्तेमाल के मामलों के लिए, AES256_SIV कुंजी टाइप का इस्तेमाल करें.
सुरक्षा की गारंटी
- पुष्टि करने का तरीका कम से कम 80-बिट का होना चाहिए.
- प्लेनटेक्स्ट और उससे जुड़े डेटा की लंबाई कुछ भी हो सकती है. हालांकि, यह 0 से 232 बाइट के बीच होनी चाहिए.
- इसमें, कुंजी को वापस पाने के लिए किए जाने वाले हमलों से बचने के लिए 128-बिट सुरक्षा स्तर होता है. साथ ही, एक से ज़्यादा उपयोगकर्ताओं के हमलों में भी 232 कुंजियों तक सुरक्षा मिलती है. इसका मतलब है कि अगर कोई विरोधी, 232 कुंजियों के तहत एन्क्रिप्ट किए गए एक ही मैसेज के 232 सिफ़रटेक्स्ट हासिल कर लेता है, तो उसे एक कुंजी पाने के लिए 2128 कंप्यूटेशन करने होंगे.
- 238 मैसेज को सुरक्षित तरीके से एन्क्रिप्ट (सुरक्षित) करने की सुविधा. हालांकि, हर मैसेज का साइज़ 1 एमबी से कम होना चाहिए.
इस्तेमाल का उदाहरण
मुझे डेटा को डिटरमिनिस्टिक तरीके से एन्क्रिप्ट करना है और मुझे साइफ़रटेक्स्ट को उसके कॉन्टेक्स्ट से बाइंड करना है.