Şifrələmə (encryption) — bu, məlumatların xüsusi açar olmadan oxunması mümkün olmayan formaya çevrilməsi prosesidir. Mobil tətbiqlərdə şifrələmə istifadəçilərin şəxsi məlumatlarını, ödəniş məlumatlarını və biznes məntiqini ələ keçirilmə və sızıntıdan qoruyur. Statista (2024) məlumatlarına görə, mobil tətbiqlərdən məlumat sızıntılarının sayı iki il ərzində 38% artıb və 72% hallarda səbəb şifrələmənin olmaması və ya düzgün aparılmaması olub. Müasir mobil platformalar şifrələmə üçün daxili API-lər təqdim edir və onların istifadəsi məcburi təhlükəsizlik standartıdır. Statista, 2024
Başlıca
Şifrələmə mobil tətbiqlər kontekstində — bu, cihazda saxlanılan (data at rest) və şəbəkə ilə ötürülən (data in transit) məlumatların qorunması üçün kriptoqrafik alqoritmlərin tətbiqidir. Cihaz səviyyəsində yerli yaddaş şifrələnir: fayllar, verilənlər bazaları, SharedPreferences və keş. Şəbəkə səviyyəsində tətbiq və server arasında trafik TLS/HTTPS protokolları vasitəsilə şifrələnir. Son məqsəd — hətta cihaza fiziki çıxış və ya trafikin ələ keçirilməsi halında belə, hücumçunun kriptoqrafik açar olmadan qorunan məlumatları oxuya bilməyəcəyinə zəmanət verməkdir.
Mobil cihazlar məlumat itkisinə qarşı xüsusilə həssasdır: telefonu asanlıqla itirmək, oğrulamaq və ya zərərli proqramla yoluxdurmaq olar. Ponemon Institute (2023) məlumatlarına görə, məlumat sızıntısından zərər çəkmiş şirkətlərin 42%-i hadisələri mobil cihazlarla əlaqələndirir. Şifrələmə olmadan hücumçu USB vasitəsilə cihaza qoşula, SQLite verilənlər bazasını çıxara və bütün saxlanılan məlumatları oxuya bilər. Şifrələmə bu problemi həll edir: hətta verilənlər bazası çıxarılsa belə, onun məzmunu şifrələnmiş qalır. Əlavə olaraq, ABŞ və Aİ-də şəxsi məlumatların şifrələnməsini tələb edən və pozuntulara görə illik dövriyyənin 4%-ə qədər cərimə nəzərdə tutan qanunlar (GDPR, CCPA) qüvvədədir. Şifrələmədən istifadə — bu, istifadəçi məlumatları ilə işləyən hər bir mobil tətbiq üçün təkcə texniki deyil, hüquqi zərurətdir.
Bütün şifrələmə alqoritmləri iki əsas növə bölünür: simmetrik (şifrələmə və şifrəni açma üçün bir açar) və asimmetrik (bir cüt açar — açıq və gizli). Növün seçimi istifadə ssenarisindən asılıdır: yerli məlumatların şifrələnməsi üçün sürətinə görə daha çox simmetrik alqoritmlər, açarların ötürülməsi və autentifikasiya üçün isə asimmetrik alqoritmlər tətbiq olunur.
| Xarakteristika | Simmetrik | Asimmetrik |
|---|---|---|
| Açarların sayı | 1 (gizli) | 2 (açıq + gizli) |
| Sürət | Yüksək (1–10 GB/s) | Aşağı (1–10 MB/s) |
| Açarın yayılması | Problem — açarı ötürmək lazımdır | Sadə — açıq açar dərc olunur |
| Nümunələr | AES, ChaCha20 | RSA, ECDH, ECIES |
| Mobil inkişafda tətbiqi | Yerli məlumatların şifrələnməsi | Açar mübadiləsi, rəqəmsal imzalar |
Təcrübədə mobil tətbiqlərdə hibrid şifrələmə istifadə olunur: asimmetrik alqoritmlə (məs. ECDH) tərəflər sessiya açarını mübadilə edir, bütün sonrakı məlumatlar isə simmetrik alqoritmlə (AES və ya ChaCha20) şifrələnir. Bu yanaşma simmetrik şifrələmənin sürətini asimmetrik açar mübadiləsinin təhlükəsizliyi ilə birləşdirir. Bu üsul TLS 1.3, Signal Protocol və Apple iMessage-ın əsasındadır.
Müasir mobil inkişaf şifrələmə üçün bir neçə standartlaşdırılmış şifrələmə alqoritmindən istifadə edir, onların hər biri müəyyən tapşırıqlar üçün nəzərdə tutulub və öz tətbiq sahəsinə malikdir.
Şifrələmə məlumatları üç əsas ssenaridə qoruyur: cihaz itirildikdə (diskin və tətbiq konteynerlərinin şifrələnməsi), trafik ələ keçirildikdə (şəbəkə protokolları TLS/HTTPS) və serverdən sızıntı zamanı (ucdan-uca şifrələmə). Hər ssenari öz yanaşması və alətlərini tələb edir.
Data at rest — cihazdakı məlumatlar — Android Keystore və iOS Keychain vasitəsilə şifrələnir. Android 7.0-dan başlayaraq fayl şifrələməsi (File-Based Encryption) istifadə olunur və tətbiqlər əlavə olaraq AndroidX Security kitabxanasından EncryptedSharedPreferences və EncryptedFile vasitəsilə məlumatlarını şifrələyə bilər. iOS-də bütün tətbiqlər standart olaraq Data Protection API ilə işləyir, bu da faylları cihaz koduna bağlı açarla fayl sistemində şifrələyir. Data in transit üçün məcburi Certificate Pinning ilə TLS 1.2/1.3 istifadə olunur.
Ucdan-uca şifrələmə (E2E) — məlumatların ən yüksək qorunma səviyyəsi, burada mesaj göndərənin cihazında şifrələnir və yalnız qəbul edənin cihazında şifrədən açılır. Məlumatların saxlanması və ötürülməsi serveri məzmuna çıxış əldə etmir — o, yalnız şifrələnmiş bloblar ilə işləyir. Mobil tətbiqlər üçün E2E-nin ən məşhur tətbiqi — Signal Protocol, ilkin açar mübadiləsi üçün X3DH (Extended Triple Diffie-Hellman) ilə birlikdə Double Ratchet Algorithm istifadə edir. Signal Protocol Perfect Forward Secrecy və future secrecy təmin edir: bir açarın kompromitasiyası əvvəlki və sonrakı mesajları açıqlamır. Carnegie Mellon Universitetinin tədqiqatına (2023) görə, mesajlaşma tətbiqlərində E2E-şifrələmə TLS-only şifrələmə ilə müqayisədə yazışma sızıntısı riskini 99,7% azaldır. E2E tətbiqi GDPR və HIPAA tələblərinə əsasən Health & Fitness və Finance kateqoriyalı tətbiqlər üçün məcburidir. Öz layihənizdə E2E tətbiqi üçün Signal Protocol (Java/Swift) və ya Olm (Matrix protocol) əsaslı kitabxanadan istifadə etmək tövsiyə olunur. E2E həlli seçərkən platforma uyğunluğunu qiymətləndirin: Signal Protocol asinxron göndərmə və açarların müştəri tərəfdə saxlanmasını tələb edir, bu da multi-device ssenarilərinin tətbiqini çətinləşdirir — belə hallarda otaq modeli ilə Matrix Protocol daha yaxşı seçim ola bilər.
Android-də Jetpack Security (AndroidX Security) istifadə edərək məlumatların şifrələnməsi və şifrədən açılması nümunəsinə baxaq. Kitabxana faylların şifrələnməsi üçün EncryptedFile və parametrlər üçün EncryptedSharedPreferences təqdim edir.
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("Həssas istifadəçi məlumatları".toByteArray(Charsets.UTF_8))
}
MasterKey AES256-GCM — simmetrik şifrələmənin ən təhlükəsiz rejimindən istifadə edərək yaradılır. Açar əsas prosesdən təcrid olunmuş Android Keystore-da saxlanılır: tətbiq kompromitasiya olunsa belə, hücumçu açarı çıxara bilməz. EncryptedFile açarın derivasiyası üçün HKDF ilə AES-256-GCM sxemindən və səhifə ölçüsü 4KB istifadə edir, bu da sürət və təhlükəsizlik arasında yaxşı balans verir. Məlumatların oxunması üçün eyni parametrlərlə openFileInput istifadə olunur: kitabxana oxuma zamanı məlumatları avtomatik şifrədən açır.
iOS-də analoji funksionallıq AES.GCM və ya ChaChaPoly istifadə edərək CryptoKit (Swift) vasitəsilə təmin edilir. Açar Keychain Services vasitəsilə Secure Enclave-da saxlanılır. Prinsip eynidir: açarlar heç vaxt qorunan aparat yaddaşını tərk etmir və məlumatlar diskə yazılmazdan əvvəl şifrələnir. Belə bir arxitektura OWASP MASVS (Mobile Application Security Verification Standard) L2 səviyyəsinin tövsiyələrinə uyğundur — həssas məlumatlarla işləyən tətbiqlər üçün. Real layihələrdə tokenlər üçün EncryptedSharedPreferences və istifadəçi məlumatları üçün EncryptedFile kombinasiyası yerli şifrələmənin 100% ssenarilərini əhatə edir. Əlavə olaraq, serverdən alınan açarlarla (məs. ECDH sessiya açarları) işləmək üçün purpose = KeyProperties.PURPOSE_ENCRYPT parametri ilə Android KeyStore istifadə olunur, bu da açarın yalnız icazə verilən kriptoqrafik əməliyyatlar üçün istifadə oluna biləcəyini və açıq formada aparat yaddaşından operativ yaddaşa heç vaxt ixrac edilməyəcəyini təmin edir.
Tez-tez verilən suallar
GCM rejimində AES-256 açarın aparat yaddaşında (Android Keystore / iOS Keychain) saxlanması ilə qızıl standart hesab olunur. Şəbəkə trafiki üçün — Curve25519 elliptik əyrisi ilə TLS 1.3. ChaCha20-Poly1305 aparat AES-i olmayan cihazlarda alternativ olaraq istifadə olunur.
AES — simmetrik alqoritm (bir açar), sürətli, böyük həcmli məlumatların şifrələnməsi üçün uyğundur. RSA — asimmetrik (bir cüt açar), yavaş, açarların şifrələnməsi və imzalar üçün istifadə olunur, məlumatların özü üçün deyil. Mobil tətbiqlərdə AES məlumatları şifrələyir, RSA açarları qoruyur.
Məxfi məlumatları şifrələmək lazımdır: giriş tokenləri, şifrələr, şəxsi məlumatlar, ödəniş məlumatları, tibbi qeydlər. Açıq məlumatlar (şəkillər, məzmun) şifrələnməyə bilər, lakin onları tətbiqin qorunan konteynerində saxlamaq daha yaxşıdır.
Ucdan-uca şifrələmədə məlumatlar göndərməzdən əvvəl göndərənin cihazında şifrələnir və yalnız qəbul edənin cihazında şifrədən açılır. Server yalnız şifrələnmiş məlumatları görür. Signal Protocol-da tətbiq edilən Double Ratchet protokolu mobil mesajlaşma tətbiqlərində ən geniş yayılmış E2E mexanizmidir.
Texniki olaraq mümkündür, lakin tövsiyə olunmur. Cihazdakı məlumatlar üçün Keystore-dən açarla simmetrik şifrələmə (AES-GCM) istifadə edin. Şəbəkə üçün — ayrı açar dəsti və Certificate Pinning ilə TLS 1.3. Ayrılma bir açarın sızması zamanı hər iki kanalın kompromitasiyasının qarşısını alır.
Nəticə
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.
Həm də oxuyun