Remix.run Logo
▲ Why I Wrote PGP (1991, revised 1999)(philzimmermann.com)
176 points by GaryBluto 2 days ago | 64 comments
▲BeetleB 19 hours ago | parent | next [-]

> In 2013, an article on "Zimmermann's Law" quoted Phil Zimmermann as saying "The natural flow of technology tends to move in the direction of making surveillance easier"

▲leonidasrup 3 hours ago | parent [-]

The precise term is Surveillance capitalism.

" Surveillance capitalism is a concept in political economics which denotes the widespread collection and commodification of personal data by corporations. This phenomenon is distinct from government surveillance, although the two can be mutually reinforcing. "

https://en.wikipedia.org/wiki/Surveillance_capitalism

▲adastra22 19 hours ago | parent | prev | next [-]

A well-intentioned ideal from a bygone era.

▲Joel_Mckay 19 hours ago | parent [-]

Good ideas demand to be free. =3

▲tptacek 18 hours ago | parent [-]

There's a good idea in PGP, and a very bad one. The good idea --- and PGP genuinely deserves credit here --- is end-user, consumer-facing strong cryptography tools. That's now universally accepted and has been for decades. The bad idea is a tool with PGP's design, of "cryptographic jack-of-all-trades". PGP's design has aged like milk, and PGP itself is a security liability in almost every system that hosts it.

▲TheCondor 15 hours ago | parent | next [-]

PGP is special to me, I was a beta user when Phil uploaded it to some Colorado BBSes, way back when. He even made time to talk to teenage me about it on the phone.

What's crazy is when it was concieved, we didn't have trusted strong cryptographic primitives. We did have DES but it wasn't trusted. We did have some of these crazy ideas that we all would have "secrets" and you might put those secrets encrypted on a disk in a vault and you'd not even want the feds to get them. Now we have all sorts of much more vetted crypto primitives, but the idea of actual secrets you'd keep in cold storage is largely dead. You're spot on that modern use cases need different APIs and tools and specialized solutions.

▲BLKNSLVR 11 hours ago | parent [-]

Nice username.

https://hackyourmom.com/en/osvita/u-pamyat-pro-kevina-mitnik...

▲47282847 17 hours ago | parent | prev | next [-]

PGP the packet formats, PGP the tool(s), OpenPGP the specs, GnuPG the tool, GnuPG the library; or any of the other libraries? Web of Trust? All of it? None of the above?

Any time this topic comes up, here and elsewhere, I find that most discussions revolve around different understandings and misunderstandings what people mean when they say “PGP”, and rarely lead to anything beyond that. - no this is PGP no you’re wrong that is PGP and so on and on…

▲dale_glass 14 hours ago | parent | next [-]

Almost all of it, yes.

The packet format is awful, full of complexity, backwards compatibility mess, and serious security problems.

The spec is pretty awful in that a lot of the complexity is due to keeping compatibility with things that are a terrible idea. And also in that the general concept of a long lived key turned out to be a bad one.

The library or lack thereof IMO cripped PGP/GPG back when it was relevant. It's nigh impossible to make tooling for it, or it was until Sequoia showed up, which was extremely late. Things like doing stats on keys, or doing anything but what the binary wants to do were terribly painful until Sequoia.

The Web of Trust was an interesting idea for a while, but failed to transition to the modern internet.

By the time you fix all the things what remains looks nothing like PGP, so it amounts to "all of it is bad".

▲HoldOnAMinute 16 hours ago | parent | prev | next [-]

PGP: The flamethrower (kids love this one)

▲tptacek 17 hours ago | parent | prev | next [-]

All of those things are liabilities (I read them carefully and mentally checked them off one by one; I'm not just being rhetorical). I wrote a sibling comment going into more detail, but happy to answer questions.

▲tejohnso 13 hours ago | parent [-]

Well, gpg2 is an implementation of openpgp and is GnuPG the tool correct? So are you saying that when I `gpg2 --symmetric myfile` I'm doing something harmful rather than useful?

The expectation is that anybody who ends up with the encrypted copy would have an impossible time trying to decrypt it without, I don't know, millions of dollars worth of compute per year for decades to throw at it or something like that.

▲woodruffw 17 hours ago | parent | prev [-]

Each of these bad in a different and exciting way, if your idea of exciting is reading mailing list threads.

(The idea of trust networks is not bad. But PGP’s implementation of them is bad.)

▲kstrauser 8 hours ago | parent [-]

What’s a better one? Are you thinking of something like Keybase?

▲m348e912 18 hours ago | parent | prev | next [-]

>PGP itself is a security liability in almost every system that hosts it.

Elaborate

▲tptacek 17 hours ago | parent | next [-]

Secure messaging is its own (increasingly well-defined) cryptographic problem. Group secure messaging is a distinct problem with its own cryptography. Backups are their own problem with their own constraints. Package signatures are their own problem.

There isn't one cryptosystem that does all these things. For messaging you want a carefully-defined notion of forward secrecy and post-compromise recovery, along with a careful decision about repudiation/non-repudation (1990s cryptography doctrine would suggest you just always want nonrepudiabilty, which turns out to be disastrous for privacy). For backup, you want deduplication and content addressing. For packages, you want transparency logs. You almost never want long-lived keys, but you often want identify binding.

PGP solves basically none of these problems, and offers instead a 1998 API (I'm not kidding, I thought about what year to pin it at) to basic cryptography primitives.

▲riedel 18 hours ago | parent | prev | next [-]

I guess the code base has really become a bit messy over time with all that parsing and different crypto algorithms. But the attack surface can be significantly reduced by using sq or even better stateless sqop.

▲some_furry 18 hours ago | parent | prev [-]

https://gpg.fail/

https://www.latacora.com/blog/2019/07/16/the-pgp-problem

Recommendations: https://soatok.blog/2024/11/15/what-to-use-instead-of-pgp/

We don't need to keep elaborating or re-litigating the same discussion. The PGP idea of "one tool to rule them all" is a terrible cryptography design, and the world is better off the sooner we stop trying to make it work.

▲upofadown 17 hours ago | parent [-]

Obligatory response to "The PGP Problem":

* https://articles.59.ca/doku.php?id=pgpfan:tpp

By what I saw, there wasn't really anything anyone would care about in https://gpg.fail/ . The GnuPG problem actually declined to respond to some of them.

▲voooduuuuu 18 hours ago | parent | prev | next [-]

Another thing is also that email itself was not designed with encryption in mind and because it is decentralized and backwards-compatible it is hard to enforce new rules (everyone should use PGP).

But PGP is useful if both sender and receiver agree to use PGP.

▲woodruffw 18 hours ago | parent [-]

> But PGP is useful if both sender and receiver agree to use PGP.

Anecdotally: this works until you add a third person who responds to the thread in plain text, with everything threaded beneath. Or when you do that by accident.

Applied cryptographers will tell you to use Signal or any other E2EE chat.

▲user3939382 18 hours ago | parent [-]

Signal isn’t owned by the users and independent of third parties the way PGP/GPG is so regardless of who will or won’t suggest a substitute it’s not.

▲woodruffw 17 hours ago | parent | next [-]

Why is “owned by the users” (whatever that means) the quality you’re testing cryptographic protocols against?

▲TFNA 16 hours ago | parent [-]

Signal's has buildable source code on the client side and all. However, the server code is closed source and the developers have made disquieting changes like uploading most users' contact lists to the server protected only by Intel SGX that is known to have vulnerabilities exploitable by a nation-scale actor.

▲woodruffw 16 hours ago | parent [-]

The point of E2EE is that you don't need to trust the server that you're talking through. A secure E2EE scheme is secure in the presence of an actively malicious server.

I think SGX is a red herring in this context. You can find it risky or not, but it's (1) not material to Signal's E2EE property, and (2) materially better than email, which sends all contact metadata in plaintext, regardless of whether you try and encrypt your message bodies. Bringing it up in this context seems like a category error.

▲cowlevel 13 hours ago | parent [-]

Is this accounting for the fact that they kill people based on metadata? More technically complex and unreliable protocols such as SimpleX attempt to also protect the metadata.

▲woodruffw 12 hours ago | parent [-]

Is what accounting for that? If you're worried about metadata leaks, you shouldn't be using email, full stop.

▲TFNA 4 hours ago | parent [-]

By "metadata" GP is presumably talking, as I was, about Signal uploading most users' contact lists to the server with weak protection.

▲akerl_ 2 hours ago | parent [-]

The point is that if the comparison point is PGP-encrypted email, which has no protection for any metadata and passes it on the wire in the clear, raising concerns about Signal’s metadata protections makes no sense.

▲gatlin 17 hours ago | parent | prev [-]

XMPP + omemo

▲SecretDreams 14 hours ago | parent | prev [-]

Can you elaborate? I know of commercial softwares that use it still where only the softer has the private key. Seems to work pretty well, but this is slightly out of my normal scope.

▲tait 13 hours ago | parent | prev | next [-]

I remember joking with a professor that he should not use PGP for email privacy because it would make his content more of a target.

That one turned out to be true…

https://www.propublica.org/article/the-nsas-secret-campaign-...

▲dylan604 18 hours ago | parent | prev | next [-]

The biggest issue of using PGP was using PGP. You were pretty nerdy to be on the internet back then, but even then using PGP was beyond what the majority of people wanted to do. Exchanging keys was problematic. Writing text in one app, encrypting in another app, copying encrypted back to an email was just tiresome.

I'm still glad that it existed as its mere existence seems to have pushed things in the right direction as far as protecting everyone's ability to use encryption if they chose. It just never became the panacea it was envisioned to be.

▲upofadown 17 hours ago | parent | next [-]

One big usability issue these days is that PGP identities come in the form of a file. Lots of people don't have the concept of that anymore.

Dunno that things have gotten much better over the years. End to end encryption is still fairly unusable to most. I think that rather than spending so much time on the cryptography we should instead work on a E2EE usability standard. Having everyone doing their own thing with respect to usability is not working out.

▲boomlinde 15 hours ago | parent | next [-]

ASCII armored exports suitable for plain text copying and pasting and inclusion in other documents and messages seem to be the norm for sharing. Keys are referred to by keyid or email. To the key database, files seem more like an implementation detail.

It provides the tools necessary to implement a simpler workflow.

▲GJim 6 hours ago | parent | prev | next [-]

> One big usability issue these days is that PGP identities come in the form of a file. Lots of people don't have the concept of that anymore.

Mind. Blown.

▲dylan604 15 hours ago | parent | prev [-]

The term E2EE has been subverted. Apps like WhatsApp claiming to be E2EE, but only if you actually enable it, so that people think they are being encrypted when they are not does not help. ProtonMail falls into this as well where allowing email to non-encrypted addresses means there is no encryption. It's obvious to some, but not so for the majority. Very few people read the caveats that WhatsApp and ProtonMail provide.

▲traceroute66 an hour ago | parent | next [-]

> ProtonMail falls into this as well where allowing email to non-encrypted addresses means there is no encryption.

You can send password protected mails that the recipient can read in the browser given a pre-shared password. https://proton.me/support/password-protected-emails

▲DharmaPolice 6 hours ago | parent | prev | next [-]

WhatsApp doesn't have any option to enable/disable encryption for standard messages that I can see. Business chat messages are not encrypted and neither are backups (by default) but if Alice messages Bob on a fresh WhatsApp install, the message is E2EE (as far as I know). Is that incorrect?

▲wongogue 4 hours ago | parent [-]

WhatsApp backups are not encrypted by default.

▲weakened_malloc 9 hours ago | parent | prev | next [-]

Can you explain WhatsApp further? Every 1:1 chat I have typically leaves a little note saying it's e2ee

▲wongogue 4 hours ago | parent | prev | next [-]

That’s Telegram. WhatsApp doesn’t have a toggle except for backups.

▲cowlevel 13 hours ago | parent | prev [-]

Telegram is the worst though, everyone thinks it's secure and it actually has no security features at all

▲__MatrixMan__ 18 hours ago | parent | prev | next [-]

There were (are? it's been a while) many PGP users on the various darkweb markets. It was great fun teaching people to use it and actually having a community to use it with.

It was pretty awkward to later emerge as the PGP expert at work. I was at that time a bit shy about explaining how I got so comfortable with it.

▲serbuvlad 17 hours ago | parent | next [-]

The fundamental idea of technology such as PGP is that the percentage of stuff worth finding for the authorities needs to be really low. Ie. an incredible amount of "legitimate" innocent traffic needs to be flowing through the technology.

Otherwise, anyone who is using it at all will get court ordered and then, with our current system, you just lose.

Tor solves this by making traffic entirely homogenous such that any "it could be anyone" and by making nodes extraordinarily easy to host (such that any nerd can just leave one running 24/7). Even so there are way too few nodes.

But PGP-over-email is way too metadata leaky, and if you're doing anything that actually has a threat model, you need PGP-over-email to be itself common.

▲dylan604 15 hours ago | parent [-]

Even today, you still need an external program to your email app to enable encrypted messages with in the email app. With that, the number of encrypted emails will be extremely low relatively. Even looking at Tor, the amount of users is still much lower than the internet in general. To the point, I doubt a very high amount of traffic is "regular" traffic to raise the noise floor.

▲WolfeReader 13 hours ago | parent | prev [-]

It's easy to explain. "I use PGP for my personal notes (symmetric) and for e-mailing my security conscious friends (public-key)". That's sufficient and not awkward.

▲__MatrixMan__ 12 hours ago | parent [-]

Yes but that explanation doesn't help you teach people how to use it in an adversarial context. Then they're just following arbitrary rules set down by privacy nerds for seemingly arbitrary reasons.

▲Steve44 6 hours ago | parent | prev | next [-]

I used it for a little while and Turnpike email software from the UKs Demon Internet integrated it pretty well.

The problem was only one other person I knew actually used it, it didn't really have a justifiable use for most people.

I did use the encrypted mountable drives for a while, that worked very well. I since moved to TrueCrypt and now onto Vercrypt and haven't used a PGP product for probably over 15 years.

Shame really but it just didn't get enough traction.

▲oger 17 hours ago | parent | prev [-]

To be honest: I keep hearing that PGP was / is difficult to use. That couldn‘t be further from the truth - but somehow it has become an urban myth. From the very first versions that I used on my first Mac up to GPG Mail or Proton Mail I never encountered any significant difficulties and could successfully exchange messages with my peers - both in business and private contexts.

▲alkonaut 4 hours ago | parent | next [-]

It's still extremely difficult.

If we assume that the threshold of what is "difficult" is for example 1) installing a desktop application, or even running a deskop OS.

2) Running an email provider other than what you are already doing (gmail, hotmail, yahoo mail, ...), or switching email providers

3) Copying and pasting text or using files.

This was perhaps a viable thing to do for users in 2005 because if you were on the internet, chances are you at least had a desktop computer, and if you used email chances are you already had to struggle with an email client.

But now? Anything that isn't as easy as installing an app on your device (a device that isn't a full computer) is "difficult".

It's not that it's harder today, it's that everything else is easier (Like telegram/signal and other privacy-minded services), and that there are now 6 billion internet users and most never used a computer and never will.

▲zikduruqe 3 hours ago | parent [-]

> It's still extremely difficult.

I don't see how. You just type "gpg -e -r receipient@domain.com filename.txt". It doesn't get much simpler than that. It's not like you are using ffmpeg, imagemagick, or other programs with a hundred switches in it.

Also PGP/GnuPG is not only for email. I encrypt and decrypt hundreds and hundreds of payloads per day, programmatically between trusted and untrusted networks.

And it is mandatory for each employee to upload their public key to our keystore so that we can deliver private information to them securely over Slack, Teams, or other communication channels.

▲tgsovlerkhgsel 13 hours ago | parent | prev | next [-]

At least the versions I remember had a really bad UX for marking keys as trusted.

The correct operation for (even locally) marking "this key belongs to person X" is signing the key. Marking it as "trusted" indicates "this key is a CA that can create statements who other keys belong to", but it's easier to find/"understand".

So if you haven't first studied the details of the security model and terminology, you just start increasing the trust level on the key of your communication partner until the warnings go away, not realizing that by doing this, you've made that key a CA and the reason the warnings disappeared is because you now trust the self-signature (in addition to all other signatures the key issued).

▲jcranmer 17 hours ago | parent | prev | next [-]

I once had a chat with a security professor who had decided to try to get his group to use encrypted email for all of their communications. And they just couldn't get mailing lists working right with encrypted email.

▲datas 17 hours ago | parent [-]

The sender has to encrypt with everyones individual key wonder why he couldn't get it to work.

▲Joel_Mckay 16 hours ago | parent [-]

In general, a session/thread ephemeral key pair is exchanged with the participants, and only each users private origin signing validates each sender sections. Since the signatures are passively checked, it does not need redone after each append operation.

Thus, participants are pooled under 1 time constrained key exchange, participants sections origins are signed/time-stamped, and the ciphertext expires on a schedule.

Why? so at some future time side-channel key exfiltration can't be used to data mine the entire history of past tapped conversations/ciphertext. Even if a private signing key is stolen, it is difficult to rebuild the lost ephemeral key session.

Have a nice day. =3

▲sire-vc 15 hours ago | parent [-]

My eyes glazed over reading that. I feel like 30 years of internet has proven one thing: the simplest solution always wins. PGP is many things, but simple and obvious are not among them.

▲Joel_Mckay 14 hours ago | parent [-]

Mozilla Thunderbird e-mail client, and Android k9 mail makes pgp/gpg public key handling fairly trivial.

Depends what you do, and if your organization has a persistent clown infestation. Some big business folks still use email as a human to API interface.

Running out-of-band public keychains is not something most people will ever need. =3

▲dylan604 15 hours ago | parent | prev [-]

Please, enlighten me on how you used PGP where calling it hard to use is so far from the truth. ProtonMail only works if you send messages to another ProtonMail user. It does not protect you when you email someone else.

▲traceroute66 an hour ago | parent [-]

> ProtonMail only works if you send messages to another ProtonMail user.

Your wording is not entirely accurate.

ProtonMail works perfectly well with external PGP. You can import third-party keys and IIRC it also supports WKD.

So its not "only another ProtonMail user".

IN ADDITION .... you can also send an encrypted, password protected message to a non-Proton Mail email address. The recipient can read it in the browser: https://proton.me/support/password-protected-emails

▲datas 18 hours ago | parent | prev | next [-]

There's a lot of negativity around pgp, but I actually like the fact that you see the raw ciphertext as opposed to everything happening in the background.

I also like the portability of openpgp.js its pretty versatile in my opinion.

https://openpgpjs.org/

▲forgotmypw17 an hour ago | parent [-]

Agree, we use OpenPGP.js in our web projects. It's great for combining it with server-side GnuPG.

It used to be more of a concern without TLS, but now it's reasonably secure to use.

We use it for the user sessions, allowing the client to own their session and identity.

The browser generates the keypair and signs each post and login challenge, so the private key never leaves the client. The server only stores the public key (as a plaintext file in git) and verifies signatures with GnuPG, which means there's no password hash in the database to leak, and the identity is just a fingerprint anyone can audit. Using two independent implementations (OpenPGP.js on the client, GnuPG on the server) is a nice bonus.

▲gjvc 15 hours ago | parent | prev | next [-]

I learned C from PGP

▲jpnichols01 14 hours ago | parent | prev [-]

so wild, but cool to see