Kriptografi CTF Nasıl Çözülür? Sıfırdan Başlangıç Rehberi
Kriptografi kategorisi, CTF'e yeni başlayanların en çok korktuğu ama aslında en çok "aa şimdi anladım" dedikleri alandır. Bu rehberde kodlama ile şifrelemenin farkından, klasik şifrelerden modern RSA'ya kadar izlemen gereken yolu ve hangi araçları nasıl kullanacağını sıfırdan anlatıyoruz.
- Kodlama (base64/hex) gizleme değildir, anahtarsız her zaman geri çevrilir; şifreleme ise anahtar ister.
- Önce metnin ne olduğunu tanı: base64, hex, Caesar mı? Kalıpları tanımak işin yarısıdır.
- Kolaydan zora sıra: kodlamalar → klasik şifreler → XOR → RSA gibi modern şifreler.
- CyberChef görsel deneme tahtası, Python ise tekrarlanabilir çözüm motorudur; ikisini birlikte kullan.
- Sadece yetkili ve eğitim ortamlarında pratik yap; teknik öğrenmek saldırı için değil, anlamak içindir.
Kodlama mı, Şifreleme mi? İlk ayrım budur
Kriptografi challenge'larında yeni başlayanların en çok karıştırdığı şey budur, o yüzden en baştan netleştirelim. Kodlama (encoding) veriyi gizlemez; sadece başka bir gösterime çevirir. Anahtar gerektirmez ve herkes geri çevirebilir. Şifreleme (encryption) ise bir anahtarla veriyi gizler; anahtarı bilmeyen kolayca okuyamaz.
En sık karşına çıkacak kodlamalar base64 ve hex. Örneğin SGVsbG8= aslında base64 kodlanmış Hello kelimesidir. Sonundaki = işareti base64'ün klasik parmak izidir. 48656c6c6f ise hex (onaltılık) yazımdır ve yine Hello demektir; sadece 0-9 ve a-f karakterleri görüyorsan aklına hex gelmeli.
Çıkarılacak ders: bir metin gördüğünde önce "bu şifreli mi, yoksa sadece kodlanmış mı?" diye sor. Çoğu başlangıç challenge'ı aslında sadece kodlamadır ve tek bir çözme işlemiyle açılır.
Kalıpları tanı: metin sana ne olduğunu söyler
İyi bir çözücü, metne bakıp türünü tahmin eder. İşte hızlı tanıma rehberi:
- Sonu
=ile biten, harf-rakam karışık uzun blok: büyük ihtimalle base64. - Sadece 0-9 ve a-f: hex. Çift sayıda karakter olması ipucudur.
- Sadece 0 ve 1 dizileri: binary (ikilik). 8'erli gruplar birer harftir.
- Anlamsız ama Türkçe/İngilizce harf dağılımına benzeyen metin: klasik bir kaydırma/yerine koyma şifresi olabilir.
.- / -...gibi nokta ve çizgiler: Mors alfabesi.
Bu kalıpları ezberlemek yerine bolca örnek çözerek tanı. Farklı kodlama türlerini bir arada gördüğün pratik için kripto kategorisindeki challenge'lara göz atabilirsin.
Klasik şifreler: kaydır, yerine koy, çöz
Klasik şifreler bilgisayarlardan önce icat edilmiştir, bu yüzden mantıkları basittir ve elle bile çözülebilir. En temel olanı Caesar (Sezar) şifresidir: her harf alfabede sabit bir sayı kadar kaydırılır. En bilineni ROT13, yani 13 kaydırma. Örneğin Uryyb metnini 13 geri kaydırırsan Hello olur.
Caesar'ın güzel yanı sadece 25 olası kaydırma olmasıdır; hepsini tek tek deneyip anlamlı olanı bulabilirsin (buna "brute force" denir). Vigenère şifresi ise bir anahtar kelime kullanır ve her harf farklı kadar kaydırılır, bu yüzden biraz daha zordur ama araçlar bunu da çözer. Substitution (yerine koyma) şifresinde ise her harf başka bir harfle değiştirilir; harf sıklığı analiziyle (Türkçede en sık "a" ve "e" gibi) çözülür.
Yeni başlıyorsan sıralaman şu olsun: önce Caesar/ROT13, sonra Vigenère, en son substitution. Her birini bir kez elle çözdüğünde mantığı kalıcı olarak oturur.
Modern kriptografiye kısa bir bakış: XOR ve RSA
Modern challenge'larda karşına iki isim sık çıkar. İlki XOR. XOR, iki bit aynıysa 0, farklıysa 1 veren basit bir mantık işlemidir. Güzelliği şudur: bir veriyi bir anahtarla XOR'larsan şifrelenir; aynı anahtarla tekrar XOR'larsan çözülür. Tek baytlık anahtarlarda 256 olasılığın hepsini deneyerek çözüm bulunabilir.
İkincisi RSA, gerçek dünyada da kullanılan bir açık anahtar sistemidir. Sana genelde n, e ve şifreli mesaj c verilir. RSA'nın gücü büyük bir sayıyı (n) asal çarpanlarına ayırmanın zorluğuna dayanır. CTF'te ise bu n çoğu zaman kasıtlı olarak zayıf seçilir; yani küçük veya çarpanlara ayrılabilir olur, böylece öğretici amaçla çözülebilir. Bunları henüz tam anlamana gerek yok; şimdilik "RSA gördüm, n'i çarpanlarına ayırmayı deneyeceğim" demen yeterli.
Bu teknikleri güvenli biçimde denemek için mutlaka yalnızca yetkili ve eğitim ortamlarını kullan. Amaç sistemlere saldırmak değil, kriptografinin nasıl çalıştığını ve nerede zayıfladığını anlamaktır.
Araçlar: CyberChef ve Python
İki temel aracın var. Birincisi CyberChef: tarayıcıda çalışan görsel bir "şifre mutfağı". İşlemleri sürükleyip üst üste dizerek denersin. Özellikle Magic (sihirli değnek) bileşeni, verdiğin metnin base64 mü, hex mi olduğunu otomatik tahmin etmeye çalışır; başlangıçta çok işine yarar.
İkincisi Python: tekrarlanabilir ve güçlü çözümler için. Basit iki örnek:
import base64
# base64 çözme
print(base64.b64decode("SGVsbG8=")) # b'Hello'
# hex çözme
print(bytes.fromhex("48656c6c6f")) # b'Hello'
XOR gibi işlemler için Python'da bir döngü yazmak da çok kolaydır. Pratik kural: hızlı deneme için CyberChef, kontrollü ve otomatik çözüm için Python. İleride RSA için pycryptodome gibi kütüphaneleri de öğreneceksin ama acele etme.
İzlenecek yol haritası: kolaydan zora
Kafan karışmasın diye net bir sıra bırakıyorum. Bu sırayla ilerlersen her adım bir öncekinin üstüne oturur:
- Kodlamalar: base64, hex, binary, Mors. Tek işlemle açılan ısınma challenge'ları.
- Klasik şifreler: Caesar/ROT13, sonra Vigenère, sonra substitution.
- XOR: tek baytlık anahtarla başla, çok baytlığa geç.
- Zayıf RSA: küçük veya çarpanlanabilir
nsenaryoları. - Karışık/çok katmanlı: önce base64, altından hex, altından Caesar gibi iç içe geçmiş görevler.
Her çözümden sonra kısa bir not tut: "bu neydi, nasıl tanıdım, hangi araçla çözdüm". Bu notlar zamanla senin kişisel çözüm defterin olur. Genel CTF mantığını tazelemek için CTF Nedir? sayfasına, tüm kategorilerin başlangıç yolunu görmek için de Rehber ana sayfasına bakmayı unutma. Hazır hissedince kripto challenge'larıyla ellerini kirlet; teori ancak çözerken kalıcı olur.
Sıkça Sorulan Sorular
Kriptografi CTF için matematik bilmem şart mı?
Başlangıç için hayır. Kodlamalar ve klasik şifreler hiç matematik istemez, sadece kalıp tanımayı gerektirir. RSA gibi konulara geldiğinde biraz sayı teorisi işine yarar ama o aşamaya kadar zaten temeli oturmuş olursun.
base64 bir şifreleme yöntemi midir?
Hayır, base64 bir kodlamadır, şifreleme değildir. Anahtar gerektirmez ve herkes geri çevirebilir, yani bir şeyi gizlemez sadece farklı gösterir. Sonu genelde eşittir işaretiyle biten harf-rakam blokları base64'ün tipik işaretidir.
CyberChef mi Python mı öğrenmeliyim?
İkisi de gerekli ama farklı işler için. CyberChef hızlı görsel denemeler ve tür tahmini için idealdir, Python ise tekrarlanabilir ve otomatik çözümler yazmak için güçlüdür. Başlangıçta CyberChef ile tanı, sonra Python ile derinleş.
Bir metnin hangi şifreyle şifrelendiğini nasıl anlarım?
Metnin görünüşü sana ipucu verir: sadece 0-9 ve a-f varsa hex, eşittir ile bitiyorsa base64, anlamsız ama gerçek harf dağılımına benziyorsa klasik bir şifre olabilir. CyberChef'in Magic aracı da otomatik tahmin yaparak sana yardımcı olur.
Bu teknikleri gerçek sistemlerde denemek yasal mı?
Hayır, izinsiz sistemlerde denemek yasal değildir ve amaç da bu değildir. Bu bilgiler kriptografinin nasıl çalıştığını ve nerede zayıfladığını anlamak içindir. Sadece yetkili eğitim ortamlarında ve CTF platformlarında pratik yapmalısın.
Hadi pratiğe dök
Bu rehberdeki teknikleri Kriptografi kategorisindeki gerçek challenge’larda dene.
Kriptografi Challenge’ları →