ZIPパスワードの解析や解除を簡単に実現する方法

ZIPパスワード解析は、例えば自分でZIPファイルに掛けたパスワードを忘れてしまった場合や、職場の資料等にZIPパスを掛けていて担当者の退職時に引き継いだものの、パスワードがわからなくなってしまった、などの場合にソフトや専用ツールを使って解析したい場合に用いられます。


ZIPパスワード解析ソフトにはいくつか種類がありますが、当サイトのお勧めはパスワードアナライザーです。クラウド型のZIPパスワード解析ソフトで、ZIPファイルをアップロードすることで高性能なグラフィックボード搭載の計算サーバにより1秒に1億回以上のパターン解析を実現しています。詳細は以下のページをご参照下さい。


WS000630



zippassword.net.top.shousai


目次




ZIPパスワード解析の仕組みと解析手法


パスワード解析の方法には、大枠でいうと3種類しかありません。「類推解析」と「辞書解析」、「総当り解析」の3つです。類推解析とは、例えば”admin”や”password”など初期設定のまま用いられやすいものや、誕生日、住所、電話番号、といった覚えやすいものの組み合わせで、これらを先に試すことで演算回数が少なくてすみます。

辞書解析とは、英字辞書にのっているような単語を数字や別単語との組み合わせで解析する方法です。多くの方が、自分でもパスワードを覚えやすいように、言語として存在する何らかのキーワードや単語をパスワードの一部に用いている可能性が高く、辞書に載っている単語を優先的に試すことで、こちらも演算回数を少なく済ますことができます。

結局は総当りで解析することが多い


しかし結局のところは、なかなか市販のパスワード解析ソフトで高度な辞書解析機能などを搭載しているものがないため、ZIPファイルのパスワード解析というと総当り(ブルートフォース)での計算が一般的になります。総当り計算とはどういうことかというと、文字とおり、全てのパターンの文字列の組み合わせを試してみる方法です。

途方もない計算量になりそうな気もしますが、ZIPファイルであれば良いソフトを使えば、それほど時間はかかりません。1秒間に数億パターンを計算できる市販ソフトもありますので、それらを試すことで6桁程度のパスワードであれば、それほど難なく解析することが可能だったりします。

総当り計算の例:
数字3桁のパスワードの場合

000、001、002、003、004、005、006、007、008、009、010、011・・・997、998、999

例えばこの数字3桁のパスワード解析の場合であれば、10×10×10=1000通りの数字の組み合わせを実際に試してみることになります。ちなみに、数字3桁程度のパスワードでは、時間稼ぎにすらなりません。ほとんどのZIPファイル解析ソフトでは解除に1秒も掛からないと思いますので、今回のテーマとは違いますが、セキュリティの観点から考えるのであれば意味のないパスワードになります。

パスワードの桁数と複雑さ、解析時間の関係


実際のところ、どの程度の桁数のZIPファイルパスワードなら解析可能なのでしょうか。これは桁数や文字の複雑さによっても全く異なってきます。まずはそれぞれの桁数ごとの理論上のパターン数を知っておきましょう。理論上のパターン数とは、「そのパターンを全て試せば必ず当たる」というパスワードのバリエーションのことです。

4桁のパスワードの場合

文字種類文字数総パターン数解析時間
[0-9]の数字のみ1010,0001秒
[0-9]の数字、[a-z]の英字361,679,6162秒
[0-9]の数字、[a-z|A-Z]の英字(大文字、小文字を区別)6214,776,33615秒
[0-9]の数字、[a-z|A-Z]の英字(大文字、小文字を区別)
記号34文字
9684,934,6561分24秒

こちらの解析時間は、ごく一般的なPC環境(Windows7、メモリCore-i5 CPU3.20GHz、64bit)で、Lhaplusなどのフリーソフトを使った場合の解析時間です。このPC環境でも1秒間で100万回は計算が可能なので、最もパターン数が多いとされる「数字+英文字(大文字、小文字区別)+特殊記号34文字」ですら1分半で全パターンが解析できます。

ちなみに、パスワードアナライザーのようなGPUを駆使したクラウド型パスワード解除ソフトを使うと、最大で1秒間に1億回程度の計算は可能なため4桁のパスワードは1秒かかりません。セキュリティの観点では問題がありますが、忘れてしまったパスワードが4桁であれば、ソフトを使えばほぼ問題なく解除できます。

6桁のパスワードの場合

文字種類文字数総パターン数解析時間
[0-9]の数字のみ101,000,0001秒
[0-9]の数字、[a-z]の英字362,176,782,33636分
[0-9]の数字、[a-z|A-Z]の英字(大小文字区別)6256,800,235,584946分
[0-9]の数字、[a-z|A-Z]の英字(大小区別)
記号34文字
96782,757,789,696217時間

このように6桁あたりから、一般家庭用PCでフリーソフトによる解析(Lhaplus)では、総当り計算は厳しくなってきます。英数字のみで大文字と小文字の区別なしであれば、36分程度なのでまだ現実的ですが、大小文字区別ありで特殊記号込みだと、総解析予想時間は217時間、これは9日間に相当しますので少し現実的ではなくなってきます。

ただ一方で、GPU演算型の高機能なパスワード解析ソフトであれば、まだまだ解析・解除が可能です。前述のパスワードアナライザーで1秒間の計算回数が1億回程度のベンチマークが出た場合を想定して、同じ6桁のパスワードの解析時間を確認してみましょう。

1秒間の計算回数が1億パターンの場合

文字種類文字数総パターン数解析時間
[0-9]の数字のみ101,000,0001秒
[0-9]の数字、[a-z]の英字362,176,782,33621秒
[0-9]の数字、[a-z|A-Z]の英字(大小文字区別)6256,800,235,5849分48秒
[0-9]の数字、[a-z|A-Z]の英字(大小区別)
記号34文字
96782,757,789,696130分

恐るべき計算スピードの違いです。1秒間に1億回程度の計算回数を平均して出すことができれば、6桁のパスワードであれば最大でも130分、つまり2時間弱で解析が可能であることがわかります。もちろん、平仮名文字を含むパスワード等、あまり一般的でないパスワード方式の場合ではこの限りではありませんが。


なお、平均「1億回以上」の高速スピードで忘れてしまったZIPファイルのパスワードをより短時間で素早く解析したい場合はパスワードアナライザーをお勧めします。パスワードアナライザーの詳細は以下をクリックして下さい。

zippassword.net.top.shousai





7桁のパスワードの場合

文字種類文字数総パターン数解析時間
[0-9]の数字のみ1010,000,0001秒
[0-9]の数字、[a-z]の英字3678,364,164,09613分間
[0-9]の数字、[a-z|A-Z]の英字(大小文字区別)623,521,614,606,20815時間
[0-9]の数字、[a-z|A-Z]の英字(大小区別)
記号34文字
9675,144,747,810,816208時間

7桁のパスワードというのは一般的にも多いことが推測されますが、7桁の場合が市販で手に入るパスワード解析等で解除できるZIPパスワードの限界ではないかと思います。一般的な英数字のみのパスワードであれば、たった13分間で解析できますので簡単です。
一方で、大文字小文字の区別アリ、英数字のみであれば何とか解析可能ですが15時間程度かかります。ここに特殊文字が加わった場合(使用可能文字数96文字×7桁)厳しいです。

8桁のパスワードの場合

文字種類文字数総パターン数解析時間
[0-9]の数字のみ10100,000,0001秒
[0-9]の数字、[a-z]の英字362,821,109,907,4567.8時間
[0-9]の数字、[a-z]の英字、特殊記号34文字70576,480,100,000,00067日間

最後に一応、8桁パスワードを確認しておきましょう。8桁パスワードの場合、大文字、小文字の区別アリだとまず間違いなく計算不可能(1日では終わらない)ので、大文字と小文字の区別のない英数字と、英数字+特殊記号、を計算してみました。

特殊文字が加わってしまったパスワード(例:myname_8 / regend@7 など)の解析は67日間と現実的ではないですが(無理でもないですが)、特殊文字なしの単なる英数字パスワード(例:regend78 / break2ed など)であれば、7.8時間程度と頑張れば解析可能な水準になります。

パスワードを忘れてしまった、引継ぎのZIPファイルなどでどうしてもパスワードが必要、という場合に総当りで解析してみることは可能です。ただし8桁を超えるパスワードを普段から設定している場合には、市販のパスワード解析ソフトでは厳しいでしょう。スーパーコンピューター等であれば可能かもしれませんが。


パスワード解析ソフト次第で桁数は1~2つ変わる


ここから解ることは、ZIPファイルに関してはパスワード解析ソフトに何を用いるか、だけで自分でも解析が可能なZIPファイルのパスワード桁数は、1~2桁は軽く変わってしまうということです。あまりパソコンに詳しくない方からすると、どのZIPファイルのパスワード解析ソフトを使っても、かかる時間はあまり変わらないと思いがちですが、1秒間の計算回数が1桁違うだけでも解析時間に10倍の差が生まれてしまいます。

1分と10秒であればあまり差はありませんが、これが10時間と1時間であれば大きな違いです。また20時間と200時間であれば、前者は1日未満なのでぎりぎり頑張ってみようと思える時間ですが、後者は8日間以上と1週間以上かかってしまう計算になるので、ほぼ実用性がありません。このように計算量が10倍違うということは、現実的に想定される6~8桁のパスワードにおいて、解析可能か不可能かの明暗をわける非常に重要なポイントになるケースも多いです。

Lhaplusの場合

http://www.forest.impress.co.jp/library/software/lhaplus/

 
WS000527
 

誰でも簡単に使えて最も手軽なパスワード解析ソフトといえば、ご存知のフリーソフト「Lhaplus」です。Lhaplusは通常はZIPファイルなどの圧縮、解凍ソフトとして用いられることが多いです。ZIPだけでなく、RARやLZH、TAR、GZといった多彩なファイル形式の圧縮・解凍に利用できるため、支持層も多いです。普段からLhaplusならパソコンに入ってる、という方も多いのではないでしょうか。

このLhaplusには、実はZIPファイルのパスワード解析機能も付属しています。ただし一般的なPC環境であれば、それほどの計算回数を出すことはできません。上記でも記述しましたが、Winodws7、Core-i5、4CPU、64bitOS、メモリ16GB の環境での計算回数は、1秒間で100万回です。100万回の計算量だと5桁までのパスワードが限界、6桁以上になるとかなり厳しいのが正直なところです。

 
WS000528
 

Pika Zipの場合


http://www.vector.co.jp/soft/win95/util/se078535.html

 
WS000529
 

こちらもシンプルなZIP専用のパスワード解析ソフトです。グラボ非対応ですが、CPUを利用したZIPパスワード解除ソフトのなかでは、比較的早いほうなのかもしれません。上記のWindows7、Core-i5、4CPU、メモリ16GBのデスクトップPCの環境では、平均6,342,400回/秒と、安定して600万回以上の解析スピードが出ていました。LhaplusのZIPパスワード探索機能と比較すると、およそ6倍のスピードです。どういう計算ロジックで、同じPC性能でもスピード差が発生するのかは謎ですが、まだPikaZIPの方が使い勝手はよさそうです。

 
WS000530
 

ちなみに1秒間に600万回の計算スピードがどのくらいかというと、最もパスワードの文字種類として多いと思われる「英数字(大文字と小文字の区別なし)」で考えてみると、4桁のパスワードの場合で0.27秒、6桁のパスワードで6分5秒、7桁のパスワードで3時間37分の解析時間なので、そこそこの実用性に耐えうるスピードともいえそうです。

Pika Zipのオプション設定


WS000531
 

PikaZIPのオプション設定を利用すると、パスワードの組み合わせについてより詳細な設定をすることが可能です。例えば、先頭にだけ大文字を用いる組み合わせや、全て大文字の場合の組み合わせ、等の指定もできますし、使用する文字も選択できます。デフォルトでは最もパスワードの文字種類として使用頻度の高い、以下の文字列が設定されています。

文字種類デフォルトの文字列
アルファベットabcdefghijklmnopqrstuvwxyz
数字0123456789
記号~@#$%^&*()_+-=[]{},.\”/?:;`

またローマ字検索ができるのも一つの特徴です。日本人が設定する英文字パスワードというのは、ローマ字の可能性が結構あります。ローマ字であれば、例えば同じ6桁のパスワードでも、「a-z」までの全ての文字列1つ1つの組み合わせを検証する必要はなく、「a」「i」「u」「e」「o」「ka」「ki」「ku」「ke」「ko」「sa」「shi」「si」「su」「se」「so」など、ある程度まとまった文字列の単位として検証することができるので、演算回数を大幅に減らすことが可能です。

パスゲッターの場合


少し前にインターナルで発売していた「パスゲッター」を利用した場合のパスワード解析スピードを検証してみます。(こちらの商品は2013年12月に発売中止となっており、現在はパスワードアナライザーという商品を販売しています)。

パスゲッターはCUDAに対応しているため、Nvidia社のGPUを搭載しているパソコンであれば、GPUの計算力を利用して演算をすることができ、かなり高い計算スピードを記録することができていました。また利用するシステムCPU数も設定ができ、例えば4コアのCPUの場合、4つのCPUをフルに使ってパスワードを解析することもできました(ネットの接続が重くなるくらい負荷がかかりますが・・)。

 
WS000532
 

まずはCUDAの機能をオフにして、CPUだけを使用して演算スピードを確認してみました。利用するシステムCPU数は4に設定します。解析モードには総当りの「brute-force解析」を利用します。

 
WS000533
 

計算スピードは、1秒間に2269万1923回/秒!! その後もコンスタントに安定して2000万回/秒以上の計算力を発揮し、平均スピードは21,426,071回秒という結果でした。CPUの計算力だけで比較しても、PikaZIPやLhaplusよりも遥かに高速です。

平均2000万回/秒の計算ができれば、[0-9|a-z]の英数字(大文字小文字区別なし)のパスワードで、4桁の場合で0.07秒、6桁のパスワードの場合で1分48秒、7桁のパスワードの場合で1時間5分、8桁の場合でも39時間で解析が可能です。

では次にNvidia社のグラボのGPUに搭載されているCUDA加速を利用してパスワードの解析をおこなっています。ここで検証に用いる前述のWindows機には、NVIDIA社のGeForce GTX 550 Tiというグラフィックボードが搭載されています。このNVIDIAのGeForceのGPUを利用してパスワード解析の計算をおこないます。

 
WS000535
 

NVIDIA社のグラボを搭載(GPU1個)とCPU4コアの合計で解析すると、1秒間の解析スピードは1億6400万回にも上りました。平均スピードで1億6000万回をキープできた場合、英数字(大文字小文字区別なし)なら8桁のパスワードでも僅か286分(4時間46分)で解析することが可能です。

このようにCPU性能だけでなく、GPUの高機能な計算能力を利用することで、文字通り計算スピードを1桁以上増やすことも可能です。ZIPのパスワード解析においては、どのソフトを利用するか、だけでなく、どういったスペックのPCで利用するか、という視点も重要であることがわかります。(グラボ非搭載のパソコンの場合、クライアントソフトだとどんなに高性能なものでも、計算スピード1億回は絶対に出ませんので)



各ZIPパスワード解析ソフトの計算速度まとめ


上記を踏まえて、各パスワード解析ソフトの計算速度を一覧でまとめてみました。解析時間はいずれも、英数字(大文字小文字区別なし)の文字列で構成されたパスワードを想定しています(例:ultimate32、takeru24、shock32)

ソフト名4桁解析時間6桁解析時間7桁解析時間8桁解析時間
Lhaplus1.67秒間36分間21時間45分32日15時間
PikaZip0.27秒間6分5秒間3時間37分5日10時間
パスゲッター0.07秒間1分48秒間1時間5分39時間
パスゲッター
(CUDA使用時)
0.01秒間13.6秒間8分9秒4時間46分

※プロセッサ: Interl(R) Core(TM) i5-4570 CPU @3.20GHz 3.20GHz
実装メモリ: 16.0GB / Windows7 Professional システム 64bit
GPU: NVIDIA GeForce GTX 550 Ti 使用時の測定結果


自分のパソコンのCPUとグラボ性能を確認する方法


パスワードの解析ソフトを利用してZIPのファイルのPASSを効率的に解除するためには、自分のパソコンのスペックを知っておくことが重要です。前述のようにソフト次第で解析可能なパスワードの桁数は大きく変わります。

しかしソフトだけでなく、パソコンの性能次第で、同じパスワード解析ソフトを動かしても解析できるスピードやパスの桁数に大きく差がつくことも考えられます。自分のパソコンのPCスペックを確認しておくことで、現実的にどのくらいの時間でパスワードの解析が可能かがわかる場合もあります。

CPU性能やメモリの確認方法


CPU性能やメモリを確認するには、コンピューターの「システムのプロパティ」を参照します。Windows7であれば、スタートメニューにある「コンピューター」をクリックすると、左上のシステムのプロパティというボタンがあるはずです。

 
WS000536
 

こちらで「システムのプロパティ」をクリックすると、以下のような画面になります。この画面でOSの種類やサービスパックのバージョン、CPU(プロセッサ)や実装メモリ(RAM)、ビット数などのシステムに関する情報、スペックが一通り確認できます。

 
WS000537
 

なおそれが、良いのか悪いのかさっぱりわからない、という場合はシステムの評価(通称:「Windows エクスペリエンス インデックススコア」)を参考にすると良いと思います。上記のキャプチャ画面の例では、「6.7」と記載されているものが、基本スコアにあたります。

こちらの基本スコアは、「プロセッサ」「メモリ(RAM)」「グラフィックス」「ゲーム用グラフィックス」「プライマリ ハードディスク」などの複数のスコアをもとに導き出されている、いわばパソコンの能力測定のようなものです。Windows7であれば、1.0~7.9までの間で評価スコアが設定されますが、目安としては3.0以上で実用レベル、4.0以上で快適に使えるレベル、とされているようです。

参考文献
いろいろなパソコンのWindowsエクスペリエンス インデックス(http://www.pasonisan.com/pc-parts/game-windows-desk.html


GPU(グラフィックボード)の性能を確認する


最初に断っておきますと、GPUは必ずしもパソコンに設定されているものではありません。むしろ初期状態では、搭載されていないパソコンも多いかもしれません。GPUは、高度な画像処理を必要とされるような、例えば3Dゲームやオンラインゲームの描画によく使われるため、ゲームPC等であれば最初から搭載されているケースもあります。

グラボの市場としては、

 ・nVidia社の GeForceシリーズ
 ・AMD社の RADEONシリーズ

の2つが主流です。オンボード(あらかじめPCに内臓されているGPU)のIntelを除くと、グラフィックカードの市場はほぼ上記2シリーズのどちらかになります。

自身のパソコンにグラフィックカードが搭載されているかを確認するためには、「DirectX診断ツール」というWindows付属のツールを使います。Windows7であれば、スタートメニューの検索窓に、「dxdiag」と打ち込んでみてください。サジェストでは何も表示されませんが、そのまま「Enter」キーを打ち込むと、DirectX診断ツールが起動します。

 
DirectX診断ツール
 

上記のDirectX診断ツールの「ディスプレイ」を確認すると、私の試験環境PCではNVIDIA社の GeForce GTX 550Ti を使用していることがわかります。


ZIPのパスワード解析を高速化させるCUDAとは?


前述のパスゲッターのように、一部のZIPパスワード解析ソフトでは、CUDAというGPU向けの統合開発環境を利用しています。私はプログラマーではないのでざっくり程度の理解になりますが、CUDAを利用することで、本来、CPUがする計算を、GPUにもさせることが可能になり、それにより大幅な計算速度の向上が見込める技術です。

同程度のざっくりの理解で間に合う方は、「GPUを自在に操作するためのプログラミング技術がCUDAだ」と覚えておいてください。本来、GPUはグラフィックや描画に最適化された計算能力でしかありませんが、CUDAを利用することによって、GPUを使用したパスワード解析が可能になります。

より詳しく正確に理解したい方は、以下を参考にしてください。

◆ゼロからはじめるGPUコンピューティング 「GPUコンピューティングおよびCUDAについて」
http://www.gdep.jp/page/view/248

◆高速演算記 第3回 「チューニング技法その1 CUDAプログラミングガイドからピックアップ」
http://www.gdep.jp/column/view/3

 
ちなみに、このCUDAという開発環境はNVIDIA社が提供するものです。そのため、NVIDIA社のグラフィックボード(GeForceシリーズ等)でしか使用することができません。この辺りは競争戦略としては流石です。そのため、上記のパスゲッターも、NVIDIA社のGPUを搭載しているパソコンでしか、計算高速化の恩恵(1秒間1億6000万回の計算力)を受けることはできません。

ZIPのパスワード解析が他ファイルよりも簡単な理由


少し話は戻りますが、ZIPのパスワード解析は、上記のように比較的、高性能なスペックのPCであれば、6~8桁程度のパスワードであれば十分に自宅のパソコンでも解析・解除ができる場合があります。

これは少なくともPDFやOffice(ExcelやWord)、RAR圧縮ファイルなどのパスワード解析では難しいことです。特に最新版のOfficeファイルなどは、どんなに高性能な家庭用PCやGPUを持ってしても、まず解析することは出来ないです。つまりZIPファイルは、世の中に流通しているパス付きファイルの種類のなかでは、比較的、解析が簡単な部類のファイル形式にあたります。これは何故でしょうか。

ZIP暗号化に用いられるTraditional PKWARE Encryptionについて


ZIPの暗号化に用いられているパスワード形式は「Traditional PKWARE Encryption」と呼ばれるものです。もちろん、ほとんどの方には聞きなじみがないと思いますが、「Traditional PKWARE Encryption」で検索してみると、いろいろな情報がヒットします。

このTraditional PKWARE Encryptionは、互換性を重視したパスワード方式であるため、比較的、解析が簡単な部類に入ります。また最大鍵長(暗号鍵の長さ=桁数)は96bitしかなく、最大でも12桁までのパスワードしか生成することができません。個人的には12桁のパスワードを設定していれば十分だろうというか、それ以上長いと覚えられない気がするのですが、少なくともパスワードの世界では、最大12桁というのは貧弱な部類になるようです。

こちらも簡単に概要を説明すると、ZIPファイルを暗号化する際に、ユーザーの指定したパスワード(最大96bit)とセットで12bitの乱数を生成し、そちらとの組み合わせで暗号化を行う方式です。簡単ではありますが、あまり強固なパスワード方式ではないため、家庭用のパソコンのCPUや、市販の解析ソフトでも解析が可能な場合があります。

PDFやOfficeの暗号化に採用されているAESとの違い


他のPDFやOffice系のファイルのパスワード解析が難しいのは、暗号化方式の違いにあります。例えばPDFファイルの場合は、バージョン1.6以降から、暗号化のアルゴリズムにAES(Advanced Encryption Standard)を指定することが可能になっています。このAESは前述のTraditional PKWARE Encryptionなどのパスワード方式と比べても遥かに強固なものです。

興味がある方はAESの仕様書(英語)を一度、読まれてみるといいのではないかと思います。OfficeのWord2007、Excel2007、PowerPonit2007など、2007バージョン以降のものにはパスワードの暗号化方式としてAESが用いられています。

Office2007、2010のOfficeバージョン(.xls、.doc、.ppt)を使用している方の場合、AES暗号化が用いられているため、市販のパスワード解析ソフトでは、よほどパソコンが高性能でない限り解析が難しい可能性があります。


パスワード方式のまとめ


ZIPファイルPDFファイルOfficeファイル
暗号化方式Traditional PKWARE EncryptionAESAES