एन्क्रिप्शन (encryption) डेटा को एक ऐसे रूप में बदलने की प्रक्रिया है जो बिना विशेष कुंजी के पढ़ा नहीं जा सकता। मोबाइल ऐप्लिकेशन में, एन्क्रिप्शन उपयोगकर्ताओं के व्यक्तिगत डेटा, भुगतान जानकारी और व्यावसायिक तर्क को इंटरसेप्शन और लीकेज से बचाता है। Statista (2024) के अनुसार, मोबाइल ऐप्लिकेशन से डेटा उल्लंघनों की संख्या दो वर्षों में 38% बढ़ गई, और 72% मामलों में इसका कारण एन्क्रिप्शन की कमी या गलत उपयोग था। आधुनिक मोबाइल प्लेटफ़ॉर्म एन्क्रिप्शन के लिए अंतर्निहित API प्रदान करते हैं, और उनका उपयोग एक अनिवार्य सुरक्षा मानक है। Statista, 2024
मुख्य बिंदु
एन्क्रिप्शन मोबाइल ऐप्लिकेशन के संदर्भ में, डिवाइस पर संग्रहीत डेटा (data at rest) और नेटवर्क पर प्रेषित डेटा (data in transit) की सुरक्षा के लिए क्रिप्टोग्राफ़िक एल्गोरिदम का अनुप्रयोग है। डिवाइस स्तर पर, स्थानीय स्टोरेज एन्क्रिप्ट किया जाता है: फ़ाइलें, डेटाबेस, SharedPreferences और कैश। नेटवर्क स्तर पर, ऐप और सर्वर के बीच ट्रैफ़िक TLS/HTTPS प्रोटोकॉल के माध्यम से एन्क्रिप्ट किया जाता है। अंतिम लक्ष्य यह सुनिश्चित करना है कि डिवाइस तक भौतिक पहुँच या ट्रैफ़िक इंटरसेप्शन के बावजूद, कोई हमलावर क्रिप्टोग्राफ़िक कुंजी के बिना सुरक्षित डेटा नहीं पढ़ सके।
मोबाइल डिवाइस विशेष रूप से डेटा हानि के प्रति संवेदनशील होते हैं: फ़ोन आसानी से खो सकता है, चोरी हो सकता है या मैलवेयर से संक्रमित हो सकता है। Ponemon Institute (2023) के अनुसार, डेटा उल्लंघनों से प्रभावित 42% कंपनियाँ घटनाओं का कारण मोबाइल डिवाइसों को बताती हैं। एन्क्रिप्शन के बिना, एक हमलावर USB के माध्यम से डिवाइस से कनेक्ट हो सकता है, SQLite डेटाबेस निकाल सकता है और सभी संग्रहीत डेटा पढ़ सकता है। एन्क्रिप्शन इस समस्या का समाधान करता है: भले ही डेटाबेस निकाल लिया जाए, इसकी सामग्री एन्क्रिप्टेड रहती है। इसके अतिरिक्त, अमेरिका और EU में कानून (GDPR, CCPA) हैं जो व्यक्तिगत डेटा के एन्क्रिप्शन की आवश्यकता रखते हैं और उल्लंघन पर वार्षिक कारोबार के 4% तक का जुर्माना लगाते हैं। एन्क्रिप्शन का उपयोग किसी भी मोबाइल ऐप्लिकेशन के लिए न केवल एक तकनीकी बल्कि एक कानूनी आवश्यकता भी है जो उपयोगकर्ता डेटा के साथ काम करता है।
सभी एन्क्रिप्शन एल्गोरिदम दो मुख्य प्रकारों में विभाजित होते हैं: सममित (एन्क्रिप्शन और डिक्रिप्शन के लिए एक कुंजी) और असममित (कुंजियों की एक जोड़ी — सार्वजनिक और निजी)। प्रकार का चयन उपयोग के परिदृश्य पर निर्भर करता है: स्थानीय डेटा के एन्क्रिप्शन के लिए अक्सर सममित एल्गोरिदम का उपयोग उनकी गति के कारण किया जाता है, जबकि कुंजी आदान-प्रदान और प्रमाणीकरण के लिए असममित का उपयोग किया जाता है।
| विशेषता | सममित | असममित |
|---|---|---|
| कुंजियों की संख्या | 1 (गुप्त) | 2 (सार्वजनिक + निजी) |
| गति | उच्च (1–10 GB/s) | निम्न (1–10 MB/s) |
| कुंजी वितरण | समस्याग्रस्त — कुंजी प्रेषित करनी होती है | सरल — सार्वजनिक कुंजी प्रकाशित की जाती है |
| उदाहरण | AES, ChaCha20 | RSA, ECDH, ECIES |
| मोबाइल विकास में उपयोग | स्थानीय डेटा एन्क्रिप्शन | कुंजी आदान-प्रदान, डिजिटल हस्ताक्षर |
व्यवहार में, मोबाइल ऐप्लिकेशन में हाइब्रिड एन्क्रिप्शन का उपयोग किया जाता है: एक असममित एल्गोरिदम (जैसे ECDH) से पक्ष सत्र कुंजी का आदान-प्रदान करते हैं, और सभी बाद के डेटा को एक सममित एल्गोरिदम (AES या ChaCha20) से एन्क्रिप्ट किया जाता है। यह दृष्टिकोण सममित एन्क्रिप्शन की गति को असममित कुंजी आदान-प्रदान की सुरक्षा के साथ जोड़ता है। यह विधि TLS 1.3, Signal Protocol और Apple iMessage की नींव है।
आधुनिक मोबाइल विकास कई मानकीकृत एन्क्रिप्शन एल्गोरिदम का उपयोग करता है, प्रत्येक विशिष्ट कार्यों के लिए डिज़ाइन किया गया है और इसका अपना अनुप्रयोग क्षेत्र है।
एन्क्रिप्शन तीन प्रमुख परिदृश्यों में डेटा की सुरक्षा करता है: डिवाइस की हानि (डिस्क और ऐप कंटेनर एन्क्रिप्शन), ट्रैफ़िक इंटरसेप्शन (TLS/HTTPS नेटवर्क प्रोटोकॉल) और सर्वर से लीकेज (एंड-टू-एंड एन्क्रिप्शन)। प्रत्येक परिदृश्य के लिए अपने दृष्टिकोण और उपकरणों की आवश्यकता होती है।
डेटा एट रेस्ट — डिवाइस पर डेटा — Android Keystore और iOS Keychain के माध्यम से एन्क्रिप्ट किया जाता है। Android 7.0 से शुरू करके, फ़ाइल-आधारित एन्क्रिप्शन (File-Based Encryption) का उपयोग किया जाता है, और ऐप AndroidX Security लाइब्रेरी से EncryptedSharedPreferences और EncryptedFile के माध्यम से अपने डेटा को अतिरिक्त रूप से एन्क्रिप्ट कर सकते हैं। iOS पर, सभी ऐप डिफ़ॉल्ट रूप से Data Protection API के साथ काम करते हैं, जो डिवाइस पासकोड से बंधी कुंजी के साथ फ़ाइल सिस्टम स्तर पर फ़ाइलों को एन्क्रिप्ट करता है। डेटा इन ट्रांज़िट के लिए, अनिवार्य Certificate Pinning के साथ TLS 1.2/1.3 का उपयोग किया जाता है।
एंड-टू-एंड एन्क्रिप्शन (E2E) — डेटा सुरक्षा का उच्चतम स्तर, जिसमें संदेश प्रेषक के डिवाइस पर एन्क्रिप्ट किया जाता है और केवल प्राप्तकर्ता के डिवाइस पर डिक्रिप्ट किया जाता है। स्टोरेज और ट्रांसमिशन सर्वर के पास सामग्री तक पहुँच नहीं है — वह केवल एन्क्रिप्टेड ब्लॉब्स को संभालता है। मोबाइल ऐप्लिकेशन के लिए सबसे प्रसिद्ध E2E कार्यान्वयन Signal Protocol है, जो प्रारंभिक कुंजी आदान-प्रदान के लिए X3DH (Extended Triple Diffie-Hellman) के साथ Double Ratchet Algorithm का उपयोग करता है। Signal Protocol Perfect Forward Secrecy और future secrecy प्रदान करता है: एक कुंजी से समझौता होने पर पिछले या बाद के संदेश प्रकट नहीं होते। Carnegie Mellon University (2023) के एक अध्ययन के अनुसार, मैसेजिंग ऐप में E2E एन्क्रिप्शन केवल TLS एन्क्रिप्शन की तुलना में संचार लीकेज के जोखिम को 99.7% तक कम कर देता है। GDPR और HIPAA की आवश्यकताओं के अनुसार Health & Fitness और Finance श्रेणियों के ऐप्लिकेशन के लिए E2E अनिवार्य है। अपने स्वयं के प्रोजेक्ट में E2E लागू करने के लिए, Signal Protocol लाइब्रेरी (Java/Swift) या Olm (Matrix protocol) पर आधारित लाइब्रेरी का उपयोग करने की अनुशंसा की जाती है। E2E समाधान चुनते समय, प्लेटफ़ॉर्म संगतता का मूल्यांकन करें: Signal Protocol को एसिंक्रोनस भेजने और क्लाइंट पर कुंजी भंडारण के समर्थन की आवश्यकता होती है, जो मल्टी-डिवाइस परिदृश्यों को जटिल बनाता है — ऐसे मामलों के लिए, Matrix Protocol अपने कक्ष मॉडल के साथ बेहतर विकल्प हो सकता है।
आइए Android पर Jetpack Security (AndroidX Security) का उपयोग करके डेटा एन्क्रिप्शन और डिक्रिप्शन का एक उदाहरण देखें। लाइब्रेरी फ़ाइल एन्क्रिप्शन के लिए EncryptedFile और सेटिंग्स के लिए EncryptedSharedPreferences प्रदान करती है।
val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
val encryptedFile = EncryptedFile.Builder(
context,
File(context.filesDir, "secret.dat"),
masterKey,
EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build()
encryptedFile.openFileOutput(applicationContext).use { outputStream ->
outputStream.write("Sensitive user data".toByteArray(Charsets.UTF_8))
}
MasterKey AES256-GCM का उपयोग करके बनाया जाता है — सबसे सुरक्षित सममित एन्क्रिप्शन मोड। कुंजी Android Keystore में संग्रहीत की जाती है, जो मुख्य प्रक्रिया से पृथक है: ऐप से समझौता होने पर भी, कोई हमलावर कुंजी नहीं निकाल सकता। EncryptedFile कुंजी व्युत्पत्ति के लिए HKDF के साथ AES-256-GCM योजना और 4KB पेज आकार का उपयोग करता है, जो गति और सुरक्षा के बीच अच्छा संतुलन प्रदान करता है। डेटा पढ़ने के लिए, उन्हीं मापदंडों के साथ openFileInput का उपयोग किया जाता है: लाइब्रेरी पढ़ने पर स्वचालित रूप से डेटा डिक्रिप्ट करती है।
iOS पर, समान कार्यक्षमता AES.GCM या ChaChaPoly का उपयोग करके CryptoKit (Swift) के माध्यम से प्रदान की जाती है। कुंजी Keychain Services के माध्यम से Secure Enclave में संग्रहीत की जाती है। सिद्धांत समान है: कुंजियाँ कभी भी सुरक्षित हार्डवेयर स्टोरेज नहीं छोड़ती हैं, और डेटा डिस्क पर लिखने से पहले एन्क्रिप्ट किया जाता है। यह आर्किटेक्चर संवेदनशील डेटा के साथ काम करने वाले ऐप्लिकेशन के लिए OWASP MASVS (Mobile Application Security Verification Standard) स्तर L2 की अनुशंसाओं का अनुपालन करता है। वास्तविक प्रोजेक्ट में, टोकन के लिए EncryptedSharedPreferences और उपयोगकर्ता डेटा के लिए EncryptedFile का संयोजन स्थानीय एन्क्रिप्शन के 100% परिदृश्यों को कवर करता है। इसके अतिरिक्त, सर्वर से प्राप्त कुंजियों (जैसे ECDH सत्र कुंजियाँ) के साथ काम करने के लिए, Android KeyStore का उपयोग purpose = KeyProperties.PURPOSE_ENCRYPT पैरामीटर के साथ किया जाता है, जो सुनिश्चित करता है कि कुंजी का उपयोग केवल अधिकृत क्रिप्टोग्राफ़िक संचालन के लिए किया जा सकता है और इसे कभी भी हार्डवेयर स्टोरेज से RAM में सादे पाठ के रूप में निर्यात नहीं किया जाता है।
अक्सर पूछे जाने वाले प्रश्न
GCM मोड में AES-256 हार्डवेयर स्टोरेज (Android Keystore / iOS Keychain) में कुंजी भंडारण के साथ स्वर्ण मानक माना जाता है। नेटवर्क ट्रैफ़िक के लिए — Curve25519 एलिप्टिक कर्व के साथ TLS 1.3। ChaCha20-Poly1305 का उपयोग हार्डवेयर AES के बिना डिवाइसों पर विकल्प के रूप में किया जाता है।
AES एक सममित एल्गोरिदम (एक कुंजी) है, तेज़ है, डेटा की बड़ी मात्रा को एन्क्रिप्ट करने के लिए उपयुक्त है। RSA असममित (कुंजियों की जोड़ी) है, धीमा है, कुंजियों और हस्ताक्षरों के एन्क्रिप्शन के लिए उपयोग किया जाता है, डेटा के लिए नहीं। मोबाइल ऐप्लिकेशन में AES डेटा एन्क्रिप्ट करता है, RSA कुंजियों की सुरक्षा करता है।
गोपनीय डेटा को एन्क्रिप्ट करना आवश्यक है: एक्सेस टोकन, पासवर्ड, व्यक्तिगत जानकारी, भुगतान डेटा, चिकित्सा रिकॉर्ड। सार्वजनिक डेटा (चित्र, सामग्री) को एन्क्रिप्ट नहीं किया जा सकता, हालाँकि उन्हें ऐप के संरक्षित कंटेनर में संग्रहीत करना बेहतर है।
एंड-टू-एंड एन्क्रिप्शन में, डेटा भेजने से पहले प्रेषक के डिवाइस पर एन्क्रिप्ट किया जाता है और केवल प्राप्तकर्ता के डिवाइस पर डिक्रिप्ट किया जाता है। सर्वर केवल एन्क्रिप्टेड डेटा देखता है। Double Ratchet प्रोटोकॉल, जो Signal Protocol में लागू किया गया है, मोबाइल मैसेंजर में सबसे आम E2E तंत्र है।
तकनीकी रूप से संभव है, लेकिन अनुशंसित नहीं है। डिवाइस पर डेटा के लिए, Keystore से कुंजी के साथ सममित एन्क्रिप्शन (AES-GCM) का उपयोग करें। नेटवर्क के लिए, कुंजियों के एक अलग सेट और Certificate Pinning के साथ TLS 1.3 का उपयोग करें। पृथक्करण एक कुंजी के लीक होने पर दोनों चैनलों से समझौता होने से रोकता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें