AES: nedir, simetrik şifreleme algoritması ve nerede kullanılır

Yazar: IT Sectr Yayınlanma: 2026-04-02 Okuma süresi: 9 dk

AES (Advanced Encryption Standard), 2001 yılında ABD Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) tarafından resmi standart olarak kabul edilen simetrik blok şifreleme algoritmasıdır. AES, eski DES'in yerini almış ve o zamandan beri bankacılık sistemlerinden mobil uygulamalara kadar dünyada en yaygın kullanılan şifreleme algoritması haline gelmiştir. NIST'e (2023) göre, AES 256 bit anahtar için 2^256 işleme eşdeğer güvenlik sağlar ve bu da onu modern kaba kuvvet saldırılarına karşı savunmasız kılar. NIST FIPS 197, 2023

Önemli noktalar

  • AES sabit blok boyutu 128 bit ve anahtarları 128, 192 veya 256 bit olan simetrik blok şifresidir.
  • GCM modu, mobil uygulamalar için önerilen AES çalışma modudur ve kimlik doğrulamalı şifreleme sağlar.
  • AES-256 maksimum güvenlik seviyesine sahip sürümdür ve yüksek hassasiyetli verilerin korunması için önerilir.
  • Donanım hızlandırması — AES-NI işlemci talimatları, modern cihazlarda 10 GB/s'ye kadar hızlarda şifreleme sağlar.
  • Android ve iOS AES için yerleşik API'ler sağlar: Android Keystore ve iOS CryptoKit, donanım hızlandırma desteğiyle.

AES nedir?

AES (Advanced Encryption Standard), Belçikalı kriptograflar Joan Daemen ve Vincent Rijmen tarafından Rijndael adı altında geliştirilen simetrik blok şifresidir. 2001 yılında NIST, beş yıllık halka açık test ve analizin ardından Rijndael'i yeni ABD şifreleme standardı yarışmasının galibi olarak seçti. AES, sabit boyutlu (128 bit) veri blokları üzerinde çalışır ve üç anahtar uzunluğunu destekler: 128, 192 ve 256 bit. Dönüşüm tur sayısı anahtar uzunluğuna bağlıdır: 128 bit için 10 tur, 192 bit için 12 tur ve 256 bit için 14 tur. Her tur dört işlem içerir: SubBytes (S-box aracılığıyla doğrusal olmayan bayt değiştirme), ShiftRows (döngüsel satır kaydırma), MixColumns (sütun karıştırma) ve AddRoundKey (tur anahtarı XOR).

AES standardının tarihi

AES'in geliştirilmesi, 1997 yılında NIST'in, 56 bit anahtarı 1998 yılında özel Deep Crack cihazında 22 saatte kırılan DES'in yerini alması için bir yarışma duyurmasıyla başladı. Farklı ülkelerden Serpent (İngiltere), Twofish (ABD) ve RC6 (ABD) dahil olmak üzere on beş algoritma katıldı. 1999 finaline 5 aday kaldı. Rijndael, tüm platformlarda (8 bit mikrodenetleyicilerden 64 bit sunuculara kadar) yüksek hız, kriptanalize direnç ve kompakt donanım uygulaması kombinasyonu sayesinde kazandı. 2006'dan beri AES, ABD hükümet sistemlerinde SECRET ve TOP SECRET sınıflandırılmış verileri şifrelemek için kullanılmaktadır. Bugün AES, tüm büyük protokollere yerleştirilmiştir: TLS 1.2/1.3, IPsec, SSH, Wi-Fi WPA2/WPA3 ve Bluetooth BR/EDR.

AES şifrelemesi nasıl çalışır

AES, verileri state adı verilen 4x4 baytlık bir matris olarak düzenlenmiş 128 bit (16 bayt) bloklar halinde işler. Her şifreleme turu, toplu olarak çığ etkisi yaratan bir dizi deterministik dönüşüm gerçekleştirir: giriş verilerinin bir bitini değiştirmek, çıkış bitlerinin yaklaşık %50'sini değiştirir. Bu etki, AES'i blok şifreleri kırmanın temel yöntemleri olan diferansiyel ve doğrusal kriptanalize karşı dirençli kılar.

Süreç AddRoundKey ile başlar — başlangıç anahtarının state ile XOR'lanması. Ardından turlar yürütülür: SubBytes, her state baytını S-box'tan (değiştirme tablosu) bir değerle değiştirir. ShiftRows, ikinci satırı 1 konum, üçüncüyü 2, dördüncüyü 3 döngüsel olarak kaydırır — sütunlar arasında karıştırmayı sağlar. MixColumns, her state sütununu Galois alanı GF(2^8)'de sabit bir matrisle çarparak her çıkış baytını sütunun dört giriş baytına da bağımlı hale getirir. AddRoundKey, Key Expansion aracılığıyla orijinal anahtardan türetilen bir sonraki tur anahtarıyla XOR yapar. Son tur MixColumns işlemini içermez. Şifre çözme, ters sırada InvSubBytes, InvShiftRows, InvMixColumns ve AddRoundKey ters işlemlerini kullanır. Mobil geliştiriciler için AES'in iç yapısını anlamak gerekli değildir — platformun yerleşik API'lerini doğru parametrelerle nasıl çağıracağını bilmek yeterlidir.

Çığ etkisi ve AES'in kriptografik gücü

AES'in kriptografik gücünü sağlayan temel özellik çığ etkisidir. Düz metin veya anahtardaki bir biti değiştirmek, şifreli metin bitlerinin yaklaşık %50'sinin değişmesine neden olur ve AES'i diferansiyel ve doğrusal kriptanalize karşı son derece dirençli kılar. SubBytes (S-box aracılığıyla doğrusal olmama) ve MixColumns (Galois alanı çarpımı yoluyla yayılma) kombinasyonu, şifreli metnin bir kısmını bilmek bile anahtarın kaba kuvvetten daha hızlı kurtarılmasına izin vermeyecek matematiksel karmaşıklık yaratır. NIST analizine (2018) göre, AES-128'e yönelik en iyi bilinen saldırı — biclique saldırısı — etkin anahtar uzunluğunu yalnızca 2 bit azaltır (126.2 bit) ve saldırgana pratik bir avantaj sağlamaz. AES-256 için kaba kuvveti aşan pratik olarak uygulanabilir hiçbir saldırı mevcut değildir.

AES anahtar boyutları ve güvenlik seviyeleri

AES üç anahtar boyutunu destekler ve her biri belirli bir kriptografik güç seviyesine karşılık gelir. Anahtar boyutu seçimi güvenliği, performansı ve cihaz kaynak gereksinimlerini etkiler.

Anahtar boyutuTur sayısıGüvenlik seviyesiKullanım
AES-12810128 bitTicari uygulamalar, TLS
AES-19212192 bitDevlet sistemleri (SECRET)
AES-25614256 bitTOP SECRET, finans sektörü

Pratik kural: mobil uygulamalar için varsayılan olarak AES-256 kullanın. AES-NI destekli modern cihazlarda AES-128 ve AES-256 arasındaki performans farkı %10-15'i geçmez, ancak güvenlik seviyesi iki katına çıkar. Kuantum analizine (Grassl et al., 2016) göre, AES-128'i kırmak Grover algoritması aracılığıyla 2^77 kuantum işlemi gerektirirken, AES-256 2^149 gerektirir ve bu da AES-256'yı önümüzdeki 20-30 yıl boyunca kuantum saldırılarına karşı dirençli kılar. AES-128 bile ticari senaryoların büyük çoğunluğu için yeterli koruma sağlar: Bruce Schneier'in tahminine göre 128 bitlik bir anahtarı kaba kuvvetle kırmak, evrende var olandan daha fazla enerji gerektirir. Bununla birlikte, güvenlik standartları (GDPR, HIPAA, PCI DSS) genellikle açıkça AES-256 gerektirir, bu nedenle üretim projeleri maksimum anahtar uzunluğunu kullanmalıdır.

AES çalışma modları

AES blok şifre olarak sabit boyutlu (128 bit) blokları şifreler. Rasgele uzunluktaki verileri şifrelemek için çalışma modları kullanılır. Mod seçimi güvenliği kritik şekilde etkiler: yanlış mod AES'in gücünü geçersiz kılabilir.

  • ECB (Electronic Codebook) — en basit ve en güvensiz mod. Her blok aynı anahtarla bağımsız olarak şifrelenir. Aynı düz metin blokları aynı şifreli metin bloklarını üretir ve veri yapısının kurtarılmasına izin verir. Tüm modern güvenlik standartlarında yasaklanmıştır. Mobil uygulamalarda ASLA ECB kullanmayın.
  • CBC (Cipher Block Chaining) — önceki her şifreli metin bloğu bir sonraki için başlatma vektörü (IV) olarak kullanılır. Her mesaj için rastgele bir IV gerektirir. Yanlış uygulandığında padding oracle saldırılarına karşı savunmasızdır. Dosya şifreleme için uygundur ancak veri bütünlüğü için MAC (HMAC) gerektirir.
  • GCM (Galois/Counter Mode) — mobil uygulamalar için önerilen moddur. Kimlik doğrulamalı şifreleme (AEAD) sağlar: tek işlemde şifreleme + bütünlük doğrulaması. Anahtar akışı oluşturma için sayaç ve kimlik doğrulama için Galois alanı çarpımı kullanır. GCM, her mesaj için benzersiz bir nonce (12 bayt) gerektirir. NIST tarafından önerilir, TLS 1.2/1.3 ve Android Keystore'da kullanılır.
  • CCM (Counter with CBC-MAC) — CTR + CBC-MAC tabanlı alternatif bir AEAD modu. GCM'den yavaştır ve paralel işlemeyi desteklemez. ZigBee ve 802.11 (Wi-Fi) protokollerinde kullanılır. Mobil uygulamalar için GCM tercih edilir.

Mobil projeler için 12 baytlık nonce ile AES-256-GCM kullanın. GCM aynı anda iki sorunu çözer: veri şifreleme ve kimlik doğrulama, padding oracle ve seçilmiş şifreli metin saldırılarını önler. Android Keystore ve iOS CryptoKit, ek kriptografik ilkellere ihtiyaç duymadan AES-GCM'yi yerel olarak destekler. GCM ile çalışırken, aynı anahtarla nonce'u asla yeniden kullanmamak kritiktir — bu, şifreleme güvenliğini tamamen yok eder. Her şifreleme için yeni bir rastgele nonce oluşturun ve bunu şifreli metinle birlikte saklayın.

Mobil uygulamalarda AES uygulaması

Jetpack Security kullanarak Android'de güvenli AES-256-GCM uygulaması örneğine bakalım. Aşağıdaki kod tam döngüyü gösterir: MasterKey aracılığıyla AES-256 anahtarı oluşturma, ek kimlik doğrulamalı verilerle (AAD) bir dizeyi şifreleme ve şifresini çözme.

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

Bu çözümün temel özelliği, AES-256-GCM'nin iki seviyede kullanılmasıdır: anahtar-değer çiftlerini (PrefValueEncryptionScheme) şifrelemek ve anahtar adlarının kendisini korumak için (PrefKeyEncryptionScheme, nonce yeniden kullanımına dirençli AES-256-SIV kullanır). MasterKey, AES-256-GCM algoritması kullanılarak oluşturulur ve Trusted Execution Environment'a sahip cihazlarda donanım korumalı Android Keystore'da saklanır. Donanım desteği (TEE) olmayan cihazlarda anahtar, Bouncy Castle aracılığıyla şifrelenir ve bu, SharedPreferences'te saklamaktan hala daha güvenlidir.

Büyük veri hacimlerinin (örneğin, resimler veya dosyalar) doğrudan şifrelenmesi için AndroidX Security'den EncryptedFile aracılığıyla AES-256-GCM kullanın. Anahtar dışa aktarma (örneğin, yedekleme için) için, PBKDF2 ile 100000+ yineleme kullanarak kullanıcı şifresiyle ek şifreleme kullanın.

CryptoKit aracılığıyla iOS'ta AES

iOS'ta AES işlemleri CryptoKit çerçevesi (Swift 5.0+) aracılığıyla düzenlenir. Bir AES-256 anahtarı SymmetricKey(size: .bits256) aracılığıyla oluşturulur ve Secure Enclave'de saklanır — ana CPU ve işletim sisteminden izole edilmiş bir donanım kripto işlemcisi. CryptoKit iki AES uygulaması sağlar: AES.GCM (önerilen) ve AES.CBC (eski biçimlerle geriye dönük uyumluluk için). Şifreleme, verileri, anahtarı ve nonce'u (12 bayt) alan ve şifreli metin ile kimlik doğrulama etiketini içeren bir yapı olan AES.GCM.SealedBox döndüren seal() yöntemi aracılığıyla gerçekleştirilir. Şifre çözme open() aracılığıyla yapılır. Apple, CommonCrypto'yu doğrudan kullanmamayı şiddetle tavsiye eder: CryptoKit otomatik olarak en uygun parametreleri seçer, yan kanal saldırılarına karşı korur ve Apple Silicon işlemcilerde AES-NI donanım hızlandırmasını kullanır. Secure Enclave'li cihazlarda anahtarlar donanım modülünden asla ayrılmaz ve uygulamanın tamamen tehlikeye girmesi durumunda bile hırsızlığı önler. Anahtar serileştirme için withUnsafeBytes yöntemini ve ardından kSecAttrAccessible = kSecAttrAccessibleWhenUnlockedThisDeviceOnly özelliğiyle SecItemAdd aracılığıyla Keychain'de saklamayı kullanın.

Sıkça sorulan sorular

Basit kelimelerle AES nedir?

AES, gizli bir anahtar kullanarak okunabilir verileri okunamaz bir bayt kümesine dönüştüren bir algoritmadır. Verileri orijinal haline döndürmek için aynı anahtar gereklidir. AES o kadar güvenilirdir ki ABD hükümetinin gizli belgelerini şifrelemek için kullanılır.

AES-128 ve AES-256 arasındaki fark nedir?

AES-128 128 bit anahtar kullanır ve 10 şifreleme turu gerçekleştirir. AES-256, 256 bit anahtar ve 14 tur kullanır ve kırılmasını 2^128 kat daha zor hale getirir. Mobil uygulamalar için minimum performans farkı nedeniyle AES-256 önerilir.

Hangi AES modu en güvenlidir?

AES-256-GCM en güvenli ve önerilen moddur. GCM, kimlik doğrulamalı şifreleme (şifreleme + bütünlük doğrulaması) sağlar. ECB modu yasaktır, CBC ayrı bir MAC gerektirir. GCM, mobil uygulamalar için fiili standarttır.

AES kırılabilir mi?

Teorik olarak, AES kaba kuvvetle kırılabilir, ancak AES-256 için 2^256 deneme gerekir — gözlemlenebilir evrendeki atom sayısından daha fazla. AES-256'ya yönelik pratik saldırılar mevcut değildir. Yan kanal saldırıları (Spectre, Meltdown) AES'i kırmaz, ancak bellekten anahtarları çalar, bu nedenle donanım anahtar depolaması kritiktir.

Android'de mobil uygulamada AES nasıl kullanılır?

AndroidX Security kitaplığını kullanın: KeyScheme.AES256_GCM ile MasterKey.Builder, Android Keystore'da korumalı bir anahtar oluşturur ve EncryptedSharedPreferences, AES-256-GCM aracılığıyla tüm verileri otomatik olarak şifreler. Manuel kriptografi yok — API varsayılan olarak güvenlidir, geliştirici hatası riski olmadan.

Özet

  • AES, 2001 yılında NIST tarafından standartlaştırılan en yaygın ve kanıtlanmış simetrik şifreleme algoritmasıdır.
  • AES-256, önümüzdeki 20-30 yıl için kuantum saldırılarına karşı marjla maksimum güvenlik sağlar.
  • GCM modu, mobil uygulamalar için önerilen tek moddur: tek işlemde şifreleme + kimlik doğrulama.
  • Android Keystore ve iOS Secure Enclave — AES anahtarlarını uygulamadan ayıran donanım depoları.
  • Jetpack Security (Android) ve CryptoKit (iOS), manuel kriptografi olmadan güvenli AES-256-GCM uygulamaları sağlar.
  • GCM için Nonce (IV) her şifreleme için benzersiz olmalıdır — yeniden kullanım güvenliği tamamen yok eder.
  • Öneri: tüm hassas veriler için Android'de EncryptedSharedPreferences ve iOS'ta CryptoKit aracılığıyla AES-256-GCM kullanın.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun