MENU

【図解】SSL暗号化の仕組み:公開鍵と共通鍵の役割分担を直感的に理解する

ネットワークの基本中の基本である「SSL/TLS」。 エンジニアとして業務で証明書を扱ったり、AWSでACM(Certificate Manager)を操作したりする機会は多いですが、いざその内部構造を深掘りしようとすると、数学的な話や複雑な用語が出てきて頭が痛くなりますよね。

特に、「公開鍵」と「秘密鍵」のキャッチボール。 「どっちで暗号化して、どっちで復号するんだっけ?」と、毎回ブラウザで検索し直している方も多いのではないでしょうか。(実は、私もその一人でした。)

そこで今回は、やっぱりわからないという方に向けて、**「これ以上ないくらいシンプル」**に、SSLにおける鍵の役割を整理しました。

この記事を読み終える頃には、あのモヤモヤがスッキリ解消し、実務や資格勉強の理解度が一段階上がっているはずです。

目次

用語解説

まずは出てくる用語の整理が必要です。SSLに関する用語は多くあるため、まずは用語を認識することから始めましょう。ただ、いきなり用語の説明文を読んでも理解できないので、ここではどんな用語が出てくるか認識するだけで十分です。

  • SSL/TLS :インターネット上でデータを暗号化して送受信し、盗聴や改ざんを防ぐための標準的な通信プロトコル(規約)です。
  • 共通鍵暗号方式:暗号化と復号に全く同じ「共通の鍵」を使用する方式で、処理速度は速いものの、鍵を相手に渡す際の漏洩リスクが課題となります。
  • 公開鍵暗号方式:誰もが知ることができる「公開鍵」で暗号化し、対になる本人だけの「秘密鍵」でのみ復号できる、鍵の受け渡しに強い暗号方式です。
    • 公開鍵:暗号化のために広く一般に配布される鍵であり、これ自体が盗まれてもデータの復号(解読)はできない仕組みになっています。
    • 秘密鍵:暗号化されたデータを元に戻すためにサーバー側などが厳重に保管する鍵であり、決して外部に漏らしてはいけない通信の「命」です。
  • ハイブリッド暗号 通信の最初だけ「公開鍵暗号」で安全に鍵を受け渡し、その後のデータ通信には処理の速い「共通鍵暗号」を使う、両者の長所を組み合わせた仕組みです。

SSL/TLSとは?

小難しい話をする前に、最もよく聞くSSLについて説明します。

一言でいうと、SSLとは「インターネット上の通信を封筒に入れて、宛先以外の人が中身を見られないようにする仕組み」のことです。

普段、私たちがブラウザでWebサイトを見ているとき、背後では自分のパソコンとサーバーの間で膨大なデータのやり取りが行われています。もしSSLがない世界だと、このデータは「ハガキ」のような状態で送られてしまいます。つまり、途中の経路にいる悪意のある誰かに、ログインパスワードやクレジットカード番号をのぞき見されるリスクがあるのです。

これを「封筒(暗号)」に入れ、さらに「本物の送り主であることを証明するハンコ(電子証明書)」を押すことで、安全な通信を実現しているのがSSLの役割です。

最近では、URLの横にある「鍵マーク」がおなじみですよね。あのマークがついているということは、この「封筒とハンコ」の仕組みがしっかり働いているという証拠。

では、一体どうやって「絶対に開けられない封筒」を作り、その「鍵」を相手に渡しているのか? ここで登場するのが、「共通鍵暗号方式」「公開鍵暗号方式です。

鍵暗号方式

下記暗号方式には2種類あります。

共通鍵暗号方式

一言でいうと、「暗号化するときも、復号(元に戻す)するときも、全く同じ鍵を使う」という方式です。

これは日常生活にある「宝箱」をイメージすると非常にわかりやすいです。

  • 暗号化: 私が宝箱にデータを入れ、鍵をかけてあなたに送る。
  • 復号: あなたは、私と同じ鍵を使って宝箱を開け、データを取り出す。

メリット:とにかく「速い」

この方式の最大の長所は、処理が非常にスピーディーであることです。複雑な計算が必要ないため、大量のデータをやり取りする今のインターネット通信には欠かせません。

デメリット:最大の弱点は「鍵の配送」

しかし、致命的な弱点があります。それは、「どうやって相手に鍵を渡すのか?」という問題です。

もし私があなたに鍵を郵送している途中で、誰かにその鍵を盗まれてしまったらどうなるでしょうか? その後、どんなに頑丈な宝箱(暗号)を送っても、盗まれた鍵で簡単に開けられてしまいます。

データ自体は暗号化した後に盗まれても共通鍵がないと開けれませんが、その鍵を盗まれてしまう危険性が残ってしまいます。

公開鍵暗号方式

共通鍵暗号方式の弱点(鍵を盗まれたら終わり)を克服するために登場したのが、「公開鍵暗号方式」です。

最大の特徴は、「暗号化するための鍵」と「復号するための鍵」が別々であるということ。

これを日常生活に例えると、「南京錠」のイメージがぴったりです。

  • 公開鍵(南京錠): 誰でも手に取れるように、あちこちに配っておく「開いたままの南京錠」です。
  • 秘密鍵(本物の鍵): その南京錠を開けることができる、世界に一つだけの「本物の鍵」です。これは私だけが持っています。

仕組み:誰でも閉められるが、開けられるのは私だけ

  1. 暗号化: 私があなたに「開いたままの南京錠(公開鍵)」を渡します。あなたはデータを宝箱に入れ、その南京錠でガチャン!と鍵をかけます。
  2. 復号: 鍵がかかった宝箱を私が受け取ります。私は自分だけが持っている「本物の鍵(秘密鍵)」で、その南京錠を開けます。

メリット:鍵を盗まれても大丈夫!

この方式のすごいところは、途中で「南京錠(公開鍵)」を盗まれても全く問題ないという点です。泥棒が「開いたままの南京錠」を手に入れたところで、すでに閉まっている宝箱を開けることは絶対にできないからです。

これで、安全に鍵をやり取りできないという「鍵配送問題」がスッキリ解決しました。

デメリット:処理の「重さ」と「なりすまし」

鍵配送問題を解決したヒーローのような公開鍵暗号方式ですが、実は苦手なこともあります。

1. 処理スピードが圧倒的に「遅い」

公開鍵暗号は、非常に複雑な数学的計算(巨大な数字の素因数分解など)を行っています。そのため、共通鍵暗号に比べると処理のスピードが数百倍〜数千倍も遅いと言われています。

もし、Webサイト上の画像や動画のデータをすべて公開鍵暗号でやり取りしようとすると、画面が表示されるまでに恐ろしい時間がかかってしまい、現代のインターネットは使い物にならなくなってしまいます。

2. 「なりすまし」のリスクがある

「誰にでも公開鍵(南京錠)を配る」という性質上、もし悪意のある第三者が「もくもく太郎になりすまして、偽の南京錠を配る」という事件が起きたらどうなるでしょうか?

あなたが私のものだと信じて「偽の南京錠」で宝箱を閉めて送ってしまうと、その宝箱を開けられるのは、偽の南京錠の持ち主である犯人だけになってしまいます。

これを防ぐために、「この公開鍵は間違いなく本物です」と証明してくれる「認証局(CA)」が必要になるのですが、この内容は難しいので、別記事で解説します。

ハイブリット暗号方式

「共通鍵」と「公開鍵」。それぞれの仕組みと、一長一短なポイントが見えてきましたね。

「スピードは速いけど、鍵を渡すのが危ない共通鍵」と、「安全性は高いけど、動きがのろまな公開鍵」。

「じゃあ、両方のいいところだけを合体させちゃえば最強じゃない?」

そんな発想から生まれたのが、今回の主役である『ハイブリッド暗号方式』です。

最初の挨拶(鍵の受け渡し)だけ公開鍵を使い、その後の本番(データのやり取り)は共通鍵にバトンタッチする」という方法です。

手順を追って、その鮮やかな連携プレーを見ていきましょう。

ステップ1:公開鍵で「共通鍵」を安全に届ける(安全性の確保)

まず、通信の最初に「安全に共通鍵を共有する」というミッションを、公開鍵暗号が担当します。

  1. サーバーから届いた「南京錠(公開鍵)」を使い、ブラウザ側で作成した「共通鍵」を箱に入れてロックします。
  2. これをサーバーに送ります。南京錠を開けられるのはサーバー(秘密鍵の持ち主)だけなので、途中で誰かに盗まれても中身の「共通鍵」は絶対にバレません。

ステップ2:共通鍵で「大量のデータ」を高速通信(スピードの確保)

無事にサーバーへ共通鍵が届いたら、ここからは共通鍵暗号に主役を交代します。

  1. これでお互いの手元に「自分たちだけの共通鍵」が揃いました。
  2. 以降のWebページ表示やデータの送受信は、この共通鍵を使って高速に暗号化・復号を行います。

共通鍵暗号方式の問題は共通鍵を盗まれずに相手側に送ることであり、無事に共通鍵を送り届けた後は安全に利用することができる。

なぜこれが「最強」なのか?

この仕組みのすごいところは、「公開鍵の重さ」を最初の一瞬だけに抑えつつ、「共通鍵の弱点(鍵の受け渡し)」を完璧にカバーしている点です。

  • 公開鍵: 重いけど、最初だけ頑張ればOK!
  • 共通鍵: 速いけど、受け渡しは公開鍵に守ってもらえばOK!

まとめ:SSL/TLSはハイブリッドな知恵の結晶

今回は、知っているようで意外と曖昧になりがちな「SSLと公開鍵・秘密鍵の仕組み」を整理しました。

最後にもう一度、この記事のポイントを振り返ってみましょう。

  • 共通鍵暗号方式:処理は速いが、鍵の受け渡し(配送)が危険。
  • 公開鍵暗号方式:鍵を盗まれても大丈夫だが、処理が重い。
  • ハイブリッド方式「最初だけ公開鍵」で鍵を送り、「後は共通鍵」で高速通信。 SSL/TLSはこの最強のコンビネーションで成り立っている。

「やっぱりわからない」と思っていた複雑な仕組みも、「適材適所のバトンタッチ」だと分かれば、少し身近に感じられるのではないでしょうか。

目次