Replying to Avatar Derek Ross

What is "remote signing" NIP-46 and NIP-55 Nostr key management? #HOWDONOSTR

Across Nostr's ecosystem, where decentralization and user control are paramount, managing private keys securely should be a top priority. There is no central authority to reset your "password" or help you recover your "account" if your private key is leaked. Once leaked, your "account" is essentially burned and you no longer have control.

Remote signing your social transactions with NIP-46 (Nostr Remote Signing) and NIP-55 (Android Signer Application) provides a safer and more convenient way to interact with Nostr applications without exposing your private key.

By entering your private key into multiple applications, you increase the risk of it being compromised. To protect your key, only trust a minimal number of applications and avoid entering it into more apps than absolutely necessary. Proper private key management with remote signing applications can help here.

What are NIP-46 and NIP-55?

NIP-46 (Nostr Remote Signing) and NIP-55 (Android Signer Application) allow you to use a remote signer—a separate tool or device—to approve actions on your behalf. Instead of entering your private key into every app, you authorize trusted applications to sign messages remotely. This lets you create temporary keys that can sign events on your behalf, without exposing your private key. You can limit what these keys can do, such as only allowing them to post notes but not change your profile.

Using the NIP-46 method, a user would login to a Nostr application with a long string similar to this example:

bunker://?relay=&relay=&secret=

Using the NIP-55 method, a user would simply tap or click a 'Login with Amber' or 'Login with Android Signer' button in their Nostr application. All of the heavy lifting and configuration items are handled by the Android signer.

Why use remote signing?

* Better Security – Your private key stays in a secure location, such as Knox, NAK, or Keycast, rather than being exposed in multiple applications.

* More Control – You decide which apps can sign messages and revoke access anytime.

* Seamless Experience – There is no need to copy and paste private keys between apps. It just works in the background.

How can you use it?

The easiest method is Amber for Android. (A new application named nowser recently launched. I have not tested or used this application. However, it supports Android, iOS, Windows, and Linux.)

* Amber: https://github.com/greenart7c3/Amber or download from nostr:npub10r8xl2njyepcw2zwv3a6dyufj4e4ajx86hz6v4ehu4gnpupxxp7stjt2p8!

* nowser: https://github.com/haorendashu/nowser (Remember, I have not used this application. Please use at your own risk!)

If you're more technical and you have a Bitcoin node or a Nostr relay, you may want to consider running either NAK, Knox, or Keycast. These will require a dedicated computer or server.

* NAK (Nostr Army Knife): https://github.com/fiatjaf/nak (This requires almost no setup. You download a simple program and run it with the command 'nak bunker' and keep the terminal window open or run this on a server.)

* Knox: https://gitlab.com/soapbox-pub/knox (nostr:npub1q3sle0kvfsehgsuexttt3ugjd8xdklxfwwkh559wxckmzddywnws6cd26p actually wrote a great article on this nostr:naddr1qvzqqqr4gupzqprpljlvcnpnw3pejvkkhrc3y6wvmd7vjuad0fg2ud3dky66gaxaqqykkmn00qkkyet5vyhjuvda)

* Keycast: https://github.com/erskingardner/keycast (nostr:npub1zuuajd7u3sx8xu92yav9jwxpr839cs0kc3q6t56vd5u9q033xmhsk6c2uc wrote more about Keycast here: nostr:note1327htu9gr327h38yu5f6tueye4cajp3kc69cs3gl7w6q6rz09ufqukl74j)

Examples of Android applications with support:

* Amethyst, Wavlake, Fountain, 0xchat, Coracle, Flotilla, and more!

Examples of iOS applications with support:

...

Examples of Web applications with support:

* Coracle, Nostrudel, Jumble, Snort, Nests, Habla, and more!

Many, many Nostr applications support NIP-46 or NIP-55. However, popular applications such as Damus and Primal do not support these login methods at this time. If your favorite application does not support these login methods, you'll need to ask your app developer and zap them accordingly 😉

Happy remote signing!

Great write-up nostr:nprofile1qy0hwumn8ghj7mn0wd68yttjv4kxz7fwv3jhyettwfhhxuewd4jj7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uq3zamnwvaz7tmwdaehgu3wwa5kuef0qythwumn8ghj7un9d3shjtnwdaehgu3wvfskuep0qyt8wumn8ghj7mn0wd68yetvd96x2uewdaexwtcpzdmhxue69uhhwmm59e6hg7r09ehkuef0qy88wumn8ghj7mn0wvhxcmmv9uq35amnwvaz7tms09exzmtfvshxv6tpw34xze3wvdhk6tcprdmhxue69uhhyetvv9ujumn0wd68yurvv438xtnrdakj7qgwwaehxw309askgun99eeh2tcqyqlhwrt96wnkf2w9edgr4cfruchvwkv26q6asdhz4qg08pm6w3djgcxx8f0! I was unaware of Nowser, Knox, and Keycast before reading this. Will need to check them out.

One line above wansn't entirely accurate, but it's minor. You said, "This lets you create temporary keys that can sign events on your behalf, without exposing your private key." The bunker strings created for NIP-46 are not keys at all. They don't actually sign anything. ALL signing is done using your actual private key. The bunker string just gives a client the necessary information to communicate with the application that is storing your private key, that way the client can send a request for a signature that the signer app will use your private key to sign, and then send the signed event back to the client.

It's an important distinction, because it is why the device running the signer app has to remain online for NIP-46 signing to work. If the bunker strings were keys in and of themselves that could be used to sign events, then communication with the signer app remotely would not be necessary.

Reply to this note

Please Login to reply.

Discussion

Hmm. I guess I've always misunderstood it incorrectly confusing this with NIP-26 then.

Thanks.

Yeah, I don't think we have any clients supporting NIP-26 in the wild. Key delegation would be cool to have, but if I remember correctly there are some tradeoffs that have kept anyone from seriously pursuing implementing it.

Some recent discussion on those tradeoffs here

https://github.com/nostr-protocol/nips/issues/1810