Gean nei de ynhâld
Werom nei Nymchat

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.

Event soarten

SoartWurdt brûkt foarNotysjes
0Profile metadataStandert Nostr profyl: namme, foto, banner, oer, lud16.
5Wiskje fersikenNIP-09.
7ReaksjesNIP-25, mei in ['k', originalKind] tag sadat in reaksje wurdt yntsjinne tsjin it juste kanaaltype.
13SegelDe middelste laach fan in NIP-17 berjocht.
14Privee berjocht geroftNet ûndertekene, en noait op himsels publisearre.
1059Gift wrapNIP-59. Wat eins berikt in estafette foar privee berjochten en groep chats.
1984FerslachjouwingNIP-56.
9734 / 9735Zap fersyk en Zap ûntfangstNIP-57.
10030Oanpaste emoji-pakketlistenNIP-30.
20000Geohash kanaal berjochtEfemêr, tagged ['g', geohash].
23333Neamd kanaal berjochtEfemêr, tagged ['d', channel].
24420 / 24421Iepenbiere typen yndikatoaren en lêsbewizenNymchat-spesifyk, foar iepenbiere kanalen.
25051 / 25052Peer-to-peer-sinjalearjen en status fan bestânoerdrachtNymchat-spesifike.
30030Oanpaste emoji-setsNIP-30.
30078Applikaasje gegevensNIP-78. Polls, en fersifere ynstellings syngronisearje.
69420Privee lêsbewizen en leveringstatusNymchat-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

NIPWat it jout Nymchat
NIP-07Oanmelde mei in browser tafoeging.
NIP-09Wiskje fersiken.
NIP-13Bewiis fan wurk. Utgeande berjochten wurde mined oan op syn minst 16 bits.
NIP-17Privee direkte berjochten, en de basis foar groepchats.
NIP-25Reaksjes.
NIP-30Oanpaste emoji.
NIP-40Ferrintiidstempels - ferdwine berjochten.
NIP-44Fersifere fersifering, brûkt foar sealen, wraps en syngronisaasje fan ynstellingen.
NIP-46Undertekening op ôfstân - bunker://.
NIP-56Ferslachjouwing.
NIP-57Wjerljocht slacht.
NIP-59Gift wraps.
NIP-78Willekeurige applikaasje gegevens.
NIP-98HTTP auth, foar de hosted einpunten.

Kryptografy

WêrWat
Identiteit en hantekeningensecp256k1 mei Schnorr hantekeningen (BIP-340), lykas Nostr spesifisearret.
Privee berjochten en groep chatsNIP-44 v2: ECDH op secp256k1, HKDF-SHA256, ChaCha20 mei HMAC-SHA256, en padding sa ciphertext lingte jout it berjocht lingte net fuort.
Bluetooth mesh sesjesNoise XX - X25519, ChaCha20-Poly1305 (IETF), Ed25519 foar oankundigje hantekeningen, SHA-256 en HMAC derûnder.
Identiteit yn rêstAES-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 oerdrachtWebRTC's eigen DTLS-SRTP, ûnderhannele oer NIP-17-ferpakte sinjalearring.
RandomnessIt 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_at is 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.

It lêzen fan de boarne

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.