暗号
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/04/19 06:52 UTC 版)
暗号学
記事の体系性を保持するため、 |
歴史
記事の体系性を保持するため、 |
種類
まず、古典的な暗号と現代的な暗号を分けるものとして、ケルクホフスの原理がある。現代的な暗号理論よりも前の時代には、暗号の「方式」と「鍵」の識別は明瞭ではなかったし、そのどちらも秘匿されねばならぬものであった。すなわち攻撃側の視点からは、方式がわかってしまえば、それによって、鍵を得ることも容易になってしまうのであった。現代の暗号は、秘密は鍵に集中しており、その方式はむしろ公知のものであったほうが、その強度なども広く研究されているために、むしろ安全である。
鍵を使わない方法は、一度敵に知られた方法は二度と使えない、暗号の信頼性を客観的に評価することができないなどの問題がある。例えば単純なシーザー暗号は、方式自体がバレないようにしなければ安全性が保てないほど脆弱であるし、ある程度の量の暗号文があれば何百年以上も前からある頻度分析という手法によって方式自体もバレてしまう。それに対し鍵を使う方法は、アルゴリズム自体を敵に知られても構わない方式を目標としており、一度考案した方式は鍵を変えることで何度でも使える、アルゴリズムを広く公開することで信頼性を十分に検討できる、などの多くの利点がある。
近代以降になると、このように「鍵さえ秘密にしていれば暗号化・復号の方法を公開しても安全が保てる」ことが暗号にとって望ましい性質であることが明確化された(ケルクホフスの原理)。
古典暗号の時代の「サイファー」の主要な2種類は、以下の二つである(暗号システムとしては、他にも多種多様なものが考案された)。
上の2つの分類は、現代暗号でもなんら変わるものではないが、現代的には次のような暗号の分類がある。このうち前者の共通鍵暗号は、分類としては古典暗号時代からなんら変わらぬ暗号の方式であって、「現代暗号の分類」とするのはむしろおかしいのだが、後者との対比としてしばしば挙げられるものである。後者の公開鍵暗号は、暗号をその時代の最新の数理で検討するようになった現代暗号ならではの暗号と言える。
近代以降、前述のように、秘密は鍵に集中すべきことから、暗号の問題は鍵の配送(共有)にあることが明確になった。暗号系を含む全体を通信システムとして検討したならば、そもそもそのような「鍵」をやりとりできるほどに安全な通信路があるならば、その通信路で本文も通信してしまえば良いからである。この問題には、公開鍵暗号方式の発明によって一応の決着が付いた。すなわち、公開鍵暗号であればその非対称なペアになっている鍵のうちの片方は秘密ではないため、配送の問題が生じないからである。ただし通常は計算量の理由から、公開鍵暗号を本文の暗号通信に直接使うことはせず、公開鍵暗号を利用した安全な鍵交換方式によって共通鍵を安全に交換し、その鍵によって共通鍵暗号通信をおこなう。
コードやサイファーのような記号による暗号ではなく、スクランブル(信号の切り混ぜ)といったアナログ技術による広義の暗号システムとしては、かつてアナログ電話の時代に盛んに研究されたものがある。秘話の記事を参照。
さらに、より「アナログ」な事例としては、少数民族の言語や方言などによる、相手側が仮に傍受しても瞭解が不可能な会話を利用したものがある[1]。太平洋戦争での事例として、アメリカ側はナバホ語による通話を利用し(コードトーカー)、日本側は薩隅方言による通話を利用した[注釈 3]。
具体的な暗号方式の一覧は、暗号理論を参照。
コードの例
- ルイ14世の大暗号(ロシニョールが作成): コードブックは「act=486、ion=102、…」のように音節単位で3桁の数に対応させる(600個程ある)。暗号文「486-102」を復号すると act-ion になる。19世紀末フランス軍の暗号解読者バズリが解読を発表した。
- 日露戦争で使われた暗号文:「アテヨ イカヌ ミユトノケイホウニセツシ、ノレツ ヲハイタダチニヨシスコレヲワケフ ウメルセントス、ホンジツテンキセイロウナレドモナミタカシ」。コードブックは「アテヨ=敵、イカヌ=艦隊、ノレツ=連合艦隊、…」のように秘匿したい単語をカナ3文字に対応(2文字目は単語の最初と同じ音にもなっている)させている。平文は「敵 艦隊見ユトノ警報ニ接シ、連合艦隊 は直チニ出動、コレヲ撃沈 滅セントス、本日天気晴朗ナレドモ波高シ」となる。
- 真珠湾攻撃で使われた暗号文:「ニイタカヤマノボレ1208」(=12/8に日米開戦、事前に決めておいたフレーズを合図とし、更に1文字ごとに五連数字に換えた)。なお、「ト」の連打(=全軍突撃せよ)、「トラ」の反復(=我、奇襲に成功せり)などもよく知られているが、これらは正確には電信(モールス符号)の聞き分け易い音を合図としたものである。日本海軍機が搭載していたのは無線電話機(音声通信)ではなく、無線電信機(モールス符号通信)であった(航空通信に無線電話が導入されるのは1950年代に入ってから)ため、交戦時に複雑な電文の送信・聴取は困難なことから、和文電信で聞き取りやすい符号の組み合わせとなった。
- 「ト」は(・・―・・)、「ラ」は(・・・)で、
- [ト][ト][ト]...=・・―・・ ・・―・・ ・・―・・...=全軍突撃せよ)
- [トラ][トラ][トラ]...=・・―・・ ・・・ ・・―・・ ・・・ ・・―・・ ・・・ ...=我、奇襲に成功せり)
- を合図としたものである。
- ちなみに陸軍のマレー作戦の暗号は「ヒノデハヤマガタ」である。
- 単語を暗号書(コードブック)で対応する数字に変え、さらに乱数表から一定の法則で抜き出した数字を加える二部制の暗号もある。復号には、暗号作成時に使用したものと同一の乱数表と暗号書が必要。太平洋戦争における日本海軍がこうした二部制の暗号を使用していた。
実装
初期の古典暗号は、多くは紙と鉛筆のみで暗号化を行うが、多少の道具を用いるものもあった。暗号解読の進歩により単純な暗号では安全ではなくなると、複雑な処理を自動化するための機械が発明された。
- 棒
- 紀元前5世紀、古代ギリシアで、特にスパルタでスキュタレー (σκυτάλη) と呼ばれる棒が暗号に使用された。同じ太さの棒を2本用意し、送信者と受信者がそれぞれ所持する。送信者は右図のように棒にテープを巻きつけて平文を横書きする。するとテープには平文の文字が飛び飛びに記されることになる。棒からテープを外してテープだけを受信者に送る。転置式暗号の一種である。暗号強度は決して高くないが、転置の際の書き誤り・読み誤りを回避できる手段である。
- 円盤
- 15世紀、アルベルティの考案した暗号円盤が最古のものとされる。大小2枚の円盤からなり、内側の円盤を回転させて平文・暗号文の対応を決める。位置を固定して暗号化・復号を行うとシーザー暗号となり、1文字ごとに位置をずらすと多表式暗号となる。南北戦争でも使用された。ローター式暗号は多段に接続した暗号円盤を機械化したものともいえる。
- カード
- 16世紀、ジェロラモ・カルダーノが穴をあけたカード(カルダングリルと呼ばれる)を使って作成する分置式暗号を考案している。
- 換字表
- 多表式暗号を行う際のツールとして使用。トリテミスの換字表またはヴィジュネルの表として知られる。
- ブック
- コードの対応表(略号集、ノーメンクラタ)や乱数表などを記載するのに使った。鍵フレーズを指定するために聖書や辞典が使用されることもあった。MI5が捕まえたスパイが所持していたとされる乱数表は、指サイズの小型のもので多数の数値が印刷されている。
- 輪
- 18世紀末、ジェファーソンが考案し、後にバセリも再発明している。ホィール(ディスク)、ストリップ、ロッドなど様々な形状をした暗号器が考案されている。M-94(アメリカ陸海軍、1922年から1942年ごろ)、M-138A(アメリカ陸海軍・沿岸警備隊・国務省、1935年から1941年ないし1942年)、Reihenschieber(ドイツ連邦軍、1956年から1960年代)など実際に使用された。
- 暗号機械
- 20世紀になると、エニグマ(ドイツ)、パープル(日本)、M-209、M-325、SIGABA(アメリカ)、NEMA(スイス)、TypeX(イギリス)など機械式の暗号装置が開発され、特に第二次世界大戦中に各国で使用された。
- コンピュータ
- 「電子化された暗号機械」に分類されるようなものなどもあるが、歴史的にごく一時期のものであるためここでは略す。コンピュータ・プログラムは、何らかの情報処理機械のソフトウェア実装である、と見ることができる(チャーチ=チューリングのテーゼ)。すなわち、暗号のプログラムは暗号機械のソフトウェア実装であるとも言える。のどかな時代には、実際にエニグマ暗号機の方式をそのままコンピュータ・プログラムにしたようなものも使われていたりしたこともあったが(詳細は en:Crypt (Unix) を参照)、1970年代以降は、現代的な暗号として前述したような公開鍵暗号であるRSAや、共通鍵暗号ではDESなどがある。攻撃側(暗号解読側)が最新鋭のコンピュータの計算力を利用できると仮定しても、計算量的に安全でなければならない、という考えかたが基本となった。
暗号と同じ種類の言葉
- >> 「暗号」を含む用語の索引
- 暗号のページへのリンク