公開鍵暗号方式
インターネットのような不特定多数の人が使うネットワークでは、重要なデータを暗号化する時に他の人が復号化できない仕組みが必要です。
本項では、公開鍵暗号方式について説明します。
公開鍵暗号方式とは
公開鍵暗号方式は、2つの対になる秘密鍵と公開鍵を使うのが特徴です。
秘密鍵は公開しませんが、公開鍵は通信時に送信して誰でも使えるようにします。
上の図では、サーバーから公開鍵が送信されています。この公開鍵を使ってパソコンがデータを暗号化して送信した場合、対となっているサーバーに保管された秘密鍵でしか復号化できないようになっています。
公開鍵暗号方式のアルゴリズムとしては、よくRSAが使われます。鍵長は、最大4,096bitです。
共通鍵暗号方式との組み合わせ
公開鍵暗号方式は、共通鍵暗号方式と比べると処理に時間がかかって通信が遅くなるのがデメリットです。このため、多くの通信では最初に公開鍵暗号方式を使い、途中で処理の速い共通鍵暗号方式に切り替えてデータのやりとりをしています。
共通鍵暗号方式は、共通鍵を渡すのが課題になります。相手に同じ鍵を設定してもらうために公開すると、他人に鍵を知られて傍受される危険があるためです。
このため、公開鍵暗号方式で暗号化された通信路を確保し、その通信路の中で共通鍵を作成します。
これによって、共通鍵を渡す課題がクリアでき、以後は共通鍵暗号化でデータのやりとりができるという訳です。
電子署名
公開鍵を使って暗号化したデータは、秘密鍵でしか復号化できないと説明しました。この逆で、秘密鍵で暗号化したデータは、対になっている公開鍵でしか復号化できません。
これを利用して、データ改ざんの検知が行えます。
サーバーからデータを送信する時、データを秘密鍵で暗号化したものも同時に送信します。これを電子署名と言います。
パソコンでは、電子署名をサーバーの公開鍵で復号化します。これで、データと復号化したものが一致していれば、通信相手の秘密鍵で暗号化されたものと判断できます。
もし、途中でデータが改ざんされていると、復号化しても一致しません。
また、送られてきた公開鍵に対応した秘密鍵を持つサーバーからのデータということも保証されます。
デジタル証明書
公開鍵を送信する時は一般的に単体で送られるのではなく、デジタル証明書という形で送られてきます。デジタル証明書には、組織の情報やサーバーのFQDN、公開鍵などが含まれています。
デジタル証明書を受信した機器は、デジタル証明書の中の公開鍵を利用して暗号化に使います。
サーバー側で取得するデジタル証明書は、サーバー証明書と言います。パソコンもデジタル証明書を取得できて、その場合はクライアント証明書と言います。
認証局
デジタル証明書は、認証局が発行します。
例えば、サーバーで秘密鍵と公開鍵を作成し、公開鍵などを認証局に送ります(秘密鍵は送りません)。認証局は、送付された公開鍵と組織の情報、FQDNなどからデジタル証明書を発行します。
このデジタル証明書をサーバーに登録すれば、通信時にパソコンに送付して公開鍵暗号が実現できるという訳です。
PKI
認証局は、誰でも作れます。このため、悪意ある認証局があった場合、偽りのデジタル証明書を発行するかもしれません。このデジタル証明書を使うと、成りすましたサーバーと通信して、データを盗まれたりします。
これを防ぐ仕組みが、PKI(Public Key Infrastructure)です。
認証局には、広く公開されたパブリック認証局があります。パブリック認証局は、デジタル証明書を発行する前に、送られてきた組織の情報が正確か、ドメインの正当な所持者かなどを審査します。この審査に合格した場合のみ、デジタル証明書を発行します。
この時、デジタル証明書には認証局の秘密鍵で暗号化した電子署名が付与されます。
このデジタル証明書は通信時に送信されますが、これとは別によく知られたパブリック認証局のデジタル証明書は、パソコンなどに最初から登録されています。このデジタル証明書の公開鍵を使って、電子署名を復号化してサーバーから受信したデジタル証明書のデータと付き合わせます。これが一致すれば、パブリック認証局が発行した正規のデジタル証明書であると判断されます。
パブリック認証局が発行した正規のデジタル証明書であれば、信頼できる審査などを受けたドメインの正当な持ち主と判断できます。
要約すると、以下になります。
- 信頼できる認証局のデジタル証明書は、最初からパソコンに登録されている。
- サーバーから送られる証明書は、認証局の電子署名によって信頼できるか判断される。
- 上記で信頼されるサーバー証明書だった場合、正常に通信が開始される。
正規のデジタル証明書でない場合、警告が表示されたり通信できなかったりします。
パブリック認証局がデジタル証明書を発行するのは多くの場合、有料です。ただし、非営利団体などが無償で発行する認証局(Let's Encryptなど)もあります。
プライベート認証局
組織内だけで使うなどの理由で自分で作った認証局は、プライベート認証局と言われます。この場合、その認証局のデジタル証明書はパソコンなどに登録されていないため、手動で登録が必要です。
例えば、Google Chromeでは設定で、「プライバシーとセキュリティ」→「証明書の管理」を選択して開いた画面で「信頼されたルート証明機関」タブを選択します。すると、現在信頼している機関が表示されます。
認証局を自分で作成した場合、インポートをクリックして証明書を信頼できる機関として登録します。これで、パブリック認証局の時と同じように、登録した認証局が発行したデジタル証明書が信頼されます。
前のページ「共通鍵暗号方式」