2004年3月5日金曜日

Keeping Passwords in a Database Secure

dotnetjunkiesより。


自分のために、現時点での理解をまとめ。



パスワードをクリアテキストで保存

データベースにアクセスできる人が他人のパスワードを容易に取得できる。

パスワードを暗号化して保存

暗号化鍵の管理が大変。そして、暗号化パスワードであっても時間をかければクラック(復号化)可能であることを忘れてはいけない。

パスワードのMD5ハッシュを保存

ハッシュからパスワードに戻すことができないので安全…ではない。データベースにアクセスできる悪意のユーザーは、事前に文字列「password」のMD5ハッシュを生成しておいて、データベースに保存されている値と比べるだろう。MD5ハッシュが一致したユーザがいたら、そいつのパスワードは「password」だ。

パスワード+αのMD5ハッシュを保存

パスワードに、ユーザごとに異なる文字列αを追加して、そのハッシュをとる。となると、悪意のユーザは、誰かのパスワードが「password」なのかどうかを知るためには、文字列αを追加してMD5ハッシュをとる作業を各ユーザごとに行わなければならない。このようなユーザごとに異なる文字列αのことを「ソルト(塩)」と呼ぶ。


こんなところか。



0 件のコメント:

コメントを投稿