Batayan ng kaalaman Sa ilalim ng talukbong
Protocol at mga kaganapan
Kung ano talaga ang inilalagay ni Nymchat sa wire, para sa sinumang nagtatayo laban dito, pag-audit nito, o pagbabasa ng mga kaganapan mula sa isa pang kliyente ng Nostr.
Ang pahinang ito ay isinalin sa makina para sa kaginhawahan. Ang orihinal na Ingles ay ang bersyon na naaangkop.
Mga uri ng kaganapan
| Mabait | Ginagamit para sa | Mga Tala |
|---|---|---|
0 | Metadata ng profile | Standard Nostr profile: pangalan, larawan, banner, tungkol sa, lud16. |
5 | Mga kahilingan sa pagtanggal | NIP-09. |
7 | Mga reaksyon | NIP-25, na may isang ['k', originalKind] tag para maghain ng reaksyon laban sa tamang uri ng channel. |
13 | selyo | Ang gitnang layer ng isang NIP-17 na mensahe. |
14 | Alingawngaw ng pribadong mensahe | Unsigned, at hindi mai-publish sa kanyang sarili. A thread reply carries a ['nymthread', rootId] ang tag sa loob ng ang encrypted rumor, referencing ang shared message id ng root. |
1059 | pambalot ng regalo | NIP-59. Ano ang aktwal na umaabot sa isang relay para sa mga pribadong mensahe at panggrupong chat. |
1984 | Pag-uulat | NIP-56. |
9734 / 9735 | Zap request at zap receipt | NIP-57. |
10030 | Mga listahan ng custom na emoji pack | NIP-30. |
20000 | Mensahe ng channel ng Geohash | Ephemeral, naka-tag ['g', geohash]A thread reply adds a NIP-10 mark ['e', rootId, '', 'root'] ang tag. |
23333 | Pinangalanang mensahe ng channel | Ephemeral, naka-tag ['d', channel]A thread reply adds a NIP-10 mark ['e', rootId, '', 'root'] ang tag. |
24420 / 24421 | Mga tagapagpahiwatig ng pampublikong pag-type at mga nabasang resibo | Partikular sa Nymchat, para sa mga pampublikong channel. |
25051 / 25052 | Peer-to-peer signaling at katayuan ng paglilipat ng file | Partikular sa Nymchat. |
30030 | Mga custom na emoji set | NIP-30. |
30078 | Data ng aplikasyon | NIP-78. Mga botohan, pag-sync ng mga naka-encrypt na setting, at mga post-quantum key na anunsyo (na-tag nym-pq, na may dalang ML-KEM-768 na pampublikong key na may NIP-40 expiration). |
69420 | Pribadong read receipts at delivery status | Partikular sa Nymchat, dinadala bilang isang bulung-bulungan sa loob ng isang pambalot ng regalo. Isang hiwalay na uri mula sa 14 sadyang, kaya ang ibang mga kliyente ng NIP-17 ay hindi nagbibigay ng mga blangkong direktang mensahe para sa bawat resibo. |
Ang mga NIP ay ipinapatupad ng Nymchat
| NIP | Ano ang ibinibigay nito sa Nymchat |
|---|---|
| NIP-07 | Mag-login gamit ang isang extension ng browser. |
| NIP-09 | Mga kahilingan sa pagtanggal. |
| sa pamamagitan ng NIP-10 | Marking reply tags - kung paano ang isang channel thread reply points sa kanyang root message. |
| NIP-13 | Katibayan ng trabaho. Ang mga papalabas na mensahe ay mina sa hindi bababa sa 16 bits. |
| NIP-17 | Mga pribadong direktang mensahe, at ang batayan para sa mga panggrupong chat. |
| NIP-25 | Mga reaksyon. |
| NIP-30 | Custom na emoji. |
| NIP-40 | Mga timestamp ng pag-expire — nawawalang mga mensahe. |
| NIP-44 | Bersyon na pag-encrypt, ginagamit para sa mga seal, wrap at pag-sync ng mga setting. |
| NIP-46 | Remote signing — bunker://. |
| NIP-56 | Pag-uulat. |
| NIP-57 | Kumalat ang kidlat. |
| NIP-59 | Mga balot ng regalo. |
| NIP-78 | Arbitrary na data ng aplikasyon. |
| NIP-98 | HTTP auth, para sa mga naka-host na endpoint. |
Cryptography
| saan | Ano |
|---|---|
| Pagkakakilanlan at mga lagda | secp256k1 na may mga lagda ng Schnorr (BIP-340), gaya ng tinukoy ng Nostr. |
| Mga pribadong mensahe at panggrupong chat | NIP-44 v2: ECDH sa secp256k1, HKDF-SHA256, ChaCha20 na may HMAC-SHA256, at padding upang hindi maabot ng haba ng ciphertext ang mensahe. |
| Mga pribadong mensahe at panggrupong chat, sa pagitan ng mga user ng Nymchat | Ang parehong NIP-44 v2 payload, hindi na-modified, na-sealed ang dalawang beses sa ChaCha20-Poly1305 na keyed mula sa isang ML-KEM-768 (FIPS 203) encapsulation sa pamamagitan ng HKDF-SHA256. Ang encapsulation encapsulation encryption text at ang parehong identity keys ay bundled sa bilang mga katulad na data, at ang resulta ay may isang pq2. Prefix para sa isang reader mag-pick ang path sa pamamagitan ng pag-inspect ng payload. Ang parehong layer ay dapat na binuksan upang i-recover ang isang mensahe. Tingnan ang quantum-resistant encryption. |
| Mga session ng Bluetooth mesh | Ingay XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 para sa pag-anunsyo ng mga lagda, SHA-256 at HMAC sa ilalim. |
| Pagkakakilanlan sa pamamahinga | AES-GCM-256. Ang susi ay mula sa PBKDF2-SHA256 sa 310,000 na pag-ulit para sa isang password o PIN, o mula sa isang WebAuthn PRF na output sa pamamagitan ng HKDF-SHA256 para sa isang passkey o biometric. |
| Mga tawag at paglilipat ng file | Sariling DTLS-SRTP ng WebRTC, nakipag-usap tungkol sa NIP-17-wrapped signaling. |
| pagiging random | Ang platform CSPRNG sa kabuuan — mga key, nonces, at ang gift-wrap timestamp jitter. |
Proteksyon ng metadata
Dalawang detalye sa landas ng pagbabalot ng regalo ay nagkakahalaga ng pagtawag, dahil sila ang hiwalay na NIP-59 mula sa "naka-encrypt, ngunit malinaw na mula sa iyo sa kanila":
- Ang bawat balot ay nilagdaan ng a isang beses na susi nabuo para sa mensaheng iyon lamang, kaya walang dalawang balot na nagbabahagi ng isang nagpadala.
- Bawat balot
created_atay random na na-backdate ng hanggang dalawa oras gamit ang CSPRNG, kaya ang mga oras ng pagpapadala at pagtanggap ay hindi maaaring ihanay.
Ang mga panggrupong chat ay nagdaragdag ng umiikot na ephemeral tatanggap mga susi sa ibabaw niyon — tingnan mo Paano gumagana ang pag-encrypt ng pangkat.
Ang crypto primitives ay nasa js/nym-crypto.js at
js/modules/key-vault.js sa web app, at sa ilalim
android-ios-app/lib/core/crypto/ at
lib/services/mesh/noise/ sa Flutter app. Ang
imbakan
ay AGPL-3.0 at kumpleto — walang saradong bahagi na dapat tanggapin sa tiwala.