Base di cunniscenza Sottu u cappucciu
Protocolu è avvenimenti
Ciò chì Nymchat mette in realtà nantu à u filu, per quellu chì custruisce contru à ellu, auditing it, o leghje avvenimenti da un altru cliente Nostr.
Questa pagina hè tradutta in macchina per comodità. L'uriginale in inglese hè a versione chì si applica.
Tipi di avvenimenti
| Gentile | Adupratu per | Notes |
|---|---|---|
0 | Metadata di u prufilu | Profil Nostr Standard: nome, stampa, banner, circa, lud16. |
5 | E dumande di eliminazione | NIP-09. |
7 | Reazzione | NIP-25, cù a ['k', originalKind] tag cusì una reazione hè presentata contr'à u tipu di canale ghjustu. |
13 | Sigillu | A capa media di un missaghju NIP-17. |
14 | Rumore di messagiu privatu | Unsigned, è mai publicatu da sè stessu. |
1059 | Imballaggio di rigalu | NIP-59. Ciò chì in realtà arriva à un relay per i missaghji privati è i chats di gruppu. |
1984 | Rapportu | NIP-56. |
9734 / 9735 | Zap dumanda è zap ricevuta | NIP-57. |
10030 | Elenchi di pacchetti di emoji persunalizati | NIP-30. |
20000 | Missaghju di u canali Geohash | Effimeru, tagged ['g', geohash]. |
23333 | Missaghju di u canale chjamatu | Effimeru, tagged ['d', channel]. |
24420 / 24421 | Indicatori di typing publicu è ricevute di lettura | Nymchat specificu, per i canali publichi. |
25051 / 25052 | Segnale peer-to-peer è statu di trasferimentu di file | Nymchat specificu. |
30030 | Setti di emoji persunalizati | NIP-30. |
30078 | Dati di l'applicazione | NIP-78. Sondaggi, è i paràmetri criptati si sincronizzanu. |
69420 | Ricevute di lettura privata è statutu di consegna | Nymchat specificu, purtatu cum'è un rumore in un pacchettu di rigalu. Un tipu separatu da 14 deliberatamente, cusì altri clienti NIP-17 ùn rende micca messagi diretti in biancu per ogni ricevuta. |
NIPs Nymchat implementa
| NIP | Ciò chì dà Nymchat |
|---|---|
| NIP-07 | Accedi cù una estensione di navigatore. |
| NIP-09 | E dumande di eliminazione. |
| NIP-13 | Pruva di u travagliu. I missaghji in uscita sò minati à almenu 16 bits. |
| NIP-17 | I missaghji diretti privati, è a basa per i chats di gruppu. |
| NIP-25 | Reazzione. |
| NIP-30 | Emoji persunalizati. |
| NIP-40 | Tempi di scadenza - messagi chì spariscenu. |
| NIP-44 | Cifratura versione, utilizata per sigilli, wraps è sincronia di paràmetri. |
| NIP-46 | Firma à distanza - bunker://. |
| NIP-56 | Rapportu. |
| NIP-57 | Lampi fulmini. |
| NIP-59 | Pacchetti di rigalu. |
| NIP-78 | Dati di l'applicazione arbitraria. |
| NIP-98 | HTTP auth, per l'endpoint ospitati. |
Criptografia
| Induve | Chì |
|---|---|
| Identità è firme | secp256k1 cù signatures Schnorr (BIP-340), cum'è Nostr specifica. |
| Missaghji privati è chats di gruppu | NIP-44 v2: ECDH nantu à secp256k1, HKDF-SHA256, ChaCha20 cù HMAC-SHA256, è padding cusì ciphertext length ùn dà a lunghezza di u messagiu. |
| Sessioni mesh Bluetooth | Noise XX - X25519, ChaCha20-Poly1305 (IETF), Ed25519 per annunzià e firme, SHA-256 è HMAC sottu. |
| Identità in riposu | AES-GCM-256. A chjave vene da PBKDF2-SHA256 à 310,000 iterazioni per una password o PIN, o da una WebAuthn PRF output through HKDF-SHA256 per una passkey o biometrica. |
| Chjamate è trasferimenti di schedari | U propiu DTLS-SRTP di WebRTC, negoziatu annantu à a signalazione imballata in NIP-17. |
| Casualità | A piattaforma CSPRNG in tuttu - chjavi, nonces, è u jitter di timestamp di rigalu. |
Prutezzione di metadata
Dui dettagli in u percorsu di u rigalu valenu a pena chjamà, perchè sò ciò chì separanu NIP-59 da "cifratu, ma ovviamente da voi à elli":
- Ogni wrap hè firmatu da a chjave una volta generatu solu per quellu missaghju, cusì ùn ci sò dui wraps sparte un mittente.
- Ogni avvolgimentu
created_athè retrodatate aleatoriamente da finu à dui ore usendu u CSPRNG, cusì mandate è riceve i tempi ùn ponu esse allineati.
I chats di gruppu aghjunghjenu effimeri rotanti destinatariu chjavi nantu à questu - vede Cumu funziona a criptografia di u gruppu.
I criptu primitivi sò in js/nym-crypto.js è
js/modules/key-vault.js in l'app web, è sottu
android-ios-app/lib/core/crypto/ è
lib/services/mesh/noise/ in l'app Flutter. U
repository
hè AGPL-3.0 è cumpletu - ùn ci hè micca un cumpunente chjusu per piglià a fiducia.