情報セキュリティの基礎

パスワードクラック手法を徹底解説:辞書攻撃・ブルートフォース・パスワードリスト攻撃の仕組みと対策

「パスワードを長くしてください」「使い回しはやめてください」——耳にタコができるほど聞かされるこのセリフ。正直、「面倒くさいな」と思ったことはありませんか?

しかし、攻撃者が使う「パスワードを破るツール」の実際の性能を知れば、その考えは一変するはずです。彼らは手作業で入力しているわけではありません。1秒間に数億回もの試行を行うプログラムを使っているのです。

情報処理安全確保支援士(SC)試験では、攻撃手法の仕組みを理解した上で、「その攻撃を防ぐにはどの対策が有効か」を組み合わせる知識が問われます。Account Lockout、多要素認証、CAPTCHA——それぞれの対策がどの攻撃に有効なのかを正確に把握しておく必要があります。

この記事では、代表的な3つのパスワードクラック手法と、それぞれの弱点・対策について詳しく解説します。

パスワードクラックの基礎知識

デジタルな鍵をこじ開ける攻撃者たち

パスワードクラックとは、認証画面やハッシュ化されたデータに対して、正解の文字列(パスワード)を割り出そうとする行為のことです。

攻撃方法は大きく2つに分類されます。

オンライン攻撃は、Webサイトのログイン画面などに実際に通信して試す方法です。インターネット経由でログイン試行を繰り返すため、サーバー側のログに記録が残りやすく、アカウントロックなどの対策が有効に機能します。

オフライン攻撃は、データベースから盗み出したハッシュ化されたパスワードデータを、攻撃者の手元のPCで解析する方法です。サーバーと通信しないため、ログイン試行回数の制限を受けることなく、高速に解析を進められます。

手当たり次第か、賢く狙うか

攻撃のアプローチは主に2つの方向性があります。

一つは「考えられる組み合わせを全部試す」力技。もう一つは「人間が使いそうな単語を予測する」心理戦です。

コンピュータの処理速度が飛躍的に向上した現代では、単純なパスワードはほんの数秒で解析されてしまいます。特に、GPU(グラフィックボード)を使った並列処理により、解析速度は従来の数十倍から数百倍にまで高速化されています。

ハッシュ化とソルトの重要性

通常、サーバーにはパスワードそのものではなく、計算式で変換した「ハッシュ値」が保存されています。ハッシュ化は一方向の変換であり、ハッシュ値から元のパスワードを逆算することは理論上不可能です。

しかし、攻撃者は「レインボーテーブル」と呼ばれる事前計算された変換表を使って、このハッシュ値から元のパスワードを割り出そうとします。レインボーテーブルには、よく使われるパスワードとそのハッシュ値が大量に登録されており、照合するだけで高速に解析できます。

これを防ぐために「ソルト(Salt)」というランダムなデータをパスワードに付加してからハッシュ化する対策が重要になります。ソルトはユーザーごとに異なる値を使用するため、同じパスワードでもハッシュ値が異なり、レインボーテーブルによる攻撃が無効化されます。

ソルトの実装方法や、bcrypt・scryptなどの安全なハッシュアルゴリズムの選択は、SC試験の午後問題で頻出のテーマです。

覚えておくべき3大攻撃手法

ブルートフォース攻撃(総当たり攻撃)

全部試せばいつかは当たる」という、最も原始的かつ確実な手法です。

「a」から始まり、「z」「aa」「ab」...と、あらゆる文字の組み合わせを機械的に試行します。英小文字のみの4桁パスワードなら456,976通り、8桁でも現代のコンピュータなら数分で全パターンを試せます。

特徴

  • 時間さえかければ理論上100%解読できる
  • 特別な情報や予備知識が不要
  • プログラムで完全自動化が可能

弱点

  • パスワードが長くなると、解読にかかる時間が指数関数的に増加する
  • 英数字記号を含む12桁以上のパスワードは、最新のスーパーコンピュータでも解読に数千年から数万年かかる
  • アカウントロック機能により、オンライン攻撃では数回の試行で遮断される

変種:リバースブルートフォース攻撃

通常のブルートフォース攻撃とは逆の発想で、パスワードを固定(例:「password123」)して、ユーザーIDの方を総当たりで変えていく手法です。

この手法の狙いは、ID固定のアカウントロックを回避することにあります。多くのシステムでは「特定のIDで連続5回ログイン失敗」でロックする設定になっていますが、IDを変えながら攻撃すれば、どのアカウントもロックされません。

「password」「123456」など、多くの人が使っている可能性の高いパスワードを試すことで、効率的に侵入できるアカウントを探します。

辞書攻撃(Dictionary Attack)

辞書に載っている言葉を使う」手法です。

一般的な英単語辞書や、人名リスト、地名リスト、よく使われるパスワード(「admin」「123456」「password」など)を登録した「辞書ファイル」を用意し、それを順番に試します。

特徴

  • ブルートフォースよりも試行回数が圧倒的に少なくて済む
  • 人間の心理を利用した効率的な攻撃
  • 辞書ファイルの質が攻撃成功率を左右する

実際、セキュリティ研究機関が公開している「最も使われているパスワードTop100」のリストを使うだけで、全アカウントの約10%が突破できるというデータもあります。

弱点

  • 辞書に載っていないランダムな文字列には効果がない
  • 意味のない文字列(例:「Tr9$mK2pQw」)は解読できない
  • パスワードに数字や記号を混ぜるだけでも、辞書攻撃の成功率は大きく下がる

ただし、「password」→「p@ssw0rd」のような単純な文字置換は、辞書攻撃の亜種である「ハイブリッド攻撃」で簡単に破られます。辞書の単語に数字や記号を付加・置換するパターンを自動生成して試す手法です。

パスワードリスト攻撃(Credential Stuffing)

他のサイトから漏れた鍵を使う」手法です。これが現在、最も深刻な脅威となっています。

どこかのサイトから流出した「IDとパスワードのセット」を入手し、それを別のサイト(銀行、ECサイト、SNSなど)で試します。

特徴

  • ユーザーが「パスワードを使い回している」確率が高いため、成功率が非常に高い
  • 正規の認証情報を使うため、通常のログインと区別がつきにくい
  • 複雑なパスワードでも、使い回していれば無意味

ダークウェブ(匿名性の高い闇サイト)では、大規模な情報漏洩で流出した数億件ものID・パスワードリストが売買されています。2023年だけでも、複数の大手サービスから合計10億件以上の認証情報が流出したとされています。

弱点

  • サイトごとに異なるパスワードを使用していれば、他サイトでの漏洩の影響を受けない
  • 多要素認証が有効になっていれば、パスワードが合っていても侵入できない
  • 異常なログインパターンを検知するシステムにより、大量の試行が遮断される可能性がある

重要キーワード:クレデンシャルスタッフィング

この手法を専門用語で「クレデンシャルスタッフィング(Credential Stuffing)」と呼びます。SC試験では頻出の必須用語です。

「クレデンシャル(Credential)」は「認証情報」、「スタッフィング(Stuffing)」は「詰め込む」という意味で、盗んだ認証情報を次々と詰め込んで試す様子を表しています。

攻撃手法ごとの効果的な対策

ブルートフォース・辞書攻撃への対策

これらは「何度も試す」ことが前提の攻撃なので、試行回数の制限や、解読難易度を上げることで対抗します。

アカウントロック(Account Lockout)

「連続して5回間違えたら30分ログイン不可」にする機能です。オンライン攻撃には極めて有効な対策となります。

ただし、ロックアウトの設定が厳しすぎると、正規ユーザーの利便性を損ないます。また、意図的に他人のアカウントをロックさせる「DoS攻撃」に悪用される可能性もあるため、ロック条件や解除方法は慎重に設計する必要があります。

パスワードの複雑化と長さ

桁数を増やすのが最強の防御策です。英数字記号を混ぜることで、総当たりにかかる時間を天文学的に増やせます。

パスワード強度の計算式を理解しておきましょう。使用できる文字種が「n種類」、パスワード長が「m桁」の場合、考えられるパターン数は「n^m」通りです。

  • 英小文字のみ(26種類)の8桁 : 約2,089億通り
  • 英大小文字+数字(62種類)の8桁 : 約218兆通り
  • 英大小文字+数字+記号(94種類)の12桁 : 約4.75京通り

現実的には、覚えやすく長いパスワード(パスフレーズ)が推奨されます。「MyDogLovesToEatSushi2024!」のように、意味のある文章にすることで、20桁以上でも記憶しやすくなります。

CAPTCHA(キャプチャ)の導入

歪んだ文字を読ませる、あるいは「信号機の画像をすべて選んでください」といった課題を解かせる仕組みです。機械による自動入力を効果的に防ぎます。

最近では、ユーザーの行動パターン(マウスの動き、タイピング速度など)を分析して、人間かボットかを判定する「reCAPTCHA v3」のような、ユーザーに負担をかけない方式も普及しています。

パスワードリスト攻撃への対策

パスワードリスト攻撃は「正規のIDとパスワード」でログインしてくるため、複雑にしても長くしても防げません。別の角度からの対策が必要です。

パスワードの使い回し禁止

これが根本的な対策です。サイトごとに異なるパスワードを設定していれば、仮に一つのサイトで情報が漏れても、他のサイトへの被害は広がりません。

現実的には、パスワード管理ツール(1Password、Bitwarden、LastPassなど)の利用が推奨されます。マスターパスワード一つを覚えるだけで、サイトごとに異なる強固なランダムパスワードを自動生成・管理できます。

多要素認証(MFA / 2FA)

パスワードが合っていても、スマートフォンへの通知や指紋認証、ワンタイムパスワードなど、追加の認証要素を要求する仕組みです。パスワードリスト攻撃に対する「切り札」となります。

多要素認証には、以下の3つの要素があります。

  • 知識要素 : パスワード、PINコードなど「知っているもの」
  • 所持要素 : スマートフォン、ICカード、ハードウェアトークンなど「持っているもの」
  • 生体要素 : 指紋、顔、虹彩など「自分自身」

このうち2つ以上を組み合わせることで、片方が漏洩しても不正アクセスを防げます。

WAFやAIによる検知

WAF(Web Application Firewall)を導入することで、不審なアクセスパターンを検知して遮断できます。

具体的には、以下のような挙動を検知します。

  • 短時間に大量のログイン試行
  • 普段と異なる国・地域からのアクセス
  • 不自然に速いタイピング速度(人間では不可能な速度)
  • 同一IPアドレスから複数アカウントへのログイン試行

最近では、機械学習を活用して、各ユーザーの通常の行動パターンを学習し、異常なログインを自動検知するシステムも実用化されています。

パスワード変更の定期的な促進

情報漏洩が発生した際に、速やかにパスワード変更を促す仕組みも重要です。「Have I Been Pwned」などのサービスと連携して、自分のメールアドレスが漏洩リストに含まれていないかチェックすることもできます。

最新の対策 : パスワードレス認証への移行

根本的な解決策として、そもそもパスワードを使わない認証方式への移行が進んでいます。

FIDO(ファイド)認証

FIDO(Fast IDentity Online)は、パスワードに代わる新しい認証規格です。生体認証(指紋・顔認証)や、専用のセキュリティキーを使って認証します。

FIDOの最大の特徴は、認証情報がサーバーに送信されず、デバイス内で完結することです。そのため、フィッシング攻撃や情報漏洩のリスクが劇的に低減されます。

パスキー(Passkeys)

Apple、Google、Microsoftが共同で推進している「パスキー」は、FIDO規格を基盤とした、より使いやすいパスワードレス認証です。

スマートフォンやPCの生体認証を使うだけでログインでき、複数デバイス間での同期も可能です。2024年以降、主要なWebサービスで急速に導入が進んでいます。

パスワードがなければ、盗まれることも、推測されることも、使い回されることもありません。セキュリティと利便性を両立する理想的な認証方式として、今後さらに普及していくでしょう。

【演習】理解度チェック!セキュアな思考を鍛える10問

学んだ知識を定着させるために、本番形式の4択クイズを解いてみましょう。 答えをクリック(タップ)すると、正解と解説が表示されます。

【演習】パスワード攻撃手法 理解度チェック(全10問)

Q1. 攻撃者が「a, b, ... aa, ab ...」のように、あらゆる文字の組み合わせを機械的に試してパスワードを割り出す手法はどれか。

正解:イ

解説:
「総当たり攻撃」とも呼ばれます。時間はかかりますが、理論上は必ず正解にたどり着く手法です。

Q2. 一般的な英単語や人名、よく使われるパスワードなどを登録したファイルを用意し、それを順に試す攻撃手法はどれか。

正解:ア

解説:
人間が使いそうな単語(辞書にある言葉)を効率よく試す手法です。「password」や「admin」などが狙われます。

Q3. 他のWebサイトから流出したIDとパスワードのリストを使い、別のサイトへのログインを試みる攻撃手法はどれか。

正解:ウ

解説:
ユーザーの「パスワード使い回し」を逆手に取った攻撃です。アカウントリスト攻撃やクレデンシャルスタッフィングとも呼ばれます。

Q4. 特定のパスワード(例:"password123")を固定し、利用者IDの方を次々と変えてログインを試みる手法はどれか。

正解:イ

解説:
同一IDへの連続試行による「アカウントロック」を回避するために、ターゲット(ID)の方を分散させる手法です。

Q5. 「パスワードリスト攻撃」への対策として、利用者側ができる最も効果的な対策はどれか。

正解:ウ

解説:
漏洩したパスワードを使われるため、サイトごとに異なるパスワードを設定していれば、攻撃は失敗します。

Q6. ブルートフォース攻撃などのオンライン攻撃への対策として、一定回数ログインに失敗した場合にログインを一時停止する機能は何か。

正解:ア

解説:
試行回数を稼がせないための対策として非常に有効です。ただし、リバースブルートフォース攻撃には効果が薄い場合があります。

Q7. パスワードリスト攻撃(Credential Stuffing)の対策として、システム管理者が導入すべき「なりすまし防止」の切り札はどれか。

正解:イ

解説:
正しいパスワードを知られてしまっても、スマホ認証などの「所持情報」がなければログインできないようにすることで防御できます。

Q8. 機械による自動的なログイン試行を防ぐために、歪んだ文字を読み取らせたり、特定の画像を選ばせたりする仕組みは何か。

正解:ウ

解説:
人間には判読可能だが、コンピュータには難しい課題を課すことで、ボット(Bot)による大量アタックを防ぎます。

Q9. パスワードのハッシュ値から元のパスワードを高速に割り出すために、あらかじめ計算済みのハッシュ値一覧表(換算表)を用いる攻撃は何か。

正解:ア

解説:
オフライン攻撃の一種です。これを防ぐために、パスワードにランダムな値(ソルト)を付加してハッシュ化することが重要です。

Q10. パスワードを長く複雑にすることが、最も対策として有効な攻撃手法はどれか。

正解:イ

解説:
桁数が増えると試行回数が指数関数的に増えるため、総当たり攻撃にかかる時間を現実的ではない長さ(数百年など)に引き延ばすことができます。

まとめ : 攻撃を知り、適切な防御を

この記事では、攻撃者が使う3つの代表的な手法を詳しく解説しました。

  • ブルートフォース攻撃 : 全組み合わせを試す(対策 : パスワードを長くする、アカウントロック)
  • 辞書攻撃 : 単語リストを試す(対策 : 意味のないランダムな文字列にする)
  • パスワードリスト攻撃 : 漏洩リストを流用する(対策 : パスワードを使い回さない、多要素認証)

「なぜパスワードを使い回してはいけないのか?」という問いに対し、「パスワードリスト攻撃を防ぐため」と即答できるようになれば、セキュリティの本質を理解できている証拠です。

情報処理安全確保支援士試験では、これらの攻撃手法と対策の組み合わせを正確に理解していることが求められます。「どの攻撃にどの対策が有効か」「なぜその対策が有効なのか」を論理的に説明できるよう、繰り返し復習しましょう。

次回は、人間の心理を巧みに操って情報を盗み出す、アナログにして最強の手法「ソーシャルエンジニアリング」について解説します。技術的な防御策を完璧にしても、人間の油断を突かれれば一瞬で突破されてしまう——そんな恐ろしい攻撃の実態と対策を学んでいきましょう。

-情報セキュリティの基礎