Estaba dando tumbos y me encontré con este ensayo de Bruce Schneier que afirmaba que el El esquema de contraseñas XKCD estaba efectivamente muerto.
Los descifradores de contraseñas modernos combinan diferentes palabras de sus diccionarios : […]
Esta es la razón por la que el esquema XKCD que se cita a menudo para generar contraseñas: encadena palabras individuales como » correcthorsebatterystaple » – ya no es un buen consejo. Los descifradores de contraseñas están en este truco.
El atacante introducirá cualquier información personal a la que tenga acceso sobre el creador de contraseñas en los descifradores de contraseñas. Un buen descifrador de contraseñas probará nombres y direcciones de la libreta de direcciones, fechas significativas y cualquier otra información personal que tenga. […] si su programa alguna vez lo almacenó en la memoria, este proceso lo capturará.
Su argumento parece ser que porque es conocido que las personas pueden construir sus contraseñas de tal manera que las hacen susceptibles de ser atacadas, pero parece que la fuerza radica puramente en el poder de los exponentes. Supongo que se refiere a personas que no eligen las palabras verdaderamente al azar, lo que tal vez no sea «No es totalmente falso, ya que he vuelto a tirar un par de veces para obtener algo que no son todos adverbios y adjetivos. Sin embargo, supongo que reducir la entropía en un factor de 2 a 10 no es realmente significativo (si la lista de palabras se duplica a 4000, no tan difícil, la pérdida está más que recuperada).
La otra broma acerca de » si su programa alguna vez lo almacenó en la memoria » es un poco desconcertante … ¿No están todas las contraseñas almacenadas en la memoria en un momento u otro? Eso parece un poco excesivo; ¿a qué se refiere realmente? a?
Comentarios
Responder
La Guerra Santa
Creo que encontrarás que la forma correcta de generar contraseñas podría iniciar una guerra santa en la que cada grupo piensa que el otro está haciendo un error matemático muy simple o perder el punto. Si reúne a 10 profesionales de seguridad informática en una sala y les pregunta cómo crear buenas contraseñas, obtendrá 11 respuestas diferentes.
El malentendido
Una de las muchas razones por las que existe ningún consejo coherente sobre las contraseñas se reduce a una cuestión de modelado de amenazas . ¿De qué está tratando de defenderse exactamente?
Por ejemplo: ¿está tratando de protegerse contra un atacante que se dirige específicamente a usted y conoce su sistema para generar contraseñas? ¿O es solo uno de los millones de usuarios en alguna base de datos filtrada? ¿Se está defendiendo contra el descifrado de contraseñas basado en GPU o simplemente contra un servidor web débil? ¿Estás en un host infectado con malware [1]?
Creo que debes asumir que el atacante conoce tu método exacto para generar contraseñas y solo te está apuntando. [2] El cómic xkcd asume en ambos ejemplos que se conocen todos los detalles de la generación.
Las matemáticas
Las matemáticas en el cómic xkcd son correctas y no van a cambiar .
Para las contraseñas, necesito escribir y recordar que uso un script de Python que genera contraseñas de estilo xkcd que son verdaderamente aleatorias. Tengo un diccionario de 2 ^ 11 (2048) palabras en inglés comunes y fáciles de escribir. Podría darle el código fuente completo y una copia de mi lista de palabras a un atacante, todavía habrá 2 ^ 44 contraseñas posibles.
Como dice el cómic:
1000 Guesses / Sec Ataque plausible a un servicio web remoto débil. Sí, descifrar un hash robado es más rápido , pero no es de lo que debería preocuparse el usuario medio.
Eso logra un buen equilibrio entre fácil de recordar y difícil de descifrar.
¿Qué pasa si probamos más potencia ?
Seguro que 2 ^ 44 está bien, pero el descifrado de la GPU es rápido, y solo será más rápido. Hashcat podría descifrar un hash débil [3] de ese tamaño en varios días, no años. Además, tengo cientos de contraseñas para recordar. Incluso el estilo xkcd se vuelve difícil después de unos pocos.
Aquí es donde entran los administradores de contraseñas, me gusta KeePass pero hay muchos otros que son básicamente iguales. Entonces puede generar solo una contraseña xkcd más larga que puedas memorizar (digamos 10 palabras). Luego, creas una contraseña única de 128 bits verdaderamente aleatoria para cada cuenta (hexadecimal o base 64 son buenas). 128 bits será lo suficientemente fuerte para una mucho tiempo. Si quieres ser paranoico, hazlo más grande, no es un trabajo extra generar contraseñas hexadecimales de 256 bits.
[1] Aquí es donde la memoria Si estás en un host comprometido, has perdido. No importa si lo escribe o usa un programa como KeePass para copiarlo y pegarlo si un atacante puede registrar o leer la memoria.
[2] En lugar del más débil (pero más probable) Suponiendo que el atacante acaba de descargar un diccionario llamado » Top Passw0rdz 4realz 111! «.
[3] Seguro que todos deberíamos usar PBKDF2, etc … pero muchos sitios todavía están en SHA1. (Y son los buenos)
Comentarios
- @ Dick99999 Las GPU modernas pueden tener 6 GB de memoria en una sola tarjeta (aunque tomaría 2 ranuras) y pueden almacenar fácilmente un diccionario de unos pocos miles de palabras.
- @NateKerkhofs Esto da miedo y es sorprendente al mismo tiempo. Mi primera máquina (programable) tenía 1 mhz y 64 kb de ram y usted habla de 6 GB de memoria de video …
- » contraseña verdaderamente aleatoria de 128 bits … » ¿Verdaderamente aleatorio? ¿No es ‘ todavía pseudoaleatorio?
- Este debería ser el respuesta aceptada si no es por otra razón que la parte de la Guerra Santa.
- @Doorknob Una vez que eliges combinaciones significativas, la mayor parte de la entropía desaparece. Gané ‘ t tratar de estimar cuántas oraciones podría elegir, pero esto probablemente esté más cerca de una en mil millones que de una en 2 ^ 44.
Respuesta
Schneier escribe esto:
Esta es la razón El esquema XKCD frecuentemente citado para generar contraseñas – encadenar palabras individuales como «correcthorsebatterystaple» – ya no es un buen consejo. Los crackers de contraseñas están en este truco.
pero la clave para comprender lo que realmente busca está un poco más en su ensayo:
Todavía hay un esquema que funciona. En 2008, describí el «esquema de Schneier «
así que eso es todo. Ole «Bruce quiere afirmar que su esquema es el Único y Único, el mejor, el ganador, el esquema final. Por lo tanto, necesita decir cosas despectivas sobre los» competidores «, independientemente de si las afirmaciones son científicamente sólidas o no.
En este caso, siempre se ha supuesto que el atacante conoce el método de generación de contraseñas. Ese es el objetivo de los cálculos de entropía ; consulte el análisis . Que los atacantes estén «en este truco» cambia nada en absoluto (cuando un atacante conoce el método de generación de contraseñas, el cálculo de la entropía describe exactamente la seguridad de la contraseña; cuando el atacante es incompetente y no conoce el método de generación de contraseñas, la fuerza de la contraseña es sólo mayor, en una cantidad que es casi imposible de cuantificar).
La broma sobre «contraseñas en la memoria» es simplemente divagaciones más incoherentes. Las contraseñas necesariamente van a la RAM en algún momento, ya sea que las escriba o las copie y pegue desde una caja fuerte de contraseñas, o algo similar.
Supongo que Bruce estaba borracho.
Actualizar : Se le pidió específicamente a Schneier que comentara sobre la condena de su frase de contraseña en una AMA de Reddit que tuvo lugar el 2 de agosto de 2016. Continuó abogando por su sistema de creación de contraseña como un alternativa superior a las contraseñas de palabras aleatorias. Schneier dijo que su esquema «te da más entropía por carácter memorizable que otros métodos», lo cual es cierto en comparación con los personajes que componen palabras. Pero esto también es irrelevante cuando un sistema se basa en la memorización de palabras en lugar de caracteres, y se le permite combinar suficientes palabras para generar una «entropía» adecuada para su frase de contraseña como un todo.
Comentarios
- Sí, pensé que sus comentarios eran una extraña desviación de su típico buen consejo.Su esquema recomendado probablemente no es ‘ t malo, pero no ‘ no ha sido sometido a muchas pruebas reales. El enfoque de la frase de contraseña es bastante fácil de probar en comparación, y ‘ pensaría que sería atractivo para el criptógrafo que hay en él. Tal vez simplemente leyó las noticias sobre cómo descifrar contraseñas en lenguaje natural y no ‘ no vio una distinción entre esas y las contraseñas de palabras aleatorias.
- Su argumento sobre que él necesita denigrar que la competencia falla, ya que inmediatamente después de describir su esquema, dice » Aún mejor es usar contraseñas alfanuméricas aleatorias no memorables (con símbolos, si el sitio lo permite), y un administrador de contraseñas como Password Safe para crearlas y almacenarlas «.
- @wfaulk Password Safe es Bruce Schneier ‘ s, por lo que su argumento sobre la competencia sigue en pie. Tu declaración fallida falla 😉
- @AviD: No lo sabía por completo. 😳
- Lo que ‘ te estás perdiendo, y aparentemente también a Schneier, es que no hay un » truco » a » ponerse al día con «. La seguridad de Diceware ya asume que el atacante conoce el esquema , de hecho asume que el diccionario en sí es conocido. No ‘ importa si el atacante tiene su diccionario exacto y el número de palabras: simplemente hay demasiadas combinaciones para realizar un ataque exitoso antes de que el sol explote.
Answer
[Divulgación: trabajo para AgileBits, los creadores de 1Password]
Una de las razones por las que abogué por un esquema similar a XKCD (antes de que se llamara así) en Toward Better Master Passwords en 2011 es precisamente porque su fortaleza No confíe en que el atacante sepa qué esquema utilizó. Si puedo citarme a mí mismo
Lo bueno de Diceware es que sabemos exactamente qué tan seguro es incluso asumiendo que el atacante conoce el sistema utilizado. La seguridad proviene de la genuina aleatoriedad de tirar los dados. Usar cuatro o cinco palabras debería ser suficiente contra los posibles ataques durante los próximos años dada la velocidad observada de los crackers de contraseñas [contra la contraseña maestra de 1Password]
Lo que el cómic de XKCD no comunica de manera eficaz es que la selección de palabras debe ser (uniformemente) aleatoria . Si pides a los humanos que elijan palabras al azar, obtienes un fuerte sesgo por los sustantivos concretos. Tales sesgos pueden y serán explotados.
Cuánta fuerza desea
En un mundo perfecto, querríamos que la fuerza de nuestra contraseña sea tan fuerte como las claves con las que estamos protegiendo eso. Di 128 bits. Pero a pesar de estas técnicas, los humanos no van a lograr eso. Así que veamos de manera realista los ataques y lo que podemos hacer que hagan nuestros pequeños cerebros.
Con la lista de palabras original de Diceware de 7776 entradas, obtiene aproximadamente 12,9 bits por palabra que utiliza. Entonces, si quieres al menos 64 bits para tu contraseña, entonces cinco palabras bastarán.
Adivinar contraseñas es más lento que adivinar claves
En esta sección llego a un retroceso muy duro del sobre estima que por una cantidad constante de dólares es 2 ^ 13 veces más lento probar una contraseña que probar una clave AES.
Tenga en cuenta que probar una contraseña es mucho más lento que probar una llave. Si se utilizan los tipos correctos de esquemas de hash de contraseñas, es posible mantener a la mayoría de los atacantes por debajo de las 100.000 suposiciones por segundo. Entonces, aunque es posible que nunca queramos usar claves de 50 bits, usar contraseñas de 50 bits podría tener sentido.
Si no nos vamos a limitar a tirar los dados como en Arnold Reinhold, esquema original de Diceware de 1995, entonces podemos usar una lista más larga de palabras. El generador de contraseñas seguras en 1Password para Windows utiliza una lista de 17679 palabras en inglés de entre 4 y 8 letras inclusive (sin palabras tabú y palabras que incluyan un apóstrofe o guiones). Esto da unos 14 bits por palabra. Así que cuatro de estos te dan 56 bits, cinco te dan 70.
Una vez más, debes prestar atención a las velocidades de craqueo. Deep Crack en 1997 podía ejecutar 92 mil millones de pruebas DES por segundo. Suponiendo que una PC especializada de gama alta puede realizar un millón de conjeturas por segundo contra una contraseña razonablemente bien hash podría hacer 1 millón de conjeturas por segundo, entonces las contraseñas de hoy son 16 bits más difíciles de descifrar que las claves DES en 1997.
Así que veamos esta estimación de Stack Exchange para un procesador de doble núcleo a 3.8GHz: 670 millones de claves por segundo.Si asumiéramos $ 5000 en hardware, fácilmente podríamos superar los 10 mil millones de claves por segundo. Entonces, a un costo de hardware similar, el descifrado de claves sigue siendo más de 2 ^ 13 veces más rápido que el de contraseñas.
Objetivos de seguridad de contraseñas revisados
Trabajando en mi estimación de que es 2 ^ 13 veces más caro probar una contraseña bien hash que probar una clave AES, deberíamos considerar una contraseña razonablemente bien hash como 13 bits más fuerte que su entropía real con respecto al craqueo. Si queremos lograr 90 bits de «fuerza efectiva», entonces 77 bits de fuerza de contraseña deberían hacerlo. Eso se logra con una contraseña Diceware de seis palabras (77.5 bits) de la lista original y 84.6 bits con seis palabras extraídas de una lista de 17679 palabras.
No espero que la mayoría de la gente use contraseñas que Espero que la gente use cosas de 4 o 5 palabras, pero si está realmente preocupado por la NSA que persigue sus contraseñas, entonces seis palabras deberían ser suficientes, asumiendo que usa un esquema de hash de contraseña decente.
Solo estimaciones muy aproximadas
No dediqué mucho tiempo a investigar costos y comparativas. Hay muchas cosas en mis estimaciones con las que discutir. Traté de ser conservador (pesimista sobre el esquema que estoy defendiendo). También he sido vago acerca de las «contraseñas bien codificadas». Nuevamente, soy muy conservador con respecto al hash de contraseñas en 1Password. (Para nuestro nuevo formato de datos, los atacantes se han mantenido por debajo de 20.000 conjeturas por segundo y para nuestro formato de datos más antiguo han alcanzado 300.000 conjeturas por segundo para múltiples -Máquinas con GPU. En mis estimaciones aquí, he elegido 1 millón de conjeturas por segundo para una «contraseña razonablemente bien hash».)
Algunas notas históricas más
La general La idea de contraseñas «similares a XKCD» se remonta al menos a las contraseñas únicas de clave S / de principios de la década de 1980. Se utilizaba una lista de 2048 a través de palabras de cuatro letras. Una contraseña de seis palabras S / Key le dio 66 bits. No sé si esta idea de usar palabras seleccionadas al azar de una lista para una frase de contraseña es anterior a S / Key.
En 1995 , Arnold Reinhold propuso Diceware . No sé si conocía S / Key en ese momento. Diceware se propuso en el contexto del desarrollo de frases de contraseña para PGP. También fue antes de que la mayoría de las computadoras tuvieran generadores de números aleatorios criptográficamente apropiados. Por lo tanto, en realidad implica lanzar dados. (Aunque confío en los CSPRNG de las máquinas que utilizo, todavía disfruto de «crear una nueva contraseña»).
En junio de 2011, reviví el interés por Diceware en Hacia mejores contraseñas maestras con algunas modificaciones adicionales. Esto resultó en mis 15 minutos de fama. Después de que salió el cómic XKCD, produje una edición geek que analizó algunos de los cálculos matemáticos.
En julio de 2011, Randall Monroe se dio cuenta de los esquemas similares a Diceware y publicó su ahora famoso cómic . Como no soy el inventor de la idea, no me importa en absoluto quedar eclipsado por el cómic. De hecho, como dije en mi artículo de seguimiento
Lo que casi me llevó 2000 palabras para decir en términos no técnicos, Randall Monroe pudo resumir en un cómic. Esto solo muestra el poder de las matemáticas …
Pero hay una cosa acerca de cómo se ha interpretado el cómic que me preocupa. Para mí y para las personas que ya entendieron el esquema, está claro que las palabras deben elegirse mediante un proceso aleatorio uniforme y confiable. Sacar palabras «al azar» de su cabeza es no un proceso uniforme confiable .
Comentarios
- Genial que mencione Diceware en una perspectiva histórica y al mismo tiempo reconozca el gran trabajo de marketing que XKCD hizo con las frases de contraseña. Acerca de su esquema modificado, ¿se explica en alguna parte por qué no se incluyen palabras de 3 o 2 letras en esas listas de palabras? consulte blog.agilebits.com/2013/04/16/… . ¿Es porque las palabras como ‘ off ‘ y ‘ line ‘ también podría ser atacado por 1 palabra sin conexión? Vea mis comentarios sobre el post de Raestloz. La lista original de Diceware contiene muchas palabras de 1, 2 y 3 letras.
- ¡Excelente pregunta! Mi pensamiento (posiblemente erróneo) en ese momento era que también quería que las frases de contraseña tuvieran una longitud mínima. Quería asegurarme de que si alguien usaba una frase de contraseña de tres palabras, excedería un mínimo de 12 caracteres de longitud. Observo que S / Key también permite palabras de 1, 2 y 3 letras.
- Revisé rápidamente las listas de palabras que usa mi generador de frases de contraseña SimThrow y el probador.La lista original de Diceware tiene al menos 1400 de estas colisiones como ‘ cualquier ‘ ‘ cómo ‘ y ‘ de todos modos ‘. Eso puede degradar una oración de 4 palabras a 3 palabras, si no se usa un separador. Es ‘ un número de colisión alto porque esa lista incluye todas las letras y combinaciones de 2 letras. Así que parece que tomó la decisión correcta al no incluir palabras de 2 letras. Diceware aconseja una longitud mínima de oración de 17. Mi generador estima los tiempos de recuperación basados en palabras y caracteres, para hacer frente a sitios que solo permiten contraseñas cortas (20).
- También verifiqué las siguientes listas de palabras. S / Key : > 93 colisiones, dicelistas expandidas EE. UU. : > 190 y mi lista de Países Bajos: > 750. Una forma de manejar esto es recomendar que se incluya un carácter separador entre las palabras de una frase.
- Cuidado, tirar los dados no es completamente aleatorio. forbes.com/sites/davidewalt/2012/09/06/… y insidescience.org/blog/2012/09/12/…
Responder
El esquema de contraseñas XKCD es tan bueno como siempre. La seguridad no se deriva de que sea desconocida, sino de que es una buena forma de generar contraseñas memorables desde un gran espacio de búsqueda. Sin embargo, si selecciona las palabras que desea utilizar en lugar de generarlas al azar, esta ventaja se pierde: humanos no son buenos para ser aleatorios.
La parte sobre la memoria está mal expresada, pero es una preocupación: si algún malware que roba contraseñas llega a su computadora, barre todo como texto de la RAM y el disco duro para usarlo en un ataque dirigido a sus cuentas.
Comentarios
- +1 I don ‘ No creo que la técnica XKCD está muerta: ‘ no es ‘ un truco ‘ que los crackers ‘ están en ‘. Puedes conocer la técnica de adentro hacia afuera, pero eso no ‘ No lo hará más agrietable si es ‘ lo suficientemente aleatorio.
- @PiTheNumber si ‘ Si no estás usando suficientes palabras o un diccionario pequeño, entonces no ‘ no estás aplicando la técnica xkcd en absoluto; pero no, incluso en el cómic xkcd ‘ está explícitamente claro que NO está perdiendo la ventaja si se lo dice a todo el mundo » hey, yo ‘ estoy usando la contraseña de estilo de pila de caballo correcta » – la cantidad de verificaciones / entropía bits es más alta que la mayoría de las contraseñas normales incluso si se conoce el método.
- Siempre que no ‘ t también use XKCD ‘ s generador de números aleatorios (gané ‘ t enlace, todos lo saben).
- @PiTheNumber el concepto de ‘ La contraseña verdaderamente aleatoria de 11 letras ‘ es irrelevante, ya que no es una alternativa razonable a las frases de contraseña. Las frases de contraseña son alternativas a las contraseñas memorizables , y son exactamente tan débiles como las describe xkcd. Claro, si usa una contraseña almacenada en un administrador de contraseñas, entonces las contraseñas completamente aleatorias encajan, pero en ese caso ‘ esencialmente no es ‘ su contraseña ‘ como algo que usted usaría o vería, sino una ‘ clave aleatoria autogenerada token ‘ similar a las claves ssh.
- @PiTheNumber Las palabras no son elegidas por humanos, se eligen al azar. El diccionario del que se eligen las palabras es en sí mismo elegido por humanos, pero eso es un asunto diferente. No hay «más probable»: las matemáticas en el cómic xkcd son correctas.
Responder
Como otros Dicho esto, el ataque que Bruce Schneier describe es efectivo cuando el usuario elige varias palabras él mismo, sin usar una herramienta. Schneier suele escribir para un público general, que es poco probable que comprenda la diferencia entre palabras «aleatorias» elegidas por él mismo y palabras aleatorias elegidas por el programa.
Agregaré eso incluso si usa un otra herramienta para elegir al azar palabras de un diccionario, tienes que usar la primera secuencia que te da . Si lo decides, » «No me gusta ese», y lo ejecuta de nuevo hasta que le guste, ya no es una frase de contraseña aleatoria , es elegida por humanos.
Además, incluso si usa un script, e incluso si no daña la aleatoriedad eligiendo su favorito de entre múltiples secuencias, todavía existe la posibilidad de que un atacante pueda explotar su PRNG (pseudoaleatorio generador de números). Si el atacante puede saber cuándo creó la contraseña y qué PRNG usó, y tal vez otra información sobre su PRNG, como el tráfico de red que se produjo usando su PRNG aproximadamente al mismo tiempo, eso podría reducir la entropía efectiva de su frase de contraseña aleatoria.
Quizás un poco esotérico, pero si su PRNG es explotable, la cifra 2 ^ 44 no se realizará por completo. (Y si asume que «nadie intentará explotar mi PRNG», ¿Por qué le importa usar una frase de contraseña verdaderamente segura?)
Comentarios
- +1 Ángulo interesante. La explotación del PRNG es obvia en el contexto del cifrado claves: es ‘ interesante que parezca ser prácticamente una ocurrencia tardía. Supongo que las contraseñas típicas son tan malas que los PRNG se sienten seguros en comparación. Presumiblemente, si un atacante puede robar una lista de contraseñas hash, ¿encontrar el pwdChangedTime o equivalente sería trivial? ¿Otra razón para terminar con la práctica del envejecimiento de las contraseñas?
- Rápido reverso del sobre. Si actualiza la contraseña dentro de un minuto de generarla y la única fuente de entropía en su PRNG es la hora del sistema, es posible que esté buscando reducir las cosas hasta 2 ^ 35 para una resolución de nanosegundos. ¿Suena razonable?
- Suponga que rechazo una frase porque ‘ t no me gusta una palabra y lo hago 1000 veces. Entonces he reducido el diccionario en 1000 palabras. ¿La elección de ese diccionario reducido sigue siendo aleatoria? Si todavía lo es, entonces una oración de 4 palabras de un diccionario Diceware de 7776 palabras reducido de este modo todavía da (7776-1000) ^ 4 = 2.1E15 / 50.9 posibilidades / bits de entropía, por debajo de 3.7E15 / 51.7 posibilidades / bits de entropía para el total diccionario. No puedo juzgar la influencia del generador aleatorio. Yo uso el de www.random.org
- @ Dick99999 No ‘ no creo que ‘ sea realmente sobre la cantidad de opciones ofrecidas que excluye al elegir una contraseña. Es ‘ s sobre el patrón de las frases que excluiría , si se le presentaran. Un atacante podría adivinar que el usuario preferirá palabras más cortas, palabras más fáciles de escribir en un teclado QWERTY y palabras sin mayúsculas ni puntuación; esta estrategia podría reducir enormemente el espacio de frases de contraseña para explorar. Básicamente, ‘ es el mismo problema que adivinar los equipos deportivos favoritos, los cumpleaños y los ‘ nombres.
- @wberry No ‘ no creo que las matemáticas funcionen en eso. Suponga que rechaza 1000 frases de contraseña antes de encontrar una que le guste. Entonces es ‘ una estimación razonable de que solo le gusta 1/1000 del espacio de contraseña posible. Ahora suponga que un atacante puede adivinar completamente qué 1/1000 del espacio es su favorito, lo que reduce el número de posibilidades de 2 ^ 44 a 2 ^ 34, lo cual es significativo pero no tanto como para que una palabra adicional pueda ‘ t rellena la pérdida. Además, si limita sus rechazos, incluso esto no es necesario.
Responder
Depende. Una cosa que debes entender es que esto no es seguridad por oscuridad: los valores de entropía utilizados en el cómic suponen que el atacante ya sabe que estás usando este método . Si el atacante no sabe cómo estás generando la frase de contraseña, entonces la entropía aumenta enormemente.
El truco del método XKCD es que necesitas usar un generador de números aleatorios y una buena lista de palabras: nunca escojas las palabras usted mismo, ni siquiera «aleatoriamente» (entre comillas porque los humanos son realmente malos para elegir cosas al azar, razón por la cual no debería hacerlo). Diceware tiene herramientas para ayudarte a hacer esto, e incluso elimina el elemento aleatorio del alcance de la computadora usando dados ordinarios.
Contra un ataque de base amplia, el tipo de cosas en las que un atacante obtiene una lista de contraseñas de un sitio web y no sabe nada acerca de las contraseñas que están en la lista, esto es tan fuerte como siempre. Tal como dices, su fuerza proviene del poder de los exponentes (y una buena lista de palabras).
El ataque de Schneier puede funcionar, pero solo en un contexto completamente diferente. Su ataque asume que estás siendo atacado específicamente por un atacante que ya sabe mucho sobre ti .Esto puede no parecer especialmente preocupante al principio, porque el atacante determinado estereotipado es un agente de inteligencia detrás de una pantalla, y la mayoría de nosotros no tenemos que preocuparnos tanto por ellos: hay muchos de ellos, y cada uno solo puede darse el lujo de preocuparse por tanta gente. Pero en realidad es más un problema de lo que parece a primera vista, gracias a la llegada de software malicioso sofisticado. Una instalación de malware puede permitirse el lujo de preocuparse por usted aunque el atacante no lo haga, por lo que aún termina enfrentándose a un atacante extremadamente decidido. Incluso más decidido de lo que podría ser un humano, de hecho, aunque mucho menos creativo.
El malware que recopila información sobre usted dará a las palabras que le parecen importantes una prioridad muy alta en la lista de palabras. Lo hace porque la mayoría de las personas eligen las palabras «al azar», pero al hacerlo, en realidad se inclinan bastante hacia las palabras que son más importantes para ellos: todavía puede «sentirse» aleatorio, pero es mucho más probable que algunas palabras sube que otros. Por esa razón, dar a estas palabras alta prioridad a menudo resulta en aciertos relativamente rápidos, y este es el «truco» del que habla Schneier.
Sin embargo, aún puede frustrar el ataque de Schneier usando aleatoriedad real . El problema es que esto requiere disciplina: todas las decisiones sobre qué palabras usar en su frase de contraseña (además de elegir una buena palabra list) debe estar completamente fuera de sus manos. Aquí es donde cosas como Diceware pueden ayudarlo.
Comentarios
- @Gilles: La razón por la que la entropía disminuye si el atacante sabe que el método cambia la estructura completa de la contraseña. Si no ‘ no conoce el método, entonces » la grapa correcta de la batería del caballo » parece 216 símbolos de un alfabeto de 2 símbolos: en otras palabras, 216 bits. Si lo sabe ‘ s cuatro palabras en inglés (y saber XKCD
s lista de palabras), entonces parece 4 símbolos de un alfabeto de 2048 símbolos. 2048 ^ 4 es grande, pero ‘ es menor que 2 ^ 216, que es la cantidad de bytes de entropía que tendría una cadena de bits verdaderamente aleatoria de esa longitud. Pero la afirmación de XKCD ‘ ya da cuenta de eso: 2048 ^ 4 = 2 ^ 44.
Respuesta
La fuerza Las matemáticas son bastante simples si la elección de palabras es aleatoria: (número de palabras en el diccionario) ^ (número de palabras en la oración), asumiendo que el atacante conoce el número de en el diccionario. Entonces, una frase de 5 palabras usando un diccionario conocido ( del atacante !) De 7776 palabras: tiene 7776 ^ 5 = 2.8E19 o 64 bits de entropía.
Hay un elemento que no se menciona en el esquema: al agregar solo 1 carácter (aleatorio) en un lugar aleatorio en toda la frase, la fuerza aumenta en aproximadamente 10 bits , consulte Diceware, material opcional .
Las matemáticas anteriores tampoco tienen en cuenta el símbolo separador entre las palabras. Eso puede agregar otros 5 bits.
Comentarios
- El punto (o al menos uno de ellos) del cómic XKCD es que agregar un personaje aleatorio en un lugar aleatorio aumenta la dificultad de memorizar la contraseña más que aumenta la dificultad de descifrarla.
- Cierto para memorizar en general, no es cierto para una contraseña maestra de una bóveda, creo. Veo ‘ fácil de escribir ‘ como la principal ventaja. Me encuentro con más y más situaciones en las que los administradores de contraseñas no pueden completar la contraseña (aplicaciones, red de invitados WifI) y tengo que escribirlas.
- @Mark: los caracteres extra aleatorios (o simplemente que no son de diccionario) podrían sea el mismo en todas sus contraseñas, lo que significa que no ‘ la olvidará. Usted ‘ ganará los bits extra de entropía al menos hasta que varias otras de sus contraseñas se vean comprometidas, momento en el que la contraseña sigue siendo xkcd-Strength …
- @imsotiredicantsleep – Esa es una sugerencia muy interesante. Siempre buscó una solución para hacer esta técnica de fortalecimiento más fácil de usar. Podría llamarse seguridad por oscuridad porque el atacante puede beneficiarse del conocimiento sobre el carácter aleatorio y la posición. Una pequeña compensación, creo que entre facilidad de uso y seguridad.
- @ Dick99999 absolutamente, es ‘ una compensación. Pero hasta que el componente constante se vea comprometido, derrotará un ataque de diccionario na ï ve y ralentizará significativamente uno más sofisticado. Sin embargo, no ‘ estoy de acuerdo en que ‘ es seguridad por oscuridad, ya que puedo decirles que estoy usando la técnica sin perder la entropía que me dan los valores posibles . La principal debilidad es que una vez que se conoce la parte constante, ha sacrificado el espacio de la contraseña que podría haber sido aleatorizado.
Respuesta
También me gustaría agregar una yes también, pero para otras razones. No es un buen consejo [en general] debido a restricciones de longitud:
- Sitios como Skype, ING, eBay y en mi país Binckbank y KPN limitan las contraseñas a 20 caracteres. (Ese límite de banco es 15, pero usó autorización de 2 factores)
- Con una longitud promedio de 4.5 caracteres / palabra para un diccionario corto de 3000-8000 palabras, eso permite usar frases de 3-4 palabras solamente.
- Cuando se utilizan diccionarios grandes, el promedio puede ser de 6 a 7: solo 3 palabras
- Si el sitio insiste en usar un símbolo y un número en la contraseña, solo hay 18 caracteres disponibles para la frase.
Esas longitudes solo protegen contra ataques en línea. Para los ataques fuera de línea, depende de la derivación de la clave y la función hash, los recuentos de iteraciones y el hardware de craqueo utilizado por el sitio de la aplicación, si una frase de 3-4 palabras ofrece suficiente protección.
Comentarios
- Los sitios que limitan la longitud de las contraseñas suelen ser un gran indicador de que su sistema de almacenamiento de contraseñas es muy inseguro. Huir. Con todo, los requisitos de seguridad de las contraseñas tienden a ser más perjudiciales que útiles, en mi opinión (tanto para la seguridad como para la memorización).
- Agregue Suntrust a la lista de contraseñas limitadas a 15 caracteres. Me pregunto qué pasa con esa industria.
- Por otro lado, ‘ es mucho más fácil escribir ‘ correcthorsebatterystaple ‘ en un teléfono inteligente que seguir alternando entre minúsculas, mayúsculas, números y puntuación.
- Límites de contraseña bajos don ‘ t solo significa métodos de almacenamiento de contraseñas inseguros: significa que las contraseñas se almacenan en texto plano o están encriptadas (no con hash). @ Á ngel Mis contraseñas para todas las cuentas relacionadas con Microsoft son más largas que eso, así que llamo a BS. Hace siglos, antes de NTLM, las contraseñas de Windows estaban limitadas a 16 caracteres, iirc. Eso es anterior a XP y es poco relevante.
- @Zenexer Con respecto a las cuentas de Microsoft: las cuentas en línea de Microsoft (live.com, Office 365, etc.) están limitadas a 16 caracteres (se permiten letras, números y algunos símbolos ).
Respuesta
Es importante tener el contexto correcto. El xkcd comic compara Tr0ub4dor&3
con una entropía supuesta de 28 bits (aunque calculo es 34.6) a correcthorsebatterystaple
y sus 44 bits asumidos de entropía (un código diceware de cuatro palabras es de 51.7 bits … pero una de esas palabras no es un software de precisión. Usando un diccionario de ortografía simple de 100k palabras, calculo que son 66.4 bits).
Primero, hagamos esto más fácil de entender. Hay 94 caracteres imprimibles. Una contraseña de un carácter tiene log₂(94) = 6.55
bits de entropía. Dos caracteres tienen log₂(94²) = 13.10
bits de entropía.Puede dividir la entropía final de un esquema de contraseña por 6.55 para determinar la complejidad equivalente de una contraseña puramente aleatoria medida en caracteres.
Por lo tanto:
- 28 bits de entropía ≈ Contraseña de 4.3 caracteres (¡muy mala!)
- 44 bits de entropía ≈ Contraseña de 6.7 caracteres (también mala)
- 66.4 bits de entropía ≈ Contraseña de 10.1 caracteres (aceptable para 2016)
Confiando en los números de xkcd, puede ver por qué Schneier estaba preocupado. Esto parece un poco exagerado, ya que la mayoría de los atacantes aún se rendirán después de diez o más caracteres [cita requerida] —un clúster grande debería tardar unos años en romper una contraseña hash MD5 de 10 caracteres— aunque, obviamente, si un buen atacante conoce su esquema, la longitud absoluta de caracteres no es un problema.
La complejidad total del esquema es lo más importante. Debes asumir el peor de los casos (que el atacante conozca tu esquema exacto) . Es una gran idea asegurarse adicionalmente de que su contraseña tenga más de 11 caracteres ( cuando esté permitido ), pero esa «es una prioridad secundaria (y viene gratis con frases de contraseña ).
Crear frases de paso con cuatro palabras más una contraseña
Aquí está mi consejo para la creación de frases de paso (con estimaciones de entropía):
- Haga una «oración» sin sentido de más de 4 palabras de más de 4 caracteres cada una (100,000⁴)
- Ninguna de estas palabras se puede conectar a usted –o los demás– de cualquier manera
- Use mayúsculas y minúsculas, espacios y al menos dos símbolos o signos de puntuación (32²)
- Al menos una palabra debe fallar la revisión ortográfica (por ejemplo, leetspeak, palabras extranjeras, 64 cada una)
- Incluir al menos otro «error» (ortografía / gramática / sintaxis, entropía desconocida)
- Entre dos palabras, agregue un código de acceso tradicional «aleatorio» de 7+ caracteres (92⁷)
Debe tener al menos log₂(100000⁴ × 32 × 3 × 64 × 92⁵) = 112
bits de entropía (que es muy fuerte, ≈17 caracteres). Omití las mayúsculas (supongo que solo el primer carácter está en mayúsculas) y un símbolo (supongo que termina en .
, !
o ?
, por lo que el segundo símbolo tiene una complejidad de 3) y también asumí que «aleatorio» no es «bastante aleatorio y calculé el código como un equivalente de cinco caracteres (estricto cumplimiento de lo anterior fórmula le daría más de 128 bits de entropía con ≈20 caracteres).
Vale la pena repetir ese punto final:
Los humanos son muy malos para generar aleatoriedad
Muy pocos códigos de acceso de caracteres «aleatorios» generados por humanos incluso se acercan a la verdadera aleatoriedad. Habrá patrones en el código relacionados al teclado de la persona, los números favoritos y / o la suposición de que cierta palabra oscura es imposible de adivinar.
Diseñé este esquema para que sea robusto contra la falta inherente de aleatoriedad de las personas; asumiendo un vocabulario limitado (diga las 2600 palabras en Basi c English ), el uso de palabras relacionadas (penalizado por contar solo tres palabras) y un código de acceso limitado a la entropía de seis caracteres alfanuméricos, log₂(2600³ × 62⁶)
en sí mismo sigue siendo fuerte en 70 bits (≈10.6 caracteres).
¡No permita que esto diluya su frase de contraseña! Esta sección está presente para demostrar que este esquema tiene cierta resistencia a la entropía limitada de opciones, no para fomentar las malas decisiones.
El único problema real proviene de las personas que toman citas o letras como sus cuatro palabras. Estas frases de paso se anulan trivialmente si la cita o la letra se pueden adivinar (por ejemplo, mirando sus me gusta de Facebook) o si tuvieran una entropía de alrededor de 6 caracteres aleatorios en un tiempo de crack de 30 segundos (MD5) a 17 días (PBKDF2). .
Puede usar mi tabla de entropía para calcule la entropía de su esquema de frase de contraseña.
(No se preocupe por el hecho de que las contraseñas vivan brevemente en la memoria a menos que eres un desarrollador)
Comentarios
- También debe tenerse en cuenta que no ASCII son como balas de plata, que derrotan a la mayoría de los ataques automáticamente. Una contraseña de
•••••••••
(nueve caracteres de viñeta) es vergonzosamente segura (¡y luce igual enmascarada que sin máscara!) Debido a su longitud y oscuridad, aunque ‘ sería una idea horrible depender de este hecho. Pon un carácter que no sea ASCII en tu contraseña + 4 palabras y tu complejidad se dispara (para calcular, usa su valor unicode), aunque quizás a expensas de la portabilidad (¿y si ‘ ¿estás usando el teléfono inteligente de un amigo ‘?)
Responder
No, no lo creo.
El consejo real en ese cómic xkcd es usar mnemónicos que sean fáciles de recordar y genera la contraseña siempre que puedas recordarla . Esos son consejos básicos de contraseña en cualquier lugar y siempre serán ciertos (incluso el método citado de Schneier usa estos dos hechos básicos). De hecho, el cómic utiliza palabras comunes en inglés, pero su implementación no tiene por qué serlo, ni lo hizo el cómic implica que deberías.
Por supuesto, las contraseñas más seguras son cadenas totalmente aleatorias como el aspecto de una cadena MD5, y probablemente puedas usar un administrador de contraseñas para almacenar todas esas contraseñas, pero luego ¿qué contraseña vas a usar para ese administrador? ¯ \ (ツ) / ¯
Comentarios
- » Por supuesto, las contraseñas más seguras son cadenas totalmente aleatorias » NO, ver para una comparación en.wikipedia.org/wiki/Password_strength#Random_passwords
- No, eso ‘ no es lo que aconseja el xkcd, le sugiero que lo lea de nuevo, y el análisis en la pregunta relevante aquí (vinculada arriba).
- Su firma » ¯ \ (ツ) / ¯ » es una contraseña excelente: corta, fácil para recordar, realmente difícil de romper, difícil de detectar como contraseña en un registro.
- @Daniel Azuelos, … trivial para agregar a una lista de cadenas de uso común …
- @Raestloz Una persona que habla un idioma que no ‘ t usar caracteres que se encuentren en el rango ASCII no ‘ t usará una contraseña ASCII. ¿Crees que todas esas personas en tierras asiáticas usan dos teclados, uno para escribir todos los días y otro para contraseñas? A diferencia de los sistemas operativos de treinta años, como DOS, todos los sistemas operativos modernos ‘ manejan Unicode y otros conjuntos de caracteres / páginas sin problemas, y cualquier sitio web debe admitirlos (siempre que el el desarrollador no ‘ t codifica el formulario usando un juego de caracteres aleatorio cada vez, o deja que el navegador elija). Las contraseñas son solo bits que significan algo para los humanos.
correcthorsebatterystaple
, ¡ahora es mucho menos segura!correcthorsebatterystaple
, tenga cuidado de no ‘ t iniciando sesión en un sistema que la trunca silenciosamente. Una contraseña comocorrecth
probablemente sea más fácil de adivinar queN#y;f8eR
.