Mga Teknolohiya sa Whitepaper
Ang post-Quantum Key Agreement anaa sa Nymchat.
Pag-distribusyon sa ML-KEM-768 public keys sa Nostr uban pa sa usa ka directory o sa usa ka registry, ug sa pagdugang niini gikan sa usa ka sekreto nga wala pa kinaiyahan sa public value.
Ang pagdugang sa usa ka post-quantum key exchange sa usa ka messenger mao ang labing maayo nga problema sa cryptography. Ang mga primitive mao ang standardized ug ang mga library anaa. Ang Kini nga dokumento nagpatin-aw kon unsaon Nymchat pag-atubangan niini - nga ang ikaduha nga key moabut gikan sa, kon unsaon pag-atubangan sa mga tawo nga mahimo niini, ug unsa ang interface mahimong mahibalo bahin sa resulta - ug, sa bag-ong seksyon, unsa nga ang resulta dili protektado.
Kini nga panid gihubad sa makina alang sa kasayon. Ang English nga orihinal mao ang bersyon nga magamit.
1Ang problema
Ang mga mensahe sa atong mga personal nga mensahe gihisgotan sa NIP-44, nga adunay duha ka separable halos. Ang halos nga scrambles ang plaintext — ChaCha20 uban sa usa ka HMAC-SHA256 tag, keyed sa Ang (Adunay 5869 ka molupyo.) — dili makahimo sa usa ka quantum computer; ang algorithm ni Grover mahitungod sa usa ka square-root speedup laban sa usa ka symmetric key, ug 256 bits absorbs nga. Naa kay Ang kinaiya mao ang elliptical curve sa Diffie-Hellman. Ang sayop 256k1Ang pagkuha sa usa ka private key gikan sa iyang public counterpart retroactively nagpatin-aw sa tanan nga kinatibuk-ang sekreto nga ang key ikaduha.
Ang kinaiya nga gihimo niini nga gihimo mao ang dili gipatungog hangtod sa usa ka makina sa paghimo. Ang usa ka opponent uban sa pag-alagad mahimo sa pag-record text karon ug pag-dechiffrate kini sa diha nga ang kapasidad moabut. Ang tanan nga gipaabot karon nga wala pa matanga sa diha nga kini mao kini sa kompromiso. Kini mao ang usa ka espesyal nga pag-atake sa usa ka post-quantum key exchange, ug kini mao ang usa ka dahilan nga ang trabaho dili makahimo sa paghimo alang sa makina sa paghimo.
1.1 Ang paksa niini nga artikulo nag-usab
Alang sa ubang mga dapit sa mao gihapon nga ngalan, tan-awa ang ML-KEM-768 (Adunay 203 ka molupyo.Kini mao ang usa ka problema sa distribusyon:
Alang sa mensahe sa Alice karon, mahimo ka sa usa ka butang: ang iyang npub. Magpadala sa usa ka post-quantum exchange ug mahimo ka sa usa ka lain-laing - ang iyang ML-KEM public key. Unsa ang key live, ug unsa ang imong makuha niini sa wala pa ka mahimo sa pagpadala niini?
Ang npub mao ang self-contained. You can write it on paper, read it out loud, o scan it gikan sa usa ka screen, ug kini mao ang tanan nga kinahanglan nga pag-encrypt alang kanimo. Ang ML-KEM-768 public key mao ang 1,184 bytes. Kini dili makakita sa mataas, kini dili makahimo sa usa ka username, ug kini dili bahin sa usa ka QR code uban sa usa ka identity nga mao lamang sa 32 bytes.
Ang dugang nga bahin mao ang nga ang usa ka ikaduha nga key naghatag sa tulo ka diferyadong mga problema, ug ang lain-laing bahin sa niini nga papel mao ang usa ka solusyon sa kanila:
- Naa kay pasumbingay. Ang usa ka key nga wala makakita sa usa ka tingog mao ang katungod nga bagay nga ang usa ka attacker swaps alang sa kanila. Section 4 binds kini sa identity uban sa usa ka signature, nga nagpatin-aw niini nga usa sa katungod.
- Kini kinahanglan nga magpatalinghog sa ibabaw sa mga device sa usa ka user. Ang sama nga account sa usa ka telepono ug sa usa ka laptop kinahanglan nga nagpakita sa sama nga key, o ang mensahe nga sealed sa usa ka wala makahimo sa pagtukod sa lainlaing.
- Naa kay pasumbingay. Ang public key mao ang re-published gikan sa usa ka sekreto, sa diha nga ang kinatibuk-ang kinahanglanon sa paghimo mao ang sekreto - ug sa pag-construction bisan unsa nga lain-laing konstruksyon niini.
2Ang limitasyon
Ang mga katapusan gibuhat ang solusyon, ug sila makabaton sa daghang mga nakig-usab nga mga disenyo sa bisan unsa nga code nga gitawag.
- Ang ilang mga sekreto mao ang posible. Ang mga gumagamit sa Nostr adunay eksaktong usa ka sekreto, ang nsec. Ang matag add-on nga sekreto mao ang usa ka lain-laing paagi sa pagpalambo sa imong kasaysayan, ug ang usa ka tawo nga mahibalo sa pag-backup sa usa ka nsec dili mahimo sa pag-backup sa bisan unsa nga lain-laing. Ang Section 3.1 nagpakita nga kini nga usa ka dili mahimo sa pagpatuman sa usa ka katapusan - ang usa ka post-quantum key nga gihimo gikan sa nsec dili naghatag sa usa ka post-quantum nga pagpalambo sama sa lain-laing - ug ang disenyo nag-usab sa eksaktong usa ka sekreto ug wala pa sa lain-laing: usa ka single piece sa key material, nga gihimo sa usa ka ID, nga gipakita sa sama sa form nga ang nsec ug
- Maayo nga autoridad. Kini mao ang usa ka server nga mahibaloan sa kung unsa ang key sa kinaiya.
- Ang ilang mga aparato, usa ka identity. Bisan pa niana, ang usa ka key material kinahanglan magsugod sama sa tanan niini, ug ang mga patay nga naghubad niini nga wala magsulat sa opponent nga ang feature defends sa.
- Maayo ang negosyo. Bisan pa niana, ang usa ka band exchange sa “ang mga siphers imong suporta?” mao ang usa ka surface nga ang usa ka attacker makahimo sa pagpakigsulti sa mas maayo nga opsyon.
3Ang independiyenteng root sekreto
Ang decision-bearing mao ang nga ang ML-KEM decapsulation key nga gihimo gikan sa key material nga wala kining public value nagpadala. Ang matag identity adunay usa ka root secret, nga gihimo sa usa ka beses:
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)
Ang root gibuhat sa usa ka user sa ingon sa usa ka nsec mao ang: 32 Ang Human ato, wala gyud ko nagtuga-tuga ug usab pa.
nympqKusog kaayo ang nympq1…, nga gipakita sa uban sa nsec sa screen sa identity sa bag-ong sama nga bag-ong interaction, kopyado uban sa sama nga control, wala pa logged ug wala pa magpadala sa bisan unsang dapit sa clear. Kini mao ang usa ka password ug kini mao ang usa ka login. Kini mao ang key material nga ang user mahimo sa pag-alagad, sama sa nsec.
Ang salt mao ang domain-separated pinaagi sa lain-laing sekreto nga wala makahimo sa sama nga keypair. epoch Ang mga motorsiklo mao ang mga motorsiklo (Section 9).
3.1 Bakit ang key dili makahimo gikan sa identity key
Ang mapuslanon nga disenyo mao ang sa pagdugang sa keypair gikan sa sekreto nga ang user karon adunay:
seed = HKDF(salt = "…", IKM = nsec) // do not do this
Kini mao ang mag-attraksyon alang sa duha ka mga dahilan, ang tanan mao ang real: bisan unsa ang bag-ong sa backup, tungod kay ang nsec mao ang sa pag-backup; ang matag device nga nagkonektar sa pag-construction, uban sa wala pa sa pag-synchronization protocol sa pagpalambo; usa ka pag-replaceable announcement sa matag identity nga mao ang kaayo nga katumbas, tungod kay ang mga device dili makadungog bahin sa key; ug ang key nga anaa sa paagi sa pag-publish, aron ang usa ka client makahimo sa usa ka paagi sa usa ka paagi alang kaninyo sa unang pag-uswag.
Ang mga katapusan nga mga benepisyo mao ang walay katapusan, alang sa usa ka katapusan. Ang algorithm sa Shor sa pag-alagad sa usa ka gipublikado npub gihimo sa nsec. Ang seed derivation mao ang usa ka publikong algorithm sa pag-alagad sa nsec. Busa ang oponente nga sa pag-alagad sa classical half reconstruct sa post-quantum half sa pag-alagad sa sama nga HKDF nga ang tanan nga nag-alagad. Contra sa harvest-now-decrypt-later - ang usa ka kinahanglanon sa feature nga anaa sa pag-atubangan sa pag-atubangan - usa ka key nga gihimo sa niini nga paagi wala mapakli sa bisan unsa.
Ang ML-KEM decapsulation key kinahanglan nga moabut gikan sa entropy nga wala makahimo gikan sa nsec ug wala pa moabut ubos sa classical-only encryption.
Ang usa ka independiyenteng generated secret nga mao ang sinynchronized taliwala sa mga device sa usa ka user sa sulod sa usa ka ordinaryong NIP-44 mensahe mao ang sama nga bug-os uban sa usa ka paagi: ang usa ka opponent nag-record nga mensahe karon ug makahimo sa iyang classical key sa una, ug ang root moabut.
3.2 Pagpatin-aw sa root ngadto sa ubang mga device sa user
Ang Constraint 3 sa Seksyon 2 - usa ka identity, duha ka mga device - wala makahimo sa arithmetic dinhi, tungod kay ang tanang punto mao ang nga ang key mao ang usa ka function sa bisan unsa nga mga device nga anaa sa. nympq1… Ang code maayo.
Ang tanom nga lanot o abaka sa kahenerang nympq1… Ang usa ka aparato nga wala moabut ang code, dili magpabilin, nga gi-deskripsyon sa Section 4.2.
Ang Rule sa Section 3.1 nag-ingon nga ang root wala pa moadto ubos sa classical-only encryption, ug ang tanan nga mekanismo nga makahimo niini nga automatic—synchronizing niini pinaagi sa usa ka relay, pagpakiggubat niini ngadto sa identity key—mga kataposan niini.
Ang format magpatalinghog alang sa usa ka wrapped path: usa ka rekord makahimo sa usa ka listahan sa wraps, ang matag usa mao ang usa ka AEAD blob ubos sa usa ka key nga ang user mahimo sa usa ka lain-laing aparato - usa ka passkey PRF output, porma. nympq1… Ang code mao ang usa ka paagi sa pagpatin-aw. Ang seksyon 10.1 nag-usab kon unsa ang kinabuhi.
Ang usa ka katapusan mao ang usa ka katapusan sa mga katapusan, nymchat-pq-rootBisan pa niana, wala gyod niini ang kinahanglan nga trabaho: ang iyang presensya mao ang kon unsaon sa usa ka ikaduha nga device makahimo nga kini nga identity adunay usa ka root, nga mao ang nga nagpatin-aw sa usa ka rival (Section 3.3).
Ang nymchat-pq-root Ang Kategorya dili Gikan sa usa ka kopya sa root, aron sa pag-usab niini sa ubos sa usa ka key nga gihimo gikan sa root mao ang usa ka lock nga ang key mao ang sa ibabaw sa box: bisan unsa nga aparato ang makahimo sa pag-usab niini, lakip ang usa nga nag-usab niini. Kini mao ang pag-usab sa classically - NIP-44 sa self - o sa bisan unsa pa. Kini mao ang usa ka dapit nga ang disenyo makahimo sa classical-only protection, ug kini makahimo sa pag-usab: ang rule wala sa usa ka root karon, lamang ang katumanan nga usa ka anaa.
Ang matag lain-laing mga kategorya sa pag-set ug kinahanglan nga gamiton ang root-derived key. Kini mao ang usa ka eksensiya, ug kini mao ang usa ka eksensiya bahin sa circularity ug dili bahin sa strength.
3.3 Pagtuon ug adoption
Sa boot, sa pagtan-aw sa usa ka durable identity, ang usa ka client nagtrabaho sa niini nga order:
- Alang sa ubang mga dapit sa mao gihapon
nymchat-pq-rootAng rekord. - Gikan sa record, ug kini nga aparato ang mahimo sa unwrap – pag-usab niini ug pag-angol niini nga identity nga post-quantum kapasidad.
- Ipahamtang ang rekord, ug kini nga aparato dili makahimo sa pag-usab niini — sa paghimo sa usa ka bag-ong root, ug sa pag-publish sa bisan unsa nga advertisement.
nympq1…Ang code gikan sa usa ka aparato nga adunay kini. - Maayo nga record — generate ang usa ka root, publish ang record, announce, ug ipakita ang
nympq1…Ang code sa usa ka usa ka beses aron sila makuha niini.
Step 3 mao ang step nga mao ang makahimo sa pagpakigsulti, ug kini mao ang dahilan sa pag-order nga gisulat ug dili sa matag implementation. Dili sa mga aparato nga ang matag nagpadala sa pag-generate sa usa ka root adunay duha ka independiyenteng mga root ubos sa usa ka identity, ug kini mao ang pag-usab nga kini sa pag-order nga anaa sa pagpalambo.
4Ang kapasidad sa
Ang public halos sa derived keypair gibuhat ingon sa usa ka addressable
Mga Bantayan 01
Tungod niini, ang 30078 mao ang labing maayo. 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 nag-ingon nga ang relay nagtan-aw sa usa ka event per (kind, pubkey, d-tag), aron ang usa ka republish nag-atubangan sa tibuok pag-usab. Ang matag identity nag-usab sa eksaktong usa ka current record, nga mao ang nag-usab sa “ look up Alice's key” usa ka single unambiguous fetch ug wala pa sa usa ka listahan sa pag-usab.
Ang signature mao ang obligatory. Ang event signs sa identity key, sa diha nga ang claim “sa ML-KEM key bahin niini sa npub” mao ang katungod sama sa npub niini. Ang pag-usab sa usa ka lain-laing encapsulation key kinahanglan nga pag-forging sa secp256k1 signature. Ang usa ka attacker nga makahimo sa pag-usab niini dili mahimo sa pag-usab sa KEM.
Ang mga anons mao ang tinuod. 7 Ang hari, NIP-40 Ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatibuk-ang kinatib
Ang usa ka pag-usab nga mensahe gibuhat sama sa usa nga wala pa moabot sa usa ka key: ang mga peer nagpadala sa ordinaryong NIP-44, nga ang matag pag-usab mahimo sa pag-usab, ug ang client nagpatin-aw sa post-quantum exchange sa iyang susunod nga koneksyon, sa diha nga kini re-publishes.
Ang asymmetry mao ang usa ka dahilan alang sa pag-usab ug sa usa ka aksidente sa niini. Sa walay usa, usa ka record nag-usab sa mga key nga nag-usab: usa ka device nga gikuha, reset, o adunay usa ka root gipahimutang, nagpatin-aw sa usa ka standing instruction sa pag-encapsulate sa usa ka key nga wala pa moabut, ug mga mensahe nga gisulat ubos niini nga wala pa bug-os sa bisan unsa nga bahin. Seven days border that window, and lets relays drop the record themselves rather than relying on clients to notice.
Ang key field naghisgot bahin sa iyang format. Ang dapit sa pk2, ug ang digit mao ang bahin sa kontrata ug sa dekorasyon: kini naghisgot bahin sa payload format nga ang key mahimong gamiton uban sa. Ang usa ka reader nga dili makahimo sa field nagpadala sa “Nymchat client, wala sa post-quantum key” ug nagpadala sa ordinaryong NIP-44, nga ang matag login mahimo sa pagtan-aw. Kini mao ang katungod nga direksyon sa bug-os, ug kini mao ang gikuha sa ingon sa usa ka regla ang format numbering anaa sa pagpatin-aw: usa ka unrecognized kapasidad claim kinahanglan nga gikuha sa proteksyon, wala pa sa pagpadala. Ang usa ka key nga usa ka peer dili gamiton mao ang mas maayo nga key sa bisan unsa, tungod kay ang mensahe nga gihimo mao ang gikuha uban sa
4.1 Ang abot mao ang meaningful, ug tri-valuated
Ang usa ka subtle, apan importante nga detalye: ang panan-awng gibuhat sa tanan nga Nymchat client, dili lamang sa mga post-quantum-capable, ug ang key field mao ang optional.
| Ang | Nagpasabot | Ipahamtang ang behavior |
|---|---|---|
| Ang matang sa usa ka key | Ang Nymchat, post-quantum nga kapasidad | Ang hibrida |
| Ang ngalan, wala ka key. | Nymchat, classical lamang — post-quantum off, o usa ka device nga wala pa linked sa root sa identity | Unsa ang NIP-17? |
| Maayo nga Anunsiyon | Unknown client. Ang usa ka tawo sa Nostr o Bitchat | Classic, plus usa ka compatibility wrap |
Ang usa ka keyless announcement mao ang usa ka signature nga declaration nga ang pagpadala moadto sa Nymchat, nga nagpadala sa pagpadala path skip sa usa ka especulative cross-protocol wrap nga kini sa lain-laing kinahanglan magpadala alang sa tanan nga kini dili mag-identify.
4.2 Ang aparato nga dili makahimo sa pagtukod sa root
Ang pag-uswag mao ang pag-usab: usa ka event sa matag identity, last write wins. That's what makes the single-record design work, ug kini mao ang usa ka nga nag-usab sa usa ka unlinked device dangerous kung kini publishes. A device nga nag-usab sa usa ka key nga iyang mounted alang kaninyo sa pag-usab sa real nga rekord ug magpadala sa matag peer sa pag-encrypting ubos sa usa ka key nga ang ubang mga device dili makahimo sa pagtukod.
Busa ang usa ka aparato nga nagtan-aw sa usa ka root, apan wala makahimo sa pag-usab niini, wala mag-publish ang usa ka advertisement sama sa bisan unsa. Kini wala makahimo ug wala gikuha gikan sa application: kini usab mag-usab sa matag mensahe nga adunay mga keys alang niini ug usab nagpadala sa classically, samtang nagpadala sa usa ka user sa pag-link niini.
5Ang pagpanukod ug ang decision sa pagpadala
Ang mga kliyente makahimo sa mga key sa peer sa duha ka paagi. Ang usa ka standing subscription naglakip sa mga tawo nga ang usa ka user nagpatin-aw sa – open conversations ug mga miyembro sa grupo – sa diha nga ang ilang mga anons gihimo sama sa normal nga mga events. Para sa usa ka peer nagpatin-aw sa unang beses, usa ka one-shot query magsugod sa send time, limitado sa 2.5 seconds; kon kini dili nagpatin-aw, ang mensahe moabut sa classical, nga mao ang pagpatin-aw nga gihimo nga wala pa sa post-quantum gipaila sa usa ka bag-o nga mode sa pagpatin-aw.
Ang usa ka user nga naghubad sa usa ka bag-o nga device, o nga moabot gikan sa usa ka browser-extension login ngadto sa usa ka local key, makahimo sa post-quantum makahimo mid-conversation, ug sa permanently cached “no” makahimo kanila sa classical encryption alang sa kinatibuk-ang kinabuhi sa advertisement.
5.1 Unsa ang usa ka downgrade attack?
Ang decision sa routing nag-usab ngadto sa usa ka pangutana:
pq = (we hold a signed, unexpired ML-KEM key for this recipient)
Walang kapasidad sa negosyo, walay listahan sa suportahan-algorithms, ug walay field ang usa ka attacker makahimo sa pagpakigsulti sa usa ka mas maayo nga path. mao ang Ang panukiduki nga mode sa usa ka stripped o withholded announcement mao ang nga ang mensahe moabut sa classical - ang status quo sa unahan niini nga feature - ug sa pagkat-on nga usa ka hybrid mensahe mao ang gibase sa usa ka paagi nga bug-os.
Ang konversa usab nagtan-aw ug mas importante: ang usa ka client nagpadala sa hybrid Ang Ang pag-uswag sa mensahe mao ang pag-uswag sa pag-uswag sa mga mensahe, ug ang pag-uswag sa mga mensahe mao ang pag-uswag sa mga mensahe.
6Ang konstruksyon sa hybrid
Ang unmodified NIP-44 ciphertext mao ang interior layer, ug ang ML-KEM keyes usa ka external AEAD palibot niini:
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)
Ang ikaduha nga mga sekreto kinahanglan mahimo sa pag-usab aron sa pag-usab sa mensahe: ang outer layer naghatag lamang sa usa ka NIP-44 ciphertext, ug ang pag-usab nga kinahanglan sa klasikong ECDH. Ang usa ka quantum opponent nga pag-usab sa secp256k1 mahimo sa usa ka interior key ug wala pa moadto sa ML-KEM; usa ka pag-usab sa ML-KEM nag-usab sa outer layer ug nag-usab sa NIP-44. Ang matag input mahimo sa iyang lugar:
kem_ssWala na sa niini nga derivation nagpatin-aw sa raw ECDH output, nga mao ang kung unsa ang bahin sa Seksyon 6.1.kem_ct,recip_kem_pkug ang duha ka identity keys gibutang sa ingon sa mga associated data, sa diha nga ang eksternal layer gibutang sa eksakto nga transcript nga gihimo niini.
Ang ML-KEM key sa recipient mao ang usa ka dugo nga panahon, apan ang matag mensahe adunay usa ka independiyenteng encryption text ug sa katapusan usa ka independiyenteng key.
kem_ssKini mao ang sa paghimo sa paghimo sa nonce labaw pa sa randomize kini sa tingog:
Ang tanang 1305
Unsay iyang gitudlo kanila bahin sa pag-abiabi?—Luc.
6.1 Unsa ang mga layers magpatalinghog
Ang alternatibo mao ang pagpakigsulti sa duha ka sekreto ngadto sa usa ka single konversasyon key ug sa pagpadala niini sa NIP-44:
ck = HKDF-Extract(salt = "…",
IKM = ecdh_x || kem_ss || …) // do not do this
Kini nga konstruksyon mao ang giingon sama sa cryptography. Kini adunay usa ka struktural nga problema: kini kinahanglan
ecdh_xAlang sa ubang mga dapit sa mao gihapon nga ngalan, tan-awa ang ECDH (NIP-07Adunay nangutana, “O Mensahero ni Allah, kinsa ang makasulod sa Paraiso?”NIP-46Gikan sa NIP-44 sa ngalan sa naghubad ug nagpadala sa usa ka cifertext, nga mao ang tibuok punto sa pag-alagad sa key sa usa ka dapit diin ang application dili makahimo sa pagpadala.
Ang pagpakigsulti sa mga sekreto mao ang pag-usab sa matag login nga nag-alagad sa identity key sa usa ka signer, nga mao ang ang labing cautious nga mga gumagamit, ug wala gihapon nga trabaho sa key derivation makahimo sa pag-usab niini. Layering pag-usab sa dependency: ang NIP-44 gibuhat sa tibuok ug gihimo sa bisan unsa nga nag-usab sa identity key, signer gikuha, samtang ang KEM halos gibuhat gikan sa recovery code nga ang client nag-usab sa direkta.
Ang kosto mao ang bandwidth, ug kini dili madali. Ang ML-KEM cifertext mao ang 1,088 bytes ug motan-aw sa matag mensahe, base64url-coded ngadto sa 1,451 characters; ang eksternal AEAD naghatag sa usa ka 16-byte Poly1305 tag ug nagpadala sa NIP-44 payload nga nagpakiggubat sa usa ka katapusan. Ang usa ka 50-karakter nga mensahe mitawag gikan sa 176 bytes ngadto sa 1,712, ug usa ka 2,000-karakter nga usa gikan sa 2,820 ngadto sa 5,238. Ang floor mao ang halos 1.5 KB matag mensahe bisan unsa nga paagi ang mensahe, nga mao ang mga presyo sa pagkapulo sa fresher sa matag panahon ug sa pagpatuman sa usa ka taas nga paggamit sa usa ka compartment secret.
6.2 Ang mga payloads
Ang pq2. Ang prefix makahimo sa pag-implementasyon nga incremental: kini mao ang self-describing, aron ang usa ka client makahimo sa usa ka pathway sa decryption pinaagi sa pag-inspektar sa payload sa wala pa sa pagtan-aw sa usa ka tag o makahimo sa unsa ang usa ka peer suporta.
Ang ML-KEM decapsulation gidisenyo sa pag-usab: tungod sa usa ka malformed cifertext, ang Fujisaki-Okamoto transform nagpatin-aw sa usa ka deterministic pseudo-random secret ug dili sa usa ka bug-os. Ang usa ka bug-os nga key sa KEM layer tungod sa wala pa sa pag-usab – kini nag-usab sama sa usa ka HMAC bug-os sa NIP-44, nga mao ang sama sa usa ka bug-os nga classical key surfaces. Ang mga callers nagpatin-aw sa duha sama sa sama, aron ang pag-usab dili adunay usa ka distinctive signal. Kini mao usab nga ang makahimo sa mga kandidato sa Section 9.1: usa ka client nag-usab sa matag key sa pag-usab ug nag-usab sa NIP-44 nga
6.3 Ang duha ka layer sa gift wrap
A NIP-17 Ang mensahe ay a NIP-59 Gift Wrap: usa ka unsigned rumor, nga sealed sa ubos sa identity key sa sender (kind 13), ug unya wrapped sa ubos sa usa ka throwway key nga gihimo sa matag mensahe (kind 1059). Sa usa ka login nga nagtan-aw sa identity key direkta, Nymchat hybridizes ang duha ka layer, sa matag usa sa iyang inkapsulasyon.
Ang seal nga gihimo sa signer sama sa ordinaryong NIP-44 - ang application dili makita ang key nga naghimo niini - aron kini dili mahimong hybridized sa lugar. Kini dili mahimong mahitungod sa pag-atubangan sa pag-atubangan: ang seal anaa lamang sa pagpakig-atubangan, ug ang wrap mao ang usa ka nag-alagad sa usa ka recorder. Ang usa ka opponent nga nag-alagad nga traffic kinahanglan mahitungod sa ML-KEM tungod sa usa ka seal mahitungod sa pag-atubangan.
7Ang mga mensahe sa grupo ug partial nga coverage
Ang usa ka grupo nga mensahe mao ang dili usa ka ciphertext. Kini mao ang sama nga plaintext nga gisugyot sa matag miyembro, ang matag kopya encapsulated sa mga miyembro niini nga ML-KEM key. Ang usa ka miyembro nga nagpublikar sa usa ka key makuha sa usa ka hybrid wrap; ang usa nga dili makuha sa usa ka classical wrap.
Alang sa ubang mga dapit sa mao gihapon nga ngalan, tan-awa ang 8 nga mga dapit sa mao gihapon nga ngalan. dili Ang usa ka opponente kinahanglan nga usa ka classical copy sa usa ka plaintext nga identical sa tulo ka, aron ang mensahe mao ang protektado lamang kon matag Ang kopya.
Nymchat unya traces per-message coverage sa panahon sa fan-out - ang count mao lamang nga mahibalo sa diha nga ang mga wraps mao ang gidisenyo - ug ang badge reports “quantum-resistant sa 8 sa 10 mga miyembro” sa bisan unsa nga claim ang mensahe mao ang protektado. maayo grupong mensahe (ang fan-out mao ang gidaghanon lamang sa usa ka sender), ang interface nag-report bahin sa partikular ug sa katapusan nga proteksyon.
7.1 Unsay mga report sa Shield
Ang shield naghisgot bahin sa kinabuhi sa Ang mensahe, wala sa software nga nagpadala niini:
- Kompleto nga proteksyon: Ang matag kopya sa niini nga plaintext gitukod hybrid.
- Ang ilang mga kopya sa usa ka grupo nga mensahe gitukod nga klasiko. Gikan sa degradado ug sa katapusan, tungod kay ang usa ka classical kopya sa usa ka plaintext nga identical sa tanan niini mao ang usa ka opponent nga kinahanglan.
- Classical mao ang gitawag sa tibuok ug maayo nga badge, tungod kay ang usa ka absent indicator mao ang ambiguous sa taliwala sa “unprotected”, “broken”, ug “ kini nga build wala sa feature”.
Ang sentensiya mao ang gipakita sa diha nga ang mensahe mao ang sealed ug sa pag-recomputed gikan sa unsa ang usa ka peer advertises labaw pa. Ciphertext nga anaa karon dili makahimo kaayo nga protektado kay kini mao ang, ug usa ka interface nga rewrite mga mensahe sa kalibotan sa usa ka bag-o nga anons mao ang pag-argument sa usa ka false tungkol sa bytes sa usa ka relay.
Ang mga regla sa grupo sa ibabaw sa stack sa ibabaw niini ug sa pag-usab niini: usa ka grupo nga mensahe mao ang bug-os nga protektado lamang sa diha nga ang kopya sa matag miyembro mao ang, ug ang usa ka grupo nga mensahe sa pag-usab uban sa dili sa pag-account sa pag-usab mao ang partikular.
8Ang mga kopya gihubad ngadto sa imong
Alang sa ubang mga dapit sa mao gihapon nga ngalan, tan-awa ang Tiger Tiger Tiger Tiger (Tiger Tiger Tiger), ug ang Tiger Tiger Tiger Tiger Tiger (Tiger Tiger Tiger), ug ang Tiger Tiger Tiger Tiger Tiger Tiger (Tiger Tiger Tiger), ug ang Tiger Tiger Tiger Tiger Tiger Tiger (Tiger Tiger Tiger Tiger), ug ang Tiger Tiger Tiger Tiger Tiger Tiger Tiger (Tiger Tiger Tiger Tiger), ug ang Tiger Tiger Tiger Tiger Tiger Tiger Tiger (Tiger Tiger Tiger Tiger), ug ang Tiger Tiger Tiger Tiger Tiger Tiger Tiger Tiger Tiger (Tiger Tiger Tiger Tiger), ug ang Tiger Tiger nymchat-pq-root Ang katapusan sa katapusan sa katapusan sa katapusan sa katapusan sa katapusan sa katapusan sa katapusan sa katapusan sa katapusan sa katapusan sa katapusan sa katapusan sa katapusan.
Ang usa ka settings blob o usa ka archive row nahimutang sa usa ka dapit alang sa mga tuig, nga mao ang katungod sa tingog nga nagkolekta sa usa ka harvest-now-decrypt-later opponent - labaw pa kay sa bisan unsa nga single mensahe, nga mao ang sa ubos nga efemeral sa usa ka user nga pamahaw.
Ang usa ka limitasyon nagpatin-aw sa format karon ug dili sa key. Ang usa ka kopya sa self-addressed kinahanglan nga mahitungod sa matag Ang usa ka aparato sa account, aron ang matag aparato nag-reklamo sa kung ano ang makahimo sa pag-usab sa usa ka awtoridad, ug ang account nag-usab lamang kung unsa ang mga tawo ang makahimo sa pag-usab.
Alang sa ubang mga dapit sa mao gihapon nga ngalan, tan-awa ang "Section 3.3", nga mao ang usa ka gidaghanon alang sa pagpakig-uswag sa pagpakig-uswag sa pag-uswag sa pag-uswag sa pag-uswag sa pag-uswag sa pag-uswag sa pag-uswag sa pag-uswag sa pag-uswag sa pag-uswag sa pag-uswag.
Ang usa ka aparato nga naghimo sa usa ka browser extension o sa usa ka remote signer (NIP-46) dili naghimo sa usa ka nsec sa paghimo gikan sa, apan kini naghimo sa usa ka recovery code, ug ubos sa layered konstruksyon sa Section 6.1 nga mao ang tanan nga post-quantum halos kinahanglan: ang signer naghimo sa NIP-44 layer sama sa kini, ug ang client naghimo sa outer layer usab.
9Ang rotasyon
Ang epoch Ang counter sa derivation mao ang sa paghimo sa rotation nga posible nang wala sa bag-o nga key material. Incrementing kini naghatag sa usa ka bag-o nga keypair gikan sa sama nga root ug sa usa ka re-published announcement; mga peers paghimo sa bag-o nga key gikan sa usa ka replaceable record. Rotation tungod sa paghimo sa usa ka user sa paghimo sa usa ka lain-laing panahon: ang root gihimo sa usa ka beses sa usa ka identity ug ang epoch naghimo sa paghimo.
9.1 Gamot nga epoke gibuhat, ug bisan unsa ang re-encrypted
Ang usa ka client makahimo sa mga kandidato sa decryption gikan sa current epoch hangtod sa epoch − 3, aron sa usa ka mensahe nga sealed sa wala pa sa usa ka rotation wala pa bulaw sa keypair nga anaa sa panahon sa pagpadala niini.
Kini nga window mao ang sa paghimo sa rotation sa kalibotan sa paghimo: sa wala pa niini, ang matag rotation sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo sa paghimo.
10Unsa ang protektado
Ang usa ka papel nga naglisting lamang kung unsa ang pagpatin-aw sa usa ka disenyo dili nag-deskripsyon sa usa ka sistema, ug pag-exaggerate sa usa ka security property sa usa ka interface mao ang mas maayo kay sa pag-uswag niini.
10.1 Ang root mao ang usa ka sekreto, ug ang pag-alagad niini dili makahimo.
Kini mao ang real nga presyo sa disenyo. Ang limitasyon sa Section 2 nga ang usa ka user kinahanglan adunay eksaktong usa ka butang sa pag-alagad sa: ang nsec lamang dili pag-reconstruct ang post-quantum key, tungod kay ang tibuok punto mao ang nga wala pa kinahanglan nga public value ug bisan unsang ubang sekreto mag-expose niini.
Sa manual nga pag-transfer ang usa ka path, kini mao ang mas mapuslanon kaysa sa kini sa unang pag-uswag. nympq1… Ang code sa bisan unsa nga lugar adunay eksaktong usa ka kopya niini, sa usa ka device, ug sa paghimo niini nga device nahimo ang matag post-quantum mensahe, mga setting blob ug archive line nga sealed sa niini.
nsec Wala, wala sila muadto sa sine gabii.
Alang sa ubang mga dapit sa mao gihapon nga ngalan, tan-awa ang The Wreck.A attacks the cheapest path available, so a scheme is worth what its weakest recovery route is worth — usa ka memorable passsphrase, alang sa pag-usab sa tanan nga ang passphrase mao ang gikinahanglan, ug ang wrapped row mao ang eksaktong artefact sa usa ka harvest-now-decrypt-later opponent gikuha ug mips offline sa kalibotan.
10.2 Authentication, sama sa confidentiality
Ang matag signature sa Nostr mao ang Schnorr ibabaw sa secp256k1, ug kini mao ang unchanged dinhi. Ang usa ka opponent uban sa usa ka quantum computer makahimo sa pagpatuman sa mga signature ug makahimo sa usa ka user sa real-time. Unsa ang mga hybrid key exchange kahimtang mao ang harvest-now-decrypt-later: ang usa ka attacker sa pag-record traffic karon dili makakita kini sa ubos. Kini dili makahimo sa usa ka mensahe nga unforgetable laban sa usa ka opponent nga adunay ang machine. Kini nga pagpatuman gihimo ngadto sa mga aplikasyon sa kasingkasing – ang padlock indicator nag-report authentication, ang shield nag-report confidentiality, ug sila mao ang separated glyphs tungod kay ang usa ka mensahe
Ang paghubad sa taliwala sa usa ka npub ug sa usa ka ML-KEM key mao ang usa ka signature sa secp256k1, aron ang usa ka opponente nga makahimo sa pagpakiggubat sa mga niini makahimo sa pag-usab sa usa ka key sa kanila. confidentiality laban sa usa ka future opponent dili sama sa authenticity laban sa usa.
10.3 Ang mga metadata
Alang sa ubang mga dapit sa mao gihapon nga ngalan, tan-awa ang sender. p Ang tag, ang matang, ug ang timestamp sa interior nga mensahe. Kini wala mag-ubayng nga usa ka event anaa, ang iyang gidak-on, o sa diha nga usa ka relay nahibalo niini. Traffic analysis wala gitawag sa bisan unsa nga bahin sa niini nga disenyo.
10.4 Ang offline mesh
Ang Bluetooth mesh transport sa Nymchat mao ang usa ka separado nga protocol uban sa iyang panginahanglan, ug kini dili gipakita sa niini nga trabaho.
10.5 Ang mga mensahe anaa sa
Ang ciphertext nga gitawag samtang ang duha ka bahin mao gihapon klasikong classical permanently. Kini mao ang karon ug dili mahimong re-sealed. Protection nagsimula sa mensahe diin ang duha ka bahin nahimong mga post-quantum keys, dili sa panahon sa kini nga bahin gilunsad.
11Ang mga alternatibo
| Ang abot | Unsa ang |
|---|---|
| Pagtuon sa post-quantum key gikan sa identity key | Ang derivation mao ang usa ka publikong algorithm ibabaw sa nsec, ug usa ka quantum opponent makahimo sa nsec gikan sa gipublikado npub, aron sa pag-atubang sa classical halos handa sa post-quantum halos uban niini. |
| Ipadala ang root ngadto sa ubang mga device sa user pinaagi sa NIP-44 | Ang usa ka root nga gisugyot ubos sa classical-only encryption maoy makahimo sa paghimo sa bisan unsa nga tawo nga nag-recorded sa mensahe ug brake ang iyang key sa labaw pa, nga mao ang ang opponent nga ang root anaa sa pag-atuman. |
| Ang usa ka separately generated ML-KEM keypair sa matag device | Ang mga aparato makahimo sa lain-laing mga key sa decapsulation, ug ang usa ka replaceable announcement sa matag identity dili makahimo sa tanan. Ang mga peers makahimo sa pag-encrypt sa bisan unsa nga key na gipublikado sa nakaraang, ug ang matag ubang aparato dili makahimo sa pagbasa sa resulta. Ang usa ka root sa matag identity, nga gihimo sa mga patay sa Section 3.2, mao ang nga pagpalambo niini. |
| Pagpatin-aw sa usa ka PIN | Ang usa ka four-digit PIN mao ang mahitungod sa 13 bits laban sa usa ka offline attacker nga nagtan-aw sa wrapped row. Ang paghatag niini uban sa duha ka 256-bit nga mga patay magpabilin sa unsa ang labing maayo nga wrap mao ang makahimo. |
| I-extend ang npub sa pagpakigsulti sa duha ka key. | 1,184 bytes mao ang dili usa ka shareable identificer, ug kini makahimo sa tanan nga mga kliyente sa Nostr sa pag-parsing sa usa ka address nga defined sa 32 bytes. |
| Ang mga key directory | Nagpatin-aw ang autoridad nga anaa sa network aron sa paghimo. Ang tawo nga mag-respond sa searchup nagpasabot sa kinaiya nga mahimo sa pagbasa sa mensahe. |
| Ipahamtang ang key sa matag mensahe | Gikan sa pag-usab: ang sender kinahanglan ang Ang receptor Ang mensahe mao ang unang mensahe, nga mao ang katumbas sa wala pa ang mensahe sa pagpakiggubat niini. |
| Ang kapasidad sa negosyo | Ang usa ka attacker nga makahimo sa usa ka kapasidad nga flag gikuha sa classical path. |
| Post-quantum lamang, wala sa classical leg | Gikan sa mga dekada sa pag-analisa sa secp256k1 sa pagbansay alang sa usa ka mas bag-ong primitive. duha Ang |
12Ang pagpatin-aw sa
Ang Nymchat nagpatin-aw sa duha ka independiyenteng mga implementasyon sa konstruksyon niini - usa sa JavaScript alang sa web application, usa sa Dart alang sa mga mobile application, lakip na ang usa ka mula sa katapusan ML-KEM-768.
Ang implementasyon sa Dart ML-KEM gilunsad sa opisyal nga
Ang tanan
Alang sa ubang mga dapit sa mao gihapon nga ngalan, tan-awa ang ML-KEM-768 (ML-KEM-*-FIPS203) — 25 key-generation, 25 encapsulation ug 10 decapsulation mga kaso, gigamit sama sa ilang mga suite. Kini mao ang mga vector NIST nag-publish sa pagvalidate sa usa ka implementation, aron sa pagpatuman niini mao ang pag-evidence nga ang port mao ang correct, dili lamang nga pag-evidence nga ang duha ka mga kliyente makahimo sa uban. Sa ibabaw niini, usa ka compartment nga fixture sa test vectors — seed derivation, encapsulation, ang duha payload formats, ug kompleto gift wraps — gihimo gikan sa JavaScript reference ug checked sa duha ka test suites. Ang root secret nag-estend nga nga fixture apan sa pag-usab niini: root sa seed, root sa keypair, ang public fingerprint sa root, ug ang derived key, nonce ug associated data sa
nympq1… Ang usa ka divergent sa duha ka implementasyon misulod sa build sa pag-usab sa usa ka mensahe nga ang lain-laing client wala makahimo sa pag-usab.
Kini mao ang nag-ingon sa usa ka device “it mao ang root nga ako nag-alagad” gikan sa “it mao ang usa ka lain-laing one”, ug sa usa ka client nga dili makahimo sa pag-reproduction sa usa ka lain-laing client nga fingerprint sa makakita sa usa ka perfectly maayo nga record sama sa bisan unsa nga record sa tanan - ug unya, sumala sa Section 3.3, minta sa usa ka ikaduha nga root ug split ang identity.
Kini mao ang Ang open source sa AGPL-3.0. Ang cryptographic core nga gipakita dinhi mao ang
js/nym-crypto.js ug js/modules/pq.js Ang kliyente sa web, ug
lib/core/crypto/ Ang lib/features/identity/pq_registry.dart Kini mao ang mobile client.
Alang sa ubang mga dapit sa mao gihapon nga ngalan, tan-awa ang Mga pahina sa base sa impormasyon bahin sa quantum-resistant encryption.