Baza znanja: kvantno otporno šifriranje

Nymchat tehnički whitepaper

Post-kvantni ključni sporazum u Nymchatu

Distribucija ML-KEM-768 javnih ključa preko Nostra bez direktorijuma ili registra, i sijanje ih iz tajne koju nijedna javna vrijednost ne otkriva.

verzija 1.0 kolovoz 2026. Primjenjuje se na Nymchat 3.74+

Dodavanje post-kvantne razmjene ključa na glasnika uglavnom nije problem kriptografije. Primitivi su standardizirani, a knjižnice postoje. Drugi Ovaj članak opisuje kako Nymchat odgovara na to - odakle dolazi drugi ključ, kako dođe do ljudi koji ga trebaju, i što je sučelju dopušteno tvrditi o rezultatu - i, u posljednjem odjeljku, što taj rezultat ne štiti.

1Problem je

Naše privatne poruke su šifrirane s NIP-44Polovica koja prevladava u jednostavnom tekstu – ChaCha20 s HMAC-SHA256 oznakom, ključano kroz HKDF (RFC 5869) – nije smisleno ugrožen kvantnim računalom; Groverov algoritam košta kvadratni korijen ubrzanja protiv simetričnog ključa, a 256 bita to apsorbira. suglasni na ključu je eliptička krivulja Diffie-Hellman preko Sljedeći Članak Secp256k1, a Shorov algoritam rješava diskretni logaritam izravno. oporavak jednog privatnog ključa od svog javnog kolege retroaktivno otkriva svaku zajedničku tajnu koju je ključ ikada proizveden.

Prijetnja koju to stvara nije odgođena dok takva mašina ne postoji. Neprijatelj s pohranjivanjem može danas zabilježiti šifrirani tekst i dešifrirati ga kad god dođe sposobnost. Sve što je sada poslano što je još uvijek važno tada je već ugroženo. Ovo je specifičan napad koji post-kvantna razmjena ključa gubi, i to je razlog zašto rad ne može čekati da se mašina izgradi.

1.1 Pitanje na koje ovaj članak odgovara

Sljedeći članakKako se riješiti neugodnih situacija u Hrvatskoj: Sljedeći članakKako se riješiti neugodnih situacija u Hrvatskoj: Sljedeći članakKako se riješiti neugodnih situacija u Hrvatskoj: Sljedeći članakKako se riješiti neugodnih situacija u Hrvatskoj: Sljedeći članakKako se riješiti neugodnih situacija u Hrvatskoj: Sljedeći članakKako se riješiti neugodnih situacija u Hrvatskoj: Sljedeći članakKako se riješiti neugodnih situacija u Hrvatskoj: Sljedeći članakKako se riješiti neugodnih situacija u Hrvatskoj: Sljedeći članakKako se riješiti neugodnih situacija u Hrvatskoj: Sljedeći članakKako se riješiti neugodnih situacija uSljedeći: FIPS 203To odmah dovodi do problema distribucije:

Pitanje

Dodajte post-kvantnu razmjenu i trebate drugu – njezin ML-KEM javni ključ.

NPUB je samostalni ključ. Možete ga napisati na papiru, čitati ga glasno ili skenirati s zaslona, a to je sve što vam netko treba šifrirati. ML-KEM-768 javni ključ je 1,184 bajta. Ne može se čitati glasno, neće se uklopiti u korisničko ime i ne pripada QR kodu pored identiteta koji je samo 32 bajta.

Teži dio je u tome što drugi ključ donosi tri različita problema, a ostatak ovog članka je u velikoj mjeri odgovor na njih:

2Ograničenja dizajna

Četiri ograničenja oblikovala su odgovor, a oni isključuju većinu očitih dizajna prije nego što je bilo koji kod napisan.

  1. Što je moguće manje tajni. Naši korisnici već nose točno jednu tajnu, nsec. Svaka dodatna tajna je još jedan način da izgubite svoju povijest, a netko tko zna kako rezervirati nsec neće znati rezervirati ništa drugo. Odjeljak 3.1 pokazuje da se ova ne može ispuniti izravno – post-kvantni ključ koji potječe iz nsec-a uopće ne pruža post-kvantnu zaštitu – tako da dizajn troši točno jednu tajnu i ništa više: jedan komad ključnog materijala, generiran jednom po identitetu, predstavljen u istom obliku kao i nsec i na istom mjestu, tako da tko zna kako zadržati jedan zna kako zadržati drugi.
  2. Nema ovlasti Ne postoji poslužitelj na kojem se može pouzdano reći koji ključ pripada kome.
  3. Mnogo uređaja, jedan identitet Bez obzira na to koji ključni materijal postoji, mora završiti identičan na svim njima, a staze koje ga tamo nose ne moraju same biti čitljive protivniku protiv kojeg se funkcija brani.
  4. Bez pregovora Svaka razmjena “ koje cifre podržavate?” je površina koju napadač može obrisati kako bi prisilio slabiju opciju.

3Neovisna tajna korijena

Odluka koja nosi teret je da je ključ za dekapsulaciju ML-KEM zasićen od ključnog materijala koji ne otkriva nikakva javna vrijednost.

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)

Korijen je korisniku predstavljen na način na koji je nsec: Beč32 Sljedeći Članak Čovjek-čitljivi prefix nympqTako se čita kao nympq1…, prikazan pored nsec na zaslonu identiteta iza iste otkrivanje interakcije, kopiran s istim kontrolom, nikad prijavljen i nikad poslan nigdje u jasno.

Sol je namjerno odvojena od domene, tako da nijedna druga tajna nikada ne može izvući isti ključ. epoch Sljedeći Članak Rotacija motora (odjeljak 9).

3.1 Zašto ključ ne može biti izveden iz ključa identiteta

Očigledan dizajn je zasijati tipkovnicu iz tajne koju korisnik već ima:

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

To je privlačno iz četiri razloga, svi su stvarni: ništa novo za backup, jer je nsec već backup; svaki uređaj koji se slaže po izgradnji, bez protokola sinhronizacije da pogreši; jedna zamjenjiva objava po identitetu je očito točna, jer uređaji ne mogu se složiti o ključu; i ključ koji postoji prije nego što je ikada objavljen, tako da klijent može zapečatiti nešto za sebe na prvi pogled.

Sve četiri prednosti su bezvrijedne, iz jednog razloga. Shorov algoritam radi protiv objavljenog npuba daje nsec. Derivacija sjemena je javni algoritam nad nsec. Dakle, protivnik koji razbije klasičnu polovicu rekonstruira post-kvantnu polovicu pokretanjem istog HKDF-a koji svi drugi rade. Protiv žetve-sada-dešifriranje-kasnije - jedna prijetnja funkcija postoji da se zaustavi - ključ dobiven na ovaj način ne dodaje ništa.

Pravilo je da sve slijedi od

ML-KEM ključ za dekapsulaciju mora dolaziti iz entropije koja se ne može izvesti iz nsec-a niti se ikada prenosi pod klasičnom samo šifriranjem.

Neovisno generirana tajna koja se zatim sinhronizira između korisnikovih uređaja unutar obične NIP-44 poruke je isti neuspjeh s dodatnim koracima: protivnik danas beleži tu poruku i oporavlja svoj klasični ključ kasnije, a korijen izlazi.

3.2 Prenos korijena na druge uređaje korisnika

Ograničenje 3 odjeljka 2 - jedan identitet, nekoliko uređaja - ne može se zadovoljiti aritmetikom ovdje, jer cijela stvar je da ključ nije funkcija bilo čega što uređaji već dijele. nympq1… Kodiranje u sebi.

Korijen je prikazan kao nympq1… pored nsec-a, a drugi uređaj prihvaća da je umetnut u istu ploču. To je cijeli mehanizam.

Pravilo u odjeljku 3.1 kaže da korijen nikada ne može putovati pod klasičnom samo šifriranjem, a svaki mehanizam koji bi to automatizirao – sinhronizirajući ga kroz relaj, omotajući ga na ključ identiteta – krši upravo to.

Format ostavlja prostor za upakiranu stazu: zapis može nositi popis upakovanja, svaki AEAD blob pod ključem koji korisnik može reproducirati na drugom uređaju - na primjer, izlaz PRF-a passkey. nympq1… Odjeljak 10.1 navodi koliko to košta.

Sam zapis živi u svojoj kategoriji postavki, nymchat-pq-rootČak i ako ne nosi obloge, ona obavlja potrebni posao: njezina prisutnost je kako drugi uređaj saznaje da taj identitet već ima korijen, što ga zaustavlja od pretvaranja na rivala (odjeljak 3.3).

Napomena o dizajnu: jedna kategorija koja ne može koristiti novi ključ

Naš nymchat-pq-root Kategorija mora ne Taj red nosi jedinu kopiju korijena, tako da ga zapečaćivanje pod ključem koji proizlazi iz korijena je ključ čiji je ključ unutar kutije: nijedan uređaj ga nikada ne bi mogao otvoriti, uključujući onoga koji ga je napisao.

Svaka druga kategorija postavki može i treba koristiti ključ korijena.To je jedini izuzetak, a to je iznimka o kružnosti, a ne o snazi.

3.3 Generacija i usvajanje

Na boot, držeći trajni identitet, klijent radi u ovom redoslijedu:

  1. Potražite postojeće nymchat-pq-root Rekord je
  2. Pronađen zapis, a ovaj uređaj ga može otključati - usvojiti ga i objaviti taj identitet kao postkvantno sposoban.
  3. Pronađen zapis, a ovaj uređaj ga ne može otključati – ne generirajte novi korijen i uopće ne objavljujte nikakvu obavijest. nympq1… Kodiranje na uređaju koji ga već ima.
  4. Bez rekorda — generirati korijen, objaviti zapis, najaviti i prikazati nympq1… Korisniku se šalje jedan kod kako bi ga mogao sačuvati.

Korak 3 je korak koji je lako pogriješiti, i to je razlog zbog kojeg je redoslijed zapisan umjesto ostavljen na svaku implementaciju.Dva uređaja koja svaka odluči generirati korijen proizvode dva neovisna korijena pod jednim identitetom, a to je neuspjeh koji ovaj redoslijed postoji da spriječi.

4Obavijest o sposobnosti

Javna polovica izvedenog ključnog para objavljuje se kao adresabilna Sljedeći NIP-01 događaj — vrsta 30078, označeno 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": [ ... ]
  }
}

Addressable znači da relay drži jedan događaj po (kind, pubkey, d-tag), tako da republike zamjenjuje prethodnu najavu na mjestu.

Potpis je obvezujući. Događaj je potpisan identitetnim ključem, tako da je tvrdnja &ldquo;ovaj ML-KEM ključ pripada ovom npub&rdquo; je točno jednako jak kao i npub sam. Zamjena različitog ključa enkapsulacije zahtijeva kovanje secp256k1 potpis. Napadač koji to može učiniti ne mora se brinuti s KEM.

Obavijesti su istekle. Sedmi dan NIP-40 Izostanak, ponovno objavljen svakih 24 sata, vodi evidenciju izjave o klijentu koji još uvijek radi, a ne onaj koji je nekada bio.

Propuštena objava čita se baš kao ona koja nikada nije nosila ključ: kolege šalju obični NIP-44, koji svaki login može čitati, a klijent nastavlja post-kvantnu razmjenu na svojoj sljedećoj poveznici, kada ponovno objavljuje.

Bez jednog, zapis nadživi ključ koji naziva: uređaj koji je izbrisan, resetiran ili ima svoj korijen zamijenjen ostavlja stajan uputstvo da se ukapsulira na ključ koji nitko više ne drži, a poruke poslane ispod njega se gube bez greške na bilo kojoj strani.

Ključno polje naziva svoj format. Polje je pk2, a brojka je dio ugovora umjesto dekoracije: naziva format korisnog opterećenja s kojim se ključ može koristiti. Čitatelj koji ne prepoznaje polje zaključuje &ldquo;Nymchat klijent, nema post-kvantni ključ&rdquo; i šalje uobičajeni NIP-44, koji svaki login može pročitati. To je ispravan smjer neuspjeha, i vrijedi navesti kao pravilo format broja postoji za izvršenje: nepoznati zahtjev za sposobnost mora koštati zaštitu, nikada dostavu.

4.1 Odsutnost je značajna i trostruko ocijenjena

Subtilan, ali važan detalj: objavu objavljuje svaki Nymchat klijent, ne samo oni koji su post-kvantno sposobni, a ključno polje je neobvezno.

promatranSredstvaPošaljite ponašanje
Obavijest s ključem Nymchat, post-kvantno sposoban Hibridni
Obavijest, uopće bez ključa Nymchat, klasična samo - post-kvantno isključeno, ili uređaj još nije povezan s korijenom identiteta Klasični NIP-17
Bez najavljivanja Nepoznati klijent. mogao biti bilo koji Nostr ili Bitchat korisnik Klasična, plus kompatibilnost

Oznaka bez ključa je potpisana izjava da pošiljatelj pokreće Nymchat, što omogućuje da put pošiljanja preskoči spekulativni prekrižni protokol koji bi inače morao uključiti za svakoga tko ne može identificirati.

4.2 Uređaj koji ne može otvoriti korijen ostaje tiho

Obavijest je zamjenjiva: jedan događaj po identitetu, posljednji zapis pobjeđuje.To je ono što čini dizajn jednog zapisa, a to je također ono što čini nepovezan uređaj opasnim ako objavljuje.

Dakle, uređaj koji poznaje korijen postoji, ali ga ne može otvoriti, uopće ne objavljuje nikakvu obavijest.On nije slomljen i nije zaključan iz aplikacije: još uvijek čita svaku poruku za koju ima ključeve i još uvijek šalje klasično, dok potiče korisnika da ga poveže.

5Otkriće i odluka o slanju

Klijenti uče ključeve sugovornika na dva načina. Stalna pretplata pokriva ljude s kojima korisnik zapravo odgovara – otvorene razgovore i članove grupe – tako da njihove najave dolaze kao obični događaji. Za sugovornika koji se prvi put sastaju, upit se pokreće u vrijeme slanja, ograničen na 2,5 sekundi; ako se ne riješi, poruka ide klasična, što je ponašanje koje je postojalo prije dodavanja post-kvantnog, a ne novi način neuspjeha.

Korisnik koji povezuje novi uređaj, ili koji se kreće od pretraživanja proširenja na lokalni ključ, postaje post-kvantno sposoban u sredini razgovora, a trajno cached &ldquo;no&rdquo; bi ih držali na klasičnoj enkripciji za život oglasa.

5.1 Zašto nema napada na nižim razinama

Odluka o usmjeravanju smanjuje se na jedno pitanje:

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

Nema pregovora o mogućnostima, nema popisa podržanih algoritama i nema polja koje napadač može izbjeći kako bi prisilio na slabiji put. je Režim neuspjeha odvojene ili suzdržane najave je da poruka ide klasična - status quo prije ove značajke - umjesto da se hibridna poruka spusti na nešto lažno.

Obrnuto također drži i važnije: klijent šalje hibrid Samo kada drži ključ, a držanje ključa je dokaz da primatelj može dekapsulirati.Nema stanja u kojem se poruka šalje post-kvantno nekome tko je ne može čitati.

6Hibridna gradnja

Nymchat ne zamjenjuje NIP-44. Uključuje ga.Nemodificirani NIP-44 šifrirani tekst je unutarnji sloj, a ML-KEM ključi vanjski AEAD oko njega:

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)

Obje tajne još uvijek moraju biti otkrivene kako bi se čitala poruka: vanjski sloj donosi samo NIP-44 šifrirani tekst, a otvaranje koje treba klasični ECDH. Kvantni protivnik koji razbije secp256k1 dobiva unutarnji ključ i još uvijek se suočava s ML-KEM-om; razbijanje ML-KEM-a obriše vanjski sloj i ostavlja NIP-44 na mjestu.

ML-KEM ključ primatelja je dugovječan, ali svaka poruka nosi neovisni šifrirani tekst i stoga neovisni šifrirani tekst. kem_ssTo je ono što izvodi nonce umjesto da ga slučajno zvuči: ČaCha20-Poly1305 je prekinut ponovnom upotrebom (ključ, nonce) para, a ovdje je sam ključ novi za svaku poruku, tako da se nijedan par ne može ponoviti.

6.1 Zašto slojevi ostaju odvojeni

Alternativa je miješati obje tajne u jedan ključ za razgovor i dati ga NIP-44:

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

Ta konstrukcija zvuči kao kriptografija. Ima jedan strukturni problem: treba ecdh_x, sirova x-koordinata izlaza ECDH-a, kao ključni materijal - i proširenje preglednika (NIP-07) ili daljinski potpisnik (NIP-46Izvršava NIP-44 u ime pozivača i vraća tekst šifriranja, što je cijela točka držanja ključa negdje gdje aplikacija ne može doći.

Miješanje tajni stoga isključuje svaki login koji drži ključ identiteta u potpisniku, što znači da su najoprezniji korisnici, a nijedna količina rada na izvedenom ključu ga ne može promijeniti.

ML-KEM šifrirni tekst je 1,088 bajta i vozi na svakoj poruci, baz64url-kodiran na 1,451 znakova; vanjski AEAD dodaje 16-bitnu oznaku Poly1305 i proširuje NIP-44 korisno opterećenje koje obuhvaća za trećinu. Poruka od 50 znakova raste od 176 bajta do 1,712, a poruka od 2000 znakova od 2,820 do 5,238.

6.2 Samopopisni payloads

Naš pq2. Prefix čini razmještanje progresivnim: to je samo-opisivanje, tako da klijent odabire put za dešifriranje provjeravanjem korisnog opterećenja umjesto da vjeruje oznakama ili se sjeća onoga što kolega podržava. čitatelj koji ne prepoznaje prefix ne otvara taj korisni opterećenje umjesto da ga pogrešno pročita, a poruke zapečaćene prije obje strane mogu post-kvantno ostati čitljive kao obični NIP-44 bez migracije.

Implicitno odbijanje

ML-KEM dekapsulacija je dizajnirana tako da nikada ne propadne: s obzirom na pogrešan tekst šifre, Fujisaki-Okamoto transformacija vraća deterministsku pseudo-slučajnu tajnu umjesto pogreške. Pogrešan ključ stoga uopće ne izlazi na površinu KEM sloja – on se pojavljuje kao neuspjeh HMAC-a unutar NIP-44, što je na isti način kao i pogrešna klasična ključna površina. Pozivači tretiraju oba jednako, tako da neuspjeh ne nosi nikakav razlikujući signal. To je također ono što čini popis kandidata u Odjeljku 9.1 operativnim: klijent pokušava svaki ključ za redom i dopušta NIP-44 da kaže koji je bio ispravan.

6.3 Oba sloja darovnog omotača

A NIP-17 Privatna poruka je a NIP-59 Darovni omotač: neosiguran glas, zapečaćen pod ključem identiteta pošiljatelja (vrsta 13), a zatim obložen pod ključem za bacanje generiranim po poruci (vrsta 1059). Na prijavi koja drži ključ identiteta izravno, Nymchat hibridizira oba sloja, svaki s vlastitom enkapsulacijom.

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
Oba sloja šifriranja su hibridna, svaka s neovisnom ML-KEM enkapsulacijom. Vanjski sloj je ključan za tajnu koja se baca, tako da omotač ne otkriva pošiljatelja.

Prijava potpisnika dobiva samo vanjski sloj. Pečat proizvodi potpisnik kao običan NIP-44 - aplikacija nikada ne vidi ključ koji ga čini - tako da se ne može hibridizirati na mjestu. To ne košta ništa protiv napada u pitanju: pečat je dostupan samo kroz omotač, a pečat je ono što snimatelj skladišti. protivnik koji drži zabilježen promet mora prekinuti ML-KEM prije nego što pečat bude čak vidljiv za napad.

7Grupne poruke i djelomična pokrivenost

Grupna poruka nije jedan šifrirani tekst. To je isti tekst koji se šalje svakom članu, svaka kopija je ukapsulirana u vlastiti ML-KEM ključ tog člana. Član koji je objavio ključ dobiva hibridni omotač; onaj koji nema dobiva klasični omotač.

To stvara računovodstveni problem da naivna implementacija pogreši. Ako osam od deset članova dobije hibridnu kopiju, poruka je ne Protivnik treba jednu klasičnu kopiju jednostavnog teksta koji je identičan u svih deset, tako da je poruka zaštićena samo ako svaki To je kopija.

Nymchat stoga prati pokrivenost po poruci tijekom fan-out-a - broj je znatan samo dok se obloge grade - a badge izvještava &ldquo;kvantno otporan na 8 od 10 članova&rdquo; umjesto da tvrdi da je poruka zaštićena. primljena grupna poruka (samo pošiljatelj broji fan-out), sučelje izvještava djelomično umjesto potpune zaštite.

7.1 Što izvješćuje štit

Štit govori istinu o Poruka, a ne o softveru koji ga je poslao:

Presuda je zabilježena kada je poruka zapečaćena, a ne ponovno izračunata iz onoga što kolega oglašava kasnije. Ciphertext koji već postoji ne može postati bolje zaštićen nego što je bio, a sučelje koje je preoblikovalo stare poruke na snagu novog oglasa tvrdi nešto lažno o bajtima na prijenosu.

Pravila skupine iznad stack na vrhu toga, a ne zamijeniti ga: grupa poruka je u potpunosti zaštićena samo kada je primjerak svakog člana je, a primljena grupa poruka bez broja pokrivenosti prikazuje djelomično.

8Fotografije upućene samome sebi

Nekoliko stvari koje klijenti pohranjuju šifrirane su na vlastiti identitet korisnika: sinhronizirane postavke, popis razgovora, grupni ključevi i arhiv poruka. Ovi sadrže više o korisniku nego većina pojedinačnih poruka, tako da bi ih ostavljanje klasičnih učinilo najslabijim pohranjenim artefaktom bez obzira na to koliko su same poruke pažljivo zapečaćene. nymchat-pq-root kategorija, koja se ne može zapečatiti pod ključem koji samo ona može proizvesti.

Blob postavki ili red arhiva sjedi na jednom mjestu godinama, što je točno oblik stvari koju sakuplja protivnik žetve-sada-dešifrirani-kasnije - daleko više od bilo koje pojedinačne poruke, koja je barem efemerna u vlastitom umu korisnika.

Jedno ograničenje ovisi o formatu ovdje, a ne o ključu. svaki uređaj na računu, tako da svaki uređaj oglašava ono što može otvoriti u rasporedu koji nosi oglas, a račun piše samo ono što svi mogu čitati.

Ograničenje vrijedi reći

To je namjerna posljedica, a ne nadzor, i zbog toga Odjeljak 3.3 ima takav poziv uređaja za povezivanje umjesto da mješne svježi korijen: drugi korijen ne bi učinio blob čitljivim, samo bi podijelio ključni materijal identiteta na dva.

Uređaj koji pokreće proširenje preglednika ili daljinski potpisnik (NIP-46) ne drži nsec za izvlačenje, ali ima kod za oporavak, a pod složenom konstrukcijom Odjeljka 6.1 to je sve što post-kvantna polovica treba: potpisnik proizvodi NIP-44 sloj kao što uvijek ima, a klijent ključi sam vanjski sloj.

9Rotacija

Naš epoch Broj u izvedenju je ono što omogućuje rotaciju bez novog ključnog materijala. povećanje ga daje novi ključni par iz istog korijena i ponovno objavljenog oglasa; kolege uzimaju novi ključ iz zamjenjivog zapisa. rotacija stoga ne traži da korisnik nešto napiše drugi put: korijen se generira jednom po identitetu, a epoha vrti.

9.1 Stare epohe su sačuvane, a ništa nije ponovno šifrirano

Klijent gradi kandidate za dešifriranje od trenutne epohe do epohe &minus; 3, tako da se poruka zapečaćena neposredno prije rotacije još uvijek otvara protiv ključnog para koji je bio trenutan kada je poslan.

Sve što je već zapečaćeno ostaje čitljivo za život identiteta, jer je poruka koju korisnik više ne može otvoriti strogo gore za njih od one čija se zaštita ne može poboljšati retroaktivno (odjeljak 10.5).

10Što to ne štiti

Papir koji samo popisuje ono što dizajn postiže ne opisuje sustav, a pretjerivanje sigurnosne osobine u sučeljevu suštini je gore nego propuštanje.

Korijen je druga tajna, a izgubiti ga nije moguće.

To je stvarna cijena dizajna. Ograničenje u odjeljku 2. da korisnik treba imati točno jednu stvar da zadrži ne može se ispuniti: nsec sam ne rekonstruira post-kvantni ključ, jer je cijela stvar u tome da ga nema javne vrijednosti i nijedna druga tajna ne otkriva. Ako nijedan uređaj ne drži korijen i nijedno od omotača odjeljka 3.2 se ne može otvoriti, materijal zapečaćen na ključ korijena ne može se vratiti.

S ručnim prijenosom jedini put, to je oštrije nego što se može prvo čitati. nympq1… kod bilo gdje ima točno jednu kopiju, na jednom uređaju, a gubitak tog uređaja gubi svaku post-kvantnu poruku, postavke blob i arhivski red zapečaćen na njega. nsec ne pomaže; to je svojstvo na kojem se cijeli dizajn oslanja.

Napadač napada najjeftiniju dostupnu stazu, tako da je shema vrijedna onoga što vrijedi njezina najslabija staza oporavka - memorabilna fraza, na primjer, stavila bi cijelu stvar na ono što vrijedi fraza, a umotani red je upravo artefakt koji protivnik sakuplja i mljevenje offline u slobodno vrijeme.

10.2 Autentifikacija, kao razlika od povjerljivosti

Svaki potpis u Nostr-u je Schnorr nad secp256k1, a to se ovdje ne mijenja. Protivnik s kvantnim računalom mogao bi krivotvoriti potpise i pretvarati se da je korisnik u stvarnom vremenu. Što hibridna ključna razmjena porazi je žetva-sada-dešifriranje-kasnije: napadač koji danas bilježi promet ne može je pročitati kasnije. To ne čini poruku neoprostivom protiv protivnika koji već ima stroj. Ova razlika se namjerno prenosi u aplikacije - indikator padlock izvještava o autentifikaciji, štit izvještava o povjerljivosti, a oni su zasebni glyphs jer poruka može imati jednu bez druge.

Veza između npuba i ML-KEM ključa je potpis secp256k1, tako da protivnik koji ih može krivotvoriti može zamijeniti vlastiti ključ.

10.3 Metapodatke

Poklon pakiranje skriva pošiljatelja, primatelja izvan jednog p Tag, vrsta i vremenski žig unutarnje poruke. Ne skriva da događaj postoji, njegovu veličinu ili kada ga je prijenosnik primio.

10.4 Offline mreža

Nymchatov Bluetooth mrežni prijevoz je zaseban protokol s vlastitim rukovanjem, a to nije obuhvaćeno ovim radom.

10.5 Poruke koje smo već poslali

Ciphertext zabilježen dok su obje strane još uvijek bile klasične klasike trajno. To već postoji i ne može se ponovno zapečatiti. Zaštita počinje na poruci gdje su obje strane držale post-kvantne ključeve, a ne u trenutku kada je funkcija uključena.

11Razmatrane alternative

PristupZašto ne
Izvući postkvantni ključ iz ključa identiteta Odbijeno. Derivacija je javni algoritam nad nsec, a kvantni protivnik oporavlja nsec iz objavljenog npub-a, tako da razbija klasičnu polovicu ruku nad post-kvantnom polovicom s njom.
Pošaljite korijen na druge uređaje korisnika preko NIP-44 Korijen koji se prenosi pod klasičnom samo šifriranjem može vratiti svatko tko je snimio tu poruku i slomi njezin ključ kasnije, što je protivnik korijen postoji za zaustavljanje.
Jedan pojedinačno generirani ML-KEM ključni par na svakom uređaju Odbijeni. uređaji bi držali različite ključeve dekapsulacije, a jedan zamjenjiv oglas po identitetu ne može nositi sve. Peers bi šifrirali na koji ključ je objavljen posljednji, a svaki drugi uređaj ne bi mogao pročitati rezultat.
Uključite korijen pod PIN Odbijen. četveromjesečni PIN je oko 13 bitova protiv off-line napadača koji drži umotani red. Ponuditi ga pored dva 256-bitna puta pogrešno bi predstavljalo što je najslabija omotnica vrijedna.
Proširite npub kako biste prenijeli oba ključa 1,184 bajta nije identifikator koji se može dijeliti, a to bi prekinulo analizu adrese koja je definirana kao 32 bajta od strane svakog postojećeg Nostr klijenta.
Ključne usluge direktora Ponovno uvodi autoritet koji mreža postoji kako bi izbjegla.Tko god odgovori na pretraživanje odlučuje tko može čitati poruku.
Priložite ključ za svaku poruku Ne rješava ništa: pošiljatelj treba primatelja ključ prije prve poruke, što je upravo slučaj bez prethodne poruke da ga nosi.
In-band sposobnost pregovaranja Napadač koji može ukloniti zastavu sposobnosti prisiljava klasičnu stazu.
Samo postkvantno, bez klasične noge Odbaci desetljeća analize secp256k1 u zamjenu za mnogo mlađi primitiv. oba Neuspjeh

12Paritet provedbe

Nymchat isporučuje dvije neovisne implementacije ove konstrukcije - jednu u JavaScript-u za web aplikaciju, jednu u Dart-u za mobilne aplikacije, uključujući i port ML-KEM-768.

Dart ML-KEM implementacija je validirana protiv službenog NIST ACVP Sljedeći članakZnanstveni testovi za ML-KEM-768 (ML-KEM-*-FIPS203) – 25 ključnih generacija, 25 slučajeva enkapsulacije i 10 slučajeva dekapsulacije, pokrenuti kao vlastiti paket. To su vektori koje NIST objavljuje kako bi potvrdio implementaciju, tako da je njihovo prenošenje dokaz da je port točan, a ne samo dokaz da se dva klijenta slažu jedni s drugima. Osim toga, zajednička fiksacija testnih vektora – derivata sjemena, enkapsulacije, oba formata korisnog opterećenja i kompletnih darova – generirana je iz JavaScript reference i provjerena od strane oba test paketa. Korijen tajna proširuje tu fiksu umjesto da je zamijeni: korijen na sjeme, korijen na ključ, javni otisak korijena, te derivirani ključ, nonce i povezani podaci vanjskog sloja nympq1… Razlika u bilo kojoj implementaciji ne uspijeva izgraditi umjesto da proizvede poruku koju drugi klijent ne može otvoriti.

To je ono što govori uređaju &ldquo;to je korijen koji držim&rdquo; od &ldquo;to je drugačiji jedan&rdquo;, a klijent koji nije mogao reproducirati otisak prsta drugog klijenta čitao bi savršeno dobar zapis kao nikakav zapis uopće - a zatim, slijedeći Odjeljak 3.3, mete drugi korijen i podijeli identitet.

Nymchat je otvorenog izvora pod AGPL-3.0. Kriptografsko jezgro opisano ovdje je js/nym-crypto.js i js/modules/pq.js na web stranici klijenta, i lib/core/crypto/ s lib/features/identity/pq_registry.dart u mobilnim klijentima.

Za kraće, ne-tehničko objašnjenje, pogledajte Stranica baze znanja o kvantno otpornom šifriranju.