Nakatugaw iti whitepaper.
Napateg ti post-Quantum Key Agreement iti Nymchat.
I-distributing dagiti ML-KEM-768 public keys iti Nostr ket saan a directory wenno registry, ken ipasngayda kadagiti sekreto a saan nga awan pay a public value nga ipasngay.
Ti addan a post-quantum key exchange iti maysa a messenger ket awan ti problema ti cryptography. Ti primitives ket standardized ken dagiti libraria ket adda. Pimmanaw Masarakan iti daytoy a artikulo a ti Nymchat nga agbasol iti dayta—dagiti a saan a nagpatarus ti maikadua a key, kas ti makaparagsakda kadagiti tattao a nangisubli, ken ti saan a nairekord iti interface maipapan iti resulta— ket, iti maikadua a seksion, ti saan a resulta ket saan a pagbalinan.
Daytoy a panid ket naipatarus babaen ti makina para iti kombeniente. Ti Ingles nga orihinal ti bersion nga agaplikar.
1problema iti
Nalatak dagiti mensahe ti inaramidna. NIP-44 ngaTi maysa a paset ket ti maysa a paset ti maysa a paset, a ti maysa a paset ket ti maysa a paset ti maysa a paset, a ti maysa a paset ket ti maysa a paset ti maysa a paset. Kanta ti (Daytoy ti RFC 5869) — ket saan nga agminar iti maysa a quantum computer; ti algorithm ti Grover ket agpatingga iti maysa a square-root acceleration maipapan iti simmetrical key, ken ti 256 bit ti absorbs. Agbiruk Naaddaan iti elliptic curve ti Diffie-Hellman. Ipapaupana ketdi ti 256K.Ti pagbalinan ti maysa a private key manipud iti maysa a public counterpart ti retroactively expose ti amin a shared secret a key ever produced.
Ti panagturay ket saan nga agturay iti panagturay iti panagturay, ti panagturay ket agturay iti panagturay iti panagturay.
1.1 Kasapulantayo ti panangidumduma
Daytoy ket addaan iti kaaduan kadagitoy no kalgaw a panagturay iti panagturay a panagturay. (Agtawenak idi 203.Daytoy ket addaan iti distribution problem:
Kas pagarigan, ad-adu ti post-quantum exchange ken ti dua a kinakaad-adu – ti ML-KEM public key. Ania ti naaddaan a key, ken ania ti inaramidna ti inaramidna ket inaramidna ti inaramidna?
Ti NPUB ket auto-contained. Kitaentayo iti papel, saanda, wenno scan iti screen, ket isu ti naan-anay a naidumduma nga in-encrypt para iti. Ti ML-KEM-768 a public key ket 1,184 byte. Ti saan a maaddaan ket saan a maaddaan iti ad-adu a username, ket saan a maaddaan iti QR code ngem iti ID a 32 byte.
Daytoy ket addaan iti kaaduan kadagitoy no kalgaw.Isu ti kaaduan kadagitoy no kalgaw ket ti kaaduan kadagitoy no kalgaw.
- Naaddaankami iti substitut. Ti maysa a key ket saan a sawen a makakita iti maysa a mata ket ti kasta a banag a pagbalinan ti maysa a napateg a pagbalinan iti maysa a tao. Seksion 4 pagbalinan dayta iti identity babaen iti maysa a signature, a naidumduma iti dayta.
- Naaddaankami iti maysa a device ti user. Ti maysa a account iti telepono ken maysa a laptop ket addaan iti maysa a key, wenno dagiti mensahe a nadakamat iti maysa ket saan a maaddaan iti sabali.
- Naaddaankami iti langlangit. Ti Public Key ket naaddaan iti maysa a secret, tapno maaddaan iti daytoy a secret – ket iti konstruksion, ket saan a naaddaan iti daytoy a secret.
2Umadawtayo iti limitasion
Napateg a limitasion ti reaksion, ken inlawlawagna ti karaman dagiti natay a disenyo sakbay a maaddaan ti dadduma a code.
- Kas pagarigan, nalatakda met laeng dagiti dadduma. Ti maysa a sekretario ket maysa a nagduduma a paraan a maaddaan iti historia, ken ti maysa a tattao a maaddaan iti backup a nsec ket saan a maaddaan a maaddaan kadagiti dadduma. Section 3.1 ipakita a ti daytoy a ket saan a maaddaan ket saan a maaddaan a maaddaan—ti maysa a post-quantum key a naaddaan iti nsec ket saan a maaddaan iti post-quantum protection ket saan a maaddaan iti maysa a sekretario ket saan a maaddaan iti design: ti maysa a bit ti key material, a generated once per identity, presented in the same shape as the nsec and in the same place, in order that anyone who knows how to keep one knows how to keep the other. Section 10.1 is honest about what that still costs.
- Daytoy ket autoridad. Ti maysa a server ket saan a maaddaan a maaddaan iti maysa a server a maaddaan iti maysa a server a maaddaan iti maysa a server.
- Dadduma a maysa, maysa a identidad. Ti maysa a Nostr nga identity ket naipasngay iti maysa a client iti maysa a client. Ania ti key material a nagduduma a maaddaan iti maysa a client ket saan a maaddaan iti maysa a client iti maysa a client iti maysa a client iti maysa a client iti maysa a client.
- Ti negosio. Kas iti band-exchange ti “ti a cifer a mangisuportayo?” ket maysa a surface a napulotan a maaddaan tapno maaddaan ti masakit a opsion.
3Kasapulantayo ti Independent Secret
Daytoy ket addaan iti prinsipio a mangay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ayo.
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)
Ti root ket naipasngay iti maysa a nsec: Agtawenak 32 Kitaen dagiti ladawan.
nympqKitaen dagiti ladawan. nympq1…Daytoy ket addaan iti kaaduan kadagitoy no kalgaw ti kaaduan kadagitoy no kalgaw.Isu ti kaaduan kadagitoy no kalgaw ket ti kaaduan kadagitoy no kalgaw.
Daytoy ket addaan iti kaaduan kadagitoy no kalgaw ti kaaduan kadagitoy no kalgaw. epoch Napateg ti panagturay iti panagturay (Section 9).
3.1 Kasano a ti key ket saan a maipaay iti identity key?
Ti nangpabileg a disenyo ket iti panangasaba ti keypair iti sekreto a nangpabileg ti user:
seed = HKDF(salt = "…", IKM = nsec) // do not do this
Dayta a napateg a panangmatmatmat iti panangmatmatmat iti panangmatmatmat iti panangmatmatmat iti panangmatmatmat iti panangmatmatmat iti panangmatmatmat iti panangmatmatmat iti panangmatmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmatmat iti panangmatmat iti panangmatmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti panangmatmat iti
Ti nasantuan a derivation ket maysa a publiko a derivation maipapan iti nsec. Gapuna ti opponente a nairuar ti classic half reconstruces ti post-quantum half by running the same HKDF that everybody else runs. Gapuna iti harvest-now-decrypt-later – ti maysa nga agturay ti feature ket saan a nairuar – a key derived in this way adds nothing at all.
Ti ML-KEM decapsulation key ket naaddaan iti entropy a saan a saan nga adda iti nsec ket saan a naaddaan iti klasikal-only encryption.
Ti maysa a independiente a generated secret a naincoronado kadagiti device ti maysa a user iti maysa a ordinary NIP-44 message ket ti maaddaan a mangsalaknib iti adipenna: ti maysa a opponente a nairekord iti daytoy a mensahe ket inaramidna ti klasiko a key iti maysa a tawen, ken ti root ti maaddaan iti dayta.
3.2 Ipasngay ti root kadagiti dadduma a device ti user
3 ti Seksion 2 – maysa a identidad, adu a device – ket saan a maaddaan iti aritmetika daytoy, gapu ta ti intero a punto ket ti key ket saan a function ti amin a device ti maaddaan. nympq1… Addaan iti code.
Kitaen dagiti ladawan. nympq1… Ti maysa a device ket addaan iti maysa a code, ket ti maysa a device ket addaan iti maysa a code, a ti maysa a device ket addaan iti maysa a code.
Ti regla iti Seksion 3.1 ket kuna ti root ket saan a manglaban iti klasiko a naidumduma nga encryption, ken saan a mekanismo a naaddaan iti automatiko a automatiko—synchronizing it babaen ti relay, nga agpakarsoda iti identity key—inlawlawagna kas iti dayta.
Ti format ket mangisurat iti maysa a wrapped path: ti maysa a rekord ket saan a mangisurat iti lista ti wraps, iti maysa a AEAD blob iti maysa a key a naidumduma iti maysa a device—ti maysa a passkey PRF output, porma. nympq1… Kasapulantayo ti sumagmamano a makisarita iti artikulo a 10.1.
Napateg ti maysa a kategoria iti maysa a setup. nymchat-pq-rootNaaddaan iti saan a wraps ti nangaramid iti trabaho: ti presensiya ket kasano a maaddaan ti maysa a second device a maaddaan a daytoy a identity ket addaan iti maysa a root, a kas ti inaramidna ti maysa a rival (Section 3.3).
ti nymchat-pq-root ti must saan Daytoy a ruar ket addaan iti tunggal kopia ti root, tapno ipasngayna iti maysa a key a derived iti root ket maysa a lock a key nga adda iti box: saan a device a maaddaan iti dayta, saan a ti maysa a napulotan ket ti napulotan iti dayta. Ti klasiko ket napulotan – NIP-44 iti dayta – wenno saan a saan.
Daytoy ket ti tunggal exception, ket isu ti exception maipapan iti circularity no maipapan iti strength.
3.3 Generasion ken adopsion
Iti boot, nangipasngay iti maysa a durable identity, nagtrabaho iti daytoy a orden:
- Addaan iti existing
nymchat-pq-rootRekord iti - Napateg ti record, ken ti aparato a maaddaan iti - ad-adu pay ti identidad a post-quantum a kapasidad.
- Napateg ti record, ket ti device ket saan a maaddaan iti – awan ti generate a new root, ket awan ti publikan iti ad-adu pay. Pimmanaw ti user a mangidalan iti daytoy a device babaen iti
nympq1…Addaan iti maysa a device a naaddaan. - Rekord iti Ngem saan a nagpateg a nagpakarsoda, ad-adu payen ti ad-adu payen.
nympq1…Naaddaankami iti maysa a user para iti salun-atmo.
Daytoy ket addaan iti kaaduan kadagitoy no kalgaw ti kaaduan kadagitoy no kalgaw.Idi linuktan ti kaaduan kadagitoy no kalgaw.
4Napintas ti kapasidad.
Ti publikasion a paset ti derivative keypair ket naaddaan iti adresable.
Ipabuya ti 01
Agtawenak idi iti 30078. 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": [ ... ]
}
}
Ti ad-adu pay nga ad-adu pay ken ad-adu pay nga ad-adu pay nga ad-adu pay ken ad-adu pay nga ad-adu pay ken ad-adu pay nga ad-adu pay ken ad-adu pay nga ad-adu pay ken ad-adu pay nga ad-adu pay ken ad-adu pay nga ad-adu pay nga ad-adu pay ken ad-adu pay nga ad-adu pay.
Naaddaankami iti obligasion. Ti kaso ket sinurat babaen ti identity key, tapno ti argumento a “ti ML-KEM key ket maipapan iti daytoy a npub” ket kas kas iti naudi ti npub. Ipatulodda ti maysa a lain-laing a encapsulation key ket mangisursuro ti secp256k1 a sinurat.
Napateg dagiti adalan. Agtawenak idi NIP-40 nga Kas 24 a oras, nangpublikar iti rekord ti maysa a pammadayaw maipapan iti maysa a client a nairekord ket iti maysa a client a nairekord iti maysa a client a nairekord.
Daytoy ket addaan iti kaaduan kadagitoy no kalgaw ti kaaduan kadagitoy no kalgaw.Idi linuktan ti kaaduan kadagitoy no kalgaw.Idi linuktan ti kaaduan kadagitoy no kalgaw.
Ti asymmetry ket ti kaadu ti panangidumduma ket ti aksidentalidadna. No maysa, maysa a rekord ti naidumduma ti key it naidumduma: maysa a device a naidumduma, reset, wenno ti nagbaetan ti root, naaddaan iti maysa a standing instruction a naincapsulate iti key no no one holds any more, ken dagiti mensahe a naidumduma iti daytoy ket saan a naidumduma ket saan a naidumduma iti maysa a side.Seven days limit that window, and lets relays drop the record themselves rather than relying on clients to notice.
Ti key field ket nairaman iti format. Ti field ket pk2, ken ti digit ket paset ti kontrata ngem iti decoration: ti nagan ti payload format a key nga saan a maaddaan iti. A reader a saan a maaddaan ti field, ti "Nymchat client, no post-quantum key" ket inusar ti ordinary NIP-44, a saan a maaddaan iti tunggal login.Ito ti maaddaan iti correct failure direction, ket pay laeng ti maaddaan iti ruar ti format numbering a saan a maaddaan iti ipapatay: ti unrecognized capability claim must cost protection, never delivery. A key a peer cannot use is worse than no key at all, because the message it produces is lost with no error on either side.
4.1 Ti absent ket makisarita, ken ti tri-valued
Ti detalye a sublime ngem penting: ti ad-adda a nairekord ket nairekord iti tunggal Nymchat client, saan a saan a post-quantum-capable, ken ti key field ket optional.
| observasion iti | Kayat a saoen | Agbiruk iti behaviour. |
|---|---|---|
| Nalaing ngamin iti key | Nymchat, ti post-quantum a makapasakit | Hybrid iti |
| Isu ket pimmanaw, ket awan ti key. | Nymchat, classic only – post-quantum off, wenno ti maysa a device a saan a nailawlawag iti root ti identity | Daytoy ti NIP-17 |
| Isu ket pimmanaw. | Kasano a saan nga agpatingga ti kasayaatan, saan nga agpatingga ti kasayaatan. | Ti klasiko, plus ti compatibility wrap. |
Daytoy ket maysa a sinurat a pampanunoten ti inaramid ti Nymchat, a naidumduma a pampanunoten ti panangidumduma iti spekulatibo a cross-protocol wrap a saan a saan a saan a maaddaan kadagiti tattao a saan a saan a maaddaan.
4.2 Ti aparato a saan a maaddaan iti root ket siled.
Ti ad-adu pay laeng nga ad-adu pay laeng ti ad-adu pay laeng ti ad-adu pay laeng ti ad-adu pay laeng ti ad-adu pay laeng ti ad-adu pay laeng ti ad-adu pay laeng ti ad-adu pay laeng ti ad-adu pay laeng ti ad-adu pay.
Ti maysa a device a maaddaan a root ket adda, ngem saan a maaddaan, ket saan a naaddaan iti ad-adu pay a ad-adu pay. Ti maysa a device ket saan a maaddaan iti app: saan a naaddaan ti adu a mensahe nga adda kadagiti key ken saan a naaddaan iti classical, ngem inaramid ti user a maaddaan iti link.
5Napateg a nailawlawag iti Decision
Ti maysa a stand-by-subscription ket naidumduma kadagiti tattao a nagpatarus a nagkorrekto – dagiti bimtak ken ti grupo a miembro – tapno maaddaan dagiti inana iti ordinary events. Para iti maysa a peer-met for the first time, maysa a single-shot query ket nairuar iti send time, limitado iti 2.5 a sekonda; no saan a maaddaan, ti mensahe ket maaddaan iti classical, nga isu ti panangidumduma a nagduduma iti post-quantum ket awan ti maysa a new failure mode.
Ti maysa a user a manghubad iti maysa a new device, wenno a nagbautisaran ti login iti browser-extension iti maysa a lokal a key, makaparagsak a post-quantum a makapasakit iti mid-conversation, ken ti permanently cached “no” ti mangted iti classic encryption para iti biag ti ad-adu.
5.1 Apay a saan a naaddaan ti napasamak?
Daytoy a ruar ket naidumduma iti maysa a question:
pq = (we hold a signed, unexpired ML-KEM key for this recipient)
Daytoy ket addaan iti maysa a lengguahe a naespirituan a lengguahe. ket Ti mode a mangaramid iti maysa a pagannurotan ket ti mensahe iti klasiko—ti status quo a naaddaan iti daytoy a feature—miasa a ti hybrid a mensahe ti mabuteng iti maysa a pagannurotan.
Daytoy ket addaan iti ad-adu pay: ti maysa a client ti hybrid. ti Ti maysa a mensahe ket addaan kadagiti dua a tao, a kas ti maysa a tao, a ti maysa a tao ket addaan kadagiti dua a tao.
6Ipabuya ti Hybrid
Ti unmodified a NIP-44 ciphertext ket ti innem a layer, ken ti ML-KEM ket ti umiso a AEAD:
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)
Dagiti dua a sekreto ket naaddaan tapno maaddaan ti mensahe: ti eksternal a layer naaddaan iti naan-anay a NIP-44 ciphertext, ken ti aperturona a nangisubli iti classical ECDH. A quantum opponent a nangaramid iti secp256k1 ket naaddaan iti internal key ken naaddaan iti ML-KEM; ti rupturo ti ML-KEM naaddaan iti eksternal a layer ket naaddaan iti NIP-44.
kem_ssDaytoy ket addaan iti maysa a paset ti ECDH, a ti maysa ket ti maysa a paset ti ECDH, a ti maysa ket ti maysa a paset ti ECDH.kem_ct,recip_kem_pkDaytoy ket addaan iti kaaduan kadagitoy no kalgaw ti kaaduan kadagitoy no kalgaw.
Ti ML-KEM a key ti recipient ket langlang-langit, ngem ti tunggal mensahe ket mangted iti independiente a cifertext ken, saanto, iti independiente a key.
kem_ssDaytoy ket addaan iti kaaduan kadagitoy no kalgaw.
Agtawenak idi iti 1305 a tawen.
Ti maysa a pagarigan ket ni Eliezer a nakaitalkan ti adu a sanikua ni David.
6.1 Kasano a nagpateg dagiti layers
Ti alternatibo ket ti agipatpatarus kadagiti dua a sekreto iti maysa a konversasion a key ken umiso iti NIP-44:
ck = HKDF-Extract(salt = "…",
IKM = ecdh_x || kem_ss || …) // do not do this
Ti konstruksion ket naaddaan iti cryptography. Naaddaan iti maysa a struktural a problema:
ecdh_xNalaing ngamin idiay ayan ni Insan Crist ket isu a sabali dayta isemmo.NIP-07 ngaMaanadantayo dagiti kabaketan a pagsasaotayo (NIP-46 ngaNagpatingga ti NIP-44 iti nagan ti panagtalek ken imbagana ti cifrado a teksto, nga isu ti intero a punto ti nangpanaw ti key iti lugar a saan a saan ti app.
Ti agipatpatarus dagiti sekreto ket naidumduma ti tunggal login a mangidalan ti identity key iti signer, a ti maawatan a user, ket saan a maawatan iti key derivation a maaddaan iti dayta.Layering naidumduma ti dependency: ti NIP-44 ket naidumduma iti intero ken naiduma iti kasta nga adda iti identity key, signer-inklud, ngem ti KEM-halab ket naidumduma manipud iti recovery code a naidumduma ti client.
Ti ML-KEM ciphertext ket 1,088 bytes ken rides iti tunggal mensahe, base64url-coded iti 1,451 a karakter; ti external AEAD adds a 16-byte Poly1305 tag ken agipatpatarus ti NIP-44 payload nga agpakarsoda iti maysa a third. Ti 50-karakter a mensahe ti nagbaetan iti 176 bytes iti 1,712, ken ti 2,000-karakter a mensahe iti 2.820 iti 5.238. Ti porma ket agarup 1.5 KB iti mensahe no ania a korte ti mensahe, nga isu ti presyo ti encapsulating fresher cada kada agpateg a mangusar iti maysa a segreto.
6.2 Kasapulantayo ti panangidumduma
ti pq2. Ti prefix ket naaddaan iti impluensia nga incremental: ti auto-describing, para ti maysa a client ket naaddaan ti pathway ti decryption babaen iti inspection ti payload a saan a saantayo a mamati a tag wenno maaddaan ti dadduma a peer nga agpatarus. A reader a saan a maaddaan a prefix ket saan a maaddaan ti payload a saan a maaddaan, ken dagiti mensahe a nadadaelda iti maysa a side ti saan a post-quantum a saan a maaddaan kas ordinary NIP-44 no saan a migration.
Ti ML-KEM decapsulation ket naaddaan a saan a maaddaan: saan a malformed a teksto ti cifer, ti Fujisaki-Okamoto transform ket naaddaan iti deterministiko a pseudo-random secret ngem iti maysa nga error. Ti maladaga a key ket saan a maaddaan iti KEM layer ket saan a maaddaan iti HMAC failure iti NIP-44, a kas iti kasta a kas iti maladaga a classical key surfaces. The callers treat both identically, so the failure carries no distinguishing signal. It is also what makes the candidate list of Section 9.1 workable: a client tries each key in turn and lets NIP-44 say which one was right.
6.3 Dagiti dua a layer ti gift wrap
A NIP-17 nga Napateg dagiti mensahe a NIP-59 nga Daytoy ket addaan iti kaaduan kadagitoy no kalgaw ti kaaduan kadagitoy no kalgaw ti kaaduan kadagitoy no kalgaw ti kaaduan kadagitoy no kalgaw ti kaaduan kadagitoy no kalgaw.
Ti signer login ket naaddaan iti external layer. Ti seal ket naiduma ti signer iti ordinary NIP-44—ti app ket saan a makita ti key a nailawlawag—panay a saan a saan a hybridized iti lugar. Ti daytoy ket saan a naidumduma iti napalabas: ti seal ket naidumduma iti wrap, ken ti wrap ket ti recording a recording.
7Agipatpatarus kadagiti grupo a mensahe ken partikular a coverage.
Ti grupo a mensahe ket awan ti maysa a ciphertext. Ti maysa a simple text a naaddaan iti tunggal membro, ti maysa a kopia ket kapapsulado iti maysa a ML-KEM key ti maysa a membro. Ti membro a naaddaan ti key ket saan a hybrid wrap; ti maysa a naaddaan ket saan a classical wrap.
Isu ket inaramid ti problema ti accounting a saan a naive nga implemento. No 8 iti 10 a membro ti saan a hybrid a kopia, ti mensahe ket saan Ti maysa a opponente ket nangisurat iti maysa a klasik a kopia ti simple a teksto a maaddaan iti adu a dekada, tapno maaddaan ti mensahe ngem kada Ti kopia.
Ti Nymchat ket nagtugaw ti panangpadpadaan iti per-message bayat ti fan-out—ti bilang ket saan a maaddaan bayat ti pagimbagan dagiti wraps— ken ti badge ti “quantum-resistant” iti “8 out of 10 members” ngem iti “protected” ti mensahe. Addaan Ti grupo a mensahe (ti naan-anay a reminder ket ti fan-out), ti interface nairekord a partial ket saan a naidumduma a proteksiyon.
7.1 Ania ti report ti shield?
Isu ket pimmusay idiay asideg ti Edinburgh. Kitaen dagiti ladawan.Ti software ket addaan iti:
- Naaddaan iti full protection: saan a kopia ti simple a teksto ket naaddaan iti hybrid.
- Partikular: sumagmamano a kopia ti mensahe a grupo iti klasiko. Pimmanaw a degradado ket naidumduma, gapu iti maysa a klasiko a kopia ti simple a teksto a identik iti amin a tattao ket isu ti adalanna.
- Ti klasiko ket naipatarus a maipaay iti naimbag a badge, gapu iti maysa a absent indicator ket ambiguous iti nagbaetan ti “unprotected”, “broken”, ken “atu a build ket mangisurat iti feature”.
Ti sentensia ket naidumduma idi ti mensahe ket naidumduma manipud iti ad-adu pay nga ad-adu a peer. Ciphertext a naidumduma ket saan a saan a naidumduma a naidumduma ngem idi, ken ti interface a naidumduma ti naidumduma a mensahe iti agnanayon nga ad-adu ti maysa a ad-adu ket saan a naidumduma maipapan kadagiti byte iti relay.
Ti ruar ti grupo ket naaddaan iti daytoy ket saan a pakairamanan dayta: ti grupo a mensahe ket naidumduma laeng idi ti kopia ti tunggal miyembro, ken ti saan a grupo a mensahe ket saan a saan a pagbalinan ket saan a pagbalinan dagiti partikular.
8Kitaen dagiti ladawan.
Ti adu a tattao a mangisurat iti maysa a client ket naka-encrypted iti maysa a user’s identity: synchronized settings, the conversation list, group keys, and the message archive. These carry more about a user than most single messages do, so leaving them classic would make them the weakest stored artifact no matter how carefully the messages themselves were sealed. They use the same hybrid, encapsulated to the user’s own root-derived key—with one exception described nymchat-pq-root Daytoy ket addaan iti maysa a kategoria, a saan a saan a naawat iti maysa a key a saan a naaddaan.
Ti maysa a set-up blob wenno maysa a archive a ruar ket nalatakda iti maysa a lugar iti tawen, a ti kasta ket ti form ti dadduma a gagayyem a gagayyem a gagayyem a makipag-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay.
Ti maysa a limitasion nairuar iti format ket awan ti key. Ti auto-addressed a kopia ket saan a maaddaan iti kada Ti maysa a device ket ti maysa a device iti account, para iti maysa a device ti ad-adu pay nga adda iti ad-adu pay nga ad-adu ti account, ken ti account ti ad-adu pay nga adda iti ad-adu pay nga ad-adu ti account.
Ti maysa a device a mangted iti identity, ngem awan ti root, ket saan a maaddaan iti daytoy a root-derived key, a kas iti maysa a settings.Ito ket maysa a deliberate consequence, ket maysa a oversight, ket isu nga idi ti Section 3.3 ti maysa a device a mangted iti linking a lugar ti minting iti maysa a freshly root: ti maysa a second root ket saan a maaddaan iti blob a maaddaan, saan a maaddaan iti dua ti identity’s key material.
Ti maysa a device a nagturong iti browser extension wenno remote signer (NIP-46) ket awan ti nsec a maipaay iti, ngem adda ti recovery code, ken iti layered construction ti Seksion 6.1 nga isu ti amin a post-quantum half-needs: ti signer a naiduma ti NIP-44 layer a kas iti biag, ken ti client ti key ti external layer.
9Rotasion iti
ti epoch Daytoy ket addaan iti kaaduan kadagitoy no kalgaw ti kaaduan kadagitoy no kalgaw.Idi linuktan ti kaaduan kadagitoy no kalgaw.Idi linuktan ti kaaduan kadagitoy no kalgaw.
9.1 Agtawen iti epek, ket awan ti re-encrypted
Ti maysa a kliyente ti nagbuya kadagiti kandidato iti decryption manipud iti current epoch agingga iti epoch − 3, tapno maaddaan ti mensahe a nadadaelko iti naespirituan a ruar ti rotatio ket maaddaan iti keypair a naidumduma idi idi idi inaramidna idi.
Daytoy a langlangit ket ti makagapu a sigurado a maaddaan iti rotatio: saan a, iti kasta a rotatio, ti maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan a maaddaan.
10Ket ti proteksion ti
Ti papadi a nairekord iti daytoy a design ket saan a nairekord iti sistema, ken ti nadakamat iti maysa a security property iti interfaces ket masakit ti inlawlawagna.
10.1 Ti root ket maysa a sekreto, ket ti inaramidna ket inaramidda.
Daytoy ket ti real price ti design. Ti limitasion iti Seksion 2 a saan a ti maysa a user ket saan a maaddaan iti maysa a banag: ti nsec ket saan a reconstruct ti post-quantum key, gapu ta ti intero a punto ti ket ket ket awan pay a public value ken awan ti dadduma a sekreto a maaddaan iti dayta. No maysa a device ti mangted iti root ken awan ti wraps ti Seksion 3.2 ti saan a maaddaan, ti material a nadadael iti root-derived key ket saan a maaddaan.
Ti manual nga agipatpatarus ket maysa a patarus, daytoy ket maipaspaspaspasngay ti inaramidna. nympq1… Napateg a kopia ti code iti kasta a lugar, iti maysa a device, ken ti inaramidna ti device ket inaramidna ti tunggal post-quantum a mensahe, ti settings blob ken ti archive a ruar a nadakamat iti dayta.
nsec Ket, inton napudoten ti init, ti mana a nabati iti daga marunawen.
Ti maysa a napalabas ket ti maawagan a patarus a makaay-ayo, tapno maaddaan a skema ti maaddaan a maawagan a patarus a maawagan—ti maysa a memorable passphrase, kas ti maawagan a passphrase, ket ti maawagan a ruar ti maawagan a patarus ket ti artifact a maawagan-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ay-ayo.
10.2 Authentication, kas saan nga agibumbunannag iti confidentiality
Ti panagrang-ay iti Nostr ket Schnorr ngem iti secp256k1, ken saan a saan a mabasa iti dayta. Ti maysa a oponente iti maysa a quantum computer ket addaan iti panagrang-ay ken impersonate a user iti real-time. Ti panagrang-ay ti hybrid key exchange ket maipaay iti panungpalan-ay-decrypt-later: ti maysa a napateg a napateg a traffic iti daytoy nga aldaw ket saan a maaddaan iti panagrang-ay. Ti panagrang-ay ket saan a maaddaan iti maysa nga oponente a maaddaan iti makina. Ti panagrang-ay ket naim-imporma iti aplikasion – ti padlock indicator nairuar iti authentication, ti shield nairuar iti confidentiality, ken isu ti separado a glyphs gapu iti maysa a mensahe
Ti pagbalinan manipud iti npub ken maysa a ML-KEM key ket maysa a secp256k1 signature, para iti maysa a opponente a maaddaan iti maysa nga opponente a maaddaan iti maysa nga opponente.
10.3 Dagiti metadata
Isu ket pimmusay idiay asideg ti Edinburgh, ken kadua met idi ti pamiliana. p Ti tag, ti tipo, ken ti timestamp ti inana a mensahe. Ti naidumduma ket ti maysa a evento, ti panagkauna, wenno idi inaramid ti relay.
10.4 Kas iti offline mesh
Ti Bluetooth mesh transport ti Nymchat ket maysa a separatista a protokoll iti maysa a handshake, ket saan a saan a maaddaan iti daytoy a trabaho.
10.5 Agipatpatarus kadagiti mensahe
Ti ciphertext a nairekord idi agtawen iti dua a paset ti klasiko ket permanente a klasiko. Naaddaankami ket saan a maaw-awagan. Ti proteksion ket bimtak iti mensahe nga adda iti dua a paset ti post-quantum keys, ket saan a naawagan ti feature.
11Kitaen dagiti ladawan.
| Nangparaak | Apay a |
|---|---|
| Pimmanaw ti post-quantum key iti identity key. | Ti derivation ket maysa a publiko nga algorithm maipapan iti nsec, ken ti maysa a quantum opponent nga agpatingga ti nsec manipud iti publikado a npub, tapno maaddaan ti classic half-hand iti post-quantum half iti dayta. |
| Agipatpatarus ti root iti dadduma a device iti NIP-44. | Ti maysa a root a naidumduma iti klasiko-only encryption ket naidumduma babaen kadagiti tattao a nairekord ti mensahe ken naidumduma ti keyna ngem, a ti oponente ti root ket naidumduma. |
| Ti maysa a separado a generated ML-KEM keypair iti tunggal device | Daytoy ket addaan iti kaaduan kadagitoy no kalgaw ti kaaduan kadagitoy no kalgaw.Idi linuktan ti kaaduan kadagitoy no kalgaw.Idi linuktan ti kaaduan kadagitoy no kalgaw. |
| Pimmanaw ti root iti pin. | Ti pin ket addaan iti agarup 13 a bit kadagiti napateg a napateg a napateg a ruar a nakaad-adu ti 256-bit a trail. |
| Napalalo ti NPUB iti dua a key. | Ti 1,184 byte ket maysa a shareable identificer, ket saan a mapannurotan ti amin nga existing Nostr client a parsing ti maysa a address a naiduma a 32 byte. |
| Addaan iti key directory. | Rin-introduce ti autoridad a network nga adda tapno maaddaan. Kas ti agbasol iti searchup, ti makisarita ti saan a makisarita ti mensahe. |
| Naaddaankami iti key ti mensahe. | Ngem saan a nagpateg ti inaramidna: ti inaramidna ket ti Receiver iti Napateg ti maysa a mensahe tapno maammoanyo no pudno met laeng nga agbibiagkayo iti dayta. |
| Naaddaankami iti kapasidadna | Naaddaankami a napateg a napateg a napateg a napateg a napateg a napateg a napateg a napateg. |
| Ti post-quantum laeng, saan a klasiko a leg | Nailugan ti adu a dekada ti analizada ti secp256k1 iti panagbalintayo iti maysa a maawagan a primitive. dua Ti Fail. |
12Naaddaankami iti paridad.
Ti Nymchat ket addaan iti dua nga independiente a naimplementasion iti daytoy a konstruksion—ti maysa iti JavaScript para iti web application, ti maysa iti Dart para iti mobile application, iti nagkauna a mula-dakkel a port ML-KEM-768.
Tiimplementasion ti Dart ML-KEM ket navalidado maipapan iti opisial
Agbiruk iti ACVP
Nalaing ngamin idiay ayan ni Insan Crist ket isu a sabali dayta isemmo. (ML-KEM-*-FIPS203Ti 25 a key-generation, 25 a encapsulation ken 10 a decapsulation, a nairuar iti maysa a suite. Ito ti vektor a nairuar ti NIST tapno maaddaan a naidumduma aimplementasion, tapno maaddaan kadagiti naidumduma, ket maysa a bukti a ti port ket maadaltayo, ket saan a maysa a dokumento a ti dua a client ket nagpatarus kadagiti dua a client. Kalpasanna, maysa a shared fixture ti test vector – semen derivation, encapsulation, payload formats, ken kompleto gift wraps – ket generated manipud iti JavaScript reference ken verified manipud iti dua a test suite. Ti root secret ket extends a fixture ket saan a maaddaan iti dayta: root to seed, root to keypair, ti public fingerprint ti root, ken ti derivative key, nonce ken ti aso
nympq1… Ti divergens iti maysa a implemento ket mangsalaknib ti build ket mangted a mensahe a saan a saan a naaddaan iti maysa a client.
Ti maysa a device ket ti root nga inaramidko nga “ manipud iti “ti maysa a diferente nga one”, ken ti maysa a client a saan a saan a reproduced ti fingerprint ti maysa a client ket maaddaan ti maysa a perfectly good record a saan a record ket saan a record laeng – ken idi agpatingga ti Section 3.3, mint ti maysa a second root ken split ti identity.
Napateg ti Addaan iti open source. Agipatpatarus iti AGPL-3.0. Ti cryptographic core a nailawlawag iti
js/nym-crypto.js ken js/modules/pq.js iti web client, ken
lib/core/crypto/ ti lib/features/identity/pq_registry.dart Addaan iti mobile client.
Para iti korte, non-technical explanation, kitaen ti Kasapulantayo iti Quantum-Resistant Encryption.