Basis pengetahuan Di bawah tenda
Protokol dan acara
Apa yang sebenarnya dilakukan Nymchat, bagi siapa pun yang menentangnya, mengauditnya, atau membaca peristiwa dari klien Nostr lain.
Halaman ini diterjemahkan dengan mesin untuk kenyamanan. Versi asli bahasa Inggris adalah versi yang berlaku.
Jenis acara
| Baik | Digunakan untuk | Catatan |
|---|---|---|
0 | Metadata profil | Profil Nostr standar: nama, gambar, spanduk, tentang, lud16. |
5 | Permintaan penghapusan | NIP-09. |
7 | Reaksi | NIP-25, dengan a ['k', originalKind] tag sehingga reaksi diajukan terhadap jenis saluran yang tepat. |
13 | Segel | Lapisan tengah pesan NIP-17. |
14 | Rumor pesan pribadi | Tidak ditandatangani, dan tidak pernah dipublikasikan sendiri. |
1059 | Bungkus kado | NIP-59. Apa yang sebenarnya mencapai relay untuk pesan pribadi dan obrolan grup. |
1984 | Pelaporan | NIP-56. |
9734 / 9735 | Permintaan zap dan tanda terima zap | NIP-57. |
10030 | Daftar paket emoji khusus | NIP-30. |
20000 | Pesan saluran geohash | Singkat, ditandai ['g', geohash]. |
23333 | Pesan saluran bernama | Singkat, ditandai ['d', channel]. |
24420 / 24421 | Indikator pengetikan publik dan tanda terima telah dibaca | Khusus Nymchat, untuk saluran publik. |
25051 / 25052 | Pensinyalan peer-to-peer dan status transfer file | Khusus Nymchat. |
30030 | Kumpulan emoji khusus | NIP-30. |
30078 | data aplikasi | NIP-78. Jajak pendapat, dan sinkronisasi pengaturan terenkripsi. |
69420 | Tanda terima baca pribadi dan status pengiriman | Khusus Nymchat, dibawa sebagai rumor di dalam bungkus kado. Jenis yang terpisah dari 14 sengaja, agar klien NIP-17 lainnya tidak memberikan pesan langsung kosong untuk setiap tanda terima. |
NIP Nymchat mengimplementasikan
| GIGIT | Apa yang diberikannya kepada Nymchat |
|---|---|
| NIP-07 | Masuk dengan ekstensi browser. |
| NIP-09 | Permintaan penghapusan. |
| NIP-13 | Bukti kerja. Pesan keluar ditambang setidaknya hingga 16 bit. |
| NIP-17 | Pesan langsung pribadi, dan dasar untuk obrolan grup. |
| NIP-25 | Reaksi. |
| NIP-30 | Emoji khusus. |
| NIP-40 | Stempel waktu kedaluwarsa — pesan menghilang. |
| NIP-44 | Enkripsi berversi, digunakan untuk segel, pembungkus, dan sinkronisasi pengaturan. |
| NIP-46 | Penandatanganan jarak jauh — bunker://. |
| NIP-56 | Pelaporan. |
| NIP-57 | Sambaran petir. |
| NIP-59 | Bungkus kado. |
| NIP-78 | Data aplikasi sewenang-wenang. |
| NIP-98 | Otentikasi HTTP, untuk titik akhir yang dihosting. |
Kriptografi
| Di mana | Apa |
|---|---|
| Identitas dan tanda tangan | secp256k1 dengan tanda tangan Schnorr (BIP-340), seperti yang ditentukan Nostr. |
| Pesan pribadi dan obrolan grup | NIP-44 v2: ECDH pada secp256k1, HKDF-SHA256, ChaCha20 dengan HMAC-SHA256, dan padding sehingga panjang ciphertext tidak memberikan panjang pesan. |
| Sesi mesh Bluetooth | Noise XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 untuk tanda tangan pengumuman, SHA-256 dan HMAC di bawahnya. |
| Identitas saat istirahat | AES-GCM-256. Kuncinya berasal dari PBKDF2-SHA256 dengan 310.000 iterasi untuk kata sandi atau PIN, atau dari output WebAuthn PRF melalui HKDF-SHA256 untuk kunci sandi atau biometrik. |
| Panggilan dan transfer file | DTLS-SRTP milik WebRTC, dinegosiasikan melalui sinyal yang dibungkus NIP-17. |
| Keserampangan | Seluruh platform CSPRNG — kunci, nonce, dan jitter stempel waktu bungkus kado. |
Perlindungan metadata
Dua detail dalam jalur bungkus kado patut disebutkan, karena itulah yang membedakan NIP-59 dari "terenkripsi, tapi jelas dari Anda kepada mereka":
- Setiap bungkus ditandatangani oleh a kunci satu kali dihasilkan untuk pesan itu saja, jadi tidak ada dua bungkus yang berbagi pengirim.
- Setiap bungkusnya
created_atadalah secara acak dimundurkan hingga dua jam menggunakan CSPRNG, jadi waktu kirim dan terima tidak bisa disejajarkan.
Obrolan grup menambah kefanaan yang berputar penerima kunci di atas itu — lihat Cara kerja enkripsi grup.
Primitif kripto ada di dalamnya js/nym-crypto.js Dan
js/modules/key-vault.js di aplikasi web, dan di bawahnya
android-ios-app/lib/core/crypto/ Dan
lib/services/mesh/noise/ di aplikasi Flutter. Itu
gudang
adalah AGPL-3.0 dan lengkap — tidak ada komponen tertutup untuk mendapatkan kepercayaan.