総当たり攻撃

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

総当たり攻撃(そうあたりこうげき)とは、暗号解読方法のひとつで、可能な組合せを全て試すやり方。力任せ攻撃、またはカタカナでブルートフォースアタック(英:Brute-force attack)とも呼ばれる。

概要[編集]

総当たり攻撃とは、暗号暗証番号などで理論的にありうるパターン全てを入力し解読する暗号解読法。数字0~9のみのパスワード(10ワード)6桁で100万パターン、8桁で1億パターン。アルファベットA~Z(26ワード)+数字の組み合わせ(+10ワード合計36ワード)6桁で21億7678万2336パターン、36ワード8桁で2兆8211億0990万7456パターン。アルファベット大文字小文字を区別してA~Z・a~zおよび数字の場合(62ワード)において6桁時に568億0023万5584パターン、62ワード8桁時に218兆3401億0558万4896パターンとなる。(詳細な試行パターンは、下表参照)

総当たり攻撃の全パターン試行回数
使用する文字の種類 使用できる
文字数
4桁 6桁 8桁 10桁
アラビア数字のみ(0~9) 10 1万 100万 1億 100億
英字(大文字、小文字区別しない) 26 45万6976 3億891万5776 2088億2706万4576 141兆1670億9565万3376
英字(大小区別せず)+数字 36 167万9616 21億7678万2336 2兆8211億0990万7456 1京3656兆1584億4006万2976
英字(大文字、小文字区別)+数字 62 1477万6336 568億0023万5584 218兆3401億0558万4896 83京9299兆3658億6834万0224
英字(大小区別)+数字+記号31文字 93 7480万5201 6469億9018万3449 5595兆8180億9665万0401 4838京8230兆7179億2931万8249
英字(大小区別)+数字+記号34文字 96 8493万4656 7827億5778万9696 7213兆8957億8983万8336 6648京3263兆5991億5010万4576


人間による操作ではとても気が遠くなるほどの時間と肉体的・精神的な負荷がかかるような回数の計算をコンピュータにまかせ、時間の許す限りパスワードの検証等を行う行為がコンピュータセキュリティ分野で良く知られている。時間的制約が無い限りは、確実にパスワードをクラックする方法である。

例としては、自転車のチェーンロックやトランクの番号合わせ式を、全ての番号の組み合わせ(4桁なら0000から9999まで)を片っ端から試す方法と同じで、この「片っ端から」でいずれ正解に行き着こうというものである。

コンピュータネットワークに接続したパーソナルコンピュータを含むコンピュータのアクセス権や利用権限・管理権限を奪い、データを書き換えたり不正なプログラムを実行させるなど自分の意のままに操作し、管理者を困らせるクラッカーも存在し、技術的には極めて程度が低い方法で、スクリプトキディでも実行可能であるために、この方法を完全に防ぐことは難しい。

類似する暗号解読方法としては、「人間が発想するパスワード」はワンパターンな事が多いため、予め予想される候補を優先的に組み合わせて検証していく辞書攻撃等があり、一部ハッカーなどは「良く的中する効率が良い辞書」の育成の為に、「過去の流出したパスワードからの傾向性分析」などに血道をあげる者もおり、あるいはどちらの辞書が優秀か、ハッカー同士で競い合うケースもある。実際には、総当たり攻撃と辞書攻撃を組み合わせて、総当たりしつつも確率が高いワードから取り掛かり、時短を図るケースも多い。

2進法[編集]

コンピュータシステムで扱われているパスワード等を含む文字列(String)は、全て2進数に還元できる。なので「0, 1, 10, 11, 100, 101, 110, 111, 1000…」と順番に入力していくと、いつかはパスワードに合致する文字列を見つけることができる。

これはユーザーから見れば文字であっても、コンピュータにとっては文字コードと呼ばれる数字の羅列で扱っているため、そして数字がコンピュータ内では2進数によって扱われている以上、必然的にそのようになりえる。

時間[編集]

人間が手作業で行った場合、入力が速い人が行ったところでとてつもなく膨大な時間と労力が掛かる事となるが、単純なコンピュータプログラムで自動化する事が可能であり、またコンピュータはそのような繰り返しの作業において、非常に有効に機能する。

1台のコンピュータを使った場合は、そのコンピュータの処理速度(主演算装置の処理能力だけではなく、処理に関係する部分の全体的な処理能力)に応じていずれは正解に行き当たる。分散コンピューティングにおいては、(個々のコンピュータの空き時間に)探索する役割を分担して検索するようプログラムすると、使えるコンピュータの数によっては直ちに解読できる事がある。インターネットを使用したサイバーアタックでの総当たり攻撃では、回線速度も関係してくるが、近年光ファイバーの普及により、回線速度がボトルネックになる事は減少している。なお、遅いか早いかはあくまでも確率の問題である。

ゆえに、もっとも原初的な方法論でありながら、時間的制約が無い、あるいは試行回数制限が無い場合など条件を満たせば、最も万能かつ普遍的に使う事が出来る方法である為、暗号解読あるいはサイバー攻撃の基礎とみなされる。

パスワード長と解読時間の関係[編集]

独立行政法人情報処理推進機構(IPA)が2008年に行った試験によれば、パスワード解析には以下の時間が必要となる[1]

使用できる文字数と入力桁数によるパスワードの最大解読時間(IPA,2008)
使用する文字の種類 使用できる
文字数
4桁 6桁 8桁 10桁
英字(大文字、小文字区別しない) 26 約3秒 約37分 約17日 約32年
英字(大文字、小文字区別)+数字 62 約2分 約5日 約50年 約20万年
英字(大文字、小文字区別有)+数字+記号 93 約9分 約54日 約1千年 約1千万年

上記試験に使用したパソコンはIntel Core 2 Duo T7200 2.00GHz、メモリ:3GB。パスワード解析に使ったアルゴリズムは未公開。また、ネットワーク経由でのものかどうかも不明。記号は、31文字使用可能と仮定した場合。

また、Lockdown.co.ukが2009年に行った試算[2]によると、総当たり攻撃によるパスワードの解読時間は、次のとおりとしている。

コンピュータ性能によるパスワード解読時間の関係(Lockdown.co.uk,2009)
使用する文字の種類 使用できる
文字数
低速PC
(Pentium 100MHz)
高性能PC
(当時)
コンピュータ・クラスター
又は、ワークステーション
スーパーコンピューター
6桁の大小いずれかの英字だけのパスワード 26 5分間~8.5時間 30秒 3秒 瞬間
8桁の大小英数字を含むパスワード 62 7年~692年 253日 25.25日 60.5時間
8桁の大小英数字および記号を含むパスワード 96 229年~2万2875年 23年 2.25年 83.5日

上記コンピュータの性能は2009年の当時。なお、日進月歩で性能が向上しているため、現在は上記より大幅に高速化されているとみられる。 なお、パスワードの保管に脆弱性がある場合は、数分で突破される場合がある(例:Microsoft Windows XPと以前のバージョンにあるLMハッシュ[3][4] (回避方法:レジストリに NoLMHash を設定する。[3]))

問題点[編集]

総当たり攻撃は、回答となるキーワードが長ければ長い程、指数的に正解(目的の結果が得られるキーワードが出る)へ至るのに掛かる時間が長くなる。また「入力する」、「正解かどうかチェックする」、「不正解だったら1ビット追加する」を繰り返して行うため、正解かどうかチェックする対象のシステム(攻撃を被っている側)が何らかの理由で反応を返さなくなった場合には、検証作業は停止してしまう。

一般的にパスワードによる保護を行っているコンピューターは、一定時間内に規定回数以上のパスワード誤入力が続いた場合、アクセス禁止にしてしまうように設計されているため、総当り攻撃による解析が難しい場合がある。例として銀行キャッシュディスペンサーはカードを挿入して、3回連続して暗証番号を間違えると、それ以上の操作を受け付けず、防犯のため利用者にカードを返却しない(装置内の保管箱に収納してしまう)。

防衛手段[編集]

攻撃されても、主要なシステムへの侵入が困難であるようシステムを構築することが大事である。まず以下のような防衛手段が挙げられるが、次項以降に挙げるように攻撃方法は日進月歩で進化するため、すぐに有効でなくなる事を考えるべきである。

  • パスワードの桁数を増やす(長さを大きくする)
  • パスワードに使える文字数に記号など他の文字を許可しワードを増加させる
  • パスワードを英数ではなく、日本語にしてワードを著しく増加させる
  • 第2のパスワードを用意する(セキュリティーコードなど)
  • パスワードの試行回数を制限する
  • アクセス元を制限する
  • 一定の速度以上でのパスワード試行を禁止する
  • 数分ごとに自動変化するパスワードにする(入力者は、ポケベルに似た別システムの小型端末を付与され、それを参照して入力する)
  • 一定以上のミスに対して、警告メールを本人に送信する
  • 人による常時監視システムにて、異常なパスワード試行が無いか監視する

影響[編集]

総当たり攻撃には、様々な悪影響が出る。サーバーに対しては数万~数億回(あるいはそれ以上)のアクセスが殺到するために、負荷がかかりサーバーが重くなる。CPU使用率の異常負荷から技術者が気が付く事も多い。また、防衛策を使用すればするほど、パスワード入力が複雑化していき、ユーザーの手間が増え利便性が低下する。ブルートフォースアタックを遮断するために、攻撃元のIPアドレスを遮断するのが負荷対策としてもっとも有効だが、IPアドレスを次々に変更するためにいたちごっことなり、その際に「正規のユーザー」までIPブロックに巻き込まれてログオンできなくなるなどの弊害も発生している。また、試行回数の上限に達したIDがパスワードロックされる事により正規ユーザーが使用できなくなる例も発生しているなど、サーバー担当者のみならず正規ユーザーにも悪影響が出ている。年々、パスワードの桁数は増加傾向にあり、複雑化したパスワードを忘れるなどのデメリットも発生しており、ITコストおよび事務手間コストの増大を発生させており、コスト面からも悪影響が出ている。

逆総当たり攻撃[編集]

ひとつのIDに対してたくさんのパスワードを試すのではなく、決め打ちしたパスワードをいくつものIDに対して試す攻撃方法もあり、これは「逆総当たり攻撃」(リバースブルートフォース)と呼ばれる。これは「パスワード長が短くパスワードに使用できる文字種が少ない」システムに対して極めて有効である。たとえば「IDは必ず連続した数字10桁、パスワードは必ず数字4桁」といったシステムでパスワードに偏りがないと想定すれば、パスワード「1234」をID:1000000000からID:1000010000までの10,000件のIDに対して試行すれば確率論的にはかならずひとつのIDに不正ログインできる計算になる。またこの場合、銀行ATMにあるような「ひとつのIDに対するパスワードの試行回数を制限する」防御方法では防ぐことができない。1万枚のキャッシュカードを手に入れた犯罪者が1枚ずつカードを試すところを想像されたい。

2014年1月末から3月にかけてJALおよびANAのマイレージサービスに対して行われた不正アクセスは、パスワードロックがかかる寸前まで総当たり攻撃を行い、ロック寸前にIDを変更する「総当たり攻撃」と「逆総当たり攻撃」の組み合わせで行われた[5]。また、この際は、成功確率を上げるために確率が高いパスワードを試行された可能性が指摘されている為、考えようによっては、辞書攻撃も組み合わされた可能性もある。

ボットネットを利用した攻撃[編集]

ボットネット(BotNet)と呼ばれる「世界中に散らばった、ウイルス感染等によって支配した複数のコンピュータに1台ずつ順に攻撃させる」手法を利用された場合、「ひとつのアクセス元からのパスワード試行回数を制限する」「一定の速度以上でのパスワード試行を禁止する」としても防ぐことができない。1万枚のキャッシュカードを手に入れたメンバー1万人の犯罪組織が1人に1枚ずつカードを渡し、個々人がてんでばらばらにATMを訪問するところを想像されたい。

もちろんこのボットネット攻撃は、前述の逆総当たり攻撃と組み合わせることも可能である。

脚注[編集]

  1. ^ IPA
  2. ^ http://www.lockdown.co.uk/?pg=combi&s=articles
  3. ^ a b http://www.atmarkit.co.jp/fsecurity/rensai/view09/view02.html
  4. ^ http://gigazine.net/index.php?/news/comments/20070816_ophcrack/
  5. ^ 危なすぎる数字だけのパスワード、JALとANAがユーザー認証を強化(日経コンピュータ)

関連項目[編集]