Akan Şifreleme (Stream Ciphers)
One-Time Pad (OTP) sisteminin mükemmel gizlilik sunduğunu, ancak mesajla aynı boyutta rastgele bir anahtara ihtiyaç duyduğu için pratik (Anahtar Dağıtım Problemi) olmadığını gördük. Akan şifreler (Stream Ciphers), OTP'nin bu XOR tabanlı şifreleme mantığını taklit eden, ancak çok daha kısa ve yönetilebilir bir kök anahtar (seed key) kullanarak pratik hale getirilmiş modern sistemlerdir.
Temel felsefesi şudur: Gönderici ve alıcı kısa bir kök anahtarı paylaşır. Her iki taraftaki şifreleme cihazı, bu kısa anahtarı kullanarak matematiksel algoritmalarla Sözde Rastgele (Pseudo-Random) ve çok uzun bir "anahtar akışı" (keystream) üretir. Daha sonra bu akış, tıpkı One-Time Pad'de olduğu gibi açık metinle XOR'lanır.
Sistemin Formal Tanımı
Akan şifrelemede işlemler, bit dizileri (0 ve 1) üzerinde eşzamanlı olarak gerçekleşir.
- Açık Metin (
): İkili (binary) formdaki açık metin bitlerinin dizisi: - Şifreli Metin (
): İkili formdaki şifreli metin bitlerinin dizisi: - Anahtar Uzayı (
): Belirli ve sabit bir uzunluğa sahip kök anahtarların (seed keys) kümesi. - Anahtar Akışı Üreteci (Keystream Generator):
kök anahtarını alarak, şeklinde açık metin uzunluğunda bir Sözde Rastgele sayı dizisi üreten deterministik fonksiyondur. - Şifreleme Fonksiyonu (
): Açık metnin her bir . biti, anahtar akışının ilgili . biti ile XOR'lanır: - Deşifreleme Fonksiyonu (
): Şifreli metnin her bir . biti, aynı üretilmiş anahtar akışı ile tekrar XOR'lanır:
⚙️ Anahtar Akışı (Keystream) Nasıl Üretilir?
Akan şifrelerin kalbi Anahtar Akışı Üretecidir (Keystream Generator). Üretilen dizi dışarıdan bakan bir düşman için tamamen rastgele görünmelidir ancak aslında matematiksel bir formüle dayanan deterministik bir yapıdır. Bu diziler tarihsel olarak sayı teorisi ve lineer cebir tabanlı matematiksel fonksiyonlarla üretilirler.
İki temel matematiksel üreteç modeli şöyledir:
1. Doğrusal Eşlenik Üreteci (Linear Congruential Generator - LCG)
Kriptografik olarak çok güçlü olmasa da, sözde rastgele sayı üretiminin temel matematiksel mantığını anlamak için en iyi örnektir. Doğrudan modüler aritmetiğe ve sayı teorisine dayanır.
Bir
Burada
Bu yöntem çok basittir ancak periyodu (döngüye girme süresi)
2. Doğrusal Geri Beslemeli Kaydırmalı Yazmaç (LFSR)
LCG'nin donanım üzerinde
[Image of Linear Feedback Shift Register mathematics and shift mechanism]
Her bir
Burada
🔄 Anahtar Periyodu (Period) ve Döngü Tehlikesi
Akan şifreler, ürettikleri anahtar akışının (keystream) kalitesine göre güvendedir. Ancak hiçbir matematiksel formül (PRNG) sonsuza kadar birbirinden farklı sayılar üretemez. Üretilen dizi belli bir adımdan sonra mutlaka başa döner ve kendini tekrar etmeye başlar.
Anahtar dizisinin kendini tekrar edene kadar ürettiği benzersiz sayı adedine Periyot (Period) denir.
⚠️ Periyot Kısalığı Zafiyeti
Eğer şifreleyeceğiniz mesajın uzunluğu, üretecinizin periyodundan daha uzunsa, aynı anahtar akışı mesajın ilerleyen kısımlarında ikinci kez kullanılmış olur. Bu durum, One-Time Pad'de gördüğümüz ölümcül İki Kez Kullanılan Şerit (Two-Time Pad) zafiyetini tetikler. Şifre saniyeler içinde kırılır!
- LCG Üreteçleri için ulaşılabilecek maksimum periyot modül değeri kadardır (
). - LFSR Üreteçleri için ulaşılabilecek maksimum periyot
'dir (Burada yazmaçtaki bit sayısıdır).
Modern akan şifreler (örn: ChaCha20), mesaj ne kadar uzun olursa olsun asla döngüye girmeyecek kadar devasa periyotlara (örn:
⚡ Akan Şifrelerin Özellikleri ve Kriptanalizi
- Hız ve Donanım Verimliliği: Akan şifreler, veriyi bit bit veya bayt bayt işledikleri için (verinin tamamının belleğe yüklenmesini beklemezler) donanım üzerinde inanılmaz hızlı çalışırlar. Bu özellikleri onları canlı video yayınları (streaming), Bluetooth ve Wi-Fi iletişimleri için vazgeçilmez kılar.
- Hata Yayılımı Yoktur (No Error Propagation): İletişim hattındaki bir gürültü nedeniyle şifreli metindeki (
) tek bir bit bozulursa, alıcı tarafında deşifre edilen açık metinde ( ) sadece o ilgili tek bit bozuk
📝 Çözümlü Uygulamalar
Aşağıdaki örnekte, açık metnimiz doğrudan işlemcilerin anladığı ikili sistem (binary) blokları (8-bit baytlar) halinde verilmiştir. Anahtar akışını üretmek için
🟢 Örnek 1: x = [10101010, 11110000] ikili açık metnini, LCG (S₀ = 10, a = 5, c = 7, m = 256) üreteci ve XOR işlemi ile şifreleyiniz.
Çözüm: Şifreleme fonksiyonumuz:
Bize verilen 8-bitlik (1 Bayt) iki adet açık metin bloğumuz şunlardır:
1. Adım: İlk bloğun (
Şimdi bulduğumuz 57 sayısını ikili (binary) sisteme çevirelim:
Açık metin ile anahtar akışını karşılıklı (bitwise) XOR işlemine sokalım (Farklıysa 1, aynıysa 0):
İlk şifreli bloğumuz:
2. Adım: İkinci bloğun (
Bulduğumuz 36 sayısını ikili (binary) sisteme çevirelim:
Şimdi ikinci bloğumuzu yeni anahtarla XOR'layalım:
İkinci şifreli bloğumuz:
Sonuç: Verilen açık metin blokları, bu LCG tabanlı akan şifreleme sistemi ile kusursuz bir şekilde şifrelenerek