2011-06-07

パスワードをどう保持するか ー それが問題だ

By Taro Yamazaki  |  22:50 No comments


ログイン機能を持つWebシステムはたくさんあります。各ポータルサイトやオンラインショップなど、私たちが日常的に使っているものだけでもいくつかありますよね。特定のユーザーだけが使用する業務システムのようなものも含めれば、それほど膨大な認証システムが存在していることになります。

Sony Pictures Entertainmentのユーザー情報が流出した際にパスワードがプレーンテキストだった、という問題がありましたが、これは論外としても、システムを作る開発者としてユーザー認証のための情報をどう保持するか、という点は設計時によく検討しなければならない点の1つです。もちろんデータの流出自体を避けなければならないわけですが、万が一データの流出が発生したとしても、重要なデータはそのままではわからないようにしておく必要があります。

先週末にはFBIの関連組織であるInfragardのユーザー情報がクラックされたというニュースがありました。パスワードは暗号化されていたものの、復号されてしまったようです。saltが適切に設定されていなかった、または簡単に分かるsaltが使われていたのではないかと言われています。暗号化のアルゴリズムの弱点というよりは、システム自体の作りの甘さを示す一例といえます。

一般的には可逆性のある暗号化ではなく、非可逆のハッシュを使ってパスワードを保持しておくという方法がよく使われますが、これにもちょっとした落とし穴が。MD5やSHA1は既に破られる可能性があるので、もう使わないほうが安全です。たとえばMD5なら、ここここここなどのサイトで解読できるか試すことができます。現時点ではSHA1よりも安全性が高いといわれるSHA2を使うことが多いと思いますが、こういった仕組みはいつかは破られる宿命にあるものと考えて、常に新たな取り組みも含めて検討していく必要がありますね。

前述のMD5の解読サイトでいろいろ試していると、ひとつの重要な傾向に気づきます。それは、一般的な単語の組み合わせや、アルファベットだけの組み合わせだと本当に簡単に解読されることです。日本語の名前のアルファベット表記や、それをちょっといじったぐらいのものでも解読されるケースがあります。記号を含めたり長いパスワードにしたりといった複雑なパスワードにすると、解読される可能性が大幅に下がることが実感できます。

ユーザーとしてはそのシステムでどんな仕組みでパスワードが保護されているのかわからないわけで、とにかくパスワードを複雑にすることが唯一の自衛手段ですね。

Author: Taro Yamazaki

0 コメント:

© 2015 yamata::memo | Distributed By My Blogger Themes | Created By BloggerTheme9
TOP