Do not enter secret data into this website, or any website.
Codex32 Logo

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!

  1. 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.
  2. Cut out and assemble the volvelles, following the included instructions.
  3. 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.
  4. 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:

  1. 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.
  2. The New Derived Share (TODO) link allows you to derive additional shares from your initial ones.
  3. 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.