Açık anahtar, özet, MAC, imza, PKI ve TLS
RSA ve Diffie-Hellman küçük sayılarla elle, SHA-256 ve doğum günü sınırı, MAC/HMAC, dijital imza, sertifika zinciri ve TLS el sıkışması. Sınavın RSA ve DH hesap soruları bu sayfada.
Önceki sayfa simetrik şifrelemenin büyük sorununu bıraktı: anahtarı nasıl paylaşacağız? Bu sayfa cevabı veriyor ve güvenli bir internet bağlantısını oluşturan bütün parçaları birleştiriyor. Sınavda neredeyse kesin bir RSA ya da Diffie-Hellman hesabı gelir; ayrıca “hangi anahtar kullanılır?” ve “hangi mekanizma ne sağlar?” soruları. Altın kurallar:
- Gizlilik için alıcının açık anahtarı, imza için gönderenin özel anahtarı.
- Modüler üs alırken her çarpımdan sonra mod al. Sayılar küçük kalır.
- RSA’da , ile aralarında asal olmalı. Değilse yoktur.
- Hash anahtarsızdır, MAC ortak anahtarlıdır, imza özel anahtarlıdır. İnkâr edilemezliği sadece imza verir.
- Bir sertifikayı onu imzalayanın açık anahtarıyla doğrularsın.
Açık anahtarlı kriptografi
Açık anahtarlı (public-key, asimetrik) sistemde herkesin bir anahtar çifti vardır: açık anahtar (public key) herkese dağıtılır, özel anahtar (private key) sahibinde kalır. Biriyle yapılan işlemi sadece öbürü geri alabilir. Güvenlik, bir yönde kolay ama geri yönde çok zor olan matematik problemlerine dayanır: büyük sayıyı çarpanlarına ayırma (RSA) ve ayrık logaritma (Diffie-Hellman).
Asimetrik işlemler simetrikten yüzlerce kat yavaştır. Bu yüzden pratikte hibrit kullanılır: açık anahtarla oturum anahtarı kurulur ya da imza atılır, veri AES ile şifrelenir.
RSA
Anahtar üretimi:
- İki asal seç: , .
- ve .
- olan bir seç.
- , yani .
- Açık anahtar , özel anahtar .
Şifreleme , deşifre ().
Çözümlü örnek. , .
n = 13 × 17 = 221
φ(n) = 12 × 16 = 192
e = 3 olmaz (3, 192'yi böler); e = 5 seç (gcd(5,192) = 1)
d : 192 = 38·5 + 2, 5 = 2·2 + 1
1 = 5 − 2·2 = 5 − 2·(192 − 38·5) = 77·5 − 2·192
d = 77 kontrol: 5 × 77 = 385 = 2·192 + 1
Şifrele : , adım adım:
42^1 = 42
42^2 = 1764 mod 221 = 217
42^3 = 217·42 = 9114 mod 221 = 53
42^4 = 53·42 = 2226 mod 221 = 16
42^5 = 16·42 = 672 mod 221 = 9 → c = 9
Çöz . 77 çarpma yapmak yerine kare-çarp (square-and-multiply) kullan: .
9^1 = 9 9^2 = 81 9^4 = 81^2 mod 221 = 152
9^8 = 152^2 mod 221 = 120 9^16 = 35 9^32 = 120 9^64 = 35
9^77 = 9^1 · 9^4 · 9^8 · 9^64
= 9 · 152 = 1368 mod 221 = 42
42 · 120 = 5040 mod 221 = 178
178 · 35 = 6230 mod 221 = 42 → m = 42
Mesaj geri geldi. Saldırgan ‘i çarpanlarına ayırabilirse ‘yi ve ‘yi bulur. Gerçek RSA’da 2048 bit ve üstüdür; çarpanlarına ayırmak bugünkü bilgisayarlarla pratikte imkânsızdır.
TUZAK · ‘yi ‘ye göre hesaplamak. Ters, ‘ye göre alınır: . ile hesaplanan yanlış çıkar. Şifreleme ve deşifre ise ile yapılır.
Diffie-Hellman anahtar değişimi
İki taraf, hiç gizli bilgi paylaşmadan, açık bir kanal üzerinden ortak bir gizli anahtar üretir. Herkese açık: bir asal ve bir üreteç . Alice gizli , Bob gizli seçer.
Çözümlü örnek. , , , .
A = 2^6 mod 29 = 64 mod 29 = 6
B = 2^11 mod 29 = 2048 mod 29 = 18
Alice: K = 18^6 mod 29. 18^2 = 324 mod 29 = 5, 18^4 = 25, 18^6 = 25·5 = 125 mod 29 = 9
Bob: K = 6^11 mod 29. 6^2 = 7, 6^4 = 20, 6^8 = 23, 6^11 = 23·7·6 = 966 mod 29 = 9
İkisi de buldu. Dinleyen sadece 29, 2, 6 ve 18’i görür; ‘yı ‘dan bulmak ayrık logaritma problemidir.
TUZAK · DH kimlik doğrulamaz. Ortadaki adam her iki tarafla ayrı bir DH yapar. Bu yüzden gerçek protokollerde DH değerleri imzalanır (TLS’te sunucu sertifikası ve CertificateVerify).
Özet (hash) fonksiyonları
Kriptografik özet fonksiyonu (hash function) her boyda girdiyi sabit boylu bir çıktıya çevirir. SHA-256 256 bit, yani 64 onaltılık karakter üretir. Üç güvenlik özelliği:
| Özellik | Anlamı |
|---|---|
| Ön görüntü direnci (preimage resistance) | verilince olan bulunamaz |
| İkinci ön görüntü direnci | verilince olan başka bulunamaz |
| Çakışma direnci (collision resistance) | olan herhangi bir çift bulunamaz |
SHA-256("abc") = ba7816bf8f01cfea414140de5dae2223 b00361a396177a9cb410ff61f20015ad
SHA-256("SEN2008") = 7f0f2c908360e1f1...
SHA-256("SEN2009") = 8ef7e4e5e6c5c0bd... (256 bitin 127'si farklı)
Tek karakter değişince bitlerin yaklaşık yarısı değişir (avalanche). Doğum günü saldırısı: bitlik özette çakışma yaklaşık denemede bulunur. SHA-256 için . MD5 ve SHA-1’de pratik çakışmalar bulundu, yeni sistemlerde kullanılmaz.
MAC ve HMAC
Düz hash bütünlüğü korumaz: saldırgan mesajı değiştirip özeti yeniden hesaplar. Mesaj kimlik doğrulama kodu (message authentication code, MAC) ortak bir gizli anahtar kullanır: . Anahtarı bilmeyen geçerli etiket üretemez. En yaygın yapı HMAC:
HMAC-SHA256("bau-key", "pay 100") = 0bf39f2a443f4059...
HMAC-SHA256("bau-key", "pay 900") = 5ab3cabd5e34bc43...
MAC bütünlük ve kaynak doğrulama sağlar, ama inkâr edilemezlik sağlamaz: anahtar iki tarafta da var.
Dijital imza
Gönderen mesajın özetini özel anahtarıyla imzalar; herkes açık anahtarla doğrular. RSA ile: , doğrulama .
Oyuncak örnek (, , ), özet :
s = 30^77 mod 221 = 166
doğrula: 166^2 = 152, 166^3 = 38, 166^4 = 120, 166^5 = 30 (mod 221) → 30 = h, geçerli
| Hash | MAC | Dijital imza | |
|---|---|---|---|
| Anahtar | yok | ortak gizli | özel / açık |
| Bütünlük | kazaya karşı | evet | evet |
| Kaynak doğrulama | hayır | evet | evet |
| İnkâr edilemezlik | hayır | hayır | evet |
Sertifikalar ve PKI
Açık anahtarın gerçekten iddia edilen kişiye ait olduğunu nereden bileceksin? Sertifika (X.509 certificate) bir kimliği (alan adı) bir açık anahtara bağlar ve bir sertifika otoritesi (certificate authority, CA) tarafından imzalanır. İçinde: konu (subject), açık anahtar, düzenleyen (issuer), geçerlilik tarihleri, seri numarası ve CA’nın imzası.
Güven zinciri (chain of trust): kök CA (tarayıcının güven deposunda) → ara CA → sunucu (yaprak) sertifikası. Her sertifika, kendisini düzenleyenin açık anahtarıyla doğrulanır; zincir güvenilen bir köke ulaşmalıdır. Bütün bu yapıya açık anahtar altyapısı (public key infrastructure, PKI) denir. Özel anahtarı çalınan sertifika iptal edilir (CRL, OCSP).
TLS el sıkışması
TLS, TCP üzerinde gizlilik, bütünlük ve sunucu kimlik doğrulaması sağlar (HTTPS = HTTP + TLS). TLS 1.3 el sıkışması bir tur gidiş-dönüşte biter:
İstemci → ClientHello: desteklenen sürümler, şifre takımları, rastgele değer, (EC)DHE key share
Sunucu → ServerHello: seçilen takım, kendi key share
(bundan sonrası el sıkışma anahtarlarıyla şifreli)
Certificate sunucu sertifika zinciri
CertificateVerify el sıkışma özetinin sunucu özel anahtarıyla imzası
Finished el sıkışmanın tamamı üzerine MAC
İstemci → Finished
Her iki yön: uygulama verisi AES-GCM (ya da ChaCha20-Poly1305) ile
Parçaların görevi: (EC)DHE ortak anahtarı üretir, sertifika ve CertificateVerify sunucunun kimliğini kanıtlar ve MITM’i engeller, Finished mesajları el sıkışmanın değiştirilmediğini doğrular, AES-GCM veriyi şifreler ve bütünlüğünü korur. Her oturumda yeni DH anahtarı kullanıldığı için sunucunun özel anahtarı ileride çalınsa bile eski kayıtlar çözülemez (forward secrecy). TLS 1.2’de RSA ile anahtar taşıma seçeneği vardı ve bu özellik yoktu; 1.3 bunu kaldırdı.
Sık yapılan hatalar
| Yanlış düşünce | Doğrusu |
|---|---|
| İmza, alıcının açık anahtarıyla atılır | Gönderenin özel anahtarıyla atılır |
| Gizli mesaj, gönderenin özel anahtarıyla şifrelenir | Alıcının açık anahtarıyla |
| Her geçerli | şart |
| Önce ‘yi tam hesapla, sonra mod al | Her çarpımdan sonra mod al |
| DH ortadaki adama dayanıklı | Kimlik doğrulamasız DH, MITM’e açık |
| Hash mesajı korur | Anahtarsız hash yeniden hesaplanır; MAC ya da imza gerekir |
| MAC inkâr edilemezlik sağlar | Ortak anahtar yüzünden sağlamaz |
| 128 bit özette çakışma deneme ister | Doğum günü: yaklaşık |
| Sertifika, sunucunun kendi anahtarıyla doğrulanır | Düzenleyen CA’nın açık anahtarıyla |
Kendini test et
Sınavdaki gibi İngilizce sorular. Önce kâğıt kalemle çöz, sonra cevabı aç.
RSA key generation with p = 7, q = 19 and public exponent e = 5. Find n, φ(n) and the private exponent d.
Cevabı göster
.
.
, olan sayı. Genişletilmiş Öklid: , , . Geri yerleştirince , yani .
Kontrol: .
Using the RSA public key (e, n) = (5, 133), encrypt the message m = 10.
Cevabı göster
. Her adımda mod al, sayı büyümesin:
, , , , .
. Deşifre verir (node ile doğrulandı).
RSA with p = 11, q = 23 and e = 3. Compute the private exponent d.
Cevabı göster
. , yani geçerli.
. olduğundan , yani .
Kontrol: .
For RSA with p = 13 and q = 17, why can e = 3 NOT be used as the public exponent?
- 3 is larger than p − 1
- 3 divides φ(n) = 192, so e has no inverse mod φ(n)
- 3 is not prime
- e must always equal 65537
Cevabı göster
. olduğu için denkleminin çözümü yoktur; bulunamaz. Kural: , ile aralarında asal olmalı. Bu yüzden bu örnekte seçilir ().
Diffie-Hellman with public p = 31 and g = 3. Alice picks a = 5, Bob picks b = 8. Compute A, B and the shared key K.
Cevabı göster
.
: , .
Alice: . , , .
Bob hesaplar ve aynı 25'i bulur. Ağda sadece 31, 3, 26 ve 20 görünür; 25 hiç gönderilmez.
Plain (unauthenticated) Diffie-Hellman is vulnerable mainly to which attack?
- Brute-forcing the prime p
- A man-in-the-middle who runs a separate exchange with each side
- Frequency analysis
- Replay of the shared key
Cevabı göster
DH, karşı tarafın kim olduğunu doğrulamaz. Mallory, Alice ile bir anahtar, Bob ile başka bir anahtar kurar ve aradaki trafiği çözüp yeniden şifreler. İki taraf da güvenli sandığı bir kanal görür. Çözüm: DH değerlerini imzalamak ya da sertifikayla doğrulamak. TLS'te sunucu, el sıkışmayı sertifikasındaki anahtarla imzalar.
A hash function produces 64-bit outputs. Roughly how many random inputs must be hashed before a collision becomes likely (birthday bound)?
Cevabı göster
Doğum günü sınırı: bitlik çıktıda çakışma yaklaşık denemede beklenir. .
Bu, günümüz donanımında kolay; 64 bit özet güvensizdir. SHA-256 için sınır olur. Ön görüntü (preimage) bulmak ise ister; çakışma her zaman daha ucuzdur.
Alice signs a message with her digital signature. Which key does Bob use to verify the signature?
- Bob's private key
- Bob's public key
- Alice's private key
- Alice's public key
Cevabı göster
İmza gönderenin özel anahtarıyla atılır, herkesin bildiği açık anahtarıyla doğrulanır. Şifrelemede tersi: Bob'a gizli mesaj yollamak için Bob'un açık anahtarıyla şifrelenir, Bob kendi özel anahtarıyla çözer. Kısaca: gizlilik alıcının anahtarıyla, imza gönderenin anahtarıyla.
Toy RSA signature with n = 133, private d = 65, public e = 5. The message hash is h = 12. Compute the signature s and show that it verifies.
Cevabı göster
İmza: (kare-çarp ile, node ile doğrulandı).
Doğrulama: hesaplanır ve özetle karşılaştırılır.
, , , .
: imza geçerli. Bir bit değişen mesajın özeti farklı olur ve doğrulama başarısız olur.
Which mechanism provides non-repudiation, so that the sender cannot later deny having sent the message?
- HMAC with a shared secret key
- SHA-256 hash of the message
- Digital signature with the sender's private key
- AES encryption in CTR mode
Cevabı göster
HMAC anahtarı iki tarafta da var; alıcı da aynı etiketi üretebilir, bu yüzden üçüncü kişiye "bunu o gönderdi" kanıtlanamaz. Düz hash anahtarsızdır, herkes yeniden hesaplar. AES gizlilik sağlar, kimlik kanıtlamaz. Özel anahtar sadece gönderende olduğu için imza inkâr edilemezlik sağlar.
A browser trusts root CA R. The server sends its certificate S, signed by intermediate CA I, and I's certificate, signed by R. To check the signature on S, which public key does the browser use?
- The server's own public key in S
- The public key of intermediate CA I
- The public key of root CA R
- The browser's private key
Cevabı göster
Bir sertifikanın imzası onu düzenleyenin (issuer) özel anahtarıyla atılır, bu yüzden düzenleyenin açık anahtarıyla doğrulanır. S'yi I imzaladı: I'nin açık anahtarı kullanılır. Sonra I'nin sertifikası R'nin açık anahtarıyla doğrulanır. R tarayıcının güven deposunda olduğu için zincir güvenilir köke bağlanır. Ayrıca alan adı, geçerlilik tarihi ve iptal durumu da kontrol edilir.
In a TLS 1.3 handshake, what is the main purpose of the server's CertificateVerify message?
- To send the session key encrypted with RSA
- To prove the server holds the private key matching its certificate by signing the handshake transcript
- To compress the application data
- To choose the TCP port
Cevabı göster
Sertifika herkese açıktır, bir saldırgan da aynı sertifikayı gönderebilir. CertificateVerify'da sunucu, o ana kadarki el sıkışma mesajlarının özetini özel anahtarıyla imzalar. Bu hem sunucunun gerçekten anahtar sahibi olduğunu kanıtlar hem de (EC)DHE değerlerini doğrular, MITM'i engeller. TLS 1.3'te oturum anahtarı RSA ile gönderilmez, (EC)DHE ile türetilir.
Doğrulama: RSA anahtarları (modüler ters genişletilmiş Öklid ile), şifreleme/deşifre, kare-çarp izi, oyuncak imzalar ve Diffie-Hellman değerleri BigInt modüler üs ile; g'nin mod p mertebesi döngüyle; SHA-256 ve HMAC-SHA256 değerleri node:crypto ile hesaplandı (verify/SEN2008/12.mjs). PKI ve TLS soruları kavramsal.