暗号





暗号とは、セキュア通信の手法の種類で、第三者が通信文を見ても特別な知識なしでは読めないように変換する、というような手法をおおまかには指す。いわゆる「通信」(telecommunications)に限らず、記録媒体への保存などにも適用できる。




目次






  • 1 概要


  • 2 暗号学


  • 3 歴史


  • 4 種類


    • 4.1 サイファーの例


    • 4.2 コードの例




  • 5 実装


  • 6 用語


  • 7 参考文献


  • 8 脚注


  • 9 関連項目





概要


秘匿通信を行う上で最も単純な方法は「木を隠すなら森」という諺のごとく、通信文そのものの所在を隠してしまうことである。歴史上実際に行われたものとしては、通信文を丸めて飲み込んだり、ベルトの内側に書き普通の被服のように身につけたり、新聞の文字に印(文字横に穴を開ける等)をつけて文章を作る、頭を剃りあげて頭皮に通信文を刺青し、再び頭髪が生えそろうことで隠す、などもあったようである。「暗号らしい手法」としては「ステガノグラフィー」といい、「それとはわからないような形で」記録する、というものである。画像などに情報を埋め込む「電子透かし」にも同じ技術を利用するが、電子透かしではその画像の著作権情報などといった関係のある情報を埋め込むのが目的であるのに対し、ステガノグラフィーは全く無関係な情報を秘密のうちに紛れ込ませる、という点が異なる。またいわゆる縦読みなども一見して普通の文章の中に見えるためステガノグラフィーの一種と言えなくもない。


広義では以上のような方法も暗号に含まれるし暗号学が探求する対象であるが、狭義では、その見た目が「なんだかわからない」という、難読であると明確なものを指して特に暗号に分類する(なお、暗号化された通信文(暗号文)については理論上、他からの「それが暗号である」という情報が無ければ、ただのデタラメと全く区別が不可能であるのが理想である[1])。


狭義の暗号は、古典的には主要な分類に、以下の2つがある。



  • 「コード」(詳細は コード (暗号) を参照)通信文内の、単語やフレーズといったある程度意味のある塊の単位で、あらかじめ取り決めてある記号と交換する。

  • 「サイファー」(詳細は en:Cipher を参照)通信文に対し、意味とは関係なく、文字毎の(最小の)単位で、あらかじめ取り決めてある置換や転置を掛ける。


「コード」は一般に、軍の運用に必要なものなど、ある程度の(あるいは膨大な[2])語彙について秘密の記号群を決めておくものであるが、「討ち入り」「開戦」などといった特定の重要な件のみについて、「○◇△といえば、~のこと」等と事前に取り決めておくことで秘匿することも行われた。個人間で行うものから組合やギルド等の特定のグループ内で行うものがある。事前の取り決めではなく、特定の人達だけが知る事項などを元に、意味は同じままで、言い方を変えることで秘匿することもある。秘匿したい特定の単語だけ置き換えることも、コードブックと呼ばれる辞書を作成して全ての単語を置き換えることもあり、歴史的な例としては、前者は「スコットランド女王メアリーの暗号」、後者は「ルイ14世の大暗号」や「ナポレオンの小暗号」などが知られている。


「サイファー」は、機械化以前は一般に作業手数が大きいといった欠点があったが、機械化以後はサイファーが主流の暗号である。機械化に次いで、暗号のコンピュータ化(あるいは、コンピュータの暗号化)の時代となったが、それらの暗号も、だいたいサイファーに分類するのが妥当であろう。


また以上のようなセキュア通信のための狭義の暗号に限らず、相手の身元を確認する認証や改竄の検出、貨幣の偽造防止技術、電子署名、認証、ハッシュ関数、電子マネーその他、情報セキュリティの多くの局面で、暗号はキーテクノロジとなっている。


なお、暗号化の逆の操作を表す語は「復号(英語: decryption)」であり、符号化に対するそれ(英語: decode)同様「~化」とはしない。



暗号学









歴史








種類


サイファーの古典的な主要な分類と、現代暗号の主要な分類は以下のようになる(実際には、より多数の分類がある)。



  • 古典暗号 - 古典的なサイファーの分類


    • 換字式暗号 - 別の文字を割り当てる。単一換字、多表式換字などがある。


    • 転置式暗号 - 文字を並べ替える。



  • 現代暗号 - 秘密は鍵に集中しており、手法は公開するのが基本であり前提


    • 共通鍵暗号 - 暗号化・復号で同じ鍵を使う。ブロック暗号、ストリーム暗号などがある。


    • 公開鍵暗号 - 暗号化・復号で異なる鍵を使う。




鍵を使わない方法は、一度敵に知られた方法は二度と使えない、暗号の信頼性を客観的に評価することができないなどの問題がある。例えばシーザー暗号は、その方式自体がバレないようにしなければ安全性が保てないほどに脆弱であるし、頻度分析という、最古の記録は何百年以上も前に遡る手法でそれもバレてしまう。それに対し鍵を使う方法は、アルゴリズム自体を敵に知られても構わないような方法が目標であり、一度考案した方法は、鍵を変えることで何度でも使える、アルゴリズムを広く公開することで信頼性を十分に検討することができるなどの多くの利点がある。近代になると、このように鍵のみを秘密にしていれば暗号化・復号の方法を皆に公開した場合でも安全を保てることが暗号にとって望ましい目標である(ケルクホフスの原理)と認識された。その結果として、鍵の配送(共有)が問題点であると明確化されクローズアップされた。これは結局、公開鍵暗号(「非対象鍵暗号」という別名のほうが、理論上の意味が明確である)方式の発明によって、安全な鍵交換方式の提案という形で決着が付き、現代暗号のシステムには欠かせないものになっている。


コードやサイファーのような記号による暗号ではなく、スクランブル(信号の切り混ぜ)といったアナログ技術による広義の暗号システムとしては、かつてアナログ電話の時代に盛んに研究されたものがある。秘話の記事を参照。


このほかにも、少数民族の言語や方言など他国へはほとんど知られていない言葉の話者に通信させることで暗号化する手段もある。第二次世界大戦時にはアメリカがナバホ語などの先住民をコードトーカーとして徴兵、日本では国際電話の通話で薩隅方言を使用するなどしている。


具体的な暗号方式の一覧は、主な暗号の分類と一覧を参照。



サイファーの例



  • 古典暗号:

    • 換字式 - 最もシンプルな単一換字式としてメッシュ暗号、シーザー暗号、ポリュビオス暗号などが知られている。より安全性が高い多表式換字にヴィジュネル暗号などがある。これらの暗号は小説で扱われることもあり、「黄金虫」、「踊る人形」(単一換字)、「ジャカンタ」(多表式換字)などがある。

    • 転置式 - スキュタレー、レールフェンス暗号、回転グリル - 「謎の暗号」



  • 現代暗号:

    • 共通鍵 - AES、DES(ブロック暗号)、RC4(ストリーム暗号)、ワンタイムパッド

    • 公開鍵 - RSA、楕円曲線暗号 (ECC) 、ElGamal





コードの例



  • 例1 ルイ14世の大暗号(ロシニョールが作成): コードブックは「act=486、ion=102、…」のように音節単位で3桁の数に対応させる(600個程ある)。暗号文「486-102」を復号すると act-ion になる。19世紀末フランス軍の暗号解読者バズリが解読を発表した。

  • 例2 日露戦争で使われた暗号文:「アテヨ イカヌ ミユトノケイホウニセツシ、ノレツ ヲハイタダチニヨシスコレヲワケフ ウメルセントス、ホンジツテンキセイロウナレドモナミタカシ」。コードブックは「アテヨ=敵、イカヌ=艦隊、ノレツ=連合艦隊、…」のように秘匿したい単語をカナ3文字に対応(2文字目は単語の最初と同じ音にもなっている)させている。平文は「 艦隊見ユトノ警報ニ接シ、連合艦隊 直チニ出動、コレヲ撃沈 セントス、本日天気晴朗ナレドモ波高シ」となる。

  • 例3 真珠湾攻撃で使われた暗号文:「ニイタカヤマノボレ1208」(=12/8に日米開戦、事前に決めておいたフレーズを合図とし、更に1文字ごとに五連数字に換えた)。なお、「ト」の連打(=全軍突撃せよ)、「トラ」の反復(=我、奇襲に成功せり)などもよく知られているが、これらは正確には電信(モールス符号)の聞き分け易い音を合図としたものである。日本海軍機が搭載していたのは無線電話機(音声通信)ではなく、無線電信機(モールス符号通信)であった(航空通信に無線電話が導入されるのは1950年代に入ってから)ため、交戦時に複雑な電文の送信・聴取は困難なことから、和文電信で聞き取りやすい符号の組み合わせとなった。



「ト」は(・・―・・)、「ラ」は(・・・)で、

[ト][ト][ト]...=・・―・・ ・・―・・ ・・―・・...=全軍突撃せよ)

[トラ][トラ][トラ]...=・・―・・ ・・・ ・・―・・ ・・・ ・・―・・ ・・・ ...=我、奇襲に成功せり)



を合図としたものである。

ちなみに陸軍のマレー作戦の暗号は「ヒノデハヤマガタ」である。


  • 例4 単語を暗号書(コードブック)で対応する数字に変え、さらに乱数表から一定の法則で抜き出した数字を加える二部制の暗号もある。復号には、暗号作成時に使用したものと同一の乱数表と暗号書が必要。太平洋戦争における日本海軍がこうした二部制の暗号を使用していた。


実装


初期の古典暗号は、多くは紙と鉛筆のみで暗号化を行うが、多少の道具を用いるものもあった。暗号解読の進歩により単純な暗号では安全ではなくなると、複雑な処理を自動化するための機械が発明された。




スキュタレー




南北戦争時の暗号円盤




ヴィジュネルの表




機械式暗号(M-209)




紀元前5世紀、古代ギリシアで、特にスパルタでスキュタレー (σκυτάλη) と呼ばれる棒が暗号に使用された。同じ太さの棒を2本用意し、送信者と受信者がそれぞれ所持する。送信者は右図のように棒にテープを巻きつけて平文を横書きする。するとテープには平文の文字が飛び飛びに記されることになる。棒からテープを外してテープだけを受信者に送る。転置式暗号の一種である。暗号強度は決して高くないが、転置の際の書き誤り・読み誤りを回避できる手段である。

円盤

15世紀、アルベルティの考案した暗号円盤が最古のものとされる。大小2枚の円盤からなり、内側の円盤を回転させて平文・暗号文の対応を決める。位置を固定して暗号化・復号を行うとシーザー暗号となり、1文字ごとに位置をずらすと多表式暗号となる。南北戦争でも使用された。ローター式暗号は多段に接続した暗号円盤を機械化したものともいえる。

カード

16世紀、ジェロラモ・カルダーノが穴をあけたカード(カルダングリルと呼ばれる)を使って作成する分置式暗号を考案している。

換字表

多表式暗号を行う際のツールとして使用。トリテミスの換字表またはヴィジュネルの表として知られる。

ブック

コードの対応表(略号集、ノーメンクラタ)や乱数表などを記載するのに使った。鍵フレーズを指定するために聖書や辞典が使用されることもあった。MI5が捕まえたスパイが所持していたとされる乱数表は、指サイズの小型のもので多数の数値が印刷されている。


18世紀末、ジェファーソンが考案し、後にバセリも再発明している。ホィール(ディスク)、ストリップ、ロッドなど様々な形状をした暗号器が考案されている。M-94、M-138A(アメリカ)、Reihenschieber(ドイツ)など実際に使用された。

機械式

20世紀になると、エニグマ(ドイツ)、パープル(日本)、M-209、M-325、SIGABA(アメリカ)、NEMA(スイス)、TypeX(イギリス)など機械式の暗号装置が開発され、特に第二次世界大戦中に各国で使用された。

計算機

コンピュータの進歩と普及により、ハードウェアだけではなく、ソフトウェアでも暗号が実装できるようになった。

一般的なコンピュータでの具体的な実装例としては、Internet ExplorerやSafariなどのブラウザに実装されているTLS上で提供される共通鍵方式暗号化機能、オープンソースソフトウエアのGnuPGで提供される公開鍵暗号方式のファイル暗号化・メール暗号化や、TrueCryptでの暗号化仮想ディスクソリューションなどが有名である。また、LinuxにおいてはLUKS(en)のようシステムディスクそのものを暗号化する実装もある。その他、企業などでは有償の高度な暗号化ソリューションが使われていることも多い。

また、企業などの拠点間通信をインターネット上を経由させるときに盗聴や改ざんを防ぐため、VPNでは(ソフトウエアとハードウエアの両面で)暗号を用いている。



用語


暗号で用いられる用語。暗号理論の用語も参照。



平文 (plaintext)

暗号化される前の文。

暗号文 (ciphertext)

平文を、独特の表記法によって第三者が読み解けないようにした通信文。

鍵 (key)

表記法のパラメータ。表記法によっては鍵はないこともある。鍵が異なると平文が同じでも暗号文が異なる。

平文空間

平文全体の集合

暗号文空間

暗号文全体の集合

鍵空間

鍵全体の集合

セキュリティパラメータ (security parameter)

暗号の安全性を表す尺度。鍵のサイズなどを指定する。

暗号化 (encryption; encode, encipher)

表記法に従って平文を暗号文に変換すること。

復号 (decryption; decode, decipher)

表記法に従って暗号文を平文に戻すこと。

攻撃 (attack)

暗号化に用いられた表記法の特定あるいは鍵を探索する行為。または鍵を用いずに暗号文を平文に戻すこと。解読ともいう。暗号の方式によって様々な攻撃法が考案されている。暗号の攻撃法も参照。

暗号解読 (cryptanalysis)

受信者以外の第三者が暗号文を通信文に戻そうとすること。

共通鍵 (common key; symmetric key)


共通鍵暗号において、暗号化にも復号にも用いられる鍵。暗号化側と復号側が同じものを持っている必要があり、鍵を共有する過程で盗聴された場合に通信の秘密はまったく保てなくなる。秘密鍵ということもある。

公開鍵 (public key)


公開鍵暗号において、暗号化に使用する鍵。暗号化鍵とも言う。復号側が持つ秘密鍵と対になった鍵が必要で、復号側はあらかじめ自分の公開鍵を暗号化側に通知しておく(公開する)ことから公開鍵と呼ばれる。

秘密鍵 (private key)

公開鍵暗号において、復号に使用する鍵。復号鍵とも言う。復号側だけがこのデータを持っている(秘密にする)ことから秘密鍵と呼ばれる。(秘密の共通鍵にたいして)私有鍵ということもある。公開鍵から秘密鍵を推測することが非常に困難(事実上不可能)である暗号法を選択する必要がある。

なお、公開鍵暗号においては、公開鍵の代わりに秘密鍵を使って暗号化を施すと、それによって生成された暗号文は、対応する公開鍵によってのみ復号できる。すなわち、ある公開鍵によって暗号文が復号できたことは、当該公開鍵に対応する秘密鍵の持ち主によって暗号文が作成されたことの推定となる。これが電子署名の基本原理となっている。

鍵ペア (key pair)

秘密鍵と、対応する公開鍵とからなるペアの事。同時に生成される。

鍵交換 (key exchange)

共通鍵暗号において、公開鍵暗号方式などを用いて暗号化側と復号側が共通鍵を共有すること。大量のデータをすべて公開鍵暗号で送受信しようとすると計算量が膨大になることから、全文の送受信は比較的簡便な共通鍵暗号で行うこととし、そのための鍵をまず公開鍵暗号方式で共有する、という方法が広く採用されている。

この際、鍵配布センター (KDC) などの信用できる第三者機関を利用する集中型と、各人が秘密の値と通信データを用いて共有の鍵を生成する分散型がある。鍵配送 (key distribution) 、鍵共有 (key agreement) ともいうが、集中型のことを鍵配送、分散型のことを鍵共有として両者を含めて鍵交換とする場合など、区別する書籍もある。

オラクル

入力に対して出力が得られる関数のようなもの。オラクルを必要とするモデルで使用される。


アリスとボブ (Alice and Bob)

暗号理論に登場するプレイヤーはAからアルファベット順に並ぶことが一般的であり、論文では通常Alice、Bobが使われる。これはRSA暗号が発表されたときのプレイヤー名にもとづく。C以降は様々だが、Catherine、Carol、Charlie、などが多い。



参考文献




脚注





  1. ^ 前述のステガノグラフィーのような、一見すると別の意味がちゃんとあるような情報の中に秘密の情報を忍び込ませる、という方法は、情報理論からの結論として、情報全体に比してごくわずかな情報を埋込むことしかできない。


  2. ^ 過去の例として、太平洋戦争のような戦争ともなれば膨大になった。




関連項目







  • 符丁(符牒)


  • クロノグラム(英語版) - 数字をアルファベットに置き換えて、年号を表す表記法で石碑などに記される。





Popular posts from this blog

android studio warns about leanback feature tag usage required on manifest while using Unity exported app?

SQL update select statement

'app-layout' is not a known element: how to share Component with different Modules