H is a cryptographic hash. You observe via timing that H("123") starts with the same byte as H(key). How do you then guess the next byte?
Consider what happens to the first byte of the hash if you add a new byte to the input, e.g. "1230"...
Consider what happens to the first byte of the hash if you add a new byte to the input, e.g. "1230"...
To be practical: my first guesses are:
0000...0000
1000...0000
2000...0000
...
f000...0000
I discover that c000...0000 takes slightly longer. Then, my next guesses are:
c000...0000
c100...0000
c200...0000
...
cf00...0000
Now I discovered that c700...0000 takes slightly longer...
And so on.
At the end I have the full hash.
Getting the plaintext key from that hash is a different problem.
UPDATE: damn, I understood what you mean now. Sorry. Yes, it will take a lot of computation to generate the good hashes.
This is not an easy problem, and in fact is what is used as proof-of-work for many cryptocurrencies.