Disaster Recovery
By hernil
I made a plan for disaster recovery and so can you.
I have covered things like account access and loosing everything except the clothes on my back (them too actually), even - I guess - my memory.
Hopefully this was a complete waste of time!
I should mention that my wife is also a developer so she would be better placed than most to follow the minimal set of instructions to get up and running. For a complete novice more hand-holding would probably be required. At the very least bundling some gpg binaries and ensuring that the scripts run on Windows.
Project structure
➜ disaster-recovery git:(main) tree .
.
├── data
│ ├── bitwarden
│ │ └── ...
│ ├── personal
│ │ └── ...
│ └── common-passwords.md
├── instructions
│ ├── bitwarden.md
│ └── offsite-recovery.md
├── scripts
│ ├── bw-sync.sh
│ ├── decrypt-data.sh
│ └── encrypt-data.sh
└── readme.md
This is roughly how the project is structured. I’ll explain the various parts.
Instructions
This folder contains a set of instructions for various scenarios that you might find yourself (or myself) in. A few examples:
- how to regain controll of the account of my password manager
- what to do in case of that account or provider no longer being an option
- what to do to recover critical backed up off site data (ie. in case of fire or similar)
- in the event of my death
Data
This folder contains dumps of everything required to follow the guidance from the scenario instructions. For now that mostly means a complete dump of my Bitwarden (password manager) content. That includes every login credentials and 2fa seed data as well as a few important files that live there like a copy of my passport.
Scripts
This folder contains a few handy scripts to manage this repository. For now it is limited to a script dumping everything from Bitwarden as well as scripts for encryption and decryption. Depending on what kind of data would be sensible to include here other exporting scripts could be useful.
The secret sauce
As the data here is very sensitive I need to be quite confident in none of it leaking out. My setup is using public/private key encryption curtesy of gpg. I’ve written about the setup here, but the short version of it is that I’ve created a set of a private and a public key. The private key has been transferred to three seperate Yubikeys and the public key has been published to a key server.
What this means is that anything encrypted with the public key can only be unlocked with one of the three physical Yubikeys and their PIN. If someone found a way to extract the keys from the Yubikey that would make the news. The keys are with me, in my home or at my parents home. The PIN is physically sealed but next to the two keys that are not on my person.
This gives me the confidence to dump extremely sensitive password data on a public site like Github. I also decided that encrypting the instructions folder was the way to go as I would not have to be vague in the text. I can do things like use names or even phone numbers of techy friends that could help navigate some of the instructions depending on who reads them.
Inspiration
This idea is inspired by posts and stories from the self hosted community like r/selfhosted on reddit.