7 ms·
Carry propagation is one pixel in the 4K movie that is safe crypto implementation. One reason not to link to trivia and factoids about safe crypto implementatio
by brians 9y ago
Carry propagation is one pixel in the 4K movie that is safe crypto implementation. One reason not to link to trivia and factoids about safe crypto implementation is that it builds a dangerous false sense of competence.
There are programs that teach this, but they take years. Nobody who's passed through that is interested in creating an easy scaffolding whose levels are unclear.
- pierrebai 9y agoI 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 stakes are high. Getting it wrong carries bigger consequences than a normal program. So stop propagating that crypto is hard. (Because people do hard stuff everyday and might thus think they've got the right stuff to write crypto.) Say that crypto has too high stakes to be done off the cuff.
- idlewords 9y agoNo, 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.
- tptacek 9y agoDistributed databases. Medical imaging.
- ivanhoe 9y agoAriane 5 rocket crashed in 1996 because of one wrong int conversion, costing Euro Space Agency something like $500 millions... how about that for "one small detail"? :)
- lisper 9y agoMars Climate Orbiter too (http://www.cnn.com/TECH/space/9909/30/mars.metric.02/ http://www.cnn.com/TECH/space/9909/30/mars.metric.02/)
- dahart 9y agoI 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 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 http://sunnyday.mit.edu/papers/therac.pdf [2] https://en.wikipedia.org/wiki/2009%E2%80%9311_Toyota_vehicle_recalls https://en.wikipedia.org/wiki/2009%E2%80%9311_Toyota_vehicle... [2] http://www.embedded.com/electronics-news/4423365/Toyota-Camry-L4-case--the-single-bit-flip-that-killed http://www.embedded.com/electronics-news/4423365/Toyota-Camr... [4] https://www.youtube.com/watch?v=-2ml6sjk_8c https://www.youtube.com/watch?v=-2ml6sjk_8c
- deleted 9y ago[deleted]
- idlewords 9y agoI agree too! 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.
- dahart 9y agoI see a few kinds of intermediate crypto errors possible. You can weaken the crypto without breaking it, you can leak metadata, you can screw up protocols without compromising the algorithm, etc.. But yes in some sense you're completely right, perhaps just because the aim of a crypto algorithm is so narrow? The number of things you can do right with a pair of encrypt/decrypt functions is so limited that the number of things you can do wrong is also pretty small. There's certainly a lot more than can go wrong with "drive a car" than with "encrypt this message".
- munificent 9y ago> I can't think of another programming domain where that holds. Static type systems.
- mindcrime 9y agoExperience shows that getting one small detail wrong is as bad as getting the whole thing wrong. Then it's highly likely that there isn't a single "completely" secure crypto implementation in existence...
- IncRnd 9y agoWhat is the definition of "crypto" that you are using?
- lisper 9y ago> 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 this But you aren't going to tell me what they are or how to go about finding them? Again, this is not helpful.
- TylerE 9y agoWith all due respect, some things should only be done by trained professionals. Crypto is one of them. Flying a commercial airliner is another.
- lisper 9y agoFunny you should choose flying an airliner as your example because I happen to be a pilot. I don't fly airliners. I'm just a private pilot who flies small planes. But despite the fact that I'm not a "trained professional", I can fly a plane safely. And the reason I can do this is because the flying community does not have this attitude that flying should only be done by trained professionals. To the contrary, the flying community has the attitude that anyone can learn to fly, and if you want to to it, all you have to do is find your nearest general aviation airport where you will almost certainly find a flight school, which will put you behind the wheel (so to speak) of a plane the very same day (though, obviously, with supervision). 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 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.