Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Maybe making things more intelligible would help instead of using language that is extremely obfuscated and confusing, and unaccompanied by any actual mathematics?

Take this sentence from the email for instance:

"Even AES-GCM got screwed up: nonces should be counters, but all implementations make them random, introducing an artificial birthday bound issue due to truncation in the standard."

I have no idea WTF this means, but let's go over it:

nonce: I know this is a randomly generated number that can be only used once -- now why should it be a counter? No idea.

"but all implementations make them random": wait, aren't they supposed to be random by definition? According to the above line though, they are supposed to be random. Damn, what I knew must be wrong. I wonder if this person on the internet has submitted some sort of explanation about this somewhere.

'artificial birthday bound issue': Assuming this refers to the birthday attack (http://en.wikipedia.org/wiki/Birthday_attack). Why is it "artificial"? Can we see some mathematical proofs attached please? I sort of get the idea here -- because the nonce is random, it is vulnerable to being recreated after a certain number of attempts, but there is nothing concrete attached here. Or I could be totally wrong in this interpretation. God knows, and maybe this chap.

"...due to truncation in the standard." -- Do you mean some sort of mathematical truncation, i.e. "my number was truncated to 16 bits", or truncation of the standard itself "the last section of the standard was removed"? Please be clear.

Same goes for most things related to crypto -- if you want stuff like TLS to be examined by more eyeballs and find more bugs, you have to first try and make it more accessible. The sentences above are, in my opinion, a complete communication failure.



If you choose a random nonce then it follows that a nonce could be randomly reused. If there are N possible nonces this will happen on average after approximately sqrt(N) packets. If you use a counter as a nonce it will only repeat after N packets, no matter what.

For some algorithms a simple incremented value is all that's needed "1, 2, 3, ..." but this means an attacker seeing only two packets can at least estimate how quickly packets are being sent. However, if you encrypt this stream of incrementing numbers with a constant symmetric key you get the best of both worlds: a nonce stream that looks random but is guaranteed not to repeat until after each possible value has been used. Usually when crypto people talk about a "counter" this is the technique they're referring to.


Thanks! Perfect explanation of the 'counter' term, makes sense. :) Upvoted.


One weakness of linking directly to posts on specialist mailing lists is they sometimes use specialist terminology. You'll note he doesn't define 'TLS' or 'CRIME' or 'AES' either :)


i know little but i strongly suspect the artificialness of the birthday bound is specific to this situation. the bound shouldn't be there, but by using random numbers it is introduces - its 'artificial' because an idealised implementation would not suffer that problem.

you are right though, excessive jargon is a massive blocker for anything not just because its unintelligible but also because of the 'elitism' social signal it sends...

many unspectacular people can find holes in a cryptographic system - in many cases common sense or a little ingenuity is enough - but they will generally not know the term for their specific flavour of attack (attack is a term itself) or the surrounding terminology to describe it in the context of cryptography.

in short, its not complicated, its obfuscated...


I have but a passing interest in cryptography, but without looking anything up:

AES-GCM That's AES (a block cypher) in Galois C? Mode (I think the C is counter, but in any event, I do recall that there are lots of ways to use block cyphers, and GCM is one of them; if the C is for counter, then I'm guessing it is a counter-mode and gaolois refers to how it achieves authentication, since in general counter-mods of block cyphers are non-authenticated)

nonce: Any value that should only be used once. Generally speaking if you use the same key and nonce twice, the security of your cryptosystem is in some way compromised. Using it as a counter would ensure that it is used only once, so long as a different key is used for each session. Some cryptographic primitives take relatively small nonces, which makes using a random nonce a Bad Idea due to

Birthday bound: If you take a large number of samples from a uniform random distribution, it takes a surprisingly small number of samples before you get the same value twice.

"...due to truncation in the standard" Since I don't know anything about the specifics of TLS, I'm just going to make some shitty wild-ass guesses here: I'm guessing that the truncation it refers to is truncation of the nonce (which would give you fewer nonces to work with) or in the cryptostream itself (which would require you to use more nonces) either of which hurts you when using random nonces. I'm going to go out on a limb and say that it's not referring to truncation of the standard itself, since that's stupid and there are lots of ways that the standard could require some form of truncation.

So that's me, who knows less about crypto then anybody on the mailing list; I can make some sense out of that jargon. Anybody who is actually professionally involved in cryptography likely has no problem understanding that.

Using jargon when talking to other people in your field is a necessity for not going crazy. My first internship was with a telecom company. I was given a specification that included a half-dozen acronyms I had never heard of before, along with a few terms that clearly had a specific meaning in the field. (I knew that ATM wasn't referring to bank machines, for example). But really, if someone had to explain what ATM was each time they used it, nothing would get done.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: