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.
Denne siden er maskinoversatt for enkelhets skyld. Den engelske originalen er versjonen som gjelder.
Eventtyper
| Type | Brukes til | Notater |
|---|---|---|
0 | Profilmetadata | Standard Nostr-profil: navn, bilde, banner, om, lud16. |
5 | Forespørsler om sletting | NIP-09. |
7 | Reaksjoner | NIP-25, med en ['k', originalKind] tag slik at en reaksjon blir arkivert mot riktig kanaltype. |
13 | Forsegle | Det midterste laget av en NIP-17-melding. |
14 | Privat melding rykte | Usignert, og aldri publisert på egen hånd. |
1059 | Gavepapir | NIP-59. Hva som faktisk når et relé for private meldinger og gruppechatter. |
1984 | Rapportering | NIP-56. |
9734 / 9735 | Zap-forespørsel og zap-kvittering | NIP-57. |
10030 | Egendefinerte emoji-pakkelister | NIP-30. |
20000 | Geohash-kanalmelding | Ephemeral, merket ['g', geohash]. |
23333 | Navngitt kanalmelding | Ephemeral, merket ['d', channel]. |
24420 / 24421 | Offentlige skriveindikatorer og lesebekreftelser | Nymchat-spesifikt, for offentlige kanaler. |
25051 / 25052 | Peer-to-peer-signalering og filoverføringsstatus | Nymchat-spesifikk. |
30030 | Egendefinerte emoji-sett | NIP-30. |
30078 | Søknadsdata | NIP-78. Avstemninger og krypterte innstillinger synkroniseres. |
69420 | Private lesebekreftelser og leveringsstatus | Nymchat-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
| NIP | Hva det gir Nymchat |
|---|---|
| NIP-07 | Logg på med en nettleserutvidelse. |
| NIP-09 | Forespørsler om sletting. |
| NIP-13 | Bevis på arbeid. Utgående meldinger mineres til minst 16 biter. |
| NIP-17 | Private direktemeldinger, og grunnlaget for gruppechatter. |
| NIP-25 | Reaksjoner. |
| NIP-30 | Egendefinert emoji. |
| NIP-40 | Utløpstidsstempler – meldinger som forsvinner. |
| NIP-44 | Versjonskryptering, brukt til forseglinger, innpakninger og synkronisering av innstillinger. |
| NIP-46 | Fjernsignering - bunker://. |
| NIP-56 | Rapportering. |
| NIP-57 | Lyn lyner. |
| NIP-59 | Gavepapir. |
| NIP-78 | Vilkårlige applikasjonsdata. |
| NIP-98 | HTTP-autentisering, for de vertsbaserte endepunktene. |
Kryptografi
| Hvor | Hva |
|---|---|
| Identitet og signaturer | secp256k1 med Schnorr-signaturer (BIP-340), som Nostr spesifiserer. |
| Private meldinger og gruppechatter | NIP-44 v2: ECDH på secp256k1, HKDF-SHA256, ChaCha20 med HMAC-SHA256, og utfylling slik at chiffertekstlengden ikke gir meldingslengden bort. |
| Bluetooth-mesh-økter | Noise XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 for kunngjøring av signaturer, SHA-256 og HMAC under. |
| Identitet i ro | AES-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øringer | WebRTCs egen DTLS-SRTP, forhandlet over NIP-17-innpakket signalering. |
| Tilfeldighet | Plattformen 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_ater 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.
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.