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 glasinaNesigniran, i nikada nije objavljen sam po sebi. Odgovor na thread nosi ['nymthread', rootId] oznaka unutar šifrirane glasine, upućivanje na id zajedničke poruke korena.
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]Odgovor na thread dodaje NIP-10 označen ['e', rootId, '', 'root'] Tagovi
23333Poruka imenovanog kanalaEfemerno, označeno ['d', channel]Odgovor na thread dodaje NIP-10 označen ['e', rootId, '', 'root'] Tagovi
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. Ankete, sinhronizacija šifrovanih postavki i najave post-kvantnog ključa (označene nym-pq, koji nosi javni ključ ML-KEM-768 sa NIP-40 istekom).
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.
Uslovi 10Označene oznake odgovora – kako kanal thread odgovori ukazuju na svoju korenu poruke.
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.
Privatne poruke i grupni razgovori između Nymchat korisnikaIsti NIP-44 v2 korisni teret, nepromijenjen, zapečaćen drugi put unutar ChaCha20-Poly1305, ključan iz ML-KEM-768 (FIPS 203) enkapsulacije kroz HKDF-SHA256. pq2. Prefiks tako da čitalac odabere put ispitivanjem korisnog opterećenja. Oba sloja moraju biti slomljena da bi se vratila poruka. kvantno otporna enkripcija.
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.