4 ms·
I never really understood the appeal of nerding out on cryptography. As soon as you get it in your mind to do some fun innovating people tell you (correctly) to
by hwers 5y ago
I never really understood the appeal of nerding out on cryptography. As soon as you get it in your mind to do some fun innovating people tell you (correctly) to "never roll your own crypto". Unless you're super talented at math (on the PhD level) and actually could roll it on your own then I don't really see why you shouldn't just abstract it in your head as a solved problem like modern day assembly code arcana (though I guess I'm curious about other peoples perspective).
- dr_zoidberg 5y agoI work in digital forensics. You wouldn't believe the misconceptions about "crypthgraphic hashes" and cryptography in general that are around in my area. If everyone took an intro course to cryptography that wouldn't happen as much as it does. So there you have, one reason to take this course that is not "roll your own crypto" (which you should never do, unless you really really really know what you're doing. And even then you should check with a few people smarter than you to make sure everything is as you think it is.
- lbriner 5y agoYou are right that the basics are often misunderstood but an Intro course this is not! Knowing what prime factoring is can be interesting if you like maths but definitely not required to understand on a practical level the difference between symmetrical, asymmetrical and things like CSPRNG vs hashing.
- vlovich123 5y agoFirst, those people don’t materialize out of nowhere. They usually learn from this kind of content. Secondly, the “don’t roll your own crypto” is general advice. It means “you’re probably trying to solve a problem that already has a battle-tested solution. A lot of really talented people clearly roll their own crypto, otherwise we wouldn’t regularly have innovation in this field (although to be fair probably 90% of the ones that get traction are from DJB). Finally, even if you should troll your own crypto algorithm, you probably still need to apply it to your problem domain. Understanding how to think about those attack vectors helps you understand the trade offs of which algorithms to pick. This makes the collaboration with a security team/security review more meaningful.
- tptacek 5y agoWe don't regularly get innovation from generalists who pick up and figure out cryptography on their own. Daniel J. Bernstein is a professor of cryptography. Most of the innovations we see in cryptography come from people with graduate degrees in cryptography. If you're someone like that, you don't need advice from random people on the Internet about whether you should practice in your field. Obviously, you should. But if you're someone who mostly spends their time writing general-purpose software and just find cryptography super fascinating or morally compelling, you do need the advice, because the cryptography you come up with is likely to get somebody hurt.
- vlovich123 5y agoOf course you need the advice. If you're going to be working with cryptography it never hurts to know just a bit so that you can have an intelligent conversation with cryptographers. However, I'll challenge your assertion. I've never done a graduate degree in cryptography. That reading list however is a good grounding in the landscape of cryptography & doesn't cover more esoteric things that are really things that cryptographers focus on. That reading list is one I've learned by practicing over the years & making sure to diligently read the various descriptions of each encryption algorithm. I think you're confusing developing new cryptographic algorithms and applying cryptography to day-to-day problems. DJB designs new fundamental cryptographic algorithms. Those cryptographic algorithms are part of cryptographic operations that solve common problem types (e.g. DSA type algorithms for signing/verification messages, Diffie-Hellman type algorithms for key exchange, symmetric algorithms for encryption, KDFs for key derivation, etc etc). This reading list is extremely helpful for a generalist who is given the task of "add security" to some project and needs to understand where to start: are they exchanging keys, are they signing messages, encrypting, etc. Cryptographers may also work on new algorithm families (various zero knowledge proofs, etc). So for example, you probably have cryptographers at Signal who work on figuring out how to apply cryptography in novel ways to solve their business problems. However, it wouldn't surprise me at all if companies have generalists collaborating with cryptographers as that's generally what I've observed everywhere. Different skillsets are useful and provide different perspectives as long as everyone can mostly keep up with each other because a problem is usually multifaceted & benefits from being tackled from multiple angles at once. TLDR: Gate-keeping isn't useful.
- Nursie 5y ago> I never really understood the appeal of nerding out on cryptography Gaining an understanding of how it works can help you avoid some of the pitfalls when dealing with it. IMHO I always work better when I understand what's going on at least one layer down from where I'm playing. Nerding out on it can also help you understand how serious some attacks are and how broken your systems might be. Never roll your own is good advice in production. Knock yourself out for test systems, for fun and exploration, but if you have some 'fun innovating' that you think might be good for real world use, pay someone that knows their stuff to audit it before trusting it. That's just common sense when it's so easy to get wrong.
- FiberBundle 5y agoEven if you use existing implementations, you can still use them in the wrong way and really screw up. Knowing how to correctly use implementations and what mistakes to avoid should be required for anybody using cryptography and that takes some familiarity with the material.
- grifball 5y agoYeah, there's a lot of crypto that's specifically tailored to minimizing the effect of mistakes like IV-reuse and it's not solved, the primitives can't do everything, so it's good to know these pitfalls. This book is more theoretical than that though and there's probably better sources idk.