カエサル暗号(カエサルアンゴウ)とは | 意味や読み方など丁寧でわかりやすい用語解説
カエサル暗号(カエサルアンゴウ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
カエサル暗号 (カエサルアンゴウ)
英語表記
Caesar cipher (シーザーサイファー)
用語解説
カエサル暗号は、古代ローマの軍事指導者ユリウス・カエサルが通信の秘匿に用いたとされる、歴史上最も古く、そして最も単純な暗号方式の一つである。シーザー暗号とも呼ばれるこの方法は、文字を特定の数だけずらして変換する「換字式暗号」に分類される。元のメッセージである平文の各文字を、アルファベット順に一定の文字数だけシフトさせることで暗号文を生成する仕組みを持つ。この「ずらす文字数」が暗号の鍵となる。例えば、鍵を3と設定した場合、平文の「A」は「D」に、「B」は「E」に変換される。アルファベットの末尾に達した場合は、先頭に戻って循環させるため、「X」は「A」に、「Y」は「B」に、「Z」は「C」に変わる。その原理のシンプルさゆえに、現代の高度な暗号技術とは異なり、セキュリティレベルは非常に低いが、暗号という概念の基礎を理解する上で重要な出発点となる古典暗号である。現代の複雑な暗号システムの原理を学ぶ際、しばしばその単純な例として引用される。
カエサル暗号の詳細な動作原理は、以下の通りである。暗号化は、平文中の各アルファベット文字を、あらかじめ共有された「鍵」の数値分だけ、アルファベット順で後ろへシフトさせることで行われる。例えば、鍵が3の場合、アルファベットを数字に変換し(A=0, B=1, ..., Z=25)、各文字の数字に鍵の値を足し、その結果を26で割った余りの数字に対応するアルファベットに戻すという操作になる。この「26で割った余り」という処理が、アルファベットの循環性を実現している。
具体的な暗号化の手順を例示する。平文を「HELLO」、鍵を3とする場合を考える。 まず「H」はアルファベットの8番目(0から数えると7番目)の文字である。これを3つシフトすると、7+3=10番目の文字「K」になる。 次に「E」は5番目(4番目)の文字である。これを3つシフトすると、4+3=7番目の文字「H」になる。 「L」は12番目(11番目)の文字である。これを3つシフトすると、11+3=14番目の文字「O」になる。 もう一つの「L」も同様に「O」になる。 最後に「O」は15番目(14番目)の文字である。これを3つシフトすると、14+3=17番目の文字「R」になる。 こうして、平文「HELLO」は暗号文「KHOOR」に変換される。
復号化は、暗号化の逆の操作を行うことで実現される。つまり、暗号文の各文字を、鍵の数値分だけアルファベット順で前へシフトさせる。これも同様に、アルファベットを数字に変換し、各文字の数字から鍵の値を引き、その結果を26で割った余りの数字に対応するアルファベットに戻す。結果が負になる場合は、26を足して調整することで循環性を保つ。
先ほどの暗号文「KHOOR」と鍵3を用いて復号化を行う。 「K」は11番目(10番目)の文字である。これを3つ前にシフトすると、10-3=7番目の文字「H」になる。 「H」は8番目(7番目)の文字である。これを3つ前にシフトすると、7-3=4番目の文字「E」になる。 「O」は15番目(14番目)の文字である。これを3つ前にシフトすると、14-3=11番目の文字「L」になる。 もう一つの「O」も同様に「L」になる。 「R」は18番目(17番目)の文字である。これを3つ前にシフトすると、17-3=14番目の文字「O」になる。 こうして、暗号文「KHOOR」は元の平文「HELLO」に復元される。
カエサル暗号のセキュリティは、現代の基準から見ると極めて脆弱である。その主な理由は、鍵の候補が非常に少ない点にある。アルファベットが26文字の場合、鍵として考えられるのは1から25までの25通りしかない(鍵が0や26の場合はシフトが行われず、元の文字と全く同じになるため暗号として意味がない)。現代のコンピュータは、この程度の数の鍵であれば一瞬で全て試すことが可能であり、この手法を「総当たり攻撃(ブルートフォースアタック)」と呼ぶ。鍵を特定するのに数秒とかからないため、秘密の通信には全く適さない。
さらに、カエサル暗号は「頻度分析」と呼ばれる古典的な暗号解読手法にも非常に弱い。英語のような自然言語では、特定の文字(例えば「E」や「T」)が他の文字よりも高い頻度で出現する傾向がある。カエサル暗号では、元の文字と暗号化された文字が一対一で固定的に対応しているため、暗号文中で最も頻繁に出現する文字は、平文中で最も頻繁に出現する文字に対応していると推測できる。例えば、暗号文中で最も多く現れる文字が「D」であった場合、英語で最も出現頻度の高い「E」が「D」に暗号化されたと仮定し、その逆シフトから鍵を簡単に特定できてしまう。
現代のITセキュリティにおいて、カエサル暗号が単独で実用的に使われることはない。しかし、暗号の歴史を学ぶ上では重要な位置を占めている。より複雑な暗号システムの基礎的な概念を理解するための出発点として、またプログラミングにおけるアルゴリズムの演習問題として、教育的な目的で用いられることが多い。古典暗号の単純な仕組みを理解することは、現代の高度な暗号技術がどのようにして強固なセキュリティを実現しているかを理解するための第一歩となる。