Pangkalan pengetahuan Di bawah tudung
Protokol dan acara
Apa yang Nymchat sebenarnya letakkan pada wayar, untuk sesiapa yang menentangnya, mengauditnya, atau membaca acara daripada pelanggan Nostr yang lain.
Halaman ini diterjemahkan mesin untuk kemudahan. Versi asal bahasa Inggeris ialah versi yang digunakan.
Jenis acara
| baik hati | Digunakan untuk | Nota |
|---|---|---|
0 | Metadata profil | Profil Nostr standard: nama, gambar, sepanduk, tentang, lud16. |
5 | Permintaan pemadaman | NIP-09. |
7 | Reaksi | NIP-25, dengan a ['k', originalKind] tag supaya tindak balas difailkan terhadap jenis saluran yang betul. |
13 | Meterai | Lapisan tengah mesej NIP-17. |
14 | Khabar angin mesej peribadi | Tidak ditandatangani, dan tidak pernah diterbitkan sendiri. |
1059 | pembalut hadiah | NIP-59. Perkara yang sebenarnya mencapai penyampaian untuk mesej peribadi dan sembang kumpulan. |
1984 | Pelaporan | NIP-56. |
9734 / 9735 | Permintaan zap dan resit zap | NIP-57. |
10030 | Senarai pek emoji tersuai | NIP-30. |
20000 | Mesej saluran Geohash | Ephemeral, ditandai ['g', geohash]. |
23333 | Mesej saluran bernama | Ephemeral, ditandai ['d', channel]. |
24420 / 24421 | Penunjuk menaip awam dan resit baca | Khusus Nymchat, untuk saluran awam. |
25051 / 25052 | Status isyarat rakan ke rakan dan pemindahan fail | Nymchat-khusus. |
30030 | Set emoji tersuai | NIP-30. |
30078 | Data permohonan | NIP-78. Tinjauan pendapat dan tetapan yang disulitkan disegerakkan. |
69420 | Resit dibaca dan status penghantaran peribadi | Khusus Nymchat, dibawa sebagai khabar angin di dalam bungkus hadiah. Jenis yang berasingan daripada 14 dengan sengaja, jadi pelanggan NIP-17 lain tidak memberikan mesej langsung kosong untuk setiap resit. |
NIPs Nymchat melaksanakan
| NIP | Apa yang diberikan kepada Nymchat |
|---|---|
| NIP-07 | Log masuk dengan sambungan penyemak imbas. |
| NIP-09 | Permintaan pemadaman. |
| NIP-13 | Bukti kerja. Mesej keluar dilombong kepada sekurang-kurangnya 16 bit. |
| NIP-17 | Mesej langsung peribadi, dan asas untuk sembang kumpulan. |
| NIP-25 | Reaksi. |
| NIP-30 | Emoji tersuai. |
| NIP-40 | Cap masa tamat tempoh — hilang mesej. |
| NIP-44 | Penyulitan versi, digunakan untuk pengedap, pembalut dan penyegerakan tetapan. |
| NIP-46 | Tandatangan jauh — bunker://. |
| NIP-56 | Pelaporan. |
| NIP-57 | Petir menyambar. |
| NIP-59 | Pembalut hadiah. |
| NIP-78 | Data aplikasi sewenang-wenangnya. |
| NIP-98 | Pengesahan HTTP, untuk titik akhir yang dihoskan. |
Kriptografi
| di mana | apa |
|---|---|
| Identiti dan tandatangan | secp256k1 dengan tandatangan Schnorr (BIP-340), seperti yang ditentukan oleh Nostr. |
| Mesej peribadi dan sembang kumpulan | NIP-44 v2: ECDH pada secp256k1, HKDF-SHA256, ChaCha20 dengan HMAC-SHA256, dan padding supaya panjang teks sifir tidak memberikan panjang mesej. |
| Sesi mesh Bluetooth | Noise XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 untuk tandatangan umum, SHA-256 dan HMAC di bawahnya. |
| Identiti dalam keadaan rehat | AES-GCM-256. Kuncinya datang daripada PBKDF2-SHA256 pada 310,000 lelaran untuk kata laluan atau PIN, atau daripada output PRF WebAuthn melalui HKDF-SHA256 untuk kunci laluan atau biometrik. |
| Panggilan dan pemindahan fail | DTLS-SRTP WebRTC sendiri, berunding mengenai isyarat berbalut NIP-17. |
| Keacakan | Platform CSPRNG di seluruh — kunci, nonces dan jitter cap waktu bungkus hadiah. |
Perlindungan metadata
Dua butiran dalam laluan pembalut hadiah patut dipanggil, kerana ia adalah yang memisahkan NIP-59 daripada "disulitkan, tetapi jelas daripada anda kepada mereka":
- Setiap bungkus ditandatangani oleh a kunci sekali dihasilkan untuk mesej itu sahaja, jadi tiada dua bungkus berkongsi penghantar.
- Setiap bungkus
created_atialah bertarikh belakang secara rawak sehingga dua jam menggunakan CSPRNG, jadi masa hantar dan terima tidak boleh dibariskan.
Sembang kumpulan menambah sekejap berputar penerima kunci di atas itu - lihat Cara penyulitan kumpulan berfungsi.
Primitif kripto sudah masuk js/nym-crypto.js dan
js/modules/key-vault.js dalam apl web dan di bawah
android-ios-app/lib/core/crypto/ dan
lib/services/mesh/noise/ dalam apl Flutter. The
repositori
adalah AGPL-3.0 dan lengkap — tiada komponen tertutup untuk mengambil amanah.