AES: ano ito, algorithm ng simetrikong pag-encrypt at kung saan ito ginagamit

May-akda: IT Sectr Nai-publish: 2026-04-02 Oras ng pagbabasa: 9 min

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 — isang simetrikong block cipher na may nakapirming laki ng block na 128 bit at mga key na 128, 192 o 256 bit.
  • Mode na GCM — ang inirerekomendang mode ng operasyon ng AES para sa mga mobile app, na nagbibigay ng authenticated encryption.
  • AES-256 — ang bersyon na may pinakamataas na antas ng resistensya, inirerekomenda para sa pagprotekta ng sensitibong data.
  • Pagpapabilis ng hardware — ang mga AES-NI instruction ng processor ay nagpapahintulot ng pag-encrypt sa bilis na hanggang 10 GB/s sa mga modernong device.
  • Android at iOS ay nagbibigay ng mga built-in na API para sa AES: Android Keystore at iOS CryptoKit na may suporta sa pagpapabilis ng hardware.

Ano ang AES?

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).

Kasaysayan ng pamantayan ng AES

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.

Paano gumagana ang AES encryption

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.

Avalanche effect at cryptographic resistance ng AES

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.

Mga laki ng key ng AES at antas ng seguridad

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 keyBilang ng roundsAntas ng seguridadGamit
AES-12810128 bitMga komersyal na app, TLS
AES-19212192 bitMga sistema ng gobyerno (SECRET)
AES-25614256 bitTOP 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.

Mga mode ng operasyon ng AES

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.

  • ECB (Electronic Codebook) — ang pinakasimple at pinaka-hindi ligtas na mode. Ang bawat block ay independiyenteng na-encrypt na may parehong key. Ang magkaparehong block ng plain text ay nagbibigay ng magkaparehong block ng ciphertext, na nagpapahintulot sa pagbawi ng istraktura ng data. Ipinagbabawal sa lahat ng modernong pamantayan ng seguridad. Huwag KAILANMAN gumamit ng ECB sa mga mobile app.
  • CBC (Cipher Block Chaining) — bawat nakaraang ciphertext block ay ginagamit bilang initialization vector (IV) para sa susunod. Nangangailangan ng random IV para sa bawat mensahe. Mahina sa padding oracle attacks kung hindi tama ang implementasyon. Angkop para sa pag-encrypt ng mga file, ngunit nangangailangan ng MAC (HMAC) para sa integridad ng data.
  • GCM (Galois/Counter Mode) — ang inirerekomendang mode para sa mga mobile app. Nagbibigay ng authenticated encryption (AEAD): encryption + integrity check sa isang operasyon. Gumagamit ng counter para sa pagbuo ng key stream at multiplication sa Galois field para sa authentication. Ang GCM ay nangangailangan ng natatanging nonce (12 byte) para sa bawat mensahe. Inirerekomenda ng NIST, ginagamit sa TLS 1.2/1.3 at Android Keystore.
  • CCM (Counter with CBC-MAC) — isang alternatibong AEAD mode na batay sa CTR + CBC-MAC. Mas mabagal kaysa sa GCM at hindi sumusuporta sa parallel processing. Ginagamit sa mga protocol ng ZigBee at 802.11 (Wi-Fi). Para sa mga mobile app, ang GCM ay mas gusto.

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.

Pagpapatupad ng AES sa mga mobile app

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).

kotlin
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.

AES sa iOS sa pamamagitan ng CryptoKit

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

Ano ang AES sa simpleng salita?

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.

Ano ang pagkakaiba ng AES-128 at AES-256?

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.

Aling mode ng AES ang pinakaligtas?

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.

Maaari bang basagin ang AES?

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.

Paano gamitin ang AES sa isang mobile app sa Android?

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

  • AES — ang pinakalaganap at napatunayang simetrikong encryption algorithm, na na-standardize ng NIST noong 2001.
  • AES-256 ay nagbibigay ng pinakamataas na antas ng resistensya na may reserba para sa quantum attacks sa susunod na 20–30 taon.
  • Mode na GCM — ang tanging inirerekomendang mode para sa mga mobile app: encryption + authentication sa isang operasyon.
  • Android Keystore at iOS Secure Enclave — hardware storage na naghihiwalay ng AES key mula sa app.
  • Jetpack Security (Android) at CryptoKit (iOS) ay nagbibigay ng ligtas na implementasyon ng AES-256-GCM nang walang manual cryptography.
  • Nonce (IV) para sa GCM ay dapat natatangi para sa bawat pag-encrypt — ang pag-uulit ay ganap na sumisira ng seguridad.
  • Rekomendasyon: gamitin ang AES-256-GCM sa pamamagitan ng EncryptedSharedPreferences sa Android at CryptoKit sa iOS para sa lahat ng kumpidensyal na data.

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.

Pag-usapan ang proyekto

Basahin din