NIP-46 : Nostr Connect
NIP-46 définit la signature distante via les relais Nostr. Un client communique avec un signataire séparé, souvent appelé bunker, de sorte que les clés de signature restent en dehors de l’application que l’utilisateur utilise activement.
Fonctionnement
- Le client génère une paire de clés locale utilisée uniquement pour la session bunker.
- La connexion est établie avec un URI
bunker://ounostrconnect://. - Le client et le signataire échangent des événements chiffrés de kind
24133(requête et réponse) via les relais. - Après connexion, le client appelle
get_public_keypour obtenir la clé publique de l’utilisateur pour lequel il signe.
Méthodes de connexion
- bunker:// - Connexion initiée par le signataire
- nostrconnect:// - Connexion initiée par le client via code QR ou deep link
Les flux nostrconnect:// incluent un secret partagé obligatoire afin que le client puisse vérifier que la première réponse provient bien du signataire prévu. Cela empêche l’usurpation de connexion.
Opérations supportées
sign_event- Signer un événement arbitraireget_public_key- Récupérer la clé publique de l’utilisateur auprès du signatairenip04_encrypt/decrypt- Opérations de chiffrement NIP-04nip44_encrypt/decrypt- Opérations de chiffrement NIP-44switch_relays- Demander au signataire un ensemble de relais mis à jour
De nombreuses implémentations utilisent aussi des chaînes de permission comme sign_event:1 ou nip44_encrypt lors de la configuration, afin que le signataire puisse approuver un périmètre restreint au lieu d’un accès complet.
Modèle de relais et de confiance
NIP-46 déplace les clés privées hors du client, mais ne supprime pas la confiance envers le signataire. Le signataire peut approuver, refuser ou retarder les requêtes, et il voit chaque opération que le client lui demande d’effectuer. Le choix du relais compte aussi, car le protocole dépend de la livraison des requêtes et réponses via des relais accessibles aux deux parties.
La méthode switch_relays existe pour que le signataire puisse déplacer la session vers un autre ensemble de relais au fil du temps. Les clients qui l’ignorent fonctionneront de manière moins fiable lorsque les préférences de relais du signataire changent.
Sources principales :
Mentionné dans :
- 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
Voir aussi :