Earlier quoted context omitted.
Is it possible that you are expecting the cryptography community to be one organized around being newbie-friendly and encouraging to beginners? The crypto community has repeatedly been burned by overeager beginners with false senses of competence making rather nasty mistakes. Consequences can be dire, from destroying companies to getting people killed. On the lighter end, you have things like Decrytocat. In some aren…
> Is it possible that you are expecting the cryptography community to be one organized around being newbie-friendly and encouraging to beginners? Not at all. I'm not actually expecting anything. All I'm saying is that as a matter of common courtesy (in any field) if you're going to say, "You just have to know X" then you should do at least one of the following: 1. Check that if someone doesn't know X that they can ge…
How I implemented my own crypto
311–320 of 409 posts
Re: How I implemented my own crypto
#312Earlier quoted context omitted.
I wish the meme that crypto is hard would just die. The reason is that the statements is wrong and is probably encourage exactly what it wants to discourage. Crypto is hard is not factually incorrect. The problem is that it is trivially correct, because programming is always hard. Every algorithm and design is hard to get right. The correct statement, and the one that should be repeated instead is that crypto's stake…
No, crypto is actually hard. One difference from regular programming is that there really are no 'intermediate' errors. Experience shows that getting one small detail wrong is as bad as getting the whole thing wrong. I can't think of another programming domain where that holds.
But there are lots of domains where details matter and small errors have big consequences. Vehicles, medicine, and manufacturing are all places where errors have killed people. Obviously severity depends on the situation, but generally speaking I'd rather my encryption get broken than die.
Software defects in the Therac-25 radiation therapy machine killed several people [1].
Software defects in Toyota's acceleration killed 37 people [2]. "We've demonstrated how as little as a single bit flip can cause the driver to lose control of the engine speed in real cars due to software malfunction that is not reliably detected by any fail-safe," Michael Barr, CTO and co-founder of Barr Group, told us in an exclusive interview. Barr served as an expert witness in this case." [3]
Self-driving autopilot has got to be pretty hard. [4]
[1] http://sunnyday.mit.edu/papers/therac.pdf
[2] https://en.wikipedia.org/wiki/2009%E2%80%9311_Toyota_vehicle...
[2] http://www.embedded.com/electronics-news/4423365/Toyota-Camr...
Re: How I implemented my own crypto
#313Earlier quoted context omitted.
Not at all. If I don't know how to sign up for med school, I can find out by searching for "How do I sign up for med school?" or even "How do I become a doctor?" If I search for "How do I sign up for crypto school" the results are far less helpful.
I think you are arguing yourself into an absurd corner here, because I know for a fact that you can name off the top of your head five university crypto programs, and I'm sure you realize that for each of the ones you can name, there are 10 more that others can name. And: for what it's worth, I don't think going to school is the only way to learn this stuff. I just don't think putting end-users at risk, especially si…
> If someone posted a message on HN about doing DIY appendectomies with Arduino-controlled robots and I pointed out that you need to go to med school to do surgeries, you would not in fact be harping on me for not having explained why.
Actually, I might well harp on you for saying that, but that's a different topic.
My complaint is not that you're pointing out that crypto is hard. It absolutely is. My complaint is much narrower than that. It is specifically a complaint about making statements of the form, "You just have to know what X is" when X is not something that is easy to look up. "Carry-propagation bug" is such an X. "Appendectomy" is not.
And all I'm asking for is that you (not just you, but anyone who writes about things like this) add something like, "If you don't know what a carry propagation bug is, here's a pointer..." or "... it's when you're doing bignum math, you have a carry from one digit to the next, and you mess that up. These bugs are particularly nasty because they only manifest themselves very rarely and so are easy to miss in testing." Or something like that.
Re: How I implemented my own crypto
#314Earlier quoted context omitted.
> You just have to know what a carry propagation bug is This is one of the things that drives me nuts about the crypto community. The natural response upon reading, "You just have to know X" if you don't already know is to go search for X. Well, if you go search for "carry propagation bug" you will find lots of examples of carry propagation bugs being found and fixed, but no explanation of what one is. The thing that…
Give me a fucking break. Sean, Marcin, and I spent the better part of a year individually replying to tens of thousands of emails from people doing the Cryptopals challenges that we wrote and published for free. Do you know how much work that was? Here's a hint: it was a lot of work. There are a lot of charges you can level at me to try to win a dumb message board argument, but the one where I want cryptography to be…
This is more an indictment of the whole community that there aren’t clear glossaries or other introductory resources with good google juice, and doesn’t necessarily reflect much on your specific comment or intent.
He could have phrased it much better, but I think you’re also overreacting.
Re: How I implemented my own crypto
#315Earlier quoted context omitted.
I think you are arguing yourself into an absurd corner here, because I know for a fact that you can name off the top of your head five university crypto programs, and I'm sure you realize that for each of the ones you can name, there are 10 more that others can name. And: for what it's worth, I don't think going to school is the only way to learn this stuff. I just don't think putting end-users at risk, especially si…
I re-read your GP comment, and I think I misread it the first time. Let me try this again. > If someone posted a message on HN about doing DIY appendectomies with Arduino-controlled robots and I pointed out that you need to go to med school to do surgeries, you would not in fact be harping on me for not having explained why. Actually, I might well harp on you for saying that, but that's a different topic. My complain…
I submit that "carry-propagation bug" is easily looked up.
You're asking for people to provide footnotes and extra information so that you can learn what they're talking about when they delve into jargon. I get it. It makes it so much easier to follow along. Then you can learn!
Two points come to mind. First, the bit of jargon you've picked on is in fact easily investigated with tools you are already familiar with. Second, you're asking people writing for an audience of their choice to redefine it to include arbitrarily lay people. Which may not be maximally reasonable - there's a reason Watson and Crick's paper didn't include a primer on what X-rays are.
Re: How I implemented my own crypto
#316Earlier quoted context omitted.
No, crypto is actually hard. One difference from regular programming is that there really are no 'intermediate' errors. Experience shows that getting one small detail wrong is as bad as getting the whole thing wrong. I can't think of another programming domain where that holds.
I agree crypto is actually hard. But there are lots of domains where details matter and small errors have big consequences. Vehicles, medicine, and manufacturing are all places where errors have killed people. Obviously severity depends on the situation, but generally speaking I'd rather my encryption get broken than die. Software defects in the Therac-25 radiation therapy machine killed several people [1]. Software…
Re: How I implemented my own crypto
#317Earlier quoted context omitted.
No, crypto is actually hard. One difference from regular programming is that there really are no 'intermediate' errors. Experience shows that getting one small detail wrong is as bad as getting the whole thing wrong. I can't think of another programming domain where that holds.
I agree crypto is actually hard. But there are lots of domains where details matter and small errors have big consequences. Vehicles, medicine, and manufacturing are all places where errors have killed people. Obviously severity depends on the situation, but generally speaking I'd rather my encryption get broken than die. Software defects in the Therac-25 radiation therapy machine killed several people [1]. Software…
The point I'm trying to make is that even in critical software, where people's lives are in the balance, there can be minor errors that don't bring down the entire edifice. Whereas in crypto code, there seems to be only one kind of error possible.
Re: How I implemented my own crypto
#318Earlier quoted context omitted.
Give me a fucking break. Sean, Marcin, and I spent the better part of a year individually replying to tens of thousands of emails from people doing the Cryptopals challenges that we wrote and published for free. Do you know how much work that was? Here's a hint: it was a lot of work. There are a lot of charges you can level at me to try to win a dumb message board argument, but the one where I want cryptography to be…
Read charitably, his post is more an expression of frustration that this concept that is supposed to be an obvious well-known keyword was difficult to find out about in a google search. https://encrypted.google.com/search?hl=en&q=carry%20propagat... This is more an indictment of the whole community that there aren’t clear glossaries or other introductory resources with good google juice, and doesn’t necessarily refle…
Re: How I implemented my own crypto
#319Earlier quoted context omitted.
Why don't you ask them? Most of these people aren't hard to get ahold of. One of them you even share a Slack with. I would be surprised to learn that any of them believed doing a library implementation of pre-existing crypto constructions was an important part of their education, but I like to be surprised.
I did ;) surprise
Re: How I implemented my own crypto
#320Earlier quoted context omitted.
> Carry propagation is one pixel in the 4K movie that is safe crypto implementation This is exactly the sort of thing I'm talking about. This is semantically equivalent to, "If you don't already know this, then you are too stupid, and my time is too valuable, for me to do anything beyond pointing out that you are stupid and my time is valuable." That may be true, but it's not helpful. > There are programs that teach…
With all due respect, some things should only be done by trained professionals. Crypto is one of them. Flying a commercial airliner is another.
The crypto community's attitude seems very different, far less welcoming of newcomers. The aviation community's attitude towards newcomers is, "Come on in, we are happy to help you take your first step on this exciting journey." The crypto community's attitude feels more like, "Go away, you ignorant dweeb, we are far too busy doing Hard Stuff to bother with the likes of you."
And, BTW, I say this as someone who runs a company that sells a crypto product (https://sc4.us/hsm), so I'm not exactly a beginner any more. But I was once and I still remember what it was like, so I have sympathy for people who want to climb the learning curve and find it difficult. I think the world would be a better place if more people learned more about crypto, and so I do what I can to try to remove obstacles.