この記事のポイント
- 秘密鍵で暗号化した場合、公開鍵でしか復号できない
- あるユーザの公開鍵で暗号データを復号できたら、そのユーザは確かに秘密鍵を持っているユーザ自身だとわかる
鍵をかけたデータから、暗号化した相手を特定する
秘密鍵、RSA暗号、楕円曲線暗号
秘密鍵で暗号化もできる
公開鍵暗号方式の解説では、前述の「公開鍵で暗号化して秘密鍵で復号」しか触れられていないことがよくあります。ですが、それだけではありません。秘密鍵で暗号化し公開鍵で復号することもできます。
秘密鍵で暗号化したデータを公開鍵で復号できるということは、データを暗号化したユーザが公開鍵に対応する秘密鍵を持っていることになります。
下の図のように、暗号化されたデータを受信したユーザBがユーザAの公開鍵で復号できるとします。公開鍵で復号できるのは、秘密鍵で暗号化した場合です。ユーザBは、データを暗号化して送信したのは、ユーザAであることを確認できます。
ただし、「秘密鍵で暗号化して公開鍵で復号する」という仕組みに、前述の南京錠のたとえは適用できません。
公開鍵暗号方式のアルゴリズム
公開鍵暗号方式のアルゴリズムは、RSA暗号と楕円曲線暗号の2つがよく利用されています。
RSA暗号は、非常に大きな数の素因数分解が困難であることをもとにして、公開鍵と秘密鍵のペアを生成し、暗号データを演算するアルゴリズムです。
楕円曲線暗号は、楕円曲線上の離散対数問題が困難であることにもとづいて、公開鍵と秘密鍵のペアを生成し、暗号データの演算を行うアルゴリズムです。
データをつくった相手を特定する
次の項目のポイント
- デジタル署名によって、データの送信元と改ざんされていないことを確認できる
- デジタル署名は、データのハッシュ値を秘密鍵で暗号化したもの
デジタル署名とは
デジタル署名
秘密鍵で暗号化したデータは公開鍵で復号できるという仕組みを利用して、データの送信元とデータが改ざんされていないことを確認するためにデジタル署名があります。
データを送信する際に、署名用のデータを付加して送信します。受信側で署名データをチェックすることで、データが改ざんされておらず、なおかつ、送信者が誰なのかが明確になります。
具体的なデジタル署名の内容は、データのハッシュ値を秘密鍵で暗号化したものです。ハッシュ値とは、データから決まった手順で計算した固定長の値です。
デジタル署名の仕組み
データを送信する際にデジタル署名を付加する場合を想定して、デジタル署名による改ざんチェックと送信元の認証の仕組みは次のようになります。
- 送信者が送信するデータからハッシュ値を生成
- 生成したハッシュ値を送信者の秘密鍵を利用して暗号化して署名データを作成
- 送信者はデータと署名データを一緒に受信者に送信
- 受信者は送信者の公開鍵を利用して、署名データを復号する。送信者の公開鍵で署名を復号できるということは、送信者は確かに対応する秘密鍵を持っているということがわかる
- 受信者は受信したデータからハッシュ値を生成
- 受信者が生成したハッシュ値と署名のハッシュ値を比較する。ハッシュ値が同じであれば、データが改ざんされていないことがわかる
暗号化に使う公開鍵は本物?
次の項目のポイント
- 公開鍵が本物であることを保証するデジタル証明書によって、公開鍵暗号方式を安全に利用できるようにする仕組みをPKIと呼ぶ
- デジタル証明書を発行する信頼できる第三者機関をCAと呼ぶ
- デジタル証明書にはCAが保証する本物の公開鍵が含まれている
デジタル証明書とは
公開鍵は本物?
公開鍵暗号は、暗号鍵の配送問題を解決した画期的な暗号方式です。鍵の配送は必要なく、公開された公開鍵で暗号化すれば、対応する秘密鍵を保持する受信者だけがデータを復号できます。
公開鍵暗号を安心して利用するためには、公開鍵が本物であることを確認しなければいけません。
悪意を持った第三者が受信者になりすまして公開鍵を公開する可能性があるからです。すると、その公開鍵を使って暗号化したすべてのデータは、悪意を持った第三者によって復号できてしまいます。
デジタル証明書
それを防ぐために、公開鍵が本物であることを確認し、公開鍵暗号を安全に利用するためのインフラとしてPKI(Public Key Infrastructure)があります。
PKIでは、認証局【CA(Certificate Authority)】という機関が発行したデジタル証明書によって公開鍵暗号を安全に利用できるようにしています。
CAは信頼できる第三者機関です。たくさんのCAが存在していて、CA同士はお互いを信頼しています。デジタル証明書には、公開鍵が含まれています。CAにデジタル証明書の発行を申請すると、申請内容を審査してデジタル証明書を発行してくれます。発行されたデジタル証明書は、サーバなどにインストールして利用します。
デジタル証明書の規格は、X.509が一般的に利用されています。
>>第32回:オンラインショッピングの安全性を確保する【SSL・ハイブリッド暗号・インターネットVPN(Virtual Private Network)・トンネリング】