ソフトウェア

無線LANのWPA/WPA2-PSKを総当たりで突破する「Pyrit」の実際の解析速度と自衛手段について


総当たりでパスワードを全種類試していくという手法を「ブルートフォースアタック」と言いますが、無線LANのWPA/WPA2-PSKをGPUで超高速解析してパスワードを見つけるフリーのオープンソースソフト「Pyritが採用している方法もまさにそのブルートフォース攻撃そのもの。そのため、無線LANの暗号化の仕組みのバグやセキュリティホールを突いているわけではなく、時間さえかければそのうち突破できるだろうというある意味「力業な攻撃」であるわけです。

では実際にどれぐらいの速度がかかるのか?という気になる点について、「Pyrit」の公式ブログにて言及したエントリーが2008年にありました。

The twilight of Wi-Fi Protected Access(無線LANセキュリティの黄昏のはじまり、とでもいうような意味)
http://pyrit.wordpress.com/the-twilight-of-wi-fi-protected-access/


まず一般人は特にそうしなければならないという強力な理由がない限り、パスワードには最も簡単で手抜きなものを使う傾向があり、たとえばFacebookが抜き去るまでは世界最大のソーシャルネットワークであったMySpaceの場合、必ず1文字は数字を入れなければならないとしたところ、3万4000もの突破されてしまったアカウントの大部分が既存の英単語に「1」を足しただけというものだったそうです。

同様にしてWPA/WPA2-PSKの場合も「どのようなパスワードを設定しているか?」というのがそのまま突破されるまでの強度になっており、PMK(Pairwise Master Key=ペアマスター鍵)の組み合わせをあらかじめ計算しておくことによって、数分から数週間で突破するということが可能になるわけです。もしわずか数分で突破できる程度のパスワードであれば攻撃者は攻撃しようと思うはずですし、逆に数週間もかかるのであれば現実的に考えて攻撃をあきらめる可能性は高くなります。

例えば、NIST(アメリカ国立標準技術研究所)の作成した文書ではパスワードの品質についての議論が行われており、それによると「例えばユーザが自分で 8 文字のパスワードを考えた場合、それがどのように選ばれるかにより、エントロピー(ランダムさの程度)は 18-30 ビットの範囲に収まる」「24 ビットのランダムさというと、無作為に選んだ 3 バイト、あるいは無作為に選んだ 5 文字の大文字アルファベット、あるいは 4000 語の中から無作為に選んだ 2 単語に相当する」「このエントロピーは、暗号化キーとして安全だと通常考えられるレベルより遥かに低い」となっています。


要するに、8文字のパスワードでなおかつ32ビットのランダムさを保有しているのであれば、50%の確率で突破するためには約30億回の総当たりが必要になってくる、というわけですが、セキュリティに余程気をつけていなければこれだけの強度は得られない、ということです。

無線LANのWPA/WPA2が作られた当初のマシンパワーでは、毎秒100回未満の総当たりしかできず、理論上は50%の確率で突破するためにWPA-PSKの場合は約2年かかるということになっていました。対してこのGPUを使った「Pyrit」の場合は当時の想定の約100倍まで速度を上げることで50%の確率で突破するための時間を2日~3日までに短縮することができます。

実際に30カ所のESSIDによる無線LANのアクセスポイントが存在するとして、50%の確率ですべての無線LANを突破するためには、従来のマシン(800ドル=約6万5000円ぐらいの価格のパソコン)では1カ所あたり30億回、30カ所で全合計900億回の計算が必要で、これには約28年かかり、120万ドル(約9760万円)の費用をかけたマシンが用意できるのであれば7日以内に突破できます。しかし、ESSIDが同じ無線LANでは一度このマスターキーが突破されると、このキーを同じ名前の各ESSIDで共有しているため、突破したマスターキーを使い回して再突破可能です。

例えば、上記の計算例では、

ESSID「linksys」:17カ所
ESSID「NETGEAR」:7カ所
ESSID「default」:3カ所
ESSID「wlan」:2カ所
ESSID「WiFI」:1カ所

というようになっていて合計30カ所という場合、「linksys」が1カ所突破されると、残り16カ所のESSID「linksys」も使い回しで突破されてしまうということです。

「Pyrit」は単一のGPUを使用することによって、CUDAが利用可能な1300ドル(約10万5000円相当)のパソコンの場合、150億回の計算のために必要なHDDのサイズは600GB(2008年の価格で3000ドル=約24万円、今なら640GBで5680円程度)になり、かかる時間は2週間と少し程度まで縮めることが可能です。無線LANのセキュリティであるWPAが考えられた当初に想定していたパソコンの計算速度の1300倍以上の速度で、なおかつ800分の1以下のコストにまで縮めることができる、というわけです。突破する確率を50%から99%にするにはこの6倍のコストが必要です。それでもまだ2万ドル(約162万円)程度であり、かつては同じ事をしようと思えば800万ドル(約6億5000万円)も必要だったことを考えれば、かなり現実的な数値であり、今まさに目の前にある危機だ、というわけです。

なお、上記の計算はあくまでも「2008年」の時点で、それから3年が経過した2011年現在ではさらにマシンの威力が上がっています。

「Pyrit」の作者は3年前の「無線LANセキュリティの黄昏のはじまり」という意味のエントリーにてこのことを警告しており、パソコンのハードの進化によって、今までは理論上の「想定外」に過ぎなかった危機が、今まさにそこにある危機に変わってきた、ということです。「WEPじゃなくてWPAだから大丈夫!」ではなく、「WPA/WPA2でもちゃんとパスワードを設定していなければ安全ではないのだ」ということです。

「Pyrit」の作者自身は公式ブログの「About」で、このソフト「Pyrit」は無線LANを利用している人々のセキュリティを突破することを奨励したり、支援するものではなく、あくまでもこのような技術に対する認識・議論が主な動機付けである、としています。そのため、この「Pyrit」は誰でも研究できるように無償のオープンソースで提供しているとのことです。

また、既に有償でGPUを使って超高速の総当たりで無線LANのWPA/WPA2-PSKを突破するWindows向けのソフトは存在しています。

Elcomsoft Wireless Security Auditor
http://www.elcomsoft.com/ewsa.html


価格はスタンダードエディションが約5万5000円、プロフェッショナルエディションが約15万9000円となっており、プロフェッショナルエディションはCPUが最大32個まで利用可能で、GPUも最大8個まで同時利用可能となっています。


ではどのように自衛すべきかというと、これはもう単純にエントロピー(ランダムさの程度)が高いパスワードを短い文字数ではなく最大長できっちり設定しておく、ということになります。どんなに長いパスワードであっても「最大長63文字が全部数字の1」みたいなのはダメだ、ということです。では具体的にどうやってそんなランダムなパスワードを作るのかという方法を以下のブログで解説してくれています。

hidekiy blog: [crypto] Pyritによる攻撃から無線LANネットワークを守る方法
http://blog.hidekiy.com/2011/07/crypto-pyritlan.html


SSIDステルス機能や、MACアドレス限定接続機能は、対策したような気分以外において全く意味がないので無視してよいです。WPA2-PSK(パーソナル)において、唯一にして最大の抵抗策は、十分な強度の事前共有鍵(PSK: Pre Shared Key)を設定することのみによってなされます。

そのような鍵の作り方は、手ごろな所で、OpenSSL付属のopensslコマンドをrandオプションを付けて実行すれば、OSの乱数生成機由来の暗号学的に安全な乱数で作った文字列を取得できます。

$ openssl rand -base64 100
PyPTFpJyRrj94+AzhVKqs4ipUbZXJ7/RCefcAbk9mEiPr8H78tsVjUaLDOvT1OmP
QYkZGqdGfc2Ng0UmCZFFE4FgYuphU9uTb5hXzV5FM6vmbfi8cMmKC6aoCzDx7h01
KuFi9g==


出力はデフォルトではバイナリ列なので、-base64オプションを追加してBase64でエンコードしてみました。これを事前共有鍵のASCII指定での最大長63文字つかえば、6bit * 63 = 378bitとなり、十分な強度でしょう。

注意
C言語ののrand()関数で作れる疑似乱数には、乱数種(長くて64bit)以上の乱雑さがないので、これに由来する鍵は使ってはいけません。

結論
辞書もしくは組み合わせ生成による総当たりで割られるような弱い鍵を使ってはいけません。暗号鍵の運用上の問題で、暗号そのものの持つ機能が発揮されないと、設計よりずっと弱い保護しかなされず、攻撃に敗れます。無線LANルーターはWPA2の次の仕様では、事前共有鍵として、20文字以下の短い鍵の使用を拒否するべきです。


また、上記ブログではもっと現実的な計算が成されており、アルファベット小文字で8文字の鍵を全部調べるのにかかる時間は2.4日、「半分調べれば鍵を見つける可能性が50%になるので、平均1.2日で破ることができます」としています。

そのため、少なくとも「自分で考えたパスワード」ではなく、ちゃんとランダムに生成した英数字の組み合わせで構成されたパスワードにするのがまず最低ライン(パスワード生成専用ソフト「PWGen」やIDとパスワードの組み合わせを記録する「ID Manager」のパスワード生成機能など)であり、できれば上記のようにランダムさの程度が極めて高いパスワードを生成して使うべきだ、ということです。

簡単操作で条件にあったパスワードやパスフレーズを大量生成できるフリーソフト「PWGen」


頭を悩ます面倒なIDとパスワードをまとめて簡単管理できるフリーソフト「ID Manager」


無線LANのパスワードが長いと入力が極めて面倒に感じられるかもしれませんが、はっきり言って「慣れ」の問題です。

なお、無線LANのパスワードを破ることそれ自体には法律上の罰則はなく、パスワードで保護されているネットワークに不正侵入した場合、「不正アクセス行為の禁止等に関する法律」によって罪に問われるということになります(電波法109条違反ということでパスワードの解析自体が窃用の目的なら罪だという意見もありますが、実際問題として総務省の見解的には電波法第59条の方になり、パスワードを最初から不正アクセスに利用するために解読したかどうかは最終的に実行した行為によってしかわからないため、実際に解析したパスワードを不正アクセスに使ったかどうかでしか判断できないというのが実情です)。そのため、「Pyrit」の使用についてはあくまでも自分の無線LANの強度を確認する、あるいは無線LANのパスワードを強化することの意味がわからない人のために自分で設定した実験用無線LANを突破する実演デモを行う、などのセキュリティ的な研究・啓蒙・議論のためにのみ使うようにしましょう。

また、手元に強力なGPUを搭載したパソコンが無い状態であっても、Amazon EC2のようなクラウド環境を利用することによって、いつでもどこからでも通信さえできれば強力なGPUを搭載したマシンを時間貸しのリーズナブルな価格で借りて利用することができるため、高性能GPUを搭載したマシンをモバイルして持ち歩けるわけがない、というような都合のいい思い込みをするのではなく、今そこにある現実的な危機として、自分の無線LANのセキュリティを今すぐ向上させるのが一番確実な対策方法です。

この記事のタイトルとURLをコピーする

・関連記事
「使ってはいけないパスワード」トップ50が公開、1位は「123456」で2位は「password」に - GIGAZINE

Windowsのパスワードをわずか数分で解析する「Ophcrack」の使い方 - GIGAZINE

Twitterのパスワードを抜き出すフリーソフト「TwitterPasswordDecryptor」 - GIGAZINE

各ブラウザからパスワードを抜き出すフリーソフト「WebBrowserPassView」 - GIGAZINE

in メモ,   ソフトウェア, Posted by darkhorse

You can read the machine translated English article here.