PaperCrypt - Printable Backup Documents
PaperCrypt is a Go-based command-line tool designed to enhance the security of your sensitive data through the
generation of printable backup documents.
These documents, referred to as "PaperCrypt" Documents, combine the robust
encryption capabilities of the OpenPGP
with the resilience and simplicity of a physical hardcopy.
This ensures the confidentiality and integrity of your data,
while also providing a physical backup that is not susceptible to digital threats.
Please note that to decrypt the data from a PaperCrypt Document, you will need the original passphrase used during the
encryption process.
Treat this passphrase with care; if it is lost, the data will be irrecoverable.
Features
-
Encryption: PaperCrypt utilizes the GopenPGP library to apply advanced cryptographic
techniques, securing your data with industry-standard algorithms.
-
PDF Generation: PaperCrypt can output PDF documents ready for printing, that include all the information needed to
recover the encrypted data. Alternatively, you can also output a text file containing only headers and encrypted data.
-
Data Integrity: To verify the integrity of the data, PaperCrypt embeds checksums within the encrypted data portion
of its documents. This ensures that the data remains unaltered during backup and restoration processes.
-
Offline Security: By generating printable backup documents, PaperCrypt offers an offline storage to
safeguards your sensitive data against online threats, as well as an option to store your data in an off-site
location.
This provides an additional layer of security, as it ensures that your data remains safe and accessible even in the
event of a catastrophic failure, malicious attack, or natural disaster.
Installation
TODO(2023-08-11): Add installation instructions.
From Source
-
Install Go: Ensure you have Go installed. If not, you can download it from here.
-
Clone the Repository: Clone the repository to your local machine:
git clone https://github.com/TMUniversal/PaperCrypt.git
- Navigate to the Directory:
cd papercrypt
- Install Dependencies: Run the following command to install the required dependencies:
go mod tidy
- Build PaperCrypt:
go build -o bin/papercrypt
or using task
:
task build
Usage
Generating a new key:
A 24 word mnemonic phrase is suitable for our purposes,
but you can use any string of words or characters.
Generate one with your tool of choice,
you can use seedtool-cli:
seedtool --out bip39 --count 32
or use this tool directly:
papercrypt generateKey --words 24 --out mnemonic.txt
to generate a 24 word mnemonic phrase.
Save your data as a JSON file, let's call it data.json
.
Example data.json
file:
{
"bitwarden": {
"backup_location": "https://your-bucket.s3.amazonaws.com/bitwarden-backup.tar.gz",
"access_key_id": "YOUR_S3_ACCESS_KEY_ID",
"secret_key": "YOUR_S3_SECRET_KEY",
"encryption_key": "your-backup-encryption-key",
"admin_token": "your-bitwarden-admin-token"
}
}
Then, run
papercrypt generate --in data.json --out output.pdf
to generate the file containing your data, and the decryption instructions.
The program will ask you for an encryption key,
for which you can use your mnemonic phrase from earlier.
Contributing
Contributions to PaperCrypt are welcomed and encouraged! If you have suggestions for improvements, bug fixes, or new
features, please feel free to submit a pull request.
License
PaperCrypt is licensed under the terms of the GNU AGPL-3.0-or-later.
Acknowledgments
PaperCrypt was developed leveraging the power of Go and a suite of dependable open-source libraries.
We extend our gratitude to the developers behind
GopenPGP, GoFPDF,
and other foundational components.