Sezar ve Vigenère Şifreleri Nasıl Çözülür?
Klasik şifreler, kriptografinin en eski ve en öğretici kısmıdır; CTF yarışmalarında da sık sık karşına çıkar. Bu rehberde Sezar, ROT13 ve Vigenère şifrelerinin nasıl çalıştığını ve bir metni sıfırdan nasıl çözebileceğini adım adım öğreneceksin.
- Sezar şifresi harfleri sabit sayıda kaydırır; en fazla 25 olasılık olduğu için hepsini denemek saniyeler sürer.
- ROT13, kaydırma miktarı 13 olan özel bir Sezar'dır ve kendi kendinin tersidir.
- Vigenère bir anahtar kelimeyle her harfi farklı miktarda kaydırır, bu yüzden tek bir kaydırma denemesi işe yaramaz.
- Frekans analizi, dildeki harf sıklıklarını kullanarak anahtar olmadan bile çözüm yapmanı sağlar.
- Önce mantığı elle anla, sonra CyberChef veya dcode gibi araçlarla hızlandır.
Klasik Şifreler Nedir, Neden CTF'te Karşına Çıkar?
Klasik şifreler, bir metnin harflerini belirli bir kurala göre başka harflerle değiştirdiğin yöntemlerdir. Bunlara yerine-koyma (substitution) şifreleri denir: her harfin yerine başka bir harf koyarsın. Bugün gerçek güvenlik için kullanılmazlar çünkü kırılmaları çok kolaydır — ama tam da bu yüzden öğrenmek için mükemmeldirler.
CTF'lerde bu şifreler genelde "ısınma" soruları olarak verilir. Sana anlamsız görünen bir metin verilir, sen de doğru kuralı bulup okunabilir hale getirirsin. Eğer CTF mantığına henüz aşina değilsen önce CTF Nedir? sayfasına göz atabilirsin.
Sezar Şifresi: Harfleri Kaydırmak
Sezar şifresi en basit olanıdır. Fikri şudur: alfabedeki her harfi sabit bir sayı kadar ileri kaydırırsın. Örneğin kaydırma miktarı 3 ise A harfi D olur, B harfi E olur, ve böyle devam eder.
HELLO kelimesini 3 kaydırırsak:
H -> K
E -> H
L -> O
L -> O
O -> R
Sonuç: KHOOR
Çözmek için ters işlemi yaparsın: her harfi geriye doğru 3 kaydırırsın. Peki kaydırma miktarını bilmiyorsan? İşte güzel kısım burada: alfabede 26 harf var, yani en fazla 25 farklı kaydırma olasılığı vardır (0 kaydırma zaten metnin kendisi). Hepsini tek tek denersin, hangisi anlamlı çıkarsa doğru olan odur. Buna kaba kuvvet (brute force) denir.
Elle 25 satır denemek yerine kısa bir Python kodu işini görür:
metin = "KHOOR"
for k in range(26):
cozum = ''.join(chr((ord(c) - 65 - k) % 26 + 65) for c in metin)
print(k, cozum)
Çıktıyı gözünle tararsın; 3 HELLO satırını gördüğünde bulmuş olursun.
ROT13: Sezar'ın Özel Hali
ROT13, kaydırma miktarı tam olarak 13 olan bir Sezar şifresidir. "ROT" kelimesi İngilizce rotate (döndürme) sözcüğünden gelir. 13 sayısının özel bir güzelliği vardır: alfabenin tam yarısıdır, bu yüzden ROT13 kendi kendinin tersidir. Yani bir metne ROT13 uygularsan şifrelenir; sonuca tekrar ROT13 uygularsan geri açılır.
HELLO --ROT13--> URYYB
URYYB --ROT13--> HELLO
Bu yüzden ROT13'ü şifreleme değil, sadece metni gözden gizleyen bir "kodlama" olarak düşünmelisin; hiçbir güvenlik sağlamaz çünkü herkes anında geri çevirebilir. CTF'te bir metin garip görünüyorsa, refleks olarak "acaba ROT13 mi?" diye bir denemekte fayda var.
Vigenère: Anahtarlı Şifre
Vigenère, Sezar'ın daha akıllı halidir. Tek bir kaydırma yerine bir anahtar kelime kullanır ve metnin her harfini o anahtarın harfine göre farklı miktarda kaydırır. A harfi 0 kaydırma, B harfi 1 kaydırma, C harfi 2 kaydırma... anlamına gelir.
Anahtarı, metin bitene kadar tekrar tekrar yazarsın. HELLO metnini KEY anahtarıyla şifreleyelim:
Metin: H E L L O
Anahtar: K E Y K E
| | | | |
H(+K=10) -> R
E(+E=4) -> I
L(+Y=24) -> J
L(+K=10) -> V
O(+E=4) -> S
Sonuç: RIJVS
Gördüğün gibi metindeki iki L harfi, farklı anahtar harflerine denk geldiği için J ve V gibi farklı harflere dönüştü. İşte Vigenère'i Sezar'dan zor yapan şey budur: aynı harf her yerde aynı çıkmadığı için basitçe 25 kaydırma deneyerek çözemezsin.
Çözerken anahtarı biliyorsan iş kolay: her harfi anahtar harfi kadar geri kaydırırsın. Anahtarı bilmiyorsan önce anahtar uzunluğunu tahmin etmen gerekir (bunun için Kasiski incelemesi ve indeks-of-coincidence gibi teknikler vardır), sonra metni anahtar uzunluğu kadar sütuna ayırıp her sütunu ayrı bir Sezar gibi çözersin.
Frekans Analizi: Anahtar Olmadan Çözmek
Peki hiçbir ipucu yoksa? Burada dilin kendisi sana yardım eder. Her dilde bazı harfler diğerlerinden çok daha sık kullanılır. İngilizcede en sık harf E, sonra T, A, O gelir. Türkçede ise en sık harfler genellikle a ve e'dir.
Frekans analizinin mantığı şudur:
- Şifreli metinde hangi harfin en çok tekrar ettiğini say.
- Metnin dili İngilizceyse, o harfin büyük ihtimalle
E'ye karşılık geldiğini varsay. - Aradaki mesafeden kaydırma miktarını hesapla (ör. en sık harf
Hise, H'den E'ye 3 harf var demektir). - Bu kaydırmayı tüm metne uygula ve anlamlı çıkıp çıkmadığına bak.
Bu yöntem tek-kaydırmalı Sezar'da neredeyse anında sonuç verir. Vigenère'de ise her sütuna ayrı ayrı uygularsın. Metin ne kadar uzunsa frekanslar o kadar güvenilir olur — çok kısa metinlerde şans faktörü devreye girer.
Elle mi, Araçla mı?
Öğrenirken en az bir örneği elle yapmanı şiddetle öneririm; kaydırma mantığını parmak uçlarınla hissetmeden araçlar sana sihir gibi gelir. Ama mantığı kavradıktan sonra hız için araç kullanmak tamamen normaldir:
- CyberChef: "ROT13", "Vigenère Decode", "Caesar Bruteforce" gibi tarifleri sürükle-bırak ile birleştirebileceğin tarayıcı aracı.
- dcode.fr: Sezar ve Vigenère için otomatik çözücüler ve frekans analizi sunar.
- Python: Kendi kısa scriptini yazmak, kalıbı gerçekten anladığını kanıtlar.
Bu tekniklerin hepsi yalnızca eğitim ve CTF ortamları içindir. Klasik şifreler modern sistemlerde kullanılmaz; öğrendiklerini sadece yetkili olduğun antrenman sahalarında dene.
Nereden Başlamalı?
En iyi öğrenme yolu, öğrendiğini hemen uygulamaktır. Küçük bir Sezar sorusuyla başla, ardından frekans analizine, en son da Vigenère'e geç. Bu tekniği kullanan bulmacalar için kripto kategorisindeki challenge'lara göz at ve kolaydan başlayarak yukarı doğru tırman.
Diğer konularda da temelden ilerlemek istersen Rehber ana sayfasındaki başlangıç yazılarına bakabilirsin. Unutma: klasik şifreler basit görünür ama sana kriptografinin en önemli refleksini kazandırır — "bu metin neden anlamsız ve hangi kurala uyuyor?" diye sormayı.
Sıkça Sorulan Sorular
Sezar şifresini anahtar olmadan çözebilir miyim?
Evet. Sadece 25 olası kaydırma bulunduğu için hepsini tek tek deneyebilirsin; anlamlı metni gördüğün an doğru kaydırmayı bulmuş olursun. Buna kaba kuvvet denir ve saniyeler sürer.
Vigenère neden Sezar'dan daha zor?
Çünkü Vigenère tek bir kaydırma yerine anahtar kelimenin her harfiyle farklı kaydırmalar uygular. Bu yüzden aynı harf her yerde aynı çıkmaz ve 25 denemeyle çözülmez; önce anahtar uzunluğunu tahmin etmen gerekir.
ROT13 gerçekten bir şifreleme mi?
Güvenlik açısından hayır. ROT13 sadece metni okunmaz gösteren sabit bir kodlamadır ve kendi kendinin tersidir. Kaydırma herkesçe bilindiği için gizlilik sağlamaz, yalnızca metni gözden saklar.
Frekans analizi Türkçe metinlerde de çalışır mı?
Evet, ama harf sıklıkları dile göre değişir. Türkçede en sık harfler genellikle 'a' ve 'e' iken İngilizcede 'e' başı çeker. Bu yüzden metnin hangi dilde olduğunu bilmek işini oldukça kolaylaştırır.
Bu teknikleri gerçek sistemlerde kullanabilir miyim?
Hayır, bu şifreler modern güvenlikte kullanılmaz ve yalnızca eğitim ile CTF pratiği içindir. Öğrendiklerini sadece yetkili olduğun antrenman ortamlarında denemelisin.
Hadi pratiğe dök
Bu rehberdeki teknikleri Kriptografi kategorisindeki gerçek challenge’larda dene.
Kriptografi Challenge’ları →