2010年12月20日月曜日

パスワード定期変更考察.

(「パスワード定期変更云々」を読んで の続き)

 関連のところをちょっと辿って 続パスワードの定期変更は神話なのか に到達.こちらの計算は私が考えたのと同じ.このような観点からパスワードの定期変更を考えたことはなかったのだが.なかなかにおもしろい.
例えば,全数アタックするのに「入社から退職までの」40 年 (=365*40+10 = 14610日) を必要とする強度のパスワードがあったとして,毎日パスワードを変更した場合,破られない確率は
( 1 - 1/14610 ) ^ 14610 = 0.36786685... = 36.8%
となる (これは理想値である 1/e = 0.36787944... にかなり近い).でも結局 63.2% の確率で破られるわけだ.

次に鍵空間を全部チェックできる時間と,パスワードの定期変更による破られる確率の変化について考えてみる.鍵空間を全部チェックできるだけの時間パス ワードを変更しなかった場合,破られる確率は当然 1 だ.1/2 の時間で変更した場合は 0.75.大幅に上昇する.その先は...
変更回数(探索終了までに)突破確率グラフ
1 回 (最初だけ)1.000
2 回0.750
3 回0.704
4 回0.684
5 回0.672
6 回0.665
7 回0.660
8 回0.656
...
∞ 回0.632
と,5回あたりからサチってくる.そしてどんなに頑張っても 63.2% までしか下がらない.
前提のように,パスワードをチェックし終るまでに 40 年かかる場合であれば,
8 年毎に変更すれば毎日変更するのとそう変わらない強度を保てる
ことになる.(逆にいえばそれ以上の頻度で変更しても無駄.コストに合わない)

 対して,パスワードを英数 1 文字 (= 62種類) 分増やしていたとすると鍵空間も探索時間も 62 倍になるので退職日までにチェックできるパスワードも全鍵空間の 1/62,すなわち破られる確率は 1.6% にすぎない.
しかもこの数字は,
40 年間一度もパスワードを変更しなくても達成できる
のである.
 計算機力の増加を勘案してない,とか,単に長くても辞書攻撃にやられるようなパスワードではダメ,とかいろいろあるが,基本はそんなところだ.さらに言えばこれは計算機力だけを元にしているので,/etc/passwd が可視だろうが,ログイン再試行までに wait が入るまいが関係ない.


 パスワード強度を教えてくれるサイト How Secure Is My Password? によれば,9 文字で英数のパスワードだと解析までに 42 年かかるそうなのでなかなか近い.でもここって別に文字数と文字種ばっかり見てるわけじゃないんだなあ."50% mathematics, 51% witchcraft." で予測していると書いてあるや.
IPA による試算 (2008) によれば,8 文字英数を突破するまでに 50 年とある.そんなもんかね.

計算機力は毎年上がっていくので,その時点で有効なパスワードの桁数を求めるのはなかなかやっかいだが,ちょっとだけ試算.
ムーアの法則に習って,計算機力は 1.5 年毎に倍増していくと考える.年あたりに直すと... 1.59 倍だ.対してパスワードのほうは,英数一文字 (62種類) 増やす毎に 62 倍になる.英数一文字を増やした場合,それに計算機力が追いつくには... 8.93 年かかるのか.9 年に一文字増やせば同じ強度を保っておける,と推測できる (楽観的には).
まあ計算機力の向上は単純に CPU の性能ばかりではなく,どれだけの資源を用意できるかという問題もある.最近 (?) の流行は クラウドによるパスワード解析 のようだが,こういう手法は計算機力を一気に向上させる可能性を持つ.この記事のように,パスワード n 文字を解析するのにいくら,という考え方はなかなか新鮮だ.


 うちの会社の例でいえば,パスワードの条件は「英数記号で 8 文字以上,辞書の単語は駄目」だ.IPA の試算で言えば,突破までに約 1000 年.今は半年毎に変更させられているが,この条件なら
200年毎に変更
とか
10 年毎に変更で最小文字数を一文字づつ増やす
でいいかも.