Generate round keys
Provide one functions that generates up to 4kiB of round keys from a
256bit master key.
void hash_squeeze(void *dst, u64 dlen, const void *src);
dst is the destination,
src is the 256bit master key to expand,
dlen is the destination size in byte.
Evaluation
For performance, the function is called 4094 times with destination
sizes of 1 to 4096. Total execution time for all 4096 calls
determines the winner.
For security, it should be impossible to determine any round key from
any number of other round keys or the master key from any number of
round keys. As long as there is no known method faster than brute
force, the candidate is considered barely secure.
Rationale
While many encryption algorithms are still secure with fairly weak
round keys, generating strong round keys isn't particularly hard or
expensive. But it can be treated as a completely orthogonal problem
from regular block encryption, so I split it out as a separate
challenge.