NIP-46: Nostr Connect
NIP-46 definisce la firma remota tramite relay Nostr. Un client comunica con un firmatario separato, spesso chiamato bunker, così le chiavi di firma possono restare fuori dall’app che l’utente sta usando attivamente.
Come funziona
- Il client genera una coppia di chiavi locale usata solo per la sessione bunker.
- La connessione viene stabilita con un URI
bunker://oppurenostrconnect://. - Client e signer si scambiano eventi di richiesta e risposta crittografati di kind
24133tramite relay. - Dopo la connessione, il client chiama
get_public_keyper conoscere la pubkey reale dell’utente per cui sta firmando.
Metodi di connessione
- bunker:// - Connessione avviata dal signer
- nostrconnect:// - Connessione avviata dal client tramite QR code o deep link
I flussi nostrconnect:// includono un segreto condiviso obbligatorio così il client può verificare che la prima risposta provenga davvero dal signer previsto. Questo impedisce semplici spoofing della connessione.
Operazioni supportate
sign_event- Firma un evento arbitrarioget_public_key- Recupera la pubkey dell’utente dal signernip04_encrypt/decrypt- Operazioni di crittografia NIP-04nip44_encrypt/decrypt- Operazioni di crittografia NIP-44switch_relays- Chiede al signer un insieme aggiornato di relay
Molte implementazioni usano anche stringhe di permesso come sign_event:1 o nip44_encrypt durante la configurazione così il signer può approvare un ambito ristretto invece dell’accesso completo.
Modello di relay e fiducia
NIP-46 sposta le chiavi private fuori dal client, ma non rimuove la fiducia dal signer. Il signer può approvare, negare o ritardare le richieste, e vede ogni operazione che il client gli chiede di eseguire. Anche la scelta dei relay conta perché il protocollo dipende dalla consegna di richieste e risposte tramite relay raggiungibili da entrambe le parti.
Il metodo switch_relays esiste così il signer può spostare la sessione su un insieme diverso di relay nel tempo. I client che lo ignorano funzioneranno in modo meno affidabile quando cambiano le preferenze del signer sui relay.
Fonti primarie:
Citato 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
Vedi anche: