SEN2008 · 12. hafta · Computer and Network Security: Security Techniques (Encryption, digital signatures, message authentication, and hash functions, Use of cryptography for network security, Protection and defense mechanisms and tools

Simetrik şifreleme: Caesar'dan AES'e, çalışma modları

Şifrelemenin temel dili, Caesar ve Vigenère ile elle şifreleme, XOR ve tek kullanımlık şifre, DES/AES fikri, ECB/CBC/CTR modları ve anahtar dağıtımı sorunu. Elle şifreleme ve mod soruları burada.

plaintextciphertextkeysymmetric encryptionKerckhoffs's principlebrute forceCaesar ciphersubstitution cipherfrequency analysisVigenère cipherXORone-time padblock cipherstream cipherDESAESECBCBCCTRinitialization vectornoncekey distribution

Kriptografi, ağ güvenliğinin motoru. Gizlilik, bütünlük ve kimlik doğrulama hedeflerinin hepsi sonunda bir şifreleme, özet ya da imza işlemine dayanır. Bu hafta iki sayfa: bu sayfada simetrik şifreleme, sonraki sayfada açık anahtar, özet fonksiyonları, imzalar ve TLS. Sınavda bu sayfadan elle şifreleme (Caesar, Vigenère, XOR), mod izleri ve anahtar uzayı hesapları çıkar. Altın kurallar:

  1. Simetrik = tek ortak anahtar. Şifreleyen ve çözen aynı anahtarı bilir.
  2. Harfleri sayıya çevir, mod 26 al. A = 0, B = 1, …, Z = 25.
  3. XOR kendini götürür. P⊕K⊕K=PP \oplus K \oplus K = P.
  4. ECB’yi kullanma. Aynı blok aynı çıktıyı verir, desen sızar.
  5. Anahtarı tekrar kullanma. OTP’de ve CTR’de anahtar akışı bir kez kullanılır.

Temel kavramlar

Açık metin (plaintext) PP, şifreleme algoritması EE ve anahtar KK ile şifreli metne (ciphertext) CC dönüşür: C=EK(P)C = E_K(P). Deşifre: P=DK(C)P = D_K(C). Simetrik şifrelemede (symmetric encryption) iki tarafta aynı KK vardır.

Kerckhoffs ilkesi: algoritma gizli değildir; bütün güvenlik anahtarın gizliliğindedir. Algoritmayı saklamaya dayanan güvenlik (security through obscurity) ilk tersine mühendislikte çöker.

Saldırganın elindeki bilgiye göre kriptanaliz türleri: yalnız şifreli metin (ciphertext-only), bilinen açık metin (known-plaintext), seçilmiş açık metin (chosen-plaintext). En kaba saldırı kaba kuvvet (brute force): bütün anahtarları denemek. kk bitlik anahtar için en kötü 2k2^k, ortalama 2k−12^{k-1} deneme.

Klasik şifreler

Caesar (kaydırma) şifresi

Her harf alfabede kk adım kaydırılır:

C=(P+k) mod 26P=(C−k) mod 26C = (P + k) \bmod 26 \qquad P = (C - k) \bmod 26

Örnek: NETWORK, k=3k = 3.

N(13)+3=16 Q   E(4)+3=7 H   T(19)+3=22 W   W(22)+3=25 Z
O(14)+3=17 R   R(17)+3=20 U   K(10)+3=13 N
NETWORK → QHWZRUN

Sadece 25 anlamlı anahtar var; hepsini denemek saniyeler sürer.

Tek alfabeli yerine koyma ve frekans analizi

Her harfi alfabenin rastgele bir permütasyonuna eşlersen 26!≈4×102626! \approx 4 \times 10^{26} anahtar olur. Kaba kuvvet imkânsız, ama şifre yine kırılır: dilde harf sıklıkları sabittir (İngilizcede E, T, A en sık). Şifreli metinde en sık geçen harf büyük ihtimalle E’dir. Ders: büyük anahtar uzayı tek başına güvenlik demek değildir.

Vigenère şifresi

Bir anahtar kelime tekrarlanır ve her harf, altındaki anahtar harfi kadar kaydırılır. Aynı açık harf farklı konumlarda farklı şifrelenir, frekans dağılımı düzleşir.

Örnek: SECURE, anahtar KEY (K = 10, E = 4, Y = 24).

açık     S(18) E(4)  C(2)  U(20) R(17) E(4)
anahtar  K(10) E(4)  Y(24) K(10) E(4)  Y(24)
toplam   28    8     26    30    21    28
mod 26   2     8     0     4     21    2
şifreli  C     I     A     E     V     C

SECURE → CIAEVC. İki E harfi farklı çıktı (I ve C). Anahtar uzunluğu bulunursa (tekrar eden kalıplardan) şifre yine Caesar parçalarına bölünüp kırılır.

XOR ve tek kullanımlık şifre

Bilgisayarda harf yerine bitlerle çalışırız. XOR (⊕\oplus): bitler aynıysa 0, farklıysa 1.

P = 1011 0110
K = 0110 1101
C = 1101 1011      (P ⊕ K)
C ⊕ K = 1011 0110 = P

Tek kullanımlık şifre (one-time pad, OTP): anahtar tamamen rastgele, mesaj kadar uzun ve bir kez kullanılır. Bu koşullarda teorik olarak kırılamaz. Pratikte anahtarı dağıtmak çok zordur. Anahtar iki kez kullanılırsa C1⊕C2=P1⊕P2C_1 \oplus C_2 = P_1 \oplus P_2 olur ve güvenlik çöker.

Akış şifreleri (stream cipher) OTP’yi taklit eder: kısa bir anahtardan uzun bir sözde rastgele anahtar akışı üretir ve açık metinle XOR’lar.

Modern blok şifreler: DES ve AES

Blok şifre (block cipher) sabit boylu bir bloğu, anahtara bağlı bir permütasyonla başka bir bloğa çevirir. Turlar (rounds) boyunca yerine koyma (substitution, karıştırma) ve yer değiştirme (permutation, yayma) tekrarlanır. Amaç: açık metnin ya da anahtarın tek bir biti değişince çıktının yaklaşık yarısının değişmesi (avalanche).

DESAES
Blok64 bit128 bit
Anahtar56 bit (etkin)128 / 192 / 256 bit
Tur1610 / 12 / 14
DurumKaba kuvvetle kırıldıBugünün standardı

AES’in bir turu dört adımdır: SubBytes (bayt bayt S-kutusu ile yerine koyma), ShiftRows (satırları kaydırma), MixColumns (sütunları karıştırma) ve AddRoundKey (tur anahtarıyla XOR). Ayrıntılarını ezberlemen beklenmez; sıralamayı ve amacı bilmen yeter.

Kaba kuvvet karşılaştırması (saniyede 101210^{12} deneme):

DES      2^56  ≈ 7.2 × 10^16  →  ≈ 72 058 s  ≈ 20 saat
AES-128  2^128 ≈ 3.4 × 10^38  →  ≈ 1.1 × 10^19 yıl

Çalışma modları

Blok şifre tek bir bloğu şifreler. Uzun mesaj için bir çalışma modu (mode of operation) gerekir. Göstermek için oyuncak bir 4 bitlik şifre kullanalım: EK(x)E_K(x) = x⊕Kx \oplus K‘yı sola 1 bit döndür. K=0110K = 0110, açık metin blokları 1010, 1010, 00111010,\ 1010,\ 0011.

ECB (electronic codebook)

Her blok bağımsız: Ci=EK(Pi)C_i = E_K(P_i).

E(1010): 1010 ⊕ 0110 = 1100 → döndür → 1001
E(1010): aynı                        → 1001
E(0011): 0011 ⊕ 0110 = 0101 → döndür → 1010
ECB: 1001 1001 1010

İlk iki blok aynı, şifreli halleri de aynı. Saldırgan “bu iki blok aynı” bilgisini öğrendi. Resimlerde desen görünür kalır.

CBC (cipher block chaining)

Her blok şifrelenmeden önce bir önceki şifreli blokla XOR’lanır. İlk blok için rastgele bir başlangıç vektörü (initialization vector, IV) kullanılır: Ci=EK(Pi⊕Ci−1)C_i = E_K(P_i \oplus C_{i-1}), C0=IVC_0 = IV. IV=1001IV = 1001:

C1 = E(1010 ⊕ 1001) = E(0011) = rotl(0101) = 1010
C2 = E(1010 ⊕ 1010) = E(0000) = rotl(0110) = 1100
C3 = E(0011 ⊕ 1100) = E(1111) = rotl(1001) = 0011
CBC: 1010 1100 0011

Aynı iki açık blok artık farklı şifrelendi. Deşifre: Pi=DK(Ci)⊕Ci−1P_i = D_K(C_i) \oplus C_{i-1}. CBC şifrelemesi sıralıdır (paralel yapılamaz), deşifre paralel yapılabilir. IV gizli olmak zorunda değildir ama tahmin edilemez olmalıdır.

CTR (counter)

Blok şifre bir sayaç değerini şifreler, çıkan anahtar akışı açık metinle XOR’lanır: Ci=Pi⊕EK(nonce+i)C_i = P_i \oplus E_K(\text{nonce} + i). Blok şifre bir akış şifresine dönüşür. Sayaç 01000100‘dan başlasın:

E(0100) = rotl(0010) = 0100     C1 = 1010 ⊕ 0100 = 1110
E(0101) = rotl(0011) = 0110     C2 = 1010 ⊕ 0110 = 1100
E(0110) = rotl(0000) = 0000     C3 = 0011 ⊕ 0000 = 0011

(Oyuncak şifrede son anahtar akışı bloğu 0000 çıktı; gerçek AES’te bu ihtimal ihmal edilebilir.) CTR tamamen paraleldir ve deşifre için sadece EE gerekir. Bedeli: aynı anahtarla aynı nonce/sayaç asla tekrarlanmamalı, yoksa OTP’nin anahtar tekrarı sorununa düşersin.

TUZAK · CBC’de neyle XOR’lanır? Açık metin, bir önceki şifreli blokla XOR’lanır, önceki açık blokla değil. İlk blok IV ile XOR’lanır. Sınavda önceki açık bloğu kullanan bütün zinciri yanlış hesaplar.

İPUCU · modları bir cümleyle ayırt et. ECB: bağımsız, desen sızar. CBC: zincir, IV rastgele. CTR: sayacı şifrele ve XOR’la, nonce tekil. Modern sistemler şifreleme ile bütünlüğü birleştiren GCM gibi modlar kullanır.

Anahtar dağıtımı sorunu

Simetrik şifreleme hızlıdır, ama iki tarafın önceden aynı anahtarı paylaşması gerekir. nn kişinin her çifti ayrı anahtar isterse:

n(n−1)2 anahtarn=50⇒1225,n=100⇒4950\frac{n(n-1)}{2} \text{ anahtar} \qquad n = 50 \Rightarrow 1225, \quad n = 100 \Rightarrow 4950

Üstelik bu anahtarlar güvenli bir kanaldan dağıtılmalı. İnternette hiç tanışmadığın bir sunucuyla nasıl anahtar paylaşırsın? Cevap sonraki sayfada: açık anahtarlı kriptografi ve Diffie-Hellman. Pratikte ikisi birlikte kullanılır: açık anahtarla bir oturum anahtarı kurulur, veri hızlı simetrik şifreyle (AES) şifrelenir.

Sık yapılan hatalar

Yanlış düşünceDoğrusu
Caesar’da Z + 3 = ”]”Mod 26: Z(25) + 3 = 28 → 2 = C
Büyük anahtar uzayı = güvenli26! anahtarlı yerine koyma frekans analiziyle kırılır
Vigenère’de anahtar bir kez yazılırMesaj boyunca tekrarlanır
OTP anahtarı tekrar kullanılabilirTekrar edilirse C1⊕C2=P1⊕P2C_1 \oplus C_2 = P_1 \oplus P_2 sızar
AES-256’nın bloğu 256 bitBlok her zaman 128 bit; 256 anahtar boyu
ECB güvenli çünkü AES kullanıyorMod zayıfsa aynı bloklar aynı çıkar
CBC’de önceki açık blokla XORÖnceki şifreli blokla (ilk blokta IV)
CTR’de nonce tekrar kullanılabilirAynı anahtarla nonce tekrarı anahtar akışını tekrarlar
Algoritmayı gizlemek güvenliği artırırKerckhoffs: güvenlik sadece anahtarda
1 bit uzun anahtar biraz daha güvenliHer ek bit kaba kuvvet süresini iki katına çıkarır

Kendini test et

Sınavdaki gibi İngilizce sorular. Önce kâğıt kalemle çöz, sonra cevabı aç.

Soru 1kolay

Encrypt the word ATTACK with a Caesar (shift) cipher using key k = 7.

Cevabı göster
HAAHJR

Kural: C=(P+k) mod 26C = (P + k) \bmod 26, A = 0.

A(0) → 7 = H. T(19) → 26 mod 26 = 0 = A. T → A. A → H. C(2) → 9 = J. K(10) → 17 = R.

Sonuç: HAAHJR. T harfinde 26'yı aşınca başa sarmayı (mod 26) unutma.

Soru 2kolay

The ciphertext KHOOR was produced by a Caesar cipher with key 3. Recover the plaintext.

Cevabı göster
HELLO

Deşifre: P=(C−k) mod 26P = (C - k) \bmod 26. Her harfi 3 geri kaydır.

K → H, H → E, O → L, O → L, R → O. Sonuç HELLO.

Anahtar bilinmeseydi bile sadece 25 anlamlı anahtar olduğu için hepsi denenirdi. Caesar kaba kuvvete karşı hiç dayanıksızdır.

Soru 3orta

Encrypt PACKET with the Vigenère cipher using the keyword LOCK (A = 0).

Cevabı göster
AOEUPH

Anahtar tekrarlanır: P A C K E T altına L O C K L O yazılır. Her harf çifti toplanır, mod 26.

P(15) + L(11) = 26 → 0 = A
A(0) + O(14) = 14 = O
C(2) + C(2) = 4 = E
K(10) + K(10) = 20 = U
E(4) + L(11) = 15 = P
T(19) + O(14) = 33 → 7 = H

Sonuç AOEUPH. Aynı harf (K ve C) farklı konumlarda farklı şifrelenebilir; frekans analizini zorlaştıran budur.

Soru 4kolay

Compute the one-time pad ciphertext C = P XOR K for P = 11001010 and K = 01010011.

Cevabı göster
10011001

XOR bit bit: aynıysa 0, farklıysa 1.

P = 1 1 0 0 1 0 1 0
K = 0 1 0 1 0 0 1 1
C = 1 0 0 1 1 0 0 1

C=10011001C = 10011001. Kontrol: C⊕K=11001010=PC \oplus K = 11001010 = P. XOR iki kez uygulanınca kendini götürür, deşifre aynı işlemdir.

Soru 5orta

A toy 4-bit block cipher is E_K(x) = rotate-left-by-1(x XOR K) with K = 0110. In ECB mode, what is the ciphertext of the block 1100?

Cevabı göster
0101

Önce XOR: 1100⊕0110=10101100 \oplus 0110 = 1010.

Sola 1 bit döndür: en soldaki 1 en sağa geçer. 1010→01011010 \to 0101.

ECB'de her blok bağımsız şifrelenir, bu kadar. Aynı blok her zaman 0101 verir.

Soru 6orta

Same toy cipher (K = 0110). In CBC mode with IV = 0011, what is the first ciphertext block C1 for plaintext block P1 = 1100?

Cevabı göster
0011

CBC: C1=EK(P1⊕IV)C_1 = E_K(P_1 \oplus IV).

P1⊕IV=1100⊕0011=1111P_1 \oplus IV = 1100 \oplus 0011 = 1111.

1111⊕K=1111⊕0110=10011111 \oplus K = 1111 \oplus 0110 = 1001, sola döndür: 1001→00111001 \to 0011.

C1=0011C_1 = 0011. Bir önceki soruda aynı blok ECB'de 0101 vermişti; IV sonucu değiştirdi.

Soru 7kolay

An image is encrypted with AES, and the outline of the original picture is still visible in the ciphertext. Which mode of operation was most likely used?

  1. CBC with a random IV
  2. CTR with a unique nonce
  3. ECB
  4. GCM
Cevabı göster
C) ECB

ECB her bloğu bağımsız ve aynı anahtarla şifreler: aynı açık metin bloğu her zaman aynı şifreli bloğu verir. Görüntüde aynı renkli alanlar aynı bloklara dönüşür, şekil görünür kalır. CBC ve CTR zincirleme ya da sayaç kullandığı için aynı bloklar farklı çıkar. ECB tek bloktan uzun veride kullanılmamalı.

Soru 8orta

A cipher has a 40-bit key. An attacker can test 10^9 keys per second. How long does an exhaustive key search take in the worst case?

Cevabı göster
about 1100 s (about 18.3 minutes)

Anahtar sayısı 240=1 099 511 627 776≈1.1×10122^{40} = 1\,099\,511\,627\,776 \approx 1.1 \times 10^{12}.

1.1×1012/109≈11001.1 \times 10^{12} / 10^9 \approx 1100 s ≈18.3\approx 18.3 dakika. Ortalama yarısı kadar.

Karşılaştır: 56 bit DES saniyede 101210^{12} denemeyle yaklaşık 20 saat, 128 bit AES ise yaklaşık 101910^{19} yıl. Her ek bit süreyi ikiye katlar.

Soru 9orta

A group of 20 people wants every pair to communicate privately using symmetric encryption, with a separate key per pair. How many keys are needed?

Cevabı göster
190

Her çift için bir anahtar: (n2)=n(n−1)2=20⋅192=190\binom{n}{2} = \frac{n(n-1)}{2} = \frac{20 \cdot 19}{2} = 190.

Kişi sayısı arttıkça anahtar sayısı karesel büyür (100 kişi için 4950). Açık anahtarlı sistemde her kişi bir anahtar çifti tutar: 20 çift yeter. Anahtar dağıtımı sorunu açık anahtarlı kriptografinin ana motivasyonudur.

Soru 10kolay

What is the block size of AES?

  1. 56 bits
  2. 64 bits
  3. 128 bits
  4. 256 bits
Cevabı göster
C) 128 bits

AES'in blok boyu her zaman 128 bittir. Anahtar boyu 128, 192 ya da 256 bit olabilir (10, 12, 14 tur). 64 bit DES'in blok boyu, 56 bit DES'in etkin anahtar boyudur. "AES-256" anahtarı anlatır, bloğu değil.

Soru 11zor

Two messages are encrypted with a stream cipher (or one-time pad) using the SAME keystream K. What can an eavesdropper who sees both ciphertexts compute without knowing K?

  1. K itself, directly
  2. P1 XOR P2
  3. The hash of K
  4. Nothing useful
Cevabı göster
B) P1 XOR P2

C1⊕C2=(P1⊕K)⊕(P2⊕K)=P1⊕P2C_1 \oplus C_2 = (P_1 \oplus K) \oplus (P_2 \oplus K) = P_1 \oplus P_2. Anahtar yok oldu. Açık metinlerden birinin bir parçası tahmin edilirse ötekinin aynı parçası ve o konumdaki anahtar ortaya çıkar. Bu yüzden tek kullanımlık şifre gerçekten tek kullanılır, CTR modunda da nonce asla tekrarlanmaz.

Soru 12orta

Kerckhoffs's principle states that a cryptosystem should be secure even if:

  1. the key is published
  2. everything about the system except the key is public
  3. the attacker controls the network
  4. the algorithm is kept secret
Cevabı göster
B) everything about the system except the key is public

Kerckhoffs ilkesi: güvenlik sadece anahtarın gizliliğine dayanmalı; algoritma herkes tarafından bilinse de sistem güvenli kalmalı. Algoritmayı gizlemek (security through obscurity) tersine mühendislikle bozulur. AES'in algoritması açıktır, gücü 128 bitlik anahtardan gelir.

Doğrulama: Caesar ve Vigenère şifreleri, XOR işlemleri, oyuncak 4-bit blok şifre ile ECB/CBC/CTR izleri (CBC deşifre ile geri kontrol edildi), anahtar uzayı süreleri, 26! ve ikili anahtar sayıları node ile hesaplandı (verify/SEN2008/12.mjs). Mod ve ilke soruları kavramsal.

Deftere not kartı

Simetrik: aynı anahtar şifreler ve çözer. Kerckhoffs: sadece anahtar gizli Caesar: C = (P + k) mod 26, P = (C − k) mod 26, A = 0. 25 anahtar → kaba kuvvet Tek alfabeli yerine koyma: 26! ≈ 4×10^26 anahtar ama frekans analiziyle kırılır Vigenère: anahtar kelime tekrarlanır, harf harf topla mod 26 XOR: aynı 0, farklı 1. C = P ⊕ K, P = C ⊕ K OTP: anahtar rastgele, mesaj kadar uzun, TEK kullanım. C1 ⊕ C2 = P1 ⊕ P2 DES: 64 bit blok, 56 bit anahtar (kırıldı). 3DES geçiş AES: 128 bit blok, 128/192/256 anahtar, 10/12/14 tur Kaba kuvvet süresi = 2^bit / hız; her ek bit ×2 ECB: C_i = E(P_i) → aynı blok aynı çıktı (kullanma) CBC: C_i = E(P_i ⊕ C_{i−1}), C_0 = IV (rastgele) CTR: C_i = P_i ⊕ E(nonce + i), paralel, nonce tekrarlanmaz Simetrik ikili anahtar: n(n−1)/2 (20 kişi → 190)