AES (Advanced Encryption Standard) — bu 2001-yilda AQSh Milliy Standartlar va Texnologiyalar Instituti (NIST) tomonidan rasmiy standart sifatida qabul qilingan simmetrik blokli shifrlash algoritmidir. AES eskirgan DES o'rnini egalladi va shundan beri bank tizimlaridan tortib mobil ilovalargacha qo'llaniladigan dunyodagi eng keng tarqalgan shifrlash algoritmiga aylandi. NIST (2023) ma'lumotlariga ko'ra, AES 256 bit uzunlikdagi kalit uchun 2^256 operatsiyaga teng bardoshlikni ta'minlaydi va bu uni zamonaviy brute force hujumlariga nisbatan daxlsiz qiladi. NIST FIPS 197, 2023
Asosiy fikrlar
AES (Advanced Encryption Standard) — belgiyalik kriptograflar Joan Daemen va Vincent Rijmen tomonidan Rijndael nomi bilan ishlab chiqilgan simmetrik blokli shifrdir. 2001-yilda NIST besh yillik ochiq sinov va tahlildan so'ng Rijndaellni AQShning yangi shifrlash standarti tanlovi g'olibi deb topdi. AES sobit o'lchamdagi (128 bit) ma'lumot bloklari bilan ishlaydi va uchta kalit uzunligini qo'llab-quvvatlaydi: 128, 192 va 256 bit. O'zgartirish raundlari soni kalit uzunligiga bog'liq: 128-bitli kalit uchun 10, 192-bitli uchun 12 va 256-bitli kalit uchun 14 raund. Har bir raund to'rtta operatsiyani o'z ichiga oladi: SubBytes (S-box orqali baytlarning nochiziqli almashtirilishi), ShiftRows (qatorlarning tsiklik siljishi), MixColumns (ustunlarning aralashtirilishi) va AddRoundKey (raund kalitining qo'llanilishi).
AESni ishlab chiqish 1997-yilda NIST DES o'rnini bosuvchi tanlov e'lon qilganida boshlandi, uning 56-bitli kaliti 1998-yilda Deep Crack ixtisoslashtirilgan qurilmasida 22 soatda buzilgan edi. Tanlovda turli mamlakatlardan 15 ta algoritm ishtirok etdi, jumladan Serpent (Buyuk Britaniya), Twofish (AQSh) va RC6 (AQSh). 1999-yil finaliga 5 nomzod qoldi. Rijndael barcha platformalarda (8-bitli mikrokontrollerlardan 64-bitli serverlargacha) yuqori tezlik, kriptotahlilga qarshilik va apparatda ixcham amalga oshirish kombinatsiyasi tufayli g'alaba qozondi. 2006-yildan beri AES AQSh davlat tizimlarida SECRET va TOP SECRET darajasidagi ma'lumotlarni shifrlash uchun qo'llaniladi. Bugungi kunda AES barcha asosiy protokollarga o'rnatilgan: TLS 1.2/1.3, IPsec, SSH, Wi-Fi WPA2/WPA3 va Bluetooth BR/EDR.
AES ma'lumotlarni 128 bit (16 bayt) bloklarida qayta ishlaydi, state deb ataladigan 4x4 bayt matritsasi shaklida tashkil etilgan. Har bir shifrlash raundi birgalikda „ko‘chki“ effektini yaratadigan deterministik o‘zgarishlar ketma-ketligini bajaradi: kirish ma'lumotlarining bir bitining o'zgarishi chiqish ma'lumotlarining taxminan 50% bitini o'zgartiradi. Bunday effekt AESni differensial va chiziqli kriptotahlilga — blokli shifrlarni buzishning asosiy usullariga — chidamli qiladi.
Jarayon AddRoundKey — boshlang'ich kalitni XOR operatsiyasi orqali statega qo'llash bilan boshlanadi. So'ngra raundlar bajariladi: SubBytes har bir state baytini S-box (almashtirish jadvali) qiymati bilan almashtiradi. ShiftRows ikkinchi qatorni 1 pozitsiyaga, uchinchisini 2 ga, to'rtinchisini 3 ga tsiklik siljitadi — bu ustunlar o'rtasida aralashtirishni ta'minlaydi. MixColumns har bir state ustunini Galois maydoni GF(2^8)dagi sobit matritsaga ko'paytirib, har bir chiqish baytining ustunning barcha to'rt kirish baytiga bog'liqligini yaratadi. AddRoundKey Key Expansion protsedurasi orqali boshlang'ich kalitdan olingan navbatdagi raund kalitini qo'llaydi. Oxirgi raund MixColumns operatsiyasining yo'qligi bilan farqlanadi. Shifrni ochish InvSubBytes, InvShiftRows, InvMixColumns va AddRoundKey teskari operatsiyalarini teskari tartibda ishlatadi. Mobil dasturchilar uchun AESning ichki tuzilishini tushunish talab qilinmaydi — platformaning o'rnatilgan APIlarini to'g'ri parametrlar bilan qanday chaqirishni bilish kifoya.
AESning kriptobardoshligini ta'minlovchi asosiy xususiyat ko'chki effektidir (avalanche effect). Ochiq matn yoki kalitdagi bir bitning o'zgarishi shifr matnining taxminan 50% bitining o'zgarishiga olib keladi, bu AESni differensial va chiziqli kriptotahlilga nihoyatda chidamli qiladi. SubBytes (S-box orqali nochiziqlilik) va MixColumns (Galois maydonida ko'paytirish orqali diffuziya) operatsiyalarining birikmasi shunday matematik murakkablikni yaratadiki, shifr matnining bir qismini bilish ham kalitni to'liq qidiruvdan tezroq tiklashga imkon bermaydi. NIST tahliliga (2018) ko'ra, AES-128ga qarshi ma'lum bo'lgan eng yaxshi hujum — biclique attack — effektiv kalit uzunligini atigi 2 bitga kamaytiradi (126.2 bitgacha), bu hujumchiga amaliy ustunlik bermaydi. AES-256 uchun to'liq qidiruvdan ustun bo'lgan hech qanday amalda amalga oshiriladigan hujum mavjud emas.
AES uchta kalit o'lchamini qo'llab-quvvatlaydi, ularning har biri ma'lum bir kriptobardoshlik darajasiga mos keladi. Kalit o'lchamini tanlash xavfsizlikka, unumdorlikka va qurilma resurslariga bo'lgan talablarga ta'sir qiladi.
| Kalit o'lchami | Raundlar soni | Xavfsizlik darajasi | Qo'llanish |
|---|---|---|---|
| AES-128 | 10 | 128 bit | Tijorat ilovalari, TLS |
| AES-192 | 12 | 192 bit | Davlat tizimlari (SECRET) |
| AES-256 | 14 | 256 bit | TOP SECRET, moliya sektori |
Amaliy qoida: mobil ilovalarda standart sifatida AES-256dan foydalaning. AES-NI qo'llab-quvvatlovchi zamonaviy qurilmalarda AES-128 va AES-256 o'rtasidagi unumdorlik farqi 10–15% dan oshmaydi, ammo xavfsizlik darajasi ikki barobar ortadi. Kvant tahliliga (Grassl et al., 2016) ko'ra, AES-128ni buzish uchun Grover algoritmi orqali 2^77 kvant operatsiyasi, AES-256 uchun esa 2^149 operatsiya kerak bo'ladi, bu AES-256ni keyingi 20–30 yil davomida kvant hujumlariga chidamli qiladi. Hatto AES-128 tijorat stsenariylarining katta qismi uchun yetarli himoyani ta'minlaydi: 128-bitli kalitni to'liq qidirish uchun Bryus Shnayer hisobiga ko'ra koinotda mavjud bo'lganidan ko'proq energiya kerak bo'ladi. Biroq, xavfsizlik standartlari (GDPR, HIPAA, PCI DSS) ko'pincha AES-256ni aniq talab qiladi, shuning uchun ishlab chiqarish loyihalarida maksimal kalit uzunligidan foydalanish tavsiya etiladi.
AES blokli shifr sifatida sobit o'lchamdagi bloklarni (128 bit) shifrlaydi. Ixtiyoriy uzunlikdagi ma'lumotlarni shifrlash uchun ish rejimlari (modes of operation) qo'llaniladi. Rejimni tanlash xavfsizlikka tanqidiy ta'sir qiladi: noto'g'ri rejim AESning bardoshligini bekor qilishi mumkin.
Mobil loyihalarda 12 bayt nonce bilan AES-256-GCMdan foydalaning. GCM bir vaqtning o'zida ikkita muammoni hal qiladi: ma'lumotlarni shifrlash va haqiqiyligini tekshirish, bu padding oracle va chosen ciphertext hujumlarining oldini oladi. Android Keystore va iOS CryptoKit qo'shimcha kriptografik primitivlarni amalga oshirishni talab qilmasdan AES-GCMni qutidan chiqqandek qo'llab-quvvatlaydi. GCM bilan ishlaganda bir xil kalit bilan nonceni hech qachon takrorlamaslik muhim — bu shifrlash xavfsizligini butunlay yo'q qiladi. Har bir shifrlash uchun yangi tasodifiy nonce yarating va uni shifr matni bilan birga saqlang.
Jetpack Security yordamida Androidda AES-256-GCMning xavfsiz amalga oshirilishi misolini ko'rib chiqaylik. Quyidagi kod to'liq tsiklni namoyish etadi: MasterKey orqali AES-256 kalitini yaratish, qo'shimcha autentifikatsiyalangan ma'lumotlar (AAD) bilan satrni shifrlash va shifrini ochish.
import androidx.security.crypto.MasterKey
import androidx.security.crypto.EncryptedSharedPreferences
val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
val securePrefs = EncryptedSharedPreferences.create(
context,
"secure_prefs",
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
fun storeSecureData(key: String, value: String) {
securePrefs.edit().putString(key, value).apply()
}
fun readSecureData(key: String): String? {
return securePrefs.getString(key, null)
}
Ushbu yechimning asosiy xususiyati AES-256-GCMning ikki darajada qo'llanilishidir: kalit-qiymat juftliklarini shifrlash (PrefValueEncryptionScheme) va kalitlarning o'z nomlarini himoya qilish (PrefKeyEncryptionScheme nonce takrorlanishiga chidamli AES-256-SIVdan foydalanadi). MasterKey AES-256-GCM algoritmi yordamida yaratiladi va Trusted Execution Environmentga ega qurilmalarda apparat darajasida himoyalangan Android Keystoreda saqlanadi. Apparat qo'llab-quvvatlovi (TEE) bo'lmagan qurilmalarda kalit Bouncy Castle orqali shifrlanadi, bu SharedPreferencesda saqlashdan baribir xavfsizroqdir.
Katta hajmdagi ma'lumotlarni (masalan, tasvirlar yoki fayllar) to'g'ridan-to'g'ri shifrlash uchun AndroidX Securitydagi EncryptedFile orqali AES-256-GCMdan foydalaning. Kalitlarni eksport qilish uchun (masalan, zaxira nusxasi uchun) 100000+ iteratsiya bilan PBKDF2 orqali foydalanuvchi paroli bilan qo'shimcha shifrlashdan foydalaning.
iOSda AES bilan ishlash CryptoKit (Swift 5.0+) frameworki orqali tashkil etilgan. AES-256 kaliti SymmetricKey(size: .bits256) orqali yaratiladi va Secure Enclaveda — asosiy CPU va operatsion tizimdan izolyatsiyalangan apparat kriptoprotsessorida — saqlanadi. CryptoKit AESning ikkita amalga oshirilishini taqdim etadi: AES.GCM (tavsiya etiladi) va AES.CBC (eskirgan formatlar bilan orqaga qarab muvofiqlik uchun). Shifrlash seal() metodi orqali amalga oshiriladi, u ma'lumotlarni, kalitni va nonce (12 bayt)ni qabul qiladi va shifr matni hamda autentifikatsiya tegini o'z ichiga olgan AES.GCM.SealedBox strukturasini qaytaradi. Shifrni ochish — open() orqali. Apple to'g'ridan-to'g'ri CommonCryptodan foydalanishni qat'iyan tavsiya etmaydi: CryptoKit avtomatik ravishda optimal parametrlarni tanlaydi, side-channel hujumlaridan himoya qiladi va Apple Silicon protsessorlarida AES-NI apparat tezlashtirishidan foydalanadi. Secure Enclavega ega qurilmalarda kalitlar hech qachon apparat modulini tark etmaydi, bu ilovaning to'liq buzilgan taqdirda ham ularning o'g'irlanishini imkonsiz qiladi. Kalitni seriyalash uchun withUnsafeBytes metodi, so'ngra kSecAttrAccessible = kSecAttrAccessibleWhenUnlockedThisDeviceOnly atributi bilan SecItemAdd orqali Keychainda saqlash qo'llaniladi.
Tez-tez beriladigan savollar
AES maxfiy kalit yordamida o'qiladigan ma'lumotlarni o'qilmaydigan baytlar to'plamiga aylantiradigan algoritmdir. Xuddi shu kalit ma'lumotlarni asl holatiga qaytarish uchun kerak. AES shunchalik ishonchliki, u AQSh hukumatining maxfiy hujjatlarini shifrlash uchun qo'llaniladi.
AES-128 128 bit uzunlikdagi kalitdan foydalanadi va 10 ta shifrlash raundini bajaradi. AES-256 256-bitli kalit va 14 raunddan foydalanadi, bu uni buzishni 2^128 marta qiyinlashtiradi. Mobil ilovalarda unumdorlik farqi minimal bo'lgani uchun AES-256 tavsiya etiladi.
AES-256-GCM — eng xavfsiz va tavsiya etiladigan rejim. GCM autentifikatsiyalangan shifrlashni (shifrlash + yaxlitlik tekshiruvi) ta'minlaydi. ECB rejimidan foydalanish taqiqlangan, CBC alohida MAC talab qiladi. GCM mobil ilovalar uchun de-fakto standartdir.
Nazariy jihatdan AES to'liq qidiruv orqali buzilishi mumkin, ammo AES-256 uchun 2^256 urinish kerak bo'ladi — kuzatiladigan koinotdagi atomlardan ko'proq. AES-256ga amaliy hujumlar mavjud emas. Side-channel hujumlari (Spectre, Meltdown) AESni buzmaydi, balki kalitlarni xotiradan o'g'irlaydi, shuning uchun kalitlarni apparat saqlashi tanqidiy ahamiyatga ega.
AndroidX Security kutubxonasidan foydalaning: KeyScheme.AES256_GCM bilan MasterKey.Builder Android Keystoreda himoyalangan kalit yaratadi, EncryptedSharedPreferences esa barcha ma'lumotlarni AES-256-GCM orqali avtomatik shifrlaydi. Hech qanday qo'lda kriptografiya — API standart sifatida xavfsiz, dasturchi xatolari xatarsiz.
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.