ZIPファイルのパスワードは何桁つければ安全?
個人的な解釈が含まれております。
SpinachMediaは本ページの情報をあなたが利用することによって生ずるいかなる損害に対しても一切の責任を負いません。
何かとよく使用するパスワード付きZIPファイル。
メールでデータを送る際にとりあえず使用しますが、
はたしてどのようにパスワードをつければ安全なのでしょうか?
気になったので調査してみることにしました。
【目的】
パスワードはどのようにつければ安全なのか確認する。
【結果】
以下のことに気をつけること。
- パスワードには英文字(大文字含む)を使用すること。
- 記号は圧縮、解析ツールに依存するようなので、使用しないこと。
- 英数字(大文字含む)であれば最低8桁のパスワードをつけること。
- 英文字(大文字含む)であれば最低9桁のパスワードをつけること。
- ファイルの重要度に応じてパスワードを長くすること。
【内容】
以下の流れで調査を行います。
- パスワードに使用するのは数字?英文字?記号?
- 1パターンあたりの検索時間は?
- 何桁が安全なの?
1.パスワードに使用するのは数字?英文字?記号?
ZIPファイルでは、一般的に数字・英文字・記号が使用可能です。
1桁あたりのパターンは以下の通りです。
種類 | パターン数 |
---|---|
数字 0~9 | 10 |
英文字(大文字含む) a~z | 52 |
記号 | 193 |
当然ですが、
1桁あたりのパターン数が多いほうが
"解析に時間を要する=安全"となります。
よって、数字、英文字、記号を組み合わせたパスワードが最も安全といえます。
ただし、記号は圧縮・解凍ソフトによって使用できない場合があるそうなので、
社外に出す場合は、数字と英文字を組み合わせたパスワードが最適です。
2. 1パターンあたりの検索時間は?
下記環境にて数字8桁にて測定を行いました。
この測定結果から、1パターンあたりの検索時間を求めます。
試験環境
Windows7 64bit
Core i5 2.90GHz
メモリ 8GB
Lhaplus Ver1.59 ("ZIP パスワード探索"機能を使用)
測定結果
パスワード | 解析時間※ |
---|---|
00000000 | 00m32s |
50000000 | 02m55s |
99999999 | 05m27s |
平均 | 02m58s |
※0から探索開始した場合
数字8桁の場合は、組み合わせが
10^8 = 100,000,000 = 1億通り
1パターンあたり 1.78μs
3.何桁が安全なの?
数字・英文字・英数字の6~10桁時の組み合わせ数、
0から探索した場合に要する時間を計算した結果を以下に示します。
(y:年、d:日、h:時、m:分、s:秒 を意味しています)
桁数 | 数字 | 英文字(大文字含む) | 英数字(大文字含む) | |||
---|---|---|---|---|---|---|
1 | 10 | - | 52 | - | 62 | - |
6 | 1000000 | 1s | 19770609664 | 9h46m31s | 56800235584 | 1d4h5m4s |
7 | 10000000 | 17s | 1028071702528 | 21d4h19m27s | 3521614606208 | 72d13h14m33s |
8 | 100000000 | 2m57s | 53459728531456 | 3y6d8h51m56s | 218340105584896 | 12y118d5h3m7s |
9 | 1000000000 | 29m40s | 2779905883635712 | 156y331d5h1m12s | 13537086546263552 | 764y29d1h14m12s |
10 | 10000000000 | 4h56m40s | 144555105949057024 | 8159y67d21h3m9s | 839299365868340224 | 47372y341d4h40m45s |
表に記載されている時間は、総組み合わせ数から算出しているので、
パスワードの値によってはより早い時間で解析ができます。
(999と1000では1桁違うが、探索時間はほぼ同じ)
私の感覚から、1ヶ月以上解析に時間がかかるのであれば、
安全といえるのではないでしょうか?
(ファイルの重要度にもよりますが・・・)
以上より、
- パスワードは英文字(大文字含む)を使用する
- 英文字(大文字含む)のみであれば9桁以上とする
- 英数字(大文字含む)であれば8桁以上とする
ことが重要だと思います。