¿Cómo se calcula (o se estima) la entropía disponible en / dev / random?

11

Parece (para un no experto) que /dev/random es considerado como una fuente de datos aleatorios puros. Sin embargo, tengo curiosidad por el análisis del archivo /dev/random .

/dev/random es un punto de recolección de datos ruidosos del hardware. El archivo se expande a medida que se obtiene más ruido del hardware; a medida que se agrega un nuevo ruido, los datos antiguos se cambian para que el archivo en su conjunto represente una fuente de entropía.

Supondré que /dev/random se usará solo una vez para evitar problemas derivados de la reutilización de una sola vez. Entonces hay una cosa que me molesta: cómo se estima la entropía. Estoy menos interesado en las respuestas a las siguientes preguntas, y más interesado en si las investigaciones anteriores han considerado estas preguntas y han proporcionado algo relevante.

¿Cómo se calcula el número de bits de entropía en el archivo? Sospecho que no es el tamaño del archivo, ya que stat y ls -s devuelven 0 , pero el número de bits de entropía está disponible en /proc/sys/kernel/random/entropy_avail . ¿Es algo así como la cantidad de bits que se pueden obtener sin aprender nada más que el bit en sí?

Realmente no entendí la explicación en el código fuente o en Gutterman et al. Sospecho que uno no puede calcular este valor con exactitud. Sin embargo, ¿se puede garantizar que si leo menos de entropy_avail bits de /dev/random , entonces la entropía en esa cadena es aproximadamente la longitud de la cadena? En otras palabras, el valor de entropy_avail es un límite inferior conservador en el número de bits aleatorios que se pueden obtener al leer /dev/random ?

¡Me gustaría mucho una referencia en la última!

    
pregunta techraf 18.11.2012 - 03:02
fuente

2 respuestas

3

Hay un breve documento sobre el archivo de criptografía de ePrint que podría responder a su pregunta. Básicamente, el autor interpreta el código del estimador de entropía como una estimación de entropía de tipo Kolmogorov donde un evento es "aleatorio" si no sucedió demasiado cerca del evento anterior, si el tiempo entre dos eventos consecutivos no es demasiado predecible, etc. Aquí está el enlace que responderá la pregunta mejor que yo enlace

    
respondido por el Alexandre Yamajako 19.11.2012 - 17:25
fuente
2

/proc/sys/kernel/random/entropy_avail simplemente le da la cantidad de bits que actualmente se pueden leer desde /dev/random . Los intentos de leer más que eso bloquearán hasta que haya más entropía disponible. Puede tratar estos bits como lo haría con cualquier otro bit de una fuente criptográfica aleatoria.

Los bits de /dev/random no se pueden volver a leer.

    
respondido por el Stephen Touset 18.11.2012 - 04:52
fuente

Lea otras preguntas en las etiquetas