公開鍵暗号方式は、暗号化に利用する鍵(公開鍵)と、復号に利用する鍵(秘密鍵)が異なり、暗号用の鍵を公開できることが大きな利点である(図2)。
例えば、別のユーザーから暗号化したデータを送ってもらいたい場合、公開鍵と秘密鍵の鍵ペアを生成し、公開鍵を相手に送ればよいだけである。その際、公開鍵は第三者に盗み見られても問題はない。なぜなら、相手が公開鍵を使用して暗号化したデータは、第三者が持っている公開鍵では復号ができないためである。復号できるのは、対応する秘密鍵を持った自分だけである。そのため、公開鍵を安全でない通信路を使って送ることができ、共通鍵暗号方式に比べ、鍵の交換に手間やコストをかける必要がない。
10人のユーザーと暗号通信を行いたい場合も、一組の鍵ペアを生成し、10人に同じ公開鍵を送るだけでよい。そのため、鍵の管理が大幅に楽になる。多数のユーザー間で暗号通信を行う場合も、各ユーザーがそれぞれ1組の鍵ペアを生成して、公開鍵を公開するだけでよい。
公開鍵暗号方式で最も利用されているのは、RSAである。RSAは、アルゴリズムを開発した3人の暗号学者(Rivest、Shamir、Adelman)の頭文字から付けられた名前であり、1977年に開発された。RSAが多く利用されている理由は、アルゴリズムが公開されており、データ形式などの標準化が進んでいるためである。また、鍵を逆に利用して、秘密鍵で暗号化したデータは公開鍵でのみ復号ができるという性質を利用し、同じ鍵ペアで「電子署名」も行えるためである(電子署名に関しては後述する)。
ただし、一般的にこれら公開鍵暗号方式を利用した暗号処理および復号処理は、共通鍵方式を利用した場合に比べ、処理が非常に重たい。そこで、実際には、ランダムに生成した共通鍵(セッション鍵とも呼ばれる)でデータを暗号化し、データに比べて非常に小さいセッション鍵のみを、公開鍵で暗号化する。
そして、セッション鍵で暗号化したデータと、セッション鍵を公開鍵で暗号化したデータを相手に送信。受信者は、まず自分の秘密鍵で暗号化されたセッション鍵を復号し、セッション鍵を得て、暗号データを復号するのである。こうすることで、コンピュータの負荷を抑えながら、安全な通信が簡単に行えるようになるのである(図3)。
Copyright © ITmedia, Inc. All Rights Reserved.