Quién hubiera pensado que generar un número aleatorio sería un desastre, se supone que es tan sencillo como adivinar un número entre un rango dado. Pero no es tan simple como parece, y hasta ahora todas las máquinas se demuestran que no pueden generar un verdadero número aleatorio por sí solo.
Por qué las máquinas no pueden generar un verdadero número aleatorio por sí solo?
Las máquinas aún son solo conjuntos de mecanismos y circuitos, y por lo tanto no se les puede instruir a pensar en un número aleatorio por sí solo sin ayuda. Y es por eso que hasta ahora y más, hemos estado involucrando la naturaleza o humanos con máquinas para generar un verdadero número aleatorio. No discutiremos aquí cómo generar un verdadero número aleatorio, pero discutiremos sobre los generadores de números aleatorios ya implementados y sus debilidades de trabajo y trabajo.
¿Por qué generar un verdadero número aleatorio es tan importante??
Surge la pregunta de que por qué la generación de números aleatorios verdaderos es importante y la respuesta a eso se debe a las preocupaciones de seguridad. La mayoría de los algoritmos criptográficos se basan en la generación de números aleatorios, ya que estos números aleatorios se usan para crear claves criptográficas y si los números aleatorios generados no son realmente aleatorios de naturaleza, esto hace que todas esas técnicas criptográficas sean más débiles y esas claves se pueden predecir relativamente más fáciles Usar el algoritmo que se usó para generar esas teclas aleatorias. Esta es la razón más importante para un número aleatorio verdadero, además de aplicaciones como el juego.
Generador de números aleatorios en los núcleos de Linux:
El tema para nuestra discusión de hoy se basa en el generador de números aleatorios de Linux, en en qué factores se basa este generador y es realmente tan aleatorio o es un número aleatorio típicamente poco confiable.
Linux utiliza el generador de números pseudo aleatorios (PRNG) o el generador de números pseudo aleatorios criptográficamente seguros (CSPRNG), lo que significa que utiliza fórmulas matemáticas complejas y propiedades ambientales para lograr la máxima aleatoriedad. Linux fue el primer sistema operativo en incluir PRNG en su espacio de kernel. Esto fue implementado por Theodore TS'o en 1994.
Linux tiene tres categorías de generadores de números aleatorios, /dev /random, /dev /urandom, /dev /arandom. Estos los tres son los archivos en los que Linux almacena números aleatorios. Los números aleatorios en estos archivos se generan utilizando el ruido ambiental de los controladores del dispositivo y otras fuentes. Además, para garantizar la aleatoriedad en sus números aleatorios, Linux usa entropía, que es el alcance de la incertidumbre o el desorden entre ellos. También puede encontrar la página manual para el generador de números aleatorios de Linux (RNG) aquí:
http: // man7.org/Linux/Man-Pages/Man4/Random.4.html
/dev/Random versus /dev /urandom versus /dev /arandom:
Las principales diferencias entre /dev /random, /dev /urandom y /dev /arandom es que /dev /bloques aleatorios si la entropía no indica una aleatoriedad suficiente, /dev /urandom no bloquea nunca, incluso cuando el generador de números pseudo aleatorios no se sembra completamente cuando se inicia y, por último, los bloques de dev /arandom solo cuando el generador de números pseudo aleatorios aún no está completamente sembrado. En resumen, /dev /random es el más seguro de todo, luego viene /dev /arandom y el menos seguro es /dev /urandom. Normalmente /dev /random y /dev /urandom se usan porque /dev /arandom en muchos términos es similar a /dev /urandom. La estimación de entropía para el grupo de números aleatorios en resumen se usa para determinar la aleatoriedad de los números generados. Cuanto más entropía es, más aleatoriedad se logra y mejor es. La cantidad actual de entropía y tamaño de su grupo de entropía está disponible en/proc/sys/kernel/random/nombrado entropy_avail y piscol_size, respectivamente, que se puede mostrar en el terminal utilizando comandos:
Cat/Proc/Sys/Kernel/Random/Entropy_avail
Y:
Cat/Proc/Sys/Kernel/Random/Pool_Size
Tanto Urandom como Random se usan en diferentes escenarios. Se utiliza 'urandom' donde existe una necesidad constante de números aleatorios y su aleatoriedad no es muy importante, mientras que se usa 'aleatorio' cuando existe una preocupación de seguridad y su aleatoriedad debe ser confiable, ya que bloquea los números aleatorios si la entropía no está a la altura la marca. Aunque la entropía para urandom (ilimitado aleatorio) no es mucho más débil, pero se recomienda usar aleatorias cuando se requiere más seguridad debido a la posibilidad de ataques al número generado por Urandom.
Debilidades en los generadores de números aleatorios de Linux
Para hardware de memoria no volátil:
Para los núcleos de Linux, el generador de números aleatorios no es bueno para el hardware integrado, como los enrutadores, en los que el estado de arranque es predecible y la fuente de suficiente entropía es limitada. Para este tipo de hardware, se recomienda guardar y usar el estado del generador de números aleatorios (RNG) antes del cierre que se utilizará en el siguiente arranque. En tales casos de enrutadores, los atacantes solo pueden comprometer y predecir los números aleatorios generados si tienen acceso a todos los enlaces del enrutador y están a escondidas en sus enlaces de comunicación o si han accedido directamente al estado RNG guardado desde el enrutador mismo.
Para este defecto de RNG en caso de hardware, los generadores de entropía de terceros llegan al rescate. Estos generadores de entropía, como 'Haved', utilizan la sincronización de caché del procesador, los dispositivos de entrada de audio y video externos para aumentar la entropía en un grado aceptable.
Estimación de entropía:
Como se mencionó antes, el núcleo de Linux determina la aleatoriedad en términos de entropía, pero en realidad no calcula la entropía cada vez y en su lugar usa estimaciones de entropía. Varias investigaciones también han revelado que la estimación de entropía de los números aleatorios utilizados en Linux no son estimaciones adecuadas o más cercanas, lo que hace que la aleatoriedad general de los números sea más débil.
Aunque hay algunas debilidades en el generador de números aleatorios de Linux, pero es una opción mucho mejor en comparación con otros RNG, no olvidar los parches en curso que proporcionan los contribuyentes y desarrolladores de Linux.
Todo esto fue de mi lado sobre el generador de números aleatorios en el kernel de Linux. Lo pasé bien para difundir este conocimiento contigo. Espero que hayas aprendido algo nuevo a través de él y también que compartirás el conocimiento más al mundo. Por último, gracias por invertir el tiempo en este artículo.