Lub tsev khaws kev paub: kev encryption tiv thaiv quantum

Nymchat cov ntawv qhia txheej txheem

Kev sib tso siab txog cov chaw tswj tom qab Quantum hauv Nymchat

Kev nthuav ML-KEM-768 public keys dhau ntawm Nostr yam tsis siv directory lossis registry, thiab tsim lawv los ntawm ib yam uas tsis tshua paub uas tsis muaj dab tsi hauv cov ntaub ntawv pej xeem qhia tawm.

Version 1.0 August 2026 Siv rau Nymchat 3.74+

Kev ntxiv ib lub kev hloov pauv chaw cia chaw khaws tom qab lub caij nyoog quantum rau ib lub messenger feem ntau tsis yog ib qho teeb meem txog cryptography. Cov primitives tau raws li qhov tswj hwm thiab cov libraries muaj lawm. Qhov uas nyuaj yog txhua tus neeg koom nrog tam sim no xav tau ib... thib ob lub chav tswj pej xeem, thiab ib lub network uas tsis muaj chaw tswj yog ib leeg tsis muaj chaw pom meej los muab nws tso rau. Tsab ntawv no qhia txog yuav ua li cas Nymchat teb rau qhov teeb meem ntawd — lub chav tswj thib ob los ntawm qhov twg, yuav ua li cas nws thiaj mus txog rau cov neeg uas xav tau nws, thiab dab tsi lub interface tau txais cai los hais txog qhov tshwm sim ntawd — thiab, nyob rau qhov kawg, qhov tshwm sim ntawd tsis tiv thaiv dab tsi.

1Qhov teeb meem

Nostr cov lus xov xwm ntiag tug yog raug encryption nrog NPE-44, uas muaj ob sab uas txhia tau. Qhov sab uas ua rau cov ntaub ntawv (plaintext) raug ntxias — ChaCha20 nrog ib lub HMAC-SHA256 tag, uas siv lub key los ntawm HKDF (RFC 5869) — tsis raug teeb meem loj los ntawm ib lub computer quantum; Grover's algorithm yuav ua rau sai zog li square-root ntawm ib lub symmetric key, thiab 256 bits yuav tiv thaiv tau qhov ntawd. Qhov metade uas pom zoo ntawm lub chaw yog elliptic-curve Diffie-Hellman rau secp256k1, thiab Shor's algorithm txiav txim siab tau qhov discrete logarithm ntawd. Kev rov nrhiav tau ib lub private key los ntawm nws tus public counterpart yuav tsis tseg txhua yam shared secret uas lub key ntawd tau tsim los lawm.

Qhov kev phom kev uas tsim los ntawm qhov no tsis yog yuav tsum tos txog thaum lub tshuab zoo li ntawd muaj. Ib tug neeg uas muaj chaw khaws ntaub ntawv tuaj yeem khaws cov ciphertext hnub no, thiab qhib nws thaum lawv muaj peev xwm qhib nws. Txhua yam uas xa mus tam sim no uas tseem muaj nuj nqis thaum lub sij hawm ntawd yog qhov uas tsis muaj kev ruaj ntseg lawm. Qhov no yog qhov kev hais tsim kev tshwm sim tshwj xeeb uas kev hloov pauv chav npe tom qab quantum (post-quantum key exchange) tiv thaiv tau, thiab nws yog qhov vim li ntawd uas kev ua hauj lwm no tsis tuaj yeem tos txog thaum lub tshuab raug tsim tawm.

1.1 Lo lus nug uas daim ntawv no teb

Kev tiv thaiv tau nkag siab zoo heev: siv ib lub post-quantum key encapsulation mechanism nrog rau kev hloov pauv qub, kom tus neeg tsim txom yuav tsum tau tsoo ob yam no thiaj li nyeem tau dab tsi. Nymchat siv ML-KEM-768 (FIPS 203). Yam ntawd tam sim ntawd tsim tau ib qho teeb meem ntawm kev faib:

Lo lus nug

Txhawm rau xa xov rau Alice hnub no, koj xav tau ib yam xwb: nws lub npub. Yog ntxiv kev sib h 싶v post-quantum, koj yuav xav tau qhov thib ob — nws lub ML-KEM public key. Lub key ntawd nyob qhov twg, thiab koj yuav tau nws li cas ua ntej koj tuaj yeem xa dab tsi rau nws?

Ib lub npub yog ib yam uas muaj txhua yam nyob rau hauv nws tus kheej. Koj tuaj yeem sau nws rau ntawm daim ntawv, hais nws ua suab, lossis scan nws los ntawm ib lub screen, thiab nws yog txhua yam uas neeg xav tau los encrypt rau koj. Ib lub ML-KEM-768 public key muaj 1,184 bytes. Nws tsis tuaj yeem hais ua suab tau, nws yuav tsis hloov tau rau hauv ib lub username, thiab nws tsis yog qhov uas tsim nyog muaj hauv ib lub QR code ntawm ib lub identity uas muaj 32 bytes xwb.

Kev loj yog qhov yooj yim. Qhov nyuaj dua yog tias lub pob zeb thib ob coj tau peb hom teeb meem uas txawv ntawm nws, thiab qhov tshuam tshuam ntawm daim ntawv no feem ntau yog qhov tshuam rau cov teeb meem ntawd:

2Cov kev txwv rau kev tsim

Peb yam kev txeeb tau tsim cov lus teb, thiab lawv tshem tawm feem ntau ntawm cov tswv yim uas pom tau yooj yim ua ntej txhua yam code raug sau tseg.

  1. Kom tsawg tshaj plaws tej yam uas tsis qhia. Nostr cov neeg siv twb muaj ib lub ntsiab lus uas tsis pub lwm tus paub (secret) xwb, uas yog nsec. Txhua yam ntsiab lus uas tsis pub lwm tus paub ntxiv yog ib txoj kev tshiab uas yuav ua rau koj poob koj cov keeb kwm, thiab tus neeg paub txog kev khaws cia nsec yuav tsis paub txog kev khaws cia lwm yam. Nqe 3.1 qhia tias qhov no tsis tau raws li lub siab xav tau tam sim ntawd — ib lub nchuav (key) post-quantum uas tau los ntawm nsec tsis muaj kev tiv thaiv post-quantum li — yog li ntawd kev tsim tsuas siv ib lub ntsiab lus uas tsis pub lwm tus paub xwb thiab tsis ntxiv li: ib qho ntsiab lus ntawm lub nchuav (key material), uas tsim tau ib zaug rau txhua tus neeg siv, qhia ua raws li cov ntsiab lus ntawm nsec thiab nyob rau tib qho chaw, kom tus neeg paub tias yuav khaws cia ib yam, nws kuj paub tias yuav khaws cia qhov lwm yam li thiab. Nqe 10.1 qhia qhov tseeb txog cov nqi uas tseem yuav tsum tau them.
  2. Tsis muaj hwj chim. Tsis muaj server twg uas yuav raug ntseeg tau hais tias lub key yog tus twg li. Txhua lub server zoo li ntawd yuav dhau los ua qhov chaw uas cov xov xwm yuav raug hloov pauv mus rau lwm qhov.
  3. Ntau yam tshuab, ib lub neeg tus kheej. Ib qho Nostr identity feem ntau yog siv ntawm ntau lub client tib lub sijhawm. Txhua yam key material uas muaj yuav tsum tau zoo ib yam rau txhua lub, thiab cov kev uas coj nws mus rau qhov ntawd yuav tsum tsis txhob lees tau los ntawm tus neeg uas lub feature no tab tom tiv thaiv.
  4. Tsis muaj kev sib tham. Kev sib tham hauv qab ntawm "koj txhawb nqa cov cipher twg?" yog ib qho chaw uas tus neeg tsim txom tuaj yeem tshem tawm los txhawb kom siv cov uas pheej tsis zoo dua. Lub tswv yim yuav tsum tsis muaj dab tsi uas yuav ua rau qib qis dua.

3Ib lub hauv paus zais cia uas ywv yees

Qhov kev txiav txim siab tseem ceeb yog tias ML-KEM decapsulation key yog raug tsim los ntawm cov ntaub ntawv chaw uas tsis muaj txhua yam pub rau pej xeem paub. Txhua lub chaw npe (identity) tau ib lub root secret, uas raug tsim tau ib zaug xwb:

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)

Lub root raug qhia rau tus neeg siv zoo li ib lub nsec: bech32 nrog tus npe pib uas neeg nyeem tau nympq, yog li nws nyeem tau tias nympq1…, uas pom ntawm ntawm lub nsec hauv lub identity screen hauv qhov kev qhia zoo li ntawd, raug copy nrog lub tswj xwb, tsis tau raug sau ua log thiab tsis tau xa mus qhov twg yam tsis muaj kev cia. Nws tsis yog ib lub password thiab nws tsis yog ib lub login. Nws yog cov ntaub ntawv tseem ceeb uas tus neeg siv tuaj yeem khaws cia tau, zoo nkaus li lub nsec.

Cov salt raug tsim los ntawm cov domain sib txawv raws li lub hom phiaj, kom tsis txhob muaj lwm yam tsis tswj hwm twg yuav tsim tau cov chav (keypair) tib yam nkaus. Qhov epoch tus tshuab suav tsiv kev tig (Nqe 9)

3.1 Vim li cas lub chav tsis tuaj yeem tsim los ntawm lub chav qhia tus kheej

Lub tswv yim uas meej pem tshaj yog tsim lub keypair los ntawm lub secret uas tus neeg siv tau muaj lawm:

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

Nws muaj ntau yam zoo vim muaj plaub nqe lus, txhua yam yog qhov tseeb: tsis muaj dab tsi tshiab yuav tsum txhawb nqa, rau qhov nsec yog qhov txhawb nqa lawm; txhua cuav sib haum xeeb raws li kev tsim, tsis muaj cov txheej txheem sib raug zoo uas yuav ua rau tsis zoo; ib qho kev tshaj tawm uas hloov tau rau txhua tus identity yog qhov tseeb tiag, rau qhov cov cuav tsis tuaj yeem tsis sib haum xeeb txog lub key; thiab lub key muaj lawm ua ntej nws raug tshaj tawm, kom tus client tuaj yeem kaw ib yam dab tsi rau nws tus kheej thaum pib siv thawj zaug.

Tag nrho peb cov txiaj ntsig peb li nim no tsis muaj nuj nqis li, vim muaj ib qho xwb. Shor's algorithm uas khiav ntawm ib lub npub uas tau tshaj tawm rau sawv daws yuav tau txais nsec. Kev tsim seed (seed derivation) yog ib lub algorithm hauv ntiaj teb uas tsim los ntawm nsec. Yog li ntawd, tus neeg uas phá lub classical feem ntawd yuav tsim tau lub post-quantum feem ntawd los ntawm kev khiav HKDF uas txhua tus neeg khiav. Rau qhov kev txaus ntshai "harvest-now-decrypt-later" — uas yog qhov uas lub feature no tsim los tiv thaiv — lub key uas tsim los ntawm txoj kev no tsis ntxiv tau dab tsi li.

Txoj cai uas txhua yam raug raws li

Lub ML-KEM decapsulation key yuav tsum tau los ntawm entropy uas tsis tau txais los ntawm nsec thiab tsis tau raug xa mus los ntawm kev encryption uas tsuas yog classical xwb.

Qhov thib ob ntawm txoj cai ntawd ua haujlwm npaum li qhov thawj zag. Ib lub zais ntsiab lus uas tsim ntawm nws tus kheej uas tom qab ntawd raug muab txuas ua ke ntawm tus neeg siv cov khoom siv hauv ib lub NIP-44 xov xwm txhais tsis tau, yog ib qho kev ua tsis tau zoo uas ntxiv cov kauj ruam ntxiv: ib tus neeg yeem yuav sau qhov xov xwm ntawd hnub no thiab tau txais nws cov chaw tswj hwm (classical key) tom qab, thiab qhov hauv paus (root) yuav poob tawm. Vim li ntawd thiaj li cov kev mus ntawm qhov feem tom ntej yog li ntawd, thiab vim li cas tsis muaj ib qho twg uas yog "xa mus rau koj lwm lub khoom siv."

3.2 Kev ua kom tau root rau lwm tus neeg siv cov khoos

Kev tswj 3 ntawm Kab Teeb 2 — ib tus npe, ntau yam cuav — tsis tuaj yeem ua raws li kev txheeb xim lej ntawm no, vim tias lub ntsiab lus tseem ceeb yog tias lub chaw (key) tsis yog ib yam uas raug tsim los ntawm txhua yam uas cov cuav muaj tseg lawm. Nws yuav tsum tau ua raws li kev thauj mus los xwb, thiab muaj ib txoj kev xwb: tus neeg siv yuav thauj lub nympq1… sau lawv tus kheej

Lub hauv paus yog qhia ua nympq1… ntawm qhov nsec, thiab ib lub cuav thib ob txais nws uas raug tso rau hauv tib lub panel. Qhov ntawd yog txhua lub txoj kev ua haujlwm. Ib lub cuav uas tsis tau txais lub code ntawd ces tsis tuaj yeem koom nrog tau, uas raws li Nqe 4.2 qhia.

Kev xa ntawm tes yog ib lub hauv paus uas tau npaj tseg, tsis yog ib kauj ruam thawj. Lub caij lij choj hauv Nqe 3.1 hais tias lub root tsis tau pub mus dhau ntawm kev encryption uas yog classical-only xwb, thiab txhua lub tswv yim uas yuav ua rau qhov no ua tau taug kev tsis tas yuav ua (automatic) — xws li kev sib txuas (syncing) dhau ntawm ib lub relay, lossis kev ntim nws rau ntawm lub identity key — yuav ua rau qhov ntawd txhaum raws li qhov uas tau hais. Lub kauj ruam uas tus neeg siv ua yog qhov ua rau kev tiv thaiv thiaj li yog qhov tseeb.

Lub qauv tseg chaw rau ib txoj kev uas raug muag (wrapped path): ib qho ntaub ntawv tuaj yeem muaj ib daim ntawv uas muaj ntau yam uas raug muag, txhua yam yog ib qho AEAD blob hauv ib lub chaw (key) uas tus neeg siv tuaj yeem tsim rov qab tau hauv lwm yam cuab yeej — piv txwv li, yog ib qho passkey PRF output. Tsis muaj dab tsi xa tuaj ntawm qhov no hnub no, thiab tsis txog thaum muaj dab tsi ua li ntawd, ... nympq1… code yog txoj kev xwb mus dhau ntawm no. Nqe 10.1 qhia txog qhov nqi uas yuav tsum them.

Lub ntaub ntawv nws tus kheej nyob rau hauv nws qhov kev xaiv teeb tsa, nymchat-pq-root, thiab nws sib txuas raws li lwm cov qib uas ua. Txawm tias nws tsis muaj cov wraps los nws tseem ua hauj lwm uas tsim nyog: nws qhov muaj yog qhov uas lub tshuab thib ob paub tias qhov npe no muaj ib lub hauv paus lawm, uas yog qhov tiv thaiv nws tsis pub tsim ib yam lwm yam uas sib tw (Nqe 3.3).

Ntsiab lus tsim: ib pawg uas tsis siv tau lub nchuav tshiab.

Ntawd nymchat-pq-root pawg yuav tsum tsis yog yuav raug muab code rau lub ML-KEM key uas tau los ntawm tus root. Kab ntawd tsuas muaj ib daim copy ntawm tus root xwb, yog li ntawd kev kaw nws rau hauv ib lub key uas tau los ntawm tus root yog ib lub qhov rooj uas lub key nyob hauv lub thawv: tsis muaj tshuav twg yuav qhib tau nws, nrog rau lub tshuav uas sau nws los xij. Nws raug kaw nrog cov txheej txheem hluav taws xob (classically) — NIP-44 rau tus kheej — lossis tsis kaw li. Qhov no yog qhov chaw uas lub tswv yim tso cai rau kev tiv thaiv hluav taws xob xwb, thiab nws tuaj yeem ua tau: kab ntawd tsis muaj tus root nyob rau hnub no, tsuas yog qhov tseeb tias muaj ib yam zoo li ntawd xwb.

Txhua pawg kev teeb tsa lwm qhov tuaj yeem thiab yuav tsum siv lub key uas los ntawm lub hauv paus. Qhov no yog qhov tsis haum ntawm ib leeg xwb, thiab nws yog qhov tsis haum vim kev tig rov qab xwb, tsis yog vim qhov zog.

3.3 Kev tsim thiab kev txais yuav

Thaum pib, tuav ib lub npe uas ruaj khov, ib tug neeg siv ua hauj lwm raws li cov kauj ruam no:

  1. Nrhiav ib yam uas muaj lawm nymchat-pq-root sau tseg.
  2. Muaj daim ntawv lawm, thiab lub cuav no tuaj yeem qhib nws tau — txais yuav nws thiab tshaj tawm lub npe no uas muaj peev xwm tiv tau cov quantum tom qab.
  3. Muaj ntaub ntawv pom, thiab lub tshuab no tsis tuaj yeem qhib nws tau. — tsis txhob tsim ib lub root tshiab, thiab tsis txhob tshaj tawm dab tsi tsis hais li. Qhia tus neeg siv kom txuas lub cuav no los ntawm kev nkag mus rau... nympq1… Tus code los ntawm ib lub tshuab uas muaj nws lawm.
  4. Tsis muaj ntaub ntawv — tsim ib lub hauv paus, tso tawm cov ntawv, tshaj tawm, thiab qhia... nympq1… Muab code rau tus neeg siv ib zaug xwb kom lawv tuaj yeem khaws cia.

Kauj ruam 3 yog kauj ruam uas yooj yim yuav ua yuam kev, thiab nws yog qhov lajdom uas kev sib raug zoo ntawm cov kauj ruam raug sau tseg tsis yog cia rau txhua lub kev siv ua raws li lawv xav. Ob lub khoos uas txhua lub txiav txim siab tsim ib lub root yuav tsim tau ob lub root uas tsis sib txuas ntawm ib lub npe, thiab ntawd yog qhov teeb meem uas kev sib raug zoo ntawm cov kauj ruam no muaj los tiv thaiv.

4Kev tshaj tawm txog peev xwm

Lub pob ntug tsis tshoj ntawm chav txim pair uas tau tsim los raug tshaj tawm ua ib lub chaw. NIP-01 kev tshwm sim — hom 30078, muaj cov lus cim 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 txhais tau tias lub relay khaws ib qho event rau txhua (kind, pubkey, d-tag), yog li kev republish yuav hloov chaw rau qhov tshaj tawm yav tas los. Yog li ntawd, txhua lub identity muaj ib qho current record xwb, uas yog qhov ua rau kev “nrhiav Alice's key” ua ib qho kev nrhiav tau meej rau ib qho xwb, tsis yog ib daim ntawv teev uas yuav tsum tau tshuaj xyuas rov qab.

Kev sau npe yog kev cog lus. Lub event yog muaj kos los ntawm lub identity key, yog li ntawd qhov kev hais tias “lub ML-KEM key no yog ntawm no npub” muaj zog npaum li lub npub tus kheej. Kev hloov mus siv lwm txoj encapsulation key yuav tsum tau tsim tsheeb (forge) ib qho secp256k1 signature. Ib tug neeg uas xav tsim txom (attacker) uas ua tau qhov ntawd yuav tsis tas yuav xav txog KEM lawm.

Cov lus tshaj tawm yuav tag. Xya hnub NPE-40 Kev tas sijhawm, uas raug tso tawm tshiab txhua 24 teev, tswj daim ntawv qhia kom nws yog ib qhov lus txog ib tug neeg siv uas tseem tab tom ua haujlwm, tsis yog tus uas ua haujlwm tas lawm. Lub hauv paus nws tsis tas sijhawm li; tsuas yog qhov kev thov txog nws thiaj li tas sijhawm xwb.

Kev tshaj tawm uas tsis tau tshaj tawm ntxiv yog nyeem zoo nkaus li ib qho uas tsis tau muaj daim ntawv zais: cov neeg sib txuas xa NIP-44 zoo li qub, uas txhua tus neeg nkag mus tuaj yeem tau, thiab tus neeg siv yuav rov qhia txog kev sib pauv ntaub ntawv tom qab quantum thaum nws rov txuas lus dua, thaum nws tshaj tawm dua. Yog li ntawd, kev tsis hais lus ntev tshaj ib lub lim tyug yuav tsis muaj kev tiv thaiv rau cov lus uas xa thaum lub sij hawm ntawd — lawv yog cov lus uas siv kev zais zoo li qub xwb tsis yog kev zais tiv thaiv quantum — thiab tsis muaj dab tsi ntxiv. Kev xa lus tsis raug hloov pauv, tsis muaj dab tsi uas tau txais lawm uas yuav ua rau tsis nyeem tau, thiab tsis tas yuav ua dab tsi thaum rov qab los.

Qhov kev tsis sib raug zoo ntawd yog qhov rau kev kawg lub sijhawm, tsis yog qhov tshwm sim ntawm nws. Yog tsis muaj qhov ntawd, ib daim ntawv qhia yuav nyob ntev tshaj lub chav uas nws siv: ib lub khoom siv uas raug so, rov tsim tshiab, lossis muaj nws lub hauv paus hloov yog yuav tseg ib yam lus qhia tsis tu ncua kom npog rau ib lub chav uas tsis muaj leej twg tuaj yeem muaj lawm, thiab cov lus uas xa mus ntawm nws yuav ploj mus yam tsis muaj qhov yuam kev rau ob sab. Peb hnub yog qhov txwv ntawm lub sijhawm ntawd, thiab ua rau cov relay tuaj yeem tshem tawm daim ntawv ntawd lawv tus kheej xav li tsis txhob vam ntshai rau cov neeg siv pom.

Lub field tseem ceeb qhia nws tus qauv. Lub teb yog pk2, thiab tus lej ntawd yog ib feem ntawm daim ntawv cog lus, tsis yog kev ntxias xwb: nws qhia txog qauv payload uas lub chav tswv yim (key) ntawd tuaj yeem siv tau. Ib tus neeg nyeem uas tsis paub txog qhov chaw ntawd yuav xav tias “Nymchat client, tsis muaj post-quantum key” thiab yuav xa NIP-44 li qub, uas txhua tus login tuaj yeem nyeem tau. Qhov ntawd yog qhov kev thiaj li tsis ua tiav uas yog raug, thiab nws tseem ceeb uas yuav tsum tau hais raws li qib uas cov lej qauv no muaj los tswj hwm: qhov kev thov peev xwm uas tsis tau paub yuav tsum tsis tau kev tiv thaiv, tab sis tsis txhob ua rau tsis tau kev xa xov. Ib lub chav tswv yim uas ib tus neeg tsis tuaj yeem siv tau yuav tsis zoo dua tsis muaj lub chav tswv yim li, vim tias cov xov uas nws tsim tawm los yuav ploj mus yam tsis muaj qhov yuam kev rau ob sab.

4.1 Kev tsis muaj muaj ntsiab lus, thiab muaj peb qhov ntsiab lus.

Ib yam me me tab sis tseem ceeb: qhov tshaj tawm yog raug tso tawm los ntawm txhua Nymchat client, tsis yog cov uas muaj peev xwm post-quantum xwb, thiab qhov chaw tso key (key field) tsis yog ib yam uas yuav tsum muaj. Qhov ntawd ua rau muaj peb yam xwm txheej (states) uas tsis zoo ib yam, tsis yog ob yam xwb:

Tau pomtxhais tau tiasXa cwj pwm
Lus tshaj tawm nrog ib lub nplta Nymchat, muaj peev xwm tiv thaiv tau quantum tom qab Sibem
Kev tshaj tawm, tsis muaj lub tes li Nymchat, tsuas yog classical xwb — tsis muaj post-quantum, los yog ib lub cuav uas tseem tsis tau txuas rau lub hauv paus ntawm tus kheej daim ntawv tso cai. NIP-17 qub
Tsis muaj kev tshaj tawm Neeg siv tsis tau paub. Nws yuav yog txhua tus neeg siv Nostr lossis Bitchat. Classical, ntxiv rau ib lub kev npaj sib haum xeeb

Kev muab kab thib peb los ua ke ntawm kab thib plaub yuav yog ib qhov poob loj heev. Kev tshaj tawm tsis muaj chaw (keyless announcement) yog ib daim ntawv uas muaj kos uas qhia tias tus xa yog tus uas siv Nymchat, uas ua rau txoj kev xa ntawv tsis tas yuav tsum tau ntxiv ib qho kev "wrap" thoob ntawm cov kev sib txuas (cross-protocol) uas tsis tau paub tseeb uas nws yuav tsum tau ntxiv yog tias nws tsis tuaj yeem txheeb xyuas tus neeg ntawd.

4.2 Ib lub khoom siv uas tsis qhib tau lub hauv paus yuav nyob ntsiag to.

Kev tshaj tawm yuav hloov tau: ib qho xwm txheej rau txhua lub npe, qhov sau kawg yog qhov raug. Qhov ntawd yog qhov ua rau kev tsim (design) ntawm ib qho ntaub ntawv (single-record) ua hauj lwm tau, thiab nws yog qhov ua rau ib lub tshuab uas tsis muaj kev txuas muaj kev pheej hmoo yog nws tshaj tawm. Ib lub tshuab uas tshaj tawm ib lub coding (key) uas nws tau tsim rau nws tus kheej yuav hloov tshem cov ntaub ntawv tiag thiab ua rau txhua tus neeg (peer) pib siv coding uas lwm cov tshuab tsis tuaj yeem qhib tau.

Yog li, ib lub cuav uas paub tias muaj ib lub hauv paus tab sis tsis tuaj yeem qhib tau nws, nws yuav tsis tshaj tawm dab tsi li. Nws tsis yog tsis ua hauj lwm thiab nws tsis yog raug kaw ntawm lub application: nws tseem nyeem txhua kab lus uas nws muaj cov chaw (keys) rau thiab tseem xa lus li qub, thaum nws tab tom kom tus neeg siv txuas nws rau. Kev ntsiag to yog qhov hauj lwm uas yog rau ib lub cuav uas tsis tuaj yeem hais tau txog tus kheej (identity).

5Kev tshawb nrhiav thiab kev txiav txim txog kev xa

Cov neeg siv tau kawm paub cov keys ntawm lwm tus neeg siv lõj dua ob hom. Kev tso cai ntev (standing subscription) yuav tswj cov neeg uas tus neeg siv sib tham tiag tiag nrog — xws li cov kev sib tham qhib thiab cov tswv cuab hauv pab pawg — kom lawv cov lus tshaj tawm tuaj li cov xwm txheej li qub. Rau tus neeg uas pom thawj zaug, muaj ib qho kev nug ib zaug xwb (one-shot query) uas yuav ua thaum lub sijhawm xa lus, tswj tau hauv 2.5 feeb; yog tias tsis tau lus, cov lus ntawd yuav mus raws li txoj kev qub (classical), uas yog qhov kev ua uas muaj los ntawm yav dhau los ua ntej lub post-quantum raug ntxiv mus, tsis yog ib qho kev tsis ua tau tshiab.

Qhov tshwm vim tsis tau yog raug khaws cia rau 10 feeb xwb, tsis yog mus ib txhis. Ib tug neeg siv uas txuas ib lub tshuab tshiab, lossis hloov los ntawm kev nkag mus siv browser-extension mus rau ib lub chav txim hauv tshuab (local key), yuav dhau los ua tus uas muaj peev xwm siv post-quantum thaum tab tom tham, thiab ib qhov teb "tsis tau" uas raug khaws cia mus ib txhis yuav ua rau lawv nyob ntawm kev encryption qub mus txog thaum qhov tshaj tawm tag.

5.1 Vim li cas tsis muaj kev tsim txom ua rau qib qis zog

Kev txiav txim siab txog kev xa mus tshuav ib lo lus nug xwb:

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

Tsis muaj kev sib tham txog peev xwm, tsis muaj daim ntawv teev cov algorithm uas txhawb nqa, thiab tsis muaj qhov chaw uas tus neeg tsim txom tuaj ntxias tau kom muaj kev txhawb nqa uas tsis zoo dua. Tshuav qhov tshaj tawm. yog Kev sib tham, thiab nws raug muaj sig. Qhov kev ua tsis tau zoo ntawm ib qho tshaj tawm uas raug tshem tawm los yog raug tiv thaiv yog tias cov xov cua mus li qub — qhov xwm txheej uas tsis hloov thaum ua ntej lub feature no — tsis yog tias ib qho xov cua hibrid raug ua rau qis mus ua yam uas yuav ua tau txoj kev dag.

Qhov ntxhais los kuj yog raug thiab tseem ceeb dua: ib tug neeg siv xa hybrid xwb thaum nws tuav ib lub nøj, thiab kev tuav lub nøj ntawd yog qhov tseeb tias tus neeg tau txais tuaj yeem qhib tau nws. Tsis muaj lub xwm txheej twg uas ib tsab xov xwm raug xa mus tom qab lub caij nyoog quantum rau ib tug neeg uas tsis tuaj yeem nyeem tau nws.

6Kev tsim kev sib txuas

Nymchat tsis hloov chaw rau NIP-44. Nws npog nws. Ib lub NIP-44 ciphertext uas tsis hloov pauv yog qhov hauv paus, thiab ML-KEM tsim ib qho AEAD sab nraum ntawm nws:

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)

Ob cov lus zais (secrets) ob leeg tseem yuav tsum tau rov nrhiav tau thiaj li nyeem tau cov lus: qhov sab nraum tsuas tso tawm ib daim NIP-44 ciphertext xwb, thiab kev qhib ntawd yuav tsum tau siv ECDH qub. Ib tus neeg qhib (adversary) qauv quantum uas tsoo secp256k1 yuav tau lub chav (key) sab hauv thiab tseem yuav ntsib ML-KEM; kev tsoo ML-KEM yuav tshem tawm qhov sab nraum thiab tso cia NIP-44 nyob tseg. Txhua qhov tso tawm muaj nws qhov chaw rau nws tus kheej:

Kev encapsulation yog qhov uas tau ua tshiab rau txhua tsab xov xwm. Tus neeg txais lub ML-KEM key yog qhov uas siv tau ntev, tab sis txhua tsab xov xwm muaj ib lub ciphertext uas tsis sib txuas lus thiab vim li ntawd muaj ib yam uas tsis sib txuas lus... kem_ss. Qhov ntawd yog qhov ua rau kev tsim nonce los ntawm kev txiav txim, tsis yog kev ua nws kom tsis tau raug, ua rau nws zoo: ChaCha20-Poly1305 raug ua rau tsis muaj kev ruaj ntseg yog siv (key, nonce) ib pab dua, thiab ntawm no tus key nws tshiab rau txhua kab lus, yog li ntawd tsis muaj ib pab twg yuav rov xov dua.

6.1 Vim li cas cov qauv nyob sib ncөө

Qhov lwm txoj kev yog muab ob yam lus zais cia sib txuas ua ib lub chaw tswj kev sib tham ib leeg thiab muab ntawd rau NIP-44:

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

Kev tsim ntawd yog zoo rau kev tseg lus tsis pub neeg pom. Nws muaj ib qho teeb meem ntawm txoj kev tsim: nws xav tau ecdh_x, qhov x-coordinate raw ntawm ECDH output, ua key material — thiab ib lub browser extension (NPE-07) los yog tus neeg kos deb (NPE-46) tsis rov xa cov nqi ntawd rov qab li. Nws ua NIP-44 rau tus uas hu thiab xa ib lub ciphertext rov qab, uas yog lub hom phiaj tseem ceeb ntawm kev khaws lub key nyob rau qhov chaw uas lub application tsis tuaj yeeb nrhiav tau.

Kev sib ntxiv cov zais cia yog li ntawd yuav tsis suav nrog txhua yam kev nkag mus (login) uas tuav lub chav tseem ceeb ntawm tus kheej (identity key) hauv ib tus kos (signer), uas txhais tau tias yog cov neeg siv uas ceev faj tshaj plaws, thiab tsis muaj kev ua haujlwm zoo npaum li cas rau kev tsim chav tseem ceeb (key derivation) uas tuaj yeem hloov tau qhov ntawd. Kev tsim cov sab (layering) yuav tshem tawm qhov kev tso siab rau ib yam: NIP-44 yuav nyob txhua yam thiab raug tsim los ntawm yam twg uas tuav lub chav tseem ceeb ntawm tus kheej, suav nrog tus kos, thaum ib sab ntawm KEM yog raug tsim los ntawm lub recovery code uas tus neeg siv tuav ncaj qha. Kev nkag mus ntawm tus kos yog cov neeg koom tes post-quantum qub nyob rau ob sab.

Tus nqi yog bandwidth, thiab nws tsis yog tsawg. Lub ML-KEM ciphertext yog 1,088 bytes thiab raug ntxiv rau txhua txhua lus, uas yog base64url-encoded mus rau 1,451 tus ntawv; lub AEAD sab nraud ntxiv ib lub Poly1305 tag uas muaj 16-byte thiab ua rau lub NIP-44 payload uas nws bao nthuav dav ntxiv ib thib peb. Ib lub lus uas muaj 50 tus ntawv loj hlob ntawm 176 bytes mus rau 1,712, thiab ib lub lus uas muaj 2,000 tus ntawv loj hlob ntawm 2,820 mus rau 5,238. Lub qis tshaj plaws yog li 1.5 KB ntawm txhua txhua lus txawm tias lub lus ntawd luv npaum li cas los xij, uas yog tus nqi ntawm kev encapsulating tshiab txhua zaus zami ntawm kev siv cov shared secret uas muaj lawm.

6.2 Cov payload uas qhia nws tus kheej

Ntawd pq2. Prefix ua rau kev tsim cov tshuab tshiab tshwm sim thaij thaij: nws muaj lus piav nws tus kheej, yog li ntawd ib tug neeg siv yuav xaiv kev qhib cov ntaub ntawv los ntawm kev saib cov ntaub ntawv, tsis yog ntawm kev ntseeg ib lub cim lossis nco qab tias tus lwm tus txhawb nqa dab tsi. Ib tug neeg nyeem uas tsis paub lub prefix yuav tsis tuaj yeem qhib cov ntaub ntawv ntawd, tsis yog nyeem yuam kev, thiab cov xov xwm uas raug kaw tseg ua ntej ob tog tau ua post-quantum yuav tseem nyeem tau li NIP-44 qub yam tsis tas yuav hloov pauv.

Kev tsis lees txais uas tsis qhia tawm

Kev qhib (decapsulation) ML-KEM yog tsim los kom tsis txhob ua yuam kev: yog muaj ciphertext uas tsis raug, qhov Fujisaki-Okamoto transform yuav muab ib lo lus zais (secret) uas yog pseudo-random raws li tswj hwm, tsis yog muab ib qho xov xwm qhia tias muaj teeb meem (error). Yog li ntawd, ib lub chav tsis yog yuav tsis tshwm sim ntawm KEM qib li—nws yuav tshwm sim ua ib qho HMAC failure hauv NIP-44, uas yog ib txoj kev zoo nkaus li thaum lub chav tsis yog (classical key) tshwm sim thiab. Cov neeg hu (callers) tsuas xav tias ob yam ntawd yog ib yam, yog li ntawd qhov tsis ua tau yuav tsis muaj dab tsi txawv ntawm ob yam ntawd. Nws kuj yog qhov ua rau cov npe uas tau xaiv hauv Section 9.1 ua tau zoo: ib tug neeg siv (client) yuav sim txhua lub chav raws li nws tuaj, thiab cia NIP-44 qhia tias lub twg yog qhov yog.

6.3 Ob sab ntawm daim ntim khoom

A NPE-17 lus xov xwm ntawm tus kheej yog ib NPE-59 Kev ntim khoom plig: ib tsab xov uas tsis muaj kev tshaj tawm, raug kaw rau hauv tus xa lub chaw npe (kind 13), tom qab ntawd raug ntim rau hauv ib lub chaw thauj uas tsim rau txhua tsab xov (kind 1059). Thaum muaj kev nkag mus (login) uas tuav lub chaw npe ncaj qha, Nymchat muab ob sab tshoov ntawd sib txuas ua ke, txhua sab muaj nws tus kheej lub pob (encapsulation).

A hybrid NIP-59 gift wrap: the rumor sealed under the sender's key, that seal wrapped under a per-message ephemeral key, both layers carrying a NIP-44 ciphertext inside a post-quantum AEAD. kind 1059 — wrap  ·  signed by a per-message ephemeral key content = pq2.<kem_ct>.<aead>   inner = NIP-44(eph, recip)   outer key = ML-KEM(recip) kind 13 — seal  ·  signed by the sender's identity key content = pq2.<kem_ct>.<aead>   inner = NIP-44(sender, recip)   outer key = ML-KEM(recip) rumor — unsigned the message: kind, content, tags, author pubkey unsigned on purpose — a signature would be portable proof
Ob chav tiv thaiv cov ntaub ntawv yog hibrid, txhua chav muaj ML-KEM encapsulation uas tsis sib txuas. Chav sab nrauv yog siv ib lub chaw khaws ntaub ntawv uas siv ib zaug xwb, yog li ntawd kev npog tsis qhia tias leej twg yog tus xa.

Ib tus neeg tso npe thaum login tau txais thawj qauv sab nraum xwb. Tus seal yog tsim los ntawm tus neeg tso npe li NIP-44 txoj kev siv thaud — tus application tsis tau pom lub key uas tsim nws — yog li ntawd nws tsis tuaj yeem muaj kev sib txuas (hybridized) ntawm qhov chaw ntawd. Qhov no tsis pab tiv thaiv qhov kev tsim txom uas peb tab tom tham: tus seal tsuas yog yuav tau pom los ntawm qhov wrap xwb, thiab qhov wrap yog qhov uas tus recorder khaws cia. Ib tus neeg tsim txom uas tuav cov traffic uas raug khaws cia yuav tsum tau txim (break) ML-KEM ua ntej tus seal thiaj li yuav pom tau los tsim txom.

7Cov lus pab pawg thiab kev bao nyob tsis tiav

Ib lub lus xov xwm rau pab tsis yog ib hom ciphertext xwb. Nws yog ib hom plaintext uas xa mus rau txhua tus tub cawg, txhua daim lus raug muab tso rau hauv ML-KEM key ntawm tus neeg ntawd. Ib tug tub cawg uas tau tso tawm key lawm yuav tau txais hybrid wrap; tus uas tsis tau tso tawm yuav tau txais classical wrap.

Qhov no tsim tau ib qho teeb meem xisaum uas tsis yog 8/10 yog tiv thaiv tau. Ib tug neeg tawm tsam yuav tsum muaj ib daim plaintext qub uas zoo ib yam hauv tag nrho peb feem, yog li ntawd, cov lus tsuas yog tiv thaiv tau yog tias txhua lus qhia yog.

Nymchat yog li ntawd, nws taug qab qhov kev tiv thaiv ntawm txhua xov xwb thaum lub sijhawm xa mus rau sawv daws — tus lej no tsuas paub tau thaum cov kev tiv thaiv tseem tsim tsis tas — thiab lub cim qhia tias “tiv thaiv tau cov tshuab quantum rau 8 ntawm 10 tus neeg” tsis yog hais tias xov xwb ntawd tiv thaiv tau tag nrho. Thaum tsis muaj tus lej qhia, uas yog qhov tshwm sim feem ntau rau ib... tau lawm lus ceeb toom pab pawg (yog tus xa xwb thiaj li suav tau tus neeg tau txais), qhov interface qhia tias yog kev tiv thaiv npua metade xwb, tsis yog tag nrho. Kev hais tias muaj kev tiv thaiv tag nrho ntawm xwb lub copy ntawm tus kheej xwb yuav yog kev hais ua ntau dhau txog lub lus ceeb toom tag nrho.

7.1 Lub tshuab tiv thaiv qhia dab tsi

Lub tiv thaiv qhia qhov tseeb txog lus xov xwm, tsis yog txog lub software uas tau xa nws mus:

Qhov kev txiav txim yog raug sau tseg thaum lub xov xwm tau raug kaw (sealed) tsis yog them tshiab los ntawm qhov uas ib tug neeg hais qhia tom qab. Cov ciphertext uas muaj lawm tsis tuaj yeem raug tiv thaiv zoo dua qub, thiab ib lub interface uas rov tsim cov xov xwm qub raws li qhov tshaj tawm tshiab yuav yog kev hais lus tsis tseeb txog cov bytes ntawm ib lub relay.

Cov cai ntawm pawg saum toj no yog ntxiv rau qhov no tsis yog hloov yog nws: ib tsab lus hauv pawg yuav raug tiv thaiv tag nrho thaum txhua tus tswv cuab muaj nws, thiab ib tsab lus hauv pawg uas tau txais tab sis tsis muaj kev tiv thaiv yuav qhia tias yog "tsis tiav".

8Cov ntawv uas tso npe rau koj tus kheej

Ntau yam uas ib tug neeg siv (client) khaws cia yog raug muab tshuaj (encrypted) rau tus neeg siv tus kheej tus npe: cov kev teeb tsa uas muaj kev sib txuas (synced settings), daim ntawv kev sib tham (conversation list), cov chaw zais hauv pab pawg (group keys), thiab cov ntawv sau tseg (message archive). Cov no muaj ntau yam txog ib tug neeg siv dua li ib lub ntsiab lus (message) txhua yam, yog li ntawd, yog tso rau lawv tsis muaj kev tiv thaiv (classical), lawv yuav ua rau lawv yog qhov uas tsis muaj zog tshaj plaws hauv txhua yam uas raug khaws cia, txawm tias cov ntawv (messages) tau raug tiv thaiv zoo npaum li cas los xij. Lawv siv tib lub txoj kev sib txuas (hybrid) uas raug muab tso rau hauv tus neeg siv tus chiv keeb (root-derived key) tus kheej — nrog rau ib qho tsis zoo uas tau piav qhia hauv Nqe 3.2, yog... nymchat-pq-root lub pab nws tus kheej, uas tsis tau kaw tau hauv ib lub cuab yeej uas tsuas yog nws xwb thiaj li tsim tau.

Cov ntaub ntawv tseg no yog qhov uas tswv yim tseem ceeb tshaj plaws. Ib qho teeb tsa settings lossis ib kab hauv cov ntaub ntawv khub tseg nyob rau ib qho chaw tau ntau xyoo, uas yog yam uas cov neeg phem uas sau ntaub ntawv tam sim no kom txiav txim tau tom qab nrhiav sau tseg — tshaj plaws li txhua txhua lus uas tsis ntev mus yuav ploj ntawm tus neeg siv lub siab.

Ib qho kev txwv tswj hwm qhov kev tsim ntawm no, tsis yog lub ntsiab lus. Ib daim ntawv uas muaj koj tus chaw thov xa rau koj tus kheej yuav tsum tau nyeem tau los ntawm txhua cov khoom siv ntawm lub account, yog li txhua lub khoom siv tshaj tawm tias nws tuaj yeem qhib dab tsi hauv daim ntawv lis uas nws qhia rau, thiab lub account sau tsuas yog yam uas txhua lub khoom siv tuaj yeem nyeem tau xwb. Kev sau dab tsi lwm yam yuav ua rau ib lub khoom siv tsis tuaj yeem nkag mus rau hauv nws cov kev teeb tsa xwb — qhov kev tsis ua hauj lwm uas tsis muaj suab uas Section 3.2 tiv thaiv tau los ntawm lwm txoj hauv kev, los ntawm lwm qhov kev.

Ib qho kev txwv uas tsim nyog hais tawm

Ib lub khoom siv uas tuav lub npe (identity) tab sis tsis tuav lub hauv paus (root) yuav tsis qhib tau dab tsi uas raug kaw rau lub tes tswj uas tawm los ntawm lub hauv paus, suav nrog nws tus kheej cov kev teeb tsa. Qhov ntawd yog ib qho tshwm sim uas tau tsim tseg cia, tsis yog kev ua tsis tswj hwm, thiab nws yog vim li cas Section 3.3 thiaj muaj cov lus qhia rau lub khoom siv los txuas (linking) zami ntawm kev tsim (minting) ib lub hauv paus tshiab: ib lub hauv paus thib ob yuav tsis ua rau cov ntaub ntawv (blob) ntawd nyeem tau, nws tsuas yuav faib cov ntaub ntawv tes tswj ntawm lub npe ntawd ua ob feem xwb. Tsis txog thaum tus neeg siv txuas nws, lub khoom siv tseem yuav ua haujlwm mus — nws nyeem cov dab tsi uas nws muaj tes tswj thiab xa mus nrog txoj kev li qub.

Ib lub device uas ua haujlwm rau ib lub browser extension lossis ib lub remote signer (NIP-46) tsis muaj nsec los tsim (derive), tab sis nws muaj lub recovery code, thiab raws li kev tsim txhij txhua chav (layered construction) ntawm Daim Ntawv 6.1, ntawd yog txhua yam uas qhov post-quantum xav tau: tus signer tsim lub NIP-44 layer li nws tau ua tsis tu ncua, thiab tus client tsim lub qhov sab nraum (outer layer) tus kheej. Kev login zoo li ntawd yog ib qho kev koom nrog tsis tshua tshwj xeeb nyob rau ob sab.

9Kev tig

Ntawd epoch Tus lej xyuas hauv kev tsim (derivation) yog qhov ua rau kev hloov pauv (rotation) tswj tau yam tsis tas muaj cov ntaub ntawv tswj hwm (key material) tshiab. Kev nce tus lej ntawd yuav tsim tau ib pab tswj hwm (keypair) tshiab los ntawm tus keeb kwm (root) tib yam ntawd thiab ib zaj lus tshaj tawm tshiab; cov neeg sib raug zoo yuav tau txais cov tswj hwm tshiab los ntawm cov ntaub ntawv uas hloov tau. Yog li ntawd, kev hloov pauv tsis tas kom tus neeg siv sau dab tsi dua: tus keeb kwm tsuas yog raug tsim ib zaug rau txhua tus neeg siv, thiab lub sij hawm (epoch) yog qhov uas ua rau kev hloov pauv ntawd tshwm sim.

9.1 Cov epoch qub raug khaws cia, thiab tsis muaj dab tsi raug rov encrypt tshiab.

Tsis muaj dab tsi raug sau dua thaum chav tswj (key) hloov pauv. Ib tug neeg siv (client) tsim cov lus uas yuav qhib tau los ntawm epoch tam sim no mus rau epoch &minus; 3, yog li ntawd ib tsab xov uas raug kaw qis zaug ua ntej kev hloov pauv tseem qhib tau nrog chav tswj (keypair) uas yog lub sijhawm tam sim no thaum nws raug xa mus.

Lub sij hawm ntawd yog qhov uas ua rau kev hloov pauv muaj kev nyab xeeb: tsis muaj nws, txhua qhov kev hloov pauv yuav ua rau txhua yam uas tab tom xa mus raug tsis muaj kev sib txuas. Txhua yam uas tau kaw tseg lawm yuav tseem nyeem tau mus txog thaum lub npe (identity) ntawd kawg, vim tias ib tsab xov xwm uas tus neeg siv tsis tuaj yeem qhib tau lawm yuav tsis zoo rau lawv tshaj ib yam uas kev tiv thaiv tsis tau txhim kho rov qab mus (Nqe 10.5).

10Dab tsi uas qhov no tsis tiv thaiv

Ib daim ntawv uas tsuas yog teev cov uas qhov tsim (design) ua tau xwb tsis yog qhia txog ib lub system, thiab kev hais dhau hwv txog qhov nyab xeeb hauv ib lub interface yog ib yam uas phem dua kev tsis hais txog nws. Cov lus hais tom ntej no tsis nyob hauv qhov uas lub tsim (construction) no tiv thaiv tau.

10.1 Lub hauv yog ib yam tsis pub neeg paub thib ob, thiab yog poob nws ces tsis rov tau.

Qhov no yog qhov nqi tiag tiag ntawm qhov tsim no. Qhov kev txwv hauv Nqe 2 tias ib tug neeg siv yuav tsum muaj ib yam xwb uas yuav tsum khaws cia tsis tuaj yeem ua tau: nsec xwb tsis tsim tau lub post-quantum key rov qab, vim tias qhov tseem ceeb tshaj plaws yog tias tsis muaj cov nqi pej xeem lossis lwm yam tsis tshua luag uas tuaj yeem qhia tau nws. Yog tias tsis muaj lub tshuab twg tuav lub hauv paus (root) thiab tsis muaj dab tsi hauv cov wraps ntawm Nqe 3.2 qhib tau, cov ntaub ntawv uas raug kaw rau lub root-derived key yuav tsis thiaj li rov tau los tau. Tsis muaj escrow thiab muaj kev tsim mus rau kev tsis muaj lub tswj hwm twg uas tuaj yeem tuav tau ib yam xwb.

Nrog kev xa ua tes ua txoj kev tsuas muaj, qhov no nws hnyav dua qhov peb pom thaum pib. Ib tug neeg siv uas tsis tau luag... nympq1… code nyob qhov twg los xij muaj ib copy ntawm nws xwb, saum ib lub device xwb, thiab kev po nsec tsis pab tau; ntawd yog lub yam ntxwv uas txhua lub tswv yim tsim los ntawm.

Txhua txoj kev uas muaj ntxiv tom qab yuav tsum tau dhau ntawm qhov kev uas txoj kev manual ntawd tau dhau. Ib tug neeg tsim txom yuav tsim txom ntawm qhov kev uas yooj yim tshaj plaws, yog li ntawd, ib lub tswv yim yuav muaj nqis raws li qhov kev rov qab tau uas tsis zoo tshaj plaws — piv txwv li, ib lo lus (passphrase) uas tsis nco tau yooj yim, yuav ua rau txhua yam muaj nqis raws li qhov lo lus ntawd muaj nqis, thiab cov ntawv uas raug koom (wrapped row) yog qhov uas tus neeg tsim txom uas "khaws tam sim no thiab txheeb tes tom qab" yuav sau cia thiab ua hauj lwm offline thaum lawv xav ua.

10.2 Kev lees paub tus neeg, uas txawv ntawm kev tiv thaiv cov ntaub ntawv tsis pub lwm tus paub

Txhua lub signature hauv Nostr yog Schnorr ntawm secp256k1, thiab qhov ntawd tsis hloov ntawm no. Ib tug neeg phem uas muaj lub quantum computer yuav tsim tau cov signature tsis tseeb thiab ua raws li ib tug neeg siv nyob rau lub sij hawm tiag tiag. Qhov uas kev hloov pauv tes hybrid (hybrid key exchange) tiv thaiv yog "harvest-now-decrypt-later": ib tug neeg tsim txom uas sau cov ntaub ntawv hnub no yuav tsis tuaj yeem nyeem tau nws tom ntej. Nws tsis ua rau ib tsab xov xwm tsis hais yuav tsim tsis tau rau ib tug neeg phem uas twb muaj lub tshuab ntawd lawm. Kev sib txawv no yog muab mus rau hauv cov application nrog lub siab xav — lub cim qhov chaw kaw rooj (padlock) qhia txog authentication, lub me tiv thaiv (shield) qhia txog confidentiality, thiab lawv yog cov cim (glyphs) sib txawv vim tias ib tsab xov xwm tuaj yeem muaj ib yam yam tsis muaj qhov lwm yam.

Nws tseem txwv qhov uas cov lus tshaj tawm hauv Nqe 4 yuav cog lus tau. Kev txuas ntawm ib lub npub thiab ib lub ML-KEM key yog ib lub secp256k1 signature, yog li tus neeg tawm tsam uas tsim tau cov ntaub ntawv tsis yog tiag ntawd yuav hloov tau mus siv nws tus key ntawm nws tus kheej. Kev ruaj ntseg ntawm cov ntaub ntawv tiv thaiv tus neeg tawm tsam yav tom ntej tsis yog ib yam nrog kev paub tias nws yog tiag tiv thaiv ib tug neeg tawm tsam.

10.3 Metadata

Kev ntim khoom plab tsis cia tus p lub cim, hom, thiab lub sijhawm ntawm lub xov xwm sab hauv. Nws tsis cheb tias muaj ib qho xwm txheej tshwm sim, nws qhov loj, los yog thaum twg ib lub relay tau txais nws. Kev tshawb fawb txog kev sib txuas lus (traffic analysis) tsis tau raug tswj hwm los ntawm qhov tsim no.

10.4 Lub mesh offline

Kev thauj Bluetooth mesh ntawm Nymchat yog ib lub protocol txawv uas muaj nws tus handshake rau nws tus kheej, thiab nws tsis raug piav los hauv zaj haujlwm no. Cov xov xwm xa dhau ntawm lub mesh yog cov xov xwm qub (classical).

10.5 cov lus twb xa lawm

Cov ciphertext uas raug sau tseg thaum ib sab tseem yog classical, yuav nyob zoo li classical mus ib txhis. Nws twb muaj lawm thiab tsis tuaj yeem hloov los khaws tseg tshiab tau. Kev tiv thaiv yuav pib ntawm cov lus uas ob sab muaj cov post-quantum keys lawm, tsis yog thaum lub feature tau muab tso rau.

11Cov kev xaiv uas tau ntsuas

Kev mus txogVim li cas tsis tau?
Tsim lub post-quantum key los ntawm lub identity key. Tsis lees mus. Qhov kev tsim yog ib lub algorithm zej zog rau nsec, thiab ib tug neeg tsim txom quantum yuav tau rov nrhiav tau nsec los ntawm npub uas tso tawm, yog li kev tsim txom qhov classical yuav ua rau qhov post-quantum raug tsim txom nrog nws. Nws tau daws txhua qhov teeb meem kev faib hauv tsab ntawv no thiab tsis tiv thaiv tau leej twg. Nqe 3.1.
Xa root rau lwm cov tshuab ntawm tus neeg siv dhau NIP-44 Raug tsis lees txais vim tib lub ntsiab lus xwb tab sis hloov tshiab daim khaub ncaws. Ib lub hauv paus (root) uas raug xa mus los ntawm kev encryption uas yog classical xwb yuav raug rov tau txais los ntawm txhua tus uas khaws cov lus ntawd cia thiab qaug nws lub key tom qab, uas yog tus uas lub hauv paus no tsim los tiv thaiv.
Ib pauv ML-KEM keypair uas raug tsim nyob ntawm nws tus kheej rau txhua txhua lub tshuab Tsis tau txais. Cov khoom siv yuav muaj cov chaw tso qab (decapsulation keys) txawv ntawm ib leeg, thiab ib tsab lus tshaj tawm uas tuaj yeem hloov tau rau txhua tus neeg (identity) yuav tsis tau muab txhua yam mus. Cov neeg sib txuas yuav encrypt rau lub chaw tso qab (key) uas tau tshaj tawm kawg, thiab txhua lwm cov khoom siv yuav tsis tuaj yeem nyeem tau qhov tshwm sim ntawd. Ib lub hauv paus (root) rau txhua tus neeg, uas raug hloov pauv los ntawm cov kev (paths) hauv Ntu 3.2, yog qhov uas tiv thaiv tau qhov ntawd.
Muab lub root tiv hauv PIN Tsis lees mus. Ib lub PIN uas muaj plaub tus lej yog xeev 13 bits rau ib tus neeg uas tsis yog online uas tuav cov wrapped row. Kev muab nws tso ntawm ob txoj kev uas muaj 256-bit yuav ua rau neeg nkag siab yuam kev txog qhov uas qhov wrapped uas tsis zoo tshaj plaws muaj nqi.
Nthuav dav lub npub kom nqa tau ob lub key 1,184 bytes tsis yog ib qho chaw txheeb xyuas uas neeg faib tau, thiab nws yuav ua rau txhua lub Nostr client uas muaj tam sim no tsis nyeem tau (parsing) cov chaw (address) uas tau teev tias yog 32 bytes.
Ib lub kev pab cuam directory tseem ceeb Rov qhia rov qab lub hwj chim uas lub network tsim los kom tsis txhob muaj. Tus twg teb qhov kev nrhiav (lookup), tus ntawd yuav txiav txim siab tias leej twg tuaj yeem nyeem tau cov xov xwm.
Ntxiv lub key rau txhua xov xwm Tsis daws tau dab tsi: tus neeg xa xav tau... tus neeg tau txais lub chìa rau ua ntej thawj lus, uas yog qhov tseeb tiag rau qhov tsis muaj lus yav dhau los uas tuaj nqa nws.
Kev sib tham cov peev xwm hauv band Tsim tau ib qho chaw uas ua rau kev ruaj ntseg qis mus. Ib tug neeg uas tsis zoo uas tuaj yeem tshem tau ib lub cim (capability flag) yuav txhawb kom siv txoj kev qub.
Post-quantum xwb, tsis muaj feem classical. Tso tseg ntau xyoos ntawm kev tshawb fawb ntawm secp256k1 los hloov pauv mus rau ib qauv tshiab heev. Ib qauv hibrid yuav tsis ua hauj lwm xwb yog tias ob leeg tsis tiav.

12Kev tsim txiaj sib raug zoo

Nymchat xa ob yam kev ua kom tiaj ntawm kev tsim no — ib yam hauv JavaScript rau lub web application, ib yam hauv Dart rau cov mobile applications, suav nrog ib qho ML-KEM-768 port uas tsim los ntawm pib. Kev muaj ob yam kev ua ntawm ib yam nkaus xwb feem ntau yog ib yam teeb meem, yog li ntawd lawv raug muab los sib piv rau ib leeg tsis yog ntseeg tias lawv yuav sib haum xeeb.

Kev tsim Dart ML-KEM raug tshawb xyuas nrog qhov tseeb NIST ACVP kev tshawb fawb cov lus teb uas tau paub rau ML-KEM-768 (ML-KEM-*-FIPS203) — 25 kev tsim key, 25 kev encapsulation thiab 10 kev decapsulation, khiav ua lawv tus kheej lub suite. Cov vectors no yog cov uas NIST tso tawm los tshawb xyuas kev npaj (implementation), yog li kev dhau cov no yog pov thawj tias kev hloov (port) ntawd yog raug, tsis yog tsuas yog pov thawj tias ob lub client pom zoo nrog rau ib leeg xwb. Ntxiv rau qhov ntawd, ib lub fixture uas siv txhua qhov kev sim — kev tsim seed, encapsulation, ob hom payload format, thiab kev npaj tag nrho (complete gift wraps) — yog raug tsim los ntawm cov JavaScript reference thiab raug tshawb xyuas los ntawm ob lub test suites. Tus root secret ntxiv mus rau lub fixture ntawd rau ntawm qhov kev hloov tsis yog hloov yog: root mus rau seed, root mus rau keypair, root lub public fingerprint, thiab lub key, nonce thiab cov ntaub ntawv uas muaj ntawm sab nraum (outer layer) yog cov vectors ntawm lawv tus kheej, yog li ob lub client yuav tsis tuaj yeem tsis pom zoo txog qhov uas a nympq1… Code txhais tias yog cov bytes uas tus xov xwm raug kaw nrog. Yog tias muaj kev txawv ntawm ob sab kev ua (implementation), nws yuav ua rau kev tsim (build) tsis tiav, zami ntawm kev tsim ib lub xov xwm uas lwm tus client tsis qhib tau.

Lub fingerprint yog ib yam uas tsim nyog tau muab npe rau hauv cov no. Nws yog qhov uas qhia rau ib lub device paub tias "qhov no yog tus root uas kuv tuav" ntawm "qhov no yog ib qho txawv", thiab ib tug client uas tsis ua tau ib tug client lwm tus fingerprint yuav nyeem ib daim record uas zoo heev ua li tsis muaj record li — thiab tom qab ntawd, raws li Nqe 3.3, nws yuav tsim ib daim root thib ob thiab faib lub identity ntawd mus. Nws yog ib txoj kev uas yuav ua rau qhov ntawd tshwm sim vim qhov tseeb ntawd.

Nymchat yog qhib chaw pib faib ntawm AGPL-3.0. Lub hauv paus cryptographic uas raug piav qhia ntawm no yog js/nym-crypto.js thiab js/modules/pq.js hauv lub web client, thiab lib/core/crypto/ nrog lib/features/identity/pq_registry.dart hauv cov mobile client.

Rau kev piav qhia luv thiab tsis muaj cov lus tshwj xeeb, saib... Lub nplooj ntawm lub chaw tswv yim txog kev encryption uas tiv thaiv tau qauv quantum.