NIP-44: Verschlüsselte Payloads
NIP-44 definiert einen versionierten Verschlüsselungsstandard für Nostr-Payloads und ersetzt das fehlerhafte NIP-04-Verschlüsselungsschema durch moderne kryptographische Primitive.
Wie es funktioniert
NIP-44 Version 2 verwendet einen mehrstufigen Verschlüsselungsprozess:
- Schlüsselvereinbarung: ECDH (secp256k1) zwischen den öffentlichen Schlüsseln von Sender und Empfänger erzeugt ein gemeinsames Geheimnis
- Schlüsselableitung: HKDF-extract mit SHA256 und Salt
nip44-v2erstellt einen Konversationsschlüssel - Pro-Nachricht-Schlüssel: HKDF-expand leitet ChaCha-Schlüssel, Nonce und HMAC-Schlüssel aus einem zufälligen Nonce ab
- Padding: Inhalt wird aufgefüllt, um die Nachrichtenlänge zu verbergen
- Verschlüsselung: ChaCha20 verschlüsselt den aufgefüllten Inhalt
- Authentifizierung: HMAC-SHA256 liefert Nachrichtenintegrität
Die Ausgabe ist eine versionierte base64-Payload, die in ein normal signiertes Nostr-Event eingebettet wird. Die Spezifikation verlangt, dass Clients vor dem Entschlüsseln der inneren NIP-44-Payload zuerst die äußere NIP-01-Event-Signatur validieren.
Kryptographische Entscheidungen
- ChaCha20 statt AES: schneller und widerstandsfähiger gegen Multi-Key-Angriffe
- HMAC-SHA256 statt Poly1305: Polynomial-MACs lassen sich leichter fälschen
- SHA256: konsistent mit bestehenden Nostr-Primitiven
- Versioniertes Format: ermöglicht spätere Algorithmus-Upgrades
Sicherheitseigenschaften
- Authentifizierte Verschlüsselung: Nachrichten können nicht unbemerkt verändert werden
- Längenverschleierung: Padding verdeckt die Nachrichtengröße
- Konversationsschlüssel: derselbe Schlüssel für laufende Gespräche reduziert Rechenaufwand
- Auditiert: Das Cure53-Sicherheitsaudit fand keine ausnutzbaren Schwachstellen
Implementierungshinweise
NIP-44 ist kein direkter Ersatz für NIP-04-Payloads. Es definiert ein Verschlüsselungsformat, aber keinen Event-Kind für Direktnachrichten. Protokolle wie NIP-17 und NIP-59 legen fest, wie verschlüsselte Payloads in realen Nachrichtenflüssen verwendet werden.
Die Plaintext-Eingabe ist UTF-8-Text mit einer Länge von 1 bis 65535 Bytes. Das ist eine echte Einschränkung für Implementierer: Wenn Ihre Anwendung beliebige binäre Blobs verschlüsseln muss, brauchen Sie eine zusätzliche Kodierung oder ein anderes Containerformat.
Einschränkungen
NIP-44 bietet nicht:
- Forward Secrecy: Kompromittierte Schlüssel legen vergangene Nachrichten offen
- Post-Compromise Security: Wiederherstellung nach Schlüsselkompromittierung
- Abstreitbarkeit: Nachrichten sind nachweislich von bestimmten Schlüsseln signiert
- Metadaten-Verschleierung: Die Relay-Architektur begrenzt die Privatsphäre
Für hohe Sicherheitsanforderungen bieten NIP-104, also Double Ratchet, oder MLS-basierte Protokolle wie Marmot stärkere Garantien.
Geschichte
NIP-44 Revision 3 wurde im Dezember 2023 nach einem unabhängigen Cure53-Sicherheitsaudit gemerged. Sie bildet die kryptographische Grundlage für NIP-17 Private DMs und NIP-59 Gift Wrap.
Primärquellen:
Erwähnt in:
- Newsletter #4: NIP Deep Dive
- Newsletter #3: December 2023
- Newsletter #3: December 2024
- Newsletter #12: Marmot
Siehe auch: