Previous slide Next slide Toggle fullscreen Open presenter view
CEN429 Güvenli Programlama · Hafta 10
Sertifikalar ve Kriptografik Yöntemler
CEN429 Güvenli Programlama — Hafta 10
Dr. Öğr. Üyesi Uğur CORUH · 20.11.2026
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bugünün planı (3 saat)
Saat
Bölüm
Konu
1
1–3
Algoritma/anahtar seçimi · blok şifre kipleri/dolgu · MAC/HMAC
2
4–6
RSA/ECC (OAEP/PSS) · dijital imza · Diffie–Hellman
3
7–13
PKI · X.509 · OpenSSL ile zincir kurma · CRL/OCSP · HSM/PKCS#11 · kuantum sonrası · proje
Öğrenme çıktıları (ÖÇ.2 / ÖÇ.4): doğru algoritma, kip, dolgu ve anahtar uzunluğu seçmek · imza ve anahtar
değişiminin tuzaklarını görmek · bir sertifika zincirini doğru doğrulamak
Kriptoda hatalar genelde algoritmada değil, kullanımdadır : yanlış kip, yanlış dolgu, doğrulanmayan imza,
denetlenmeyen zincir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Önceki haftalardan gelenler
Simetrik ve asimetrik şifreleme — simetrik tek paylaşılan anahtarla hızlı çalışır; asimetrik açık/özel anahtar
çiftiyle anahtar dağıtımını kolaylaştırır ama yavaştır (Hafta 3)
AEAD — şifreleme ve bütünlüğü tek çağrıda birlikte veren kimlik doğrulamalı şifreleme (Hafta 3)
Özet, MAC ve dijital imza — özet tek yönlü parmak izidir; MAC paylaşılan anahtarla, imza açık/özel anahtar
çiftiyle mesajın değişmediğini kanıtlar (Hafta 3)
İleri gizlilik (forward secrecy) — oturum anahtarının kullanımdan sonra silinmesiyle, bugünkü anahtar sızsa
bile geçmiş oturumların çözülememesi (Hafta 3)
TLS sertifika doğrulama — istemcinin sunucu sertifikasını zincir, geçerlilik, kullanım amacı ve ad açısından
denetlemesi (Hafta 3)
Bu hafta: asimetrik matematiği ve doğru kip/dolgu (Bölüm 2, 4) · HMAC iç yapısı ve imza tuzakları (Bölüm 3, 5) ·
DH ve kimlik doğrulaması (Bölüm 6) · PKI, X.509 ve iptal (Bölüm 7–10) derinleşiyor.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bu haftanın kavramları
Her terim, gövdede ilk geçtiği yerde tanımlanır; burada yalnız nerede olduğunu işaretliyoruz.
Kavram
Nerede
Blok şifre kipleri, dolgu
Bölüm 2
MAC, HMAC
Bölüm 3
RSA, eliptik eğri (ECC)
Bölüm 4
Dijital imza
Bölüm 5
Diffie–Hellman (DH)
Bölüm 6
PKI, CA
Bölüm 7
Sertifika, X.509
Bölüm 8
OpenSSL ile zincir kurma
Bölüm 9
CRL, OCSP
Bölüm 10
HSM, PKCS#11, SoftHSM
Bölüm 11
Kuantum sonrası (PQC)
Bölüm 12
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
1. Algoritma ve anahtar seçimi
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Kısa tarihçe — anahtarlar, sertifikalar, PKI
1976–77 — Diffie–Hellman ve RSA : tanımadığınla güvenli konuşma
1988 — X.509 sertifika biçimi; kimliği bir CA imzası taşır
1995 — ticari CA'lar ve PKI ; ardından CRL ve OCSP (iptal)
2014 Heartbleed · 2015 Let's Encrypt · 2018 TLS 1.3 · 2022–24 PQC (Kyber/Dilithium)
Bugünkü kurallar (doğru kip/dolgu, zincir doğrulama, iptal) bu acı derslerden çıktı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Güncel, standart, iyi kullanılan
Üç kural:
Güncel: kırılmamış algoritma (AES, SHA-256, Ed25519).
Standart: kendi kriptonu yazma; denenmiş kütüphane.
İyi kullanılan: doğru kip, dolgu, anahtar yönetimi.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Kaçınılacaklar
MD5, SHA-1 (özet için), DES/3DES, RC4.
ECB kipi.
Kendi "şifreleme" algoritman.
Sabit/öngörülebilir IV veya anahtar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Anahtar uzunluğu
Amaç
Öneri (yaklaşık)
Simetrik
AES-128 (yeter), AES-256
RSA
≥ 2048, tercih 3072
ECC
256-bit (≈ RSA-3072)
Özet
SHA-256+
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
En zayıf halka kuralı
Bileşenleri dengeli seç.
128 bit hedefliyorsan RSA-3072 ya da ECC.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Hangi kip?
İhtiyaç
Seçim
Gizlilik + bütünlük
AES-GCM / ChaCha20-Poly1305
Yalnız hız (donanım AES yok)
ChaCha20-Poly1305
Asla
ECB
Eski sistem CBC
+ encrypt-then-MAC, tek hata
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Hangi asimetrik?
İhtiyaç
Seçim
İmza (modern)
Ed25519
Anahtar anlaşması
X25519
RSA şifreleme
RSA-OAEP (≥3072)
RSA imza
RSA-PSS
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Karar kuralı
Modern, standart, iyi kullanılan seç.
AEAD öncelikli; ECC öncelikli.
Kararı ve gerekçesini S8 'e yaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
2. Blok şifre kipleri ve dolgu
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
ECB · asla
ECB: her bloğu bağımsız şifreler.
Aynı blok → aynı şifreli çıktı → desen sızar .
Ünlü "ECB penguen" örneği.
ECB kullanma.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
ECB neden kötü — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
CBC · dikkatli
CBC: her blok bir öncekiyle zincirlenir; IV gerekir.
IV rastgele ve tekrarsız olmalı.
Tek başına bütünlük vermez → ayrı MAC şart.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
CBC + dolgu = risk
CBC dolgu gerektirir.
Yanlış dolgu işleme → dolgu kâhini (padding oracle) (birazdan).
Bu yüzden modern tercih AEAD .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
PKCS#7 dolgusu · örnek
13 baytlık "MERHABA DUNYA" metnini AES-128-CBC ile şifreleyelim (K, IV yalnız gösterim için sabit):
printf 'MERHABA DUNYA' | openssl enc -aes-128-cbc -K "$K " -iv "$IV " -out cikti.bin
xxd -p cikti.bin
Çıktı 16 bayt (32 hex karakter) — girdi 13 bayttı, demek ki 3 bayt dolgu eklendi.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
PKCS#7 dolgusu · çıktı
-nopad ile dolgunun içeriğini görelim (yalnız öğretici amaçla):
4d45 5248 4142 4120 4455 4e59 4103 0303 MERHABA DUNYA...
Son üç bayt 03 03 03 : eksik bayt sayısı (16 − 13 = 3) kadar, o sayı değerinde bayt eklenmiş — tam olarak PKCS#7 kuralı. Normal openssl enc -d bu baytları otomatik okuyup atar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
PKCS#7 · dolgu ve denetim — animasyon
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
GCM · modern tercih (AEAD)
AES-GCM: gizlilik + bütünlük birlikte.
Dolgu yok ; bir nonce (tek kullanımlık sayı) gerekir.
Nonce asla tekrar etmemeli (aynı anahtar altında).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Nonce/IV kuralı
IV/nonce benzersiz olmalı.
GCM'de nonce tekrarı felakettir (anahtar/veri sızabilir).
Sayaç ya da rastgele (yeterli uzunlukta) kullan.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Nonce tekrarı — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
ChaCha20-Poly1305
AES-GCM'e AEAD alternatifi.
Donanım AES desteği yoksa hızlı.
Aynı nonce kuralı geçerli.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Kipler karşılaştırması — animasyon
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Kipler · uç durum
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Dolgu kâhini (padding oracle) · sorun adım adım
Sunucu, CBC çözerken dolgu geçersiz ve MAC geçersiz için farklı yanıt/zaman verir.
Saldırgan şifreli metni değiştirip yanıtlara bakar.
Yanıt farkından düz metni bayt bayt çözer.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Neden oluyor?
Hata mesajı/zamanı, iç durumu sızdırıyor .
Saldırgan bunu bir kâhin (oracle) gibi kullanıyor.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Çözüm
AEAD kullan (GCM): dolgu yok, tek doğrulama.
CBC zorundaysan: encrypt-then-MAC + tek ve aynı hata.
Zamanlama farkı da sızıntıdır → sabit zamanlı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Ders
Şifreleme tek başına yetmez; bütünlük ve tutarlı hata şart.
Dolgu kâhini, "kullanım hatası"nın klasik örneğidir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bölüm 1–2 — kısa sınama
En zayıf halka kuralını bir örnekle açıklayın.
ECB neden kullanılmaz?
GCM'de nonce tekrarı neden felakettir?
Dolgu kâhinini AEAD nasıl kapatır?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bölüm 1–2 — cevaplar
Sistem en zayıf bileşeni kadar güvenli. Örn. AES-256 kullanıp anahtarı düz dosyada tutmak → anahtar en zayıf halka.
ECB aynı açık bloğu aynı şifreli bloğa çevirir → desen sızar, anlamsal güvenlik yok.
Aynı anahtar+nonce anahtar akışını tekrarlar (gizlilik çöker) ve GHASH kimlik anahtarı ele geçirilir → felaket.
AEAD önce etiketi doğrular, yanlış etiketli metni çözmeden reddeder → dolgu hatası için oracle kalmaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
3. MAC, HMAC ve bütünlük
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
HMAC neden — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Neden MAC?
Şifreleme gizliliği verir, bütünlüğü vermez .
Saldırgan şifreli metni değiştirebilir.
MAC: mesaj değişmedi ve doğru taraftan geldi.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
HMAC
Özet fonksiyonuna dayalı MAC (HMAC-SHA256).
Simetrik anahtar; iki taraf aynı anahtarı bilir.
Doğrulama sabit zamanlı karşılaştırmayla.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
HMAC-SHA-256 · gerçek çıktı
Bir ödeme talimatının HMAC'ini hesaplayalım (32 baytlık anahtar, yalnız gösterim için sabit):
printf 'tutar=100;alici=TR00' | \
openssl dgst -sha256 -mac HMAC -macopt hexkey:$ANAHTAR
SHA2-256(stdin)= a08fb115...c5f9a1
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
HMAC-SHA-256 · çığ etkisi
Aynı anahtarla, yalnız tutarı değiştirelim (100 → 900):
SHA2-256(stdin)= 8a786eac...91a46be
Tek karakterlik değişiklik (1→9), etiketin tamamen farklı çıkmasına yol açtı —
buna çığ etkisi (avalanche effect) denir. Saldırgan anahtarı bilmeden geçerli bir
yeni etiket üretemez; alıcı uyuşmazlığı yakalar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
HMAC · iç/dış özet — animasyon
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Sabit zamanlı karşılaştırma
if (memcmp (hesaplanan, gelen, 32 ) == 0 ) { }
if (CRYPTO_memcmp(hesaplanan, gelen, 32 ) == 0 ) { }
Kural: MAC/imza/parola özeti gibi gizli değerleri her zaman sabit zamanlı
karşılaştırın; memcmp/== bir zamanlama saldırısına açık kapı bırakır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Encrypt-then-MAC — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Doğru sıra · encrypt-then-MAC
1. şifrele: c = ENC(k1, m)
2. MAC'le: t = MAC(k2, c)
3. gönder: c || t
Önce şifrele, sonra şifreli metni MAC'le.
MAC geçmezse çözmeye bile kalkma .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Yanlış sıralar
MAC-then-encrypt: dolgu kâhinine açık.
Encrypt-and-MAC: MAC düz metni sızdırabilir.
Doğrusu: encrypt-then-MAC (ya da AEAD, zaten böyle yapar).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Sıra neden önemli — animasyon
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Yeniden oynatma (replay)
Saldırgan geçerli bir mesajı tekrar gönderir.
MAC geçerli (mesaj değişmedi) ama işlem tekrarlanır .
Çözüm: nonce , zaman damgası, sayaç.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
AEAD hepsini yapar
AES-GCM: şifreleme + bütünlük birlikte .
"İlişkili veri" (AAD) ile başlık/bağlamı da doğrular.
Modern tercih: ayrı MAC yerine AEAD.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bu bölümün kuralı · MAC/HMAC
Bütünlüğü HMAC ile sağlayın; düz H(K‖m) değil (uzunluk uzatma riski).
Şifreleme + MAC birleşiminde sıra önce şifrele, sonra MAC (encrypt-then-MAC) 'tir.
Etiket/imza karşılaştırması sabit zamanlı olmalı; erken çıkışlı fonksiyon kullanmayın.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
4. Asimetrik: RSA ve ECC
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Simetrik ↔ asimetrik — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
OAEP / PSS — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
RSA · iki iş
Şifreleme: açık anahtarla şifrele, gizli anahtarla çöz.
İmza: gizli anahtarla imzala, açık anahtarla doğrula.
Büyük anahtarlar (2048+).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
RSA · dolgu şart
Ham RSA güvensizdir .
Şifreleme için: OAEP dolgusu.
İmza için: PSS dolgusu.
Eski PKCS#1 v1.5: mümkünse kaçın.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Oyuncak RSA · uçtan uca — animasyon
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
OAEP vs PSS
OAEP: RSA şifreleme dolgusu.
PSS: RSA imza dolgusu.
Karıştırma: OAEP imza için değil, PSS şifreleme için değil.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
OAEP'in rastgeleliği · komut
Aynı mesajı iki kez OAEP ile şifreleyelim:
openssl pkeyutl -encrypt -pubin -inkey rsa_acik.pem -in kisa.txt -out c1.bin \
-pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256
openssl pkeyutl -encrypt -pubin -inkey rsa_acik.pem -in kisa.txt -out c2.bin \
-pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256
cmp c1.bin c2.bin && echo AYNI || echo FARKLI
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
OAEP'in rastgeleliği · sonuç
c1.bin c2.bin differ: char 1, line 1
FARKLI
Aynı anahtar, aynı düz metin, ama farklı şifreli metin — OAEP her şifrelemede yeni
bir rastgele değer karıştırır. Ham RSA (dolgusuz) deterministiktir (c = m^e mod n);
bu yüzden hiçbir zaman doğrudan şifreleme için kullanılmaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
ECC · neden?
Aynı güvenlik, daha küçük anahtar (256-bit ≈ RSA-3072).
Daha hızlı, daha az yer.
Mobil/gömülü için ideal.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Ed25519 ve X25519
Ed25519: modern imza algoritması.
X25519: modern anahtar anlaşması (DH).
Karıştırma: Ed25519 imza, X25519 anahtar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
ECDH · nokta toplama — animasyon
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
RSA-3072 ile Ed25519 · ölçüm
Her ikisi de ~128 bit güvenlik düzeyinde (bkz. Bölüm 1 tablosu):
wc -c rsa_acik.pem ed_acik.pem
wc -c belge.rsa.sig belge.ed.sig
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
RSA-3072 ile Ed25519 · sonuç
Dosya
RSA-3072
Ed25519
Açık anahtar (PEM)
636 bayt
116 bayt
İmza
384 bayt
64 bayt
Açık anahtar ~5,5 kat , imza 6 kat küçük. IoT/mobil el sıkışmalarında,
gömülü flash'ta ya da blok zincirinde bu fark birikerek büyür.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Simetrik + asimetrik birlikte
1. X25519 ile ortak sır türet
2. Ondan bir AES anahtarı çıkar (KDF)
3. AES-GCM ile veriyi şifrele
Asimetrik: anahtar taşı. Simetrik: veri şifrele.
TLS bunu yapar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bölüm 3–4 — kısa sınama
Encrypt-then-MAC neden doğru sıra?
Yeniden oynatma nasıl engellenir?
OAEP ve PSS hangisi ne için?
Ed25519 ve X25519 farkı?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bölüm 3–4 — cevaplar
Alıcı önce MAC'i doğrular, geçmezse çözmez → değiştirilmiş metin hiç işlenmez (dolgu kâhini kapanır).
Tazelik: nonce/sayaç, zaman damgası + pencere, tek-kullanımlık challenge.
OAEP = RSA şifreleme dolgusu; PSS = RSA imza dolgusu.
Ed25519 = imza (EdDSA); X25519 = anahtar değişimi (ECDH). Aynı eğri ailesi, farklı iş.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
5. Dijital imza ve tuzakları
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Dijital imza — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
İmza · ne sağlar?
Bütünlük: mesaj değişmedi.
Kimlik/inkâr edilemezlik: gizli anahtar sahibi imzaladı.
Doğrulama: açık anahtarla, herkes yapabilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
İmza · nerede kullanılır?
Yazılım/güncelleme imzalama.
Sertifikalar (CA imzası).
Belge/işlem imzalama.
TLS'te sunucu kimliği (CertificateVerify).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Tuzak 1 · dönüş değerini denetlememek
int r = EVP_DigestVerify(ctx, imza, n, veri, m);
if (r) guncellemeyi_kur();
Negatif hata değeri de "doğru" sayılır. Doğrusu: r == 1.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Tuzak 2 · sürümü imzaya katmamak
İmza yalnız içeriği kapsıyorsa, saldırgan eski ama geçerli imzalı sürümü yükleyebilir (downgrade).
İmzalı içerik sürüm numarasını da kapsamalı; eski sürüm reddedilmeli.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Tuzak 3 · yanlış anahtarla doğrulama
Doğrulama anahtarı güvenilir mi? Nereden geldi?
Saldırganın anahtarıyla doğrularsanız, onun imzası "geçerli" olur.
Anahtar sabitlenmeli ya da güvenilir zincirden gelmeli.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
İmza doğrulama · üç senaryo — animasyon
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
İmza · özet kuralı
İmza aslında özetin imzalanmasıdır.
Zayıf özet (MD5/SHA-1) → imza zayıf.
SHA-256+ kullan.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
6. Diffie–Hellman ve MITM
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
DH · ne yapar?
İki taraf, gizli anahtar paylaşmadan ortak bir sır türetir.
Ağ üzerinden anahtar anlaşması.
Modern hali: X25519.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
DH · adım adım (kavram)
Ali: a gizli, A = g^a açık gönderir
Veli: b gizli, B = g^b açık gönderir
Ortak sır: A^b = B^a = g^(ab)
Dinleyen g^a, g^b görür ama g^(ab)'yi hesaplayamaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
X25519 · iki tarafın aynı sırra ulaşması
openssl genpkey -algorithm X25519 -out alice.key
openssl genpkey -algorithm X25519 -out bob.key
openssl pkey -in alice.key -pubout -out alice.pub
openssl pkey -in bob.key -pubout -out bob.pub
openssl pkeyutl -derive -inkey alice.key -peerkey bob.pub -out alice_sir.bin
openssl pkeyutl -derive -inkey bob.key -peerkey alice.pub -out bob_sir.bin
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
X25519 · sonuç
8c53744a000c1a6f...bbc1376
8c53744a000c1a6f...bbc1376
AYNI
Alice ve Bob, birbirinin hiç görmediği özel anahtarını bilmeden, ağdan yalnız açık
anahtarları geçirerek aynı 32 baytlık sırra ulaştı. Bu ham sır doğrudan AES anahtarı
olarak kullanılmaz; önce bir KDF 'den (HKDF) geçirilip oturum anahtarları türetilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Kimliksiz DH · MITM riski
Ali ve Veli birbirinin kim olduğunu doğrulamıyorsa ...
Saldırgan araya girer : Ali ile ayrı, Veli ile ayrı DH yapar.
İkisini de dinler/değiştirir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Kimliksiz DH · MITM — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
MITM · şema
Ali ↔ [Saldırgan] ↔ Veli
iki ayrı DH; saldırgan ortada
Her iki taraf "güvenli kanal kurdum" sanır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
DH ve MITM — animasyon
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
DH/MITM · uç durum
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Çözüm · kimlikli DH
DH değerleri, kimliği bilinen bir anahtarla imzalanır .
TLS 1.3'te CertificateVerify.
Karşı taraf bu kimliği doğrular (sertifika zinciri).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
İleri gizlilik (forward secrecy)
Her oturum için yeni DH anahtarı.
Uzun vadeli anahtar sızsa bile eski oturumlar çözülemez.
Modern TLS bunu sağlar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bölüm 5–6 — kısa sınama
İmza doğrulamada if (r) neden hatalı?
Sürüm imzaya neden katılmalı?
Kimliksiz DH'ye MITM nasıl olur? Çözüm?
İleri gizlilik ne sağlar?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bölüm 5–6 — cevaplar
Doğrulama 1=başarı, 0=başarısız, <0=hata döndürür; if (r) hatayı (−1) da "doğru" sayar. r == 1 kontrol edin.
Aksi halde saldırgan eski/güvensiz sürümü aynı imzayla "geçerli" gösterir (downgrade). Sürüm imzalı veriye dahil olmalı.
Ortadaki her iki tarafla ayrı anahtar kurar. Çözüm: DH'yi kimlik doğrulamayla bağla (imzalı DH / sertifika).
Her oturum geçici (ephemeral) anahtar; uzun vadeli anahtar sızsa bile geçmiş oturumlar çözülemez.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
7. Açık anahtar altyapısı (PKI)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Sorun · kime güveneceğiz?
Bir açık anahtar gördünüz. Gerçekten o kişiye/siteye mi ait?
Kötü niyetli biri kendi anahtarını "banka" diye sunabilir.
PKI bu güven sorununu çözer.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Güven zinciri
Her seviye bir alttakini imzalar .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Zincir doğrulama — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Kök ve ara CA
Kök CA: çevrimdışı, kendini imzalar, çok korunur.
Ara CA: günlük sertifikaları çıkarır.
Kök sızarsa felaket ; bu yüzden ara CA kullanılır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Güven deposu (trust store)
İşletim sistemi/tarayıcı, güvenilen kök CA'ları taşır.
Bir zincir bu köklerden birine ulaşırsa güvenilir.
Ulaşamıyorsa → güvenilmez.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Dört soru
Bir sertifika zinciri doğrularken:
İmza geçerli mi? (her seviye)
Zincir güvenilir köke ulaşıyor mu?
Süre dolmamış mı?
Ad eşleşiyor mu (SAN)?
Dördü de evet olmalı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Soru 1 · zincir (issuer/subject)
openssl x509 -in sunucu.crt -noout -issuer -subject
openssl x509 -in ara.crt -noout -issuer -subject
openssl x509 -in kok.crt -noout -issuer -subject
issuer=CN=...Ara CA subject=CN=localhost
issuer=CN=...Kok CA subject=CN=...Ara CA
issuer=CN=...Kok CA subject=CN=...Kok CA
Zincir okunur: sunucu'nun issuer'ı = ara'nın subject'i; kök kendi kendini imzalar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Soru 2 · geçerlilik
openssl x509 -in sunucu.crt -noout -dates
openssl x509 -in sunucu.crt -noout -checkend 0
notBefore=Sep 23 2026 GMT
notAfter=Dec 22 2026 GMT
Certificate will not expire
-checkend 0: "şu an itibarıyla süresi doldu mu?" TLS istemcileri bunu her bağlantıda otomatik sorar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Soru 3 · kullanım (CA:TRUE/FALSE)
openssl x509 -in sunucu.crt -noout -ext basicConstraints,keyUsage
openssl x509 -in ara.crt -noout -ext basicConstraints,keyUsage
sunucu.crt: CA:FALSE (baska sertifika imzalayamaz)
ara.crt: CA:TRUE, pathlen:0 (yalniz uc sertifika imzalayabilir)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Soru 4 · ad (SAN)
X509v3 Subject Alternative Name:
DNS:localhost, IP Address:127.0.0.1
İstemci bağlandığı adı bu listeyle karşılaştırır — Subject'teki CN'e değil .
Bir istemci kütüphanesi bu dört soruyu sizin yerinize sorar; verify'ı kapatmak ya
da hataları yutmak, dört sorunun hiç sorulmaması anlamına gelir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
OpenSSL ile · örnek
openssl verify -CAfile kok.crt \
-untrusted ara.crt sunucu.crt
-CAfile: güvenilen kök.
-untrusted: ara sertifika(lar).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
SPKI sabitleme (pinning)
Uygulama, beklenen sunucu anahtarının özetini gömer.
Sahte ama "geçerli" sertifika bile kabul edilmez.
Yedek pin şart (anahtar değişince kilitlenmemek için).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bu bölümün kuralı · zincir doğrulama
Zincir doğrulamanın dört sorusundan (imza, süre, kullanım, ad) hiçbirini atlamayın.
verify ad denetlemez — SAN denetimi ayrıca yapılmalı.
Sunucu ara sertifikayı göndermezse, kriptografik olarak doğru zincir bile bağlanamaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
8. X.509 sertifikası
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
X.509 alanları — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
İçinde ne var?
Konu (subject): kime ait (alan adı).
Açık anahtar.
Geçerlilik: başlangıç/bitiş.
Veren (issuer): hangi CA imzaladı.
İmza.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
SAN · ad denetimi
SAN (Subject Alternative Name): sertifikanın geçerli olduğu alan adları .
Ad denetimi CN'e değil, SAN'a yapılır.
example.com için sertifika baska.com'da geçerli olmamalı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Gerçek sertifika · üst alanlar
Version: 3 (0x2)
Serial Number: 35:e2:f6:8d:...:76:e7
Signature Algorithm: ecdsa-with-SHA256
Issuer: CN=CEN429 Lab Ara CA
Validity: Sep 23 2026 – Dec 22 2026
Subject: CN=localhost
Subject Public Key Info: 256 bit, NIST CURVE: P-256
Gerçek openssl x509 -text çıktısı; her alan "dört soru"dan (bir sonraki bölüm) birinin cevabını taşır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Gerçek sertifika · uzantılar
X509v3 Basic Constraints: CA:FALSE
X509v3 Key Usage: critical, Digital Signature
X509v3 Extended Key Usage: TLS Web Server Authentication
X509v3 Subject Alternative Name:
DNS:localhost, IP Address:127.0.0.1
X509v3 Authority Key Identifier: F5:BA:39:86:...
Authority Key Identifier, sertifikayı imzalayan CA'nın parmak izidir ; zinciri
kurarken "aynı isimli ama farklı anahtarlı sahte ara CA" karışıklığını bununla önler.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
9. OpenSSL ile sertifika zinciri kurmak
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Amaç
Küçük bir zincir kuralım:
Kök CA → Ara CA → Sunucu sertifikası.
Sonra verify ile doğrulayalım ve tipik hatayı görelim.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Adım 1 · kök CA (kendini imzalar)
openssl req -x509 -newkey ed25519 \
-keyout kok.key -out kok.crt \
-subj "/CN=Ders Kok CA" -days 3650 -nodes
Kök kendini imzalar; çevrimdışı tutulur.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Adım 2 · ara CA (kök imzalar)
openssl req -newkey ed25519 -keyout ara.key \
-out ara.csr -subj "/CN=Ders Ara CA" -nodes
openssl x509 -req -in ara.csr -CA kok.crt -CAkey kok.key \
-CAcreateserial -out ara.crt -days 1825
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Adım 3 · sunucu sertifikası (ara imzalar)
openssl req -newkey ed25519 -keyout sunucu.key \
-out sunucu.csr -subj "/CN=ornek.test" -nodes
openssl x509 -req -in sunucu.csr -CA ara.crt -CAkey ara.key \
-CAcreateserial -out sunucu.crt -days 365
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Adım 4 · doğrula (eksik ara)
openssl verify -CAfile kok.crt sunucu.crt
Zincir köke ulaşamıyor: ara sertifika eksik .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Adım 5 · doğrula (ara ile)
openssl verify -CAfile kok.crt \
-untrusted ara.crt sunucu.crt
Ara sertifikayı verince zincir tamamlanır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Ders
Sunucu, ara sertifikayı da göndermeli.
Eksikse istemci "issuer bulunamadı" der.
Sahadaki en yaygın TLS yapılandırma hatası.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Zincirdeki dört soru · uygulaması
İmza: her seviye üsttekince imzalı ✓
Kök: -CAfile kok.crt güven deposu ✓
Süre: -days içinde ✓
Ad: uygulamada SAN denetimi (verify ad denetlemez!)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Zincir doğrulama · altı senaryo — animasyon
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Zincir · uç durum (süresi dolmuş)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Sertifika doğrulamayı kapatma
SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, NULL );
Bu, MITM'e kapıyı açar. "Test için" diye bırakılan bu satır sahada felakettir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Ad denetimini atlamak
Zincir geçerli ama ad doğrulanmıyorsa, saldırganın geçerli sertifikası kabul edilir.
Ana bilgisayar adı (SAN) mutlaka denetlenir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Eleştirel okuma kuralı
Bir TLS kurulum kodunu okurken sorun:
Doğrulama açık mı?
Ad denetleniyor mu?
Hata durumunda fail-closed mı?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
10. Sertifika iptali
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Sertifika iptali — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Neden iptal?
Bir sertifikanın gizli anahtarı sızarsa, süresi dolmadan iptal gerekir.
İptal edilmiş sertifika kabul edilmemeli.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
CRL
CRL: iptal edilmiş sertifikaların periyodik listesi .
Büyük olabilir, güncel olmayabilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
OCSP
OCSP: bir sertifikanın durumunu anlık sorma.
Daha güncel; ama gizlilik/hız sorunları.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
OCSP yanıtını iliştirme (stapling)
Sunucu, OCSP yanıtını kendisi getirip sertifikayla sunar.
Gizlilik + hız kazanır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
CRL iş akışı · iptal et ve üret
openssl ca -config ara.cnf -revoke sunucu.crt
openssl ca -config ara.cnf -gencrl -out ara.crl
Revoking Certificate 35E2F68D...76E7.
Database updated
Sertifika dosyası değişmez ; yalnız CA'nın defterine (index.txt) bir iptal kaydı
eklenir. -gencrl, bu kaydı CA'nın kendi anahtarıyla imzalı bir listeye dönüştürür.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
CRL ile doğrulama · sonuç
openssl verify -crl_check -CAfile kok.crt \
-untrusted ara.crt -CRLfile ara.crl sunucu.crt
error 23 at 0 depth lookup: certificate revoked
error sunucu.crt: verification failed
Sertifikanın süresi hâlâ dolmamış olsa bile CRL'de listelendiği için reddedildi —
iptal denetimi, süre denetiminden bağımsız çalışır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
CRL vs OCSP — animasyon
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
⚠️ Fail-open tuzağı
OCSP'ye ulaşılamayınca sertifikayı kabul etmek = fail-open.
Saldırgan OCSP'yi engelleyip iptal edilmiş sertifikayı geçirebilir.
Azaltma: Must-Staple , kısa ömürlü sertifikalar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bölüm 7–10 — kısa sınama
Zincir doğrulamanın dört sorusu?
Ad denetimi neye yapılır (CN mi SAN mı)?
Eksik ara sertifika neden verify'ı bozar?
Fail-open nedir, nasıl azaltılır?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bölüm 7–10 — cevaplar
(1) zincir kök'e geçerli mi, (2) süre içinde mi, (3) amaç/kısıt (CA:TRUE, KeyUsage/EKU), (4) iptal (CRL/OCSP).
SAN (Subject Alternative Name); CN artık kullanılmaz.
Zincir kök'e kurulamaz ; güven yolu tamamlanmaz → başarısız. Sunucu ara sertifikayı da göndermeli.
Fail-open: hata/erişilemezlikte "geçti" saymak. Azaltma: fail-closed , OCSP stapling / must-staple, hatayı reddet.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
11. Anahtarı donanımda saklamak
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
HSM nedir?
HSM: anahtarları saklayan/işleten özel donanım.
Anahtar HSM'in dışına çıkmaz ; "şunu imzala" dersiniz, sonuç döner.
Kurcalamaya dirençli.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
PKCS#11
Anahtar modülleriyle konuşmanın standart arayüzü .
Uygulama anahtarın değerini görmez .
HSM'ler ve yazılım benzetimleri bu arayüzü sunar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
PKCS#11 ile imzalama — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Anahtar hiç çıkmaz — animasyon
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
SoftHSM
HSM'in yazılım benzetimi ; aynı PKCS#11 arayüzü.
Geliştirme/test için; gerçek donanım koruması yok .
Üretimde gerçek HSM.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Neden donanım?
Yazılımda anahtar, beyaz kutu saldırgana açık (11. hafta).
Donanımda anahtar yalıtılmış → çok daha güçlü.
Mümkünse anahtarı yazılıma hiç koyma .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Anahtar yaşam döngüsü
Aşama
Ne yapılır
Üretim
Güçlü rastgelelik (CSPRNG)
Saklama
HSM/TEE ya da korunmuş
Kullanım
En az yetki, sabit zamanlı
Kripto-periyot
Ömür sınırı
Yenileme
Düzenli
İmha
Bellekten güvenli silme
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bu bölümün kuralı · anahtar saklama
Değerli bir anahtar üretilirken CKA_EXTRACTABLE=false açıkça ayarlanmalı; varsayılana güvenmeyin.
HSM'de anahtar hiç çıkmaz; uygulama yalnız bir tutamaç (handle) üzerinden "imzala" der.
SoftHSM test içindir; üretimde gerçek HSM/donanım koruması gerekir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
12. Kuantum sonrası kripto
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Kuantum sonrası — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Tehdit
Yeterince güçlü kuantum bilgisayar, bugünkü RSA/ECC 'yi kırabilir.
"Şimdi topla, sonra çöz" saldırısı: bugün şifreli veriyi sakla, gelecekte çöz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
PQC · yaklaşım
Kuantuma dayanıklı algoritmalar (ör. ML-KEM anahtar kapsülleme).
Standartlaşma sürüyor.
Kripto-çeviklik: algoritmayı kolay değiştirebilecek tasarım.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
PQC boyutları · komut
OpenSSL 3.5, standartlaşan PQC algoritmalarını bugün üretebilir:
openssl genpkey -algorithm ML-KEM-768 -out mlkem.pem
openssl genpkey -algorithm ML-DSA-65 -out mldsa.pem
openssl pkeyutl -sign -inkey mldsa.pem -rawin -in belge.txt -out belge.mldsa.sig
wc -c mlkem_pub.pem mldsa_pub.pem belge.mldsa.sig
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
PQC boyutları · sonuç
Algoritma
Açık anahtar
İmza
Ed25519 (klasik)
116 bayt
64 bayt
RSA-3072 (klasik)
636 bayt
384 bayt
ML-KEM-768 (PQC)
1.714 bayt
—
ML-DSA-65 (PQC)
2.770 bayt
3.309 bayt
ML-DSA-65: açık anahtar Ed25519'dan ~24 kat , imza ~52 kat büyük. TLS'te
karma (klasik + PQC) yaklaşım bu geçiş maliyetini yönetmek içindir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bugün ne yapmalı?
Kripto-çevik ol (algoritmayı sabitleme).
Uzun ömürlü sırlar için PQC'yi izle.
Panik yok; ama hazırlık.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
13. Proje: bu hafta (S8, S11)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Proje · S8/S11
[ ] Algoritma envanteri: amaç, algoritma, kip, anahtar uzunluğu, kütüphane.
[ ] Anahtar yaşam döngüsü tablosu.
[ ] TLS/sertifika doğrulaması; varsa sabitleme + yedek pin.
[ ] İmza doğrulaması (güncelleme dosyasında).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Uçtan uca: bir kripto tasarım vakası
Bir mobil uygulama:
Yerel hassas veriyi şifreliyor.
Sunucuyla güvenli konuşuyor.
Güncellemeleri doğruluyor.
Kripto tasarımını yapalım.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Yerel veri şifreleme
AES-256-GCM (AEAD): gizlilik + bütünlük.
Nonce sayaç/rastgele, tekrarsız .
Anahtar TEE/HSM'de; yoksa whitebox (11).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Sunucu iletişimi
TLS 1.3 : X25519 anahtar anlaşması + AEAD.
Sertifika zinciri doğrulama + (varsa) SPKI sabitleme + yedek pin.
Fail-open değil.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Güncelleme doğrulama
Ed25519 imza; verify == 1.
İmzalı içerik sürümü kapsar; downgrade reddi.
Doğrulama anahtarı sabit/gömülü (bütünlükle korunur).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Anahtar envanteri (S8)
Anahtar
Amaç
Alg/uzunluk
Saklama
Veri anahtarı
Yerel şifreleme
AES-256
TEE/whitebox
Oturum anahtarı
TLS
X25519 türevi
Bellek, kısa ömür
İmza doğrulama
Güncelleme
Ed25519 açık
Gömülü
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Klasik kripto hataları — özet
Hata
Bölüm
Doğrusu
Kendi kriptonu yazmak
1
Denenmiş kütüphane, standart algoritma
ECB kipi
2
AEAD (GCM / ChaCha20-Poly1305)
IV/nonce tekrarı
2
Benzersiz, tekrarsız nonce
Şifreleme var, bütünlük yok
3
AEAD ya da encrypt-then-MAC
Ham RSA / yanlış dolgu
4
OAEP (şifre), PSS (imza)
Zayıf özet
5
SHA-256+
İmza dönüşünü denetlememek
5
== 1 ve sürüm kapsanır
Zincir/ad denetlememek
7
Dört soru + SAN denetimi
Fail-open iptal
10
Must-Staple, kısa ömür
Anahtarı düz gömmek
11
HSM/TEE; yoksa whitebox + katman (11. hafta)
On hatanın hepsi bu destede işlendi; burada tek bakışta toparlıyoruz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Çözümlü kendini sınama
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Soru 1
RSA-2048 + AES-256 sisteminin güvenlik düzeyi?
Cevap: ~112 bit (en zayıf halka RSA-2048). 128 bit için RSA-3072 ya da ECC.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Soru 2
"Dolgu geçersiz" ve "MAC geçersiz" ayrı iletiler: risk?
Cevap: Dolgu kâhini; saldırgan yanıtlara bakıp mesajı çözebilir. Tek ve aynı hata; tercihen AEAD.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Soru 3
if (EVP_DigestVerify(...)) neden hatalı?
Cevap: Negatif hata değeri de doğru sayılır; denetim == 1 olmalı. Ayrıca imzalı içerik sürümü kapsamalı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Soru 4
verify ara sertifika olmadan neden başarısız?
Cevap: Zincir köke ulaşamaz; ara sertifika eksik. Sahada sunucu ara sertifikayı göndermiyordur.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Soru 5
openssl verify komutuna hem doğru hem alakasız bir ara sertifika verildiğinde ne olur?
Cevap: OpenSSL zinciri kurabildiği herhangi bir geçerli yoldan kurar (ör. doğrudan köke); alakasız sertifika
yalnızca kullanılmayan bir aday olarak kalır, doğrulama yine de başarılı olabilir. Bu kriptografik değil
operasyonel bir durumdur.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Soru 6
ECDSA'da aynı rastgele değerin iki imzada kullanılması neden felakettir?
Cevap: İki imzadan özel anahtar hesaplanabilir. Ed25519 ya da deterministik ECDSA (RFC 6979) bu riski ortadan
kaldırır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Soru 7
Kök CA neden çevrimdışı tutulur ve ara CA neden vardır?
Cevap: Kök anahtarın ele geçirilmesi bütün zinciri çökertir ve kökü güven depolarından çıkarmak yıllar sürer.
Günlük işi ara CA yapar; ele geçirilirse yalnız o iptal edilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Soru 8
Anahtarı neden yazılıma koymamalı? Alternatif?
Cevap: Beyaz kutu saldırgan yazılımdaki anahtarı çıkarabilir. Alternatif: HSM/TEE (PKCS#11); yoksa whitebox + katman (11. hafta).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Sözlük
Terim
Anlam
AEAD
Şifreleme + bütünlük birlikte
Encrypt-then-MAC
Doğru sıra
OAEP/PSS
RSA şifre/imza dolgusu
Ed25519/X25519
İmza / anahtar anlaşması
SAN
Sertifika ad denetimi
CRL/OCSP
İptal listesi / anlık sorgu
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Sözlük (ek)
Terim
Anlam
Nonce
Tek kullanımlık sayı
KDF
Anahtar türetme fonksiyonu
İleri gizlilik
Eski oturumlar sonra çözülemez
Trust store
Güvenilen kök CA'lar
Kripto-periyot
Anahtar ömrü
Kripto-çeviklik
Algoritmayı kolay değiştirme
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 10
Bir sonraki hafta
11. hafta — Whitebox kriptografi
Bu hafta anahtarı korumanın "donanıma emanet et" yolunu (HSM, PKCS#11, CKA_EXTRACTABLE=false, Bölüm 11) gördük.
11. hafta aynı soruyu donanım yokken sorar: bir anahtar, hiçbir HSM'e erişimi olmayan, tamamen yazılımdan ibaret
bir uygulamanın içinde nasıl korunur? Tablo tabanlı whitebox AES ve ona karşı geliştirilen saldırılar (BGE, DCA,
DFA), bu haftaki "anahtar hiç açığa çıkmasın" ilkesinin yazılım tarafındaki karşılığıdır.
Bu haftanın özeti: Kriptoda güvenlik doğru algoritmadan çok doğru kullanımdadır — AEAD, doğru dolgu,
doğrulanan imza, denetlenen zincir, iyi yönetilen anahtar. Kriptoyu "açık/kapalı" değil, doğru kullanılıp
kullanılmadığıyla değerlendirin.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
Konuşma notu: Bu hafta kriptografinin yapı taşlarını ve PKI'yi uçtan uca kuruyoruz: kipler, MAC, RSA ve eliptik eğriler, imza, sertifika zinciri, iptal ve anahtar saklama.
Konuşma notu: Bu hafta kriptonun doğru kullanımı ve PKI. Öğrenciler 3. haftada girişi gördü; burada sıfırdan hatırlatıp derinleştiriyoruz. Vurgu: doğru algoritma değil, doğru KULLANIM.
Konuşma notu: dolgu eklenmesi + üç denetim (uzunluk, son bayt aralığı, her dolgu baytı). Hangi bozulma
hangi denetimde durur.
Konuşma notu: Aynı mesaj, dört kip. ECB'de desen sızar (aynı bayt = aynı çıktı). CBC'de bir bit çevirmek
bu bloğu ÇÖP yapar, bir SONRAKİ bloğu aynı bitte çevirir. CTR'de bir bit çevirmek TAM OLARAK bir bit değiştirir.
GCM benzeri modda kurcalama etiket uyuşmazlığıyla REDDEDİLİR.
Konuşma notu: GCM'in fail-closed davranışı — hiç plaintext dönmüyor, tag tutmuyorsa.
Konuşma notu: Sonra MAC/HMAC ve asimetrik.
Konuşma notu: K' xor ipad -> iç özet (mesajla); K' xor opad -> dış özet (iç özetle) = etiket. Anahtar
kısa/uzun/tam blok durumlarını karşılaştırın.
Konuşma notu: aynı kurcalama, iki sıra. EtM her zaman AYNI hatayla (MAC) reddeder. MtE, bozulmanın türüne
göre İKİ FARKLI hata (dolgu / MAC) verebilir — dolgu kâhini şekli budur.
Konuşma notu: p=61, q=53, e=17 klasik örneği. n, phi, d hesabı; encrypt/decrypt/sign/verify aynı üs alma
işlemi, yalnız üs değişiyor. Kurcalanmış imza ve yanlış anahtarla doğrulama neden başarısız.
Konuşma notu: X25519/Ed25519 içinde üs alma yerine EĞRİ ÜZERİNDE NOKTA TOPLAMA var. Aynı DH fikri, farklı
matematik. Mallory araya girince yine iki farklı anahtar.
Konuşma notu: Sonra dijital imza tuzakları ve DH.
Konuşma notu: doğru imza kabul; belge imzadan sonra kurcalanınca red; saldırganın kendi anahtarıyla
imzaladığı mesaj GERÇEK açık anahtarla doğrulanınca red.
Konuşma notu: p=23, g=5 klasik örneği. Önce dürüst değişim (Alice/Bob aynı anahtar). Sonra Mallory araya
girince: Alice bir anahtar, Bob BAŞKA bir anahtar — ikisi de aslında Mallory ile konuşuyor.
Konuşma notu: Sonra PKI, X.509, zincir, iptal.
Konuşma notu: eksik ara, süresi dolmuş, yanlış kök, CA:FALSE imzalayıcı, yanlış ad, tam zincir — hepsi
aynı dört sorunun cevabı.
Konuşma notu: OCSP her zaman ANLIK. CRL önbelleklenebilir ama BAYATLAYABİLİR — nextUpdate geçince
"iyi" değil "bayat" demeli. Uç durumda bayat bir CRL iptali GÖSTERMEZ.
Konuşma notu: Sonra HSM, PKCS#11, PQC, proje.
Konuşma notu: generate_keypair() yalnız bir KULP döndürür. sign(kulp, veri) imzayı HSM İÇİNDE hesaplar.
Bilinmeyen/yok edilmiş kulpla imzalama reddedilir; bir kulpla imzalanan başka kulpla doğrulanmaz.