Bu'uura beekumsaa: galmeessuu kanti-kuwantamii hin dhibne

Waraqaa odeeffannoo teeknikaalii Nymchat

Walii Galtee Muucii Kan Quantum Booda Nymchat keessatti

Toofannoo ML-KEM-768 ifa ta'an Nostr irratti galmee ykn registry tokko malee raabsuu, fi isaan himaa gatiin ifa ta'e kamiyyuu kan hin agarsiisne irraa eebbisuu.

Verishini 1.0 Aagista 2026 Nymchat 3.74+ irratti ni tajaajila

Messenger tokko irratti wal-jijjiirraa furtuu post-quantum dabaluun baay'ee rakkoo kiph-toograafii miti. Primitiviiwwan qajeelfama qabu, libraariwwan immoo jiru. Hojiin rakkisaan immoo hirmaattamaan hundi amma... lammaffaa keyii dhoutsataa, fi neetworkii walitti fufiinsa hin qabne bakka ifa ta'een itti kaa'u hin qabu. Waraqaan kun Nymchat akkamitti deebii itti kennu ibsa — keyiin lammaffaan eessaa akka dhufu, akkamitti namoota itti barbaachisu bira akka ga'u, fi interface-ichi bu'aa sana irratti maaltu akka ibsu hayyamamu — fi, kutaa dhumaa irratti, bu'aan sun maaltu akka hin eegu.

1Rakkoon

Ergaaleen dhuunfaa Nostr kanaan itti hidhamu NIP-44 jedhamuun beekama, kan kutaalee lama addaan qabamuu danda'an qabu. Kutaan barreeffama asoosamaa (plaintext) walakkoofu — ChaCha20 dabalata tagii HMAC-SHA256, karaa kii (key) dhuunfaan... HKDF (RFC 5869) — kompiitara kuwantamii biratti balaa guddaa hin qabu; algoriimiin Grover's furtii simmetiraawaa irratti saffisa salphaa (square-root speedup) qaba, fi bitaa 256 immoo kana ni danda'a. Hali inni walii gala eerii irratti elliptic-curve Diffie-Hellman irratti ta'a secp256k1, akkasumas algooridimiin Shor loogaridimii daddarbii (discrete logarithm) kallattiin ni furti. Kiriidii dhuunfaa tokko ishee wal-faana walitti hidhamte kan agarsiisaa (public) irraa argachuun, dhokataa qoodamaa (shared secret) kunciin sun dhiyeenyaan hojjetee ture hunda duubatti ni mul'isa.

Miidhaan kun uumamu inni kun maashiniin akkasii jiranutti dabarsamu miti. Loolleen kuusaa qabu har'a barreeffama hidhamaa (ciphertext) galmeessuu fi yommuu dandeettiin isaa dhufu hiikuu ni danda'a. Wanti amma ergamee yeroo sanaaf barbaachisaa ta'e hundi dur dur miidhamee jira. Kun lola addaa kan jijjiirri furtii post-quantum mo'u dha, kunis sababa hojiin maashiniin ijaarramuu eeguu hin danda'neef.

1.1 Gaaffii barreeffamni kun deebisu

Furmaanni kun baay'ee ni hubatama: mekaanisimii qaxxaamii (key encapsulation mechanism) post-quantum jijjiirraa aadaa waliin deemsisuu, akkasumas namni miidhaa geessisu waan dubbisuuf lamaan diiguu qaba. Nymchat ML-KEM-768 fayyadama (FIPS 203). Sun hatattamaan rakkoo raabsamaa uuma:

Gaaffii sana

Alice har'a ergaa erguuf, waan tokko si barbaachisa: npub ishee. Walitti dhufeenya post-quantum itti dabali, achii ammoo waan lammataa si barbaachisa — furtuu guutuu (public key) ML-KEM ishee. Furtuun sun eessatti argama, ergaa ishee dura akkamitti argachuu dandeessa?

Npub ofii isaa qaba. Waraqaa irratti barreessuu, sagalee olitti dubbachuu, ykn iskiraanii (screen) irraa scan gochuu dandeessa, kunis namni tokko siif iccitii (encrypt) uumuuf barbaadu dha. Koodii jalqabaa (public key) ML-KEM-768 byte 1,184 dha. Sagalee olitti dubbachuun hin danda'amu, maqaa fayyadamaa (username) keessa hin seenu, akkasumas koodii QR eenyummaa (identity) byte 32 qofa ta'e bira hin ta'u.

Guddina kutaa salphaa dha. Kutaan ulfaataa ta'e immoo furtii lammaffaan rakkoolee adda addaa sadii fiduudha, fi kutaan kaan kan barreeffama kanaa immoo baay'ee isaanef deebii dha:

2Qabxiilee dhiphina dizaayinii

Hayyuunni afur deebii kana ijaaran, akkasumas koodiin osoo hin barreeffamin dura dizaayiniiwwan ifa ta'an baay'ee irraa kaasaniiru.

  1. Icitiilee hamma danda'ametti xiqqaa. Fayyadamtoonni Nostr iccitii tokko qofaan qabu, isaanis nsec dha. Icciitii dabalataa kamiyyuu karaa seenaa keessanii akka dhabdaniif kan gargaarudha, namni nsec kopii (backup) gochuu beeku immoo waan biraa kopii gochuu hin beeku. Kutaan 3.1 kun dhimmi kun guutummaatti akka hin danda'amne agarsiisa — furtii post-quantum nsec irraa dhalatun eegumsa post-quantum kamiyyuu hin kennu — kanaaf karoora (design) kana keessatti icciitii tokko qofatu fayyadamama, inni immoo: meeshaa furtii tokko qofa, eenyummaa tokkoof yeroo tokko qofa kan uumamu, akka bifa nsec tiin fi bakka tokkotti kan dhiyaatudha, akka namni tokko isa tokko eegu beeku inni biraas eegu akka beekuuf. Kutaan 10.1 waa'ee kaffaltii (cost) isaa inni hafe irratti dhugaa dubbata.
  2. Dandeettii hin jiru. Kiiin eenyuuf akka ta'e dubbachuuf kan amaname serverii hin jiru. Serverii akkasii kamiyyuu bakka ergaawwan gara biraatti deebisamuun danda'u ta'a.
  3. Meeshaalee hedduu, eenyummaa tokko. Eenyummaan Nostr yeroo baay'ee kiliinteewwan hedduu tokkotti fayyadamama. Wantoonni furtuu (key material) jiran hundi kiliinteewwan hunda irratti wal-fakkaataa ta'uu qabu; akkasumas karaaleen isaan ittiin geessan, kan miidhaa tajaajilli kun ittisuu yaaluu danda'uun dubbifamuu hin qaban.
  4. Mariin hin jiru. Walitti dhufeenyi karaa 'lakkoofsa sirna icciitii kam tu siif gargaara?' jedhuun wal jijjiiruun, weerreessaan filannoo laafaa ta'e akka fayyadamuuf dirqisiisuu danda'u bakka isaa dha. Karoorri dhimma laaffaa ta'e (downgrade) gochuu danda'u tokko qabaachuu hin qabu.

3Dhokataa bu'uraa bilisaa tokko

Murteen bu'uraa ta'e, furtii decapsulation ML-KEM wanta furtii kan gatiin addunyaa hin agarsiisne irraa akka uumamu dha. Idantii hundi furtii dhumaa tokko argatu, kan yeroo tokkoffaa uumame:

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)

Hundeeffamni akkaataa nsec itti dhiyaatuun namaaf dhiyaatama: bech32 dura-yaadu kan nama dubbisuu danda'u waliin nympq, kanaaf akkas jedha nympq1…, iskiriinii eenyummaa keessatti nsec biratti agarsiifama, toora (control) wal-fakkaataa qabamee (copy), yeroo hunda galmeeffatama hin taane akkasumas bakka tokkotti ifatti hin ergamtu. Kun jecha ijaarree (password) miti, akkasumas galmee (login) miti. Kun meeshaa furtii (key material) fayyadamaa tokkoo kan inni kuusuu danda'u dha, nsec akkuma sana.

Sooliin kun kaayyoon bakka addaatti addaan baafamee taasifame, akkasumas iccitii biraa iyyuu keypair wal-fakkaataa argachuu hin danda'u. Isaan... epoch Counter-n juudhuu sochoorsisa (Kutaa 9).

3.1 Maaliif furtii furtii eenyummaa irraa hin dhalamu

Karoorri iftiidhaan mul'atu garee furtii sirra-dhagaa namni fayyadamtu duraan qabu irraa uumuudha:

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

Sababa afur kan namatti tolu dha, hundi isaanii kan dhugaa dha: waan haaraa deeggaru (back up) hin jiru, sababni isaas nsec deeggarsa (backup) dha; meeshaan hundi uumama isaaniitiin walii galuu isaanii, deeggarsa walitti fiduu (synchronization protocol) dogoggoru hin qabu; beeksisa tokko qofa kan jijjiiramuu danda'u eenyummaa tokkoof sirrii ta'uu isaa kan ifa ta'edha, sababni isaas meeshaan waa'ee furtii (key) walitti hin gaddu; fi furtichaan yeroo beekamuu dura jiraachuu isaa, kanaan kiliiyantiin yeroo jalqabaa waan tokko ofii isaatiif cufe (seal) gochuu danda'a.

Faayidaaleen afurttan hundi sababa tokkoof duwwaadha. Algoridimiin Shor npub beeksifame irratti hojjetame nsec ni kenna. Seedii dhuunfachuun (seed derivation) algoridimiin ifa ta'e nsec irratti hunda'e dha. Kanaafuu, namni kutaalee klassikaa cabsu sun, HKDF kan namoonni biroon hojjetan sana fayyadamuun kutaalee post-quantumii sana deebisee ijaara. "Amma walitti qabadhu, booda hiiki" — hatattamuun meeshaan kun ittisuuf uumame sana irratti — furtuun akkasitti furaamu ta'e wanta tokkos hin dabalu.

Seera waan hundi irraa dhufe

Kakuun dekapisuleeshinii ML-KEM entiroopii kan nsec irraa hin dhalatne ykn sekireetshinii killaasikaala-qofaan yeroo kamiyyuu hin ergemne irraa dhufuu qaba.

Kutaan lammaffaan seera sanaa hojii akka kan jalqabaa qaba. Icitiin dhuunfaan uumame sana booda NIP-44 yeroo olaana keessatti meeshaalee fayyadamtuu gidduutti walitti hidhame, rakkoo tokko dha; garuu karaa dabalataa qaba: namni miidhaa barbaadu sun erga sana har'a galmeeffatee sana booda furtuu isaa (classical key) yoo argate, bu'uurri isaas ni bade. Kanaafuu, karaaleen boqonnaa itti aanu kanaaf kan ta'an karaaleen isaan ta'an ta'u, akkasumas isa kamiyyuu “meeshaa biraa gara keetti ergi” kan hin taane.

3.2 Rootii meeshaalee biroo kan fayyadamtootaa irratti fiduu

To'annoon 3ffaa Sekshinii 2 — eenyummaa tokko, meeshaalee hedduu — asitti herregatti hundaa'uun hin guutamu, sababni isaas qabxii guddaan muudii (key) sun wanta meeshaaleen sun duraan dursee walitti qaban irratti feedha hin taane. Rakkoon kun immoo geejjibaan raawwatamuu qaba, akkayyuu karaan tokko qofa jira: namni fayyadamtuu sun... nympq1… ofii isaanii koodii barreessu

Hundeen akkaasitti agarsiifama nympq1… nsec biraatti, akkasumas meeshaan lammaffaan yuvaala (panel) sana irratti qabame fudhata. Kun sagantaa guutuu dha. Meeshaan koodiin hin kennamne hirmaachuu hin danda'u, kan Kutaan 4.2 ibsu.

Ce'umsa harkaan tarkaanfii jalqabaa osoo hin taane, sadarkaa murtaa'aa dha. Seerri Kutaa 3.1 jedhu bu'urri (root) iccitii gosa kallattii qofaaf (classical-only encryption) qabamee akka hin deemne dha; tooftaan hundi kun akka ofumaan ta'u godhu — akka relay-nii keessa jiraachisuun (syncing) ykn tooftaa 'identity key' fiiddeessuun (wrapping) — seera sana murtoo dha. Tarkaanfii namni fayyadamtu raawwattu, eegumsi kun dhugaa akka ta'e kan taasisuudha.

Akkaataa kanaan karaa haguugame (wrapped path) ta'uuf bakka dhiisa: rikkordii tokko tarree haguugimalee (wraps) qabaachuu danda'a, isa kamiyyuu 'blob' AEAD ta'ee, furtii (key) namni fayyadamtu meeshaa biraatti deebisanii fayyadamuu danda'u jala jiraata — fakkeenyaaf, bu'aa PRF passkey. Har'a kan akkasii dhiyaatu hin jiru, hanga kan akkasii dhiyaatuutti immoo... nympq1… koodiin karaa tokkicha ta'udha. Kutaan 10.1 gatii isaa ibsa.

Galmeen ituu damee qindoomina mataa isaa keessa jira, nymchat-pq-root...akkasumas akka kutaaleen biroon itti hojjetanitti walitti fida. Waraqaa (wraps) tokko malee hojii barbaachisaa raawwata: iruun isaa sababa meeshaan lammaffaan eenyummaan kun hidde akka qabu itti beekutti dha, kunis meeshaan sun eenyummaa wal-faallaa tokko uumuu irraa itti dhaaba (Section 3.3).

Yaadannoo dizaayinii: gareen tokko kan furtuu haaraa fayyadamuu hin danda'u

-icha nymchat-pq-root Ramaddiin qabaachuu qaba miti ...qaxaree ML-KEM qaxaree bu'ura irraa dhalatetti cufama. Rannoon sun kopii qaxaree bu'uraa qofa qaba, kanaaf qaxaree bu'ura irraa dhalatetti cufuun sirna cufamaa qaxareen isaa kutaa keessa jiru dha: meeshaan kamiyyuu, kan barreese sana dabalatee, hin banuu. Akkaataa aadaa (classically) — NIP-44 ofiitti — yookaan garuu duudhaa hin qabu. Kun bakka tokkoffaa kan tasgabbii (design) kun eegumsa aadaa qofaan fudhatu dha, kunis raawwachuuf danda'ama: rannoon sun har'a qaxaree bu'ura hin qabu, qaxareen tokko akka jiru qofa qaba.

Gareen qindaa'inaa biroo hundi furtuu madda irraa dhufe fayyadamuu danda'u akkasumas fayyadamuu qabu. Kun malee tokkicha, akkasumas kun cimina caalaa dhimma walitti deebi'uu irratti kan xiyyeeffate dha.

3.3 Uumuu fi simachuu

Yeroo bootii, eenyummaa itti fufiinsa qabu qabatanii, kiliiyintiin tartii kanaan hojjeta:

  1. Kan jiru barbaadi nymchat-pq-root galmee.
  2. Galmeen argameera, fi meeshaan kun innuu hiikuu danda'a — itti fayyadami, eenyummaa kana immoo akka dandeettii post-quantum qabutti beeksisi.
  3. Galmeen argameera, meeshaan kun immoo isaa hiikuu hin danda'u. — hiddee haaraa hin uumin, akkasumas beeksisa kamiyyuu hin maxxansin. Namicha meeshaa kana walitti hidhuuf kan itti galchuun... nympq1… koodii meeshaa duraan durse qabu irraa.
  4. Galmeen hin jiru — bu'ura uumi, galmee maxxansi, beeksisi, fi kan agarsiisu nympq1… Koodii nama fayyadamtootti yeroo tokko kenni akka isaan kuusuuf.

Tarkaanfii 3ffaan tarkaanfii dogoggoruun salphaa ta'edha, kunis sababa tartiibni (ordering) tajaajila tokko tokkoof dhiifamu mannaa barreeffame ta'edha. Meeshaaleen lamaan tokko tokkoon isaanii bu'uura (root) uumuuf murteessan, eenyummaa tokko jala bu'uura walitti hin dhiyaanne lama uumu; kunis dogoggora tartiibni kun ittisuuf akka jiru ta'edha.

4Beeksisa dandeettii

Kutaan ifa ta'e paarii ijii uumame akka teessumaatti beeksifama. NIP-01 mul'ata — gosa 30078, mallatteeffame 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 jechuun relay-n (beeksisa dabarsuun) (kind, pubkey, d-tag) hundaaf ergaa tokko qabaachuu isaa jechuudha, kanaafuu yeroo irra deebiin beeksifamu, beeksisa duraan ture bakka isaa ni jijjiira. Kanaafuu, eenyummaan tokko tokko galmee ammaa tokko qofa qaba, kunis 'furtii Alisii barbaaduu' akka galmee walitti qabamu barbaaduu osoo hin taane, akka argachuu tokko qofa fi ifa ta'etti taasisa.

Mallattoon hidhaa dha. Mul'atichi furtuu eenyummaatiin mallakkajeeffameera, kanaaf dhimmi “furtuun ML-KEM kun npub kana kan qabu ta'uu isaa” akka npubichaatti dandeettii qaba. Furtuu encapsulation adda ta'e jijjiiruun mallattoo secp256k1 sobaa uumuu barbaada. Weerartuun sana gochuu danda'u KEM irratti xiyyeeffachuu hin barbaachisu.

Beeksistoonni ni dhumatu. Guyyaa torba NIP-40 jedhamuun beekama Dhuminsa, sa'aatii 24 keessatti deebii maxxansuu, ragaa dhimma tokkoo kan kanaan dura ture mannaa kan ammas hojii irratti jiru ta'uun qindeessa. Bu'urri ofii isaatiin hin dhumu; kan dhumu ragaa waa'ee isaa irratti hunda'e qofa.

Beeksisa yeroon darbe akka beeksisa kii (key) hin qabneetti dubbifama: namoonni walitti dhufeenya qaban NIP-44 kan walii galaa ergu, kan sagantaan (login) hundi dubbisuu danda'u, ergamaa (client) sun immoo yeroo deebisee beeksisa barreessu, wal-jijjiirra post-quantum irratti deebisee jalqaba. Kanaaf, torban tokkoo ol callisuuf, ergaa yeroo hamma tokko callistii sana keessa ergamaniif eegumsa dhabuun qofa kaffaltii dha — ergaan sun qindaa'ina (encryption) quantum resistii qabu mannaa akka sirnaa (classical) qindaa'amaniidha — kana malee kaffaltii biraa hin qabu. Ergaan (delivery) miidhaa hin argatu, waan duraan argame hundi dubbisuuf ta'a, deebi'anii yommuu deebiyan immoo tarkaanfii kamiyyuu hin barbaachisu.

Garaagarummaan sun dhumuuf sababa dha, osoo takkaa-takkaa miti. Inni tokko malee, galmeen kiiin ittiin waamamu caalaa dheeraa ta'a: meeshaan qulqulleeffame, irra deebi'ee sirreeffame, ykn bu'urri isaa jijjiirame, ajaja walitti qabuuf kiiin eenyuyyuu hin qabne hafu dhiisa, ergaafannoonni kiiichaatti ergamaniif immoo, gama lamaaniittis dogoggora tokko malee badu. Guyyoonni torban yeroo sana murteessu, akkasumas relayaawwan maammaksota akka hubatan abdadhee utuu hin taane, galmee isaanii ofii isaaniitiin akka gatu taasisu.

Maqaan bakka ijoo bifa isaa agarsiisa. Balleen... pk2, fi lakkoofsi sun miidhagina osoo hin taane kutaa waliigaltee ti: fakkaataa (payload) lakkoofsa kamitti akka fayyadamamu adda baasa. Dubbisaan daftara sana hin beekne 'Nymchat client, post-quantum key hin qabu' jedhee waan hubatuuf, NIP-44 kan guutuu ta'e, kan login hundi dubbisuu danda'u erga. Kun adeemsa dogoggora sirrii dha, akkasumas seera lakkoofsi format jiraachuu isaa raawwachuuf kan jiru ibsuun barbaachisaadha: dandeettii hin beekamne gaafachuun eegumsa kutachuu qofa, dhiyeessii kutachuu hin qabu. Kakuun (key) namni biraa itti fayyadamuu hin dandeenye kakuu tokko illee hin qabuu caalaa hamaadha, sababni isaas ergaan inni uumu garraamuu (error) tokko malee badeera.

4.1 Dhabuun hiika qaba, akkasumas valoo sadii qaba.

Odeeffannoon xiqqoo garuu murteessaa ta'e: beeksisaan killeentii Nymchat hunda biratti maxxanfama, isaan dandeettii 'post-quantum' qaban qofa osoo hin taane, fi kutaan 'key' filannoo qaba. Kunis haala lamaan osoo hin taane, haala addaan baafamuu danda'an sadii fida:

IlaalamameJechuunAmala ergi
Beeksisa furtii waliin Nymchat, dandeettii post-quantum qabu Walitti dhufe
Beeksisa, kaayii tokkoyyuu hin jiru Nymchat, kan durii qofa — post-quantum cufame, yookaan meeshaa bu'ura eenyummaa sanaatti hin walqabamin. Akkaataa durii NIP-17
Beeksisa hin jiru Klaayintii hin beekamne. Fayyadamtoota Nostr ykn Bitchat kamiyyuu ta'uu danda'a. Klassikaa, dabalatee baafata walitti deeggaruu

Raawwii sadaffaa raawwii afraffaatti walitti fiduun dhabama dhugaa ta'a. Beeksisa furtii hin qabne ibsa mallatteeffame kan agarsiisu ergaa dhiheessuun Nymchat hojjechaa jiraachuu isaa dha, kunis karaa ergaa dhiheessuun akka walitti hidhamiinsa paartii (protocol) adda addaa kan yaannoo ta'e kan inni nama inni adda hin baasuuf dabalachuu qabu ta'e darbu taasisa.

4.2 Meeshaan bu'uura banuu hin dandeenye callisa ta'a.

Beeksisaan bakka bu'uu danda'amu: beekamtii tokkoof ergaa tokko, kan dhuma irratti barreeffame injifata. Kun karoora galmee tokko qofa hojii irratti akka geggeessu taasisa, akkasumas meeshaan walitti hin hidhimne yoo beeksise balaa taasisa. Meeshaan tooftaa (key) ofii isaatiif qopheessite beeksise, galmee dhugaa balleessuu danda'a, akkasumas warra kaan tooftaa (key) meeshaaleen biroo banuu hin danda'an ta'een itti hidhamuu akka eegalan taasisa.

Kanaafuu, meeshaan bu'uura (root) jiru beeku garuu itti banuu hin dandeenye dubbii tokko illee hin kennu. Inni miidhamee hin jiru, akkasumas tajaajila (application) sana irraa hin xumurame: ergaa furtii qabu hunda dubbisuu fi karaa kallattii erguu itti fufa, akkasumas nama akka walitti hidhu (link) kakaasa. Callisummaan amala sirrii dha meeshaa eenyummaa (identity) bakka bu'uu hin dandeenyeef.

5Qorannoo fi murtee ergaa

Warri tajaajila fayyadamanii furtuu deeggartootaa karaa lamaan baratu. Kennamni yeroo hunda jiru namoota fayyadamichi yeroo hunda dubbatu — haasaa banaa fi miseensota garee — of keessaa qaba; kanaafuu beeksisni isaanii akka gocha haala normal ta'etti dhufa. Deeggartuu yeroo jalqabaaf wal argatan ijaarsa irratti, gaaffiin yeroo tokkoffaa yeroo ergaa erguutti hojjeta, sekondii 2.5 keessatti xumurama; yoo hin xumuramne, ergaan mala keessoo (classical) kanaan deemee, kunis akkaataa rakkoo haaraa osoo hin taane mala post-quantum dura tureedha.

Bu'aan gadheen daqiiqaa kudhan qofa kuufama, barabaraaf osoo hin taane. Fayyadamtuun meeshaa haaraa walitti hidhu, yookaan quba extensionii browserii irraa gara quba naannoo (local key)tti darbu, haasaa gidduutti dandeettii post-quantum qabaachuu eegala, fi "lakki" jedhu kan barabaraaf kuufame sun, hanga beeksisa sanaatti qulqullina (encryption) keessatti kan qindeessummaa (classical) irratti akka hafan taasisa.

5.1 Maaliif waraanni downgrade hin jiru

Murteen adeemsa (routing) gara gaaffii tokkootti walitti bu'a:

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

Walitti bu'iinsi dandeettii, tarreen algorizhimiin deeggaraman, fi kutaawwan weerataa tokko karaa dadhabaa ta'e akka fayyadamutti kan qulqulleessuu danda'u hin jiru. Beeksisa eeguu. dha walii galtee sana, akkasumas mallatteeffameera. Akkaataa beeksisa irraa haqee ykn qabame itti dadhabuun isaa, ergaan akkaataa durii (classical) ta'uudha — kan dhimmi isaa kennaa kana duraa ture — ergaan walitti dhufeenya qabu (hybrid) gara waan namaatiin fakkeessuun danda'amuutti gadi bu'uu mannaa.

Akka kanaan deebii dhiyaatutti ni ta'a fi caalaatti barbaachisaadha: maamilichi 'hybrid' erga qofa yeroo furtii qabatu, fi furtii qabaachuun ragaa fudhatichi dekapsuu akka danda'u agarsiisa. Akkaataa ergaan post-quantum tokko nama dubbisuu hin dandeenyeef ergamamu hin jiru.

6Ijaarsa walitti dhufe

Nymchat NIP-44 bakka hin bu'u. Isaan naannessuu qofa. Ciphertext NIP-44 hin jijjiiramne tokko kutaa keessaa dha, furtuun ML-KEM immoo AEAD alaa isaa naannessaa itti fida:

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)

Ergaa sana dubbisuuf icitiin lamaan lamaan haaromfamuun qaba: kutaan alaa NIP-44 ciphertext qofa kenna, sana banuufis ECDH kallaattii (classical) barbaada. Dorgomaan quantum kan secp256k1 cabsu furtuu keessaa argata, garuu ML-KEM dura dhaabbata; ML-KEM cabsuun kutaa alaa kaasuu qofa, NIP-44 garuu dhaabbata. Galchiin hundi bakka isaa qaba:

Walitti-qabuurri (Encapsulation) ergaa hunda irratti haala haaraa ta'een raawwatama. Tooftaan ML-KEM argataaatiin yeroo dheeraaf tura, garuu ergaan hundi koodii-dhuga (ciphertext) adda ta'e qaba, kanaafuu... kem_ssSun kan nonce walitti makuu mannaa buu'isuun sirrii akka ta'u taasisu dha: ChaCha20-Poly1305 (key, nonce) walitti qabamuun irra deebiin fayyadamuun balleessama, fi asitti furtuun (key) ergaa hundaaf haaraa dha, kanaaf walitti qabamuun (pair) tokko hin deebinu.

6.1 Maaliif uraajiiwwan addaan ba'anii turu

Akkaataan biraa iccitiiwwan lamaan walitti makuun furtii haasaa tokkootti gochuu fi sana NIP-44 kennuudha:

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

Dhaabbannoon sun akka kiphitoograafiiitti amansiisaadha. Rakkoo uumataa tokko qaba: isaaf barbaachisa ecdh_x, x-coordinate bu'aa ECDH kan qulqulluu ta'e, akka ragaa furtii — fi extension browser (NIP-07 jedhamuun beekama) yookaan mallattooffata fageenya irraa jiru (NIP-46 jedhamuun beekama) gatii sana hin deebisu. Inni NIP-44 nama waamicha godhuuf raawwata, akkasumas 'ciphertext' deebisa; kun immoo kaayyoo furtii sana bakka applikaashiniin hin gahu danda'utti kuusuu ti.

Iccitiiwwan walitti makuun, sagantaa seensaa (login) kamiyyuu kan koodii eenyummaa (identity key) irratti (signer) qabu irraa kaasuu dha, kunis fayyadamtoota of-eeggannoo guddaa qaban jechuudha, akkasumas hojii koodii (key derivation) kamiyyuu kana jijjiiruu hin danda'u. Tarkaanfii dachaatti (layering) wal-harkifachuu balleessa: NIP-44 guutumaan isaa hafaa jiraata, akkasumas wanti koodii eenyummaa qabu (signer dabalatee) kan oofsu dha, keessas qara KEM'aa koodii deebisii (recovery code) qabeessa (client) kallattiin qabu irraa kan herregamu dha. Seensa (login) signer-iiwwan hundi karaa lamaan irratti hirmaattota post-quantum salphaa dha.

Kaffaltiin isaa bandwidth dha, kunis xiqqoo miti. Qaamii barreeffama (ciphertext) ML-KEM 1,088 baayiti dha, kunis ergaa hunda irratti ni dabalata, base64url-encoded gochuun immoo jijjiirraa 1,451 ta'a; AEAD alaa ta'e immoo teegii Poly1305 baayiti 16 dabalata, NIP-44 payload inni kuffatun immoo walakkaa tokko (third) babal'isa. Ergaan jijjiirraa 50 qabu 176 baayitii irraa gara 1,712tti dabala, ergaan jijjiirraa 2,000 qabushi 2,820 irraa gara 5,238tti dabala. Ergaan gabaabaan immoo erga tokko irratti akkaataa isaa irratti hundaa'uun walakkaa 1.5 KB ta'a, kunis sirna sirrii ta'e (shared secret) deebisanii fayyadamuu mannaa yeroo hunda haaraa qaxamaa (encapsulating afresh) gochuuf kaffaltii ta'udha.

6.2 Ba'aan odeeffannoo of ibsu

-icha pq2. Prefix adeemsa hojiitti hiiksisuu tartiba qabaachuu isaa taasisa: ofittiif ibsa, kanaafuu kiliiyantiin kuta-ibsa (payload) xiinxaluun karaa hiika-dhokataa (decryption path) filata, mallattoo (tag) amanuu ykn walitti dhufeenyi (peer) maaltu akka deeggaru yaadachuu osoo hin taane. Dubbisaan prefix hin beekne, kuta-ibsa sana dubbisuu dogoggoraa osoo hin taane, banuu dhabuu qofa; akkasumas, garraamni lamaan keessaa tokko post-quantum gochuu hin dandeenin dura sirreeffaman, adeemsa jijjiirrachaa (migration) malee akka NIP-44 baramaatti dubbisamuu danda'u.

Dhaakkuu hin ibsamne

Decapsulation ML-KEM akka hin dadhabneef kan qindaa'e dha: yoo ciphertext dogoggoraa ta'e, jijjiiriin Fujisaki-Okamoto dogoggora dhiyeessuu mannaa, sirna-dhaabbataa (deterministic) pseudo-randomni dhugaa (secret) deebisa. Kanaafuu, furtii dogoggoraa ta'e karaa KEM-tti hin mul'atu — NIP-44 keessatti akka dogoggora HMAC-tti mul'ata, kunis akkaataa furtii sirna durii (classical) dogoggoraa ta'e mul'attu sana waliin wal fakata. Fayyadamtoonni (callers) lamaan akka wal-fakkaataatti ilaalu, kanaaf dogoggorri sun mallattoo adda hin baasu. Kunis tarree filannoo (candidate list) Kutaa 9.1 hojiirra ooluu akka danda'u taasisa: maammiin furtii hunda walitti dhufeenyi yaala, NIP-44 immoo isa kam akka sirrii ta'e akka himu taasisa.

6.3 Kutaan haguuggaa kennaa lammataa

A NIP-17 jedhamuun beekama Ergaan dhuunfaa ta'e... NIP-59 jedhamuun beekama xumura kennaa: oduu kan mallatteeffamee hin jirre, toora (key) eenyummaa ergaa dhiheessaa (kind 13) isaan cufame, achii booda toora (key) ergaa hundaaf kan dhalatame yeroo tokkoof qofa itti fayyadamamu (kind 1059) isaan xumurame. Login toora eenyummaa kallattiin qabu irratti, Nymchat laajaansota lamaan kana walitti makuu, kamiyyuu xumura (encapsulation) mataa isaa qabuun.

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
Ulaacaan haguugaa lamaanuu walitti dhufeenya (hybrid) qabu, kamkammiyuu ulaacaa ML-KEM of danda'ee qabu. Ulaacaan alaa sirna sirrii iccitii yeroo gabaabaaf qofa tajaajilu irratti hundaa'a, kanaaf ulaacaan kun nama erge hin agarsiisu.

Galmeen nama mallatteessuuf dhiyaatu kan dabalataa ala qofa argata. Mallattoon (seal) sun kan mallatteessichaatiin akka NIP-44 baramaatti hojjetama — appilikeeshiniin furaa (key) sana kan hojjete hin argus — kanaaf bakka sana keessatti walitti makuun (hybridize) hin danda'amu. Kun immoo tarkaanfii ittisaa kan irratti xiyyeeffateef faayidaa hin qabu: mallattoon sun 'wrap' sanaan qofaan argama, 'wrap' sun immoo waan galmeessaan (recorder) kuusuudha. Namni lolaa odeeffannoo galmeeffame qabu, mallattoon sun dhimma lolaa ta'uuf mul'achuu dura ML-KEM cabsuu qaba.

7Ergaawwan garee fi hamma walakkaa

Ergaan garee barreeffama koodii (ciphertext) tokko miti. Inni barreeffama dhugaa (plaintext) tokko kan miseensota hundaaf babal'ifame dha, kopii isaa kamiyyuu furtuu ML-KEM miseensaa sanaatiin qaxabame dha. Miseensi furtuu qabxii kenne 'hybrid wrap' argata; kan hin kennine immoo 'classical wrap' argata.

Kun rakkoo herregaa kan raawwii salphaan dogoggoru uuma. Yoo miseensonni kurnan keessaa saddeet kopii wal-makaa fudhatan, ergaan sun... miti kudhan keessaa saddeetni ni eegama. Diinni kophii sirna ammayyaa barreeffama qulqulluu (plaintext) kan kudha hunda keessatti wal-fakkaatu tokko barbaada, kanaafuu erriin sun eegatamu yoo tokkoon tokkoon Koppiin dha.

Nymchat kanaafuu, fan-out keessatti coverage ergaa tokko tokkoon hordofa — lakkoofsi kun yeroo wraps ijaaramaa jiran qofatti beekamuu danda'a — fi mallattoon (badge) ergaan sun eegatame jedhee dhiyeessuu mannaa, “namoota 10 keessaa 8f quantum-resistant dha” jedhee gabaasa kenna. Bakka lakkoofsi hin jirre, kan kunis kan eegalu... Argame Ergaa garee (ergaa erguu qofatu baay'ina ergaa dabalataa lakkaa'a), interface-iin eegumsa guutuu osoo hin taane eegumsa walakkaa irratti gabaasa kenna. Ergaa guutuu sana irratti eegumsa guutuu akka qabu kan qophii (copy) ofii qofaan jedhanii dhaamuun, ergaa sana guutuu irratti waan hin taane guddisuu ta'a.

7.1 Wanti gaachaan gabaasamu

Duubeen waa'ee ... dhugaa hima ergaa, waa'ee software'icha ishee erge miti:

Murteen yeroo ergaan cufaamu galmeeffama, osoo booda nama biraa waan beeksisu irraa irra deebi'ee herregamuu osoo hin taane. Barreeffama sirreessame (ciphertext) duraan jiru sun, duraan ture caalaa eegumsa gaariin hin eegamamu; akkasumas, qunnamtiin (interface) ergaa durii beeksisa haaraa irratti hundaa'uun irra deebi'ee fakkessu, byte-ota relay irratti jiran irratti waan dogoggora ta'e himuu ta'a.

Seerreen garee olitti dhiyaatan kun kan jiru kana hin jijjiiran, isaan irratti dabalatu: ergaan garee guutummaatti eegatamu kan ta'u, hiikni miseensa hundaaf jiraate qofa yoo ta'e; ergaan garee argamee lakkoofsa eegumsa hin qabne immoo "guutummaatti miti" jedhamee mul'ata.

8Koppiwwan ofii keetiif barreeffaman

Wanti hedduun kan fayyadamtu (client) kuusu eenyummaa mataa isaa irratti hundaa'uun hidhama: sirna qindaa'e, tarree haasaa, furtuulee garee, fi kuusaa ergaa. Kunniin ergaa tokko tokkoo caalaa odeeffannoo nama irratti qabu, kanaafuu, akkaataa durii ta'een dhiisuun isaan wanta kuufame keessaa hunda caalaa dadhaboo isaan taasisa, ergaan isaanii ofii isaanii akkamitti akka malee qulqullinaan hidhama ta'e irratti hundaa'uu malee. Isaanis akkaataa walitti dhufeenya (hybrid) kana fayyadamu, furtuu mataa isaa irraa dhufeen kan hidhame — kan kutaa 3.2 irratti ibsame tokko malee, ... nymchat-pq-root gosa ofuma isaa, kan furtii isheen qofa uumuu dandeessu jala hin cufamne.

Meeshaaleen kun bakka dizaayiniin baay'ee murteessaa ta'edha. 'Settings blob' ykn riwaayii 'archive' bakka tokko irratti waggootaaf turi, kunis wanta ajjaajamaa 'amma-kuufii-erga-booda-hiikee' walitti qabu dhimma isaa sirriitti ta'edha — ergaa tokko qofa irra dursa, ergaan sun immoo yaada itti fayyadamtuu keessatti yeroo gabaabaaf qofa jira.

Toftaan tokko furtii irra haala kanaan dhihoo ta'e bulcha. Kopii ofii irratti teessummaa qabu kan dubbifamu ta'uu qaba... tokkoon tokkoon ...meeshaa akauntiin irratti qabu, kanaaf meeshaan hundi waan banuu danda'u beeksisa isaa keessatti dhiyeessu, akkasumas akauntiin waan hundi isaanii dubbisuu danda'an qofa barreessa. Waan biraa barreessuun meeshaa tokko seerasa (setting) isaa irraa fageessuu danda'a—kunis balaa callisaa sekshinii 3.2 karaa biraa fayyadamuun ittisu dha.

Hudhaa ibsuuf ta'u

Meeshaan eenyummaa qabu garuu bu'ura (root) hin qabne, akkaataa itti qindaa'e (settings) dabalatee, wanta furtii bu'ura irraa dhufeen cuftame kamiyyuu banuu hin danda'u. Kun bu'aa karoorfameedha, dogoggora miti; kanaafuu Sekshinii 3.3 bu'ura haaraa uumuun (minting) mannaa, walitti hidhuuf ajaja meeshaa akkasii qaba. Bu'ura lammaffaan "blob" sana dubbisuu kan taasisu miti, wanta furtii eenyummaa sanaa bakka lamaatti qofa addaan cita. Hangagaan fayyadamtuu walitti hin hidhimne meeshaan sun hojii isaa itti fufa — wanta furtii qabu dubbisa, akkasumas akkaataa aadaa erga.

Meeshaan extension browserii qabu ykn mallattoo fageenyaa (NIP-46) nsec kan irraa dhalattu hin qabu, garuu koodii deebisanii fiduu qaba, fi ijaarsa sirnaa (layered construction) Kutaa 6.1 jalatti, kun qofadha kan kutaan post-quantum barbaadu: mallattoo sun (signer) sirna NIP-44 akkuma yeroo hunda taasisaa ture oofee kenna, fi maamichi (client) kutaa alaa ofumaan sirna (key) taasisa. Galmee akkasii karaa lamaan irrattis hirmaataa baramaa dha.

9Naannofachuu

-icha epoch Lakkoofsi itti fufsiifama keessa jiru, meeshaalee furtii haaraa malee jijjiirama (rotation) gochuu akka danda'amu taasisa. Lakkoofsa sana dabaluun, bu'uura (root) sana irraa paayirii furtii haaraa fi beeksisa irra deebi'anii baafame uuma; hiriyoonni (peers) immoo furtii haaraa galmee jijjiiramaaf ta'u irraa fudhatu. Kanaafuu, jijjiiramni (rotation) nama fayyadamtuu waan tokko irra deebi'ee barreessuu hin gaafatu: bu'uurri eenyummaa tokkoof yeroo tokko qofa uumama, yeroon (epoch) immoo jijjiirama gochuu danda'a.

9.1 Baroota durii ni kuufamu, akkasumas waan kamiyyuu irra deebi'ee hin hidhamu.

Yeroo furtuun (key) jijjiiramu, wanti tokkoyyuu irra deebi'ee hin barreeffamu. Kilaayiniin filannoo hiikuu (decryption candidates) eepookii ammaa irraa eepookii -3tti gadi fageenyaan ijaara, kanaafuu ergaan yeroo jijjiiramu dura xinnoo kan mallatteeffame, yeroo ergamee furtuu (keypair) isa yeroo sana ammaa ture sanaan ni banama.

Windowsicha sun jijjiirama (rotation) akka nagaan hojjetamu taasisa: ishee malee, jijjiirramni hunduu wantoota deemaa jiran hundumaa akka dhabaman taasisa. Wanti duraan cufame hundi jireenya eenyummaa sanaaf dubbisamuuf ta'a, sababni isaas ergaan namichi sana itti banuu hin dandeenye, ergaa kan eegumsi isaa duubatti fooyya'uu hin dandeenye irra xiqqaatti balaa qaba (Kutaa 10.5).

10Kun maali hin eegu

Waraqaan wanta dezaayiniin milkeessu qofa irratti xiyyeeffatu sirna tokko ibsuu hin danda'u, fi fuula walqunnamtiin (interface) amansiisummaa dabalataa ibsuun isaa dhabuun isaa irra hammaadha. Kanneen armaan gadii waan ijaarri kun eegu ala dha.

10.1 Hundeen iccitii lammaffaa dha, ishee dhabuun immoo deebisanii argachuu hin danda'amu.

Kun gatii dhugaa dizaayinii kanaati. Kaka'ummaan Sekshinii 2 keessatti dubbatame, akkaataa itti fayyadamtoonni waan tokko qofaan eegsisanii qabaachuu qabanis, guutummaatti guutuu hin danda'amu: nsec qofaan furtuu post-quantum sana deebisee ijaaruu hin danda'u, sababni isaas qajeelfamni guutuun isaa gatii walattuu (public value) kamiyyuu fi iccitii biraa kamiyyuu akka hin saaxifneef. Yoo meeshaan tokko madda (root) hin qabne ta'e fi kofee (wraps) Sekshinii 3.2 keessaa kamiyyuu banamuu hin danda'in ta'e, ragaaleen furtuu madda irraa dhufeen itti hidhaman deebisanii argachuu hin danda'amu. Escrow hin jiru, akkasumas dhimma kana qabachuu danda'u bulchiinsa (authority) tokko akka hin jirre ni taasifameera.

Yoo daddarbiin harkaan qofaan ta'e, kun akka jalqaba irratti dubbifamuutti caalaa qajeelaa dha. Namni fayyadamaa kan hin kophee hin taane... nympq1… Koodiin bakka kamiyyuu bakkee tokko qofa, meeshaa tokko irratti qaba; meeshaa sana dhabuun ergaa post-quantum, settings blob fi riqicha archive itti hidhame hundumaa dhabuudha. Inni nsec hin gargaaru; sun amala dizaayiniin guutuun irratti hundaa'e dha.

Karaan 'wrapped' ta'e booda itti dabalame kamiyyuu, akka qulqullina karaan manual qabu sanaatti qabaachuu qaba. Namni weerarraa karaa gatii xiqqaadha qabu irratti weerara, kanaafuuataa (scheme) tokko gatii karaa deebisanii fiduu (recovery route) hunda caalaa laafaa ta'e qabuun murteeffama — fakkeenyaaf, jechi-ol-daangaa (passphrase) yaadannoo gaarii qabu, dhimma hunda gatii jecha-ol-daangaa sanaa qofatti gadi buusuu danda'a, akkasumas, 'wrapped row' sun meeshaa weerarraa ammaa walitti qabdee booda yoo dhufe hiikuuf (decrypt) yeroo isaa itti fayyadamee offline irratti hojjetu dha.

10.2 Mirkaneessa, kan iccitii irraa adda ta'e

Mallattoo hundi Nostr keessatti Schnorr secp256k1 irratti hundaa'a, kunis asitti hin jijjiiramne. Duukki kompiitara kuwantaamii qabu tokko mallattoo fakkii uumuu fi yeroo sanaatti nama fayyadamtuu fakkeessuu danda'a. Wanti jijjiirraa furtii wal-makaa (hybrid key exchange) ittisu sun "ammas walitti qabii, booda hiiki" (harvest-now-decrypt-later) dha: nama odeeffannoo ammaa waraabu sana booda dubbisuu hin dandeenye. Kun immoo ergaa namni kompiitara sana qabu irraa ittisuuf hin gargaaru. Gargar baasni kun bilisaan appilikeeshiniidha keessa lakkifameera — mallattoo hiddaa (padlock) mirkaneessuu agarsiisa, mallattoo eegumsaa (shield) immoo iccitii agarsiisa; mallattoonni kun adda adda akka ta'an kan gochaniis ergaan tokko tokko malee isa kaan qabaachuu waan danda'uufi.

Kunis waan beeksisa Kutaa 4 keessatti waadaa gale daangaa ni uuma. Walitti hidhamiinsi npub fi furtii ML-KEM gidduu jiru mallattoo secp256k1 dha, kanaafuu namni mallattoo sana sobuu danda'u furtii kan apnaa tiin jijjiiruu danda'a. Iccitii namni miidhaa geessisu fuulduraa ittisuun, amansiisummaa namni miidhaa geessisu tokko ittisuu waliin wal fakkaatu miti.

10.3 Metadata

Kennaa uffisuun ergaa dhoksa, argataa tokko qofa irra... p mallattoo, gosa, fi mallattoo yeroo ergaa keessaa. Isaan oduun tokko akka jiru, guddina isaa, yookaan yeroo relay'n itti argate hin dhoksu. Xiinxalli deemicha karaa tokkoon iyyuu dizaayinii kanaa hin irratti xiyyeeffatu.

10.4 Mesh-ii offline ta'e

Nymchat Bluetooth mesh transport pirootokala addaa kan handshake mataa isaa qabu dha, akkasumas hojii kana keessatti hin dabalame. Erraajonni meshii keessa darban kan sirna kallattii dha.

10.5 Ergaawwan duraan ergaman

Barreeffamni icciitii garra bitaa keessaa tokko sirna kullaasikaalaan yoo ture galmeeffame, bartee kullaasikaalaan hafaa jiraata. Inni duraan dursee jira waan ta'eef deebisanii cufuu hin danda'amu. Eegumsi ergaa garra bitaa keessaa lamaanuun furtuu post-quantum qabanitti eegala, yeroo adeemsichi banamee hin taane.

11Filannoowwan irratti yaadame

DhihaachuuMaaliif akka hin taane?
Kiičii post-quantum kiičii eenyummaa irraa kaasi. Irrakaafame. Dhaabbannoon algoridhimii uumamaa nsec irratti hundaa'edha, akkasumas namni qontamuun (quantum adversary) nsec npub kan dhiyeeffame irraa argachuu danda'a, kanaaf kutaan klassikaa cabsuun kutaa post-quantum akkuma isaa dhiyeessa. Gaaffilee raabsama qophii kanaa hunda hiike, garuu nama tokkoofis hin ittise. Kutaa 3.1.
Root meeshaalee biroo kan fayyadamaatti NIP-44 keessaan ergi. Sababa tokko qofaan uffata addaatiin diigame. Rootin uffata (encryption) killaasikaalii qofaan ergame, namni ergaa sana waraabe sana booda furtuu isaa kan diigu hundaaf argachuu danda'a; kun immoo dorgomaa (adversary) 'root'iin dhaabachuuf akka jiru dha.
Paayiriin furtii ML-KEM kan addatti uumame meeshaa hundumaa irratti Dhaabbifame. Meeshaaleen furtuu decapsulation adda addaa qabaachuu isaanii, fi beeksisa jijjiiramaa eenyummaa tokkoof ta'u hunda isaanii danda'u hin qabu. Namoonni walitti dhufeen (peers) furtuu dhuma irratti ba'e kam irrattis qindeessu (encrypt) jechuun, meeshaan biroo hundi bu'aa isaa dubbisuu hin dandeenyu. Eenyummaa tokkoof 'root' tokko, karaalee Kutaa 3.2 tiin socho'an, rakkoo sana ittisa.
Bu'ura PIN tiin haguugi Hin fudhatamne. PIN lakkoofsa afur qabu, qabattuu (attacker) offline ta'ee rowii 'wrapped' qabuuf bitii 13 naannoo isaa dha. Isaa karaalee bitii 256 lamaan gidduutti dhiyeessuun, humna 'wrap' kamtu hunda caalaa dadhabaa ta'e haala dogoggoraa agarsiisuu danda'a.
Npub sana furtuu lamaan akka qabatuuf babal'isi. Baayiti 1,184 mallattoo qoodamuu danda'u miti, akkasumas teessoo baayiti 32 ta'e jedhamuun murtaa'e kan client Nostr hunda keessatti sirna parsing isaa ni balleessa.
Tajaajila galmee murteessaa Raadiyinni ittisuuf uumame sana aangoo deebisanii galcha. Kan gaaffii deebisuun eenyuunyuu, eenyuun ergaa sana dubbisuu akka danda'u murteessa.
Furtuu sana ergaa hunda irratti makkaa. Wanta tokkoyyuu hin furu: ergamaan sun... Argataa kiri'ii ergaa jalqabaa duraa, kan kun immoo ergaa duraa kan ittiin dhiyaatu hin jirreef haala sana ta'edha.
Mariisisuu dandeettii daandii keessatti Bakka gadhiisuu (downgrade) itti uumamu uuma. Namni miidhaa geessu mallattoo dandeettii (capability flag) irraa haqee danda'u karaa keeyyata (classical path) akka fudhatu dirqisiisa.
Kwantam booda qofaa, kutaan kalaasikaalii hin jiru. Xiinxala waggaa kurnanii kan secp256k1 dhiisuun, bu'uura baay'ee haaraa ta'e tokkoon badala. Walitti dhufeenyi (hybrid) kun yoo... ta'e qofa dadhabuu danda'a. lachuu Milkaa'uu dhabuu.

12Walqixxummaa raawwii

Nymchat adeemsa kana bifa adda addaan hojjetaman lama dhiyeessa — tokko hojii webii JavaScript fayyadamuun, kan biraas hojii bilbilaa Dart fayyadamuun, kana keessaa immoo ML-KEM-768 karaa haaraa (from-scratch) ta'e ni dabalata. Hojii (implementation) mataa isaa tokko bifa lamaan hojjechuun yeroo baay'ee rakkoo (liability) uuma, kanaafis walii galuu isaanii amanuu mannaa, walitti mormii uumuun walitti qabamu.

Implementaashiniin ML-KEM Dart kan isa qajeelaa irratti mirkanaa'eera NIST ACVP testoota deebii beekaman kan ML-KEM-768 (ML-KEM-*-FIPS203) — 25 dhimma uuminsa furtuu (key-generation), 25 dhimma qofaa uumuu (encapsulation) fi 10 dhimma qofaa bacee (decapsulation) irratti hundaa'uun, akka garee isaanii qofaa hojjetamu. Kunneen 'vectors' NIST hojii raawwii (implementation) mirkaneessuuf maxxansudha, kanaafuu isaan darbuun ragaa hojiin (port) sirrii ta'uu isaa agarsiisa, osoo hin taane ragaa warra lamaan walii galtee qofaa miti. Kana irratti hundaa'uun, 'fixture' waloo kan 'test vectors' — dandeettii 'seed' (seed derivation), qofaa uumuu (encapsulation), bifa payload lamaanii fi 'gift wraps' guutuu — JavaScript ragaa (reference) irraa uumama, suitewwan tajaajila hordoffii lamaan immoo ni madaalu. 'Root secret' sun 'fixture' sana ni bal'isa, osoo hin taane ni jijjiira: 'root' irraa 'seed' garaatti, 'root' irraa 'keypair' garaatti, 'fingerprint' uumamaa (public fingerprint) kan 'root', fi furtuu, 'nonce' fi odeeffannoo walitti dhufeenya qabu kan kutaa alaa irraa uumaman 'vectors' mataa isaanii ti, kanaafuu warra lamaan waa'ee... nympq1… Koodiin waa'ee buutii (bytes) ergaa ittiin cuphamu ibsa. Farra imala keessaa kam irrattis ijaarsa (build) diiga, ergaa klientii biraa hin banne uumuu mannaa.

Mallattoon quba kana keessaa isa maqajamuu qabu dha. Inni meeshaa tokko "kun bu'uura ani qabu dha" fi "kun kan biraa dha" jedhee addaan baasee himuudha; akkasumas, kiliiyantiin mallattoo quba kiliiyantiin biraa sana hin danda'ne tokko, galmee guutuu ta'e akka galmee tokko malee dubbisa — achiis, Sekshinii 3.3 hordofee, bu'uura lammaffaa uumee eenyummaa sana hir'isa. Sababa sana qofaaf akka tooftaa (vector) tajaajiluudha.

Nymchat dha Madda banamaa AGPL-3.0 jalatti. Bu'uura kiiptograafii asitti ibsamu... js/nym-crypto.js fi js/modules/pq.js kilaayintii weebii keessatti, fi lib/core/crypto/ Waliin lib/features/identity/pq_registry.dart Kiliiyantoota moobaayilaa keessatti.

Ibsa gabaabaa fi teeknikaa hin taaneef, ilaali Fuula bu'urree beekumsaa waa'ee cufiinsa odeeffannoo kuwaantumii mormu..