Why Keccak is not ARX
keccak.team
keccak.team
Here's an tweet from Jean-Philippe Aumasson, one of the authors of BLAKE(2) (uses ChaCha ARX construction) and NORX (uses modified ChaCha replacing addition with an approximation based on XOR, AND, shift operations):
"where @KeccakTeam misses a big point: MD5 and SHA-1 got broken because of Boolean operations (AND/OR), not because of ARX operations" https://twitter.com/veorq/status/910255284920180736
One thing I got from that is that ARX designs are less likely to be broken, not because they are necessarily more secure, but because ARX is often less analysed than designs which yield more concise mathematical representations.
x.0 is 0 and x+1 is 1 (to use combinational logic notation)
Now XOR(x,y) depend on x and y and there are no values that cause the other value to be ignored
I also think the point they make about speed is kinda picking at straws, it's valid for an FPGA, but not so much for a CPU
Keccak is a good enough construction that it doesn't need to be promoted with low quality FUD.
Hashing is pretty much a market for lemons - the adopting user is confronted by a complex math they don't understand and there is a definite problem if you drive out with the wrong hash function. And there is no way to tell without actually being miles down the road when you find out whether it was a peach or a lemon.
The choice by a user might come down to the same sort of vague arguments in a used car lot - "I hear Hondas don't break down much".
There's always some "academic influencing" to do more research based off your own papers, which in turn drives more grants to your own branch of research. At least that's what I read off the following quote
> "We feel that the cryptanalysis of more structured designs such as Rijndael/AES or Keccak/SHA-3 leads to publications that provide more insight."
They're still sore over it, presenting this about 10 years later: https://www.cryptolux.org/mediawiki-esc2010/images/7/7a/Noek...
To be honest, if I'd design something this elegant, and nobody considers if because of an irrelevant attack, I'd be very sore and alert for it happening again, too.
The post makes those points more explicitly to our attention than any other post I had seen before. Hence, no FUD to me.
It was a great learning experience, and I've tried to comment the code thoroughly.
https://github.com/jeffallen6767/keccak-p-js/blob/master/src...
Previous to this I did sha256, and I have to say that the Keccak algorithm was a bit easier to reason about ( as to what it was doing at the bit level, and why )...at least it was for me.
https://github.com/jeffallen6767/sha-256-js/blob/master/src/...
Ok, but this also holds for possible attackers.
This means that ARX functions will have less published analysis, but may still be successfully attacked.
This isn't even a new argument they're making here. It's been well understood that simple cipher designs are better, because they are easier to understand. If you can understand it well, yet not break it, that gives confidence. If you don't understand it, it might break as soon as you do.
* make your cipher complicated, so that analysis and attacks are hard
* make your cipher easier to analyze and attack
The second one usually brings more confidence in the strength of the algorithm after a long period of peer review and cryptanalysis.
PS: not sure but I think I remember reading that Ketje was designed specifically to make theoretical attacks and analysis easier: https://keccak.team/ketje_contest.html
Please, please darken your font color. The contrast is so bad that it makes my eyes hurt. I actually had to pop dev tools and tweak your css to make this site readable.
And referring to DJB just by his twitter handle, seriously?
And yet if you browse this website with CSS also disabled, you get to enjoy the content without the pointless, distracting, time-consuming, and resource-wasting full-page second loading indicator (the browser already includes one!) and animations.
If you use the tor browser you are actually expected to have it disabled.
There are situations where an attacker doesn't have full physical access to a device but can still observe EM radiation. For example, someone sitting next to you with an EM receiver, observing emissions from your 2FA token.
This bit of "wisdom" dates back to the very, very old days when security wrt computers was primarily a consideration for servers in physically secure locations. It is utterly obsolete, and every more so with each passing year. HSMs, CPU-level trusted modules, etc. have long since been a thing, as for that matter has even basic software measures like FDE. All exist in part or in whole to help with certain kinds of physical access. It is not in fact straight forward, reliable or for most attackers even possible to pull bits directly off a well designed physically secure chip with an STM or whatever.
I don't think looking back the actual weaknesses in MD5/SHA were related to ARX, but I'm not equipped to judge whether ARX might introduce TEMPEST related issues. It is not a fundamentally invalid consideration however. Side-channel attacks are one of the most classic and fiendishly difficult issues in cryptography and EM emissions are a known domain problem that can't always be solved merely via use of shielding. It's better even then to have it considered right down the primitive level. Layers and all that.
State actors can easily afford ASIC AES and SHA2 brute-force farms, and that's a concern, especially with monocultural recommendations to "always use AES/SHA2." Now that Keccak's been chosen as the basis for SHA3 in-lieu of more hw expensive alternatives like ECHO, the cost of cracking has been reduced for future scenarios. Do we really want to slash the security margin for a modest bump in runtime performance?
PS: this is because the complexities for attacks are too high. For SHA-3-256 you need 2^128 operations to approach finding a collision. Whatever your speed you will never reach this amount of computation (or storage).
All the hashes you'd care to look at are within an order of magnitude of speed. They all need to be repeated a very large number of times to fight brute forcing. Using more repetitions for a faster hash is so utterly trivial it's not even worth mentioning in the context of security. There is zero difference in security margin from the speed of a hash.
And yes, memory-intensive algorithms are good for passwords, so you shouldn't be caring about normal hashes at all.