We are looking to run cryptographic challenge as a required form field to slow down brute force (we cannot filter by source IP or any other common element).
Every time the client send the form, a CPU intensive challenge will have to be solved (it should take no more than 2 seconds to solve it) would be acceptable for clients (Captcha are not a valid option unfortunately as the challenge need to be completely passive/automated).
Do you know any kind of algorithm that would fit this use-case ? The challenge need to be unique and should not be reusable to make sure every single sent form will have to solve its own challenge.
Would asking the browser to brute force a sha+salt hash and send the original string to the server an option ? ( I would give the client the length of the string with the payload )