NIP-07: Browser-Erweiterungs-Signer
NIP-07 definiert eine Standardschnittstelle für Browser-Erweiterungen, um Signierfähigkeiten für webbasierte Nostr-Clients bereitzustellen, wobei private Schlüssel sicher in der Erweiterung bleiben, anstatt sie Websites auszusetzen.
Funktionsweise
Browser-Erweiterungen injizieren ein window.nostr-Objekt, das Web-Apps verwenden können:
// Öffentlichen Schlüssel abrufen
const pubkey = await window.nostr.getPublicKey();
// Ein Event signieren
const signedEvent = await window.nostr.signEvent(unsignedEvent);
// Verschlüsseln (NIP-04, veraltet)
const ciphertext = await window.nostr.nip04.encrypt(pubkey, plaintext);
// Entschlüsseln (NIP-04, veraltet)
const plaintext = await window.nostr.nip04.decrypt(pubkey, ciphertext);
// NIP-44 Methoden (modern, falls unterstützt)
// const ciphertext = await window.nostr.nip44.encrypt(pubkey, plaintext);
// const plaintext = await window.nostr.nip44.decrypt(pubkey, ciphertext);
Sicherheitsmodell
- Schlüsselisolierung: Private Schlüssel verlassen die Erweiterung nie
- Benutzergenehmigung: Erweiterungen können für jede Signierungsanfrage nachfragen
- Domain-Kontrolle: Erweiterungen können einschränken, welche Seiten Signaturen anfordern dürfen
Implementierungen
Beliebte NIP-07-Erweiterungen sind:
- Alby - Lightning-Wallet mit Nostr-Signierung
- nos2x - Leichtgewichtiger Nostr-Signer
- Flamingo - Funktionsreiche Nostr-Erweiterung
Einschränkungen
- Nur für Browser (keine mobile Unterstützung)
- Erfordert Installation der Erweiterung
- Jede Erweiterung hat unterschiedliche UX für Genehmigungen