1. 公開鍵暗号化方式と共通鍵暗号化方式から理解するSSL通信について

公開鍵暗号化方式と共通鍵暗号化方式から理解するSSL通信について

  • このエントリーをはてなブックマークに追加

SSL通信の必要性が様々な場面で言われていますが、なぜ重要なのかについて技術的な部分から理解している人はそれほど多くありません。なぜSSL通信は安全なのか?また「公開鍵暗号方式」と「共通鍵暗号方式」という暗号化の手法は、実際のSSL通信でどのように使われているのか、セキュリティ担当者としては、その辺の事情をしっかり理解しておきましょう。

共通鍵暗号方式と公開鍵暗号方式の仕組み

暗号方式は研究中のものを含めると多数の方式があります。現在一般的に使われている二者間の通信を暗号化する場合に最も一般的な方式としては「共通鍵暗号方式」と「公開鍵暗号方式」があげられます。
両者の違いは、「暗号化」(及び暗号を元に戻す「復合」)に「公開鍵」をつかうか「共通鍵」を使うかにあります。

公開鍵暗号化方式の仕組みと流れ

公開鍵暗号方式は、暗号化(復号)するときに「公開鍵」と「秘密鍵」という別々の鍵を使うのが特徴です。「公開鍵」は公開されている誰でも取得できる鍵ですが、「秘密鍵」は 受信側だけが保持している鍵となります。

暗号化から復号までの流れは以下のようになります。

  1. 送信側にて、受信側が公開している「公開鍵」を手に入れます。この「公開鍵」を使って自分が送りたいデータを暗号化して受信側に送信します。
  2. 受信側は、送信者が送ってきたデータを「秘密鍵」で復号してデータの暗号化を解除します。

最初に送信側が使う暗号化の鍵が公開されているのが特徴です。

図:公開鍵暗号方式の暗号化と復号
図:公開鍵暗号方式の暗号化と復号

共通鍵暗号化方式の仕組みと流れ

公開鍵暗号方式が「公開鍵」と「秘密鍵」という別々の鍵を使ったのに対し、共通鍵暗号方式では、暗号化する際の「鍵」と復号する際の「鍵」は同一のもの(共通の鍵)を使います。

暗号化から復号までの流れは以下のようになります。

  • 送信側が、データを「共通鍵」で暗号化した上で受信側へ送信します。
  • 受信側が受け取ったデータを同じ「共通鍵」で復号してデータの暗号化を解除します。

「鍵」情報は公開されておらず、送信側と受信側のみで共有されているのが特徴です。

図:共通鍵暗号方式の暗号化と復号
図:共通鍵暗号方式の暗号化と復号

公開鍵暗号方式と共通鍵暗号方式のメリット・デメリットについて

先ほど、「公開鍵暗号方式」と「共通鍵暗号方式」の違いとして、「公開鍵暗号方式」では最初に送信側が使う暗号化の鍵が公開されているのが特徴であり、「共通鍵暗号方式」では「鍵」情報は公開されておらず、送信側と受信側のみで共有されているのが特徴である、としました。

ここで、それぞれどのようなメリットとデメリットがあるのかを整理します。

公開鍵暗号方式

メリット

複数人とやり取りする際に鍵の管理が容易である

デメリット

処理速度は遅くなってしまう

共通鍵暗号方式

メリット

公開鍵暗号方式にくらべて処理が高速である

デメリット

複数人と通信する場合は鍵の受け渡しが煩雑になってしまう

つまり、公開鍵暗号方式では処理が遅い代わりに、受信側では秘密鍵を一つだけ持っていればよく、共通鍵暗号方式では処理は早いものの、やり取りをする人数分の鍵を使い分けなければならないことになります。

暗号化されたデータをどの程度多くの人から受信するかにもよりますが、人数が多いことが分かっている場合には、共通鍵暗号方式は手続きが複雑になります。社内で暗号化されたデータを常時受け取って返信するような業務を行っている場合には、すべての通信を共通鍵暗号方式で行っていくのにはかなりの労力がかかってきます。

逆に、1ヶ月に1回、月末だけ暗号化された報告書データを決まった人から受け取るだけであり、そのデータも何度もやり取りをしたり、関係各部署に転送したりといった業務は発生しない、ということが分かっている場合には、共通鍵暗号方式の方が高速であり、鍵が公開されていないぶん安心だといえます。

SSL通信の仕組みを暗号化方式から理解する

SSL通信は、情報を暗号化して送受信する仕組みとして広く使われています。例えば、インターネットショッピングサイトにおいて「個人情報」や「クレジットカード番号」などを送信するときに使われます。また、重要なメールのやり取りでは電子署名を使いますが、これもSSL通信のサービスです。

では、このSSL通信はどのようにしてこうしたセキュアな通信を実現しているのでしょうか。実はSSL通信では、これまで見てきた「共通鍵暗号方式」と「公開鍵暗号方式」の両方の仕組みを使って暗号化通信を行っています。ここまで理解してきた「公開鍵暗号方式」と「共通鍵暗号方式」がどのように使われているのか見てみましょう。

これまでの例では、暗号化通信を「送信者」と「受信者」という切り口で見てきましたが、今度はそれを「サーバ側」「クライアント側」という視点で整理します。

「サーバ側」と「クライアント側」での暗号化通信の流れ

1stステップ:「共通鍵」を生成し、「公開鍵」を使って共有する

  • 「クライアント側」からSSL通信のリクエストを「サーバ側」へ送信する
  • 「サーバ側」がSSL証明書と公開鍵を「クライアント側」へ送信する
  • 「クライアント側」は、「サーバ側」が送信してきた公開鍵を用いて、クライアント側で生成した「共通鍵」を暗号化して「サーバ側」へ送る
  • 「サーバ側」は受け取ったデータを、秘密鍵を用いて復号し「共通鍵」を取得する

共通鍵のやり取り自体を、暗号化して共有しました。この時に使ったのが「公開鍵暗号方式」です。

2ndステップ:「共通鍵」を使って個人情報などのデータを暗号化する

  • 「クライアント側」が個人情報などの秘密性の高いデータを「共通鍵」で暗号化し「サーバ側」へ送信する
  • 「サーバ側」は受け取った暗号データを「共通鍵」で復号してデータを取得する

共通鍵を「公開鍵暗号方式」でその場で生成してから使うことで、「共通鍵暗号方式」の鍵管理の煩雑さを解決しています。

図:公開鍵暗号化方式を利用した共通鍵暗号の流れ(SSL暗号化通信の流れ)
図:公開鍵暗号化方式を利用した共通鍵暗号の流れ(SSL暗号化通信の流れ)

共通鍵暗号方式と公開鍵暗号方式を理解すればSSL通信がもっと分かる

以上、「公開鍵暗号方式」と「共通鍵暗号方式」のそれぞれの特徴と、暗号化(復号)の流れを整理しました。
「公開鍵暗号方式」と「共通鍵暗号方式」の仕組みがわかると、それがSSL通信にどのように生かされているかも理解しやすくなります。
一度正確に理解しておけば、今後SSLを社内で大規模に導入する際など、同僚や上司にそのメリットをすぐに納得してもらうことが可能になりますし、顧客企業にSSL通信のメリットを説明する際にも使えるはずです。

インターネット上のショッピングサイトや広く情報を収集するサイトでは公開鍵暗号方式を利用しています。また、特定の相手や端末限定などのやり取りの場合には共通鍵を利用しています。「公開鍵暗号方式」と「共通鍵暗号方式」のどちらがおすすめなのか、ということではなく、シーンや用途によって利用する方式を選定すればよいわけです。

  • このエントリーをはてなブックマークに追加

この記事を書きました

グローバルサインブログ編集部

グローバルサインブログ編集部
所属:GMOグローバルサイン マーケティング部
当ブログの運営・管理を担当。マーケティング部=なんでも屋。
>>グローバルサインブログ編集部の記事一覧