जुड़े हुए डेटा के साथ पुष्टि किया गया एन्क्रिप्ट (सुरक्षित) किया गया डेटा (एडीएडी)

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

एईएडी की ये प्रॉपर्टी होती हैं:

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

आपके बच्चे का डेटा

एईएडी का इस्तेमाल, सिफ़रटेक्स्ट को किसी खास डेटा से जोड़ने के लिए किया जा सकता है. मान लें कि आपके पास एक डेटाबेस है, जिसमें user-id और encrypted-medical-history फ़ील्ड हैं. इस मामले में, encrypted-medical-history को एन्क्रिप्ट (सुरक्षित) करते समय, user-id को डेटा के तौर पर इस्तेमाल किया जा सकता है. इससे, कोई हमलावर किसी उपयोगकर्ता की मेडिकल हिस्ट्री को दूसरे उपयोगकर्ता के पास नहीं भेज सकता.

डेटा को शामिल करना ज़रूरी नहीं है. अगर डेटा शामिल किया जाता है, तो डिक्रिप्शन सिर्फ़ तब काम करता है, जब एन्क्रिप्ट और डिक्रिप्ट करने के लिए, एक ही डेटा पास किया जाता है.

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

हम ज़्यादातर मामलों में AES128_GCM का इस्तेमाल करने का सुझाव देते हैं. हालांकि, अलग-अलग ज़रूरतों के लिए, अलग-अलग टाइप की कुंजियां उपलब्ध हैं. AES128 से 128-बिट सुरक्षा मिलती है, जबकि AES256 से 256-बिट सुरक्षा मिलती है.

किसी मोड को चुनते समय, सुरक्षा से जुड़ी दो अहम पाबंदियां होती हैं:

  1. QPS: एक ही कुंजी से कितने मैसेज एन्क्रिप्ट (सुरक्षित) किए जा सकते हैं?
  2. मैसेज का साइज़: मैसेज कितने बड़े हो सकते हैं?

इन टाइप की कुंजियों का इस्तेमाल किया जा सकता है:

  • AES-CTR-HMAC (AES128_CTR_HMAC_SHA256, AES256_CTR_HMAC_SHA256) के साथ, 16-बाइट इनिशियलाइज़ेशन वेक्टर (आईवी) का इस्तेमाल किया जा सकता है. यह सबसे सुरक्षित मोड है.
    • की-कमिटिंग.
  • AES-EAX (AES128_EAX, AES256_EAX), AES128_CTR_HMAC_SHA256 की तुलना में थोड़ा कम सुरक्षित और थोड़ा तेज़ है.
    • एमएलजीआर के लिए, की-कमिटिंग की सुविधा उपलब्ध नहीं है.
  • AES-GCM (AES128_GCM, AES256_GCM) आम तौर पर सबसे तेज़ मोड होता है. इसमें मैसेज की संख्या और मैसेज के साइज़ पर सबसे ज़्यादा पाबंदियां होती हैं. जब प्लेनटेक्स्ट और उससे जुड़े डेटा की लंबाई (नीचे) की सीमाएं पार हो जाती हैं, तो AES-GCM में गड़बड़ी हो जाती है. इससे प्लेनटेक्स्ट और AES-GCM की इंटरनल कुंजी का पुष्टि करने वाला हिस्सा लीक हो जाता है.
    • AES-GCM, मज़बूत [ABN] नहीं है. साथ ही, इसमें की-कमिटिंग [GLR] की सुविधा भी उपलब्ध नहीं है. ऐसा सिफ़रटेक्स्ट जनरेट किया जा सकता है जिसे दो अलग-अलग कुंजियों से डिक्रिप्ट किया जा सकता है. इससे, व्यावहारिक तौर पर हमले किए जा सकते हैं [DGRW]. अगर कुंजी को कोई विरोधी चुनता है, तो अपने थ्रेट मॉडल की समीक्षा सावधानी से करें. अगर यह बात आप पर लागू होती है, तो
  • AES-GCM-SIV (AES128_GCM_SIV, AES256_GCM_SIV), AES-GCM की तरह ही तेज़ है. इसकी सीमाएं, AES-GCM की तरह ही होती हैं. जैसे, मैसेज की संख्या और मैसेज का साइज़. हालांकि, जब ये सीमाएं पार हो जाती हैं, तो इसमें गड़बड़ी होने की संभावना कम होती है. इससे सिर्फ़ यह जानकारी लीक हो सकती है कि दो मैसेज एक जैसे हैं. इस वजह से, इसका इस्तेमाल AES-GCM की तुलना में ज़्यादा सुरक्षित है. हालांकि, व्यावहारिक तौर पर इसका इस्तेमाल कम किया जाता है. Java में इसका इस्तेमाल करने के लिए, आपको Conscrypt इंस्टॉल करना होगा.
    • ADGKLS के लिए, की-कमिटिंग की सुविधा उपलब्ध नहीं है.
  • XChaCha20-Poly1305 (XCHACHA20_POLY1305) में, AES-GCM की तुलना में मैसेज की संख्या और मैसेज के साइज़ की सीमाएं ज़्यादा होती हैं. हालांकि, जब इसमें गड़बड़ी होती है (ऐसा होने की संभावना बहुत कम होती है), तो कुंजी का डेटा भी लीक हो जाता है. यह हार्डवेयर से तेज़ नहीं होता. इसलिए, हार्डवेयर से तेज़ होने की सुविधा उपलब्ध होने पर, यह AES मोड की तुलना में धीमा हो सकता है.
    • LGR के लिए, की-कमिटिंग की सुविधा उपलब्ध नहीं है.

एईएडी सिफ़रटेक्स्ट के वायर फ़ॉर्मैट के बारे में ज़्यादा जानें.

सुरक्षा की गारंटी

एईएडी के लागू होने पर, ये सुविधाएं मिलती हैं:

  • सीसीए2 सुरक्षा.
  • पुष्टि करने का बेहतर तरीका, कम से कम 80-बिट.
  • कम से कम 232 मैसेज को एन्क्रिप्ट (सुरक्षित) करने की सुविधा. इन मैसेज का कुल साइज़ 250 बाइट होना चाहिए. चुने गए 232 प्लेनटेक्स्ट या चुने गए सिफ़रटेक्स्ट के साथ किए गए किसी भी हमले की सफलता की संभावना, 2-32 से ज़्यादा नहीं होती.

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

डेटा को एन्क्रिप्ट (सुरक्षित) करना और सिफ़रटेक्स्ट को उसके कॉन्टेक्स्ट से जोड़ना लेख पढ़ें.