Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CryptoSplainers #1

Open
cjdelisle opened this issue May 23, 2017 · 9 comments
Open

CryptoSplainers #1

cjdelisle opened this issue May 23, 2017 · 9 comments

Comments

@cjdelisle
Copy link
Owner

cjdelisle commented May 23, 2017

Or why nobody ever encrypts anything.

well actually

Whenever anyone tries to write some kind of encryption software; there's always this guy, (and it is, almost always, a guy) who decides to weigh in on the situation.

He pops up and starts talking about algorithms and bits and attacks and all kinds of stuff that for most people sounds really scary.

I'm gonna let you in on a little secret:
Crypto is boring. We already know how to do it, it's been boring for like 20 years and unless you're doing something massively complicated like an anonymous cryptocurrency or you just make an enormous mistake, you basically can't mess it up.

You're more likely to screw up how you communicate an error message than make a key with the wrong bits or something.

But this is not what our hero the CryptoSplainer will tell you, he's going to raise critical issues about your bits and your key derivation and AES and RSA and DSA and NSA and all kind of theoretical attacks. He might even tell you that you're killing people in Kazakhstan.

Ironically, when people write apps with no encryption, CryptoSplainers leave them alone. So most app developers do the logical thing and avoid even the mention of any bits or ciphers.

So write all the crypto! Even if there is some kind of attack on it, it's better than plaintext. And if you feel that your anatomy is somehow, smaller, than it should have been, please please don't take it out on poor app developers. Buy a truck.

@cjdelisle
Copy link
Owner Author

first jes/hardbin#1

@co60ca
Copy link

co60ca commented May 24, 2017

Calm down, you are going to be okay.

@TETYYS
Copy link

TETYYS commented May 24, 2017

are you angry that you don't understand cryptography? i don't see the point of this repo, there is no code here

@johnny-bit
Copy link

johnny-bit commented May 24, 2017

Lemme `splain it to ya. When ya doin' non-encrypted soft, cryptosplainers won't bite yer arse, 'cause ya know - no crypto. Ya know why cryptosplainers bite? Because laymans do not know there are various levels of crypto - most of 'em are NOT safe. By saying "it's encrypted" while yer encryption is weak, you are lying to laymans and putting 'em to danger, since layman would choose "encrypted" over "non-encrypted". And crypto that's easily broken is worse than plain text, because it's WAY more interesting. Obviously someone choosing to encrypt their stuff has something to hide.

Now when you do "encryption" you should do your best and listen to people smarter than you in doing what's best, because it's not your pride that's on stake here - it's people's data.

And lemme give ya simpler sample: 2+2*2 is 6, and if you say "8" your teacher is not "asshole math splainer", he simply teaches you about order of operations in math is important.

@ansuz
Copy link

ansuz commented May 24, 2017

bbb110-homemade-microwave-popcorn-thumbnail-final-1024x576

@adamierymenko
Copy link

I wouldn't say it's easy to implement crypto, but it's also not as hard as the "never ever ever ever touch crypto" crowd claims. It's on the same level as correctly implementing Raft consensus or a video file format decoder. Hard, but not that damn hard.

You're also right that we mostly understand how to create decent crypto. You take an asymmetric key algo and do a key agreement. Then you take the resulting key and hash it just to be safe. Then you take that hashed key and use it to encrypt your message with an authenticated cipher, which can take the form of a combined auth/encrypt cipher like AES-GCM or a cipher plus a keyed message authentication code. In all cases you have to read up on the details of the algorithms you're using to make sure you are using them correctly -- e.g. if you are using Poly1305 then you can't use the key directly but have to generate a random one-off per-message key, etc.

You can go further: forward secrecy, ratchets, etc. But that's not necessary for the base case and the base case is infinitely better than no security.

@adamierymenko
Copy link

2/2 -- "never roll your own crypto" discourages people from learning about crypto and discourages the formation of a knowledgeable programmer culture around crypto.

This discouragement is why people keep using AES-CBC with no authentication in 2017. Programmers who even talk about crypto get smacked down by the "never implement crypto" crowd, so writing crypto turns into something akin to watching porn-- something people do in secret and lie and say they don't do.

"Abstinence based" crypto education?

@johnny-bit
Copy link

johnny-bit commented May 25, 2017 via email

@CristinaDeLisle
Copy link

il_570xn 882261381_ma00

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants