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.
Ova stranica je strojno prevedena radi praktičnosti. Engleski izvornik je verzija koja se primjenjuje.
Vrste događaja
| Vrsta | Koristi se za | Bilješke |
|---|---|---|
0 | Metapodaci profila | Standardni Nostr profil: ime, slika, banner, o, lud16. |
5 | Zahtjevi za brisanje | NIP-09. |
7 | Reakcije | NIP-25, s a ['k', originalKind] oznaku tako da se reakcija podnese protiv odgovarajuće vrste kanala. |
13 | Pečat | Srednji sloj NIP-17 poruke. |
14 | Privatna poruka glasine | Nepotpisano i nikad samostalno objavljeno. |
1059 | Pakovanje poklona | NIP-59. Što zapravo doseže relej za privatne poruke i grupne razgovore. |
1984 | Izvještavanje | NIP-56. |
9734 / 9735 | Zap zahtjev i zap potvrda | NIP-57. |
10030 | Prilagođeni popisi paketa emotikona | NIP-30. |
20000 | Poruka Geohash kanala | Efemerno, označeno ['g', geohash]. |
23333 | Poruka imenovanog kanala | Efemerno, označeno ['d', channel]. |
24420 / 24421 | Javni indikatori tipkanja i potvrde o čitanju | Specifično za Nymchat, za javne kanale. |
25051 / 25052 | Peer-to-peer signalizacija i status prijenosa datoteka | Specifično za Nymchat. |
30030 | Prilagođeni skupovi emotikona | NIP-30. |
30078 | Podaci o aplikaciji | NIP-78. Sinkronizacija anketa i šifriranih postavki. |
69420 | Privatne potvrde čitanja i status isporuke | Specifič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-07 | Prijavite se proširenjem preglednika. |
| NIP-09 | Zahtjevi za brisanje. |
| NIP-13 | Dokaz o radu. Odlazne poruke rudare se na najmanje 16 bita. |
| NIP-17 | Privatne izravne poruke i osnova za grupne razgovore. |
| NIP-25 | Reakcije. |
| NIP-30 | Prilagođeni emoji. |
| NIP-40 | Vremenske oznake isteka — poruke koje nestaju. |
| NIP-44 | Enkripcija s verzijama, koristi se za pečate, omote i sinkronizaciju postavki. |
| NIP-46 | Daljinsko potpisivanje — bunker://. |
| NIP-56 | Izvještavanje. |
| NIP-57 | Munjevito pucanje. |
| NIP-59 | Zamotavanje poklona. |
| NIP-78 | Podaci proizvoljne aplikacije. |
| NIP-98 | HTTP autentifikacija, za hostirane krajnje točke. |
Kriptografija
| Gdje | Što |
|---|---|
| Identitet i potpisi | secp256k1 sa Schnorrovim potpisima (BIP-340), kako navodi Nostr. |
| Privatne poruke i grupni razgovori | NIP-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 mirovanju | AES-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 datoteka | WebRTC-ov vlastiti DTLS-SRTP, dogovoren preko NIP-17 omotane signalizacije. |
| Slučajnost | Platforma 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_atje 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.
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.