Skip to content

v1.0.0 — first release

Choose a tag to compare

@hosseinpro hosseinpro released this 29 Aug 20:43
· 23 commits to main since this release

First release.

YubiShard splits a wallet recovery phrase into standard SLIP-39 shares and stores one share on
each YubiKey, using the WebAuthn largeBlob extension. Any threshold of the keys rebuilds the
phrase; fewer reveal nothing at all.

What it does

  • Accepts a 12- or 24-word BIP-39 phrase, or a 20-word SLIP-39 share.
  • Splits it into a threshold scheme you choose — 3 of 5, say — and writes one share per key.
  • Verifies the backup by making you unplug each key and read the share back before finishing.
  • Restores from a threshold of keys, re-encoding BIP-39 entropy back into your original words.
  • Shows the BIP-32 fingerprint at every stage, so you can see which wallet you are handling.

The shares are ordinary SLIP-39 mnemonics — Trezor, Electrum, Sparrow, Rabby and BlueWallet all
read them.

Requirements

Chrome on macOS or Windows 11, and YubiKeys on firmware 5.7 or newer. The page must be served
over http://localhost or https — file:// cannot work, because a security key identifies a
site by its hostname.

Getting it

Download the source archive below, unzip it, and run serve.command (macOS) or serve.bat
(Windows). Three hand-written files, no dependencies, no build step — what ships is what you
read.

Verification

The SLIP-39 implementation is checked against all 45 official vectors from
trezor/python-shamir-mnemonic, plus RIPEMD-160, BIP-32 and BIP-39 vectors, and cross-checked
against Trezor's shamir-mnemonic package.

Read the README before trusting this with a real seed — in particular "Things you have to know",
which covers the PIN, the BIP-39/SLIP-39 asymmetry, and what a lost key does or does not cost you.