Saltà à u cuntenutu
Torna à Nymchat

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.

Tipi di avvenimenti

GentileAdupratu perNotes
0Metadata di u prufiluProfil Nostr Standard: nome, stampa, banner, circa, lud16.
5E dumande di eliminazioneNIP-09.
7ReazzioneNIP-25, cù a ['k', originalKind] tag cusì una reazione hè presentata contr'à u tipu di canale ghjustu.
13SigilluA capa media di un missaghju NIP-17.
14Rumore di messagiu privatuUnsigned, è mai publicatu da sè stessu.
1059Imballaggio di rigaluNIP-59. Ciò chì in realtà arriva à un relay per i missaghji privati ​​​​è i chats di gruppu.
1984RapportuNIP-56.
9734 / 9735Zap dumanda è zap ricevutaNIP-57.
10030Elenchi di pacchetti di emoji persunalizatiNIP-30.
20000Missaghju di u canali GeohashEffimeru, tagged ['g', geohash].
23333Missaghju di u canale chjamatuEffimeru, tagged ['d', channel].
24420 / 24421Indicatori di typing publicu è ricevute di letturaNymchat specificu, per i canali publichi.
25051 / 25052Segnale peer-to-peer è statu di trasferimentu di fileNymchat specificu.
30030Setti di emoji persunalizatiNIP-30.
30078Dati di l'applicazioneNIP-78. Sondaggi, è i paràmetri criptati si sincronizzanu.
69420Ricevute di lettura privata è statutu di consegnaNymchat 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

NIPCiò chì dà Nymchat
NIP-07Accedi cù una estensione di navigatore.
NIP-09E dumande di eliminazione.
NIP-13Pruva di u travagliu. I missaghji in uscita sò minati à almenu 16 bits.
NIP-17I missaghji diretti privati, è a basa per i chats di gruppu.
NIP-25Reazzione.
NIP-30Emoji persunalizati.
NIP-40Tempi di scadenza - messagi chì spariscenu.
NIP-44Cifratura versione, utilizata per sigilli, wraps è sincronia di paràmetri.
NIP-46Firma à distanza - bunker://.
NIP-56Rapportu.
NIP-57Lampi fulmini.
NIP-59Pacchetti di rigalu.
NIP-78Dati di l'applicazione arbitraria.
NIP-98HTTP auth, per l'endpoint ospitati.

Criptografia

InduveChì
Identità è firmesecp256k1 cù signatures Schnorr (BIP-340), cum'è Nostr specifica.
Missaghji privati ​​​​è chats di gruppuNIP-44 v2: ECDH nantu à secp256k1, HKDF-SHA256, ChaCha20 cù HMAC-SHA256, è padding cusì ciphertext length ùn dà a lunghezza di u messagiu.
Sessioni mesh BluetoothNoise XX - X25519, ChaCha20-Poly1305 (IETF), Ed25519 per annunzià e firme, SHA-256 è HMAC sottu.
Identità in riposuAES-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 schedariU 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_atretrodatate 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.

Leghje a fonte

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.