Plastic Wallets

A client of mine was looking for a way to better store user-generated keys for backup purposes as part of their cryptocurrency hardware wallet offering. These keys are long strings of random letters and numbers, and are the sole thing standing between you, your money, and everyone else. To say that managing them is problematic is an understatement.

Most users, generally speaking, do not do a good job of backing up normal files, let alone files potentially worth large amounts of money. It is hard to put any effort into security when first setting up a hardware wallet when your balance is zero, and most people don't change strategies as their fortune increases. This poses an interesting UX problem - while almost anyone would be paranoid about protecting a large pile of physical cash or precious metals, making someone equally paranoid about some numbers on a page is difficult, and suddenly telling someone that their previous low-effort security strategy should be revisited due to their current balance isn't practical.

Complicating things, even if a user does comprehend the importance of secrecy, backing up the keys themselves is problematic. You cannot use a computer to do so (due to the risk of malware), you cannot photograph it (cameras are computers, unless you have a home darkroom), you cannot print it (some printers store copies of what people print), and you cannot trust that you can read your handwriting years later. Not to mention that writing out long strings of random characters isn't an enjoyable experience, and paper isn't guaranteed to last over decades. Ink can smudge, and paper isn't fire or water resistant. Pen and paper isn't a terrible idea (it has effectively zero upfront cost to most people), but a better solution was worth pursuing, so long as the equipment was small enough and cheap enough to not significantly raise the product's overall cost. Small equipment is key, as a user that doesn't trust your solution to not theoretically leak data now has to store it - this rules out solutions like telling people to securely store a laser printer in a safe deposit box after it prints out copies of their keys. Lastly, any solution has to also be human verifiable - I can tell you that your keys are safely on a USB flash drive, but unless you plug it into a computer, you can't actually verify that for yourself, and plugging it in to a computer defeats the purpose of a hardware wallet.

The solution I implemented, pictured below, used a DVD burner to etch both human and machine readable data (plaintext and QR codes) into the data tracks of normal optical media. This produces a disc that cannot be read by any computers if accidentally or intentionally inserted, but that can easily be read by a human with a magnifying glass or good vision. As the shiny part of the disc is the part being burned (where data normally goes), no special discs are required. The outside of the disc features both the public and private keys in a variety of fonts for legibility purposes, and the rest of the disc is filled with QR code versions of both. Given the "image" resolution and the sheer number of redundant copies of each QR code, it is highly probable that even purposefully attempting to shred or otherwise destroy these discs by most practical means would still leave enough data behind to reconstruct everything. When burned to archival grade media, the image is estimated to last approximately 100 years (according to Taiyo Yuden). The end result is an object resistant to heat, sunlight, scratches, and liquid damage, with a retail cost of $0.40. The "printer" itself is a low cost SATA DVD drive paired with a microcontroller (~$30) and measured approximately 146 x 41 x 170 mm, which is small enough to fit in a safe deposit box if a user believes their keys have somehow been stored in ROM after burning.

Flatbed Scanner Macro lens

This solution was accepted by the client, beating out any other proposed solutions by a long shot. However, a corporate pivot left it off the roadmap, and the client is now defunct.