2013年5月29日水曜日

Yahoo!のメールによるパスワードリセットのリスクと緩和策

Yahoo! Japanのパスワードリセットにはメールで確認コードを受け取るという方法が選択できますが、確認コードが数字6桁であり、総当たり耐性が低いという問題があります。

以下、テスト用のアカウントを用いて、パスワードリセットの手順を説明します。
Yahoo!のログイン画面から、「ID、パスワードを忘れた」→「パスワードを忘れた」というリンクをクリックすると下記の画面になります。


 Yahoo! IDと文字認証の数字を入力して「次へ」をクリックします。下記の画面になります。


Yahoo!に登録したメールアドレスを入力して「次へ」をクリックします。下記の画面が表示されます。


指定した登録済みメールアドレスに「確認コード」が送信されます。これは数字6桁です。上記のように、確認コードと新しいパスワード(2回)を入力して、「次へ」をクリックします。


以上で、パスワードが再設定できました。

上記の手順を攻撃する場合、攻撃者が知らなければならない文字列は下記となります。
  • Yahoo! ID
  • 登録済みメールアドレス
  • 確認コード(数字6桁)
Yahoo! IDは公開情報ですし、攻撃者が登録済みメールアドレスを推測できる場合、残りは確認コードの数字6桁ということになります。これは5回間違えるとロックされるようで、確率20万分の1で突破される計算です。

数字6桁というと、Googleなどが採用している2段階認証のトークンも数字6桁ですが、これとは意味合いが異なります。2段階認証のトークンは、利用者が正しいパスワードを入力した後に追加で確認するものです。このため、数字6桁程度でも許容できると考えられます。一方、パスワードリセットの「確認コード」は、パスワードを入力していない利用者をこの数字だけで認証するのですから、数字6桁では、少々頼りない感じです。

少なくとも、「僕はLastPassで記号混じり32桁のパスワードを設定しているぜ、セキュアだぜ!」と安全に気を配っているつもりの利用者がいたとして(私のことですが)上記は裏切られた感覚があります。

Yahoo!には至急改善を望みたいところですが、Yahoo!のような巨大サイトで迅速な改善を期待することは難しいことは経験済みですので、利用者側での対処を推奨します。

上記リスクは、下記の1つ以上により緩和されます。
シークレットIDや2段階認証の解除も、数字6桁が推測できればできてしまいますが、パスワードの解除に至るまでには、数字6桁を2回推測しなければならないので、まぁ大丈夫かなというところです。
メールアドレスを誰にも教えないという運用は、採用できる人が限られるでしょうから、シークレットIDをお勧めします。2段階認証もよいのですが、これを使うには「秘密の質問と答え」を登録しなければならないので、既に登録してしまっている人(大半のYahoo!ユーザがそうだと思いますが)であれば、2段階認証をお勧めします。なお、「秘密の質問と答え」のリスクについては、先のエントリを参照下さい。

まとめ

  • Yahoo!のメールによるパスワードリセットで用いる「確認コード」は数字6桁であり総当たり耐性が低い
  • シークレットID、ワンタイムパスワードによるリスク緩和を推奨する

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ