Casa Blog - Bitcoin Security Made Easy

I’ve been using Nostr as an alternative social network for over a year now, and during that time we’ve had several discussions amongst the Casa marketing team about if and how we should have a corporate presence on the network.

“What is Nostr?” you might ask. Nostr (short for “Notes and Other Stuff Transmitted by Relays”) is a new protocol for censorship-resistant speech and social sharing. It doesn't rely on any trusted central server, opting instead for a series of relays and clients. Content is signed with a private key, which prevents tampering.

For a deeper introduction to this protocol, check out the essay I published a year ago.

Why Nostr Matters
Nostr is a new protocol for censorship resistant speech and social sharing. It has great potential but has plenty of challenges to overcome.

Given that Nostr is a permissionless network powered by cryptographic attestations, it obviously fits with Casa’s ethos of sovereignty via self-custody of private keys. Count us in!

Generating Casa’s key

Naturally, just any random key won’t do for Casa. We wish to display our proof of work.

As such, I used Rana to grind through a ton of public / private key pairs until I found a public key that was befitting our account. At first, I looked into “casa,” but that name only took 30 seconds to brute force. Time to up the ante. 

cargo run --release – --vanity-n-prefix=casacasa

It took 12 days and over 200,000,000,000 keys generated on my 8 core machine before finding this match:

npub1casacasahesdrpu6npfth2t0ae37a2cdwwg3c4fkt30v7gzffx3q7wtzdc

Want to follow us on Nostr? Scan the above QR code with your mobile Nostr app or use one of the popular Nostr web apps:

Sharing Casa’s key

We encountered a challenge in this particular area of key management.

You see, with mainstream social media networks there are a plethora of tools that have been built to facilitate having entire marketing and support teams share access to corporate accounts. This makes it easy to grant and revoke access as employees onboard and offboard.

With Nostr, of course you can share the keys with multiple people, but you’re going to have a very bad time if anyone’s key gets compromised or if you need to revoke access to an employee who is offboarded.

While NIP-26 does exist, allowing temporary delegation of key pairs to other entities, there doesn’t appear to be much tooling for it and the level of support across clients is unclear. Nor does NIP-26 allow on-demand key revocation, so you’d still have issues with offboarded employees having account access for some period of time.

In a perfect world we’d have some sort of threshold signing scheme so multiple employees would need to co-sign a note before it became valid. And preferably you could also use thresholds for “governance” to add and remove signing keys from the scheme. But until that becomes a viable option, we’re opting to solve this problem with hardware.

keep-keys-on-signing-device-meme

While Coinkite’s Coldcard and Foundation’s Passport have the ability to generate Nostr keys, at time of writing they don’t support signing notes. It looks like Coinkite is taking pre-orders for a SATSLINK device specifically for this application, but it’s unclear when the device will start shipping.

Enter the Nostr signing device!

nostr-signing-device

Pros

  • Very cheap ($20 USD)
  • Usable with many Nostr web apps
  • Off the shelf hardware (LilyGo TTGO ESP32 microcontroller)

Cons

  • Not easy to configure
  • Driver support varies from OS to OS
  • Data is sent over insecure Webdev Serial connection
  • Key can be extracted by tech-savvy users
  • Only supports web app signing

For those in need of Nostr hardware today, you can build or buy a Nostr signing device and then head over to this guide to get it set up. While the device isn’t perfect in terms of preventing private key extraction, it makes it significantly difficult enough that we’re comfortable handing them out to trusted Casa employees.

I’d note that I had a tough time getting the Nostr signing device to work on a Linux machine and eventually gave up. But I plugged it into a Windows machine and the tools for flashing the firmware and signing messages simply worked. I suspect OS X will probably work fine as well.

NIP-05 verification

In order to provide additional verification that our Nostr account is the real Casa account, we’ve set up a NIP-05 compliant file hosted on a domain we control. Our full account name is casa@nostr.casa.io, which Nostr clients will automatically verify by inspecting the nostr.json file hosted here.

Zaps

At Casa we’ve accepted bitcoin for memberships since inception in 2018 via our self-hosted BTCPay server. Continuing in that tradition, we’re using a self-hosted Lightning Network wallet that you can reach via our Lightning address: casa@btcpay.keys.casa

In my opinion, zaps are an integral part of Nostr: it creates a completely different set of incentives from every traditional social network. On other networks your incentive is to generate engagement and controversy because more engagement results in more advertisements being served to those who follow you, and perhaps you can get a cut of that revenue. There are no advertiser middlemen on Nostr; since micropayments can flow directly between Nostr users, you’re incentivized to directly provide value to those with whom you’re interacting. Plus, Nostr even supports zapvertising, which is an alternative advertising model in which you pay users directly and your payment includes an advertising message.

Final thoughts

Casa has long worked toward a vision where private keys secure many aspects of our daily lives in addition to assets like bitcoin. Nostr is a welcome step in that direction as a social sharing protocol with cryptographically signed messages. Feel free to follow us and join the conversation!


Follow the future of private keys

Our weekly Casa Security Briefing helps you stay in the know with stories, analysis, and tips. Sign up below.