パスワードの定期的変更を推奨するための具体的な変更時期とパスワード強度を検討した
パスワードを定期的に変更することでパスワードクラックへの対抗策とすることができることを証明するために,パスワードクラックにかかる時間をもとに適切なパスワードの文字種と長さ,および,適切なパスワード変更時期について考察を行い,パスワード定期変更がセキュリティ対策として実効性を有することができる閾値を具体化することを目的として検討した。
なお,正確性より実用性を優先させるため,有効桁数を減らし,概算での検討とする。
検討材料と前提条件
リスクとして現実的なパスワードクラック能力を具体的に示したものとして,民間で構築し,実行できるものとして次の記事によるGPUクラスタでのパスワードクラック(総当たり)をベースにする。
8文字の全パスワードを5時間半で解析するコンピュータクラスタが登場
http://japan.cnet.com/news/service/35025562/
大まかな性能として,6時間につき約7000兆パターンの解析が可能とする。
パスワードの文字種と長さについては,大文字小文字の区別がある英数字からなる62文字,さらに記号を加えた93文字のパターンを検討する。桁数には8ケタから始め,1割がヒットした場合にリスクが顕在化すると仮定しても充分な期間に渡ってパスワードが破られないと言える範囲までを算出した。
辞書攻撃に弱いパスワードが混在することになるが,辞書攻撃は検討対象から外した。辞書攻撃を検討材料に含む場合,この検討によるパスワード強度がより下がり,結果としてパスワードの生存可能期間が短くなることに留意する。
概算による検討として,基準となる値を
・93文字種からなる8ケタのパスワードは6時間で解析される(CNET記事による報道からの概数)
・パスワードを1桁増やすことで,93文字種の場合は時間が90倍,62文字種の場合は60倍に伸びる
とした。
検討
パスワードがすべて解析されるまでの時間は,以下のようになった。
パスワード文字種数 | 93 | 62 |
8桁解析時間 | 6時間 | 4時間 |
9桁解析時間 | 540時間(22.5日) | 7.5日 |
10桁解析時間 | 2025日(5.5年) | 450日 |
11桁解析時間 | 約500年 | 2万7千日(約74年) |
12桁解析時間 | 約4万5千年 | 約4440年 |
13桁解析時間 | 約405万年 | 約26万6千年 |
14桁解析時間 | 約3億6千5百万年 | 約1600万年 |
1割がヒットした場合にリスクが顕在化するという前提でのパスワード生存可能期間内でパスワードを変更する必要がある,とした場合では,93文字種の場合,10桁のパスワードの場合およそ200日,7か月に1度のパスワード変更が必要となる。92文字種の場合では11桁必要で,7年持つが,10桁であった場合は45日,1か月半しか持たない計算になる。
まとめ
パスワード長が8桁では,93文字種で6分,62文字種では4分の生存可能期間,9桁では同じく2日ならびに4時間となり,パスワード定期変更では全く太刀打ちできないことがわかる。
また,パスワードの有効桁数を長く取っていたとしても,より短いパスワードを用いるユーザが必ず混入するため,サービス提供側としてはそれらに対してのリスクマネジメントが必要となる。具体的には,パスワードの最低文字数を前述の考察に基づいて10桁とし,パスワードの文字種を少なくとも英数字が混在したものであることを保証できなければならない。そうでなければ,最弱のパスワードを考慮しなければならなくなる。
参考:
http://gigazine.net/news/20060629_password_top10/
結論として,サービス提供側が実施できる範囲で,パスワードの定期的変更がセキュリティ対策として有意義であるためには,以下の条件が必要であることがわかる。
・パスワードは11桁以上である。
・パスワードに使われている文字種は,大文字小文字を区別する英字と数字の組み合わせである。
・パスワードの定期変更間隔は,おおよそ半年に1度以上の頻度である。
・変更されなかったパスワードは無効化しなければならない。
パスワードの無効化は,放置されたアカウントがクラッキングによってログインされ,新規パスワードに変更されることによって本来の正当な利用者がアカウントを復旧できなくなる可能性を否定するために必要である。また,そうすることで変更されなかったパスワードによる不正なログインを拒否できるようになるため,ユーザのログイン頻度に依存しないパスワード生存可能期間制限が可能となる。
利用者が実施できる範囲では,検討材料から辞書攻撃を除外しているため,辞書攻撃で攻略されない程度の対策を含めないとパスワードの生存可能期間を短縮してしまうため,次のようになる。
・パスワードを11桁以上のものにする。
・パスワードに使う文字列は,大文字小文字を区別する英字と数字の組み合わせである。
・辞書に載っているような単語を混入させていない。
・ペットの名前や配偶者,子の名前など,ソーシャルな推測が可能な単語を混入させていない。
・半年に一度以上の頻度でパスワードを変更する。
・他のサービスと同じパスワードを併用しない。
以上の条件がすべて満たされている場合,検討に基づいておおよそパスワードの定期的な変更によってパスワードクラックの被害を避けることができるといえる。
付記
サービス提供側がアカウントロックの機能を提供し,仮に5回のログイン試行に失敗した段階で10分間のログイン試行を禁止したと仮定した場合,リモートからのパスワード総当たり攻撃に必要な時間は5個あたり10分となるため,62文字種8ケタのパスワードであっても2183兆分かかることになる。軽く40億年はかかるので,アカウントロックの機能を採用していればパスワードの変更を求める必要はない。
ただし,パスワードハッシュの漏えい時に被害が発生するリスクを利用者に移転したい場合は,利用者に責任を負わせる必要があるため,パスワードを定期的に変更するよう求める必要があるといえる。
よって,サービス提供者がセキュリティレベルを維持することができない,またはしたくない場合には,利用者にパスワードの定期的変更を求めるようなサービスを構築することによって,パスワードハッシュが漏えいした場合にも被害が発生した際に利用者がパスワードを定期的に変更していないせいだと言うことができるようになる。また,パスワードの定期的変更を求めることによってパスワードハッシュの漏えい時に被害が発生しないはずだと言うことができるため,パスワードハッシュが漏えいすることによるリスクを低減することができる。
今後の課題
パスワードの定期的変更は一定のセキュリティ対策効果を持たせることができるが,それは数年で陳腐化する。少なくとも62文字種8ケタのパスワードは3年前の時点で推奨されるものであったが,現在では数分の寿命しか持たない程度に弱体化した。
よって,パスワードの定期的変更がセキュリティ対策効果を維持し続けるためには,その施策と同時にパスワード長を毎年伸ばす程度の対策を実施することが必要となる。
今後のことを考えると,サービスの運用期間を5年とした場合,最初から5桁多めにパスワード長を設定することが望ましいだろう。よって,パスワードの定期的変更が実際にセキュリティ対策として有効であるためには,以下の条件を添えて主張していく必要があるといえる。
・パスワード長は16桁以上であること
・パスワードに使う文字種は,大文字小文字を区別した英字と数字を含むものであること
・サービス提供者側からパスワードハッシュが漏えいした際にも,利用者がパスワードを半年に一度以上の頻度で変更していれば安全であること
また,利用者側としては,パスワードの定期的な変更を要求されるサービスは,パスワードハッシュが漏えいした際のリスクが利用者に移転されている可能性を認識したうえで,パスワード長が11桁に加えてパスワード長がサービスの寿命に相当する年数を加えた桁数未満のものが設定できないことに加え,文字種が大文字小文字数字の全てを要求されていることを確認したほうがよいだろう。また,同じパスワードは使いまわさないことが必要であり,別のサービスで過去に使ったことがあるパスワードを含めて半年毎の使い捨てであることが求められる。
なお,レインボーテーブルのようにあるアルゴリズムで一方向ハッシュに変換されたパスワードをあらかじめ計算しておき,サービス側から漏えいしたパスワードハッシュと照合する方法については今回の検討外である。
レインボーテーブルに類するものを想定した場合,パスワードの定期的な変更を行ったところで,変更後のパスワードが計算済みである可能性は極めて高いと推測できる。
よって,サービス側からパスワードハッシュが漏えいした場合にはパスワードの定期的な変更では対応できない可能性は否定できない。
むしろ,サービス側がパスワードハッシュを漏えいさせないことが求められているといえよう。
であれば,アカウントロックの機能を実装することでリモートからのアタックが事実上防止でき,かつ,レインボーテーブルのような計算済みハッシュによる照合も防げるため,パスワードの定期的な変更よりはるかに効率的で実効的な対策であるといえる。
今後はパスワードの定期的な変更を利用者に求めるのではなく,サービス提供者がアカウントロックの機能を実装することで,多少弱いパスワードが混在していたとしてもパスワードの定期的な変更を不要とできるよう,啓発に努めていく必要があるといえる。
もちろん,辞書攻撃で簡単にヒットする,ソーシャルな情報から簡単に推測できるようなパスワードを使わないよう利用者に求めるのは大前提であろう。