全ての通信相手に鍵を効率的かつ安全に渡す方法はないのでしょうか?
「公開鍵暗号」という方式を使うことで、鍵配布の問題を解決できます。
共通鍵暗号の「鍵の配布と管理」の問題を解決するのが、「公開鍵暗号」です。公開鍵暗号方式では、暗号化通信を行う前に、受信者が「公開鍵」と「秘密鍵」という2種類の鍵のペアを用意します。そして、公開鍵は文字通り誰でも手に入れられるように公開しておき、秘密鍵は受信者本人だけが持っておきます。このとき最も重要なポイントは、「公開鍵で暗号化したデータはペアの秘密鍵でしか復号できず、秘密鍵で暗号化したデータはペアの公開鍵でしか復号できない」という点です。
この性質を利用し、公開鍵暗号でデータを送信するときには、送信者が「受信者の公開鍵」を使ってデータを暗号化します。受信者の公開鍵は公開されているため、暗号化は誰でもできます。一方、公開鍵で暗号化されたデータを復号できるのは、ペアの秘密鍵を持っている受信者だけです。この仕組みにより、暗号化通信の相手が何人になっても、鍵は各受信者が2つずつ用意するだけで済みます。
「ハッシュ」や「認証」はどうやって実現するのですか?
公開鍵暗号を使うことで、ハッシュや認証も実現できます。
公開鍵暗号では、データの受信者が「公開鍵」と「秘密鍵」を用意することで、鍵配布の問題を解決すると説明しました。実はそれ以外にも、データの“送信者”が自分の「公開鍵」と「秘密鍵」を使用することで、「ハッシュ」や「認証」の仕組みを実現することができます。
具体的に説明すると、送信者はデータのハッシュ値を計算した後、「自分の秘密鍵」を使ってそれを暗号化し、データと共に送信します。データの受信者は、「送信者の公開鍵」を使い、受け取ったハッシュ値を復号します。このとき、復号したハッシュ値と、データから計算したハッシュ値が一致すれば、「データが改ざんされていないこと」を確認できます(ハッシュ)。また、送信者の公開鍵を使ってハッシュ値を復号できるということは、「そもそもそれを暗号化したのが、秘密鍵を持つ送信者本人であること」の証明にもなります(認証)。
これが、通信における「改ざん」や「なりすまし」を防ぐための「デジタル署名」の仕組みです。デジタル署名は「間違いなく本人がそのデータを送信した」という証明になりますので、「インターネットで商品を購入した後、そのことを否定する」といった「否認」の防止にも使われます(ただし、「秘密鍵が安全に保管されている」という前提が必要です)。
ちなみに、赤の他人が本人を装って勝手に鍵を生成していないことを証明するために、「認証局」が存在しています。認証局については第3回を参照してください。
次ページからは、暗号の処理速度と安全性について解説します。
Copyright © ITmedia, Inc. All Rights Reserved.