
Jesper M. Johansson, Ph.D., ISSAP, CISSP
Director de programa de seguridad, Microsoft Corporation
Consulte otras columnas de administración de la seguridad.
Éste es el segundo artículo de la serie sobre contraseñas y frases usadas como tales. En la primera parte se trataron los aspectos esenciales de las contraseñas y las frases usadas como tales, cómo se almacenan, etc. En esta segunda parte, hablaré de la relativa seguridad de cada tipo de contraseña y utilizaré unos enfoques matemáticos para ilustrarlo. En la tercera parte, presentaré las conclusiones y las instrucciones sobre cómo elegir contraseñas y configurar una directiva de contraseñas.
Las frases usadas como contraseña se están poniendo de moda por diversas razones, por ejemplo que existen herramientas que pueden descifrar muchas contraseñas en cuestión de minutos. Estas herramientas no son nuevas. Quakenbush Password Appraiser ya podía hacer esto en 1998. Lo que es novedoso es la teoría y la práctica tras el equilibrio espacio-tiempo, introducidas por el Dr. Phillippe Oechslin. Este equilibrio espacio-tiempo implica que no se almacenan todos los algoritmos hash posibles, lo que requeriría más almacenamiento del que existe en el mundo (si se intenta almacenar los algoritmos hash NT). El almacenamiento de todos los algoritmos hash NT de hasta 14 caracteres para el conjunto de caracteres formado por 76 caracteres ocuparía 5.652.897.009 exabytes, capacidad que no tiene ningún sistema de archivos actual. El almacenamiento de todos los algoritmos hash LM, que sólo requiere 310 terbytes, es también inviable. Para resolver este problema, el Dr. Oechslin ideó un balance tiempo-espacio en el que sólo se almacena una parte del algoritmo hash, con las contraseñas asociadas. Así se reduce enormemente los requisitos de almacenamiento y, con tan solo 17 gigabytes, se pueden almacenar los algoritmos hash LM para el mismo conjunto de caracteres. Como veremos más adelante, uno de los principales argumentos a favor de las frases usadas como contraseña es que sus requisitos de almacenamiento son inmensos e impiden los ataques automatizados contra los algoritmos hash.
El primer argumento de los defensores de las frases usadas como contraseña es que son más fáciles de recordar para los usuarios que una contraseña larga, de más de 10 caracteres. Esto puede ser cierto, pero como muy pocos usuarios utilizan contraseñas de más de 10 caracteres, es difícil saberlo. Para responder esa pregunta, lleve a cabo un estudio, en absoluto científico, para averiguar si los usuarios pueden recordar contraseñas de 10 caracteres o más. Pedí la opinión de los administradores, que, en un 99% dijeron que los usuarios no sólo olvidarían las contraseñas de 10 caracteres, si no que además se negarían a utilizarlas. ¿Y podrían recordar los usuarios una frase que tuviera 10 caracteres? Probablemente, ya que contiene sólo unos cuantos símbolos (en este caso, palabras). Hay un famoso artículo de 1956, escrito por Miller, que me encanta citar: “The Magical Number Seven, Plus or Minus Two: Some Limits On Our Capacity For Processing Information” (en inglés). La premisa de dicho artículo es que los humanos tienen capacidades de procesamiento de información limitadas. En un momento dado, podemos acordarnos de 7, más o menos 2, "pedazos" de información. El número 7 es, en realidad, menos importante que el hecho de que la capacidad de procesamiento de información es limitada. Hay quien opina que la cifra debería ser 5 más o menos 2, o incluso 3, pero opino que la cifra carece de importancia En cualquier caso, la capacidad de procesamiento de información de los humanos es limitadísima.
La definición de "pedazo" también depende de lo que estemos tratando de hacer. En una contraseña de 10 caracteres aleatorios, un pedazo es un símbolo, y Miller afirmaría que la mayoría de las personas no pueden recordar 10 símbolos aleatorios. Es mucho más fácil recordar una frase usada como contraseña de 10 caracteres formada por dos o tres palabras, o pedazos.
Si asumimos que los usuarios pueden recordar siete pedazos, palabras o símbolos, la contraseña más larga que podrían usar estaría limitada a nueve caracteres. Esta opinión ha sido confirmada mediante pruebas empíricas. Para evaluar la seguridad de las contraseñas, descifré 28.000 contraseñas de un dominio de gran tamaño. De ellas, puede descifrar 23.311, el 83%, totalmente, y otro 13,16% en parte. Si bien este ejemplo no representativo de todas las contraseñas, los datos estadísticos que se ofrecen en este artículo se basan en mi análisis de las 23.311 contraseñas descifradas. Este análisis otorga cierta credibilidad al límite de 9 caracteres: el 64% de las contraseñas descifradas del dominio, que requerían 7 caracteres como mínimo, tenían 9 caracteres o menos. Al menos el 90.37% de todas las contraseñas del dominio tenían menos de 15 caracteres. (Es imposible decir exactamente cuántas tenían menos de 15 caracteres, a menos que las contraseñas se obtuvieran como texto sin cifrar. Por lo tanto, se asumió que las contraseñas sin un algoritmo hash LM tenían 15 caracteres o más, aunque algunas carecían del algoritmo hash LM por otras razones.)
En una frase usada como contraseña, cada palabra es un pedazo. La longitud media de una palabra inglesa es de cinco caracteres. En inglés, la cifra de cinco caracteres por palabra se usa para medir la velocidad de la mecanografía, en palabras por minuto. De la misma manera, en una encuesta de 1995 de 45 usuarios de PGP, Arnold Reinhold descubrió que la frase usada como contraseña de PGP contenía una media de 5,3 caracteres. Reinhold descubrió también que el 62,5 de las palabras de su estudio eran palabras reales del idioma inglés. La muestra es tan pequeña que su valor científico es casi nulo, pero es la mejor de que disponemos.
Volviendo a Miller, un usuario que se acuerde de una frase de 7 palabras, puede tener una contraseña de 41 caracteres. Sin embargo, hay que tener cuidad con este razonamiento. Primero, es improbable que una frase usada como contraseña sea así de larga. Por ejemplo, la que yo utilizo ahora tiene sólo 35 caracteres, y ya me parece bastante molesta. Reinhold averiguó también que la frase usada como contraseña media tenía sólo cuatro palabras.
El otro argumento a favor de las frases usadas como contraseña es que, como son más largas, son más seguras. De todos modos, la longitud de una frase usada como contraseña no se puede comparar directamente con la de una contraseña. Si dice que las contraseñas más largas son mejores a causa de la forma normal de medir la seguridad de una contraseña: el tiempo que se tarda en descifrarla. Por ejemplo, como ya hemos visto, llevaría casi 6 años más descifrar una contraseña de 8 caracteres que una de 7. Sin embargo, esta afirmación sólo es exacta si la contraseña es verdaderamente aleatoria y cada uno de los símbolos tiene la misma probabilidad de aparecer en la contraseña. Si una contraseña no es verdaderamente aleatoria, estos cálculos dejan de ser válidos.
Otro argumento a favor de las contraseñas más largas que se menciona mucho es que las contraseñas de más de 14 caracteres no generan algoritmos hash LM. Si tenemos en cuenta que los algoritmos hash LM se pueden eliminar de otras formas, la simple eliminación de los algoritmos hash LM no supone una ventaja de las frases usadas como contraseña. Entonces, ¿existe una ventaja en la longitud? En realidad no. En la actualidad, los programas para descifrar contraseñas están diseñados para descifrar símbolos, pero ello no quiere decir que en el futuro no utilicen las palabras como símbolos. De hecho, algunos pensamos que eso es bastante probable. En fin, las contraseñas más largas no representan una ventaja duradera, simplemente son eficaces contra las herramientas de descifrado disponibles en la actualidad.
Las frases usadas como contraseña tienen una ventaja clara: mayor entropía. Entropía es la forma habitual de medir si algo es muy aleatorio o no. La entropía está formada por tres componentes: el número de elementos seleccionados, el tamaño del conjunto del que se seleccionan y la probabilidad de que se seleccione cada uno de los elementos. Puesto que las frases usadas como contraseña son más largas que las contraseñas, su entropía puede ser mayor, aunque se seleccionen en el mismo conjunto de caracteres. Esto es importante, porque las herramientas para descifrar contraseñas se pueden diseñar para funcionar mediante la probabilidad. En lugar de únicamente probar todas las combinaciones posibles de letras en una contraseña, las herramientas para descifrar contraseñas suelen empezar por las combinaciones normales de un diccionario, y después pasas a las permutaciones de las mismas en función de las frecuencias de las letras. Así, el cálculo de 28 días para descifrar una contraseña de 7 caracteres podría no ser exacto. De hecho, a menudo es posible descifrar muchas contraseñas en cuestión de segundos, dependiendo de cómo estén formadas. Por lo tanto, la entropía es una medida mucho mejor para la seguridad de las contraseñas que simplemente la longitud y el conjunto de caracteres.
Veamos unos ejemplos. Las pruebas muestran que más del 83% de las contraseñas de nuestra muestra estaban formadas exclusivamente por el conjunto de caracteres de letras, número y los símbolos !@#$%^&*()-_+=. Dicho conjunto de caracteres tiene 26+26+10+14=76 símbolos en inglés, y unos pocos más en otros idiomas. Además, el 80% de los símbolos utilizados en las contraseñas se seleccionan entre 32 de esos 76 símbolos. Los 32 símbolos más frecuentes son, en orden de importancia: ea1oirn0st2lud!m3hcyg94kSbpM758B. Y, lo que es más interesante, el 10% de las contraseñas estaban formadas sólo por alguno de estos 32 símbolos.
La entropía natural, o tasa absoluta, de un conjunto de caracteres de 76 símbolos es R=Log2L = 6,25 bits por símbolo. Por lo general, se considera que la tasa absoluta como límite superior de la entropía, y se asume que todos los caracteres tienen la misma probabilidad de ser seleccionados. Sin embargo, C.E. Shannon calculó la entropía por letra de una cadena de 8 letras en inglés en 2,3 bits por letra (Shannon, C.E.: “Predication and Entropy in Printed English,” Bell System Technical Journal, v. 30, n. 1, 1951, pp. 50-64). No debemos olvidar que el trabajo de Shannon se basaba en palabras inglés que utilizan un conjunto de 26 caracteres, no un conjunto de caracteres de 76 símbolos como en nuestro ejemplo. Con todo, hemos observado que los usuarios seleccionan la mayor parte de los símbolos de entre sólo 32 símbolos. En cualquier caso, la entropía real por símbolo en una contraseña es probablemente mayor que el 2,3 que calculó Shannon, pero menor que la tasa absoluta de 6,25. Log2 32 = 5, que, a pesar de ser un poco mayor de lo que yo creo que es, puede utilizarse como estimación del límite superior de la entropía por bit de una contraseña. Dado que una contraseña tiene una longitud media de 9,16 caracteres, que redondeamos a la baja a 9, tiene una entropía no superior a 9*5=45 bits.
El argumento a favor de las frases usadas como contraseña es que la mayoría de las personas tiene un vocabulario de más de 76 palabras. Una frase usada como contraseña se puede considerar también como algo formado a partir de un idioma, a partir de las palabras que existen en el idioma utilizado para generar la frase usada como contraseña. El Oxford English Dictionary contiene 616.500 palabras, si bien sólo los eruditos conocen 614.000 de ellas. En la realidad, el vocabulario medio de los americanos puede estar entre las 10.000-20.000 palabras según el lingüista Richard Lederer o entre 50.000-70.000 palabras según el lingüista James L. Fidelholtz. Ambas autoridades están de acuerdo en que la gran mayoría constituyen vocabulario pasivo, es decir, una palabra se reconoce si se escucha, pero no se utiliza. Un ciudadano medio sólo usaría una pequeña parte de ese vocabulario.
Asumamos que las frases usadas como contraseña se basan en un conjunto de sólo 300 palabras. Es probablemente una cifra muy pequeña, pero por otro lado la mayoría de esas palabras sólo tienen significado cuando se ponen en un orden concreto, lo que reduce considerablemente el carácter aleatorio de la frase usada como contraseña.
Para calcular la entropía real de una frase usada como contraseña, tenemos que saber cuántas palabras se usan. La mediana del número de palabras del estudio de PGP mencionado anteriormente era 4, pero la media era superior. Para tranquilizar la memoria de Miller, usemos una frase usada como contraseña con una media de 5 palabras.
Si hay 5 caracteres por palabra, tenemos 25+4=29 caracteres, de los que 4 son espacios, en la frase usada como contraseña. La cantidad de entropía que contiene la frase usada como contraseña depende de qué estimaciones utilicemos. Si usamos las de Shannon de 2,3 bits por letra en una palabra de 8 letras, obtenemos una entropía total de 29*2,3=66,7 bits. El cálculo de 66,7 bits es probablemente un límite superior razonable de la entropía de una frase usada como contraseña, y es un resultado mejor que el de sólo 45 bits de entropía de una contraseña de 9 caracteres. Como límite inferior, podemos utilizar la estimación de Bruce Schneier de 1,3 bits por letra, basado en un estudio de Thomas Cover (B. Schneier, “Applied Cryptography, 2nd Edition,” Wiley, 1996). Shannon proponía 1,3 bits por letra para palabras de 16 letras, pero es probable que no se pueda aplicar totalmente a las palabras de 5 caracteres. En cualquier caso, si se utiliza 1,3 como estimación de la entropía, da como resultado 29*1,3= 37,7, lo que es un resultado pero que el de la contraseña de 9 caracteres. Si nos basamos en esa cifra, se necesitaría una frase usada como contraseña de 6 palabras para obtener más o menos la misma entropía que una contraseña de 9 caracteres.
Pero no debemos olvidar que nuestro cálculo de la entropía de la frase usada como contraseña no tiene en cuenta el vocabulario del que partimos para estos ejemplos. Podemos predecir que si las frases usadas como contraseña se convierten en algo normal, los usuarios malintencionados empezarán a utilizar programas para descifrarlas que usen la palabra, y no el símbolo, como unidad. Ello cambiaría considerablemente la forma en que calculamos hasta que punto son aleatorias las contraseñas. El uso de palabras como unidad podría ser más adecuado que el uso de las letras que forman las palabras como símbolos. Si utilizamos un vocabulario de 300 palabras para las frases usadas como contraseña y asumimos que se pueden combinar aleatoriamente, obtenemos una tasa absoluta por palabra de Log2300 = 8,23 bits por palabra. El uso de una frase usada como contraseña de 5 palabras da un resultado de 8,23*5= 41,2 bits de entropía y el uso de otra de 6 palabras da 49.4 bits de entropía.
El uso de palabras como unidad hace que las frases usadas como contraseña resulten mucho menos atractivas que las contraseñas. De hecho, una frase usada como contraseña de cinco o seis palabras es aproximadamente igual de segura que una contraseña de nueve caracteres. Tengo que destacar que este resultado no se ha probado científicamente. Son necesarios más estudios para validar estos cálculos de entropía.
En esta entrega de la serie de artículos sobre contraseñas, hemos dado un primer paso en el análisis de contraseñas y frases usadas como contraseña. Sin embargo, puede que haya advertido que no sabemos mucho sobre las frases usadas como contraseña que utilizan los usuarios. Para poder conocerlas mejor, deseamos pedirle un favor. Para ayudarnos, piense una frase usada como contraseña que podría utilizar (mejor no la que utilice en la actualidad) y envíenosla por correo electrónico a passstud@microsoft.com*. Confiamos en obtener suficientes muestras para poder llevar a cabo análisis sobre las frases usadas como contraseña y saber como se forman en la realidad.
No olvide que esta columna es para ustedes. Si hay algo que desea que tratemos o le podemos ayudar a proteger sus sistemas de alguna otra forma, háganoslo saber. Sólo tiene que hacer clic en el botón “Comentarios” y enviarnos una nota.
*Sólo conservaremos la frase usada como contraseña que nos envíe para realizar nuestro análisis. No almacenaremos su dirección de correo electrónico ni ninguna otra información personal que nos envíe. La frase usada como contraseña que envíe se agregará a todas las demás que recibamos y no se asociará a ninguno de los datos personales que envíe en su mensaje de correo electrónico.