Entropía (computación)

De Wikipedia, la enciclopedia libre

En la computación, la entropía es la aleatoriedad recogida por un sistema operativo o una aplicación para su uso en criptografía o para otros usos que requieren datos aleatorios. Esta aleatoriedad a menudo se obtiene de fuentes de hardware, ya sea preexistentes, tales como los movimientos del ratón o, si se dispone, de generadores de azar.

Entropía en el núcleo Linux[editar]

El kernel de Linux genera entropía de los tiempos de teclado, los movimientos del ratón, y los tiempos de IDE y pone los datos de carácter aleatorio a disposición de los otros procesos del sistema operativo a través de los archivos especiales /dev/random y /dev/urandom. Esta capacidad se introdujo en la versión de Linux 1.3.30.[1]​ Hay parches para el kernel Linux que permite el uso de más fuentes de entropía.[2]

El proyecto de audio-entropyd, que se incluye en algunos sistemas operativos como Fedora, permite que los datos de audio sean utilizados como una fuente de entropía.[3]​ En algunos sistemas, las interrupciones de la red se pueden utilizar como una fuente de entropía.[4]

En sistemas que usen el núcleo Linux, los programas que necesitan grandes cantidades de datos aleatorios de /dev/urandom no pueden co-existir con los programas que leen pocos datos de /dev/random, ya que /dev/urandom agota /dev/random cada vez que se ejecuta.

Entropía en el núcleo de Hurd[editar]

Existe un driver portado para el núcleo de Hurd.[5]

Entropía en Solaris[editar]

/dev/random y /dev/urandom están disponibles como paquetes de Sun y parches para Solaris desde Solaris 2.6,[6]​ y se han convertido en una característica estándar desde Solaris 9.[7]​ A partir de Solaris 10, los administradores pueden eliminar las fuentes de entropía o definir otras nuevas a través de la estructura criptográfica a nivel de kernel.

Entropía en OS/2[editar]

Existe un paquete de software OS/2 que permite a los programas que corren en él, obtener datos aleatorios.[8]

Entropía en Windows[editar]

Microsoft Windows CryptoAPI usa la clave binaria del Registro de Windows HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\RNG\Seed para almacenar la semilla de todas sus fuentes de entropía.[9]

Debido a que CryptoAPI es Código cerrado, algunos programas de código libre que se ejecutan sobre Windows, usan otras formas de obtener datos aleatorios. Por ejemplo, GnuPG, en la versión 1.06, usa una variedad de fuentes como el número de bytes libres en la memoria, combinado con una semilla aleatoria.[10]

Entropía generada en el hardware[editar]

Las CPUs modernas y el hardware ofrecen características integradas de generación que proporcionan la entropía de alta calidad y de alta velocidad a los sistemas operativos. En sistemas basados en el Linux kernel, esta puede ser leída desde un dispositivo a través de /dev/hw_random.[11]

Existen algunos fabricantes que venden dispositivos de generación de entropía y algunos de ellos se distribuyen conjuntamente con los drivers para Linux.[12]

En Debian, es posible instalar el paquete rng-tools (apt-get install rng-tools) que soporta el "generador de números aleatorios" (TRNGs) que se encuentran en algunos chipsets Intel, AMD, o VIA, y que incrementan efectivamente la entropía recogida en /dev/random y potencialmente mejoran su capacidad criptográfica.

Implicaciones prácticas de la Entropía[editar]

Los administradores de sistemas, especialmente aquellos que supervisan servidores de internet, deben asegurarse de que los procesos del sistema, no se detienen debido a un agotamiento de la entropía. La entropía en servidores que utilizan el núcleo Linux, o cualquier otro kernel o un proceso en espacio de usuario que genera la entropía de la consola y el subsistema de almacenamiento, es a menudo mucho menor debido a la falta de un ratón y un teclado, por lo que los servidores tienen que generar su entropía de un conjunto limitado de recursos, tales como los tiempos de IDE.

La entropía en Linux, es visible a través del archivo /proc/sys/kernel/random/entropy_avail, y por lo general, debe tener al menos un valor de 2000.[13]

Cuando el sistema tiene un nivel bajo, o cero de entropía, es posible utilizar /dev/urandom como sustituto de /dev/random para conexiones SSL/TLS, pero esto no es recomendable debido a que tiene un nivel bajo de encriptación. [14]

En sistemas con baja entropía, un proceso puede aparecer como colgado, cuanto este está esperando caracteres aleatorios de /dev/random.

Implicaciones de seguridad[editar]

Las entropía es usada en la encriptación de las conexiones SSL/TLS de un servidor. Si el nivel de esta es bajo, las conexiones tomarán mucho tiempo en completarse.

Referencias[editar]