it-swarm-es.com

Migre cuentas de usuario fuera del sistema con contraseñas hash

Tengo un sistema con unos pocos miles de cuentas de usuario que necesito migrar a una nueva plataforma. El sistema almacena una contraseña cifrada, no cifrada o (gracias a Dios) texto sin formato. Además, no tengo los detalles del hashing fácilmente disponibles.

¿Cuáles son algunas formas efectivas de hacer la transición? Me viene a la mente una idea:

  1. Antes de tiempo, puedo migrar todos los datos. Los usuarios actuales en la plataforma anterior tendrán una cuenta y todos sus datos en la nueva plataforma.
  2. Extraiga parte del código que actualmente maneja la autenticación y conviértalo en un tipo de servicio que verificará la validez del nombre de usuario/contraseña.
  3. La nueva plataforma puede primero verificar su propia autenticación para ver si la contraseña ha sido transferida. Si no es así, podría llamar al servicio en la otra plataforma para determinar si es válido en el sistema anterior.
  4. Si no es válido, le dice al usuario que su inicio de sesión fue incorrecto.
  5. Si es válido, ahora conoce la contraseña correcta y puede completar su propia tabla de usuario con la contraseña (de acuerdo con el esquema que utilice la plataforma).
3
Larsenal

Pasé por un problema similar recientemente, excepto que no tenía acceso al algoritmo hash que se estaba utilizando. Creo que tienes 2 opciones.

  1. Mueva todos los perfiles de usuario al nuevo sistema y tenga una columna adicional con su hash de contraseña anterior.
  2. Cuando el usuario inicia sesión por primera vez, su sistema verá que no existe una cuenta en el nuevo sistema, pero existe un hash del sistema anterior. Su sistema mantendrá una copia pre-hash de la contraseña y verificará la versión hash contra el hash anterior.
  3. Si las coincidencias de hash anteriores establecen la contraseña en el nuevo sistema a lo que enviaron.

Sin embargo, si descubre que no tiene acceso al algoritmo hash y tiene la dirección de correo electrónico de cada usuario, tiene otra opción. Esto es lo que hice en realidad:

  1. Copie todos los nombres de usuario, direcciones de correo electrónico e información del sistema antiguo al nuevo. Ponga una columna de bandera en la tabla que indique que el usuario es del sistema anterior.
  2. Cuando el usuario inicia sesión en el nuevo sistema por primera vez, el nuevo sistema verá que tiene una cuenta pero no tiene contraseña.
  3. Haga que su sistema coloque un mensaje en la pantalla que diga algo como "Hemos actualizado nuestro sitio web y su cuenta de usuario se ha convertido. En breve recibirá un correo electrónico con una nueva contraseña temporal (asegúrese de que la contraseña o el enlace especial funcionen solo por un corto período de tiempo). período de tiempo).
  4. Envíe al usuario una contraseña temporal a su nuevo sitio que les permitirá iniciar sesión. Una vez que inicien sesión por primera vez, pídales que restablezcan su contraseña a lo que quieran.

La segunda opción funcionó bastante bien para mí. Prácticamente no tuve quejas de los usuarios y es relativamente seguro, ya que ese es el proceso normal para que un usuario restablezca su contraseña olvidada.

3
Ben Hoffman

Antes de pasar por demasiados problemas, ¿has investigado cuál podría ser el algoritmo hash? Si eran lo suficientemente cuerdos como para usar contraseñas hash, es de esperar que fueran lo suficientemente cuerdos como para usar un algoritmo hash común (MD5, SHA1, etc.).

Puede valer la pena probar algunas opciones comunes para ver si puede realizar ingeniería inversa de lo que estaban haciendo.

Además, mencionas "extraer algo del código que actualmente realiza la autenticación". ¿Cómo es que tienes el código, pero no el algoritmo hash?

0
Eric Petroelje