Foros del Web » Programando para Internet » PHP »

Encriptación y cambio de contraseña

Estas en el tema de Encriptación y cambio de contraseña en el foro de PHP en Foros del Web. Hola, Trataré de explicar mi problema de la forma más simple que pueda. El caso es el siguiente: Tengo una pequeña plataforma web orientada a ...
  #1 (permalink)  
Antiguo 16/05/2015, 19:52
 
Fecha de Ingreso: febrero-2012
Ubicación: Leioa
Mensajes: 3
Antigüedad: 12 años, 10 meses
Puntos: 0
Pregunta Encriptación y cambio de contraseña

Hola,

Trataré de explicar mi problema de la forma más simple que pueda. El caso es el siguiente:

Tengo una pequeña plataforma web orientada a almacenar y mostrar datos de cierta sensibilidad.

Los usuarios realizan el acceso a través de un formulario web que verifica su contraseña a través de la función password_verif() de PHP con el hash almacenado en una base de datos. Si es correcto, la contraseña se utiliza para desencriptar un salt (almacenado en esa misma base de datos) y, una vez desencriptado se almacena como variable de sesión y la contraseña remitida por el usuario es desechada.

Cuando un usuario se registra, se genera de forma aleatoria ese salt, y se encripta utilizando la propia contraseña como salt con AES_ENCRYPT($salt_aleatorio, $contraseña_usuario) para después ser almacenado en la base de datos. Con esto, evito que la contraseña del usuario se almacene en la base de datos, así como cualquier otro dato que pueda utilizarse para desencriptar el salt.

A la hora de realizar un registro por parte del usuario en la base de datos (la que los usuarios utilizan para almacenar y leer la información que almacenan) el sistema guarda dicho registro a través de AES_ENCRYPT($contenido_a_almacenar, $SESSION_['SALT']) e igualmente lo desencriptan con AES_DECRYPT para poder verlo.

A la hora de realizar un cambio de contraseña no hay mayor problema, como el usuario facilita su contraseña actual, el Salt se desencripta con la antigua contraseña y se reencripta con la nueva, se almacena y se realiza un UPDATE al hash de la contraseña almacenado. Con lo cual, aunque la contraseña cambie los registros pueden seguir siendo desencriptados ya que no es la contraseña lo que los encripta, sino el salt.

El problema viene cuando un usuario pierde su contraseña, un UPDATE en el hash de la DB de la contraseña sólamente daría acceso al usuario al interior de la página web, mientras que cuando intente desencriptar sus registros, verá que no se muestra nada ya que el salt no está encriptado con su nueva contraseña.

¿Cómo podría lograrse, sin almacenar la contraseña de usuario ni datos que permitan desencriptar el salt, que un usuario pudiera recuperar su contraseña? (Tampoco sería buena idea utilizar información del usuario como el e-mail o número de teléfono ya que estos podrían usarse para desencriptar los registros en caso de un ataque o robo de información en la base de datos).


Última edición por itsasontsi; 16/05/2015 a las 20:08 Razón: Edito para añadir un pequeño esquema
  #2 (permalink)  
Antiguo 17/05/2015, 23:01
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 6 meses
Puntos: 127
Respuesta: Encriptación y cambio de contraseña

esto es Clasico.
Pues las contraseñas son para acceso y no para desencryptar, si quieres segir trabajando con ese sistema deberias al macenar la contraseña o su hash para poder preguntar al usuario las tipicas preguntas de seguridad y despues que pase todas las preguntas pedir la nueva contraseña y asi con el hash antiguo hacer el oriceso de desencryptado y reencryptado con la nueva contraseña.
recordar que las preguntas son responsabilidad del usuario asi como recordar la contraseña.

Etiquetas: contraseña, encriptacion, recuperacion, seguridad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:15.