5 ms·
This point bears repeating every so often: cryptography is difficult, and those of us who haven't spent years in its mathematical bowels are not qualified to cr
by area51org 13y ago
This point bears repeating every so often: cryptography is difficult, and those of us who haven't spent years in its mathematical bowels are not qualified to create usable algorithms. Meaning: the encryption code you wrote yourself is probably hackable. Easily hackable.
I first encountered this in a classic essay by PGP's Phil Zimmerman: http://www.philzimmermann.com/EN/essays/SnakeOil.html http://www.philzimmermann.com/EN/essays/SnakeOil.html
edit: fix incorrect link
- stcredzero 13y agoIt's not just algorithms. Implementing the algorithms securely is also hard. Even using libraries implementing algorithms is hard. Actually, most problems are at the security protocol level. Implementing those is the hardest.
- area51org 13y agoExcellent point; I wish I'd thought to mention that. I spent a few years as a CISO, and honestly, I know that I really want anything to do with the security industry again, outside of making sure that systems and apps are as secure as I can make them. Why? Because security is a lot harder than most people recognize. Blowfish is an excellent symmetric encryption algorithm, but, as you say, it would be easy enough to implement it badly and end up with insecure, trusted code.
- tptacek 13y agoBlowfish is not an excellent symmetric encryption algorithm. For instance, it has a 64 bit block size, which makes it riskier to use in CTR mode and makes some ciphertext malleability problems easier to exploit.
- area51org 13y agoShows you what I know. :-) I assumed because Schneier created it ...
- danielweber 13y agoCrypto is in two states: broken, and not yet broken. I'm reminded of Yeats: The best lack all conviction, while the worst Are full of passionate intensity. Anyone confident in their crypto is dangerous.
- 23david 13y agoGreat link! The takeaway for me is that in an ideal world we would be able to use only strong peer-reviewed crypto written by programmers experienced in codebreaking and cryptanalysis. Phil Zimmerman admits in that article that this is his ideal standard and yet his own PGP software doesn't meet his ideal. So we're in a situation where we have to make imperfect choices. Is there any reliable guide that discusses the current best practices in securing things like ssh, VPN, etc? I get the feeling that the preference of many of the infosec professionals on HN is that a properly configured SSH tunnel is the only secure way to communicate between machines on the Internet. ( IPSec VPN connections I guess are weaker?) So just use stunnel or autotunnel? Tunneling traffic imo seems like an inelegant hack, but are there any crypto libraries that are reliable? Crypto is hard, but to be fair it's also not easy to figure out what crypto to use if you want to rely on external libraries or systems like SSH.