Saltu al la enhavo
Reen al Nymchat

Sciobazo Sub la kapuĉo

Protokolo kaj eventoj

Kion Nymchat efektive metas sur la draton, por iu ajn konstruanta kontraŭ ĝi, revizii ĝin, aŭ legi eventojn de alia Nostr-kliento.

Eventaj specoj

AfablaUzita porNotoj
0Metadatumoj de profiloNorma Nostr-profilo: nomo, bildo, standardo, pri, lud16.
5Petoj pri forigoNIP-09.
7ReagojNIP-25, kun a ['k', originalKind] etikedo do reago estas registrita kontraŭ la ĝusta kanala tipo.
13SigeloLa meza tavolo de NIP-17-mesaĝo.
14Privata mesaĝo famoNesubskribita, kaj neniam publikigita memstare.
1059DonacoNIP-59. Kio efektive atingas stafetadon por privataj mesaĝoj kaj grupaj babilejoj.
1984RaportadoNIP-56.
9734 / 9735Zap peto kaj zap kvitancoNIP-57.
10030Propraj listoj de emoji-pakaĵojNIP-30.
20000Geohash-kanala mesaĝoEfemera, etikedita ['g', geohash].
23333Nomita kanala mesaĝoEfemera, etikedita ['d', channel].
24420 / 24421Publikaj tajpaj indikiloj kaj legi kvitancojNymchat-specifa, por publikaj kanaloj.
25051 / 25052Kunul-al-kunula signalado kaj dosiertransigo-statusoNymchat-specifa.
30030Propraj emoji-arojNIP-30.
30078Aplikaj datumojNIP-78. Enketoj kaj ĉifritaj agordoj sinkronigas.
69420Privataj legaj kvitancoj kaj livera statoNymchat-specifa, portita kiel onidiro ene de donacpakaĵo. Aparta speco de 14 intence, do aliaj NIP-17-klientoj ne faras malplenajn rektajn mesaĝojn por ĉiu kvitanco.

NIPs Nymchat iloj

NIPKion ĝi donas Nymchat
NIP-07Ensalutu per retumila etendo.
NIP-09Petoj pri forigo.
NIP-13Pruvo de laboro. Elirantaj mesaĝoj estas minitaj al almenaŭ 16 bitoj.
NIP-17Privataj rektaj mesaĝoj, kaj la bazo por grupaj babilejoj.
NIP-25Reagoj.
NIP-30Propra emoji.
NIP-40Finiĝaj tempomarkoj - malaperantaj mesaĝoj.
NIP-44Versia ĉifrado, uzata por sigeloj, envolvaĵoj kaj agordoj sinkronigi.
NIP-46Fora subskribo - bunker://.
NIP-56Raportado.
NIP-57Fulmo zapas.
NIP-59Donacaj pakaĵoj.
NIP-78Arbitraj aplikaj datumoj.
NIP-98HTTP-aŭth, por la gastigitaj finpunktoj.

Kriptografio

KieKio
Identeco kaj subskribojsecp256k1 kun Schnorr-signaturoj (BIP-340), kiel Nostr specifas.
Privataj mesaĝoj kaj grupaj babilejojNIP-44 v2: ECDH sur secp256k1, HKDF-SHA256, ChaCha20 kun HMAC-SHA256, kaj kompletigo tiel ĉifrtekstolongo ne forlasas la mesaĝolongon.
Bluetooth-retaj sesiojBruo XX - X25519, ChaCha20-Poly1305 (IETF), Ed25519 por anonci subskribojn, SHA-256 kaj HMAC sube.
Identeco en ripozoAES-GCM-256. La ŝlosilo venas de PBKDF2-SHA256 ĉe 310,000 ripetoj por pasvorto aŭ PIN, aŭ de WebAuthn PRF-produktaĵo tra HKDF-SHA256 por pasvorto aŭ biometria.
Vokoj kaj dosieraj translokigojLa propra DTLS-SRTP de WebRTC, negocita super NIP-17-envolvita signalado.
HazardecoLa platformo CSPRNG ĉie - ŝlosiloj, noncoj, kaj la donac-paka tempostampilo.

Protekto de metadatumoj

Du detaloj en la donacpaka vojo indas voki, ĉar ili estas kiuj apartigas NIP-59 de "ĉifrita, sed evidente de vi al ili":

  • Ĉiu envolvaĵo estas subskribita de a unufoja ŝlosilo generita por tiu mesaĝo sole, do neniuj du envolvaĵoj dividas sendilon.
  • Ĉiu envolvaĵo created_at estas hazarde postdatigita de ĝis du horoj uzante la CSPRNG, do sendi kaj ricevi tempojn ne povas esti vicigitaj.

Grupaj babilejoj aldonas turniĝantajn efemerajn ricevanto klavoj sur tio — vidu Kiel grupa ĉifrado funkcias.

Legante la fonton

La kriptaj primitivuloj estas en js/nym-crypto.js kaj js/modules/key-vault.js en la retejo, kaj sub android-ios-app/lib/core/crypto/ kaj lib/services/mesh/noise/ en la apo Flutter. La deponejo estas AGPL-3.0 kaj kompleta — ne ekzistas fermita komponanto por akcepti fidon.