Preskočite na sadržaj
Nazad na Nymchat

Baza znanja Ispod haube

Protokol i događaji

Šta Nymchat zapravo stavlja na žicu, za svakoga ko se gradi protiv toga, reviziju ili čitanje događaja od drugog Nostr klijenta.

Vrste događaja

LjubaznoKoristi se zaBilješke
0Metapodaci profilaStandardni Nostr profil: ime, slika, baner, o, lud16.
5Zahtjevi za brisanjeNIP-09.
7ReakcijeNIP-25, sa a ['k', originalKind] tag tako da se reakcija podnese protiv pravog tipa kanala.
13PečatSrednji sloj NIP-17 poruke.
14Privatna poruka glasinaNepotpisan, i nikada nije objavljen samostalno.
1059Gift wrapNIP-59. Šta zapravo stiže do releja za privatne poruke i grupne razgovore.
1984IzvještavanjeNIP-56.
9734 / 9735Zap zahtjev i zap računNIP-57.
10030Prilagođene liste paketa emojijaNIP-30.
20000Poruka Geohash kanalaEfemerno, označeno ['g', geohash].
23333Poruka imenovanog kanalaEfemerno, označeno ['d', channel].
24420 / 24421Indikatori javnog kucanja i potvrde o čitanjuSpecifično za Nymchat, za javne kanale.
25051 / 25052Peer-to-peer signalizacija i status prijenosa datotekaSpecifično za Nymchat.
30030Prilagođeni setovi emotikonaNIP-30.
30078Podaci aplikacijeNIP-78. Sinhronizacija anketa i šifrovanih postavki.
69420Privatne potvrde o čitanju i status isporukeSpecifično za Nymchat, prenosi se kao glasina u omotu poklona. Zasebna vrsta od 14 namerno, tako da drugi NIP-17 klijenti ne renderuju prazne direktne poruke za svaki račun.

NIP-ovi koje Nymchat implementira

NIPŠta daje Nymchatu
NIP-07Prijavite se sa ekstenzijom pretraživača.
NIP-09Zahtjevi za brisanje.
NIP-13Dokaz o radu. Odlazne poruke su minirane na najmanje 16 bita.
NIP-17Privatne direktne poruke i osnova za grupne razgovore.
NIP-25Reakcije.
NIP-30Prilagođeni emoji.
NIP-40Vremenske oznake isteka — poruke koje nestaju.
NIP-44Versionirano šifriranje, koristi se za pečate, omote i sinhronizaciju postavki.
NIP-46Daljinsko potpisivanje — bunker://.
NIP-56Izvještavanje.
NIP-57Munje zaps.
NIP-59Zamotavanje poklona.
NIP-78Proizvoljni podaci aplikacije.
NIP-98HTTP auth, za hostovane krajnje tačke.

Kriptografija

Gdjesta
Identitet i potpisisecp256k1 sa Schnorr potpisima (BIP-340), kako navodi Nostr.
Privatne poruke i grupni razgovoriNIP-44 v2: ECDH na secp256k1, HKDF-SHA256, ChaCha20 sa HMAC-SHA256 i dopuna tako da dužina šifrovanog teksta ne odaje dužinu poruke.
Bluetooth mesh sesijeBuka XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 za potpise najave, SHA-256 i HMAC ispod.
Identitet u mirovanjuAES-GCM-256. Ključ dolazi od PBKDF2-SHA256 u 310.000 iteracija za lozinku ili PIN, ili iz WebAuthn PRF izlaza preko HKDF-SHA256 za pristupni ključ ili biometriju.
Pozivi i prijenos datotekaWebRTC-ov vlastiti DTLS-SRTP, dogovoren preko signalizacije umotane u NIP-17.
SlučajnostPlatforma CSPRNG svuda — ključevi, nonces i treperenje vremenske oznake poklona.

Zaštita metapodataka

Dva detalja na putu za umotavanje poklona vredi pozvati, jer oni su ono što izdvaja NIP-59 od "šifrirano, ali očito od vas do njih":

  • Svaki omot je potpisan od strane a jednokratni ključ generirano samo za tu poruku, tako da nema dva omota koja dijele pošiljaoca.
  • Svaki omot created_at je nasumično pozadinskim datumom do dva sati koristeći CSPRNG, tako da se vremena slanja i primanja ne mogu poredati.

Grupni razgovori dodaju rotirajući efemer primalac tasteri povrh toga — vidi Kako funkcionira grupno šifriranje.

Čitanje izvora

Kripto primitivi su tu js/nym-crypto.js i js/modules/key-vault.js u web aplikaciji i ispod android-ios-app/lib/core/crypto/ i lib/services/mesh/noise/ u aplikaciji Flutter. The spremište je AGPL-3.0 i kompletan — ne postoji zatvorena komponenta kojoj bi se moglo preuzeti povjerenje.