前回は、「オンライン攻撃に対する予防としてパスワードの定期的変更は意味がない」という結論でしたが、今回は、事後の被害軽減策として、パスワードの定期的変更に意味があるか、というテーマですね。その事後の話ですが、2つの話題があります。前回の続きで、パスワードハッシュ値が漏洩してオフライン攻撃で解読されるまでの時間稼ぎとして、パスワードの定期的変更に意味があるか、次に、パスワードそのものが漏れている場合の緩和策として、定期的変更に意味があるかです。それでは、まずハッシュ値が漏洩しているケースについてお願いします。前提として「パスワードを3ヶ月毎に変更する」というポリシーを想定しましょう。3ヶ月に深い意味はありませんが、ありがちな想定です。四半期毎だと、企業人としてもキリがいい感じです。次に、ハッシュ値の解読に要する時間がどれくらい掛かるかが問題です。これが短過ぎても、長過ぎても、パスワードの定期的変更には意味がありません。1週間でハッシュからパスワードが分かるとすると、定期的変更の前にパスワードが悪用される可能性が高いですよね。逆に、解読に30年掛かる場合は、変更しなくても、30年も経てばそのパスワードは使わなくなっている可能性が高いでしょう。すると、3ヶ月毎のパスワードの変更がいい感じです。12倍に増やせば、1ヶ月で終わってしまいます。パスワードの変更が間に合わない可能性が高いです。ハッシュの解読は並列処理が容易という話題は、前回にも出てきました。1年で解読できるように調整する必要もないですよね。1000年でも、1万年でも、うーんと長くすれば、パスワードの定期的変更の必要はないわけですから。前回教えて頂いたソルト、ストレッチングや、長いパスワードの設定により、それが可能になるわけですね。1日で解読できるとしましょう。前回のお話では、1000万倍ということでしたね。それは、さまざまな条件を考慮した控え目な(安全側の)数字です。計算してみると、約56億倍掛かります。パスワードに記号を使えるようにした寄与もあり、それが12乗で掛かるので莫大な差になるのです。年で言うと、1500万年掛かる計算です。ひゃー、ハードの性能向上や攻撃マシンの台数増強を考慮しても、十分な余裕がありそうですね。加えて、ソルトやストレッチングの寄与もあり得るわけですが、利用者に目に見える範囲だけでも、これだけの改善ができるわけです。...でも、前回のお話では、まだ8文字英数字のパスワードのサイトが多いというお話でしたよね。三井住友銀行のネットバンキングでは、「半角4~8桁の英数字」となっています。4桁パスワードをつけてしまうは利用者の責任としても、上限は緩和して欲しいですね。どこも似たり寄ったりですし、実は、三井住友のネットバンキングやめようと思った矢先に、ワンタイムパスワードのトークンを無償化するという英断があったので、引き続き利用しています。ワンタイムトークンの無償化はいいですね。前は、月に105円払ってましたから、ありがたいです。次に、パスワードそのものが漏れてしまった場合の緩和策について教えて下さい。この場合重要なことは、「パスワードが漏れた事実を利用者が気づけるか、それはいつか」ということです。加えて、利用者がサイトを使っていて気づくこともありますね。正しいパスワードを入力しているのにログインできないとか、不正利用(メッセージスパムの送信、意図しない振込...)に気づいたとかですね。いうケースもあり得るとは思いますが、実際に多いのは利用者の不注意でパスワードが漏洩するケースだと思います。具体的に教えて下さい。ありそうなのはフィッシングですね。こちらの記事も参照して下さい。自分の不注意で漏らしてしまったら、中々気づけないし、サイト側も気づかない場合が多そうです。最悪の場合、パスワードが漏洩したことに、利用者は永遠に気づかないことになりますね。パスワードの定期的変更は最後の手段として、もっとよい方法がないか考えましょうよ。定期的にログイン履歴を確認するという方法があります。下図は、Googleの最近のアクティビティです。詳しい情報が表示されていますね。これを見て、怪しいログインがあれば、不正ログインの可能性と見てパスワードを変更します。手間が似たようなものとしても、管理レベルは随分違います。パスワードの定期的変更は、不正アクセスがあるかないか分からない前提で、とにかくパスワードを変更するわけですから。なんだ、早くそれを教えて下さい。2段階認証が使える場合は、2段階認証をぜひ設定しましょう。Googleや、facebookやYahoo!で導入されている、6桁数字を追加で入れるあれですか。2段階認証を設定しておけば、フィッシングに関しては十分な対策になります。大丈夫な場合と大丈夫でない場合があり得ますね。2段階認証にワンタイム生成アプリを使っている場合、ワンタイムパスワードは秘密のシード(シークレットキー)と時刻からパスワードの数字を生成します。このシードはサイト側でも保存していないとパスワードの照合ができないので、この値まで漏洩したら、第三者がワンタイムパスワードを知り得ることになります。あり得るのかと疑問に思うのはもっともですが、RSAのワンタイムトークンのシードが漏洩して不正アクセスされたという事例があります。IIJの根岸さんが素晴らしい解説記事を書いておられるので、ぜひお読み下さい。レアなケースだとは思いますが、そこまで心配するのであれば、ログイン履歴の定期的な確認をお勧めしますよ。ログイン履歴が確認できないサイトも多いですよ。どのサイトに対してもログイン履歴を定期的に確認するなんて現実には不可能です。全てのサイトのパスワードを3ヶ月毎に変更することも、労力が大きすぎます。サイトの性質によって、管理レベルを区別することをお勧めします。区別の基準として、サイトに不正ログインできる場合、短期的な攻撃で終わるものと、長期に攻撃が続くものがあります。具体的には、メッセージスパム、寸借詐欺、不正な振込、不正な物品購入等は、長期的に攻撃したいと思っても、被害者が直に気づいて、パスワード変更などの処置をしてしまいます。攻撃者側も心得ていて、たとえば預金のありったけを振り込みしてしまいます。攻撃したら、儲けが減るということですね。利用者に気づかれない攻撃としては、情報の漏洩が代表的です。メールの盗聴が目的であれば、スパム送信などしないで、じっと静かに盗聴を続けるでしょうね。(遮って)いや、情報漏洩が心配ということは、秘密情報を扱うサイトということなので、そのようなサイトは少数に絞り、2段階認証やログイン履歴確認ができるサイトを選定することですね。あー、ようやく道筋が見えてきたような気がします。秘密情報を扱うサイトは、2段階認証をサポートしたサイトに限定しろ、と。CIAではなく、国家安全保障局(NSA)ですが、政府関係者ならともかく、民間のメールの中身を一々確認するほど彼らも暇ではない気がしますが、心配であれば、Yahoo!ジャパンなど、日本のサービスで2段階認証に対応しているものもありますよ。あと、メールに関しては、元々盗聴のリスクがあるものなので、機密性の高いメールはPGPなどで暗号化するほうがよいでしょうね。オンラインバンキング等も含めて、短期的に被害を受けるサイトは、パスワードの定期的変更では間に合わないので、他の施策をとるのがいいですね。ジャパンネット銀行と三井住友銀行は無料でワンタイムトークンを配っていますし、有料でトークンを配布している銀行もあります。パスワードリスト攻撃の被害の多いネットゲームも、2段階認証に対応しているサイトがあります。