Přejít na obsah
Zpět k Nymchatu

Znalostní základna Pod kapotou

Protokol a události

To, co Nymchat ve skutečnosti klade na drát, pro každého, kdo se proti němu staví, jeho auditování nebo čtení událostí z jiného klienta Nostr.

Druhy událostí

DruhPoužívá se proPoznámky
0Metadata profiluStandardní profil Nostr: jméno, obrázek, banner, o, lud16.
5Žádosti o smazáníNIP-09.
7ReakceNIP-25, s a ['k', originalKind] tag, takže se odešle reakce proti správnému typu kanálu.
13PečeťStřední vrstva zprávy NIP-17.
14Soukromá zpráva fámaNepodepsané a nikdy samostatně nepublikované.
1059Dárkové baleníNIP-59. Co ve skutečnosti dosáhne relé pro soukromé zprávy a skupinové chaty.
1984HlášeníNIP-56.
9734 / 9735Žádost o zap a příjem zapNIP-57.
10030Vlastní seznamy balíčků emodžiNIP-30.
20000Zpráva kanálu GeohashPomíjivé, označené ['g', geohash].
23333Zpráva pojmenovaného kanáluPomíjivé, označené ['d', channel].
24420 / 24421Veřejné indikátory psaní a potvrzení o přečteníSpecifické pro Nymchat, pro veřejné kanály.
25051 / 25052Signalizace typu peer-to-peer a stav přenosu souborůSpecifické pro Nymchat.
30030Vlastní sady emodžiNIP-30.
30078Data aplikaceNIP-78. Synchronizace průzkumů a šifrovaných nastavení.
69420Soukromé potvrzení o přečtení a stav doručeníSpecifická pro Nymchat, nesená jako pověst v dárkovém balení. Samostatný druh od 14 záměrně, takže ostatní klienti NIP-17 nevykreslují prázdné přímé zprávy pro každou účtenku.

NIP implementuje Nymchat

NIPCo to dává Nymchat
NIP-07Přihlaste se pomocí rozšíření prohlížeče.
NIP-09Žádosti o smazání.
NIP-13Doklad o práci. Odchozí zprávy jsou těženy na minimálně 16 bitů.
NIP-17Soukromé přímé zprávy a základ pro skupinové chaty.
NIP-25Reakce.
NIP-30Vlastní emotikony.
NIP-40Časová razítka vypršení platnosti — mizející zprávy.
NIP-44Verzované šifrování používané pro těsnění, obaly a synchronizaci nastavení.
NIP-46Vzdálené podepisování — bunker://.
NIP-56Hlášení.
NIP-57Bleskové výpady.
NIP-59Dárkové obaly.
NIP-78Libovolná aplikační data.
NIP-98HTTP auth pro hostované koncové body.

Kryptografie

KdeCo
Totožnost a podpisysecp256k1 s podpisy Schnorr (BIP-340), jak uvádí Nostr.
Soukromé zprávy a skupinové chatyNIP-44 v2: ECDH na secp256k1, HKDF-SHA256, ChaCha20 s HMAC-SHA256 a výplň, takže délka šifrovaného textu neudává délku zprávy.
Bluetooth mesh relaceNoise XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 pro oznamovací podpisy, SHA-256 a HMAC pod nimi.
Identita v kliduAES-GCM-256. Klíč pochází z PBKDF2-SHA256 při 310 000 iteracích pro heslo nebo PIN, nebo z výstupu WebAuthn PRF přes HKDF-SHA256 pro přístupový klíč nebo biometrický údaj.
Hovory a přenosy souborůVlastní DTLS-SRTP WebRTC, vyjednané přes signalizaci zabalenou do NIP-17.
NahodilostPlatforma CSPRNG všudypřítomná – klíče, nonces a časové razítko v dárkovém balení se chvějí.

Ochrana metadat

Dva detaily na cestě k dárkovému balení stojí za zmínku, protože právě ty oddělují NIP-59 od „zašifrované, ale zjevně od vás jim“:

  • Každý obal je podepsán a jednorázový klíč generované pouze pro tuto zprávu, takže žádné dva obaly nesdílejí odesílatele.
  • Každý zábal created_at je náhodně zálohované až dvěma hodin pomocí CSPRNG, takže časy odeslání a příjmu nelze seřadit.

Skupinové chaty přidávají rotující pomíjivé příjemce klávesy nad tím — viz Jak funguje skupinové šifrování.

Čtení zdroje

Krypto primitiva jsou in js/nym-crypto.js a js/modules/key-vault.js ve webové aplikaci a pod android-ios-app/lib/core/crypto/ a lib/services/mesh/noise/ v aplikaci Flutter. The úložiště je AGPL-3.0 a kompletní – neexistuje žádná uzavřená komponenta, které by se dala důvěřovat.