[PHP-users 17541]Re: Sessionをつかったログイン情報の保存

SAWADA Hodaka hoda @ tail.gr.jp
2003年 8月 27日 (水) 16:08:36 JST


At Wed, 27 Aug 2003 13:26:23 +0900,
キャスター マイルド wrote:

> > 会員制のサイトにおいては、
> > ユーザー毎のパスワードをDBなどに格納する際には、
> > 絶対に暗号化を施してからDBに格納するべきです。
> > md5なりcryptなりで。(SSL使うのとは別な話)
> > [PHP-users 15494]個人情報保護の方法について
> > [PHP-users 14443]PHP認証システムについて
> 
> じっくりと読んでみました。
> とても参考になりました。
> 
> ただ、初心者的な疑問を感じたのですが、
> パスワードを暗号化して、DBに格納する理由は、
> DBがハッキングされたときなど、パスワードが
> 暗号化されていなかったら、そのユーザーになりすましたり、
> 個人情報を盗まれるおそれがあると言うことですよね?
> 
> でも、初めにDBがハッキングされているのなら、
> ハッカーはDBから直接個人情報を抜くのじゃないのかな〜と思いまして、
> だったら、パスワードを暗号化しておく意味もよく分からなくなったのですが・・・
> まぁ、なりすましは怖いのですが・・・。

「間違いの拡大再生産」を指摘する前にスレッドが伸びてしまった。

えー、「暗号」「ハッシュ値」では全然意味が違ってきますので、
初心者を名乗るならば、まずは暗号とハッシュ値の違いを調べてみて下さい。

簡単に言うと、
・暗号は復号できる
 -> つまり生パスワードを復元できる
・ハッシュ値は元の情報を取出すことが非常に困難
 -> 生パスワードは見えないと考えて良い
ということです。

くれぐれも、自分で調べてみて納得してください。
# MD5 とか SHA1 とか

で、なぜハッシュ値を格納するかですが、
従業員ならびに出入り業者や、はたまた HDD 廃棄時等々に、
生パスワードを復元させないためです。

では、なぜ生パスワードを復元させてはいけないかというと、
自分のサイトから情報が漏れることはないと断言するための保険ですかね。

サイト運営上は生パスワードが裏の管理画面から見えたほうが便利なんですが、
電話口で教えてくれ等、隙をつかれたときに
外部に漏れてしまうこともありますので、隠蔽しておくに限ります。

なぜ生パスワードを神経質に扱うかは、複数のサービスに同じパスワードを
使用する人の方が多数派であるからです。

自分のところを踏み台にされて他のサービスで金銭トラブルなんかになったら
大変ですからね。

まとめとしては、
「自分のところから漏れた情報で
他のサイトをアタックさせないための防波堤として
ハッシュ値を格納しましょう」
です。
# 各種サービスのパスワードも銀行の暗証番号も
# 全部同じなんて人が世の中にはいそうなので。
-- 
         =^^= HODA =^^=          http://www.tail.gr.jp/~hoda/
澤田保隆@しっぽアルゴリズム情報研究所  mailto:hoda @ tail.gr.jp


PHP-users メーリングリストの案内