Audio by @DelioPera
This is not a guide on the most advanced security. It is an easy way to improve on what most people do. It is not about any one type of hardware wallet (HWW), but HWWs in general.
Aiming for extreme security right from the beginning is an unreasonable expectation; it must be done in stages, otherwise, you will have gaps in understanding, and such gaps are a security risk. It’s also a security risk to blindly follow advice if you are going to self-custody; you need to understand some of what you are doing too. This series is about what I call “Level 3” of my ZeroTrust System – getting coins off the exchange and into your own custody with a hardware wallet. This is something Bitcoiners regularly advise newcomers to do, and it’s excllent advice. (For those interested, here is a detailed explanation of why keeping coins on the exchange is a bad idea.)
As you can see from the ZeroTrust system, there are lots of things you can do, but getting all your coins off the exchange is an important early step. Don’t forget to go back to level two as well if you skipped that.
Storing bitcoin on a hardware wallet (HWW) is a huge improvement in security, but so much more can be done to improve security. This guide will explain what simple things you can do next, and help you understand what you’re doing and why in order to be safe and to give you peace of mind. I hope it may also spark interest to take your security further.
People confuse what hardware wallets are, and what they do. They think that these devices hold your bitcoin. No! It’s important to understand these things so you know what you are doing and don’t mess up your security.
The hardware wallet holds the private keys. The private keys produce signatures and give you the power to spend bitcoin. So they need to be kept hidden. That is the main purpose of a hardware wallet. To digitally hide and secure your private keys. The hardware device is locked with your pin. To keep your bitcoin safe, you need to…
- Prevent anyone from finding the HWW
- Prevent anyone from knowing the PIN to access the contents of the HWW
- Prevent destruction or loss of the HWW
- Back up the 24 words (or 12) so that you can regenerate the wallet if the HWW is lost/destroyed.
- Don’t lose the 24 word backup.
- Don’t let anyone find the 24 word backup.
- Make plans for your HWW and backups in case you die (inheritance plan).
If you kept your 24 words in a software wallet on a normal computer, there is a risk that there is malware on the computer – if someone gained access to your computer, then the bitcoin can be stolen, either by stealing your 24-words or manipulating the software wallet to spend to the attacker’s address (while showing you a different address on the screen!). Hackers are smart.
A hardware wallet solves this problem by never releasing private information from the device.
How does it work? Excuse the disgusting banking analogy (I’m sorry!), but it is effective…
Imagine a cheque payment and the following steps. You write a cheque with the sender’s name, your account, the amount, and importantly, your signature. The bank then receives the signed cheque and makes the transfer of funds.
Bitcoin transactions have similarities to cheque payments. It too has a sender, receiver, and amounts, and also requires a signature. That signature is digital and is done by a private key. The private key is inside the hardware wallet. We want it to stay there and never leak to the computer (or any computer) that is drawing up the details of the transaction.
These are the steps (follow where the transaction goes):
- Using your software wallet (it has no private keys), you draw up a transaction (sending address, receiving address, amounts, but no signature because it can’t).
- The software wallet then communicates with the HWW (options are – USB connection, SD card, QR code) which receives the transaction unsigned.
- The HWW has the private key and so, it can add a signature to the transaction it just received.
- The HWW then passes the signed transaction back to the software wallet on the computer
- The software wallet now has a signed transaction (something it couldn’t have done without access to the private key/seed phrase).
- The software wallet is connected to a node (nodes store the blockchain), and it broadcasts the signed transaction to the node.
Once the transaction is sent to a node (preferably your own), this is what happens to it:
- The node shares the transaction with all the other nodes on the network.
- The transaction sits in the queue (mempool) of all the nodes.
- A miner picks up the transaction from the queue, and adds it to the current block it is trying to mine. It also adds lots of other peoples’ transactions to that block.
- If that miner wins the next block, that entire block is added to the blockchain, and the transaction is contained within it, so the transaction is now on the blockchain. It is said to have 1 confirmation.
- At some time (average of 10 minutes later) another miner then adds their block to the blockchain, and the transaction in this example gets deeper from the tip of the chain; now it has 2 confirmations, and so on.
Once the transaction is confirmed (on the blockchain), the software wallets of the sender and receiver can communicate with any node and can update the balances of the addresses they have, based on movement of bitcoin as recorded on the blockchain. The payment can be “seen” by the wallets this way. A connection to a node is necessary.
The purpose of the hardware wallet in the above steps is to sign the transaction away from a computer that has access to the internet (and hackers).
Buy a hardware wallet
There are many hardware wallets on the market. The most popular does not necessarily mean the best. Keep in mind that to be the most popular, and maximise profits, some integrity is usually sacrificed to appeal to more people. Good security creates inconvenience for users and hurts sales.
The most popular HWWs seem to be Ledger and Trezor. I won’t go into it here, but I have issues with them. But, if used correctly, using one is FAR superior to leaving your coins on the exchange. Some other good hardware wallets are ColdCard, BitBox2, Passport, and Seed Signer.
When you buy one, make sure that you buy it directly from the manufacturer. DO NOT BUY FROM A RESELLER, like Amazon, or eBay, or second-hand. This is really important. A risk with these devices is that they can be tampered with in such a way that your bitcoin can be stolen.
Another risk is that you are identifying yourself to unknown people of your name; where you live; and that you probably own some bitcoin. You are then a target for attack. If possible, try to buy the device without giving your real name, and have it shipped to a PO box instead of your home address.
If you have quite a lot of value to secure, then I recommend buying two different hardware wallets (two different brands), and as I’ll explain later, let one device check the integrity of the other. An alternative is to use an air-gapped computer to do that job. These computers have no possible way to access the internet (or other computers) as they do not have WiFi chips or Bluetooth devices. You can have one built as a desktop computer, or build a very cheap one with a Raspberry Pi Zero – It’s so cheap it’s disposable! With such a computer, it’s secure enough to enter your private seed words, and check in a software wallet what addresses are produced, and compare them with any hardware wallet. It’s also a better way to generate seeds, instead of letting the hardware wallet do it.
Opening the Packaging
When the item comes to you, carefully inspect it. If it was shipped to your home address, check that the packaging doesn’t label that a Bitcoin Hardware Wallet is inside. Otherwise, the entire delivery chain knows you have bitcoin and where you live. If that happens, complain to the manufacturer.
As you unpack the device, the manufacturer may provide you with instructions on how to check for tampering. Follow this carefully.
Initialising the device
A good security step is to first update the firmware. The device that was shipped to you usually has software contained (Trezor doesn’t), and you are trusting that whoever sent you the device installed genuine non-malicious software. It’s probably fine, but if you think about it, there is a risk there, and it is possible to eliminate it. The way to do that is to install the software yourself.
Many people skip the step of installing the software themselves. It’s hard. You don’t have to do it – getting your bitcoin off the exchange is the number one priority, but at some point in your journey, learning how to securely update the software is wise.
Ideally, the software should be well known, open-source, and verifiable that it’s genuine. This involves selecting the right hardware device (one that uses open-source software, eg ColdCard), and knowing how to verify the software before installing it. As an example, ColdCard provides a 2-minute video on how to verify the software and how to install it into the device. The Ledger device, however, updates the firmware in a trusted way, by connecting to Ledger Live software. It only provides the benefit of having a new version of the software, not eliminating the trust of what the software is doing.
Adding a seed
Read the manual to learn how to work your device’s controls.
At first use, you will generate a PIN that locks the device. The PIN is converting the HWW into a digital safe.
You will then be given the option of generating a seed phrase, usually 24 or 12 words. You need to write these words down. Why? (If you lose your HWW or it is damaged, the words can restore your bitcoin into any other HWW of any brand)
You should be alone when you record the words down, and make sure no one can see you from a computer’s camera, an open window, or a passer-by etc. Also, don’t speak the words out loud in case there is a sound recording device somewhere, eg a computer. Edward Snowden has revealed how our computers are spying on us, even when they seem to be off! The words you are about to write down are the weakest point of your security, but necessary.
No matter how secure your hardware device, if someone has access to your written words, they can take your bitcoin – without even needing access to your HWW. All they have to do is put the 24 words into THEIR hardware wallet, and spend your bitcoin to a wallet you have no control over. Your balance will then be zero.
So write neatly and carefully. Making an error when writing down the words, or writing in such a way that you misinterpret your handwriting in the future, would mean that if you needed the words to restore a damaged or lost HWW, you will fail, and access to your bitcoin will be lost. This has happened to people.
The hardware wallet will usually get you to write the words down as it displays them to you one by one, and then will get you to enter them into the device to check you have written it all down accurately.
A very important security and storage feature is to add a passphrase. Do not confuse this with “password” which is typically used to lock wallets or devices. A passPHRASE is an extra word that you add to the 12 or 24-word seed. The difference is that it is not limited to the 2048 possible words in a seed. You can choose any word or random string of text you like. I suggest making it at least 15 characters long, not ambiguous in any way, not easy to guess, and perhaps something you can remember. If it’s too long, it’s going to be a real pain to enter into a clunky hardware wallet each time. Each device has a different method of applying a passphrase. If you choose to skip this step, storing your words securely becomes a little trickier (explained later).
Once that process is done, the wallet contains what’s called an “extended private key” which creates many individual private keys, which each create a corresponding public key, which each create a corresponding address. Much more detail here if interested.
Create a Watching Wallet
A watching wallet is a software wallet, usually on your desktop, that holds the extended public key, and with that, can create all of your wallets’ addresses. These addresses are associated with the seed words, but the words and the private keys are not stored here. That means no coins can be spent. They can only be observed.
A watching wallet starts off looking like empty addresses until it connects to the blockchain (a public node, but preferably your own node), and requests data about the value contained in all the addresses. Watching wallets provided by HWW manufacturers are usually very basic (eg Ledger Live, Trezor Suite), and show only one address at a time as you use them. There are effectively infinite addresses that you own (associated with your mnemonic seed words) that are not shown to you by these software packages. If you use 3rd party open-source software like Electrum Desktop Wallet, Sparrow Wallet, or Specter Wallet, you see much more of your wallet and have more control over how the coins in your wallet are spent in transactions. You also learn a lot more about how Bitcoin works.
Before installing your Watching Wallet, you should consider malware. Your regular computer that you surf the internet with almost certainly has malware. The most extreme security would be to buy a dedicated computer, install Linux operating system on it, and only use it for Bitcoin transactions. Less extreme would be to take an old computer and wipe it clean with a new operating system (Linux, Mac, Windows – security in that order). Most people will use a regular computer and I don’t think I’ll be able to stop them. At least, if you do this, always double-check the address you are spending to on the computer screen AND the HWW every time you send AND receive coins.
The way to set up the watching wallet with the HWW’s software is straightforward if you follow their instructions. But setting up on 3rd party software is a process…
- Download software, ideally open source, direct from the software’s website or Github.
- Verify the hash of the package and the gpg signature – this ensures the software has not been tampered with. If you are an expert, compile from the source code. This article contains a video demonstration of me verifying the gpg signature for Electrum Desktop Wallet. This article explains gpg signatures and hashing
- Extract the extended xPub (public key) from the Hardware wallet and load it into the Watching Wallet – the process for this varies with the device and the software package.
Once you do this, you no longer require the HWW’s software and can continue to connect to the 3rd party software, which is always much better.
Make a test transaction to receive and spend
Your HWW is set up and you have the watching wallet set up on a clean computer. Perfect. Now you want to receive all your bitcoin sitting on the exchange, right? NO. First, you must receive a tiny amount and test that you have the power to spend. Proceed as follows…
- Factory reset the device.
- Restore the device with the seed words you wrote down
- Make a second watching wallet using the newly created restored xPub in the HWW, and compare the addresses.
- Send a tiny amount to address #0 from the exchange, eg $100 worth (not too small)
- Spend this $100 worth and send it to address #1 within your wallet (this requires a bitcoin transaction and cost some fees. Don’t spend more than 1 sat per byte if your software gives you that level of control).
If that worked, proceed to the next step.
Test your seed words on a second device
Most people will skip this step. Ideally, you should restore the seed phrase into a second device, and make another watching wallet by extracting the xPub from that. Inspect the resulting addresses (receiving addresses and change addresses if you know how), and compare them with the previous watching wallet you made. If they are identical, you are good to go.
Back up your words
You can’t send all your bitcoin from the exchange to the Watching Wallet just yet, sorry.
You really must consider the backup of the words. So far, they are written down on paper. But you should make another copy. Some people get obsessed about recording the seed words down on metal because it can be fireproofed. They even pay money for fancy metal backup contraptions – not necessary.
If you duplicate your backups and keep them separated, then a fire in both locations is your disaster scenario, not a fire in one location. You may still like to protect yourself from that. You can simply get any scrap metal and using a $12 engraving pen, etch your seed into that. If you want to test-fire resistance, try placing it in the BBQ and see how it fares. See if you can read your etching. I tested mine and it was fine.
The next thing to consider is “what if someone finds the backup”? Some people believe that splitting the words up and storing them in different locations is a good solution, but that is a terrible idea, as it increases the risk of the seed being brute force calculated. You should have a passphrase and keeping that separate from the words is effective. To spend bitcoin, you’ll need to be able to restore the seed words AND the passphrase (just entering the seed without the passphrase will reproduce the wrong wallet).
Where to keep the backups?
Make sure everything is not in one location because some sort of disaster could mean everything is lost.
You could keep your HWW in your house, and the seed words there too, as long as you have a copy somewhere else, perhaps a safety deposit box, or a trusted family member’s house. The use of a passphrase becomes critical if you give your seed to other people, even if you trust them, because you may not necessarily trust their storage practices. They have the seed but not the passphrase; if they store it insecurely and it gets stolen, your bitcoin remain safe because the thief won’t have the passphrase.
This is tricky and depends on so many things. A simple solution can be to memorise the passphrase AND back it up somewhere safe and tell your heirs what the passphrase is and where the seeds are kept. The obvious problem with this is that your coins may be stolen by your heirs while you are alive, or they may be attacked and give up the information.
Protecting from this sort of thing requires more advanced storage (multisignature) and a carefully designed recovery plan should you die. If interested, I offer this as a service and can be contacted for information.
Transfer your funds from the exchange
Your wallet is made, passphrase applied, test spend done, seeds backed up in multiple locations, inheritance plan considered… now you can withdraw your coins from the exchange to your Watching Wallet.
One thing to consider is if you should move everything at once or in small packages?
Each withdrawal will give you a separate coin with a different history, so to an outside observer, knowledge of one of the coins being yours does not divulge information about your other coins, and therefore total balance.
Ideally, you want to have coins/withdrawals to you of small spending amounts; amounts you may transfer in the future when Bitcoin is worth a lot more. But if you take it too far, you’ll make many withdrawals, and the withdrawal fees by the exchange will add up. I think a mixture of large and small coins is wise. This is something you should consider, I can’t advise something that would suit everyone.
Great work if you did all that. It doesn’t end there. Explore my site armantheparman.com for other guides to improve your security and privacy. I suggest learning about running your own node, but if you haven’t practiced making transactions with Electrum Desktop Wallet with a private key (“Level 2”, no hardware wallet), go back and do that and become familiar with restoring wallets, basic transactions, coin control, what UTXOs are etc.
Static Lightning Address: firstname.lastname@example.org