¿Cómo puedo verificar la entropía disponible?

14

En los sistemas Linux, uno puede verificar la entropía disponible (útil para saber si está haciendo tapping /dev/randompara cualquier propósito PRNG) con

cat /proc/sys/kernel/random/entropy_avail

Sin embargo, no hay equivalente /procen una Mac (AFAIK). ¿Cómo puedo verificar la entropía del sistema disponible en una Mac? Estoy ejecutando OS X 10.7.3 (Lion)


Para actualizar con algunos de mis comentarios bajo la respuesta de Kyle: una de las razones por las que las Mac no muestran esta información es que no es necesaria (en la mayoría de los casos). Los sistemas Linux bloquearán las llamadas a /dev/randomsi no hay suficiente entropía en el grupo. En Macs, periódicamente continúa agregando al grupo de entropía usando el SecurityServerdemonio.

Sin embargo, también señala que si el demonio falla por algún motivo, la calidad de salida disminuirá sin ninguna indicación de falla :

Sin embargo, la calidad de su producción depende de la adición regular de entropía apropiada. Si el SecurityServerdaemon del sistema falla por algún motivo, la calidad de salida sufrirá con el tiempo sin ninguna indicación explícita del dispositivo aleatorio.

Entonces, aunque la cantidad de entropía no está disponible fácilmente, no significa que no esté allí y puede haber casos en los que su conocimiento podría ser útil.

rm -rf
fuente
¿Realmente necesita verificar, o simplemente asegurarse de que haya suficientes cosas para usar? Consulte developer.apple.com/library/mac/#documentation/Darwin/Reference/… Cita: "Los programadores paranoides pueden contrarrestar este riesgo de alguna manera al recopilar la entropía de su elección (por ejemplo, pulsando la tecla o la sincronización del mouse) y sembrando randomdirectamente antes de obtener números aleatorios importantes ".
Chris W. Rea
Solo necesito asegurarme de que haya suficiente para usar.
rm -rf

Respuestas:

6

Esta no es una solución, sino una aclaración de cómo se recopila y utiliza la entropía en Linux.

Linux en realidad tiene dos grupos de entropía diferentes:

/dev/randomy /dev/urandom.

El primero es un verdadero grupo aleatorio, alimentado por fuentes de entropía del sistema.
Este último es más un PRNG como los que se encuentran en los BSD y OS X.

Sin embargo, incluso el urandom requiere una semilla de entropía aleatoria 'real' para producir datos pseudoaleatorios de calidad. En núcleos recientes, una falta total de entropía en / dev / random aún no bloqueará urandom, pero urandom reutilizará la última semilla válida hasta que haya más entropía disponible. Debido a que urandom no es de bloqueo, la mayoría de los servicios que requieren un flujo constante de entropía lo usan en lugar de depender de / dev / random.

Sin embargo, todavía hay algunos servicios, como varios conjuntos SSL, que no pueden conformarse con la entropía pseudoaleatoria, pero requieren una fuente de entropía verdaderamente impredecible. En este caso, urandom (o cualquier otro PRNG) no se puede usar, y / dev / random entra en juego.

Chris
fuente
2

Mac OS X simplemente usa Yarrow . Incluso FreeBSD fue más allá y cambió a su versión mejorada llamada "Fortuna".

La fuerza de Yarrow está limitada por el tamaño de la llave. Por ejemplo, Yarrow-160 tiene un tamaño de clave efectivo de 160 bits. Si la seguridad requiere 256 bits, Yarrow-160 no es capaz de hacer el trabajo.

En general, este es otro recordatorio de que las prioridades de Apple no incluyen seguridad / robustez ni nada de esto.

poige
fuente
1

Mac OS X, como FreeBSD, no depende de fuentes externas de entropía. En su lugar, utiliza un generador de números pseudoaleatorio basado en el algoritmo Yarrow . Debido a que está utilizando un algoritmo y no un grupo de entropía, no es necesario asegurarse de que haya "suficiente" entropía; siempre podrá leer desde / dev / random sin bloquear .

Entonces, para responder a su pregunta, a menos que sea "paranoico" y necesite basar su entropía en fuentes externas (pulsaciones de teclas / movimientos del mouse / etc), en cuyo caso debe hacerlo usted mismo, la cantidad de entropía disponible para / dev / El uso aleatorio es siempre infinito.

Kyle Cronin
fuente
44
Esto no es del todo correcto. El uso de un algoritmo no lo convierte en entropía infinita. Lo que quieren decir es que en Linux, se bloquea cuando el grupo de entropía es bajo, mientras que en mac: "El demonio SecurityServer alimenta regularmente entropía adicional al generador a partir de mediciones de fluctuación aleatoria del núcleo". Básicamente, lo cuida y también guarda algo de entropía en el disco para usar inmediatamente después del inicio. También dice que si bien Yarrow es resistente, la calidad depende de la adición regular de entropía, algo que no será necesario si fuera realmente una entropía infinita
rm -rf
1
Además dice que: "Si el demonio del sistema SecurityServer falla por algún motivo, la calidad de salida sufrirá con el tiempo sin ninguna indicación explícita del dispositivo aleatorio" . Admito que OSX ha hecho que sea fácil no tener que preocuparse por el problema real. valor de entropía, pero no significa que no haya uno ... Por cierto, me refería a esta página de manual en mis citas anteriores
rm -rf
@RM cierto, yo estaba pensando más en términos de si es o no una llamada a / dev / random bloquearía que la calidad de la entropía
Kyle Cronin
> a menos que seas "paranoico" - Mac OS X simplemente carece de cualquier cantidad razonable de aleatoriedad para ser considerado un poco seguro
poige