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.
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.
Þessi síða er vélþýdd til hægðarauka. Enska frumritið er útgáfan sem á við.
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ð:
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 á þá:
- Það er hægt að skipta. Ein lykill sem enginn getur lesið í augnablikinu er nákvæmlega það sem árásarmaður skiptir fyrir sjálfan sig.
- Það þarf að samþykkja á öllum tæki notanda. Sama reikning á símanum og tölvu þarf að sýna sömu lykil eða skilaboð sem hafa verið siglað á einum er ekki hægt að opna á hinum.
- Það má missa. opinber lykill er endurgreitt úr leyndarmálum, þannig að það sem raunverulega þarf að lifa er þessi leyndarmál - og með uppbyggingu er ekkert annað að endurbyggja það.
2Design takmarkanir
Fjórir takmarkanir myndu svarið, og þeir útiloka flest augljós hönnun áður en einhver kóða er skrifað.
- Þ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.
- Engin yfirvöld Það er engin þjónusta sem hægt er að treysta til að segja hvaða lykil tilheyrir hverjum.
- 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.
- 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.
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).
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öð:
- Leitaðu að núverandi
nymchat-pq-rootRekstur á. - Rekstur fundinn, og þessi tæki getur unwrapped það - samþykkja það og tilkynna þessa einkenni sem post-kvantum fær.
- 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ð. - 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 “þessi ML-KEM lykillinn tilheyrir þessum npub” 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ð “Nymchat viðskiptavinur, engin post-kvantus lykill” 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ð | Þýðir | Senda 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 “no” 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.
kem_ssEkkert í þessari afleiðingu snertir rautt ECDH útgáfu, sem er það sem kafla 6.1 snúast á.kem_ct,recip_kem_pkog báðir einkenni lyklar eru bundnir í sem tengd gögn, þannig að ytri lag er bundin að nákvæmri útskrifa sem skapaði það.
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.
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.
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 “kvantum-resistent til 8 af 10 meðlimum” 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ð:
- Fullnægjandi vernd: Hver afrit af þessari einfalda texta kom út hybrid.
- Að hluta: Sumir afrit af hópur skilaboð gekk út klassískt. Dregið degraded frekar en fullur, vegna þess að eitt klassískt afrit af einfalda texta eins og í öllum þeim er allt andstæðing þörf.
- Klassískt er sagt beint í stað þess að birtast sem engin merki, vegna þess að skortur vísbendingur er ólíkur á milli “ubeskyldur”, “broken” og “þessar byggingar sakna eiginleika”.
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ð.
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 − 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álgun | Af 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ð “þetta er rótinn sem ég haldi” frá “þ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.