シーザー暗号:仕組み、歴史、ROT13と安全性
シーザー暗号は、文字を一定数ずらす単純な換字暗号である。古代ローマに由来し、ROT13などの変種がある。暗号化の基礎教育やパズルに用いられるが、暗号としては脆弱である。
シーザー暗号は、テキストを暗号化する手法の中でも最も古く、最も単純なものの一つである。基本形では、平文の各文字をアルファベット上で一定の数だけ前方または後方へ移動させる。これは暗号学における基礎的な例であり、より広い換字暗号の技法群に属する。この方式は一般にユリウス・カエサルと結び付けられており、彼は私的な通信で文字のずらしを用いたと伝えられている。
画像ギャラリー
4 画像仕組み
操作は直接的で機械的である。ずらす数(鍵)を選び、各アルファベット文字をその数だけ離れた文字に置き換える。アルファベット以外の文字は、しばしば変更されないまま残される。大文字は大文字へ、小文字は小文字へ対応させるなど、大小文字を保持する場合もある。
- ずらす値を選ぶ(例:3)。
- 各文字について、アルファベット上でその数だけ前方へ移動する(Zの次をAとして循環させる)。
- 変換後の文字を集めて暗号文にする。
例(3文字分のずらし):A → D、B → E、C → F。このずらしでは、平文「HELLO」は「KHOOR」になる。
歴史と変種
シーザー暗号はローマの軍事・政治上の慣行と関連付けられているが、複雑な暗号方式より前から存在し、後には教室で扱われる多くの例の着想となった。よく知られた変種にROT13があり、これはアルファベットを13文字分回転させる方式である。ROT13は2回適用すると元の文に戻るため、インターネット掲示板では簡易的な難読化に利用された。
安全性、分析と用途
安全性の観点から、シーザー暗号は本格的な保護には適さない。ラテンアルファベットでは自明でないずらし方は25通りしかないため、攻撃者は全ての可能性を短時間で試すことができる(総当たり攻撃)。暗号文内の文字の出現頻度を、想定される言語の頻度と比較する頻度分析によっても、容易に解読される。今日では、秘匿通信ではなく、主に教育、歴史的な説明、パズル、プログラミング演習の簡単な例、軽度の難読化に用いられる。
その単純さゆえに、今なお有用な教材でもある。換字と転置の違いを示し、鍵という考え方を導入し、暗号解読の基礎を実践的に学ぶ方法を提供する。実用的な暗号化が必要な場合には、代わりに現代の共通鍵および公開鍵アルゴリズムが用いられる。
関連項目
著者
AlegsaOnline.com シーザー暗号:仕組み、歴史、ROT13と安全性 Leandro Alegsa
URL: https://ja.alegsaonline.com/art/15947
出典
- learncryptography.com : "Learn Cryptography - Caesar Cipher"
- xarg.org : "Cracking a Caesar cipher • Open Source is Everything"