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 's 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.
-
Data Integrity: To verify the integrity of the data, PaperCrypt embeds checksums within the encrypted data section
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 solution to
safeguard your sensitive data against online threats, as well as an option to store your data in an off-site
location. This provides a 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 generate ./... && \
go build -o bin/papercrypt
or using task
:
task build
Usage
Generating a new key:
A 24 word mnemonic phrase is suitable for real-world use,
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: data.json
, for example.
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 then asks you for an encryption key,
for which you can use your mnemonic phrase from earlier.
Please see the examples directory for the generated PDF files.
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 Affero General Public License, version 3.0 or
later (GNU AGPL-3.0-or-later).
Acknowledgments
PaperCrypt is 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.