私は、パスワードがPostgresでどのように動作するはずかを理解しようとしています。提示パスワード文字列は、MD5暗号化形式で既にある場合は、あるとして、暗号化され保存されているPostgres:MD5パスワード/平文パスワード
ENCRYPTED /暗号化されていない、
は、だから私の暗号化されていないパスワードがあるため
https://www.postgresql.org/docs/current/static/sql-createrole.html
氏は述べています:わたしのパスワード 。"MYPASSWORD" のMD5ハッシュは
sudo -u postgres psql meohmy -h 127.0.0.1 -d meohmy_development
Iをやったときに、私は最初、当然のことながら、
-- See https://www.postgresql.org/docs/9.6/static/sql-alterrole.html
ALTER ROLE "MeOhMy"
LOGIN
PASSWORD '48503dfd58720bd5ff35c102065a52d7'
;
を行い、その後、 "MYPASSWORD" を使用しようとすると48503dfd58720bd5ff35c102065a52d7
です私のsudoのパスワードを求めるプロンプトが表示され、私はPostgresの "パスワードfor meohmy"のメッセージが表示されます
私はMYPASSWORDを入力した場合は私が入力した場合、代わりに、48503dfd58720bd5ff35c102065a52d7が、私はサインインでき
FATAL: password authentication failed for user "[email protected]"
を得る。
私は何を理解していないのですか?
ハッシュ関数は暗号化ではないため、MD5は暗号化ではありません。片方向の非可逆な方法です。暗号化は復号化を前提としています。正しい鍵で暗号化されたデータを暗号化されていない状態に戻すことができます。 – zaph
MD5は安全なパスワードベリファイアではありません。ハッシュ関数を使用するだけでパスワードベリファイアを保存するだけでは不十分で、単に塩を追加するだけでセキュリティを向上させることはほとんどありません。代わりに、約100msの間、ランダムな塩でHMACを繰り返し、塩をハッシュで保存します。 'PBKDF2'、' Rfc2898DeriveBytes'、 'password_hash'、' Bcrypt'、 'passlib.hash'などの関数を使用してください。要点は、攻撃者が無差別にパスワードを見つけるのに多くの時間を費やすことです。 – zaph
両方のコメントに間違いはありませんが、2つの点があります。 1)私はPostgresが私に与える設備に限られています。 2)私が保護しているデータはあまり価値がないので、最高レベルのセキュリティで保護するために時間を費やすだけの価値はありません。 – RalphShnelvar