FE EXAM

パスワードクラック(パスワードを破る攻撃)

何らかの手段でパスワードを解析・推測して破る行為。

DIAGRAM
総当たり
辞書
リスト
🦹攻撃者パスワードを破りたい① 総当たり(ブルートフォース)あらゆる組み合わせを片端から試すaaa → aab → aac → ...→ pa55 → pass → ✓ 一致!② 辞書攻撃よく使われる単語を順に試すpassword → 123456→ qwerty → admin → ...③ パスワードリスト攻撃他で流出したID/PWの一覧を使う流出: user@x.com / Pw!9z→ 別サイトでそのまま試す🔐ログイン画面正しいPWで突破される
解説

📌
パスワードクラックとは

パスワードを「推測・解析」して破る🦹攻撃者試行🔐パスワード

パスワードクラックとは、何らかの手段でパスワード(=本人だけが知っている合言葉)を解析・推測して破る行為のことです。正しい合言葉を持っていない第三者が、不正に他人のアカウントへ侵入するために行います。

身近な例で考えると、ダイヤル式の南京錠を、番号を片端から回して開けようとする泥棒に似ています。0000、0001、0002…と順に試したり、「誕生日かもしれない」と当たりをつけて試したりするのが、まさにパスワードクラックの考え方です。

上の図解では、攻撃者がパスワードを破るための代表的な3つのやり方(総当たり・辞書・リスト)を示しています。どの手法も「正しいパスワードを当てるまで試行を繰り返す」という点は共通しています。

📌
主要手法

パスワードクラックには、試し方の違いによっていくつかの代表的な手法があります。

手法試す内容特徴
総当たり攻撃あらゆる文字の組み合わせ時間はかかるが必ず当たる
辞書攻撃よく使われる単語・既知のPW効率がよく短時間で当たることも
パスワードリスト攻撃他で流出したID/PWの一覧使い回しがあると一発で突破

それぞれの手法を整理すると、次のようになります。
総当たり攻撃(ブルートフォース)aaa → aab → aac... のように考えられる組み合わせを片端からすべて試す。文字数が長いほど組み合わせが爆発的に増え、突破に時間がかかります。
辞書攻撃password123456 のような、人がよく使う単語をまとめた「辞書」を順に試す。安易なパスワードはあっという間に破られます。
パスワードリスト攻撃:別のサイトから流出したID・パスワードの一覧(リスト)を、そのまま別のサイトで試す。同じパスワードを使い回していると一発で突破されます。

図書館で本を探すことに例えると、総当たりは端の棚から1冊ずつ全部めくる方法、辞書は「人気の本リスト」から探す方法、リストは「隣の図書館の貸出履歴」をそのまま使う方法、とイメージすると違いが掴みやすいです。

📌
対策

「破られにくく」「試させない」強いPWにする長く・複雑に使い回さない試させないアカウントロック多要素認証

対策の基本は、「パスワードを破られにくくする」ことと、「攻撃者に何度も試させない」ことの2方向から考えます。

利用者ができる主な対策は次のとおりです。
パスワードを長く複雑にする:文字数を増やし、英大文字・小文字・数字・記号を混ぜると、総当たりに必要な時間が一気に伸びます。
推測されやすい単語を避ける:誕生日・名前・password のような単語は辞書攻撃で真っ先に試されます。
パスワードを使い回さない:サイトごとに違うパスワードにすれば、1つ流出してもリスト攻撃で芋づる式にやられません。

サービス側(システム側)の対策としては、一定回数ログインに失敗したらアカウントを一時ロックする仕組みや、パスワードに加えてもう一つの確認(スマホへのコードなど)を求める多要素認証(=複数の方法で本人確認する仕組み)が有効です。これらは「何度も試させない」「破られても突破させない」ための守りになります。

📌
なぜ長く複雑だと安全なのか

文字種×文字数で組み合わせ数が急増する数字4桁10^4英小6文字26^6英大小8文字52^8混在12文字94^12文字の種類と桁数が増えるほど棒が高くなる(試行数が増える)

なぜ長く複雑なパスワードが安全なのかというと、攻撃者が全パターンを試す回数が天文学的な数になるからです。これを「組み合わせ数の爆発」と呼びます。

文字の種類と桁数から「考えられる組み合わせの総数」を計算できます。
数字4桁10^4 = 10,000通り(0000〜9999)
英小文字6文字26^6 = 約3億通り
英大小文字8文字52^8 = 約53兆通り
英大小+数字+記号12文字94^12 = 約47,500兆兆通り

1秒間に10億回試せる高性能なコンピュータでも、94種類×12文字のパスワードをすべて試し終えるには現実には何百万年もかかる計算になります。つまり「長さと複雑さ」は攻撃に必要な時間を直接増やす手段であり、桁数を1つ増やすだけで試行回数が「文字の種類」分だけ掛け算で膨らむのです。

身近な例で考えると、ダイヤル錠が4桁(0〜9)なら1万回試せば必ず開きますが、桁を10桁にすると100億回必要になります。同じ理屈でパスワードの長さが安全につながっています。

📌
パスワードはどう保存されているのか

passwordハッシュ化5f4dcc3b5aa7...ハッシュ値(元には戻せない)サーバはハッシュ値だけを保存平文のパスワードを保存しない

多くのサービスでは、パスワードをそのままの文字列(=平文)で保存していません。ハッシュ化(=元に戻せない一方向の計算で文字列を変換すること)という処理を行い、変換後の値だけを保存しています。

なぜハッシュ化するのかというと、サーバに侵入されてもパスワードそのものが漏れないようにするためです。同じ入力に対しては必ず同じハッシュ値が生成されるため、ログイン時には「入力されたパスワードをハッシュ化した値」と「保存されているハッシュ値」を比較するだけで確認できます。

ところが攻撃者はハッシュ値が手に入ると、大量の候補パスワードを同じようにハッシュ化して比較する方法でクラックしようとします。これをオフラインクラックと呼び、次のような手法があります。
辞書・総当たりのオフライン版:候補をハッシュ化して照合を繰り返す(ログイン試行制限が無意味になる)
レインボーテーブル攻撃:あらかじめ大量のパスワードとそのハッシュ値を対応させた表(=レインボーテーブル)を使って素早く照合する

これを防ぐためにサービス側はソルト(=ハッシュ化の前にパスワードに追加するランダムな値)を加えてハッシュを計算します。こうすると同じパスワードでも人によって異なるハッシュ値になり、レインボーテーブルが使えなくなります。パスワードを長く複雑にすることと、サービス側のソルト付きハッシュ化は、互いを補う二重の守りになります。

練習問題

🎯
基本情報技術者 練習問題

Q1.パスワードクラックの説明として最も適切なものはどれか。
A.何らかの手段でパスワードを解析・推測して破る行為
B.通信内容を暗号化して第三者に読めなくする技術
C.正規利用者にパスワードの定期変更を促す仕組み
D.パスワードを安全に保管するための専用ソフト
Q2.考えられるすべての文字の組み合わせを片端から試してパスワードを破る手法はどれか。
A.ブルートフォース攻撃(総当たり攻撃)
B.辞書攻撃
C.パスワードリスト攻撃
D.ソーシャルエンジニアリング
Q3.パスワードクラックへの対策として適切でないものはどれか。
A.誕生日や名前など推測されやすい単語をそのまま使う
B.文字数を長くし、英大小文字・数字・記号を混ぜる
C.一定回数失敗したらアカウントをロックする
D.パスワードに加えてもう一つの認証要素を求める(多要素認証)

関連コンテンツ