Fuerza de la contraseña de palabras aleatorias y creador de cerebro

32

He leído de varias fuentes que podría ser mejor tener una contraseña compuesta de varias palabras aleatorias, ya que es más fácil de recordar que una secuencia aleatoria de caracteres. Por ejemplo, este artículo de Thomas Baekdal . Incluso veo este cómic xkcd con bastante frecuencia.

Ahora, leí este artículo sobre una nueva herramienta llamado brainflayer, actualmente destinado a billeteras de Bitcoin, que puede adivinar 130000 contraseñas por segundo. Esto hace que las ideas de Bitcoin sean inútiles. Me pregunto si una herramienta similar podría usarse contra todas las contraseñas y ¿hay contraseñas como "esto es divertido" realmente tan seguro como afirma Thomas Baekdal?

    
pregunta user2563661 19.08.2015 - 14:37
fuente

5 respuestas

53

Escribí brainflayer y di a una charla al respecto en DEFCON. Ni el artículo de Thomas Baekdal ni el cómic de XKCD se aplican bien a los modernos ataques sin conexión. Leí el artículo de Thomas y sus Preguntas frecuentes al respecto, y puede haber sido ligeramente razonable cuando Lo escribió, ya no está. Un punto clave es que los ataques de descifrado de contraseñas han mejorado mucho desde entonces.

  

P: Si no puedo escribir "esto es divertido" debido a los espacios, ¿no puedo simplemente escribir "thisisfun"?

     

A: ¡Absolutamente no! La razón por la que "esto es divertido" es 10 veces más segura, simplemente porque es mucho más larga (11 caracteres). Al eliminar los espacios, reduce sustancialmente la longitud y la complejidad. Los espacios son efectivamente caracteres especiales, lo que en sí mismo hace que la contraseña sea mucho más segura.

     

Utiliza "esto es diversión" en su lugar.

Los crackers de contraseñas no intentan mucho los ataques de fuerza bruta largos: se trata de descifrar el ROI. Un cracker inteligente probará combinaciones de palabras con varios delimitadores, por lo que el uso de espacios, guiones, guiones bajos o nada termina proporcionando la misma seguridad. Los métodos de descifrado de hoy utilizan listas de palabras (que pueden incluir frases) y grandes corpus de contraseñas previamente comprometidas junto con la popularidad. Esto se combina con la permutación basada en reglas y los modelos estadísticos. Ars Technica publicó un gran artículo que detalla Técnicas modernas a mediados de 2013, y los ataques solo mejoran.

También soy de la opinión (posiblemente controvertida) de que no tiene sentido hablar de conjeturas por segundo para ataques sin conexión . Una forma mucho mejor de pensarlo es conjeturas por dólar . Si desea ser pedante, puede agregar un costo por única vez de adivinanzas por segundo por dólar , pero el costo operacional tenderá a dominar. El límite superior del costo operacional de Brainflayer es de 560M conjeturas por dólar, basadas en los puntos de referencia de las instancias puntuales de EC2, con cero costos únicos. Es posible hacer que estos costos sean mucho más elevados con una función hash "más difícil" como bcrypt , scrypt , PBKDF2 o, una vez que está finalizado, Argon2 .

    
respondido por el ryanc 19.08.2015 - 17:08
fuente
15

El ataque específico del que hablaste tuvo, según defcon talk , ciertas características específicas que significan que el mismo ataque no lo hace realmente aplicar a todas las contraseñas.

Lo primero y lo más importante es que Brainwallets colocó efectivamente el hash de contraseña en una ubicación pública. Por lo general, la primera defensa contra el craqueo de hashes de contraseña es tratar de asegurar el hash en sí.

En segundo lugar, brainwallet no usó ninguno de los algoritmos comunes de almacenamiento de contraseñas (por ejemplo, PBKDF2 o bcrypt) para proteger los hashes. En los casos en que el atacante tenga acceso al hash, es importante intentar desacelerar su ataque tanto como sea posible. Los algoritmos de almacenamiento de contraseñas hacen esto haciendo que sea "computacionalmente difícil" para que el hash de contraseña se cree a partir de la contraseña, lo que ralentiza el ataque. Hay muchos más detalles sobre estos aquí

    
respondido por el Rоry McCune 19.08.2015 - 15:08
fuente
8

Pregunta interesante. @RoryMcCune abordó muy bien la pregunta sobre brainflyer, así que me gustaría responder a su pregunta más abierta:

  

¿las contraseñas como "esto es divertido" son realmente tan seguras como afirma Thomas Baekdal?

No, no lo es.

Mis primeros pensamientos son 1) que Thomas Baekdal no explica cómo está calculando sus estimaciones de tiempo, lo que hace que mi científico interno sea escéptico, y 2) que su artículo no tiene en cuenta Moore's Law : la idea de que nuestro poder de cómputo aumenta a un ritmo alarmante. El artículo se escribió en 2007 y, desde entonces, tanto nuestra capacidad de computación bruta por $ como la capacidad de utilizar procesadores paralelos (especialmente los GPGPU) han aumentado a pasos agigantados.

Estoy en desacuerdo con su afirmación: "100 años, este es realmente el límite para la mayoría de las personas. ¿A quién le importa que su contraseña sea hackeada después de que hayan muerto?". Esto es una falacia; este número se basa en la velocidad de las computadoras de hoy y asume que la tecnología no aumentará durante esos 100 años.

En mi opinión, las contraseñas son una tecnología en extinción ya que no se escalan con la velocidad de la CPU (es decir, nuestra capacidad para descifrarlas aumenta exponencialmente, pero nuestra capacidad para recordar las más largas no lo es). Desafortunadamente, ninguna tecnología ha aumentado aún para reemplazarlos. Se me ocurren dos buenos intentos para resolver el problema de escalamiento:

  1. Autenticación basada en clave privada. Esto aumenta, ya que podemos seguir aumentando el tamaño de la clave a medida que aumenta la velocidad de la CPU.

  2. Esquemas de prueba de trabajo. Esta idea es requerir que el proceso de inicio de sesión implique algo que requiere una gran cantidad de cómputo. Las funciones de extensión / hash de contraseña como PBKDF2 o bcrypt son ejemplos, así como autenticación de desafío-respuesta esquemas que incluyen pedirle al cliente que haga un cálculo muy largo que el servidor pueda verificar fácilmente (como factorización: "aquí hay un número muy grande n , enviarme p , q tal que p*q = n "). A medida que los procesadores se vuelven más rápidos, simplemente aumenta la cantidad de trabajo que solicita.

Ambos tienen buenas propiedades teóricas, pero son inconvenientes para los usuarios finales, lo que les impide obtener una adopción generalizada.

    
respondido por el Mike Ounsworth 19.08.2015 - 15:46
fuente
3

Los ataques sin conexión son ligeramente diferentes a los ataques en línea.

En un ataque en línea, la limitación de velocidad y la sobrecarga de la transmisión de red significa que los intentos de contraseña extremadamente rápidos no son prácticos.

En un ataque sin conexión, cuando tienes una contraseña con hash, normalmente puedes obtener tasas de ataque mucho más rápidas. Y puede escalarlo (usando la computación en la nube) de una manera amplia (lo cual es difícil de hacer en línea, sin bot-ejércitos).

Aún así, una velocidad de 130,000 intentos / segundo, o 560 millones de conjeturas por dólar, no es tan difícil de vencer. Thomas asumió 100 intentos / segundo: alcanzar 100,000 / segundo solo hace que las contraseñas sean 1000x menos seguras. La contraseña de 5 palabras poco comunes tuvo un tiempo de crack de medio trillón de años: después de una velocidad de 1000x, se convierte en medio billón de años.

El método XKCD facilita el análisis del costo de su contraseña. Supongamos que su atacante puede probar mil millones de contraseñas por cada dólar gastado ("30 bits" de entropía de la contraseña por dólar) (dos veces más eficiente que el creador de ideas).

Luego, elegir 4 palabras aleatorias de las 1000 palabras más comunes en inglés (una contraseña XKCD de 4 * 1k) tiene 40 bits de entropía, por lo que toma 40-30 = 10 bits de dólares, o aproximadamente 1000 dólares, para descifrar tu contraseña "fuera de línea".

Sube a 4 palabras aleatorias de las palabras en inglés más comunes de 4k (una contraseña XKCD de 4 * 4k), y se necesitan 48-30 = 18 bits de dólares, o 250,000 dólares para descifrar tu contraseña.

6 palabras aleatorias de las 8k palabras en inglés más comunes (6 * 8k) son 78 bits. Cuesta 48 bits de dólares derrotarlo hoy, o 250,000,000,000,000 $, o 2-4 veces el PIB anual de todo el mundo.

Ahora, si suponemos que la ley de Moore continuará siendo válida con respecto al descifrado de contraseñas (cada 2 años, el costo de descifrar las contraseñas de una contraseña), y queremos saber "por cuánto tiempo será segura nuestra contraseña de 1 millón de dólares" , podemos hacer esto:

30 (bits / dólar actuales) + 20 (1 millón de dólares) = 50.

Tome el número de bits de entropía de la contraseña y reste 50.

La ley de Moore establece que el cálculo es la mitad de caro cada 2 años. Entonces, duplique la cantidad de bits que quedan, y ese es el número de años que su contraseña debería estar segura contra un ataque de 1 millón de dólares.

4 * 1k es de 40 bits, que es menos de 50, por lo que no es seguro hoy contra un ataque sin conexión.

5 * 4k es de 60 bits, por lo que es seguro durante ~ 20 años contra un ataque sin conexión.

6 * 8k es de 78 bits, por lo que es seguro durante ~ 56 años contra un ataque sin conexión.

Todo esto supone que dejas que un sistema seguro y de buena calidad haga la elección de la contraseña por ti (si intentas elegir una contraseña de esta manera, es casi seguro que obtendrás una menor entropía).

    
respondido por el Yakk 21.08.2015 - 20:27
fuente
1
  

SHA-256 y ECDSA se consideran muy fuertes en la actualidad, pero podrían   Ser roto en el futuro lejano. Si eso sucede, Bitcoin puede cambiar a un   algoritmo más fuerte.

( Algoritmo de hashing de bloques )

Por lo tanto, los algoritmos de hash utilizados no son un problema. Además de esto, las capacidades computacionales ( algoritmo de hashing de bloques ) necesarias para el craqueo no son tan fáciles; incluso si esto ya es cuestionable ( Minería ASIC ). La fuerza de Bitcoin no es su pregunta, pero tome esto como un comentario a la otra respuesta que tiene, y en realidad Conocimiento de la frase de contraseña == Control de money ( Cracking Cryptocurrency Brainwallets )

Volviendo a tu pregunta correctamente, teóricamente hablando, el conjunto de comportamientos humanos es más enorme que el universo mismo. Sin embargo, en la práctica, tendemos a compartir las mismas prácticas que otros ( Mente, sociedad y comportamiento ). Como prueba, incluso con PIN de 4 dígitos , muchas combinaciones rara vez se usan, mientras que otras son tan ampliamente utilizadas:

MencionéestaencuestadecódigoPINde4dígitosdelongitudparahacerunparaleloconunacontraseñaounafrasecomocontraseña(frasedecontraseña):nosetratadecuáleselmejoresquemadecontraseñaparause,( Edward Snowden explica por qué debe usar frases de contraseña, no contraseñas ) sino más bien cuántas personas están listas para seguir los consejos en la práctica. Entonces, lo que preguntas es realmente plausible (por encima de la tabla es una buena prueba). Estos últimos días, investigadores aquí en Francia lograron desarrollar un software basado en en un conjunto de algoritmos para identificar a los usuarios siguiendo la forma en que escriben en un teclado (un ejemplo de cómo podemos modelar incluso actividades complicadas, como escribir en un teclado, por lo que modelar -cracking- las frases de contraseña tampoco podría ser tan complicado). p>

Creo que esta es una raza de ratón y gato .

    
respondido por el user45139 19.08.2015 - 15:48
fuente

Lea otras preguntas en las etiquetas