Saltar al contingut
Torna a Nymchat

Base de coneixement Sota el capó

Protocol i actes

El que Nymchat posa realment al cable, per a qualsevol que hi construeixi, auditar-lo o llegir esdeveniments d'un altre client Nostr.

Tipus d'esdeveniments

amableS'utilitza perNotes
0Metadades del perfilPerfil estàndard de Nostr: nom, imatge, banner, sobre, lud16.
5Sol·licituds de supressióNIP-09.
7ReaccionsNIP-25, amb a ['k', originalKind] etiqueta de manera que es presenti una reacció contra el tipus de canal correcte.
13SegellLa capa mitjana d'un missatge NIP-17.
14Rumor per missatge privatSense signar i mai publicat per si sol.
1059Paper de regalNIP-59. El que en realitat arriba a un relé per a missatges privats i xats de grup.
1984InformesNIP-56.
9734 / 9735Sol·licitud de zap i rebut de zapNIP-57.
10030Llistes de paquets d'emojis personalitzadesNIP-30.
20000Missatge del canal GeohashEfímer, etiquetat ['g', geohash].
23333Missatge del canal amb nomEfímer, etiquetat ['d', channel].
24420 / 24421Indicadors de mecanografia pública i justificants de lecturaEspecífic de Nymchat, per a canals públics.
25051 / 25052Senyalització peer-to-peer i estat de transferència de fitxersEspecífic de Nymchat.
30030Conjunts d'emojis personalitzatsNIP-30.
30078Dades de l'aplicacióNIP-78. Les enquestes i la configuració xifrada se sincronitzen.
69420Rebuts de lectura privats i estat de lliuramentEspecífic de Nymchat, portat com a rumor dins d'un paper de regal. Un tipus separat de 14 deliberadament, de manera que altres clients NIP-17 no mostrin missatges directes en blanc per a cada rebut.

NIP implements Nymchat

NIPEl que li dóna Nymchat
NIP-07Inicieu sessió amb una extensió del navegador.
NIP-09Sol·licituds de supressió.
NIP-13Prova de treball. Els missatges de sortida s'extrauen com a mínim a 16 bits.
NIP-17Missatges directes privats i base per a xats de grup.
NIP-25Reaccions.
NIP-30Emoji personalitzat.
NIP-40Marques de temps de caducitat: missatges que desapareixen.
NIP-44Xifratge versionat, utilitzat per a segells, embolcalls i sincronització de la configuració.
NIP-46Signatura remota - bunker://.
NIP-56Informes.
NIP-57Zaps de llamps.
NIP-59Papers de regal.
NIP-78Dades d'aplicació arbitrària.
NIP-98Autorització HTTP, per als punts finals allotjats.

Criptografia

OnQuè
Identitat i signaturessecp256k1 amb signatures de Schnorr (BIP-340), tal com especifica Nostr.
Missatges privats i xats de grupNIP-44 v2: ECDH a secp256k1, HKDF-SHA256, ChaCha20 amb HMAC-SHA256 i farciment perquè la longitud del text xifrat no indiqui la longitud del missatge.
Sessions de malla BluetoothSoroll XX: X25519, ChaCha20-Poly1305 (IETF), Ed25519 per a les signatures d'anunci, SHA-256 i HMAC a sota.
Identitat en repòsAES-GCM-256. La clau prové de PBKDF2-SHA256 a 310.000 iteracions per a una contrasenya o PIN, o d'una sortida WebAuthn PRF a través de HKDF-SHA256 per a una clau de pas o biomètrica.
Trucades i transferències de fitxersEl propi DTLS-SRTP de WebRTC, negociat per senyalització embolicada amb NIP-17.
AleatorietatLa plataforma CSPRNG a tot arreu: claus, noces i fluctuació de la marca de temps de l'embolcall de regal.

Protecció de metadades

Val la pena destacar dos detalls del camí de l'embolcall de regal, perquè són els que separen NIP-59 de "xifrat, però òbviament de tu a ells":

  • Cada embolcall està signat per a clau única generat només per a aquest missatge, de manera que no hi ha dos embolcalls que comparteixin un remitent.
  • Cada embolcall created_at és retrodatat aleatòriament fins a dos hores utilitzant el CSPRNG, de manera que els horaris d'enviament i de recepció no es poden alinear.

Els xats de grup afegeixen efímers rotatius destinatari tecles a sobre d'això — vegeu Com funciona el xifratge de grup.

Lectura de la font

Els criptoprimitius estan dins js/nym-crypto.js i js/modules/key-vault.js a l'aplicació web i a sota android-ios-app/lib/core/crypto/ i lib/services/mesh/noise/ a l'aplicació Flutter. El repositori és AGPL-3.0 i complet; no hi ha cap component tancat per assumir confiança.