シーザー暗号
[Wikipedia|▼Menu]
シーザー暗号では、決まった文字数分のアルファベットをシフトさせて暗号化を行う。図の例では3文字分左にシフトさせて平文「E」を暗号文「B」に置換する。

シーザー暗号(しーざーあんごう、英語: Caesar cipher)は、暗号理論上、もっともシンプルで、広く知られた暗号のひとつである[1]。カエサル式暗号[2]、シフト暗号[3]とも呼ばれる。
概要

シーザー暗号は単一換字式暗号の一種であり、平文の各文字を辞書順で3文字分シフトして(ずらして)暗号文とする暗号である[4]。古代ローマの軍事的指導者ガイウス・ユリウス・カエサル(英語読みでシーザー)が使用したことから、この名称がついた[3]

文字のシフト数は固定であるが、3に限る必要はない。たとえば左に3文字分シフトさせる場合、「D」は「A」に置き換わり、同様に「E」は「B」に置換される。

シーザー暗号はヴィジュネル暗号などの部品として使用されることがあるほか、現代でもシフト数を13にした方式としてROT13が使用されることがある[5]。シーザー暗号は他の単一換字式暗号と同様、容易に解読されるので、今日においては有効ではない[1]

きわめて単純な暗号であるが、現代の暗号においても重要な、規則(アルゴリズム)および鍵という2つの要素が既に含まれている。
規則
特定の文字を、それよりも辞書順に特定の数だけ後ろ(または前)にある文字と置き換える。

辞書順にずらす文字数。カエサルが実際に用いたシーザー暗号の場合、鍵は3である。
歴史シーザー暗号はガイウス・ユリウス・カエサルから名づけられた。彼は左に3つシフトさせたアルファベットを用いていた。

スエトニウスによれば、カエサルは秘密を必要とする場合、各文字をシフトして暗号を作成したといわれた。この手法を用いたのはカエサルが初めて戦の時に使用したと記録されているが、他の換字式暗号はより古い時期から使用されていたことが知られている[6]。.mw-parser-output .templatequote{overflow:hidden;margin:1em 0;padding:0 40px}.mw-parser-output .templatequote .templatequotecite{line-height:1.5em;text-align:left;padding-left:1.6em;margin-top:0}彼(カエサル)は、何か秘密にしたいことがあれば、暗号を用いてそれを記した。その暗号とは、単語が意味をなさないようにするため、アルファベットの順番を変えることによって作られた。それを解読し、意味を知りたいのならば、AをDにするように、アルファベットの順番で4番目に置き換える必要がある。—スエトニウス、『皇帝伝』(英語版) 1章「ユリウス・カエサル」56

カエサルの甥である アウグストゥスもまた同様に暗号を使っていたが、彼の使用していた暗号化は右に1つシフトするものであり、またアルファベットの始めにローテーションしないものであった。彼(アウグストゥス)が暗号を記す際は、AをB、BをC、というように隣の文字を用いた。Xを記す際はAAを使った[注釈 1]。—スエトニウス、『皇帝伝』(英語版) 2章「アウグストゥス」88

カエサルはより複雑な暗号を使用していた可能性があり[7]アウルス・ゲッリウスは、カエサルの暗号についての、現在は失われた論文について言及している。カエサルの書簡の文章内の文字に隠された意味については、文法家プロブスによって書かれた素晴らしい論文が存在する。—アウルス・ゲッリウス、『アッティカの夜』17.9.1?5

シーザー暗号が使用されていた当時、どの程度効果的であったかは不明である。しかし、少なからず合理的な秘匿方法ではあっただろう。なぜなら、カエサルの敵対者の多くは文盲であったであろうし、そうでなかったとしてもそれは未知の言語で記されていたであろうからだ[8]。この単純な換字式暗号に対する解読方法について、使用当時の記録はない。現存する中でもっとも古い記録は、9世紀のアラブ世界における、キンディによる頻度分析の発見である[9]

ユダヤ教では、メズーザーの裏に神の名(英語版)を記す際に、1つシフトしたシーザー暗号を用いる。これは、メズーザーを使っていなかった時代から続けられていると思われる。暗号化された名前は宗教的に意味深い「神の名」を示し、それはオーソドックスなユダヤ教において、悪の力を退けるものとされる[10]

19世紀には、新聞の個人広告欄がシンプルな暗号によるメッセージのやりとりにしばしば使われた。デビッド・カーン(英語版)は、タイムズ紙上で恋人同士が行った、シーザー暗号を使った秘密のやりとりについて言及している[11]。また、1915年という比較的近年であっても、シーザー暗号は使われていた。当時のロシア陸軍は、兵士が習得するのに難しすぎるために、より複雑な暗号からシーザー暗号へと変更した。そのため、ドイツやオーストリアの暗号解読者は、暗号文をたやすく復号することができた[12]

デコーダーリング(英語版)のように、2枚の回転盤を組み合わせる事で、シーザー暗号の暗号化や復号を行うことができる。今日では子供向けの玩具などに見ることができる。

ネットニュースなどでは、一見しただけで読めてほしくない、しかし読もうと思えば誰でも読める文章(パズルの答えなど)を投稿するのにシーザー暗号が使われることがあり、この場合、鍵は伝統的に13にし、ROT13とも呼ばれる[5][13]。シーザー暗号を解読するためのコマンド(caesar(6))が標準装備されているUNIXシステムもある[14][15]

ヴィジュネル暗号は、文章の文字ひとつひとつに異なったシフト数のシーザー暗号を用いている。シフト数は暗号鍵の単語を繰り返して決められる。暗号鍵がメッセージと同じ長さのランダムな文字列で、誰にも知られることなく、二度と使われることがないのであれば、それはワンタイムパッドとなり解読不能となる。だが、これらの条件を満たすことは実際には非常に難しい。暗号鍵がメッセージよりも短い場合[注釈 2]、頻度分析を統計的に拡張することで暗号文に周期的なパターンが検出される[16]
作成手順と使用例

暗号化には二つのアルファベット列を使用する。暗号化のためのアルファベットは、通常のアルファベットを左、または右にいくつか循環シフト(ローテーション)させる。下図は、左に3文字の循環シフトをした場合のアルファベット列である。これは、右に23文字の循環シフトをした場合と同じである。シフトの方向およびシフトさせた個数はこの暗号のとして使用される。通常のアルファベット: ABCDEFGHIJKLMNOPQRSTUVWXYZ暗号化アルファベット: XYZABCDEFGHIJKLMNOPQRSTUVW

暗号化する場合は、「通常のアルファベット」列から平文の文字を探し、対応する「暗号化アルファベット」列の文字を書き出す。平文: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG暗号文: QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD

復号したい場合は逆をおこなえばよい。すなわち、右に3つ循環シフトさせる。

この暗号化の手順は合同算術を使用して表現することもできる。その場合、A = 0, B = 1, ..., Z = 25 のように、文字を数字に変換しておく[17]。文字 x を n 個のシフトで暗号化する場合を数学的に表現すると、下記となる[18]。 E n ( x ) = ( x + n ) mod 26 {\displaystyle E_{n}(x)=(x+n)\mod {26}}

同様に、復号は下記となる。 D n ( x ) = ( x − n ) mod 26 {\displaystyle D_{n}(x)=(x-n)\mod {26}}

プログラミングで実装する場合、使用する言語によって剰余演算の定義が異なる場合がある。上記の場合、結果は0以上25以下の範囲となるが、そうでない場合、26を加算する、もしくは減算する必要がある。

シーザー暗号の場合、文字の交換方式はメッセージ全体を通して同一である。このような暗号を単一換字式暗号と呼ぶ。対して、文字ごとに交換方式を変えるものを多表換字式暗号と呼ぶ。
シーザー暗号の解読

復号シフト取得される平文
0exxegoexsrgi
1dwwdfndwrqfh
2cvvcemcvqpeg
3buubdlbupodf
4attackatonce
5zsszbjzsnmbd
6yrryaiyrmlac
...
23haahjrhavujl
24gzzgiqgzutik
25fyyfhpfytshj

シーザー暗号は暗号文単独攻撃によって簡単に解読することができる。以下の2つのシチュエーションを想定する。
攻撃者は何らかの単一換字式暗号が使われていることを知っている(もしくは推測している)が、それがシーザー暗号かどうかまでは分からない。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:34 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef