Þekkingarstigi: Quantum-resistant Cryption

Nymchat tæknilega whitepaper

Post-Quantum Key samkomulag í Nymchat

Að dreifa ML-KEM-768 opinberum lyklum yfir Nostr án skrá eða skráningar og dreifa þeim úr leyndarmál sem engin opinber gildi sýnir.

útgáfa 1.0 ágúst 2026 Gildir fyrir Nymchat 3.74+

Að bæta við post-quantum lykilskipti við boðskapari er yfirleitt ekki einkennslu vandamál. Primitives eru staðlaðir og bókasafni eru til. Erfiðast er að hver þátttakandi þarf nú Þriðja Þessi grein lýsir hvernig Nymchat svarar því - hvar seinni lykillinn kemur frá, hvernig það nær fólki sem þarfnast þess, og hvað tengilinn er heimilt að krefjast um niðurstaðan - og, í síðasta kafla, hvað það niðurstaðan verndar ekki.

1vandamálið

Persónulegar skilaboð okkar eru dulkóðaðar með NIP-44, sem hefur tvær aðskiljanleg helmingar. Helmingurinn sem flýtir einfaldan texta — ChaCha20 með HMAC-SHA256 merki, keypt í gegnum HKDF (RFC 5869) - er ekki merkilega ógnvekjandi af kvantum tölvu; Algoritmi Grover kostar fjórðungur-root hraða upp gegn sömuleiðis lykli, og 256 bitir fella það. samþykkir á lykilinu er elliptic-kurva Diffie-Hellman yfir Sýning 256K1Að endurheimta einni einka lykil frá opinberri samfélagi sínum sýnir afturvirkanlega hvert deilt leyndarmál sem lykillinn hefur einhvern tíma framleitt.

Hættan sem þetta skapar er ekki skilað þar til slík vél er til. Óvinur með geymslu getur skráð sífrænt texta í dag og endurskrifað það hvenær hæfni kemur. Allt sem sendur er nú sem enn skiptir máli þá er þegar kompromit. Þetta er sérstök árás eftir kvantakeysi skipti tapar, og það er ástæðan fyrir því að vinna getur ekki beðið eftir að vélin sé byggð.

1.1 Spurningin sem greinin svaraði

Þannig að það er ekki hægt að gera það, þá er hægt að gera það með því að fara að fara að hætta að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara að fara.Fíkn 203Það vekur strax dreifingu vandamálið:

Spurningin

Til að senda skilaboð til Alice í dag þarftu eitt: npub hennar. Bæta við post-quantum skipti og þú þarft annað — hennar ML-KEM opinberu lykillinn. Hvar lifir þessi lykill, og hvernig færðu það áður en þú getur sent henni eitthvað?

NPUB er sjálfstætt. Þú getur skrifað það á pappír, lesið það hárlega eða skannað það frá skjánum og það er allt sem einhver þarf til að leysa þér. ML-KEM-768 opinberur lykill er 1.184 bytes. Það er ekki hægt að lesa það hárlega, það passar ekki inn í notandanafn, og það tilheyrir ekki QR kóði í viðbót við einkenni sem er aðeins 32 bytes.

The erfiðari hluti er að annar lykill fær þrjá mismunandi vandamál, og restin af þessari pappír er að mestu svar á þá:

2Design takmarkanir

Fjórir takmarkanir myndu svarið, og þeir útiloka flest augljós hönnun áður en einhver kóða er skrifað.

  1. Það eru eins fáir leyndarmál og hægt er. Notendur okkar bera nú þegar nákvæmlega eitt leyndarmál, nsec. Hvert viðbótar leyndarmál er annar leið til að missa sögu þína, og einhver sem veit hvernig á að bjarga nsec mun ekki vita hvernig á að bjarga neitt annað. kafla 3.1 sýnir að þetta er ekki hægt að uppfylla beint - post-kvantakeysi sem kemur frá nsec veitir engin eftirkvantakeysi - þannig að hönnunin eyðir nákvæmlega einum leyndarmáli og ekki meira: einstakt stykki lykill efni, búið einu sinni á einkunn, framleitt í sömu formi og á sama stað, þannig að hver sem veit hvernig á að halda einn veit hvernig á að halda hinum. kafla 10.1 er heiðarleg um hvað það kostar enn.
  2. Engin yfirvöld Það er engin þjónusta sem hægt er að treysta til að segja hvaða lykil tilheyrir hverjum.
  3. Fjölmargir tæki, einn persónuleiki. Hvaða lykill efni sem er til verður að enda eins á öllum þeim, og leiðirnar sem bera það þangað þurfa ekki sjálfir að vera lesandi af andstæðingnum sem lögun er að verja gegn.
  4. Engin samning Hvert skipti í bandinu á “hvers konar sifir styður þú?” er yfirborð sem árásarmaður getur stíft til að þvinga veikari valkostinn.

3Sjálfstæð rótleysing

Ákvörðunin er sú að ML-KEM afkapslun lykillinn er fræddur úr lykill efni sem engin almenna gildi sýnir.

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)

Root er kynnt notandann eins og nsec er: Bækur32 Með manna lesandi forskeyti nympqÞannig að það les sem nympq1…, sýnt við hliðina á nsec í einkenni skjánum á bak við sömu sýna samskipti, kopið með sömu stjórn, aldrei skráð og aldrei sent hvar sem er í skýr. Það er ekki lykilorð og það er ekki innlogg. Það er lykill efni sem notandinn getur vistað, nákvæmlega eins og nsec.

Sólin er aðskilin svipað, þannig að engin önnur leyndarmál getur einhvern tímann komist til sömu lykilorðs. epoch Hreyfing á hreyfanleikum (Sektion 9).

3.1 Hvers vegna lykillinn er ekki hægt að afleiða frá auðkenni lykillinn

The augljós hönnun er að sækja keypair frá leyndarmál notandinn þegar hefur:

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

Það er aðlaðandi af fjórum ástæðum, allir þeir raunveruleg: ekkert nýtt til að tryggja, vegna þess að nsec er nú þegar öryggisbreyting; hvert tæki sem samþykkir að byggja upp, með engin samkomulagi að fara rangt; einn skipanleg tilkynning fyrir einkenni að vera augljóslega rétt, vegna þess að tæki geta ekki verið á ósamræmi um lykillinn; og lykillinn sem er til áður en hann er einhvern tímann birt, þannig að viðskiptavinur getur selið eitthvað fyrir sig í fyrsta skipti.

Allir fjórir ávinningur eru gagnslaus, af einum ástæðu. Algoritmi Shor er að hlaupa á sama HKDF sem allir aðrir eru að hlaupa. Á móti uppskera-nú-skýra-síðar - eina ógn sem aðgerðin er til að stöðva - lykill sem kemur þannig bætir ekki við neitt.

Reglan allt fylgir frá

ML-KEM dekapslun lykillinn verður að koma frá entrópi sem er hvorki afleiðanlegur frá nsec né aldrei flutt undir klassískri einungis skráningu.

Annað atriði þessarar reglu virkar jafn mikið og fyrsta.A sjálfstætt myndað leyndarmál sem er þá samræmd milli tæki notanda innan venjulegs NIP-44 skilaboð er það sama mistök með auka skrefum: andstæðingurinn skráð þessi skilaboð í dag og endurheimtir klassískt lykill síðar, og rótinn fellur út.Þess vegna eru leiðir í næsta kafla leiðir sem þeir eru, og hvers vegna enginn þeirra er “send það til annarra tæki þíns.”

3.2 Að fá rótinn til annarra tæki notanda

Áhrif 3 í kafla 2 - einn eining, nokkrar tæki - er ekki hægt að uppfylla með tölfræði hér, vegna þess að allt málið er að lykillinn er ekki virkni af neinu sem tækið hefur nú þegar deilt. nympq1… kóða sjálfum sér.

Róturinn er sýndur sem nympq1… við hliðina á nsec, og annað tæki samþykkir það sett inn í sömu pöntun. Það er allt kerfið. A tæki sem hefur ekki verið gefið kóða getur ekki tekið þátt, sem kafla 4.2 lýsir.

Reglan í kafla 3.1 segir að róturinn gæti aldrei ferðast undir klassískri einungis skráningu, og allir aðgerðir sem gera þetta sjálfvirkt – að snúa því í gegnum rás, að pakka það við einkaleyfi – brjóta nákvæmlega það.

The snið gefur pláss fyrir wrapped leið: skjal getur haft lista yfir wraps, hver AEAD blob undir lykli sem notandinn getur endurspegla á öðrum tæki - passkey PRF útgáfa, til dæmis. nympq1… Kóðinn er eina leiðin í gegnum. kafla 10.1 segir hvað það kostar.

Rekstur sjálfur lifir í eigin settingarflokknum sínum, nymchat-pq-rootJafnvel með því að hafa engin wraps það gerir nauðsynlegt verk: nærveru þess er hvernig annað tæki lærir að þessi einkenni hefur þegar rót, sem er það sem hættir því að mynta samkeppnisaðila (Sektion 3.3).

Hugmynd um hönnun: einn flokkur sem ekki getur notað nýja lykilinn

The nymchat-pq-root Fjölskylda MUST ekki Þessi röð ber eina afrit af rótinu, svo að selja það undir lykli sem kemur frá rótinu er loka sem lykillinn er inni í kassann: engin tæki gæti nokkurn tíma opnað það, þar á meðal sá sem skrifaði það. Það er selið klassískt - NIP-44 sjálfur - eða ekki alls. Þetta er einn staður sem hönnunin samþykkir klassískt einungis vernd, og það getur leyft sér að: röðin ber ekki rót í dag, aðeins sú staðreynd að það er til.

Öll önnur stillingar flokkur getur og ætti að nota rót afleiðt lykil. Þetta er eina undantekningin, og það er undantekning um hringræði frekar en um styrk.

3.3 Fæðing og samþykki

Á upphafi, með varanlegri einkenni, vinnur viðskiptavinur í þessari röð:

  1. Leitaðu að núverandi nymchat-pq-root Rekstur á.
  2. Rekstur fundinn, og þessi tæki getur unwrapped það - samþykkja það og tilkynna þessa einkenni sem post-kvantum fær.
  3. Rekstur fannst, og þessi tæki getur ekki opnað það - ekki búa til nýja rót, og ekki birta tilkynningu alls. Hvetja notandann til að tengja þetta tæki með því að inn nympq1… Kóðinn er frá tæki sem þegar hefur það.
  4. Engin rekstur — búa til rót, birta skráningu, tilkynna og sýna nympq1… Kóðann sendir notandinn einu sinni svo hann geti vistað það.

Skref 3 er skref sem er auðvelt að fá rangt, og það er ástæðan fyrir því að röðunin er skrifað niður í staðinn fyrir hverja framkvæmd. Tveir tæki sem hvert ákveður að búa til rót framleiða tvær sjálfstæða rót undir einni einkenni, og það er mistök þessi röðun er til til að koma í veg fyrir.

4Upplýsingar um getu

opinber helming af afleiðta lykilorði er birt sem áfangastaður Niður-01 atburður — type 30078, tagged 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": [ ... ]
  }
}

Tilgreindanlegt þýðir að tengilinn geymir eitt atburð á hverjum (kind, pubkey, d-tag), þannig að republish skiptir fyrir fyrri tilkynningu á staðnum.

Sýningin er bindandi. Atburðurinn er undirritaður með auðkenni lykillinn, þannig að ákæra &ldquo;þessi ML-KEM lykillinn tilheyrir þessum npub&rdquo; er nákvæmlega eins sterkur og npub sjálfur. Að skipta um mismunandi innkapslun lykill krefst smíða sekp256k1 undirskrift. Árásarmaður sem getur gert það þarf ekki að trufla með KEM.

Auglýsingarnar eru lokið. Sjö dagar NIP-40 The expiration, endurskrifað á hverjum 24 klukkustundum, geymir skrá yfir yfirlýsingu um viðskiptavin sem er enn í gangi í stað þess sem áður var.

A missed tilkynningu er lesið nákvæmlega eins og einn sem aldrei var með lykil: félagar senda venjulega NIP-44, sem hvert aðgangur getur lesið, og viðskiptavinurinn endar post-kvantum skipti á næsta tengingu, þegar það birtist aftur. Svo að vera þögn í lengri tíma en viku kostar vernd fyrir skilaboð sem sendar eru á gildi - þeir eru klassískt dulkóðað frekar en kvantumsvarandi - og kostar ekkert annað.

Án þess lifir skráning fram yfir lykilinn sem hún heitir: tæki sem er þrífað, endursetur eða hefur rót sitt skipt eftir staðbundnum leiðbeiningu til að innkapslast í lykil sem enginn heldur lengur, og skilaboð send undir henni er misst án mistök á hvorum hliðinni. Sjö daga takast á við það glugga, og leyfa framanum að sleppa skráningunni sjálfum sér í stað þess að treysta viðskiptavinum til að taka eftir því.

Nákvæmissvæðið heitir formátum sitt. Leiðin er pk2, og stafi er hluti af samningnum frekar en skreyting: það heitir notalegan snið sem lykillinn getur verið notaður með. Lesandi sem þekkir ekki sviðið kemur að því að &ldquo;Nymchat viðskiptavinur, engin post-kvantus lykill&rdquo; og sendir venjulega NIP-44, sem hvert innlogið getur lesið. Það er réttur mistök stefna, og það er þess virði að segja sem reglu formatefnun er til að framkvæma: óþekkt getu kröfu þarf að kosta vernd, aldrei afhendingu.

4.1 Skortur er merkilegur og þrívaldaður

Fínt en mikilvægt smáatriði: Tilkynningin er gefin út af öllum Nymchat viðskiptavinum, ekki aðeins þeim sem eru fær um post-kvantum, og lykilorðið er valfrjálst.

ÁhugaðÞýðirSenda hegðun
Tilkynning með lykil Nymchat, post-kvantum fær um Hybrid
Upplýsingar, engin lykill Nymchat, klassískur aðeins - post-quantum off, eða tæki sem ekki er enn tengdur við rót persónuupplýsinga Klassískur NIP-17
Engin tilkynningu Óþekktur viðskiptavinur. gæti verið hvaða Nostr eða Bitchat notandi sem er Klassískt, auk samhæftisstigi

A keyless tilkynningu er undirritað yfirlýsingu að sendandi er að keyra Nymchat, sem gerir sending leið skipta spekulatívum cross-protocol wrap það myndi annars þurfa að innihalda fyrir hvern sem það er ekki hægt að auðkenna.

4.2 Tæki sem getur ekki opnað rótinn er þögul

Tilkynningin er skipulögð: einn atburður fyrir einkenni, síðasta skrifa vinnur. Það er það sem gerir einstaka skjal hönnun vinnur, og það er einnig það sem gerir óskipt tæki ef það birtist hættulegt. A tæki sem tilkynnt lykil sem það hafði myndað fyrir sig myndi klófa alvöru skráningu og senda hverja félagi til að skráningu undir lykil sem aðrir tæki geta ekki opnað.

Það er ekki brotið og það er ekki lokað út úr forritinu: það les samt hvert skilaboð sem það hefur lykla fyrir og sendir ennþá klassískt, en hvetur notandann til að tengja það.

5Uppgötvun og sending ákvarðanir

Viðskiptavinir læra lyklana samanburðarinnar á tvo vegu. Standing áskrift nær yfir fólki sem notandinn tengist í raun – opnum samtalum og hópi meðlimum – þannig að tilkynningar þeirra koma sem venjulegar atburðir. Fyrir samanburð í fyrsta skipti stendur einstakt spurning á sendingartíma, takmarkað við 2,5 sekúndur; ef það leysir ekki, fer skilaboðin klassískt, sem er hegðun sem var til áður en post-quantum var bætt í stað nýrra mistök.

Notandi sem tengir nýja tæki, eða sem fer frá innloggingu í vafranum til staðbundinna lykli, verður post-kvantum fær um miðjan samtali, og stöðugt cached &ldquo;no&rdquo; myndi halda þeim á klassískri dulkóðun í lífi tilkynningarinnar.

5.1 Af hverju er engin niðurgreidd árás

Ákvörðun um leiðbeiningar minnkar á einni spurningu:

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

Það er engin getu umræðu, engin lista yfir stuðlað-algoritma, og engin svið sem árásarmaður getur hreinsað til að neyða veikari leið. er Hreyfingartilgangurinn fyrir fjarlægð eða viðhaldið tilkynningu er að skilaboðin fer klassískt - status quo áður en þessi eiginleiki er undirritað - frekar en að hybrid skilaboð er dregið niður til eitthvað fyrirgefandi.

Áhrifinn heldur einnig við og skiptir meira máli: viðskiptavinur sendir hybrid Aðeins Þegar það er með lykil, og að halda lykilinu er sönnunargögn sem viðtakandinn getur dekapslað. Það er engin ástand þar sem skilaboð er sent post-kvantum til einhvers sem getur lesið það.

6Hybrid uppbygging

Nymchat er ekki skipti fyrir NIP-44. Það wraps það. óbreytt NIP-44 sifra texti er innri lag, og ML-KEM keyrir a ytri AEAD í kringum það:

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)

Báðar leyndarmál þurfa enn að vera endurheimtaðar til að lesa skilaboðina: Ytri lagðinn gefur aðeins NIP-44 sífellt texta, og opnun sem þarf klassískt ECDH. Quantum andstæðingur sem brýtur secp256k1 fær innri lykilinn og stendur enn frammi fyrir ML-KEM; brot ML-KEM strippur ytri laginu og yfirgefur NIP-44 standi.

ML-KEM lykill viðtakanda er langvarandi, en hvert skilaboð er með sjálfstæða sífellt texta og því sjálfstæða kem_ssÞað er það sem gerir afleiðing nonce frekar en handahófi það hljómar: ChaCha20-Poly1305 á vefnum er brotinn með því að nýta (key, nonce) par, og hér er lykillinn sjálfur nýtt fyrir hvert skilaboð, þannig að engin par getur endurtakað.

6.1 Hvers vegna skammtarnir eru aðskildir

Alternatívan er að blanda báðum leyndarmálum í einni samtali lykil og senda það til NIP-44:

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

Þessi uppbygging hljómar eins og dulritun. Það hefur eitt uppbyggingarvandamál: það þarf ecdh_x, rafræna x-samstæðan af útgáfu ECDH, sem lykilatriði - og vafrakostnaður (NIP-07) eða fjarlægur undirritaður (NIP-46Það framkvæmir NIP-44 fyrir hönd kallaðarinnar og gefur aftur sífellt texta, sem er allt staðið við að halda lykilinu einhvers staðar sem forritið getur ekki náð.

Að blanda leyndarmálunum útilokaði því hvert innlogg sem geymir einkaleyfi í undirrita, sem er að segja mest varkár notendur, og engin mikill vinnu á lykilframleiðslu getur breytt því. Layering fjarlægir afhengingu: NIP-44 er enn heilt og er framleitt af því sem geymir einkaleyfi, undirrita með, en KEM helmingurinn er reiknað úr endurheimta kóði sem viðskiptavinurinn geymir beint.

Kostnaður er bandbreidd, og það er ekki lítið. ML-KEM siffertekstur er 1.088 bytes og ríður á hverri skilaboð, base64url-kóðað til 1.451 stafi; ytri AEAD bætir 16-byte Poly1305 merki og stækkar NIP-44 gagnaskipti sem það wraps með þriðju. 50 stafi skilaboð vaxa frá 176 bytes til 1,712, og 2.000 stafi einn frá 2.820 til 5.238. Fjarlægð er um 1,5 KB á skilaboð óháð hversu stutt skilaboðin er, sem er kostnaður fyrir innkapslun á hverjum tíma frekar en endurnotkun sameiginlegra leyndarmála.

6.2 Sjálfstæð payloads

The pq2. Forskeytið gerir útbreiðslu aukalega: það er sjálfsmyndandi, þannig að viðskiptavinur velur uppgötvunarstigið með því að athuga gagnasöfnunina frekar en með því að treysta merki eða muna hvað félagi styður. Lesandi sem þekkir ekki forskeyti missir að opna gagnasöfnunina frekar en að lesa hana rangt, og skilaboð sem seld eru fyrir báðum hliðum gæti gert post-quantum að vera lesandi eins og venjulegur NIP-44 án flutnings.

Sjálfstæð afneitun

ML-KEM dekapslun er hönnuð til að aldrei misheppna: með misheppnuðu sifratekst gefur Fujisaki-Okamoto umbreytingurinn aftur ákvarðanatölva sem er pseudo-tilviljandi leyndarmál frekar en mistök. Sviptur lykill kemur því alls ekki upp á KEM-laginu - það kemur upp sem HMAC mistök innan NIP-44, sem er eins og rangt klassískt lykill yfirborð. Hreyfingar meðhöndla bæði eins, svo að misheppnin ber ekki mismunandi merki. Það er einnig það sem gerir tilvalda listann í kafla 9.1 að vinna: viðskiptavinur reynir hvern lykil í röð og gerir NIP-44 að segja hver var rétt.

6.3 Báðar lagir af gjafabréfinu

A NIP-17 Sérstak skilaboð er a NIP-59 Gift Wrap: ósignuð orðstír, seldur undir persónuverndarsteypu sendanda (sjá 13), þá wrapped undir kastað lykil sem myndaður er fyrir skilaboð (sjá 1059). Á innloggingu sem heldur persónuverndarsteypu beint, Nymchat hybridizes báðar lag, hver með sínu eigin innkapslun.

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
Báðar skráningarefni eru hybrid, hver með sjálfstæða ML-KEM innkapslun. Ytri lagurinn er keyptur í kastað leyndarmál, þannig að umbúðin sýnir ekki sendanda.

Skilaboðin fær aðeins ytri lag. Skilaboðin er framleidd af skilaboðin sem venjulegt NIP-44 - forritin sér aldrei lykilinn sem gerir það - þannig að það er ekki hægt að hybridize í staðinn. Þetta kostar ekkert gegn árásinni í spurningu: Skilaboðin er aðgengilegt aðeins í gegnum wrap, og skilaboðin er það sem skráðinn geymir. Óvini sem hefur skráð umferð verður að brjóta ML-KEM áður en sigill er jafnvel sýnilegt til að ráðast.

7Group skilaboð og hlutfalda þekkingu

A hópur skilaboð er ekki einn sifra texta. Það er sama einfalda texta gefin út fyrir hvert meðlimur, hver afrit innkapsluð til eigin ML-KEM lykill þess aðila. meðlimur sem hefur gefið út lykil fær hybrid wrap; einn sem hefur ekki fær klassísk wrap.

Þetta skapar reikningsvandamál sem naiv framkvæmd fær rangt. Ef átta af tíu meðlimum fá hybrid afrit, skilaboðin er ekki Óvini þarf eitt klassískt afrit af hreinu texta sem er það sama í öllum tíu, þannig að skilaboðin er aðeins verndað ef hverjum Það er kópið.

Nymchat fylgir því upp á boðorð fyrir boðorð í tímanum - reikningur er aðeins þekktur meðan umbúðir eru að byggja - og merki skýrslur &ldquo;kvantum-resistent til 8 af 10 meðlimum&rdquo; frekar en að segja að skilaboðin sé verndað. Fékk hópur skilaboð (aðeins sendandi telur aðdáandi-out), tengi skýrslur að hluta en ekki fullnægjandi vernd.

7.1 Það sem skjöldinn skýrði

Skjalinn segir sannleikann um Skilaboð, ekki um hugbúnaðinn sem sendi það:

Dæmi er skráð þegar skilaboð er seldur frekar en endurtekinn frá því sem félagi auglýsir síðar. Ciphertext sem nú þegar er ekki hægt að verða betri vernd en það var, og tengi sem endurskapaði gömlu skilaboð á styrk nýrra tilkynningu væri að halda eitthvað rangt um bytes á sendingu.

The hópur reglur hér að ofan stafa yfir þetta frekar en að skipta um það: hópur skilaboð er fullkomlega verndar aðeins þegar hver félagi afrit var, og fengið hópur skilaboð með engin umfang reikning sýnir að hluta.

8Skilaboð beint til sjálfs síns

Nokkrar hlutir sem viðskiptavinur geymir eru dulkóðaðar til eigin persónu notandans: samskiptaupplýsingar, samtalslistan, hópur lykla og skilaboð. Þessar bera meira um notandann en flestir einstök skilaboð gera, svo að láta þá klassískt myndi gera þá veikasta geymda artefaktina óháð því hversu vandlega skilaboðin voru seld. Þeir nota sömu blöndu, innkapsluð í eigin rót-fræga lykla notandans - með einu undantekningu sem lýst er í kafla 3.2, nymchat-pq-root líkan sjálfa, sem ekki er hægt að selja undir lykli sem aðeins það getur framleitt.

A settings blob eða archive röð situr á einum stað í mörg ár, sem er nákvæmlega mynd af hlutum sem uppskera-nú-þekkt-síðar andstæðingur safnar - miklu meira en hvaða einasta skilaboð, sem er að minnsta kosti ævarandi í eigin huga notandans.

Eitt takmarkanir stjórna formi hér frekar en lykillinn. hverjum Hver tæki auglýsir því hvað það getur opnað í listanum sem auglýsingarnar eru með, og reikningurinn skrifar aðeins það sem allir þeirra geta lesið.

Takmörk sem er þess virði að segja

Tæki sem er með einkunnina en ekki rótinn getur ekki opnað neitt sem er lokað við rótanlegan lykil, þar á meðal eigin stillingum. Það er viljandi afleiðing, ekki yfirhorf, og þess vegna hefur kafla 3.3 slík tæki til að tengja í stað þess að mynta nýjan rót: annað rót myndi ekki gera blob lesandi, það myndi aðeins skipta upp lykil efni einkunnans í tvö.

Tæki sem stýrir útbreiðslu vafra eða fjarlægri undirskriftaraðila (NIP-46) geymir ekki nsec til að koma frá, en það geymir endurgreiðslukóðið, og undir skipulögð uppbyggingu af kafla 6.1 sem er allt sem post-kvantum helming þarf: undirskriftaraðili framleiðir NIP-44 laginu eins og það hefur alltaf, og viðskiptavinurinn lykur ytri laginu sjálfu.

9Hreyfing

The epoch Counter í afleiðingu er það sem gerir snúning mögulegt án nýrra lykill efni. Með því að auka það gefur nýtt lykillpari frá sömu rót og endurskrifað tilkynningu; félagar taka upp nýjan lykil úr skipanlegri skráningu.

9.1 Gamla tímabil eru haldnir, og ekkert er endurskrifað

Ekkert er endurskrifað þegar lykill snúist. A viðskiptavinur byggir upp tilkynningarkandidat frá núverandi tímabili niður til tímabili &minus; 3, þannig að skilaboð sem er seld strax áður en snúningur opnar enn gegn lykillpari sem var núverandi þegar það var sent.

Það glugga er það sem gerir snúning öruggt að gera allavega: án þess myndi hver snúning banna hvað sem var í flugi. Allt sem þegar var þegið er lesandi í lífi einkenni, vegna þess að skilaboð sem notandinn getur ekki lengur opnað er stranglega verri fyrir þá en einn sem vernd er ekki hægt að bæta afturkallað (Skráning 10.5).

10Það sem verndar ekki

Pappír sem listar aðeins það sem hönnun fær er ekki að lýsa kerfi, og að ofvirka öryggi eiginleika í tengi er verra en að gleyma því.

10.1 Root er annað leyndarmál, og missa það er ekki endurheimtur

Þetta er raunverulegur verð á hönnuninni. Áhrifin í kafla 2 að notandi ætti að hafa nákvæmlega eitt að halda er ekki hægt að uppfylla: nsec sjálfur endurbyggir ekki eftirkvantakeysið, því að allt er í því að engin opinber gildi og engin önnur leyndarmál sýnir það. Ef engin tæki er með rótinu og engin af hlekkunum í kafla 3.2 er hægt að opna, er efni sem sett er inn í rótakeysið ekki endurheimilegt.

Með handbókinni er eina leiðin, þetta er skarpari en það getur fyrst lesið. nympq1… kóða hvar sem er hefur nákvæmlega eitt af því, á einum tæki, og missa að tækið missir hvert post-kvantum skilaboð, stillingar blob og archive röð siglað á það. nsec það hjálpar ekki; það er eignin sem allt hönnun byggir á.

Árásarmaður ráðast á ódýrasta leiðina í boði, þannig að áætlun er þess virði sem veikasta endurheimtaferð hennar er þess virði - minnislegt passsphrase, til dæmis, myndi setja allt á hvað passsphrase er þess virði, og wrapped röð er nákvæmlega atriði sem uppskeru-nú-þekkt-síðar andstæðingur safnar og grætur offline á ókeypis tíma.

10.2 Autentication, sem mismunandi frá trúnaðarmálum

Sérhver undirskrift í Nostr er Schnorr yfir secp256k1, og það er óbreytt hér. Óvinur með kvantamaskína gæti falsað undirskriftir og sýnt sig vera notandi í raunveruleikanum. Það sem hybrid lykilskipti tapar er uppskeru-nú-þekkt-síðar: árásarmaður sem skráir umferð í dag getur ekki lesið það síðar. Það gerir ekki skilaboð óþægilegt gegn andstæðingunni sem þegar hefur vélina. Þessi munur er flutt inn í forritina með vitund – padlock vísbendingar tilkynna staðfestingu, skjald tilkynna trúnað, og þeir eru aðskilin glyphs vegna þess að skilaboð getur haft einn án annarra.

Það takmarkar einnig það sem tilkynningin í kafla 4 getur lofað. Bindingin milli npub og ML-KEM lykla er sepp256k1 undirskrift, þannig að andstæðingur sem getur falsað þá getur skipt um eigin lykla.

10.3 Metadata

Gjöf umbúningur fela sendanda, viðtakanda utan einasta p Tákn, tegund og tímastigi innri skilaboðans. Það fela ekki að atburður sé til, stærð þess eða hvenær umskipti fékk það.

10.4 Offline mesh

Bluetooth mesh flutningur Nymchat er sérstakt samskipti með eigin handshake, og það er ekki falið af þessari vinnu.

10.5 Skilaboð sem hafa verið sent

Ciphertext skráð meðan bæði hliðar voru enn klassískur er klassískur varanlega. Það er þegar til og er ekki hægt að endurspegla. Verndin byrjar á skilaboðinu þar sem báðir hliðar haldið post-kvantum lykla, ekki á þeim tíma sem eiginleiki var slökkt á.

11Alternatíur í huga

nálgunAf hverju ekki
Afleiðing post-quantum lykilsins frá einkenni lykilinu Afneitun er opinber algorithm yfir nsec, og kvantum andstæðingurinn endurheimtir nsec frá útgáfu npub, þannig að brjóta klassískt helminginn hendur yfir post-kvantum helminginn með því.
Sendu rótinn til annarra tæki notanda í gegnum NIP-44 Rót sem er sendur undir klassískri einungis skráningu er hægt að endurheimta af hverjum sem skráð það skilaboð og brýtur lykillinn síðar, sem er andstæðingurinn sem róturinn er til til að stöðva.
A sjálfstætt búin ML-KEM lykilorð á hverjum tæki Afneitað. Tæki myndi halda mismunandi dekapslun lykla, og einn skipulögð auglýsing á einkenni getur ekki borið þá öll. Peers myndi greina til hvaða lykla var gefin út síðast, og hvert annað tæki væri ekki fær um að lesa niðurstaðan. Einn rót á einkenni, hreyfan af leiðum kafla 3.2, er það sem forðast það.
Skrifaðu rótina undir PIN Afneitað. Fjórum stafi PIN er um 13 bitur gegn offline árásaraðilum sem er að halda innblástur röð. Að bjóða það við hliðina á tveimur 256-bítum leiðum myndi misskilja hvað veikasta innblástur er virði.
Nú er hægt að breyta npub til að flytja báða lykla. 1,184 bytes er ekki deilandi skilgreindur og það myndi brjóta hverjum núverandi Nostr viðskiptavinum að meta heimilisfang sem er skilgreint sem 32 bytes.
A Key Directory þjónusta Hreyfir heimild netinu til að forðast.Sá sem svarar leitinni ákvarðar hver getur lesið skilaboðin.
Sækja um lykilinn í hverri skilaboð Leysir ekki neitt: sendandi þarf Viðtakendur Key áður en fyrsta skilaboðin, sem er nákvæmlega ef engin fyrri skilaboð til að bera það.
In-band samningsaðgerðir Skapar niðurgreidd yfirborð. Árásarmaður sem getur fjarlægt getu flagga krefst klassískri leið.
Post-quantum aðeins, engin klassískur leg Hleypur áratugum greiningu á secp256k1 í burtu fyrir miklu yngri frumkvöðla. bæði Fallið er.

12Parity framkvæmd

Nymchat skipar tveimur sjálfstæðum framkvæmdastöðum þessarar uppbyggingar - einn í JavaScript fyrir vefurforritið, einn í Dart fyrir farsímaforritið, þar á meðal ML-KEM-768 hlið frá grunni.

The Dart ML-KEM framkvæmd er staðfest gegn opinberu Niður ACVP Sérstaklega er hægt að gera tilkynningar um áætlanir sem hafa verið gerðar í samræmi við viðfangsefni ESB-sambandsins (ML-KEM-*-FIPS203) — 25 lykill kynningu, 25 innkapslun og 10 afkapslun tilfelli, keypt sem eigin sveit. Þessir eru vektorir NIST birtir til að staðfesta framkvæmd, svo að fara yfir þá er sönnun um að porturinn sé réttur, ekki einfaldlega sönnun um að tveir viðskiptavinir séu sammála hvort öðru. Auk þess er sameiginleg uppsetningu af prófvektorum — fræ afleiðing, innkapslun, bæði gagnlast snið og fullkomin gjöf wraps — myndaður úr JavaScript tilvísuninni og athugað af báðum prófsaðgerðum. Root leyndarmálið stækkar þessa uppsetningu í stað þess að skipta um það: root til fræ, root til keypair, opinber fingerprint af rótinu og afleiðandi lyk nympq1… A mismunandi í annað framkvæmd misheppnar byggingu frekar en framleiða skilaboð sem hinn viðskiptavinur getur ekki opnað.

Það er það sem segir tækið &ldquo;þetta er rótinn sem ég haldi&rdquo; frá &ldquo;þetta er öðruvísi, og viðskiptavinur sem gat ekki endurspegla fingraförn annarra viðskiptavinar myndi lesa fullkomlega góða skráningu sem engin skráning alls - og þá, eftir kafla 3.3, mynta annað rót og skipta einkenni.

Nymchat er Opinn uppspretta undir AGPL-3.0. Kjarninn sem lýst er hér er js/nym-crypto.js og js/modules/pq.js á vefsíðu viðskiptavina og lib/core/crypto/ með lib/features/identity/pq_registry.dart í farsíma viðskiptavinum.

Fyrir stuttari, ekki tæknilega útskýringu, sjá Knowledge Base síða á kvantum-þolandi skráningu.