■おことわり
・今更感があります
・もっと詳しい人がゴマンといます
先日,とあるwebサービスが流行の兆しを見せ始めたので,とりあえず自分も登録してみた.
そしたら登録完了メールに自分の入力したパスワードがバッチリ書いてある.
nackyさん,ようこそ○○へ!あなたのパスワードは MyPassWd です!
ということは,おそらくDB上には次のように記録されている.
+--------+--------+
|nacky |MyPassWd|
+--------+--------+
つまりこれ,webサービスの管理人が,見ようと思えばそのパスワードを見ることができるわけですよね.
通常DBにはwebサービス本体か管理者からしかアクセスできないようになっていると思いますが,それでもパスワードが平文でそのまんま入っているのは気持ちよくないです.
ユーザーによっては共通のパスワードを他のサービスでも使っていることがあるでしょうから,平文で見えちゃったら,その人が使ってる他のサービスにログインできちゃうことになります.
通常,パスワードは非可逆アルゴリズムを使って変換して格納されます.されるべきです.
(方法には色々あって利点欠点もありますがその話は別として)
例えばこんな風に格納されるはず.
+--------+--------+
|nacky |q9asbn4x|
+--------+--------+
格納後の文字列から元のパスワードを得ることができないのが非可逆なアルゴリズム.こうなると回数をこなしてアタックするしかパスワードを解析する方法はありません.
こういうある程度しっかりした方式をとっているサービスでは,ユーザーが入力したパスワードをメールで通知したりできません.だって元のパスワードを得る方法がないんだもの.
逆に,通知してくるサービスはパスワードが平文で登録されています.そういうサービスに他のサービスと同じパスワードを使うのは危険だと思います.
その程度のサービスを提供するところの管理者はその程度のモラルだ!と想像するともっと危険に思えてきます.
先日,とあるエンジニアが会員登録システムを作っていて,そのDBを見たらパスワードが平文で入っておりました.
再通知のときに困る等の運用面での問題もあるでしょうけど(とはいえ,再発行→変更の手続きを踏んでもらう手間をどう説明するか程度),それ以上に平文格納は問題だと思います.
(このときは他社さんでしたがすぐ直させました)
ユーザーの側からできることは少ないとは思うんですが,このへんの話を少しでも気にしておけば作る側も使う側もステップアップできるかなーと思います.
# この手の話はもう何回もいろんなところで繰り返されてるんだろうなぁと思いつつも,気になったのでまた書く
■
Webサイトがパスワードを可逆状態で保存しているかを見分ける10のポイント - Webと何かとその近所
■
ブログが続かないわけ | [PHP]パスワードのハッシュ化にはcrypt を使ってはいけない