Quanto è sicura la password di un utente Postgres?
Quando viene creato un nuovo utente db, la password memorizzata è hash e salata?
Quanto è sicura la password di un utente Postgres?
Quando viene creato un nuovo utente db, la password memorizzata è hash e salata?
Postgres usa MD5 come algoritmo con il nome utente come "salt".
L'uso di un sale previene normalmente il calcolo degli hash, ad esempio nelle tabelle arcobaleno. L'utilizzo del nome utente come sale copre solo parzialmente questo problema. È possibile precalibrare gli hash per nomi utente comuni, come "root" o "postgres".
Inoltre, MD5 è uno degli hash crittografici più veloci che ci siano. È possibile calcolare 10¹¹ hash MD5 al secondo . Ciò rende possibile rompere le password usando un attacco a forza bruta, cioè provando molte password. Le moderne funzioni di hashing della password sono progettate per essere lente, quindi un attacco di forza bruta richiede molto tempo.
Secondo me la tecnica di archiviazione della password di Postgres non è conforme ai moderni standard di sicurezza. Puoi mitigarlo utilizzando una password lunga e casuale e non riutilizzando la password da nessun'altra parte.
Pg memorizza le sue password in pg_authid
Password (possibly encrypted); null if none. If the password is encrypted, this column will begin with the string md5 followed by a 32-character hexadecimal MD5 hash. The MD5 hash will be of the user's password concatenated to their user name. For example, if user joe has password xyzzy, PostgreSQL will store the md5 hash of xyzzyjoe. A password that does not follow that format is assumed to be unencrypted.
Puoi vederli eseguendo
SELECT rolpassword
FROM pg_authid;
Nota, non tutti gli utenti autorizzano MD5. Puoi consentire agli utenti di eseguire l'autenticazione sulla maggior parte di qualsiasi utilizzando i moduli di autenticazione PG o un modulo PAM.
Leggi altre domande sui tag postgresql hash salt