Bitcoin Cold Storage Step-by-Step Tutorial to verify software, securely generate addresses, and safely store BSV keys on a password encrypted LUKS USB Drive.
Preface:
For questions or comments about this tutorial or Bitcoin in general please visit our reddit sub /r/bitcoincashSV
It has been known for a while that storage solutions for Bitcoin-BSV have been more difficult for mainstream users than other coins. Since BSV is the real Bitcoin, it has been feared, hated, censored, propagandized, attacked, delisted, and has become a pariah in the “crypto” industry. The reason is because the true Bitcoin is light, and crypto is darkness, by definition. And there is nothing more terrifying to vampires than light.
The enemies of Satoshi and Bitcoin have landed heavy blows against us real Bitcoiners, we have been delisted from exchanges. We have been censored, harassed, slandered, DDOSed, and persecuted for being loyal to Satoshi’s vision. Hardware wallets have dropped support for BSV, while mocking and attacking us, and playing dirty tricks and supporting thousands of scamcoins and illegal securities instead. Some BSV members still use these hardware wallets with electrumSV as a hack-a-round solution, but it is riddled with bugs and does not work well. Recently people had to downgrade firmware to make it work again. I don’t think it is a wise decision to hold BSV on a device run by a company that wants to sabotage Bitcoin. So my advice is lets de-list them instead.
No weapon forged against us shall prosper. At the end of the day, what does not kill us only makes us stronger. True Bitcoiners need to learn to adapt to the hostile conditions in this space. But I was somewhat horrified recently when I polled some twitter followers to find out that less than 1/3 of BSV investors are using secure storage for their Bitcoins, and over 2/3 of people are primarily storing their coins in exchanges or on phone/desktop wallets. Storing coins in hot wallets and on exchanges leaves them more vulnerable to theft and loss. Its time to take responsibility and get educated on how to store your Bitcoins properly. It will take a small amount of time and effort, but it will be well worth it.
When using cold storage you can achieve a much higher level of security than hardware devices. Also think of the risk to the BSV community and the Bitcoin economic system with so many people using hot wallets and exchanges for their investments. If a popular wallet or service has an exploit and everyone loses their coins it is going to really damage the Bitcoin ecosystem. Old-timers will remember the Mt.Gox hack and what that did to the perception of Bitcoin for years. In fact it was the narrative that “malleability” was the cause of the Mt.Gox hack that directly lead to the implementation of segwit on BTC and the destruction of satoshi’s vision on their system. They said we “needed” segwit to solve malleability. It was Mark Karpeles that shifted blame and said its up to Bitcoin developers to fix malleability, and everyone took the bait. Lets not repeat history. Also do not forget how much BSV is hated. Neck-beards, troll teams, dragon dens, shitcoiners, hackers, and criminals are working over time to attack BSV and they are well funded. Some of us who have been targets of their social attacks know this all too well.
So it is time we get educated and trained in how to be true Bitcoin users and put up our security defenses. Imagine how many investors would choose to invest more in BSV if they had a secure storage solution that they felt confident in. Imagine how many BSVers would sleep better at night if they just took a few hours to educate themselves about how Bitcoin really works and how to secure Bitcoins properly. What you will learn from following this tutorial is far more valuable than your monetary investment. I have always said the real investment is in knowledge and using Bitcoin yourself and understanding how it works and how to take charge by securing your own coins, financial future, and freedom. BTC hoddlers don’t know these things, they hold things on sketchy hardware wallets or exchanges, they trust others. But real Bitcoiners should learn how to trust themselves. What does the whitepaper say throughout, and in section 12? “We have proposed a system for electronic transactions without relying on trust.”. Taking trust out of the equation is part of the essence of being a true Bitcoiner.
Lets Begin:
Now there are many ways to store Bitcoins securely, and no way is necessarily right or wrong. Every method has pros and cons. Remember there is no such thing as 100% security. Encryption and security is probabilistic. Things can be too secure also, like if you make the password too hard and then forget it. When deciding how to secure your Bitcoins, learn to take the details of your own situation into consideration. For example if storing large amounts, you probably should have more precautions and safeguards in place.
One simple way to store coins in cold storage is as Craig Wright has suggested, using an offline phone. This can be a simple, quick, and effective solution. There is also an option with simply.cash for example to set the wallet up on two phones, one to store your keys and the other to broadcast transactions. But that is not the tutorial here. We will rely only on open source, time tested tools, and our own knowledge and common sense. The goal is to have a security solution that you feel confident enough in to hold your savings and investment for the long term, with easy access when wanted.
Tutorial:
Some of the credit for this tutorial goes to Kristov Atlas, a security and Bitcoin privacy researcher, and his video tutorial from 7 years ago which can be watched here. He has done some good work including exposing how blockchain.info’s mixing service was flawed in terms of privacy. The video is a little outdated and not tailored for BSV, and has some difficult parts, so the goal is to improve upon it and make the chore of learning cold storage much easier.
The goal here is to create Bitcoin private key/public address pairs in a cold storage environment and then be able to optionally store the private keys on a LUKS encrypted USB drive that is password protected. Then the private keys are able to later be “sweeped” or imported at your desire into a BSV hot wallet for use. You will be able to send coins to and from your cold storage whenever you want, using a smaller hot wallet for spending. This way you reduce your risk. If coins are ever lost or stolen from your hot wallet, you only lose a small amount of your total holdings. When coins run out you can top off your balance by sweeping some private keys from cold storage.
Items you will need:
The items you will need for this tutorial are a laptop computer and several USB drives. The more USBs the better so you can back up your keys multiple times in case the drive somehow fails, gets corrupted or gets lost. The USBs don’t have to contain very much space, even a 4GB or 8GB drive can be useful for our purposes. Some of the drives will have to be formatted and wiped during the process so they should be empty. The other items that you will need are the digital files that can be found in links throughout the tutorial.
Creating boot-able USB drive:
Edit: I have created an updated tutorial on creating a boot-able live operating system here.
The first step is to create a boot-able operating system on one of the USB drives. We are going to use it along with your laptop to create the cold storage environment needed to create secure Bitcoin keys. The reason we use the boot-able device is because this way the keys will never exist on your hard drive. It defeats the purpose of cold storage if you create them on your hard-drive and then later connect to the internet and surf around. Once you connect to the internet there is no way to guarantee the private keys were not somehow broadcast to attackers/hackers/eavesdroppers. If you already know how to create a boot-able drive you can skip ahead.
To create the bootable operating system on the USB drive, I am recommending to use the open source Linux Ubuntu operating system. The latest version of Ubuntu is Ubuntu Desktop 20.04 LTS and can be downloaded here. You can choose other versions if you prefer, this tutorial works well with Ubuntu version 18.04 as well. What you are downloading is called an “iso image” and it is a .iso file with the image of the Ubuntu operating system used for installation or trying out the OS. We aren’t going to install the OS on your hard-drive, we are simply going to “try ubuntu” and test it out from the USB drive. This way nothing goes on the hard-drive, everything exists in memory and when the system is shut down any traces of the keys are basically wiped. This is one of the most secure ways we can create keys.
So there are several ways to create the boot-able USB drive. Here is a tutorial for MacOS. Here is a tutorial for ubuntu. I will provide an easier way to do it on linux below. Here is a tutorial for Windows using a tool called “rufus”. I have not used this tool before, but I am sure it works fine for Windows users if you prefer to follow that tutorial. Otherwise I suggest the tutorial below for windows users.
For Windows Users:
I suggest windows users create the boot-able Ubuntu USB drive using the Universal USB installer found here. Also you are going to need the Ubuntu .iso file also linked here and above (Click the download tab and then its 20.04 LTS, the green button). It may be helpful to keep all of these files on one of your USB sticks for future use, be aware the .iso files are pretty big files, over 2GB. It may also take some time to download.
Once you download these two files, first plug one of your empty USB drives into your computer. This is the USB we are going tot make into a boot-able Ubuntu drive. A 4GB drive will probably work, but an 8GB drive may be needed in the future as the .iso files are getting bigger. Then go ahead and launch the universal usb installer. Click “I agree”, then you can fill in the form with details. From the first drop down select “Ubuntu” in Step 1. Then click the “browse” button in step 2 in order to locate and select the Ubuntu .iso file you downloaded. It should be titled “ubuntu-20.04.1-desktop-amd64.iso”. Double click to select it. If you use other flavors or older versions of Ubuntu this tutorial should work fine also. In step 3 select the empty USB drive you just plugged in. You may have to click the box to show all drives. Make sure you select the proper drive so you won’t erase the wrong drive by accident. Click the box that says “Will Fat32 Format Drive”, then also click the box that says “Will wipe”. For step 4 leave the persistence at 0 MB, we don’t want that feature since it could be bad for security. You should see the options as labeled in this image. Then you can click “create” and wait for the Ubuntu operating system .iso image to be imprinted onto the USB drive, it should take several minutes, do not unplug the drive or power off your machine. An 8GB drive is probably sufficient for this purpose, but it will probably work with a 4GB drive also, anything bigger is extra.
For Linux users: Now if you were using linux or ubuntu already and want to create boot-able drives you can just use the disk utility option. Click on the bottom left start menu, and then type in “disk” until you see the disk utility icon show up and click it, you will see a screen like this. Now plug in your blank USB drive and it will appear in the disk utility list. Find it in the list and make sure you select the proper drive and then click the button with 3 dots on the top right and then click “restore disk image”. Then it asks you to select the image to restore, you want to select the Ubuntu or other .iso image of your choosing then click “start restoring”. It will take many minutes, once complete, the USB should be ready for booting.
Booting into the USB ubuntu OS:
Once finished we are ready to go on to the next step which is booting the laptop into the USB Ubuntu operating system. This part is probably the trickiest part of the tutorial because everyone’s system is different. The first thing you can do is power off your machine. Then plug the Ubuntu USB drive into the computer. Then press the power button to boot the system and see if the system will automatically boot into ubuntu. There is a good chance it will, but also a good chance it won’t work and you will boot into your main hard-drive or operating system as usual.
So if Ubuntu succeeded in booting you can skip ahead. Otherwise we will try again, so go ahead and power off the computer again and plug in the boot-able USB. But this time when we reboot we will try to enter the BIOS menu on boot. Every computer has a BIOS menu where you can select boot settings. On most computers you press and hold the F12 key while booting, sometimes it is a different F key, or on some Sony laptops it is the “assist” key that allows you to get into the BIOS menu. With a little research you can probably figure it out for whatever model laptop you are using. Once you get into the BIOS menu, you will most likely see a blue screen like this.
Use the tab button/arrows, or mouse and the space bar to navigate to the “boot” tab. Then you want to make sure boot options will enable you to boot into USB. So check to see if “external boot device” is enabled. If it is “disabled”, navigate to it and change it to “enabled”. Also look at the “boot priority”. You want to make sure “external device” is the number one priority, otherwise it will prioritize booting from your hard-drive. So use the tab key and space bar to rearrange the order of the boot priority list so external boot is on top. The other option you may have to switch is “boot mode”, you may have to change this from “UEFI” to “legacy” mode to get the USB to boot on some systems. You can experiment with both UEFI and legacy mode, restart and see if it will boot into the Ubuntu USB drive. Don’t worry about screwing your system up with the BIOS settings, it won’t harm anything. You can always boot back into BIOS and change the settings back when you are finished if you have trouble booting into your regular operating system later. A trick is to snap a photo with your phone so you can remember what settings to put them back to. If you want to boot back into your hard drive just make sure the Ubuntu USB media is removed first.
So once you successfully get Ubuntu to boot, you will encounter a screen like this. You don’t want to install ubuntu on your main hard-drive, so press the “try ubuntu” button instead, this will allow you to try the Ubuntu OS on the USB device without installing it on your hard drive. After pressing the button the operating system will boot and you will see a desktop like this. If you wanted to connect Ubuntu to the internet on the top right you could then start surfing around the internet using firefox browser from the sidebar. But we won’t do that because we want to keep the environment cold and never connect the internet. Make sure your computer is not plugged into any ethernet cables. Also if you have an external switch for wifi or bluetooth make sure to turn it off manually.
We have now for the most part created the cold environment. As an added precaution go to the top right and click the little downward white triangle. You will see it say “wifi-not connected” which is good for our purposes. But for added safety go ahead and select the option to “Turn off” wifi. Then underneath this it shows blue tooth connections and says “on”. Now select the option to turn blue tooth off as well. Now it will show you that airplane mode is on. Once you see that airplane icon in the top right you know you are good and a cold environment has been created. Now it is safe to begin the process of generating your Bitcoin cold storage keys, although first we will set up a few things.
Creating a LUKS encrypted USB drive on linux/Ubuntu:
You have the option in Ubuntu to create a LUKS encrypted device that is protected with a password. LUKS stands for “Linux Unified Key Setup” and is the standard for disk encryption on linux. To do this is pretty simple, first you need an empty dedicated USB drive. We will use Ubuntu to encrypt the entire drive. You will need the password to unlock the drive or write to/access files on the encrypted USB drive. If you are not interested in storing your coins on an encrypted drive you can skip ahead in the tutorial.
The first step is to plug in the empty USB drive into Ubuntu, it will be formatted and wiped in the process. Then open the disk utility feature in Ubuntu, by clicking the start menu on the bottom left of the desktop. Type in “disk” and you should see the “disks” option pop up. Now click it and you will see the disk utility screen. Make sure to select the correct drive that you plan to encrypt with LUKS, otherwise you might erase the wrong drive by accident. If you have trouble figuring out which drive it is, eject and then re-plug the empty USB into your computer and you will see it disappear and reappear from the menu.
The next step is to click the button with the 3 dots on the top right of the Disks window. You are given the option to format disk, create disk image, or restore disk image.. Choose the “format disk” option. You have the option to overwrite the USB with 0s to wipe it, but it will take longer, maybe many minutes or even hours depending on the size of your drive and your system. Otherwise it will still erase the contents during formatting, but the contents may still be easily recoverable forensically. But this option is much quicker to setup. Security wise, it probably makes sense to be more paranoid and wipe the drive. So choose the options in the dropdown. In the other dropdown you can choose “no partitioning (empty)” Then click the “format” button. It will ask you if you are sure you want to format the disk, then click “format” again.
Once finished with the initial format, we are going to set up the LUKS encrypted volume with password. Click on the button with the two small gears for additional partition options. Then click “Format Partition” and you will see this screen. Now you can put in a name for your encrypted volume, here I chose the name “EncryptedBitcoinStorage”. Again you have the choice to erase/wipe the drive with 0s, but be aware this will take longer. Then under “Type”, select “Internal disk for use with Linux systems only (Ext4)”. Also check the box that says “Password protect volume (LUKS)”. The encrypted disk will be compatible with other linux systems, but probably not with windows. So to access the drive later you will need to boot back into linux/Ubuntu. Click “next” and you will see this screen where you will put in the password used to unlock the encrypted volume.
Side note: If you forget the password, the coins may be lost. So it is up to you if you want to choose a very easy password, or you can put a hard password that makes it more secure against theft. A password that uses many random characters including capital letters, small letters, numbers and symbols makes it more secure. Real words make it more guessable but easier to remember. If hackers get the drive they will be able to use software to try and brute force the password, so keep that in mind. You can decide to write the password on paper, which protects against forgetting it, but opens up a new avenue for theft. You can try to remember the password and not write it down, but there is a chance you will forget it later. It might be worth to share the password with someone you trust. Those decisions are something everyone has to make for their own unique situation.
After you put in the password, select “Next”. It will ask you to confirm details, and then you can press the red “Format” button. After many minutes or hours depending on your system and size of the drive (more if you chose the “erase” option during setup), it will encrypt the device with some open source encryption algorithms. Be patient for it to finish. Is it perfect encryption? No, there is no 100% secure encryption, but to learn more about LUKS and some of its strengths and weaknesses this blog is an interesting read.
Now your drive should be encrypted and setup and ready to go. To test it click on the folder icon seen on the left sidebar of ubuntu, find the drive, it should be named by the title you gave the drive, right click to eject or safely remove drive. Then wait a few seconds and plug in the drive again and Ubuntu should automatically ask you for your password, type in your password and click “ok” to open the drive. If all went well it should work successfully and you can now load private files into the USB drive. Another thing you might want to do is right click on the drive and click “properties” and then click the permissions tab so “others” will be able to read and write to the file and access files. Next to “Owner” “Group” and “Others” make sure the drop down says “create and delete” files if possible. Don’t change anything else. Then click the button to “change permissions for enclosed files”, and you will see this screen. Select “Read and write” and “create and delete files” from each of the dropdown menus. Then click the “change” button. This way if you unlock the USB on a different linux system it won’t tell you that you’re not the owner and block you from reading or writing files which can sometimes happen on other linux distributions like TAILS for example.
Generating Bitcoin Keys With Core software:
Now we get towards the part where we are able to confidently generate secure Bitcoin private keys and public addresses in the cold environment. To generate keys there are many different options. There are some hardware wallets like Ellipal wallet for example that work for BSV but only allow you to have one key and one address. This is not ideal. Satoshi in the whitepaper tells us in section 10 titled Privacy: “a new key pair should be used for each transaction to keep them from being linked to a common owner.” Other wallets are called “HD” wallets or hierarchical deterministic wallets because they derive keys from one master key or seed. Wallets that you see with seed phrase backups are HD, for example electrumSV and many phone wallets.
These are probably safe for the most part, but HD wallets do have some unique vulnerabilities by linking all addresses and keys in such a way. If an attacker gets ahold of even one of your private keys along with your master public key which helps wallets derive your addresses, then the hacker could use a math equation to steal all of the rest of your keys in that HD wallet. Something called “hardened” HD keys are supposed to help prevent this, but I rather avoid HD wallets altogether if possible. For that reason I am not recommending HD wallets as the #1 recommended method here, although if you use them and understand the risks it may not be a bad option. One benefit to using an HD set up is you can write your seed words on paper, with our method you can’t do that, although you could print paper wallet QR codes.
Now we have a few good options for when it comes to using non-HD and generating Bitcoin keys. It is important to use time-tested open source generation methods. There have been instances where wallets had a poor implementation and flaw when generating addresses. This resulted in keys that were not secure due to bugs in the entropy/randomness needed for good cryptographic security, so hackers could easily guess the keys or generate them themselves, or users would accidentally generate the same addresses.
For this reason the first program I would recommend for generating keys is the Bitcoin Core software. The SV client team has moved away from supporting the QT wallet for regular users and they are more focused on providing software for miners and enterprise businesses. So using Core to generate keys is probably the best option for regular people. The Core client is the oldest software with the most eyes on it. If there were bugs in key generation they probably would have been found by now. To use Core, it is best to go back in time to before Bitcoin Core implemented segwit as well as HD wallets. Bitcoin Core Version 0.13.0 introduced mandatory HD wallets, and version 0.16.0 introduced “full support” for segwit. Now in the newest Core versions, segwit is default and you can’t even create a legacy address without altering the bitcoin.conf config file using the “addresstype=legacy” argument, or by using the debug console and command “getnewaddress legacy”. If you send your BSV real Bitcoins to segwit addresses they could be lost, so always make sure your addresses begin with a “1” and you will know you are for sure not using segwit.
You can find some of the old and new core versions here. To avoid HD wallets and segwit altogether, I recommend going back in time and using version 0.12.0 of the Core software which can be downloaded here. Download and save the “bitcoin-0.12.0-linux64.tar.gz” file to one of your USB drives for future use. This version of the software was before HD wallets were introduced in Core and before segwit was default in Core software. Don’t think of it as using Core software, think of it as going back to dig up and salvage a piece of software designed by Satoshi and those helping him before Core destroyed Satoshi’s Vision on their client.
Verifying/Installing/Running Core:
If you want some extra reading you can check out the /r/bitcoin tutorial for verifying Core here. This won’t exactly work for us, since we are verifying the old Core software version 0.12.0, not the new Core version.
So we just downloaded Core software 0.12.0, but how do you know the file is the real file and not a fake one interjected by a hacker in some type of man in the middle attack? This is very unlikely, but the only way to know for sure is to verify the hash of the software. To do this you are going to boot back into Ubuntu with the Core .tar.gz file ready to be grabbed from one of your empty USBs. Once booted into Ubuntu, follow the procedure from above to turn off the internet/bluetooth and put ubuntu into airplane mode. Then plug in the USB with the Core software file, and copy paste the.tar.gz file to the Downloads folder directory. You can navigate there by clicking the folder on the left side bar. The file is already zipped so leave it that way until we extract it with a special command.
The next step is to open the terminal command line interface for Ubuntu. To do this click the start menu on the bottom left and search for “terminal”. Then click the terminal icon to launch the terminal. The terminal should then popup like this. Since we pasted the .tar.gz file into the Download directory earlier, type in the command “cd Downloads” into the command interface and press enter to switch to the “Downloads” directory like this.
In the next step we are going to start to verify that the software we are using to generate keys is legit. If you don’t want to do this step now, you can skip ahead to the “launch Core” section and just run Bitcoin Core now.
Otherwise we will begin to verify the software by first doing the following command in the terminal while still in the Downloads directory:
sha256sum bitcoin-0.12.0-linux64.tar.gz
Then press enter, and you should see this output. What Ubuntu has done is take the data in the Core file and hashed it using sha256 and it has returned the sum: ad97b28524d4f64f06549fb7d0ca45cfaa0f35090cf230cd80f3ad8cb8eaf9bd
Every valid Core software for linux64bit should have the same hash sum result. What I mean is the linux 32bit version has a certain hash, the linux64bit version has a different hash, the windows version has a certain hash. But no matter where you download each specific version, when you hash it you will always get the same number output. If the file was altered in any way it would not hash to the same number. The way we can tell the software is legit is by comparing this hash to known signatures from the Core developers, in this case Wladimir Van der Laan, BlockStream’s patsy and the Core gatekeeper of the github repo. Here is a copy of the signature for the hashes for the Core 0.12.0 software for a variety of systems. The signature can be downloaded from bitcoincore.org here. Just click and download the “SHA256SUMS.asc” file, which contains the following signature:
— — -BEGIN PGP SIGNED MESSAGE — — -
Hash: SHA256
42cee702ece98d5bd488c6f231a07dfa0299f3e4010d6f76f021a8a432a48ed7 bitcoin-0.12.0-linux32.tar.gz
ad97b28524d4f64f06549fb7d0ca45cfaa0f35090cf230cd80f3ad8cb8eaf9bd bitcoin-0.12.0-linux64.tar.gz
27bc1876de6fbfc635bf0908d8fb038fe61be7188b067786b7d41f4802a20f6c bitcoin-0.12.0-osx64.tar.gz
0c7e0791934800c7f8e218e29b4fe53a9356a23996dd5dcdf4c64f8e61e45015 bitcoin-0.12.0-osx.dmg
0f1cda66c841a548a07cc37e80b0727354b1236d9f374c7d44362acdb85eb3e1 bitcoin-0.12.0.tar.gz
939a7bde3f2583e2357e417d12af3193cda7cc2bb094c8f6278959a117726ccd bitcoin-0.12.0-win32-setup.exe
ff74a60ae29c94fdbb11189a81191ca3b28534589e7febff3a9d45a2f9d5bed1 bitcoin-0.12.0-win32.zip
fab68debc8c615ef23c4d9abec02882bf1f901faea5db4bca054d4f6323b3cc4 bitcoin-0.12.0-win64-setup.exe
f0fb4b74adbeeb1f6da570cede9949b53092e0df00e4628c47661ef9edd1aced bitcoin-0.12.0-win64.zip
— — -BEGIN PGP SIGNATURE — — -
Version: GnuPG v1.4.11 (GNU/Linux)
iQIcBAEBCAAGBQJWzDasAAoJEJDIAZ42wulkjX4P/0RSVxLoUEPCjXMbBVNJhyME
oLczF3kjrYxyJKpiImeTDFEVt0QzLi30gzbUBjfcS4sk5KY/GEa8fmZgz9wPsRnw
SZGZqgZ0+ZB3aIQd4WLRzAPizxCADgCcIef8qXItl0XxqkFIR4iesIrxque3j0qm
/VDi67JLdZdKHbxBCuE2I7f2fIpCOVn3WnU2OjAWSUeQGxWYCb8yalO3K4H3LP/0
Y/aRH6J8/eYk1UeENBOcC/vqga6pe0KgJlCZjRJXq6ASsukXLTX/43mz0hSGvq/N
C3y9AqJkcwGI3VmOpVMq1J+supHn1YsDMba79AIlNqvpuDSyeKr3gq8m0efZklOu
dCAUenTu0tqzFDZbEbLRh/P0woijnGJ5Ajh5MAJ343C3rtS72MJTwoD3sI9JpVO/
xX4l/JDYs1lujfSz4RLzH+s13zaKsPYbVkhlPZnCmyyxTPhcw+c9xPs9xTH7Dwfi
NlTBm0hWbXXedHdkvR2LVLzeFytrAWBbsaAMb94KfmiwwGoJ3o1Sjt/AzIAPe4C+
CZH+nfUEnREIpYRFCkhiQyk6zsOsi6Il9UyHtb+XOsP7yna0r09ZpEV0XPGzMlo/
EjevjsXZTFexjzeFTEqkQ5KdrVos94Z50uZ8Lm+yhX6VIcxSrNofmMLvOePeq6DU
fH3xoer3Ia9BcvVkC915
=CKUR
— — -END PGP SIGNATURE — — -
If reading/copying PGP signatures/keys on medium, you will need to adjust all of the dashes for example where it says “ — — -END PGP SIGNATURE — — -” There should be 5 dashes on each side for gpg software to read it properly, but for some reason on medium the dashes get translated into longer lines.
The signature can also be downloaded from bitcoin.org here. I have also loaded the signature to the Bitcoin (SV) ledger here, where it can be downloaded, and is immutably time-stamped so that it cannot be altered. It is good to verify the signature and hash from multiple sources. As you can see, the hash we saw in our command interface matches the one in the signature for bitcoin-0.12.0-linux64.tar.gz, you will see the hash “ad97b28524d4f64f06549fb7d0ca45cfaa0f35090cf230cd80f3ad8cb8eaf9bd” included in the signature. Now that is pretty good proof already that the file is legit, but to be 100% sure we would then verify the authenticity of the signature using Wladimir Van der Laan’s public key seen on reddit here. Also you can download his same public signing keys from bitcoin.org, direct link here. You can also find Wladmir’s same public signing key on GitHub. I have also etched some websites forever onto the Bitcoin blockchain where they are immutably time-stamped. Here the reddit page with Wlad’s key is etched onto BSV. Here is Wlad’s key on github etched onto the Bitcoin ledger. It is good to verify it from multiple sources to know it is legit. I will paste it here below for redundancy (it is a ridiculously long key):
— — -BEGIN PGP PUBLIC KEY BLOCK — — — mQINBFWKlBcBEACgZJd/6LrSgNSVxiyq5N9h0E7zgSHG/ahuWAnWeFtxaxHeukH+ Q2Zq6F8FLbq40PphyroRylMBpzPBcyxjee7mDj1DpJ9ayv6GGPTyQzOImhChEV8p bA42dvXnB5ju0rPh2GxctbiZZD1kiPH4jlmDIgomvupAj9OFntA5jfkuSFBekZrw QyZowz/paMBIe24YH2LyaZjC2DqLy8Znh78OfAZxZsWSdZxK5LsbkCE9l8Li3gQa rxm4aEMBHhvns+s8Ufa47sdJAYAfVnAWb5Dfe4oVFh70PvB8GSGFS9qeib0eEQBD 71c9MN+REDTSOYO2VnUSFbu7IrKsPsClqwfT9KzI/uz5fpHSKdCp5AO7oDZiU36s LsSOBbukTmFQfVrAniFEZxHLCBufXCsAwp07xtUH9ytbW0Y/eHYlZojoWJJPT//1 cQ/A2Ix/nxbSkSPq8wpCUhBxvTQoU9BXeQIbSy0yUmj5nS+3DR7IK2Q7ACyVClr7 LVQOGxgZhHr9Kq87RDqc1wlvbCxb+KTJQhJySpOVoiaME6jLBzgE7G+5N6IXTK5u OriOsQwcLdeBu7TPgft79uBYnmYeaNVdovlBB//7H7UvY0kAxAg4NPgK6eYRdzn+ 8ZtbntNXi/23RJvzeZJVBqQ7bYt4fjmHmRYrbM4jWKJEoJOE6wzpmELUowARAQAB tFVXbGFkaW1pciBKLiB2YW4gZGVyIExhYW4gKEJpdGNvaW4gQ29yZSBiaW5hcnkg cmVsZWFzZSBzaWduaW5nIGtleSkgPGxhYW53akBnbWFpbC5jb20+iQI+BBMBAgAo BQJVipQXAhsDBQkDFwQABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCQyAGe NsLpZOBRD/wLfujEC4ZYMFwPXnhvOGEWAPeuOg06iXhEqJ1biOvxhFfwwjPoXGMQ i/pdfGck5xZVFcxObpdHBp0p9ardos1aRXAS8JTnTQXTX0qs0QNxnLTBz+5DrIc4 l7r5DAlr/FapUKNSbjobOrbv+F371b7XhLJ7oob5XXo+IS7kEY+Si5BXb0uVy8ms SaKDooO2RfByrFI3LTHW3VESuuNnXgH6309yeGORgBazKtnxZPPlD2raTNXe9q7U dF2Xv6Rr53iCGGN5xncL5A6nF3fou0tGvqLFBkrs4BqeNNwC6/jQLfpOfqiQ+XGR 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 =3c2D — — -END PGP PUBLIC KEY BLOCK — — -
This is the updated key, you can verify with some of his old keys as well. So now we have Wladimir’s signing key and the signed message that includes our matched hash “ad97b28524d4f64f06549fb7d0ca45cfaa0f35090cf230cd80f3ad8cb8eaf9bd”. We can use PGP/GPG software to verify the signature is good. To do this I would recommend using gpg4usb. Another option you can try is pgp4win, or other PGP software of your choice.
Simply download the gpg4usb file, then locate the file on your computer, most likely in your download folder. Then right click the file and choose to extract the contents. The software is also designed to be used on USB with a variety of different systems if you prefer. After extracting contents you will see these files. If on windows click the key icon to “start windows”. Click “run” and then you will see this launch screen. Now simply import Wladimir’s key by first copying Wlad’s public key block to the clipboard and then clicking the “Import Key” button and selecting “clipboard” from the dropdown. This should import Wlad’s key as seen here. Now copy the signed message we intend to verify, and paste it into the text document within the gpg4usb software like seen here. Then simply click the button that says “verify” at the top with the green check and it will tell you if the signed message is legit or not. Here it verifies the signature and says “Text was completely signed by: Wladimir J. van der Laan”. So at this point we have completely verified the signature and the hash of our Core software and we can trust that it is legit.
Running/Launching Core:
Now that we have verified the software we can launch Core by going back to the terminal command line interface. You should still be in the “Downloads” directory. If not then go there by typing “cd Downloads” and press enter. The next command is to type/paste the following:
tar xzf bitcoin-0.12.0-linux64.tar.gz
Then press enter. The above command will extract the files from the .tar.gz file. Make sure to do this from the command line as it uses the “xzf” argument which is important.
Next type the following command also in the downloads directory:
sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-0.12.0/bin/*
The above command installs the Bitcoin Core software, getting it ready for use.
Now while still in the download directory, to run/launch Bitcoin Core simply type the command:
/usr/local/bin/bitcoin-qt
And press enter, and you should see Bitcoin Core QT client pop up like seen here. We won’t be worrying about downloading any blockchain so just press “ok” to continue and Core will launch as seen here. If you see a message about an expired alert key just ignore it. Now that Core is fully installed, any time you want to run Core again just open the terminal and type “cd Downloads” to change to the Downloads directory, and then type: /usr/local/bin/bitcoin-qt and press enter and Core should launch.
Generating Keys in Bitcoin Core:
Now that we have successfully launched Bitcoin Core 0.12.0 we can begin the process of generating keys. There are a few ways to do this in Core software. One way is to go to the receive tab and start pressing the button to request payment. The other way is to go click “file” on the top left and then go to “receiving addresses” and press the “new” button repeatedly. You can also export the addresses from there. Be aware sometimes the addresses on the receive tab can differ from the list under “receiving addresses”.
Now to get access to the raw private keys for these addresses we need to use the Bitcoin core debug console and use some easy commands. You can also create private keys and addresses using the Core debug console. It is up to you how many addresses/private key pairs you want to create. To open the console click the “help” tab at the top of the wallet and then click “debug window”, then click the “console” tab. To get familiar with some of the commands you can type “help” into the console then press enter and it will tell you all of the commands used in the console.
Now if you want to generate a single address in the console use the command:
getnewaddress
Then press enter. This will spit out a brand new Bitcoin address. You can repeat this as many times as you want to create more addresses. If you want the private key associated with that address then use the command:
dumpprivkey [address]
When you paste the address delete the brackets ([ ]). This will spit out the private key in WIFC format. It will show you the compressed private key which always begins with either a “K” or an “L”. These can always be converted if ever needed into the uncompressed format that always begins with a “5”.
Now if you want to create many more addresses instead of one at a time use command:
keypoolrefill (n)
Where n is the number of keys you want to generate. So if you want say 50,000 addresses, use command:
keypoolrefill 50000
Then press enter and after a few seconds or minutes the wallet will have 50,000 generate addresses. If you want to export these addresses and private keys into a text document then do command:
dumpwallet “filename”
Name the file whatever you want so for example I could do:
dumpwallet 50kaddresses
Then press enter and it will dump all 50,000 addresses and associated private keys to a txt document in your download folder. Put this in your LUKS encrypted drive and consider making several backups on other LUKS drives.
I would suggest to consider putting your coins in many addresses because it helps for privacy and security. Even Dr. Wright has said something like you should never put too many coins in one address. It also becomes a target for brute force theft over time. Not to mention in the future there may be AML/KYC requirements for larger addresses or penalties for structuring. So keep those things in mind when deciding how many addresses to use.
For redundancy you should also backup the “wallet.dat” file from the Core graphical interface. To do that click “file” on the top left of the wallet then click “backup wallet”. It will ask you to rename the file and save it. Anytime you create new addresses you have to then backup your wallet again or the data won’t be saved properly. Later if you want to restore your wallet you will replace this file in the .bitcoin folder and rename it to “wallet.dat” to restore your wallet. Save this backup file to your LUKS encrypted devices also.
If you want to restore Bitcoin Core and your wallet.dat on a future Ubuntu session then boot ubuntu into airplane mode and install Core. Then launch Core as shown above, then close it out and shutdown Core. This will create the .bitcoin folder so we can then alter it. So then go to the “home” folder and click the button with the 3 bars on the top right and click to “show hidden files”, then you should see the .bitcoin folder appear. Double click the .bitcoin folder and you will see a wallet.dat file. You want to delete that wallet.dat and replace it with the backup we made earlier. Then you want to rename your backup to “wallet.dat” inside the .bitcoin folder. Then we are ready to relaunch Core again, so type in the command in the terminal that we learned above to launch Core and your Core wallet should launch and be fully restored with all of your addresses and private keys.
At this point the process is mostly done. Another Core console command you might find useful is to list all of your addresses by doing command:
listreceivedbyaddress 0 true
But this will only list addresses that you added to the GUI interface or addresses created using ‘getnewaddress”. So if you did “keypoolrefill” and “dumpwallet” instead as mentioned above, you might want to separate all of the public addresses and private key pairs into two separate files. This way you can put the public addresses onto a hot computer or USB drive and monitor your addresses and send coins to them if needed, while still keeping the private keys safe. If you want to do this and have generated a lot of addresses I suggest using the “LibreOffice Calc” open source software that comes already installed in ubuntu. You can download this free for windows too here. If you go to the start menu on the bottom left of ubuntu and search for the software you will see the green version is similar to Microsoft Excel and comes already installed. The Blue version is similar to Microsoft Word. You can paste the addresses/private keys into the LibreOffice Calc document into columns, then they are easier to manipulate, select, separate and copy/paste. Just make sure you also keep an original copy that has the addresses and private keys linked together. This way when you sweep keys later you can choose which addresses to sweep. Remember, don’t accidentally plug the device with your private keys on it into a hot computer. You could use one of these LibreOffice documents as a ledger to keep track of your coins as well.
Once you have your keys and addresses backed up in their appropriate places you want to safely remove the encrypted LUKS drives and power off Ubuntu. This way there will be no traces of your keys left anywhere. Always navigate to your LUKS drives and “eject” or “safely remove” the drives when taking them out to reduce the risk of the drive becoming corrupted. Then wait until ubuntu tells you it is safe to remove it. I have heard data exists in memory on your laptop for a very short time. One thing paranoid people might do is restart into Ubuntu and shut down a few times before going back online to increase the chances that the data is removed from the memory of the system. Some people might also recommend destroying the boot-able USB drive that you used to create the keys, or keeping the laptop offline forever, but that may just be for the ultra paranoid.
Redeeming coins:
Ok so now we have successfully created cold storage wallets, so imagine it is time to spend some of the coins you saved in cold storage, so what do you do? Just follow the procedure we did before, booting into ubuntu, put it in airplane mode. Once in airplane mode, plug in your encrypted LUKS drive that holds your private keys and type in your password. Open the file you saved with the addresses and private keys on them. Hopefully you kept track of which addresses hold what coins, you can look on a block explorer for this too. Now you can grab the private keys in order to import or sweep them into a new wallet. An easy way to do this is with simply.cash wallet. Just use the sweep option and type in the private key, or you can just press the camera button to scan a QR code of the private key. I would advise you to be very careful of cameras being around when you open your private keys on Ubuntu. If a computer, a security camera, even a phone camera catches a glimpse of your private keys, maybe it could be stolen by hackers. So keep that in mind.
A good tool to use to convert your private keys to QR codes is Ampere QR code creator. You can download this file for linux. To get it to run on Ubuntu just paste the file into your download folder and then right click the file and click “properties”. Then click the “permissions” tab and then next to “Execute” click the box that says “allow executing as program”. After this you should be able to double click the file and launch it. For some reason I was not able to get it to work on Ubuntu 20.04, but it did work on Ubuntu 18.04. I was able to get Ampere to work through the Ubuntu software center for Ubuntu 20.04, but that requires internet connection. Another option is to use bitaddress to display QR codes instead, see below for tutorial on bitaddress.
Also another option to redeem private keys is to use the “import private key” function in electrumSV to import private keys from your cold storage. You are also able to paste multiple keys at a time to import them. Now to clarify, “sweeping” as is done with simply.cash means the wallet is scanning the private key for coins and then it will “sweep” the entire contents of that address into a fresh new address within the wallet. So sweeping is sending a transaction of all contents of the private key. Its better to send the entire contents of a key from storage so nothing will accidentally get lost in change addresses, so that is what sweeping does. “Importing” private keys into a wallet like electrumSV or Guarda wallet, works differently. You can import the keys and then see your coins and have ability to send them. But importing alone won’t require any transactions to be broadcast to the blockchain.
Bitaddress.org:
So another option to create QR codes (as well as private keys) is to use bitaddress.org. Bitaddress is an open source tool that has been around for years that creates non-HD Bitcoin keys and has other features as well to help people print paper wallets. But we want to be able to run the bitaddress website while offline in a cold environment, not connected to the internet. So Download the html version of the site from github here. Press the green button and download the .zip file and save it to one of your empty USB drives. Now when you boot into Ubuntu airplane mode you can run the html of bitaddress without needing to be connected to the internet. Once in ubuntu simply plug in the USB drive with your bitaddress file and copy and paste the file into the downloads folder. Then right click on the file within your downloads folder and click “extract here”. You will see an extracted folder appear that says “bitaddress.org-master”. Double click to open the folder and you will see some files including one that says “bitaddress.org.html”. Double click it and you will see the bitaddress website load onto your browser. It is now able to load the full site without needing internet connection. Using the html file allows us to use the website and create keys while completely offline. If you want to generate a QR code for your own private keys then click the “wallet details” button, enter the private key in the space, and the QR code will appear below.
You can also choose to generate your keys with bitaddress instead of Bitcoin Core like we learned above if you desire. But most people say Core is the safer option. You can choose the bulk wallet option in bitaddress to create a large amount of Bitcoin addresses and private keys. You also have the option to experiment with BIP 38 encryption of addresses. You can also use bitaddress to print paper wallets that have the private key on them ready to scan.
Conclusion:
So we have covered a good deal of territory when it comes to generating and securing your Bitcoin keys. You don’t have to follow this tutorial exactly. The goal is to give you options so you can decide what is best for your situation. You may not want to encrypt you keys with LUKS for example, and that may be preferable for many people. Also my advice is to test this system with small amounts first. Send some bits or satoshis to some cold storage addresses and practice importing or sweeping the coins into different wallets until you feel confident you can do it with large amounts.
Now there is a trend common in the BSV community to emphasize ease of use for mainstream users. Handcash for example, or paymail and things like that make it more easy for mainstream people to use Bitcoin without learning things. I don’t necessarily disagree with this, but I also want to push the narrative a little bit back and say that it is good to learn things and do things yourself. I understand having low expectations for mainstream people, of course they are going to want something easy. But I am not going to throw away the high expectations either. How many people spend years at school/university on pointless degrees and barely learn anything. Why not put some effort into learning how to secure your financial sovereignty. It is not that hard, it is all laid out here, and all you have to do is take time to follow the tutorial step by step. Anybody could do this, even a child could learn this.
Here are some useful tools, small files, and websites I have loaded to the Bitcoin chain (SV). Some of these are mentioned above, and some are not. For example the iancoleman tool can be used to generate HD wallets. The coinbin BSV alternative can be used to craft raw transactions and do other things. Core/Wladimir’s public PGP signing keys and signed hashes are also etched and immutably time-stamped onto the unbounded Bitcoin ledger below:
Universal-USB-Installer-2.0.0.0:
https://bico.media/254702c64b189f55ebae3140acbe64fcd608355f8046f75f29ac683a528165e0
Bitaddress.org files:
https://bico.media/12a4c308ea2d26afcd4104fb31b07586c38bbef8b02d78733387a8568dc9f106
Bitcoin Core signed hashes (signed with Wladimir’s key) (SHA256SUMS.asc):
https://bico.media/4191e639014921d346f5cc1c7c0c09eec6c428a446797fd688dda54827c42327
Iancoleman:
https://bico.media/6248a52976ac8350258c1e6a7c46335e0c7a4612ac19d301567ef3bcf8535842
Coinbin(BSV):
https://bico.media/6a1bd8dab68d475e440904824bec55743d6d77e826235b5ebf2459b4453382d5
Core signing keys ( Wladimir J. van der Laan) github:
Core signing keys (Wladimir J. van der Laan) Reddit:
Bitcoin Whitepaper:
If anybody wants to load the Bitcoin Core 0.12.0 linux64 version to the BSV blockchain let me know and I will paste it here. I looked into it but it is 36MB and pretty expensive to load, I think like around 0.35 BSV (about $77) to load it with bico.media if I am not mistaken.
Feedback:
If people have any comments, questions, concerns, or corrections they want to convey please do not be afraid to do so in the comments below and on our subreddit. This tutorial took a good deal of time and energy to put together, so if you found it valuable consider tipping or donating, it will be used for good in this world, and could incentivize and fund future articles and projects:
Paymail:
tipjar@moneybutton.com
cryptorebel@moneybutton.com
BSV/BTC/BCH: 18e6ziYAtBNqzPtebqpYMgHwiqMBYA9nFQ