सिक्योर स्टोरेज (Secure Storage) उपकरण पर गोपनीय डेटा की रक्षा के लिए विधियों और प्रौद्योगिकियों का एक समूह है: टोकन, एन्क्रिप्शन कीज, भुगतान जानकारी और उपभोक्ताओं का व्यक्तिगत डेटा। OWASP Mobile Top 10 (2024) के अनुसार, असुरक्षित डेटा भंडारण तीन सबसे महत्वपूर्ण जोखिमों में से एक है। सुरक्षित भंडारण का उचित कार्यान्वयन उपकरण तक भौतिक पहुंच होने पर भी डेटा लीक को रोकता है।
मुख्य बातें
सुरक्षित भंडारण मोबाइल एप्लिकेशन गोपनीय डेटा को इस तरह से संग्रहीत करने का अभ्यास है कि यह अन्य एप्लिकेशनों, मॉलवेयर और उपकरण तक भौतिक पहुंच रखने वाले हमलावरों के लिए दुर्गम हो। सामान्य भंडारण के विपरीत, सुरक्षित भंडारण एन्क्रिप्शन, पृथक्करण और हार्डवेयर सुरक्षा का उपयोग करता है।
सभी डेटा को सुरक्षित भंडारण की आवश्यकता नहीं है: प्रोफ़ाइल छवियों या समाचार कैश को सामान्य फ़ाइल सिस्टम में संग्रहीत किया जा सकता है। हालांकि, एन्क्रिप्शन कीज, प्रमाणीकरण टोकन, भुगतान डेटा, निजी कीज और बायोमेट्रिक टेंपलेट की रक्षा होनी चाहिए। Google Security Blog (2025) के अनुसार, मोबाइल एप्लिकेशनों में 67% कमजोरियाँ रहस्यों को सादे पाठ में संग्रहीत करने से संबंधित हैं।
प्रत्येक मोबाइल प्लेटफ़ॉर्म अपने सुरक्षित भंडारण तंत्र प्रदान करता है: Android — Keystore और EncryptedSharedPreferences, iOS — Keychain और Data Protection API। ये तंत्र हार्डवेयर सुरक्षा मॉड्यूल (TEE, Secure Enclave) के साथ एकीकृत हैं और गारंटी देते हैं कि जेलब्रेक या रूटिंग के बाद भी डेटा नहीं पढ़ा जा सकता।
सुरक्षित भंडारण विधि का सही चयन डेटा प्रकार, उपयोग परिदृश्य और प्रदर्शन आवश्यकताओं पर निर्भर करता है। प्रत्येक तंत्र की वास्तुकला को समझना डिवेलपर को सही आर्किटेक्चरल निर्णय लेने की अनुमति देता है।
Android प्लेटफ़ॉर्म हार्डवेयर कीज भंडारण से लेकर एन्क्रिप्टेड SharedPreferences तक डेटा सुरक्षा के कई स्तर प्रदान करता है। चयन डेटा संवेदनशीलता और प्रदर्शन आवश्यकताओं पर निर्भर करता है।
Android Keystore एक क्रिप्टोग्राफिक प्रोवायडर है जो हार्डवेयर सुरक्षा समर्थन वाले उपकरणों पर एक पृथक निष्पादन वातावरण (TEE — Trusted Execution Environment) में कीज उत्पन्न और संग्रहीत करता है। कीज TEE से कभी बाहर नहीं जातीं: क्रिप्टोग्राफिक संचालन एक संरक्षित क्षेत्र के अंदर किए जाते हैं जो ऑपरेटिंग सिस्टम के लिए भी दुर्गम है।
Android 9 (API 28) से, Keystore StrongBox Keymaster का समर्थन करता है — एक समर्पित सुरक्षा चिप अपने स्वयं के CPU, वास्तविक यादृच्छिक संख्या जनरेटर (TRNG) और संरक्षित मेमोरी के साथ। StrongBox Common Criteria EAL 4+ के अनुरूप प्रमाणित है और Android पर कीज भंडारण सुरक्षा का सबसे उच्च स्तर है। StrongBox का उपयोग करने के लिए, कीज उत्पन्न करते समय inStrongBox() फ्लैग को स्पष्ट रूप से निर्दिष्ट करना होगा।
Keystore एल्गोरिदम का समर्थन करता है: AES/GCM/NoPadding (256 बिट), EC (secp256r1, secp384r1), RSA (2048–4096 बिट) और HMAC-SHA256। सभी कीज को setUserAuthenticationRequired(true) के माध्यम से बायोमेट्रिक प्रमाणीकरण से बांधा जा सकता है।
EncryptedSharedPreferences AndroidX Security पैकेज की एक लाइब्रेरी है जो SharedPreferences API के माध्यम से सही गए सभी डेटा को स्वचालित रूप से एन्क्रिप्ट करती है। मान को AES-256 GCM कीज से एन्क्रिप्ट किया जाता है, और कीज को AES-256 SIV (सिंथेटिक IV) से एन्क्रिप्ट किया जाता है, जो कीज नामों पर शब्दकोश हमलों को रोकता है।
मुख्य एन्क्रिप्शन कीज Android Keystore में संग्रहीत होती है, जो दो-स्तरीय सुरक्षा प्रदान करता है: Keystore मास्टर कीज की रक्षा करता है, EncryptedSharedPreferences डेटा की रक्षा करता है। सामान्य डेटा (टोकन, सेटिंग्स) के लिए एन्क्रिप्शन प्रदर्शन प्रति रीड/राइट ऑपरेशन 5 ms से कम है, जो लाइब्रेरी को उपभोक्ता परिदृश्यों के लिए उपयुक्त बनाता है।
EncryptedSharedPreferences बड़े डेटा वॉल्यूम (5 MB से अधिक) के लिए डिजाइन नहीं की गई है — उनके लिए, SQLCipher या Room के साथ एन्क्रिप्शन के साथ एक एन्क्रिप्टेड डेटाबेस का उपयोग करें।
SQLCipher SQLite का एक विस्तार है जो AES-256-CBC का उपयोग करके पूरी डेटाबेस को पृष्ठ दर पृष्ठ एन्क्रिप्ट करता है। डेटाबेस का प्रत्येक पृष्ठ PBKDF2 के माध्यम से मास्टर पासवर्ड से प्राप्त एक अलग कीज से एन्क्रिप्ट किया जाता है। SQLCipher डेटा आकार के आधार पर प्रदर्शन में लगभग 5–15% का ओवरहेड जोड़ता है।
Android के साथ एकीकरण net.zetetic:android-database-sqlcipher लाइब्रेरी के माध्यम से किया जाता है, जो मानक SQLiteOpenHelper के साथ संगत एपीआई प्रदान करती है। SQLCipher का पासवर्ड Keystore में संग्रहीत करने की अनुशंसा है, कोड या SharedPreferences में नहीं।
iOS प्लेटफ़ॉर्म मुख्य सुरक्षित भंडारण के रूप में Keychain Services और OS स्तर पर फ़ाइल एन्क्रिप्शन के लिए Data Protection API प्रदान करता है।
Keychain एक एन्क्रिप्टेड SQLite डेटाबेस है जहाँ iOS पासवर्ड, एन्क्रिप्शन कीज, प्रमाणपत्र और नोट्स संग्रहीत करता है। प्रत्येक Keychain आइटम (SecItem) उपकरण के लिए अनोखी हार्डवेयर कीज का उपयोग करके एन्क्रिप्टेड रूप में संग्रहीत होता है। एक आइटम तक पहुंच ACL (एक्सेस कंट्रॉल लिस्ट) के माध्यम से नियंत्रित होती है, जो बायोमेट्रिक प्रमाणीकरण (Face ID, Touch ID) या पासकोड की आवश्यकता हो सकती है।
Keychain सुरक्षा वर्गों का समर्थन करता है जो यह निर्धारित करते हैं कि डेटा कब पहुंच योग्य है: kSecAttrAccessibleWhenUnlockedThisDeviceOnly — डेटा केवल उपकरण अनलॉक होने पर ही पहुंच योग्य है और बैकअप के दौरान स्थानांतरित नहीं होता है। यह वर्ग अधिकांश प्रमाणीकरण टोकन भंडारण परिदृश्यों के लिए अनुशंसित है।
iOS 15+ पर, Security framework Secure Enclave के माध्यम से हार्डवेयर कीज समर्थन के साथ उपलब्ध है — एक समर्पित Apple प्रोसेसर जो क्रिप्टोग्राफिक संचालन को संभालता है और निजी कीज को पृथक मेमोरी में संग्रहीत करता है। Secure Enclave कीज उत्पन्न करने के लिए ECDSA (secp256r1) और ECDH एल्गोरिदम का समर्थन करता है जो चिप से निकाले नहीं जा सकते।
Data Protection एक iOS तंत्र है जो उपकरण पासकोड से बंधी कीज का उपयोग करके फ़ाइल सिस्टम स्तर (APFS) पर प्रत्येक फ़ाइल को एन्क्रिप्ट करता है। डिवेलपर फ़ाइल बनाते समय NSFileProtectionType एट्रिब्यूट के माध्यम से सुरक्षा स्तर निर्दिष्ट करता है: NSFileProtectionComplete — फ़ाइल केवल उपकरण अनलॉक होने पर ही पहुंच योग्य है।
Data Protection iOS 5+ वाले सभी उपकरणों पर स्वचालित रूप से काम करता है यदि पासकोड सेट किया गया है। एन्क्रिप्शन Apple के Dedicated AES Engine के माध्यम से हार्डवेयर स्तर पर किया जाता है, जो उच्च प्रदर्शन सुनिश्चित करता है — एन्क्रिप्शन विलंब उपभोक्ता के लिए विरुद्ध अध्यक्षणीय है। एप्लिकेशन में सुरक्षा सक्षम करने के लिए, FileManager के माध्यम से फ़ाइल बनाते समय सुरक्षा गुण को सेट करना पर्याप्त है।
Data Protection कीज संग्रहीत करने के लिए Keychain को प्रतिस्थापित नहीं करता है — यह फ़ाइलों, Core Data डेटाबेस और अन्य बड़े डेटा वॉल्यूम को एन्क्रिप्ट करने के लिए उपयोग किया जाता है। Keychain (कीज के लिए) और Data Protection (फ़ाइलों के लिए) का संयोजन iOS पर एक पूर्ण सुरक्षित भंडारण चक्र प्रदान करता है।
आइए Android और iOS की बिल्ट-इन API का उपयोग करके सुरक्षित भंडारण के व्यावहारिक उदाहरणों को देखें।
उदाहरण Android Keystore से मास्टर कीज के साथ EncryptedSharedPreferences की आरंभ को दर्शाता है। बाद की सभी रीड और राइट संचालन स्वचालित रूप से एन्क्रिप्ट और डिक्रिप्ट होते हैं।
import androidx.security.crypto.EncryptedSharedPreferences
import androidx.security.crypto.MasterKey
val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
val prefs = EncryptedSharedPreferences.create(
context,
"secure_prefs",
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
prefs.edit()
.putString("auth_token", "eyJhbGciOiJIUzI1NiJ9...")
.apply()
उदाहरण Security framework का उपयोग करके iOS Keychain से डेटा सही करने और पढ़ने का प्रदर्शन करता है। कोड अधिकतम सुरक्षा के लिए kSecAttrAccessibleWhenUnlockedThisDeviceOnly का उपयोग करता है।
import Security
func saveToKeychain(key: String, data: Data) {
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: key,
kSecValueData as String: data,
kSecAttrAccessible as String:
kSecAttrAccessibleWhenUnlockedThisDeviceOnly
]
SecItemDelete(query as CFDictionary)
SecItemAdd(query as CFDictionary, nil)
}
func readFromKeychain(key: String) -> Data? {
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: key,
kSecReturnData as String: true,
kSecMatchLimit as String: kSecMatchLimitOne
]
var result: AnyObject?
let status = SecItemCopyMatching(
query as CFDictionary, &result
)
return status == errSecSuccess ? result as? Data : nil
}
Android Keystore में संग्रहीत पासवर्ड के साथ SQLCipher के माध्यम से एक एन्क्रिप्टेड SQLite डेटाबेस से कनेक्शन का एक उदाहरण।
import net.sqlcipher.database.SQLiteDatabase
import net.sqlcipher.database.SQLiteOpenHelper
class SecureDBHelper(context: Context) :
SQLiteOpenHelper(context, "secure.db", null, 1) {
private val password = getKeyFromKeystore()
override fun onCreate(db: SQLiteDatabase) {
db.execSQL("CREATE TABLE tokens (id INTEGER PRIMARY KEY, value TEXT)")
}
override fun onUpgrade(
db: SQLiteDatabase, oldVersion: Int, newVersion: Int
) {
onCreate(db)
}
}
// उपयोग: खोलते समय पासवर्ड पास करें
val helper = SecureDBHelper(context)
val db = helper.getWritableDatabase(password)
सुरक्षित भंडारण का उचित उपयोग एक कर्म के लिए कई मूलभूत सिद्धांतों का पालन करता है जो सामान्य डिवेलपर गलतियों को रोकते हैं।
डेटा वरीकरण परिभाषित करें: किस डेटा को हार्डवेयर सुरक्षा (Keystore / Secure Enclave) की आवश्यकता है, किसे OS-स्तरीय एन्क्रिप्शन (EncryptedSharedPreferences / Data Protection) की आवश्यकता है, और किसे सामान्य फ़ाइल सिस्टम में संग्रहीत किया जा सकता है। प्रमाणीकरण टोकन, निजी कीज और भुगतान डेटा — केवल हार्डवेयर स्तर। उपभोक्ता सेटिंग्स (थीम, भाषा) — EncryptedSharedPreferences पर्याप्त है। सत्र डेटा (अस्थायी कैश) को मेमोरी या एक अस्थायी निर्देशिका में संग्रहीत किया जा सकता है।
कभी कोड में रहस्य न रखें: सॉर्स कोड में API कीज, पासवर्ड या बीज वाक्यों के साथ स्ट्रिंग एक गंभीर सुरक्षा त्रुटि है। कोई भी रिवर्स एन्जीनियरिंग तुरंत इस डेटा को उजागर कर देगा। कीज के लिए Keystore का उपयोग करें, और कॉन्फ़िगरेशन के लिए — एप्लिकेशन स्टार्टअप पर सर्वर-साइड लोडिंग (रिमोट कॉन्फ़िग)।
महत्वपूर्ण संचालनों के लिए बायोमेट्रिक बांधन का उपयोग करें: Android Keystore और iOS Keychain बायोमेट्रिक प्रमाणीकरण के लिए कीज को बांधने का समर्थन करते हैं। जब भी किसी कीज तक पहुंच की जाती है, सिस्टम Face ID, Touch ID या Android बायोमेट्रिक्स (BiometricPrompt) का अनुरोध करता है। यह गारंटी देता है कि उपकरण पर पूर्ण नियंत्रण होने पर भी, एक हमलावरा मालिक के बिना संग्रहीत डेटा का उपयोग नहीं कर सकता।
सुरक्षा का परीक्षण करें: सुरक्षा विश्लेषण उपकरणों का उपयोग करें — स्थैतिक विश्लेषण के लिए MobSF (Mobile Security Framework), रनटाइम परीक्षण के लिए objection, और सुरक्षा को बायपास करने के लिए Frida। रूटिंग या जेलब्रेक के बाद डेटा की पहुंच नहीं होनी चाहिए। Android SafetyNet Attestation या Play Integrity API के माध्यम से रूट पहुंच की जाँच करने की अनुमति देता है, iOS — Secure Enclave अखंडता सत्यापन के माध्यम से।
क्रिप्टोग्राफिक लाइब्रेरियों को नियमित रूप से अपडेट करें: एन्क्रिप्शन लाइब्रेरियों में कमजोरियाँ नियमित रूप से खोजी जाती हैं। AndroidX Security, SQLCipher और Keychain रैपर के लिए CVE की निगरानी रखें। Dependabot या Renovate के माध्यम से नए संस्करणों के लिए एक स्वचालित अधिसूचना प्रणाली लागू करें।
Apple Security Research (2025) के अनुसार, सुरक्षित भंडारण का उचित कार्यान्वयन उपकरण से डेटा चोरी के उद्देश्य वाले 96% हमलों को रोकता है। शेष 4% भौतिक पहुंच और ज़ीरो-डे एक्सप्लॉइट वाले हमले हैं, जिनके खिलाफ बायोमेट्रिक बांधन प्रभावी है।
अक्सर पूछे जाने वाले प्रश्न
iOS Keychain ACL के माध्यम से पासवर्ड, कीज और प्रमाणपत्र संग्रहीत करने के लिए एक एन्क्रिप्टेड डेटाबेस है। Android Keystore एक क्रिप्टोग्राफिक प्रोवायडर है जो एक पृथक वातावरण (TEE/StrongBox) में कीज उत्पन्न और संग्रहीत करता है और निजी कीज को निकालने की अनुमति नहीं देता।
EncryptedSharedPreferences मानों को एन्क्रिप्ट करने के लिए AES-256 GCM और कीज को एन्क्रिप्ट करने के लिए AES-256 SIV का उपयोग करता है। मास्टर कीज Android Keystore में संग्रहीत होती है, जो दो-स्तरीय सुरक्षा प्रदान करता है। अतिरिक्त रूप से, अखंडता सत्यापन के लिए HMAC-SHA256 का उपयोग किया जाता है।
हाँ, HTTPS केवल संचारण चैनल में डेटा की रक्षा करता है। उपकरण पर, डेटा डिक्रिप्शन के बाद सादे पाठ में संग्रहीत होता है। यदि कोई हमलावरा उपकरण तक भौतिक पहुंच प्राप्त करता है या मॉलवेयर स्थापित करता है, तो HTTPS संग्रहीत डेटा की रक्षा नहीं करेगा। हमेशा डेटा को भंडारण स्तर पर एन्क्रिप्ट करें।
Android Keystore का setUnlockedDeviceRequired(true) फ्लैग के साथ उपयोग करें, जो रूटेड उपकरणों पर कीज तक पहुंच को अवरुद्ध करता है। अतिरिक्त रूप से, Play Integrity API के माध्यम से अखंडता सत्यापित करें और यदि यह संदर्भ मानों से विचलित होता है, तो भंडारण से सभी रहस्य साफ करें।
नहीं, UserDefaults संदर्भ के अंदर एक plist फ़ाइल में डेटा को सादे पाठ में संग्रहीत करता है। रिवर्स एन्जीनियरिंग उपकरणों वाली कोई भी एप्लिकेशन (बैकअप या जेलब्रेक के माध्यम से) टोकन पढ़ सकता है। iOS पर रहस्य संग्रहीत करने का एकमात्र सुरक्षित स्थान Keychain है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें