BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 高速ハッシュの 脆弱性

高速ハッシュの 脆弱性

原文(投稿日:2012/07/30)へのリンク

 

MD5やSHA、SHA1のような高速ハッシュアルゴリズムは安全ではない – 特にパスワードのような重要な情報を守るためには、ハッシュアルゴリズムはブルートフォースアタックを受けた場合に意図的に遅くならなければならない。Microsoft MVPであるTroy Hunt氏SqlMembershipProviderでパスワードをハッシュするのがどのようにブルートフォースアタックに弱いのかをデモしている。

SqlMembershipProviderはVS 2010が提供するASP.NETウェブアプリケーションのテンプレートのデフォルトのメンバシッププロバイダだ。Our password hashing has no clothesと題した記事で氏はSqlMembershipProviderを使った、salt値込みのSHA1アルゴリズムでpasswordをハッシュした場合に、GPUとhashkillerと呼ばれる辞書とブルートフォースアルゴリズムを使ってクラック出来てしまう可能性があることをデモしている。実際に使われていた40,000のパスワードのうち、この方法で45分間で24,710がクラックで来てしまった。全体の67%だ。クラックされたパスワードの中には高い強度があるとされるものもある。

“volleyball6”は11文字で英字と数字を含んでいます。さらに、“zaq1@WSX”は大文字、小文字、記号、数字を含んでいます。しかし、このような大抵のセキュリティポリシーに合格する文字列でも、“安全な”ハッシュ値として保存されてしまえば、完全に危険になってしまうのです。

問題はハッシュ値を生成するときのスピードだ。ハードウエアの処理速度はますます速くなっている。

解決策はなんだろう。キーストレッチングで対策する方法が考えられる。ハッシュ処理を繰り返すことで、ハッシュアルゴリズムを遅くして、ブルートフォースアタックをしにくくするのだ。BcryptPBKDF2はこのようなアルゴリズムを採用している。ハードウエアが速くなるにつれて、反復処理の回数が多くなるので、このようなアルゴリズムは適応アルゴリズムと呼ばれる。Bcrypt.NETはBcryptを実装している。DefaultMembershipProviderはPBKDF2を実装している。DefaultMembershipProviderではSHA1の反復処理を1000回行う。VS 2012のASP.NET MVC 4で提供されるデフォルトのプロバイダはこのDefaultMembershipProviderだ。Troy氏の記事Stronger password hashing in .NET..では、これらの代替策を使う方法や、認証処理に問題を起こさずにより強力なハッシュを使うようにアプリケーションを変更する方法が説明されている。

 

この記事に星をつける

おすすめ度
スタイル

BT