2009-01-31 11 views

Respuesta

13

Aleatoriedad significa una entrada indescifrable. Si la entrada es adivinable, entonces la salida se puede calcular fácilmente. Eso es malo.

Por ejemplo, Debian tenía un error de larga data en su implementación SSL que no reunía suficiente aleatoriedad al crear una clave. Esto resultó en que el software generara una de las solo 32k claves posibles. Por lo tanto, es posible descifrar cualquier cosa cifrada con esa clave probando todas las posibilidades de 32k probándolos, lo cual es muy rápido dada la velocidad actual del procesador.

2

Para descifrar un mensaje, debe conocer la clave correcta.

Cuantas más claves tenga que probar, más difícil será descifrar el mensaje.

Tomando un ejemplo extremo, digamos que no hay aleatoriedad en absoluto. Cuando genero una clave para usar en el cifrado de mis mensajes, voy a siempre y termino con la misma clave. No importa dónde o cuándo ejecute el programa keygen, siempre me dará la misma clave.

Eso significa que cualquier persona que tenga acceso al programa que utilicé para generar la clave, puede descifrar trivialmente mis mensajes. Después de todo, solo tienen que pedirle que genere una clave, y obtienen una idéntica a la que yo usé.

Así que necesitamos cierta aleatoriedad para que sea impredecible qué tecla termines usando. Como menciona David Schmitt, Debian tenía un error que hacía que generara solo un pequeño número de claves únicas, lo que significa que para descifrar un mensaje cifrado por la implementación predeterminada de OpenSSL en Debian, solo tengo que probar este número más pequeño de claves posibles. Puedo ignorar la gran cantidad de otras claves válidas, porque la implementación SSL de Debian nunca las generará.

Por otro lado, si hubo suficiente aleatoriedad en la generación de claves, es imposible adivinar cualquier cosa sobre la clave. Tienes que probar todos los patrones de bits posibles. (y para una clave de 128 bits, eso es una gran cantidad de combinaciones.)

4

La característica más importante de la mayoría de las operaciones criptográficas es que son fáciles de realizar si tiene la información correcta (por ejemplo, una clave) e inviable si no tienes esa información

Por ejemplo, criptografía simétrica: si tiene la clave, es fácil cifrar y descifrar. Si no tiene la llave (y no sabe nada de su construcción), entonces debe embarcarse en algo costoso, como una búsqueda exhaustiva del espacio clave, o un criptoanálisis del cifrado más eficiente que, no obstante, requerirá algunos extremadamente gran cantidad de muestras

Por otro lado, si tiene información sobre valores probables de la clave, su búsqueda exhaustiva del espacio de claves es mucho más fácil (o el número de muestras que necesita para su criptoanálisis es mucho menor). Por ejemplo, es (actualmente) inviable realizar 2^128 descifrados de prueba para descubrir qué es realmente una clave de 128 bits. Si sabe que el material clave salió de un valor de tiempo que usted conoce dentro de mil millones de tics, entonces su búsqueda se convirtió en 340282366920938463463374607431 veces más fácil.

1

Tiene que ver con algunas de las razones fundamentales de la criptografía:

  • asegurarse de que un mensaje no se altera en tránsito (inmutable)
  • Asegúrese de que un mensaje no se lee en tránsito (seguro)
  • Asegúrese de que el mensaje es de quien se dice que es a partir de (auténtico)
  • Asegúrese de que el mensaje no es el mismo que uno enviado previamente (no Replay)
  • etc

Hay algunas cosas que debe incluir, entonces, para asegurarse de que todo lo anterior sea cierto. Una de las cosas importantes es un valor aleatorio.

Por ejemplo, si yo cifro "Demasiados secretos" con una clave, que podría salir con la "dWua3hTOeVzO2d9w"

Hay dos problemas con este - un atacante podría ser capaz de romper el cifrado más fácilmente desde Estoy usando un conjunto muy limitado de personajes. Además, si envío el mismo mensaje nuevamente, saldrá exactamente igual. Por último, el atacante podría grabarlo y enviar el mensaje nuevamente y el destinatario no sabría que yo no lo envié, incluso si el atacante no lo rompió.

Si agrego algo de basura aleatoria a la cadena cada vez que la encripto, no solo hace que sea más difícil de descifrar, sino que el mensaje encriptado es diferente cada vez.

Las otras características de la criptografía en las viñetas anteriores se fijan utilizando medios distintos a la aleatoriedad (valores de inicialización, autenticación bidireccional, etc.) pero la aleatoriedad soluciona algunos problemas y ayuda con otros problemas.

Una mala fuente de aleatoriedad limita el juego de caracteres de nuevo, por lo que es más fácil de romper, y si es fácil de adivinar o limitado, el atacante tiene menos caminos para intentar al hacer un ataque de fuerza bruta.

-Adam

1

Un patrón común en la criptografía es la (texto enviando de Alice a Bob) siguiente:

Take plaintext p 
Generate random k 
Encrypt p with k using symmetric encryption, producing crypttext c 
Encrypt k with bob's private key, using asymmetric encryption, producing x 
Send c+x to bob 
Bob reverses the processes, decrypting x using his private key to obtain k 

La razón de este patrón es que el cifrado simétrico es mucho más rápido que el cifrado asimétrico. Por supuesto, depende de un buen generador de números aleatorios para producir k, de lo contrario, los malos pueden adivinarlo.

0

Resuelva this problema de Project Euler, y realmente conducirá a casa lo que "mucha aleatoriedad" hará por usted. Cuando vi esta pregunta, fue lo primero que me vino a la mente.

Usando el método del que habla aquí, puedes ver fácilmente qué "más aleatoriedad" obtendrías.

0

un muy buen papel que describe por qué no ser cuidadoso con el azar puede conducir a la inseguridad:

Esto se describe cómo en el año 1995 la implementación de SSL clave del navegador Netscape era vulnerable a las adivinanzas las claves SSL debido a un problema de siembra del PRNG.

1

He aquí una analogía "juego de cartas": Supongamos que jugar varias rondas de un juego con la misma baraja de cartas. La baraja de la baraja entre rondas es la principal fuente de aleatoriedad. Si no barajamos correctamente, puedes vencer el juego prediciendo cartas.

Cuando se utiliza una fuente pobre de aleatoriedad para generar una clave de cifrado, que reducen significativamente la entropía (o incertidumbre) del valor de la clave. Esto podría comprometer el cifrado porque hace que la búsqueda de fuerza bruta en el espacio clave sea mucho más fácil.

Cuestiones relacionadas