Prijeđi na sadržaj
Povratak u Nymchat

Baza znanja Ispod haube

Protokol i događanja

Ono što Nymchat zapravo stavlja na žicu, za svakoga tko gradi protiv toga, reviziju ili čitanje događaja s drugog Nostr klijenta.

Vrste događaja

VrstaKoristi se zaBilješke
0Metapodaci profilaStandardni Nostr profil: ime, slika, banner, o, lud16.
5Zahtjevi za brisanjeNIP-09.
7ReakcijeNIP-25, s a ['k', originalKind] oznaku tako da se reakcija podnese protiv odgovarajuće vrste kanala.
13PečatSrednji sloj NIP-17 poruke.
14Privatna poruka glasineNepotpisano i nikad samostalno objavljeno.
1059Pakovanje poklonaNIP-59. Što zapravo doseže relej za privatne poruke i grupne razgovore.
1984IzvještavanjeNIP-56.
9734 / 9735Zap zahtjev i zap potvrdaNIP-57.
10030Prilagođeni popisi paketa emotikonaNIP-30.
20000Poruka Geohash kanalaEfemerno, označeno ['g', geohash].
23333Poruka imenovanog kanalaEfemerno, označeno ['d', channel].
24420 / 24421Javni indikatori tipkanja i potvrde o čitanjuSpecifično za Nymchat, za javne kanale.
25051 / 25052Peer-to-peer signalizacija i status prijenosa datotekaSpecifično za Nymchat.
30030Prilagođeni skupovi emotikonaNIP-30.
30078Podaci o aplikacijiNIP-78. Sinkronizacija anketa i šifriranih postavki.
69420Privatne potvrde čitanja i status isporukeSpecifično za Nymchat, prenosi se kao glasina u omotu poklona. Odvojena vrsta od 14 namjerno, tako da drugi NIP-17 klijenti ne prikazuju prazne izravne poruke za svaki primitak.

NIP-ove Nymchat provodi

GUTLJAJŠto daje Nymchat
NIP-07Prijavite se proširenjem preglednika.
NIP-09Zahtjevi za brisanje.
NIP-13Dokaz o radu. Odlazne poruke rudare se na najmanje 16 bita.
NIP-17Privatne izravne poruke i osnova za grupne razgovore.
NIP-25Reakcije.
NIP-30Prilagođeni emoji.
NIP-40Vremenske oznake isteka — poruke koje nestaju.
NIP-44Enkripcija s verzijama, koristi se za pečate, omote i sinkronizaciju postavki.
NIP-46Daljinsko potpisivanje — bunker://.
NIP-56Izvještavanje.
NIP-57Munjevito pucanje.
NIP-59Zamotavanje poklona.
NIP-78Podaci proizvoljne aplikacije.
NIP-98HTTP autentifikacija, za hostirane krajnje točke.

Kriptografija

GdjeŠto
Identitet i potpisisecp256k1 sa Schnorrovim potpisima (BIP-340), kako navodi Nostr.
Privatne poruke i grupni razgovoriNIP-44 v2: ECDH na secp256k1, HKDF-SHA256, ChaCha20 s HMAC-SHA256 i ispuna tako da duljina šifriranog teksta ne odaje duljinu poruke.
Bluetooth mesh sesijeŠum XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 za potpise najava, SHA-256 i HMAC ispod.
Identitet u mirovanjuAES-GCM-256. Ključ dolazi iz PBKDF2-SHA256 u 310.000 ponavljanja za lozinku ili PIN, ili iz WebAuthn PRF izlaza kroz HKDF-SHA256 za pristupni ključ ili biometriju.
Pozivi i prijenos datotekaWebRTC-ov vlastiti DTLS-SRTP, dogovoren preko NIP-17 omotane signalizacije.
SlučajnostPlatforma CSPRNG u cijelosti — ključevi, jednokratni dodaci i podrhtavanje vremenske oznake zamatanja poklona.

Zaštita metapodataka

Dva su detalja na putu pakiranja darova vrijedna spomena jer oni odvajaju NIP-59 od "šifrirano, ali očito od tebe njima":

  • Svaki omot potpisuje a jednokratni ključ generirano samo za tu poruku, tako da dva omota ne dijele pošiljatelja.
  • Svaki omot created_at je nasumično unatrag do dva sati koristeći CSPRNG, tako da se vremena slanja i primanja ne mogu uskladiti.

Grupni chatovi dodaju rotirajući prolazni primatelj ključevi povrh toga — vidi Kako funkcionira grupna enkripcija.

Č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 potpun — nema zatvorene komponente kojoj se može vjerovati.