元RX-7乗りの適当な日々 このページをアンテナに追加 RSSフィード Twitter

RX-7(FD3S)WRX STI関連のキーワードで検索されて来られた方へ。
右サイドのカテゴリ『』をクリックすると関連する項目だけが表示されます。
日々の写真は『Flickr』で公開しています。

2008/09/20

「Zipファイルのパスワードを短くするのは危険だよ!」を計算して確認してみた


仕事をしていると、何らかの形でパスワード付きのZIPファイルを受け取ることがあるのですが、そのパスワードを教えてもらったときに、思いのほかパスワードが短い(3文字とか4文字とか)ことが多くて驚きます。


何のためにパスワードをかけているのかを考えると、ちょっとした努力で紐解きにくくできるものなら、堅くしておきたいものですよね。

というわけで、短いパスワードのZipファイルがどれだけ危険かを計算してみようと思います。


パスワードに使える文字パターン

もっとたくさんある気もしますが、とりあえず前提として、よく使う半角英数字/記号文字ってことで、パスワードに用いる文字列を以下の89種類とします。

abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
~@#$%^&*()_+-=[]{},.\"/?:;`

パスワードの文字数毎のパターン(重複順列)数

上記の"パスワードに使える文字パターン"を前提とすると、、、


文字数パターン(通り)
1文字89
2文字7921
3文字704969
4文字62742241
5文字5584059449
6文字496981290961
7文字44231334895529
8文字3936588805702081
9文字350356403707485209
10文字31181719929966183601

と、このような感じになります。最後のほうは桁がよくわかりませんね・・・。


ツールを使ってパスワード付きのZipファイルを解析する

使うのは、有名な「PikaZip」と呼ばれる解析ツールを使ってみます。

「PikaZip」での設定は、上記の「パスワードに使える文字パターン」の全組み合わせの総当りを実施し、"ディスクキャッシュ"(メモリ上にファイルを保持し、高速に解析できます)を利用しました。


その結果、使用したPCのスペックと、1秒あたりに解析できた文字数の表が以下となります。

尚、利用したパスワード付きZIPファイルのサイズは約350KBです。


PCスペック1秒あたりの解析数
CPU: Core2 Duo T8300(2.4GHz), Mem: 2GB約4,000,000
CPU: Pentium4 540(3.2GHz), Mem: 1GB約3,100,000

上記表1つ目(速い方)のCore2 Duo T8300(2.4GHz)のPCを1台利用した場合、上記の「パスワードに使える文字パターン」のどれかを利用して作ったパスワード付きZipファイルの解析にかかる時間は以下となります。


文字数解析にかかる時間
1文字1秒以内
2文字1秒以内
3文字1秒以内
4文字16秒
5文字1415秒 (約23分35秒)
6文字125660秒 (約34時間54分)
7文字11183493秒 (約129日)
8文字995330694秒 (31年)
9文字88584431620秒 (2809年)
10文字7884014414111秒 (25万年)

この結果からは、3文字のパスワードだと1秒以内4文字のパスワードで1〜16秒で解析されることとなります。

5文字のパスワードでも最速で16秒、最遅でも23分半以内に終了する計算です。

逆に、8文字まで長くすると、最速でも129日、最遅で31年となり、まずまず強固となっています。5文字と8文字で結構違いが出てくることが分かります。


尚、この「PikaZip」は複数台のPCを並べて、解析を並列処理することも可能となっているみたいです。

どのくらいオーバーヘッドがあるかは試していないのでわかりませんが、仮にオーバーヘッドがなかったとして、250台の上記スペックのPC(Core2 Duo T8300)を並べて解析したとしても、パスワードの文字数を11文字にしておけば、最速でも1000年かかる計算です。


尚、言い忘れていましたが、辞書に出てくるような単語を使ったり、それらを組み合わせて使うのは非常に危険です。

辞書検索を使った解析を実施すると、上記より遥かに少ない組み合わせとなりますので、すぐに解析されてしまう可能性が高くなります。


結論

今回は、よく使うであろう89文字の半角英数字/記号を対象としましたが、これに全角文字が加わるとさらにバリエーションが増す(何千字レベル)ため、より強固となりそうです。というわけで、、、


  • パスワードは少なくとも8文字以上にしたほうが良さそう
  • 全角文字はできるだけ使ったほうが良い
    • 日本語入力できない場合も、メモ帳からコピペなどで対応できる場合がある。
  • 辞書に載っている文字列を使うのは危険
    • 辞書に載っている単語による組み合わせのアタックができたりするので

以上、ご参考になれば幸いです。

まぁ、、、あれですね。もしメールでこういったやり取りをする場合は、素直にPGPとかS/MIMEでメール自体を暗号化してしまった方が良いかもしれません。


とおりとおり 2008/09/22 08:37 よく、数字だけのパスワードを設定するのですが
(あなたのケータイの電話番号です、という感じです)
これって桁数は11ですけど弱いですか?

77437743 2008/09/22 09:06 >とおりさん
数字のみの組み合わせだと、総当りでも1000億回で判明してしまいます
今回の例に挙げられている早いPCを、数字処理専用の並列マシンとして用いれば、わずか7時間程度で解析できるので、パスワードとしては非常に弱いです

間に適当な英文字を挟みこむだけで強度が増すので、そういった処理をする事をお勧めします
例えば今のパスが09011112222だとしたら、間に名前(TAROU)を挟みこんで0T90A11R11O22U22とすれば、かなり強度が増します
挟み込む位置は適当に変えたり、単語を代えるなり独自の手法を使うと、解析は更に困難になります

k 2008/09/22 12:17 10年くらいしてCPUの性能が上がったら、8文字でも1秒で解析されそう

kokorohamoekokorohamoe 2008/09/22 12:50 パスワードは長くすると、紙に書いたりしてディスプレイに張る人が増えたり、辞書にある文字を使う人が増えてたり、使い回したりという問題があるので、長ければよいという問題ではないのが頭が痛い話。にもかかわらず、そういうことを考えないで、とにかくパスワードは長くという人がいて困る。

H 2008/09/22 18:36 数字のみという条件がばれてたらそら、早いわな
そこをばれないようにすればOKなんじゃね?

rx7rx7 2008/09/23 00:18 皆さんコメントありがとうございます。

> 数字11桁

これは解析をする方の癖が大きく、定石などはわからないのですが、おそらく、総当りにも色々なパターンがあって、まずは数字のみの総当りなどから行う、など考えられます。
つまり、↑で7743さんが書かれている通りですが、上記の方針で総当りされると、あっという間に解かれてしまいますので、できるだけ英字や記号、そして全角も混ぜこんでしまうと、強度はグンと上がります。


> 10年位したら

最近ではムーアの法則も怪しくなってきていますが、マルチコアなCPUが当たり前になってきていますので、普通に並列計算させてしまえば、十分ありえますよね。
このエントリで計算した数字なんて1〜2年もたてば、あまり参考にならなくなる可能性が高いですね。

> 紙に書いて貼る人

これは、、、無理(^^;
難しい話ですね。。。

ヘルプデスク作業担当ヘルプデスク作業担当 2008/09/23 19:04 実際限界は5文字。
コレ超えると、PCに興味のない人(会社とか)は張り出すね。

ま、中身もたいてい12345とかabcdeとかaaaaaとかフタ開くとこんなもんなんだけど…

rx7rx7 2008/09/24 00:05 まぁ、、、ZIPファイルのやり取りなどは、手元で解凍した際に、メモしていたものはそのまま捨ててほしいんですけどね・・・。なかなか・・・そうですよね。。。

こんなのもこんなのも 2008/09/26 22:01 パスワードはカッコでくくるだけで簡単に強度を上げられますよ
(password)とか(pass)(word)とか
覚えやすさもかわらないです

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。


オススメ (一部は、最近読んでいる本とも言う)
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~ [Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ) エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド [24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 Linux-DB システム構築/運用入門 (DB Magazine SELECTION) キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置 スケーラブルWebサイト 実践ハイパフォーマンスMySQL 第3版 ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE) SQLアンチパターン インターネットのカタチ―もろさが織り成す粘り強い世界― ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)