Basis kawruh Ing ngisor hood
Protokol lan acara
Apa Nymchat bener sijine ing kabel, kanggo sapa bangunan marang iku, audit, utawa maca acara saka klien Nostr liyane.
Kaca iki diterjemahake mesin kanggo penak. Asli Inggris minangka versi sing ditrapake.
Jenis acara
| jenis | Digunakake kanggo | Cathetan |
|---|---|---|
0 | Metadata profil | Profil Nostr standar: jeneng, gambar, spanduk, babagan, lud16. |
5 | Panjaluk pambusakan | NIP-09. |
7 | Reaksi | NIP-25, kanthi a ['k', originalKind] tag supaya reaksi diajukake marang jinis saluran tengen. |
13 | Segel | Lapisan tengah pesen NIP-17. |
14 | Gosip pesen pribadi | Unsigned, lan ora tau diterbitake dhewe. |
1059 | bungkus kado | NIP-59. Apa sing bener tekan relay kanggo pesen pribadi lan obrolan grup. |
1984 | Nglaporake | NIP-56. |
9734 / 9735 | Panjaluk zap lan kuitansi zap | NIP-57. |
10030 | Dhaptar paket emoji khusus | NIP-30. |
20000 | Pesen saluran Geohash | Ephemeral, diwenehi tag ['g', geohash]. |
23333 | Pesen saluran jenenge | Ephemeral, diwenehi tag ['d', channel]. |
24420 / 24421 | Indikator ngetik umum lan kuitansi sing diwaca | Nymchat-tartamtu, kanggo saluran umum. |
25051 / 25052 | Peer-to-peer signaling lan status transfer file | Nymchat-tartamtu. |
30030 | Setel emoji khusus | NIP-30. |
30078 | Data aplikasi | NIP-78. Jajak pendapat, lan sinkronisasi setelan sing dienkripsi. |
69420 | Kuitansi diwaca pribadi lan status pangiriman | Nymchat-tartamtu, digawa minangka gosip nang bungkus hadiah. A jinis kapisah saka 14 kanthi sengaja, supaya klien NIP-17 liyane ora menehi pesen langsung kosong kanggo saben kuitansi. |
NIPs Nymchat ngleksanakake
| NIP | Apa menehi Nymchat |
|---|---|
| NIP-07 | Mlebet nganggo ekstensi browser. |
| NIP-09 | Panjaluk pambusakan. |
| NIP-13 | Bukti karya. Pesen metu ditambang paling sethithik 16 bit. |
| NIP-17 | Pesen langsung pribadi, lan basis kanggo obrolan grup. |
| NIP-25 | Reaksi. |
| NIP-30 | Emoji khusus. |
| NIP-40 | Stempel wektu kadaluwarsa - pesen sing ilang. |
| NIP-44 | Enkripsi versi, digunakake kanggo segel, bungkus lan sinkronisasi setelan. |
| NIP-46 | Penandatanganan jarak jauh - bunker://. |
| NIP-56 | Nglaporake. |
| NIP-57 | Petir keprungu. |
| NIP-59 | Bungkus kado. |
| NIP-78 | Data aplikasi sewenang-wenang. |
| NIP-98 | Otentikasi HTTP, kanggo titik pungkasan sing di-host. |
Kriptografi
| ngendi | apa |
|---|---|
| Identitas lan teken | secp256k1 karo teken Schnorr (BIP-340), minangka Nostr nemtokake. |
| Pesen pribadi lan obrolan grup | NIP-44 v2: ECDH ing secp256k1, HKDF-SHA256, ChaCha20 karo HMAC-SHA256, lan padding supaya dawa ciphertext ora menehi dawa pesen. |
| Sesi mesh Bluetooth | Noise XX - X25519, ChaCha20-Poly1305 (IETF), Ed25519 kanggo tandha tandha, SHA-256 lan HMAC ing ngisor. |
| Identitas ing istirahat | AES-GCM-256. Tombol teka saka PBKDF2-SHA256 ing 310.000 iterasi kanggo sandi utawa PIN, utawa saka output WebAuthn PRF liwat HKDF-SHA256 kanggo passkey utawa biometric. |
| Telpon lan transfer file | WebRTC dhewe DTLS-SRTP, rembugan liwat NIP-17-kebungkus signaling. |
| Randomness | Platform CSPRNG ing kabeh - tombol, nonces, lan jitter timestamp bungkus hadiah. |
Proteksi metadata
Rong rincian ing dalan bungkus hadiah kudu diarani, amarga iku NIP-59 sing kapisah saka "enkripsi, nanging temenan saka sampeyan kanggo wong-wong mau":
- Saben bungkus ditandatangani dening a tombol siji-wektu digawe mung kanggo pesen kasebut, dadi ora loro bungkus nuduhake pangirim.
- Saben bungkus
created_atpunika acak backdated dening nganti loro jam nggunakake CSPRNG, supaya ngirim lan nampa kaping ora bisa diantrekake.
Obrolan grup nambahake puteran ephemeral panampa tombol ing ndhuwur sing - ndeleng Cara kerja enkripsi grup.
Primitif crypto ana ing js/nym-crypto.js lan
js/modules/key-vault.js ing aplikasi web, lan ing ngisor
android-ios-app/lib/core/crypto/ lan
lib/services/mesh/noise/ ing aplikasi Flutter. Ing
gudang
punika AGPL-3.0 lan lengkap - ora ana komponen ditutup kanggo njupuk ing dateng.