自分のために、現時点での理解をまとめ。
- パスワードをクリアテキストで保存
- データベースにアクセスできる人が他人のパスワードを容易に取得できる。
- パスワードを暗号化して保存
- 暗号化鍵の管理が大変。そして、暗号化パスワードであっても時間をかければクラック(復号化)可能であることを忘れてはいけない。
- パスワードのMD5ハッシュを保存
- ハッシュからパスワードに戻すことができないので安全…ではない。データベースにアクセスできる悪意のユーザーは、事前に文字列「password」のMD5ハッシュを生成しておいて、データベースに保存されている値と比べるだろう。MD5ハッシュが一致したユーザがいたら、そいつのパスワードは「password」だ。
- パスワード+αのMD5ハッシュを保存
- パスワードに、ユーザごとに異なる文字列αを追加して、そのハッシュをとる。となると、悪意のユーザは、誰かのパスワードが「password」なのかどうかを知るためには、文字列αを追加してMD5ハッシュをとる作業を各ユーザごとに行わなければならない。このようなユーザごとに異なる文字列αのことを「ソルト(塩)」と呼ぶ。
こんなところか。
0 件のコメント:
コメントを投稿