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 | Hindi nilagdaan, at hindi kailanman nai-publish sa sarili nitong. |
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]. |
23333 | Pinangalanang mensahe ng channel | Ephemeral, naka-tag ['d', channel]. |
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. Nagsi-sync ang mga botohan, at naka-encrypt na mga setting. |
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. |
| 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 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 | Ang sariling DTLS-SRTP ng WebRTC, nakipag-usap tungkol sa NIP-17-wrapped signalling. |
| 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.