(1) http://blog.tokumaru.org/2013/08/1.html
(2) http://blog.tokumaru.org/2013/08/2.html
前後の反応を見ていて、オンラインサービスのパスワードの話と、ストレージのパスワードや端末のログインパスワードの話が混同されていることが多いように思われた。
どれもパスワードと呼ばれることがあるが、必要な強度や性質の違いに留意していれば、/etc/passwdやNTログインキャッシュと、オンラインサービスのパスワードの話が同列に語られるはずがない。
オンラインサービスのパスワード
=短期間総当りされない程度に強い鍵を使う
・サービス側が攻撃を検知できるので、攻撃者がサービスへの侵入なしに総当りするのは事実上不可能
・通信経路はずっと強い鍵で暗号化されているので、盗聴は考えなくていい(HTTPSでないウェブサービスは、あなたの安全のためではなく、最も簡単な個人識別方法としてパスワードを用いているだけ)
・サービス側からの漏洩が起きる確率は、ユーザーがパスワードを変えても変化しない
・生のパスワードが漏れた場合、実際の攻撃に利用されていないなどあり得ないので、パスワードを後から変えても意味が無い
・パスワードのセキュアなハッシュが漏れても、少なくとも数日〜数ヶ月はパスワードが逆算されることはない
・ハッシュが漏れたことに直ちに気づかないサービスが、保護するべき情報が漏れていないことを保証できると考えるべきではない
→ 12〜20文字程度(だいたい70~120bitくらい)のパスワードをランダム生成して、ブラウザなどに保存する。もしハッシュが漏れたとニュースがあれば、即座に変更する
→ 端末の紛失、フィッシングや、野良アクセスポイントの利用など、ユーザー側責任での漏洩に注意する
通信・ストレージの暗号化パスワード
=盗聴されることを前提にした、長期間総当り不能なとても強い鍵を使う
・攻撃者は盗んだ暗号文を保存して秘密裏に総当りできるので、十分な強度が必要
・「鍵と暗号方式の耐久年数」- 「情報が価値を持つ期間」 = 「同じ鍵を使っていい期間」 なので、新しいデータのための鍵を定期的に変えることには意味がある
・古い鍵で暗号化したストレージを、そのまま新しい鍵で暗号化し直すことは意味が無く、しばしばより脆弱になる(古い暗号文が絶対に漏れていないことを保証できるなら別だが、それなら暗号化の必要がない)
・通信や大容量データ暗号化ならAES-GCMの128bit以上が推奨 http://www.cryptrec.go.jp/images/cryptrec_ciphers_list_2013.pdf
→ 最新のブラウザを利用する。ただし紛らわしいドメイン名でのフィッシングには注意が必要
→ TrueCryptなどのデータ暗号化ソフトは短すぎる鍵を警告してくれる(警告がでない暗号化ソフトは見せかけだけで、正しく暗号化してない可能性が高い)
ブラウザのマスターパスワード、PCのログインパスワード、スマートフォン端末のPINコード
=弱い鍵と物理的にアクセスさせないことの組み合わせ
・パスワードと呼ばれるが、実体はログインユーザーの秘密情報を暗号化するための鍵
・通常入力できるパスワード・PINだけでは鍵として弱すぎるので、物理的にアクセス出来ない状況という前提を組み合わせて擬似的に強度を高めている
・暗号文=端末そのものが盗まれれば簡単に総当りできるので、盗まれない対策が必要
・保護したいデータはほどんど変化せず、IDや個人情報のように後から変更できないものが多いので、端末を紛失したら暗号文が漏れないように、リモート削除する
・暗号文は漏れていない(端末は盗まれていない)ことがわかっているが、盗み見などでパスワードだけ漏れた場合がありうるので、パスワードを定期的に変えることは意味がある
→ 最新のOSとブラウザとセキュリティソフトを利用し、端末のストレージから暗号文が盗まれないよう注意する
→ リモート削除機能を用意して、紛失に気づいたら即座に削除する(=バックアップする)
→ リモート削除できない携帯用のメディアやノートPCは、TrueCryptなどでストレージを暗号化して、強いパスワード(20文字で約120bit)を利用する
漏洩に気づかない場合
ユーザーの不注意などでパスワードが漏れたのに、そのユーザーが気づかないかもしれない、だから、パスワードは変えたほうがいい、ということは有りうる。しかし、漏れる頻度よりずっと高い頻度でパスワードを変えないと意味がない。
端末のパスワードでは端末そのものを入手できないとパスワードを悪用できないが、オンラインサービスへは誰でも匿名でアクセス出来てしまう。オンラインサービスへの攻撃は自動化されているので、ほとんど一瞬にしてパスワードで保護されていた全情報が漏洩してしまう。
高頻度のパスワード変更を人力でやるのは不可能なので、トークンによって自動生成されるワンタイムパスワードなどが利用されている。トークンの中には電子証明書が入っていて、人間が入力できるパスワードよりずっと強度が高い。それがたった6桁の数字に見えたとしても。
結局、
・オンラインサービスでは、安全な暗号通信で利用しているなら定期的にパスワードを変える利点は無い(ワンタイムパスワードは例外)
・物理的なストレージや端末のパスワード・PINコードは、可能な限り強くし、定期的にパスワードを変えることには意味がある
・利便性のために弱いパスワードしか使えない端末は、紛失時のためのリモート削除機能を利用する
ラベル:暗号論