Supongamos que se utiliza un ZKP (por ejemplo, SRP6a), para la verificación de la contraseña.
Digamos que necesito obligar a un usuario a cambiar su contraseña (de modo que tengo el salt y el verificador para la contraseña actual). Para ello, el cliente deberá enviarme los nuevos valores de sal y verificador. Pero no puedo comprobar si la contraseña utilizada fue la misma si el valor salt es aleatorio.
La razón por la que me molesto es porque la contraseña inicial puede entregarse de una manera menos segura, y no quiero que la contraseña permanezca.
La única forma de asegurar que las contraseñas sean diferentes que encontré es exigir que la nueva sal sea igual a la antigua.
El mecanismo para cambiar la contraseña se expone como una API al cliente, y no necesariamente puedo confiar en que el cliente realice esa verificación.
Las preguntas son:
- ¿Hay una mejor manera?
- Si no, entonces ¿hay algún inconveniente para requerir la misma sal, es decir, estoy comprometiendo algo?