I'm currently building an implementation of the dynamo paper, yottastore. Imagine it as a huge, distributed, hash map.
To find the node holding a key, I use rendezvous hashing (an improvement over consistent hashing), which requires 4 hashes. In order to avoid hash flooding attacks I'm using a keyed hash function, using a key unknown to the client.
My goal would be to have the client perform the hashes instead of the server. Is there an alternative to keyed hash, so that I can defend against hash flooding attacks, but so that the client itself can perform the hashes?
If instead of a non-crypto hash like xxhash I were to use a cryptographic one, like blake, could I drop the secret key while still defending against hash flooding?