¿Importa la fortaleza de la contraseña en bcrypt?

11

Incluso si elijo 1 carácter para mi contraseña o 32 caracteres con números, letras, símbolos en mayúsculas, etc. la contraseña cifrada seguirá siendo una contraseña de 60 caracteres. Entonces, ¿la importancia de la contraseña es importante cuando se usa bcrypt?

    
pregunta xoemab 17.06.2014 - 01:40
fuente

4 respuestas

21

La "fuerza" de una contraseña es exactamente cuánto desconoce el atacante. Siempre importa. Esa fuerza equivale al número de intentos (en promedio) que el atacante tendrá que realizar para adivinarlo.

Lo que hace bcrypt es que hace que cada intento sea más costoso. Con su número configurable de iteración, establecido suficientemente alto, bcrypt puede hacerlo para que el atacante no pueda probar más de una contraseña por segundo en su máquina. Esto es mucho mejor (para usted) que un billón de intentos por segundo, con una función hash menos adecuada: hace que descifrar su contraseña sea mil millones de veces más difícil. Sin embargo, si su contraseña consta de un solo carácter, el atacante la encontrará en menos de un minuto.

Entonces, mientras que bcrypt hace que las contraseñas débiles sean más tolerables, no puede guardar tu skin absolutamente .

(La longitud de salida de bcrypt es irrelevante para esto. Es normal que las funciones hash tengan un tamaño de salida fijo; de hecho, si el tamaño de salida dependiera del tamaño de la entrada, sería una debilidad, ya que filtraría información sobre la contraseña.)

    
respondido por el Thomas Pornin 17.06.2014 - 02:41
fuente
5

¿Qué tiene que ver la fortaleza de su contraseña con el hecho de que un hash bcrypt tiene una longitud de 60 caracteres?

Si su contraseña es trivial de adivinar, entonces es trivial de adivinar, no importa cuánto tiempo sea el hash resultante. Si está hablando de un solo carácter ASCII imprimible, entonces el atacante necesita como máximo 95 intentos para encontrar la contraseña. Ningún algoritmo hash evitará esto.

bcrypt no mágicamente hace que cada contraseña sea inmune a ataques de fuerza bruta. Solo hace que esos ataques sean más difíciles . Las contraseñas débiles no se benefician de esto. Pero si tienes una contraseña decente, entonces bcrypt puede hacer inviable un ataque de fuerza bruta al exigir más recursos de los que tiene el atacante.

    
respondido por el Fleche 17.06.2014 - 02:34
fuente
1

Las contraseñas seguras siempre son importantes, debido a dos conceptos que facilitan la piratería de las contraseñas: ataques de diccionario y ataques de arco iris (a menudo se usan juntos para lograr la máxima efectividad). Para un ataque de diccionario, uno simplemente toma cada palabra en el diccionario (y generalmente dos, tres y cuatro palabras, etc.), y prueba esas combinaciones primero. Dado el tamaño bastante pequeño de los diccionarios, tener una contraseña que coincida con una palabra en el diccionario hace que encontrar la contraseña sea trivial. Por esta razón, no debe usar nombres comunes, palabras o frases como contraseñas.

Los ataques de arco iris les dan a los atacantes aún más poder de fuego al pre-computar los valores (por ejemplo, de un ataque de diccionario), o incluso a millones de posibles contraseñas de caracteres aleatorios. Ya que están precalculados, el atacante solo necesita escanear su tabla para su hash, y si hay una coincidencia, conocen su contraseña de inmediato. Si bien esto es similar en naturaleza a un ataque de fuerza bruta, el factor decisivo aquí es que el atacante llega a sus datos ya armados con millones o incluso miles de millones de hashes, que pueden analizarse en solo unos segundos para un partido. Incluso si los atacantes tardaron un millón de segundos en adivinar la contraseña, ya pasaron ese tiempo incluso antes de encontrar su archivo. La preparación para el ataque real puede reducir drásticamente el tiempo necesario para encontrar la contraseña. Incluso si no lo encuentran, ya han eliminado todas las contraseñas que habían calculado previamente como posibles contraseñas, por lo que el trabajo no se pierde.

Entonces, si bien todavía hay un gran espacio de contraseñas seguras (más que las contraseñas no seguras), se debe tener cuidado para evitar las contraseñas que probablemente aparezcan en un ataque de diccionario o arco iris. Es importante elegir una combinación de letras, números y símbolos, pero no en patrones comunes. Por ejemplo, "h4ck3rz" puede parecer algo seguro, pero dado que este es un término común "leet-speek", debe evitar usarlo como contraseña o parte de él. Además, cualquier contraseña de menos de ocho letras es trivialmente fácil de romper, y también debe evitarse.

    
respondido por el phyrfox 17.06.2014 - 07:22
fuente
0

La pregunta implícita es: ¿tiene sentido una contraseña de 32 caracteres con números, letras, símbolos en mayúsculas, etc.?

Yo diría que es una exageración cuando se usa con Bcrypt en una función de derivación de claves, pero en ese sentido hay una opción para usar frases de contraseña. Este último puede estar compuesto de palabras existentes como:

atiende el escaneo de bajo ebony align (espacios agregados para facilitar la lectura)

Las palabras se pueden elegir de un diccionario más bien pequeño, como un diccionario similar a Diceware de 7776 palabras. Las palabras individuales deben ser elegidas al azar! (igualmente para los caracteres individuales de una contraseña).

En enlace se puede ver que una frase de Diceware de 5 palabras es tan fuerte como una contraseña de 11 caracteres que consiste en una ..z A..Z 0..9. Si quieres hacer los cálculos:

una contraseña de 11 caracteres: 11 ^ 62 (posibilidades) = 5.23E19 combinaciones

una frase de cinco palabras forma un diccionario de 7776 palabras: 7776 ^ 5 = 2.8E19 combinaciones

no hará las matemáticas: una frase como cater = low = ebOony = align = scan: 1.3E22 combinaciones (incluidos los separadores + solo un carácter insertado al azar)

    
respondido por el Dick99999 17.06.2014 - 15:24
fuente

Lea otras preguntas en las etiquetas