Skip to content

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 (P): İkili (binary) formdaki açık metin bitlerinin dizisi: x=x1,x2,
  • Şifreli Metin (C): İkili formdaki şifreli metin bitlerinin dizisi: y=y1,y2,
  • Anahtar Uzayı (K): Belirli ve sabit bir uzunluğa sahip kök anahtarların (seed keys) kümesi.
  • Anahtar Akışı Üreteci (Keystream Generator): KK kök anahtarını alarak, z1,z2, şeklinde açık metin uzunluğunda bir Sözde Rastgele sayı dizisi üreten deterministik fonksiyondur.
  • Şifreleme Fonksiyonu (E): Açık metnin her bir τ. biti, anahtar akışının ilgili τ. biti ile XOR'lanır:ezτ(xτ)xτzτ(mod2)
  • Deşifreleme Fonksiyonu (D): Şifreli metnin her bir τ. biti, aynı üretilmiş anahtar akışı ile tekrar XOR'lanır:dzτ(yτ)yτzτ(mod2)

⚙️ 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 S0 başlangıç değeri (kök anahtar) belirlenir. Her bir τ adımında yeni bir durum değeri şu doğrusal denklemle hesaplanır:

Sτ(aSτ1+c)(modm)

Burada a çarpan, c artış miktarı, m ise modüldür. Elde edilen bu Sτ sayısının doğrudan kendisi kullanılabileceği gibi, ikili sisteme (binary) indirgemek için sayının tek mi çift mi olduğuna bakılarak (yani mod 2'si alınarak) zτ anahtar biti elde edilir:

zτSτ(mod2)

Bu yöntem çok basittir ancak periyodu (döngüye girme süresi) m değerine ve seçilen katsayıların aralarında asal olma durumlarına sıkı sıkıya bağlıdır.

2. Doğrusal Geri Beslemeli Kaydırmalı Yazmaç (LFSR)

LCG'nin donanım üzerinde Z2 (Galois Field 2) cismine uyarlanmış, çok daha hızlı çalışan lineer cebirsel versiyonudur. Belirli L uzunluğunda bir bit dizisi (başlangıç durumu) sisteme verilir.

[Image of Linear Feedback Shift Register mathematics and shift mechanism]

Her bir τ zaman adımında, mevcut bitler bir sağa kaydırılır. En sağdan düşen bit, bizim anahtar akışı bitimiz (zτ) olur. Boşalan en sol haneye ise, içerideki belirli bitlerin XOR'lanmasıyla elde edilen yeni bir bit yazılır.

τ>L adımları için üretilen bitin genel doğrusal tekrar bağıntısı (recurrence relation) şu şekildedir:

zτc1zτ1+c2zτ2++cLzτL(mod2)

Burada ci{0,1} katsayıları, hangi indekslerdeki bitlerin geri beslemeye (XOR işlemine) dahil edileceğini belirler. Uygun bir polinom (primitive polynomial) seçildiğinde, L boyutlu bir LFSR, kendini tekrar etmeden önce tam 2L1 adet rastgele görünümlü bit üretebilir. Ancak sistem tamamen lineer olduğu için Berlekamp-Massey algoritması ile kolayca çözülür. Bu yüzden modern sistemlerde birden fazla LFSR doğrusal olmayan (non-linear) fonksiyonlarla harmanlanarak kullanılır.

🔄 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 (m).
  • LFSR Üreteçleri için ulaşılabilecek maksimum periyot 2L1'dir (Burada L 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: 264 byte) sahip olacak şekilde tasarlanır.

⚡ Akan Şifrelerin Özellikleri ve Kriptanalizi

  1. 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.
  2. Hata Yayılımı Yoktur (No Error Propagation): İletişim hattındaki bir gürültü nedeniyle şifreli metindeki (y) tek bir bit bozulursa, alıcı tarafında deşifre edilen açık metinde (x) 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 m=256 (1 baytlık sınırı korumak için) olan bir LCG üreteci kullanılmıştır.

🟢 Ö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: e(xτ)xτSτ Anahtar akışı üretim fonksiyonumuz: Sτ(aSτ1+c)(mod256)

Bize verilen 8-bitlik (1 Bayt) iki adet açık metin bloğumuz şunlardır:

  • x1=101010102
  • x2=111100002

1. Adım: İlk bloğun (x1) şifrelenmesi Önce bu bloğu şifreleyecek olan 1. anahtar akışımızı (S1) onluk tabanda hesaplayalım:

S1(5S0+7)(mod256)S1(510+7)(mod256)=5710

Şimdi bulduğumuz 57 sayısını ikili (binary) sisteme çevirelim: S1=001110012

Açık metin ile anahtar akışını karşılıklı (bitwise) XOR işlemine sokalım (Farklıysa 1, aynıysa 0):

x1:101010102 S1:001110012y1:100100112

İlk şifreli bloğumuz: y1=100100112

2. Adım: İkinci bloğun (x2) şifrelenmesi Sistemin kalbi burasıdır! Yeni anahtar bir önceki duruma (S1=57) bağlı olarak güncellenir.

S2(5S1+7)(mod256)S2(557+7)(mod256)S2(285+7)(mod256)S2292(mod256)=3610

Bulduğumuz 36 sayısını ikili (binary) sisteme çevirelim: S2=001001002

Şimdi ikinci bloğumuzu yeni anahtarla XOR'layalım:

x2:111100002 S2:001001002y2:110101002

İkinci şifreli bloğumuz: y2=110101002

Sonuç: Verilen açık metin blokları, bu LCG tabanlı akan şifreleme sistemi ile kusursuz bir şekilde şifrelenerek [10010011, 11010100] ikili (binary) şifreli metin dizisine dönüştürülmüştür.

Akademik amaçlarla tasarlanmış açık kaynaklı eğitim arşivi. Bu sitedeki tüm ders notları ve içerikler CC BY-NC-SA 4.0 Lisansı ile korunmaktadır.