Published using Google Docs
Bitcoin Cold Storage Wallets for the Windows Layman
Updated automatically every 5 minutes

A complete step-by-step guide on how to transfer your Bitcoins to Cold Storage, with screenshots and security best practice commentary

This guide is designed around the Windows user, who may have little to no experience using Linux, the Ubuntu OS, or the native Bitcoin client software.  Additionally this guide has been designed around best practices with regards to security and will assume that your existing computer is an unsafe environment for cold storage wallet creation.  Lastly, this guide is also here to educate the user on one of the key features of Bitcoin, which is you can “be your own bank”, as there is little need to store or retain funds with a third party when using this technology.

Cold Storage

noun

1. A reference to the practice of keeping a reserve of Bitcoins offline in a physical state.

What you will need:

Key Concepts in using this guide:

  1. Items created by the Bitcoin software
  1. Bitcoin Wallet File (wallet.dat)
  2. Bitcoin Address  (Example: 1Aauv5Usequhk565oYgWNnBP9TaaWxCXwB)
  1. Items created by the user
  1. Super secret passphrase (20 characters, case sensitive)
  2. Wallet common name (easy name to remember for cross referencing)

Process Overview: (helpful checklist)

1. Obtain software

2. Confirm Software Hashes

3. Setup USB Drive / Flash Media

4. Create a secure PC environment

5. Load Bitcoin

6. Generate Wallet & Save Bitcoin Address

7. Encrypt Wallet

8. Backup Encrypted Wallet

9. Reset Computer and Securely Store Media 1 & 2

10. Purchase Unsecure Bitcoins - “Hot Wallet”

11. Fund the Cold Storage Wallet

12. Remove Funds From Cold Storage Back to Live Hot Wallet

13. Become Aware of Obsolescence

14. Donate / Comments / About Me

Note:  If you want to just try this out and skip all the security recommendations, then you can skip steps 2 - 4, and run bitcoin off your normal OS.  Just remember to only invest what you are willing to lose.

1. Obtain software

Download the Linux Bitcoin software called Bitcoin-qt and the related Release Signatures Hashes

Download the open source OS Ubuntu

2. Confirm Software Hashes

Assume that your computer, computer network and the third party download site all cannot be trusted.  At this juncture let’s assume that both Bitcoin.org and Ubuntu are publishing open-source software that work as they claim.  

Open the Bitcoin Hash file “SHA256SUMS.asc” with a text editor like Notepad.  Find the SHA-256 hash related to the Bitcoin-Qt file.  If this code matches the result from the Hash tool, this will confirm that you have safely downloaded an exact copy of the published software.

Bitcoin Hash.jpg

Run a hash on the downloaded file by using either the third party website below or another tool.  (Do not alter the name of the file as it will change the hash value)

Confirm that these tools provide you with the EXACT SAME hash as that published by the software vendor.  Do not move forward to the next step until you can confirm that you have valid software.  Hash’s that don’t match would indicate a “man in the middle” attack, a phishing site for the download, or some existing corruption to the security of your PC.

3. Setup USB Drive / Flash Media

  1. Format the Flash Media:  Perform a full “Fat 32” Format on the USB/Flash media first  

  1. Unpackage the file you downloaded in step 1 - “bitcoin-0.8.6-linux.tar.gz” 
  1. Place the “bitcoin-qt” file on the USB/Flash Media

4. Create a secure PC environment

     

5. Load Bitcoin

6. Generate Wallet & Save Bitcoin Address

  1. By now you have Bitcoin successfully running on a secure version of Ubuntu.  It will look like this:

  1. Click on the “Receive” tab to obtain the Bitcoin Address for this wallet you just created
  1. Click on the address
  2. Click on “Copy Address” button
  1. Use the file explorer and browse back to portable Media-2, right click and create a new file
  2. Name the new file the Bitcoin Address ID, by pasting the name and saving the file
  3. This file contains nothing, you are just using the name property of the empty file to store the name of the Wallet Address on Media-2.  You may also want to write this down or make use of an old fashioned typewriter.  Alternatively you could create a text file, place the address in the file, and then save the file to Media-2.

7. Encrypt Wallet

 (This step is performed so that we can move the wallet file off the secure computer later)

8. Backup Encrypted Wallet

  1. Locate the hidden wallet file in the Ubuntu file system
  1. Copy wallet.dat to the USB/Flash Media-2
  1. Backup the encrypted wallet.dat file in several places:  (If you only have 1 PC, then do this after step 9)
  1. Store the super secret pass phrase in a secure physical location immune from fire, flood and theft.

Note:  A copy of the “wallet.dat” file will be required later to unlock your funds from cold storage, as it contains your private key. The file can be stored publicly without fear of theft because we’ve encrypted the file.  Additionally this file is safe as as long as you keep your super secret pass phrase away from this file and only in physical form.  In summary, you will need your super secret pass phrase to decrypt your wallet, to then obtain your private key to decrypt and move your funds to another wallet.

9. Reset Computer and Securely Store Media 1 & 2

10. Purchase Unsecure Bitcoins - “Hot Wallet”  

11. Fund the Cold Storage Wallet  

Do NOT fund your cold storage wallet with more funds than you are comfortable losing. Until you are proficient in this process, losing your pass phrase will result in any coins sent to this wallet being lost forever.  Start out slow, learn the process.

Use these rules as a guide to ensure you are ready

- Backed up your encrypted wallet file in multiple locations

- Are confident in your secret passphrase storage and retrieval

- Restored a prior Cold Storage Wallet with success

- Completed the full sequence at least twice with limits you were willing to lose (ie $1.00 USD)

- Feel you fully understand the full sequence of steps and are ready to move on to larger limits

Congratulations!  You have successfully moved your Bitcoins to a secure storage location that only you control!  You are now “your own bank”.

12. Remove funds from Cold Storage back to live hot wallet

   

13. Being aware of Obsolescence

14. About Me

I documented this out of my own frustration in learning this process.  I’m a fairly proficient user being from Generation X, and I had a fair bit of trouble getting through the current documentation out there.

References:

This document was built from my use of multiple references.  Here are the source documents I used to build this, along with my own prior knowledge:

Additional Resources / Comments

Why any third party is not safe for the majority of your Bitcoin Storage (my opinion)

 - When you leave funds with an exchange, you are trusting the exchange to be a keeper of your Bitcoin.  They do this by creating their own hot and cold wallets.  Your portion of ownership in their wallets is documented in a ledger they own and control.  

- The security of your funds in an exchange is solely based on that company's security policy, their ability to implement that policy, their employees conduct, and hiring practices.  Any flaw in this structure puts your funds at risk.

 - There is little to no government regulation in force to govern who can operate a Bitcoin exchange

 - Bitcoin has already been designed around you being your own bank.   You only need to trust yourself.

Why your computer or phone is not safe for the majority of your Bitcoin Storage (my opinion)

-The latest Maleware and viruses being created exist to try and steal your bitcoin.  

- It is too difficult to ensure any hardware is safe with these constant threats being developed.

- It is programmatically simple to write a program to collect a list of all the files on your computer and analyze them for wallets.  This simple command from the command prompt in windows will give anyone with access to your pc, your possible wallet file locations in seconds.

C:\>dir /b /s *.dat  > PossibleWalletLocations.txt

Portfolio Management Tools:

An Excel Spreadsheet I created to assist in looking up wallet balances and keeping track of exposure to exchanges.  

The only macro in this file, is used to check wallet balances:

Sub CheckWalletBalances()

        'Set Variables

        Dim MyRequest As Object

        Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1")

        Sheets("Wallet Ledger").Activate

        X = 9

        Z = 0

       

        'Loop Through all Wallets in sheet

        Do Until Sheets("Wallet Ledger").Cells(X, 2) = ""

            'Build URL request for Wallet Data

            MyRequest.Open "GET", "https://blockchain.info/q/addressbalance/" & Sheets("Wallet Ledger").Cells(X, 2) & "?confirmations=" & Sheets("Wallet Ledger").Cells(7, 3)

TryAgainOnFailure:

            DoEvents

            On Error Resume Next

            'Get data from Blockchain.info

            MyRequest.Send

            'Check for Errors

            If Err.Number <> 0 Then

                If Z > 5 Then

                    Stop 'Unknown failure occured, Press F5 to continue and skip this address

                    'Error could be Blockchain server, Bitcoin Address, local PC or network causing this failure

                    GoTo ResumeFromFailure

                End If

                Z = Z + 1

                GoTo TryAgainOnFailure

            End If

            On Error GoTo 0

            'Record the current time

            T = Now()

            'Extract Result From Blockchain HTTP Query and put in spreadsheet

            Sheets("Wallet Ledger").Cells(X, 3) = MyRequest.ResponseText

            'Place the time in the spreadsheet

            Sheets("Wallet Ledger").Cells(X, 4) = T

           

            'Create 10 second delay to Rate limit the requests to Blockchain.info, per their Terms of Service

            Do Until Now() > T + 0.00011

                DoEvents

                ActiveSheet.Shapes("Button 1").Select 'Update the button so the user knows its processing

                Selection.Characters.Text = "Waiting..."

            Loop

ResumeFromFailure:

            ActiveSheet.Shapes("Button 1").Select

            Selection.Characters.Text = "Running....." 'Update button again

            X = X + 1

            Z = 0

        Loop

        ActiveSheet.Shapes("Button 1").Select

        Selection.Characters.Text = "Click to Update Wallet Balances" 'Update button on completion

End Sub