pcrockett / kin-backup

Secure, simple backups for your next of kin
MIT License
3 stars 0 forks source link

Kin Backup

This was a fun idea, but was inherently flawed due to its offline nature, lack of updateability, lack of periodic backup verification, etc. The idea needs some reworking (assuming it'll ever be worked on again).

Secure, simple backups for your next of kin.

This project serves two main goals:

  1. Make it easier to create and maintain secure backups of sensitive information that my non-technical close relatives can restore after I am hit by the proverbial Bus.
  2. Teach me Rust.

Overview

tl;dr: Create several small encrypted backups and distribute them to a few trusted family members or friends. No individual can decrypt their own copy of the backup, but they can decrypt someone else's. Thus when something happens to you, two trusted people together have what they need to gain access to your sensitive information.

The detailed version:

Kin is a simple system that creates backup packages for your relatives to keep locked away in fire safes, safe deposit boxes, etc. Each backup package contains an unencrypted zip archive of public documents, for things like last will and testament documents or living trust documents. It also contains an encrypted archive for things like password manager backups, two-factor authentication recovery codes, sensitive personal information, etc.

Of course giving any one person such sensitive "keys to the kingdom" is arguably a bad idea. Which is why Kin prevents any one individual from being able to decrypt the backup that they have access to. Kin is designed so that you give backups to at least two different people (recommended three or more). Each person cannot decrypt their own backup, but they can decrypt a backup that someone else holds. This isn't just to protect you from one family member going rogue, but also protects you when your trusted backup-holders experience burglary or otherwise lose track of your backups.

Kin also helps generate a clear, concise, non-technical readme HTML file for your relatives. You can customize the readme however you want using a markdown template.

Encryption is implemented using the widely-used and trusted libsodium library. That said, Kin should definitely not be used as an online backup, is definitely not meant to be given to untrustworthy people, and will definitely not protect you from the NSA.

Build Requirements

Kin Backup is created using Rust, so you need a Rust development environment.

If your build machine is running Ubuntu, you'll need:

  1. A C compiler (cc, clang, etc.)
  2. The libssl-dev package installed on your computer (for compiling libsodium)
  3. The libgtk-3-dev package installed on your computer (for nativefiledialog)

If your build machine is running Windows, you'll need to have at least Visual Studio Community edition installed with C/C++ build tools.

For other operating systems, feel free to start a pull request and update this readme!

Getting Started

Once you have Kin installed, it's time to create an empty backup project. Recommended: Because you will probably be storing sensitive files in this backup project, you should create it in a location where drive encryption is enabled.

Assuming your name is Owen, and you want to give backups to three trusted family members named Alice, Bob, and Chuck:

mkdir backup_project
cd backup_project
kin init --owner Owen --recipients Alice Bob Chuck

This creates three things:

Once you put the appropriate files in the public and private folders, and make adjustments to readme-template.md so it looks the way you want, it's time to compile backup packages for Alice, Bob, and Chuck.

Insert a USB flash drive into your computer and mount it. Assuming your flash drive is mounted at /media/flash_drive/:

kin compile --recipient Alice /media/flash_drive/

Feel free to inspect the contents of the flash drive now. You'll notice:

Now eject the flash drive and insert a new one for Bob. Run the same compile command as above, except with "Bob" as the recipient. Now run the decrypt program on Bob's flash drive, but use Alice's passphrase. The decryption will succeed.

Create a backup package for Chuck as well, and then distribute your three flash drives to your three recipients. Now when you get hit by a bus, they won't be up a creek when they need to access your super secret important stuff.