【なぜ短いパスワードは一瞬で破られる?】ブルートフォース攻撃(総当たり攻撃)と辞書攻撃の仕組み

セキュリティ
0
スポンサーリンク

Webサイトで会員登録をするとき、「パスワードは8文字以上、英大文字・小文字・数字・記号を組み合わせてください」と言われて、「面倒だなあ……覚えやすい誕生日や英単語じゃダメなの?」と思ったことはありませんか?

以前の【パスワード使い回しの罠】「覚えられない」から脱却!リスト型攻撃の危険性と楽ちん管理術では、「他のサイトから漏れたIDとパスワードのセット」を使ってログインを試みる「リスト型攻撃」を解説しました。

では、どこからもパスワードが漏れていないのに破られてしまうのはなぜでしょうか?
その原因となる代表的な攻撃手法が、今回解説する「ブルートフォース攻撃(総当たり攻撃)」と「辞書攻撃」です。

この記事では、攻撃者がコンピュータの計算力を使ってどうやってパスワードを割り出すのか、その仕組みと私たちが今すぐできる防御策をわかりやすく解説します!

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

ブルートフォース(Brute Force)とは、英語で「力任せ」という意味です。日本語では「総当たり攻撃」と呼ばれます。

自転車のダイヤル式ロック(4桁の数字)の番号を忘れてしまったとき、0000、0001、0002……9999まで順番に全部試せば、最大1万回で必ず開きますよね。

これを人間ではなく、高性能なプログラムを使って1秒間に何千回〜何億回という猛スピードで自動的に試すのが「ブルートフォース攻撃」です。

  • 数字4桁(0000〜9999):1万通り → コンピュータなら1秒未満(一瞬)で突破
  • 英小文字6桁(aaaaaa〜zzzzzz):約3億通り → 高性能なPCなら数秒〜数分で突破

つまり、「短いパスワード」や「数字だけのパスワード」は、理論上どんな組み合わせであっても力任せにすべて試されてしまうのです。

辞書攻撃(ディクショナリアタック)とは?

「じゃあ文字数を長くして iloveyou や baseball2026 にすれば安全?」と思うかもしれませんが、そこで使われるのが「辞書攻撃(Dictionary Attack)」です。

人間がゼロからパスワードを考えると、どうしても以下のような「意味のある言葉」を使いがちです。

  • 辞書に載っている英単語(password, dragon, letmein, sakura など)
  • 名前や地名、好きなチーム名、キーボードの並び順(qwerty, 1qaz2wsx など)
  • 西暦や誕生日の組み合わせ(19900515, 2026 など)

辞書攻撃は、aaaa のような無意味な文字列は飛ばして、「辞書に載っている単語」や「過去に世界中の人がよく設定した人気パスワードランキングのリスト」だけを上から順番に高速で試していく手法です。

文字数が10文字あっても、soccer1234 のように「単語+簡単な数字」だと、総当たりするまでもなく辞書攻撃であっという間に言い当てられてしまいます。

【比較表】パスワードを狙う4大攻撃の違いを整理!

ここで、過去記事で解説した「リスト型攻撃」も含めて、パスワードを狙う代表的な4つの手口を比較してみましょう。

攻撃の名前どんなやり方?狙われる人の特徴
ブルートフォース攻撃(総当たり)aaaa から全パターンを機械的にすべて試す文字数が短いパスワード(4〜7文字など)を使っている人
辞書攻撃英単語や人名、よく使われる文字列の辞書から試す意味のある英単語・誕生日・名前をパスワードにしている人
パスワードスプレー攻撃1つの定番パスワード(Password123等)を、何万人ものIDに対して1回ずつ試す多くの人が使いそうな初期パスワードや単純な文字列にしている人
リスト型攻撃他社から漏洩した「IDとパスワードのペア」を別サイトで試す複数のサイトで同じパスワードを使い回している人

※ちなみに「パスワードスプレー攻撃」は、同じIDで何回も間違えるとアカウントがロックされる仕組みを回避するために、「全員のIDに対して1回だけ 123456 を試す」というズル賢いやり方です。

ブルートフォース攻撃・辞書攻撃を無力化する3つの対策

力任せのコンピュータに勝つには、次の3つの対策を組み合わせるのが最も効果的です。

  • 「長さ(12文字以上)」と「ランダム性」をブラウザに任せる:
    ブルートフォース攻撃にとって最大の天敵は「文字数の多さ」です。1文字増えるごとに組み合わせの数は数十倍に跳ね上がるため、英大小文字・数字・記号を混ぜた12〜16文字以上のランダムな文字列にすれば、スパコンを使っても解読に何千年もかかるようになります。頭で覚える必要はないので、パスワード管理ツールの自動生成機能を使いましょう。
  • 「パスフレーズ(複数の無関係な単語の連結)」を使う:
    どうしても自分で覚えて入力する必要があるマスターパスワードなどは、辞書攻撃を防ぐために Coffee-Train-Blue-78! のように「全く関係ない複数の単語+記号・数字」を繋げて15文字以上にする方法(パスフレーズ)が有効です。
  • 二段階認証(二要素認証)とパスキー(Passkey)を設定する:
    万が一パスワードを当てられても、スマホに届く確認コード(二段階認証)があれば不正ログインを防げます。さらにパスキーに対応しているサイトなら、そもそも人間が覚えるパスワード自体が存在しないため、総当たり攻撃も辞書攻撃も100%通用しません。

まとめ:コンピュータの計算力には「長さ」と「二段階認証」で勝つ!

  • ブルートフォース攻撃は、すべての文字の組み合わせを力任せに試す「総当たり攻撃」。
  • 辞書攻撃は、人間が使いがちな英単語や誕生日などのリストから効率よく試す攻撃。
  • 対策の基本は「12文字以上のランダムなパスワード」+「二段階認証 / パスキー」!

次回(第8回)は、視点を変えて「もしスマホが壊れたり、ランサムウェアに感染したりしても大切な写真やデータを失わないための鉄則」である「バックアップ(3-2-1ルール)」についてわかりやすく解説します!

タイトルとURLをコピーしました