Show HN: Kryptor – A simple, modern, and secure encryption tool
kryptor.co.uk
kryptor.co.uk
Kryptor example:
$ kryptor -e -p test.jpg
Same thing with GPG: $ gpg -c test.jpg
So how can unused features in a command line utility make something "practically unusable"?$ kryptor -e test.jpg
The difference is that this uses your encryption private key. However, I will look into just supporting -p because that's a fair point, although that would be trickier to implement.
As for the unusable statement, I'm referring to the long list of other commands, which is more linked to digital signatures than encryption. For instance, there are entire guides and hour long YouTube videos on how to use GPG.
Edit: I've reworded my criticisms of GPG to clarify that it's not universally difficult to use.
Gpg is hardly perfect - but I'm not sure how useful public key signature and authenticated encryption modes are without key management?
Are there any kind of embedded timestamp for signatures and encrypted files (signed at/valid to etc)?
Ed: I gather the main focus of this project is to extend age with minisign - but I worry that what's really needed is a (new, not PGP) standard format - that allows authenticated encryption and signing - and possibly with date/validity for signatures (beyond merely an ad hoc use of minisign trusted comments - a standardized use of minisign comments might be fine?).
At any rate, I'm not too thrilled about the age projects stand on signatures:
https://github.com/FiloSottile/age/issues/51
I strongly believe one of the main uses of encryption is enabling trust - and that implies trusted keys, trusted content and trusted signatures - along with a notion of time.
They might be constructed out of primitives - but a user facing cli/gui should probably be strongly opinionated, and have good training wheels to make misuse and misunderstanding as difficult as possible..
The recommended way of sharing keys is via social media, GitHub, your website, etc. Unfortunately, Keybase has now been abandoned and was acquired by Zoom, so that's not worth using anymore. However, I don't personally see how this method of sharing is that problematic. I think it does the job sufficiently.
There are no timestamps for signing or encryption, but as you mentioned, you could use the comment functionality to add a timestamp for signatures.
A new standard format would be ideal, but that's probably not going to happen for a long time. I'm also disappointed by the stance on signatures, although there are several other things that are wrong with age, which is why I decided to make my own tool, not that it's perfect by any means either. I like to think I did a much better job documenting things though.
https://keys.pub has been trying to solve this too for some time.
Good luck with that.
'So how can unused features in a command line utility make something "practically unusable"?'
By destroying the documentation's utility to someone who just wants to do some particular task, but has that much documentation to wade through.
There is a lot of features that you can get deep into the weeds with. But the common use cases are dirt simple.
Put another way, it would be easier to teach a grandparent how to use gnupg than it would be to teach something like age.
However, I'll admit that my original wording was too harsh in the case of simple encryption. I also agree that GPG with that command is slightly easier than age, although the documentation for age could be better in my opinion. GUI applications will always be best for the average user.
The other point of new tools is to make changes to the file formats, cryptographic algorithms, etc and reduce the number of lines of code to make things more auditable.
I'll take too much docs any day over not enough docs.
Even your analogy is lame, because it's not like that. The "money" is what you're looking for. It's like being mad that your wallet is so stuffed with pointless expired gift cards that you can never find the money, that'd be a more accurate analogy.
The choice isn't "too much docs" Vs "not enough docs" it's "huge complicated thing" Vs "simple thing".
The C++ Programming Language (B. Stroustrup) is a far longer book than The C Programming Language (K&R) but C++ is not a better or simpler to use language by dint of having a larger book
The difficulty that people refer to is about key management that holds for any program, and email encryption, that involves setting up an email client, a plug-in, getting the other side to use encryption, etc. This didn’t scale well, because the average user wants a zero click solution.
The average user (and some times those familiar with technology) hasn’t heard of Thunderbird and doesn’t want to set that up. They have a short password and use web browsers.
If you want PGP - there's the sequoia project to consider as well:
The "stateless cli tool"[1] looks like it's mostly complete for sign/encrypt etc now?:
https://gitlab.com/sequoia-pgp/sequoia-sop
sqop generate-key julia@example.org > julia.secret.pgp
sqop extract-cert < julia.secret.pgp > julia.public.pgp
echo "a message" | sqop encrypt julia.public.pgp > message.pgpo
sqop decrypt julia.secret.pgp < message.pgp
a message
[1] https://www.ietf.org/archive/id/draft-dkg-openpgp-stateless-...Apparently expired? Was sop abandoned?
% gpg -c hello
gpg: problem with the agent: No pinentry
gpg: error creating passphrase: Operation cancelled
gpg: symmetric encryption of 'hello' failed: Operation cancelledI liked the considerate UI touches too, such as automated pass-phrase generation on hitting return.
I wonder if there could be a sweet-spot of people with a bit of technical knowledge and a need for encryption beyond GUI apps, but not so much of either to make a big time investment that other command-line tools often require.
Small criticism - and it might just be me, but the perspective alternation here had me reading this part three times:
"You can use hybrid encryption to send an encrypted file to someone else. Note that this is one-way encryption. The sender cannot decrypt the file. This means that you should not overwrite the original file."
Maybe change "the sender cannot..." to something like "You cannot decrypt the file, only the recipient can, using their private key."?
(From: https://www.kryptor.co.uk/tutorial )
Kryptor is more complete. If you do public key encryption you also have to support signatures if modification is an issue. You can't just leave it to the user to figure out.
If I want to send an encrypted file to someone, don't I just need the recipient's public key? What is the role of my private key here? Is my private key used for adding my signature?
Unfortunately, due to that and the fact that the file format is fixed rather than variable in length, Kryptor currently only supports specifying one recipient at a time. Implementing multiple recipient support is a nice idea, but it's quite tricky to do and would require creating different files for different people.
Whilst that functionality could be added back in, I'm trying to keep the number of options as small as possible. Kryptor already has more options than age because it supports signatures. Having two password related options also adds confusion, and it would be slightly more tricky to support batch functionality for decrypting your private key.
> I'm only a student and not even a computer science student.
I am sold!
Don't be snarky.
Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something.
Be respectful. Anyone sharing work is making a contribution, however modest.
Instead of "you're doing it wrong", suggest alternatives. When someone is learning, help them learn more.
When something isn't good, you needn't pretend that it is, but don't be gratuitously negative.
If everyone took the 'don't roll your own crypto' motto literally, then we wouldn't have had libsodium or Monocypher. Everybody has to start somewhere. Education about how to implement things correctly, code peer review, and feedback on designs should be the norm, not 'don't roll your own crypto'. Unfortunately, some people aren't willing to do any of those things.