Estoy tratando de encontrar las diferencias entre /dev/random y /dev/urandom archivos

  1. ¿Cuáles son las diferencias entre /dev/random y /dev/urandom?
  2. Cuando debo usar?
  3. cuando no debo usar?
InformationsquelleAutor fernandohur | 2014-05-17

4 Comentarios

  1. 40

    Utilizando /dev/random puede requerir de espera para el resultado, como se utiliza lo que se denomina de entropía, donde aleatoria de datos pueden no estar disponibles en el momento.

    /dev/urandom devuelve como tantos bytes como solicitar el usuario y por lo tanto es menos aleatorio que /dev/random.

    Como se puede leer desde la página man:

    azar

    Cuando se leen, la /dev/random dispositivo sólo devolverá bytes aleatorios dentro de
    se estima que el número de bits de ruido en la piscina de entropía. /dev/random
    debe ser adecuado para los usos que necesitan de muy alta calidad aleatoriedad
    tales como pad o de generación de claves. Cuando la entropía es
    vacío, que se lee de /dev/random se bloqueará hasta que adicional
    el ruido ambiental se reunieron.

    urandom

    Una lectura desde la /dev/urandom dispositivo no bloquear la espera de más
    la entropía. Como resultado, si no hay suficiente entropía en el
    piscina de entropía, los valores devueltos son teóricamente vulnerables a un
    ataque criptográfico en los algoritmos utilizados por el controlador. Conocimiento
    de cómo hacer esto no está disponible en el actual sin clasificar
    la literatura, pero es teóricamente posible que un ataque puede
    existen. Si esto es una preocupación en su aplicación, uso /dev/random
    en su lugar.

    De cifrado a los efectos de que realmente debe usar /dev/random debido a la naturaleza de los datos que devuelve. Posible a la espera debe ser considerado como aceptable de equilibrio para el bien de la seguridad, de la OMI.

    Cuando se necesitan datos aleatorios rápido, usted debe utilizar /dev/urandom de curso.

    Fuente: Wikipedia página, hombre página

    • El uso de /dev/urandom 2uo.de/myths-about-urandom
    • Yo estaría de acuerdo. Hoy en día, /dev/urandom es seguro (y de preferencia) para el uso de la criptografía en casi todos los casos. Ver las otras respuestas.
    • jrwren, hay muchas cosas acerca de «los mitos acerca de urandom» que es totalmente equivocada y muy engañosa, y si usted piensa acerca de ello, no tiene sentido! Los diagramas para empezar son estructuralmente mal, ellos sugieren que el azar y urandom provienen de la misma CSPNG de origen, en realidad, no de acuerdo a este artículo: lwn.net/Articles/525459
  2. 24

    Siempre el uso de /dev/urandom.

    /dev/urandom y /dev/random utilizar el mismo generador de números aleatorios. Ambos son sembradas por la misma entropía. Ambos se dan igualmente un número aleatorio de un tamaño arbitrario. Ambas pueden dar una cantidad infinita de números aleatorios con sólo 256 bits de la semilla. Mientras la inicial de la semilla tiene una longitud de 256 bits de entropía, usted puede tener un suministro infinito de arbitrariamente larga de números aleatorios. Usted no gana nada desde el uso de /dev/random. El hecho de que hay dos dispositivos es una falla en el Linux de la API.

    Si usted está preocupado acerca de la entropía, el uso de /dev/random no se va a solucionar eso. Pero se ralentizará tu aplicación mientras no generar más números al azar de /dev/urandom. Y si usted no está preocupado por la entropía, ¿por qué el uso de /dev/random en todo?

    Aquí mucho mejor/profundidad en la explicación de por qué usted siempre debe usar /dev/urandom: http://www.2uo.de/myths-about-urandom/

  3. 6

    ¿Cuáles son las diferencias entre /dev/random y /dev/urandom?

    /dev/random y /dev/urandom son interfaces para el núcleo del generador de números aleatorios:

    • Lectura devuelve una secuencia de bytes aleatorios lo suficientemente fuerte como para su uso en criptografía
    • Escribiendo proporcionará el kernel de datos para la actualización de la piscina de entropía

    Cuando se trata de las diferencias, depende del sistema de la operación:

    • En Linux, la lectura de /dev/random puede bloquear, lo que limita su uso en la práctica considerablemente
    • En FreeBSD, no hay ninguno. /dev/urandom es sólo un enlace simbólico a /dev/random.

    Cuando debo usar?
    Cuando no debo usar?

    Es muy difícil encontrar un caso de uso en el que debe utilizar /dev/random más de /dev/urandom.

    Peligro de bloqueo:

    • Este es un problema real que va a tener que enfrentar cuando se decide utilizar /dev/random. Para una sola usos como ssh-keygen se debe ACEPTAR que esperar algunos segundos, pero para la mayoría de otras situaciones que no será una opción.
    • Si utiliza /dev/random, debe abrirlo en el modo de desbloqueo de y proporcionar algún tipo de notificación de usuario si la entropía no está disponible inmediatamente.

    De seguridad:

    La /dev/random interfaz es considerado un legado de la interfaz, y /dev/urandom es el preferido y suficiente en
    todos los casos de uso, con la excepción de los usos que requieren la aleatoriedad durante el arranque; para
    estas aplicaciones, getrandom(2) debe ser utilizado en lugar de eso, porque se bloqueará hasta que la entropía es inicializado.

    Si una semilla se guarda el archivo a través de los reinicios como se recomienda a continuación (todas las principales distribuciones de Linux han hecho esto
    desde el año 2000 al menos), la salida es criptográficamente seguro contra los atacantes local sin acceso root como
    pronto como se vuelve a cargar en el arranque de la secuencia, y perfectamente adecuado para la red de cifrado de claves de sesión.
    Puesto que se lee de /dev/random se pueden bloquear, los usuarios suelen desea abrirlo en el modo de desbloqueo de (o realizar
    una lectura con tiempo de espera), y proporcionar algún tipo de notificación de usuario si la entropía no está disponible inmediatamente.

    Recomendación

    Como regla general, /dev/urandomdebe ser usado para todo, excepto de larga duración GPG/SSL/SSH keys.

  4. 3

    Respuesta corta

    Uso /dev/urandom

    Respuesta Larga

    Ambos son alimentados por la misma criptográficamente segura generador de números pseudoaleatorios (CSPRNG). El hecho de que /dev/random espera para la entropía (o más específicamente, espera a que el sistema de la estimación de su entropía para alcanzar un nivel adecuado) sólo hace una diferencia cuando se utiliza una información-teóricamente algoritmo de seguridad, frente a un cómputo algoritmo de seguridad. El ex abarca los algoritmos que probablemente no estés utilizando, tales como Shamir Secreto de Compartir y el tiempo de la almohadilla. El último contiene los algoritmos que realmente uso y cuidado, como AES, RSA, Diffie-Hellman, OpenSSL, GnuTLS, etc.

    Así que no importa si usted usa los números de /dev/random ya que ellos están siendo bombeada de un CSPRNG de todos modos, y es «teóricamente posible» para romper los algoritmos que usted, es probable que el uso de ellos con todos modos.

    Por último, que «teóricamente posible» bit significa exactamente eso. En este caso, eso significa que usando toda la potencia de computación en el mundo, por la cantidad de tiempo que el universo ha existido para que el crack de la aplicación.

    Por lo tanto, no hay prácticamente ningún punto en el uso de /dev/random

    Para uso /dev/urandom

    Fuentes

    Uno
    Dos
    Tres

    • Estoy de acuerdo en este caso, pero, ¿qué acerca de situaciones donde hay un hardware rng? Lo que sucede en esa situación, si desea utilizar sólo que rng, por ejemplo?

Dejar respuesta

Please enter your comment!
Please enter your name here