常識外れの公開鍵暗号

ホームアルゴリズム入門講座 > 常識外れの公開鍵暗号

常識外れの公開鍵暗号

「鍵」とは?

暗号化の基本的な用語を整理します。

まず、暗号化する前のデータを「平文」と言います。それを「暗号化」して「暗号化されたデータ」になります。暗号化は「エンコード」とも言います。また、暗号化されたデータを元にもどすことを「復号化」といい、「デコード」とも言います。

暗号化の際には「アルゴリズム」と「鍵」を用います。たとえば、次のようなものです。

[ アルゴリズム ]
アルファベットを n だけずらす

[ n ]
2

[ 平文 ]
s a t o s h i

[ 暗号化 ]
s-t-u
a-b-c
t-u-v
o-p-q
s-t-u
h-i-j
i-j-k

[ 暗号化されたデータ ]
u c v q u j k

この例では「アルファベットを n だけずらす」がアルゴリズムで、「n = 2」が鍵です。この暗号化アルゴリズムは「シーザー暗号」(シフト暗号)と呼ばれます。アルファベットは26文字ですから、n = 16 という鍵を用いれば、1回目で暗号化、2回目で復号化、という処理になります。

「アルゴリズム」と「鍵」を分ければ、「アルゴリズム」がバレても「鍵」がバレなければよいというメリットがあります。現在の暗号化ではこのように、「アルゴリズム」と「鍵」を用います。

共通鍵の弱点

上の例では、n = 3 を「暗号化」の鍵としましたから、n = 3 でずらす方向を変えれば復号化できてしまいます。このように、暗号化と復号化で同じ鍵を用いる暗号化方式を「共通鍵暗号化方式」と言います。

暗号は他人(味方)に伝えるために存在します。ですから、共通鍵を用いて暗号化した場合、暗号化したデータだけでなく、共通鍵も渡さなくてはなりません。上の例だと、相手に「ucvqujk」というデータと「n = 3」という鍵を渡す必要があります。

しかし、共通鍵が盗まれてしまったら、敵に簡単に復号化されてしまいます。通信途中で盗まれる可能性があるから暗号化しているのに、共通鍵も通信しなければならないのは矛盾しています。

「公開鍵暗号方式」が開発されるまでは、より安全性の高い経路で鍵だけを通信し、容量の大きい暗号化されたデータはより通信効率のよい経路で通信していました。それが、「公開鍵暗号」の登場で変わったのです。

公開鍵と秘密鍵

公開鍵暗号方式では、暗号化する鍵と復号化する鍵が別です。それらは「公開鍵」と「秘密鍵」と呼ばれます。

データを受信したい人を「受信者」とし、送信したい人を「送信者」とします。公開鍵暗号方式ではまず、「受信者」が動きます。

受信者は「鍵生成プログラム」と呼ばれるプログラムを実行し、「公開鍵」と「秘密鍵」を得ます。次に、「公開鍵」を公開します。

送信者は「公開鍵」を用いてデータを暗号化し、受信者に渡します。受信者は「秘密鍵」を使って、復号化し、平文を得ます。

このように「公開鍵」と「秘密鍵」を使い分けることによって、安全性は高まります。そして、この方式には副産物も生まれます。それが「認証」です。

認証

公開鍵暗号の副産物としてとても重要なのが「認証」です。

暗号は「公開鍵」で暗号化しますが、認証は「秘密鍵」で暗号化します。すると暗号は「秘密鍵」で解読でき、認証は「公開鍵」で解読できます。つまり、秘密鍵で暗号化すれば、誰でも復号化できるのです。

「証明書」が暗号化されて送られてきました。これをAさんの「公開鍵」でBさんが復号化することができたとしたら、「証明書」は間違いなくAさんの「秘密鍵」で暗号化されたことを意味します。そして、「秘密鍵」はAさん以外は知りません。よって、「証明書」がAさんのものであると「認証」できます。

公開鍵暗号は普通の人にとっては認証の方がより身近です。

まとめ

公開鍵暗号は「鍵」の概念を覆す画期的な方式です。アルゴリズム入門講座では代表的な公開鍵暗号方式の「RSA暗号」のアルゴリズムを解説します。