Switching from GPG to age

Some notes about my switch from using GPG for encryption to using age, and how it has changed my workflows.

Age only covers encryption. It does not cover signing, ssh, web of trust, hierarchical keys, key discovery, etc. It is in no way a replacement for a modern PGP keychain.

Ignore GnuPG which is a shit show stuck in the 90s. PGP != GPG

For a modern long lived personal PGP keychain use Keyfork on AirgapOS which gives you a secure 24 word mnemonic backup, optional split backup across redundant smartcards, and a separation of a CA key and daily driver subkeys on smartcards all done correctly so you do not have to think about it. I would suggest a Nitrokey Pro due to open source rust firmware, though Yubikeys are supported.

From there you can use your smartcard for ssh, password management, git commit signing, etc. and make your key easy to discover without impersonation using keyoxide to have all your services, domains, etc attest to your key, as well as any humans who vouch for you.

A proper PGP keychain is a long lived digital passport first, that has encryption and authentication subkeys.

https://git.distrust.co/public/keyfork

https://git.distrust.co/public/airgap

keyfork

An opinionated and modular toolchain for generating and managing a wide range of cryptographic keys offline and on smartcards from a shared bip39 mnemonic phrase.

Forgejo: Beyond coding. We Forge.
ssh covers ssh and now signing, eg for git commits. The vouching and web of trust stuff never worked for mist people.

Abusing ssh for signing is a silly thing to do in most cases when modern PGP tooling covers this and so many other use cases with established standards.

Also, again, use keyoxide which is a modern decentralized alternative to keybase. You can vouch for yourself to bootstrap trust.

Why do you call it abuse?

OpenSSH keys were only meant for signing OpenSSH connection handshakes. They were meant for authentication, not signing long lived data. This is why PGP has distinct authentication and signing subkey types which can have different policies and permissions.

Using ssh authentication keys to also sign software is a total hack, and worse, means you are now using a single key for multiple distinct use cases without a subkey system, CA, or rotation strategy, or the ability to revoke a key for one use case without compromising others or forcing a full keychan rotation.

Telling people to use a single private keypair for many unrelated use cases has always been short-sighted cryptography advice and still is.

I get that gpg UX is remarkably bad and makes everyone want to run screaming from PGP, but modern tooling exists now and for all the things the PGP spec got wrong, it got a lot more right.

Watching new solutions get wrong the few things PGP got right as an answer to PGP is kind of infuriating.

So just out of curiosity, what is this modern tooling? It was brought up previously in this thread without naming any names.
Keyoxide

Modern and secure platform to manage a decentralized identity based on cryptographic keys

It's hard to know how these pieces fit together, especially if you have a fuzzy mental-model of the objectives and potential benefits. Is there a gentle introduction you'd recommend?

There are many ways to use PGP just as there are many ways to use openssl or any other cryptographic suite of tools.

For most individuals seeking to establish a long term durable personal keychain they want others to be able to externally trust and verify easily, I would suggest the following, which is more or less what most people in my circles do:

1. Buy a smartcard with touch support such as a Nitrokey 3

2. Ideally buy 3+ backup smartcards at the same time

3. Use Keyfork on AirgapOS booted on a laptop you trust to generate a 24 word mnemonic and split-encrypt it to 3+ smartcards (or write down mnemonic on paper if you lack budget for 3 extra smartcards)

4. If using backup smartcard set, split them up across 3 secure locations, or if using a raw mnemonic put on durable storage such as cryptosteel, and put that in tamper evident storage such as in a vacuum sealed bag with confetti with pictures you have copies of elsewhere.

5. Use keyfork to derive a PGP key and load it into your smartcard

6. Setup forced/locked "touch" requirement policies on all "slots" on your card so you must tap for each use (malware cannot do this, but easy for you to do)

7. Publish public key to keys.ogenpgp.org

8. Publish public key on your own domain name using Web Key Discovery

9. Use keyoxide docs to establish keyoxide profile with every internet platform you control attesting your key fingerprint is yours to make it easy for others form confidence that all of those are you, and your key is yours.

10. Major bonus: use QubesOS and map your smartcard only to an offline vault VM that prompts you for each use, and which security domain on your system wants to use your key, so malware is unlikely to be able to trick you even if your development environment is compromised.

From there you can use your provisioned smartcard with an openpgp smartcard capable ssh agent on your workstation for git signing, git push, ssh to servers, password management with password store, signing artifacts, thunderbird for email encryption, etc.

We plan on writing up a lot more public documentation for this sort of thing as the public docs suck, but we have helped thousands of people with this sort of thing.

Pop into #!:matrix.org or #keyfork:matrix.org if you want any help or advice for specific use cases.

A partially complete set of docs for different threat models is in progress at https://trove.distrust.co

Introduction - Trove

There are many ways to use PGP just as there are many ways to use openssl or any other cryptographic suite of tools.

This is a very bad thing, because it is not in fact the case that there is one cryptosystem equally suited to all these tasks.

That you chose OpenSSL as your corroborating example is especially funny, because there is exactly one thing that OpenSSL is actually well-suited to doing (setting up TLS sessions), and then 20+ years of people getting themselves into grave trouble trying to get that library to do other things.

You spend a lot of energy steering people away from PGP, but what is your alternative to solve the same problems with the same threat models?

What do you want to shift the entire software supply chain security foundation of the internet to use instead and how?

Complaining the existing solution is not good enough is easy. Making things better and educating on current best efforts without creating centralized points of trust is hard.

Did you not read the post I linked upthread? You were quite confident in refuting its claims, so I assume we shared an understanding here.

Update

It looks like you drastically edited your comment after I replied to it, in ways that change the meaning of your prompt. That makes it impossible for us to continue discussing anything.

> Did you not read the post I linked upthread?

Oh THAT is why you are steering people away from OpenPGP, gotchu. I have read it a long time ago. I remain to be convinced. The blog post just reeks of "I can't use it, too complex for me therefore it sucks". Yeah, it can be misused, I do not deny that.

(BTW I could not care less about e-mail.)

That's your comeback? That PGP is too complex for me to use?