AES (Advanced Encryption Standard) — bu 2001-ci ildə ABŞ Milli Standartlar və Texnologiyalar İnstitutu (NIST) tərəfindən rəsmi standart olaraq qəbul edilmiş simmetrik bloklu şifrələmə alqoritmidir. AES köhnəlmiş DES-i əvəz etdi və o vaxtdan bəri bank sistemlərindən mobil tətbiqlərə qədər istifadə olunan dünyanın ən geniş yayılmış şifrələmə alqoritminə çevrildi. NIST (2023) məlumatlarına görə, AES 256 bit uzunluğunda açar üçün 2^256 əməliyyata ekvivalent davamlılıq təmin edir və bu onu müasir brute force hücumlarına qarşı toxunulmaz edir. NIST FIPS 197, 2023
Başlıca məqamlar
AES (Advanced Encryption Standard) — belçikali kriptoqraflar Joan Daemen və Vincent Rijmen tərəfindən Rijndael adı ilə işlənib hazırlanmış simmetrik bloklu şifrədir. 2001-ci ildə NIST beş il açıq sınaq və təhlildən sonra Rijndael-i ABŞ-ın yeni şifrələmə standartı üçün müsabiqənin qalibi seçdi. AES sabit ölçülü məlumat blokları (128 bit) ilə işləyir və üç açar uzunluğunu dəstəkləyir: 128, 192 və 256 bit. Özərünün çevrilmələrinin sayı açarın uzunluğundan asılıdır: 128-bitlik üçün 10, 192-bitlik üçün 12 və 256-bitlik açar üçün 14 raund. Hər raund dörd əməliyyatı əhatə edir: SubBytes (S-box vasitəsilə qeyri-xətti bayt dəyişməsi), ShiftRows (setirlərin tsiklik sürüşdürülməsi), MixColumns (sütunların qarışdırılması) və AddRoundKey (raund açarının tətbiqi).
AES-in işlənməsi 1997-ci ildə NIST-in DES-i əvəz etmək üçün müsabiqə elan etməsi ilə başladı. DES-in 56-bitlik açarı 1998-ci ildə Deep Crack adlı ixtisaslaşdırılmış cihazda 22 saata sındırılmışdı. Müsabiqədə müxtəlif ölkələrdən 15 alqoritm iştirak etdi, o cümlədən Serpent (Böyük Britaniya), Twofish (ABŞ) və RC6 (ABŞ). 1999-cu ilin finalına 5 namizəd qaldı. Rijndael bütün platformalarda (8-bitlik mikrokontrollerlərdən 64-bitlik serverlərə qədər) yüksək sürət, kriptotəhlilə qarşı davamlılıq və avadanlıqda yığcamlı tətbiq kombinasiyası sayəsində qalib gəldi. 2006-cı ildən etibarən AES ABŞ-ın dövlət sistemlərində SECRET və TOP SECRET qrifli məlumatların şifrələnməsi üçün istifadə olunur. Bu gün AES bütöv əsas protokollara daxil edilmişdir: TLS 1.2/1.3, IPsec, SSH, Wi-Fi WPA2/WPA3 və Bluetooth BR/EDR.
AES məlumatları 128 bit (16 bayt) blokları ilə emal edir, state adlanan 4x4 bayt matrisi şəklində təşkil olunur. Hər şifrələmə raundu birlikdə «lavina» effekti yaradan deterministik çevrilmələr ardıcıllığını yerinə yetirir: giriş məlumatlarının bir bitinin dəyişməsi çıxış məlumatlarının təxminən 50% bitini dəyişir. Bu effekt AES-i bloklu şifrləri sındırmağın əsas üsulları olan diferensial və xətti kriptotəhlilə qarşı davamlı edir.
Proses AddRoundKey — ilkin açarın XOR əməliyyatı vasitəsilə state-ə tətbiqi ilə başlayır. Sonra raundlar yerinə yetirilir: SubBytes hər state baytını S-box (dəyişmə cədvəli) dəyəri ilə əvəz edir. ShiftRows ikinci setiri 1 mövqe, üçüncünü 2, dördüncünü 3 mövqe tsiklik sürüşdürür — bu sütunlar arasında qarışdırmanı təmin edir. MixColumns hər state sütununu Galois sahəsi GF(2^8)-də sabit matrisə vuraraq hər çıxış baytının sütunun bütöv dörd giriş baytından asılılığını yaradır. AddRoundKey Key Expansion proseduru vasitəsilə ilkin açardan əldə edilən növbəti raund açarını tətbiq edir. Son raund MixColumns əməliyyatının olmaması ilə fərqlənir. Şifrənin açılması InvSubBytes, InvShiftRows, InvMixColumns və AddRoundKey tərs çevrilmə əməliyyatlarını tərs ardıcıllıqla istifadə edir. Mobil tətibatçılar üçün AES-in daxili strukturunu başa düşmək tələb olunmur — platformanın daxili API-lərini düzgün parametrlərlə necə çağıracağını bilmək kifayətdir.
AES-in kriptodavamlılığını təmin edən əsas xüsusiyyət lavina effektidir (avalanche effect). Açıq mətndə və ya açarda bir bitin dəyişməsi şifrə mətninin təxminən 50% bitinin dəyişməsinə gətirib çıxarır ki, bu da AES-i diferensial və xətti kriptotəhlilə qarşı son dərəcə davamlı edir. SubBytes (S-box vasitəsilə qeyri-xəttilik) və MixColumns (Galois sahəsində vurma vasitəsilə diffuziya) əməliyyatlarının kombinasiyası elə bir riyazi mürəkkəblik yaradır ki, şifrə mətninin hissəsini bilmək belə açarı tam axtarışdan daha sürətli bərpa etməyə imkan vermir. NIST təhlilinə (2018) görə, AES-128-ə qarşı məlum olan ən yaxşı hücum — biclique attack — effektiv açar uzunluğunu cəmi 2 bit azaldır (126.2 bitə qədər), bu da hücumçuya praktiki üstünlük vermir. AES-256 üçün tam axtarışdan üstün olan heç bir praktiki olaraq həyata keçirilə bilən hücum mövcud deyil.
AES üç açar ölçüsü dəstəkləyir, hər biri müəyyən kriptodavamlılıq səviyyəsinə uyğun gəlir. Açar ölçüsünün seçimi təhlükəsizliyə, məhsuldarlığa və cihaz resurslarına olan tələblərə təsir edir.
| Açar ölçüsü | Raundların sayı | Təhlükəsizlik səviyyəsi | Tətbiq |
|---|---|---|---|
| AES-128 | 10 | 128 bit | Kommersiya tətbiqləri, TLS |
| AES-192 | 12 | 192 bit | Dövlət sistemləri (SECRET) |
| AES-256 | 14 | 256 bit | TOP SECRET, maliyyə sektoru |
Praktik qayda: mobil tətbiqlərdə standart olaraq AES-256-dan istifadə edin. AES-NI dəstəyi olan müasir cihazlarda AES-128 və AES-256 arasında məhsuldarlıq fərqi 10–15%-dən çox deyil, lakin təhlükəsizlik səviyyəsi iki dəfə artır. Kvant təhlilinə (Grassl et al., 2016) görə, AES-128-i sındırmaq üçün Grover alqoritmi vasitəsilə 2^77 kvant əməliyyatı, AES-256 üçün isə 2^149 əməliyyat tələb olunur ki, bu da AES-256-nı növbəti 20–30 il ərzində kvant hücumlarına qarşı davamlı edir. Hətta AES-128 kommersiya ssenarilərinin böyük əksəriyyəti üçün kifayət qədor qoruma təmin edir: Bruce Schneier-in hesablamasına görə, 128-bitlik açarın tam axtarışı üçün kainatda mövcud olandan daha çox enerji tələb olunur. Bununla belə, təhlükəsizlik standartları (GDPR, HIPAA, PCI DSS) çox vaxt açıqşə AES-256 tələb edir, buna görə istehsal layihələrində maksimum açar uzunluğundan istifadə etmək tövsiyə olunur.
AES bloklu şifrə kimi sabit ölçülü blokları (128 bit) şifrələyir. İxtiyari uzunluqlu məlumatların şifrələnməsi üçün iş rejimləri (modes of operation) istifadə olunur. Rejimin seçimi təhlükəsizliyə kritik təsir edir: səhv rejim AES-in davamlılığını puça çıxara bilər.
Mobil layihələrdə 12 bayt nonce ilə AES-256-GCM istifadə edin. GCM eyni anda iki problemi həll edir: məlumatların şifrələnməsi və autentifikasiyası, padding oracle və chosen ciphertext hücumlarının qarşısını alır. Android Keystore və iOS CryptoKit əlavə kriptoqrafik primitivlərin tətbiqinə ehtiyac olmadan AES-GCM-ni qutudan çıxan kimi dəstəkləyir. GCM ilə işləyərkən eyni açarla nonce-ni təkrarlamamaq vacibdir — bu şifrələmənin təhlükəsizliyini tamamilə məhv edir. Hər şifrələmə üçün yeni təsadüfi nonce yaradın və onu şifrə mətni ilə birlikdə saxlayın.
Jetpack Security istifadə edərək Android-də AES-256-GCM-nin təhlükəsiz tətbiqi nümunəsini nəzərdən keçirək. Aşağıdakı kod tam dövranı nümayiş etdirir: MasterKey vasitəsilə AES-256 açarının yaradılması, əlavə autentifikasiya olunmuş məlumatlarla (AAD) sətrin şifrələnməsi və şifrəsinin açılması.
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)
}
Bu həllin əsas xüsusiyyəti AES-256-GCM-nin iki səviyyədə istifadə edilməsidir: açar-dəyər cütlərinin şifrələnməsi (PrefValueEncryptionScheme) və açarların adlarının qorunması (PrefKeyEncryptionScheme nonce təkrarlanmasına davamlı AES-256-SIV istifadə edir). MasterKey AES-256-GCM alqoritmi ilə yaradılır və Trusted Execution Environment ilə cihazlarda avadanlıq səviyyəsində qorunan Android Keystore-da saxlanılır. Avadanlıq dəstəyi (TEE) olmayan cihazlarda açar Bouncy Castle vasitəsilə şifrələnir ki, bu da SharedPreferences-da saxlamaqdan daha təhlükəsizdir.
Böyük həcmli məlumatların (məsələn, şəkillər və ya fayllar) birbaşa şifrələnməsi üçün AndroidX Security-dən EncryptedFile vasitəsilə AES-256-GCM istifadə edin. Açarların ixracı üçün (məsələn, ehtiyat nüsxə üçün) 100000+ iterasiya ilə PBKDF2 vasitəsilə istifadəçi şifrəsi ilə əlavə şifrələmədən istifadə edin.
iOS-da AES ilə iş CryptoKit (Swift 5.0+) çərçivəsi vasitəsilə təşkil olunur. AES-256 açarı SymmetricKey(size: .bits256) vasitəsilə yaradılır və Secure Enclave-də — əsas CPU və əməliyyat sistemindən təcrid olunmuş avadanlıq kriptoprosessorunda saxlanılır. CryptoKit AES-in iki tətbiqini təqdim edir: AES.GCM (tövsiyə olunan) və AES.CBC (köhnəlmiş formatlarla geriyə uyğunluq üçün). Şifrələmə seal() metodu vasitəsilə yerinə yetirilir, o məlumatları, açarı və nonce (12 bayt) qəbul edir və şifrə mətnini və autentifikasiya teqini ehtiva edən AES.GCM.SealedBox strukturu qaytarır. Şifrənin açılması — open() vasitəsilə. Apple birbaşa CommonCrypto-dan istifadə etməyi qətiyyənlə tövsiyə etmir: CryptoKit avtomatik olaraq optimal parametrləri seçir, side-channel hücumlarından qoruyur və Apple Silicon prosessorlarında AES-NI avadanlıq sürətləndirilməsindən istifadə edir. Secure Enclave olan cihazlarda açarlar heç vaxt avadanlıq modulunu tərk etmir və bu, tətbiqin tam kompromitasiyasında belə onların oğrulanmasını qeyri-mümkün edir. Açarın seriallaşdırılması üçün withUnsafeBytes metodu, ardından kSecAttrAccessible = kSecAttrAccessibleWhenUnlockedThisDeviceOnly atributu ilə SecItemAdd vasitəsilə Keychain-də saxlama istifadə olunur.
Tez-tez verilən suallar
AES gizli açar köməyi ilə oxunaqlı məlumatları oxunmaz bayt dəstinə çevirən alqoritmdir. Eyni açar məlumatları əsl görünüşünə qaytarmaq üçün lazımdır. AES o qədər etibarlıdır ki, ABŞ dövlətinin gizli sənədlərinin şifrələnməsi üçün istifadə olunur.
AES-128 128 bit uzunluğunda açardan istifadə edir və 10 şifrələmə raundu yerinə yetirir. AES-256 256-bitlik açar və 14 raund istifadə edir ki, bu da onu sındırmağı 2^128 dəfə çətinləşdirir. Mobil tətbiqlərdə məhsuldarlıq fərqi minimal olduğundan AES-256 tövsiyə olunur.
AES-256-GCM — ən təhlükəsiz və tövsiyə olunan rejim. GCM autentifikasiya olunmuş şifrələmə (şifrələmə + bütövlük yoxlaması) təmin edir. ECB rejimindən istifadə qadağandır, CBC ayrıca MAC tələb edir. GCM mobil tətbiqlərdə de-fakto standartdır.
Nəzəri cəhətdən AES tam axtarışla sındırıla bilər, lakin AES-256 üçün 2^256 cəhd tələb olunur — müşahidə olunan kainatdakı atomlardan daha çox. AES-256-özər praktiki hücumlar mövcud deyil. Side-channel hücumları (Spectre, Meltdown) AES-i sındırmır, lakin açarları yaddaşdan oğururlar, buna görə avadanlıq səviyyəsində açar saxlama kritik əhəmiyyət daşıyır.
AndroidX Security kitabxanasından istifadə edin: KeyScheme.AES256_GCM ilə MasterKey.Builder Android Keystore-da qorunan açar yaradır, EncryptedSharedPreferences isə bütöv məlumatları AES-256-GCM vasitəsilə avtomatik şifrələyir. Heç bir əl kriptoqrafiya tələb olunmur — API standart olaraq təhlükəsizdir, tətibatçı səhvləri riski olmadan.
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