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