【基本/応用情報技術者試験】不正アクセス手法とは?ブルートフォース攻撃やパスワードリスト攻撃を徹底解説

サムネイル 基本/応用情報技術者試験

近年、サイバー攻撃の手法が高度化し、個人情報や企業の機密情報を狙った不正アクセスが増加しています。

「ブルートフォース攻撃って何?」「4桁のPINと8桁のパスワードって、実際どれくらい安全性が違うの?」と疑問に思ったことはありませんか?

特に、基本情報技術者試験や応用情報技術者試験では、これらの攻撃手法に関する知識が問われることがあります。また、IT関係者にとっても、セキュリティ対策の理解は必須です。

この記事では、攻撃手法の解説に加えて、自分のPC上だけで完結する安全な実験として、パスワードの桁数を変えると総当たり攻撃にかかる時間がどう変わるかを実際に計測します。読み終えると、「パスワードは長くしましょう」がなぜ本当に効果的なのか、数字で説明できるようになると思いますので、ぜひ最後まで読んでいただけると嬉しいです。

不正アクセスとは?

不正アクセスとは、許可されていない第三者が他人のアカウントやシステムに侵入する行為を指します。

基本情報技術者試験や応用情報技術者試験では、情報セキュリティ分野の重要なトピックの一つとして出題されることが多いため、しっかりと理解しておく必要があります。

一般的な不正アクセスの目的として、以下のようなものがあります。

  • 個人情報の窃取(例:クレジットカード情報、住所、電話番号など)
  • 企業機密の漏洩(例:顧客データ、営業戦略、研究データなど)
  • 不正な操作の実行(例:アカウントの乗っ取り、システム破壊など)

このような攻撃の手口の一つとして、「ブルートフォース攻撃」や「パスワードリスト攻撃」があります。

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

ブルートフォース攻撃の画像

仕組み

ブルートフォース攻撃(Brute Force Attack)とは、パスワードを総当たりで試す攻撃手法です。

攻撃者は、考えられるすべての組み合わせを順番に試し、正しいパスワードを見つけ出します。

例えば、4桁の数字のパスワードなら、0000から9999まで、最大10,000通りを試すことになります。

試行例:
0000 → ログイン失敗
0001 → ログイン失敗
0002 → ログイン失敗
...
1234 → ログイン成功!(パスワード発見)

現代では、自動化ツールを使うことで、1秒間に数千回〜数万回の試行が可能になっています。

【実測】桁数を変えると総当たりの時間はどう変わるか

「短いパスワードは危険」とはよく言われますが、実際どれくらい危険なのか数字で見たことがある人は少ないと思います。そこで、ネットワークに繋がず、自分のPC内だけで完結する実験として、4桁PIN(0000〜9999)を実際に総当たりし、そこで測った実測の試行速度から、桁数や文字種を増やした場合の所要時間を計算してみました。

▼bruteforce_demo.cpp(4桁PINの総当たり部分)

const std::string secretPin = "1837"; // 自分で決めた4桁PIN(このプログラム内だけの秘密)
const size_t targetHash = HashOf(secretPin);

auto t0 = std::chrono::steady_clock::now();
long long tries = 0;
std::string found;
for (int i = 0; i <= 9999 && found.empty(); i++) {
    char buf[5];
    snprintf(buf, sizeof(buf), "%04d", i);
    tries++;
    if (HashOf(buf) == targetHash) found = buf;
}
auto t1 = std::chrono::steady_clock::now();
double sec4 = std::chrono::duration<double>(t1 - t0).count();

ここで測った「1秒あたりの試行回数」を使って、桁数や文字種を増やしたときの総当たり時間を計算式(所要時間=組み合わせの総数÷実測速度)で見積もります。実際に手元のPCで実行した結果がこちらです。

[4桁PINの総当たり]
  試行回数: 1838 回
  発見: 1837
  所要時間: 0.000237 秒
  実測速度: 約 7758548 回/秒

[実測速度から見積もる、パスワード空間ごとの総当たり時間]
  4桁の数字 (10^4)     : 総当たり所要時間 約 0.00129 秒
  6桁の数字 (10^6)     : 総当たり所要時間 約 0.129 秒
  6文字の英数字 (62^6) : 総当たり所要時間 約 2.03 時間
  8文字の英数字 (62^8) : 総当たり所要時間 約 326 日
  8文字の英数字+記号 (94^8) : 総当たり所要時間 約 24.9 年
  12文字の英数字+記号 (94^12) : 総当たり所要時間 約 1.95e+09 年

この実験機は特別に高性能なマシンではありません。それでも4桁PINは0.00129秒、つまり事実上瞬時に見つかります。一方、英数字+記号の12文字まで伸ばすと、同じ実測速度で計算しても約19億年という、宇宙の年齢に匹敵する桁の数字になりました。

ここで重要なのは、桁数や文字種を1つ増やすごとに、安全性は足し算ではなく掛け算で増えていくということです。6桁の数字(10^6通り)と6文字の英数字(62^6通り)を比べただけで、0.129秒と2時間という差になって表れています。「桁数を1つ増やす」「数字だけでなく記号も使う」がなぜ効果的とされるのか、この実測値を見ると納得できると思います。

【試験ポイント】パスワード長と解読時間の関係は、基本情報技術者試験でも出題されます。上の実測のとおり、「桁数が増えるほど指数的に時間がかかる」という関係性を押さえておきましょう。

対策

  • 長く複雑なパスワードを設定する(12文字以上推奨)
  • 2要素認証(2FA)を有効にする
  • 一定回数ログイン失敗でアカウントをロックする
  • ログイン試行回数に制限をかける(レートリミット)

パスワードリスト攻撃とは?

パスワードリスト攻撃の画像

仕組み

パスワードリスト攻撃(Credential Stuffing)とは、事前に流出したパスワードリストを使い、他のサービスにログインを試みる攻撃手法です。

具体的には、以下のような流れで攻撃が行われます。

攻撃の流れ:
1. あるサービスAから流出したID/パスワードリストを入手
   例:user@example.com / password123

2. そのリストを使って別のサービスB(銀行、ECサイトなど)にログインを試みる

3. ユーザーが同じパスワードを使い回していれば、ログイン成功

多くの人が複数のサービスで同じパスワードを使い回しているため、この手法は非常に効果的です。ブルートフォース攻撃が「全探索で必ず見つける」攻撃なのに対し、パスワードリスト攻撃は探索すらせず、使い回しという人間側の習慣を突く点が本質的に異なります。

特徴

  • 過去に流出したパスワードが使われる
  • 複数のサイトで同じパスワードを使い回していると危険
  • 比較的短時間で突破可能
  • ブルートフォース攻撃と違い、正規のログイン試行に見えるため検知が難しい

【試験ポイント】応用情報技術者試験では、ブルートフォース攻撃とパスワードリスト攻撃の違いが問われることがあります。上の実測どおりブルートフォースは「桁数」で防御できますが、パスワードリスト攻撃は桁数を増やしても使い回しをやめない限り無力という違いを押さえておきましょう。

対策

  • 異なるサービスごとに異なるパスワードを使用する
  • パスワード管理ツールを活用する(例:1Password, LastPass, Bitwarden)
  • 定期的にパスワードを変更する
  • 2要素認証(2FA)を必ず有効にする

よくある失敗例と対処法

初心者がハマりやすいセキュリティのポイントを3つ紹介します。

失敗例1:「覚えやすいパスワード」を優先してしまう

症状:「password123」「tanaka2024」など、覚えやすいが推測されやすいパスワードを設定

原因:利便性を優先し、セキュリティを軽視している

解決策:

  • パスワード管理ツールを使って、ランダムで強固なパスワードを自動生成
  • パスワードは12文字以上、英数字+記号の組み合わせにする
  • 辞書に載っている単語や、個人情報(誕生日、名前)を避ける
NG例:
password123 ← 推測されやすい
tanaka1990 ← 個人情報から推測可能

OK例:
K$9mP#vL2@xQ ← ランダムで複雑

失敗例2:すべてのサービスで同じパスワードを使い回す

症状:1つのサービスから流出すると、すべてのアカウントが危険にさらされる

原因:「覚えられないから」と同じパスワードを使い回している

解決策:

  • 各サービスで異なるパスワードを設定する
  • パスワード管理ツール(1Password、LastPass、Bitwardenなど)を活用
  • 特に重要なサービス(銀行、メールなど)は必ず別のパスワードにする

失敗例3:2要素認証を「面倒だから」と有効にしない

症状:パスワードが漏れた瞬間にアカウントが乗っ取られる

原因:「自分は大丈夫」という根拠のない自信

解決策:

  • 2要素認証(2FA)を必ず有効にする
  • 認証アプリ(Google Authenticator、Microsoft Authenticatorなど)を使う
  • SMS認証よりも認証アプリの方が安全

2要素認証を有効にすれば、たとえパスワードが漏れても、攻撃者は認証コードがないとログインできません

その他の不正アクセス手法

フィッシング攻撃

メールや偽サイトを利用し、ユーザー自身にパスワードを入力させる手法です。

最近では、SMSやSNSを利用した「スミッシング」も増加しています。

対策:

  • URLを必ず確認する(httpsか、ドメイン名は正しいか)
  • 不審なメールのリンクはクリックしない
  • 公式アプリから直接アクセスする

キーロガー攻撃

キーボード入力を記録するマルウェアを用いた攻撃です。

感染すると、パスワードやクレジットカード情報が盗まれます。

対策:

  • セキュリティソフトを導入し、常に最新の状態に保つ
  • 不審なファイルやリンクを開かない
  • OSやソフトウェアを最新版にアップデートする

基本情報・応用情報技術者試験のポイント

試験でよく問われるポイントをまとめます。

基本情報技術者試験レベル

  • ブルートフォース攻撃パスワードリスト攻撃の違い
  • パスワードの強度と解読時間の関係
  • 2要素認証の仕組み
  • フィッシング攻撃の手口

応用情報技術者試験レベル

  • 各攻撃手法の具体的な対策方法
  • レートリミットアカウントロックの実装
  • CAPTCHAの役割と効果
  • セキュリティインシデント発生時の対応手順
  • パスワードのハッシュ化(SHA-256など)

まとめ

不正アクセス手法と対策についてまとめます。

  • ブルートフォース攻撃 → 総当たりでパスワードを試す。実測では4桁PINは0.001秒、12桁の英数字+記号なら約19億年
  • パスワードリスト攻撃 → 流出したパスワードを悪用。桁数を増やしても防げず、使い回しをやめるしかない
  • その他の攻撃 → フィッシング・キーロガーなど、多様な手口に注意
  • 2要素認証は必須 → パスワードだけでは不十分
  • パスワード管理ツールを活用して、各サービスで異なる強固なパスワードを使う

「パスワードは長くしましょう」という言葉は聞き飽きていても、実際に自分の手元で総当たりの速度を測って計算してみると、桁数を1つ増やすことの重みが数字として実感できます。基本情報技術者試験や応用情報技術者試験では、情報セキュリティ分野の理解が重要になりますので、この実測値とあわせて押さえておいてください。

ここまで読んでくださり、ありがとうございました。

この記事が皆様の学習に役立てば幸いです。

コメント