最近、多くの Web サイトがハッキングされ、パスワード ハッシュが盗まれています。LinkedIn のような大規模な Web サイトでさえ、パスワードを安全に保管していませんでした (md5 のみ)。
今私の質問です、パスワードをハッシュするのに十分安全な方法は何ですか?
現在、私はこれを使用しています:
sha512(sha512(sha512(password) + salt));
それは十分に安全ですか?
最近、多くの Web サイトがハッキングされ、パスワード ハッシュが盗まれています。LinkedIn のような大規模な Web サイトでさえ、パスワードを安全に保管していませんでした (md5 のみ)。
今私の質問です、パスワードをハッシュするのに十分安全な方法は何ですか?
現在、私はこれを使用しています:
sha512(sha512(sha512(password) + salt));
それは十分に安全ですか?
hash_hmac('sha512', $data , $key);
素晴らしいことだ。$key には少なくとも 60 文字をソルトとして使用することをお勧めします。
あなたの塩分次第です。各ユーザーに固有のソルトを生成していますか? すべてのパスワードが同じソルトでハッシュされている場合、ソルトは定数ではありません。時間を無駄にしています。
sha512/salt アプローチの代わりに bcrypt を使用することをお勧めします。総当たり攻撃ははるかに困難です: http://krebsonsecurity.com/2012/06/how-companies-can-beef-up-password-security/
現在使用しているようなソルトを使用することは、セキュリティを向上させるのに非常に役立ちます。すべてのユーザーにランダムなソルトを使用することを強くお勧めします。IMHO、ユーザーのパスワードをハッシュする時間が長くなればなるほど(毎回ハッシュする前にソルトを追加することでセキュリティを向上させることができます)、より安全になります。私は for ループを 256 回の繰り返しでパスワードをハッシュするために使用します。
少し話が逸れますが、セッション ハイジャック (ssid の再生成など) にも注意することをお勧めします。
はい、それで十分安全です。個人的には、最後の sha512 呼び出しは役に立たないと思いますが、意見が異なることは承知しています。
もちろん、ブルート フォース戦術を使用してパスワードを推測できない限り、これは安全です。ユーザーが 4 文字のパスワードまたは妻のファーストネームを選択した場合、ハッシングの量はあなたを保護しません。