Nymchat puke ʻike ʻenehana
Ka Paliʻā Kī Ma Hope o ka Quantum ma Nymchat
Hoʻolaha ʻana i nā ML-KEM-768 public keys ma o Nostr me ka ʻole o kekahi puke nānā a i ʻole kekahi papa inoa, a e hoʻomaka ʻia mai kekahi mea huna ʻaʻole hiki ke hōʻike ʻia e kekahi waiwai ʻehia i ka lehuleia.
ʻAʻole ʻo ka hoʻokali ʻana i kahi post-quantum key exchange i loko o kahi mea hoʻouna ʻōlelo he pilikia cryptography nui loa. Ua hoʻonohonoho ʻia nā primitives a loaʻa nō nā libraries. He mea ʻano loa ka mea e pono ai kila mea e komo ana i kēia manawa kahi kua lua kī polokalamu, a ʻaʻole i loaʻa i ka pūnaewae i ʻole ka hōʻonoʻo ʻana kahi wahi maopopo e hoʻonāpono ai i ia. ʻO kēia pepa ka mea e wehewehe ana i ka pane ʻana a ʻo Nymchat i kēlā — no hea mai ka kī ʻelua, pehea e hiki mai ai iā ka poʻe e pono ai, a me ka mea e hiki ai i ka hōʻike ʻana ke ʻōlelo no ka hopena — a ma ka ʻaoʻao hope loa, ka mea ʻaʻole e pale ʻia e kēlā hopena.
Ua unuhi ʻia kēia ʻaoʻao no ka maʻalahi. ʻO ka ʻōlelo Pelekane ka mana e pili ana.
1Ka pilikia
Nā leka pilikino Nostr he mea huna ʻia me NIP-44, i nā ʻaoʻao ʻelua e hiki ai ke wehe ʻia. ʻO ka ʻaoʻao e huli ai i ka ʻōlelo kumu — ChaCha20 me kahi ʻāpana HMAC-SHA256, i kī ʻia ma o HKDF (RFC 5869) — ʻaʻole he mea nui ka mea e hāʻawi nei ka kamepiula quantum; ʻo ka polokalamu Grover ka mea e hoʻokō ai i ka hoʻomehana pūʻulu kumu kōkua (square-root speedup) ma mua o ka pīkini pūlika (symmetric key), a ʻo nā 256 bit nō ka mea e pūʻolo ai kēlā. ʻO ka hapa i ʻae ma luna o ka pīʻāpā he elliptic-curve Diffie-Hellman ma luna o secp256k1, a ʻo ka polokalamu a Shor e hoʻopau ai i ka lōkāhika pāuna ma ke ʻano kīwī. Inā loaʻa ka mea pono mai kona mea hōʻike, e hōʻike ana ia i nā mea huna a kēlā mea pono i hana ai i nā wā i hala nei.
ʻAʻole hoʻopāpā ʻia ka pilikia e loaʻa ana ma kēia manawa hiki ʻole i ka wā e loaʻa ai kēlā ʻano mea hana. Hiki i ka mea ʻē i kēia manawa e hoʻāpau i ka ʻōlelo huna a e wehe ʻia i ka wā e hiki mai ai ka ʻike e hana ai. Kēlā me kēia mea i hoʻouna ʻia i kēia manawa i mea e waiwai ai i ka wā e hiki mai ana, ua loaʻa wale ʻia ia i ka mea ʻē. ʻO kēia ka hana hoʻopiʻi kikoʻī i hoʻopunā ʻia e ka hoʻololi kī ma hope o ka quantum, a ʻo ia ka kumu i ʻole hiki ai i kēia hana ke kuʻu ʻia no ka mea hana ʻia ʻana o kēlā mea hana.
1.1 Ka nīnau e pane ai kēia pepa
Ua maopopo pono ka hana hoʻoponopono: e hoʻohana i kekahi post-quantum key encapsulation mechanism ma koke me ka classical exchange, ʻo ia, pono e ʻaukū ʻia ʻelua e ka mea ʻaukū e heluhelu ai i kekahi mea. ʻO Nymchat i hoʻohana i ka ML-KEM-768 (FIPS 203). He mea kēlā e hoʻoulu koke ai i kahi pilikia hoʻolālā ʻana:
No ka hoʻouna ʻana i ka leka iā Alice i kēia lā, pono ʻoe i mea ʻekahi: kona npub. Inā hoʻopili ʻia kekahi hoʻāno post-quantum, pono ʻoe i mea ʻelua — kona ML-KEM public key. Ma hea e noho ai kēlā kī, a pehea e loaʻa ai ia i mua o ka hoʻouna ʻana i kekahi mea iā ia?
He mea kūpono i kona ʻano ke npub. Hiki iā ʻoe ke kākau iā ia ma luna o ka pepa, ke ʻōlelo pū ʻana, a i ʻole ke nānā ʻia mai ma ke kāmā, a ʻo ia ka mea a kēlā me kēia kanaka e pono ai e hūnā i kāu ʻike iā ʻoe. He pūlea ʻike ʻole ML-KEM-768 kēia e 1,184 bytes. ʻAʻole hiki ke ʻōlelo pū ʻia, ʻaʻole e kūpono i loko o kahi inoa mea hoʻohana, a ʻaʻole kūpono i loko o kahi QR code ma hiki i kahi ʻike e 32 bytes wale nō.
He maʻalahi ka nui. ʻO ka mea ʻoi aku ka ʻoi kino, ʻo ia ka mea e hōʻea mai ana i nā pilikia kolu kū ʻokoʻa ma o kahi kī ʻelua, a ʻo ka hapa nui o kēia pepa, he pane ia iā i kēlā:
- Hiki ke hoʻololi ʻia. He pūlua kēlā i ʻole hiki ke heluhelu ʻia i ka nānā koke ʻole ʻia, ʻo ia ka mea e hoʻololi ʻia e ka mea hoʻopilikia i kā lākou pūlua. E hoʻohui ana ke ʻaoʻao ʻehā i kēlā me ka ʻōlelo hōʻoia i ka inoa, e hoʻopau ana i kēia pilikia.
- Pono e like ma nā mea hana o ka mea hoʻohana. Pono e hōʻike i ka kī like i ka loaʻa i ke kelepona a me ka kamepiula, ʻō ʻole ʻe wehe ʻia nā leka i pani ʻia i kekahi ma kekahi. E loaʻa ana kēlā ma ka ʻaoʻao 3.2.
- Hiki ke nalowale. E hoʻokuʻu ʻia ana ka pūnaewele imikino mai kahi mea huna, no laila, ʻo ia mea huna wale nō kā laila e ola ai — a ma o ke kūkulu ʻia ʻana, ʻaʻohe mea ʻē aʻe e hoʻopili hou iā ia. ʻO ka ʻaoʻao 10.1 ka hōʻike pono ʻana i ka nui o ka uku ʻana, no ka mea, ʻaʻole ʻo kēia he mea hoʻoponopono ʻia, akā he mea uku ʻia.
2Palena hoʻolālā
He haʻunaʻe nā mea e kānāwai ai i ka pane, a ua hōʻole lākou i ka nui o nā hoʻolālā maʻalahi aʻo ʻole i kākau ʻia kekahi polokalamu.
- He ʻoi loa ʻole nā mea huna i hiki ai. Ua kūpono ka ʻike huna hoʻokahi wale nō i loko o nā mea hoʻohana Nostr, ʻo ka nsec. He ala hou ia e poina ai kou moʻolelo i kēlā me kēia ʻike huna hou, a ʻaʻole ʻike i ka hoʻonāukiuki ʻana i kekahi mea ʻē aʻe ka mea ʻike i ka hoʻonāukiuki ʻana i ka nsec. Hōʻike ʻia e ka ʻaoʻao 3.1 ʻaʻole hiki ke hoʻopuna hou i kēia i kēlā me kēia manawa — ʻaʻole lawe mai i ka pale post-quantum ʻoe i kahi pūnaewele post-quantum i haku ʻia mai ka nsec — no laila, he ʻike huna hoʻokahi wale nō ka hoʻohana ʻia e ka hoʻolālā a ʻaʻole ʻoi aʻe: he ʻāpana pūnaewele wale nō, hana ʻia i ka ʻole ʻole no ka ʻike, hōʻike ʻia i ka mauʻumea like me ka nsec a ma ka wahi like pū, i mea e ʻike ai ka mea ʻike i ka mālama ʻana i kekahi i ka mālama ʻana i ke ʻeke ʻē aʻe. He ʻoiaʻiʻo ka ʻaoʻao 10.1 no ka mea e hala ai ma mua.
- ʻAʻohe mana. ʻAʻole ia ʻike ʻia he kumu hoʻokomo e hiki ai ke kūpaʻa i ka haʻi ʻana i ka mea e noho ana i kēlā pū chìkī. Lilo kēlā ʻano kumu hoʻokomo i wahi hiki ke hoʻalihui ʻia nā leka.
- Nā mea hana he nui, ka ʻano ʻekahi. Hoʻohana ʻia ka manaʻo Nostr ma nā polokalamu he nui i ka manawa pēhi. He aha nō paha ka mea kī i loaʻa, pono e like loa i kēlā me kēia polokalamu, a ʻaʻole pono e hiki ke heluhelu ʻia e ka mea kūʻē nā ala e hoʻouna ai i kēlā i kēlā polokalamu.
- ʻAʻole ka kūkākūkā. He kumu ia e hiki ai i ka mea hoʻopili ke kūkuku i ka mea haʻahaʻa, ʻo ia mau kamaʻilio i loko o ka ala pili e pili ana i ka nīnau ʻana i ka "pehea nā kīkē ʻo kāu e kākoʻo nei?" Pono ka hoʻolālā e ʻole i loaʻa kahi mea e hiki ai ke hoʻonemi i ka pololei.
3He huna kumu kaʻawale
ʻO ka koho kumu ʻo ia ʻo ka mea kī ML-KEM decapsulation i hoʻomaka ʻia mai nā mea kī ʻaʻole hiki ke hōʻike ʻia e kekahi waiwaiʻākea. ʻO kēlā me kēia pilikino e loaʻa ana i kahi mea huna kumu, i hana ʻia i ka manawa hoʻokahi:
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)
I hōʻike ʻia ka root i ka mea hoʻohana e like me ka nsec: bech32 me ka kumu hiki ke heluhelia e ke kanaka
nympq, no laila, ʻo ia ka heluhelina ʻo nympq1…, hōʻike ʻia ma ʻaneʻane me ka nsec ma luna o ka ʻike kahu ma hope o ka hana hōʻike ʻia pēnei, hoʻopili ʻia me ka hoʻohana ʻana i ka hoʻokele pēnei, ʻaʻole i hoʻihi ʻia a ʻaʻole i hoʻouna ʻia i kahi me ka ʻole o ka huna. ʻAʻole ia he huaʻōlelo hūnā a ʻaʻole ia he wahi kūkulu. He mea ki ia i hiki i ka mea hoʻohana ke mālama, e like pono me ka nsec.
He mea i hoʻokaʻawale ʻia ka salt me ka manaʻo ponoʻī, i mea ʻole e hiki ai i kekahi mea huna ʻē aʻe ke kūkulu ʻana i ka pūʻolo kī like ʻole. Ka epoch Ke hoʻokele nei ka mea loea i ka huli ʻana (Kepa 9).
3.1 He aha e ʻaʻole hiki ai ke huli mai ka kī mai ka kī ʻike
ʻO ka hoʻolālā maopopo kēia, ʻo ia ka hoʻokumu ʻana i ka ʻimena ʻelua mai ka mea huna i loaʻa iā ka mea hoʻohana nei:
seed = HKDF(salt = "…", IKM = nsec) // do not do this
He mea hoihoi kēia no nā kumu he hawa, a he pono a pau: ʻaʻole he mea hou e kākoʻo ai, no ka mea, ʻo ka nsec ka kākoʻo; ke kūʻai nei nā mea hana a pau ma o ka hoʻolālā ʻana, me ka ʻole o kahi kānāwai hoʻohālikelike e hewa ai; he ʻōlelo hoʻolaha e hiki ke hoʻopiʻi ʻia i kēlā me kēia inoa e pololei pono, no ka mea, ʻaʻole hiki i nā mea hana ke kūʻē i ka mea wili; a he pali ka mea wili ma mua o ka hoʻolaha ʻana, no laila hiki i ka mea hoʻohana ke kākoʻo i kekahi mea i ko ia i ka manawa mua loa.
He ʻole nā pōmaikaʻi ʻena a pau, no kekahi kauā. Inā hoʻohana ʻia ka Shor's algorithm kokoke i ka npub i hōʻike ʻia, e loaʻa ana ka nsec. He ʻōleloʻōlelo kaʻaha ka hoʻonui ʻana i ka seed ma luna o ka nsec. No laila, ʻo ka mea ʻino e holoʻike ana i ka ʻaoʻao ʻenā, e hoʻonui hou ana i ka ʻaoʻao post-quantum ma o ka hoʻohana ʻana i ka HKDF e hoʻohana ai nā mea a pau. No ka mea e kūʻē ai i ka "harvest-now-decrypt-later" — ka mea ʻino hoʻokahi i kūʻē ʻia e kēia mea hana — ʻaʻole loaʻa i ka pūʻoʻo i loaʻa ma kēia ʻano kahi mea ʻē aʻe.
Pau loa ka mea huli ML-KEM i ka ʻenehana ʻaʻole hiki ke loaʻa mai ma ka nsec a ʻaʻole pēlā i hoʻouna ʻia i loko o ka hūnā ʻana ʻo ia pē ʻole.
He nui ka hana a ka kāhau lua o kēlā kānāwai e hana ai, e like me ka kāhau mua. He mea huna i hana ʻia ma ke ʻano kūʻokoʻa, a e hoʻohui ʻia pēlā ma waena o nā mea hana o ka mea hoʻohana ma loko o kahi message NIP-44 maʻamau, ʻo ia kau pōʻino pēlā me nā hana ʻē aʻe: e hoʻonāukiuki ana ka mea ʻino i kēlā message i kēia lā, a e loaʻa iā ia ka pūnaewele kēlā me kēia ma hope loa, a e hāʻule ana ka pūnaewele kumu. No laila e like ai nā ala i ka wā e hiki mai ana, a no laila ʻaʻole ʻo kekahi o lākou ka ʻōlelo ʻana i ka 'hoʻouna i kāu mea hana ʻē aʻe'.
3.2 Ke loaʻa ʻana i ka mea kumu i nā mea hana ʻē aʻe o ka mea hoʻohana
Ka Kākoʻo 3 o ka ʻElekele 2 — ʻokahi ka moeʻumehana, he nui nā mea hana — ʻaʻole hiki ke hoʻokō ʻia ma o ka kaʻika helu ma kēia, no ka mea, ʻo ka pahuhopu nui, ʻaʻole he mea hana kēlā pūnaewele mai kekahi mea i loaʻa mua i nā mea hana. Pono e lawe ʻia ma mua o ia, a he ʻe ʻokahi wale nō ka ala: ke lawe nei ka mea hoʻohana i ka nympq1… Hoʻolālā iho lākou.
Hōʻike ʻia ka pū ʻo nympq1… ma kīlua o ka nsec, a he mea hana ʻelua e loaʻa ai ia i hoʻokomo ʻia i loko o ka pānela like ʻia. ʻO ia ka hana holo katoa. ʻAʻole hiki i kahi mea hana i ʻole i loaʻa ka kole ke kūkākūkā pū, i weheweia ʻia e ka ʻaoʻao 4.2.
He kumu i manaʻo ʻia ka hoʻololi manuila ma mua o ka ʻano he pahuhopu mua. ʻO ka kānāwai ma ka Sekishana 3.1 e ʻōlelo ana ʻaʻole hiki ke lawe ʻia ka kumu ma o ka hūnā ʻana ʻo ka ʻano kahiko wale nō, a ʻo kēlā me kēia ʻano hana e hana ai i kēia i mea ʻole pono ka hana manuila — e like me ka hoʻohui ʻana ma o ka mea ʻoki, a me ka hoʻopuni ʻana i ka mea kumu — e hoʻopilikia ana i kēlā kānāwai pono loa. ʻO ka hana i hana ʻia e ka mea hoʻohana ka kumu no ka mea ʻo ia ka mālama maoli.
ʻO ka ʻano e hāʻawi ana i ka manawa no ke ala i pohihi ʻia: hiki i kekahi hoʻāʻo ke lawe i kekahi papa inoa o nā huli, ʻo ia apau he ʻāpana AEAD i loko o kekahi kī i hiki i ka mea hoʻohuna ke hana hou i kekahi mea ʻē aʻe — no ka laʻana, ka huakaʻi PRF o kekahi passkey. ʻAʻole wale nō he mea e hoʻouna ʻia nei i kēia manawa, a ʻo ia manawa, ʻaʻole i hiki mai ai kekahi mea, ʻo nympq1… ʻO ka kōkole ka ala wale nō i ka ʻaoʻao ʻana. Hōʻike ʻia e ka ʻāpana 10.1 ka nui o ka uku.
ʻO ia kāna kumu ʻike ponoʻī noho i kona pākuʻāwehi loaʻa ponoʻī. nymchat-pq-root, a e hoʻonohonoho pū ana me ka ala o nā ʻaoʻao ʻē aʻe. He hana koʻikoʻi nō ia, ʻoiai ʻaʻole i loaʻa i nā pūʻolo: ma o kona loaʻa e ʻike ai ka mea hana ʻelua he kumu ʻo ia nei kēia ʻano, he mea kēia e kūʻokoʻa ai mai ka hana ʻana i kekahi kumu ʻē aʻe (Kālia 3.3).
Ka nymchat-pq-root Pono ka papa ʻaʻole e huna ʻia i ka mea kī ML-KEM i haku ʻia mai ka pūnaewele. ʻO kēlā lālā ka mea i kūkulu i ka mea kope wale nō o ka pūnaewele, no laila, ka huna ʻana i ia i lalo o kahi mea kī i haku ʻia mai ka pūnaewele he kīkopa ia he kī ma loko o ka pōpō: ʻaʻole hiki i kēlā me kēia mea hana ke wehe iā ia, lakalaka ka mea i kākau iā ia. He huna ʻia ia ma ke ʻano kūloko — NIP-44 i ka ʻoiaʻiʻo — a i ʻole ʻaʻole ʻo ia. ʻO kēia ka wahi wale nō i loaʻa ai i ka hoʻolālā ke ʻae i ka mālama kūloko wale nō, a hiki i ia ke hana: ʻaʻole i kūkulu i ka pūnaewele kēlā lālā i kēia lā, akā he ʻike wale nō he pali ka mea e loaʻa ana.
ʻO nā ʻaoʻao hoʻonohonoho kēlā me kēia ʻē aʻe, hiki loa a pono nō e hoʻohana i ka pūnaewele mai ka pūʻulu kumu. He mea ʻapo ʻole wale kēia, a he ʻapo ʻole ia no ka mea hoʻoluhi ma mua o ka ikaika.
3.3 Ka hana ʻana a me ke hoʻohana ʻana
I ka wā e wikiwiki ai, me kahi ʻano ʻike paʻa, e hana ana ka mea kūʻai ma kēia mau hāpana:
- ʻImi i kekahi mea i loaʻa nei
nymchat-pq-roothoʻopaʻa - Ua loaʻa ka moʻolelo, a hiki kēia mea hana ke wehewehe iā ia. — uhi ia a hoʻolaha i kēia ʻano ma ke ʻano he hiki i ka wā ma hope o ka quantum.
- Ua loaʻa ka moʻolelo, a ʻaʻole hiki i kēia mea hana ke wehe i ia. — Mai hana i kahi kumu hou, a mai hoʻolaha i kēlāna mea hoʻolaha ʻo ia paha. E ʻoluʻolu i ka mea hoʻohana e hoʻohui i kēia mea hana ma o ka hoʻokomo ʻana i ka
nympq1…kole mai kekahi mea hana e loaʻa ana iā ia nei - ʻAʻole i loaʻa kekahi moʻolelo — hana i ka kumu, hoʻolathalana i ka moʻolelo, hoʻolaha, a hōʻike i ka
nympq1…kodu i ka mea hoʻohana hoʻokahi manawa i hiki ai iā lākou ke mālama iā ia.
ʻO ka laka ʻe kolu ka laka e maʻalahi ai ka hewa, a ʻo ia nō ka mea e kākau ʻia ai ka hoʻolālā ma mua o ka waiho ʻana i kēlā me kēia hana. ʻO nā mea hana ʻelua i ko lākou koho e hana i kahi māka, e hana lā lāua i nā māka ʻelua ʻole pū ma loko o ka ʻoiaʻiʻo ʻekahi, a ʻo ia nō ka pōʻino e hoʻolālā ʻia ai kēia no ka pale ʻana iā ia.
4Ka hoʻolaha ʻana o ka hiki ʻana
Hoʻolaha ʻia ka ʻaoʻao polū o ka pālua kī i loaʻa mai ʻia ma ke ʻano he mea hiki ke kapa ʻia.
NIP-01
mea hana — ʻano 30078, kāki ʻia 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": [ ... ]
}
}
ʻO ka “addressable” ka mālama ʻana o ka relay i ka hōʻike ʻekahi no kēlāmeva (kind, pubkey, d-tag), no laila ʻo ka hoʻopuka hou ka mea e hoʻoponopono ai i ka hōʻike mua i loko o ka wahi like ʻia. No laila, loaʻa i kēlā me kēia mea ka moʻolelo ʻekahi hou loa, ʻo ia ka mea e hāʻawi ai i ka ʻimi ʻana i ka pūʻili o Alice me ka maopopo loa, ma mua o ka ʻimi ʻana i kahi papa inoa e pono ai ka hoʻohui ʻana.
ʻO ka lopi ka mea hoʻopili. Ua hōʻoia ʻia ka hana ʻia ʻe ka pūnaewele koʻikoʻi, no laila ʻo ka ʻōlelo ʻo “heia ka pūnaewele ML-KEM kēia i ka npub kēia” he ikaika like me ke npub ponoʻī. ʻO ka hoʻohālikelike ʻana i kahi pūnaewele encapsulation ʻē aʻe, pono e hana ʻia kekahi hōʻoia secp256k1 i loaʻa ʻole. ʻO ka mea hoʻomākaukau i hiki iā ia ke hana i kēlā, ʻaʻole pono e nānā i ka KEM.
E hoʻopau ana nā hoʻolaha. He hiku lā NIP-40 Ka hopohopo ʻana, i hoʻopaʻa ʻia hou i kēlā me kēia 24 hola, e mālama ana i ka moʻolelo he ʻōlelo ia e pili ana i kekahi mea kūʻai e hala nei, ma mua o kekahi i hala mua. ʻAʻole e hopohopo mai ka kumu ʻo ia ʻo ia; mai ka ʻōlelo pili iā ia wale nō e hopohopo ai.
ʻO ka hoʻolaha i nalo i ka wā, he mea e heluhelu ʻia e like pēlā me kekahi i ʻole i loaʻa ia ki: e hoʻouna ana nā hoa like me ka NIP-44 maʻamau, a hiki i kēlā me kēia login ke heluhelu iā ia, a e hoʻomaka hou ana ka ʻimene i ka hoʻok exchange ʻana i ka wā ʻana i ka pōkū (post-quantum exchange) ma kona hoʻopili ʻana aʻuna, i ka wā e hoʻopuka hou ana ia. No laila, inā nalo ka leo he wiki a ʻoi aʻe, e nalo ai ke kūpale no nā memo i hoʻouna ʻia i loko o kēlā manawa — he mea e hūnā ʻia ai ma ke ʻano maʻamau (classically encrypted) ma mua o ke ʻano kūpale i ka pōkū (quantum-resistant) — akā ʻaʻole he mea ʻē aʻe i nalo. ʻAʻole i hoʻopilikia ka hoʻouna ʻana, ʻaʻole loaʻa ka mea i loaʻa mua i lilo i mea ʻole e heluhelu ʻia, a ʻaʻole pono e hana i kekahi mea i ka hoʻi ʻana.
ʻO kēlā ʻole pūʻai ke kumu no ka hopena ʻana, ʻaʻole he mea i hana ʻia no ka pilikia. ʻAo ʻole ʻo ia, e mau ana ka hōʻike ma mua o ka kī i hōʻike iā ia: he mea hana i kōpili ʻia, hoʻoponopono hou ʻia, a i ʻole i hoʻololi ʻia ka pūʻulu, e waiho ana i kahi manaʻo mau e hōʻulu ʻulu ai i kahi kī i ʻole i loaʻa i kēlā me kēia kanaka, a e nalo nā memo i hoʻouna ʻia ma kona lalo me ka ʻole o kekahi hewa ma nā ʻaoʻao ʻelua. ʻUmi lā ke kākoʻo i kēlā manawa, a e loaʻa i nā mea hoʻololi ke kūʻokoʻa e hōʻole i ka hōʻike ma ke ʻano he pono, ma mua o ka ʻimi ʻana i ka nānā ʻana a nā mea kūʻai.
Ke inoa nei i kona kaila ka papa inoa koʻikoʻi. ʻO ka papa ʻāina... pk2, a ʻo ka helu paha he ʻāpana kēia o ka kaʻao ma mua o ka hoʻohanohano paha: ʻo ia ka inoa o ka ʻano ʻāpana i hiki ai ke hoʻohana ʻia me ka pūlua. ʻO ka mea heluhelu ʻaʻole ʻike i kēia papa inoa ka mea e ʻōlelo ai, “Nymchat client, ʻaʻole he pūlua post-quantum,” a e hoʻouna i ka NIP-44 maʻamau, ʻo ia ka mea i hiki ke heluhelu ʻia e kēlā me kēia login. He ala kūpono kēlā no ka hapa, a pono e hōʻike ʻia he kānāwai ka mea i loaʻa mai ka helu ʻano: ʻo ka ʻōlelo ʻole ʻia o kekahi waiwai pono, pono e poʻole ka pale ʻana, ʻaʻole ka loaʻa ʻana o ka mea i hoʻouna ʻia. He mea ʻoi aku ʻino ka pūlua ʻaʻole hiki i ka hoa pili ke hoʻohana ʻia ma mua o ka ʻole o kahi pūlua, no ka mea, ʻaʻole loaʻa ka memo i hana ʻia a ʻaʻole loaʻa pū kekahi hapa ʻino ma obu ʻaoʻao.
4.1 He mea waiwai ka ʻole, a he kolu kumu.
He mea liʻiliʻi akā koʻikoʻi: ke hoʻolaha ʻia nei e kēlā me kēia Nymchat client, ʻaʻole wale nō nā mea hiki i ka wā post-quantum, a he mea hiki ke hoʻoholo ʻia ka papa inoa pūnaewele. He mea e hāʻawi ai i nā kūlana ʻekolu e ʻike ʻia ana ma mua o nā ʻelua:
| ʻIʻike ʻia | ʻO ke ʻano | Hoʻouna ʻano hana |
|---|---|---|
| Hoʻolaha me ka kī | Nymchat, hiki ma hope o ke kuamana | Hui ʻia |
| Hoʻolaha, ʻaʻole he kī maopopo | Nymchat, ʻo ka ʻano kahiko wale nō — ʻaʻole i ʻonā ka post-quantum, a he mea hoʻohana ʻaʻole i hoʻopili ʻia i ke kumu o ka ʻike loa. | Kālānika NIP-17 |
| ʻAʻole he hoʻolaha | ʻAʻole i ʻike ʻia ka mea hoʻohana. Hiki ke unu i kēlā me kēia mea hoʻohana Nostr a i ʻole Bitchat. | Kumu, me he pūpū hoʻohālikelike |
He mea nui ka hāʻule inā hoʻopaʻipai ʻia ka lālā hope uku ʻehā i ka lālā hope uku ʻena. He hoʻolaha ʻole i ke kī ka ʻōlelo i hāʻoia ʻia e hōʻike ana he mea hoʻohana Nymchat ka mea hoʻouna, e hiki ai i ke ala hoʻouna ke kīpau i kahi pūʻolo protokole like ʻole i ka manaʻo wale nō, i ʻole, pono e hoʻohui ʻia ia no kēlā me kēia i ʻole e ʻike ʻia.
4.2 He mea hana i ʻole ai ka wehe ʻia i ka pū, e hāmau ana.
Hiki ke hoʻololi ʻia ka hoʻolaha: he hana no kēlā me kēia inoa, ʻo ka mea hope loa i kākau ʻia ka mea e holomua ai. ʻO ia ka mea e hana ai i ka hoʻolālā ʻimana wale nō, a ʻo ia nō hoʻi ka mea e hoʻino ai i kekahi mea hana ʻole i hoʻokau ʻia i ka lālā inā hoʻolaha ʻia. He mea hana e hoʻolaha ana i kahi kī i hana ʻia no ia ʻoiaʻiʻo e hāʻulihue ana i ka ʻoihana maoli a e hoʻouna i kēlā me kēia hoaaloha e hūnā i loko o kahi kī i ʻole hiki i nā mea hana ʻē aʻe ke wehe.
No laila, he mea hana e ʻike nei i ka loaʻa ʻana o kahi kumu akā ʻaʻole hiki ke wehe iā ia, ʻaʻole ʻo ia e hōʻike i kēlā me kēia ʻōlelo. ʻAʻole ʻo ia i ʻino a ʻaʻole pū i kī ʻia mai i ka polokalamu: e heluhelu nō ia i kēlā me kēia memo i loaʻa iā ia nā pīkini, a e hoʻouna nō ia i ka ʻano maʻamau, i ka wā e hōʻike ana i ka mea hoʻohuna e lilo pū ai ia. ʻO ka ʻole o ka leo ka hana kūpono no kahi mea hana ʻaʻole hiki ke ʻōlelo no ka ʻike loauna.
5Ka ʻike ʻana a me ka hoʻoholo e hoʻouna
Ke ʻike nei nā mea kūʻai i nā kī o nā hoa ma nā ʻano ʻelua. ʻO ka hoʻopaʻa mau ʻana ke kākoʻo i ka poʻe e kamaʻilio mau ai ka mea hoʻohana — nā kamaʻilio wehewehe ʻia a me nā lālā o ka hui — i mea e hiki mai ai nā hoʻolaha ma ke ʻano he hana maʻamau. No ka hoa i hālāwai ʻia i ka manawa mua loa, e neʻe ana kekahi nānā ʻekahi manawa i ka manawa e hoʻouna ai, me ka hoʻopoki ʻana i loko o nā sekana 2.5; inā ʻole loaʻa ka pane, e loaʻa ana ka ʻōlelo ma ke ʻano kahiko, ʻo ia ka hana i loaʻa ma mua o ka hoʻokomo ʻana i ka ʻano post-quantum, ʻae ʻole he ʻano hāʻule hou.
Ke mālama ʻia nei he hopena ʻaʻole no ka iwakālua minaka ma mua o ka mau loa. Inā hoʻopili kekahi mea hoʻohana i kekahi mea hana hou, a i ʻole i pā ana mai ka login ma o ka browser-extension i ka pūnaewele kūloko, lilo ʻo ia i mea hiki ke hoʻohana i ka ʻenehana post-quantum i waena o ka kamaʻilio ʻana, a ʻo ka mālama ʻia ʻana o ka “ʻaʻole” i ka manawa piha e mālama ana iā ia ma ka ʻenehana hūnā kū:ʻono no ka manawa o ka hoʻolaha ʻana.
5.1 No nā aha ʻole ai he hoʻopiʻi downgrade
Lilo ke koho ʻana i ke ala i kahi nīnau hoʻokahi wale nō:
pq = (we hold a signed, unexpired ML-KEM key for this recipient)
ʻAʻole i luna i ka kūkākūkā i ka hiki ʻana i ka hana, ʻaʻole i luna i ka papa inoa o nā ʻano hoʻohana ʻia, a ʻaʻole i luna i kekahi kahua e hiki ai i ka mea ʻino ke hōʻole e koho i kahi ala haʻahaʻa. Ke mālama nei i ka hoʻolaha ʻana. ʻo ia ka kūkākūkā, a ua inoa ʻia ia. ʻO ka ala o ka hapa o kahi hoʻolaha i huli ʻia ʻole a i māhalu ʻia, ʻo ia ka lilo ʻana o ka ʻōlelo i ka ʻano kahiko — ka mau koʻikoʻi ma mua o kēia mea hana — ma mua o ka loli ʻana o kahi ʻōlelo kūpaoʻa i mea hiki ke hana pololei ʻole.
E kūpono nō pū ka mea ʻē aʻe a he mea nui aʻe nō: e hoʻouna ana kekahi mea kūʻai i ka hybrid Wale nō I ka wā e loaʻa ai kahi kī, a he hōʻike ka loaʻa ʻana o ka kī e hiki ai i ka mea loaʻa ke wehe i ka pākalu. ʻAʻole i loaʻa kekahi mau kūlana e hoʻouna ʻia ai kahi leka post-quantum i kekahi kanaka ʻaʻole hiki ke heluhelu i ia.
6Ka hana kūkulu hapa
ʻAʻole Nymchat e hoʻopāpā i ka NIP-44. He hoʻopili ia iā ia. He ʻaoʻao loko ka ciphertext NIP-44 ʻole ka hoʻololi ʻana, a he AEAD waho mai nā ML-KEM key ma lalo o ia:
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)
Pono e loaʻa mau ʻelua ka mea huna no ka heluhelu ʻana i ka leka: ʻo ka pūʻulu ʻewei e hāʻawi wale nō i ka NIP-44 ciphertext, a ʻo ka wehe ʻana i kēlā pono i ka ECDH kūloko. He mea ʻino quantum i hoʻopau i ka secp256k1 e loaʻa ana i ka pūlima ʻoiaʻiʻo a ke kūpau mau nei i ka ML-KEM; ʻo ka hoʻopau ʻana i ka ML-KEM e hoʻolele ai i ka pūʻulu ʻewei a mālama ana i ka NIP-44. ʻO kēlā me kēia mea hoʻokomo e loaʻa ana i kona kūlana:
kem_sske kī wale nō o ka pūʻulu ʻaoʻao. ʻAʻohe mea i kēia hoʻohuli ʻana e launa pū me ka hāʻawi ʻana i ka ECDH pololei, ʻo ia ka mea i hoʻākea ʻia e ka kāpana 6.1.kem_ct,recip_kem_pka ʻo nā pūnaewele hōʻike ʻelua pū i hoʻohui ʻia ma ke ʻano he ʻike kōkua, no laila, ʻo ka pūnaewele luna ke kōkua pololei i ka moʻolelo i hana ai iā ia. ʻO ka hoʻopili ʻana i kahi huaʻōlelo pāʻalaʻau i ka hōʻike o kekahi mea hoʻouna ʻē aʻe, e kūpono ʻole i ka hoʻohālikelike ʻana ma mua o ka wehe ʻana i ka manaʻo.
Ke hana hou ʻia ka hoʻopuni ʻana i kēlā me kēia ʻōlelo. He lōʻihi ka ola o ka pūnaewele ML-KEM o ka mea loaʻa, akā, ʻāpana ʻōlelo kēlā me kēia e lawe ana i kahi ʻōlelo huna kūʻokoʻa, a no laila, he kūʻokoʻa
kem_ss. ʻO ia ka mea e hana ai i ka loaʻa ʻana i ka nonce ma mua o ka hoʻohāuna ʻana i ia e kūpono ai:
ChaCha20-Poly1305
He hāʻule ʻia ia ma o ka hoʻohana hou ʻana i ka ʻāpana (key, nonce), a ma kēia, he mea hou ka ʻoe no kēlā me kēia memo, no laila ʻaʻole hiki ke hoʻopili hou i kekahi ʻāpana.
6.1 No nā aha e mau ai nā papa i ka ʻawale
ʻO ka ala ʻē aʻe ke hoʻohui ʻana i nā mea huna ʻelua i kahi kī kamaʻilio hoʻokahi a hāʻawi iā ia i NIP-44:
ck = HKDF-Extract(salt = "…",
IKM = ecdh_x || kem_ss || …) // do not do this
He mea kūpaʻa kēlā mea kūkulu ma ke ʻano he cryptography. He pilikia kūkulu ʻokahi kēlā: pono ia i
ecdh_x, ka x-coordinate ʻole ʻia o ka huakaʻi ECDH, ma ke ʻano he mea kī — a me he mea hoʻonui polokalamu puʻuwai (NIP-07) a mea kākau mamao (NIP-46) ʻaʻole e hoʻi mai ia waiwai. E hana ana ʻo ia i ka NIP-44 no ka mea e noi ana, a e hāʻawi mai i kahi pāʻala ʻōlelo, ʻo ia ka pahuhopu nui o ka mālama ʻana i ka pīkini ma kahi i ʻole e hiki i ka polokalamu ke ala e hiki aku ai.
No ka hoʻohui ʻana i nā mea huna, e hoʻokaʻawale ana ia i kēlā me kēia hoʻokomo ʻana e mālama ana i ka pūʻolo hōʻike i loko o ka mea kākau (signer), ʻo ia paha nā mea hoʻomākaukau loa, a ʻaʻole hiki i kēlā me kēia hana ma luna o ka hoʻomaka ʻana i ka pūʻolo ke loli i kēia. ʻO ka hoʻohui ʻana i nā papa ke hoʻopau i ka pilina: e mau loa ka NIP-44 a ʻo ia ke hana ʻia e ka mea ʻo ia nei e mālama ana i ka pūʻolo hōʻike, me ka mea kākau pū, i ka wā e noi ʻia ai ka hapa KEM mai ka kī hoʻopuke e mālama ʻia nei e ka mea kūʻai ponoʻī. He kaiaʻai maʻamau ma hope o ka pūʻolo quantum nā hoʻokomo ʻana i ka mea kākau ma nā ʻaoʻao ʻelua.
ʻO ka bandwidth ka uku, a he nui loa ia. ʻO ka ML-KEM ciphertext ka 1,088 bytes a hele pū me kēlā me kēia ʻōlelo, i ʻenā ʻia ma ka base64url i loko o nā helu 1,451; ʻo ka AEAD lōʻihi e hoʻohui ana i ka 16-byte Poly1305 tag a hoʻonui i ka NIP-44 payload i loko o ka hope ʻekolu. ʻO ka ʻōlelo i loko o nā helu 50, e ulu ana mai ka 176 bytes i ka 1,712, a ʻo ka ʻōlelo i loko o nā helu 2,000, mai ka 2,820 i ka 5,238. ʻO ka nui i lalo aʻe ʻo ka 1.5 KB no kēlā me kēia ʻōlelo, ʻoiai he pōkole ka ʻōlelo, ʻo ia ka uku no ka hana ʻana i ka encapsulation hou i kēlā me kēia manawa ma mua o ka hoʻohana ʻana i kekahi pilikino i loaʻa mua.
6.2 Nā ʻikepili hoʻōmolomolo ʻo ia iho
Ka pq2. ʻO ka kumu mua ka mea e hana ai i ka hoʻonohonoho ʻana i kēlā me kēia ʻana: he mea e wehewehe ana i kona iʻo ia, no laila ke koho nei ka mea hoʻohana i ka ala hoʻopuka ma o ka nānā ʻana i ka mea kikoʻī, ma mua o ka hilinaʻi ʻana i kahi ʻāpana a i ʻole ka hoʻomanaʻo ʻana i ka mea i kākoʻo ʻia e ka hoa. Inā ʻaʻole ʻike ka mea heluhelu i ka kumu mua, ʻaʻole e hiki iā ia ke wehe i kēlā mea kikoʻī ma mua o ka hewa ʻana o ka heluhelu, a ʻo nā ʻōlelo i pilili ʻia ma mua o ka hiki ʻana i kēlā ʻaoʻao i hana i ka post-quantum, e mau ana ka hiki ke heluhelu ʻia ma ke ʻano he NIP-44 maʻamau me ka ʻole o ka loli ʻana.
ʻAʻole i hoʻolālā ʻia ka decapsulation ML-KEM e hapa ai: inā he ciphertext hewa, ke hoʻihoʻi nei ka Fujisaki-Okamoto transform i kekahi pilikino deterministic pseudo-random ma mua o kekahi hewa. No laila, ʻaʻole hōʻea ka kī hewa i ka ʻaoʻao KEM ʻae loa — hōʻea ia ma ke ʻano he hewa HMAC i loko o NIP-44, ʻo ia pēlā ka ala e hōʻea ai kekahi classical key hewa. He me ka like ke hana ʻia e nā mea hoʻohana i kēlā me kēia, no laila ʻaʻole loaia he hōʻike i ka ʻole o ka mea ʻē aʻe i ka hewa. He mea kēia e hana ai i ka papa inoa koho o ka Kā Kohaha 9.1: ke hoʻāʻo nei ka mea kūʻai i kēlā me kēia kī i kēlā me kēia manawa, a pane NIP-44 i ka mea kūpono.
6.3 Nā pāe ʻelua o ka kapa kahu mea hala
A NIP-17 he leka pilikino ʻo NIP-59 Hoʻohāpaku: he moʻolelo ʻaʻole i hāʻali ʻia, i kūʻoia ʻia ma luna o ka pūʻoʻo hōʻike ʻana o ka mea hoʻouna (mea ʻano 13), a i hope, i hāpaku ʻia ma luna o ka pūʻoʻo ʻāʻole e hoʻohana hou ʻia i kēlā me kēia leka (mea ʻano 1059). Ma luna o kahi login e nānoʻo ana i ka pūʻoʻo hōʻike ʻana ponoʻī, ke hoʻohui nei ka Nymchat i nā papa ʻelua, me kona hoʻohāpaku ponoʻī i kēlākou ʻelua.
ʻO ka hoʻokomo ʻana i ka mea kālepa, ʻo ka pūʻulu ʻaoʻao wale nō ke loaʻa iā ia. ʻO ka hōʻailona ke hana ʻia e ka mea kālepa ma ke ʻano he NIP-44 maʻamau — ʻaʻole ʻike ka polokalamu i ka mea kī e hana ai iā ia — no laila, ʻaʻole hiki ke hoʻohui ʻia ma kēlā wahi. ʻAʻole he kumuwaiwai kēia no ka hoʻonaʻauao i kūʻai ʻia nei: hiki wale ke loaʻa ka hōʻailona ma o ka pūʻulu, a ʻo ka pūʻulu ka mea e mālama ai ka mea hoʻihoʻi. Pono ka mea ʻino e hoʻopau i ka ML-KEM ma mua o ka ʻike ʻana i ka hōʻailona no ka hoʻonaʻauao ʻana.
7Nā leka hui a me ka hāʻawi ʻāpana kīkēkē
ʻAʻole he mea i hūnā ʻia hoʻokahi ka memo kapa ʻauhau. He ʻōlelo ʻole hūnā like pū ia i hoʻolaha ʻia i kēlā me kēia lālā, a ʻo kēlā me kēia kākoʻo i hoʻopaku ʻia i ka pūnaewele ML-KEM o kēlā lālā ponoʻī. ʻO ka lālā i hōʻike i ka pūnaewele i loaʻa iā ia ka hōʻuluʻulu hapa ʻole; ʻo ka mea ʻaʻole i hana i kēlā, e loaʻa iā ia ka hōʻuluʻulu kahiko.
He pilikia i ka nānā ʻana i ka loaʻa kēia i kūpā ai ka hana maʻalahi. Inā loaʻa i ka ʻewalu o ka ʻumikūmā ʻimemi ka kope mīkseri, ʻo ka ʻōlelo ʻia... ʻaʻole e kanawalu o ka ʻumi i mālama ʻia. Pono ka mea kūʻē i kahi kopi ʻolena o ka ʻōlelo kumu i like loa i nā ʻumi a pau, no laila, mālama ʻia ke mea ʻōlelo inā wale nō kēlā me kēia He kopi.
No laila, e nānā ana ka Nymchat i ka nui o ka huli ʻana o kēlā me kēia ʻōlelo i loko o ka hoʻolaha ʻana — ʻaʻole hiki ke ʻike i ka nui i ka wā e hana ʻia ana nā pūʻolo — a ʻōlelo ka mākena he “paʻa i ka loli quantum no 8 o nā lālā 10” ma mua o ka ʻōlelo ʻana he palekana ka ʻōlelo. Ma kahi e ʻole ai kahi nui, ʻo ia ka mea maʻamau no he Ua loaʻa leka kōkua (ke mea kākau wale nō ke nānā i ka hāʻawi ʻana), ʻo ka hōʻike ʻana o ka pūnaewele he huna wale nō ka pale, ʻaʻole he piha. ʻO ka ʻōlelo ʻana he piha ka pale ma o ka mea i loaʻa i ka mea kākau wale nō, he ʻōlelo nui loa ia no ka leka holo holo.
7.1 Ka mea i hōʻike ʻia e ka pāpā
Ke hōʻike nei ka pā i ka ʻoiaʻiʻo e pili ana i ka lekule, ʻaʻole e pili ana i ka polokalamu i hoʻouna i ia:
- Palena piha: ua hele ʻia kila kope o kēia ʻōlelo maʻalahi ma ke ʻano hapa.
- Hapa: ua puka nā kope o kekahi leka hui ma ke ʻano kumu. Ua loaʻa i ka ʻano hapa ma mua o ka piha, no ka mea, he kope kumu ʻākea o ka ʻōlelo ʻike e like me nā mea a pau ka mea i pono ai ka mea ʻino.
- ʻŌlelo pololei ʻia ʻo Classical ma mua o ka hōʻike ʻana he kamepiula ʻole, no ka mea he mea mālamalama ʻole ka ʻole o ka hōʻike ma waena o ka 'ʻaʻole pale ʻia', 'he ʻino', a me 'ʻaʻole i loaʻa kēia mea kūpao i kēia hana'.
Ke kākau ʻia nei ka hoʻoholo i ka manawa e pilili ʻia ai ka lekilio, ma mua o ka hoʻonāhou ʻana mai nā mea i hōʻike ʻia e kekahi hoaaloha i ka manawa e hiki mai ana. ʻAʻole hiki i ka lekilio pilili i loaʻa mua i loaʻa i kēlā ke lilo i mea i ʻoi aku ka mālama ʻia ma mua o kona ʻano mua, a he ʻano kīwī e hoʻonohonoho hou ana i nā lekilio kahiko ma muli o ka ʻōlelo hou e ʻōlelo ana i mea hewa e pili ana i nā byte ma luna o ka relay.
Hoʻohui pū ʻia nā kānāwai hui i luna aia i kēia ma mua o ka hoʻololi ʻana i kēia: ʻo ka leka hui, he pololei ka mālama pono ʻia ʻana ma mua o ka loaʻa pono ʻana o ka leka i kēlā me kēia lālā, a ʻo ka leka hui i loaʻa me ka ʻole o ka nui o ka mālama ʻia ʻana, hōʻike ia i ka hapa.
8Nā kope helu ʻia iā ʻoe ponoʻī
He nui nā mea i mālama ʻia e ka mea hoʻohana (client) i hūnā ʻia ma o ka pilikino o ka mea hoʻohana ponoʻī: nā hoʻonoho i hoʻohui ʻia, ka papa inoa kamaʻilio, nā pūnaewele pūʻulu, a me ka pahu kuhikuhi o nā memo. He nui ka mea e hōʻike ana kēia i ka mea hoʻohana ma mua o nā memo kikoʻī, no laila, inā waiho ʻia lākou i ka ʻano kahiko, e lilo lākou i ka mea i ʻoi loa ka hāʻule o nā mea i mālama ʻia, ʻoiai i hūnā ʻia i ka pololei o nā memo ponoʻī. Hoʻohana lākou i ka hoʻolālā hoʻohui pū e like me ka mea i hūnā ʻia ma luna o ka pūnaewele kumu o ka mea hoʻohana ponoʻī — me ka mea ʻole wale ʻia i hōʻike ʻia ma Kapa 3.2, ka nymchat-pq-root ka ʻano ponoʻī, e ʻole e pūʻi ʻia ma lalo o
kahi kī i hiki ʻole iā ia wale nō ke hana ʻia.
Ma kēia mau mea hana e koʻikoʻi loa ai ka hoʻolālā. He ʻāpana hoʻolālā a i ʻole he lula i loko o ka pahu kuhikuhi ke noho ʻia ma kahi hoʻokahi no nā makahiki he nui, ʻo ia ka mea i huli ai ka poʻe ʻino e hoʻonāponopono i kēia manawa no ka wā e hiki mai ana — ma mua o kēlā me kēia ʻōlelo wale nō, ʻo ia i ka manaʻo o ka mea hoʻohana, he mea liliʻi wale nō.
He kumu kānāwai hoʻokele i ka papa ʻano ma kēia ʻana ma mua o ka mea kī. Pono e hiki ke heluhelu ʻia he kope i kī ʻia me ka inoa o ka mea e loaʻa ana e kēlā me kēia ka mea hana ma ka loaʻa, no laila ʻo kēlā me kēia mea hana e hōʻike ana i ka mea hiki iā ia ke wehe ma ka papa inoa e loaʻa ana ma kona ʻōlelo ʻana, a ʻo ka loaʻa e kākau wale i ka mea hiki iā lākou a pau ke heluhelu. ʻO ka kākau ʻana i kekahi mea ʻē aʻe e kī ana i ka mea hana mai kāna mau hoʻonohonoho ponoʻī — ka pōʻino huna pūna i pale ʻia e ka ʻaoʻao 3.2 ma nā ala ʻē aʻe, mai kahi ala ʻē aʻe e hiki mai ai.
He mea hana e nāu ana i ka pilina akā ʻaʻole i ka kumu, ʻaʻole hiki ke wehe i ka mea a pau i hiki loa i ka pīkini mai ka kumu, inklusi kāna mau hoʻonohonoho ponoʻī. He hopena ia i hoʻonohonoho ponoʻi, ʻaʻole he mea ʻano, a ʻo ia ka mea e ʻano ai Ka ʻaoʻao 3.3 e hōʻike ana i ka ʻōlelo e hoʻohui ai ma mua o ka hana ʻana i kahi kumu hou: ʻaʻole e hana i ka mea (blob) i hiki ke heluhelu ʻia kahi kumu ʻelua, e hoʻopiʻi wale ana ia i ka mea pīkini o ka pilina i mau pāhalu ʻelua. A hui mai ka manawa e hoʻohui ai ka mea hoʻohana, e mau ana ka hana o ka mea hana — e heluhelu ia i ka mea i loaʻa iā ia nā pīkini a e hoʻouna i ka loli ma ke ʻano maʻamau.
He mea hana e hoʻokele ana i kekahi polokalamu ʻimena (browser extension) a i ʻole he mea ʻili mamao (remote signer) (NIP-46) kā ʻole i loaʻa ia he nsec e hoʻohuli ai, akā loaʻa ia ka ʻōlelo hoʻopunipuni (recovery code), a ma lalo o ka hoʻolālā lōpā o ka ʻaoʻao 6.1, ʻo ia ka mea aʻe ka mea e pono ai no ka ʻaoʻao post-quantum: ke hana nei ka mea ʻili i ka lōpā NIP-44 e like me ka hana mau ʻana, a ʻo ke client ka mea e kī ai i ka lōpā ʻole i loko ponoʻī. ʻO kēlā ʻano login kekahi mea kūʻai maʻamau ma nā ʻaoʻao ʻelua.
9Huli ʻana
Ka epoch ʻO ka mea loaʻa ma ka hoʻohuli ʻana ka mea e hiki ai i ka hoʻoweliweli me ka ʻole o nā mea kī hou. ʻO ka hoʻonui ʻana iā ia, e hāʻawi ana i kahi ʻaoʻao kī hou mai ka kumu pū a me kahi hoʻolaha hou; e loaʻa ana i nā hoa pāʻoihana ka kī hou mai ka moʻolelo hiki ke hoʻololi ʻia. No laila, ʻaʻole e ʻimi i ka mea hoʻohuli ana i ka mea hoʻohana e kākau hou i kekahi mea: hoʻomaka ʻia ka kumu i ka ʻekahi wale nō no kēlā ʻano kahu a ʻo ka wā (epoch) ke hana i ka hoʻoweliweli.
9.1 E mālama ʻia nei nā wā kahiko, a ʻaʻole he mea e hoʻohuna hou ʻia nei
ʻAʻole mea hou ʻia i ka loli ʻana o kahi pūlima. Ke hana nei ka mea kūʻai i nā mea kuli ʻana mai ka manawa ʻekopa o kēia a hiki i ka manawa ʻekopa - 3, no laila, ʻo ka leka i kākoʻo ʻia i ka wā i mua ʻole i ka loli ʻana, e ala nō ia ma o ka pūlima i loaʻa i ka manawa i hoʻouna ʻia ai.
He window kēlā e hana ai i ka huli ʻana i ka pololei: ʻole ia, e lapaʻau ana ka huli ʻana i kēlā mea e hele nei. He mea kēlā i pūʻiwa ʻia nei, e hiki nō ke heluhelu ʻia no ka manawa o ka ʻike, no ka mea, he mea ʻino aupuni ka memo i ʻole hiki i ka mea hoʻohana ke wehe ʻia ma mua o ka mea i ʻole hiki ke hoʻomaikaʻi ʻia kona pale ʻana ma hope (Kā Kohno 10.5).
10Ka mea ʻaʻole e pale ʻia e kēia
ʻO ka lepapapa e hōʻike wale ana i ka mea i loaʻa mai ke kālele ʻana, ʻaʻole ia he wehewehe ʻana i kahi polokalamu, a he ʻoi aku ka ʻino o ka hōʻike ʻana i kahi mana palekana nui ʻia i loko o kahi hālāwai ma mua o ka ʻole ʻana o ia mea. ʻO nā mea e hiki mai nei, ʻaʻole lākou i loko o ka mea i mālama ʻia e kēia hoʻolālā.
10.1 ʻO ka kumu he huna lua, a ʻaʻole hiki ke loaʻa hou inā nalo.
He kēia ka ikuna loa o ka hoʻolālā. ʻAʻole hiki ke loaʻa ka waihoʻi i ka ʻaoʻao 2 e pono ai ka mea hoʻohuna e mālama i kekahi mea wale nō: ʻaʻole ka nsec wale nō e hoʻopili hou i ka kī post-quantum, no ka mea, ʻo ia ka pahuhopu nui, ʻaʻole he waiwai kaulike a he mea huna ʻē aʻe e hōʻike iā ia. Inā ʻaʻole he mea hana e nāna i ka pūnaewele (root) a ʻaʻole hiki ke wehe ʻia none ʻo nā wrap i ka ʻaoʻao 3.2, ʻaʻole hiki ke loaʻa hou ka mea i kīpili ʻia i ka kī i haku ʻia mai ka pūnaewele. ʻAʻole he escrow a ʻaʻole loa he mana e hiki ai ke mālama i kekahi.
Ma ka hoʻololi manuila ke ala wale nō, he ʻoi aku kēia ma mua o ka nānā ʻana mua loa. He mea hoʻohana ʻaʻole e hoʻopiʻi i ka nympq1… He kōdī i kēlā me kēia wahi i loaʻa ai kahi hoʻokopi ʻekahi wale nō, ma kahi mea hana ʻekahi, a inā poina kēlā mea hana, e poina ai nā memo pōkole (post-quantum), nā mea hoʻonohonoho (settings blob), a me nā lāna i loko o ka pahu (archive row) i kī ʻia me ia. Ke
nsec ʻaʻole kōkua; ʻo ia ka ʻano i kū ai ka hoʻolālā holoʻokoʻa.
Pono kēlā me kēia ala hāpaha i hoʻokomi ʻia ma hope e kūpaʻa i ka pūʻolo pūpū i kūpaʻa ai ka ala hana maʻamau. E ʻōlelo ʻana i ka ala māmā loa e loaʻa ana ka mea hoʻopunipuni, no laila, ka waiwai o kahi hoʻohana e like me ka waiwai o kona ala hoʻopuliholi uē loa — no kaʻano, he huaʻōlelo hāpaha e mahalo ʻia ai, e hoʻonui ana i ka waiwai o ka mea holoʻokoʻa i ka waiwai o kēlā huaʻōlelo wale nō, a ʻo ka hapa hāpaha ke mea kikoʻī i hōʻuluʻulu ʻia e ka mea hoʻopunipuni e hōʻuluʻulu i kēia manawa e wehe ʻia ana ma hope, a e ʻimi loa ʻia ana i ka wā i kūpono ai.
10.2 Hoʻohō ʻoiaʻiʻo, i mea ʻole o ka pilikino
ʻO kēlā me kēia inoa ma Nostr he Schnorr ma luna o secp256k1, a ʻaʻole i loli ʻia ia ma kēia. ʻO ka mea ʻino i loaʻa nā kamepiula quantum, hiki iā ia ke hana i nā inoa i kūpono ʻole a e lilo i ka mea hoʻohana i ka manawa maoli. ʻO ka mea e kūʻē ai ka hoʻoholi ʻana i ka pūnaewele (hybrid key exchange) ʻo ka ʻimi i kēia manawa a e wehe i ka wā e hiki mai ana: ʻaʻole hiki i ka mea ʻino e hoʻopaʻa i ka ʻike i kēia lā e heluhelu iā ia i ka wā e hiki mai ana. ʻAʻole ia e hana i ka ʻōlelo i mea ʻaʻole hiki ke hana i kahi inoa i kūpono ʻole no ka mea ʻino i loaʻa kēlā kamepiula. Ua hoʻoholo pono ʻia kēia ʻili i loko o nā polokalamu — ʻo ka hōʻailona kīʻā ke hōʻike nei i ka ʻoiaʻiʻo, ʻo ka pāʻa ke hōʻike nei i ka pilikino, a he mau hōʻailona ʻokoʻa lākou no ka mea hiki i kahi ʻōlelo ke loaʻa kekahi me ʻole ke ʻeke ʻāpau.
He mea hoʻopoki pū kēia i ka mea i hiki ke ʻōlelo ʻia ma ka ʻaoʻao 4. ʻO ka hoʻopili ʻana ma waena o ka npub a me ka ML-KEM kī, he inoa secp256k1 kēlā, no laila inā hiki i ka mea ʻino ke hana i nā inoa i kūpono ʻole, hiki iā ia ke hoʻopili i kekahi kī o kēlā. ʻAʻole like ka pilikino ma mua o ka mea ʻino e hiki mai ana me ka ʻoiaʻiʻo ma mua o kekahi mea ʻino.
10.3 Nā ʻike kikoʻī
Huna ka hoʻopaʻa ʻana i ka mea kala i ka mea hoʻouna, ka mea loaʻa ma mua o ka mea hoʻokahi p ka hua, ka ʻano, a me ka manawa o ka ʻōlelo loko. ʻAʻole ia e huna i ka loaʻa ʻana o kekahi mea kū ʻia, kona nui, a i ʻole i ka manawa i loaʻa ai i ka relay. ʻAʻole i pili ke nānā ʻana i ke holo ʻana o ka ʻōlelo i kēlā me kēia ʻaoʻao o kēia hoʻolālā.
10.4 Ka pāpali ma waho o ke kikoʻio
He papaʻōlelo ʻō ʻole ka hoʻouna Bluetooth mesh o Nymchat me kona ʻano hoʻomaka ponoʻī, a ʻaʻole i hāʻawi ʻia e kēia hana. He ʻōlelo kumu nā ʻōlelo ma luna o ka mesh.
10.5 Nā leka ua hoʻouna ʻia
E mau ana i ka ʻano ʻenana i ka manawa loa ka leka huna i hoʻihoʻi ʻia i ka wā i loaʻa ai i kekahi ʻaoʻao ka ʻano ʻenana. Eia nei ia a ʻaʻole hiki ke hoʻohui hou ʻia. E hoʻomaka ka mālama ma ka leka i kahi e loaʻa ai i nā ʻaoʻao ʻelua nā pohona post-quantum, ʻaʻole i ka manawa i ʻāpale ʻia ai ka mea hana.
11Nā ala ʻē aʻe i nānā ʻia
| Ala | He aha ka mea i ʻole ai? |
|---|---|
| Haku i ka kī ma hope o ke kauwā mai ka kī o ka ʻano. | Hoʻopaʻipai ʻia. He polokalamu imiakalele ka hoʻonohonoho ʻana ma luna o ka nsec, a e loaʻa ana ka nsec i ka mea ʻino quantum mai ka npub i hōʻike ʻia, no laila, inā hoʻopili ʻia ka ʻaoʻao kūakā, e hāʻawi pū ana ia i ka ʻaoʻao pōkiʻi quantum me ia. Ua hoʻoponopono ia i nā pilikia hoʻolālā ʻana a pau i loko o kēia pepa, akā ʻaʻole i mālama i kēlā me kēia mea. Kala 3.1. |
| Hoʻouna i ka root i nā mea hana ʻē aʻe o ka mea hoʻohana ma o ka NIP-44 | Hoʻēmi ʻia no ka mea like ʻia i loko o ka ʻano ʻē aʻe. He kumu i hoʻouna ʻia ma o ka hoʻopaʻa ʻōlelo ʻepekema wale nō, hiki ke loaʻa hou i kēlā me kēia i hoʻopaʻa i kēlā ʻōlelo a e hōʻea i ka mea kī i hope, ʻo ia nō ka mea ʻino i kū ʻia e ka kumu e kūʻē ai. |
| He pālua kī ML-KEM i hana ʻia ma ke ʻano he mea ʻimua ʻole ma kēlā me kēia mea hana | Hoʻēmi ʻia. E loaʻa ana i nā mea hana nā pūʻolo hoʻopuka ʻike ʻē lạhihi, a ʻaʻole hiki i ka hoʻolaha hoʻopili ʻia no kēlā me kēia inoa ke lawe i nā mea a pau. E hoʻopaʻa ana nā hoa i kēlā pūʻolo i hoʻolaha ʻia i ka hope loa, a ʻaʻole hiki i nā mea hana ʻē a pau ke heluhelu i ka hopena. He kumu ʻokimana no kēlā me kēia inoa, e neʻe ʻia ana ma o nā ala o ka ʻaoʻao 3.2, ʻo ia ka mea e pale ai i kēlā mea. |
| E haku i ka kumu i lalo o kahi PIN | Kūʻole. He PIN heia loa ʻehia nomu ia e like me nā ʻumi kūmāhā bit ʻea ma mua o ka mea hoʻopunipuni ʻole i loko o ka pūnaewele e nāu ana i ka lapa ʻia ʻia o ka papa. Ke hāʻawi ʻia ia ma luna o ʻelua ala 256-bit, e hōʻike hewa ana ia i ka waiwai o ka lapa ʻia ʻia ʻoi loa ʻole. |
| Hoʻonui i ka npub e lawe ana i ka ʻelua mau pāpā | ʻAʻole ka 1,184 bytes he inoa e hiki ai ke kaʻawale, a e hoʻopilikia ana ia i ka hoʻomaopopo ʻana aʻe o kēlā me kēia polokalamu Nostr aia nei o kahi ʻeleʻele i hoʻonohonoho ʻia he 32 bytes. |
| He lawelawe puke nānā koʻikoʻi | Hoʻihoʻi mai i ka mana i mea e pale ʻia ai e ka pūnaewele. ʻO ka mea e pane ana i ke ʻimi ʻana, ʻo ia nō ka mea e hoʻoholo ai i ka poʻe hiki ke heluhelu i ka memo. |
| Hoʻopili i ka kī i kēlā me kēia leka | ʻAʻole ia e hoʻopono i kekahi mea: e pono ai ka mea hoʻouna i ka o ka mea loaʻa kī ma mua o ka leka mua loa, he mea pololei kēlā me ka ʻole o kekahi leka mua e lawe iā ia. |
| Hoʻohālāwai ʻana i nā leia ma loko o ka ala | Ke hana nei i kahi kahua e hiki ai ke hōʻemi i ka mālama ʻana. He mea hoʻopilikia i hiki ke unuhi i kahi hōʻailona mana e hoʻonā\": i ka ala kahiko. |
| Nā wale ka quantum ma hope, ʻaʻole he lālā kūnoa. | Hoʻolele i nā ʻumigā o ka loiloi ʻana i ka secp256k1 no ka hoʻolili ʻia ʻana i he mea kumu hou loa. Hāʻule wale nō ka mea hapa inā ʻelua hāʻule. |
12Pono ʻana o ka hoʻokumu ʻana
Ke hoʻouna nei ka Nymchat i ʻaoʻao ʻelua o kēia hoʻonohonoho — ʻe ʻekahi ma ka JavaScript no ka polokalamu waihoʻo, ʻe ʻekahi ma ka Dart no nā polokalamu kelepona, me ka hoʻololi ʻana i ka ML-KEM-768 mai ka waha loa. ʻO ka ʻelua hoʻokō ʻana o ka mea kumu ʻokahi he pilikia ia i kēlā me kēia manawa, no laila, hoʻohui ʻia lākou i kūʻē i kekahi i kekahi ma mua o ka manaʻo ʻana he kūpono lākou.
Ua hoʻohōʻo ʻia ka hana ML-KEM o Dart me ka mea kūpono
NIST ACVP
nā hana hoʻāʻo i mōʻikele ʻia nā huahelu no ML-KEM-768 (ML-KEM-*-FIPS203) — 25 mau hana hana kī, 25 mau hana pūʻulu, a me 10 mau hana wehewehe pūʻulu, e neʻe ʻia ma o ko lākou ʻōpioʻopio ponoʻī. ʻO ia nā vector i hoʻolathalathia e ka NIST no ka hoʻohālikelike ʻana i kahi hana, no laila, ʻo ka loaʻa ʻana i kēia mau mea he hōʻike ia he pololei ka polokalamu, ʻaʻole wale nō he hōʻike ia e kūpono ana nā mea pāʻea ʻelua me ka ʻana. Ma luna o kēlā, he mea kūpaʻa i ka wā katoa o nā vector hoʻāʻo — ka huli ʻana i ka kumu, ka pūʻulu ʻana, nā ʻano ʻeke ʻelua, a me nā pūʻolo kūpono — i hāʻawi ʻia mai ka JavaScript reference a hoʻohālikelike ʻia e nā ʻōpioʻopio hoʻāʻo ʻelua. ʻO ka huna kumu ke hoʻonui i kēlā mea kūpaʻa ma mua o ka hoʻopiʻi ʻana i ia: kumu i ka kumu, kumu i ka ʻelua kī, ka ʻimina kumu pololei, a me ka kī i loaʻa mai, ka nonce, a me ka ʻike kapa o ka ʻao ʻao ʻē aia, he vector lākou ponoʻī, no laila ʻaʻole hiki i nā mea pāʻea ʻelua ke kūʻē i ka mea...
nympq1… ʻO ka kōhele ka mea e pili ana i nā byte i huna ʻia ai ka puʻuwai. Inā ʻike ʻia ka ʻikiʻiki ʻana i kekahi o nā hana ʻelua, e hoʻopau ana ka hoʻohui ʻana ma mua o ka hana ʻana i kahi puʻuwai i ʻole hiki i ka mea loaʻa ʻē aʻe ke wehe iā ia.
He mea pono e inoa ʻia ka hōʻailona ʻili-lima ma loko o kēia mau mea. ʻO ia ka mea e ʻōlelo ana i kahi mea hana "ʻo kēia ka kumu i kaʻu mālama nei" mai ia "ʻo kēia he mea ʻē aʻe", a he mea kūʻai i ʻole hiki iā ia ke hoʻopili i ka hōʻailona ʻili-lima o kekahi mea kūʻai ʻē aʻe e ʻike ana i kahi moʻolelo maikaʻi loa he mea ʻole kēlā — a ma hope, ma ka ʻaoʻao 3.3, e hana i kahi kumu hope lua a hoʻokaʻawale i ka pilina. He ala ia no kēlā kumu maopopo loa.
ʻO Nymchat wehe
kumu ma lalo o ka AGPL-3.0. ʻO ka piko laka i weheweia ʻia ma kēia ʻo
js/nym-crypto.js a js/modules/pq.js i loko o ka mea hoʻohana pūnaewele, a
lib/core/crypto/ me lib/features/identity/pq_registry.dart i loko o
nā mea kūʻai pūnaewae.
No ka wehewehe pōkole ʻoi aku, ʻaʻole ʻo ka ʻenehana, e nānā i ka Papa ʻike no ka huna ʻike kūana-paʻa..