12  Vigenère Şifrelemesi

Monoalfabetik şifrelerin (Sezar, afin) en zayıf noktası, dildeki harf frekanslarını —örneğin İngilizcede E harfinin diğerlerinden çok daha sık geçmesini— aynen korumasıdır. 16. yüzyılda Giovan Battista Bellaso tarafından tasarlanan ve sonradan yanlışlıkla Blaise de Vigenère’in adıyla anılan bu sistem, polialfabetik (çoklu alfabe) yapısıyla bu istatistiksel zafiyeti çözer.

Temelde sistem, tek bir sabit kaydırma yerine bir anahtar kelime kullanarak mesajdaki her harf için farklı ve döngüsel bir Sezar kaydırması uygular.

Tanım 12.1 (Vigenère Şifreleme Sistemi) Vigenère şifrelemesinde işlemler, \(n\) uzunluğundaki açık metin vektörleri ile \(m\) uzunluğundaki anahtar vektörleri (kelimeleri) arasında gerçekleşir:

  • Açık metin (\(\mathcal{P}\)): Elemanları \(\mathbb{Z}_{26}\)’dan alınan \(n\) boyutlu vektörlerin kümesi: \[\mathbf{x} = (x_0, x_1, \dots, x_{n-1}) \in (\mathbb{Z}_{26})^n\]
  • Şifreli metin (\(\mathcal{C}\)): Elemanları \(\mathbb{Z}_{26}\)’dan alınan \(n\) boyutlu vektörlerin kümesi: \[\mathbf{y} = (y_0, y_1, \dots, y_{n-1}) \in (\mathbb{Z}_{26})^n\]
  • Anahtar uzayı (\(\mathcal{K}\)): Elemanları \(\mathbb{Z}_{26}\)’dan alınan \(m\) uzunluğundaki vektörlerden (kelimelerden) oluşan küme: \[K = (k_0, k_1, \dots, k_{m-1}) \in (\mathbb{Z}_{26})^m\]
  • Şifreleme fonksiyonu (\(\mathcal{E}\)): \(\mathbf{x}\) vektörünün \(i\). elemanı, anahtar vektörünün döngüsel olarak sıraya denk gelen elemanıyla toplanır: \[e_K(x_i) \equiv x_i + k_{i \bmod m} \pmod{26}\]
  • Deşifreleme fonksiyonu (\(\mathcal{D}\)): \(\mathbf{y}\) şifreli vektörünün \(i\). elemanından anahtar vektöründeki ilgili eleman çıkarılır: \[d_K(y_i) \equiv y_i - k_{i \bmod m} \pmod{26}\]
Not📌 Anahtar uzayı ve Kasiski incelemesi

Vigenère şifrelemesinin anahtar uzayı, kullanılan anahtar kelimenin uzunluğuna (\(m\)) doğrudan bağlıdır. Anahtardaki her bir harf için \(26\) farklı seçenek olduğundan:

\[|\mathcal{K}| = 26^m\]

Örneğin yalnızca beş harfli bir anahtar kelime (\(m = 5\)) kullanılıyorsa:

\[|\mathcal{K}| = 26^5 = 11\,881\,376\]

Bu devasa anahtar uzayı, kendi döneminin kaba kuvvet saldırılarını imkânsız kılmıştır. Sistem yaklaşık üç yüzyıl kırılamamış; ancak 1863’te Friedrich Kasiski’nin şifreli metinde tekrar eden hece aralıklarını ölçerek anahtar uzunluğunu (\(m\)) tespit etmesiyle zafiyeti ortaya çıkmıştır. Anahtar uzunluğu bilindiğinde metin \(m\) adet bağımsız Sezar şifresine ayrışır ve her biri klasik frekans analiziyle tek tek kırılır.

12.1 📝 Çözümlü Uygulamalar

Aşağıdaki örneklerde harf–sayı dönüşüm tablosunu kullanınız. Hataya düşmemek için açık metnin altına anahtar kelimeyi döngüsel olarak harf harf yazmak en pratik yoldur.

Örnek 12.1 Açık metni MATH olan bir mesajı, \(K = \texttt{KEY}\) anahtarı kullanarak Vigenère şifrelemesi ile şifreleyiniz.

Açık metnimiz dört harfli, anahtar kelimemiz ise üç harflidir (\(m = 3\)). Öncelikle anahtarı, açık metnin uzunluğuna ulaşana kadar döngüsel olarak tekrarlarız:

Konum \(i\) 0 1 2 3
Açık metin M A T H
Anahtar K E Y K

Şimdi şifreleme formülüne göre her harfi alt alta toplayalım:

  1. M \((12)\) + K \((10) \implies 12 + 10 = 22 \implies\) W
  2. A \((0)\) + E \((4) \implies 0 + 4 = 4 \implies\) E
  3. T \((19)\) + Y \((24) \implies 19 + 24 = 43 \equiv 17 \pmod{26} \implies\) R
  4. H \((7)\) + K \((10) \implies 7 + 10 = 17 \implies\) R

Sonuç: MATH kelimesi Vigenère ile WERR olarak şifrelenir.

Dikkat edin: Açık metinde hiç tekrar eden harf olmamasına rağmen şifreli metinde yan yana iki R oluştu. Frekans analizini çökerten polialfabetik özellik tam olarak budur — aynı şifreli harf farklı açık harflerden gelebilir.

\(\boxtimes\)

Örnek 12.2 \(K = \texttt{KEY}\) anahtarı ile şifrelenmiş olan WERR kapalı metnini deşifre ediniz.

Deşifreleme kuralımız: \(d_K(y_i) \equiv y_i - k_{i \bmod m} \pmod{26}\).

Yine anahtar kelimeyi mesaj uzunluğuna kadar tekrarlıyoruz:

Konum \(i\) 0 1 2 3
Şifreli metin W E R R
Anahtar K E Y K

Alt alta çıkarma işlemlerini yapalım:

  1. W \((22)\)K \((10) \implies 22 - 10 = 12 \implies\) M
  2. E \((4)\)E \((4) \implies 4 - 4 = 0 \implies\) A
  3. R \((17)\)Y \((24) \implies 17 - 24 = -7 \equiv -7 + 26 = 19 \pmod{26} \implies\) T
  4. R \((17)\)K \((10) \implies 17 - 10 = 7 \implies\) H

Sonuç: Çıkarma işlemi ve modüler aritmetik bizi orijinal MATH mesajına kusursuzca geri götürdü.

\(\boxtimes\)