Tengo curiosidad por saber qué tan seguro es el siguiente enfoque para la autenticación:
- Por cada cuenta cifro los datos con una estructura conocida usando un algoritmo simétrico (por ejemplo, AES o twofish) con una clave derivada de contraseña. Los datos pueden ser, por ejemplo, un objeto codificado en JSON, un XML o cualquier otra cosa, que sea fácil de verificar. Utilizo diferentes IV por cada cuenta, un modo seguro de operación, bloqueo de cifrado, etc ...
- Al iniciar sesión, intento descifrar el texto cifrado con una clave derivada de la contraseña dada.
- Si los datos resultantes tienen la estructura adecuada, entonces la contraseña estaba bien y el usuario está autenticado. De lo contrario, la contraseña era incorrecta y el intento de inicio de sesión falló.
¿Hay algún inconveniente con este enfoque en comparación con el uso habitual de la contraseña y el hash?