requisitos de contraseña vs opciones de almacenamiento de contraseña

3

¿Se podrían aplicar los siguientes requisitos de contraseña, sin mantener una copia en texto simple / cifrada de la contraseña actual?

The ######## password requirements are as follows:
    * Passwords must be updated every 90 days.
    * Users may not re-use the previous eight passwords.
    * Passwords must be 8 to 16 characters in length.
    * Passwords must contain at least:
            - One alphabetic character
            - One numeric character
            - One of the following special characters: @, #, $
    * Passwords must contain a non-numeric in the first and last positions.
    * Passwords may not contain two consecutive identical characters.
    * When changing a password, the new password must not contain more than
      three consecutive characters from the previous password.
    * Passwords may not contain a dictionary word or proper noun.
    * Passwords may not be the same as, or contain, the user ID.
    * Passwords are case sensitive.  When you create a password using a mix
      of uppercase and lowercase letters, it must always be entered that way.

La condición "Al cambiar una contraseña, la nueva contraseña no debe contener más de tres caracteres consecutivos de la contraseña anterior." es la que tengo curiosidad.

    
pregunta Corey 08.07.2016 - 14:54
fuente

2 respuestas

4

Si el formulario 'cambiar contraseña' solicita la contraseña actual (antigua) así como la nueva (como debería), no tiene que mantener una copia de texto simple alrededor.

Puede verificar que la contraseña anterior sea correcta comparando las versiones con hash, y luego hacer la verificación contra el requisito que mencionó y solo si pasa, actualice la contraseña en la base de datos.

( Actualizar : cambió "encriptado" a "troceado" para evitar distraer la discusión sobre si el cifrado es reversible por definición)

    
respondido por el Mark Koek 08.07.2016 - 15:01
fuente
1

En el contexto de las contraseñas de texto sin formato, estas son las políticas más relevantes:

* Passwords must be 8 to 16 characters in length.

Aunque establecer una longitud máxima de 16 caracteres puede ser simplemente una política equivocada o mal informada, lo más probable es que indique cómo el sistema está almacenando la contraseña y la compatibilidad con los sistemas heredados.

El mayor problema aquí sería si el campo de la base de datos se configurara en 16 caracteres y ellos almacenen las contraseñas como texto simple. Si este es el caso, el sistema es completamente inseguro.

Sin embargo, también podrían estar utilizando un hash como crypt16 que limita la longitud de la contraseña a 16 caracteres, aunque esto no se usa mucho y es menos probable que la explicación. Si este es el caso, el sistema es peligrosamente inseguro.

Otra razón podría ser que están usando MD5 y alguien determinó que, debido a las colisiones, hay poco que ganar al permitir contraseñas de más de 16 caracteres. Aunque esta lógica es defectuosa, la he visto suceder. Si este es el caso, el sistema sigue siendo peligrosamente inseguro.

Creo que la explicación más probable es que están encriptando las contraseñas y no las están procesando, lo que significa que están almacenando la clave de encriptación en algún lugar que también es peligrosamente inseguro.

Es de esperar que la razón de esto tenga que ver con las limitaciones enterradas en algún lugar en una base de código masivo que temen tocar y que realmente almacenan las contraseñas con SHA256, pero desafortunadamente eso no es probable. El problema más probable aquí es que son peligrosamente inseguros.

* Users may not re-use the previous eight passwords.

Para determinar esto, deben almacenar las ocho contraseñas anteriores. Al ver que es más probable que utilicen texto sin formato, un algoritmo de hash débil o un cifrado reversible, esto significa que 9 contraseñas para cada usuario están potencialmente en riesgo.

* Passwords must contain at least:
        - One alphabetic character
        - One numeric character
        - One of the following special characters: @, #, $

Si la contraseña está encriptada o incluso encriptada, los caracteres utilizados no deberían hacer ninguna diferencia, siempre que sean imprimibles y dentro de la página de códigos actual. El hecho de que lo limiten a tan pocos caracteres indica claramente que las contraseñas se pueden almacenar en texto sin formato.

* When changing a password, the new password must not contain more than
  three consecutive characters from the previous password.

Esto se puede comparar en el punto donde se cambian las contraseñas, por lo que no es un indicador sólido de ninguna manera.

Esto está fuera de tema, pero las siguientes políticas son intentos erróneos y obsoletos de hacer contraseñas más seguras. Una longitud de contraseña mínima más alta eliminaría la necesidad de todos estos.

* Passwords must be updated every 90 days.
* Passwords must contain a non-numeric in the first and last positions.
* Passwords may not contain two consecutive identical characters.
* Passwords may not contain a dictionary word or proper noun.
    
respondido por el Mark Burnett 09.07.2016 - 21:28
fuente

Lea otras preguntas en las etiquetas