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.
Tato stránka je pro usnadnění přeložena strojově. Platí anglický originál.
Druhy událostí
| Druh | Používá se pro | Poznámky |
|---|---|---|
0 | Metadata profilu | Standardní profil Nostr: jméno, obrázek, banner, o, lud16. |
5 | Žádosti o smazání | NIP-09. |
7 | Reakce | NIP-25, s a ['k', originalKind] tag, takže se odešle reakce proti správnému typu kanálu. |
13 | Pečeť | Střední vrstva zprávy NIP-17. |
14 | Soukromá zpráva fáma | Nepodepsané a nikdy samostatně nepublikované. |
1059 | Dárkové balení | NIP-59. Co ve skutečnosti dosáhne relé pro soukromé zprávy a skupinové chaty. |
1984 | Hlášení | NIP-56. |
9734 / 9735 | Žádost o zap a příjem zap | NIP-57. |
10030 | Vlastní seznamy balíčků emodži | NIP-30. |
20000 | Zpráva kanálu Geohash | Pomíjivé, označené ['g', geohash]. |
23333 | Zpráva pojmenovaného kanálu | Pomíjivé, označené ['d', channel]. |
24420 / 24421 | Veřejné indikátory psaní a potvrzení o přečtení | Specifické pro Nymchat, pro veřejné kanály. |
25051 / 25052 | Signalizace typu peer-to-peer a stav přenosu souborů | Specifické pro Nymchat. |
30030 | Vlastní sady emodži | NIP-30. |
30078 | Data aplikace | NIP-78. Synchronizace průzkumů a šifrovaných nastavení. |
69420 | Soukromé 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
| NIP | Co to dává Nymchat |
|---|---|
| NIP-07 | Přihlaste se pomocí rozšíření prohlížeče. |
| NIP-09 | Žádosti o smazání. |
| NIP-13 | Doklad o práci. Odchozí zprávy jsou těženy na minimálně 16 bitů. |
| NIP-17 | Soukromé přímé zprávy a základ pro skupinové chaty. |
| NIP-25 | Reakce. |
| NIP-30 | Vlastní emotikony. |
| NIP-40 | Časová razítka vypršení platnosti — mizející zprávy. |
| NIP-44 | Verzované šifrování používané pro těsnění, obaly a synchronizaci nastavení. |
| NIP-46 | Vzdálené podepisování — bunker://. |
| NIP-56 | Hlášení. |
| NIP-57 | Bleskové výpady. |
| NIP-59 | Dárkové obaly. |
| NIP-78 | Libovolná aplikační data. |
| NIP-98 | HTTP auth pro hostované koncové body. |
Kryptografie
| Kde | Co |
|---|---|
| Totožnost a podpisy | secp256k1 s podpisy Schnorr (BIP-340), jak uvádí Nostr. |
| Soukromé zprávy a skupinové chaty | NIP-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 relace | Noise XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 pro oznamovací podpisy, SHA-256 a HMAC pod nimi. |
| Identita v klidu | AES-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. |
| Nahodilost | Platforma 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_atje 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í.
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.