Jason Donenfeld, autor de la VPN WireGuard, ha ofrecido una versión actualizada del generador de números pseudoaleatorios RDRAND, que se encarga del funcionamiento de los dispositivos /dev/random y /dev/urandom en el núcleo de Linux. A finales de noviembre, Jason fue incluido entre los mantenedores del controlador random y ahora ha publicado los primeros resultados de su trabajo en su reestructuración.
La nueva implementación destaca por el cambio a la función hash BLAKE2s en lugar de SHA1 para las operaciones de mezcla de entropía. Este cambio ha permitido mejorar la seguridad del generador de números pseudoaleatorios al eliminar el problemático algoritmo SHA1 y evitar la reescritura del vector de inicialización RNG. Dado que el algoritmo BLAKE2s supera a SHA1 en rendimiento, su uso también ha tenido un impacto positivo en el rendimiento del generador de números pseudoaleatorios (las pruebas en un sistema con un procesador Intel i7-11850H mostraron un aumento de velocidad del 131%). Otro beneficio de la transición de la mezcla de entropía a BLAKE2 ha sido la unificación de los algoritmos utilizados: BLAKE2 se aplica en el cifrado ChaCha, que ya se utiliza para la extracción de secuencias aleatorias.
Además, se han realizado mejoras en el generador de números pseudoaleatorios criptográficamente seguros CRNG, utilizado en la llamada getrandom. Las mejoras consisten en limitar la llamada al generador lento RDRAND al extraer entropía, lo que permite aumentar el rendimiento en 3.7 veces. Jason mostró que la llamada a RDRAND sólo tiene sentido cuando el CRNG aún no está completamente inicializado, pero si la inicialización del CRNG ha finalizado, su valor no afecta la calidad de la secuencia generada y se puede prescindir de RDRAND en este caso.
Los cambios están previstos para ser incluidos en la versión 5.17 del núcleo y ya han sido revisados por los desarrolladores Ted Ts’o (el segundo mantenedor del controlador random), Greg Kroah-Hartman (responsable del soporte de la rama estable del núcleo de Linux) y Jean-Philippe Aumasson (autor de los algoritmos BLAKE2/3).
Fuente: opennet.ru
