NIP-46: Nostr Connect
NIP-46 definiert Remote-Signing über Nostr-Relays. Ein Client spricht mit einem separaten Signer, oft Bunker genannt, damit Signaturschlüssel außerhalb der App bleiben können, die der Nutzer gerade verwendet.
Wie es funktioniert
- Der Client erzeugt ein lokales Schlüsselpaar, das nur für die Bunker-Sitzung verwendet wird.
- Die Verbindung wird mit einer
bunker://- odernostrconnect://-URI aufgebaut. - Client und Signer tauschen verschlüsselte kind-
24133-Request- und Response-Events über Relays aus. - Nach dem Verbinden ruft der Client
get_public_keyauf, um den tatsächlichen Nutzer-pubkey zu erfahren, für den signiert wird.
Verbindungsmethoden
- bunker:// - Vom Signer initiierte Verbindung
- nostrconnect:// - Vom Client initiierte Verbindung über QR-Code oder Deep Link
nostrconnect://-Abläufe enthalten ein erforderliches Shared Secret, damit der Client verifizieren kann, dass die erste Antwort wirklich vom vorgesehenen Signer stammt. Das verhindert einfaches Connection-Spoofing.
Unterstützte Operationen
sign_event- Ein beliebiges Event signierenget_public_key- Den pubkey des Nutzers vom Signer abrufennip04_encrypt/decrypt- NIP-04-Verschlüsselungsoperationennip44_encrypt/decrypt- NIP-44-Verschlüsselungsoperationenswitch_relays- Den Signer nach einem aktualisierten Relay-Set fragen
Viele Implementierungen verwenden während des Setups außerdem Permission-Strings wie sign_event:1 oder nip44_encrypt, damit der Signer einen engen Scope statt Vollzugriff freigeben kann.
Relay- und Vertrauensmodell
NIP-46 verschiebt private Schlüssel aus dem Client heraus, entfernt aber nicht das Vertrauen in den Signer. Der Signer kann Anfragen genehmigen, ablehnen oder verzögern, und er sieht jede Operation, die der Client ausführen lassen will. Auch die Wahl der Relays ist wichtig, weil das Protokoll von der Zustellung der Request- und Response-Events über Relays abhängt, die beide Seiten erreichen können.
Die Methode switch_relays existiert, damit der Signer die Sitzung im Lauf der Zeit auf ein anderes Relay-Set verschieben kann. Clients, die das ignorieren, arbeiten weniger zuverlässig, wenn sich die Relay-Präferenzen des Signers ändern.
Primärquellen:
Erwähnt in:
- Newsletter #1: Notable Code Changes
- Newsletter #3: December Recap
- Newsletter #7: Primal Android Becomes a Full Signing Hub
- Newsletter #15: NDK Collaborative Events and NIP-46 Timeout
Siehe auch: