プライバシーポリシー

2013年5月10日金曜日

パスワードリマインダが駄目な理由

昨日、某著名サイトのパスワードリマインダの方式が変更になっていることに気がつきました。
  • 旧: 現在のパスワードをメールで送信する(パスワードリマインダ)
  • 新: パスワード再設定の画面のURLをメールで送信する(パスワードリセット)
新しい方式(パスワードリセット)の方が優れていますが、それでは何故パスワードリマインダは駄目で、パスワードリセットの方がよいのでしょうか。このエントリではその理由について説明します。

パスワードリマインダのリスク

良く指摘されるように、パスワードリマインダの場合、2つの問題があります。
  • 現在のパスワードをメール送信できるということは、パスワードをハッシュ値で保存していない証拠である
  • メールは平文通信なので、パスワードを書いたメールが盗聴されると被害が甚大になる
これらのうち、パスワードの保存方法については別稿にゆずるとして、このエントリでは盗聴のリスクについて検討します。

パスワードが盗聴されると長期の悪用に気づかない

仮にパスワードリマインダのメールが盗聴されると、第三者にパスワードを知られ、そのパスワードにより不正アクセスされることになります(リスクベース認証や2段階認証がない場合)。これ自体とてもよろしくないわけですが、加えて以下が問題だと言えます。
  • パスワードが悪用されていることに利用者が気づくことが難しい
  • 悪用が長期間に及ぶ
パスワードリセットにメールを使う場合、メールが盗聴される前提だとパスワードリセット機能の悪用を完全に防止することは難しいので、せめて上記2項は避ける方法を検討すべきです。

パスワードリセット方式の優位点

一方、パスワードリセット方式の場合、パスワードをメール送信する方式と比べて以下のコントロールを実現できます。
  • パスワード再設定できる回数を1回限りとする
  • パスワード再設定の結果をメール通知する
これらにより、以下のメリットがあります。
  • 本来の利用者と第三者のうち、どちらがパスワードを再設定できるかは「早い者勝ち」になるが、運が良ければ第三者による再設定を防げる
  • 運悪く、先に第三者によりパスワードを再設定された場合、メール通知により、利用者がその事実に気づくことができる
すなわち、パスワードを送信する方法と比べて、最悪ケースではパスワードを第三者に知られるという点は変わりませんが、パスワードリセット方式の場合は、不正アクセスに利用者が気づくことができ、必要な対処を打てるという点が違います。
冒頭で紹介した某サイトのパスワードリセット機能には、パスワードが再設定されたことのメール通知がありませんでした。このため、せっかくパスワードリセット方式に変更したものの、そのメリットは十分に実現されていない状況です。

まとめ

パスワードリマインダとパスワードリセットの安全性を比較しました。どちらの場合でも、メールが盗聴されるという状況では第三者にパスワードを知られる(パスワードリセットの場合はパスワード再設定されることにより)可能性はありますが、パスワードリセット方式の場合、第三者にパスワードを知られたという事実を利用者が察知できるという点が異なります。このため、パスワードをメール送信する方式のパスワードリマインダは避け、パスワードリセット機能を採用するのがよいでしょう。この場合は、以下(再掲)を忘れずに実装しましょう。
  • パスワード再設定できる回数を1回限りとする
  • パスワード再設定の結果をメール通知する


追記(13:10)

パスワードリセットのパスワード再設定画面には、有効期間(1時間~1日程度)を設ける場合が一般的です。この機能が役立つ局面はあまり思いつきませんが、パスワードリセットを途中まで実行して、なんらかの理由でパスワードリセットしなかった(パスワードを思い出した等)後に、たまたま第三者がパスワードリセットのURLを見つけて悪用する、などのシナリオを緩和できます。

また、利用者の立場で、パスワードリマインダ機能を使ってパスワードを受信した場合は、ただちにパスワードを変更すれば、その後の悪用は防止することができます。



あわせて読みたい



2 件のコメント:

  1. 毎日のように見るメールならパスワードリセットされたのにも気付きますが、何ヶ月も見ない人もざらです。(下手したら永遠に見ない)
    リテラシーが高い(?)ような人でも捨て垢のメールアドレスなど忘れ去って、しかも、そのアカウントを登録用に使ってるとか多いのでは。

    メールが盗聴されるような環境ではどっちもどっちで、有意にセキュリティが高まるような話ではないような。
    ハッシュ化されていないのは全然別ですが、新しいパスワード発行ならこの問題はクリアできますし。

    最近のパスワードリセットしたものを見てみたら超大手でも、リセットURLがSSLじゃないのもありました。

    返信削除
  2. コメントありがとうございます。
    ご指摘のような状況は十分あり得ると思いますが「利用者側でコントロールしようと思えばできる」という点が違うという趣旨です。ユーザが意識してコントロールしていない状況であれば、ご指摘のように似たようなものだと思います。

    返信削除