I've got a system that works like this:
Client -> Server: authenticate me
Server -> Client: ok, you are authenticated
Server -> Client: now do some computations for me
And I use SRP as an authentication mechanism. Everything works fine, until somebody steals my password verifier. If the password verifier is stolen, the attacker is able to work as a server, because both server and attacker have the same amount of data for clients authentication.
Client -> Attacker: authenticate me
Attacker-> Client: ok, you are authenticated, because I have verifier
Attacker-> Client: now do some extremely heavy computations, so I can burn your computer
What to do in this situation? Can I invalidate the stolen verifier or something?
I thought I can use this formula to compute verifier: $g^{hash(x|\text{salt}|\text{invalidation date})}$
So server will be forced to send invalidation date first, so client will know if verifier is too old. But this is very hard to implement, because of time synchronization.
And one more option. Client may store server's public key in configuration file as well as sever's host and port. Then client can send server some challenge to encrypt. But I don't know is it good solution or not.