【情報セキュリティ】頻度分析を無効化する!「多表式換字暗号」|情報処理問題1000本ノック
単一換字暗号の「同じ文字はいつでも同じ文字に化ける」という弱点を、複数の変換表をカチカチと切り替えることで克服した歴史的名作、多表式換字暗号を攻略しましょう。
1. 【 問題 】:古典暗号の高度化
【 問題 】 暗号技術の一種である「多表式換字暗号」に関する記述として、最も適切なものはどれでしょうか?
① 平文のアルファベットを一定の文字数だけ一律に後ろにずらすことで暗号化を行う。
② 暗号文に含まれる各文字の出現頻度を調べる「頻度分析」を用いれば、文字数に関わらず一瞬で解読できる。
③ 平文を $n$ 文字のブロックに区切り、そのブロック内の位置に応じて異なる変換規則(複数の換字表)を切り替えて適用することで、同じ文字であっても異なる文字に暗号化されるようにした方式である。
④ 平文の文字の並び順(位置)そのものを一定の規則でシャッフルすることによって暗号化を行う方式である。
2. 正解:
正解: ③ 平文を $n$ 文字のブロックに区切り、そのブロック内の位置に応じて異なる変換規則(複数の換字表)を切り替えて適用することで、同じ文字であっても異なる文字に暗号化されるようにした方式である。
3. 解説:同じ「A」を違う文字に化けさせるマジック
多表式換字暗号(Polyalphabetic Cipher)は、その名の通り「多」くの「表」(文字の対応ルール)をぐるぐると切り替えながら暗号化する仕組みです。代表例として有名なのが「ヴィジュネル暗号(Vigenère cipher)」です。
■ 仕組み:鍵の文字数($n$文字)でループする
・例えば「DOG」(3文字のブロック、すなわち $n=3$)という言葉を鍵に選んだとします。
・平文の1文字目は「D(3つずらす表)」、2文字目は「O(14個ずらす表)」、3文字目は「G(6個ずらす表)」を使い、4文字目はまた「D」に戻る、というように変換ルールを1文字ごとに次々と切り替えます。
■ なぜ「頻度分析」に強いのか?
・平文で「AAAAAA」と「A」が連続していても、暗号化すると「GQXGQX...」のように全く違う文字の羅列になります。
・これにより、単一換字暗号の致命的な弱点だった「言語ごとの文字の出現確率の偏り(指紋)」が完全にシャッフルされて見えなくなるため、単純な頻度分析では手も足も出なくなります。
★ ①:これは単一換字暗号の一種である「シーザー暗号」の説明です。
★ ②:多表式暗号は、頻度分析を「通用しなくさせるため」に開発されたものです(鍵の長さ $n$ が見破られない限り、単純な頻度分析では解読できません)。
★ ④:これは「転置(てんち)暗号」の説明です。
1. 理解のコツ: 「合言葉によってガラリと形を変える暗号」です。前回の単一換字暗号が「A君の口癖はいつでもバレバレ」だったのに対し、多表式暗号は「1文字目はA君の癖、2文字目はB君の癖、3文字目はC君の癖……」と、話す人を文字ごとにチェンジしているようなものです。これでは外から聞いていても、誰の癖(統計データ)を基準に解読すればいいのか分からなくなります。
2. 試験対策の視点: 「平文を$n$文字のブロックに区切る」「文字ごとに変換規則(表)が異なる」「同じ文字が異なる文字に暗号化される」という特徴が並んだら「多表式換字暗号(ヴィジュネル暗号)」が正解です。歴史上の暗号の進化の系譜(シーザー ➡️ 単一換字 ➡️ 多表式換字)の最高到達点として非常に出題価値の高いキーワードです。
4. まとめ
「鍵となる文字数($n$)の周期で複数の変換表を切り替え、文字の統計的特徴を消し去る古典暗号」。これが多表式換字暗号です。この「文字ごとにルールを切り替える」という複雑化のアプローチは、大戦中にドイツ軍が使用した有名な暗号機「エニグマ」や、現代の最新の共通鍵暗号のアルゴリズムへと脈々と受け継がれています。