Güvenli Protokol Tasarımının İlkeleri
Bilinen saldırılara direnen protokoller tasarlamak için Abadi-Needham ilkelerini, tazeliği ve kimlik doğrulama hedeflerini uygulayın.
Güvenli Protokol Tasarımının İlkeleri, CoddyKit'te ücretsiz bir Cryptology Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cryptology Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cryptology Academy kursu toplamda 4 dersten oluşur.
Dolev-Yao Saldırgan Modeli
Güvenli protokol tasarımı, ağı tamamen kontrol eden bir saldırganın varlığını varsayar. Dolev-Yao modeli (1983) şunları belirtir: Saldırgan, iletimdeki herhangi bir iletiyi ele geçirebilir, okuyabilir, geciktirebilir, yeniden oynatabilir, silebilir ve değiştirebilir. Saldırgan, dürüst tarafların gönderdiği iletilerden ayırt edilemeyen iletiler oluşturabilir. Saldırgan, bilinen ileti bileşenlerinden yeni iletiler oluşturabilir. Saldırgan, kriptografik temel yapıtaşlarını kıramaz (anahtar olmadan şifre çözemez, sahte imza üretemez). Kritik olarak saldırgan, hesaplama açısından sınırlıdır — polinom zamanda çalışır — ancak tüm iletişim kanallarını kontrol eder. Protokol güvenliği, yalnızca temel yapıtaşlarının hesaplama zorluğuna dayanarak böylesine güçlü bir saldırgana karşı bile kimlik doğrulama ve gizlilik hedeflerine ulaşılması anlamına gelir.
Abadi-Needham İlkeleri
Abadi ve Needham (1994), pratik protokol tasarımı derslerini bir dizi ilkede özetlemiştir. (1) Her ileti ne anlama geldiğini belirtmelidir: Bir iletinin yorumu bağlama bağlı olmamalı, kendi içinde yeterli olmalıdır. (2) Bir güvenlik öznesinin eylemde bulunması için gereken koşullar protokolde açıkça belirtilmelidir. (3) Bir güvenlik öznesinin kimliği önemliyse iletide açıkça belirtilmelidir. (4) Şifrelemenin neden kullanıldığı açık olmalıdır: Şifreleme gizlilik, imzalama ise kimlik doğrulama sağlar — şifrelemeyi imzalamanın yerine kullanmayın. (5) Bir ileti, gizliliğinin gerekli olduğu protokol katmanında şifrelenmelidir. Bu ilkeler, NS türü birçok kusurun önlenmesini sağlamıştır.
Güncellik: Tek Kullanımlık Değerler ve Zaman Damgaları
Yeniden oynatma saldırıları, en yaygın protokol güvenlik açıkları arasındadır. Güncellik mekanizmaları, alınan bir iletinin eski bir oturumdan yeniden oynatılmadığını, yakın zamanda oluşturulduğunu güvence altına alır. İki yaklaşım vardır: (1) Tek kullanımlık değerler (Bir Kez Kullanılan Sayı, ONCE) — alıcının rastgele bir değer gönderdiği ve yanıtın bu değeri geri içermesini beklediği bir meydan okuma-yanıt alışverişidir. Yanıt, tek kullanımlık değeri şifrelenmiş veya imzalanmış biçimde içermelidir; böylece eski bir kayıt meydan okumayı karşılayamaz. (2) Zaman damgaları — her iki taraf da geçerli zamanı ekler; güncelliğini yitirmiş zaman damgasına sahip bir ileti reddedilir. Zaman damgaları, saatlerin eşzamanlı olmasını gerektirir (Kerberos 5 dakikalık sapmaya izin verir). Saat eşzamanlamasının mümkün olmadığı durumlarda tek kullanımlık değerler tercih edilir; zaman damgaları durum bilgisi tutmadan doğrulamayı kolaylaştırır.
Anahtar Ayrımı: Farklı Amaçlar için Farklı Anahtarlar
Aynı kriptografik anahtarın birden çok amaçla kullanılması tehlikeli etkileşimler oluşturur. Bir K anahtarı hem şifreleme hem de kimlik doğrulama için kullanılırsa saldırgan, bilgi çıkarmak amacıyla özel hazırlanmış şifreli metinleri kimlik doğrulama mekanizmasına gönderebilir. TLS 1.3, türetilen her anahtar için farklı etiketler kullanan HKDF-Expand-Label aracılığıyla bunu titizlikle önler: "c hs traffic" (istemci el sıkışması), "s hs traffic" (sunucu el sıkışması), "c ap traffic" (istemci uygulaması). El sıkışma anahtarı ele geçirilse bile farklı bir HKDF dalından türetilen uygulama anahtarları güvenli kalır. Protokol tasarımları, her anahtarı birden çok amaçla kullanma risklerine karşı denetlemeli ve farklı amaçlar için ayrı anahtarlar türetmelidir.
Kimlik Doğrulamayı Oturumlara Bağlama
Kimlik doğrulama kimlik bilgileri, kullanıldıkları belirli oturuma bağlanmalıdır. Bu bağlama olmadan, bir oturumda elde edilen kimlik bilgileri başka bir oturumda yeniden oynatılabilir. Teknikler: (1) İmzalanan veya MAC ile korunan verilere oturum tanımlayıcılarını dahil edin. (2) DH protokol dökümünü imzaya dahil edin (STS yaklaşımı). (3) Kimlik üzerinde bir MAC oluşturmak için HKDF ile türetilen oturum anahtarını kullanın (SIGMA yaklaşımı). TLS 1.3 Bitirme iletisi: MAC(server_finished_key, transcript_hash) — MAC eksiksiz protokol dökümünü kapsar; bu nedenle farklı bir oturumdaki Bitirme iletisinin yeniden oynatılması başarısız olur. Bu bağlama, erken Kerberos ve NS türevlerinde bulunan oturumlar arası saldırıları önler.
En Az Ayrıcalık ve Asgari Bilgi Açıklama
Protokoller, işlevleri için gerekli olan en az bilgiyi açıklamalıdır. Kimlikleri yalnızca bunları bilmesi gereken kişilere açıklayın. Gerekli olmadıkça sertifika seri numaralarını veya oturumları kimliklerle ilişkilendirmeye yarayan tanımlayıcıları dahil etmeyin. TLS 1.3, sunucu sertifikasını şifreler; TLS 1.2'de ise sertifika düz metin olarak iletilir. Bu, pasif dinleyicinin elde edebileceği bilgiyi azaltır. ESNI (Şifrelenmiş SNI; artık ECH — Şifrelenmiş İstemci Merhabası), istemcinin hangi sunucuya bağlandığını gizlemek için sunucu adı göstergesini şifreler. Asgari bilgi açıklama, belirteç tasarımının da bir ilkesidir: JWT talepleri, eksiksiz kimlik kayıtlarını değil, yalnızca yetkilendirme için gereken bilgileri içermelidir.
Sürüm Düşürme Saldırılarına Karşı Savunma
Sürüm pazarlığı yaygın bir saldırı yüzeyidir: Bir saldırgan, her iki tarafı daha eski ve daha zayıf bir protokol sürümünü kullanmaya zorlamak için ClientHello'yu çıkarır veya değiştirir. Savunmalar: (1) Kimliği doğrulanmış sürüm pazarlığı — üzerinde anlaşmaya varılan sürümü imzalanan protokol dökümüne dahil edin (TLS Bitirme iletisi, sürüm dahil ClientHello'nun tamamını kapsar). (2) Sürüm düşürme belirteçleri — TLS 1.3, TLS 1.2'ye sürüm düşürme yapıldığında ServerHello.Random içine özel baytlar yerleştirir; böylece istemci sürüm düşürmeyi algılayabilir. (3) Sürüm uyumsuzluğunu önleme — sunucular, hatalı ClientHellos ile karşılaştıklarında sessizce geri dönüş yapmadan bunları reddetmelidir. (4) SCSV — TLS_FALLBACK_SCSV, istemcinin daha düşük bir sürümle yeniden denediğini sunucuya bildirir ve sunucunun yetkisiz geri dönüşleri reddetmesini sağlar.
Protokol Dökümü Taahhüdü ve Değiştirilemezlik
Protokol iletileri, ilk değiş tokuştan itibaren taahhüt altına alınmalıdır. Değiştirilemezlik, bir saldırganın şifreli metni veya imzayı değiştirerek bunların farklı bir bağlamda geçerli olmasını sağlayamaması anlamına gelir. AEAD, şifreli metin değiştirilemezliği sağlar; yapılan herhangi bir değişiklik doğrulama etiketini geçersiz kılar. Protokol düzeyinde değiştirilemezlik için protokol dökümünün özetlenmesi, el sıkışmanın sonundaki Bitirme iletisi alışverişinin gönderilen her iletiye taahhüt vermesini sağlar. Bu, kes-yapıştır saldırılarını önler: İki farklı oturumdaki iletilerin birleştirilmesi, bu oturumların hiçbirisi için geçerli bir Bitirme değeri oluşturamaz. Taahhüt şemaları (özet taahhütleri), açığa çıkarmadan önce taahhüt gerektiren protokol akışlarında bu yaklaşımı genişletir.
Durum Makinesinin Açıklığı
Karmaşık protokoller çoğu zaman durum makinesi sınırlarında başarısız olur. Bir durum geçişi belirsizse — ileti 2'den önce ileti 3 gelirse ne olur? Beklenmeyen bir ileti türü gelirse ne olur? — uygulamalar farklı davranabilir ve bir saldırganın yararlanabileceği tutarsızlıklar oluşturabilir. Protokol belirtimleri şunları tanımlamalıdır: eksiksiz durum makinesini (tüm durumları ve geçerli geçişleri), beklenmeyen girdiler karşısındaki davranışı (belirli bir hatayla reddetme veya sessizce yok sayma), zaman aşımı ve yeniden iletim sınırlarını ve oturum temizleme işlemini. SSL/TLS, tarihsel olarak durum makinelerindeki uygulama farklılıklarından zarar görmüştür — CVE-2014-0160 (Heartbleed), esasen bir kalp atışı isteğinin belleğin uygun şekilde sınırlandırılmadığı bir durumda işlenmesiyle ortaya çıkan bir durum makinesi hatasıydı.
Birleştirilebilirlik ve Modüler Protokol Tasarımı
Kriptografik protokoller nadiren tek başına kullanılır. Bir AKE protokolü bir oturum anahtarı oluşturur ve bu anahtar daha sonra uygulama katmanı protokolü tarafından kullanılır. AKE ile uygulama protokolü, birleştirilebilirlik dikkate alınmadan bağımsız olarak tasarlanırsa etkileşimleri güvenliği bozabilir. Evrensel Birleştirilebilirlik (UC) çerçevesi (Canetti, 2001), protokol birleştirme için titiz bir model sağlar: Bir protokol, diğer UC-güvenli protokollerle keyfi biçimde birleştirildiğinde de güvenli kalıyorsa UC-güvenlidir. TLS 1.3, Signal ve Noise, birleştirilebilir güvenliği hedefler. Pratikte kanal bağlaması kullanın (protokol özetini dışa aktarın); böylece AKE oturumunu sonraki uygulama kimlik doğrulamasına bağlayarak, aynı AKE protokolüyle oluşturulan oturumlar arasında kimlik bilgilerinin iletilmesini önleyin.
Yaygın Protokol Tasarımı Karşıt Örüntüleri
Protokol tasarımcıları aynı hata sınıflarını tekrar tekrar yapar. (1) Kendi kriptonuzu yazma: özel blok şifreleri, MAC'ler veya anahtar türetme yöntemlerini akran incelemesi olmadan uygulamak. (2) Örtük güven: Kriptografik kanıt yerine ağ bağlamına dayanarak bir iletinin kaynağını varsaymak. (3) İsteğe bağlı güvenlik: Şifrelemeyi veya kimlik doğrulamayı yapılandırılabilir kılmak ve bunun kaçınılmaz olarak sürüm düşürmeye yol açması. (4) Geri alma mekanizması olmayan uzun ömürlü belirteçler: Uzun yaşam sürelerine sahip ve geri alma mekanizması bulunmayan JWT'ler veya oturum anahtarları vermek. (5) Hata kanalını yok saymak: Hata iletilerini doğrulamamak, bir saldırganın protokol davranışını etkilemek üzere hatalar enjekte etmesine olanak tanır. (6) Kimlik doğrulama için şifreleme kullanmak: Verileri şifrelemek, MAC veya imza olmadan kaynağını doğrulamaz.
Protokol Tasarımı İlkeleri Testi
Abadi-Needham ilkelerine göre, kimlik önemli olduğunda bir ileti gönderenin kimliğini neden açıkça içermelidir?
Güvenli Protokol Tasarımının Özeti
Güvenli protokol tasarımı, yerleşik ilkeleri uygular: Dolev-Yao saldırgan modeli (ağı denetleyen saldırgan), Abadi-Needham ilkeleri (açık kimlik ve kendi kendine yeterli iletiler), nonce değerleri veya zaman damgalarıyla tazelik, farklı etiketlere sahip HKDF kullanarak anahtar ayrımı, kimlik doğrulama kimlik bilgilerinin oturuma bağlanması, asgari bilgi açıklama, protokol dökümünün doğrulanması yoluyla sürüm düşürmenin önlenmesi, AEAD ve protokol dökümünün özetlenmesi yoluyla değiştirilemezlik, hata işleme davranışı tanımlanmış açık durum makineleri ve UC modeli güvenlik kanıtları yoluyla birleştirilebilirlik. Bu ilkelerin ihlali, bilinen protokol düzeyi kriptografik güvenlik açıklarının neredeyse tamamının kaynağıdır.
Sıkça Sorulan Sorular
“Güvenli Protokol Tasarımının İlkeleri” dersi ücretsiz mi?
Evet — “Güvenli Protokol Tasarımının İlkeleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cryptology Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cryptology Academy kursu toplamda 4 dersten oluşur.
“Güvenli Protokol Tasarımının İlkeleri” dersinde ne öğreneceğim?
Bilinen saldırılara direnen protokoller tasarlamak için Abadi-Needham ilkelerini, tazeliği ve kimlik doğrulama hedeflerini uygulayın. Cryptology Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cryptology Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cryptology Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Güvenli Protokol Tasarımının İlkeleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cryptology Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cryptology Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Needham-Schroeder Protokolü ve Saldırıları
- İstasyondan İstasyona Protokolü (STS)
- Noise Protokolü Çerçevesi
- Güvenli Protokol Tasarımının İlkeleri