diff --git a/backups/README.md b/backups/README.md new file mode 100644 index 0000000..f7f492d --- /dev/null +++ b/backups/README.md @@ -0,0 +1,10 @@ +# Single seed multi-location backup schemes + +The aim here is to create 3 packages of cryptographycally secure +backups where the funds cannot be recovered from any single package, +but can be recovered with the combination of any two. +Can be thought of as a physical 2-of-3 multisig solution. + +## [ColdCard](coldcard.md) +## [JoinMarket](joinmarket.md) +## [LND](lnd.md) \ No newline at end of file diff --git a/backups/coldcard.md b/backups/coldcard.md new file mode 100644 index 0000000..a3eb0c9 --- /dev/null +++ b/backups/coldcard.md @@ -0,0 +1,32 @@ + +## ColdCard single seed multi-location backup scheme +Original idea by @21isenough. +Documentation of Coldcard backups: https://coldcardwallet.com/docs/backups. +The scheme only works if the seed is not locked down to a passphase: +coldcardwallet.com/docs/passphrase (the passphrase is not tied to a PIN, +but needs to be written in the CC every time the wallet is opened) + +The ColdCards should be stored uninitialized, best to be freshly acquired in the tamper resistant package from the manufacturer (coldcardwallet.com) to minimize the risk or evil-maid and supply-chain attacks. + +### Components grouped together by the requirement for a full restore +#### Full backup 1 +* Seed mnemonic (12/18/24 words) +* Passphrase +#### Full backup 2 +* Backupfile (.7z archive on the SD) +- Backup password (12 words) + +## Packages for a 2-of-3 setup + +#### Location 1 +- Seed mnemonic (12/18/24 words) +- Backup password (12 words) +- Backupfile (.7z archive on the SD) + +#### Location 2 +- Passphrase (BIP39) +- Backupfile (.7z archive on the SD) + +#### Location 3 +- Passphrase (BIP39) +- Backup password (12 words) diff --git a/backups/joinmarket.md b/backups/joinmarket.md new file mode 100644 index 0000000..bafd13c --- /dev/null +++ b/backups/joinmarket.md @@ -0,0 +1,26 @@ +## JoinMarket single seed multi-location backup scheme +Documentation on JoinMarket wallets: +When the wallet is restored with a bitoind where it was not previousl used, will need to rescan the blockhain to register the transactions and look up the wallet balance. Having the wallet birthday helps to do the rescan on ly from the useful height, but absolutely necessary. + +### Components grouped together by the requirement for a full restore +#### Full backup 1 +* Seed (12 words) +- Passphrase (BIP39) +#### Full backup 2 +* Wallet file (.jmdat) +* Encryption passphrase + +#### Location 1 +- Seed (12 words) +- Wallet file (.jmdat) +- First tx blockheight (optional) + +#### Location 2 +- Passphrase (BIP39) +- Encryption password +- First tx blockheight (optional) + +#### Location 3 +- Seed (12 words) +- Encryption password +- First tx blockheight (optional) \ No newline at end of file diff --git a/backups/lnd.md b/backups/lnd.md new file mode 100644 index 0000000..5383089 --- /dev/null +++ b/backups/lnd.md @@ -0,0 +1,23 @@ +## LND backup scheme +Notes on LND seed format: + + +### Components grouped together by the requirement for a full restore +#### Full backup 1 +* Seed (24 words) +- Cypher phrase (passphrase) +#### Full backup 2 +- lnd folder (wallet.db + channel.db) +* wallet password + +#### Location 1 +- Seed (24 word) +- lnd folder (wallet.db + channel.db) + +#### Location 2 +- Cypher phrase (passphrase) +* wallet password + +#### Location 3 +* Seed (24 words) +* wallet password