NIP-44: Encrypted Payloads
NIP-44 definiert einen versionierten Verschlüsselungsstandard für Nostr-Payloads und ersetzt das fehlerhafte NIP-04-Verschlüsselungsschema durch moderne kryptographische Primitive.
Funktionsweise
NIP-44 Version 2 verwendet einen mehrstufigen Verschlüsselungsprozess:
- Key Agreement: ECDH, secp256k1, zwischen den öffentlichen Schlüsseln von Sender und Empfänger erzeugt ein gemeinsames Geheimnis
- Key Derivation: HKDF-extract mit SHA256 und Salt
nip44-v2erzeugt einen Konversationsschlüssel - Per-Message Keys: HKDF-expand leitet ChaCha-Key, Nonce und HMAC-Key aus einer zufälligen Nonce ab
- Padding: Der Inhalt wird aufgefüllt, um die Nachrichtenlänge zu verbergen
- Encryption: ChaCha20 verschlüsselt den aufgefüllten Inhalt
- Authentication: HMAC-SHA256 liefert Nachrichtenintegrität
Das Ergebnis ist eine versionierte base64-Payload, die in ein normal signiertes Nostr-Event eingefügt wird. Die Spezifikation verlangt, dass Clients die äußere NIP-01-Event-Signatur validieren, bevor sie die innere NIP-44-Payload entschlüsseln.
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
- Versioned Format: ermöglicht spätere Algorithmus-Upgrades
Sicherheitseigenschaften
- Authenticated Encryption: Nachrichten können nicht unbemerkt manipuliert werden
- Length Hiding: Padding verschleiert die Nachrichtengröße
- Conversation Keys: Derselbe Schlüssel für laufende Konversationen reduziert Rechenaufwand
- Audited: 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 Direct-Message-Event-Kind. Protokolle wie NIP-17 und NIP-59 definieren, wie verschlüsselte Payloads in tatsächlichen 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 eine Anwendung beliebige binäre Blobs verschlüsseln muss, braucht 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
- Deniability: Nachrichten sind nachweisbar von bestimmten Schlüsseln signiert
- Metadata Hiding: Die Relay-Architektur begrenzt die Privatsphäre
Für hohe Sicherheitsanforderungen liefern NIP-104, 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 gemergt. Sie bildet die kryptographische Grundlage für NIP-17 Private DMs und NIP-59 Gift Wrapping.
Primärquellen:
Erwähnt in:
- Newsletter #4: NIP Deep Dive
- Newsletter #3: December 2023
- Newsletter #3: December 2024
- Newsletter #12: Marmot
- Newsletter #13: Vector
- Newsletter #19: nostter NIP-44 migration
- Newsletter #19: nowhere encrypts Nostr traffic
Siehe auch: