What do you think of converting SpookyHash into semi-secure 192bit hash function by this way:
- increase security by using 8 * 8byte = 512bit blocks instead of 8 * 12byte blocks, but remaining 8 * 12byte = 768bit state (so that 256bit are used for "oracle")
- run more EndPartial rounds in End, to produce more entropy
- take h0, h1, h2 as a result to produce 192bit hash.
- and it looks like Short hash should be removed :( or rewritten to use more state
How secure will this function be? How many EndPartial rounds would need to be run?
By saying "Semi-Secure" I mean:
- CityHash used by Google for distinguishing keys one from other, but Jean-Philippe Aumasson shows it is very easy to produce collisions for (as well as for MurmurHash3)
- There is need for hash which should be fast for using as signature
- but probability of occasional collisions should be marginal
- and attack on should be unprofitable: if one should spend a 1 GPU*year (ie 1 month for average funded company) time to perform preimage attack or recover "secret" from HASH("secret"+"public"), then function is secure enough (but certainly it is not cryptographic)
ie "Semi-Secure" means attack is possible, but is unprofitable for opponent for current usage of function. And occasional collisions are rare enough.
Example: one of rejected SHA-3 competitors "Aurora-512" were rejected cause it were shown that 2^234 attack is possible... "Semi-secure" - is about 2^58 (probably) resistance function.