Nymchat teknik whitepaper
Post-Quantum Key Agreement nan Nymchat
Distribye ML-KEM-768 kle piblik sou Nostr san yon katwòk oswa yon rejis, ak sèk yo soti nan yon sekrè ke pa gen okenn valè piblik ekspoze.
Ajoute yon echanj kle post-kvant nan yon messenger se sitou pa yon pwoblèm kriptografik. Primitiv yo estandaje ak library yo egziste. Pandan ki difisil la se ke chak patisipan kounye a bezwen yon dezyèm dokiman sa a dekri ki jan Nymchat reponn ki - ki kote kle a dezyèm vini soti nan, ki jan li rive nan moun ki bezwen li, ak sa ki entèfas la pèmèt yo revele sou rezilta a - ak, nan seksyon an dènye, sa ki rezilta sa a pa pwoteje.
Paj sa a se machin-tradui pou konvenyans. Orijinal angle a se vèsyon ki aplike a.
1Problèm nan
Mesaj prive nou yo enkripte ak NIP-44, ki gen de mwatye separe. Mwatye a ki scrambles tèks la pwòp - ChaCha20 ak yon tag HMAC-SHA256, klavye nan Pwodwi pou (RFC 5869 nan) - se pa vle di menase pa yon òdinatè kwan; algorithm la nan Grover koute yon akselerasyon kare-koòd la kont yon kle simetik, ak 256 bits absorbe sa a. Eseye sou kle a se elliptik-kouri Diffie-Hellman sou Pwodwi pou Telefòn 256k1, ak algorithm Shor la rezoud logarithm la diskrètman. Recovering yon kle prive soti nan homolog li yo piblik retroactively ekspoze chak sekrè pataje ke kle a te kounye a pwodwi.
Menas sa a kreye pa retardé jiskaske yon machin sa a egziste. Yon adversè ak depo ka anrejistre tèks kriptografik jodi a ak deskripte li lè kapasite a rive. Tout bagay voye kounye a ki toujou enpòtan Lè sa a, se deja kompromèt. Sa a se atak la espesifik nan yon echanj klavye post-quantum, epi li se poukisa travay la pa ka waje pou machin la dwe bati.
1.1 Kesyon sa a papye reponn
Yon mitigasyon se byen konprann: kouri yon mekanis enkapselasyon klavye post-quantum ansanm ak echanj la klasik, se konsa yon atakè dwe ranpli tou de yo li nenpòt ki bagay. Nymchat sèvi ak ML-KEM-768 (Pwoteksyon 203). Sa a imedyatman rele yon pwoblèm distribisyon:
Pou mesaj Alice jodi a, ou bezwen yon sèl bagay: npub li. Ajoute yon echanj post-kvant ak ou bezwen yon dezyèm - li ML-KEM kle piblik. Ki kote kle sa a ap viv, ak ki jan ou jwenn li anvan ou ka voye li yon bagay?
Yon npub se pwòp tèt ou. Ou ka ekri li sou papye, li wout la, oswa sonje li soti nan yon ekran, epi li se tout moun ki bezwen enkripsyon pou ou. Yon ML-KEM-768 kle piblik se 1,184 byte. Li pa ka li wout la, li pa pral mete nan yon non itilizatè, epi li pa apwopriye nan yon kòd QR alantou yon idantite ki se sèlman 32 byte.
Pifò difisil la se ke yon klavye dezyèm pote twa pwoblèm diferan, ak rès la nan papye sa a se sitou yon repons nan yo:
- Li kapab ranplase. Yon kle pa gen okenn moun ka li nan yon gade se eksakteman kalite a yon atake echanj pou pwòp yo. Seksyon 4 lye l 'nan idantite a ak yon signature, ki mete sa a tou senpleman.
- Li ta dwe dakò nan tout aparèy yon itilizatè. Yon kont menm sou yon telefòn ak yon laptop dwe prezante kle a menm, oswa mesaj selebre nan youn pa ka louvri sou lòt la.
- Li ka pèdi. se kle a piblik republique soti nan yon sekrè, se konsa sa ki reyèlman gen yo rete se sekrè sa a - ak pa gen anyen rekonstriksyon pa konstriksyon an. Seksyon 10.1 eksplike klè ki sa ki koute, paske sa a se pa rezoud menm jan an ke peye pou.
2konsepsyon restriksyon
Kat restriksyon fòme repons la, epi yo elimine plizyè desen evidan anvan nenpòt kòd ekri.
- Kòm yon ti sekrè posib. Tout sekrè adisyonèl se yon lòt fason pou pèdi istwa ou, ak yon moun ki konnen backup yon nsec pa pral konnen pou backup nenpòt lòt bagay. Seksyon 3.1 montre sa a se pa kapab satisfè dirèkteman - yon kle post-kvant soti nan nsec bay pa gen okenn pwoteksyon post-kvant nan tout - se konsa konsepsyon an pase eksakteman yon sekrè ak pa gen plis: yon sèl pati nan materyèl kle, ki te kreye yon fwa pou chak idantite, prezante nan menm fòm la ak nan menm kote, se konsa ke nenpòt moun ki konnen ki jan yo kenbe youn konnen ki jan yo kenbe lòt la. Seksyon 10.1 se onèt sou sa ki koute li toujou.
- Pa gen otorite. Pa gen okenn sèvè ki ka konfyans di ki kle a nan ki moun. Nenpòt sèvè sa a vin pwen an kote mesaj ka redireksyon.
- Plis aparèy, yon sèl idantite. Yon idantite Nostr se souvan itilize soti nan plizyè kliyan nan yon sèl fwa. Nenpòt materyèl kle ki egziste dwe finalman identik sou tout nan yo, ak chemen yo ki pote li gen yo pa ta dwe yo dwe liable pa oponè a karakteristik la defann kont li.
- Pa gen okenn negosyon. Nenpòt echanj nan band nan “ki enkyetid ou sipòte?” se yon sifas yon atakè ka stripe yo force opsyon a pi ba. konsepsyon an ta dwe gen pa gen anyen pou degradasyon.
3Separasyon Root sekrè
Dekapsulasyon kle a ML-KEM se fè soti nan materyèl kle ke pa gen okenn valè piblik ekspoze. Chak idantite jwenn yon sekrè rad, ki te kreye yon fwa:
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 la se prezante nan itilizatè a jan yon nsec se: Pwodwi pou ak prefiks la moun-lwe
nympqLi se li kòm nympq1…, ki parèt alantou nsec la nan ekran an idantite ki anba a menm revele interaksyon, kopye ak menm kontwòl la, pa janm log ak pa janm voye nenpòt kote nan klè la. Li pa yon koòdone ak li pa yon login. Li se yon materyèl kle ke itilizatè a ka sove, menm jan ak nsec la.
Selil la se domèn-separé nan yon objektif, se konsa pa gen okenn lòt sekrè ka janm derive menm klavyepa. epoch kontwole motè rotasyon (Sektè 9).
3.1 Poukisa kle a pa ka derive soti nan kle a idantite
konsepsyon an evidan se fè sèk keyword la soti nan sekrè a ke itilizatè a deja gen:
seed = HKDF(salt = "…", IKM = nsec) // do not do this
Li se atraksyonèl pou kat rezon, yo tout reyèl: pa gen anyen nouvo pou backup, paske nsec la deja se backup la; chak aparèy ki dakò pa konstriksyon, ak pa gen okenn pwotokòl sinkronizasyon ale mal; yon sèl anons ranplase pou chak idantite se klèman kounye a, paske aparèy yo pa ka diskite sou kle a; ak kle a ki egziste anvan li te janm pibliye, se konsa yon kliyan ka selebre yon bagay pou tèt li nan premye ranje.
Tout kat benefis yo valè, pou yon rezon. Algorithm nan Shor kouri kont yon npub pibliye ba nsec la. Derivasyon semen se yon algorithm piblik sou nsec la. Se poutèt sa, oponè a ki kouvri mwatye a klasik rekonstrike mwatye a post-quantum la pa kouri menm HKDF la ke tout lòt moun kouri. Contre ranbousman-kounye a-decrypt-later - yon sèl menase karakteristik la egziste yo mete sou - yon kle derive nan fason sa a ajoute pa gen anyen.
ML-KEM decapsulation kle a ta dwe soti nan entropy ki pa ka derive soti nan nsec la, epi yo pa janm transmèt anba klasik-sèl enkripsyon.
Yon sekrè endividyèlman kreye ki Lè sa a, se sinkronize ant aparèy yon itilizatè nan yon mesaj NIP-44 nòmal se menm erè a ak etap adisyonèl: yon opozan anrejistre mesaj sa a jodi a ak retabli kle a klasik li yo pita, ak rad la chita soti. Se poutèt sa yo nan seksyon pwochen yo se chemen yo yo, ak poukisa pa gen anyen nan yo “send li nan lòt aparèy ou.”
3.2 Pran wòch la nan lòt aparèy nan itilizatè a
Restriction 3 nan seksyon 2 - yon sèl idantite, plizyè aparèy - pa ka satisfè pa aritmetik isit la, paske tout pwen an se ke kle a se pa yon fonksyon nan yon bagay aparèy yo deja pataje. Li gen yo satisfè pa transpòte, e gen eksakteman yon sèl chemen: itilizatè a deplase aparèy la nympq1… Kòd nan tèt ou.
Root la se prezante kòm nympq1… adrès nan nsec la, ak yon dezyèm aparèy aksepte li mete nan menm panèl la. Sa a se tout mekanis la. Yon aparèy ki pa te bay kòd la pa ka patisipe, ki se dekri nan seksyon 4.2.
Manual transfè se yon plan delibere anvan yon premye etap. Règ la nan seksyon 3.1 di wòch la pa ta ka janm vwayaje anba klasik-kòmanse sèlman, ak chak mekanis ki ta fè sa a otomatik - senkronize li atravè yon relay, enkli li nan kle a idantite - vire eksakteman sa a. Etap la ke itilizatè a fè se rezon ki pwoteksyon an reyèl.
Format la kite espas pou yon pwason enpak: yon dosye ka pote yon lis nan enpak, chak yon AEAD blob anba yon kle ke itilizatè a ka reprodike sou yon lòt aparèy - yon passkey PRF pwodiksyon, pou egzanp. Pa gen anyen anplwaye yon jodi a, ak m nympq1… Kòd la se sèlman wout la atravè. Seksyon 10.1 deside ki sa ki koute.
Rekòmandasyon an nan tèt li viv nan kategori anviwònman li yo, nymchat-pq-rootEpitou pote pa gen okipe li fè travay nesesè: prezans li se ki jan yon dezyèm aparèy aprann ke idantite sa a deja gen yon wòch, ki se sa ki pèmèt li mete yon rivyè (Sèk 3.3).
nan nymchat-pq-root Kategorizasyon pa dwe enkripsyon nan kle a ML-KEM ki sòti nan wòch la. Sa a ranje pote yon sèl kopi nan wòch la, se konsa selebre li anba yon kle ki sòti nan wòch la se yon kouch ki kle a se nan bwat la: pa gen okenn aparèy ka janm louvri l ', ki gen ladan moun ki te ekri l '. Li se selebre klasikman - NIP-44 nan tèt li - oswa pa nan tout. Sa a se yon sèl kote konsepsyon an aksepte pwoteksyon klasik-se sèlman, epi li ka pèmèt yo: ranje a pa gen okenn wòch jodi a, sèlman faktè a ke youn egziste.
Tout lòt kategori anviwònman ka ak ta dwe sèvi ak kle a root-derived. Sa a se yon sèl eksepsyon, epi li se yon eksepsyon sou sikilasyon anvan sou fòs.
3.3 Generasyon ak adopsyon
Sou boot, kenbe yon idantite durable, yon kliyan travay nan lòd sa a:
- Rechèch pou yon egziste
nymchat-pq-rootRekòmande - Rekòmandasyon te jwenn, ak aparèy sa a ka detann li - adopte li ak anonse idantite sa a kòm post-kvant kapasite.
- Rekòmandasyon te jwenn, ak aparèy sa a pa ka dewole li — pa kreye yon nouvo rad, epi pa pibliye nenpòt piblisite nan tout. Demande itilizatè a pou lyen aparèy sa a pa antre nan
nympq1…Kòd soti nan yon aparèy ki deja gen li. - Pa Rekòmande — kreye yon rad, pibliye dosye a, anonse, ak montre
nympq1…Kòd la nan itilizatè a yon fwa pou yo ka sove li.
Etap 3 se etap la ki se fasil yo kache erè, epi li se rezon ki lòd la se ekri desann anvan kite nan chak implemantasyon. De aparèy ki chak deside yo kreye yon wòch pwodwi de wòch endividyèl anba yon sèl idantite, ak sa a se erè sa a lòd egziste pou anpeche.
4Anons kapasite
Piblik la piblik nan klavye a derive se pibliye kòm yon adrèsable
Pwodwi pou
evènman — kalite 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": [ ... ]
}
}
Addressable vle di relay la kenbe yon evènman pou chak (kind, pubkey, d-tag), se konsa yon repiblik ranplase anons la anvan an nan plas. Chak idantite se konsa gen eksakteman yon dosye kounye a, ki se sa ki fè “touche nan Alice a ” yon sèl repitasyon san ambiguous anvan yon lis pou konpare.
Signature se obligatwa. Evènman an sigare pa kle a idantite a, se konsa revizyon an “ki ML-KEM sa a kle nan sa a npub” se menm jan fòs kòm npub la menm. Substitute yon klavye encapsulation diferan mande pou forge yon signature secp256k1. Yon atakè ki ka fè sa pa bezwen ankouraje ak KEM la.
Anons yo fini. 7 jou NIP-40 expiration, republisé chak 24 èdtan, kenbe dosye a yon deklarasyon sou yon kliyan ki toujou kouri olye pou yon sèl ki te itilize. Root la se pa janm kouri; sèlman revendi sou li fè.
Yon anons manke se li menm jan ak yon anons ki pa janm pote yon kle: kolèj voye yon NIP-44 nòmal, ki chak login ka li, ak kliyan a retabli echanj la post-kvant sou koneksyon pwochen li yo, lè li repiblike. Se konsa, ale silan pou plis pase yon semèn koute pwoteksyon pou mesaj yo voye pandan lannwit la - yo klasikman enkripsyon anviwònman-rezistans - ak pa koute anyen ankò. Livrezon se san yo pa afekte, pa gen anyen deja resevwa vin imedyatab, ak pa gen okenn aksyon nesesè sou retounen.
Asimetri sa a se rezon a nan peryòd la anvan yon aksidan nan li. Pa yon sèl, yon dosye depase kle a li rele: yon aparèy ki se retire, resèt, oswa gen wòch la ranplase kite yon enstriksyon estanda pou enkapsule nan yon kle pa gen okenn moun kenbe ankò, ak mesaj voye anba li se pèdi san okenn erè sou nenpòt ki bò. Sèt jou limite fenèt sa a, epi pèmèt relay yo retire dosye a tèt yo pi wo a depann sou kliyan yo note.
Yon jaden kle rele fòma li yo. Jaden an se pk2, ak cif la se yon pati nan kontra anvan dekorasyon: li rele fòma payload la ke kle a ka itilize ak. Yon lektè ki pa rekonèt jaden an konklike “Nymchat kliyan, pa gen okenn post-kwantik kle” ak voye nòmal NIP-44, ki chak login ka li. Sa a se direksyon a erè ki kòrèkteman, epi li se vo di kòm yon règ la nimewo a fòma egziste pou egzekite: yon revizyon kapasite pa rekonèt dwe koute pwoteksyon, pa janm livrezon. Yon kle yon pafè pa ka sèvi ak se pi mal pase pa gen okenn kle nan tout, paske mesaj la li pwodwi se pèdi san yo pa gen okenn erè sou nenpòt ki bò.
4.1 Absense se vle di, ak twa-valye
Yon detay subtile men enpòtan: anons la te pibliye pa tout kliyan Nymchat, pa sèlman moun ki kapab post-kvant, ak jaden an kle se opsyonèl. Sa a rezilta nan twa estasyon diferan olye pou de:
| Observasyon | Vle di | voye konpòtman |
|---|---|---|
| Anons ak yon kle | Nymchat, post-quantum kapab | Hybrid nan |
| Anons, pa gen okenn kle | Nymchat, klasik sèlman - post-quantum soti, oswa yon aparèy ki pa toujou lye ak wòch la nan identite a | Klasik NIP-17 |
| Pa anons | Kliyan inik. Ki ka nenpòt ki itilizatè Nostr oswa Bitchat | Klasik, plis yon wrap konpatibilite |
Yon anons san kle se yon deklarasyon sigare ke voye a kouri Nymchat, ki pèmèt voye wout la skip yon anbalaj ant-protocol espesifik li ta dwe anbale pou nenpòt moun ki li pa kapab identifye.
4.2 Yon aparèy ki pa ka louvri rad la rete silan
Anons la se ranplase: yon evènman pou chak idantite, dènye ekri genyen. Sa a se sa ki fè konsepsyon an nan yon sèl dosye travay, epi li se tou sa ki fè yon aparèy ki pa gen lyen dangere si li pibliye. Yon aparèy ki anonse yon kle li te mete pou tèt li ta blòke dosye a reyèl ak voye chak pafè a enkripte anba yon kle ke lòt aparèy yo pa ka louvri.
Se konsa, yon aparèy ki konnen yon wòch egziste men pa ka louvri li pibliye pa gen okenn anons nan tout. Li se pa broken ak li se pa bloke soti nan aplikasyon an: li toujou li chak mesaj li gen kle yo pou ak toujou voye klasikman, pandan y ap mande itilizatè a lye li. Silence se konpòtman ki kòrèk pou yon aparèy ki pa ka pale pou idantite a.
5Deskripsyon ak desizyon nan voye
Kliyan aprann kle pafè yo nan de fason. Yon abònman estanda kouvri moun ki yon itilizatè reyèlman korespondan ak - konvèsasyon louvri ak manm gwoup - se konsa anons yo rive kòm evènman nòmal. Pou yon pafè reyinyon pou premye fwa, yon kesyon yon sèl kouri nan tan voye, limite nan 2.5 segonn; si li pa rezoud, mesaj la se klasik, ki se konpòtman an ki te egziste anvan post-kvant te ajoute anvan yon nouvo mòd rezoud.
Yon itilizatè ki konekte yon nouvo aparèy, oswa ki deplase soti nan yon login-plisaj navigatè nan yon kle lokal, vin post-kvantyèl-kapab mid-konvèsasyon, ak yon permanan cache “no” ta kenbe yo sou enkripsyon klasik pou lavi a nan anons la.
5.1 Poukisa pa gen okenn atak downgrade
Routing desizyon an redwi nan yon sèl kesyon:
pq = (we hold a signed, unexpired ML-KEM key for this recipient)
Pa gen okenn negosyasyon kapasite, pa gen okenn lis algorithms sipòte, ak pa gen okenn jaden yon atakè ka klè yo force yon wout pi ba. se Yon mòd rezoud nan yon anons retire oswa retire se ke mesaj la ale klasik - status quo a anvan karakteristik sa a - pi plis pase ke yon mesaj hibrid se desann nan yon bagay falsifiable.
Konvèti a tou kenbe ak enpòtan plis: yon kliyan voye hibrid Se sèlman lè li kenbe yon kle, ak kenbe kle a se pwouve ke reseptè a ka decapsulate. Gen pa gen okenn estati nan ki yon mesaj te voye post-kvant nan yon moun ki pa ka li.
6Konstriksyon hibrid
Nymchat pa ranplase NIP-44. Li enkli li. Yon tèks enkripti NIP-44 ki pa modifye se kouch la enteryè, ak ML-KEM kouvri yon AEAD ekstèn alantou li:
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)
Tou de sekrè yo dwe toujou retabli pou li mesaj la: kouvèti a deyò pwodui sèlman yon NIP-44 tèks kriptografik, ak louvri ki bezwen klasik la ECDH. Yon adversaire kwan ki kouvri secp256k1 resevwa kle a enteryè ak toujou fè fas a ML-KEM; yon kouvèti nan ML-KEM retire kouvèti a deyò epi li kite NIP-44 ap rete. Chak enpòte genyen plas li yo:
kem_sspa gen anyen nan derivasyon sa a touche pwodiksyon an ECDH brik, ki se sa ki seksyon 6.1 vin sou.kem_ct,recip_kem_pkak tou de kle idantite yo te lye nan kòm done ki asosye, se konsa lay la deyò angaje nan transkripsyon an eksakteman ki te pwodwi li. Splicing yon tèks enkripsyon sou idantite a nan yon lòt voye a manke otantifikasyon anvan deskripsyon.
Encapsulation se fè nouvo sou chak mesaj. ML-KEM kle a nan reseptè a se long-lived, men chak mesaj pote yon tèks encryption independant ak se konsa yon tèks encryption independant
kem_ssLi se sa ki fè derive nonce a anvan randomize li son:
Pwodwi pou Telefòn ChaCha20-Poly1305
se vire pa re- itilize yon (key, nonce) par, ak isit la kle a se nouvo pou chak mesaj, se konsa pa gen yon par ka repete.
6.1 Poukisa layers yo rete separe
Alternatif la se blese de sekrè yo nan yon sèl kle konvèsasyon ak voye sa a nan NIP-44:
ck = HKDF-Extract(salt = "…",
IKM = ecdh_x || kem_ss || …) // do not do this
Konstriksyon sa a son tankou kriptografi. Li gen yon pwoblèm estrikti: li bezwen
ecdh_x, co-koòdone a wòch x-koòdone nan pwodiksyon an ECDH, kòm yon materyèl kle - ak yon extension navigatè (NIP-07) oswa yon sigè distans (NIP-46) pa janm retire valè sa a. Li fè NIP-44 nan non an nan apèl la ak retire yon tèks encryption, ki se tout pwen nan kenbe kle a yon kote aplikasyon an pa ka rive.
Konbine sekrè yo se konsa elimine tout login ki kenbe kle a idantite nan yon signatè, sa vle di itilizatè yo ki pi atansyon, ak pa gen okenn kantite travay sou derivasyon kle a ka chanje li. Layering elimine depans la: NIP-44 rete tout antye ak se pwodwi pa sa ki kenbe kle a idantite, signatè ki gen ladan, pandan ke mwatye a KEM se calculated soti nan kòd la recovery kliyan kenbe dirèkteman.
Kòd la se bandwidth, epi li se pa ti. ML-KEM kriptografik tèks se 1.088 byte ak monte sou chak mesaj, base64url-kode nan 1.451 karaktè; AEAD a deyò ajoute yon 16-byte Poly1305 tag ak agrandi NIP-44 payload li envelopes pa yon twazyèm. Yon mesaj 50 karaktè grandi soti nan 176 byte nan 1.712, ak yon 2000-karaktè youn soti nan 2.820 nan 5.238. Pwodwi a se apeprè 1.5 KB pou chak mesaj san yo pa enpòtan ki jan kout mesaj la se, ki se pri a nan enkapselasyon dènyèman chak fwa olye pou re-utilize yon sekrè pataje.
6.2 Self-deskripsyon payloads
nan pq2. Prefikse fè deplwaye a pèmèt: li se pwòp-deskripsyon, se konsa yon kliyan chwazi wout la deskripsyon pa inspekte pèfòmans anvan pa konfyans yon etikèt oswa remake sa yon pafè sipòte. Yon lektè ki pa rekonèt yon prefikse pa ka louvri pèfòmans sa a anvan mal-li li, ak mesaj selebre anvan tou de pati ta ka fè post-quantum rete liable kòm nòmal NIP-44 san yo pa gen migrasyon.
ML-KEM decapsulation se fèt yo pa janm fè mal: ak yon tèks cifre malforme, transformasyon an Fujisaki-Okamoto retire yon sekrè deterministik pseudo-random anvan yon erè. Se poutèt sa, yon kle erè pa gen okenn sifas nan kouch la KEM nan tout - li se sifas kòm yon erè HMAC nan NIP-44, ki se menm jan an nan yon sifas kle klasik erè. Apèlè trete tou de menm jan an, se konsa, erè a pa gen okenn siyal distinctif. Li se tou sa ki fè lis la kandida nan Seksyon 9.1 ap travay: yon kliyan eseye chak kle nan ranje ak pèmèt NIP-44 di ki sa ki te dwa.
6.3 Tou de lagè nan kado kouvèti
A NIP-17 Mesaj prive se yon NIP-59 gift wrap: yon soumèt ki pa te sigare, selebre anba kle a idantite nan voye a (gen 13), Lè sa a, enkli anba yon kle jere ki te pwodwi pou chak mesaj (gen 1059). Sou yon login ki kenbe kle a idantite dirèkteman, Nymchat hibridize tou de layers, chak ak encapsulation pwòp li yo.
Yon signatè login gen sèlman lag la deyò. Selil la se pwodwi pa signatè a kòm yon NIP-44 nòmal - aplikasyon an pa janm wè kle a ki fè li - se konsa li pa ka hibridize nan plas la. Sa a pa koute anyen kont atak la nan kesyon an: selil la se rive sèlman atravè enpak la, ak selil la se sa yon enskripsyon magazen. Yon avoka ki kenbe trafik anrejistre dwe rompe ML-KEM anvan yon selil se menm vizib pou atake.
7Mesaj gwoup ak kouvèti pati
Yon mesaj gwoup se pa yon sèl tèks kriptografik. Li se tèks la menm ki fèmen soti nan chak manm, chak kopi enkapsule nan kle ML-KEM pwòp la nan manm sa a. Yon manm ki te pibliye yon kle jwenn yon kouvèti hibrid; yon moun ki pa te resevwa yon kouvèti klasik.
Li kreye yon pwoblèm kontabilite ke yon implementation naiv vin erè. Si 8 nan 10 manm resevwa yon kopi hibrid, mesaj la se pa 8-10 pwoteje. Yon opozan bezwen yon kopi klasik nan yon tèks senp ki se menm nan tout 10 a, se konsa mesaj la pwoteje sèlman si chak Kopi nan.
Se poutèt sa, Nymchat swiv kouvèti pou chak mesaj pandan fan-out la - kantite a se sèlman konnen pandan ke wrap yo se bati - ak badj la rapòte “kvantum-rezistans nan 8 nan 10 manm ” olye de revele mesaj la se pwoteje. Ki kote pa gen okenn kantite a disponib, ki se ka a nòmal pou yon manm Receive nan mesaj gwoup (sèlman voye a konsidere fan-out la), entèfas la rapòte pati anvan pwoteksyon konplè. Claiming pwoteksyon konplè sou fòs la nan kopi pwòp yon sèl sèlman ta dwe yon overstatement sou mesaj an jeneral.
7.1 Ki sa ki rapòte bouch la
Shield la rele verite a sou Mesaj, pa sou lojisyèl la ki te voye li:
- Plis pwoteksyon: chak kopi nan sa a tèks plaj te soti hibrid.
- Patisipyan: kèk kopi nan yon mesaj gwoup te soti nan klasik. Drawed degrade anvan plen, paske yon kopi klasik nan yon pwòp tèks identik nan tout nan yo se tout yon bezwen depa.
- Klasik se deklare dirèkteman anvan yo montre kòm pa gen okenn badj, paske yon endikatè absans se ambiguous ant “nonprotected”, “broken”, ak “ sa a bati manke karakteristik la”.
Verdict la se anrejistre lè mesaj la se selebre anvan rekòmande soti nan sa yon pafè anonse pita. Ciphertext ki deja egziste pa ka vin pi byen pwoteje pase li te, ak yon entèfas ki redrew mesaj vye granmoun sou fòs la nan yon nouvo anons ta afirme yon bagay false sou byte sou yon relay.
Règ la gwoup ki pi wo a monte sou sa a anvan yo ranplase li: yon mesaj gwoup se konplètman pwoteje sèlman lè chak manm kopi te, ak yon mesaj gwoup resevwa ak pa gen okenn kantite kouvèti montre pati.
8Kopye ki fèt nan tèt ou
Yon kliyan magazen plizyè bagay yo enkripte nan idantite a itilizatè a pwòp: anviwònman yo sinkripsyon, lis la konvèsasyon, kle gwoup, ak arkiv la mesaj. Sa yo pote plis sou yon itilizatè pase majik mesaj sèl fè, se konsa kite yo klasik ta fè yo artifak ki pi faib depoze san yo pa gen pwoblèm ki jan sante mesaj yo pwòp yo te selebre. Yo sèvi ak menm hibrid la, enkapsule nan kle a root-derived pwòp itilizatè a - ak yon sèl egzanp ki dekri nan seksyon 3.2, nymchat-pq-root kategori tèt li, ki pa ka selebre anba yon kle ke sèlman li ka pwodwi.
Yon anviwònman blob oswa yon ranje dosye rete nan yon sèl kote pou ane, ki se eksakteman fòm la nan yon bagay yon rivyè kolekte-kounye a-deskript-tanpye - anpil plis pase nenpòt mesaj inik, ki se omwen efemeral nan tèt itilizatè a.
Yon restriksyon gouvène fòma a isit la anvan kle a. Yon kopi pwòp-adrès dwe liable pa chak aparèy la sou kont la, se konsa chak aparèy pibliye sa li ka louvri nan tablo a piblisite li yo pote, ak kont la ekri sèlman sa yo tout moun yo ka li. ekri nenpòt ki lòt bagay ta bloke yon aparèy soti nan anviwònman pwòp li yo - menm erè silenn seksyon 3.2 evite nan lòt fason, rive soti nan yon direksyon diferan.
Yon aparèy ki kenbe idantite a men pa wòch la pa ka louvri anyen selebre nan kle a ki sòti nan wòch la, ki gen ladan anviwònman pwòp li yo. Sa a se yon konsekans delibere, pa yon sipèvizyon, ak se poukisa seksyon la 3.3 gen yon aparèy sa yo mande pou lyen anvan mete yon rad nouvo: yon rad dezyèm pa ta fè blob la liable, li sèlman divize materyèl la kle nan idantite a nan de. Menm si itilizatè a lye lyen li, aparèy la kontinye travay - li li li sa ki li gen kle yo pou ak voye klasikman.
Yon aparèy ki kondwi yon extansyon navigatè oswa yon signatè distans (NIP-46) pa kenbe yon nsec pou derive soti nan, men li kenbe kòd la recovery, ak anba konstriksyon la layered nan seksyon 6.1 ki se tout mwatye a post-kvantine bezwen: signatè a pwodwi NIP-44 lay kòm li toujou gen, ak kliyan an kouvri lay la deyò tèt li. Yon login sa a se yon patisipan nòmal nan tou de direksyon.
9Rotasyon
nan epoch Konte nan derivasyon an se sa ki fè rotasyon posib san materyèl kle nouvo. Incrementing li rezilta yon nouvo klavyepa soti nan rad la menm ak yon anons repiblike; pafè pran kle a nouvo soti nan dosye a ranplase. Rotasyon se konsa pa mande itilizatè a ekri anyen yon dezyèm fwa: rad la se yon fwa kreye pou chak idantite ak epòk la fè twou.
9.1 Old epòk yo kenbe, ak pa gen anyen re-encrypted
Pa gen anyen reskripsyon lè yon kle rote. Yon kliyan bati kandida deskripsyon soti nan epòk la kounye a jiska epòk la − 3, se konsa yon mesaj selebre kout la anvan yon rotasyon toujou louvri kont pari a kle ki te kounye a lè li te voye.
Fenèt sa a se sa ki fè rotasyon an sekirite fè nan tout: san li, chak rotasyon ta ranplase sa ki te nan vòl. Tout bagay deja selebre rete liab pou lavi a nan idantite a, paske yon mesaj ke yon itilizatè pa ka plis louvri se estriktirèlman pi mal pou yo pase youn ki pwoteksyon li pa ka amelyore retroactively (Section 10.5).
10Ki sa ki pa pwoteje
Yon papye ki sèlman lis sa yon konsepsyon reyalize pa deskripsyon yon sistèm, ak overestiming yon pwopriyete sekirite nan yon interface se pi mal pase omite li.
10.1 Root la se yon sekrè dezyèm, ak pèdi li se irrevoke
Isit la se pri a reyèl nan konsepsyon an. Konstriksyon an nan seksyon 2 ke yon itilizatè ta dwe gen eksakteman yon bagay yo kenbe pa ka satisfè: nsec la sèlman pa rekonstrike kle a post-kvant, paske tout pwen an se ke pa gen okenn valè piblik ak pa gen okenn lòt sekrè ekspoze li. Si pa gen okenn aparèy kenbe wòch la ak pa gen okenn wòch yo nan seksyon 3.2 ka louvri, materyèl la selebre nan kle a rad-derive pa ka retabli. Pa gen okenn escrow ak gen delibere pa gen okenn otorite ki ta ka kenbe yon sèl.
avèk transfè manyen sèl chemen an, sa a se pi nitritif pase li ta ka li premye. Yon itilizatè ki pa janm kopi nympq1… Kòd nenpòt kote gen eksakteman yon kopi nan li, sou yon aparèy, ak pèdi aparèy sa a pèdi chak mesaj post-kvantè, anviwònman blob ak ranje dosye selebre nan li.
nsec pa ede; sa a se pwopriyete a tout konsepsyon ki baze sou.
Yon atakè atake wout la pi bon mache ki disponib, se konsa yon sistèm valè sa ki valè wout la rekonpans pi faib li yo - yon passphrase memorab, pou egzanp, ta mete tout bagay la nan tout sa ki valè passphrase a, ak ranje a enpak se eksakteman artefakt la yon anpeche-kounye a-decrypt-lòt adjè a kolekte ak moule offline nan plezi.
10.2 Authentification, kòm diferan de konfyans
Tout signature nan Nostr se Schnorr sou secp256k1, ak sa a se pa chanjman isit la. Yon avoka ak yon òdinatè kwantif ta ka false signatures ak prezante yon itilizatè nan tan reyèl. Ki sa ki chanje echanj la kle hibrid la se kolore-kounye a-decrypt-tanpye: yon atakè ki anrejistre trafik jodi a pa ka li li pita. Li pa fè yon mesaj inexcusable kont yon avoka ki deja gen machin la. Distinction sa a se pote nan aplikasyon yo deliberately - endikatè a padlock rapòte otantifikasyon, bouch la rapòte konfidansyèlite, ak yo se glyphs separe paske yon mesaj ka gen youn san yo pa lòt la.
Li tou limite sa ki anons la nan seksyon 4 ka pwomèt. Bandi ant yon npub ak yon ML-KEM kle se yon signature secp256k1, se konsa yon oponant ki ka forge yo ka ranplase yon kle pwòp yo. Konfidansyèlite kont yon oponant pwochen se pa menm jan ak authenticity kont yon sèl.
10.3 Metadata nan
Gift wraping maske voye a, reseptè a plis pase yon sèl p tag, kalite a, ak timestamp la nan mesaj la enteryè. Li pa kache ke yon evènman egziste, gwosè li yo, oswa lè yon relay te resevwa li. Analiz trafik se pa rezoud pa nenpòt pati nan konsepsyon sa a.
10.4 nan offline mesh
Bluetooth Mesh transpòte nan Nymchat se yon pwotokòl separe ak pwopozisyon pwòp li yo, epi li pa kouvri pa travay sa a. Mesaj sou Mesh la se klasik.
10.5 Mesaj deja voye
Ciphertext anrejistre pandan ke tou de bò yo te toujou klasik rete klasik permanentman. Li deja egziste ak pa ka re-sealed. pwoteksyon kòmanse nan mesaj la kote tou de bò yo te kenbe kle post-kvant, pa nan moman sa a karakteristik la te pèmèt.
11Alternatif yo konsidere
| Approche nan | Èske ou pa |
|---|---|
| Devlope kle a post-quantum soti nan kle a idantite | Rejected. Derivasyon an se yon algorithm piblik sou nsec la, ak yon adversaire kwantè retabli nsec la soti nan npub la pibliye, se konsa kouvri mwatye a klasik nan men yo sou mwatye a post-kwantè ak li. Li rezoud tout pwoblèm distribisyon nan papye sa a ak defann kont pa nenpòt moun. seksyon 3.1. |
| voye wòch la nan lòt aparèy nan itilizatè a nan NIP-44 | Yon wòch transmèt anba encryption klasik-only se retrete pa nenpòt ki moun ki anrejistre mesaj sa a ak vire kle li yo pita, ki se rivyè a wòch la egziste yo mete sou. |
| Yon klavye ML-KEM kreye separe sou chak aparèy | Rejected. Aparèy yo ta dwe kenbe diferan kle decapsulation, ak yon sèl anons ranplase pou chak idantite pa ka pote yo tout. Peers ta enkripte nan sa ki kle a te pibliye dènye, ak chak lòt aparèy ta ka pa kapab li rezilta a. Yon rad pou chak idantite, deplase pa chemen yo nan Seksyon 3.2, se sa ki evite sa a. |
| Wrap wòch la anba yon PIN | Rejected. Yon PIN nan kat cif se sou 13 bits kont yon atakè offline ki kenbe ranje a enkli. Ofri li alantou de pwason 256-bit ta dwe misreprésente sa ki valè enkli a pi faible. |
| Extend npub yo pote tou de kle | 1,184 byte se pa yon idantite pataje, epi li tache tout kliyan Nostr ki egziste parse nan yon adrès ki se definye kòm 32 byte. |
| Yon Sèvis Key Directory | Reintroduce otorite a rezo a egziste pou evite. Ki moun ki reponn a rechèch la deside ki ka li mesaj la. |
| Atake kle a nan chak mesaj | Resolve pa gen anyen: voye a bezwen Receivè nan klavye anvan mesaj an premye, ki se eksakteman ka a pa gen mesaj anvan yo pote li. |
| Kapasite Negotiasyon nan band | Kreye yon sifas degradasyon. Yon atakè ki ka retire yon flè kapasite fòse wout la klasik. |
| Post-quantum sèlman, pa gen yon pye klasik | Jwenn dè dekad nan analiz nan secp256k1 nan echanj pou yon primitif anpil pi jèn. Yon hibrid sèlman manke si tou de Fake nan. |
12Parite aplikasyon
Nymchat anbake de implemans independan nan konstriksyon sa a - youn nan JavaScript pou aplikasyon entènèt la, youn nan Dart pou aplikasyon mobil yo, ki gen ladan yon pò ML-KEM-768 soti nan zèb la. De implemans nan menm primitif la se anjeneral yon responsablite, se konsa yo kouvri ant youn ak lòt anvan yo konfyans yo dakò.
Implemantasyon Dart ML-KEM se valide kont ofisyèl la
NIST ACVP nan
tès ki gen rapò ak repons pou ML-KEM-768 (ML-KEM-*-FIPS203) — 25 kle-generatè, 25 encapsulation ak 10 ka decapsulation, kouri kòm suite yo pwòp yo. Sa yo se vètikul yo NIST pibliye valide yon implemans, se konsa pase yo se pwouve pò a se kòrèk, pa jis pwouve ke de kliyan yo dakò avèk youn ak lòt. Anplis de sa, yon fikstreman pataje nan vètikul tès - derivation sèk, encapsulation, tou de fòma payload, ak konplètman gift wraps - se kreye soti nan referans la JavaScript ak tcheke pa tou de seri tès. Secret rad extends sa a fikstrasyon anvan ranplase li: wòch nan sèk, wòch nan keypair, odè piblik la nan rad la, ak kle a derive, nonce ak done ki asos
nympq1… Kòd vle di oswa sou byèt yo yon mesaj se selebre ak. Yon divèrgans nan tou de implemantasyon manke konstriksyon anvan yo pwodwi yon mesaj ke lòt kliyan pa ka louvri.
Li se sa ki di yon aparèy “ sa a se wòch la mwen kenbe ” soti nan “ sa a se yon lòt moun ”, ak yon kliyan ki pa te kapab reprodui yon lòt kliyan an nan yon dosye pafè bon kòm pa gen okenn dosye nan tout - ak Lè sa a, apre seksyon la 3.3, min yon wòch dezyèm ak divize idantite a. Li se yon vètikal pou eksakteman rezon sa a.
Nymchat nan sous louvri anba AGPL-3.0. Kòt la kriptografik ki dekri isit la se
js/nym-crypto.js epi js/modules/pq.js nan kliyan entènèt la, ak
lib/core/crypto/ ak lib/features/identity/pq_registry.dart nan kliyan mobil.
Pou yon eksplike pi kout, ki pa teknik, wè paj baz konesans sou enkripsyon kwantik-rezistan.