0Pricing
Cryptology Academy · Ders

Noise Protokolü Çerçevesi

WireGuard, WhatsApp ve Lightning'de kullanılan özel kriptografik el sıkışmaları oluşturma çerçevesi olan Noise'u keşfedin.

Noise Protokolü Çerçevesi, CoddyKit'te ücretsiz bir Cryptology Academy dersidir. Bu, 4 dersinin 3. 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.

Noise Çerçevesi Nedir

Noise Protokolü Çerçevesi (Trevor Perrin, 2016; geçerli sürümü 2018), az sayıda temel yapıtaşı ve bir örüntü dili kullanarak güvenli kanal protokolleri oluşturmaya yarayan bir çerçevedir. Noise, tek bir protokol belirtmek yerine DH işlemlerinin sırasını ve düzenini açıklayan bir el sıkışma örüntüleri söz varlığı tanımlar. Geçerli herhangi bir Noise örüntüsü somut DH (Curve25519 veya Curve448), şifreleyici (AESGCM veya ChaChaPoly) ve özet (SHA-256, SHA-512, BLAKE2) işlevleriyle kullanılabilir. Noise; WireGuard, WhatsApp, Signal (X3DH'nin temelini oluşturacak şekilde), Lightning Network ve I2P'de kullanılır.

Noise Rolleri ve Anahtarları

Her Noise el sıkışmasında bir başlatan (I) ve bir yanıtlayan (R) bulunur. Her tarafın iki tür anahtarı olabilir: sabit (uzun vadeli kimlik anahtarı, s/S ile gösterilir) ve geçici (her oturum için yeni üretilir, e/E ile gösterilir). Küçük harfler yerel tarafın anahtarını, büyük harfler uzak tarafın açık anahtarını gösterir. Bir Noise örüntüsü, hangi anahtarların (düz metin veya şifrelenmiş biçimde) gönderileceğini ve hangi DH işlemlerinin gerçekleştirileceğini belirtir. Örneğin, "e", "geçici açık anahtarımı gönder" anlamına gelir; "es" ise "DH(my_ephemeral, remote_static) gerçekleştir" anlamına gelir. Her DH çıktısı, el sıkışmanın sürekli güncellenen özet durumuna karıştırılır.

Noise SymmetricState

Noise'un çekirdeği, üç değeri koruyan SymmetricState'tir: ck (zincirleme anahtarı; bir protokol adı özetine başlatılır), h (el sıkışma özeti; sürekli güncellenen ileti dökümü özeti) ve k (geçerli şifreleme anahtarı). MixKey, girdi üzerinde HKDF(ck, girdi) çalıştırarak ck ve k'yi günceller. MixHash, veriyi h'ye özetler. EncryptAndHash, düz metni k ile şifreler ve şifreli metni h'ye karıştırır. DecryptAndHash, şifreli metni çözer ve şifreli metni h'ye karıştırır. El sıkışma özeti h, ileti dökümünün bağlanmasını sağlar — herhangi bir iletideki düşmanca bir değişiklik h'yi değiştirir ve şifre çözmenin başarısız olmasına neden olur. El sıkışmanın sonunda Split(), gönderme ve alma için iki ayrı CipherStates üretir.

Noise_XX Örüntüsü

Noise_XX, en yaygın kullanılan karşılıklı kimlik doğrulama örüntüsüdür. El sıkışma sırasında her iki tarafın sabit anahtarlarının iletilmesiyle karşılıklı sabit anahtar kimlik doğrulaması sağlar. Örüntü: (1) -> e (başlatan taraf geçici açık anahtarını gönderir). (2) <- e, ee, s, es (yanıtlayan taraf geçici anahtarını gönderir, DH(e,e) ve DH(e,s_resp) işlemlerini gerçekleştirir ve şifrelenmiş sabit anahtarını gönderir). (3) -> s, se (başlatan taraf şifrelenmiş sabit anahtarını gönderir ve DH(s_init, e_resp) işlemini gerçekleştirir). 3. adımdan sonra her iki taraf da üç DH çıktısını oturum anahtarına karıştırmış olur: ee (ileri yönlü gizlilik), es (sunucu kimlik doğrulaması), se (istemci kimlik doğrulaması). Oturum anahtarı, oturum sona erdikten sonra herhangi bir uzun vadeli anahtarın ele geçirilmesinden bağımsızdır.

Noise_IK Örüntüsü (WireGuard)

WireGuard, başlatan tarafın yanıtlayan tarafın sabit anahtarını önceden bildiği Noise_IK'den türetilmiş bir örüntü kullanır. (1) -> e, es, s, ss (başlatan taraf geçici anahtarını gönderir, DH(e, S_resp) işlemini gerçekleştirir, sabit anahtarını şifreleyerek gönderir ve DH(s_init, S_resp) işlemini gerçekleştirir). (2) <- e, ee, se (yanıtlayan taraf geçici anahtarını gönderir, DH(e_resp, e_init) ve DH(e_resp, S_init) işlemlerini gerçekleştirir). IK örüntüsü, başlatan tarafın kimliğini gizler (sabit anahtarı 1. adımda yanıtlayan tarafın sabit anahtarıyla şifrelenir) ve tek RTT'de tamamlanır. WireGuard, yeniden oynatma saldırılarını önlemek için şifrelenmiş başlatan taraf yükünün içine bir zaman damgası ekler. Bu, WireGuard'ın kendine özgü yalınlığını sağlar: iki UDP paketiyle tamamlanan bir VPN el sıkışması.

Noise El Sıkışma Özeti ve Kanal Bağlama

Noise el sıkışmasının sonundaki h özeti, gönderilen her iletiyi kapsayan bir ileti dökümü özetidir. Bu, bir kanal bağlama değeri olarak kullanılır — her iki taraf da aynı h değerini hesaplar ve Noise oturumuna bağlanmak isteyen herhangi bir üçüncü taraf protokolü, h değerini bir tek kullanımlık değer veya kanal ID'si olarak içerebilir. Bu, birleşik kimlik doğrulamayı mümkün kılar: TLS tarzı bir sertifika kimlik doğrulama adımı Noise el sıkışmasından sonra çalıştırılabilir ve h aracılığıyla sertifikayı bu özel oturuma bağlayabilir. Kanal bağlama, bir oturumdaki kimlik bilgilerini başka bir oturuma karşı yeniden oynatan kimlik bilgisi iletme saldırılarını önler. Split(), oturum anahtarlarıyla birlikte h değerini uygulamaya sağlar.

Noise Ertelenmiş Örüntüleri ve Geri Dönüş

Noise, başlatan tarafın yanıtlayan tarafın sabit anahtarını önceden bilmediği durumlar için ertelenmiş örüntüleri destekler. Noise_NX (başlatan tarafın sabit anahtarı yoktur; yanıtlayan taraf kendi anahtarını gönderir), tek yönlü TLS'ye benzer. Noise_XX, her iki tarafın da anahtarlarını değiştirmesi gereken durumu ele alır. Başlatan tarafın yanıtlayan tarafın sabit anahtarına ilişkin tahmini yanlışsa (örneğin bir anahtar döndürme işleminden sonra), Noise_IK, Noise_XXfallback'e geri dönebilir. Geri dönüş örüntüsü, dış gözlemcilere geri dönüş yapıldığını açıklamadan yanıtlayan tarafın "yanlış anahtarı kullandınız; yeni açık anahtarım burada" sinyali vermesine olanak tanır ve protokolün opaklığını korur.

WhatsApp ve Signal'da Noise

WhatsApp ve Signal, istemciler ile sunucular arasında güvenli kanallar oluşturmak için Noise_XX kullanır. WhatsApp'ın ikili protokolü Curve25519, ChaChaPoly ve SHA-256 ile Noise_XX kullanır. İstemcinin sabit anahtarı, uzun vadeli kimlik anahtarıdır. Noise el sıkışmasından sonra uygulama katmanı ek kimlik doğrulama işlemleri gerçekleştirir (Signal kaydı ve telefon numarası doğrulaması). Signal'ın X3DH'si (Extended Triple Diffie-Hellman), eşzamansız ileti alışverişi yoluyla iki kullanıcı arasında paylaşılan bir sır oluşturmak için dört DH işlemi gerçekleştirir — bu, standart bir Noise örüntüsü değildir ancak benzer DH karıştırma kavramlarını kullanır. Daha sonra devam eden ileti şifrelemesini Double Ratchet devralır.

Noise ve TLS Karşılaştırması

Noise ve TLS 1.3, farklı yaklaşımlarla aynı sorunu (kimlik doğrulamalı anahtar değişimini) ele alır. TLS 1.3; önceden belirlenmiş şifreleme takımları, sertifika biçimleri (X.509) ve uzantıları olan tek bir protokoldür. Web tarayıcıları ve sunucuları için tasarlanmıştır — çoğu duruma uyan tek tip bir protokoldür. Noise bir çerçevedir; sertifika biçimi, PKI veya taşıma bağlaması belirtmez. Bu, Noise'u daha küçük (WireGuard'ın tüm Noise uygulaması 400 kod satırından azdır) ve biçimsel olarak analiz edilmesi daha kolay hale getirir; ancak uygulamanın kimlik yönetimini ayrıca ele almasını gerektirir. PKI'nin gereğinden fazla kapsamlı olduğu kapalı sistemlerde (uygulama-sunucu, VPN) Noise tercih edilir; sertifika birlikte çalışabilirliğinin gerekli olduğu açık sistemlerde (web) ise TLS tercih edilir.

Noise'un Biçimsel Güvenliği

Noise örüntüleri, eCK (genişletilmiş Canetti-Krawczyk) güvenlik modelinde biçimsel olarak analiz edilmiştir. Kobeissi, Bhargavan ve Blanchet, Proverif kullanarak Noise'u analiz etmiş ve 12 temel Noise örüntüsünün tümü için kimlik doğrulama ve anahtar gizliliği ispatları bulmuştur. İspatlar, standart DH zorluk varsayımını (Curve25519) ve temel AEAD ile özet işlevlerinin güvenliğini varsayar. Noise'un bileşimsel niteliği (her DH'nin artımlı olarak karıştırılması), çok sayıda durum geçişi içeren karmaşık TLS benzeri protokollere kıyasla analizini kolaylaştırır. Noise'un kriptografik doğrulaması, WireGuard ve WhatsApp'ın kullanıma sunulmadan önce protokol güvenliğine yüksek düzeyde güven duymasını sağlamıştır.

Noise'u Doğru Uygulama

Yaygın Noise uygulama hataları: (1) Örüntü karışıklığı — yanıtlayan tarafın sabit anahtarı güvenilir biçimde önceden dağıtılmamışsa Noise_IK kullanılması kimlik uyuşmazlığına yol açar (başlatan taraf fark ettirmeden yanlış bir anahtarla şifreleme yapabilir). (2) Yeniden oynatma koruması — Noise, Taşıma aşamasındaki iletiler için kimlik doğrulama sağlar ancak yeniden oynatma koruması sağlamaz; tek kullanımlık değerler (64 bitlik sayaç) zorunlu kılınmalı ve sayaç taşması (2^64 iletiden sonra) anahtar yenilemeyi tetiklemelidir. (3) Önsöz bütünlüğü — Noise önsözü (el sıkışma başlamadan önce h'ye karıştırılan bir bayt dizisi), sürüm ve algoritma seçenekleri gibi tüm protokol bağlamını içermelidir; böylece sürüm düşürme saldırıları önlenir. (4) PSK'nin yanlış kullanımı — Noise, önceden paylaşılmış anahtarları karıştırmak için PSK uzantılarını destekler; PSK'ler kullanıcı parolaları değil, yüksek entropili değerler olmalıdır.

Noise Çerçevesi Kısa Sınavı

Bir el sıkışma örüntüsündeki "es" gösterimi ne anlama gelir?

Noise Çerçevesi Özeti

Noise, DH işlemlerinden oluşan bir örüntü dili kullanarak kimlik doğrulamalı anahtar değişimi protokolleri oluşturmaya yarayan bir çerçevedir. SymmetricState; zincirleme anahtarını (ck), ileti dökümü özetini (h) ve şifreleme anahtarını (k) korur; bu değerler MixKey/MixHash tarafından güncellenir. Noise_XX, 1,5 RTT içinde karşılıklı kimlik doğrulama sağlar; Noise_IK (WireGuard), yanıtlayan tarafın anahtarı biliniyorsa 1 RTT içinde tamamlanır. El sıkışma özeti h, kanal bağlama değeri olarak kullanılır. Noise, Proverif aracılığıyla tüm temel örüntüler için biçimsel olarak doğrulanmıştır. PKI'nin gereksiz olduğu kapalı sistem protokollerinde (WireGuard, WhatsApp) TLS yerine tercih edilir. Doğru uygulama; yeniden oynatma koruması, önsöz bütünlüğü ve yüksek entropili PSK'ler gerektirir.

Sıkça Sorulan Sorular

“Noise Protokolü Çerçevesi” dersi ücretsiz mi?

Evet — “Noise Protokolü Çerçevesi” 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.

“Noise Protokolü Çerçevesi” dersinde ne öğreneceğim?

WireGuard, WhatsApp ve Lightning'de kullanılan özel kriptografik el sıkışmaları oluşturma çerçevesi olan Noise'u keşfedin. 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 3. dersidir.

“Noise Protokolü Çerçevesi” 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

  1. Needham-Schroeder Protokolü ve Saldırıları
  2. İstasyondan İstasyona Protokolü (STS)
  3. Noise Protokolü Çerçevesi
  4. Güvenli Protokol Tasarımının İlkeleri
← Cryptology Academy Sayfasına Dön