Estoy escribiendo una pequeña aplicación web y no quiero transmitir las contraseñas de inicio de sesión como texto simple. Como no tengo SSL disponible, he escrito un sistema de desafío único que envía una cadena aleatoria con el formulario de inicio de sesión que luego se usa para hacer una contraseña usando HMAC-SHA256 en el lado del cliente. Uso la cadena de desafío aleatorio como mensaje y la contraseña del usuario como clave secreta para HMAC.
Sé que las soluciones de fabricación propia son generalmente una mala idea, así que quería preguntarme si estoy cometiendo un error aquí.
Editar : Parece que hay un malentendido, no estoy preguntando sobre el almacenamiento de contraseñas o los sistemas de desafío / respuesta, sino sobre la transmisión de HMAC y contraseñas. Para aclarar un poco: mi primera versión fue HMAC(msg=password, key=challenge)
, porque pensé, bueno, el mensaje que quiero transmitir al servidor es la contraseña del usuario. Pero luego me di cuenta de que la cadena de desafío no es exactamente una clave secreta, así que la cambié, pero eso me hizo pensar si quizás hiciera algo totalmente incorrecto y pensé que era mejor preguntarlo.