Gå til innholdet
Tilbake til Nymchat

Kunnskapsgrunnlag Under panseret

Protokoll og arrangementer

Hva Nymchat faktisk legger på ledningen, for alle som bygger mot den, revidere det, eller lese hendelser fra en annen Nostr-klient.

Eventtyper

TypeBrukes tilNotater
0ProfilmetadataStandard Nostr-profil: navn, bilde, banner, om, lud16.
5Forespørsler om slettingNIP-09.
7ReaksjonerNIP-25, med en ['k', originalKind] tag slik at en reaksjon blir arkivert mot riktig kanaltype.
13ForsegleDet midterste laget av en NIP-17-melding.
14Privat melding rykteUsignert, og aldri publisert på egen hånd.
1059GavepapirNIP-59. Hva som faktisk når et relé for private meldinger og gruppechatter.
1984RapporteringNIP-56.
9734 / 9735Zap-forespørsel og zap-kvitteringNIP-57.
10030Egendefinerte emoji-pakkelisterNIP-30.
20000Geohash-kanalmeldingEphemeral, merket ['g', geohash].
23333Navngitt kanalmeldingEphemeral, merket ['d', channel].
24420 / 24421Offentlige skriveindikatorer og lesebekreftelserNymchat-spesifikt, for offentlige kanaler.
25051 / 25052Peer-to-peer-signalering og filoverføringsstatusNymchat-spesifikk.
30030Egendefinerte emoji-settNIP-30.
30078SøknadsdataNIP-78. Avstemninger og krypterte innstillinger synkroniseres.
69420Private lesebekreftelser og leveringsstatusNymchat-spesifikk, båret som et rykte i et gavepapir. En egen type fra 14 bevisst, slik at andre NIP-17-klienter ikke gjengir tomme direktemeldinger for hver kvittering.

NIPs Nymchat implementerer

NIPHva det gir Nymchat
NIP-07Logg på med en nettleserutvidelse.
NIP-09Forespørsler om sletting.
NIP-13Bevis på arbeid. Utgående meldinger mineres til minst 16 biter.
NIP-17Private direktemeldinger, og grunnlaget for gruppechatter.
NIP-25Reaksjoner.
NIP-30Egendefinert emoji.
NIP-40Utløpstidsstempler – meldinger som forsvinner.
NIP-44Versjonskryptering, brukt til forseglinger, innpakninger og synkronisering av innstillinger.
NIP-46Fjernsignering - bunker://.
NIP-56Rapportering.
NIP-57Lyn lyner.
NIP-59Gavepapir.
NIP-78Vilkårlige applikasjonsdata.
NIP-98HTTP-autentisering, for de vertsbaserte endepunktene.

Kryptografi

HvorHva
Identitet og signaturersecp256k1 med Schnorr-signaturer (BIP-340), som Nostr spesifiserer.
Private meldinger og gruppechatterNIP-44 v2: ECDH på secp256k1, HKDF-SHA256, ChaCha20 med HMAC-SHA256, og utfylling slik at chiffertekstlengden ikke gir meldingslengden bort.
Bluetooth-mesh-økterNoise XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 for kunngjøring av signaturer, SHA-256 og HMAC under.
Identitet i roAES-GCM-256. Nøkkelen kommer fra PBKDF2-SHA256 ved 310 000 iterasjoner for et passord eller PIN, eller fra en WebAuthn PRF-utgang gjennom HKDF-SHA256 for en passordnøkkel eller biometrisk.
Samtaler og filoverføringerWebRTCs egen DTLS-SRTP, forhandlet over NIP-17-innpakket signalering.
TilfeldighetPlattformen CSPRNG gjennom hele - nøkler, nonces og gaveinnpakning tidsstempel-jitter.

Metadatabeskyttelse

To detaljer i gaveinnpakningsbanen er verdt å nevne, fordi de er det som skiller NIP-59 fra "kryptert, men åpenbart fra deg til dem":

  • Hver innpakning er signert av en engangsnøkkel generert for den meldingen alene, så ingen omslag deler en avsender.
  • Hver wrap er created_at er tilfeldig tilbakedatert med opptil to timer ved å bruke CSPRNG, så sende- og mottakstider kan ikke settes på linje.

Gruppechatter legger til roterende flyktig mottaker nøkler på toppen av det - se Hvordan gruppekryptering fungerer.

Leser kilden

Kryptoprimitivene er inne js/nym-crypto.js og js/modules/key-vault.js i nettappen og under android-ios-app/lib/core/crypto/ og lib/services/mesh/noise/ i Flutter-appen. De depot er AGPL-3.0 og komplett — det er ingen lukket komponent å ta på seg tillit.