「忘れたパスワード」が分かる「親切なサイト」がやばい訳
忘れがちなパスワード
サイトで会員登録するたびに必要となるパスワードだけど、すぐに忘れてしまう。そして、忘れた時に、頼りになるのがログイン画面の下にある「パスワードを忘れた方はこちら」というリンク。
大体の場合、ここからメールアドレスと、2、3個情報を送れば、再度ログインに進めるようになっている。多くの場合は、メールが届いて、新しいパスワードを設定する画面に行ったり、仮のパスワードが発行されたりする。
パスワードがわかる場合も
しかし、たまに自分が設定したパスワードを直接
あなたのパスワードは「ushiwoidaisuki」です。
といった形でメールで通知してくれるものがある。
実はこういった設定がされているサイトは「めちゃくちゃやばい」サイトだ。
なにが「やばい」か
なぜなら、こういったサイトは、ぼくたちのパスワードが、サーバーにそのまま保管されているから。もしサーバーが攻撃を受けて、情報が流出したら、自分のIDとパスワードが丸見えになってしまうのだ。
同じIDを使い回している場合、他の全てのサイトにも勝手に入られてしまう。
でも、こういった話をすると、パソコン関係の専門でない方は(ぼくも専門ではないけど)
「じゃあパスワードはどうやってサーバーに保管されているの」
と思うだろう。
ハッシュ関数
じつは、パスワードは、文字をある一定の法則で変換された「ハッシュ関数」というもので保存されている。たとえば、「ushiwoidaisuki」であれば
d91b0bda7e9c358c57428cc5dcd0f83624ea0f94
となる。でも一文字違いの「ushiwoidaisuki-」とすると
58a6a40c93c33af8d05bd8e79940122b81021d83
となってしまう。ご覧の通り変換を推測することが不可能な文字列なのだ。
細かい説明は(本人も理解していないので)飛ばしてしまうと、要はハッシュ関数というものは、作成は簡単なのだけど、作成したものから元の言葉を探し出すことがめちゃくちゃ難しい関数なのだ。
適切なパスワード管理
これで、パスワードをどうやって確認するかと言うとサーバーにはぼくのパスワードのハッシュ関数だけ保管されている。
「d91b0bda7e9c358c57428cc5dcd0f83624ea0f94」
ログインしようとする人のパスワードのハッシュ関数を作成して、これと同じならOK、違うならNGという形だ。
この形であれば、サーバーの情報が流出しても、ハッシュ関数が漏れるだけなのでそれほど問題はない。
他のサイトで、パスワードにハッシュ関数を入れてもログインはできない。あくまでも、ハッシュ関数を作成する文字列を入れる必要があるから。
そして、それを計算するのは、めちゃくちゃ難しいから、結果としてパスワードはわからないのだ。
「やばい」理由
ということで「パスワードハッシュ関数で保存」がこの世界の常識である。
そうであるにもかかわらず、パスワードを生のまま保存しているサービスは結構やばいというわけである。
もし今後、「パスワードを忘れた方はこちら」から、進み、自分のパスワードを教えてくれる「親切なサイト」を見つけたら、すぐにそのサイト専用のパスワードに変更しておいた方がいいだろう。