Kennisbasis Under de motorkap
Protokol en eveneminten
Wat Nymchat eins op 'e draad set, foar elkenien dy't der tsjin bouwt, it kontrolearjen, of it lêzen fan eveneminten fan in oare Nostr-kliïnt.
Dizze side is masine-oerset foar it gemak. It Ingelske orizjineel is de ferzje dy't jildt.
Event soarten
| Soart | Wurdt brûkt foar | Notysjes |
|---|---|---|
0 | Profile metadata | Standert Nostr profyl: namme, foto, banner, oer, lud16. |
5 | Wiskje fersiken | NIP-09. |
7 | Reaksjes | NIP-25, mei in ['k', originalKind] tag sadat in reaksje wurdt yntsjinne tsjin it juste kanaaltype. |
13 | Segel | De middelste laach fan in NIP-17 berjocht. |
14 | Privee berjocht geroft | Net ûndertekene, en noait op himsels publisearre. |
1059 | Gift wrap | NIP-59. Wat eins berikt in estafette foar privee berjochten en groep chats. |
1984 | Ferslachjouwing | NIP-56. |
9734 / 9735 | Zap fersyk en Zap ûntfangst | NIP-57. |
10030 | Oanpaste emoji-pakketlisten | NIP-30. |
20000 | Geohash kanaal berjocht | Efemêr, tagged ['g', geohash]. |
23333 | Neamd kanaal berjocht | Efemêr, tagged ['d', channel]. |
24420 / 24421 | Iepenbiere typen yndikatoaren en lêsbewizen | Nymchat-spesifyk, foar iepenbiere kanalen. |
25051 / 25052 | Peer-to-peer-sinjalearjen en status fan bestânoerdracht | Nymchat-spesifike. |
30030 | Oanpaste emoji-sets | NIP-30. |
30078 | Applikaasje gegevens | NIP-78. Polls, en fersifere ynstellings syngronisearje. |
69420 | Privee lêsbewizen en leveringstatus | Nymchat-spesifyk, droegen as in geroft yn in kado-wrap. In apart soarte fan 14 mei opsetsin, sadat oare NIP-17-kliïnten gjin lege direkte berjochten werjaan foar elke ûntfangst. |
NIPs Nymchat ymplemintearret
| NIP | Wat it jout Nymchat |
|---|---|
| NIP-07 | Oanmelde mei in browser tafoeging. |
| NIP-09 | Wiskje fersiken. |
| NIP-13 | Bewiis fan wurk. Utgeande berjochten wurde mined oan op syn minst 16 bits. |
| NIP-17 | Privee direkte berjochten, en de basis foar groepchats. |
| NIP-25 | Reaksjes. |
| NIP-30 | Oanpaste emoji. |
| NIP-40 | Ferrintiidstempels - ferdwine berjochten. |
| NIP-44 | Fersifere fersifering, brûkt foar sealen, wraps en syngronisaasje fan ynstellingen. |
| NIP-46 | Undertekening op ôfstân - bunker://. |
| NIP-56 | Ferslachjouwing. |
| NIP-57 | Wjerljocht slacht. |
| NIP-59 | Gift wraps. |
| NIP-78 | Willekeurige applikaasje gegevens. |
| NIP-98 | HTTP auth, foar de hosted einpunten. |
Kryptografy
| Wêr | Wat |
|---|---|
| Identiteit en hantekeningen | secp256k1 mei Schnorr hantekeningen (BIP-340), lykas Nostr spesifisearret. |
| Privee berjochten en groep chats | NIP-44 v2: ECDH op secp256k1, HKDF-SHA256, ChaCha20 mei HMAC-SHA256, en padding sa ciphertext lingte jout it berjocht lingte net fuort. |
| Bluetooth mesh sesjes | Noise XX - X25519, ChaCha20-Poly1305 (IETF), Ed25519 foar oankundigje hantekeningen, SHA-256 en HMAC derûnder. |
| Identiteit yn rêst | AES-GCM-256. De kaai komt fan PBKDF2-SHA256 by 310.000 iteraasjes foar in wachtwurd of PIN, of fan in WebAuthn PRF-útfier fia HKDF-SHA256 foar in wachtwurd of biometrysk. |
| Oproppen en triem oerdracht | WebRTC's eigen DTLS-SRTP, ûnderhannele oer NIP-17-ferpakte sinjalearring. |
| Randomness | It platfoarm CSPRNG rûnom - kaaien, nonces, en de kado-wrap tiidstempel jitter. |
Metadata beskerming
Twa details yn 'e kado-wrappaad binne it wurdich om te roppen, om't se binne wat apart NIP-59 fan "fersifere, mar fansels fan jo nei harren":
- Elke wrap is tekene troch in ien kear kaai generearre foar dat berjocht allinich, dus gjin twa wraps diele in stjoerder.
- Elke wrap is
created_atis willekeurich backdated troch maksimaal twa oeren mei help fan de CSPRNG, sadat ferstjoeren en ûntfange tiden kinne net line up.
Groepchats foegje rotearjende efemere ta ûntfanger kaaien boppedat - sjoch Hoe groep fersifering wurket.
De krypto-primitiven binne yn js/nym-crypto.js en
js/modules/key-vault.js yn 'e webapp, en ûnder
android-ios-app/lib/core/crypto/ en
lib/services/mesh/noise/ yn de Flutter-app. De
repository
is AGPL-3.0 en folslein - d'r is gjin sletten komponint om fertrouwen te nimmen.