AES (Advanced Encryption Standard) एक सममित ब्लॉक सिफर एल्गोरिदम है जिसे 2001 में अमेरिकी राष्ट्रीय मानक और प्रौद्योगिकी संस्थान (NIST) द्वारा आधिकारिक मानक के रूप में अपनाया गया। AES ने पुराने DES को बदला और तब से दुनिया में सबसे व्यापक एन्क्रिप्शन एल्गोरिदम बन गया है, जिसका उपयोग बैंकिंग सिस्टम से लेकर मोबाइल एप्लिकेशन तक होता है। NIST (2023) के अनुसार, AES 256-बिट कुंजी के लिए 2^256 ऑपरेशन के बराबर सुरक्षा प्रदान करता है, जो इसे आधुनिक ब्रूट-फोर्स हमलों के प्रति अभेद्य बनाता है। NIST FIPS 197, 2023
मुख्य बिंदु
AES (Advanced Encryption Standard) एक सममित ब्लॉक सिफर है जिसे बेल्जियम के क्रिप्टोग्राफरों Joan Daemen और Vincent Rijmen ने Rijndael नाम से विकसित किया। 2001 में, NIST ने पाँच साल के सार्वजनिक परीक्षण और विश्लेषण के बाद Rijndael को नए अमेरिकी एन्क्रिप्शन मानक प्रतियोगिता के विजेता के रूप में चुना। AES निश्चित आकार (128 बिट) के डेटा ब्लॉक पर काम करता है और तीन कुंजी लंबाई का समर्थन करता है: 128, 192 और 256 बिट। परिवर्तन राउंड की संख्या कुंजी की लंबाई पर निर्भर करती है: 128-बिट के लिए 10 राउंड, 192-बिट के लिए 12 और 256-बिट के लिए 14 राउंड। प्रत्येक राउंड में चार ऑपरेशन शामिल हैं: SubBytes (S-box के माध्यम से नॉनलाइनियर बाइट प्रतिस्थापन), ShiftRows (चक्रीय पंक्ति स्थानांतरण), MixColumns (स्तंभ मिश्रण) और AddRoundKey (राउंड कुंजी XOR)।
AES का विकास 1997 में शुरू हुआ जब NIST ने DES को बदलने के लिए एक प्रतियोगिता की घोषणा की, जिसकी 56-बिट कुंजी 1998 में विशेष Deep Crack डिवाइस पर 22 घंटों में क्रैक कर दी गई थी। विभिन्न देशों के पंद्रह एल्गोरिदम ने भाग लिया, जिनमें Serpent (यूके), Twofish (यूएसए) और RC6 (यूएसए) शामिल थे। 1999 के फाइनल तक, 5 उम्मीदवार बचे थे। Rijndael ने सभी प्लेटफार्मों (8-बिट माइक्रोकंट्रोलर से 64-बिट सर्वर तक) पर उच्च गति, क्रिप्टैनालिसिस के प्रतिरोध और कॉम्पैक्ट हार्डवेयर कार्यान्वयन के संयोजन के कारण जीत हासिल की। 2006 से, AES का उपयोग अमेरिकी सरकारी प्रणालियों में SECRET और TOP SECRET वर्गीकृत डेटा को एन्क्रिप्ट करने के लिए किया जाता है। आज, AES सभी प्रमुख प्रोटोकॉल में एम्बेडेड है: TLS 1.2/1.3, IPsec, SSH, Wi-Fi WPA2/WPA3 और Bluetooth BR/EDR।
AES 128 बिट (16 बाइट) के ब्लॉक में डेटा प्रोसेस करता है, जो 4x4 बाइट मैट्रिक्स के रूप में व्यवस्थित होता है जिसे state कहा जाता है। प्रत्येक एन्क्रिप्शन राउंड नियतात्मक परिवर्तनों का एक क्रम निष्पादित करता है जो सामूहिक रूप से हिमस्खलन प्रभाव पैदा करते हैं: इनपुट डेटा के एक बिट को बदलने से लगभग 50% आउटपुट बिट बदल जाते हैं। यह प्रभाव AES को डिफरेंशियल और लीनियर क्रिप्टैनालिसिस — ब्लॉक सिफर तोड़ने की प्राथमिक विधियों — के प्रति प्रतिरोधी बनाता है।
प्रक्रिया AddRoundKey से शुरू होती है — state के साथ प्रारंभिक कुंजी का XOR। फिर राउंड निष्पादित किए जाते हैं: SubBytes प्रत्येक state बाइट को S-box (प्रतिस्थापन तालिका) से मान से बदलता है। ShiftRows दूसरी पंक्ति को 1 स्थान, तीसरी को 2, चौथी को 3 चक्रीय रूप से स्थानांतरित करता है — यह स्तंभों के बीच मिश्रण सुनिश्चित करता है। MixColumns प्रत्येक state स्तंभ को गैलोइस फील्ड GF(2^8) में एक निश्चित मैट्रिक्स से गुणा करता है, जिससे प्रत्येक आउटपुट बाइट स्तंभ के सभी चार इनपुट बाइट पर निर्भर हो जाता है। AddRoundKey Key Expansion के माध्यम से मूल कुंजी से प्राप्त अगली राउंड कुंजी के साथ XOR करता है। अंतिम राउंड में MixColumns ऑपरेशन नहीं होता। डिक्रिप्शन उल्टे क्रम में InvSubBytes, InvShiftRows, InvMixColumns और AddRoundKey का उपयोग करता है। मोबाइल डेवलपर्स के लिए AES की आंतरिक संरचना को समझना आवश्यक नहीं है — यह जानना पर्याप्त है कि सही पैरामीटर के साथ प्लेटफॉर्म के अंतर्निहित API को सही तरीके से कैसे कॉल किया जाए।
AES की मुख्य विशेषता जो इसकी क्रिप्टोग्राफिक मजबूती सुनिश्चित करती है, वह है हिमस्खलन प्रभाव। प्लेनटेक्स्ट या कुंजी में एक बिट बदलने से लगभग 50% सिफरटेक्स्ट बिट बदल जाते हैं, जो AES को डिफरेंशियल और लीनियर क्रिप्टैनालिसिस के प्रति अत्यधिक प्रतिरोधी बनाता है। SubBytes (S-box के माध्यम से नॉनलाइनियरिटी) और MixColumns (गैलोइस फील्ड गुणन के माध्यम से प्रसार) का संयोजन ऐसी गणितीय जटिलता पैदा करता है कि सिफरटेक्स्ट के कुछ हिस्से को जानने पर भी ब्रूट फोर्स से तेज कुंजी पुनर्प्राप्ति संभव नहीं है। NIST विश्लेषण (2018) के अनुसार, AES-128 पर सबसे अच्छा ज्ञात हमला — biclique attack — प्रभावी कुंजी लंबाई को केवल 2 बिट कम करता है (126.2 बिट तक), जो हमलावर को कोई व्यावहारिक लाभ नहीं देता। AES-256 के लिए, ब्रूट फोर्स से बेहतर कोई व्यावहारिक रूप से संभव हमला मौजूद नहीं है।
AES तीन कुंजी आकारों का समर्थन करता है, प्रत्येक एक विशिष्ट क्रिप्टोग्राफिक मजबूती स्तर के अनुरूप है। कुंजी आकार का चुनाव सुरक्षा, प्रदर्शन और डिवाइस संसाधन आवश्यकताओं को प्रभावित करता है।
| कुंजी आकार | राउंड की संख्या | सुरक्षा स्तर | उपयोग |
|---|---|---|---|
| AES-128 | 10 | 128 बिट | वाणिज्यिक एप्लिकेशन, TLS |
| AES-192 | 12 | 192 बिट | सरकारी सिस्टम (SECRET) |
| AES-256 | 14 | 256 बिट | TOP SECRET, वित्तीय क्षेत्र |
व्यावहारिक नियम: मोबाइल एप्लिकेशन के लिए डिफ़ॉल्ट रूप से AES-256 का उपयोग करें। AES-NI समर्थन वाले आधुनिक उपकरणों पर AES-128 और AES-256 के बीच प्रदर्शन अंतर 10–15% से अधिक नहीं है, लेकिन सुरक्षा स्तर दोगुना हो जाता है। क्वांटम विश्लेषण (Grassl et al., 2016) के अनुसार, AES-128 को क्रैक करने के लिए ग्रोवर एल्गोरिदम के माध्यम से 2^77 क्वांटम ऑपरेशन की आवश्यकता होगी, जबकि AES-256 के लिए 2^149 की आवश्यकता होगी, जो AES-256 को अगले 20–30 वर्षों के लिए क्वांटम हमलों के प्रति प्रतिरोधी बनाता है। यहां तक कि AES-128 अधिकांश वाणिज्यिक परिदृश्यों के लिए पर्याप्त सुरक्षा प्रदान करता है: ब्रूस श्नेयर के अनुमान के अनुसार 128-बिट कुंजी को ब्रूट-फोर्स करने के लिए ब्रह्मांड में मौजूद ऊर्जा से अधिक ऊर्जा की आवश्यकता होगी। हालांकि, सुरक्षा मानक (GDPR, HIPAA, PCI DSS) अक्सर स्पष्ट रूप से AES-256 की आवश्यकता रखते हैं, इसलिए प्रोडक्शन प्रोजेक्ट्स में अधिकतम कुंजी लंबाई का उपयोग किया जाना चाहिए।
AES एक ब्लॉक सिफर के रूप में निश्चित आकार (128 बिट) के ब्लॉक एन्क्रिप्ट करता है। मनमानी लंबाई के डेटा को एन्क्रिप्ट करने के लिए ऑपरेशन मोड का उपयोग किया जाता है। मोड का चयन सुरक्षा को गंभीर रूप से प्रभावित करता है: गलत मोड AES की मजबूती को नकार सकता है।
मोबाइल प्रोजेक्ट्स के लिए 12-बाइट nonce के साथ AES-256-GCM का उपयोग करें। GCM एक साथ दो समस्याओं का समाधान करता है: डेटा एन्क्रिप्शन और प्रमाणीकरण, जो padding oracle और chosen ciphertext हमलों को रोकता है। Android Keystore और iOS CryptoKit अतिरिक्त क्रिप्टोग्राफिक प्रिमिटिव की आवश्यकता के बिना AES-GCM का समर्थन करते हैं। GCM के साथ काम करते समय, एक ही कुंजी के साथ nonce को कभी भी पुन: उपयोग न करना महत्वपूर्ण है — यह एन्क्रिप्शन सुरक्षा को पूरी तरह से नष्ट कर देता है। प्रत्येक एन्क्रिप्शन के लिए एक नया यादृच्छिक nonce जनरेट करें और इसे सिफरटेक्स्ट के साथ संग्रहीत करें।
आइए Jetpack Security का उपयोग करके Android पर सुरक्षित AES-256-GCM कार्यान्वयन का एक उदाहरण देखें। नीचे दिया गया कोड पूर्ण चक्र प्रदर्शित करता है: MasterKey के माध्यम से AES-256 कुंजी बनाना, अतिरिक्त प्रमाणित डेटा (AAD) के साथ स्ट्रिंग को एन्क्रिप्ट और डिक्रिप्ट करना।
import androidx.security.crypto.MasterKey
import androidx.security.crypto.EncryptedSharedPreferences
val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
val securePrefs = EncryptedSharedPreferences.create(
context,
"secure_prefs",
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
fun storeSecureData(key: String, value: String) {
securePrefs.edit().putString(key, value).apply()
}
fun readSecureData(key: String): String? {
return securePrefs.getString(key, null)
}
इस समाधान की मुख्य विशेषता यह है कि AES-256-GCM का उपयोग दो स्तरों पर किया जाता है: कुंजी-मूल्य जोड़े (PrefValueEncryptionScheme) को एन्क्रिप्ट करने के लिए और कुंजी नामों (PrefKeyEncryptionScheme) की सुरक्षा के लिए जो nonce पुन: उपयोग के प्रति प्रतिरोधी AES-256-SIV का उपयोग करता है। MasterKey AES-256-GCM एल्गोरिदम का उपयोग करके उत्पन्न होता है और Android Keystore में संग्रहीत होता है, जो Trusted Execution Environment वाले उपकरणों पर हार्डवेयर-सुरक्षित होता है। हार्डवेयर समर्थन (TEE) के बिना उपकरणों पर, कुंजी Bouncy Castle के माध्यम से एन्क्रिप्ट की जाती है, जो SharedPreferences में संग्रहीत करने से अभी भी अधिक सुरक्षित है।
बड़ी डेटा मात्रा (जैसे, इमेज या फ़ाइल) के सीधे एन्क्रिप्शन के लिए, AndroidX Security से EncryptedFile के माध्यम से AES-256-GCM का उपयोग करें। कुंजी निर्यात (जैसे, बैकअप के लिए) के लिए, PBKDF2 के साथ 100000+ पुनरावृत्तियों का उपयोग करके उपयोगकर्ता पासवर्ड के साथ अतिरिक्त एन्क्रिप्शन का उपयोग करें।
iOS पर, AES संचालन CryptoKit फ्रेमवर्क (Swift 5.0+) के माध्यम से व्यवस्थित होता है। AES-256 कुंजी SymmetricKey(size: .bits256) के माध्यम से बनाई जाती है और Secure Enclave में संग्रहीत होती है — एक हार्डवेयर क्रिप्टो प्रोसेसर जो मुख्य CPU और ऑपरेटिंग सिस्टम से अलग होता है। CryptoKit दो AES कार्यान्वयन प्रदान करता है: AES.GCM (अनुशंसित) और AES.CBC (पुराने प्रारूपों के साथ पिछड़ी संगतता के लिए)। एन्क्रिप्शन seal() विधि के माध्यम से किया जाता है, जो डेटा, कुंजी और nonce (12 बाइट) लेता है, और AES.GCM.SealedBox लौटाता है — एक संरचना जिसमें सिफरटेक्स्ट और प्रमाणीकरण टैग होता है। डिक्रिप्शन open() के माध्यम से होता है। Apple सीधे CommonCrypto का उपयोग न करने की दृढ़ता से अनुशंसा करता है: CryptoKit स्वचालित रूप से इष्टतम पैरामीटर चुनता है, साइड-चैनल हमलों से बचाता है, और Apple Silicon प्रोसेसर पर AES-NI हार्डवेयर त्वरण का उपयोग करता है। Secure Enclave वाले उपकरणों पर, कुंजियाँ कभी भी हार्डवेयर मॉड्यूल नहीं छोड़ती हैं, जो पूर्ण एप्लिकेशन समझौता होने पर भी चोरी को रोकता है। कुंजी क्रमांकन के लिए, withUnsafeBytes विधि का उपयोग करें और फिर kSecAttrAccessible = kSecAttrAccessibleWhenUnlockedThisDeviceOnly विशेषता के साथ SecItemAdd के माध्यम से Keychain में संग्रहीत करें।
अक्सर पूछे जाने वाले प्रश्न
AES एक एल्गोरिदम है जो गुप्त कुंजी का उपयोग करके पढ़ने योग्य डेटा को बाइट्स के अपठनीय सेट में बदल देता है। डेटा को उसके मूल रूप में वापस लाने के लिए उसी कुंजी की आवश्यकता होती है। AES इतना विश्वसनीय है कि इसका उपयोग अमेरिकी सरकार के गुप्त दस्तावेजों को एन्क्रिप्ट करने के लिए किया जाता है।
AES-128 128-बिट कुंजी का उपयोग करता है और 10 एन्क्रिप्शन राउंड करता है। AES-256 256-बिट कुंजी और 14 राउंड का उपयोग करता है, जो इसे क्रैक करने में 2^128 गुना कठिन बनाता है। मोबाइल एप्लिकेशन के लिए, न्यूनतम प्रदर्शन अंतर के कारण AES-256 की अनुशंसा की जाती है।
AES-256-GCM सबसे सुरक्षित और अनुशंसित मोड है। GCM प्रमाणित एन्क्रिप्शन (एन्क्रिप्शन + अखंडता सत्यापन) प्रदान करता है। ECB मोड निषिद्ध है, CBC को अलग MAC की आवश्यकता होती है। GCM मोबाइल एप्लिकेशन के लिए डी-फैक्टो मानक है।
सैद्धांतिक रूप से, AES को ब्रूट फोर्स द्वारा क्रैक किया जा सकता है, लेकिन AES-256 के लिए 2^256 प्रयासों की आवश्यकता होगी — दृश्यमान ब्रह्मांड में परमाणुओं की संख्या से अधिक। AES-256 पर कोई व्यावहारिक हमला मौजूद नहीं है। साइड-चैनल हमले (Spectre, Meltdown) AES को नहीं तोड़ते बल्कि मेमोरी से कुंजियाँ चुराते हैं, इसलिए हार्डवेयर कुंजी भंडारण महत्वपूर्ण है।
AndroidX Security लाइब्रेरी का उपयोग करें: KeyScheme.AES256_GCM के साथ MasterKey.Builder Android Keystore में एक सुरक्षित कुंजी बनाता है, और EncryptedSharedPreferences स्वचालित रूप से AES-256-GCM के माध्यम से सभी डेटा एन्क्रिप्ट करता है। कोई मैनुअल क्रिप्टोग्राफी नहीं — API डिफ़ॉल्ट रूप से सुरक्षित है, डेवलपर त्रुटियों के जोखिम के बिना।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें