エフセキュアブログ : 「SHA-1+salt」はパスワードに十分だと思いますか?(情報元のブックマーク数)

SALTの話、攻撃者が完全なコントロールを握った場合=プログラムコードを見れた場合か・・・そりゃそうだ。

Web(およびその他の)アプリケーションが、ユーザパスワードのハッシュにMD5SHA1またはSHA-256を使用しており、先進的なデベロッパさえ、そのパスワードをsaltしている。そして私は長年に渡って、salt値はどのように生成されるべきか、どのくらいの長さであるべきかについて、白熱した議論を目にしてきた。
 残念なことに、ほとんどの場合、MDおよびSHAハッシュファミリーは計算速度のために設計されており、そして「rootkit.com」で起こったように、salt値のクオリティは、攻撃者が完全なコントロールを握ったとき、重要ではないという事実が見逃されている。攻撃者がルートアクセスを有するとき、彼らはあなたのパスワード、saltおよびあなたがパスワードを確認するために使用するコードを獲得する。
 そして、どんなセキュリティ設計でも基づくべき推測は、攻撃者がサーバ上のすべてにアクセス可能である、ということだ。

エフセキュアブログ : 「SHA-1+salt」はパスワードに十分だと思いますか?

メモ。

我々が使いたいのは、ブルートフォースに対して無力でないものだ。1秒あたり23億回の試みを行う代わりに、あなたは攻撃者を10,000回あるいは100,000回の試みに制限する何かを望むだろう。
 そしてsalt値の使用は適切なインプリメンテーションに不可欠であるものの、あなたの問題を解決する確実な方法ではないのだ。
 それには、以下のプロパティを満たすパスワードハッシュスキームが必要だ:
" 処理パワーが増大した場合、必要とされる計算時間を容易に調節することができる。
" 各ユーザが反復の固有番号を持つことができる。
" 各ユーザハッシュがユニークであり、2人のユーザが同じパスワードであるかを、ハッシュを比較して知ることが不可能である。
 以下から、こうしたスキームをいくつか選ぶことができる:
" PBKDF2 http://en.wikipedia.org/wiki/PBKDF2
" Bcrypt http://www.openwall.com/crypt/
" HMAC http://en.wikipedia.org/wiki/HMAC
 各選択肢はそれぞれの強みと弱みがあるが、これらは全てSHA1+saltのような汎用ハッシュのインプリメンテーションより、はるかに強力だ。

エフセキュアブログ : 「SHA-1+salt」はパスワードに十分だと思いますか?

screenshot