AES-256 şifreleme rehberi: askeri düzeyde dosya koruması
AES-256 şifrelemeyi ve neden altın standart olduğunu anlayın. Bu askeri düzey şifrenin aktarımlarınızı nasıl koruduğunu öğrenin.
AES-256, ABD NSA tarafından CNSSP-15 kapsamında ÇOK GİZLİ verileri için onaylanmış simetrik bir blok şifresidir. 256 bitlik bir anahtarla 128 bitlik blokları 14 tur ikame, permütasyon ve karıştırma işlemiyle şifreler. Tek bir AES-256 anahtarını kaba kuvvetle kırmak ortalama 2^255 işlem gerektirir; bu, dünyaidaki tüm bilgisayarların evrenin yaşı boyunca çalışması durumunda bile ulaşılamayacak kadar büyük bir sayıdır. Bu nedenle SwissTransfer'dan Tresorit'e kadar tüm ciddi dosya aktarım hizmetleri toplu şifreleme için AES-256 kullanır. İşte gerçekte nasıl çalıştığı.
"256" nereden geliyor
AES üç anahtar boyutunda gelir: 128, 192 ve 256 bit. Sayı yalnızca anahtar uzunluğunu ifade eder; blok boyutunu değil (her zaman 128 bittir). Anahtar boyutu, şifrenin kaç tur çalışacağını belirler: AES-128 için 10, AES-192 için 12, AES-256 için 14 tur.
Daha fazla tur daha fazla yayılım demektir; her çıktı biti daha fazla giriş bitine bağlıdır ve 2011'de yayımlanan biclique saldırısı gibi kriptanalitik saldırılara karşı daha fazla direnç sağlar. Bu saldırı teorik olarak AES-256'nın etkin güvenliğini 256'dan 254,4 bite indirdi; yine de herhangi bir pratik saldırının çok ötesindedir.
Federal Bilgi İşlem Standardı FIPS 197, AES'i tanımlar; NIST SP 800-38A ila 800-38G ise çalışma modlarını belirler.
Çalışma modları: GCM, CBC ve ECB
AES bir blok şifresidir; yani yalnızca tek bir 128 bitlik bloğu şifrelemeyi bilir. Rastgele boyuttaki bir dosyayı şifrelemek için bir çalışma moduna ihtiyaç vardır. Seçim son derece önemlidir:
- ECB (Elektronik Kod Kitabı): özdeş düz metin blokları özdeş şifreli metin üretir. Kesinlikle kullanmayın. Ünlü "ECB penguen" görüntüsü, ECB şifreli piksellerden Tux'un siluetinin görünür olduğunu gösterir.
- CBC (Şifre Blok Zincirleme): her bloğu önceki şifreli metinle XOR'lar. Kimlik doğrulama için HMAC ile eşleştirilirse güvenlidir; ancak CBC tek başına dolgu oracle saldırılarına karşı savunmasızdır (POODLE 2014'te SSL'i vurdu).
- GCM (Galois/Sayaç Modu): bir sayaçla şifreler ve aynı geçişte 128 bitlik bir kimlik doğrulama etiketi üretir. Şifreli metne müdahale, şifre çözmeyi açıkça başarısız kılar. Modern hizmetlerin kullandığı budur.
AES-256-GCM, TLS 1.3, Signal, WireGuard ve her güvenilir dosya aktarım hizmetinde varsayılandır. Bir hizmet modu belirtmeden "AES-256" söylüyorsa GCM varsayın ve kontrol edin.
Asla yeniden kullanılmaması gereken IV (nonce)
GCM, belirli bir anahtarla yapılan her şifreleme için benzersiz 96 bitlik bir başlatma vektörü gerektirir. IV'yi aynı anahtarla bir kez bile yeniden kullanmak, saldırganın iki şifreli metni XOR'layarak düz metni kurtarmasına olanak tanır; bu, WEP Wi-Fi'ye karşı kötü şöhretle istismar edilen yıkıcı bir başarısızlıktır.
En iyi uygulama: IV'yi kriptografik olarak güvenli bir RNG ile oluşturun (tarayıcılarda crypto.getRandomValues(), Linux'ta /dev/urandom) ve şifreli metnin başına ekleyin. 96 bitlik rastgele IV, 2^32 dosya şifreledikten sonra yaklaşık 2^-48 çarpışma olasılığına sahiptir; bir dosya aktarım hizmeti için kabul edilebilirdir. Milyarlarca dosyada anahtar yeniden kullanımı için bunun yerine deterministik sayaç kullanın.
Anahtar türetme: parolaları anahtarlara dönüştürme
Kullanıcılar köpeğim2024 gibi parolalar ister. AES ise 256 bit düzgün rastgelelik ister. Köprü, anahtar türetme fonksiyonudur (KDF). Yaygın kullanımdaki üç KDF:
- PBKDF2 HMAC-SHA-256 ve 600.000 iterasyonla (OWASP 2023 önerisi). Yaygın olarak desteklenir, Web Crypto API'de mevcuttur.
- scrypt, bellek sertliği ekler ve GPU saldırı maliyetlerini artırır. Bitcoin ve LastPass bu yöntemi kullanır.
- Argon2id, 2015 Parola Karma Yarışması'nın galibi olan günümüzdeki en iyi uygulamadır. Parametreler:
bellek=64 MB, iterasyon=3, paralellik=4.
Argon2id ile işlenmiş 12 karakterlik rastgele bir parolayı modern GPU'yla kaba kuvvetle kırmak yaklaşık bir milyar yıl alır. sifre123 gibi zayıf bir parola ise KDF ne olursa olsun milisaniyeler içinde çözülür.
Tarayıcıda AES: Web Crypto API
Tarayıcılar AES-256-GCM'yi window.crypto.subtle aracılığıyla yerel olarak sunar. Tipik bir akış:
const key = await crypto.subtle.generateKey(
{ name: "AES-GCM", length: 256 },
true,
["encrypt", "decrypt"]
);
const iv = crypto.getRandomValues(new Uint8Array(12));
const ciphertext = await crypto.subtle.encrypt(
{ name: "AES-GCM", iv },
key,
fileBytes
);
Modern CPU'ların AES-NI talimatları bunu çekirdek başına yaklaşık 3-5 GB/sn hıza ulaştırır. 1 GB'lık bir dosya orta düzey bir dizüstü bilgisayarda bir saniyeden kısa sürede şifrelenir. Mobil cihazlarda Apple A serisi ve Qualcomm Snapdragon çipleri benzer verim için ARMv8 Şifreleme Uzantıları içerir.
AES-256'nın koruduğu ve korumadığı şeyler
AES-256 tek bir sorunu çözer: anahtarın gizli tutulması koşuluyla, beklemedeki veya aktarımdaki verilerin gizliliği. Şunları çözmez:
- Anahtar yönetimi. Parolayı dosyayla birlikte e-postayla gönderirseniz AES-256 hiçbir şey katmaz.
- Uç nokta ihlali. Şifrelemeden önce düz metni okuyan kötü amaçlı yazılım şifrenin tamamını atlatır.
- Uygulama hataları. 2018'deki BEAST, CRIME ve Lucky13 saldırıları AES'in kendisini değil, TLS uygulamalarını hedef aldı.
- Yan kanal saldırıları. Önbellek zamanlaması ve güç analizi, kısıtlı cihazlardan AES anahtarları çıkarmıştır; AES-NI masaüstü bilgisayarlarda bunu büyük ölçüde azaltır.
AES-256, aynı zamanda dosyayı kimin gönderdiğini kanıtlamaz. Bunun için Ed25519 veya ECDSA kullanan dijital imzalarla eşleştirin.
"Askeri düzeyde" neden büyük ölçüde pazarlamadır
Bu ifade, NSA CNSSP-15'in 2003'te AES-256'yı ÇOK GİZLİ veriler için onaylamasından dolayı yaygın kullanım kazandı. Bu gerçektir; ancak şu an itibarıyla 23 yıllık bir bilgidir. AES-128, GİZLİ veriler için onaylanmıştır ve çoğu sivil kullanım durumuna aynı şekilde hizmet eder. 128'den 256'ya geçiş, kuantum bilişimindeki gelecekteki gelişmelere karşı bir önlemdir: Grover algoritması teorik olarak simetrik anahtar güvenliğini yarıya indirir; AES-256'nın etkin gücünü 128 bite düşürür ki bu hâlâ güvenlidir.
Pratikte AES-256, AES-NI ile AES-128'den yalnızca yaklaşık %40 daha fazla CPU tüketir ve evrensel olarak desteklenir; bu nedenle 128 yeterli olduğunda bile varsayılan haline gelmiştir.
Bir hizmetin gerçekten AES-256-GCM kullandığını doğrulama
Üç yol:
- Güvenlik teknik belgesini okuyun. Güvenilir hizmetler (Tresorit, Proton Drive, SwissTransfer, HexaTransfer) tam modu ve IV işlemeyi yayımlar.
- İstemci kodunu inceleyin. DevTools'u açın, JavaScript paketinde
AES-GCMveyaaes-256-gcmarayın; açıkça görünmesi gerekir. - Üçüncü taraf denetimlerini kontrol edin. Cure53, NCC Group ve Trail of Bits, incelenen algoritmaları adlandıran denetimler yayımlar.
Kırmızı bayraklar: mod belirtilmeksizin "banka düzeyi şifreleme", herhangi bir tür "özel algoritma" veya AES-128-ECB'ye yapılan atıflar.
Pratiğe dökmek
Bugün hassas bir dosya göndermek için: AES-256-GCM'yi açıkça belirten, dosya başına 96 bitlik rastgele IV kullanan ve şifrelemeyi sunucularında değil tarayıcınızda çalıştıran bir hizmet seçin. Bunu, Argon2id veya 600.000+ iterasyonla PBKDF2 aracılığıyla türetilmiş 16+ karakterli bir parola ile eşleştirin.
hexatransfer.com'da deneyin — ücretsiz, hesap gerekmez, 10 GB'a kadar.
Uçtan uca şifreleme ile büyük dosyaları güvenle gönderin
Uçtan uca şifreleme ile 10 GB'a kadar dosya ücretsiz aktarın. Hesap gerekmez. Dosyalarınız yüklenmeden önce tarayıcınızda şifrelenir — başka kimse okuyamaz.
Dosya gönder