第1回:そのパスワードで大丈夫? ~ GPGPUによる高速パスワード解析
パスワード解析と解析マシン 2014.09.01
今回は、GPGPU(General-purpose computing on graphics processing units)によるオフラインパスワード解析に関する話を数回に分けてご説明いたします。 なお、今回使用している解析マシンでは、法人向けパーツ等は一切使用しておりません。一般に購入できるパーツのみで構成されており、どなたでも入手することが可能なマシンです。使用したソフトウェアについては、悪用防止のため公表致しません。
はじめに
ここ数年、パスワード解析にグラフィックカードのGPU(Graphics Processing Unit)を利用することで、パスワード解析速度を格段に向上させる技術が注目を集めています。GPUを画像処理以外に利用するという技術は、一般的にGPGPUと呼ばれています。この技術を利用すると、一般に十分な強度であると思われているパスワードが破られてしまう可能性があります。弊社では、実際に解析マシンを作成しGPGPUによるパスワード解析の検証を行いました。一例として、パスワード付zipファイルの解析を挙げてみます。CPU(Intel core i7 3770K)を利用した解析とGPU(AMD Radeon HD 7970 4基)を利用した解析で比較すると、その解析スピードには約40倍もの差があります。

8桁英大小文字、数字、記号(96文字種)を総当たりでパスワード解析した時の、全パターンの解析日数(理論値)を比較してみます。GPUを利用した場合は20日程度で終了してしまうのに対し、CPUを利用した場合には2年半程度の時間が必要になります。

GPGPUって何?
GPGPUとは、前述したようにGPUを画像処理以外の目的に使用する技術です。 GPUを画像処理以外で利用するメリットは、CPUに比べ分散処理が得意であるという点にあります。 CPUは、処理速度は速いのですが、演算コアが少ないため分散処理には向いていません。対してGPUは、演算コアが多いため分散処理に向いていますが、処理速度は遅いのです。 販売されているCPUとGPUを比べてみましょう。
周波数(処理速度) | 演算コア数 | |
---|---|---|
CPU:Intel Core i7 4770K | 3.9GHz | 仮想8コア |
GPU:AMD Radeon HD 7970 | 0.925GHz | 2048コア |
分散処理を行った場合のイメージとして、4770Kの1コアを大人1人、RadeonHD7970の1コアを子供1人として、足し算勝負をさせてみると図のようなイメージになります。

解析マシンについて
今回のパスワード解析実験では、一般に購入できるパーツを用いて解析マシンを構成しており資金さえあれば、どなたでも入手することが可能なマシンです。詳しい構成は省きますが、CPUはIntel Core i7 3770K,GPUはAMD Radeon HD 7970を4基搭載しています。

パスワードクラック手法について
一概にパスワードクラックと言ってもその手法は様々であり、手法によってメリットデメリットが存在します。今回は、オフラインでのブルートフォース攻撃をメインで取り上げますが、簡単にどんな手法が存在するのかをご紹介します。パスワードクラックは、まずオンラインクラックとオフラインクラックに区別することが出来ます。オンラインクラックは、稼働中のサービスやシステムに対して行われるものです。対して、オフラインクラックは暗号化ファイルやハッシュを自らのリソースで解析する手法です。オンライン、オフラインの手法を簡単にまとめると以下のようになります。
攻撃手法
攻撃手法 | 概要 |
---|---|
ブルートフォース攻撃(オンライン,オフライン) | すべての組み合わせを試す攻撃手法。 解析時間は、膨大だが最終的には必ず成功する。 |
辞書攻撃(オンライン,オフライン) | よく利用されるパスワードや単語を記載した辞書を利用した攻撃手法。ブルートフォース攻撃に比べ解析時間は短くなる。単語の組み合わせや推測されやすいパスワードを利用しているユーザーを主な標的とした手法。 |
パスワードリスト攻撃(オンライン) | 漏洩したID,パスワードリストを利用する攻撃手法。パスワードの使い回しをしているユーザーを標的とした手法。 |
リバースブルートフォース攻撃(オンライン) | パスワードを固定し、IDを変更していく攻撃手法。数字のみのID、パスワードや法則性のあるIDを利用しているサイトが標的とされることが多い。 |
ジョーアカウント探索(オンライン) | ユーザーIDとパスワードが一致するアカウントを探索する手法。 |
レインボークラック(オンライン) | 平文パスワードとハッシュ値のセットが登録された特殊なテーブルを利用し、ハッシュ値からパスワードを逆引きする攻撃手法。解析時間は短いが、データ量が膨大となる。 チェイン化を利用することでデータ量を削減できるが、解析時間が増加する。 |
攻撃手法
ブルートフォース攻撃 | 辞書攻撃 | パスワードリスト攻撃 | リバースブルートフォース攻撃 | ジョーアカウント探索 |
---|---|---|---|---|
アカウント:パスワード User@yyyy.zz:aaaa User@yyyy.zz:aaab User@yyyy.zz:aaac |
アカウント:パスワード User@yyyy.zz:password User@yyyy.zz:qwerty User@yyyy.zz: |
アカウント:パスワード Joe@yyyy.zz:nD%52H4S Mary@yyyy.zz:m|7.w5m#k Andy@yyyy.zz:_Ta2Q6/q |
アカウント:パスワード ID0001:password ID0002:password ID0003:password |
アカウント:パスワード Joe0304:Joe0304 Mary1120:Mary1120 Andy0801:Andy0801 |
オフライン攻撃イメージ
ブルートフォース攻撃 | 辞書攻撃 |
---|---|
aaaa aaab aaac … |
password qwerty 1234567890 … |