yigityalim
projelerel kitabılabişe alpaylaş
xgithub
siteprojelerel kitabılaboratuvardeğişiklik günlüğü
hakkındakullanımlarşimdiişe alpaylaş
diğerxgithublinkedine-posta
metarssllms.txtsitemap
© 2026 Yiğit Yalım. Tüm hakları saklıdır.
/
Laboratuvarlara Dön
10 May 2026·kriptografi

AEAD Tamper Demosu

AES-256-GCM ile şifrele, ciphertext'in tek bir byte'ını çevir, decryption'ın "authentication failed" ile fail ettiğini gör. Authenticated encryption'ın *neden* kullanıldığını tek tıkla anlat.

aes-gcm · aead · tamper-detection · webcrypto

ÖncekiTimezone ConverterSonrakiBase64 Encoder / Decoder

"Authenticated Encryption with Associated Data" — bir mesajı sadece şifrelemek değil, mesajın değiştirilip değiştirilmediğini de doğrulamak demek. Klasik AES-CBC bunu yapmaz: birisi ciphertext'in bir bit'ini flip ederse, decrypt çöp ama hatasız döner. AES-GCM gibi AEAD modları authentication tag üretir, decryption tag'i kontrol eder, eşleşmezse exception fırlatır.

AeadLab — AES-256-GCM
plaintext
18 B
şifreleme bekleniyor…

Ciphertext byte'ına tıkla, LSB'yi çevir, sonra decrypt dene — GCM tag bu değişikliği yakalar.

Ciphertext byte'larından birine tıkla — en düşük bit flip olur, kart kırmızıya döner. "decrypt" tuşuna bas; "authentication failed" mesajını alırsın. "fresh key" ile yeni anahtar + nonce çıkartabilirsin.

Ne öğretir

  • Tampered ciphertext sessizce yanlış plaintext üretmez — explicit hata fırlatır
  • Bu özellik authentication tag sayesinde gelir, ciphertext'le birlikte taşınan 128-bit MAC
  • Tag, anahtar + plaintext + IV üzerinde hesaplanır — saldırgan tag'i de değiştirip yine de geçerli yapamaz çünkü anahtarı bilmez
  • IV (nonce) predictable olabilir ama benzersiz olmalıdır — aynı (key, nonce) ikilisi iki kere kullanılırsa GCM çöker, plaintext recover edilebilir

Uygulamada

const key = await crypto.subtle.generateKey({ name: "AES-GCM", length: 256 }, true, ["encrypt", "decrypt"]);
const iv = crypto.getRandomValues(new Uint8Array(12));
const ct = await crypto.subtle.encrypt({ name: "AES-GCM", iv }, key, plaintext);
// ct'nin son 16 byte'ı auth tag — WebCrypto otomatik ekler

Production'da iv'yi her mesaj için fresh üret. Veritabanı satırı başına saklarsan IV unique olur. CSV'lerde ardışık counter kullanma — kullanıcı sayısı tahmin edilebilirse saldırgan IV reuse yaratabilir.