¿Nos estamos concentrando demasiado en la complejidad de la contraseña?

9

Como desarrollador y / o usuario, ¿realmente debo preocuparme por la seguridad de la contraseña si el sistema no permite que el ataque de fuerza bruta sea factible (implementa un contador de intentos o demoras) o implementa un mecanismo de autenticación de dos factores? / p>

Como usuario, si el sistema me garantiza que la contraseña no se almacena en texto sin formato, no se puede acceder a la base de datos ni acceder a ella, ¿puedo relajarme y seleccionar una contraseña "simple"?

Como desarrollador, si el resto del sistema se implementa para proteger la contraseña "simple" del usuario (tal vez al incluir un mecanismo de autenticación de dos factores que utiliza comunicación fuera de banda y / o mediante una base de datos cifrada), ¿qué es? ¿El punto de molestar al usuario obligándolo a seleccionar contraseñas largas y complejas?

    
pregunta Drew Lex 20.12.2012 - 06:38
fuente

5 respuestas

6

Aquí hay dos categorías de riesgo importantes:

  1. Ataques en el sistema en vivo (por ejemplo, adivinar la contraseña de un usuario)
  2. Ataques a hashes de contraseña sin conexión (por ejemplo, desde un volcado de base de datos)

El primer tipo de ataque se puede dividir en varias subcategorías:

  • Un ataque de fuerza bruta en la contraseña de un usuario.
  • Adivinando las 1000 contraseñas más utilizadas en la cuenta de un usuario.
  • Adivinando las 3 contraseñas más utilizadas en las cuentas de 1000 usuarios.

Los requisitos de complejidad de las contraseñas resuelven en gran medida las dos últimas categorías y hacen que el ataque de estilo de fuerza bruta sea mucho más difícil. Cuando se combinan con una limitación de velocidad adecuada, las tres categorías se pueden hacer inviables de manera efectiva. Tradicionalmente, los ataques de "sistema en vivo" eran el principal controlador para requisitos de contraseña más fuertes.

El segundo tipo de ataque generalmente ocurre después de que su servidor está en peligro. A pesar de las mejores intenciones y esfuerzos de todos, los sitios y los servidores son hackeados. No puedes protegerte de todos los posibles vectores de ataque, y eso es un hecho en el mundo de la seguridad. Serás hackeado en algún momento.

Hay tres problemas principales con el robo de un volcado de base de datos:

  • Los datos privados del usuario se filtran, a menudo consisten en información personal.
  • Las contraseñas de los usuarios se filtran, ya sea como texto simple (¡si no estás haciendo tu trabajo!) o como un hash.
  • Los usuarios reutilizan las contraseñas en diferentes servicios.

No puede evitar que los datos privados del usuario se filtren. El intento de encriptar u ofuscar de manera reversible los datos en la base de datos solo conduce a una capa de abstracción complicada en su código, y proporciona poco o ningún beneficio de seguridad. Lo mejor que puede hacer es realizar pruebas rigurosas de garantía de calidad y pruebas de seguridad en sus productos, servicios e infraestructura, a fin de minimizar el riesgo de que le roben los datos.

Sin embargo, usted puede proteger las contraseñas de los usuarios. Al codificar las contraseñas con una función criptográfica de un solo sentido, podemos dificultar que un atacante descubra la contraseña original de texto sin formato.

Se descubrió que las técnicas estándar que usan MD5 o SHA1 solo son defectuosas, ya que las bases de datos grandes (llamadas tablas de arco iris) se pueden calcular previamente de antemano, lo que permite a un atacante buscar un valor de hash en una tabla y encontrar su correspondiente plano Contraseña de texto. Esta técnica se combatió con sales, cuyo objetivo es hacer que cada hash sea único para el usuario mediante la introducción de un valor aleatorio único por usuario, lo que hace que las tablas del arco iris no sean factibles. Posteriormente, los atacantes descubrieron que las funciones de hash podían computarse de forma altamente paralela mediante GPU, utilizando tecnologías como OpenCL y CUDA. En lugar de unos pocos millones de hashes por segundo en la CPU, los atacantes ahora pueden calcular miles de millones de hashes por segundo en una GPU, o cientos de miles de millones por segundo en un clúster de GPU, todos utilizando nada más que hardware de consumo estándar y libremente. software disponible Esto significa que un tipo de hash sha256(pass+salt) puro ya no es seguro. La alternativa es un algoritmo de derivación de clave diseñado para ser lento, como PBKDF2 o bcrypt. Estos son más difíciles de calcular en dispositivos paralelos como las GPU, y reducen el número de cálculos por segundo hasta un nivel que hace inviable la fuerza bruta total. Sin embargo, los ataques de diccionario seguirán siendo razonablemente factibles, especialmente si se usan contraseñas comunes.

Entonces, para concluir: no , no creo que estemos poniendo demasiado peso en los requisitos de complejidad de las contraseñas. Los vectores de ataque involucrados son complicados, y el poder de cómputo disponible para las personas hoy en día es lo suficientemente alto como para hacer que las contraseñas comunes sean peligrosas, sin importar qué tan lenta y computacionalmente costosa sea la función de obtención de claves. Los usuarios reutilizan las contraseñas, por lo que debemos protegerlas lo mejor que podamos.

    
respondido por el Polynomial 20.12.2012 - 08:12
fuente
3

Recuerde que una de las razones por las que también requerimos contraseñas complejas es que cuando se piratea una base de datos, las contraseñas no pueden ser forzadas por la ley de manera sencilla. (Las contraseñas menos complejas solo permitirán esto)

Si bien los usuarios nunca deben reutilizar sus contraseñas, es algo que lamentablemente todavía sucede.

    
respondido por el Lucas Kauffman 20.12.2012 - 07:26
fuente
1

El retraso o el contador de intentos evitarán un ataque directo de fuerza bruta, pero ¿qué sucede si un pirata informático se roba toda la base de datos? Entonces él puede forzar sus contraseñas durante el tiempo que quiera. Y con esto, su autenticación de dos factores ya está rota en un 50%. Su segundo paso de autenticación se puede romper con ingeniería social / un virus informático o cualquier otra técnica necesaria.

No, en mi opinión, definitivamente no nos estamos concentrando demasiado en la complejidad de la contraseña, no en este punto. Cuando todo lo demás en el servidor se ve comprometido, tus hashes fuertes (probablemente) no lo estarán.

    
respondido por el cen 20.12.2012 - 06:50
fuente
0

La principal preocupación con los requisitos de complejidad es hacer que sea difícil realizar un ataque sin conexión contra una tabla hash filtrada. No reutilizar las contraseñas es mucho más crítico que la complejidad de las contraseñas y cualquier contraseña no trivial estaría bien desde el punto de vista de seguridad en un sistema en vivo si la base de datos no estuviera comprometida y existiera una adecuada prevención de la fuerza bruta.

Sin embargo, dado que las contraseñas se reutilizan con frecuencia y no necesariamente sabremos si se ha comprometido una tabla hash, la complejidad es necesaria para proteger otras cuentas o un compromiso de tabla hash no realizado al permitir que un atacante determine su contraseña. p>

Sin embargo, en lo personal, tiendo a estar de acuerdo en que algunos lugares (no la mayoría, pero algunos) han estado comenzando a llegar al otro lado del peligro, lo que hace que los requisitos de complejidad sean tan difíciles que disminuyen la facilidad de uso y causan una frustración del usuario demasiado severa para el nivel de seguridad necesario para el sitio en cuestión. Esto es particularmente cierto en el caso de sitios que han sido comprometidos en el pasado y están tratando de hacer un "buen espectáculo" de hacer las cosas "mejor". (Sony, estoy mirando en tu dirección.)

    
respondido por el AJ Henderson 20.12.2012 - 15:43
fuente
0

Un compromiso para la complejidad es la longitud de la contraseña. En otras palabras, una contraseña alfabética más larga, más fácil de recordar y más fácil de escribir es matemáticamente tan fuerte como una contraseña aleatoria más corta que contiene todos los tipos de caracteres.

Las contraseñas más largas también le impiden usar palabras de diccionario, palabras en listas de palabras de contraseñas comunes y hashes que existen en las tablas de arco iris.

    
respondido por el Mark Burnett 21.12.2012 - 20:39
fuente

Lea otras preguntas en las etiquetas