41 lines
1.2 KiB
Markdown
41 lines
1.2 KiB
Markdown
|
# Keyfork Shard
|
||
|
|
||
|
Securing secrets using Shamir's Secret Sharing, an "M-of-N" secret recovery
|
||
|
mechanism used to split a secret into `n` encrypted parts, with `m` parts
|
||
|
required to restore the secret.
|
||
|
|
||
|
## Shardfile Formats
|
||
|
|
||
|
Currently, OpenPGP is the only supported format. Any mix of smartcards and
|
||
|
OpenPGP key files are supported.
|
||
|
|
||
|
## Metadata
|
||
|
|
||
|
Keyfork Shard stores some additional metadata inside the Shardfile to make
|
||
|
recombining secrets easier. This metadata currently includes the metadata
|
||
|
version (1) and the threshold required to recreate the secret (meaning you
|
||
|
don't need to remember the threshold!).
|
||
|
|
||
|
## Command Line Usage
|
||
|
|
||
|
The command to run to split and combine a secret is format-dependent, but will
|
||
|
often follow the format `keyfork-shard-split-<format>` and
|
||
|
`keyfork-shard-combine-<format>`. For this example, OpenPGP will be used, but
|
||
|
the flow will be similar for any format. Keyfork Shard expects the input to be
|
||
|
a hex-encoded secret.
|
||
|
|
||
|
```sh
|
||
|
# Read our secret into a shell variable.
|
||
|
read secret
|
||
|
|
||
|
# Shard our secret.
|
||
|
echo $secret | keyfork-shard-split-openpgp 3 5 keyring.pgp > shards.pgp
|
||
|
|
||
|
# Forget our secret.
|
||
|
unset secret
|
||
|
|
||
|
# Recreate our secret. Without specifying a keyring, we are prompted to use
|
||
|
# smartcards.
|
||
|
keyfork-shard-combine-openpgp shards.pgp
|
||
|
```
|