Bilgi tabanı: Kuantum dirençli şifreleme

Nymchat Teknik Beyaz Kitap

Nymchat'te Post-Quantum Anahtar Anlaşması

ML-KEM-768 kamu anahtarlarını bir dizin veya kayıt defteri olmaksızın Nostr üzerinden dağıtmak ve hiçbir kamu değerinin ortaya çıkartmadığı bir sırrın dışına çıkarmak.

Versiyon 1.0 Ağustos 2026 Nymchat 3.74+ için geçerlidir

Post-quantum anahtar değişimini bir mesajlaşmacıya eklemek çoğunlukla bir şifreleme sorunu değildir. ilkeler standartlaştırılmıştır ve kütüphaneler vardır. Zor kısmı, her katılımcının şimdi bir İkinci Bu makale, Nymchat'in bu soruya nasıl yanıt verdiğini - ikinci anahtarın nereden geldiği, ihtiyacı olan insanlara nasıl ulaştığı ve arayüzün sonuç hakkında ne iddia etmesine izin verildiğini - ve son bölümde, bu sonuç neyin korunmadığını açıklıyor.

1Sorunları

Gizli mesajlarımız şifrelenir NIP-44, iki ayrı yarıya sahiptir. basit metni karıştıran yarı - HMAC-SHA256 etiketiyle ChaCha20 HKFD Hakkında (RFC 5869 Yorumları) - bir kuantum bilgisayarı tarafından anlamlı bir şekilde tehdit edilmez; Grover'ın algoritması simetrik bir anahtarla bir kare kök hızlandırma maliyeti öder ve 256 bit bunu absorbe eder. katılıyorum Diffie-Hellman elliptik eğriliği üzerinde Sıfır256K1, ve Shor'un algoritması, ayrıntılı logaritmayı tamamen çözür. bir özel anahtarı halka açık eşinden geri kazanmak, anahtarın herhangi bir zaman ürettiği her paylaşılan sırrı ortaya çıkarır.

Bu tehdit, böyle bir makinenin varlığına kadar ertelenmez. Depolama olan bir rakip bugün şifreleme metni kaydedebilir ve yeteneğin geldiği zaman şifrelemek. Şimdi hala önemli olan her şey zaten tehlikeye düşmüştür. Bu, post-quantum anahtar değişiminin spesifik saldırısıdır ve bu nedenle çalışma makinenin inşa edilmesi için bekleyemez.

1.1 Bu yazıda sorulan sorular

Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi Çevrimiçi ÇevrFiyatları 203Bu da bir dağıtım sorunu yaratıyor:

sorusu

Bugün Alice'e mesaj vermek için tek bir şeye ihtiyacınız var: onun npub. Bir post-quantum değişim ekleyin ve ikinci birine ihtiyacınız var - onun ML-KEM kamu anahtarı. o anahtar nerede yaşıyor, ve ona bir şey göndermeden önce nasıl alırsınız?

Bir npub kendine aittir. Kağıt üzerinde yazabilir, yüksek sesle okuyabilir veya bir ekrandan tarayabilir ve bu sizin için şifrelemek için gereken her şeydir. Bir ML-KEM-768 kamu anahtarı 1,184 byte'dir. yüksek sesle okunamaz, bir kullanıcı adı içinde yer almaz ve sadece 32 byte olan bir kimliğe ek olarak bir QR koduna ait değildir.

Daha zor olan kısmı, ikinci bir anahtarın üç farklı soruna yol açtığı ve bu makalenin geri kalanı bunlara büyük ölçüde bir cevap:

2Tasarım Sınırları

Dört kısıtlama cevabı şekillendirdi ve herhangi bir kod yazılmadan önce açık tasarımların çoğunu dışladılar.

  1. Mümkün olduğunca az sır. Nostr kullanıcıları zaten tam olarak bir sır taşıyor, nsec. Her ek sır, geçmişinizi kaybetmenin başka bir yoludur ve bir nsec'i yedeklemeyi bilen birisi başka bir şey yedeklemeyi bilmez. Bölüm 3.1 bu sırrı tam olarak karşılamayacağını gösteriyor - nsec'den elde edilen bir post kuantum anahtarın post kuantum koruması yoktur - bu nedenle tasarım tam olarak bir sır ve daha fazlasını harcıyor: her kimlik başına bir kez oluşturulan tek bir anahtar malzeme, aynı şekildedir ve aynı yerde sunulmaktadır, böylece birini nasıl tutacağını bilen herkes diğerini nasıl tutacağını bilir. Bölüm 10.1 bunun hala maliyeti hakkında dürüst.
  2. Yetki yok Hangi anahtarın kime ait olduğunu söyleyebilecek güvenilir bir sunucu yoktur.
  3. Çok sayıda cihaz, tek bir kimlik. Bir Nostr kimliği genellikle birden fazla müşteri tarafından aynı anda kullanılır. herhangi bir anahtar malzeme hepsinde aynı olmalı ve orada taşıyan yollar, özellik savunmakta olduğu rakip tarafından okunabilir olmamalıdır.
  4. Hiçbir müzakere yok. “Hangi şifreyi destekliyorsunuz?” için herhangi bir bant değişikliği, saldırganın zayıf seçeneği zorlamak için kesebileceği bir yüzeydir.

3Bağımsız bir gizem

Yükleyici karar, ML-KEM dekapsülasyon anahtarının hiçbir kamu değerinin ortaya çıkartmadığı anahtar malzemeden toplanmasıdır.

pqRoot   = 32 bytes from a CSPRNG, generated ONCE per identity

seed     = HKDF-Expand(
               HKDF-Extract(salt = "nym-pq-root-v2", IKM = pqRoot),
               info = "mlkem768/epoch/" || epoch,
               64 bytes)

(ek, dk) = ML-KEM-768.KeyGen(seed)

Bir nsec gibi kullanıcılara root sunulur: Beşiktaş32 İnsan okunabilir önceliği nympqBu yüzden okuduğum gibi nympq1…, aynı açıklama etkileşiminin arkasındaki kimlik ekranında nsec'in yanında gösterilir, aynı denetleyiciyle kopyalanır, hiçbir zaman kaydedilmez ve açıkta hiçbir yerde gönderilmez.

Tuz, amaçla alan ayrılmıştır, bu nedenle başka bir sır hiçbir zaman aynı anahtar çiftini ortaya çıkaramaz. epoch Sürücüsüz Sürücüsüz Sürücüsüz Sürücüsüz Sürücüsüz (Section 9).

3.1 Neden anahtar kimlik anahtarından alınamaz

Açıkçası tasarımı, kullanıcının zaten sahip olduğu sırlardan anahtar çiftini tohumlamaktir:

seed = HKDF(salt = "…", IKM = nsec)          // do not do this

Dört nedenden dolayı çekici, hepsi gerçek: yedekleme için yeni bir şey yok, çünkü nsec zaten yedekleme; hiçbir senkronizasyon protokolü ile yanlış gitmek için inşaat tarafından kabul edilen her cihaz; kimlik başına bir değiştirilebilir duyuru açıkça doğru olduğu için, çünkü cihazlar anahtar hakkında anlaşmazlık yapamaz; ve yayınlanmadan önce var olan anahtar, böylece bir müşteri ilk başta kendine bir şey mühürleyebilir.

Tüm dört faydası bir nedenden ötürü değersizdir. Shor'un algoritması, yayınlanan bir npub'a karşı çalıştığında nsec'i verir. tohum çıkışı, nsec'in üzerinde kamuya açık bir algoritmadır. Böylece klasik yarısını kıran rakip, herkesin çalıştığı aynı HKDF'yi çalıştırarak post-kvant yarısını yeniden yapılandırır. hasat- şimdi-decrypt-daha sonra - özelliği durdurmak için var olan tek tehdit karşılığında - bu şekilde elde edilen bir anahtar hiçbir şey katmaz.

Kural her şeyin sonucu

ML-KEM dekapsülasyon anahtarı, ne nsec'ten kaynaklanabilir ne de klasik-sadece şifreleme altında hiçbir zaman iletilemeyen entropiden gelmelidir.

Bu kuralın ikinci paragrafı, ilk gibi çok işe yarıyor. sıradan bir NIP-44 iletisi içinde kullanıcıların cihazları arasında senkronize edilen bağımsız olarak oluşturulan bir sır, ek adımlarla aynı başarısızlıktır: bir rakip bu iletiyi bugün kaydeder ve klasik anahtarını daha sonra geri alır ve kök düşer.

3.2 Kullanıcının diğer cihazlarına root almak

Bölüm 2'nin 3 sınırı - bir kimlik, birkaç cihaz - burada aritmetik ile tatmin edilemez, çünkü tüm nokta anahtarın zaten paylaştıkları herhangi bir şeyin bir fonksiyonu olmadığıdır. nympq1… Kendi kendine kod.

kök olarak gösterilmiştir nympq1… Nssec'in yanında ve ikinci bir cihaz aynı panele yapıştırılmış kabul eder.Bu tüm mekanizmadır.Kod verilmemiş bir cihaz, Bölüm 4.2'de açıklandığı gibi katılamaz.

Manuel aktarma, bir ilk adımdan ziyade kasıtlı bir adımdır. Bölüm 3.1'deki kural, kökün sadece klasik şifreleme altında asla seyahat etmeyeceğini ve bunu otomatik hale getirecek her mekanizma - onu bir relay aracılığıyla senkronize etmek, onu kimlik anahtarına sarmak - tam olarak bunu ihlal ediyor.

Format, bir ambalajlı yol için yer bırakır: bir kayıt, ambalajların bir listesini taşıyabilir, her biri, kullanıcının başka bir cihazda tekrarlayabileceği bir anahtar altında bir AEAD blob - örneğin, passkey PRF çıkışı. nympq1… Kısacası 10.1’de ne kadar para ödeyeceğimizi anlatıyor.

Kendi ayar kategorisinde kendi kayıtları yaşıyor, nymchat-pq-rootHiçbir ambalaj taşıması bile gerekli iş yapar: varlığı, ikinci bir cihazın bu kimliğinin zaten bir kökü olduğunu öğrenmesidir, bu da rekabetçi bir kimliğe bürünmesini durdurur (Bölüm 3.3).

Tasarım notu: Yeni anahtarı kullanamayan tek kategori

ve nymchat-pq-root Kategoriler Must Olumsuz Bu satır, kökün tek kopyasını taşıyor, bu nedenle, kökten kaynaklanan bir anahtarın altında mühürlenmek, anahtarın kutunun içinde olduğu bir kilittir: hiçbir cihaz, onu yazan da dahil olmak üzere hiçbir zaman açamaz. Klasik olarak mühürlenir - NIP-44 kendisi - ya da hiç değil.

Diğer tüm ayar kategorileri, kökden kaynaklanan anahtarı kullanabilir ve kullanmalıdır.Bu tek istisna ve kuvvetten ziyade yuvarlaklık ile ilgili bir istisna.

3.3 Doğum ve evlat edinme

Boot'ta, kalıcı bir kimlik tutarak, bir müşteri şu şekilde çalışır:

  1. Mevcut birini arayın nymchat-pq-root Bir rekor.
  2. Kayıt bulundu ve bu aygıt kaldırılabilir - Onu kabul edin ve bu kimliği post-kvantum kapasite olarak ilan edin.
  3. Kayıt bulundu ve bu cihaz açılamıyor - yeni bir kök oluşturmayın ve hiçbir duyuruyu yayınlamayın.Bu cihazı bağlantılandırmak için kullanıcının nympq1… Zaten sahip olduğunuz bir cihazdan gelen kod.
  4. Rekor yok - bir kök oluşturun, kayıt yayınlayın, duyurun ve nympq1… Kullanıcıya bir kez gönderilir, böylece kaydedilebilir.

Adım 3 kolayca yanıltılabilen adımdır ve bu yüzden sipariş her uygulama için bırakılmamak yerine yazılır.Her biri bir kök oluşturmaya karar veren iki cihaz, tek bir kimlik altında iki bağımsız kök üretir ve bu siparişin önlemek için var olduğu başarısızlık budur.

4Kapasite Açıklaması

Çevrimiçi anahtar çiftinin halka açık yarısı adreslenebilir olarak yayınlanır. Gönül-01 tür 30078, etiketlendi nym-pq:

{
  "kind": 30078,
  "tags": [
    ["d", "nym-pq"],
    ["t", "nym-pq"],
    ["expiration", "<unix seconds>"]
  ],
  "content": {
    "v":     2,
    "alg":   "mlkem768",
    "nym":   1,
    "epoch": 0,
    "pk2":   "<base64url ML-KEM-768 encapsulation key>",
    "exp":   <unix seconds>,
    "devices": [ ... ]
  }
}

Adreslenebilir, iletkenin her bir olay için bir olay tutması anlamına gelir (kind, pubkey, d-tag), böylece bir cumhuriyet önceki duyuruyu yerinde yerine getirir. her kimlik, bu nedenle, &ldquo;Alice'nin anahtarını &rdquo'ya çeviren tam olarak bir güncel kaydına sahiptir.

İmza da bağlayıcıdır. Olay kimlik anahtarı ile imzalanır, bu nedenle iddia &ldquo;bu ML-KEM anahtarı bu npub'a aittir&rdquo; tam olarak npub'un kendisi kadar güçlü. farklı bir kapsülasyon anahtarını değiştirmek için secp256k1 imzası yapılması gerekir.

Duyurular sona eriyor. yedi gün NIP-40 Her 24 saatte bir yeniden yayınlanan expiration, bir zamanlar olduğu yerine hala çalışan bir müşteri hakkında bir ifadesini kaydeder.

Geçmiş bir duyuru anahtar taşıyan bir anahtar gibi okunur: meslektaşlar her oturum açanın okuyabileceği sıradan NIP-44'ü gönderir ve müşteri, bir sonraki bağlantısında, yeniden yayınlandığında post-kvantum değişimini devam eder. Böylece bir haftadan daha uzun süre sessiz kalmak, aralık sırasında gönderilen mesajlar için koruma maliyeti içerir - klasik olarak şifrelenirler, kuantum dirençli değil - ve başka bir şey pahasına değildir. teslimat etkilenmez, zaten alınan hiçbir şey okunamaz hale gelir ve geri dönüşte herhangi bir eylem gerekmez.

Bu asimetri, sona ermesinin nedeni, bir kaza olmaksızın. bir kayıt, adlandırdığı anahtarın ötesinde yaşar: silinmiş, yeniden ayarlanmış veya kökünü değiştirmiş bir cihaz, artık kimseye ait olmayan bir anahtarın kapsül edilmesi için sabit bir talimat bırakır ve altında gönderilen mesajlar her iki tarafta hata olmadan kaybolur. yedi gün bu pencereyi sınırlandırır ve iletkenlerin anahtarı kendilerine bırakmasına izin vermez.

Anahtar alan formatını adlandırır. alanı ise pk2, ve rakam dekorasyon yerine sözleşmenin bir parçasıdır: anahtarın kullanıldığı faydalı yük biçimini adlandırır. alanı tanımayan bir okuyucu &ldquo;Nymchat istemcisi, post-quantum anahtarı değil&rdquo; sona erer ve her oturum açılmasını okuyabilen sıradan bir NIP-44'ü gönderir. Bu doğru başarısızlık yönüdür ve kural olarak ifade etmek gerekir: tanımlanmamış bir yetenek iddiası koruma maliyeti olmalıdır, hiçbir zaman teslim olmamalıdır. Bir eşeğin kullanamayacağı bir anahtar hiçbir anahtardan daha kötüdür, çünkü ürettiği mesaj her iki tarafta hata olmadan kaybolur.

4.1 Eksiklik anlamlıdır ve üçlü olarak değerlendirilir

Bir ince ama önemli ayrıntı: duyuru her Nymchat istemcisi tarafından yayınlanır, sadece post-kvantum kapasiteli olanlar değil, ve anahtar alan seçmeli.

gözlemlenmişAraçDavranış Gönder
Bir anahtar ile bildirim Nymchat, post-quantum yeteneği Hibrit
Anasayfa » Anahtarlık Yok Nymchat, sadece klasik - post-quantum kapalı, ya da henüz kimliğin köküne bağlı olmayan bir cihaz Klasik NIP-17
İletişim Yok Bilinmeyen müşteri. herhangi bir Nostr veya Bitchat kullanıcısı olabilir Klasik, artı bir uyumluluk kablosu

Anahtarsız bir duyuru, gönderenin Nymchat'i çalıştırdığı imzalı bir beyanıdır, bu da gönderme yolunun, aksi takdirde tanımlayamadığı herkese dahil etmesi gereken bir spekülatif çapraz protokol ambalajını geçmesine izin verir.

4.2 Kök açamayan bir cihaz sessiz kalır

Açıklama değiştirilebilir: kimlik başına bir olay, son yazma kazanır. tek kayıt tasarımı işe yaratan şey budur ve aynı zamanda bağlanmamış bir cihazı yayınlarsa tehlikeli kılan da budur. kendisi için atmış olduğu bir anahtarı duyuran bir cihaz, gerçek rekoru çalmak ve diğer cihazların açamayacağı bir anahtar altında şifrelemek için her arkadaşı gönderir.

Yani bir kök bilmeyen bir cihaz var ama açamıyor, hiç bir duyuru yayınlamıyor. kırılmıyor ve uygulamadan kilitlenmiyor: hala anahtarları olan her mesajı okuyor ve yine de klasik olarak gönderiyor, aynı zamanda kullanıcının onu bağlamasını sağlar. Sessizlik, kimliği konuşamayan bir cihaz için doğru davranıştır.

5Keşif ve gönderme kararı

Müşteriler benzer anahtarları iki şekilde öğrenir. duran bir abonelik, bir kullanıcının gerçekte karşılaştığı kişileri kapsar – açık konuşmalar ve grup üyeleri – böylece duyuruları sıradan olaylar olarak gelir. ilk kez bir benzer buluşma için, bir tek adımlı soru, 2.5 saniye sınırlı gönderme zamanında çalışır; çözmezse, mesaj klasik olur, bu, yeni bir başarısızlık modu yerine post-kvantum eklenmeden önce var olan davranıştır.

Yeni bir cihazı bağlayan veya bir tarayıcı uzantısı girişinden bir yerel anahtarına geçiren bir kullanıcı, sohbet ortasında post-kvantum kapasiteye sahip olur ve kalıcı olarak cached &ldquo;no&rdquo; onları duyurunun ömrü boyunca klasik şifreleme üzerinde tutar.

5.1 Neden düşük seviyeli bir saldırı yok

Routing kararı tek bir soruya azaltır:

pq = (we hold a signed, unexpired ML-KEM key for this recipient)

Hiçbir yetenek müzakeresi yok, hiçbir desteklenen algoritmalar listesi yok ve bir saldırgan daha zayıf bir yoldan zorlamak için açık bir alan yok. öyle Boşaltılmış veya tutuklanan bir duyurunun başarısızlık modu, bir hibrit mesajın yanlış bir şeye indirilme yerine, mesajın klasik hale gelmesidir - bu özelliğe önceki status quo.

Karşılıklı da tutar ve daha önemlidir: bir müşteri hibrit gönderir Sadece Bir anahtarı tuttuğunda ve anahtarı tuttuğunda alıcının dekapsüle edebileceği kanıtıdır.Bir mesajın okumadığı birine post-kvantum olarak gönderildiği bir durum yoktur.

6Hibrit İnşaat

Değiştirilmemiş bir NIP-44 şifreleme metni iç tabakadır ve ML-KEM etrafında bir dış AEAD anahtarıdır:

inner = nip44_encrypt(plaintext, conversation_key(sender, recipient))

info  = "nymchat-pq2" || sender_secp_pk || recip_secp_pk || kem_ct || recip_kem_pk
prk   = HKDF-Extract(salt = "nymchat-pq2-v1", IKM = kem_ss)
key   = HKDF-Expand(prk, info || "key",   32)
nonce = HKDF-Expand(prk, info || "nonce", 12)

outer = ChaCha20-Poly1305(key, nonce, plaintext = inner, aad = info)

payload = "pq2." || base64url(kem_ct) || "." || base64url(outer)

Mesajı okumak için her iki sır da kurtarılmalıdır: dış tabaka sadece bir NIP-44 şifreleme metni üretir ve bu açılımın klasik ECDH'ye ihtiyacı vardır. secp256k1'i kıran bir kuantum rakip, iç anahtarı alır ve hala ML-KEM'le karşı karşıya kalır; ML-KEM'in kırılması dış tabakayı keser ve NIP-44'i ayakta bırakır.

Alıcının ML-KEM anahtarı uzun ömürlüdür, ancak her mesaj bağımsız bir şifreleme metni taşır ve bu nedenle bağımsız bir şifreleme metni taşır. kem_ssBu, nonce'yi randomize etmekten ziyade iletmekten kaynaklanan şeydir: Çanakkale20-Poly1305 Yorumları Anahtar, anahtar (nonce) çiftini yeniden kullanarak kırılır ve burada anahtar her mesaj için kendisi yeni, böylece hiç bir çift tekrarlanamaz.

6.1 Neden katmanlar ayrı kalır

Alternatif, her iki sırı tek bir konuşma anahtarına karıştırmak ve NIP-44'e göndermektir:

ck = HKDF-Extract(salt = "…",
                  IKM  = ecdh_x || kem_ss || …)          // do not do this

Bu yapı kriptografi gibi geliyor. Tek bir yapısal sorun var: ihtiyacı var. ecdh_xÇanakkale Çanakkale Çanakkale Çanakkale Çanakkale Çanakkale Çanakkale Çanakkale Çanakkale Çanakkale Çanakkale Çanakkale Çanakkale (NIP-07) veya uzaktan imzalı (NIP-46Bu, çağrıcının adına NIP-44'ü gerçekleştirir ve anahtarı, uygulamanın ulaşamayacağı bir yere tutmanın tüm noktası olan bir şifreleme metni geri verir.

Bu nedenle, sırları karıştırmak, kimlik anahtarını bir imzacı içinde tutan her oturum açmayı dışlar, yani en dikkatli kullanıcıları, ve anahtar kaynaklı üzerinde yapılan hiçbir çalışma onu değiştiremez. Layering bağımlılığı ortadan kaldırır: NIP-44 bütün kalır ve kimlik anahtarını tutan, imzacı da dahil olan her şey tarafından üretilirken, KEM yarısı doğrudan müşteri tarafından tutulan kurtarma kodundan hesaplanır.

ML-KEM şifreleme metni 1.088 byte ve her mesajda, base64url-kodlanmış 1.451 karakterde sürer; dış AEAD, 16 byte Poly1305 etiketini ekler ve NIP-44 payload'ı üçüncü katına çıkarır. 50 karakterli bir mesaj 176 byte'den 1.712'e, 2.000 karakterli bir mesajda 2.820'den 5.238'e yükselir.

6.2 Kendi kendini tanımlayan payloads

ve pq2. Prefiks, dağıtımı arttırıcı hale getirir: kendini tanımlayıcıdır, böylece bir müşteri, bir etiketin güvenilmesinden veya bir meslektaşın neyi desteklediğini hatırlamaktan ziyade kullanışlı yükü inceleyerek şifreleme yolunu seçer. bir öncülük tanımayan bir okuyucu, bu kullanışlı yükü yanlış okuma yerine açmaz ve her iki tarafın önünde mühürlenmiş mesajlar, sıradan NIP-44 gibi post-kvantum olarak okunabilir kalabilir.

Anlamlı reddetme

ML-KEM dekapsülasyonu asla başarısız olamayacak şekilde tasarlanmıştır: kötü şekillenen bir şifreleme metni verilmişse, Fujisaki-Okamoto dönüştürücüsü bir hatadan ziyade bir hataya göre belirgin bir şaşırtıcı sırrı döndürür. Yanlış bir anahtar KEM katmanında hiçbir şekilde yüzeye çıkmaz - NIP-44 içinde bir HMAC başarısızlığı olarak yüzeye çıkıyor, bu da yanlış bir klasik anahtar yüzeyi gibi. Çağrıcılar her ikisini de aynı şekilde tedavi eder, bu nedenle başarısızlık hiçbir ayırt edici sinyal taşımaz. Aynı zamanda Bölüm 9.1'in aday listesini de işlevsiz kılan şey budur: bir müşteri her anahtarı tersine dener ve NIP-44'in hang

6.3 Hediye paketin her iki katmanında

A NIP-17 Özel Mesaj A NIP-59 hediye ambalajı: İmzalanmamış bir söylenti, gönderenin kimlik anahtarı altında mühürlenmiş (şekil 13), daha sonra her mesaj için oluşturulan atılan bir anahtar altında ambalajlanmış (şekil 1059). doğrudan kimlik anahtarını tutan bir giriş üzerinde, Nymchat her iki katmanı hibritize eder, her biri kendi kapsülasyonuyla.

A hybrid NIP-59 gift wrap: the rumor sealed under the sender's key, that seal wrapped under a per-message ephemeral key, both layers carrying a NIP-44 ciphertext inside a post-quantum AEAD. kind 1059 — wrap  ·  signed by a per-message ephemeral key content = pq2.<kem_ct>.<aead>   inner = NIP-44(eph, recip)   outer key = ML-KEM(recip) kind 13 — seal  ·  signed by the sender's identity key content = pq2.<kem_ct>.<aead>   inner = NIP-44(sender, recip)   outer key = ML-KEM(recip) rumor — unsigned the message: kind, content, tags, author pubkey unsigned on purpose — a signature would be portable proof
Her iki şifreleme tabakası, her biri bağımsız bir ML-KEM kapsülasyonuyla hibrittir.Dış tabaka bir atılabilir sıra kilitlenmiştir, bu nedenle ambalaj göndericiyi ortaya çıkarmaz.

Bir imzacı oturum açma sadece dış katman alır. Şemsiye, imzacı tarafından sıradan NIP-44 olarak üretilir - uygulama bunu yapan anahtarı asla göremez - bu yüzden yerinde hibritize edilemez. Bu, ilgili saldırıya karşı hiçbir maliyeti yoktur: şemsiye sadece sarmal aracılığıyla erişilebilir ve şemsiye bir kayıt cihazının depoladığı şeydir. Kayıtlı trafiği tutan bir rakip, bir şemaya bile saldırmak için görünür olmadan önce ML-KEM'yi kırmalıdır.

7Grup mesajları ve kısmi kapsama

Bir grup mesajı tek bir şifreleme metni değildir. Her üyeye gönderilen aynı basit metintir, her kopya, o üyenin kendi ML-KEM anahtarına kapsül edilmiştir. Bir anahtarı yayınlayan bir üye hibrit bir ambalaj alır; olmayan bir klasik ambalaj alır.

Bu, naif bir uygulamanın yanlış gittiği bir muhasebe sorunu yaratır. on üyeden sekizinin hibrit bir kopyasını aldığında, mesaj Olumsuz Bir rakibin tüm onda aynı olan bir basit metnin klasik bir kopyasına ihtiyacı vardır, bu nedenle mesaj yalnızca Her kopyası da var.

Bu nedenle, Nymchat, fan-out sırasında mesaj başına kapsamı izler - sayısı sadece ambalajların oluşturulduğu sürece bilinebilir - ve badge, mesajın korunduğunu iddia etmek yerine, 10 üyenin 8'ine kuantum dirençli olduğunu bildirir. Alınan grup mesajı (sadece gönderici fan-out sayar), arayüz tam koruma yerine kısmi raporlar.

7.1 Kalite raporları

Kalkan Hakkında Gerçeği Söylüyor MesajıOnu gönderen yazılım hakkında değil:

Karar, mesajın daha sonra bir meslektaş tarafından duyurulanlardan yeniden hesaplandığı yerine mühürlendiğinde kaydedilir.Şimdi var olan şifreleme metni, eskisinden daha iyi korunamaz ve eski mesajları yeni bir duyurunun gücüne geri çeviren bir arayüz, bir iletken üzerinde bajtlar hakkında yanlış bir şey iddia eder.

Yukarıdaki grup kuralları, bunları değiştirmek yerine üstünde duruyor: Bir grup iletisi yalnızca her üyenin kopyası olduğu zaman tam olarak korunur ve kapsama sayısı olmayan alınan grup iletisi kısmi gösterir.

8Kendi kendine gönderilen kopyalar

Bir müşteri depolayan birkaç şey, kullanıcının kendi kimliğine şifrelenir: senkronize ayarlar, konuşma listesi, grup anahtarları ve mesaj arşivi. Bunlar, kullanıcı hakkında çoğu tek mesajdan daha fazlasını taşımaktadır, bu nedenle bunları klasik bırakmak, mesajların kendileri ne kadar dikkatli bir şekilde mühürlendiğine bakılmaksızın en zayıf depolanan eserler haline getirir. Aynı hibrit, kullanıcının kendi kök kaynaklı anahtarına kapsül edilmiştir - Bölüm 3.2'de açıklanan bir istisna ile, nymchat-pq-root Tek başına üretebileceği bir anahtarın altında mühürlenemez.

Bir ayar blob veya bir arşiv satırı yıllarca tek bir yerde oturur, bu tam olarak bir hasat- şimdi-decrypt-sonraki rakip topladığı şeyin şekli - kullanıcının kendi zihninde en azından geçici olan herhangi bir tek mesajdan çok daha fazladır.

Bir kısıtlama burada anahtar yerine biçimi yönetir. Her Her bir cihaz, duyurusu taşıdığı listede açabileceğini reklam eder ve hesabın sadece hepsinin okuyabileceği şeyi yazar. başka bir şey yazmak, bir cihazı kendi ayarlarından kilitler - aynı sessiz başarısızlığı Bölüm 3.2 başka bir yoldan kaçırır, farklı bir yönden geliyor.

Söylemeye değer bir sınırlama

Kimliği tutan bir cihaz, ancak kökü tutmayan bir cihaz, kendi ayarlarını da dahil olmak üzere, kökden kaynaklanan anahtar için mühürlenmiş herhangi bir şeyi açamaz.Bu, bilinçli bir sonuçtur, bir denetim değildir ve bu nedenle Bölüm 3.3'te yeni bir kök yerine bağlantı için böyle bir cihaz talimatı vardır: ikinci bir kök blob'u okunabilir hale getiremez, yalnızca kimliğin anahtarını ikiye bölür.

Bir tarayıcı uzantısını veya uzaktan imzalayıcıyı (NIP-46) çalıştıran bir aygıt, iletmek için bir nsec tutmaz, ancak kurtarma kodu tutar ve Bölüm 6.1'in katmanlı yapısı altında tüm post-kvantum yarısı gereklidir: imzacı her zaman olduğu gibi NIP-44 katmanı üretir ve müşteri dış katmanı kendisi anahtarlar.

9rotasyon

ve epoch Dövizdeki sayacı, yeni anahtar malzemesi olmadan dönmeyi mümkün kılan şeydir. artırmak, aynı kökten ve yeniden yayınlanan bir duyurudan yeni bir anahtar çiftini verir; meslektaşlar, değiştirilebilir kayıttan yeni anahtarı alır.

9.1 Eski çağlar saklanır ve hiçbir şey yeniden şifrelenmez

Bir anahtar dönerken hiçbir şey yeniden yazılmamaktadır. bir müşteri, güncel çağdan &minus; 3'e kadar olan şifre çözme adaylarını oluşturur, böylece bir dönüşün hemen önce mühürlenmiş bir mesaj hala gönderildiğinde güncel olan anahtar çiftine karşı açılır.

Bu pencere, dönüşü tamamen güvenli kılan şeydir: olmadan, her dönüş, uçuşta ne olursa olsun bozulurdu. zaten kapalı olan her şey, kimliğin ömrü boyunca okunabilir kalır, çünkü kullanıcının açamayacağı bir mesaj, geri dönüşle koruması mümkün olmayan bir mesajdan daha kötüdür (Bölüm 10.5).

10Neyi koruyamıyor

Sadece bir tasarımın elde ettiğini listeleyen bir makale, bir sistemin tanımlanmamasıdır ve bir arayüzde bir güvenlik özelliğini aşırı derecede değerlendirmek, bunu bırakmaktan daha kötüdür.

10.1 Kök ikinci bir sırdır ve kaybetmek geri kazanılamaz.

Bu tasarımın gerçek fiyatıdır. Kullanıcının tam olarak tutması gereken bir şeye sahip olması gerektiği Bölüm 2'deki kısıtlama yerine getirilemez: nsec tek başına post-quantum anahtarı yeniden yapılandırmaz, çünkü tüm nokta, hiçbir kamu değerinin ve başka hiçbir sırın onu ortaya çıkarmadığıdır. Eğer herhangi bir cihaz kök tutmaz ve Bölüm 3.2'deki herhangi bir ambalaj açılamazsa, kökden kaynaklanan anahtarın kapalı malzeme geri kazanılmaz.

Manuel aktarma tek yol ile, bu ilk okuduğundan daha nettir. nympq1… Kod herhangi bir yerde tam olarak bir kopyası vardır, tek bir cihazda ve bu cihazı kaybetmek her post-kvantum mesajını, ayarları blob ve arşiv satırını kaybeder. nsec Bu işe yaramıyor; bütün tasarımın temeli budur.

Bir saldırgan, mevcut en ucuz yolu saldırır, bu nedenle bir şema, en zayıf kurtarma yolunun değeri kadar değerlidir - örneğin, unutulmaz bir şifre cümle, şifre cümlesinin değeri ne olursa olsun tüm şeyi koyacaktır ve şifre çizgisi tam olarak bir hasat- şimdi-kayıp-sonraki rakip topladığı ve boş zamanlarda çevrimdışı kesilen eserdir.

10.2 Gizlilikten farklı olarak kimlik doğrulama

Nostr'daki her imza, secp256k1'in üzerinde Schnorr'dur ve bu burada değişmiyor. Kuantum bilgisayarı ile bir rakip imzaları ifşa edebilir ve gerçek zamanlı olarak bir kullanıcıyı taklit edebilir. Hibrit anahtar değişiminin yenilgisi, daha sonra hasat-now-decrypt: günümüzde trafiği kaydeden bir saldırgan daha sonra okumayabilir. Mesajı zaten makineye sahip bir rakibin karşısında unutulmaz hale getirmez. Bu farklılık uygulamaya kasıtlı bir şekilde taşınır - padlock göstergesi kimlik doğrulamayı bildirir, kilit gizliliği bildirir ve bir mesajın birbirine sahip olabileceğinden ayrı glyphlerdir.

Ayrıca Bölüm 4'teki duyurunun vaat edebileceği şeyleri sınırlandırır.NPUB ve ML-KEM anahtarları arasındaki bağ, secp256k1 imzasıdır, bu nedenle bu anahtarları yalanlayabilen bir rakip kendi anahtarını değiştirebilir. Gelecekteki bir rakibin gizliliği, bir rakibin doğruluğuna göre aynı değildir.

10.3 Metastazlar

Göndericiyi, alıcıyı tek bir şeyin ötesinde gizler. p Etiket, iç mesajın türü ve zaman çubuğu. Bir olayın varlığını, büyüklüğünü veya ne zaman bir iletiyi aldığını gizlemez. Trafik analizi bu tasarımın herhangi bir parçası tarafından ele alınmaz.

4.3 Offline Mesh Kullanımı

Nymchat'in Bluetooth ağ taşımacılığı, kendi el çekişiyle ayrı bir protokoldür ve bu çalışma kapsamına alınmaz.

10.5 Daha önce gönderilen mesajlar

Ciphertext kaydedildiği sürece her iki taraf da hala klasik kalır klasik kalıcı. zaten var ve yeniden mühürlenemez. koruma her iki tarafın post-kvantum anahtarları tuttuğu mesajda başlar, özelliği açtığı anda değil.

11Düşünülen alternatifler

yaklaşımneden olmasın
Post-quantum anahtarını kimlik anahtarından çıkarın Derivasyon, nsec üzerinde kamuya açık bir algoritmadır ve bir kuantum rakibi, yayınlanan npub'dan nsec'i geri kazanır, böylece klasik yarısını onunla post-kuantum yarısının üzerinde kırar.
NIP-44 üzerinden root'u kullanıcının diğer cihazlarına gönderin Klasik-sadece şifreleme altında iletilen bir kök, o mesajı kaydeden ve daha sonra anahtarını kıran herkes tarafından kurtarılabilir, yani kökün durdurmak için var olan rakibi.
Her cihazda ayrı ayrı üretilen bir ML-KEM tuş çubuğu Onaylanmış. Cihazlar farklı dekapsülasyon anahtarları taşıyacak ve her kimlik için bir değiştirilebilir bildirim bunların hepsini taşıyamayacaktır. Eşler, en son yayınlanan anahtarın hangi anahtarı olursa olsun, şifreleyecek ve diğer her cihaz sonuçları okumayacaktır.
Bir PIN'in altındaki kökü döşeme Dört rakamlı bir PIN, iki 256-bit yolun yanı sıra sunmak, en zayıf döngünün değerini yanlış ifade eder.
NPUB'u her iki anahtarı da taşıyın 1,184 bayt, paylaşılabilir bir tanımlayıcı değildir ve 32 bayt olarak tanımlanan bir adresin mevcut Nostr istemcisinin her analizini bozar.
Anahtar Yönetici Hizmetleri Arama sonuçlarına cevap veren kişi, mesajı kim okuyabilir karar verir.
Her mesajın anahtarını ekleyin Hiçbir şey çözmez: Göndericinin ihtiyacı Alıcının İlk mesajdan önce anahtar, bu da tam olarak önceki mesajın taşınması olmaksızın olduğu durumdur.
In-band görüşme yeteneği Bir kapasite bayrağı çıkarabilen bir saldırgan, klasik yolunu zorlar.
Sadece Post-Quantum, Klasik Ayak Yok Çok daha genç bir ilkelin karşılığında secp256k1'in on yıl süren analizini atar. ikisi birden Fail Oldu

12Uygulama Paritesi

Nymchat, bu yapının iki bağımsız uygulamasını sunar - bir web uygulaması için JavaScript'te, birisi mobil uygulamalar için Dart'ta, örneğin, baştan sona bir ML-KEM-768 portu.

Dart ML-KEM uygulaması resmi yetkililere karşı doğrulanıyor ACVP için Sıfırlama Sıfırlama Sıfırlama Sıfırlama Sıfırlama Sıfırlama (ML-KEM-*-FIPS203) — 25 anahtar jenerasyon, 25 kapsülasyon ve 10 kapsülasyon durumları, kendi paketleri olarak çalıştırılır. Bunlar, NIST'in bir uygulamanın onaylanması için yayınladığı vektörlerdir, bu nedenle bunları geçmek, portun doğru olduğunun kanıtıdır, sadece iki müşteri birbirleriyle aynı fikirde olduğunun kanıtı değildir. Bunun ötesinde, test vektörlerinin ortak bir fikstürü - tohum kaynakları, kapsülasyon, hem payload formatları, hem de tam hediye paketleri - JavaScript referansından oluşturulur ve her iki test paketleri tarafından kontrol edilir. kök sırrı, onu değiştirmek yerine bu fikstürü genişletir: kök tohum, kök tohum, kök parça, kökün halka açık parmak izi ve dış katmanın kaynaklı anahtar, nonce ve ilişkili veriler kendi nympq1… Her iki uygulamada bir farklılık, diğer bir istemcinin açamayacağı bir iletiyi üretmek yerine build'u başarısız hale getirir.

Parmak izi bunlardan biri olarak adlandırılmaya değer. bir cihazın &ldquo;bu &ldquo;dan tuttuğum kök olduğunu söyleyeceği şey &ldquo;bu farklı bir biridir; ve başka bir müşterinin parmak izini tekrarlayamayan bir müşteri, hiç bir kayıt gibi mükemmel bir kayıt okuyacaktır - ve daha sonra, Bölüm 3.3'ü takip ederek, ikinci bir kök atar ve kimliği bölür.

Nymchat Hakkında Açık Kaynak AGPL-3.0 altında. burada açıklanan kriptografik çekirdek js/nym-crypto.js Ve js/modules/pq.js web sitesinde, ve lib/core/crypto/ ile lib/features/identity/pq_registry.dart Mobil müşteriler için.

Daha kısa, teknik olmayan açıklamalar için, bakınız Quantum-Resistant Encryption Hakkında Bilgi Bankası.