Preskoči na vsebino
Nazaj v Nymchat

Baza znanja Pod pokrovom

Protokol in dogodki

Kaj Nymchat dejansko postavlja na žico, za vsakogar, ki gradi proti njej, njegovo revizijo ali branje dogodkov iz drugega odjemalca Nostr.

Vrste dogodkov

prijaznaUporablja se zaOpombe
0Metapodatki profilaStandardni Nostr profil: ime, slika, pasica, o, lud16.
5Zahteve za izbrisNIP-09.
7ReakcijeNIP-25, z a ['k', originalKind] oznako, tako da je reakcija vložena proti pravi vrsti kanala.
13PečatSrednji sloj sporočila NIP-17.
14Govorice o zasebnem sporočiluNepodpisano in nikoli objavljeno samostojno.
1059Darilna embalažaNIP-59. Kaj dejansko doseže rele za zasebna sporočila in skupinske klepete.
1984PoročanjeNIP-56.
9734 / 9735Zap zahteva in zap potrdiloNIP-57.
10030Seznami paketov emodžijev po meriNIP-30.
20000Sporočilo kanala GeohashEfemerno, označeno ['g', geohash].
23333Sporočilo imenovanega kanalaEfemerno, označeno ['d', channel].
24420 / 24421Indikatorji javnega tipkanja in potrdila o branjuPosebno za Nymchat, za javne kanale.
25051 / 25052Signalizacija enakovrednih in stanje prenosa datotekSpecifično za Nymchat.
30030Nabori emodžijev po meriNIP-30.
30078Podatki aplikacijeNIP-78. Sinhronizacija anket in šifriranih nastavitev.
69420Zasebna potrdila o branju in status dostaveSpecifično za Nymchat, kot govorica v darilnem ovoju. Ločena vrsta od 14 namerno, tako da drugi odjemalci NIP-17 ne upodabljajo praznih neposrednih sporočil za vsako potrdilo.

NIP izvaja Nymchat

NIPKaj daje Nymchat
NIP-07Prijavite se z razširitvijo brskalnika.
NIP-09Zahteve za izbris.
NIP-13Dokazilo o delu. Odhodna sporočila so rudarjena na najmanj 16 bitov.
NIP-17Zasebna neposredna sporočila in osnova za skupinske klepete.
NIP-25Reakcije.
NIP-30Emoji po meri.
NIP-40Časovni žigi poteka — izginjajoča sporočila.
NIP-44Šifriranje z različicami, ki se uporablja za pečate, ovitke in sinhronizacijo nastavitev.
NIP-46Podpisovanje na daljavo — bunker://.
NIP-56Poročanje.
NIP-57Strele.
NIP-59Darilni ovoji.
NIP-78Poljubni podatki aplikacije.
NIP-98Preverjanje HTTP za gostujoče končne točke.

Kriptografija

kjeKaj
Identiteta in podpisisecp256k1 s Schnorrjevimi podpisi (BIP-340), kot določa Nostr.
Zasebna sporočila in skupinski klepetiNIP-44 v2: ECDH na secp256k1, HKDF-SHA256, ChaCha20 s HMAC-SHA256 in oblazinjenje, tako da dolžina šifriranega besedila ne pove dolžine sporočila.
Bluetooth mesh sejeNoise XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 za podpise objav, SHA-256 in HMAC spodaj.
Identiteta v mirovanjuAES-GCM-256. Ključ prihaja iz PBKDF2-SHA256 pri 310.000 ponovitvah za geslo ali PIN ali iz izhoda WebAuthn PRF prek HKDF-SHA256 za geslo ali biometrijo.
Klici in prenosi datotekWebRTC lasten DTLS-SRTP, dogovorjen prek signalizacije, ovite v NIP-17.
NaključnostPlatforma CSPRNG v celoti — ključi, nonces in tresenje časovnega žiga za zavijanje daril.

Zaščita metapodatkov

Dve podrobnosti na poti darilne embalaže je vredno poudariti, ker sta tisto, kar ločuje NIP-59 od "šifrirano, a očitno od tebe do njih":

  • Vsak ovoj je podpisan s strani a enkratni ključ ustvarjen samo za to sporočilo, tako da si nobena zavoja ne delita pošiljatelja.
  • Vsak zavitek created_at je naključno za nazaj za največ dva ure z uporabo CSPRNG, zato časov pošiljanja in prejemanja ni mogoče uskladiti.

Skupinski klepeti dodajo vrteče se kratkotrajno prejemnik ključi na vrhu tega - glej Kako deluje skupinsko šifriranje.

Branje vira

Kripto primitivci so notri js/nym-crypto.js in js/modules/key-vault.js v spletni aplikaciji in pod android-ios-app/lib/core/crypto/ in lib/services/mesh/noise/ v aplikaciji Flutter. The repozitorij je AGPL-3.0 in popoln — ni zaprte komponente, ki bi ji lahko zaupali.