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.
Aquesta pàgina està traduïda automàticament per comoditat. L'original en anglès és la versió que s'aplica.
Tipus d'esdeveniments
| amable | S'utilitza per | Notes |
|---|---|---|
0 | Metadades del perfil | Perfil estàndard de Nostr: nom, imatge, banner, sobre, lud16. |
5 | Sol·licituds de supressió | NIP-09. |
7 | Reaccions | NIP-25, amb a ['k', originalKind] etiqueta de manera que es presenti una reacció contra el tipus de canal correcte. |
13 | Segell | La capa mitjana d'un missatge NIP-17. |
14 | Rumor per missatge privat | Sense signar i mai publicat per si sol. |
1059 | Paper de regal | NIP-59. El que en realitat arriba a un relé per a missatges privats i xats de grup. |
1984 | Informes | NIP-56. |
9734 / 9735 | Sol·licitud de zap i rebut de zap | NIP-57. |
10030 | Llistes de paquets d'emojis personalitzades | NIP-30. |
20000 | Missatge del canal Geohash | Efímer, etiquetat ['g', geohash]. |
23333 | Missatge del canal amb nom | Efímer, etiquetat ['d', channel]. |
24420 / 24421 | Indicadors de mecanografia pública i justificants de lectura | Específic de Nymchat, per a canals públics. |
25051 / 25052 | Senyalització peer-to-peer i estat de transferència de fitxers | Específic de Nymchat. |
30030 | Conjunts d'emojis personalitzats | NIP-30. |
30078 | Dades de l'aplicació | NIP-78. Les enquestes i la configuració xifrada se sincronitzen. |
69420 | Rebuts de lectura privats i estat de lliurament | Especí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
| NIP | El que li dóna Nymchat |
|---|---|
| NIP-07 | Inicieu sessió amb una extensió del navegador. |
| NIP-09 | Sol·licituds de supressió. |
| NIP-13 | Prova de treball. Els missatges de sortida s'extrauen com a mínim a 16 bits. |
| NIP-17 | Missatges directes privats i base per a xats de grup. |
| NIP-25 | Reaccions. |
| NIP-30 | Emoji personalitzat. |
| NIP-40 | Marques de temps de caducitat: missatges que desapareixen. |
| NIP-44 | Xifratge versionat, utilitzat per a segells, embolcalls i sincronització de la configuració. |
| NIP-46 | Signatura remota - bunker://. |
| NIP-56 | Informes. |
| NIP-57 | Zaps de llamps. |
| NIP-59 | Papers de regal. |
| NIP-78 | Dades d'aplicació arbitrària. |
| NIP-98 | Autorització HTTP, per als punts finals allotjats. |
Criptografia
| On | Què |
|---|---|
| Identitat i signatures | secp256k1 amb signatures de Schnorr (BIP-340), tal com especifica Nostr. |
| Missatges privats i xats de grup | NIP-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 Bluetooth | Soroll XX: X25519, ChaCha20-Poly1305 (IETF), Ed25519 per a les signatures d'anunci, SHA-256 i HMAC a sota. |
| Identitat en repòs | AES-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 fitxers | El propi DTLS-SRTP de WebRTC, negociat per senyalització embolicada amb NIP-17. |
| Aleatorietat | La 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.
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.