みなさん、こんにちは!
ブリュの公式ブログ.netにお越しいただきまして、ありがとうございます。
このサイトでは、ITについて特化したサイトを運営しています。
今回は、情報セキュリティ分野について、
- 公開鍵暗号
- 共通鍵暗号
について紹介します。
ざっくりとした要約ですが、
- 公開鍵暗号:公開鍵と秘密鍵
- 共通鍵暗号:共通鍵のみ
となります。
そして、公開鍵暗号では、公開鍵は世界中に公開可能な一方、秘密鍵は門外不出なトップシークレットです。
一方の共通鍵は、通信相手とだけの2人だけの秘密。
共通鍵が第三者に漏れない限り安全ですが、もしも漏れてしまうと一発アウトです。
この辺りについて、詳細を説明していきます。
目次
公開鍵暗号
公開鍵の暗号化キーの管理
公開鍵暗号では、公開鍵と秘密鍵があります。
公開鍵と秘密鍵の取り扱いですが、
- 公開鍵:世界中に公開可能
- 秘密鍵:門外不出のトップシークレット
となります。
公開鍵と秘密鍵は対になっていて、互いに解読時のキーになります。
下の表を見てください。
公開鍵で解読 | 秘密鍵で解読 | |
公開鍵で暗号化 | 解読不可 | 解読可能 |
秘密鍵で暗号化 | 解読可能 | 解読不可 |
つまり、公開鍵で暗号化したものは、公開鍵では解読できません。
公開鍵で暗号化したものは、秘密鍵で解読する必要があります。
例えば、サーバーが秘密鍵を持っていて、世界中のユーザーに公開鍵をバラまいていた場合、ユーザーからサーバーへの一方通行の暗号化は成立します。
そして、公開鍵しか持たないほかのユーザーは、公開鍵で暗号化されたデータを解読はできません。
もしもですが、秘密鍵が外部に漏れたら暗号化のセキュリティは一気に崩壊します。
公開鍵暗号のポイントは、
- サーバーは秘密鍵を何としても守ること
→秘密鍵をサーバー外に登録とか絶対にありえない - 公開鍵は全ユーザー(悪意あるユーザーも含め)世界中に対して公開可能
→公開鍵は誰が所有してもオールOK。 - 公開鍵暗号では一方向の暗号化のみが可能
→後ほど図を用いて説明します。
ということです。
情報処理技術者試験では、「SSLにおいてCA(認証局)に登録するのは公開鍵か秘密鍵か」といった感じの問題が出題されますが、秘密鍵は絶対にありえませんから。
暗号化キーの外部登録系はだいたい公開鍵です。
そうしないと、ITにおける暗号化技術が崩壊します。
上記の問題は、午前試験での出題があると思いますが、間違えないようにしましょう。
午後問題で出題されれば、もはやサービス問題です。
公開鍵暗号の一方向暗号化通信
公開鍵暗号は、公開鍵で暗号化されたものは秘密鍵のみで解読できます。
一方、秘密鍵で暗号化したものは、世界にばらまかれている公開鍵で解読できます。
つまり、公開鍵で暗号化したものは暗号化の意味がありますが、秘密鍵で暗号化したものは暗号化通信の意味を成しません。
そのため、公開鍵暗号は、秘密鍵を持つ端末に向けての一方向暗号化通信のみが成立します。
計算速度の遅い公開鍵
公開鍵は、計算時間がかかってしまうのが難点です。
このあたりの詳しい話は、情報処理技術者試験では出題範囲外(たぶん、数学者の考える領域です。)なので、詳しいことまでは書きませんが、一般的には後述の共通鍵暗号のほうが解読時間が高速です。
余談ですが、最近では公開鍵暗号のデメリットとして、計算速度についてはあまり関係ない(本質ではない)と感じています。
インターネットの世界では、大きな画像を送信する場合、
- そのまま送信(通信に負荷をかける)
- 圧縮して送信(コンピューターの計算に負荷がかかる)
の場合、後者のほうが高速といわれています。
つまり、パソコンに負担をかけてでも通信量を減らすのが今のトレンド。
コンピューター技術の進化により、コンピューター性能よりも通信性能がボトルネックになっており、昔ほどコンピューターの計算時間を過度に気にする必要性も低いようには感じます。
共通鍵暗号
共通鍵の暗号化キーの管理
共通鍵暗号は、暗号化も解読も同じ共通鍵で行います。
つまり、共通鍵暗号で暗号化通信を成立させるためには、何らかの方法で、通信する相互が共通鍵を持っている必要性があります。
ここが面白いのですが、暗号化キーを相互に持つために暗号化技術が必要になります。
要するに、暗号化技術を適用するために暗号化技術が必要になるっていう、思考回路が無限ループになるんですね。
当然ですが、共通鍵暗号のために、共通鍵を平文(暗号化していない状態)で送信するなんて絶対にダメなことなんです。
共通鍵の双方向暗号化通信
すでに説明のとおり、共通鍵暗号は、共通鍵で暗号化したものは共通鍵で解読できます。
すなわち、何らかの安全な方法で端末間で共通鍵を共有できれば、双方向に暗号化通信が可能になります。
この点が、公開鍵暗号と大きく異なる部分です。
計算速度の速い共通鍵暗号
一般的には公開鍵暗号よりも、共通鍵暗号のほうが解読が早いです。
つまり、セキュリティ上の鍵の管理がややこしく、使いにくい共通鍵暗号ですが、通信の高速化のためには、できるだけ共通鍵暗号を使いたいんですね。
つまり、
- 使いやすいけど遅い、公開鍵暗号
- 使いにくいけど速い、共通鍵暗号
の、互いの欠点を補い長所を生かす暗号化方式、それが、ハイブリッド暗号化方式です。
※ハイブリッド暗号化方式は、SSLで使われています。
ハイブリッド暗号化方式
公開鍵暗号と共通鍵暗号を比較すると、下の表になります。
公開鍵暗号 | 共通鍵暗号 | |
配布用の鍵の配りやすさ | 容易(公開鍵をバラまく) | 難しい |
暗号化の方向 | 一方向のみ暗号化 (公開鍵で暗号化→秘密鍵で解読) |
双方向暗号化 |
計算時間 | 遅い | 速い |
それなら、公開鍵で共通鍵を送付して共通鍵暗号すれば安全なのでは・・・?というのが、ハイブリッド暗号化方式です。
ハイブリッド暗号化方式の仕組みは、
- サーバーが通信相手に公開鍵を送付(世界にバラまく)
- 通信相手は公開鍵で共通鍵を暗号化しサーバーに送付
- サーバーは秘密鍵を使って送信データから共通鍵を取り出す
- 共通鍵暗号で双方向通信開始
となります。
この辺りは、SSL/TLSの暗号化通信確立までの流れで説明していますから、ご覧ください。
まとめ
ここまで、公開鍵暗号と共通鍵暗号について紹介してきました。
一般の方が触れる暗号化方式としては、主にインターネットのSSL通信が多いでしょう。
SSL通信は、ハイブリッド暗号化方式といわれ、公開鍵暗号と共通鍵暗号の、
- お互いがお互いの欠点を補いあい
- 長所を生かす
方式がとられています。
ハイブリッド暗号化方式は、SSL/TLSの暗号化通信確立までの流れで説明していますから、ご覧ください。
なお、通信における暗号化技術は100%の安全性は保障しません。
基本的に情報セキュリティにおける暗号化の安全性の定義としては、
“既存のコンピューター性能によって、有限時間内に解読できないこと。”
が条件です。
つまり、コンピューター技術の進化により、既存のコンピューター性能の概念が変わったり、有限時間ではなく無限時間をかけて暗号解読を行った場合は、突破される可能性はあるわけです。
参考にですが、定期的にパスワードを変更するようにアナウンスがあるのは、様々な理由がありますが、このセキュリティで示している有限時間の前提条件を確保するためと考えることもできます。
そのため、意外とインターネットってセキュリティがあるようで無い世界ですので、セキュリティ意識を高め、自衛手段を講じてください。
以上、公開鍵暗号と共通鍵暗号について、参考になれば幸いです。