असोसिएट किए गए डेटा (AEAD) प्रिमिटिव के साथ ऑथेंटेड एन्क्रिप्शन, डेटा एन्क्रिप्ट करने के लिए सबसे आम तरीका है. साथ ही, यह ज़्यादातर ज़रूरतों के लिए सही होता है.
AEAD में ये प्रॉपर्टी होती हैं:
- सीक्रेसी: सादे टेक्स्ट के बारे में सिर्फ़ उसकी लंबाई के बारे में कुछ जानकारी मौजूद नहीं है.
- Authenticity: एन्क्रिप्ट (सुरक्षित) किए गए सादे टेक्स्ट को, एन्क्रिप्ट किए गए सादे टेक्स्ट में बदलना मुमकिन नहीं है.
- सिमेट्रिक: सादे टेक्स्ट को एन्क्रिप्ट (सुरक्षित) और साइफ़रटेक्स्ट को डिक्रिप्ट करने के लिए, एक ही पासकोड का इस्तेमाल किया जाता है.
- किसी भी क्रम में लगाने की सुविधा: एन्क्रिप्ट (सुरक्षित) करने का तरीका किसी भी क्रम में लगाया जाता है. एक ही सादे टेक्स्ट वाले दो मैसेज से अलग-अलग सादे टेक्स्ट मिलते हैं. हमलावर यह नहीं जान सकते कि किसी दिए गए सादे टेक्स्ट से साइफ़रटेक्स्ट किस तरह का है. अगर आप इससे बचना चाहते हैं, तो इसके बजाय थूटरिस्टिक AEAD का इस्तेमाल करें.
आपके बच्चे का डेटा
AEAD का इस्तेमाल साइफ़रटेक्स्ट को किसी खास संबंधित डेटा से जोड़ने के लिए किया जा सकता है. मान लें कि आपके पास user-id
और encrypted-medical-history
फ़ील्ड वाला एक डेटाबेस है. इस स्थिति में, encrypted-medical-history
को एन्क्रिप्ट (सुरक्षित) करते समय user-id
का इस्तेमाल,
असोसिएट किए गए डेटा के तौर पर किया जा सकता है. यह हमले को एक उपयोगकर्ता से दूसरे उपयोगकर्ता के बीच
स्वास्थ्य से जुड़े इतिहास को ट्रांसफ़र करने से रोकता है.
कोई कुंजी टाइप चुनें
हमारा सुझाव है कि ज़्यादातर मामलों में, आप AES128_GCM का इस्तेमाल करें. हालांकि, अलग-अलग ज़रूरतों के लिए कुंजी के कई टाइप हैं (256-बिट सुरक्षा के लिए, नीचे AES128 को AES256 से बदलें). आम तौर पर ये उपाय अपनाएं:
- 16-बाइट इनिशलाइज़ेशन वेक्टर (IV) वाला AES128_CTR_HMAC_SHA256, अच्छे बाउंड वाला सबसे पारंपरिक मोड है.
- AES128_EAX थोड़ा कम कंज़र्वेटिव है और AES128_CTR_HMAC_SHA256 से थोड़ा तेज़ है.
- AES128_GCM आम तौर पर सबसे तेज़ मोड होता है. इसमें मैसेज की संख्या और मैसेज के साइज़ की सबसे सख्त सीमा होती है. जब सादा टेक्स्ट और इससे जुड़े डेटा की लंबाई (नीचे) की ये सीमाएं पार हो जाती हैं, तो AES128_GCM काम नहीं करता है और अहम सामग्री की जानकारी लीक कर देता है.
- AES128_GCM_SIV काफ़ी हद तक AES128_GCM जितना ही तेज़ है, लेकिन इसमें मैसेज की संख्या काफ़ी ज़्यादा है, लेकिन यह संख्या थोड़ी कम है. Java में इसका इस्तेमाल करने के लिए, आपको Conscrypt इंस्टॉल करना होगा.
- XChaCha20Poly1305 में मैसेज संख्या और मैसेज के साइज़ की सीमा AES128_GCM के मुकाबले काफ़ी ज़्यादा है. हालांकि, ऐसा न होने पर (बहुत कम संभावना है) ज़रूरी सामग्री भी लीक हो जाती है. यह हार्डवेयर एक्सेलरेटेड नहीं है. इसलिए, अगर हार्डवेयर से तेज़ी लाने की सुविधा उपलब्ध है, तो यह AES मोड से धीमा हो सकता है.
सुरक्षा की गारंटी
AEAD लागू करने की सुविधा:
- CCA2 सुरक्षा.
- पुष्टि करने की कम से कम 80-बिट क्षमता.
- कुल 250 बाइट वाले कम से कम 232 मैसेज को एन्क्रिप्ट करने की सुविधा. 232 तक चुने गए सादा टेक्स्ट या चुने गए सादे टेक्स्ट वाले किसी भी हमले के सफल होने की संभावना 2-32 से ज़्यादा नहीं होती है.
इस्तेमाल के उदाहरण
देखें कि मुझे डेटा को एन्क्रिप्ट (सुरक्षित) करना है और इसके कॉन्टेक्स्ट में, एन्क्रिप्ट (सुरक्षित) करने के तरीके को जोड़ना है.