AES (Advanced Encryption Standard) — ay isang simetrikong block encryption algorithm, na pinagtibay noong 2001 ng National Institute of Standards and Technology ng US (NIST) bilang opisyal na pamantayan. Pinalitan ng AES ang lumang DES at mula noon ay naging pinakalaganap na algorithm ng pag-encrypt sa mundo, na ginagamit mula sa mga banking system hanggang sa mga mobile app. Ayon sa datos ng NIST (2023), ang AES ay nagbibigay ng resistensya na katumbas ng 2^256 na operasyon para sa isang key na 256 bit ang haba, na ginagawa itong hindi masusugatan sa modernong brute force attacks. NIST FIPS 197, 2023
Mga Pangunahing Punto
AES (Advanced Encryption Standard) — ay isang simetrikong block cipher na binuo ng mga Belgian cryptographer na sina Joan Daemen at Vincent Rijmen sa ilalim ng pangalang Rijndael. Noong 2001, pinili ng NIST si Rijndael bilang panalo sa kompetisyon para sa bagong pamantayan ng pag-encrypt ng US pagkatapos ng limang taon ng bukas na pagsubok at pagsusuri. Gumagana ang AES sa mga block ng data na may nakapirming laki (128 bit) at sumusuporta sa tatlong haba ng key: 128, 192, at 256 bit. Ang bilang ng mga round ng transformasyon ay depende sa haba ng key: 10 rounds para sa 128-bit, 12 para sa 192-bit, at 14 para sa 256-bit na key. Ang bawat round ay may kasamang apat na operasyon: SubBytes (non-linear na pagpapalit ng byte sa pamamagitan ng S-box), ShiftRows (cyclic shift ng mga row), MixColumns (paghahalo ng mga column), at AddRoundKey (paglalapat ng round key).
Ang pagbuo ng AES ay nagsimula noong 1997, nang mag-anunsyo ang NIST ng kompetisyon upang palitan ang DES, na ang 56-bit key ay nabasag sa loob ng 22 oras noong 1998 sa specialized device na Deep Crack. 15 algorithm mula sa iba’t ibang bansa ang lumahok sa kompetisyon, kabilang ang Serpent (UK), Twofish (US), at RC6 (US). Hanggang sa final noong 1999, 5 kandidato ang natira. Nanalo si Rijndael dahil sa kombinasyon ng mataas na bilis sa lahat ng platform (mula 8-bit microcontrollers hanggang 64-bit servers), resistensya sa cryptanalysis, at compact na pagpapatupad sa hardware. Mula noong 2006, ang AES ay ginagamit para sa pag-encrypt ng data na may markang SECRET at TOP SECRET sa mga sistemang pampamahalaan ng US. Ngayon, ang AES ay naka-embed sa lahat ng pangunahing protocol: TLS 1.2/1.3, IPsec, SSH, Wi-Fi WPA2/WPA3, at Bluetooth BR/EDR.
AES ay nagproseso ng data sa mga block na 128 bit (16 byte), na nakaayos sa isang 4x4 byte matrix na tinatawag na state. Ang bawat round ng pag-encrypt ay nagsasagawa ng isang serye ng deterministikong pagbabago na magkakasamang lumilikha ng „avalanche effect”: ang pagbabago ng isang bit ng input data ay nagbabago ng halos 50% ng mga bit ng output data. Ang ganitong epekto ay ginagawang lumalaban ang AES sa differential at linear cryptanalysis — ang mga pangunahing pamamaraan ng pagbasi ng block ciphers.
Ang proseso ay nagsisimula sa AddRoundKey — paglalapat ng unang key sa state sa pamamagitan ng XOR operation. Pagkatapos ay isinasagawa ang mga round: Pinapalitan ng SubBytes ang bawat byte ng state ng halaga mula sa S-box (table ng pagpapalit). Ang ShiftRows ay cyclically nag-shift ng ikalawang row ng 1 posisyon, ikatlo ng 2, ikaapat ng 3 — tinitiyak nito ang paghahalo sa pagitan ng mga column. Ang MixColumns ay nagpaparami ng bawat column ng state sa isang fixed matrix sa Galois field GF(2^8), na lumilikha ng dependency ng bawat output byte sa lahat ng apat na input byte ng column. Ang AddRoundKey ay naglalapat ng susunod na round key, na nakuha mula sa unang key sa pamamagitan ng Key Expansion procedure. Ang huling round ay naiiba sa kawalan ng MixColumns operation. Ang decryption ay gumagamit ng inverse operations na InvSubBytes, InvShiftRows, InvMixColumns, at AddRoundKey sa reverse order. Para sa mga mobile developer, hindi kinakailangan ang pag-unawa sa internal na istraktura ng AES — sapat na malaman kung paano tamang tawagan ang built-in na API ng platform na may tamang mga parameter.
Ang pangunahing katangian ng AES na nagsisiguro ng cryptographic resistance nito ay ang avalanche effect. Ang pagbabago ng isang bit sa plain text o key ay humahantong sa pagbabago ng humigit-kumulang 50% ng mga bit ng ciphertext, na ginagawang lubhang lumalaban ang AES sa differential at linear cryptanalysis. Ang kumbinasyon ng SubBytes (non-linearity sa pamamagitan ng S-box) at MixColumns (diffusion sa pamamagitan ng multiplication sa Galois field) ay lumilikha ng mathematical complexity kung saan kahit ang pag-alam ng bahagi ng ciphertext ay hindi nagpapahintulot ng mas mabilis na pagbawi ng key kaysa sa kumpletong paghahanap. Ayon sa NIST analysis (2018), ang pinakamahusay na kilalang atake laban sa AES-128 — biclique attack — ay nagbawas ng epektibong haba ng key ng 2 bits lamang (sa 126.2 bits), na hindi nagbibigay ng praktikal na kalamangan sa attacker. Para sa AES-256, walang kahit isang praktikal na magagawang atake na lumalampas sa kumpletong paghahanap.
AES ay sumusuporta sa tatlong laki ng key, na ang bawat isa ay tumutugma sa isang tiyak na antas ng cryptographic resistance. Ang pagpili ng laki ng key ay nakakaapekto sa seguridad, pagganap, at mga kinakailangan sa mapagkukunan ng device.
| Laki ng key | Bilang ng rounds | Antas ng seguridad | Gamit |
|---|---|---|---|
| AES-128 | 10 | 128 bit | Mga komersyal na app, TLS |
| AES-192 | 12 | 192 bit | Mga sistema ng gobyerno (SECRET) |
| AES-256 | 14 | 256 bit | TOP SECRET, sektor ng pananalapi |
Praktikal na panuntunan: sa mga mobile app, gamitin ang AES-256 bilang default. Ang pagkakaiba sa pagganap sa pagitan ng AES-128 at AES-256 sa mga modernong device na may suporta sa AES-NI ay hindi hihigit sa 10–15%, ngunit ang antas ng seguridad ay dumoble. Ayon sa quantum analysis (Grassl et al., 2016), kailangan ng 2^77 quantum operations sa pamamagitan ng Grover algorithm upang mabasag ang AES-128, at para sa AES-256 — 2^149, na ginagawang lumalaban ang AES-256 sa quantum attacks sa susunod na 20–30 taon. Kahit ang AES-128 ay nagbibigay ng sapat na proteksyon para sa karamihan ng mga komersyal na senaryo: para sa kumpletong paghahanap ng 128-bit key ay kinakailangan ng mas maraming enerhiya kaysa sa umiiral sa uniberso ayon sa pagtatantya ni Bruce Schneier. Gayunpaman, ang mga pamantayan ng seguridad (GDPR, HIPAA, PCI DSS) ay madalas na malinaw na nangangailangan ng AES-256, kaya sa mga production project ay inirerekomenda na gamitin ang maximum na haba ng key.
AES bilang block cipher ay nag-encrypt ng mga block na may nakapirming laki (128 bit). Para sa pag-encrypt ng data ng arbitraryong haba, ginagamit ang mga mode ng operasyon (modes of operation). Ang pagpili ng mode ay kritikal na nakakaapekto sa seguridad: ang maling mode ay maaaring magpawalang-bisa sa resistensya ng AES.
Para sa mga mobile project, gamitin ang AES-256-GCM na may nonce na 12 byte. Nilulutas ng GCM ang dalawang problema nang sabay: pag-encrypt ng data at pag-verify ng pagiging tunay, na pumipigil sa padding oracle at chosen ciphertext attacks. Ang Android Keystore at iOS CryptoKit ay sumusuporta sa AES-GCM out-of-the-box nang hindi kinakailangan magpatupad ng karagdagang cryptographic primitives. Kapag nagtatrabaho sa GCM, mahalagang huwag na huwag ulitin ang nonce na may parehong key — ito ay ganap na sumisira sa seguridad ng pag-encrypt. Gumawa ng bagong random nonce para sa bawat pag-encrypt at itabi ito kasama ng ciphertext.
Tingnan natin ang isang halimbawa ng ligtas na pagpapatupad ng AES-256-GCM sa Android gamit ang Jetpack Security. Ang code sa ibaba ay nagpapakita ng buong cycle: paglikha ng AES-256 key sa pamamagitan ng MasterKey, pag-encrypt at pag-decrypt ng string na may karagdagang authenticated data (AAD).
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)
}
Ang pangunahing tampok ng solusyong ito ay ang paggamit ng AES-256-GCM sa dalawang antas: para sa pag-encrypt ng mga key-value pairs (PrefValueEncryptionScheme) at para sa pagprotekta sa mga pangalan ng key mismo (PrefKeyEncryptionScheme ay gumagamit ng AES-256-SIV, na lumalaban sa pag-uulit ng nonce). Ang MasterKey ay nabuo gamit ang AES-256-GCM algorithm at nakaimbak sa Android Keystore, na protektado ng hardware sa mga device na may Trusted Execution Environment. Sa mga device na walang hardware support (TEE), ang key ay na-encrypt sa pamamagitan ng Bouncy Castle, na mas ligtas pa rin kaysa sa pag-imbak sa SharedPreferences.
Para sa direktang pag-encrypt ng malalaking volume ng data (halimbawa, mga larawan o file), gamitin ang AES-256-GCM sa pamamagitan ng EncryptedFile mula sa AndroidX Security. Para sa pag-export ng mga key (halimbawa, para sa backup), gamitin ang karagdagang pag-encrypt na may password ng user sa pamamagitan ng PBKDF2 na may 100000+ iterations.
Sa iOS, ang pagtatrabaho sa AES ay inorganisa sa pamamagitan ng CryptoKit framework (Swift 5.0+). Ang AES-256 key ay nilikha sa pamamagitan ng SymmetricKey(size: .bits256) at nakaimbak sa Secure Enclave — isang hardware cryptoprocessor na nakahiwalay mula sa pangunahing CPU at operating system. Ang CryptoKit ay nagbibigay ng dalawang implementasyon ng AES: AES.GCM (inirerekomenda) at AES.CBC (para sa backward compatibility sa mga lumang format). Ang pag-encrypt ay ginagawa sa pamamagitan ng seal() method, na tumatanggap ng data, key, at nonce (12 byte), at nagbabalik ng AES.GCM.SealedBox — isang istraktura na naglalaman ng ciphertext at authentication tag. Ang decryption — sa pamamagitan ng open(). Mahigpit na hindi inirerekomenda ng Apple ang direktang paggamit ng CommonCrypto: awtomatikong pinipili ng CryptoKit ang pinakamainam na parameter, nagpoprotekta laban sa side-channel attacks, at gumagamit ng hardware acceleration ng AES-NI sa mga Apple Silicon processor. Sa mga device na may Secure Enclave, ang mga key ay hindi umaalis sa hardware module, na ginagawang imposible ang pagnanakaw kahit na ganap na nakompromiso ang app. Para sa serialization ng key, ginagamit ang withUnsafeBytes method na may kasunod na pag-imbak sa Keychain sa pamamagitan ng SecItemAdd na may attribute na kSecAttrAccessible = kSecAttrAccessibleWhenUnlockedThisDeviceOnly.
Mga Madalas Itanong
AES ay isang algorithm na nagpapalit ng nababasang data sa hindi nababasang set ng mga byte gamit ang isang lihim na key. Ang parehong key ay kinakailangan upang ibalik ang data sa orihinal nitong anyo. Ang AES ay lubhang maaasahan na ginagamit ito para sa pag-encrypt ng mga lihim na dokumento ng gobyerno ng US.
AES-128 ay gumagamit ng 128-bit key at nagsasagawa ng 10 rounds ng pag-encrypt. Ang AES-256 ay gumagamit ng 256-bit key at 14 rounds, na ginagawang 2^128 beses na mas mahirap basagin. Para sa mga mobile app, inirerekomenda ang AES-256 dahil sa minimal na pagkakaiba sa pagganap.
AES-256-GCM — ang pinakaligtas at inirerekomendang mode. Ang GCM ay nagbibigay ng authenticated encryption (encryption + integrity check). Ang ECB mode ay ipinagbabawal, ang CBC ay nangangailangan ng hiwalay na MAC. Ang GCM ay ang de facto standard para sa mga mobile app.
Sa teorya, ang AES ay maaaring basagin sa pamamagitan ng kumpletong paghahanap, ngunit para sa AES-256 ay kinakailangan ang 2^256 na pagsubok — mas marami kaysa sa mga atom sa nakikitang uniberso. Walang praktikal na atake laban sa AES-256. Ang side-channel attacks (Spectre, Meltdown) ay hindi pumapatol sa AES, ngunit nagnanakaw ng mga key mula sa memorya, kaya ang hardware storage ng mga key ay kritikal na mahalaga.
Gamitin ang AndroidX Security library: Ang MasterKey.Builder na may KeyScheme.AES256_GCM ay gumagawa ng protektadong key sa Android Keystore, at ang EncryptedSharedPreferences ay awtomatikong nag-e-encrypt ng lahat ng data sa pamamagitan ng AES-256-GCM. Walang manual cryptography — ang API ay ligtas bilang default, walang panganib ng mga error ng developer.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din