Teadmistebaas: kvantvastane krüpteerimine

Nymchati tehniline whitepaper

Post-Quantum võtme kokkulepe Nymchatis

ML-KEM-768 avalike võtmete levitamine Nostri kaudu ilma kataloogita või registrita ning nende külvamine saladusest, mida ükski avalik väärtus ei paljasta.

Versioon 1.0 2026. aasta august Kehtib Nymchati kohta 3.74+

Post-quantum võtmevahetuse lisamine sõnumitoojale ei ole enamasti krüptograafia probleem. primitiivid on standardiseeritud ja raamatukogud on olemas. Teine See artikkel kirjeldab, kuidas Nymchat vastab sellele - kust teine võti pärineb, kuidas see jõuab inimesteni, kes seda vajavad, ja mida liidesel on lubatud tulemuse kohta nõuda - ja viimases osas, mida see tulemus ei kaitse.

1Probleem

Meie privaatsõnumid on krüpteeritud NIP-44, millel on kaks eraldatavat poolteed. pool, mis kõverdavad lihtsat teksti — ChaCha20 koos HMAC-SHA256 märgiga, klõpsatud läbi HKÜD (RFC 5869 kohta) — ei ole kvantarvuti poolt tähenduslikult ohustatud; Groveri algoritm maksab sümmeetrilise võtme vastu ruudukujulise kiirenduse ja 256 bitti neelab seda. Nõustun võti on elliptiline kõver Diffie-Hellman üle Tüdrukud256k1, ja Shori algoritm lahendab diskreetse logaritmi otse.Ühe privaatvõti taastamine avalikust kolleegist tagasiulatuvalt paljastab iga jagatud saladuse, mida võti kunagi tekitas.

Selle tekitatud oht ei ole edasi lükatud, kuni selline masin eksisteerib. Vaenlane, kellel on salvestus, võib täna salvestada krüpteerimisteksti ja dekodeerida seda iga kord, kui võime saabub. Kõik, mis nüüd saadetakse, mis on veel tähtis, on juba ohustatud.

1.1 Küsimusele, millele see artikkel vastab

Mõistmine on hästi mõistetav: käivitage klassikalise vahetuse kõrval post-kvantvõtme kapslimehhanism, nii et ründaja peab mõlema lugemiseks murdma.Põltsamaa 203See tekitab kohe jaotusprobleemi:

Küsimus

Lisage post-kvantvahetus ja vajate teist – tema ML-KEM avaliku võtme.

NPUB on iseseisev. Võite kirjutada paberile, lugeda seda valjusti või skannida ekraanilt ja see on kõik, mida keegi vajab teie jaoks krüpteerimiseks. ML-KEM-768 avalik võti on 1,184 baiti. Seda ei saa lugeda valjusti, see ei sobi kasutajanimesse ja see ei kuulu QR-koodi peale identiteedi, mis on ainult 32 baiti.

Raskem osa on see, et teine võti toob kolm erinevat probleemi ja ülejäänud see paber on suures osas neile vastus:

2Disaini piirangud

Vastust kujundasid neli piirangut ja need välistavad enamiku ilmselgetest kujundustest enne koodi kirjutamist.

  1. Nii vähe saladusi kui võimalik. Meie kasutajad kannavad juba täpselt ühte saladust, nsec. Iga täiendav saladus on teistsugune viis oma ajaloo kaotamiseks ja keegi, kes teab, kuidas nsec-i varundada, ei tea, kuidas midagi muud varundada. jaotis 3.1 näitab, et seda ei saa täita otse – nsec-ist tuletatud post-kvantvõti ei paku mingit post-kvantkaitset üldse – nii et disain kulutab täpselt ühte saladust ja mitte rohkem: üksiku võtmaterjali tükk, mis on genereeritud üks kord identiteedi kohta, esitatud samal kujul kui nsec ja samas kohas, nii et igaüks, kes teab, kuidas hoida ühte, teab, kuidas hoida teist. jaotis 10.1 on aus, kui palju see veel maksab.
  2. Ei mingit autoriteeti. Ei ole ühtegi serverit, mida saab usaldada, et öelda, milline võti kuulub kellele.
  3. Mitmed seadmed, üks identiteet Ükskõik milline peamine materjal eksisteerib, peab lõppema kõigil nendel, ja teed, mis seda seal kannavad, ei tohi ise olla loetavad vastasele, kelle vastu funktsioon kaitseb.
  4. Ei ole läbirääkimisi. Igasugune bändi vahetus “milliseid kriteeriume te toetate?” on pind, mida ründaja saab lõigata, et sundida nõrgemat võimalust.

3Sõltumatu root saladus

Koormust kandev otsus on see, et ML-KEM-i dekapsulatsiooni võti on külvatud peamistest materjalidest, mida ükski avalik väärtus ei paljasta.

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)

Juur esitatakse kasutajale nii, nagu nsec on: Tüdrukud32 Inimese loetav prefix nympqNii et see loeb nagu nympq1…, näidatud kõrval nsec identiteedi ekraanil sama paljastada interaktsiooni, kopeeritud sama kontrolli, ei ole kunagi logitud ja ei ole kunagi saadetud kuhugi selge.

Sool on eesmärgipäraselt domeenist eraldatud, nii et ükski teine saladus ei saa kunagi sama võtmepaari. epoch Ümberpaigutamine rotatsiooniga (punkt 9 )

3.1 Miks võti ei saa pärineda identiteedi võtmest

Ilmselge disain on külvata võtmepaar saladusest, mida kasutajal juba on:

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

See on atraktiivne neljal põhjusel, kõik need on reaalsed: midagi uut varundada, sest nsec on juba varundus; iga seade, mis nõustub ehitusega, ilma sünkroonimisprotokollita, et see läheb valesti; üks asendatav teade identiteedi kohta on ilmselgelt õige, sest seadmed ei saa võtmega nõustuda; ja olemasolev võti, enne kui see kunagi avaldatakse, nii et klient saaks midagi endale esimest korda sulgeda.

Kõik neli kasu on ühel põhjusel väärtusetu. Shori algoritm, mis töötab avaldatud npubi vastu, annab nsec-i. Seemne derivaat on nsec-i üle avalik algoritm. Nii et vastane, kes katkestab klassikalise poole, rekonstrueerib postkvantilise poole, käivitades sama HKDF-i, mida kõik teised käitavad.

Reegel, et kõik tuleneb

ML-KEM dekapsulatsiooni võti peab pärinema entropiast, mis ei ole pärit nsecist ega edastatud kunagi ainult klassikalise krüpteerimise all.

Iseseisvalt loodud saladus, mis seejärel sünkroniseeritakse kasutaja seadmete vahel tavalise NIP-44 sõnumi sees, on sama ebaõnnestumine täiendavate sammudega: vastane registreerib selle sõnumi täna ja taastab oma klassikalise võtme hiljem ja juur langeb välja.

3.2 Juurdepääs kasutaja teistele seadmetele

Osa 2 piirang 3 - üks identiteet, mitu seadet - ei saa siin aritmeetiliselt rahuldada, sest kogu asi on selles, et võti ei ole midagi, mida seadmed juba jagavad. nympq1… Kood iseenesest

Root on näidatud kui nympq1… See on kogu mehhanism.Seade, kellele ei ole koodi antud, ei saa osaleda, mida kirjeldab lõik 4.2.

3.1 reegel ütleb, et juur ei pruugi kunagi reisida klassikalise ainult krüpteerimise all ja iga mehhanism, mis muudab selle automaatseks – sünkroonides selle edastuse kaudu, pakendades selle identiteedi võtmele – rikub täpselt seda.

Formaat jätab ruumi ümbritsetud teele: rekord võib kanda ümbritsete nimekirja, igaüks AEAD blob all võtme all, mida kasutaja saab teisele seadmele reprodutseerida - näiteks passkey PRF väljund. nympq1… Kood on ainus viis läbi. jaotis 10.1 ütleb, kui palju see maksab.

Rekord ise elab oma seadete kategoorias, nymchat-pq-rootIsegi ühtegi pakendit kandes ei tee see vajalikku tööd: selle olemasolu on see, kuidas teine seade õpib, et sellel identiteedil on juba juur, mis peatab selle rivaali (punkt 3.3).

Disaini märkus: üks kategooria, mis ei saa uut võtmet kasutada

nymchat-pq-root Kategooria peab mitte See rida kannab ainult koopiat juurest, nii et selle sulgemine juurest tuletatud võtme all on lukk, mille võti on kasti sees: ükski seade ei saa seda kunagi avada, kaasa arvatud see, kes seda kirjutas.

Kõik teised seadete kategooriad võivad ja peaksid kasutama juure tuletatud võtmet.See on ainus erand ja see on erand ringikujulisuse, mitte tugevuse kohta.

3.3 Põlvkond ja lapsendamine

Bootil, millel on püsiv identiteet, töötab klient järgmises järjekorras:

  1. Otsige olemasolevat nymchat-pq-root Või rekord.
  2. Leitud rekord ja see seade võib selle lahti keerata - võtke see vastu ja kuulutage see identiteet postkvantiliseks võimeks.
  3. Leitud rekord ja see seade ei saa seda lahti - ärge genereerige uut juurt ja ärge avaldage üldse ühtegi teadaannet. nympq1… Kood, mis pärineb juba olemasolevast seadmest.
  4. Ei rekordit - luua root, avaldada rekord, kuulutada ja näidata nympq1… kood kasutajale üks kord, et nad saaksid seda salvestada.

3. samm on samm, mida on lihtne eksida, ja see on põhjus, miks tellimus on kirjutatud, mitte jäänud iga rakenduse juurde.Kaks seadet, millest igaüks otsustab tekitada root, toodavad ühe identiteedi all kaks sõltumatut juurt ja see on ebaõnnestumine, mida see tellimine eksisteerib, et vältida.

4Võimekuse avaldamine

Avalik pool tuletatud võtmepaarist avaldatakse adresseeritavana Tüdrukud-01 sündmus — tüüp 30078, märgitud 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": [ ... ]
  }
}

Adresseeritav tähendab, et edasimüüja hoiab ühe sündmuse (kind, pubkey, d-tag), nii et vabariik asendab eelmise teadaande kohapeal.

Allkiri on siduv. Sündmus on allkirjastatud identiteedi võtmega, nii et väide &ldquo;see ML-KEM võtm kuulub sellele npub&rdquo; on täpselt sama tugev kui npub ise.Erineva kapseldamise võtme asendamine nõuab secp256k1 allkirja võltsimist.Ründaja, kes suudab seda teha, ei pea KEM-iga muretsema.

Teated on lõppenud. Seitsmepäevane NIP-40 aegumine, mis avaldatakse iga 24 tunni järel, hoiab rekordis avalduse kliendi kohta, mis ikka veel töötab, mitte seda, mis varem oli.

Kaotatud teade loetakse täpselt nagu see, mis ei kandnud kunagi võtit: eakaaslased saadavad tavalise NIP-44, mida iga sisselogimine saab lugeda, ja klient jätkab oma järgmisel ühendusel post-kvantvahetust, kui see taas avaldatakse. Nii et enam kui nädala jooksul vaikimine maksab vaheajal saadetud sõnumite kaitsmise eest - nad on klassikaliselt krüpteeritud, mitte kvantvastased - ja ei maksa midagi muud.

Ilma selleta ületab rekord võtme, mida ta nimetab: seade, mis on kustutatud, taastatud või mille juur on asendatud, jätab püsiva juhise, et see sisestataks võtmele, mida keegi enam ei hoia, ja selle all saadetud sõnumid kaovad ilma vigadeta mõlemal poolel.

Võtmevälja nimi on selle formaat. Valdkond on pk2, ja number on lepingu osa, mitte kaunistamine: see nimetatakse kasuliku koormuse vorminguks, millega võti võib kasutada. Lugeja, kes ei tunne seda valdkonda, lõpetab &ldquo;Nymchat kliendi, ei ole post-kvant-võti&rdquo; ja saadab tavalise NIP-44, mida iga sisselogimine saab lugeda. See on õige ebaõnnestumise suund, ja tasub öelda reeglina, et vormingus on olemas numeratsioon: mittetunnustatud võimekuse nõue peab maksma kaitset, mitte kunagi kohaletoimetamist. Peer ei saa kasutada võti on halvem kui ükski võti üldse, sest sõnum, mida see toodab, on kadunud ilma veata mõlemal poolel.

4.1 Puudumine on tähendusrikas ja kolmekordne

Subtilne, kuid oluline detail: kuulutust avaldab iga Nymchati klient, mitte ainult post-kvant-võimelised kliendid, ja võtmevälja valik on vabatahtlik.

VaadeldakseTähendabSaada käitumine
Teade võtmega Nymchat, post-kvantiline võimeline hübriid
Märksõnad: ei võti üldse Nymchat, klassikaline ainult - post-quantum välja, või seade, mis ei ole veel seotud identiteedi juurega Klassikaline NIP-17
Mitte mingit kuulutust Tundmatu klient. Võib olla iga Nostr või Bitchat kasutaja Klassikaline, pluss ühilduvuspakett

Märksõnatu teade on allkirjastatud avaldus, et saatja käitab Nymchatit, mis võimaldab saatjatel ületada spekuleeriva ristprotokollipõhise pakendi, mida ta muidu oleks pidanud lisama kõigile, keda ta ei suuda tuvastada.

4.2 Seade, mis ei suuda juurt avada, jääb vaikima

Teade on asendatav: üks sündmus identiteedi kohta, viimane kirjutamine võidab.See on see, mis muudab ühe salvestuse disaini tööks, ja see on ka see, mis muudab ühendamata seadme ohtlikuks, kui see avalikustatakse.Seade, mis teatas võtmest, mille ta oli ise välja mõelnud, piitsutab tegelikku salvestust ja saadab iga eakaaslase krüpteerimiseks võtme all, mida teised seadmed ei saa avada.

Seega on olemas seade, mis teab juurt, kuid ei suuda seda avada, ei avalda see üldse ühtegi teadaannet.See ei ole katki ega ole rakendusest välja lukustatud: see loeb endiselt iga sõnumi, mille jaoks on võtmed, ja saadab endiselt klassikaliselt, kutsudes kasutajat seda linkima.

5Avastamine ja saatmise otsus

Kliendid õpivad eakaaslaste võtmeid kahel viisil. püsiv tellimus hõlmab inimesi, kellega kasutaja tegelikult vastab - avatud vestlused ja rühma liikmed - nii et nende teadaanded tulevad tavaliste sündmuste kujul.

Kasutaja, kes ühendab uue seadme või kes liigub brauseri laienduse sisselogimisest kohalikule võtmele, muutub post-kvantlikuks suutlikuks vestluse keskel ja püsivalt vahemälestatud &ldquo;no&rdquo; hoiab neid klassikalise krüpteerimise ajal reklaami eluks.

5.1 Miks ei ole allalaadimise rünnakut

Reisiotsus vähendatakse ühele küsimusele:

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

Puuduvad võimete läbirääkimised, toetatud algoritmide nimekiri ja ründaja ei suuda nõrgemale teele sundida. on Ebaõnnestumise režiim eemaldatud või peatatud teade on, et sõnum läheb klassikaline - status quo enne seda funktsiooni - selle asemel, et hübriid sõnum on alandatud midagi võltsitav.

Ka vastupidine hoiab ja on tähtsam: klient saadab hübriidi Ainult kui see hoiab võtme ja võtme hoidmine on tõendusmaterjal, et vastuvõtja saab selle dekapsuleerida. Ei ole mingit seisundit, kus sõnum saadetakse post-kvantiline keegi, kes ei saa seda lugeda.

6Hübriidkonstruktsioon

Muudetud NIP-44 krüpteerimise tekst on sisemine kiht ja ML-KEM võtab selle ümber välise AEAD-i:

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)

Mõlemad saladused tuleb veel sõnumi lugemiseks taastada: väliskiht annab ainult NIP-44 krüpteerimise teksti ja avamine, mis vajab klassikalist ECDH-d. Kvantvastane, kes murrab secp256k1, saab sisemise võtme ja seisab ikka ML-KEM-i ees; ML-KEM-i purunemine lõikab väliskihti ja jätab NIP-44 seisma.

Vastuvõtja ML-KEM-võti on pikaajaline, kuid igal sõnumil on sõltumatu krüpteerimisteksti ja seega sõltumatu kem_ssSee on see, mis muudab nonce'i tuletamise selle asemel, et seda juhuslikult hääldada: ChaCha20-Poly1305 tüüp on katki, kasutades uuesti (võti, nonce) paari, ja siin on võti ise iga sõnumi jaoks uus, nii et ükski paar ei saa korrata.

6.1 Miks kihid jäävad eraldi

Alternatiiviks on segada mõlemad saladused ühte vestlusvõti ja anda see NIP-44-le:

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

See ehitus kõlab nagu krüptograafia.Sellel on üks struktuurne probleem: see vajab ecdh_x, toor x-koordinaat ECDH väljund, kui peamine materjal - ja brauseri laiendus (NIP-07) või eemaldatud allkiri (NIP-46See täidab kõneleja nimel NIP-44 ja tagastab krüpteerimise teksti, mis on kogu võtme hoidmise punkt, kuhu rakendus ei saa jõuda.

Saladuste segamine välistab seega iga sisselogimise, mis hoiab identiteedivõtit allakirjutajas, see tähendab kõige ettevaatlikumaid kasutajaid, ja mitte mingisugune töö võtme tuletamisel ei saa seda muuta.Layering eemaldab sõltuvuse: NIP-44 jääb tervikuks ja seda toodab kõik, mis hoiab identiteedivõtit, allakirjutaja kaasas, samas kui KEM pool arvutatakse kliendi poolt otseselt hoitavast taastamiskoodist.

ML-KEMi krüpteerimistekstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstikstiks

6.2 Enese kirjeldamine

pq2. Eesliide muudab kasutuselevõtmise järkjärguliseks: see kirjeldab ennast, nii et klient valib dekodeerimisstiili, kontrollides kasuliku koormuse asemel, et usaldada märgistust või meeles pidada, mida kolleeg toetab. lugeja, kes ei tunne eelmäära, ei ava seda kasuliku koormuse selle asemel, et seda valesti lugeda, ja sõnumid, mis on suletud enne mõlemat poolt, võiksid teha post-kvantse jääda loetavaks nagu tavaline NIP-44 ilma migratsioonita.

Kaudne tagasilükkamine

ML-KEMi dekapsulatsioon on mõeldud selleks, et mitte kunagi ebaõnnestuda: võttes arvesse ebaõigeid krüpteerimiskirju, tagastab Fujisaki-Okamoto ümberkujundamine deterministilise pseudo-juhusliku saladuse, mitte vea. Seetõttu ei paista KEMi kihil üldse vale võtme – see paistab välja nagu HMACi ebaõnnestumine NIP-44 sees, mis on sama, mis vale klassikalise võtme pinnal. Helistajad kohtlevad mõlemat ühesugusel viisil, nii et ebaõnnestumine ei kanna eristavat signaali.

6.3 Mõlemad kinkekaardi kihid

A NIP-17 Isiklik sõnum on a NIP-59 kingituspakend: allkirjastamata kuulujutt, mis on suletud saatja identiteedi võtme alla (tüüp 13), seejärel pakendatud iga sõnumi kohta genereeritud heitva võtme alla (tüüp 1059).

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
Mõlemad krüpteerimiskihid on hübriidsed, millest igaühel on sõltumatu ML-KEM kapseldus.

Allakirjutaja sisselogimine saab ainult väliskihti. Sisselogija toodab pitseri nagu tavaline NIP-44 - rakendus ei näe kunagi seda teevad võtmeid - nii et seda ei saa kohapeal hübriidida. See ei maksa midagi kõnealuse rünnaku vastu: pitser on kättesaadav ainult pakendi kaudu ja pitser on see, mida salvestaja hoiab. Vastane, kes hoiab salvestatud liiklust, peab katkestama ML-KEM-i enne, kui pitser on isegi nähtav rünnata.

7Grupisõnumid ja osaline katvus

Rühma sõnum ei ole üks šifreeriv tekst. See on sama lihttekst, mis väljastatakse igale liikmele, iga koopia, mis on kapseldatud selle liikme oma ML-KEMi võtmega. Liikmele, kes on võtme avaldanud, antakse hübriidpakend; liikmele, kes seda ei ole, antakse klassikaline pakend.

See tekitab raamatupidamisprobleemi, et naiivne rakendus läheb valesti.Kui kaheksa kümnest liikmest saab hübriidkoopia, on sõnum mitte Vastane vajab ühte klassikalist koopiat lihtsast tekstist, mis on identsed kõigis kümnes, nii et sõnum on kaitstud ainult siis, kui iga See on koopia.

Nymchat seega jälgib fan-out ajal sõnumi katvust - arv on teada ainult siis, kui pakendid on ehitatud - ja märgi aruanded &ldquo;kvant-resistentne 8i 10i liikmetele&rdquo; selle asemel, et väita, et sõnum on kaitstud. Saadud rühma sõnum (ainult saatja loeb fan-out), liides teatab osaliselt, mitte täielikku kaitset.

7.1 Mida kilp teatab

kilp ütleb tõde Sõnum, mitte selle tarkvara kohta, mis selle saatis:

Otsus salvestatakse, kui sõnum on suletud, mitte taasarvutatud sellest, mida kolleeg hiljem reklaamib. juba olemasolev tekst ei saa olla paremini kaitstud, kui see oli, ja liides, mis vanu sõnumeid uue teadaande tugevusele ümber lülitas, väidaks midagi vale baitide kohta edastamisel.

Ülaltoodud rühma reeglid on selle asemel, et seda asendada: rühma sõnum on täielikult kaitstud ainult siis, kui iga liikme koopia on olemas, ja vastuvõetud rühma sõnum, millel puudub katvuse arv, on osaline.

8Koopiad, mis on suunatud endale

Mitmed kliendi salvestatud asjad on kasutaja enda identiteediga krüpteeritud: sünkroonitud seaded, vestlusloend, rühma võtmed ja sõnumite arhiiv.Need kannavad kasutaja kohta rohkem kui enamik üksikuid sõnumeid, nii et nende klassikaline jätmine muudaks need kõige nõrgemaks salvestatud artefaktiks, olenemata sellest, kui hoolikalt sõnumeid ise suleti. nymchat-pq-root Kategooria ise, mida ei saa sulgeda võtme all, mida ainult see suudab toota.

Seaded blob või arhiivi rida istub ühes kohas aastaid, mis on täpselt kuju asi saagi-nüüd-dekodeeritud-hiljem vastane kogub - palju rohkem kui ükskõik milline sõnum, mis on vähemalt efemeraalne kasutaja enda meeles.

Üks piirang reguleerib siin vormi, mitte võtit. iga seade kontol, nii et iga seade reklaamib seda, mida ta saab avada oma teate kandes, ja konto kirjutab ainult seda, mida kõik nad saavad lugeda.

Piirang, mis väärib märkimist

Seade, millel on identiteet, kuid mitte juur, ei saa avada midagi, mis on suletud juurest tuletatud võtmele, kaasa arvatud selle enda seaded.See on tahtlik tagajärg, mitte järelevalve, ja sellepärast on jaotises 3.3 selline seade, mis soovib seostada värske juure asemel: teine juur ei teeks blobi loetavaks, vaid jagaks identiteedi võtmematerjali kaheks.Kuni kasutaja seda ühendab, töötab seade jätkuvalt – see loeb, mille jaoks on võtmed olemas ja saadab klassikaliselt.

Seade, mis juhib brauseri laiendust või kaugallkirja (NIP-46) ei hoia nsec pärit, kuid see hoiab taastamise koodi, ja lõike 6.1 kihiline konstruktsioon, mis on kõik post-kvantiline pool vajab: allkirjajaja toodab NIP-44 kiht nagu see on alati, ja klient klõpsab väliskiht ise.

9rotatsioon

epoch Arvuti tuletamisel on see, mis muudab pöörlemise võimalikuks ilma uue võtme materjalita.Incrementing see annab värske võtmepaari samast juurest ja uuesti avaldatud teadaandest; kolleegid võtavad uue võtme asendatavast rekordist.

9.1 Vanad ajastud on säilinud ja midagi ei ole uuesti krüpteeritud

Klient ehitab dešifreerimiskandidaadid praegusest ajast kuni ajastuni &minus; 3, nii et sõnum, mis on suletud vahetult enne pöörlemist, avaneb ikka veel võtmepaari vastu, mis oli praegune, kui see saadetakse.

See aken on see, mis muudab pöörlemise üldse ohutuks: ilma selleta katkestaks iga pöörlemine mis iganes oli lennul.Mis iganes juba suletud jääb identiteedi eluks loetavaks, sest sõnum, mida kasutaja ei saa enam avada, on nende jaoks rangelt halvem kui see, mille kaitset ei saa tagasiulatuvalt parandada (punkt 10.5).

10Mida see ei kaitse

Paber, mis loetleb ainult seda, mida disain saavutab, ei kirjelda süsteemi ja liideses turvaomaduse ülehinnamine on hullem kui selle väljajätmine.

10.1 Juur on teine saladus ja selle kaotamine on taastumatu

See on disaini tegelik hind. 2. peatüki piirang, et kasutajal peaks olema täpselt üks asi, mida säilitada, ei saa täidetud: nsec üksi ei rekonstrueeri post-kvantilist võtmet, sest kogu asi on selles, et ükski avalik väärtus ja ükski teine saladus ei paljasta seda.

Kui käsitsi ülekandmine on ainus tee, on see teravam, kui see esmakordselt lugeda võib. nympq1… kood igal pool on täpselt üks koopia sellest, ühes seadmes, ja kaotades selle seadme kaotab iga post-kvantilise sõnumi, seade blob ja arhiivi rida suletud. nsec See ei aita, see on omadus, millele kogu disain tugineb.

Ründaja ründab kõige odavamat võimalikku teed, nii et skeem on väärt seda, mida selle nõrgim taastamisviis on väärt - meeldejääv passfrase, näiteks, paneks kogu asja, mida passfrase on väärt, ja wrapped rida on täpselt artefakt saagi-nüüd-dekodeeritud-hiljem vastane kogub ja jahvatab offline vaba aja jooksul.

10.2 Autentimine erineb konfidentsiaalsusest

Iga allkiri Nostris on Schnorr üle secp256k1 ja see on siin muutumatu. Vastane kvantarvutiga võiks allkirju võltsida ja kasutajat reaalajas teeselda. Mis hübriid võtmevahetus kaotab, on saagi-nüüd-dekodeeritud-hiljem: ründaja, kes salvestab täna liiklust, ei saa seda hiljem lugeda. See ei tee sõnumit andmatuks vastasele, kellel juba on masin. See eristamine viiakse rakendustesse tahtlikult - padlock indikaator teatab autentimisest, kilp teatab konfidentsiaalsusest ja need on eraldi glüfid, sest sõnum võib olla üks ilma teiseta.

See piirab ka seda, mida paragrahvi 4 teade võib lubada.Nppubi ja ML-KEMi võtme vaheline seos on secp256k1 allkiri, nii et vastane, kes suudab neid võltsida, võib asendada oma võtme.

10.3 Metadata andmed

Kingituspakend peidab saatja, vastuvõtja üle ühe p See ei varja, et sündmus on olemas, selle suurus, või kui edastaja sai selle.

10.4 Offline võrgustik

Nymchati Bluetooth-võrgu transportimine on eraldi protokoll, millel on oma käepide, ja see ei ole selle tööga hõlmatud.

3.5 Sõnumid, mis on juba saadetud

Ciphertext salvestatud ajal, kui mõlemal poolel oli ikka klassikaline püsib klassikaline püsivalt. See on juba olemas ja ei saa uuesti sulgeda. Kaitse algab sõnum, kus mõlemad pooled hoidnud post-kvantiline võtmed, mitte hetkel funktsiooni sisse lülitatud.

11Kaalutud alternatiivid

lähenemineMiks mitte
Pärit post-kvantiline võti identiteedi võti Tagasilükkamine. tuletamine on avalik algoritm üle nsec, ja kvant vastane taastab nsec avaldatud npub, nii katkestades klassikaline pool käed üle post-kvant pool sellega.
Saada root kasutaja teistele seadmetele NIP-44 kaudu Klassikalise ainult krüpteerimise all edastatud juure saab taastada igaüks, kes selle sõnumi salvestas ja murrab selle võtme hiljem, mis on vastane, mille juure eksisteerib peatada.
Eraldi genereeritud ML-KEM võtmepaar igal seadmel Keeldutud. Seadmetel oleks erinevad dekapsulatsiooni võtmed ja üks asendatav teade iga identiteedi kohta ei saa neid kõiki kanda. Peers krüpteeriks, kuhu viimati avaldati võti, ja iga teine seade ei saaks tulemust lugeda.
Pange root PIN-i alla Nelja numbri PIN-kood on umbes 13 bitti võrra võrreldes ründajaga, kes hoiab pakendatud rida.
Laiendage npub mõlema võtme kandmiseks 1,184 baiti ei ole jagatav identifikaator ja see katkestaks iga olemasoleva Nostr kliendi 32-baidiga määratletud aadressi analüüsimise.
Key Directory teenus Taastab võrgustiku olemasoleva autoriteedi, et vältida.Kes vastab otsingule, otsustab, kes saab sõnumit lugeda.
Lisage iga sõnumi võti ei lahenda midagi: saatja vajab Vastuvõtja võtme enne esimest sõnumit, mis on täpselt nii, et eelnevat sõnumit ei tohi kanda.
In-band läbirääkimisvõime Loob alandatud pinna.Ründaja, kes suudab võime lippu eemaldada, sunnib klassikalist teed.
Ainult post-kvant, mitte klassikaline jalg Jätab aastakümneid analüüsitud secp256k1 vastutasuks palju noorema primitiivse. mõlemad Ebaõnnestunud

12Rakendamise pariteet

Nymchat laevad kaks sõltumatut rakendusi selle konstruktsiooni - üks JavaScript veebirakenduse, üks Dart mobiilirakenduste, sealhulgas nullist ML-KEM-768 porti.

Dart ML-KEM rakendamine on kinnitatud ametliku NIST ACVP Testid, millel on teadaolev vastus ML-KEM-768 (ML-KEM-*-FIPS203NIST avaldab vektorid rakenduse valideerimiseks, nii et nende läbimine on tõendusmaterjaliks, et port on õige, mitte lihtsalt tõendusmaterjaliks, et kaks klienti on üksteisega nõus. Lisaks sellele on testvektorite ühine fikseerimine – seemne derivaat, kapslimine, mõlemad kasuliku koormuse vormingud ja täielik kingituspakend – loodud JavaScript-i viitest ja kontrollitud mõlema testpakendi poolt. Root-saladus laiendab seda fikseerimist selle asemel, et seda asendada: root-seemne, root-keypair, root-i avaliku sõrmejälje ning väliskihti tuletatud võti, nonce ja sellega seotud andmed on nende enda vektorid, nii et kaks klienti ei saa selle kohta erimeelsust avaldada. nympq1… Mõlema rakenduse lahknevus ebaõnnestub ehituses selle asemel, et toota sõnumit, mida teine klient ei saa avada.

See on see, mis ütleb, et seade &ldquo;see on juurt, mida ma hoian&rdquo; alates &ldquo;see on teine üks&rdquo; ja klient, kes ei suutnud reprodutseerida teise kliendi sõrmejälge, loeks täiesti hea rekord kui ükski rekord üldse - ja seejärel, järgides jaotist 3.3, mindi teine juur ja jagada identiteet.

Nymchat on Avatud allikas all AGPL-3.0. Siin kirjeldatud krüptograafiline tuum on js/nym-crypto.js ja js/modules/pq.js Veebipõhise kliendi ja lib/core/crypto/ koos lib/features/identity/pq_registry.dart Mobiilsete klientide jaoks.

Lühema, mitte-tehnilise selgituse saamiseks vaadake Teadmistebaas kvantvastase krüpteerimise kohta.