Hodl Guide

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 50

DownloadHodl-guide
Open PDF In BrowserView PDF
The Hodl Guide
This is a draft, all feedback is appreciated!
Bitcoin gives you the possibility to store value in ways earlier generations only could dream
about. A common man can store value in a more secure and trust minimized way then any
king throughout history. If done right, no one even needs to know what you own.
I wrote this guide in my own quest to becoming a first-class Bitcoin citizen. A first-class
Bitcoin citizen has control of his own keys, runs his own full node to validate all transactions
and does this in a secure and private way. I’m no technical expert myself, so this guide only
uses tools that’s been properly battletested throughout the years. The goal of the guide is to
find a middle ground in the constant battle between usability and security. More bitcoin has
probably been lost because of a complicated process with paper wallets then has been stolen.
This guide uses HD-wallets with mnemonic seeds (12-24 regular English words) for your
private keys that reduce the risk of fatal mistakes. In the end of the guide, you'll have a
reliable and secure cold storage!

Who is this for?
The guide is for everyone who wants to store their bitcoin in a secure way (you don’t need
any specific technical knowledge). You should have a basic understanding of what a private
key is and why it´s important to store it in a secure way. The guide is flexible and can be
utilized in different ways. The full setup is with two different hardware wallets and one
backup key created with the Tails operating system. The most time consuming, and slightly
more technical, part is related to Tails. You could skip that part for an easier (but less secure)
setup. If you don’t trust, or want to buy, hardware wallets you could do the whole setup with
3 keys in Tails. If you make modifications to the guide, you'll have to adjust accordingly. The
full setup should take 2-3 hours, excluding download and sync-times. The guide is meant for
normal users and not individuals that might be extra targeted for specific attacks (but they can
probably use parts of the guide).

Privacy
The guide gives you the opportunity to create a very private storage solution as well. Those
parts are optional (but recommended). They don’t directly affect the security of your private
keys. But they reduce the risk of being the victim of a targeted attack (virtual or physical).
The privacy parts are marked with a [P]. Privacy isn’t black and white and every situation is
different. I would recommend to at least try a few of the methods that might work for you.
It’ll probably payoff in the long run. The best security for your bitcoin is probably that no one
knows that you own them in the first place. If you want two deep dives about why privacy is
very important, check out https://medium.com/human-rights-foundation-hrf/privacy-andcryptocurrency-part-i-how-private-is-bitcoin-e3a4071f8fff and
https://en.bitcoin.it/wiki/Privacy.

At the end of the guide, you’ll have a set of private keys and a plan to store those in a secure
way. That includes the possibility for people you trust to access them (if they collaborate
which each other) in case of an emergency.

Cold Storage
This is a guide for Cold Storage. Only put funds that you don’t need to access frequently in
cold storage. If you have more then a few $1000 worth of bitcoin a good starting point could
be to store 70-90% in cold storage, 10-30% in a hardware wallet and 0-10% in a hot wallet on
your phone or computer (lightning etc).
I, or no one else, is responsible for your funds. This guide gives you the tools, but you have to
evaluate and perform all the steps yourself. Only you are responsible for your bitcoin. Grow a
spine and start loving it!

More Reading
For more reading on private keys and other approaches for cold storage, see:
https://github.com/rustyrussell/bitcoin-storage-guide
Or for even more depth, take a look at:
https://glacierprotocol.org/

Contributions
This guide has one goal. To create a solid cold storage. Any critique or improvement
proposal to the guide is highly appreciated. Feel free to open a pull request or contact me on
Github or Twitter (@HelgeHunding).

Preparations
Mandatory Hardware Requirements for Full Setup
•
•

•

1 USB-drive with 8GB+ memory. Consider buying a new one, used only for this purpose.
2 different Hardware-wallets (Trezor, Ledger, Coldcard etc). Make sure the hardware-wallets
are from two different manufacturers (for example one Trezor and one Ledger). You can use
existing devices if you already own some (but they shouldn't be used for other purposes
after you're done). If you're buying new ones, make sure to only buy from the official store.
It's always sensitive to have Bitcoin-related stuff shipped to your home. Consider having it
delivered to a UPS access point or a similar service.
1 internet connected computer. Could be your normal computer. Should have at least 1
USB-slot and a camera (for reading QR-codes). If you only use one computer, the computer
needs to have a 64-bit processor.

•

1 Smartphone (or digital camera with screen)

Optional Equipment and Hardware
•

•
•
•
•
•

1 extra computer. This will make the process of working with Tails easier. If you have an old
computer lying around, consider using it and making it an eternally quarantined computer
(or buy a cheap used computer). That’s a computer that´s going to be eternally quarantined
(only used for this purpose and never used for anything else or connected to the internet
again). If you are using an eternally quarantined computer it’s a good idea to
format/reinstall the computer to get it as fresh as possible. You can even wipe the operating
system of the computer since we are using Tails. Before wiping the OS, try it out with Tails.
You might have to update some drivers for it to work.
o The computer needs 1 USB-slot, a camera and needs to have a 64-bit processor. If
you’re not sure check the computers properties or if you’re buying a used computer,
you can search for the computer’s processor on http://www.cpu-world.com. “Data
width” should be 64 bit.
Home safe. For safe, waterproof and fireproof storage for one of the Hardware Wallets.
TerraSlate paper (https://www.amazon.com/dp/B076JKVNWY/), waterproof, heat resistant
and tear-resistant paper.
Envelopes to store sensitive information in.
Cryptosteel or similar product that stores a private key on a metal plate (then you don´t
need TerraSlate).
Tamper-resistant seals or tape.

First steps
An important part of the guide (and a great skill to have) is to know how to validate digital
signatures. We are going to do a validation of this guide as a practice (and to control the
guide).
To start, download my signature hundingsbane.asc, the guide hodl-guide.pdf and the
detached signature hodl-guide.pdf.sig in the validation-folder. We are going to make sure
that the one controlling the public key hundingsbane.asc (me) signed the document hodlguide.pdf.
To verify what we downloaded, we need GnuPG (https://gnupg.org/). The implementation
varies for different OS:
Windows: Download and install the latest version of Gpg4win https://www.gpg4win.org. If
you don’t want to donate, click bank transfer on the download page to acces the download.
You only need to install GnuPG and Kleopatra. Start Kleopatra once finished.
macOS: Download and install the latest version of GPG Suite https://gpgtools.org/
Linux: GnuPG comes pre-installed with Linux distributions.
An easy way to verify a digital signature is to use a terminal (the command line). In all
examples, what´s written to the terminal is everything after the $ sign (and examples that's
specific for Windows uses the symbol >).

For example: $ cd Means that you´d write cd to the command line (cd is a command that
changes the active directory). Usually you can paste text to a terminal with ctrl+v or with a
right click on the mouse. Another useful shortcut is to use the arrows up and down to toggle
between previously executed commands. If you´re stuck, you can usually kill a process with
Ctrl+C or Ctrl+Z.
To start, we need to change the active directory with $ cd.
Windows: Open Powershell (search for it or use Win+R, type powershell and hit enter)
macOs: Click the Searchlight (magnifying glass) icon in the menu bar and type terminal.
Select the Terminal application from the search results.
Linux: Varies, on Ubuntu, press Ctrl+Alt+T
Change the current directory to the one where the 3 downloaded files are located, for
example:
Windows > cd C:\Users\User1\Downloads
macOS and Linux $ cd $HOME/Downloads
To be able to verify the signature, import hundingsbane.asc into your local GPG installation:
$ gpg --import hundingsbane.asc

Now use the “detached signature” to check that the .pdf file was signed with the signing key
we imported:
$ gpg --verify hodl-guide.pdf.sig hodl-guide.pdf

Hint: If the name of the file and the signature is the same, you don't need to write the name of
the file (you could use only $ gpg --verify hodl-guide.pdf.sig in our example).
The expected output should be something like:
gpg: Signature made 03/01/19 16:32:53 W. Europe Standard Time
gpg:
using RSA key FF541B4EE4E6D84593011D403D27D7D359A0E4A9
gpg: Good signature from "Helge Hundingsbane" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:
There is no indication that the signature belongs to the
owner.
Primary key fingerprint: FF54 1B4E E4E6 D845 9301 1D40 3D27 D7D3 59A0 E4A9

There's three key points to look at when verifying a signature. When the signature was made
(03/01/19 in the example above). It should be around the time that the file was uploaded.
That it’s a Good signature and what the primary key fingerprint is (in this case FF54 1B4E
E4E6 D845 9301 1D40 3D27 D7D3 59A0 E4A9). To check that the fingerprint indeed seems
to belong to me, you could check my Twitter and my Keybase. Signers usually keep their
fingerprint in their social profiles. For more critical downloads (like Electrum or Bitcoin

Core) it’s a good idea to do a search online on the fingerprint. That should give results on
forums etc, that’s hard to fake.
Twitter, Keybase
If someone was trying to fake the guide and change even one character in hodl-guide.pdf, it
would result in a bad signature when you verified it with hundingsbane.asc. If you get a bad
signature when validating something, you should stop and investigate further before doing
anything else with the file. You can open hodl-guide.pdf and select a few parts of the text and
compare it to what’s written here on Github. If it’s not the same, you should stop and
investigate further. You can continue with the pdf or on Github.
Now that we have this knowledge, we can start generating private keys! Before moving on, if
you don’t have Bitcoin Core installed and synced, you might want to start that process now.

[P] Bitcoin Core
We don´t want to go through all this trouble to secure our keys and then rely on trusted third
parties for validations. That´s why our first option should be to use Bitcoin Core to validate
all transactions. Bitcoin core is the main software implementation of the Bitcoin protocol. By
running your own node, you´re also helping the network and making it more decentralized.
Check out the bonus guide, Install and optimize Bitcoin Core
Note, the Bitcoin blockchain size is approaching 300 GB. It could take several days to
download the whole blockchain. If storage is an issue, you could use “pruned mode”. That
way, you´d discard old transactions and only need to store as little as 15 GB of data. You
won’t be able to help new nodes connect, but you´d still validate everything yourself. If
you´re on a limited data plan, downloading 300 GB of data might still be an issue. In that
case you´d have to rely on third parties for validating and broadcasting transactions and can
skip this step.

Generating the first two keys
Time to generate the first keys!
A few things to keep in mind when generating your private keys. This is valuable information
and a lot of devices are “spying” on us in one way or the other. If possible, generate all
private keys in a room where other electronic devices connected to the internet are turned off.
Make sure that your actions aren´t visible from windows or doors and that no home security
camera records your actions.
Try to keep smartphones turned off and/or in another room during the process. They are hard
to secure and can record sound/video without you noticing (computers can of course do the
same). Generally, use your common sense to make sure that nothing can record your actions.

Generate keys with Hardware Wallets A and B

The first two keys are generated with your two different hardware wallets. Make sure that the
hardware wallets are from two different manufacturers. In that case, if a fatal flaw is found in
one of the wallets, your funds are still safe. You can simply move your funds to a new multisig contract and replace the flawed key.
Follow the setup procedure recommended from each manufacturer. Protect the devices with a
pin (use two different pins for the two devices). We are going to write down the pins on
information packages later. The pin is only to protect you if someone gets physical access to
the device and isn't super important (but don´t use 0000 as pin because of that..). Use PINs
you can remember yourself.
Update the firmware on the hardware wallets if you don't have the latest version.
We are going to protect the seed in our hardware wallets with different
passwords/passphrases. The method for how to use a password with your seed is different for
each manufacturer, check their guides (for example Ledger). On Ledger it needs to be setup
on the device (you can use a temporary passphrase since we wont use it much) and with
Trezor you can do it in Electrum later. You don't need to set it up on the devices now,
generate the passwords now and put it into the devices when we construct the multi-sig
wallet.
Most vulnerabilities that’s been detected in hardware wallets would’ve been stopped with a
strong password. We humans are pretty terrible at generating random passwords. So, it’s
probably safer to generate a password with a password manager on your computer then trying
to come up with a password yourself. You could use Lastpass, KeypassX or a similar service.
A password manager is a great place to store moderately sensitive information in (like public
keys and even more sensitive information like the password that protects the seed, but never
put your seed on a "hot" computer). If you are given the option, generate a password without
symbols that can be confused (big o and zero etc). If you don't want to use an online service
like Lastpass, you could use an encrypted secure note stored on a USB instead. The important
part is that this information should be availible if your house burns down. We are referring to
this as the digital note from now on.
I would recommend a password containing symbols from (0-9, a-z, A-Z) and with a length of
at least 15 characters. That would give you a password with ~80-bit entropy (on average, it
would require 2^80 guesses to crack the password). Use two different passphrases for your
two different hardware wallets. If you already have two old hardware wallets with seeds that
you’re sure has been setup in a secure manner, you could use those. But make sure they’re
protected with a strong passphrase (preferably use a new passphrase for this purpose).
We are calling the first Hardware wallet, Hardware wallet A (used with password A) and
the second one Hardware wallet B (used with password B). It doesn't matter which wallet
is which, but make sure to keep track of what you select so you don't mix them later and
make sure which private key belongs to which wallet. In your digital note, store the
passwords like this:
PWA: your_password_A
PWB: your_password_B

Optional: Depending on your memory (add hints so you can remember the PINs).

Create information packages
Apart from the private keys, we are going to create 3 physical information packages on a
different piece of paper. If you want more detail on exactly why we are doing this and how
they are being used, look at Key storage.
On each information package, write a short instruction for how to access the funds.
Something like this:
The Hodl Guide Github, multi-sig 2 of 3

That should give enough information for someone else to do a search online for how to
retrieve funds in case of an emergency.
Mark the three info packages A, B and C .
While writing down critical information, make sure to be extra careful with symbols that can
be confused (like big o and 0, I and small L, etc). The best solution is to not use them at all.
On info package A, write the pin to hardware wallet A PIN_A: pin_hw_a.
On info package B, write your first password for the seed PWA: your_password_A and the
pin to hardware wallet B PIN_B: pin_hw_b.
On info package C, write the second password for the seed PWB: your_password_B
You should now have:
•
•
•
•

Hardware wallet A and its private key (private key 1).
Hardware wallet B and its private key (private key 2).
Info package A, B and C.
A digital note in a password manager or on a USB (that´s going to be store in
another location), containing your_password_A and your_password_B (never put

anything else from your seed on a computer connected to internet).
Store all information in a secure way during the rest of the process (don't leave your notes
lying around visibly).

Generate the last key with Tails
We are generating the last key with Electrum on a computer booted with Tails,
https://tails.boum.org/. Tails is a live operating system that´s built upon Debian (a Unix-like
operating system). It´s booted from a USB-stick and only uses the computers RAM-memory.
That means that all sensitive information is erased when the USB is ejected (and your
computer will start with your usual operating system like nothing happened).

Download Tails
Go to https://tails.boum.org/install/index.en.html and select your operating system. If you
don´t have an old copy of Tails, select “Install from {Your operating system}”. Select “Let´s
go” and download the USB image at step 1.1 to a directory on your computer. At the
download page, make sure to download tails-signing.key and tails-amd643.12.1.img.sig (at the “OpenPGP signature for the Tails 3.12.1 USB image” link, the exact
name should change for future versions) and place the files in the same directory as the .img
file. Wait until the USB image is downloaded.

Verify signatures
We need to verify what we downloaded (and that´s why we downloaded the last two files).
As we are verifying the download ourselves, skip step 1.2 “Verify your download using your
browser”. The browser extension is probably fine, but it´s a great practice to do it yourself as
the process can be used for other files as well. And browser extensions always comes with a
risk of leaking personal information, so always be cautious with browser extensions (no idea
if this particular extension does that, probably not).
It’s the same procedure as before (check the Preparations for more information about
validating signatures).
Start a terminal window (like Powershell on Windows).
Change the current directory to the one where the 3 downloaded files are located, for
example:
$ cd $HOME/Downloads

To be able to verify the signature, import the Tails-signing key into your local GPG
installation:
$ gpg --import tails-signing.key

Now use the “detached signature” to check that the .img file was signed with the signing key
we imported:
$ gpg --verify tails-amd64-3.12.1.img.sig tails-amd64-3.12.1.img

(make sure
to change the file name on both places if using a newer version). The verification can take a
while.
Expected output should be something like:
gpg: Signature made 01/28/19 18:44:16 W. Europe Standard Time
gpg: using RSA key FE029CB4AAD4788E1D7828E8A8B0F4E45B1B50E2
gpg: Good signature from "Tails developers (offline long-term identity key)
" [unknown]
gpg: aka "Tails developers " [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: A490 D0F4 D311 A415 3E2B B7CA DBB8 02B2 58AC D84F

Subkey fingerprint: FE02 9CB4 AAD4 788E 1D78 28E8 A8B0 F4E4 5B1B 50E2

The important part is the date, Good signature and Primary key fingerprint A490 D0F4
D311 A415 3E2B B7CA DBB8 02B2 58AC D84F This ensures that the .img file was signed
with a key with the fingerprint A490 D0F4… at a date, not to long before the release. If we
do an online search, one of the first matches was @Tails_live on what seems to be a legit
Twitter account and who has the fingerprint in the bio.
Another match is a post from 2015 on the official webpage that announces a change to this
key and we can also see several old posts from Reddit. We can be almost certain (not possible
to do much more without meeting the signer IRL and get the signature confirmed that way)
that this release was indeed signed by the developers. This process would catch a scenario
were a malicious actor had taken control over the webpage and uploaded a bad file and a bad
signing key. If you get a bad signature or another fingerprint, stop and investigate further
before installing anything.
If everything is good, go ahead and create the boot USB. This is going to be used to create
the last private key.

Flash Tails to USB
The easiest way is to follow the instructions on https://tails.boum.org/install for your
operating system.
So, insert the USB you are going to use and follow the instructions at “2/5 Install Tails”. In
Mars 2019 that means downloading, running and flashing the USB with Etcher for Windows
and macOS and with GNOME Disks for Linux. When step 2/5 is completed, you´ve got two
choices.
If you use one computer. Tails is going to be started on the computer you are reading this on.
In that case you´re going to have to print or write down the rest of the of the instructions on
this page. You could also bring the instructions up on another device (keep them in flight
mode and don’t let any cameras see any screens or private keys). Make sure no other USB
drives is connected to the computer.
If you are using two computers. Tails is going to be started on the other computer and you
can keep the instructions on the main computer. The other computer could be a normal
computer that's going to be used for other things after the process. Or for extra security, an
eternally quarantined computer used only for this purpose. Make sure no other USB drives is
connected to the computer.

Start computer on Tails
Go ahead and make sure that the USB with Tails is inserted in the right computer. Start (or
restart) the computer.

If the computer starts on Tails, the ”Boot Loader Menu” should appear:

Tails should be selected and start automatically after a few seconds. If it does, follow the
instructions on the screen for starting (setting up language and keyboard) and start Tails.
Otherwise, restart the computer and bring the boot menu up. The key for bringing the boot
menu up differs from manufacturer to manufacturer.
On PC, It´s usually Esc or F12. Usual keys used for the boot menu on different
manufacturers:

Choose the USB-stick with Tails in the boot menu. If that doesn´t work, you might have to
change settings in Bios (turn off secure start, change start order, disable fast start etc).
Check the troubleshooting guide at the install page at Tails for more information. There could
be issues with certain computers or graphic cards, check the troubleshooting guide to see if
there´s an easy fix.
On Mac, Immediately press-and-hold the Option key (Alt key) until a list of possible start-up
disks appears. If the computer starts on Tails, the Boot Loader Menu appears and Tails starts
automatically after 4 seconds.
When you get past the boot loader menu, follow the instructions on the screen to start Tails.
Note: Tails can be pretty slow if you use an old computer, make sure it's really stuck and not
only slow before troubleshooting.

Generating the private key with Electrum
Once started, make sure WiFi is disconnected (arrow in upper right corner, should say “Wi-Fi
not connected).
Go to Applications (upper left corner)>Internet>Electrum Bitcoin Wallet. Click on Launch if
a window about persistence appears.
The Electrum – Install Wizard should appear. The name of the wallet isn’t important (it will
be deleted), so “default_wallet” is ok. Click Next:

On the next step, let “Standard wallet” be selected (we are only interested in generating a
key). Click Next:

On the next step, let “Create a new seed” be selected. Click Next:

On the next step, let standard be selected. Click Next:

You should now see 12 words, this is your private key! Electrum use 12 words for it´s seed,
most hardware wallets use 24. Today the difference doesn’t really matter, the security is
plenty (and we have two other keys with 24 words). Write the 12 words you see on your
screen on a paper of good quality. Then click Next:

Confirm your seed by typing all the words you wrote down in the blank field. When finished,
click Next:

We are done with the seed for now, put it away during the rest of the process so it's not
visibly lying around.
You should now be asked for a password. This is for protecting the wallet file and we don’t
need that (since everything is deleted once finished), so leave it blank and click Next:

Electrum is now generating addresses, it can take a while before the main window shows up.
Once the main window loads, the key and all necessary information is now generated!
Before we move on, we need to check what version of Electrum we are running and what our
master public key is.
Start with the version. Check what version of Electrum that´s running on Tails. For example,
Tails 3.12.1 comes with Electrum 3.1.3. Remember this or note it down (not sensitive
information).

Now we need to copy the master public key. The master public key is used to construct our
multi-sig wallet later. To show the master public key in Electrum, go to
Wallet>Information.
We need to copy this to our live system where we´ll construct the multi-signature wallet. But
we don’t want to put another USB in to our system at this point (reduce any risk of
information about our private key leaking). Your public master key doesn´t really affect your
bitcoin’s security (no one can steal your funds with a public key). But all your bitcoinaddresses can be generated from the master public key (in a multi-sig you would need all 3
public keys). So, for privacy, it should be treated with care. But it isn´t as sensitive as a
private key. The key can be represented as a QR code. In the bottom right corner, click
“Show as QR-code”:

It´s now safe to bring other electronic devices near the computer that generated the private
key. So, you can turn your cell phone on, but put it in flight mode so nothing is uploaded to
any cloud service (or use a digital camera). We are going to use several cameras, so double
check that no private keys are lying around. With your cell phone, taka a photo of the QRcode that represents the master public key.
If you use one computer, remove the tails boot USB from the computer and restart the
computer on your regular OS. You can keep Tails running if you use two computers, but
close Electrum.

Create a multi-sig wallet with Electrum
We are using Electrum on our main computer to construct the multi-signature wallet.

Download and verify Electrum
On your main computer (or regular OS) go to https://electrum.org/#download
For our multi-sig to work on both systems, you might need the same version of Electrum as
the one used in Tails. But first, we need the signing key of Electrum developer Thomas
Voegtlin. Scroll down to the bottom of the page and click on the “Public Key” link (you can
skip this on Linux and use gpg --import ThomasV.asc):

That should take you to a page with the public key, use Ctrl+S and save the file
ThomasV.asc on your computer.
Go back to https://electrum.org/#download and check what the latest release is. Chances are
that the latest release is newer then the one used in Tails. If that´s the case we need an older
release, click “Previous releases”:

That should take you to https://download.electrum.org/. Go to the folder with the same
version number as the one in Tails (for example 3.1.3 with Tails 3.12.1). Download the file
for your OS (tar.gz for Linux, -setup.exe for Windows and .dmg for macOS) and make sure
to download the corresponding .asc file as well. Put the files in the same folder as ThomasV’s
signing key:

Note, if you´re already using a newer version of Electrum. Downgrading the version might
make wallets created with newer versions temporary unusable. Once done with the cold
storage, you can upgrade to a newer version of Electrum and everything should work again.
Your funds aren´t at risk, you can always recover your funds (or import to an older version)
with your recovery seed.
Once downloaded we need to verify the download in the same way we verified Tails. Open a
terminal (for example Powershell on Windows). Change the current directory to the one
where the 3 downloaded files are located:

$ cd $HOME/Downloads

Import the signing key from ThomasV into your local GPG installation:
$ gpg --import ThomasV.asc

Now use the .asc to check that the Electrum installer was signed with the signing key we
imported:
$ gpg --verify electrum-3.1.3-setup.exe.asc electrum-3.1.3-setup.exe

(make

sure to change the file name if using a different version).
The verification can take a while.
Expected output should be something like:
gpg: assuming signed data in 'electrum-3.1.3-setup.exe'
gpg: Signature made 04/18/18 17:10:44 W. Europe Daylight Time
gpg:
using RSA key 2BD5824B7F9470E6
gpg: Good signature from "ThomasV " [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:
There is no indication that the signature belongs to the
owner.
Primary key fingerprint: 6694 D8DE 7BE8 EE56 31BE D950 2BD5 824B 7F94 70E6

The signing was made the same day as the release was uploaded (should be around the same
time). It´s a Good signature. A search online on 6694 D8DE 7BE8 EE56 31BE D950 2BD5
824B 7F94 70E6 seems to confirm that this key belongs to Thomas V. We are good to go.
Install Electrum and follow the instructions on screen.
[P] Setup Electrum to run over Tor
Electrum use servers that’s run by volunteers to validate and broadcast transactions. Anyone
can start a server and if you don’t specify a server, you’ll be connected to one randomly. This
is terrible for privacy (and has been used for phishing attacks). If you don’t use Tor or a VPN
you’re essentially giving a random server your IP-address and all the bitcoin addresses you’re
asking for.
There's several companies that specialises in chain analysis to deanonymize addresses and we
can assume that they’re running several Electrum Servers. If you bought your bitcoin on an
exchange that use KYC (know your customer), you can assume that your private data will be
leaked sooner or later. If you don't do something about it, risk is that almost every transaction
you do can be linked to you. A first good step is to use Tor. It uses "onion routing" to hide
your true IP-address. You can also use a VPN, both solutions will hide your real IP-address
from random servers. With a VPN, you'll trust the provider (all traffic goes through them)
which is probably safe as long as Bitcoin is legal in your jurisdiction (but you never know).
Using Electrum with Tor should be a fairly straightforward process. If you don't have Tor, go
to https://www.torproject.org/projects/torbrowser.html and download the latest version of Tor
Browser for your OS. You should now know how to verify digital signatures. So, download

the signature (.asc) for the file you download as well. You can import the Tor signing key
with the command:
gpg --keyserver pool.sks-keyservers.net --recv-keys 0x4E2C6E8793298290

Then use:
gpg --verify {your_file.asc}

Make sure the output is similar to this:
gpg: assuming signed data in 'torbrowser-install-win64-8.0.6_en-US.exe'
gpg: Signature made 02/12/19 14:26:17 W. Europe Standard Time
gpg:
using RSA key EB774491D9FF06E2
gpg: Good signature from "Tor Browser Developers (signing key)
" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:
There is no indication that the signature belongs to the
owner.
Primary key fingerprint: EF6E 286D DA85 EA2A 4BA7 DE68 4E2C 6E87 9329 8290
Subkey fingerprint: 1107 75B5 D101 FB36 BC6C 911B EB77 4491 D9FF 06E2

When Tor is installed, start Tor. That could be done in two ways. You can launch the browser
(it’s much easier to use then a few years ago) or only start Tor (like tor.exe on WIndows).
Only Tor should be located at .\Tor Browser\Browser\TorBrowser\Tor. You won't notice
anything if you launch Tor without the browser (nothing visible will start).
Start Electrum. If this is the first-time starting Electrum, you'll have to create a wallet first
(skip these steps and open a wallet if you already have one). The wallet you create can be a
"dummy" wallet that you delete after the process. We only want to access the settings.
Pick a name for the wallet, click Next:

Let Standard Wallet be selected, click Next:

Change to "Use a master key" and click Next:

Since we only want a dummy wallet to access the settings, paste this key in the field and click
Next:
xpub661MyMwAqRbcF7NVwdGV5gKTj5cqEwDcJv21g1RqF51YmWj5ycNE4S8Vv3dFZRufGJvbfoF
M2hapK6Sd7fdXtyF9QrpKBStMX5LAYJVNWoC

We don't need a password for this wallet, leave the field blank and click Next:

Electrum should now start. Go to Tools>Network. Change the tab to Proxy. Select "Use
Proxy" and make sure SOCKS5 is 127.0.0.1 and that the port is 9050:

Close the network dialog. The circle in the bottom right corner should now be blue and not
green. You have now configured Electrum to run over Tor. Electrum won’t connect to
anyone unless Tor is running (even if you restart it).

Create the multi-sig wallet
We are now going to create our multi-sig wallet. If you already have a Electrum Wallet open,
go to File>New/Restore (or use Ctrl+N). Otherwise start Electrum, the install wizard should
be launched automatically.
Pick a name for your multi-sig wallet and click Next:

Select "Multi-signature wallet" and click Next:

Change the first slider to 3 cosigners (with 2 signatures required) and click Next:

We are now going to construct our multi-sig. Start with Hardware Wallet A. If you use a
wallet, like Ledger, where the password is written on the device. Make sure the password is
active before moving on. Select Use a hardware device and click Next:

Electrum should detect your hardware wallet and show its name. If detected, click Next
(otherwise, rescan by clicking Next). If using a hardware wallet where the pin and password
is entered on the computer (like Trezor), enter the pin and password A after you've clicked
Next:

The next window shows your Master Public Key, we will access this later in Electrum and
can skip it now, click Next:

We are now going to add key 2. Remove Hardware Wallet A and insert Hardware Wallet B
and repeat the process you used for key 1. If it’s a wallet with a physical pin like Ledger,
enter the pin (and make sure that it uses password B). Select Cosign with hardware
device and click Next.

.
Electrum should detect your hardware wallet and show its name. If detected, click Next
(otherwise, rescan by clicking Next). If using a hardware wallet where the pin and password
is entered on the computer (like Trezor), enter the pin and password B after you've clicked
Next:

The next window should be where you add cosigner 3 of 3. We are now going to use the key
we created with Tails. Select “Enter cosigner key” and click next:

Click the QR-code in the bottom right corner and scan the QR-code on your phone:

That should bring up your xpub... key
If you have an error with scanning the QR-code, check the Troubleshooting guide Scan QRcode with Electrum
When the QR-code is in the field, click Next:

Your wallet is now created and you should be asked for a password to encrypt your wallet.
This is for your master public keys that’s stored on your computer and it’s a good idea to
protect that with a password. Pick a strong password, preferably generated by a passwordmanager. You will need this password to open the wallet in Electrum (but not for restoring
your funds, you can always restore your funds with your seeds + the seed passwords). You
can store this password in LastPass, KeepassX or similar managers or use a password you'll
remember. Enter the password, confirm it and click Next:

You should now see the following:

Congratulations, your wallet is created!
If you disconnected one, or both, of your Hardware Wallets. You'll probably get a message
like this:

You can simply click No
If you use Electrum over Tor (the circle in the bottom right corner should be blue), you have
a pretty solid setup and can use this as it is. Electrum won’t connect unless you use Tor and
you will hide your real IP-address from any servers. But you still rely on third parties for
validation and broadcasting. It's fine for our test deposit and we can improve this later.
We are going to deposit a small amount of bitcoin to one of our addresses to make sure
everything works. In the beginning of 2019, transactions are practically free. So, a few $
worth of bitcoin is plenty to try it out. The amount should cover 3 transaction fees.
Note: Always think twice before depositing funds to your cold storage. I highly recommend
to properly mix any coins deposited to cold storage (especially if they are from an exchange
with KYC). This is only a test deposit to a one-time address, so mixing is not that important
here. You can deposit from any normal wallet and can think about mixing later.

Deposit Program
This can be used every time you want to deposit funds to your cold storage.
Open your multi-sig wallet in Electrum and enter the password that unlocks the wallet. Go to
Receive and copy the “Receiving address”.
Note: If you used Zbar to scan your QR-code, there might be a problem with copy and
pasting. A restart of Electrum should fix that.
Go to another wallet (like Wasabi Wallet or another Electrum wallet) and send your bitcoin
to the receiving address. You should see the unconfirmed balance almost immediately.
Optional: If you want to know that your backup works, you might want to go through the
trouble of doing a full restore of your wallet. Do this by opening a wallet in Electrum, go to
File>Open (or Ctrl+O). Delete your wallet file and close the wallet you deleted if it's open.
Go back to the first step of create the multi sig wallet and set it up exactly the same way as
you did before (same password etc). But this time use another source of information. If you
used your secure note for the passwords the first time, use the information in the information
packages this time. When the wallet is recovered, your funds should be there and you can be
sure that your process works.

Withdrawal program

This can be used when you want to withdraw funds from your cold storage.
[P] If you don't know about coin control and have 100% control of your unspent outputs.
Never use funds in your cold storage for day to day spending and don't transfer funds from
your cold storage directly to someone that knows your real name or address (like a friend or
an exchange). If you connect your real name and/or physical address with addresses in your
cold storage, that could be used to "cluster" addresses together and reveal what addresses you
control. A good rule of thumb is to use Wasabi Wallet, or a similar service, to mix all funds
going into cold storage and all funds going out of cold storage. Note: Some exchanges might
treat bitcoins involved in coin join transactions as suspicious and deny your deposit. You
have to decide yourself between privacy and ease of selling.
If this is the firs time withdrawing from the wallet, we’re going to do two test withdrawals
(and we don't have to think about mixing). The first one with your two hardware wallets. The
second one is with your third backup key and one hardware wallet. That procedure is only
necessary if you lose one private key or its password and the corresponding hardware wallet.
Normally, use the method described in "Withdrawal method 1".
Withdrawal method 1

Open your wallet in Electrum. Connect your 2 hardware wallets. You can connect both at the
same time or one at a time. If you use them one at a time, start with Hardware Wallet A. On
the Send tab, create an ordinary transaction with half of your test amount to an address you
control (like an address in Wasabi Wallet or in another Electrum Wallet). Once the
transaction is constructed click Send:

Sign and confirm the transaction with one Hardware Wallet at the time, start with Hardware
Wallet A. If your hardware wallet has a screen, control the information (like address and
amount) on the screen.
Your transaction should be broadcasted and you’ll probably get a message like this:

Click OK, we can update once we are done with Tails
Withdrawal method 2

This is the backup method and should only be needed in case you lose some of your keys.
But it's a good check to make sure our third key was works. If you are doing this at a later
date, remember that you'll probably need the same version of Electrum running on your
computer as in Tails.
In Electrum, go to send, enter an address to another wallet you control. Select the rest of the
test amount you have left in the wallet, pick a fee and select “preview”:

In the preview window, select the QR-code in the bottom left corner:

That should bring up the QR-code. Take a photo of the QR-code with your phone. You can
close the Transaction dialog.
We are now going back to Tails. So, either go to your second computer or restart your main
computer on Tails. We are going to handle a private key, make sure to follow the same
procedure that you used when generating the keys (that no one can see what you do). In Tails,
launch Electrum like before. If you already have Electrum running create a new wallet by
going to File>New/Restore (we are going to create the exact same wallet as before as a
check that our seed works).
Click next at the first window:

We only need the signature, so keep “standard wallet” selected and click Next:

Select “I already have a seed” and click Next:

Enter your 12-word seed on the next screen (again, this is valuable information):

Leave the password field empty (the wallet file will be deleted once finished):

The wallet should now load. Go to Tools>Load Transaction>From QR code Scan the QR
code on your phone.
This should bring up the same Transaction Window that you had on your main OS. If you get
an error, check that the Electrum version is the same in Tails as on your main computer.
Start by first clicking “Sign”. That should Sign the transaction. Then click the QR-code:

Take a photo of the QR-code with your phone.
You can now close Electrum and Tails (we won’t be using it anymore). Remove the Tails
USB from the computer to delete all information.
Go back to your main computer and open your multi-sig wallet in Electrum. Go to
Tools>Load Transaction>From QR code and scan the last QR-code. You might have to
start Zbar and select a camera for the camera to work (and it might be slow to start, so try 2-3
times).
Note, if you are using another way to scan the QR-codes. Scan the QR-code outside of
Electrum. In Electrum, go to Tools>Load Transaction and paste the text.
That should bring up the transaction window.
Connect one of your hardware wallets and click sign. Follow the instructions on your
Hardware Wallet, control the address and the amount, and sign the transaction.
If you are using Hardware Wallet B to sign, you’ll probably get a message like this:

Select No and wait for Electrum to detect Hardware Wallet B. Once detected, click Sign and
follow the instructions on your Hardware Wallet (this process can be rather slow). Once
signed, wait for Electrum to calculate everything.
Once calculated, click Broadcast:

Your transaction should be broadcasted and you’ll probably get a message like this:

Since we are done with Tails, feel free to update to the latest version whenever you like.

Update information packages
Before moving on, we need to fill in the last information in the information packages.
With your wallet open in Electrum, go to Wallet>Information.
In your secure note add all master public keys, like this:
MPK1: xpub668...
MPK2: xpub78e...
MPK3: xpub87t...

In information package A add the master public key from cosigner 3 This is like backup
for the backup but should still be treated with care. It's easy to miss one character if typing it
by hand. Consider printing it on a printer, if you own one, and attaching it to the note.
Otherwise double check what you print:
MPK3: xpub668...

In information package C add the master public key from cosigner 2:
MPK2: xpub78e...

That’s it! Finish by deleting all the pictures of QR-codes on your phone or camera.

Store your keys
You should now have the following information:
•

Package 1:
o
o

Private key 1
Information package A
master_pub_key_3

containing PIN_A: pin_hw_a and MPK3:

•

Package 2:
o
o

•

•
•

Private key 2
Information package B
pin_hw_b

containing PWA: your_password_A and PIN_B:

Package 3:
o
o

Private key 3
Information package C
master_pub_key_2

o

Hardware Wallet A

(containing private key 1)

o

Hardware Wallet B

(containing private key 2)

containing PWB: your_password_B and MPK2:

4:
5:

•

6:

•
•
•
•
•

o Secure note containing:
PWA: your_password_A
PWB: your_password_B
MPK1: master_pub_key_1
MPK2: master_pub_key_2
MPK3: master_pub_key_3

Since two of your private keys are both on paper and in hardware wallets, this is almost like a
2 of 5 signature scheme. This means that you could lose 3 pieces and still be able to restore
your funds (as long as you have your secure note). So how should you handle this
information? One option is to make the funds unavailable to access from one place only.
Then you'd need to store the packages at five locations. We are going with a more flexible
setup in our base case where you always can access your funds from home.
Base case for storage:
1. Package 1 (private Key 1 and information package A) at someone you trust. This package
is a little bit more important then the other two as it's easier to restore funds with this
package.
2. Package 2 (private Key 2 and information package B) at someone else you trust or in a
different location then your home.
3. Package 3 (private Key 3 and information package C) in a vault or a safe deposit box at a
bank or at a specialized company.
4. Hardware Wallet A and Hardware Wallet B in your home (preferably in a safe). This gives
you the possibility to spend from your cold storage at any time.
5. Digital note, encrypted and stored on a server you can access away from your home or on a
USB stored in another location then your home.
You can of course modify this to fit your situation (only use persons you trust, only use vaults
etc). But you shouldn't store the private keys in the same building or store more then your
two hardware wallets at home.
This is a solid setup. The persons you trust can’t access your funds or even see your balance.
You can control your funds from your home. If one hardware wallet breaks, you only need

one other key to access your funds. If someone steals your hardware wallets, they would still
need both of your PINs and the master public key for the last key to spend anything. The keys
stored in other locations needs to be combined with 2 other keys to spend.
If you are giving your packages to other persons. Try to deliver them yourself, never put
anything in an e-mail. In the worst case, mail the packages one at a time with snail mail and
confirm that they are delivered properly. Tell the persons that are holding the packages what
it is and who they need to contact in case of an emergency where they need to access the
funds.
It’s a good idea to store everything in envelopes and seal with tape (so you'd notice if it’s
been open). Avoid writing “Bitcoin” or something on the envelopes, they should look as
normal as possible. Control your keys from time to time (like once a year). Move your funds
to a new multi-sig wallet if one of the keys are lost or compromised.
Finish up by sealing the USB you used for Tails with tape (so you don't use it for something
else) and if you used an eternally quarantined computer, put a tape on the ethernet-port and
mark it so you or, someone else, don't use it by accident.
Everything is now set to start to HODL with a peace of mind!

Worst case scenarios
So, what are the worst case scenarios? How vulnerable are you to theft or loss and how are
your trusted persons going to access your funds in case of an emergency?
Your funds are most vulnerable to "the $5 wrench attack". That means, if someone breaks
into your house and threatens you until you give them your bitcoins. This is why

Feel free to talk about Bitcoin, but never talk about how much bitcoin you own (that's not
very classy anyways). That's the best defence against this type of attack. Even if you couldn't
access your funds from your home, an attacker could hold you hostage until you pay. You
could use multiple wallets and different PINs on your hardware wallets to reduce the risk of
losing your main stash in an attack.
Another bad case is if your computer is compromised. If an attacker got access to your secure
note or your wallet file in Electrum, they would be able to derive all your addresses. If they
had this access, it's very possible that they could be able to get your name and address as
well. If this attacker attacks you in your home, multiple wallets wouldn't help since the
attacker would know how much you owned. This is truly a worst case scenario and we do
what we can to reduce this risk. If you use Tor and/or your full node you reduce the risk
compared to simply giving remote servers a lot of this information. But it's still a risk we
need to acknowledge.
Important to remember, your funds aren't at risk only because your computer is
compromised. As long as one of the hardware wallets do what they are designed to do (not
leak the private key) and the last private key was generated properly in Tails, your funds are
safe. An attacker would need you to give them access to the funds (physical attack or social
engineering).
If the people you trust with your packages were going to collude against you, they would
need all 3 packages. If the ones holding package 1 and 2 tried to spend, they wouldn't have
password B. If person 1 got access to package 3 she wouldn't have password A and if person
2 had access to package 3 she wouldn't have the public key for key 1 (needed to construct the
multi-sig).
What if someone needed to access your funds in case you are hospitalized or worse?
The worst case would be if your house burned down and you and your hardware wallets with
it. All three keys stored in other places would then be needed to access your funds. The multisig contract could be reconstructed by combining all private keys (+ the seed passwords) or
two private keys and the last master public key (in the right order).
If you are in a coma or die (without your house burning down) and a trusted person needs to
access your funds, access to package 1 is needed. If we assume that the person can get access
to your hardware wallets (drill the safe or whatever is needed). The person can combine its
package with either package 2 and the hardware wallets or package 3 and the hardware
wallets. They can of course combine it with package 2 and 3 and get access as well.
What about loss of keys?
If your house burns down with your hardware wallets in it, but you survive, you can construct
the multi-sig wallet with your secure note and any 2 of the private keys.
If your computer crashes and you lose access to your electrum wallet file and you somehow
lose your secure note, you can reconstruct the wallet with your hardware wallets and package
1 or 3.

[P] Improvements
To be a true Bitcoin first class citizen you need to run your own Bitcoin full node and
validate all transactions yourself. That way you don't rely on trusted third party servers and as
a bonus improves your privacy.
If you run a Bitcoin Core node you can use “Electrum Personal Server” to connect it with
Electrum. This can be a little bit tricky for a non-technical user (especially on Windows and
Mac). I’ve created guides for users on Windows and Mac in the bonus section. You can find
the guides here: Windows, Mac. Linux user can watch a tutorial here:
https://www.youtube.com/watch?v=1JMP4NZCC5g (not my tutorial) or follow the official
documentation. You can read more about the project on https://github.com/chrisbelcher/electrum-personal-server. Once done you can use Electrum as usual, but without
relying on someone else for verifying and broadcasting transactions. You can use it for more
“day-to-day” spending as well. You can connect a hardware wallet to Electrum or use a hotwallet (private key stored on the computer) and verify all transactions yourself.
The second-best option is to use your Bitcoin full node to add watch addresses. You simply
add all addresses you want to keep track off and your node checks for any activity on those
addresses. If you have a full node running, this is very simple. Check the bonus section for
how to add watch addresses in Bitcoin Core. You’d still have to connect to random Electrum
servers to broadcast transactions, but that isn't terrible if you use Tor or a VPN. The crucial
part is to validate every transaction you receive.
Another very important aspect of privacy is what traces you leave on chain. A very common
example is that you buy bitcoin on an exchange that use KYC (know your customer). They
then have all your personal information. If you then transfer your funds directly from the
exchange to your cold storage, they would still know what bitcoin you most likely own.
There are multiple other ways your funds can be linked to you and you never know who has
this information. An easy way to break this link is to mix your coins with a technique called
coinjoin. This has often been done by central parties, I would advice against those services.
You put your trust in them, both with your privacy and with your keys as they could steal
your bitcoin. A better alternative is to use a service that never control our keys. Two
alternatives are Joinmarket and Wasabi Wallet. You can find a guide and best practises for
Wasabi Wallet in the bonus section.
Note: Some exchanges treat coins involved in coin join transactions as suspicious. If you do a
coin join transaction and then tries to transfer the coins to an exchange, they might reject your
deposit. You have to decide yourself about privacy vs ease of selling.



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.7
Linearized                      : No
Page Count                      : 50
Language                        : en-SE
XMP Toolkit                     : 3.1-701
Producer                        : Microsoft® Word 2016
Creator Tool                    : Microsoft® Word 2016
Create Date                     : 2019:03:11 18:04:01+01:00
Modify Date                     : 2019:03:11 18:04:01+01:00
Document ID                     : uuid:52C20EF9-1414-4B80-A997-CEEF71D37AC5
Instance ID                     : uuid:52C20EF9-1414-4B80-A997-CEEF71D37AC5
Creator                         : Microsoft® Word 2016
EXIF Metadata provided by EXIF.tools

Navigation menu