暗号とは、秘密通信の手段としてデータにさまざまな操作を施し、正当な権限者以外には読めないようにする方法をいいます。暗号はセキュリティ要件のうち「機密性」と「完全性」の確保に非常に有効な技術です。
暗号の歴史
歴史的に最初の暗号として有名なので、ジュリアス・シーザーの暗号(いわゆる「シーザー暗号」)です。シーザー暗号は、元の文書の各文字を、アルファベットや五十音の順番に一定間隔だけずらした文字に変換する初歩的な暗号です。
たとえば五十音で3文字ずつ前方にずらす場合、「あ」は「え」に、「い」は「お」に、「う」は「か」になり、「あんごう」は「えうずか」となります。この元の文書を「平文、字をずらすといった変換方法を「アルゴリズム」、ずらす間隔を「鍵(k e y )」、アルゴリズムと鍵を使って平文から暗号文を作成する作業を「暗号化」、暗号文を平文にもどす作業を「解読」といいます。
第三者は、ネットワークなどを通じて不正に暗号文を入手しても、アルゴリズムと鍵を知らないと解読できません。第三者がアルゴリズムと鍵を発見するまでに、正当な所有者が目的の作業を完了したり秘密情報が陳腐化してしまう、
この時間差が文書を暗号化する最大のメリットです。暗号の種類は、理論上、各文字をほかの文字、数字、記号などで置き換える「換宇式暗号」、各文字の順序を変える「転置式暗号」、各文字間に余計な文字を挿入する「挿入式暗号」の3 つに分類されます。シーザー暗号は換字式暗号の典型例です。特定のグループ内で情報を伝達するため、現在でも頻繁に利用されている「符丁(隠語)」もこれに該当します。転置式暗号としては平文を単純に後ろから読んだり、横書きで数行にわたって書かれた平文を縦に読んだりするもので、挿入式暗号としては挟み言葉が典型です。
暗号技術の発展は、戦争や軍事機密と密接な関係があります。第二次大戦中に暗号の作成・解読のため、統計学者や数学者、言語学者といった研究者が大規模に動員されたことは有名です。軍事情報の場合、アルゴリズムと鍵を秘密にして運用するのが一般的です。軍事情報は限定され管理された当事者間の情報伝達が主で、アルゴリズムと鍵を秘密にして暗号強度を維持しています。しかしビジネスやネットワーク上の情報伝達は、多数の相手と情報を共有するため、異なったアルゴリズムを使用すると運用が極度に煩雑になります。
むしろ、多数の相手とアルゴリズムを共有し、特定の二者間で鍵を共有するほうが現実的です。そこで一般に利用される暗号は、アルゴリズムを公開して鍵を秘密にするタイプ(鍵さえ秘密にしておけば十分に安全で強力なアルゴリズムを採用)です。この暗号の代表格が、「共通鍵暗号方式」と「公開鍵暗号方式」です。
おなじみの共通暗号方式
共通暗号方式は、従来から広く用いられてきた方法で、秘密鍵暗号方式、対称鍵暗号方式とも呼ばれます。この共通鍵暗号方式は、暗号化と復号化に「同一」の鍵を使用します。送信側では平文を鍵を使って暗号化し、受信側では送信側と同じ鍵で復号して平文を得ます。
公開暗号方式
公開鍵暗号方式とは、は開鍵」と「秘密軋の2つの非対称なデータ暗号化鍵を使用して、暗号化と復号化に別々の鍵を用いる仕組みで、非対称鍵方式とも呼ばれます。この公開鍵暗号方式では、暗号化を公開された鍵で行い、秘密鍵で復号化をします。暗号化に使われる公開鍵は誰でも使用できるように一般に配布し、復号用の秘密鍵は秘密にしておきます。ところで、共通鍵(秘密鍵)暗号方式、つまり従来の暗号体系の考え方に慣れいる人には、アルゴリズムはおろか鍵まで公開してしまったら、暗号にならないのでは、という心配があります。
しかし、ここに天才的な発想があるのです。普通の鍵は、開閉に同じ鍵を使いますが、双方に別の鍵を使ってもよいのでは、という天才的な発想によるものです。これこそ「コロンブスの卵」です。
公開鍵暗号の特長
公開鍵暗号は共通鍵暗号と比べて、次のような特長を持ちます。
デジタル署名(偽造不可能な署名)の実現
公開鍵暗号の発明の重要性は、むしろこのデジタル署名の実現にあるといえます。共通鍵暗号では、鍵が当事者間で共有されているため、共通鍵で作成された文書は、同じ鍵を所有する2 人のうち、どちらが作成したかを特定することができません。
公開鍵暗号は、秘密鍵を所有する者がただ一人であるため、「(同鍵で作成された)文書は確かに同鍵の所有者が作成したことを確認できる」という意味で証拠性を持ちます。
これによって、インターネットを利用する電子商取引などへの暗号の応用分野を大幅に広げることになりました。公開鍵暗号方式と共通鍵暗号方式では、ちょうど逆の手順になっています。秘密鍵と公開鍵を使うかたちが逆になっている点に注意してください。
鍵配送の容易さ
共通鍵暗号方式では、情報をやりとりする当事者が鍵を共有するため、同じ鍵を秘密裏に入手しなければなりません。公開鍵暗号方式では、通信相手の公開鍵の正当性を確認するしくみは必要になりますが、秘密裏に入手する必要はなくなるため、鍵配送が容易になります。
必要な鍵数の大幅減少
閉める鍵と開ける鍵が必要なのになぜ減少するの、と思われる方もいるのではないでしょうか。しかし、n人の利用者がお互いに通信を行う場合、共通鍵暗号ではそれぞれの相手と別々の鍵を使って通信をする必要があるため、。nC2(=n(n-1)/2)種類の鍵が必要になります。
通信相手が増えれば、等比級数的に鍵数も増えることになります。一方、公開鍵暗号では、2n個で済みます。
共通鍵暗号方式の鍵の配送問題を解決した公開鍵暗号方式は、一見メリットばかりのようですが、共通鍵暗号方式に比べて処理速度が遅いというデメリットがあります。スピードはいずれテクノロジーが解決してくれるでしょうが、現状では長文の文書全体を暗号化するのに向いていません。そこで、共通鍵と公開鍵暗号方式を組み合わせたハイブリッド処理により、相方の弱点を補った暗号処理が採用されています。