beemdevelopment / Aegis

A free, secure and open source app for Android to manage your 2-step verification tokens.
https://getaegis.app
GNU General Public License v3.0
9k stars 379 forks source link

Paper backup through QR codes #1137

Open denilsonsa opened 1 year ago

denilsonsa commented 1 year ago

Some tools (like 1Password, or the 2FA recovery tools) have a printable page for recovery purposes. This is good because there is no risk of being hacked or leaking through any online cloud service.

Thus, what if Aegis could have a proper offline paper-based backup?

Current status

Proposed solution

Aegis could export one HTML page so that:

Complexity

I'm trying to keep the complexity relatively low, by reusing/adapting existing features:

Encryption (bonus!)

If you want to go extra mile, it's possible to implement encryption of the data, and leave an empty space at the printed page for the user to hand-write the encryption password. That increases security, but generates vendor lock-in (can't be imported into Google Authenticator-compatible apps anymore).

scollovati commented 6 months ago

I've created a script that does exactly this (plus a few extra things): https://github.com/scollovati/Aegis-decrypt

It's already working and tested. As a next step, I want that it outputs all QRCodes in a PDF file for easing the process of a paper backup.

denilsonsa commented 6 months ago

As a next step, I want that it outputs all QRCodes in a PDF file for easing the process of a paper backup.

@scollovati I see you already generate an SVG image for each QR code. It should be trivial to add them all together into a single HTML page (which can be printed). Thus, for simplicity, I suggest you exporting as HTML instead of PDF. You can certainly get it ready very quickly in HTML, and it's easy to tweak the layout and the instructions. PDFs are more annoying to build (and require extra dependencies).

bad-co-de commented 3 weeks ago

The optional encryption can also protect against a compromised network (when using a network printer) or a compromised printer.