Let's say a ZKP (e.g. SRP6a) is used, for password verification.
Let's say I need to force a user to change their password (so I have the salt and the verifier for the current password). For this, the client will need to send me the new salt and verifier values. But I can't check if the password used was the same if the salt is random.
The reason I bother is because an initial password may be delivered over a less secure way, and I don't want that password to linger.
The only way to ensure the passwords to be different that I found is to require the new salt to be the same as old.
The mechanism to change the password is exposed as an API to the client, and I can't necessarily trust the client to do that verification.
The questions are:
- Is there a better way?
- If no, then is there any downside to requiring the same salt, i.e. am I compromising anything?