パスワードの解読方法の一つとして, 全ての文字の組合せを試みる総当たり攻撃がある。“0” から “9” の10種類の文字を使用できるパスワードにおいて, 桁数を4桁から6桁に増やすと, 総当たり攻撃でパスワードを解読するための最大の試行回数は何倍になるか。
平成26年度 春期 ITパスポート試験 問51
この問題の解説と、これまでの解答の記録です。
問 51
不正解ア
1.5 は桁数そのものの比 6 ÷ 4 = 1.5 を答えにしてしまった値である。組合せの総数は桁数に比例するのではなく、桁数を指数として 10の n 乗 で増えるので、桁数の比をそのまま試行回数の倍率とすることはできない。
不正解イ
20 は、増えた桁数2桁と文字種10種類を 10 × 2 = 20 のように掛け算・足し算で処理してしまった値である。1桁増えるごとに総数は10倍になるので、2桁増えたときは 10 × 2 = 20 倍ではなく 10 × 10 = 100 倍になる。
- ウ
正解 正解はウ「100」。総当たり攻撃 (ブルートフォース攻撃) は、考えられるパスワードの組合せを片端から試す解読方法なので、最大の試行回数は「あり得るパスワードの総数」と等しくなる。1桁につき使える文字が10種類 (「0」から「9」) で、各桁は独立に選べるから、n桁のパスワードの総数は 10 の n 乗 通りである。したがって4桁のときは 10の4乗 = 10,000 通り、6桁のときは 10の6乗 = 1,000,000 通り。倍率は 1,000,000 ÷ 10,000 = 100 倍となる。指数法則を使えば桁数を4から6へ2桁増やすことは 10の(6−4)乗 = 10の2乗 = 100 倍を意味し、総数を計算せずに「増えた桁数の分だけ文字種を掛ける」だけで即答できる。パスワードを1桁伸ばすごとに解読の手間が文字種の数だけ (この場合は10倍ずつ) 跳ね上がる、という乗算的な増え方がこの問題の要点である。
不正解エ
1,024 は 2の10乗であり、文字種を10種類ではなく2種類 (0と1の2進数) と取り違えるなど、本問の条件とは無関係な計算から出てくる値である。実際、文字種が2種類でも4桁から6桁への倍率は 2の2乗 = 4 倍にしかならず、1,024 という数はこの設問のどの条件からも導けない。
- 総当たり攻撃 (ブルートフォース攻撃) の最大試行回数 = パスワードの全組合せ数。使用できる文字が m 種類で n 桁なら、組合せ数は m の n 乗 通りである。
- 桁数が n1 から n2 に増えたときの倍率は m の (n2 − n1) 乗 で求められる。本問では 10 の (6 − 4) 乗 = 100 倍。桁数を1つ増やすだけで解読の手間が文字種の数だけ倍増するため、パスワードは桁数を長くするほど強度が飛躍的に高まる。