Znalostná báza Pod kapotou
Protokol a udalosti
Čo Nymchat v skutočnosti kladie na drôt pre každého, kto sa proti nemu stavia, jeho auditovanie, alebo čítanie udalostí z iného klienta Nostr.
Táto stránka je pre pohodlie preložená strojovo. Platí anglický originál.
Druhy udalostí
| Milý | Používa sa na | Poznámky |
|---|---|---|
0 | Metadáta profilu | Štandardný profil Nostr: meno, obrázok, banner, o, lud16. |
5 | Žiadosti o vymazanie | NIP-09. |
7 | Reakcie | NIP-25, s a ['k', originalKind] tak, aby bola odoslaná reakcia proti správnemu typu kanála. |
13 | Pečať | Stredná vrstva správy NIP-17. |
14 | Fáma zo súkromnej správy | Nepodpísané a nikdy nezverejnené samostatne. |
1059 | Darčekové balenie | NIP-59. Čo vlastne dosiahne relé pre súkromné správy a skupinové chaty. |
1984 | Nahlasovanie | NIP-56. |
9734 / 9735 | Žiadosť o zap a potvrdenie o zap | NIP-57. |
10030 | Vlastné zoznamy balíkov emodži | NIP-30. |
20000 | Správa kanála Geohash | Pominuteľné, označené ['g', geohash]. |
23333 | Správa pomenovaného kanála | Pominuteľné, označené ['d', channel]. |
24420 / 24421 | Verejné indikátory písania a potvrdenia o prečítaní | Špecifické pre Nymchat, pre verejné kanály. |
25051 / 25052 | Signalizácia typu peer-to-peer a stav prenosu súborov | Špecifické pre Nymchat. |
30030 | Vlastné sady emodži | NIP-30. |
30078 | Údaje aplikácie | NIP-78. Ankety a šifrované nastavenia sa synchronizujú. |
69420 | Súkromné potvrdenia o prečítaní a stav doručenia | Špecifické pre Nymchat, prenášané ako povesť v darčekovom balení. Samostatný druh od 14 zámerne, aby ostatní klienti NIP-17 nevykresľovali prázdne priame správy pre každý príjem. |
NIP implementuje Nymchat
| NIP | Čo to dáva Nymchat |
|---|---|
| NIP-07 | Prihláste sa pomocou rozšírenia prehliadača. |
| NIP-09 | Žiadosti o vymazanie. |
| NIP-13 | Doklad o práci. Odchádzajúce správy sú ťažené na minimálne 16 bitov. |
| NIP-17 | Súkromné priame správy a základ pre skupinové rozhovory. |
| NIP-25 | Reakcie. |
| NIP-30 | Vlastné emotikony. |
| NIP-40 | Časové pečiatky uplynutia platnosti – miznúce správy. |
| NIP-44 | Verzované šifrovanie používané na pečate, obaly a synchronizáciu nastavení. |
| NIP-46 | Vzdialené podpisovanie — bunker://. |
| NIP-56 | Nahlasovanie. |
| NIP-57 | Blesky zapnú. |
| NIP-59 | Darčekové obaly. |
| NIP-78 | Údaje ľubovoľnej aplikácie. |
| NIP-98 | HTTP auth pre hostované koncové body. |
Kryptografia
| Kde | Čo? |
|---|---|
| Totožnosť a podpisy | secp256k1 s podpismi Schnorr (BIP-340), ako špecifikuje Nostr. |
| Súkromné správy a skupinové chaty | NIP-44 v2: ECDH na secp256k1, HKDF-SHA256, ChaCha20 s HMAC-SHA256 a výplň tak, aby dĺžka šifrového textu neprezrádzala dĺžku správy. |
| Relácie Bluetooth mesh | Noise XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 pre oznamovacie podpisy, SHA-256 a HMAC pod nimi. |
| Identita v pokoji | AES-GCM-256. Kľúč pochádza z PBKDF2-SHA256 pri 310 000 opakovaniach pre heslo alebo PIN, alebo z výstupu WebAuthn PRF cez HKDF-SHA256 pre prístupový kľúč alebo biometrický údaj. |
| Hovory a prenosy súborov | Vlastné DTLS-SRTP WebRTC, dohodnuté cez signalizáciu zabalenú do NIP-17. |
| Náhodnosť | Celá platforma CSPRNG – kľúče, nonces a časová pečiatka darčekového balenia sa trasú. |
Ochrana metadát
Dva detaily v darčekovom balení stoja za zmienku, pretože sú tým, čo oddeľuje NIP-59 od „zašifrované, ale zjavne od vás k nim“:
- Každý obal je podpísaný a jednorazový kľúč generované len pre túto správu, takže žiadne dva obaly nezdieľajú odosielateľa.
- Každý zábal
created_atje náhodne zálohované až dvoma hodiny pomocou CSPRNG, takže časy odosielania a prijímania nie je možné zoradiť.
Skupinové rozhovory pridávajú rotujúce prchavé príjemcu klávesy nad tým — viď Ako funguje skupinové šifrovanie.
Krypto primitíva sú in js/nym-crypto.js a
js/modules/key-vault.js vo webovej aplikácii a pod
android-ios-app/lib/core/crypto/ a
lib/services/mesh/noise/ v aplikácii Flutter. The
úložisko
je AGPL-3.0 a kompletný – neexistuje žiadny uzavretý komponent, ktorému by sme mohli dôverovať.