¿Cómo se desarrolló el concepto de entropía de contraseña?

29

Comprendo cómo calcular la entropía de la contraseña y qué representan los valores de Longitud y Carácter. También tengo una comprensión razonable de otros tipos de entropía (por ejemplo, Shannon). Sin embargo, la entropía de contraseña parece ser considerablemente diferente (en forma) que otros tipos de entropía; un simple log simple (D) donde D es una métrica de dificultad o complejidad. Me gustaría entender cómo se desarrolló el concepto de entropía de contraseña para entender otras aplicaciones de este formulario de entropía.

¿La entropía de la contraseña satisface los requisitos de otros tipos de entropía: aditivo, lineal, etc. Para un ejemplo estúpidamente simple, si mi sistema requiere dos contraseñas, puedo agregar la entropía de cada contraseña?

EDITAR: Claramente no he formulado esta pregunta muy bien. Mis disculpas. Permítame volver a intentarlo desde una perspectiva más cibernética: podemos definir el tamaño de la información H₀ (A) en un conjunto A como el número de bits que es necesario para codificar cada elemento de A por separado, es decir, H₀ (A) = log₂ | A |. Ahora deje que A sea la información necesaria para anular un sistema de protección en el dispositivo. Para una contraseña, el tamaño del conjunto A (y, por lo tanto, el tamaño de la información H₀ (A)) se puede cuantificar de manera directa, N L . Estoy tratando de obtener una idea de las situaciones en las que el tamaño de A no se puede cuantificar tan fácilmente, pero tengo una métrica que captura el conjunto de información, digamos 'B'. ¿Cuáles son los argumentos en contra de usar H₀ (B) = log₂ (B) para cuantificar el tamaño de la información necesaria para anular el sistema de protección? Una vez más, mis disculpas por una pregunta mal formulada.

    
pregunta Aengus 01.12.2017 - 18:33
fuente

7 respuestas

37

La entropía en física y en ciencia de la información es solo el logaritmo (típicamente registro natural en física; registro base-2 en informática) del número de posibilidades igualmente probables, porque generalmente es más fácil tratar y pensar con el logaritmo de estas posibilidades excepcionalmente grandes que las posibilidades directamente.

Si generé aleatoriamente 128 bits como mi clave AES-128 aleatoria (que almaceno en algún lugar), es fácil ver que hay 2 128 = 340,282,366,920,938,463,463,374,607,431,768,211,456 posibles claves que podría haber usado (2 igualmente -las posibles opciones para cada bit, y las probabilidades se multiplican). Cuando se habla de complejidad informativa, es más simple hablar de la clave que tiene 128 bits de entropía que decir sobre 340 x 10 36 o 340 undecillion (escala corta) , especialmente si quiere compararlo con una clave de 256 bits con 2 256 = 115,792,089,237,316,195,423,570,0085,0088,988,988,919.

Ahora, si te entrego una contraseña de usuario aleatoria, técnicamente no es posible asignarle una entropía única.

Solo puede asignar una entropía a un modelo de generación de contraseñas. Entonces, si se le pide que calcule una entropía para una contraseña, su tarea es asumir el modelo que podría haber generado esa contraseña.

Si te diera una contraseña como P[rmDrds,r , podrías asumir que elegí aleatoriamente 10 caracteres de un conjunto de 95 caracteres ASCII imprimibles y para la fuerza bruta tendrías que pasar por 95 10 ~ 2 posibilidades 65.7 y tendría una entropía de 65.7 bits. Sin embargo, es solo una contraseña muy débil OpenSesame donde cambié mis manos sobre el teclado a la letra correcta (que probablemente sea una de las formas más comunes de cambiar la contraseña de baja entropía, por ejemplo, 2 ^ 6 ~ 64). ). Si pudiera encontrar OpenSesame en una lista de, digamos, las 1000 (1000 ~ 2 10 ) las contraseñas más comunes, entonces, de hecho, la entropía de P[rmDrds,r está más cerca de los 16 bits (posibilidades de 2 < sup> 10 x 2 6 ), cuando la generación de la contraseña es elegir una de las 64 formas comunes de ocultar una contraseña y luego elegir una contraseña de una lista de 1000 contraseñas comunes. Por lo tanto, después de aproximadamente 64,000 intentos, un forzador bruto sofisticado que probó esta avenida de ataque podría llegar a P[rmDrds,r , por lo que es más preciso estimar que la entropía es de aproximadamente 16 bits que 65.7 bits, que es 2 65.7-16 ~ 2 49.7 ~ 914 billones de veces más fácil de forzar la fuerza bruta que la contraseña de 65.7 bits.

Ahora, obviamente, un atacante de fuerza bruta menos sofisticado podría haber ignorado la posibilidad de desplazar los caracteres en el teclado un espacio a la izquierda mientras pasa por las listas de contraseñas comunes. Pero para estar seguro, ignora a los atacantes tontos y asume que un atacante muy sofisticado ha considerado todos tus métodos de generación de contraseñas ( principio de Kerckhoffs dice evitar la seguridad por la oscuridad; suponga que el enemigo ha considerado su técnica secreta entre muchos otros métodos). Entonces, cuando alguien dice que necesita una contraseña de alta entropía, su objetivo no es una contraseña que parezca ser altamente aleatoria (y algunas contraseña simple tester lo etiqueta como de alta entropía). Desea una contraseña aleatoria que se haya creado a partir de muchas elecciones aleatorias que se ingresen en el procedimiento de generación de su contraseña. No debe elegir palabras significativas para usted y crear una contraseña para él con trucos oscuros, como cambiar las letras o las sustituciones leetspeak. Para obtener una contraseña segura, debe confiar en que se ingresan más de 80 bits de aleatoriedad no humana en su procedimiento. Debe tener en cuenta que un bit de entropía en un procedimiento de generación de contraseña es equivalente a una decisión de dos opciones (por ejemplo, algo que podría determinarse mediante un lanzamiento de moneda).

Y de nuevo, con muy poca probabilidad, puedes generar una contraseña aleatoriamente con muchas opciones aleatorias y termina una contraseña muy débil; por ejemplo, es técnicamente posible que elija aleatoriamente 12 caracteres y obtenga password1234 o dddddddddddd . En la práctica, es una posibilidad, aunque es poco probable que ocurra (por ejemplo, si utiliza un procedimiento que genera una contraseña de 90 bits, la posibilidad de que se genere una contraseña que también podría haberse generado con un procedimiento más simple con solo 34 bits) 2 34 / 2 90 = 1 en 2 56 que es aproximadamente la probabilidad de comprar exactamente dos boletos Mega Millions seguidos y ganar el premio mayor ambas veces).

    
respondido por el dr jimbob 01.12.2017 - 20:50
fuente
19

En realidad, según su descripción, no estoy seguro de que entienda cómo calcular la entropía de la contraseña. La entropía de una contraseña se describiría más correctamente como log (R), donde R es una métrica de aleatoriedad , no una métrica de complejidad .

Por ejemplo, esto no tiene nada que ver con el uso de caracteres especiales. La contraseña Tr0ub4dor&3 tiene 0 entropía porque la tomé de en algún lugar . Por otro lado, la contraseña 1101111110101000001011001110101110011111010100101111001110101011 tiene una entropía de 64 bits, porque la generé tomando 8 bytes aleatorios e imprimiéndolos en binario.

La entropía de una contraseña es la entropía de la teoría de la información. Mide la cantidad de información que alguien que intenta romper la contraseña no conoce. A menos que se especifique lo contrario, la gente de seguridad asume que el sistema tiene que defenderse contra personas con al menos inteligencia normal. Según el principio de Kerckhoffs , asumimos que el atacante conoce el método por el cual se eligió la contraseña. Por lo tanto, el contenido de información que el atacante carece del método es 0. Lo que el atacante no puede saber, sin embargo, es la salida de mi generador aleatorio. Por lo tanto, la entropía de una contraseña es el contenido de información proporcionado por el generador aleatorio. Suponiendo un generador de números aleatorios perfecto y un método de generación de contraseña que convierte distintas salidas de RNG en contraseñas distintas, este contenido de información es igual a la cantidad de datos leídos desde el RNG.

La entropía de la contraseña es aditiva. Si un sistema tiene dos contraseñas tales que necesita proporcionar ambas para iniciar sesión, entonces la entropía del par de contraseñas es la suma de la entropía de las dos contraseñas. Tenga en cuenta que hay un supuesto de independencia aquí! Si puede averiguar si una contraseña es correcta sin conocer la otra, entonces la entropía del sistema de dos contraseñas es menor que la suma de la entropía. (Como caso extremo, considere una contraseña de N bits de longitud fija: podría considerar que cada bit de la contraseña es una mini contraseña por separado; si puede probar cada bit de forma independiente, solo se necesitan 2N intentos para romperla en lugar de 2 ^ N). Una vez más, esta propiedad proviene de la teoría de la información: puede agregar la entropía de dos fuentes de información separadas, pero no tiene sentido agregar la entropía de dos fuentes que se superponen.

    
respondido por el Gilles 01.12.2017 - 19:46
fuente
5

La razón por la que la entropía de la contraseña suele parecer log₂ (D) es que se trata de la entropía de Shannon para una fuente de información que tiene una distribución de probabilidad uniforme para todos los resultados potenciales cuando el número de resultados posibles es D. En este contexto, resultados significa resultados de un proceso estocástico de generación de contraseña.

Y como otros aquí han señalado, la entropía no es propiedad de ninguna contraseña individual. La entropía es una propiedad de un conjunto de contraseñas que está definido por un conjunto particular de reglas. Sin embargo, si no te importa ser estricto, a veces puedes inferir de forma flexible cuáles son esas reglas al inspeccionar una contraseña individual, por ejemplo. la presencia de dígitos y letras mayúsculas implica reglas que especifican un conjunto más grande (con una distribución de probabilidad uniforme) que cuando solo están presentes letras minúsculas.

Para una contraseña individual, existe una medida diferente llamada Kolmogorov Complexity que mide cuántos bits de información son necesarios para producir esa contraseña particular a partir de un algoritmo predeterminado. Obviamente, esta es una medida relativa, ya que depende del algoritmo, pero hablando en términos generales, puede utilizar la longitud comprimida de la contraseña como un proxy para la complejidad de Kolmogorov.

    
respondido por el Cuspy Code 02.12.2017 - 18:55
fuente
4

Una mejor manera de pensar en la entropía de una contraseña es la cantidad mínima de bits necesarios para transmitir la información contenida en la contraseña. Algunos ejemplos:

Si mi contraseña es 'aaaaaaaa', una forma válida de ver la entropía de la contraseña sería de 5.9 bits (entropía para un solo carácter alfanumérico que distingue entre mayúsculas y minúsculas) más 3 bits (para indicar que se repite 3 veces).

Si un servicio requiere dos contraseñas, y configuro ambas para que coincidan, entonces no he aumentado significativamente la cantidad de información para comunicar las contraseñas a través de una sola contraseña, ya que 'Contraseña123' y 'Contraseña123 1' no están ' Eso es diferente en términos de entropía.

Si un servicio requiere dos contraseñas, y ambas se generan (por separado) de manera aleatoria, entonces he duplicado la entropía en las contraseñas (aunque tendría más sentido tener una sola contraseña con más requisitos mínimos estrictos).

    
respondido por el Cowthulhu 01.12.2017 - 19:17
fuente
1

La entropía de la contraseña es como la entropía de toda fuente de información: es -log_2 de la probabilidad bayesiana de esa contraseña exacta para el atacante. Como tal, la entropía de una contraseña es, estrictamente hablando, dependiente del atacante, porque es la probabilidad bayesiana para él, incluida toda la información que ya posee.

La entropía de la contraseña para usted es cero, porque la probabilidad Bayesiana de la contraseña correcta es 1 para usted: su universo consta de una sola contraseña, porque la conoce.

Si decidió eliminar una palabra seleccionada de manera aleatoria de un diccionario de 4096 palabras y el atacante lo sabe, entonces la contraseña de la entropía es de 12 bits. Sin embargo, si el atacante no sabe cuál de los 256 diccionarios posibles (con diferentes palabras, digamos, porque diferentes idiomas) ha elegido, y si asigna probabilidades iguales a cada uno de ellos, su contraseña tendrá 20 bits de La entropía para él.

Si, por otro lado, le da un 50% de probabilidad de que lo haya tomado del diccionario correcto, y asigna el otro 50% / 255 a los otros 255 diccionarios (en otras palabras, adivinó el diccionario correcto con 50%), entonces su contraseña tendrá solo 13 bits de entropía para él. Tenga en cuenta que si él adivinó el diccionario principal, entonces su contraseña tiene en realidad 21 bits de entropía para él, ¡porque solo asignó 50% / 255 al diccionario correcto! En otras palabras, la entropía de una contraseña depende de lo que el atacante ya sabe saber acerca de su contraseña.

La única forma absolutamente segura de tener una contraseña de alta entropía es usar un verdadero generador de números aleatorios (basado, por ejemplo, en la segunda ley de la termodinámica o física cuántica), donde la entropía física se utiliza para generar entropía de información. El punto es que nadie tiene un mejor estimador bayesiano que la entropía dada físicamente (o de lo contrario, se violaría la segunda ley de la termodinámica: eso es exactamente lo que la segunda ley dice de hecho).

Las funciones criptográficas de trampilla de una vía no agregan entropía: en el mejor de los casos, conservan la entropía. Si elige un número del 1 al 32, y luego calcula SHA-256 o SHA-1 o simplemente una combinación divertida de funciones hash, tendrá una cosa que PARECE como una contraseña muy aleatoria, pero solo tendrá 5 bits de entropía si su selección de 1-32 fue aleatoriamente uniforme: solo hay 32 resultados posibles, sin importar cuántos bits tenga en su contraseña final.

Los generadores seudoaleatorios tampoco agregan entropía: ofuscan la entropía que está en la semilla. No son más que una secuencia complicada de funciones hash aplicadas a la semilla.

    
respondido por el entrop-x 02.12.2017 - 17:03
fuente
1

Como han dicho otros, no es una entropía de contraseñas, es entropía de generación de contraseñas : es difícil duplicar una contraseña dada dado el pleno conocimiento de cómo se creó.

Para calcular la entropía, anote el proceso, paso a paso. Luego, determine cuántos intentos tomaría, para encontrar una contraseña generada por esos pasos.

Contraseña: 01012006

Proceso: cumpleaños de mi hijo en formato mmddyyyy. 365,25 por año, la edad máxima actual de las personas y la edad mínima para el nacimiento exitoso del parto es de no más de 115 años. 115 x 365.25 = 42,004 intentos antes de que esté seguro de haber encontrado la contraseña.

Proceso: elige 8 números aleatorios usando un dado de 10 caras. 10 ^ 8 intentos antes de estar seguro de haber encontrado la contraseña.

La misma contraseña exacta, una es mucho más fácil de obtener y está sujeta a la optimización fuera de banda (la información no forma parte directamente del proceso, pero limita las opciones). Si conozco la fecha de nacimiento de sus hijos, los intentos máximos actuales son probablemente menores de 1000 y tan bajos como 1.

En cuanto a si es aditivo: no exactamente. Solo tiene un algoritmo de generación de contraseña, solo incluye un paso que se usó en otro lugar como un proceso completo para generar una contraseña.

    
respondido por el jmoreno 02.12.2017 - 17:56
fuente
0

La entropía de la contraseña viene dada por el tiempo que normalmente tomaría un atacante, que conocía su esquema de generación de contraseña, para ejecutar todas las contraseñas posibles que podría generar.

Por ejemplo, uso un generador de contraseñas que es básicamente palabras clave. Utilizo un método criptográficamente fuerte para generar una palabra aleatoria, luego uso grupos de 6 bits para elegir de un diccionario de 64 palabras en inglés de 3 letras (rata, vaca, hombres ...), para hacer que la contraseña sea más legible por los humanos. / usable / memorable.

Aunque la entropía aparente (el atacante no conoce el método) de un personaje de la contraseña resultante es de aproximadamente 5 o 6 bits (un carácter de 26 alfa o más alfanuméricos), la verdadera entropía (el atacante tiene mi programa) es solo 2, debido al conocimiento que se empleó sobre cómo se generó.

Se llega a una contraseña segura simplemente por tener un número suficiente de caracteres. Una cadena de 39 caracteres tendrá 78 bits de verdadera entropía.

    
respondido por el Neil_UK 04.12.2017 - 08:19
fuente

Lea otras preguntas en las etiquetas