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, sarta pernah diterbitkeun sorangan. |
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]. |
23333 | Pesen saluran ngaranna | Ephemeral, ditandaan ['d', channel]. |
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, sareng setelan énkripsi singkronisasi. |
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. |
| 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. |
| 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.