暗号史

出典: フリー百科事典『ウィキペディア(Wikipedia)』
2014年5月15日 (木) 18:36時点におけるおっとー (トーク)による版 (機械式暗号装置の発明)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

暗号史(あんごうし)とは、暗号技術に関する歴史的事項のことである。

概要

暗号の起源は古く、数千年の歴史を持つ。戦時下においては軍事技術の一つとして発達してきたが、その歴史の大部分は古典暗号に関するものである。古典暗号での暗号化は、鉛筆(と多少の道具)を使って行うことができるものであった。1900年代になって、エニグマ暗号機のような複雑な仕組みを持った電気機械式の暗号が発明され、ついで電子式機械によるより複雑な暗号機が導入された。

1970年代に作られたDESRSAは、それまでは国家に独占されていた暗号技術を広く公開されたものとし、現代暗号を生み出すことになった。集積回路など半導体技術の進歩によって暗号の実装は容易になり、パーソナルコンピュータをはじめとする個人向けの情報機器の普及によって、安全な秘匿通信を個人レベルでも利用できるようになった。携帯電話での通話の暗号化など、ユーザが知らないうちにさまざまな身近な場所に暗号が浸透してきていて、プライバシー保護にも重要な役割を担っている。

暗号解読は暗号技術の裏面にあって、暗号の歴史と対となる歴史がある。頻度分析の発見以来、敵の通信を解読しようとする試みは途絶えることなく進化していき、様々な事件の要因となった。

暗号の歴史

単純な換字式暗号の発生

暗号の起源は紀元前にまで遡る。紀元前19世紀ごろの古代エジプトの石碑に描かれているヒエログリフ(象形文字)が現存する最古の暗号文とされている。文章中に標準以外のヒエログリフを用いたものがあり、一般のヒエログリフしか知らない者から書いてある内容を隠すのに役立ったと考えられ、これはもっとも初期の換字式暗号のひとつである。

ファイル:Skytala&EmptyStrip-Shaded.png
スキュタレーのイメージ

紀元前5世紀にはスパルタでスキュタレー暗号が使用される。棒(スキュタレー)と革紐とを使った暗号方式で、革紐上には一見ランダムに見える文字列が描かれているが、この革紐をスキュタレーに巻きつけると、ある行に平文が現われる。スキュタレー暗号では棒の太さが鍵になっているとも捉えることもできる。棒と革紐を別の人間が所持し、割符のようにも使ったらしい。

紀元前2世紀にはポリュビオスがポリュビオス暗号を発明する。ポリュビオス暗号は、5×5=25のマス目にアルファベットを記入し、各アルファベットにそのアルファベットが入っているマス目の行番号と列番号とを対応させる換字式暗号である。

紀元前1世紀に登場したシーザー暗号は、ユリウス・カエサルが用いたとされ暗号の歴史の中でもとりわけ有名なものである。シーザー暗号は元のアルファベットから文字をある数だけ後にずらして作成する暗号方式であり、この数が鍵となっている。しかし鍵の数が26しかないため、暗号の安全性はアルゴリズムの秘匿にも依存していると考えられる。

それに比べて、文字と文字の対応を不規則にした一般的な単一換字式暗号は、その鍵の数が26の階乗存在(アルファベットの場合)し、ほぼ解読が不可能と思われた。

換字式暗号からより複雑な暗号へ

換字式暗号は、9世紀頃にはアラビア人によって、頻度分析という手法が発見されたことによって看破された。ヨーロッパではその方面の研究は発達せず、長らく単一換字式暗号が安全な暗号として使用されていた。15世紀になるとルネサンスの影響も受け、急速に発達し、この頃にようやくヨーロッパでも頻度分析の手法が確立した。

頻度分析によって、単一換字式暗号は安全ではなくなってしまった。単一字の(連綴を対象としない)頻度分析に対して対抗するための代表的な防衛法としては、次のようなものがある[1]

  • 平文[2]そのままではなく、文中に無意味な文字(冗字。虚字、捨字とも)を混ぜてから暗号化する。復号後、冗字に復号されたものは捨てる(ないし空文字列に復号する)。分析を混乱させることが目的である。
  • 度数秘匿方式
    • たとえば、平文では頻度の高い文字eにe1・e2・...のように複数種の記号をランダムに割り当てる、といったようにして、真の頻度を隠匿する(秘匿度数方式、homophonic substitution)。
    • たとえば、平文では頻度の低い文字qとzを同じ記号に割り当てる、といったようにして、真の頻度を隠匿する(逆秘匿度数方式、polyphonic substitution)。こちらは、何の工夫も無い場合は直後にuがあったらqだろう、といったように復号が機械的にはできない。

など、様々な工夫が凝らされるが、15世紀後半から16世紀にかけて、それでも、安全ではなくなってきてしまった。

同時期に「ヴィジュネル暗号」などの多表式換字暗号と呼ばれる、より安全性の高い暗号が考え出されていた。例えば、たとえばaが必ずcになるような従来の方法ではなく、aaとかbbとかccという綴りが原文にあっても、対応する暗文はcgといったようになるような(つまり、同じ文字でも暗号化されると違う文字になる)方法である。単一換字式暗号に比べて安全性は高いが、暗号化・復号が煩わしかった為、あまり使われなかった。

17世紀にあったエピソードに、ニュートンライプニッツに向けて、微分法と微分方程式の解法に関して述べた文を「暗号文」にして送った、というものがある(これは、両者の関係が決裂的になる以前の話である)。ラテン語で書いた原文を元に、それに使用したアルファベットを順に使用した個数並べた、アナグラムの一種で(最初の部分を示すと "aaaaaa cc d æ" といったようなものである)、現代の暗号学の観点から言うと、解読可能な暗号と言えるようなものではない。暗号のつもりであったのか、自分の発見であることを示すための、一種の言うならばハッシュ関数による署名のようなものであったのかは謎とされている[3]

18世紀頃には、外交や軍事上の必要から安全性の要求が高まると、面倒だが安全なヴィジュネル暗号も使うようになっていった。

ヴィジュネル暗号には、鍵の周期性という弱点があった。変換表は鍵によって逐次切り替えられるが、鍵自体は固定のため、鍵の長さごとに暗号文を調べると、それは同じ変換表によって単純換字された暗号になっているため、頻度分析によって解読できてしまう。この解読法は19世紀の中頃に発見されて、ヴィジュネル暗号も解読されてしまった。

無線と暗号

1895年にマルコーニがモールス信号による無線通信を実現し、暗号の歴史は大きな転換点を迎えることとなる。電波による無線通信は特定の相手のみに送信することはできず、味方が通信を受け取ると同時に敵も通信を傍受できることになり、暗号化していない通信文はすべて敵に筒抜けとなってしまう。無線通信を扱う上で暗号は欠かせないものになった。

機械式暗号装置の発明

暗号機に関する歴史は、暗号機#歴史を参照。

ファイル:暗号機.JPG
米軍暗号機M209

ドイツの発明家シェルビウスが発明し、1925年にドイツ軍が採用した暗号機エニグマは長い間ドイツ軍の通信の秘密を支えてきた。エニグマの暗号方式は換字式暗号のひとつだが、3枚のローターと数本のプラグの位置を交換することができるため鍵の個数は膨大な数になり、一文字打つたびにローターが回転し回路が変更されるので、単純な換字式暗号とは違い、同じ文字がその位置によって別の文字へ変換されるなど複雑なものである。操作も簡単で特別に訓練を積んだ専門家でなくても扱うことができた。エニグマの暗号機そのものはやがて連合国側も手に入れ解析を進めたが、コードブックの奪取以外の方法ではなかなか解読することは出来なかった。

解読は不可能かと思われたエニグマであったがイギリスの暗号解読者アラン・チューリングらによって理論的な解読がなされることとなる。チューリングが開発した理論でも膨大な計算が必要であり、最初は手作業による人海戦術で計算を進めていたが、やがて開発された暗号解読器、通称"The Bombe"によって大きく手間が軽減されることとなる。このBombeは計算を行える機械としてその後のコンピュータの発明にも影響する。暗号解読法は軍事機密であるため、大戦終了とともにBombeは廃棄されてしまい現在は残っていない。このように軍事機密として闇に葬られてしまった暗号の歴史も少なくないと考えられる。

またこの頃には戦況の変化のスピードが高まり、暗号通信にも速度が求められることとなった。単純に複雑なだけでは暗号化や復号に時間がかかり、実用性が乏しくなってしまうが、暗号機の登場は暗号化の速度向上にも貢献している。だが、それらの裏を掻くかの如く、アメリカ軍は第二次大戦中にアメリカ先住民ナバホ族の言葉を通信に利用する暗号を使ったことがある(コードトーカー)。ナバホ族出身の兵士同士が会話をするだけなので通信はとても早く正確で、ナバホ族の言葉は大変複雑な上に類似する言語が存在せず、日本軍は解読どころか暗号文を書き留めることすらできなかったという。これらのエピソードは映画ウインドトーカーズ」でも描かれている。

だが、その日本も外務省と在ドイツ日本大使館の間で、重大な軍事機密事項の情報連絡を早口の薩摩弁で行うという同種のアイデアを実行している。これについては通常の国際電話で会話したため、アメリカ軍は当然の如く傍受したが、解読に困難を極め、最初はほとんどまともに解読ができなかったという。また、日本の外務省電文や海軍はエニグマを過信し、コードブックの変更や秘匿の維持を怠ったため、連合国に早期に破られてしまったのに対し、陸軍換字式暗号を併用した複合暗号を使用し、しかも表意文字漢字)と表音文字仮名)を織り交ぜたものだったため、解読が大幅に困難になった。基本的な解読法が判明したのは戦争の趨勢も決まった1944年末で、完全な解読は終戦まで出来なかった。

コンピュータと暗号

1940年代、第二次世界大戦終了前後に開発が始まったプログラム可能な電子計算機(コンピュータ)の登場は機械式暗号の信頼性をさらに失速させる。コンピュータは自由にプログラムを設定でき、任意の機械式暗号をシミュレートできる上に暗号化・復号のスピードも桁違いで、暗号鍵を総当りで調べる、暗号文を統計処理して暗号鍵を推測する等、暗号解読の強力なツールとなる。初期のコンピュータにはコロッサスのように暗号解読を目的として開発されたものもある。

一方で1947年のトランジスタの発明、1958年の集積回路の発明など半導体技術の進歩は暗号にも大きな影響を与え、機械式では実現不可能な複雑なアルゴリズムでも実現可能になった。信頼性の高い暗号が、手軽に利用できるようになったのもコンピュータや半導体技術が出現してからである。

ブロック暗号の誕生

1970年代、Horst Feistelにより換字式暗号転置式暗号を組み合わせた換字-転字暗号が提案され、DESの原型となるブロック暗号 Lucifer が誕生した。

エニグマなどの機械式暗号は、ブロック長が数ビットで、換字表の切替周期の長さとその統計的ランダム性を向上させた換字式暗号であるが、ブロック暗号はブロック長を64~128ビットと大きくし、換字と転置を繰り返すことで暗号文を作成する方式である。単純換字式暗号の換字表の種類は26!サイズであるが、ブロック長が64ビットのとき、(2^64)!という巨大なサイズとなる。

ただ、Luciferの換字表(Sボックスと呼ばれる)の設計には問題があり、解読が容易であった。その為、DES規格制定の際、当時のコンピューターを駆使してSボックスの検証が行われた。しかし助言したNSAがSボックスの設計方針(差分解読法への耐性)を明らかにしなかったため、裏口(バックドア)を仕掛けたとの疑惑が残った。

ブロック暗号の歴史は、ブロック暗号#歴史を参照。

鍵配送問題と公開鍵暗号

コンピュータの性能が向上するにつれ、暗号の安全性は、コンピュータをもってしても解読を防げる程度にまで達したが、暗号技術は別の壁にぶつかる。

共通鍵暗号で通信をするには予め鍵を相手に送っておかなければならないが、その鍵を暗号化せずにそのまま送信すれば第三者に盗まれてしまう。安全に鍵を配送するのは多額のコストがかかり、これが鍵配送問題と呼ばれる問題である。 鍵配送問題の例として、敵国に侵入したスパイに暗号鍵を送信していると推測される放送もある(ナンバーステーション乱数放送)。

鍵配送問題を解決すべく、1976年ホイットフィールド・ディフィDiffieとマーチン・ヘルマンHellmanが公開鍵暗号系の概念を提案する(Diffie-Hellman鍵共有)。これは共通鍵暗号系と違い、暗号化と復号に別の鍵を使う、というアイデアである。暗号化の鍵は誰でも入手できるように公開してもよく、送信者はその公開鍵で暗号化して送信し、受信者は復号鍵で平文に戻す。公開された暗号化鍵では復号できず、復号鍵は受信者しか知らないので、通信の秘密は保たれる。

具体的な公開鍵暗号方式として有名なRSA暗号はその翌年に発表された。その後、ラルフ・マークルMerkleとヘルマンの二人が公開鍵暗号方式であるMerkle-Hellmanナップサック暗号を提案したが、この暗号方式は後に解読されてしまった。暗号ソフトウェアはフリーウェアとして公開されているPGPなどもあり、誰でも安心して通信できるようになった。

現在ではもっぱらソーシャルエンジニアリングによる鍵や情報の流出の危険性のほうが問題となっている。コンピュータのパスワードを複雑なものにする、パスワードのメモを机やゴミ箱に放置しないなどの対策が必要となる。

量子暗号への展望

典型的な暗号方式であるRSA暗号の信頼性は、大きな数の素因数分解が困難なことに依存している。もし量子コンピュータが実現したとしたら、素因数分解が短い時間で可能になるのでRSA暗号は破られることになる。

量子(現在のところ光量子)を利用した量子暗号も研究が行われている。

参考文献

  1. 以下の用語は、長田順行『暗号』による
  2. 暗号学の用語では、普通の文そのままのものを「平文」、暗号に掛けるもの(平文に何らかの手を加えている場合がある)を「原文」と言う。
  3. 長田順行『暗号』によれば

関連項目


テンプレート:Cryptography navbox