NIP-07 définit une interface standard pour les extensions navigateur afin de fournir des capacités de signature aux clients Nostr basés sur le web, gardant les clés privées sécurisées dans l’extension plutôt que de les exposer aux sites web.

Fonctionnement

Les extensions navigateur injectent un objet window.nostr que les applications web peuvent utiliser :

// Obtenir la clé publique
const pubkey = await window.nostr.getPublicKey();

// Signer un événement
const signedEvent = await window.nostr.signEvent(unsignedEvent);

// Chiffrer (NIP-04, legacy)
const ciphertext = await window.nostr.nip04.encrypt(pubkey, plaintext);

// Déchiffrer (NIP-04, legacy)
const plaintext = await window.nostr.nip04.decrypt(pubkey, ciphertext);

// Méthodes NIP-44 (moderne, si supporté)
// const ciphertext = await window.nostr.nip44.encrypt(pubkey, plaintext);
// const plaintext = await window.nostr.nip44.decrypt(pubkey, ciphertext);

Modèle de sécurité

  • Isolation des clés : Les clés privées ne quittent jamais l’extension
  • Approbation utilisateur : Les extensions peuvent demander confirmation pour chaque requête de signature
  • Contrôle de domaine : Les extensions peuvent restreindre quels sites peuvent demander des signatures

Implémentations

Les extensions NIP-07 populaires incluent :

  • Alby - Portefeuille Lightning avec signature Nostr
  • nos2x - Signataire Nostr léger
  • Flamingo - Extension Nostr riche en fonctionnalités

Limitations

  • Navigateur uniquement (pas de support mobile)
  • Nécessite l’installation d’une extension
  • Chaque extension a une UX différente pour les approbations

Alternatives

  • NIP-46 - Signature à distance via les relais Nostr
  • NIP-55 - Signataire local Android

Voir aussi

  • NIP-44 - Chiffrement moderne (remplaçant NIP-04)
  • NIP-46 - Signature à distance