13 ms·
Switching from GPG to Age
- aborsy 1y agoAge is super clean and very nice. But I don’t think it will ever be a replacement for gpg (and might have already passed its window to replace it for file encryption). It just does file encryption. GPG does tons of other things that you will find are very useful (like around key management and signatures).
- zaphar 1y agoLiterally the only thing I ever actually used gpg for was file encryption. I tried dong key management and signatures for a very brief period 20 years ago and gave up because no one else was doing it and it was annoying trying to do the right opsec things with no payoff. Ever since then, as far as I can tell there has been a very small very niche group who use gpg for anything other than file encryption. So age is the obvious choice for the vast majority of us and it's adoption seems to be reflecting that.
- lrvick 1y agoBy very small niche group, you mean every maintainer of every widely used production linux distribution and most of the core packages that form the supply train trust layer for the entire internet? Or every reasonably competent security vulnerability disclosure team? (Even Google and Apple!) PGP is the only standardized cryptographic online identity layer we have and still very heavily used by anyone working on security critical software for signed commits, signed reviews, system administration, etc. Honestly I find it hard to take anyone seriously who works in any engineering role where security matters that is -not- using PGP smartcards to sign and push their commits, sign code reviews, sign build reproductions of container images, encrypt their passwords, etc.
- johnisgood 1y agoThank you for your comment. For a minute I thought I was going insane because there is no way that GPG/PGP is used only by the minority. Literally everyone uses it, even non-techies. phew > any engineering role where security matters that is -not- using PGP smartcards to sign and push their commits, sign code reviews, sign build reproductions of container images, encrypt their passwords, etc. I agree. Even without smartcards, at the very least sign your commits, among other things. Absolute minimum. Very low bar.
- zikduruqe 1y agoEvery time I get a dev or executive sending me a Slack message saying "can you reset my password" or "can your provision me in...", my very next reply is "please send me your public key". They do not get their credentials until they do so. And once they do, our security posture gets better and better.
- Vegenoid 1y agoI think I'm missing something, how does asking for their public key improve security or verify their identity?
- rmunn 1y agoIt allows the security guy (in this case, zikduruqe) to send an email that can only be read by the person who possesses the corresponding private key. Which means that either the email is going to the executive who really does own the account, or else that the attacker has already breached that executive's laptop to the point of having acquired his private key (and passphrase, if there was one), in which case phishing attempts to get a password would be utterly pointless (like trying to pick the lock of the front door when you're already inside the house).
- akerl_ 1y agoSo I email you asking for something. You say “send me your public key first”. I generate a key pair and send the public key to you. You encrypt response giving me what I wanted. How do you have any idea that I’m the person I said I am?
- tptacek 1y agoNeither Google nor Apple rely on PGP for vulnerability disclosure handling. Lots of organizations publish a PGP key, but in practice rarely use them.
- lrvick 1y agoCitation needed. Both Apple and Google have updated these pages with security disclosure PGP keys in the last year. https://support.apple.com/en-us/101985 https://support.apple.com/en-us/101985 https://about.google/company-info/appsecurity/ https://about.google/company-info/appsecurity/ I design most corporate bug bounty programs the same way. Sure, people rarely use PGP, but the ones that do are usually serious and high quality, and we let them skip the tier 1 queue. Script kiddies never know how to encrypt things.
- tptacek 1y agoIt has not at all been my experience that PGP-encrypted bounty submissions are fast-tracked and most (almost all, in fact) good bounty submissions aren't encrypted. Google downplays PGP in the link you provided. Apple doesn't ask people to use theirs.
- lrvick 1y agoAre we looking at the same links? It is provided as an option, the ONLY option, for those that feel encryption is merited for a sensitive report. Google page: "If you feel the need, please use our PGP public key to encrypt your communications with us." Apple page: "Apple security advisories are signed with the Apple Product Security PGP key. Sensitive security information may be encrypted to this key when communicating with Apple Product Security."
- tptacek 1y agoI think you missed some subtext that I thought was pretty obvious which is that most people don't encrypt bug bounty submissions in 2025.
- zaphar 1y agoYes. That they have a large impact does not change the fact that not I nor anyone in my close circle uses it for that. It has been relegated to a specialized domain and use case. I have no use for maintaining a signing key. All the communications I need to secure and verify identity use a different technology for it. The fact that some tools I run might use it in the background is entirely abstracted away for me and they could get swapped by something else without me once noticing. My point still stands.
- lrvick 1y agoIf you write open source code others rely on, or have any online identity that could be used for harm if stolen, it is irresponsible to not have a well published public identity signing key that cryptographically ties together your online presences to make you hard to impersonate. A key used to sign commits, binaries, code reviews, emails, or anything else of public value you produce. If you do not do anything of consequence outside of corporate walls and are just a passive consumer of technology, then you probably do not need one. The fact you have keybase in your profile indicates to me that you at least at one point mildly cared about having a cryptographic identity. Keybase just happened to have been a wildly broken implementation. Keyoxide is the path today.
- zaphar 1y agoExcept that I do all of those things and I don't care about it at all nor does the absence affect me in any way. Keybase was a nifty chat.
- lrvick 1y agoFair enough. If you care about your identity so little, I expect when your personal domain ever expires you will not mind if I buy it and impersonate you? It would be valuable for my supply chain attack education work.
- zaphar 1y agoHave at it. It's not really a part of my identity. Nor has it ever been protected by GPG.
- WhyNotHugo 1y agoage is so clean precisely because it does only one thing. While GPG has other use cases; the intent is that those use cases are satisfied by different tools. Eg: signify for signing. I’m also considering moving away from GPG, but the main limitation are signed git tags (for releases). For supports GPG or SSH keys. I’m not sure that I’m a fan of signing with SSH keys, I’d rather have first-class support for signify.
- arccy 1y agoyou can just have a dedicated ssh keypair for signing
- deleted 1y ago[deleted]
- tptacek 1y agoRepeating a comment elsewhere on the thread so I'll keep this very brief, but it is in fact bad that PGP "does tons of other things that you will find are very useful".
- s20n 1y agoNot having gpg-agent is a huge deal breaker for me. I feel gpg-agent doesn't get enough love. Not only can it do all the ssh-agent operations, it can also be used with gpgme-json[1] to do web authentication with your [A] key. It's truly a shame that hardly any applications leverage the powerful cryptography afforded by GPG. [1]: https://manpages.debian.org/trixie/gpgme-json/gpgme-json.1.en.html https://manpages.debian.org/trixie/gpgme-json/gpgme-json.1.e...
- Avamander 1y ago> Not only can it do all the ssh-agent operations It can not. Doesn't work with PKCS#11 PIV. In general GPG's behavior with SmartCards is idiotic and interferes with many other applications. It's good that people don't use GPG more often and I can just purge it from my systems.
- johnisgood 1y agoWhat do you mean? I use GPG with SSH (or SSH with GPG) all the time, and I need gpg-agent for that. GPG's agent replaces ssh-agent and serves SSH keys derived from your GPG key. Can you do this with Age? If not, then I am going to stick to GPG.
- Avamander 1y agoI'm unsure what was unclear. It simply does not provide PIV support and it interferes with other software that wants to utilise SmartCards. Can Age interfere with all SmartCard usage? No clue.
- johnisgood 1y agoOh well, let us just agree on that comparing Age to GPG is silly, ergo "Switching from GPG to Age" is silly, unless it is "Switching from GPG to Age for file encryption". Age doesn't do signing, key infrastructure, or email. Minisign/signify only sign. None are GPG replacements. They're partial feature subsets that are simpler because they do less. So, to summarize these tools: - Age: Only does file encryption, no signing, no key management infrastructure, no email integration - Minisign/Signify: Only signing, no encryption - GPG: Encryption, signing, key management, email integration, multiple recipients, subkeys, revocation certificates, web of trust (even if unused), smart card support, etc. You cannot just simply switch from GPG to Age unless you are only doing file encryption. If this is the case, then sure, you can.
- knorker 1y agoIs it post-quantum yet? I could not find indications of that.
- aborsy 1y agoIt uses key files that are 128 bits. With symmetric encryption, it’s equivalent to AES-128, so not really post quantum. It has post quantum plugins, but those are third party plugins!
- knorker 1y agoYeah 128bit for symmetric is not enough, but it uses public key cryptography, right? "RECIPIENT can be an age public key generated by age-keygen ("age1...") or an SSH public key ("ssh-ed25519 AAAA...", "ssh-rsa AAAA...")."
- aborsy 1y agoIt has both public key and symmetric mode. Even with public key, the file is encrypted in symmetric mode with a random key. The key is encrypted with pubkey. The file format is built around asymmetric cryptography, so maybe going to 256 bits required some work that the authors does not want. Not sure. Would have made sense to have standard ChaCha 20.
- knorker 1y ago> The key is encrypted with pubkey. Of course. That's how all public key crypto works. It's entirely infeasible to encrypt large payloads with a public keypair directly. But this means that the symmetric key is entirely vulnerable to quantum computers. All you have to do is decrypt it. > so maybe going to 256 bits No, that's symmetric crypto key lengths, which are not the vulnerability when public keys involved are not PQ.
- aborsy 1y agoWhich is what I said.
- oldpersonintx2 1y ago[dead]
- lrvick 1y agoAge 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/keyfork https://git.distrust.co/public/airgap https://git.distrust.co/public/airgap
- justincormack 1y agossh covers ssh and now signing, eg for git commits. The vouching and web of trust stuff never worked for mist people.
- lrvick 1y agoAbusing 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.
- epistasis 1y agoWhy do you call it abuse?
- lrvick 1y agoOpenSSH 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.
- networked 1y ago> I'm now experimenting with `age`, which touts itself as "simple, modern, and secure encryption". If needed, I will use `minisign` for signatures. I have also switched from GPG to age. When I wanted to start signing my open-source software releases because of recent supply-chain attacks, I first thought of Minisign, too. I tried it for binaries and even found a few third-party Git integrations (https://codeberg.org/SkyFox42/git-minisign https://codeberg.org/SkyFox42/git-minisign, https://github.com/sug0/git-signify https://github.com/sug0/git-signify), then discovered that Git and GitHub supported signing with SSH keys (https://stackoverflow.com/questions/72844616 https://stackoverflow.com/questions/72844616). GitHub supports it in the sense that it will indicate a commit or tag is signed. I have adopted this approach: I sign tags with `git tag -s foo` and binaries with `ssh-keygen -Y sign`, and I have put the public key and usage instructions on my site (https://dbohdan.com/pubkeys https://dbohdan.com/pubkeys). gpg-agent was valuable to me because it let me use `pass` in scripts while maintaining encryption at rest. This prevented me from switching to `passage`. After surveying my options (https://github.com/dbohdan/pago/blob/6aa312e83113498a64abd9a1826d87a135da3bb1/README.md#motivation-and-alternatives https://github.com/dbohdan/pago/blob/6aa312e83113498a64abd9a...), I ended up forking pash (https://github.com/dylanaraps/pash https://github.com/dylanaraps/pash) and developing the fork into an age-based password manager with its own agent. The developer of seniorpw has a nice feature comparison of `pass`-like password managers based on age (https://gitlab.com/retirement-home/seniorpw/-/blob/f1584cf42cdfc08b02b23c9e08be0a70331cb9db/README.md#comparison-with-alternatives https://gitlab.com/retirement-home/seniorpw/-/blob/f1584cf42...). I can say I am happy with the switch. If you use GPG for encrypting files, I can recommend it.