¿Qué tan "fuerte" es una contraseña generada usando PostgreSQL 'random ()'?

0

Necesito generar una contraseña en la creación de la fila en PostgreSQL. Tengo una solución como esta:

ALTER TABLE sippeers ALTER secret    
SET DEFAULT trim(both from (encode(decode(md5(random()::text || current_timestamp || random()),'hex'),'base64')), '=');

Y las contraseñas se ven así:

select trim(both from (encode(decode(md5(random()::text || current_timestamp || random()),'hex'),'base64')), '=') FROM generate_series(1,15);
         btrim          
------------------------
 MVve5ziDWUweBcNHpZU0zA
 ERPkHr407VvQUoxLNmsg9A
 zi6+zYGTFl5EqxvQTuIfsw
 vXJRb2RJzaikQDXCWYWKFg
 LHfAYJkrFJzKGRR1mAyeqA
 +JQIcr+CkYsFDH6HaGQTeQ
 gEeZjD/6zI5btzRfaKebYw
 Qi7jyLadnQ3FXBYLhU2TaQ
 DR70MoyHHyLHlUmBCj9Lzg
 87gaalFYGgs76N02/CLfLw
 93407RcVXT5+ei9KeuejXA
 C5iONK9ef4jHFrj1oNrxSQ
 +JZaWNtjRFUbdMCGIxdQgw
 3AOUzdeqIL2qS2YfAXSDhg
 +giwgzxkEa6gvman4Ccujw
(15 wierszy)

Sé que random() no es realmente aleatorio. No se puede utilizar pgcrypto.

¿Cómo serán las contraseñas "fuertes" generadas de esta manera?

    
pregunta Dariusz Bączkowski 27.05.2017 - 14:59
fuente

2 respuestas

2

Según esta publicación , el azar de PostgreSQL es un LCG de 48 bits. Esto significa que tiene una semilla de 48 bits y un estado de 48 bits. Una vez que alguien adivine cualquiera de esos, puede generar los mismos números que tú, y también las mismas contraseñas.

Por lo que puedo decir, en PostgreSQL la semilla es siempre la misma (a menos que llames setseed). Esto significa que un atacante puede crear una lista de contraseñas simplemente ejecutando la misma función que usó para crear las contraseñas. Luego puede usar esta lista para forzar la aplicación bruta.

Si un atacante obtiene una de las contraseñas, puede deducir todas las demás contraseñas, incluso si selecciona la función aleatoria correctamente.

    
respondido por el Sjoerd 28.05.2017 - 10:42
fuente
1

La respuesta real dependerá del nivel de seguridad que necesite para su sistema. Como bien señala, esta función no conlleva la entropía que tiene una buena función pseudoaleatoria criptográficamente buena. Pero como digo, esto puede ser "lo suficientemente bueno" para su escenario, solo usted lo sabrá.

Como nota al margen, siempre he trabajado con sistemas en los que, por la aplicación, se encarga de gestionar las contraseñas, creo que hay una razón por la que las está haciendo en la capa de base de datos

    
respondido por el ISMSDEV 27.05.2017 - 15:10
fuente

Lea otras preguntas en las etiquetas