Slaan oor na die inhoud
Keer terug na Nymchat

Kennisbasis Onder die enjinkap

Protokol en gebeure

Wat Nymchat eintlik op die draad sit, vir enigiemand wat daarteen bou, oudit dit, of lees gebeurtenisse van 'n ander Nostr-kliënt.

Soorte gebeurtenisse

SoortGebruik virNotas
0Profiel metadataStandaard Nostr-profiel: naam, prent, banier, oor, lud16.
5SkrapversoekeNIP-09.
7ReaksiesNIP-25, met 'n ['k', originalKind] merk sodat 'n reaksie teen die regte kanaaltipe geliasseer word.
13SeëlDie middelste laag van 'n NIP-17-boodskap.
14Privaatboodskap gerugOngeteken, en nooit op sy eie gepubliseer nie.
1059GeskenkpapierNIP-59. Wat eintlik 'n aflos bereik vir privaat boodskappe en groepkletse.
1984VerslagdoeningNIP-56.
9734 / 9735Zap-versoek en zap-kwitansieNIP-57.
10030Pasgemaakte emoji-paklysteNIP-30.
20000Geohash-kanaalboodskapEfemeer, gemerk ['g', geohash].
23333Benoemde kanaalboodskapEfemeer, gemerk ['d', channel].
24420 / 24421Openbare tikaanwysers en leesbewyseNymchat-spesifiek, vir publieke kanale.
25051 / 25052Eweknie-sein- en lêeroordragstatusNymchat-spesifiek.
30030Pasgemaakte emoji-stelleNIP-30.
30078ToepassingsdataNIP-78. Meningspeilings en geënkripteerde instellings sinchroniseer.
69420Privaat leesbewyse en afleweringstatusNymchat-spesifiek, gedra as 'n gerug binne 'n geskenkpapier. N aparte soort van 14 doelbewus, sodat ander NIP-17-kliënte nie leë direkte boodskappe vir elke kwitansie lewer nie.

NIP's Nymchat implementeer

NIPWat dit gee Nymchat
NIP-07Meld aan met 'n blaaieruitbreiding.
NIP-09Skrapversoeke.
NIP-13Bewys van werk. Uitgaande boodskappe word tot ten minste 16 bisse ontgin.
NIP-17Privaat direkte boodskappe, en die basis vir groepkletse.
NIP-25Reaksies.
NIP-30Gepasmaakte emosiekone.
NIP-40Vervaltydstempels — boodskappe wat verdwyn.
NIP-44Weergawe enkripsie, gebruik vir seëls, omhulsels en instellings sinchroniseer.
NIP-46Afgeleë ondertekening - bunker://.
NIP-56Verslagdoening.
NIP-57Weerlig slaan.
NIP-59Geskenkpakkies.
NIP-78Arbitrêre toepassingsdata.
NIP-98HTTP-magtiging, vir die gehoste eindpunte.

Kriptografie

WaarWat
Identiteit en handtekeningesecp256k1 met Schnorr-handtekeninge (BIP-340), soos Nostr spesifiseer.
Privaat boodskappe en groepkletseNIP-44 v2: ECDH op secp256k1, HKDF-SHA256, ChaCha20 met HMAC-SHA256, en opvulling sodat syfertekslengte nie die boodskaplengte weggee nie.
Bluetooth mesh sessiesGeraas XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 vir aankondiging van handtekeninge, SHA-256 en HMAC daaronder.
Identiteit in rusAES-GCM-256. Die sleutel kom van PBKDF2-SHA256 teen 310 000 iterasies vir 'n wagwoord of PIN, of van 'n WebAuthn PRF-uitvoer deur HKDF-SHA256 vir 'n wagwoordsleutel of biometriese.
Oproepe en lêeroordragteWebRTC se eie DTLS-SRTP, onderhandel oor NIP-17-omhulde sein.
WillekeurigheidDie platform CSPRNG deurgaans - sleutels, nonces, en die geskenk-verpakking tydstempel jitter.

Metadatabeskerming

Twee besonderhede in die geskenkpak-pad is die moeite werd om uit te roep, want dit is wat NIP-59 skei van "geïnkripteer, maar natuurlik van jou na hulle":

  • Elke omhulsel word geteken deur a eenmalige sleutel gegenereer vir daardie boodskap alleen, dus geen twee wraps deel 'n sender nie.
  • Elke wrap s'n created_at is lukraak teruggedateer met tot twee ure met behulp van die CSPRNG, so stuur- en ontvangtye kan nie in lyn gebring word nie.

Groepkletse voeg roterende kortstondige by ontvanger sleutels boonop — sien Hoe groepkodering werk.

Lees die bron

Die kripto-primitiewe is in js/nym-crypto.js en js/modules/key-vault.js in die webtoepassing, en onder android-ios-app/lib/core/crypto/ en lib/services/mesh/noise/ in die Flutter-toepassing. Die bewaarplek is AGPL-3.0 en volledig — daar is geen geslote komponent om vertroue te aanvaar nie.