Wissensdatenbank Unter der Haube
Protokoll und Ereignisse
Was Nymchat tatsächlich auf die Probe stellt, für jeden, der dagegen baut, prüfen oder Ereignisse von einem anderen Nostr-Client lesen.
Diese Seite wurde der Einfachheit halber maschinell übersetzt. Es gilt das englische Original.
Veranstaltungsarten
| Art | Verwendet für | Notizen |
|---|---|---|
0 | Profilmetadaten | Standard-Nostr-Profil: Name, Bild, Banner, Über, lud16. |
5 | Löschanträge | NIP-09. |
7 | Reaktionen | NIP-25, mit a ['k', originalKind] Tag, damit eine Reaktion für den richtigen Kanaltyp abgelegt wird. |
13 | Siegel | Die mittlere Schicht einer NIP-17-Nachricht. |
14 | Gerücht über private Nachricht | Nicht signiert und nie einzeln veröffentlicht. |
1059 | Geschenkverpackung | NIP-59. Was tatsächlich ein Relay für private Nachrichten und Gruppenchats erreicht. |
1984 | Berichterstattung | NIP-56. |
9734 / 9735 | Zap-Anfrage und Zap-Quittung | NIP-57. |
10030 | Benutzerdefinierte Emoji-Packlisten | NIP-30. |
20000 | Geohash-Kanalnachricht | Vergänglich, getaggt ['g', geohash]. |
23333 | Benannte Kanalnachricht | Vergänglich, getaggt ['d', channel]. |
24420 / 24421 | Öffentliche Tippindikatoren und Lesebestätigungen | Nymchat-spezifisch, für öffentliche Kanäle. |
25051 / 25052 | Peer-to-Peer-Signalisierung und Dateiübertragungsstatus | Nymchat-spezifisch. |
30030 | Benutzerdefinierte Emoji-Sets | NIP-30. |
30078 | Bewerbungsdaten | NIP-78. Umfragen und verschlüsselte Einstellungen werden synchronisiert. |
69420 | Private Lesebestätigungen und Lieferstatus | Nymchat-spezifisch, als Gerücht in einer Geschenkverpackung getragen. Eine andere Art von 14 absichtlich, damit andere NIP-17-Clients nicht für jede Quittung leere Direktnachrichten rendern. |
NIPs, die Nymchat implementiert
| NIP | Was es Nymchat gibt |
|---|---|
| NIP-07 | Melden Sie sich mit einer Browsererweiterung an. |
| NIP-09 | Löschanträge. |
| NIP-13 | Arbeitsnachweis. Ausgehende Nachrichten werden auf mindestens 16 Bit verkleinert. |
| NIP-17 | Private Direktnachrichten und die Grundlage für Gruppenchats. |
| NIP-25 | Reaktionen. |
| NIP-30 | Benutzerdefiniertes Emoji. |
| NIP-40 | Ablaufzeitstempel – verschwindende Nachrichten. |
| NIP-44 | Versionierte Verschlüsselung, die für Siegel, Wraps und die Einstellungssynchronisierung verwendet wird. |
| NIP-46 | Fernsignierung – bunker://. |
| NIP-56 | Berichterstattung. |
| NIP-57 | Blitze zucken. |
| NIP-59 | Geschenkverpackungen. |
| NIP-78 | Beliebige Anwendungsdaten. |
| NIP-98 | HTTP-Authentifizierung für die gehosteten Endpunkte. |
Kryptographie
| Wo | Was |
|---|---|
| Identität und Unterschriften | secp256k1 mit Schnorr-Signaturen (BIP-340), wie Nostr angibt. |
| Private Nachrichten und Gruppenchats | NIP-44 v2: ECDH auf secp256k1, HKDF-SHA256, ChaCha20 mit HMAC-SHA256 und Auffüllen, sodass die Chiffretextlänge nicht die Nachrichtenlänge verrät. |
| Bluetooth-Mesh-Sitzungen | Noise XX – X25519, ChaCha20-Poly1305 (IETF), Ed25519 für Ankündigungssignaturen, SHA-256 und HMAC darunter. |
| Identität im Ruhezustand | AES-GCM-256. Der Schlüssel stammt von PBKDF2-SHA256 bei 310.000 Iterationen für ein Passwort oder eine PIN oder von einer WebAuthn-PRF-Ausgabe über HKDF-SHA256 für einen Passkey oder eine Biometrie. |
| Anrufe und Dateiübertragungen | WebRTCs eigenes DTLS-SRTP, ausgehandelt über NIP-17-verpackte Signalisierung. |
| Zufälligkeit | Die Plattform CSPRNG durchweg – Schlüssel, Nonces und der Zeitstempel-Jitter der Geschenkverpackung. |
Metadatenschutz
Zwei Details im Geschenkverpackungspfad sind es wert, erwähnt zu werden, denn sie sind es, die NIP-59 auszeichnen von „verschlüsselt, aber offensichtlich von Ihnen an sie“:
- Jeder Umschlag ist von a signiert Einmalschlüssel nur für diese Nachricht generiert, Daher teilen sich keine zwei Wraps einen Absender.
- Jeder Wrap ist
created_atIst zufällig um bis zu zwei rückdatiert Stunden unter Verwendung von CSPRNG, daher können Sende- und Empfangszeiten nicht aneinandergereiht werden.
Gruppenchats sorgen für rotierende Vergänglichkeit Empfänger Tasten obendrein – siehe So funktioniert die Gruppenverschlüsselung.
Die Kryptoprimitive sind da js/nym-crypto.js Und
js/modules/key-vault.js in der Web-App und darunter
android-ios-app/lib/core/crypto/ Und
lib/services/mesh/noise/ in der Flutter-App. Der
Repository
ist AGPL-3.0 und vollständig – es gibt keine geschlossene Komponente, der man vertrauen kann.