My take on bitcoin paper wallets

Cryptocurrencies

Most of my energy the last few months have been devoted to cryptocurrencies such as Bitcoin, Litecoin and Monero.

When (not IF) cryptocurrencies become more mainstream, i have no doubt that the frontiers for security will move there too.

The common common quote

[insert-random-term-here]-hacking for fun and profit

will literally mean actual profit. I will leave this topic open for another post in the future.

Paper-wallets

The safe storage of cryptocurrencies such as Bitcoin have been and will continue to be of the utmost importance. One of the safest way to store bitcoins is having them stored in a physical printed paper-wallet. This printout contains the private key needed to redeem the contents of the wallet.

There exist several nice paper-wallet generators online today, but most of them are focused on providing a grapically beautiful paper-wallet.

Mwll0
overview
Don’t misunderstand me here, i think that the artwork is very nice, a lot of time have been spent on making a beautiful design.

Goal

But, in my opinion, most of these wallets do not prioritize long-time security in the same way I do.

I want a wallet that can be withstand the test of time. I want to maximize the potential for a successful recovery, should the paper-wallet be subjected (for any number of reasons) to heat, sunshine or water.

This goal cannot be met when the secret information occupies less than 10% of the printed wallet and the rest of the wallet is filled with artwork that can bleed over the important information. If the private key is lost and you have no other backup, the funds are gone.

The picture below illustrates what happens to a (inkjet printed) paper-wallet exposed to a small amount (1ml) of water. (Image from bitcoinpaperwallet.com)
water-damage

Requirements

I set up a few requirements that I wanted from a paper-wallet generator:

  • Must allow me to use a pre-generated private key (from an external trusted source)
  • Full page printout (A4 or letter)
  • Private keys on the printout should be redundant in several formats
  • Private keys on the printout should be large enough to withstand moderate/serious fading of ink/toner due to heat/light/water
  • Must be able to run and print from a totally non-networked computer (using a modern browser)
  • Preferably generate links to several block-explorers to validate the balance

I have no requirement that the paper-wallet is foldable to hide the private key or that there are nice artwork on the wallet. These paper-wallets are for the long-term storage of bitcoins in a controlled environment (for example safety-deposit boxes).

Paranoid? Yeah, maybe..

Solution

I did not find any perfect match for my requirements but bitaddress.org came rather close so I forked their github-repository and modified it until it met my needs. The result is a far less beautiful design than the designs depicted above, but more suited to my needs.

paperwallet2
This wallet prints on a full page and has six different ways of encoding the private key:

  • WIF – Large QR-code
  • WIF – Textual representation
  • WIF compressed – Large QR-code
  • WIF compressed– Textual representation
  • Raw – Hexadecimal representation
  • Raw – Base64 encoded

Paranoid? Yeah, maybe..

The second page is optional and contains QR-codes to put on the outside of the envelope. Two of the QR-codes leads to different block-explorers where the balance can be verified and one contain the plain public address.

addresses

Download

The entire paper-wallet generator consists of a single html-file with embedded javascript and should preferably be run on a stand-alone non-networked computer for maximum security.

A snapshot of the current revision is available here
You can find the HTML-file and the source-code on https://github.com/p4fg/secure-paper-wallet.

Best practice

  • Generate your private keys on a non-networked computer using a reputable software
  • Print the wallet using a non-networked printer that don’t cache your printout on permanent storage
  • Use high quality acid-free paper (ISO 9706/ISO 11108)
  • Use good quality toner/ink

Paranoid? Yeah, maybe..

Disclaimer

Use at your own risk, no warranty expressed or implied. Works-for-me(tm).