GNU/Linux >> Tutoriales Linux >  >> Linux

¿Es seguro un rand de /dev/urandom para una clave de inicio de sesión?

La respuesta corta es sí. La respuesta larga también es sí. /dev/urandom produce datos que son indistinguibles de la verdadera aleatoriedad, dada la tecnología existente. Obtener una aleatoriedad "mejor" que /dev/urandom proporciona no tiene sentido, a menos que esté utilizando uno de los pocos algoritmos criptográficos "teóricos de la información", que no es su caso (lo sabría).

La página man para urandom es algo engañoso, posiblemente francamente incorrecto, cuando sugiere que /dev/urandom puede "quedarse sin entropía" y /dev/random debe ser preferido; el único instante donde /dev/urandom podría implicar un problema de seguridad debido a la baja entropía durante los primeros momentos de una instalación nueva y automatizada del sistema operativo; si la máquina arrancó hasta un punto en el que ha comenzado a tener alguna actividad de red, entonces ha reunido suficiente aleatoriedad física para proporcionar aleatoriedad de calidad suficiente para todos los usos prácticos (estoy hablando de Linux aquí; en FreeBSD, ese instante momentáneo de ligera la debilidad no ocurre en absoluto). Por otro lado, /dev/random tiene una tendencia a bloquearse en momentos inoportunos, lo que genera problemas de usabilidad muy reales y molestos. O, para decirlo en menos palabras:usa /dev/urandom y se feliz; usa /dev/random y lo siento.

(Editar: esta página web explica las diferencias entre /dev/random y /dev/urandom claramente.)

Con el propósito de producir una "cookie":dicha cookie debe ser tal que no haya dos usuarios que compartan la misma cookie, y que sea computacionalmente inviable para cualquiera "adivinar" el valor de una cookie existente. Una secuencia de bytes aleatorios lo hace bien, siempre que utilice una aleatoriedad de calidad adecuada (/dev/urandom está bien) y que es suficientemente largo . Como regla general, si tiene menos de 2 usuarios (n =33 si toda la población de la Tierra pudiera usar su sistema), entonces una secuencia de n+128 bits es lo suficientemente ancho; ni siquiera tiene que verificar si hay una colisión con los valores existentes:no lo verá en su vida. 161 bits caben en 21 bytes.

Hay son algunos trucos que son factibles si desea cookies más cortas y aún desea evitar buscar colisiones en su base de datos. Pero esto no debería ser necesario para una cookie (supongo que es un contexto basado en la Web). Además, recuerde mantener la confidencialidad de sus cookies (es decir, use HTTPS y configure las banderas de cookies como "seguras" y "HttpOnly").


Sí, es una gran manera.

La explicación de @Thomas lo clava. Y tiene toda la razón al criticar el /dev/urandom página de manual Perfecto.

Pero omita "comprobar si ya existe". Ese control no tiene sentido. No va a pasar. (Las posibilidades de que eso suceda son menores que la probabilidad de que te caiga un rayo, varias veces, en el mismo día).


Linux
  1. Cómo generar una contraseña aleatoria en Linux usando /dev/random

  2. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  3. ¿Qué tan portátiles son /dev/stdin, /dev/stdout y /dev/stderr?

  4. ¿Cuándo usar /dev/random Vs /dev/urandom?

  5. Linux:¿Qué significa la letra 'u' en /dev/urandom?

Linux:¿Diferencia entre /dev/console, /dev/tty y /dev/tty0?

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

Linux:diferencia entre /dev/console, /dev/tty y /dev/tty0

¿Está mal vincular /dev/random a /dev/urandom en Linux?

¿Por qué se requieren < o > para usar /dev/tcp?

Diferencias entre /dev/sda y /dev/sda1