Secure Storage mobil tətbiqlərdə: bu nədir, metodlar və tətbiq

Müəllif: IT Sectr Dərc olunub: 2026-04-04 Oxuma vaxtı: 9 dəq

Secure Storage (təhlükəsiz saxlama) — cihazda məxfi məlumatların qorunması üçün metod və texnologiyalar kompleksi: tokenlər, şifrələmə açarları, ödəniş məlumatları və istifadəçi şəxsi məlumatları. OWASP Mobile Top 10 (2024) məlumatına görə, təhlükəsiz olmayan məlumat saxlanması ən kritik risklər arasında ilk üçlükdədir. Təhlükəsiz saxlamanın düzgün tətbiqi cihaza fiziki giriş olsa belə məlumat sızmasının qarşısını alır.

Əsas məqamlar

  • Secure Storage — digər tətbiqlərin və kiberhücumçuların girişinin qarşısını almaq üçün cihazda məlumatların şifrələnməsi və təcrid edilməsi metodları toplusu.
  • Android Keystore — aparat səviyyəsində (TEE) açarları yaradan və qoruyan kriptoqrafik anbar.
  • iOS Keychain — Security framework vasitəsilə girişlə OS səviyyəsində şifrələnmiş, sirlərin saxlanması üçün qorunan verilənlər bazası.
  • EncryptedSharedPreferences — AES-256 istifadə edərək açar-dəyər cütlərini şifrələmək üçün Android Jetpack kitabxanası.
  • Data Protection API — cihazın blok vəziyyətinə bağlı qorunma sinfinə əsasən faylları şifrələyən iOS mexanizmi.

Secure Storage nədir?

Secure Storage — mobil tətbiqin məxfi məlumatlarının digər tətbiqlər, zərərli proqramlar və cihaza fiziki girişi olan kiberhücumçu üçün əlçatmaz olmasını təmin edən saxlama praktikası. Adi saxlamadan fərqli olaraq, Secure Storage şifrələmə, təcrid və aparat qorunmasından istifadə edir.

Bütün məlumatlar Secure Storage tələb etmir: profil şəkilləri və ya xəbər keşi adi fayl sistemində saxlanıla bilər. Lakin şifrələmə açarları, autentifikasiya tokenləri, ödəniş məlumatları, şəxsi açarlar və biometrik şablonlar qorunmalıdır. Google Security Blog (2025) məlumatına görə, mobil tətbiqlərdəki zəifliklərin 67%-i sirlərin açıq şəkildə saxlanması ilə bağlıdır.

Hər bir mobil platforma öz Secure Storage mexanizmlərini təqdim edir: Android — Keystore və EncryptedSharedPreferences, iOS — Keychain və Data Protection API. Bu mexanizmlər aparat təhlükəsizlik modulları (TEE, Secure Enclave) ilə inteqrasiya olunub və cihaz jailbreak və ya root edilsə belə məlumatların oxunmasının qarşısını alır.

Secure Storage metodunun düzgün seçimi məlumat növündən, istifadə ssenarisindən və performans tələblərindən asılıdır. Hər bir mexanizmin arxitekturasını başa düşmək tərtibatçıya düzgün arxitektura qərarı verməyə imkan verir.

Android-də Secure Storage

Android platforması aparat açar anbarından şifrələnmiş SharedPreferences-a qədər bir neçə məlumat qorunması səviyyəsi təqdim edir. Seçim məlumatların həssaslığından və performans tələblərindən asılıdır.

Android Keystore — aparat səviyyəsində açar saxlanması

Android Keystore — aparat qorunmasını dəstəkləyən cihazlarda təcrid olunmuş icra mühitində (TEE — Trusted Execution Environment) açarları yaradan və saxlayan kriptoqrafik provayder. Açarlar heç vaxt TEE-ni tərk etmir: kriptoqrafik əməliyyatlar hətta əməliyyat sistemi üçün də əlçatmaz olan qorunan sahə daxilində yerinə yetirilir.

Android 9-dan (API 28) etibarən Keystore StrongBox Keymaster-ı dəstəkləyir — öz CPU-su, True Random Number Generator (TRNG) və qorunan yaddaşı olan xüsusi təhlükəsizlik çipi. StrongBox Common Criteria EAL 4+ sertifikatına malikdir və Android-də açarların saxlanmasının ən təhlükəsiz səviyyəsidir. StrongBox-dan istifadə etmək üçün açar yaradılarkən inStrongBox() bayrağını açıq şəkildə göstərmək lazımdır.

Keystore aşağıdakı alqoritmləri dəstəkləyir: AES/GCM/NoPadding (256 bit), EC (secp256r1, secp384r1), RSA (2048–4096 bit) və HMAC-SHA256. Bütün açarlar setUserAuthenticationRequired(true) vasitəsilə biometrik autentifikasiyaya bağlana bilər.

EncryptedSharedPreferences

EncryptedSharedPreferences — AndroidX Security paketindən olan kitabxana SharedPreferences API vasitəsilə saxlanılan bütün məlumatları avtomatik şifrələyir. Dəyərlər AES-256 GCM açarı ilə, açarlar isə AES-256 SIV (sintetik IV) ilə şifrələnir ki, bu da açar adlarına lüğət hücumlarının qarşısını alır.

Əsas şifrələmə açarı Android Keystore-da saxlanılır və iki səviyyəli qorunma təmin edir: Keystore master-açarı qoruyur, EncryptedSharedPreferences isə məlumatları qoruyur. Tipik məlumatlar (token, parametrlər) üçün şifrələmə performansı oxuma/yazma əməliyyatı başına 5 ms-dən azdır ki, bu da kitabxananı istifadəçi ssenariləri üçün uyğun edir.

EncryptedSharedPreferences böyük həcmli məlumatlar (5 MB-dan çox) üçün nəzərdə tutulmayıb — belə hallarda SQLCipher və ya şifrələmə ilə Room vasitəsilə şifrələnmiş verilənlər bazasından istifadə edin.

SQLCipher — şifrələnmiş verilənlər bazası

SQLCipher — bütün verilənlər bazasını AES-256-CBC istifadə edərək səhifə-səhifə şifrələyən SQLite genişləndirməsi. Verilənlər bazasının hər bir səhifəsi PBKDF2 vasitəsilə master-paroldan əldə edilən ayrıca açarla şifrələnir. SQLCipher məlumatların ölçüsündən asılı olaraq performansa təxminən 5–15% yük əlavə edir.

Android ilə inteqrasiya standart SQLiteOpenHelper ilə uyğun API təqdim edən net.zetetic:android-database-sqlcipher kitabxanası vasitəsilə həyata keçirilir. SQLCipher üçün parol kodda və ya SharedPreferences-da deyil, Keystore-da saxlanılması tövsiyə olunur.

iOS-da Secure Storage

iOS platforması Keychain Services — əsas qorunan anbar, həmçinin OS səviyyəsində faylların şifrələnməsi üçün Data Protection API təqdim edir.

Keychain Services

Keychain — iOS-un parolları, şifrələmə açarlarını, sertifikatları və qeydləri saxladığı şifrələnmiş SQLite verilənlər bazasıdır. Keychain-in hər bir elementi (SecItem) cihaz üçün unikal olan aparat açarından istifadə edərək şifrələnmiş formada saxlanılır. Elementə giriş ACL (Access Control List) vasitəsilə idarə olunur və biometrik autentifikasiya (Face ID, Touch ID) və ya parol tələb edə bilər.

Keychain məlumatların nə vaxt əlçatan olduğunu müəyyən edən qorunma siniflərini (Protection Class) dəstəkləyir: kSecAttrAccessibleWhenUnlockedThisDeviceOnly — məlumatlar yalnız cihaz açıq olduqda əlçatandır və ehtiyat nüsxə zamanı köçürülmür. Bu sinif autentifikasiya tokenlərinin saxlanması üçün əksər ssenarilərdə tövsiyə olunur.

iOS 15+-da Secure Enclave vasitəsilə aparat açarlarını dəstəkləyən Security framework mövcuddur — kriptoqrafik əməliyyatları emal edən və şəxsi açarları təcrid olunmuş yaddaşda saxlayan xüsusi Apple prosessoru. Secure Enclave çipdən çıxarılması mümkün olmayan açarların yaradılması üçün ECDSA (secp256r1) və ECDH alqoritmlərini dəstəkləyir.

Data Protection API

Data Protection — cihazın paroluna bağlı açardan istifadə edərək fayl sistemi səviyyəsində (APFS) hər bir faylı şifrələyən iOS mexanizmidir. Tərtibatçı fayl yaradılarkən NSFileProtectionType atributu vasitəsilə qorunma səviyyəsini təyin edir: NSFileProtectionComplete — fayl yalnız cihaz açıq olduqda əlçatandır.

Data Protection iOS 5+ olan bütün cihazlarda parol təyin olunubsa avtomatik işləyir. Şifrələmə Apple prosessorunun Dedicated AES Engine vasitəsilə aparat səviyyəsində həyata keçirilir ki, bu da yüksək performans təmin edir — şifrələmə gecikməsi istifadəçi üçün praktiki olaraq hiss olunmaz. Tətbiqdə qorunmanı aktiv etmək üçün FileManager vasitəsilə fayl yaradılarkən qorunma atributunu təyin etmək kifayətdir.

Data Protection açarların saxlanması üçün Keychain-i əvəz etmir — faylların, Core Data verilənlər bazalarının və digər böyük həcmli məlumatların şifrələnməsi üçün istifadə olunur. Keychain (açarlar üçün) və Data Protection (fayllar üçün) kombinasiyası iOS-da tam təhlükəsiz saxlama dövrünü təmin edir.

Kod nümunələri: Android və iOS-da məlumatların şifrələnməsi

Secure Storage-un Android və iOS-un daxili API-lərindən istifadə edərək praktik nümunələrini nəzərdən keçirək.

Kotlin-də EncryptedSharedPreferences

Nümunə Android Keystore-dan master-açar ilə EncryptedSharedPreferences-in inisiallaşdırılmasını göstərir. Sonrakı bütün oxuma və yazma əməliyyatları avtomatik şifrələnir və deşifrələnir.

kotlin
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()

Swift-də Keychain

Nümunə Security framework-dən istifadə edərək iOS Keychain-də məlumatların saxlanması və oxunmasını nümayiş etdirir. Kod maksimum qorunma üçün kSecAttrAccessibleWhenUnlockedThisDeviceOnly-dan istifadə edir.

swift
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
}

Kotlin-də SQLCipher

Android Keystore-da saxlanan parol ilə SQLCipher vasitəsilə şifrələnmiş SQLite verilənlər bazasına qoşulma nümunəsi.

kotlin
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)
    }
}

// Istifadə: açarkən parol daxil edin
val helper = SecureDBHelper(context)
val db = helper.getWritableDatabase(password)

Təhlükəsiz məlumat saxlanması üçün tövsiyələr

Secure Storage-un düzgün istifadəsi tərtibatçıların tipik səhvlərinin qarşısını alan bir neçə əsas prinsipə riayət etməyi tələb edir.

Məlumatların təsnifatını müəyyən edin: hansı məlumatlar aparat qorunması (Keystore / Secure Enclave), hansılar — OS səviyyəsində şifrələmə (EncryptedSharedPreferences / Data Protection), hansılar isə adi fayl sistemində saxlanıla bilər. Autentifikasiya tokenləri, şəxsi açarlar və ödəniş məlumatları — yalnız aparat səviyyəsi. İstifadəçi parametrləri (mövzu, dil) — EncryptedSharedPreferences kifayətdir. Seans məlumatları (müvəqqəti keşlər) yaddaşda və ya müvəqqəti kataloqda saxlanıla bilər.

Heç vaxt sirləri kodda saxlamayın: API açarları, parollar və ya seed ifadələri olan sətirləri mənbə kodunda saxlamaq ən kobud təhlükəsizlik səhvidir. İstənilən reverse engineering bu məlumatları dərhal üzə çıxaracaq. Açarlar üçün Keystore-dan, konfiqurasiya üçün isə tətbiq işə salındıqda server yükləməsindən (remote config) istifadə edin.

Kritik əməliyyatlar üçün biometrik bağlamadan istifadə edin: Android Keystore və iOS Keychain açarların biometrik autentifikasiyaya bağlanmasını dəstəkləyir. Açara hər müraciətdə sistem Face ID, Touch ID və ya Android biometriyasını (BiometricPrompt) tələb edir. Bu, kiberhücumçunun cihaz üzərində tam nəzarəti olsa belə, saxlanılmış məlumatlardan istifadə edə bilməyəcəyinə zəmanət verir.

Qorunmanı test edin: təhlükəsizlik analizi alətlərindən istifadə edin — statik analiz üçün MobSF (Mobile Security Framework), runtime testi üçün objection və qorunmanın yan keçilməsi üçün Frida. Root və ya jailbreak-dən sonra məlumatların əlçatmaz olduğunu yoxlayın. Android root girişini SafetyNet Attestation və ya Play Integrity API vasitəsilə, iOS — Secure Enclave-in bütövlüyünü yoxlamaqla təsdiq etməyə imkan verir.

Kriptoqrafik kitabxanaları mütəmadi yeniləyin: şifrələmə kitabxanalarında zəifliklər mütəmadi aşkarlanır. AndroidX Security, SQLCipher və Keychain wrappers üçün CVE-ləri izləyin. Dependabot və ya Renovate vasitəsilə yeni versiyalar haqqında avtomatik bildiriş sistemi tətbiq edin.

Apple Security Research (2025) məlumatına görə, Secure Storage-un düzgün tətbiqi cihazdan məlumat oğurluğuna yönəlmiş hücumların 96%-nin qarşısını alır. Qalan 4% — fiziki girişi olan hücumlar və sıfırıncı gün eksploitləridir ki, onlara qarşı biometrik bağlama effektivdir.

Tez-tez verilən suallar

Keychain və Keystore arasında nə fərq var?

iOS Keychain — ACL vasitəsilə giriş nəzarəti ilə parolların, açarların və sertifikatların saxlanması üçün şifrələnmiş verilənlər bazasıdır. Android Keystore — təcrid olunmuş mühitdə (TEE/StrongBox) açarları yaradan və saxlayan, şəxsi açarın çıxarılmasına imkan verməyən kriptoqrafik provayderdir.

EncryptedSharedPreferences-də hansı şifrələmə alqoritmi istifadə olunur?

EncryptedSharedPreferences dəyərlərin şifrələnməsi üçün AES-256 GCM, açarların şifrələnməsi üçün isə AES-256 SIV istifadə edir. Əsas açar Android Keystore-da saxlanılır və iki səviyyəli qorunma təmin edir. Əlavə olaraq bütövlüyün yoxlanılması üçün HMAC-SHA256 istifadə olunur.

Artıq HTTPS ilə qorunan məlumatları şifrələmək lazımdırmı?

Bəli, HTTPS məlumatları yalnız ötürmə kanalında qoruyur. Cihazda məlumat deşifrələnmədən sonra açıq formada saxlanılır. Kiberhücumçu cihaza fiziki giriş əldə edərsə və ya zərərli proqram quraşdırarsa, HTTPS saxlanılan məlumatları qorumayacaq. Həmişə məlumatları saxlama səviyyəsində şifrələyin.

Android root edildikdən sonra məlumatları necə qorumaq olar?

Android Keystore-dan setUnlockedDeviceRequired(true) bayrağı ilə istifadə edin ki, bu da root edilmiş cihazlarda açarlara girişi bloklayır. Əlavə olaraq Play Integrity API vasitəsilə bütövlüyü yoxlayın və istinad dəyərlərindən kənarlaşma olduqda anbardan bütün sirləri təmizləyin.

iOS-da tokenlərin saxlanması üçün UserDefaults istifadə edilə bilərmi?

Xeyr, UserDefaults məlumatları sandbox daxilində plist faylında açıq formada saxlayır. Reverse engineering alətləri olan istənilən tətbiq (ehtiyat nüsxə və ya jailbreak vasitəsilə) tokenləri oxuya bilər. Yalnız Keychain — iOS-da sirlərin saxlanması üçün yeganə təhlükəsiz yerdir.

Nəticə

  • Secure Storage — cihaza fiziki giriş zamanı məlumat sızmasının qarşısını alan mobil tətbiqlərin məcburi qorunma komponentidir.
  • Android Keystore StrongBox ilə xüsusi təhlükəsizlik çipində aparat açar saxlanmasını təmin edir.
  • iOS Keychain qorunma sinifləri ilə (WhenUnlockedThisDeviceOnly) — Apple platformasında sirlərin saxlanması standartı.
  • EncryptedSharedPreferences — Android-də parametrlərin və tokenlərin iki səviyyəli kriptoqrafiya ilə şifrələnməsi üçün hazır həll.
  • SQLCipher — AES-256-CBC səhifə şifrələməsi ilə şifrələnmiş verilənlər bazaları üçün seçim.
  • iOS-da Data Protection və Android-də SafetyNet/Play Integrity — fayl sisteminin əlavə qorunma səviyyələri.
  • Məlumatların düzgün təsnifatı və biometrik bağlama Apple Security Research-a görə saxlanılan məlumatlara hücumların 96%-nin qarşısını alır.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun