問80
頻出度★★★
パスワードの解読方法の一つとして, 全ての文字の組合せを試みる総当たり攻撃がある。“A”から“Z”の26種類の文字を使用できるパスワードにおいて, 文字数を4文字から6文字に増やすと, 総当たり攻撃でパスワードを解読するための最大の試行回数は何倍になるか。
この問題の解説と、これまでの解答の記録です。
パスワードの解読方法の一つとして, 全ての文字の組合せを試みる総当たり攻撃がある。“A”から“Z”の26種類の文字を使用できるパスワードにおいて, 文字数を4文字から6文字に増やすと, 総当たり攻撃でパスワードを解読するための最大の試行回数は何倍になるか。
「2」は文字数の増分(6−4=2)をそのまま倍率とみなした誤り。組合せ総数は文字数に対して指数的に増えるので、桁が2つ増えても2倍にはならず、26 の 2 乗=676 倍になる。
「24」は根拠のない値で、26 の 2 乗=676 と一致しない。文字種数の差(例えば誤って 26−2 と考える)や階乗など別の計算と取り違えたと思われるが、正しい倍率は 676 倍である。
「52」は 26×2、すなわち「増えた文字数(2文字)ぶんだけ文字種数を足し算・単純に2倍する」といった誤解による値。実際は掛け算(26×26)で効いてくるので 26 の 2 乗=676 倍が正しい。
正解 総当たり攻撃(ブルートフォース攻撃)は、使用可能な文字の全組合せを片端から試す方法なので、最大試行回数は「文字種数の(文字数)乗」で表せます。文字種は「A」〜「Z」の26種類。4文字のときは 26 の 4 乗 とおり、6文字のときは 26 の 6 乗 とおりです。増加倍率は 26 の 6 乗 ÷ 26 の 4 乗 = 26 の(6−4)乗 = 26 の 2 乗 = 676(倍)。よって「エ」が正解です。文字数が 2 増えると、増えた桁数の分だけ文字種数を掛けるので 26×26=676 倍になる、と考えても同じです。