暗号入門:共通鍵暗号と公開鍵暗号の概要

暗号についての基礎知識を解説
第2回 共通鍵暗号と公開鍵暗号の概要
2003/7/25
  Cryptography
CONTENTS
第1回 暗号とは?
第2回 共通鍵暗号と公開鍵暗号の概要
第3回 共通鍵暗号方式
第4回 公開鍵暗号方式
第5回 ハイブリッド暗号
第6回 認証について
第7回 CA,PKI,鍵共有とは?
第8回 暗号の攻撃法、暗号解読とは?
第9回 暗号技術実装の失敗例
第10回 暗号技術に関する今後の動向
第11回 暗号の2010年問題とは

皆様に多くのお問い合わせをいただいている暗号技術について、暗号入門と題して数回に分けて解説します。
第2回目の今回は、共通鍵暗号と公開鍵暗号についての概要を説明します。
※掲載されている情報は掲載日時点での情報です。

共通鍵暗号について

●共通鍵暗号方式の概念

シーザー暗号 第1回の説明で出てきたシーザー暗号(右図参照)などは、暗号化する時と復号する時に同じ鍵と同じアルゴリズムを使いました。

送信者(暗号化を行う側)と受信者(暗号を受け取って復号する側)が同じ鍵を使うことから「共通鍵暗号方式」と呼ばれています。また、暗号化と復号が逆方向の同じ処理であるところから、「対称アルゴリズム」とも呼ばれます。

この鍵を入手すれば、暗号解読に対して非常に有利になります。したがって、この鍵は第三者に対して絶対に秘密にしておく必要があるため、「秘密鍵暗号」とも呼ばれています。

●共通鍵暗号方式の利点と欠点

暗号の概念として判り易い方式ですが、事前に何らかの方法を用いて「鍵」を受信者側に手渡しておく必要があります。万一、その時点で第三者に「鍵」が漏れてしまえば、その後の暗号を全て解読されてしまう危険性が高くなります。

したがって、「どうやって安全に鍵を相手に渡すのか?」と言う大きな問題が残ります。もし「安全に鍵を渡す方法」が有るのならば、「その方法で情報自体を送れば良い」と言う矛盾も生まれて来ます。
また、多数の相手に対して同様の暗号化を行う場合、相手の数だけ鍵を用意する必要があります。もし1つの鍵だけを使って暗号化した場合は、A社に送った内容がB社にもC社にも解読できてしまうことになるからです。これでは「暗号」とは言えなくなってしまいます。

その反面、暗号化と復号に同じ鍵を使うことから、高速な処理が可能になります。

公開鍵暗号について

●公開鍵暗号方式の概念

公開鍵暗号の概要 暗号化に使用する鍵と復号に使用する鍵がそれぞれ違う鍵を使う方式です。(右図参照)

片方の鍵を相手に公開することから「公開鍵暗号」と呼ばれています。また、暗号化と復号が違う処理で行われることから、「非対称アルゴリズム」とも呼ばれます。

それでは、実際のやり取りの流れを見てみることにします。

(1) 受信者は「秘密鍵」と「公開鍵」をペアで作成します。
(2) 「公開鍵」の方は公開し、「秘密鍵」は自分で保管しておきます。
(3) 送信者は受信者の公開鍵を入手し、その鍵を使って暗号化を行います。
(4) 受信者は保管しておいた秘密鍵を使って復号します。(下図参照)

公開鍵暗号の流れ

この公開鍵暗号が成立する条件としては、

[一方の鍵から、もう一方の鍵を導き出すことはできない]
[一方の鍵で暗号化したものは、もう一方の鍵でしか復号できない]

と言うことが成り立つ必要があります。

●公開鍵暗号方式の利点と欠点

1つの鍵を公開しておけば、誰にでもその鍵を使ってもらうことができます。
したがって、多数の相手とのやり取りを行う場合でも、自分の秘密鍵だけを管理しておけば良く、鍵の管理が煩雑になることはありません。
しかし、アルゴリズムが非対称であること、数学的に難しい処理が多いことなどにより、高速での処理が難しくなります。

●デジタル署名などへの利用

一方の鍵で暗号化したものは、もう一方の鍵でしか復号できないと言う性質を利用して、デジタル署名などの本人確認に応用することができます。(下図参照)

デジタル署名の流れ

鍵作成者の秘密鍵で暗号化した署名文を、公開鍵で復号できれば、本人であることの確認に利用することができます。

共通鍵暗号と公開鍵暗号の比較

上記の内容より、共通鍵暗号方式と公開鍵暗号方式とを比較すると、次の表のようになります。

  共通鍵暗号方式
(対称アルゴリズム)
公開鍵暗号方式
(非対称アルゴリズム)
暗号鍵と復号鍵 暗号鍵=復号鍵(共通) 暗号鍵≠復号鍵
秘密に保管すべき鍵 多数(相手毎に必要) 自分の秘密鍵のみ
相手への鍵の受渡し 秘匿が必須 公開可
処理速度 高速 低速

ハイブリッド方式

実際の暗号通信が行われる場合は、共通鍵暗号方式、公開鍵暗号方式のメリットとデメリットを考慮し、その両方を組み合わせて使った形での通信が行われていることが多くあります。

「平文(データ)」を共通鍵暗号方式で暗号化します。そして、「共通鍵」自体は公開鍵暗号方式で暗号化して送り、鍵を共有します。「暗号文」と「公開鍵で暗号化された共通鍵」を受け取った受信者は、「公開鍵で暗号化された共通鍵」を「秘密鍵」で復号し、その復号した「共通鍵」を使用して「暗号文」を復号する方法です。

ちょっと判り難いですが、下の図のようになります。

ハイブリッド方式の概要

これにより、平文(データ)自体は速度の速い共通鍵暗号方式で暗号化/復号を行うため、安全性を落とさずに、処理速度をかせぐことができます。
また、共通鍵をセッション毎に変更することも可能(セッション鍵と呼ぶこともある)となり、万一共通鍵での暗号部分が解読されても短い時間しかクラッキングできなくなります。

■参考文献
「基礎暗号学I」加藤正隆著(サイエンス社)
「現代暗号」岡本龍明・山本博資著(産業図書)
「暗号理論」伊藤正史著(ナツメ社)

>>「第3回 共通鍵暗号方式」へ