GPG-Tui, a Terminal User Interface for GnuPG
orhun.dev
orhun.dev
I use it daily (with secret keys on a hardware key) for passwords, back up, file encryption, some email (admittedly most recipients don’t use encryption), software verification etc.
Newer tools are simpler, but GPG is also workable.
gpg --help
provides an one line description of necessary commands. And ecrypt/decrypt is just `gpg --encrypt/decrypt`. You don't even have to specify an output file. Encrypt automatically creates a new file and decrypt outputs result in console so to put it new file a redirection is enough.But PGP is simply not a good tool.
Edit: https://latacora.micro.blog/2019/07/16/the-pgp-problem.html
I disagree with every single one of his points btw and from the looks of it, so do a lot of others.
What specific tasks have you found difficult?
However most people complaining about PGP's UI go on to explain that this is why you should use Telegram or WhatsApp. That line of reasoning is just bogus.
Which is why age has gone nowhere, and pretty much everyone keeps using PGP.
Between email phishing attacks, Dropbox and everyone else on HIBP, I honestly don’t know what advice to give non-technical users besides put it on a USB drive and drop it off. I can think of security pitfalls with literally any other file transmission technology that is easily accessible to non-technical users. If anyone has a suggestion I’m all ears.
Edit: Another is you need to manually enable the checkmark to 'encrypt file names'. Otherwise all file names are in the clear.
You could recommend to those non-technical people to either:
- Use Signal
- Sign up to two free ProtonMail accounts and use those to exchange with one another. That way they’re both e2e and don’t leave the eco-system. And no setting up of PGP keys and such like, and a nice web UI.
If they’re non-technical I wouldn’t suggest PGP IMHO. It’s actually easier to setup S/MIME for non-technical people (I’ve had some success there myself).
Of course part of this is that no one has solved the UX and usability and that it never reached mainstream in most ‘typical’ email clients. To set it all up you have to be fairly technical. When it should just work out of the box - like Signal.
Such as?
It seems the answer is Brian Warner's magic-wormhole. You're gonna see lots of file transfer sites with wormhole in their name, but if you want security you should use the original one, which is BW's m-w.
It is implemented in Python [1], so it's hard to install.
So someone made a Go version of it [2] that has binaries for windows, Mac, Linux, BSD etc. But it's command line so maybe not suitable for lay people.
So another person made a GUI for it that also has binaries for all OS [3].
Also there is an android app [4]. Someone needs to implement an iOS one.
[1] https://github.com/magic-wormhole/magic-wormhole/
[2] https://github.com/psanford/wormhole-william/
[3] https://github.com/Jacalz/wormhole-gui/
[4] https://github.com/psanford/wormhole-william-mobile/
TLDR: ask them to install [5] and [6].
[5] https://github.com/Jacalz/wormhole-gui/releases/
(click on 'Assets' under 'Latest release' and download the zip or tar.gz for your OS)
[6] https://play.google.com/store/apps/details?id=io.sanford.wor...
Try it, it's usage is cute and really feels like magic.
. .
Edit: Discussion from few days ago. The creator is in the comments.
gpg -c secretfile.zip
Not sure it can get much easier? To decrypt: gpg secretfile.zip.gpg
The point is that gpg is a tool that most people either already have or can install in a trusted way without downloading binaries from public web pages. Even more common to have installed is openssl: openssl enc -aes256 -in secretfile.zip -out secretfile.zip.enc
openssl enc -d -aes256 -in secretfile.zip.enc -out secretfile.zip
Using these tools are perfectly secure for all practical attacks. The hard part is transmitting the password over a secure channel.Public key encryption is even more useful, but requires a little more knowledge on the end user's part on key pairs, signing keys, publishing them etc. Should an end user just wish to transmit an encrypted file then symmetric encryption is easier to understand.
I don't think it's even the case that the OpenSSL project wants you to be using their code this way. It's just that Unix nerds (hey: it me) find things like this and adopt them, then write things about how they're "perfectly secure" in message board slapfights. It's a microcosm of the whole problem.
There was definitely a gap here and you filled it :)
They did have this issue recently (ouch)
https://www.theregister.com/2021/05/24/mozilla_thunderbird_o...
For signing: signify/minisign
For encryption: age
For file transfer: magic wormhole
For encrypted messaging: Signal (or your choice of e2e encrypted messaging platform)
How do you trust some key material. The WoT is a complete failure, but modern solutions like WKD are amazing and make PGP just plain work.
The one nice thing about age is the ability to encrypt to a GitHub users key. However, even that is possible with OpenPGP. Here is a tool that I made ~7 years ago that does something similar: https://github.com/georgyo/sshcrypt
Another thing minisign/age don't have is a method to say that a key is compromised.
I don't think the solution to the problems with OpenPGP is too just ignore the problems and switch to using bare keys like new tools are doing.
How would signal be compromised that email could not and which signal is not better prepared for?
I don't follow. Not everyone uses Gmail or the big email providers.
Right now that sits at about a 1 in 5 chance for Gmail alone.
Here is an example of a cool tool with modern cryptography, forward secret etc, often recommended in HN as an alternative to Wormhole:
https://redrocket.club/posts/croc/
It turned out that plaintext could easily be recovered! One mistake and 100% broken.
There are benefits to an industry standard protocol.
They recommended Brian Warner's magic-wormhole, Signal, Tarsnap, age, Signify, Minisign, libsodium.
The only valid criticism is about its handling of corrupted data, but for that too you can use an external tool like PAR2 to generate recovery data. I do this with my GPG backups and other data as well.
I like that age follows the Unix "do one thing well" philosophy, and that I can use other similarly scoped tools for other features. There are still some things I'm missing, but these are slowly being worked on[1,2].
I was responding to a comment that said that age was a "standard replacement" for GPG.
* https://articles.59.ca/doku.php?id=pgpfan:agevspgp
Age might be such a replacement some day for just the encryption function. But it has a ways to go. Actually defining the format would be a good first step.
It sticks around because it has some interface that users can use and is scriptable. Everyone saying GPG is bad usually has no general solution to replacing it.
A more fundamental design issue is simply that cryptography engineers long ago abandoned the idea of a single toolset or even a single standard design that handles multiple problems. Messaging cryptography is not the same as backup cryptography, which in turn isn't the same as secure transports, or package update security.
More here: https://latacora.micro.blog/2019/07/16/the-pgp-problem.html
I guess users could publish partial key exchanges out of band?
https://latacora.micro.blog/2020/02/19/stop-using-encrypted....
"When you feel the urge to write an email, pick up the f*king phone instead. When in 5 years you're being cross-examined you can say 'I don't remember saying that' and you won't be lying, because we're too old to remember things, and I won't have to bill you for the time it takes to read all the f*king emails."
It is true that pointing out a problem does not need to be accompanied by a solution to be valid, but at this point, if you're going to complain please work towards solving the issue. It is too easy in this case to come off as someone who "knows things" while gesticulating at GPG in a derogatory manner while still accomplishing nothing.
[...]
> if you're going to complain please work towards solving the issue
Perhaps because you are asking the wrong question: "PGP/GPG is old, broken, and insecure, what is an exact drop-in replacement that I can substitute for it?"
Instead, the question should be: "PGP/GPG is old, broken, and insecure, what is a replacement for [this specific thing I am trying to accomplish with it]?:
So what are you trying to do with GPG? Sign a package? Encrypt a file? Store a backup? Transfer a file? Send a message? There are plenty of modern, secure solutions for these.
People always join these conversations to namedrop projects to sound smart and security conscious, apparently not having tried to integrate them into their existing workflows.
If I understand your comment correctly, the reason you are using an old, insecure, and broken tool is because the secure replacement is not as widely used?
Are you looking for some specific percentage of the population to adopt it? What is that threshold?
> Signal is OK I guess, but still does not solve a lot of things a decentralized system can.
Serious question: what problem does a decentralized tool that old, insecure, and broken solve that you would use it instead of one that is secure but "centralized"?
> People always join these conversations to namedrop projects to sound smart and security conscious
I can't judge other people's motivation for mentioning PGP/GPG alternatives, but the projects they mention certainly fit the criteria for being secure replacements. Are you going to disregard their answers because you have deemed their motivations unfit?
> apparently not having tried to integrate them into their existing workflows.
If you could explain your specific PGP/GPG workflow, perhaps someone might be able to suggest something to replace it.
By "straw question", you are implying that I replaced your argument with a false one.
In the upstream comments, you agreed that PGP/GPG is broken and insecure. We have no difference of opinion there. You then stated that the reason you still continue to use it is because a) the alternatives are not getting adopted and b) are not decentralized. You also c) questioned the motives of people suggesting the alternatives, and d) stated that they have not used them in existing workflows.
All of these are things _you_ stated, I was careful to quote each point you made as I responded to them.
If I misstated your position or replaced it with a straw man, feel free to point out where I did that and I'll gladly correct myself.
I don't know - if the design were more sounds from a crypto perspective, but it was still as easy to fuck up as the current interface, would it really be better?
Also, how would it work with multiple people in a thread that can be added/removed arbitrarily, or email addresses that resolve to multiple users? Messaging and email seem like different models to begin with.
Most email users keep their messages in cloud storage (IMAP) so that changing computers is a non-issue. OpenPGP is an encrypt once scheme so that messages on an IMAP server are encrypted and stay encrypted.
That is not what is being claimed here. Unless you add extra security in the form of something like a strong unique passphrase for the archived messages then an attack that gets the private key also gets the archived messages. In general, if you have a more secure method for protecting the archived messages you could of used it to protect the private key. It is effectively the same problem.
Post-compromise security, on the other hand, makes more sense, since the future messages don't exist yet.
Just thinking, if people had the option between 1) deleting their mail and 2) email search, secure (unlike WhatsApp) and easy (unlike Signal) backups, ability to offload your email archive to the server (it's common to have gigabytes of mail, do you want to store all of it on a mobile phone forever? what happens if you drop it in a river?), and so on, don't you think people would go for option 2?
This is all disregarding the specifics of PGP-encrypted mail, for which I agree is not great.
I'm not trying to be argumentative here, I actually don't understand what the reason it's so critical is, nor have I really found any explanations online. For text messaging where you don't really go back to read your old messages, sure, forward secrecy makes sense. Email seems to be a different story where user expectation is different and forward secrecy both precludes many desired features and also doesn't provide significantly more security, other than in very limited circumstances.
Also, I'm not an advocate of PGP at all. If people can use Signal for their usecase, great! They should do that. But Signal's model does not work for everyone's usecases. How do I send a Signal message to security@example.com to report a vulnerability? Is the entire security team supposed to share a mobile phone with Signal on it? What about banks that need to send secure email to each other, but must retain all messages for compliance purposes? (Again, I'm not advocating that PGP should be used in this scenario either, just that there's room for a better solution here, possibly without forward secrecy by default).
The premise of cryptographically secure messaging is that you have an adversary recording all your message traffic.
Lack of forward secrecy implies, logically, that if your long-term secret is ever compromised, every message you've ever sent is recoverable from the adversary's archive.
The point of forward secrecy is to break that attack, so that your adversary needs your long-term secret at the time it was used to send a message; having it after the fact doesn't help.
I'm sometimes in the mood to write long posts and comments explaining this stuff, but today, on the bottom of this old thread, if you're trying to make a point about PGP vs. Signal and don't know how forward secrecy works, I'm probably the wrong person to have this conversation with.
Agreed.
>Lack of forward secrecy implies, logically, that if your long-term secret is ever compromised, every message you've ever sent is recoverable from the adversary's archive.
Also agreed. I am trying to say that this only gives you better security for messages that you have deleted on your device, because if you haven't, regardless of whether your protocol is forward-secret or not, the adversary that has the power to compromise your device will get access to the message the plaintext of which is on the device, even if the keys aren't. Thus, the scope is significantly limited, unless you have a policy to regularly delete old messages on your device, and most people do not want this for email.
I can assure you I understand the cryptographic properties of forward secrecy. I don't understand your claim that it is a strict requirement for every secure messaging system, including an email-like usecase.
>I'm sometimes in the mood to write long posts and comments explaining this stuff, but today, on the bottom of this old thread, if you're trying to make a point about PGP vs. Signal...
I already said several times I don't care about PGP. I feel like you're not really reading or responding to any of my arguments about why forward secrecy doesn't really help you much in most users' threat models or why it precludes various desirable features (of course, I could be wrong here, which is what I'm asking about). Thanks for your time anyway.