Long question but I am starting to lose sight of all the HASH algo's there are.
I know SHAKE128 and 256 are part of the SHA-3 standard but is the SHA3 standard officially released yet? i can only find a draft of the publication, does this mean it's not official and therefor not proven to be secure?
I have not found a proper SHAKE128 or 256 c implementation which is why i'm wondering if they should be used yet, because if they were good I'd think there'd be a lot of example code for them.
I know SHA-1 has a theoretical attack which comes close to being practical and obviously MD5 is broken which is why i would like to keep away from those.
Then SHA-2 remains but SHA-2 contains sha 224, 256, 386 and 512. I've tested these (and whirlpool and Tiger) on my test device and this was the speed:
HMAC bytes speed μs Sha1 64 746 128 857 Sha224 64 918 128 1066 Sha256 64 918 128 1066 Sha384 64 2395 128 2840 Sha512 64 2400 128 2840 Sha512_224 64 2390 128 2835 Sha512_356 64 2390 128 2835 MD5 64 308 128 345 Whirlpool 64 5630 128 6420 Tiger 64 832 128 952
So MD5 is fastest followed by SHA-1 but those i would like to evade. Now Tiger is the 3th fastest followed by SHA 224 and 256.
I do know that having an insecure HASH does not necessarily mean your HMAC is insecure but still, I always lock my car even though no one has the key.
So the question: what is the best hash to use, obviously it needs to be relatively fast and by my standards sha-512 isn't fast (enough).