alright now i'm positive i'm missing something
i'll use sha1 cause it's on hand for my example, as I understand you're using it
ideal situation:
SERVER: hello world - 4535ac92c9ef45c5a208ba008168b 4335567ea89 - [SECRETKEYLOL]
CLIENT: (verifies that "hello world[SECRETKEYLOL]" corresponds to the given hash)
CLIENT: HELLO SERVER - 9bed34acf0f92253c75b328464eb8 487a4d89ac0 - [SECRETKEYLOL]
yay!
actual situation:
SERVER: hello world - 4535ac92c9ef45c5a208ba008168b 4335567ea89 - [SECRETKEYLOL]
EVE: (mmm nevermind, won't send that message)
EVE: hello client - c3e3f6de645a38e2037e36ee76573 b682b977e75 - [SECRETKEYLOL]
CLIENT: (verifies message eve sent, it checks out - wow, a personal introduction!)
CLIENT: HELLO SERVER - 9bed34acf0f92253c75b328464eb8 487a4d89ac0 - [SECRETKEYLOL]
what am I missing? the only way around this is to securely transmit the random seed and have them generate the secret key client and server side, never actually sending the secret key.
alternatively, send the secret key itself via secure methods
if we could securely transmit the hash, then yes, this would work - if the attacker has no way to modify the hash then the best they could do is DoS. however, I don't think that's what you're suggesting