大事な鍵(かぎ)をネットワークを使って送れるようにした仕組みが秘密鍵と公開鍵です。これらは,なりすましや改ざん防止にも使われています。

 前回,4つのセキュリティ・モデルのうち,情報の秘匿のために用いられる「暗号」について解説しました。この過程で鍵が重要な役割を果たすことが分かったと思います。

 お互いに事前に共有した数値情報である鍵を使って,送信側では平文を暗号化して通信路に送り出し,受信側では同じ鍵を使って暗号文を元の平文に復号化します。鍵はセキュリティ上非常に重要なので,30年前までは,通信路で送ってはいけないというのが常識でした。鍵はいったん悪意を持つ者に盗聴されると,何の役にも立ちません。通信に先立って鍵をどうやって安全に交換するかは,当時から大きな課題でした(図1)。

図1●共有鍵暗号の問題点
図1●共有鍵暗号の問題点
[画像のクリックで拡大表示]

鍵の交換は公開鍵暗号で

 この問題について,長い時間かけて検討していたのがデフィー(Whitfield Diffie)というマサチューセッツ工科大学(MIT)の研究者でした。

 デフィーはそれまで研究者としては恵まれた地位にありませんでした。スタンフォード大学のヘルマン(Martin Hellman)との共同研究で,この鍵交換問題に対する解決策を思い付いたといわれています。

 デフィーの着想は,鍵を2種類に分けるというものでした(図2)。一つめの鍵は,それまでと同様に大切に扱う鍵で「秘密鍵」といいます。もう一つの鍵は「公開鍵」です。秘密鍵があれば,ある手順により公開鍵を容易に作り出せます。しかし公開鍵から秘密鍵は作り出すことができない,もしくは作り出すのに天文学的な時間が必要となるというものです。

図2●秘密鍵と公開鍵
図2●秘密鍵と公開鍵

 この秘密鍵と公開鍵はペアで不思議な動作をします。その不思議な動作を図3で説明します。

図3●不思議な箱と不思議な鍵
図3●不思議な箱と不思議な鍵

 この鍵ペアで操作できる宝箱があります。しかし普通の宝箱と違って,公開鍵で閉めるとそのペアである秘密鍵でなければ開きません。箱を閉めた公開鍵そのものでも,その箱を開けることはできないのです。

 今度は秘密鍵で宝箱を閉めてみます。すると,今後はそのペアとなっている公開鍵でなければ箱は開きません。箱を閉めた秘密鍵を使っても箱は開かないのです。不思議な箱と不思議な鍵です。

 デフィーとヘルマンはこの仕組みで,鍵交換問題をどのように解決したのでしょうか?

 まず通信に先立ち,暗号メッセージを受け取ろうとする側のAliceは事前に秘密鍵と公開鍵のペアを作成します。そして公開鍵を送信側のBobに送ります(図4)。

図4●Bobは事前にAliceの公開鍵を入手しておく
図4●Bobは事前にAliceの公開鍵を入手しておく
[画像のクリックで拡大表示]

 この公開鍵は暗号化される前の通信路で送られますから,誰に盗聴されているか分かりません。それどころか,Aliceは自分と通信したいと思う不特定多数の相手に,公開鍵をばらまいてしまいます。

 Aliceにメッセージを送りたいBobは,Aliceの公開鍵を使ってメッセージを暗号化します(図5)。この暗号文はネットワークを使って送られます。ネットワークは皆が使うので,暗号文は盗聴者Eveに見られているかもしれません。

図5●盗聴者Eveは公開鍵では解読できない
図5●盗聴者Eveは公開鍵では解読できない
[画像のクリックで拡大表示]

 公開鍵で暗号化したら,秘密鍵でなければ復号化できませんでしたから,鍵作成者のAliceしか復号化できません。盗聴者Eveは暗号文を解読しようとしても,公開鍵では不可能です(図5)。かといって秘密鍵を作り出すのは,至難の業です。

 このように,Aliceは作成した秘密鍵を誰にも見せずに安全なところに保管しておき,そのペアである公開鍵を必要な人にばらまくという方法で,安全が保証されていない通信路でも鍵交換の心配なく暗号化されたメッセージを送信できるのです。

 AliceがBobに返答するときも同じです。Aliceは返答文を秘密鍵で暗号化するのではなく,Bobが事前に配った公開鍵で暗号化します。

 デフィーのこのアイデアは公開鍵暗号方式といって,従来の鍵のコンセプトを覆す画期的なものでした。これを着想したのは,およそ30年前の1974年といわれています。

この先は会員の登録が必要です。今なら有料会員(月額プラン)が2020年1月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら