前回の講座 [sitecard subtitle=PKI講座第2回 url=https://pkiwithadcs.com/data_encryption/ target=] 前回、データの暗号化の技術の概要について紹介しました。[…]
公開鍵暗号化方式とは
公開鍵暗号化方式とは、暗号化と復号に使用する鍵が異なる暗号化方式のことです。
暗号化と復号に使用する鍵は、数学的な関係性があるためペアとなっています。(キーペアと呼ばれます)
キー ペアとなっている鍵でないと、暗号化したデータを復号することはできません。
キーペアとなる鍵は、秘密鍵・公開鍵と呼ばれる組み合わせでできており、使い分けされます。
キーペアのうちの1つの鍵を秘密鍵として内部に保持し、“絶対に” 外から入手できないように厳密に管理します。
もう一方のキーペアの鍵は公開鍵とし、誰でも使用できるようにインターネット上にも公開してしまいます。
公開鍵暗号化方式では、秘密鍵で暗号化したデータは公開鍵でしか復号できず、また公開鍵で暗号化したデータは秘密鍵でしか復号できないという特徴があります。
インターネット上で暗号化通信を行う場合、安全でない通信経路で公開鍵をそのまま相手に渡し、公開鍵で暗号化されたデータを送信したとしても、そのデータを復号できるのは秘密鍵を保持する本人のみです。
そのため、共通鍵暗号化方式のように事前に通信相手と安全な方法で鍵を共有しなくとも、通信相手の公開鍵があれば安全に暗号化したデータを送信できることになります。
公開鍵暗号化方式は、暗号化と復号に使用する鍵が異なることからも推測できるように、アルゴリズムも複雑であり、暗号化・復号における処理速度は遅いという特徴があります。処理速度という観点でみると、比較するアルゴリズムで異なってきますが、共通鍵暗号方式と比べると公開鍵暗号方式では暗号化・復号における処理量は 100 倍~数千倍多くなると言われています。
ハイブリッド暗号化とは
ここまで暗号化と復号に使用する鍵が同じである共通鍵暗号方式と、鍵が異なる公開鍵暗号化方式についてみてきました。
それぞれの暗号化方式の特徴を表にまとめてみると、以下の通り、鍵交換と処理速度の観点では相反する特徴をもっていることがわかります。
|
鍵交換 |
処理速度 |
共通鍵暗号方式 |
鍵をそのまま公開することは不可 |
速い |
公開鍵暗号方式 |
公開鍵を公開しておけば問題ない |
遅い |
公開鍵暗号化方式では、公開鍵をインターネット上で公開しておけば、公開鍵を使ってデータを暗号化できるため、インターネット上でも安全に通信することが可能ですが、暗号化・復号における処理量が多いため、コンピューターへの処理負荷がかかったり、速度への影響も懸念されます。
一方、共通鍵暗号化方式であれば暗号化・復号における処理量は少なく負荷がかからないため、まとまったデータを暗号化するのであれば共通鍵暗号を利用する方が適切です。
ただし、共有鍵暗号方式の場合は暗号化と復号に共通の鍵を使用するため、通信相手と同じ鍵を保有している必要があります。インターネット上でも交換してしまうと悪意のある第三者が鍵を入手できる恐れがありますので、安全な方法で事前に共有しておかなければなりません。
もし、インターネット上で暗号化通信を行う相手が不特定多数いる場合、全ての通信相手とそれぞれを鍵を事前に共有しておくのは現実的ではありません。そこで利用される方法として、共通鍵暗号化方式と公開鍵暗号化方式を組み合わせて利用するハイブリッド暗号が有用です。
ハイブリッド暗号では、公開鍵暗号化方式を利用して共通鍵暗号化方式で利用する鍵を暗号化して、安全に鍵を共有するという方式です。それでは具体的に見ていきましょう。
① まず自分の公開鍵をインターネット上に公開して、誰でも利用できるようにします。
キーペアとなる秘密鍵は、外部に漏れないように厳密に管理します。
② 通信相手の「ねこねこ」は共通鍵暗号で使用する鍵を作成し、「ねこまる」が公開している公開鍵で、共通鍵を暗号化して「ねこまる」に渡します。
③ 「ねこまる」はキーペアとなる秘密鍵を使って、「ねこねこ」から送信されたデータを復号します。
公開鍵暗号化の仕組みでは、公開鍵で暗号化されたデータを復号できるのは、キーペアとなる秘密鍵のみです。そのため、インターネット上でデータを渡して、誰かが盗聴していたとしても、暗号化されたデータを解読することはできません。
「ねこまる」は、復号したデータより、「ねこねこ」が送信した共通鍵が入手できます。
④ 「ねこまる」と「ねこねこ」で同じ共通鍵を共有できたので、共通鍵を用いてごりごり暗号化して通信相手にデータを送りまくります。
「ねこまる」と「ねこねこ」の間でやり取りするデータは、全て共通鍵で暗号化して送っているので、安全にデータを送信することができます。また、暗号化/復号の処理速度が速い「共通鍵暗号」の仕組みを利用して暗号化を行っているので、インターネット上ででもさくさくと安全に暗号化を行うことができます。
このように、ハイブリッド暗号はそれぞれの暗号化方式の特性を利用して、安全に鍵を交換し、処理速度が速い共通鍵暗号化方式のアルゴリズムを利用する方法です。
ハイブリッド暗号は、インターネット上で利用されている安全な通信(SSL や TLS 等)や、Windows OS で個人のファイルを保護できる EFS と呼ばれる機能で利用されています。
公開鍵の正当性
公開鍵暗号化方式における公開鍵とよばれる鍵は、誰でも使えるようにインターネット上で公開してします。
公開鍵で暗号化されたデータは、その公開鍵のキーペアとなる秘密鍵がない限り、復号して読み解くことはできませんので、インターネット上でも安全に利用できます。しかしながら、ここで気になる点として、公開されている公開鍵そのものは、本当に安全なのでしょうか?
もし、悪意のある第三者が作成した公開鍵を通信相手と偽って公開していた場合、公開鍵で暗号化して安全に通信を行ったつもりでも、その悪意のある第三者にデータを盗み見られてしまいます。公開鍵暗号化方式を利用してインターネット上で安全に通信を行うためには、”公開されている公開鍵が、通信したい相手本人の鍵であること” を保証する仕組みが必要です。
公開鍵を保証する仕組みがあれば、鍵の正当性も確認できるため、誤って悪意のある第三者が偽った公開鍵を利用してしまう恐れもありません。この公開鍵を保証する仕組みが “デジタル証明書” と呼ばれる技術になります。
デジタル証明書の詳細な仕組みを説明する前に、まず前提知識としてハッシュ アルゴリズムとデジタル署名という技術を理解しましょう。
次回は、データの改ざんの検知に利用される「ハッシュ アルゴリズム」(ハッシュ関数とも呼ばれます) について説明します。
前回の講座: [sitecard subtitle=PKI講座第4回 url=https://pkiwithadcs.com/public_key_encryption/ target=] ここまでに、データの暗号化方式について紹[…]