eTamga
eTamga Dizin
Türkiye E-İmza & E-Dönüşüm Sağlayıcıları Kataloğu
eTamga Ansiklopedi 📅 Son Güncelleme: ⏱️ 3 dk okuma 🛡️ 2026 GİB / VUK Uyumlu

AES-CBC (Cipher Block Chaining)

Gelir İdaresi Başkanlığı teknik kılavuzları, Vergi Usul Kanunu ve UBL-TR standartları referans alınarak doğrulanmıştır.

Tanımı ve Blok Zincirleme Mimarisi (NIST SP 800-38A)

AES-CBC (Cipher Block Chaining), Advanced Encryption Standard algoritmasının en klasik ve yaygın kullanılan çalışma modlarından biridir. NIST SP 800-38A ve FIPS 197 standartlarında tanımlanan CBC modu, her açık metin (plaintext) bloğunun şifrelenmeden önce bir önceki şifreli metin (ciphertext) bloğu ile XOR mantıksal işlemine tabi tutulduğu bir zincirleme geri besleme mimarisine dayanır.

Matematiksel Modeli ve Başlatma Vektörü (IV) Gereksinimi

CBC modunun matematiksel formülasyonu şöyledir:

Şifreleme: $C_0 = IV, \quad C_i = E_K(P_i \oplus C_{i-1}) \quad (i \ge 1)$
Deşifreleme: $P_i = D_K(C_i) \oplus C_{i-1} \quad (i \ge 1)$

Zincirin ilk bloğu için önceki bir şifreli metin bulunmadığından, rastgele üretilmiş 128 bitlik (16 byte) bir Başlatma Vektörü (Initialization Vector - IV) kullanılır. IV'nin kesinlikle kriptografik olarak güvenli sözde rastgele sayı üreteci (CSPRNG) ile üretilmesi ve tahmin edilemez olması şarttır. Sabit veya sıralı sayaç gibi tahmin edilebilir IV kullanımı, sözlük ve seçilmiş açık metin (CPA) saldırılarına kapı aralar.

PKCS#7 Dolgulama (Padding) Standardı

AES bir blok şifreleyici olup sabit 128 bit (16 byte) blok boyutuyla çalışır. Mesajın toplam boyutu 16 byte'ın tam katı olmadığında, son blok PKCS#7 (RFC 5652) standardına göre doldurulur. Doldurulan byte sayısı, eklenen her bir byte'ın sayısal değerine eşittir (örn. 5 byte eksikse son bloğa 0x05 0x05 0x05 0x05 0x05 eklenir). Mesaj boyutu tam 16 byte'ın katı olsa dahi deşifreleme tarafında belirsizliği önlemek için 16 byte'lık tam bir sahte dolgu bloğu (0x10 ... 0x10) eklenmesi zorunludur.

Padding Oracle Saldırıları ve Tarihsel Zafiyetler

AES-CBC modunun en büyük zafiyet noktası kimlik doğrulama (integrity/authenticity) mekanizmasının bulunmamasıdır. Serge Vaudenay tarafından 2002 yılında keşfedilen ve daha sonra web protokollerinde (POODLE, Lucky Thirteen) yıkıcı sonuçlara yol açan Padding Oracle Saldırısı, sunucunun geçersiz dolgu hatalarını (Bad Padding Error) istemciye döndürmesi durumunda, saldırganın anahtarı bilmeksizin şifreli metni byte byte deşifre etmesine olanak tanır.

  • Bu zafiyetten korunmak için CBC modu mutlaka bir mesaj doğrulama kodu (HMAC) ile birleştirilmeli ve Encrypt-then-MAC prensibi uygulanmalıdır.
  • Hata mesajlarında zamanlama farkı (timing attack) yaratmayacak sabit zamanlı (constant-time) dolgu doğrulama algoritmaları kullanılmalıdır.

Donanım Paralelleştirme Kısıtları ve Modern Durumu

CBC modunda şifreleme işlemi ardışıktır; bir bloğun şifrelenmesi kendisinden önceki bloğun şifrelenip tamamlanmasına bağlıdır. Bu durum modern çok çekirdekli CPU ve GPU donanımlarında paralelleştirmeyi imkansız kılar ve yüksek bant genişlikli ağlarda darboğaz yaratır (ancak deşifreleme işlemi paralelleştirilebilir). Bu kısıtlar sebebiyle TLS 1.3 protokolünde CBC desteği sonlandırılmış, FIPS 140-3 ve PCI-DSS gereksinimlerinde AEAD modları (AES-GCM, ChaCha20-Poly1305) öncelikli kılınmıştır.

Mevzuat İnceleme & Doğrulama: eTamga Editöryal Kurulu (17 Ekim 2026)
GitHub'da İyileştirme Öner