¿Por qué gpg usa / dev / urandom [duplicado]

3

Mirar la salida de strace de GPG en mi caja parece mostrar que usa /dev/urandom al cifrar un mensaje sin acceso a /dev/random incluso cuando se especifica --no-random-seed-file.

¿Los mensajes corren el riesgo de ser cifrados con una clave de sesión de baja entropía? Si es así, ¿cómo se le indica a GPG que no se comporte así?

EDITAR: Creo que esta es una pregunta diferente al posible duplicado que trata con datos más efímeros. Mis mensajes cifrados en gpg tendrán una larga vida útil y son fácilmente inspeccionados por un adversario.

    
pregunta CoderBrien 04.08.2015 - 18:38
fuente

2 respuestas

13

En general:

  • /dev/urandom no es menos seguro que /dev/random . De hecho, ambos usan los mismos algoritmos y las mismas semillas. De vez en cuando, /dev/random simplemente se detiene porque alguien, algún día, leyó algo sobre la entropía, no lo entendió, y ahora piensa que la aleatoriedad es algo que se quema con el uso y se debe rellenar regularmente.

    ( Esta página hace un buen trabajo explicando cosas sobre ese tema.)

  • Puede haber situaciones en las que no haya suficiente entropía disponible en todo el sistema. Estas situaciones no se producen con las distribuciones normales de Linux porque generan y guardan una semilla aleatoria en el momento del arranque, que se utilizará para el siguiente arranque, lo que garantiza de manera efectiva que /dev/urandom sea criptográficamente seguro en todo momento. Para entrar en una de estas situaciones, debes jugar algunos juegos extraños con instantáneas de VM, o usar no una PC, sino un sistema integrado muy limitado; esto está bastante lejos de los contextos donde usaría GnuPG.

  • Es muy notable que en el caso de las instantáneas de VM, la "estimación de entropía" de /dev/random informará alegremente que está lleno de cosas, lo que es, en este caso, muy incorrecto. Es decir, no solo el comportamiento de bloqueo de /dev/random carece de fundamento científico, sino que tampoco se desencadena por completo en el caso práctico (instantáneas de VM) donde se podría temer la pérdida de entropía.

  • También recuerda que los contextos donde /dev/urandom es inapropiado son también contextos donde /dev/random es inapropiado. Usar /dev/random no hará que las cosas sean "más aleatorias"; en el mejor de los casos , se negará a trabajar en lugar de generar una clave de seguridad teóricamente más baja ("teóricamente" porque nada de esto ha resultado nunca en una interrupción práctica, incluso como una demostración en condiciones controladas por el laboratorio) . Como se explicó anteriormente, esto es realmente un "en el mejor de los casos" y no funcionará de esa manera con las instantáneas de VM y el reinicio.

    Afortunadamente, toda la actividad involucrada por un arranque implica la recopilación de suficiente entropía para lograr seguridad criptográfica (incluso para salidas de /dev/urandom arbitrariamente largas, incluso). Consulte este artículo para un análisis más detallado. La generación de claves GnuPG no se realiza mediante el kernel en los primeros pasos de arranque; ocurre mucho más tarde, durante la operación normal, cuando el PRNG se ha sembrado correctamente.

Nada de esto impide que algunas personas insistan en bailar ritualmente con entropía. Aparentemente, los autores de GnuPG son parte de esa interpretación teológica específica, ya sea porque lo creen o porque ceden bajo la presión del mercado.

Resumen: usar /dev/urandom en lugar de /dev/random no es no débil para GnuPG. GnuPG se usa en un contexto donde /dev/urandom está correctamente sembrado y logrará toda la imprevisibilidad requerida, y /dev/random no lo hará mejor (no en la práctica, tampoco en teoría). En una situación (instantáneas de VM) donde la salida de /dev/urandom podría ser inadecuada para GnuPG, la salida de /dev/random será igualmente inadecuada por las mismas razones, y el mecanismo de bloqueo de /dev/random no se activará. La conclusión es que cambiar de /dev/urandom a /dev/random por GnuPG es completamente inútil .

... es decir, desde un punto de vista técnico. El uso de /dev/random en lugar de /dev/urandom podría inducir a algún bloqueo que pueda ayudar a persuadir a los débiles de que "está ocurriendo una criptografía seria". No hará las cosas más seguras, pero puede hacer que el usuario se sienta más seguro.

    
respondido por el Thomas Pornin 04.08.2015 - 19:48
fuente
-5

Respondiendo a mi propia pregunta:

Eureka: modo FIPS hace que se use / dev / random para La clave de sesión y permite muchas otras decisiones sanas a ser tomadas. Aunque parece que Fedora puede haber decidido eliminarlo . Entonces, a pesar de que mi pila está casi desbordada por aquellos que dicen conformarse con "lo suficientemente bueno", en realidad hay una alternativa viable.

    
respondido por el CoderBrien 04.08.2015 - 19:13
fuente

Lea otras preguntas en las etiquetas