パスワード長考察
0.改訂履歴
- 2002.11.25 新規作成
1.はじめに
このドキュメントでは,パスワードの長さの適切な長さについて考えてみる.
Solarisとか,Sybaseでは,パスワード長は6文字以上などとなっているが,その有効性について確認してみる.
2.パスワードで使える文字
- 通常,パスワードではローマ字,数字および記号となる.
- 日本語を設定する事も出来るが,場合によっては仮名漢字変換が使えず入力できない事があるので,適切ではない.
- 使える文字は,ここでは次のものとする.
- a〜zの26文字
- A-Zの26文字
- 0-9の10文字
- !"#$%&'()=~|-^\`@{[*:+;}]_?/>.<,の32文字
- 合計94文字.
- “スペース”をいれると95文字だが,後で気づいたので再計算が面倒なので94文字とする.
3.パターン数について
- 前出の利用可能な文字が94文字だとした場合,桁数によって,次の様なパターン数がある.
桁数 | パターン数 |
---|---|
1
|
94
|
2
|
8,836
|
3
|
830,584
|
4
|
78,074,896
|
5
|
7,339,040,224
|
6
|
689,869,781,056
|
7
|
64,847,759,419,264
|
8
|
6,095,689,385,410,820
|
9
|
572,994,802,228,617,000
|
10
|
53,861,511,409,490,000,000
|
- パスワード6桁で,約7千億のパターンなので,けっこう有効な気もする...
4.パスワード解析の想定
4.1.マシンを想定してみる(MIPS)
- CPUの性能を示す値に,“MIPS値”がある.
- Million Instructions Per Secondの略で,1秒間に何百万回処理が実行できるかを示す.
- 1MIPSは,100万回の命令を実行できる.
- いま,この文書を書いているPowerBook G4に搭載されている物に近い,PowerPC 7450というCPUのMIPS値は550MHzのCPUで1324MIPSらしい.
- 他の資料で,PowerBookG4 550MHzが570MIPSと書かれている物があった.
- CPU以外の部分でのオーバヘッドによって,半分程度のMIPS値になるのだろう.
- ここでは,この570MIPSをパスワードクラックマシンとして想定してみる.
- ちなみに,そのマシンは現在,決して高速な部類ではない.
4.2.命令数の想定
- 今回のパスワードの総当たり処理は,単純化すると次のようになる.
- パスワードを生成する.
- パスワードを入力する
- 合否判定する.
- ループ
- これをそれぞれ1命令にすると少なすぎるし,RISCだと命令が単純化されているのでもっと多いだろうし等,そもそもネットワーク経由だとそのネゴ等の処理がないとか,暗号化鍵の場合,より命令数が多いなどと言う事があるし,パイプライン処理された時はどうなのさ?など,必要な要素はいくらでもある.
- ざっくりと500命令必要だとしてみる.
- 計算しやすそうだというだけ.
4.3.1時間あたりに処理できるパスワードクラック処理を計算
- 1MIPSマシンで,上記500命令を1サイクルとする処理を行うと,1秒間に2000回の処理が出来る.
- これが570MIPSマシンだと1,140,000回/secの処理が行える.
- 同じようになおしていくと,
- 68,400,000回/min
- 4,104,000,000回/hour
- となる. この数値はここでの想定なだけであって,全く根拠がない.
5.パスワード解析時間を計算してみる
- これまでに定義したた,1秒間に1,140,000回のパスワードを発行できるマシンを使って,パスワードクラックを行う.
- クラック方法は総当たり方式である.
- なお,パスワードクラック処理は,途中でパスワードが判別しても最後まで行う事を前提とする.
桁数 | パターン数 | sec | min |
---|---|---|---|
1
|
94
|
0
|
0
|
2
|
8,836
|
0
|
0
|
3
|
830,584
|
1
|
0
|
4
|
78,074,896
|
68
|
1
|
5
|
7,339,040,224
|
6,438
|
107
|
6
|
689,869,781,056
|
605,149
|
10,086
|
7
|
64,847,759,419,264
|
56,883,999
|
948,067
|
8
|
6,095,689,385,410,820
|
5,347,095,952
|
89,118,266
|
9
|
572,994,802,228,617,000
|
502,627,019,499
|
8,377,116,992
|
10
|
53,861,511,409,490,000,000
|
47,246,939,832,886
|
787,448,997,215
|
- これをみると,4桁パスワードだと1分で破られてしまう.
- もう少しこれを読みやすくしてみる.
桁数 | Hour | Day | Year |
---|---|---|---|
1
|
0
|
0
|
0
|
2
|
0
|
0
|
0
|
3
|
0
|
0
|
0
|
4
|
0
|
0
|
0
|
5
|
2
|
0
|
0
|
6
|
168
|
7
|
0
|
7
|
15,801
|
658
|
2
|
8
|
1,485,304
|
61,888
|
170
|
9
|
139,618,617
|
5,817,442
|
15,938
|
10
|
13,124,149,954
|
546,839,581
|
1,498,191
|
- 6桁のパスワードだと1週間必要.
- 8桁のパスワードだと,170年必要となる.
- 根拠の数値がいい加減なので,この数値は1つの目安としか言えないが,1つ確実に言える事は「6桁と8桁では,約9000倍パスワードの強度が違う」という事だろうか.