Dasar pangaweruh Handapeun tiung
Protokol jeung acara
Naon Nymchat sabenerna nempatkeun dina kawat, pikeun saha ngawangun ngalawan eta, auditing eta, atawa maca acara ti klien Nostr sejen.
Kaca ieu ditarjamahkeun ku mesin pikeun genah. Asli Inggris nyaéta versi anu lumaku.
Jenis acara
| Jenis | Dipaké pikeun | Catetan |
|---|---|---|
0 | Metadata profil | Profil Nostr standar: ngaran, gambar, spanduk, ngeunaan, lud16. |
5 | Paménta ngahapus | NIP-09. |
7 | Réaksi | NIP-25, kalawan a ['k', originalKind] tag jadi réaksi ieu Filed ngalawan tipe channel katuhu. |
13 | Segel | Lapisan tengah pesen NIP-17. |
14 | Rumor pesen pribadi | Unsigned, jeung teu pernah diterbitkeun sorangan. A thread reply ngabalukarkeun a ['nymthread', rootId] tag dina rumor disadiakeun, referencing id pesan dibagikeun root. |
1059 | Bungkus kado | NIP-59. Naon anu sabenerna ngahontal relay pikeun pesen pribadi sareng obrolan grup. |
1984 | Ngalaporkeun | NIP-56. |
9734 / 9735 | Paménta Zap sareng resi zap | NIP-57. |
10030 | Daptar bungkus emoji khusus | NIP-30. |
20000 | Pesen saluran Geohash | Ephemeral, ditandaan ['g', geohash]A thread reply nambahkeun hiji NIP-10 ditandatanganan ['e', rootId, '', 'root'] Ieu téh. |
23333 | Pesen saluran ngaranna | Ephemeral, ditandaan ['d', channel]A thread reply nambahkeun hiji NIP-10 ditandatanganan ['e', rootId, '', 'root'] Ieu téh. |
24420 / 24421 | Indikator ketikan umum sareng kuitansi baca | Nymchat-spésifik, pikeun saluran umum. |
25051 / 25052 | Sinyal peer-to-peer sareng status transfer file | Nymchat-spésifik. |
30030 | set emoji custom | NIP-30. |
30078 | Data aplikasi | NIP-78. Polling, singkronisasi setélan énkripsi, sareng pengumuman konci pos-kuantum (tagged nym-pq, mawa konci publik ML-KEM-768 kalayan béakna NIP-40). |
69420 | Kuitansi dibaca pribadi sareng status pangiriman | Nymchat-spésifik, dibawa salaku gosip jero bungkus kado. Hiji jenis misah ti 14 ngahaja, jadi klien NIP-17 séjén teu ngajadikeun pesen langsung kosong pikeun unggal resi. |
NIPs Nymchat implements
| NIP | Naon méré Nymchat |
|---|---|
| NIP-07 | Login nganggo ekstensi browser. |
| NIP-09 | Paménta ngahapus. |
| Ngeunaan 10 | Merekkeun tag respon – kumaha kanael thread respon titik kana pesan root na. |
| NIP-13 | Buktina gawé. Pesen kaluar ditambang sahenteuna 16 bit. |
| NIP-17 | Pesen langsung pribadi, sareng dasar pikeun obrolan grup. |
| NIP-25 | Réaksi. |
| NIP-30 | Emoji custom. |
| NIP-40 | Cap waktu kadaluwarsa - pesen leungit. |
| NIP-44 | enkripsi Versioned, dipaké pikeun anjing laut, wraps tur setelan singkronisasi. |
| NIP-46 | Penandatanganan jauh - bunker://. |
| NIP-56 | Ngalaporkeun. |
| NIP-57 | Petir nyecep. |
| NIP-59 | Bungkus kado. |
| NIP-78 | Data aplikasi wenang. |
| NIP-98 | HTTP auth, pikeun titik tungtung hosted. |
Kriptografi
| dimana | Naon |
|---|---|
| Idéntitas jeung tanda tangan | secp256k1 kalawan tanda tangan Schnorr (BIP-340), sakumaha Nostr nangtukeun. |
| Talatah pribadi sareng obrolan grup | NIP-44 v2: ECDH on secp256k1, HKDF-SHA256, ChaCha20 kalawan HMAC-SHA256, sarta padding jadi panjangna ciphertext teu masihan panjang pesen jauh. |
| Pesen pribadi sareng obrolan grup, antara pangguna Nymchat | The sarua NIP-44 v2 payload, unmodified, ditutup dua kali di jero ChaCha20-Poly1305 keyed ti ML-KEM-768 (FIPS 203) encapsulation ngaliwatan HKDF-SHA256. pq2. Prefix jadi pembaca nyokot jalur ku inspecting payload. Dua lapisan kudu dipigawé pikeun recover hiji pesan. tingali énkripsi tahan kuantum. |
| sesi bolong Bluetooth | Noise XX - X25519, ChaCha20-Poly1305 (IETF), Ed25519 pikeun tanda tangan ngumumkeun, SHA-256 sareng HMAC di handapeun. |
| Idéntitas dina sésana | AES-GCM-256. Koncina asalna tina PBKDF2-SHA256 di 310.000 iterations pikeun sandi atawa PIN, atawa ti kaluaran WebAuthn PRF ngaliwatan HKDF-SHA256 pikeun passkey atanapi biometric. |
| Telepon sareng transfer file | DTLS-SRTP WebRTC sorangan, disawalakeun pikeun sinyal NIP-17-dibungkus. |
| Randomness | Platform CSPRNG sapanjang - konci, nonces, sareng jitter timestamp bungkus kado. |
Perlindungan metadata
Dua rinci dina jalur kado-bungkus patut nelepon kaluar, sabab éta naon misahkeun NIP-59 tina "énkripsi, tapi écés ti anjeun ka aranjeunna":
- Unggal bungkus ditandatanganan ku a konci hiji-waktos dihasilkeun pikeun pesen éta waé, jadi euweuh dua bungkus babagi pangirim.
- Unggal bungkus
created_atnyaeta acak backdated ku nepi ka dua jam ngagunakeun CSPRNG, jadi ngirim jeung nampa kali teu bisa dijejeran up.
Obrolan grup nambahan puteran ephemeral panarima konci dina luhureun éta - tingali Kumaha énkripsi grup jalan.
Primitif crypto aya dina js/nym-crypto.js jeung
js/modules/key-vault.js dina aplikasi wéb, sareng di handapeun
android-ios-app/lib/core/crypto/ jeung
lib/services/mesh/noise/ dina aplikasi Flutter. The
gudang
nyaeta AGPL-3.0 tur lengkep - euweuh komponén katutup nyandak kana kapercayaan.