シーザー暗号のソースを表示
←
シーザー暗号
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[File:Caesar cipher left shift of 3.svg|320px|thumb|シーザー暗号では、決まった文字数分のアルファベットをシフトさせて暗号化を行う。図の例では3文字分左にシフトさせて平文「E」を暗号文「B」に置換する。]] '''シーザー暗号'''(しーざーあんごう、{{lang-en|Caesar cipher}})は、[[暗号理論]]上、もっともシンプルで、広く知られた[[暗号]]のひとつである<ref name="britannica">{{cite web |title = substitution cipher \| cryptology \| Britannica.com |url = http://www.britannica.com/topic/substitution-cipher |publisher = [http://www.britannica.com/ Britannica.com] |author = Gustavus J. Simmons |accessdate = 2015-12-17 }}</ref>。'''カエサル式暗号'''<ref name="kanemitu">{{cite journal|和書 |author = 金光滋|author2 = 熊谷博竹|author3 = 内販繁 |date = 2011-02-23 |title = 暗号-歴史的観点から- |journal = 鹿児島工業高等専門学校研究報告.RESEARCH REPORTS OF KAGOSHIMA NATIONAL COLLEGE OF TECHNOLOGY |volume = 45 |page = 53 |publisher = 鹿児島工業高等専門学校 |issn = 03899314 |ncid = AN00040002 |url = http://karn.lib.kagoshima-u.ac.jp/bitstream/123456789/195/1/AN00040002_v45_p51-56.pdf |format = pdf |accessdate = 2015-12-17 }}</ref>、'''シフト暗号'''<ref name="symantec">{{Cite web|和書 |title = White Paper : 簡単にわかる暗号の歴史 |url = https://www.digicert.co.jp/welcome/pdf/wp_encryption_history.pdf |publisher = [https://www.digicert.com/jp/ デジサート・ジャパン合同会社] |accessdate = 2021-05-16 }}</ref>とも呼ばれる。 == 概要 == シーザー暗号は[[単一換字式暗号]]の一種であり、[[平文]]の各文字を辞書順で3文字分シフトして(ずらして)暗号文とする暗号である<ref name="imai">{{cite journal|和書 |author = 今井秀樹 |date = 2002-06-22 |title = 暗号技術の動向 |journal = 情報処理学会研究報告電子化知的財産・社会基盤(EIP) |volume = 2002 |issue = 57(2002-EIP-016) |pages = 1-8 |publisher = 情報処理学会 |issn = 09196072 |ncid = AA11238429 |naid = 110002675760 |url = http://karn.lib.kagoshima-u.ac.jp/bitstream/123456789/195/1/AN00040002_v45_p51-56.pdf |format = pdf |accessdate = 2015-12-17 }}</ref>。古代ローマの軍事的指導者[[ガイウス・ユリウス・カエサル]](英語読みでシーザー)が使用したことから、この名称がついた<ref name="symantec" />。 文字のシフト数は固定であるが、3に限る必要はない。たとえば左に3文字分シフトさせる場合、「D」は「A」に置き換わり、同様に「E」は「B」に置換される。 シーザー暗号は[[ヴィジュネル暗号]]などの部品として使用されることがあるほか、現代でもシフト数を13にした方式として[[ROT13]]が使用されることがある<ref name="schneier">{{Cite book |last = Schneier |first = Bruce |title = Applied Cryptography |edition = Second |year = 1996 |publisher = John Wiley & Sons |isbn = 0-471-11709-9 |pages = 11 }}</ref>。シーザー暗号は他の[[単一換字式暗号]]と同様、容易に解読されるので、今日においては有効ではない<ref name="britannica" />。 きわめて単純な暗号であるが、現代の暗号においても重要な、規則([[アルゴリズム]])および鍵という2つの要素が既に含まれている。 ;規則 :特定の文字を、それよりも辞書順に特定の数だけ後ろ(または前)にある文字と置き換える。 ;鍵 :辞書順にずらす文字数。カエサルが実際に用いたシーザー暗号の場合、鍵は3である。 == 歴史 == [[Image:Gaius Julius Caesar (100-44 BC).JPG|thumbnail|シーザー暗号は[[ガイウス・ユリウス・カエサル]]から名づけられた。彼は左に3つシフトさせたアルファベットを用いていた。]] [[ガイウス・スエトニウス・トランクィッルス|スエトニウス]]によれば、カエサルは秘密を必要とする場合、各文字をシフトして暗号を作成したといわれた。この手法を用いたのはカエサルが初めて戦の時に使用したと記録されているが、他の[[換字式暗号]]はより古い時期から使用されていたことが知られている<ref name="Brief Hist">{{cite web |url=http://www.cypher.com.au/crypto_history.htm |title=A Brief History of Cryptography |publisher=Cypher Research Laboratories |date=24 January 2006 |accessdate=2016-01-04}}</ref>。 {{Quote|彼(カエサル)は、何か秘密にしたいことがあれば、暗号を用いてそれを記した。その暗号とは、単語が意味をなさないようにするため、アルファベットの順番を変えることによって作られた。それを解読し、意味を知りたいのならば、AをDにするように、アルファベットの順番で4番目に置き換える必要がある。|[[ガイウス・スエトニウス・トランクィッルス|スエトニウス]]|''{{仮リンク|『皇帝伝』|en|The Twelve Caesars}}'' 1章「ユリウス・カエサル」56}} カエサルの甥である [[アウグストゥス]]もまた同様に暗号を使っていたが、彼の使用していた暗号化は右に1つシフトするものであり、またアルファベットの始めにローテーションしないものであった。 {{Quote|彼(アウグストゥス)が暗号を記す際は、AをB、BをC、というように隣の文字を用いた。Xを記す際はAAを使った<ref group="注釈">[[古典ラテン語]]において、アルファベットの最後の文字はXであった。</ref>。|[[ガイウス・スエトニウス・トランクィッルス|スエトニウス]]|''{{仮リンク|『皇帝伝』|en|The Twelve Caesars}}'' 2章「アウグストゥス」88}} カエサルはより複雑な暗号を使用していた可能性があり<ref>{{cite journal |last=Reinke |first=Edgar C. |date=December 1962 |title=Classical Cryptography |journal=The Classical Journal |volume=58 |issue=3 |page=114 }}</ref>、 [[アウルス・ゲッリウス]]は、カエサルの暗号についての、現在は失われた論文について言及している。 {{Quote|カエサルの書簡の文章内の文字に隠された意味については、文法家プロブスによって書かれた素晴らしい論文が存在する。|[[アウルス・ゲッリウス]]|''『アッティカの夜』17.9.1–5''}} シーザー暗号が使用されていた当時、どの程度効果的であったかは不明である。しかし、少なからず合理的な秘匿方法ではあっただろう。なぜなら、カエサルの敵対者の多くは文盲であったであろうし、そうでなかったとしてもそれは未知の言語で記されていたであろうからだ<ref>{{cite book |title=Fundamentals of Computer Security |last=Pieprzyk |first=Josef |author2=Thomas Hardjono |author3=Jennifer Seberry |year=2003 |publisher=Springer |isbn=3-540-43101-2 |page=6 }}</ref>。この単純な[[換字式暗号]]に対する解読方法について、使用当時の記録はない。現存する中でもっとも古い記録は、9世紀の[[アラブ]]世界における、[[キンディ]]による[[頻度分析]]の発見である<ref>{{cite book |title=[[The Code Book]] |last=Singh |first=Simon |authorlink=サイモン・シン |year=2000 |publisher=Anchor |isbn=0-385-49532-3 |pages=14–20 }}</ref><!-- 訳書は存在するが、原文の通りに出典記載。ページ調査し差し替える必要あり -->。 [[ユダヤ教]]では、[[メズーザー]]の裏に{{仮リンク|神の名|en|Names of God in Judaism}}を記す際に、1つシフトしたシーザー暗号を用いる。これは、メズーザーを使っていなかった時代から続けられていると思われる。暗号化された名前は宗教的に意味深い「神の名」を示し、それはオーソドックスなユダヤ教において、悪の力を退けるものとされる<ref>{{cite web |url=http://www.chabad.org/library/article_cdo/aid/312102/jewish/Mezuzah-and-Astrology.htm |title= Mezuzah and Astrology |accessdate=2008-06-13 |author=Alexander Poltorak |publisher=[[chabad.org]]}}</ref>。 19世紀には、新聞の個人広告欄がシンプルな暗号によるメッセージのやりとりにしばしば使われた。{{仮リンク|デビッド・カーン|en|David Kahn (writer)}}は、[[タイムズ]]紙上で恋人同士が行った、シーザー暗号を使った秘密のやりとりについて言及している<ref>{{cite book |title=The Codebreakers |last=Kahn |first=David |authorlink=eデビッド・カーン |year=1967 |isbn=978-0-684-83130-5 |pages=775–6 }}</ref>。また、1915年という比較的近年であっても、シーザー暗号は使われていた。当時のロシア陸軍は、兵士が習得するのに難しすぎるために、より複雑な暗号からシーザー暗号へと変更した。そのため、ドイツやオーストリアの暗号解読者は、暗号文をたやすく復号することができた<ref>{{cite book |title=The Codebreakers |last=Kahn |first=David |authorlink=デビッド・カーン |year=1967 |isbn=978-0-684-83130-5 |pages=631–2 }}</ref>。 {{仮リンク|デコーダーリング|en|secret decoder ring}}のように、2枚の回転盤を組み合わせる事で、シーザー暗号の暗号化や復号を行うことができる。今日では子供向けの玩具などに見ることができる。 [[ネットニュース]]などでは、一見しただけで読めてほしくない、しかし読もうと思えば誰でも読める文章(パズルの答えなど)を投稿するのにシーザー暗号が使われることがあり、この場合、鍵は伝統的に13にし、[[ROT13]]とも呼ばれる<ref name="schneier" /><ref>{{cite book |title=Cryptology Unlocked |last=Wobst |first=Reinhard |year=2001 |publisher=Wiley |isbn=978-0-470-06064-3 |page=20 }}</ref>。シーザー暗号を解読するためのコマンド(caesar(6))が標準装備されているUNIXシステムもある<ref>{{cite web |title = NetBSD 6.1.5 - man page for caesar (netbsd section 6) |url = http://www.unix.com/man-page/netbsd/6/caesar/ |publisher = [http://www.unix.com/ Unix and Linux Forums] |accessdate = 2015-12-17 }}</ref><ref>{{cite web |title = Man page of CAESAR |url = https://linuxjm.osdn.jp/html/bsd-games/man6/caesar.6.html |publisher = [https://linuxjm.osdn.jp JM Project] |accessdate = 2015-12-17 }}</ref>。 [[ヴィジュネル暗号]]は、文章の文字ひとつひとつに異なったシフト数のシーザー暗号を用いている。シフト数は暗号鍵の単語を繰り返して決められる。暗号鍵がメッセージと同じ長さのランダムな文字列で、誰にも知られることなく、二度と使われることがないのであれば、それは[[ワンタイムパッド]]となり解読不能となる。だが、これらの条件を満たすことは実際には非常に難しい。暗号鍵がメッセージよりも短い場合<ref group="注釈">たとえば、[[南北戦争|アメリカ南北戦争]]において、[[アメリカ連合国|南部連合]]は「Complete Victory」といった、短いフレーズの暗号鍵を3つ使用していた。</ref>、頻度分析を統計的に拡張することで暗号文に周期的なパターンが検出される<ref>{{cite book |title=The Codebreakers |last=Kahn |first=David |authorlink=デビッド・カーン |year=1967 |isbn=978-0-684-83130-5 }}</ref>。 == 作成手順と使用例 == 暗号化には二つのアルファベット列を使用する。暗号化のためのアルファベットは、通常のアルファベットを左、または右にいくつか[[ビット演算#(キャリーなし)ローテート|循環シフト]](ローテーション)させる。下図は、左に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 のように、文字を数字に変換しておく<ref>{{cite journal |last=Luciano |first=Dennis |author2=Gordon Prichett |date=January 1987 |title=Cryptology: From Caesar Ciphers to Public-Key Cryptosystems |journal=The College Mathematics Journal |volume=18 |issue=1 |pages=2–17 |doi=10.2307/2686311 |jstor=2686311 }}</ref>。文字 ''x'' を ''n'' 個のシフトで暗号化する場合を数学的に表現すると、下記となる<ref>{{cite book |title=Cryptology Unlocked |last=Wobst |first=Reinhard |year=2001 |publisher=Wiley |isbn=978-0-470-06064-3 |page=19 }}</ref>。 : <math>E_n(x) = (x + n) \mod {26}</math> 同様に、復号は下記となる。 : <math>D_n(x) = (x - n) \mod {26}</math> プログラミングで実装する場合、使用する言語によって[[剰余演算]]の定義が異なる場合がある。上記の場合、結果は0以上25以下の範囲となるが、そうでない場合、26を加算する、もしくは減算する必要がある。 シーザー暗号の場合、文字の交換方式はメッセージ全体を通して同一である。このような暗号を[[単一換字式暗号]]と呼ぶ。対して、文字ごとに交換方式を変えるものを[[換字式暗号|多表換字式暗号]]と呼ぶ。 == シーザー暗号の解読 == {| class="wikitable" align="right" style="margin: 0 0 1em 1em" ! 復号シフト ! 取得される平文 |- align="center" | 0 | <tt>exxegoexsrgi</tt> |- align="center" | 1 | <tt>dwwdfndwrqfh</tt> |- align="center" | 2 | <tt>cvvcemcvqpeg</tt> |- align="center" | 3 | <tt>buubdlbupodf</tt> |- align="center" | bgcolor="#ffebad" | 4 | bgcolor="#ffebad" | <tt>attackatonce</tt> |- align="center" | 5 | <tt>zsszbjzsnmbd</tt> |- align="center" | 6 | <tt>yrryaiyrmlac</tt> |- align="center" | colspan="2" | ... |- align="center" | 23 | <tt>haahjrhavujl</tt> |- align="center" | 24 | <tt>gzzgiqgzutik</tt> |- align="center" | 25 | <tt>fyyfhpfytshj</tt> |} シーザー暗号は[[暗号文単独攻撃]]によって簡単に解読することができる。以下の2つのシチュエーションを想定する。 # 攻撃者は何らかの単一換字式暗号が使われていることを知っている(もしくは推測している)が、それがシーザー暗号かどうかまでは分からない。 # 攻撃者はシーザー暗号が使われていることを知っているが、シフトの数が分からない。 はじめのケースでは、[[頻度分析 (暗号)|頻度分析]]や単語パターンなどの、一般的な単換字式暗号と同様の解読手法を使用することができる<ref>{{cite book |title=Cryptology |last=Beutelspacher |first=Albrecht |authorlink=Albrecht Beutelspacher |year=1994 |publisher=[[Mathematical Association of America]] |isbn=0-88385-504-6 |pages=9–11 }}</ref>。シーザー暗号は特徴的なアルゴリズムであるため、解読者はすぐに法則性に気づき、解読もしくは推測することができるだろう。 [[Image:English-slf.png|left|320px|thumbnail|典型的な英語の文章における文字の出現頻度分布図。シーザー暗号では、暗号文の頻度分析のグラフを「ローテーション」させることで、シフト数を特定することができる。]] 二番目のケースにおいては、より直接的に暗号解読を行える。英語であれば26通りといったように、シフト可能な数は限られているため、[[総当たり攻撃]]を試みることができる<ref>{{cite book |title=Cryptology |last=Beutelspacher |first=Albrecht |authorlink=Albrecht Beutelspacher |year=1994 |publisher=[[Mathematical Association of America]] |isbn=0-88385-504-6 |pages=8–9 }}</ref>。総当たり攻撃の一つの方法は、暗号文の一部をシフト可能な数だけ表に書き出してみる事である<ref>{{cite journal |last=Leighton |first=Albert C. |date=April 1969 |title=Secret Communication among the Greeks and Romans |journal=Technology and Culture |volume=10 |issue=2 |pages=139–154 |doi=10.2307/3101474 |jstor=3101474 }}</ref>。この方法は「completing the plain component」と呼ばれている<ref>{{cite book |title=Elementary Cryptanalysis: A Mathematical Approach |last=Sinkov |first=Abraham |authorlink=Abraham Sinkov |author2=Paul L. Irwin |year=1966 |publisher=Mathematical Association of America |isbn=0-88385-622-0 |pages=13–15 }}</ref>。例として、"<tt>EXXEGOEXSRGI</tt>"という暗号文があるとき、平文は4つシフトしたものであると、すぐに識別できる。もう一つの総当たり攻撃は、暗号文の各文字の下に、逆順にシフトさせたアルファベットすべてを記載していく方法である。この際、縦方向にアルファベットを逆順に並べた紙片を用意しておくとより手早く行うことができる。その紙片を使って暗号文を並べると、別のいずれかの列に平文が出現する。 文字の頻度分布と組み合わせることで、別の総当たり攻撃を試みることができる。暗号文に出現する文字の頻度のグラフと、使用されている言語の文字の分布期待値のグラフにより、人はグラフの特徴を比べることで、いくつシフトしているかを容易に発見することができるだろう。たとえば、英語の平文では<tt>E</tt>や<tt>T</tt>が最も出現頻度が高く、<tt>Q</tt>や<tt>Z</tt>が最も出現頻度が低いといった特徴がある<ref>{{cite book |title=The Code Book |last=Singh |first=Simon |authorlink=サイモン・シン |year=2000 |publisher=Anchor |isbn=0-385-49532-3 |pages=72–77}}</ref><!-- 訳書は存在するが、原文の通りに出典記載。ページ調査し差し替える必要あり -->。コンピュータを使用し、たとえば[[カイ二乗検定]]などを実施することでも、暗号文の出現頻度と平文の出現頻度の比較を行うこともできる<ref>{{cite web |url=http://www.cs.trincoll.edu/~crypto/historical/caesar.html |title=The Caesar Cipher |accessdate=2008-07-16 |last=Savarese |first=Chris |author2=Brian Hart |date=2002-07-15 }}</ref>。 自然言語の場合、ほとんどの場合において解読結果は1通りに定まるが、平文が極端に短い場合、複数の解読候補が存在しうる。たとえば、英語において、"<tt>MPQY</tt>"という暗号文は"<tt>[[アデン|aden]]</tt>"または"<tt>know</tt>"と解読しうる。同様に、"<tt>ALIIP</tt>"は"<tt>dolls</tt>"または"<tt>wheel</tt>"に、"<tt>AFCCP</tt>"は"<tt>jolly</tt>"または"<tt>cheer</tt>"に変換しうる。詳細は[[情報理論#諜報活動と秘密保持|判別距離]]を参照。 シーザー暗号による暗号化や復号を複数回行った場合でも、安全性に変化はない。なぜなら、A 個分のシフトと B 個分のシフトを別個に行ったとしても、それは (A + B) 個分のシフトを行ったものと同等だからである。数学的には複数の暗号鍵による暗号化を行ったとしても、それはひとつの[[群 (数学)|群]]として扱われる<ref>{{cite book |title=Cryptology Unlocked |last=Wobst |first=Reinhard |year=2001 |publisher=Wiley |isbn=978-0-470-06064-3 |page=31}}</ref>。 == 出典 == {{reflist|30em}} == 注釈 == <references group="注釈" /> == 参考文献 == * {{仮リンク|デビッド・カーン|en|David Kahn (writer)}}, ''The Codebreakers – The Story of Secret Writing,'' Revised ed. 1996. ISBN 0-684-83130-9. * {{仮リンク|F.L. Bauer|en|F.L. Bauer}}, ''Decrypted Secrets,'' 2nd edition, 2000, Springer. ISBN 3-540-66871-3. * Chris Savarese and Brian Hart, ''[http://www.cs.trincoll.edu/~crypto/historical/caesar.html The Caesar Cipher]'', 1999 == 外部リンク == {{Spoken Wikipedia|Caesar_cipher.ogg|date=2005-04-14}} * {{MathWorld | urlname=CaesarsMethod | title=Caesar's Method}} * [http://codeabbey.com/index/wiki/caesar-cipher-breaking-with-least-squares 最小二乗法を用いたシーザー暗号の解読] {{cryptography navbox|classical}} {{デフォルトソート:しさあんこう}} [[Category:暗号]] [[Category:ガイウス・ユリウス・カエサル]] [[Category:群論]]
このページで使用されているテンプレート:
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Cite journal
(
ソースを閲覧
)
テンプレート:Cite web
(
ソースを閲覧
)
テンプレート:Cryptography navbox
(
ソースを閲覧
)
テンプレート:Lang-en
(
ソースを閲覧
)
テンプレート:MathWorld
(
ソースを閲覧
)
テンプレート:Quote
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:Spoken Wikipedia
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
シーザー暗号
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報