Do not enter secret data into this website, or any website.
Codex32
Codex32 is an error-correcting code designed to be computable without the use of
electronic computers. Users can compute and verify checksums by hand; we have
provided lookup tables, volvelles
and worksheets to assist with this process.
The codex32 checksum, like all linear codes, is compatible with
Shamir's Secret Sharing
Scheme, a mechanism to split a secret into many "shares", such that the original
secret can be reconstructed from some number of them. In SSSS, users choose a threshold
value k, typically 2 or 3; they then generate k-many random shares, and
then compute a number of derived shares (up to 31 in total). A random secret can then
be computed from any k shares.
If the initial random shares have a valid codex32 checksum, then so will all the
derived shares and the final secret.
Getting Started
The premise behind codex32 is that you will be generating, checksumming and splitting a
BIP32
master seed, from which you will derive Bitcoin addresses. Before getting started,
make sure you have a Bitcoin wallet which is able to import codex32-encoded seed
shares.
As of this writing (September 2022), no such wallets exist. Therefore this project
should be considered as a fun experiment, but cannot be used in practice. Very
reckless users can consider coercing their SLIP39 or BIP39 seed words into the
codex32 encoding, and then converting back before wallet import.
That caveat aside, let's get started!
- The first step is to download and print the codex32 booklet.
- There are five pages which contain the volvelles, which should be printed on
heavy paper or cardstock; the remainder can be printed on normal paper.
- We recommend using a colour printer, but it's not necessary.
- You will likely want to print multiple copies of the Checksum and Translation
Worksheets. They are included in the full booklet or you
can download them individually.
- Cut out and assemble the volvelles, following the included instructions.
- Following the instructions in the booklet, generate your secret:
- Choose a threshold k-of-n, e.g. 2-of-3, meaning that you
will create 3 shares, any 2 of which will recover your secret.
- Using the Random Character Worksheet, create k random initial shares.
- Using the Translation Worksheet, create as many derived shares (up to 31 total)
as you need to get up to n.
- To recover your secret, use the Recovery Wheel and Translation Worksheet, or
directly enter your seeds into a codex32-enabled wallet.
Advanced users are encouraged to check out the git repo
for the booklet, which is implemented in hand-written PostScript, or to read the
mathematical companion for the underlying theory.
Interactive Tools
On this site, we have some interactive tools
which may help you getting started:
- The New Initial Share link is a copy of the paper Checksum Worksheet which
automatically fills in cells based on your share data. It is worthwhile to check
your work (using a dummy key!) against this tool before trying to use it for
real data — if you mess up the Checksum Worksheet you may not be able to
tell until you've spent upwards of an hour completing it, which is not a fun
experience.
- The New Derived Share (TODO) link allows you to derive additional shares
from your initial ones.
- The Error Correction (TODO) link will let you correct errors in a
share or secret. You will need to enter the final row of your checksum worksheet
(which should be SECRETSHARE32 but in case of errors will not be).
This line does not encode any secret share data, but does encode the
location and nature of your errors. Beware! The errors themseres may actually leak
data, since for example it's far more likely that an error was made on an
S than X.
This site is entirely client-side content and requires no server support. It can
be downloaded and hosted locally from our git repo.