I have a log-in service that runs a CPU-intensive hash multiple times when a user logs in. In order to reduce the effect of a login DDOS, is there any sort of function that I can "ask" that the client to run that would be somewhat CPU heavy and verify it's result (via a light-weight operation), prior to running my password hash?
I was thinking something along the lines of brute-forcing a weak security (where I generate say a 128 bit RSA key or similar) and giving the client the public key and asking it to find the private key.
Has anything like this been done? would this be a reasonable implementation? are there better alternatives?