Base sa kahibalo Ubos sa tabon
Protocol ug mga panghitabo
Unsa ang gibutang sa Nymchat sa wire, alang sa bisan kinsa nga nagtukod batok niini, pag-audit niini, o pagbasa sa mga panghitabo gikan sa laing kliyente sa Nostr.
Kini nga panid gihubad sa makina alang sa kasayon. Ang English nga orihinal mao ang bersyon nga magamit.
Mga matang sa panghitabo
| Buotan | Gigamit alang sa | Mga nota |
|---|---|---|
0 | Metadata sa profile | Standard nga profile sa Nostr: ngalan, litrato, banner, bahin, lud16. |
5 | Mga hangyo sa pagtangtang | NIP-09. |
7 | Mga reaksyon | NIP-25, nga adunay a ['k', originalKind] tag aron ang usa ka reaksyon gisang-at batok sa husto nga tipo sa channel. |
13 | Selyo | Ang tunga nga layer sa usa ka NIP-17 nga mensahe. |
14 | Ang hungihong sa pribadong mensahe | Wala gipirmahan, ug wala gayud gipatik sa iyang kaugalingon. |
1059 | putos sa regalo | NIP-59. Unsa ang tinuod nga nakaabot sa usa ka relay alang sa mga pribadong mensahe ug mga chat sa grupo. |
1984 | Pagreport | NIP-56. |
9734 / 9735 | Zap request ug zap receipt | NIP-57. |
10030 | Mga listahan sa custom nga emoji pack | NIP-30. |
20000 | Mensahe sa channel sa Geohash | Ephemeral, gi-tag ['g', geohash]. |
23333 | Ginganlan nga mensahe sa channel | Ephemeral, gi-tag ['d', channel]. |
24420 / 24421 | Mga timailhan sa pag-type sa publiko ug mga resibo sa pagbasa | Ang Nymchat-specific, alang sa mga pampublikong channel. |
25051 / 25052 | Peer-to-peer signaling ug file-transfer status | Nymchat-espesipiko. |
30030 | Mga set sa custom nga emoji | NIP-30. |
30078 | Data sa aplikasyon | NIP-78. Ang mga botohan, ug gi-encrypt nga mga setting nag-sync. |
69420 | Pribado nga mga resibo sa pagbasa ug kahimtang sa pagpadala | Ang Nymchat-specific, gidala isip usa ka hungihong sa sulod sa usa ka gift wrap. Usa ka lahi nga matang sa 14 sa tinuyo, aron ang ubang mga kliyente sa NIP-17 dili mohatag og blangko nga direktang mensahe sa matag resibo. |
NIPs Nymchat nagpatuman
| NIP | Unsa ang gihatag niini sa Nymchat |
|---|---|
| NIP-07 | Pag-login gamit ang extension sa browser. |
| NIP-09 | Mga hangyo sa pagtangtang. |
| NIP-13 | Pamatuod sa trabaho. Ang mga outgoing messages gimina sa labing menos 16 ka bits. |
| NIP-17 | Pribado nga direkta nga mga mensahe, ug ang sukaranan sa mga chat sa grupo. |
| NIP-25 | Mga reaksyon. |
| NIP-30 | Pasadya nga emoji. |
| NIP-40 | Expiration timestamp — nawala nga mga mensahe. |
| NIP-44 | Ang bersyon nga encryption, gigamit alang sa mga selyo, pagputos ug pag-sync sa mga setting. |
| NIP-46 | Hilit nga pagpirma - bunker://. |
| NIP-56 | Pagreport. |
| NIP-57 | Mga kilat. |
| NIP-59 | Mga putos sa regalo. |
| NIP-78 | Arbitraryong datos sa aplikasyon. |
| NIP-98 | HTTP auth, para sa gi-host nga mga endpoint. |
Kriptograpiya
| asa | Unsa |
|---|---|
| Identidad ug pirma | secp256k1 nga adunay mga pirma sa Schnorr (BIP-340), ingon sa gitino sa Nostr. |
| Pribado nga mga mensahe ug mga chat sa grupo | NIP-44 v2: ECDH sa secp256k1, HKDF-SHA256, ChaCha20 nga adunay HMAC-SHA256, ug padding aron ang ciphertext nga gitas-on dili makahatag sa gitas-on sa mensahe. |
| Mga sesyon sa Bluetooth mesh | Noise XX - X25519, ChaCha20-Poly1305 (IETF), Ed25519 alang sa pagpahibalo sa mga pirma, SHA-256 ug HMAC sa ilawom. |
| Identidad sa pagpahulay | AES-GCM-256. Ang yawe gikan sa PBKDF2-SHA256 sa 310,000 nga mga pag-ulit para sa password o PIN, o gikan sa WebAuthn PRF output pinaagi sa HKDF-SHA256 para sa passkey o biometric. |
| Mga tawag ug pagbalhin sa file | Ang kaugalingong DTLS-SRTP sa WebRTC, nakigsabot sa NIP-17-wrapped signalling. |
| Random | Ang plataporma CSPRNG sa tibuok — yawe, nonces, ug ang gift-wrap timestamp jitter. |
Proteksyon sa metadata
Duha ka mga detalye sa dalan nga giputos sa regalo angay nga tawagan, tungod kay kini ang lahi nga NIP-59 gikan sa "naka-encrypt, apan klaro nga gikan kanimo ngadto kanila":
- Ang matag wrap gipirmahan sa a usa ka higayon nga yawe gihimo alang sa kana nga mensahe lamang, mao nga walay duha ka wraps nga magpaambit ug sender.
- Ang matag putos
created_atmao ang random nga gi-backdate sa hangtod sa duha oras gamit ang CSPRNG, mao nga ang mga oras sa pagpadala ug pagdawat dili mahimong linya.
Ang mga chat sa grupo nagdugang sa nagtuyok nga ephemeral tigdawat yawe sa ibabaw niana - tan-awa Giunsa ang pag-encrypt sa grupo molihok.
Ang crypto primitives anaa sa js/nym-crypto.js ug
js/modules/key-vault.js sa web app, ug sa ubos
android-ios-app/lib/core/crypto/ ug
lib/services/mesh/noise/ sa Flutter app. Ang
tipiganan
mao ang AGPL-3.0 ug kompleto — walay sirado nga sangkap nga makuha sa pagsalig.