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.
Ova stranica je strojno prevedena radi praktičnosti. Engleski original je verzija koja se primjenjuje.
Vrste događaja
| Ljubazno | Koristi se za | Bilješke |
|---|---|---|
0 | Metapodaci profila | Standardni Nostr profil: ime, slika, baner, o, lud16. |
5 | Zahtjevi za brisanje | NIP-09. |
7 | Reakcije | NIP-25, sa a ['k', originalKind] tag tako da se reakcija podnese protiv pravog tipa kanala. |
13 | Pečat | Srednji sloj NIP-17 poruke. |
14 | Privatna poruka glasina | Nepotpisan, i nikada nije objavljen samostalno. |
1059 | Gift wrap | NIP-59. Šta zapravo stiže do releja za privatne poruke i grupne razgovore. |
1984 | Izvještavanje | NIP-56. |
9734 / 9735 | Zap zahtjev i zap račun | NIP-57. |
10030 | Prilagođene liste paketa emojija | NIP-30. |
20000 | Poruka Geohash kanala | Efemerno, označeno ['g', geohash]. |
23333 | Poruka imenovanog kanala | Efemerno, označeno ['d', channel]. |
24420 / 24421 | Indikatori javnog kucanja 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 setovi emotikona | NIP-30. |
30078 | Podaci aplikacije | NIP-78. Sinhronizacija anketa i šifrovanih postavki. |
69420 | Privatne potvrde o čitanju i status isporuke | Specifič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-07 | Prijavite se sa ekstenzijom pretraživača. |
| NIP-09 | Zahtjevi za brisanje. |
| NIP-13 | Dokaz o radu. Odlazne poruke su minirane na najmanje 16 bita. |
| NIP-17 | Privatne direktne poruke i osnova za grupne razgovore. |
| NIP-25 | Reakcije. |
| NIP-30 | Prilagođeni emoji. |
| NIP-40 | Vremenske oznake isteka — poruke koje nestaju. |
| NIP-44 | Versionirano šifriranje, koristi se za pečate, omote i sinhronizaciju postavki. |
| NIP-46 | Daljinsko potpisivanje — bunker://. |
| NIP-56 | Izvještavanje. |
| NIP-57 | Munje zaps. |
| NIP-59 | Zamotavanje poklona. |
| NIP-78 | Proizvoljni podaci aplikacije. |
| NIP-98 | HTTP auth, za hostovane krajnje tačke. |
Kriptografija
| Gdje | sta |
|---|---|
| Identitet i potpisi | secp256k1 sa Schnorr potpisima (BIP-340), kako navodi Nostr. |
| Privatne poruke i grupni razgovori | NIP-44 v2: ECDH na secp256k1, HKDF-SHA256, ChaCha20 sa HMAC-SHA256 i dopuna tako da dužina šifrovanog teksta ne odaje dužinu poruke. |
| Bluetooth mesh sesije | Buka XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 za potpise najave, SHA-256 i HMAC ispod. |
| Identitet u mirovanju | AES-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 datoteka | WebRTC-ov vlastiti DTLS-SRTP, dogovoren preko signalizacije umotane u NIP-17. |
| Slučajnost | Platforma 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_atje 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.
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.