J'essaie de comprendre comment les mots de passe sont supposés fonctionner dans Postgres.Postgres: MD5 Mot de passe/Mot de passe simple
https://www.postgresql.org/docs/current/static/sql-createrole.html dit pour CRYPTEES/UNENCRYPTED
Si la chaîne de mot de passe présenté est déjà au format MD5 crypté, il est stocké crypté comme-est,
donc mon mot de passe non chiffré: Mon mot de passe .
Le hachage MD5 de "MonMotdePasse" est 48503dfd58720bd5ff35c102065a52d7
Si je
-- See https://www.postgresql.org/docs/9.6/static/sql-alterrole.html
ALTER ROLE "MeOhMy"
LOGIN
PASSWORD '48503dfd58720bd5ff35c102065a52d7'
;
Et puis essayez d'utiliser "MonMotdePasse" lorsque vous faites
sudo -u postgres psql meohmy -h 127.0.0.1 -d meohmy_development
I, bien sûr, d'abord être invité pour mon mot de passe sudo et puis je suis invité par Postgres "Mot de passe pour meohmy"
Si j'entre MonMotdePasse je reçois
FATAL: password authentication failed for user "[email protected]"
Si je rentre, au lieu, 48503dfd58720bd5ff35c102065a52d7 alors je peux vous connecter.
Qu'est-ce que je ne comprends?
MD5 n'est pas le cryptage car la fonction de hachage n'est pas un cryptage, ce sont des méthodes unidirectionnelles non réversibles. Le cryptage suppose le décryptage, qu'avec la clé correcte, les données cryptées peuvent être renvoyées à l'état non crypté. – zaph
MD5 n'est pas un vérificateur de mot de passe sécurisé ou acceptable. Lors de l'enregistrement d'un vérificateur de mot de passe, il suffit d'utiliser une fonction de hachage et il suffit d'ajouter un sel pour améliorer la sécurité. Au lieu de itérer sur un HMAC avec un sel aléatoire pour une durée d'environ 100ms et enregistrer le sel avec le hachage. Utilisez une fonction telle que 'PBKDF2',' Rfc2898DeriveBytes', 'password_hash',' Bcrypt', 'passlib.hash' ou des fonctions similaires. Le but est que l'attaquant passe beaucoup de temps à trouver des mots de passe par force brute. – zaph
Bien que vous ayez absolument raison dans vos deux commentaires, il y a deux considérations: 1) Je suis limité aux installations que Postgres me donne. 2) Les données que je protège ne sont pas si précieuses, alors il ne vaut pas la peine de passer du temps à les protéger avec le plus haut niveau de sécurité. – RalphShnelvar