¿La comprobación de las listas de contraseñas es una buena manera de imponer una política de contraseñas seguras y posiblemente detectar ataques de diccionario en una aplicación basada en web?

1

He escrito un script para verificar una contraseña determinada con una lista de ~ 65 millones de contraseñas compuestas de varias listas publicadas después de intentos de piratería.

Estoy pensando en incorporarlo al proceso de verificación de contraseña cuando un usuario elige una contraseña, notificándoles que hay una contraseña en una lista utilizada por piratas informáticos.

Además, me pregunté si podría usarse para detectar un ataque de diccionario / fuerza bruta cuando las contraseñas en la lista se hayan registrado en intentos fallidos de inicio de sesión.

Se agradece cualquier idea sobre la utilidad / efectividad de este enfoque.

    
pregunta theHands 23.03.2014 - 13:22
fuente

2 respuestas

1

Si le preocupa que usen contraseñas débiles, solo me concentraría en los requisitos de complejidad. Oblígalos a usar una contraseña de más de 12 caracteres con caracteres especiales. Una lista de 65 millones de sonidos es relativamente pequeña, ¿son en su mayoría menos de 8 caracteres?

En consideración a un ataque de fuerza bruta, no importa si hay una gran entropía o distribución entre el conjunto de caracteres si la longitud es baja (8 o menos caracteres).

Obtendrá el mismo valor por su dinero si solo aplica la complejidad y la longitud del lado del cliente o el "comprobador de seguridad de contraseñas". Probablemente sea mejor poner tu esfuerzo en asegurar el almacenamiento de la contraseña en el backend (sal, pimienta, hsm, etc.) para que no se pueda comprometer.

Desde la perspectiva de la fuerza bruta. Si el atacante roba su base de datos y realiza un ataque fuera de línea, compruebe claramente si no va a tener ninguna importancia. Si están tratando de hacer una fuerza bruta en línea, puede bloquear la IP después de X intentos fallidos o bloquear la cuenta si está dirigida a múltiples intentos en una materia distribuida y dejar que el usuario se reinicie cuando quiera legítimamente seguir adelante. Parece que sería mucho más complejo y requeriría más recursos para comparar con la lista en cada intento de inicio de sesión; posiblemente podría dar lugar a una denegación de servicio en un servidor web modesto si se le cobra impuestos excesivos al sistema.

Si bien puede tener algún valor, no estoy seguro de si los usuarios lo obtendrían. Si bien es bueno querer tratar de protegerlos, si quieren usar contraseñas cortas y las dejas, lo harán; tal vez tomen su contraseña de cinco caracteres y agreguen un número; si esto no está en tu lista, no se hace nada. Para ayudarlos ya que son solo seis personajes. Por lo tanto, su lista detectará algunas contraseñas comunes, pero no aborda el problema central, que es la longitud y la complejidad. Probar 65 millones de contraseñas en un ataque sin conexión no es un esfuerzo para un atacante con una plataforma de craqueo de GPU.

    
respondido por el Eric G 23.03.2014 - 20:45
fuente
0

Una buena estrategia de seguridad es generalmente simple y elegante, al igual que las matemáticas. Existen métodos establecidos para verificar la seguridad de una contraseña. Comprobar una contraseña en contra de millones de palabras posibles parece un poco intensivo y demasiado complejo. Además, también puede estar en riesgo de un nuevo ataque de fuerza bruta contra su secuencia de comandos mediante el agotamiento de los recursos, ya que requiere bastante ciclos de CPU para verificar una contraseña en contra de millones de entradas.

    
respondido por el user42530 23.03.2014 - 13:40
fuente

Lea otras preguntas en las etiquetas