uchiumiです。
今日はパスワードをDBに保存する際の危険性と保存方法についてと、ハッシュ関数について、ディレクトリトラバーサルについての復習をしました。
さて今日は、学んだことの中からパスワードの暗号化について書きたいと思います。
【パスワードの保存方法】
もし平文でパスワードをDBに格納してしまったら、パスワードを知られてしまう可能性があります。そして1つのパスワードが知られてしまうと、もし他にも同じパスワードを使っているところがあるとしたら、そこで悪用されてしまうかもしれません。
怖いですね。
そういったことを防ぐ為に、パスワードは暗号化してDBに格納した方がいいとのことでした。
【暗号化の方法】
暗号化にはmd5()というハッシュ関数を使います。
md5を使い暗号化したパスワードを使ったパスワード認証の方法は、以下のようになります。
【認証方法】
- md5($パスワード)でDBにパスワードのハッシュを格納
- md5($入力値)で、入力されたパスワードのハッシュを取得
- md5($入力値)で、入力されたパスワードのハッシュを取得
- ハッシュが同一なら正しいパスワード!
というわけです。
md5で暗号化した値を戻す様な関数はありません。
また、1文字違うだけでもまったく違うものになるので、暗号化したものからもとの文字列をみつけるのも相当困難ということなので、これをデータベースに格納しておけば、パスワードを知っているのはユーザーのみになります。
しかしこれだけでは安心できません。
これだと、レンボーテーブルという攻撃方法で、暗号化されたものからもとのパスワードを割りだされてしまうとのことでした。
なので、saltというものを使い、より複雑な暗号化をする必要があります。
【saltを使った暗号化】
saltとは、ランダム文字列です。
これとパスワードを足して暗号化すると、より複雑な暗号化をすることができ、レインボーテーブルによる攻撃もうけにくくなります。
便利ですね。
以上になります。
パスワードをDBに保存する方法について、md5を使って単純にパスワードを暗号化しただけでもまだ危険はあるということに驚きました。
しっかり覚えて気をつけていきたいと思います。
(2008/11/5 11:01 irisawa追記)
お待たせしました、動画上がりました。

コメントをどうぞ