Skip to content

(Work In Progress) DIY airgapped hardware wallet that uses QR codes for communication with the host

License

Notifications You must be signed in to change notification settings

miketlk/specter-diy

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Specter-DIY

DISCLAIMER

This firmware is WORK IN PROGRESS — USE AT YOUR OWN RISK, better on testnet.

This wallet is a FUNCTIONAL PROTOTYPE. This means we use it to experiment with user interface, communication methods and new interesting features (like anti chosen-nonce protocol, CoinJoin and Lightning). But this prototype is not ment to be secure. That's why we don't store your private keys on the device - you need to type your recovery phrase every time you power it on.

We also have a #Reckless option that allows you to store recovery phrase on the device (no pin, no encryption - for testing purposes).

If something doesn't work open an issue here or ask a question in our Telegram group or Slack.

What is this project for?

It is a Do-It-Yourself airgapped hardware wallet that uses QR codes for communication with the computer (i.e. Specter Desktop app on top of Bitcoin Core). It can be used as an additional item in your multisignature setup that has a completely different security model:

  • It can be built from off-the-shelf hardware - this reduces chance of the supply chain attack
  • It is airgapped with a very limited uni-directional communication protocol (QR codes) - you control communication with the host
  • It can be tuned and extended according to your security model

Current status

Works for single key and multisig transactions.

Supported networks: Mainnet, Testnet, Regtest, Signet.

Shopping list

While we are coding you can buy the components. Somehow expensive, but the price can be reducesed if you are ok with soldering.

Main part of the device is the developer board:

  • STM32F469I-DISCO developer board (i.e. from Mouser or Digikey)
  • MiniUSB cable (for example this)

For QR code scanner you have several options.

Option 1. Lazy, minimal soldering required, extremely nice scanner but pretty expensive:

Option 2. Requires some soldering / mounting and configuration:

  • Waveshare scanner - you will need to configure it to use UART for communication, solder a wire to the trigger button and connect to the D5 pin of the board. See more details here.

Extra: battery & power charger/booster - docs will follow later.

We are also working on the kit that you could buy from us that will include a 3d printed case, QR code scanner, battery and charging circuit, but without the main part - dev board. This way supply chain attack is still not an issue as the security-critical components are bought from random electronic store.

Dev plan

  • Single key functionality
  • Reckless storage
  • Multisig
  • SD card support
  • Secure element integration
  • Secure boot
  • DIY kit

Video and screenshots

Check out this Twitter thread to get an idea how it works.

A few crappy pictures:

Init screens

Wallet screens

About

(Work In Progress) DIY airgapped hardware wallet that uses QR codes for communication with the host

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 64.7%
  • C++ 35.3%