A Beginners Guide to Using a Hardware Wallet

Preface #

The terminology can get a bit confusing, especially with the overuse of the word “wallet” which means different things in different contexts. Just a quick glossary:

The terminology is not great. People hear “wallet” and imagine the thing they store in their pocket, and this is conceptually quite a bit more complex than the folded dead cow that may spring to mind.


I’m going to take it as a given that you want to custody your own bitcoin. You may not be in that place yet, or you may not understand why you would want to. There’s enough to say about that for it to be its own blog post, so I will leave it alone for now and just assume that you have made the decision that owning your own private keys is the way to go, now you just want to make sure you do it properly.

There are risks associated with being your own bitcoin custodian. To be sure, there are risks with not having custody of your own bitcoin. This guide is going to help minimize risks with the former. When you are the sole owner of your bitcoin, there is no one to call if something goes wrong. No customer support or government insurance program can make you whole again. You can, and people do, lose bitcoin. But if you follow this guide, you should be well on your way to not losing it.

Why a hardware wallet? #

You can custody bitcoin many ways. The easiest way is with a software wallet, either on your computer or on a phone. This is a fine thing to do if it’s something that you’re spending frequently, or it’s an amount low enough that it wouldn’t be catastrophic to lose. This kind of wallet is sometimes referred to as a “hot wallet”. It’s hot because it’s on a device connected to the internet. It’s fast to use, but it’s vulnerable to attacks. Every few weeks you download software updates for your computer and your phone. Often those updates are patching security vulnerabilities that have been discovered. There are always going to be security vulnerabilities in any device that is sufficiently complex. For this reason, it’s not wise to store large amounts of bitcoin on a hot wallet, for any extended period of time.

Then you have a “cold wallet” or “cold storage”. This is a storage mechanism that is offline, and ideally is never online. This can also be referred to as being air gapped. This completely removes entire classes of security vulnerabilities. Almost certainly an attacker would need physical access to a device like this to be able to hack it.

A hardware wallet is a form of cold storage. It is a device that stores the private key for your wallet, and is responsible for signing transactions. My preferred hardware wallet is a Coldcard from Coinkite.

coldcard-mk3-onoff.png

The Coldcard is special among hardware wallets because it is the only one (that I know of) that can operate 100% air gapped. It never has to be plugged into a computer, which is a huge security win.

Since all of my experience with hardware wallets comes from using a Coldcard, I’m going to be speaking from that perspective, but the general concepts should still apply no matter which hardware wallet you use.

Creating your wallet #

When you initially set up your hardware wallet, you will create a new wallet. This is basically just a very very large random number. This large random number effectively [is][1] your bitcoin. Anyone can spend your bitcoin if they have your random number. You will not interface with this large random number as a random number. There is a translation algorithm for turning this large random number into a set of 24 words.

enact neutral lawsuit dutch ramp royal prosper vessel zebra volcano coyote derive bulb day gorilla chimney joy marble hazard parrot obey thrive pool spy
example seed words

These words are referred to as your “seed words” or “backup phrase”. They are order dependent, but not case dependent. The words in the phrase come from a word list defined in the algorithm. The words in the list are unique after 4 letters (meaning you only need at most 4 letters of the word to be able to know with 100% certainty which word it is). This random tidbit will become relevant once we get to steel wallets.

Again, these seed words basically [are][1] your bitcoin. If anyone got these words, they would be able to type them into any bitcoin wallet software and pull up all of your transaction history and spend any or all of your bitcoin. So security of these words is paramount.

When you create your wallet using the hardware wallet, it will present you with your seed words, and ask you to back them up. It is common for the hardware wallet to then quiz you on the words to ensure that you have, in fact, backed them up. This back up is crucial because if anything were to happen to your hardware wallet (lost, stolen, broken, etc.), these seed words will allow you to recover your bitcoin.

You should not store them in a password manager on a computer (otherwise you might as well not be using a hardware wallet at all). It is common to use something referred to as a “steel wallet” to back up these words. Steel wallets come in all different designs, but the general goal of them is to be very resilient to physical damage while still being readable. Often times these designs will only have space to store the first four letters of each word.

steelwallets.jpg

I don’t have much to personally recommend here. I have a Cobo Tablet, which I primarily got because it had Prime shipping on Amazon, and was on the cheaper end of the spectrum. If I was doing it again, I would get the Seedplate from Coinkite. It’s brand new, and wasn’t available when I was shopping for my steel wallet.

Jameson Lopp does a great job of reviewing and testing steel wallets. He grades them on heat, corrosion, and crush tests. You can see his catalog of reviewed wallets here: https://jlopp.github.io/metal-bitcoin-storage-reviews/

I’ll save you some time and say that the best reviewed style of wallet is the Seedplate style. It scores the highest grade given in each category. Though the Seedplate itself has not been tested, the Blockplate is tested and appears to be the same thing, though only storing 12 words, instead of 24 like the Seedplate.

But for most cases, you probably (hopefully) won’t need the world’s strongest steel wallet. Just having it stored on a medium more durable than paper is great. Having this backup gives you peace of mind that if anything happens to your hardware wallet, you can always recover your funds.

There is of course a security problem now with the steel wallet. Since it is [basically][1] your bitcoin, you do need to keep it safe. What that looks like will be different for different people, and different for how much bitcoin is stored with it.

Adding a passphrase #

If it concerns you to have these seed words backed up somewhere, and needing to keep them safe from prying eyes, there is something that can help with that. With the Coldcard (and possibly others, any that support BIP-38 wallets), you can add a passphrase to your wallet. Essentially, a 25th word to your seed words.

This part can be a bit like the movie, Inception, where the world starts to fold over on top of itself. I’ll try not to lose anyone here.

Your wallet is backed up, or serialized, using 24 words. Well, in actuality there are 25 words. You can use your wallet without a passphrase, and the 25th word is considered blank, or nothing, or an empty string "" if you’re familiar with computer data types. But you can add a passphrase and this essentially becomes your 25th word. And each different passphrase that you use, deserializes into a completely different wallet. So your 24 words with no passphrase is a wallet, your 24 words and the passphrase cat is a different wallet, and your 24 words and the passphrase dog is yet another wallet. You can make as many wallets as you can invent passphrases. And I’ve referred to it as a “25th word”, but it is not limited to being a word, it can be anything, password, monkey, abc123, correct horse battery staple. (If it feels like I’m reading your mind here, you should get some better passwords)

This passphrase protected wallet has a few implications. It means that now, if someone steals or other wise stumbles upon your seed words, all is not lost. They are about twenty-four twenty-fifths towards having your bitcoin, but they won’t have your passphrase. Additionally, they won’t know you used a passphrase (well, they might if the non-passphrase wallet is empty). Nothing indicates that a passphrase has been used, the seed words are still the seed words, whether or not a passphrase is used.

Obviously, to reap the benefit of this, you should not ever store your passphrase in the same location as your seed words. I think it’s safe to store a passphrase in a normal password manager.

The other implication is that you can use your hardware wallet, and the corresponding seed words to create as many other wallets as you want. Having other wallets, all able to run off of one hardware wallet, is nice for a couple of reasons. You can use extra wallets to divide up funds, like you might use multiple bank accounts, or multiple savings accounts. You can also use it to store bitcoin for less technically savvy friends or family (assuming there’s a high level of trust there).

I haven’t said much about how the passphrase works with the actual hardware wallet itself. I can only speak about the Coldcard, but here is what that process looks like:

You power on the device and log in like normal. At this point you are “at” the non-passphrase wallet. You can select a menu item on the screen to add a passphrase, and type in any passphrase. Once you confirm, it uses the passphrase and the seed words stored in its secure element to arrive at a different wallet. This is the passphrase wallet, corresponding to the passphrase you typed in. The Coldcard by default does not remember this passphrase, it gets completely cleared from memory every time you power off the device. This is a security feature, it gives nothing away that a passphrase has ever been used.

(There is a new feature added in the latest firmware that allows you to store the passphrase encrypted on an SD card, and load it in on demand. This makes using a passphrase more convenient, you don’t have to type it in every time, but if someone was watching you use the device, or got access to the SD card, they would be able to see that you were using passphrases.)


Between the added security of not having to worry as much about someone finding your seed words, and the added flexibility of being able to easily create new wallets as needed, I think using a passphrase is a great idea.

If you’re an ultra-paranoid type, you can use the non-passphrase seed word wallet to store a small amount of bitcoin that you would be willing to lose, as a decoy to throw someone off of thinking that you have a passphrase wallet holding bitcoin. IE: if the thief finds something, they may assume that’s all you have, and leave you alone. If they find nothing and they know you have something, they may keep digging.

But hopefully it doesn’t come to that.

Summary #

And that’s about it. So to recap real quick:

  1. Use a hardware wallet (air gapped, like a Coldcard, if possible)
  2. Back up your seed words using some kind of durable medium, but not a computer
  3. (optional) Use a passphrase to improve the security of your seed word backup. This passphrase is safe to save on your computer, ideally in some kind of password manager. (I like, and use 1Password)

If you do all of this, it should be difficult to lose your bitcoin.

I did not cover recovery, or actual steps to set up your hardware wallet. There are guides online for that that go through those processes in detail better than I can. But as long as you have your seed words (and your passphrase if you used one), you can recover your bitcoin. As long as someone else hasn’t “recovered” them first.

Thanks for reading, if you have any questions, feel free to reach out on Twitter or email me.


[1]: #appendix-1

Appendix 1: “It basically is your bitcoin” #

I’ve said this numerous times over the course of this post. I feel the need to explain that for anyone who may not know what I mean. Answering the question “what is a bitcoin?” is not exactly straightforward. What does it mean for you to have possession of bitcoin? And how can a device that is never connected to the internet, never connected to a computer, store your bitcoin?

I’m going to gloss over the technical details, mostly so that I don’t accidentally get them wrong and embarrass myself on the internet. But the conceptual model you need in your head to be able to understand what is going on is this:

The bitcoin blockchain is a ledger. It contains entries, like a ledger does, that says Alice is paying Bob 1 BTC. So you could say that your bitcoin is stored on the blockchain. There is a ledger entry someone can look up that says you have some bitcoin. But one problem: it doesn’t have your name. It doesn’t know who you are. It doesn’t say “Alice is paying Bob”, it says something more like “the person who held the private keys to this bitcoin, is paying the person who has the private key that can provide the correct signature, 1 BTC”.

Ok, there’s a lot to unpack there, but crucially, there’s no identity, and the bitcoin is available to anyone who can provide the correct signature. To provide the correct signature, you have to have the correct private key. Those seed words, that very very long random number, that’s your private key. This is a simplification, but I think it still holds up conceptually. So your hardware wallet does not “receive” bitcoin, at least not as some kind of digital message, like your USB drive might “receive” a file to store. Your hardware wallet contains a private key, and it is able to generate a signature that is valid for the bitcoin you “send” to it, allowing you to spend that bitcoin in a later transaction.

So are your seed words your bitcoin? Basically

Appendix 2: Coldcard Wallet Backups #

One really cool feature of the Coldcard is Encrypted Backups. I have to admit, I did not understand the usefulness of this at first. To give a high level overview of what it does: it generates an encrypted zip file, and a 12 word password. My first thought was: So… now instead of having to protect 24 words, I only have to protect 12? Why is that so helpful?

The thing I was missing was this: The 24 words of your backup phrase are your bitcoin. If someone has that, that’s all they need to recreate your wallet (unless you have a passphrase wallet, and then they also need your passphrase). In contrast, the 12 word password for the encrypted back up is completely useless unless you also possess the backup file.

What this means is you can safely store the 12 word password in a password manager, and you can store the encrypted zip file anywhere else. You don’t want to store them together, because storing them together means a hacker just needs to compromise the one thing that holds both of them. Keeping them split up dramatically improves your security.

You could opt to do this instead of a steel wallet. But I enjoy the tangibility of the steel wallet. In the event of my untimely demise, I feel better about my loved ones being able to get access to a hunk of steel that I’ve hidden somewhere than I do them logging into my computer and finding a file and locating the corresponding password.

 
4
Kudos
 
4
Kudos

Now read this

A Tale of two Phlexes

There are two types of components you can write in Phlex. The standard component exposes a “builder” style API. The second type is a component that uses DeferredRender, which fully consumes the render block before its own template is... Continue →