After reading about why one-way hash functions are one-way, I would like to know how to design a hash function. Yes, I know that it's a bad idea to not use a proven and tested hash function, but I would still like to know how what matters in the design, and what the design process is like.
I'm familiar with Feistel-network ciphers but those are necessarily reversible, which is horrible for a cryptographic hash. Is there some sort of construction that is well-used in cryptographic hashing? Something that makes it one-way?
Currently there is the NIST hash function competition running with the goal to find a replacement for the older SHA-1 and SHA-2 functions.
You can get whitepapers to all of the algorithms taking part there (see here for round 2 submissions). There are lots of different hash functions described, as well as their strengths and problems.
First of all you should read chapter 9 of "The Handbook". The full name of this book is "The Handbook Of Applied Cryptography".
Next I recommend that you look at the analysis of existing hash functions. For instance Skein is one of the strongest SHA-3 competitors. Skien's submission contains a lot of documentation on how it is constructed and proven to be secure.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With