¿Las frases de contraseña deben ejecutarse a través de PBKDF2? ¿Casi imposible la fuerza bruta?

2

Las frases de contraseña normalmente contienen más datos que las contraseñas y pueden proporcionar más entropía. Parece que aún sería difícil utilizar una frase de contraseña sin usar una clave de contraseña usando PBKDF2, asumiendo que un usuario no seleccionó una cita famosa, una línea de película, etc. En este ejemplo, defino una frase de contraseña con al menos 22 caracteres.

Por ejemplo, si un usuario usara una frase de contraseña generada por DiceWare de 6 palabras de un diccionario de 10,000 palabras, obtendríamos 10,000 ^ 6 número de frases posibles.

Si una súper computadora podría hacer 33.6 X 10 ^ 15 operaciones por segundo y se necesitaron 2,000 operaciones (sin PBKDF2) para intentar 1 supongo que tomaría (10,000 ^ 6) / ((33.6 X 10 ^ 15) / 2,000) o alrededor de 1887 años a fuerza bruta en el peor de los casos.

¿Esto y el ejemplo anterior tienen sentido? ¡Muchas gracias!

    
pregunta oris 11.10.2014 - 05:41
fuente

3 respuestas

5
  Las

frases de paso normalmente contienen más datos que las contraseñas y pueden proporcionar más entropía. Parece que aún sería difícil forzar una frase de contraseña sin utilizar PBKDF2, suponiendo que un usuario no seleccionó una cita famosa, una línea de película, etc. .. defino una frase de paso en este ejemplo con al menos 22 caracteres.

Lo que estás diciendo aquí es que hay frases de contraseña que tienen una gran entropía. Esto no prueba nada. Hay contraseñas más cortas con gran entropía. La longitud no se correlaciona tanto con la entropía cuando se trata de un humano que elige.

(Nota: utilizaré contraseña y frase de contraseña de manera intercambiable a partir de ahora, porque no hay diferencia entre los dos, técnicamente hablando. Una frase de contraseña es una contraseña que consiste en varias palabras en un lenguaje humano concatenadas juntas.)

Entropía de una contraseña compuesta de 8 caracteres ASCII imprimibles: 52 bits
Entropía de una contraseña hecha de 4 palabras de Diceware: 51 bits
(Para selecciones uniformemente aleatorias. La lista de Diceware consta de exactamente 7776 palabras).

Cuanto más aleatoriedad entra una contraseña, más difícil es para un humano memorizar. Si utiliza una función de hashing lento en lugar de una rápida, reduce la entropía que necesita una contraseña para evitar el craqueo. Es un intercambio entre gastar más tiempo de CPU y requerir que los humanos memoricen más.

Dado que incluso las contraseñas decentes limitan las capacidades de los humanos para memorizar (y tenga en cuenta que la mayoría de las personas tienen decenas, si no cientos de contraseñas), la elección es clara: debe proporcionar una función de hashing de contraseñas lo más lenta posible.

    
respondido por el Gilles 11.10.2014 - 15:50
fuente
1

Tener una contraseña muy segura, independiente de la necesidad de un kdf, tiene beneficios como usted ha señalado.

Sin embargo, incluso una contraseña segura depende de un hash para protegerse de volcados de tablas de contraseñas, de lo contrario no es necesario adivinarlo.

Sin embargo, esta lógica solo debe usarse para tomar la decisión de usar contraseñas seguras y no ser perezoso si está implementando seguridad. La mayoría de la gente no usa los fuertes.

    
respondido por el Andrew Hoffman 11.10.2014 - 06:11
fuente
1

Si su contraseña necesita ser ejecutada a través de un PBKDF depende del caso de uso. Los PBKDF como PBKDF2 tienen múltiples beneficios y propiedades:

  • pueden ocultar una contraseña en una base de datos, para cuando la base de datos se roba
    • proporcionan una sal para ocultar contraseñas idénticas y protegen contra las tablas del arco iris
    • utilizan la cuenta de iteraciones para hacer que los ataques de fuerza bruta sean más difíciles (pero solo por una cantidad lineal)
  • pueden extraer la entropía de un valor dado, es decir, devolver una salida de tamaño fijo
  • pueden expandir la cantidad de material secreto a un valor mayor (principalmente útil cuando la salida se utiliza como entrada criptográfica como clave o IV)

Ahora digamos que tiene un sistema seguro en el que utiliza la frase de contraseña para la autenticación. Para esta autenticación hay un número limitado de intentos o las contraseñas tienen una gran cantidad de entropía. En ese caso, un PBKDF no tiene mucho sentido.

Si sus contraseñas ya tienen una cantidad verificable de entropía, entonces un KBKDF, como HKDF, tiene más sentido que un PBKDF2, no necesita la cuenta de iteración. Pero como otros han señalado, en general, no puede estimar o garantizar fácilmente la cantidad de entropía de una frase de contraseña.

Si solo usas un hash como pobre KDF de mans, entonces no tienes sal. Esto significa que la salida será idéntica para la misma frase de contraseña; las frases duplicadas pueden convertirse en un problema.

Si desea tener una entrada de tabla de tamaño fijo en su base de datos, entonces puede tener sentido utilizar al menos un KDF, de lo contrario tendrá que usar un límite superior para el tamaño de la frase de contraseña.

Al final, se convierte en la pregunta de por qué no usa un PBKDF como PBKDF2.

Tenga en cuenta que PBKDF2 no es considerado por muchos como una gran opción para realizar una expansión, ya que le da ventaja a un atacante.

    
respondido por el Maarten Bodewes 11.10.2014 - 17:31
fuente

Lea otras preguntas en las etiquetas