¿La adición de un carácter aleatorio a una contraseña generada de forma pseudoaleatoria mejora significativamente la entropía?

4

Estoy haciendo una pregunta práctica. Me enseñaron que las computadoras son malas para generar datos aleatorios. ¿Significa esto que los generadores de contraseñas, como el integrado en Keepass, apestan? En caso afirmativo, ¿ayudaría al usuario a ingresar manualmente uno o dos caracteres en la contraseña generada?

    
pregunta Celeritas 24.09.2015 - 09:21
fuente

2 respuestas

3

Los humanos son bastante terribles para generar datos aleatorios. Pídale a una persona que le dé un número aleatorio entre 1 y 20, uno obtendrá mucho más 7 y 17 que otros números, ya que percibimos que esos números son más "aleatorios". (Fuente: enlace )

Las computadoras, por otro lado, son deterministas y, como tales, no pueden generar datos aleatorios verdaderos por sí mismos. Así que se utilizan generadores pseudoaleatorios que son ecuaciones ligeramente complejas. Esas ecuaciones necesitan una semilla que debería ser algo aleatoria. Para generar esta semilla aquí hay algunos métodos:

  • Alta resolución de la medición del tiempo (a menudo ciclos de reloj) en el momento de la ejecución
  • La entrada del usuario, a menudo de los ratones, las buenas implementaciones utilizan la incapacidad humana para controlar perfectamente los ratones
  • Generador de aleatoriedad externa, existen dispositivos externos que utilizan algún proceso químico o físico no determinista o algunos parámetros ambientales que fluctúan mucho para generar datos aleatorios.

Así que para responder a sus preguntas.

  

¿La adición de un carácter aleatorio a una contraseña generada de forma pseudoaleatoria mejora significativamente la entropía?

Agregar caracteres a una contraseña incluso cuando no está distribuido de manera perfectamente uniforme aumenta la entropía. ¿Es significativo? Esto depende principalmente de la longitud de la contraseña, consulte el comentario de Anonymous Coward sobre esta respuesta para obtener una explicación.

  

¿Esto significa que los generadores de contraseñas, como el integrado en Keepass, apestan?

Esto depende completamente de la forma en que se genera la semilla. No sé cómo Keepass hace esto, pero definitivamente hay generadores de contraseñas que utilizan métodos de generación de semillas muy buenos (a veces combinaciones de métodos).

  

¿Ayudaría al usuario ingresar manualmente uno o dos caracteres en la contraseña generada?

Suponiendo que la contraseña resultante tenga la misma longitud, entonces depende de su punto de vista. Como dije, los humanos son muy malos generadores de aleatoriedad y, como resultado, esto reduciría teóricamente la entropía de la contraseña. Sin embargo, agrega más variables al proceso de generación de contraseñas que, si se implementa correctamente, podría aumentar la fortaleza de la contraseña contra ataques dirigidos contra el algoritmo pseudoaleatorio y el proceso inicial.

Editar: responder al comentario

  

¿Cómo podría un humano agregar 1 o 2 caracteres aleatorios (en una posición aleatoria de la contraseña existente) disminuir la entropía?

Supondré que te refieres a reemplazar 1 o 2 caracteres aleatorios como he explicado anteriormente, al responder a la pregunta del título, solo agregar caracteres aleatorios (aunque no estén distribuidos uniformemente) siempre aumentará la entropía.

Veamos nuevamente el proceso de generación de datos aleatorios:

  1. obtener una semilla
  2. usa la semilla como una entrada para el generador pseudoaleatorio
  3. obtenga resultados del generador pseudoaleatorio (y utilícelo en algún lugar)
  4. use la salida como la siguiente entrada al generador pseudoaleatorio (esto se hace más a menudo detrás de las pantallas del generador pseudoaleatorio)
  5. repetir desde el paso 3

Un proceso bastante simple y como una computadora es determinista, las únicas incógnitas para algunos atacantes son la semilla y el número de veces que el proceso se itera antes de que se use la salida para la contraseña específica que estamos intentando violar.

Si observamos este proceso, podríamos preguntarnos por qué no siempre se calcula una semilla y se usa como datos aleatorios, al final, la semilla es lo que hace que el proceso sea aleatorio. Entonces, ¿cuál es el trabajo del generador pseudoaleatorio? Su función es doble, la primera de ellas permite que se generen múltiples datos aleatorios a partir de una semilla. Esto es importante ya que las buenas semillas son caras. A continuación, y quizás más importante, crea datos aleatorios distribuidos uniformemente. Y esto es muy importante ya que la semilla (por ejemplo, cuando estamos usando una medida del tiempo) a menudo tendrá alguna estructura.

Ahora, cuando reemplaza 2 caracteres de estos datos aleatorios distribuidos uniformemente con datos aleatorios distribuidos uniformemente (recuerde los 7 y los 17), está reduciendo la entropía de la contraseña. Sin embargo, esto no significa necesariamente que la contraseña sea más difícil de romper, ya que crea un desconocido adicional para el sistema junto al número de referencia de iteraciones.

Sin embargo, como una nota lateral desde un punto de vista teórico, se podrían usar esos 2 caracteres de la entrada del usuario para ayudar a crear la semilla que podría aumentar la entropía en el sistema, dependiendo del método de semilla anterior y qué más se utiliza para crear la semilla .

    
respondido por el Selenog 24.09.2015 - 09:59
fuente
2

Su pregunta parece suponer que el hecho de que las contraseñas solo se generen de forma pseudoaleatoria es incorrecto. Sin embargo, en realidad no importa mucho, lo único que importa es que su contraseña debe ser impredecible , y esto no es lo mismo.

Un verdadero valor aleatorio es un valor aleatorio que simplemente surge de "ninguna parte", o para expresarlo mejor, un valor que se generará de una manera no determinista. El verdadero generador de números aleatorios (TRNG, por sus siglas en inglés) requiere hardware específico que generalmente se basa en un conjunto más o menos grande de fenómenos físicos o eléctricos combinados para producir un conjunto más pequeño de valores que se considerarán aleatorios. Este valor no será el resultado de ningún algoritmo de algún tipo.

Al contrario, un generador de números pseudoaleatorios (PRNG) será un algoritmo bien definido y probado que, dado un estado interno inicial, producirá un valor definido y cambiará al siguiente estado definido. Todo esto debe estar muy bien definido, ya que esto permitirá a los científicos analizar el algoritmo y determinar su valor criptográfico.

Como en muchas otras áreas criptográficas modernas, el secreto no está en el algoritmo, pero aquí el secreto reside en este estado inicial dado. El número de diferentes estados posibles en un momento dado puede ser más o menos grande: esto será lo que uno llama entropía. Cuanto mayor sea el número de estados posibles, mayor será la entropía.

Con una entropía lo suficientemente grande, un atacante no tendrá forma de determinar el estado actual de PRNG y, por lo tanto, no podrá determinar el siguiente valor que se generará. Esto es lo que se llama imprevisibilidad . Como puede ver, esto es diferente de aleatoriedad ya que el valor resultante será el resultado de un proceso bien conocido y controlado donde no hay espacio para el destino.

Esto es precisamente lo que necesita para sus contraseñas y otros secretos: debe ser impredecible . Como dijo, sin ningún hardware específico de TRNG, una computadora no puede generar una contraseña aleatoria. Sin embargo, como Selenog lo explica en su también buena respuesta, el hecho es que el cerebro humano en realidad no es mejor. Pero, cuando se trata de generar un valor impredecible, equipado con un PRNG adecuado y una entropía adecuada, la computadora definitivamente vencerá al cerebro humano .

Según el caso específico de KeePass, no verifiqué su implementación personalmente. Sin embargo, de acuerdo con su documentación no parece intentar reinventar la rueda, sino confiar en algoritmos comprobados y OS proporcionó fuentes de PRNG. Por otra parte, este producto es tanto de código abierto como ampliamente utilizado, sin duda pasa por un gran escrutinio. Así que ciertamente no afirmaría que "las contraseñas de KeePass apestan".

Como se explica en el comentario de Anonymous Coward, si generas una contraseña ya segura con KeePass, agregarle algunos caracteres adicionales nunca hará ningún daño. Entonces, si se siente más seguro al tratar de evitar cualquier problema de generación de contraseñas de KeePass aún no publicado, intente hacerlo (tenga en cuenta que KeePass incluso ofrece una alternativa que le permite proporcionar entrada de teclado / mouse para aumentar su entropía interna de PRNG durante la contraseña). proceso de generación). Sin embargo, esto no debe llevarlo a configurar KeePass para generar contraseñas más cortas " porque lo completaré yo mismo " o reemplazar algunos caracteres generados: lo que lograría aquí sería reemplazar los caracteres impredecibles generados por computadora por humanos. generó caracteres más predecibles, y no sería bueno para la seguridad de su contraseña.

    
respondido por el WhiteWinterWolf 25.09.2015 - 10:31
fuente

Lea otras preguntas en las etiquetas