¿Vale la pena rellenar las contraseñas?

4

Estoy usando phpass (bcrypt) para cifrar la contraseña y SSL cuando se transmite, y usar PDO (con PHP) para detener las inyecciones, ¿vale la pena rellenar la contraseña, de modo que si el usuario ingresa "123456" como contraseña antes de agregar un prefijo y / o un sufijo, por ejemplo

123456 

se convierte en

abcZYX123456£%$£@&$%

(prefijo "abcZYX" y sufijo "£% $ £ @ & $%")

que luego es salado y picado.

el prefijo y el sufijo pueden ser iguales o diferentes para cada contraseña

o podría ser mejor requerir longitudes y combinaciones mínimas

Por ejemplo:

Must be at least 10 characters, and have a capital letter, number and symbol

¿O es mejor simplemente hash y saltear la contraseña?

    
pregunta Ray Britton 03.06.2013 - 16:54
fuente

3 respuestas

2

Es mejor aplicar un requisito de longitud, ya que ya está utilizando un algoritmo de hashing de contraseña seguro. Dado que el "relleno" se agrega en el código de su sitio, no está fuertemente protegido. Incluso en el mejor de los casos, cuando un atacante no conoce el relleno, si se le permite al usuario elegir una contraseña lo suficientemente corta, es posible que se agriete, revelando el esquema de relleno.

Para los requisitos de complejidad, probablemente es mejor simplemente dar un comentario instantáneo (JavaScript) sobre la seguridad de la contraseña al usuario cuando elige su contraseña. Los usuarios rechazarán las políticas estrictamente aplicadas (aparte de la longitud, dentro de lo razonable), y su elección del algoritmo debería proporcionar suficiente resistencia al descifrado de contraseñas de una longitud razonable.

    
respondido por el bonsaiviking 03.06.2013 - 17:03
fuente
1

No veo mucho punto para el esquema de relleno que describe.

Si el atacante está realizando una fuerza bruta en línea, sus intentos irán a través de su esquema de relleno de todos modos, por lo que no hay un punto.

Si el atacante ha obtenido un volcado de hash y está intentando realizar un ataque sin conexión contra los hashes, el esquema de relleno podría ralentizar un poco al atacante si no se comprometió también Su código fuente en el proceso. Por supuesto, dado que el esquema de relleno está arreglado, probablemente no le tomará mucho tiempo al atacante a descubrir su esquema de relleno y agregarlo a su proceso de descifrado de contraseñas.

Los requisitos de complejidad de la contraseña pueden ser una buena idea, siempre y cuando no se exceda. Hay muchas preguntas existentes en el sitio que abordan este problema, haz una búsqueda de ellas.

En general, está en el camino correcto para el almacenamiento de contraseñas. bcrypt con un recuento de iteración grande debería ser suficiente. No creo que el esquema de relleno sea necesario o útil.

    
respondido por el Ayrx 03.06.2013 - 17:00
fuente
1

Agregar un prefijo tiene valor en ciertos escenarios específicos , sin embargo, en general, lo que está proponiendo no agrega seguridad. Un atacante fuera de línea sabrá el prefijo o lo encontrará muy rápidamente, en ese punto el relleno no tiene ningún efecto en la velocidad a la que puede descifrar los hashes.

Ya estás haciendo lo correcto al usar bcrypt, lo que te sitúa a muchos kilómetros por delante de la curva, por lo que es un buen trabajo.

    
respondido por el lynks 03.06.2013 - 17:03
fuente

Lea otras preguntas en las etiquetas