Utu: Zed Shaw's replacement for http
savingtheinternetwithhate.com
savingtheinternetwithhate.com
See http://en.wikipedia.org/wiki/Kerckhoffs%27_principle for why.
To your point, though, a security protocol implementation document that makes use of secure hashes, encryption schemes, and the like isn't typically considered credible unless it states precisely what building blocks it uses. For instance, it's not enough to say you're going to use "random numbers." You need to say how you're going to seed and generate your pseudo-random numbers. The details matter.
Had the document spent time explaining what CBC means or how AES is implemented, that would have been the security equivalent of talking too much about loops or Quicksort.
* Document them without the "mixture of humor, ranting, code, and specification language." The "specification language", presuming it's not in something Zed invented (like Stackish franken-sexps), would do nicely.
* Use well-understood, well-tested primitives, and where he deviates (ECC might be mainstream, but CCM and Needham-Schroeder public key exchange aren't), explain why.
* Describe things in terms of the cryptosystem and the goals, instead of using the least intelligible, most intimidating acronyms he can come up with (seriously, "ISO/IEC 11770-3 Mechanism 6"?).
You're exactly wrong, of course. Zed's using CCM, and an evaluator would want to know what properties his system expects to achieve from doing so. Talking about CBC (or CBC-MACs) would make him look more savvy. Instead, we get "I’ve decided to send it back as Er(Nr) but I’m not sure of the security of this."
Until the snarky bit at the end there, I agreed with you 100%.
<shaking my head>
I'll say in advance, don't blame me for the downmods -- I didn't contribute a single one.
(where'd you get security through obscurity? christ.)
good designs don't hard code silly stuff like block ciphers and prngs. those come and go. you let the two sides negotiate what cipher they want to use, and design the overarching protocol to be as secure as the ciphers being used. (see ssh.)
and i would be at least slightly curious for a pointer into where practical cryptography makes that point.
ssl, pgp and ssh are all examples of software which is generally accepted as secure, which does not mandate particular algorithms up front. see nearly every piece of snake oil out there as an example of software which does talk about their algorithms and bit counts up front.
Shaw has created a merit badge sash of crypto exotica: Needham-Shroeder key exchange (oh, sorry, "ISO IEC 48798783 without the Helsinki vulnerability"), a bizarro block cipher mode, a custom PRNG, and no explanation whatsoever of the motivation behind his choices. Of course, this is all just libtomcrypt under the hood, which probably explains the showy idiosyncrasy.
You'd be able to take something like this more seriously if Zed "So Fucking Awesome" Shaw had ever contributed any findings against TLS, or even SSH. But that would be Hard, Harder than "fighting the cargo cults" --- people much more demonstrably competant than Shaw have already shaken the bugs out of TLS.
Generally, I find Shaw's arguments and reasoning about security unconvincing. For instance, there's a place in that article where he argues that "binary protocols have fewer buffer overflows" --- he might as well just write "I don't pay attention to vulnerability research". He seems to believe that Ragel, an obscure regex-modeled lexer, is a talisman against vulnerabilities. His "Hate" protocol assumes that attackers originate from single sources, not from armadas of compromised machines.
Sigstoat isn't the first person to comment on this "top 10 list of signs of bad security" --- this is a point Schneier makes, often.
I don't mean to snipe at Ragel, just Shaw's use of it as an amulet against vulnerabilities.
Zed's advocacy for Ragel is really about using parser generators to implement internet-facing parsers.
As to your praise of the notion that the author of an open, civilian protocol is making his protocol less secure by revealing what hash functions he's using, well, I'm just going to say that I'm a practitioner too and I've never heard of openness about the algorithms involved as a sign of bad security. Indeed, I've never heard Schneier once make that point, much less hear him make it often and I read Cryptogram almost every month. Sorry, but I'm calling bull on that one.
The only folks who get a pass on not revealing their algorithms are NSA cryptographers who create Type 1 National Security systems and that's only because they have a large, knowledgeable community of cryptographers within the organization that does their peer review, thus obviating the need for vetting their protocols with the greater academic community.
Also, you already said you weren't a practitioner; which is it? Your use of the term "Type 1 National Security systems" allows me an educated guess, but you could clear it up.
Now you're trying to personally attack me. I'm not sure what your problem is or what you're trying to prove, but I am a practitioner.
See here:
http://csrc.nist.gov/publications/nistpubs/800-85B/SP800-85b... [PDF]
or here:
http://csrc.nist.gov/publications/nistpubs/800-83/SP800-83.p... [PDF]
or here:
http://csrc.nist.gov/publications/fips/fips201-1/FIPS-201-1-... [PDF]
(You won't find my name in that last document, as authors and supporting researchers are not listed on FIPS.)
I'm not going to ask about your credentials because, frankly, they don't interest me. You've jumped the shark and I'm done responding after this. Don't make this thing personal; you've got a problem with my comment, do us all a favor and keep it there. You trying to start a pissing match with me is boring for everyone and ultimately wastes both of our time. Chill.
For that, I apologize.