Mobil xavfsizlik — bu ilova, foydalanuvchi ma'lumotlari va server infratuzilmasini hujumlar va sizib chiqishlardan himoya qilish choralari majmuidir. OWASP Mobile Top 10 (2024) ma'lumotlariga ko'ra, xavfsiz bo'lmagan ma'lumotlarni saqlash mobil ilovalardagi eng keng tarqalgan zaiflik bo'lib qolmoqda. Ushbu maqolada biz asosiy tahdidlar, shifrlash usullari, xavfsiz saqlash, autentifikatsiya va kod himoyasini ko'rib chiqamiz — boshlang'ich dasturchi bilishi kerak bo'lgan hamma narsa.
Asosiy Fikrlar
OWASP (Open Web Application Security Project) eng xavfli mobil xavfsizlik zaifliklari reytingini nashr etadigan notijorat tashkilotdir. OWASP Mobile Top 10 dasturchilarga birinchi navbatda nimaga e'tibor qaratish kerakligini tushunishga yordam beradigan ro'yxatdir. 2024 versiyasida xavfsiz bo'lmagan saqlash, zaif autentifikatsiya va xavfsiz bo'lmagan tarmoq aloqasi bilan bog'liq muammolar reytingda etakchilik qiladi.
M1: Xavfsiz bo'lmagan ma'lumotlarni saqlash — eng keng tarqalgan muammo: parollar, tokenlar va shaxsiy ma'lumotlar shifrlanmagan holda SharedPreferences, NSUserDefaults yoki mahalliy fayllarda qoladi. M2: Zaif autentifikatsiya — server tomonida tekshirishning yo'qligi, zaif parollar. M3: Xavfsiz bo'lmagan tarmoq aloqasi — HTTPS yo'qligi yoki noto'g'ri SSL sertifikatini tekshirish. M4 va M5 kriptografiya va noto'g'ri API foydalanish bilan bog'liq.
M6: Xavfsiz bo'lmagan avtorizatsiya — foydalanuvchi so'rovdagi IDni almashtirish orqali boshqa foydalanuvchining ma'lumotlariga kirishi mumkin. M7: Kod inyeksiyasi (SQL Injection, XSS). M8: Ilova manipulyatsiyasi — repackaging, kodni almashtirish. M9 va M10 — uchinchi tomon kutubxonalari orqali ma'lumotlarning sizib chiqishi va teskari muhandislik. Ushbu tahdidlarning har biri uchun isbotlangan qarshi choralar mavjud va IT Sectr da biz 2017 yildan beri barcha loyihalarda ularni qo'llaymiz.
MITM hujumi tajovuzkor ilova va server o'rtasidagi trafikni ushlaganda sodir bo'ladi. Bu DNS spoofing, ARP spoofing yoki xavfsiz bo'lmagan Wi-Fi tarmog'iga ulanish orqali mumkin. Himoya uchun SSL/TLS sertifikatlari va Certificate Pinning ishlatiladi.
Certificate Pinning — bu ilova server sertifikati ilova kodida oldindan saqlangan sertifikatga mos kelishini tekshiradigan mexanizm. Agar tajovuzkor proksi (masalan, Burp Suite) orqali sertifikatni almashtirsa ham, ilova ulanishni rad etadi. Pinning ikki turga bo'linadi: Public Key Pinning va Certificate Hash Pinning.
AES (Advanced Encryption Standard) simmetrik shifrlash algoritmi bo'lib, qurilmada ma'lumotlar xavfsizligining asosidir. AES ma'lumotlarni shifrlash va deshifrlash uchun bir xil kalitdan foydalanadi. AES 128, 192 yoki 256 bitli kalitlarni qo'llab-quvvatlaydi. Mobil rivojlanishda AES-256 qurilmadagi ma'lumotlarni (fayllar, kesh, mahalliy ma'lumotlar bazasidagi yozuvlar) shifrlash uchun ishlatiladi.
AES rejimlari: GCM (tavsiya etiladi) — ma'lumotlarni autentifikatsiya qilishni ta'minlaydi, CBC — blok zanjiri bilan asosiy rejim, ECB — xavfsiz emas, undan foydalanmang. iOS uchun AES CommonCrypto (CCOptions) orqali, Android uchun — Java Cryptography Architecture (JCA) dagi Cipher orqali mavjud. Muhim: shifrlash kaliti hech qachon ilova kodida saqlanmasligi kerak — Keychain/Keystore dan foydalaning.
Asimmetrik Shifrlash: RSA — bir juft kalitdan (ommaviy va shaxsiy) foydalanadi. RSA kichik hajmdagi ma'lumotlarni shifrlash uchun ishlatiladi — odatda mijoz va server o'rtasida simmetrik kalit almashinuvi uchun. Minimal RSA kalit uzunligi 2048 bit (4096 tavsiya etiladi). iOS da RSA Security Framework (SecKeyCreateRandomKey) orqali, Android da — Android Keystore dagi KeyPairGenerator orqali mavjud.
Xeshlash (SHA-256, SHA-3) ma'lumotlarning belgilangan uzunlikdagi satrga qaytarib bo'lmaydigan o'zgartirilishidir. Xeshlar ma'lumotlar yaxlitligini tekshirish va parollarni saqlash uchun ishlatiladi. Parollar uchun bcrypt, scrypt yoki Argon2 dan foydalanish shart — oddiy SHA-256 kamalak jadvali hujumlariga nisbatan zaifdir. SSL/TLS mijoz va server o'rtasidagi tarmoq trafigini shifrlash protokolidir. Zamonaviy standart Perfect Forward Secrecy (PFS) ni ta'minlovchi TLS 1.3 dir.
TLS 1.3 o'zidan oldingi versiyalardan tezroq: qo'l siqish ikkita o'rniga bir marta aylanib o'tishni talab qiladi. Android da minimal TLS versiyasi SSLSocket orqali sozlanadi, iOS da — standart bo'yicha TLS 1.2 yoki undan yuqorisini talab qiluvchi ATS (App Transport Security) orqali. ATS faqat ma'lum domenlar uchun asoslab o'chirilishi mumkin.
Keychain (Kalit halqasi) iOS / macOS da parollar, shifrlash kalitlari, sertifikatlar va tokenlar uchun himoyalangan ombordir. Keychain dagi ma'lumotlar har bir qurilma uchun noyob apparat kaliti bilan shifrlanadi. Keychain ga kirish Security Framework (SecItemAdd, SecItemCopyMatching) orqali boshqariladi. Qurilma qulflanganda Keychain avtomatik qulflanadi va Secure Enclave yordamida shifrlanadi.
Android Keystore ilovadan ajratilgan kriptografik kalitlar uchun tizim omboridir. Android 6.0 dan (API 23) boshlab, Keystore xavfsizlik chipiga ega qurilmalarda apparat yordamidan (TEE — Trusted Execution Environment) foydalanadi. Keystore dagi kalitlar hech qachon himoyalangan hududni tark etmaydi — ilova faqat shifrlash va imzolash operatsiyalari uchun tutqich oladi.
| Parametr | iOS Keychain | Android Keystore |
|---|---|---|
| Saqlanadigan ma'lumot turi | Parollar, tokenlar, kalitlar, sertifikatlar | Kriptografik kalitlar |
| Apparat yordami | Secure Enclave (A7+ barcha iPhone) | TEE (Android 6+, chipga bog'liq) |
| Shifrlash | AES-256 apparat | Apparat kaliti bilan AES/GCM |
| Biometriya | Kirish uchun Face ID / Touch ID | Kirish uchun BiometricPrompt |
| iCloud / zaxira nusxa | iCloud Keychain orqali sinxronizatsiya | Bulut bilan sinxronizatsiya qilinmaydi |
| Ishlash | Sekinroq (apparat shifrlash) | Tezroq (TEE) |
SharedPreferences va NSUserDefaults nozik ma'lumotlarni saqlash uchun mo'ljallanmagan — ular ma'lumotni ochiq matn shaklida saqlaydi. Ma'lumotlarni himoya qilish uchun EncryptedSharedPreferences (Android) dan foydalaning yoki UserDefaults (iOS) ga saqlashdan oldin ma'lumotlarni shifrlang. IT Sectr da biz har doim kirish tokenlari va parollar uchun Keychain va Keystore dan foydalanamiz.
OAuth 2.0 parolni uzatmasdan foydalanuvchi resurslariga xavfsiz kirishni ta'minlovchi vakolatli avtorizatsiya protokolidir. Mobil ilovalarda eng ko'p PKCE (Proof Key for Code Exchange) bilan Authorization Code Flow ishlatiladi. PKCE avtorizatsiya kodini ushlab qolishning oldini oladi — bu mobil ilovalar uchun majburiy talabdir.
OpenID Connect (OIDC) foydalanuvchi autentifikatsiyasi uchun OAuth 2.0 ustidagi kengaytmadir. OIDC foydalanuvchi ma'lumotlarini (ism, elektron pochta, id) o'z ichiga olgan JWT formatidagi ID Token ni qo'shadi. OAuth 2.0 + OIDC oqimi quyidagilarni o'z ichiga oladi: foydalanuvchini kirish sahifasiga yo'naltirish, avtorizatsiya kodini olish, kodni tokenlarga (access + refresh + id) almashtirish, API so'rovlari uchun kirish tokenidan foydalanish.
JWT (JSON Web Token) JSON formatidagi da'volarni (claims) o'z ichiga olgan ixcham, URL-xavfsiz token formatidir. JWT uch qismdan iborat: sarlavha (turi va imzo algoritmi), yuk (ma'lumotlar) va imzo. Kirish Tokeni API ga kirish uchun qisqa muddatli token (15-60 daqiqa). Yangilash Tokeni qayta kirmasdan yangi kirish tokenini olish uchun uzoq muddatli token (kunlar/haftalar).
Sessiya Tokeni server sessiyani ma'lumotlar bazasi yoki Redis da saqlaydigan va mijoz tasodifiy identifikator oladigan an'anaviy yondashuvdir. Mobil rivojlanishda JWT afzal ko'riladi: u server tomonida sessiya saqlashni talab qilmaydi, barcha ma'lumotni o'z ichida saqlaydi va tekshirish oson. Biroq, JWTni darhol bekor qilish mumkin emas — bu kirish tokenining qisqa umri va yangilash tokenlaridan foydalanish bilan hal qilinadigan kelishuvdir.
iOS da Face ID va Touch ID, Android da Barmoq izi autentifikatsiyasi — foydalanuvchining noyob jismoniy xususiyatlaridan foydalanadigan biometrik autentifikatsiya usullari. iOS da biometriya LocalAuthentication (LAContext) orqali, Android da — BiometricPrompt (Android 9+) yoki FingerprintManager (eskirgan) orqali ishlaydi. Biometriya ilovani qulfdan chiqarish, to'lovlarni tasdiqlash va himoyalangan ma'lumotlarga kirish uchun ishlatiladi.
Muhim nuanslar: biometriya qulay foydalanuvchi tajribasidir, ammo server autentifikatsiyasini almashtirmaydi. Muvaffaqiyatli biometrik tekshiruvdan so'ng, ilova serverdan kirish tokenini olishi kerak. Android da qurilma Class 3 (Kuchli) biometriyadan foydalanayotganiga, faqat kamera asosidagi yuzni tanish (Class 1) emasligiga ishonch hosil qiling.
ProGuard Android uchun Java bayt kodini obfuskatsiya qilish, siqish va optimallashtirish vositasidir, bu teskari muhandislikka qarshi kod xavfsizligini oshiradi. R8 uning vorisi bo'lib, Android Studio 3.4 dan boshlab Gradle ga o'rnatilgan. R8 to'rtta vazifani bajaradi: siqish (foydalanilmaydigan sinflar va metodlarni olib tashlaydi), optimallashtirish (metodlarni inline qiladi, kodni soddalashtiradi), obfuskatsiya (sinflar va metodlarni qisqa nomlar bilan qayta nomlaydi) va oldindan tekshirish (bayt kodni tekshirish).
DexGuard kengaytirilgan himoyaga ega ProGuard ning tijorat versiyasidir: satr shifrlash, resurs obfuskatsiyasi, repackaging dan himoya, APK yaxlitligi nazorati. Ko'pchilik loyihalar uchun R8 yetarli, ammo moliyaviy va bank ilovalari uchun DexGuard qo'shimcha xavfsizlik qatlamini ta'minlaydi. R8 build.gradle orqali faollashtiriladi: minifyEnabled = true va proguardFiles.
Root Detection (Android) va Jailbreak Detection (iOS) qurilmada superfoydalanuvchi imtiyozlari olinganligini tekshiradigan mexanizmlardir. Buzilgan qurilmalarda jarayon xotirasini o'qish, trafikni ushlash va kodni almashtirish mumkin. Android da tekshirish uchun SU ikkilik faylining mavjudligi, test imzo kalitlari va nostandart build bayroqlari ishlatiladi.
RASP (Runtime Application Self-Protection) ilovani bajarish vaqtida himoya qiladigan texnologiyadir. RASP disk raskadrovka, repackaging, kod inyeksiyasi urinishlarini aniqlaydi va tahdidlar aniqlanganda ilovani to'xtatadi. RASP yechimlariga misollar: Dexter, Guardsquare, Promon. RASP ish vaqtida ishlaydi va anomaliyalarga reaksiya beradi — bajarilishdan oldin kodni himoya qiluvchi statik obfuskatsiyadan farqli o'laroq.
Teskari Muhandislik kompilyatsiya qilingan ilovadan manba kodini tiklash jarayonidir. Vositalar: JADX (APK dekompilyatori), Ghidra, IDA Pro, Hopper. Teskari Muhandislikka qarshi himoya obfuskatsiya, satr shifrlash, yaxlitlikni tekshirish va Root Detection ning kombinatsiyasidir. To'liq himoya mavjud emas — maqsad tajovuzkor uchun teskari muhandislikni etarlicha qimmat qilishdir.
Tez-tez Beriladigan Savollar
OWASP Mobile Top 10 bilan boshlang — bu eng keng tarqalgan zaifliklarning yo'l xaritasidir. Keyin HTTPS va SSL sertifikatlarini o'rganing, Certificate Pinning ni sozlang va Keychain / Keystore orqali xavfsiz saqlashga o'ting.
AES (simmetrik) — shifrlash va deshifrlash uchun bitta kalit, tez, katta hajmdagi ma'lumotlar uchun mos. RSA (asimmetrik) — bir juft kalit (ommaviy va shaxsiy), sekinroq, simmetrik kalit almashinuvi uchun ishlatiladi.
Siz faqat maxfiy ma'lumotlarni shifrlashingiz kerak: parollar, tokenlar, shaxsiy foydalanuvchi ma'lumotlari, to'lov ma'lumotlari. Rasmlar, matnlar va interfeys sozlamalari shifrlashni talab qilmaydi — bu hajmni oshiradi va ilovani sekinlashtiradi.
Yangilash Tokeni parolni qayta kiritmasdan yangi Kirish Tokenini olish imkonini beruvchi uzoq muddatli tokendir. Bu xavfsizlikni oshiradi — Kirish Tokeni 15-60 daqiqa yashaydi va sizib chiqsa ham, tajovuzkor undan uzoq vaqt foydalana olmaydi.
Ha, Android reliz qurilmalari uchun R8 faollashtirilgan bo'lishi kerak. Bu nafaqat Teskari Muhandislikdan himoya, balki APK hajmini kamaytirish va ishlashni optimallashtirishdir. R8siz sizning kodingiz bitta JADX buyrug'i bilan o'qiladigan shaklda dekompilyatsiya qilinishi mumkin.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.