新型コロナウイルス感染症に関する当社対応について

SSLって何?意味や仕組みをわかりやすく解説! | SSLサーバー証明書ならさくらインターネット

SSLって何?意味や仕組みをわかりやすく解説!

インターネット通信の暗号化(https化)を担うSSLの役割、用語の意味、暗号化通信が成立するまでの過程をわかりやすく解説します。

SSLとは

SSL(Secure Sockets Layer)とは、簡単に説明するとWebサイトとそのサイトを閲覧しているユーザとのやり取り(通信)を暗号化するための仕組みです。

暗号化されていないインターネットは危険!

意外と知られていませんが、みなさんが利用しているインターネットは悪意のある第三者が通信の中身を盗み見て悪用することが可能です。閲覧しているホームページのアドレスや、掲示板に書き込んだ内容、ショッピングサイトで入力したクレジットカード番号やパスワードなども盗み見ることが可能です。「これでは安心してインターネットができない!」ということで生まれたのがSSLという仕組みです。

例えば、あなたが会社のパソコンからアクセスしている場合、社内のネットワーク管理者であれば、あなたの通信内容を自由に見ることができます。そして、それは比較的簡単に出来てしまいます。飲食店などで利用できる無料Wi-Fiも、ちょっとした知識があれば管理者が非暗号化(http)通信の内容を盗み見ることが可能です。このようなインターネットの弱い部分を補うため、SSLはブラウザとサーバー間の「通信の暗号化」を行います。途中でデータを盗み見られたとしても、データは暗号化されているため解読は困難となります。

なお、SSLとは古い規格の名称であり、2014年に脆弱性が発見されたため翌年には使用が禁止されました。現在では、より安全なTLS(Transport Layer Security)という暗号化通信の規格が使われています。SSLが「SSL/TLS」や「TLS」と呼ばれるのはそのためです。しかしながら、世間では「常時SSL化」のようにSSLという名称が暗号化通信規格の一般名称として定着しているため、本コラムでもSSLという名称を使っています。


本コラムに出てくる用語は、こちらで解説しています。

証明書を利用するまでの流れ

SSLサーバー証明書(以下、SSL証明書)を利用するまでに以下の工程が必要となります。

  1. 秘密鍵を生成する
  2. 秘密鍵を用いてCSRを生成する
  3. CSRを用いて証明書を生成する
  4. 秘密鍵と証明書をセットにしてWebサイトの通信を暗号化する

秘密鍵の扱いに注意!

SSL証明書はCSR(Certificate Signing Request:証明書署名要求)を介して生成され、秘密鍵とペアになるように構成されています。SSL証明書は公開鍵なので再発行できますが、秘密鍵は唯一無二の存在です。一部の古い暗号スイートを利用していた場合、秘密鍵が流出するとそのドメインのサーバーとの通信を誰でも復号できてしまうため、絶対に失くさないようにしましょう。CSRは名前の通り、電子署名をお願いするためのファイルです。CSRへの電子署名については後述のセクション(改ざん防止となりすまし防止)にて詳しく説明します。

現在では、PFS(Perfect Forward Secrecy:前方秘匿性)対応の暗号スイートを利用できるブラウザが一般的になっています。PFSに対応した暗号スイートを利用していた場合、サーバーの秘密鍵が盗まれてしまったとしても個々のセッションでは別の鍵ペアが都度生成されるため、全ての通信が解読されることはありません。

逆に言えば、PFS非対応の暗号スイートを利用していた場合、秘密鍵が盗まれると全ての通信を解読できてしまいます。最新のブラウザでは使われなくなっていますが、RSAという鍵交換方式はPFSに対応していません。PFSに関しては『あと数年で量子コンピューターにSSL通信が解読される?SSL/TLSの未来を担うPQCとは?』にて説明しておりますので、興味のある方はぜひご覧ください。

SSL通信が成立するまでの流れ

それでは実際にSSL通信(暗号化通信)が成立するまでに、ブラウザとサーバーの間で何が起きているかを見てみましょう。

  1. ブラウザ:SSL通信をリクエストする
  2. サーバー:SSL証明書を送付する
  3. ブラウザ:電子署名の検証により「SSL証明書に記載されたドメイン」と「通信先のドメイン」が同じであることを確認する
  4. ブラウザ/サーバー:SSL通信を行うために共通鍵を交換する
  1. ブラウザ/サーバー:共通鍵を使って送受信するデータを暗号化・復号してSSL通信を成立させる

わかりやすさを優先して簡単に記載していますが、このような流れでブラウザとサーバー間の通信が暗号化されます。全く知らない人同士が最終的に相互にSSL通信を行うために、このような煩雑な手続きが行われています。この手続きを「TLSハンドシェイク」と呼び、通信を行うサーバー単位でこの手続きを行う必要があります。そのため、外部ファイルの読み込みが多いWebページなどではTLSハンドシェイクを何度も行う必要があり、ページ表示のパフォーマンスに影響する可能性があります。

改ざん防止となりすまし防止

ここまでは通信の暗号化について解説してきました。SSL証明書のもう一つの重要な役割として、データの改ざんとなりすましの防止という機能があります。まずはデータの改ざんについて解説していきます。

改ざん防止とは?

例えば、市役所に税金を振り込むための口座番号が記載されているホームページがあったとしましょう。口座番号を書き換えることができれば、税金を振り込む人からお金を窃取することができます。

  • ※もちろん犯罪です。

この市役所のホームページをSSL化すれば、ブラウザとサーバーとの通信が暗号化(https化)されるとともに、途中で誰かがデータを書き換えると「データが改ざんされているよ!」とわかるようになり、その信用できないデータを破棄して送り主に再度データを送るように依頼することができます。これがSSL証明書の改ざん防止です。

なりすまし防止とは?

では、なりすまし防止とはどのようなものでしょうか?例えば、先程の市役所のホームページを完全にコピーして違うサーバーへ設置し、URLも同じように設定して「このページは○○市役所です!」と名乗ることが技術的には可能です。

しかしながら、SSL通信の際に必要な秘密鍵はコピーすることができません。秘密鍵が無い状態でSSL通信を試みてもSSL通信は実現できず、ドメインの正当性も保証されないため、ブラウザ側で「このページは○○.jp(○○市役所)と名乗っているけど実際には違うサイトだよ!」と教えてくれます。この場合、多くのブラウザではそもそもまずページが表示されないため、なりすましの被害を防止することができます。

信頼された第三者機関「認証局」による保証

改ざん防止となりすましの防止については、SSL証明書を発行する「認証局」という組織の存在が重要になります。認証局はサーバーでもパソコンでもない第三者機関であり、「○○.jpドメインを保有している人にSSL証明書を発行しました」と保証してくれる組織です。

ここまで証明書を「SSL証明書」と一括りに表現してきましたが、ここからは「サーバー証明書」「中間CA証明書」「ルート証明書」の3つに分けて説明していきます。各証明書の違いについては当コラムの『サーバー証明書/中間CA証明書/ルート証明書の違いとは?』にて詳しく説明しておりますので、ぜひご覧ください。

認証局が発行する「ルート証明書」は、パソコンやスマートフォンなどの端末内に保存されており、サーバーから送られてくる証明書(サーバー証明書と中間CA証明書)が、ルート証明書に関連付けられた証明書(認証局が発行した証明書)であるかを検証します。ルート証明書はパソコン本体に保存されていることで、インターネット上の「悪意のある第三者」が改ざんすることが難しいため、このような仕組みになっています。また、不正なルート証明書をインストールし、不正なサーバー証明書を正当化しようとする悪意のある攻撃も残念ながら存在します。

証明書の種類によっては「○○.jpドメインとは、株式会社○○が運営しているサイトですよ!」と運営組織を保証してくれる証明書(OV/EV認証)も存在します。銀行のホームページにアクセスして鍵アイコンをクリックすると「〇〇 Bank, Ltd. [JP] 」といったように会社名が表示されますが、これはEV証明書という種類のサーバー証明書を利用しているためです。証明書の種類については当コラムの『SSLサーバー証明書の違い』にて詳しく説明しておりますので、興味のある方はぜひご覧ください。

SSLを支える電子署名

ドメインの認証は電子署名という技術により支えられています。電子署名の過程を簡単に説明すると、秘密鍵によって署名されたデータは、公開鍵によって「確かに秘密鍵で署名されている」と検証します。ドメインの認証は、その検証に使われた電子署名アルゴリズムを利用して「サーバー証明書を送ってきたサーバーのドメイン」が「送られてきたサーバー証明書に記載されているドメイン」と同じであることを確認します。これにより、ブラウザのアドレスバーに表示されているドメインに正確にアクセスしていることが確認できるため、なりすましの防止が可能になります。

ただし、これではまだ「認証局のお墨付き」が確認できていない状態です。「認証局が申請者にサーバー証明書を発行する」という行為は、「申請者がドメインを所有していることを確認し、認証局が中間CA証明書の秘密鍵でサーバー証明書に署名する」ことを指します。これにより、「認証局のお墨付き」を得たサーバー証明書が発行され、パソコン本体に保存されている(中間CA証明書を発行した)ルート証明書によってこの事実が検証され、初めてSSLの暗号化通信を行うことができます。

SSLの限界

SSL通信は全ての通信を秘匿できるわけではなく、ネットワーク管理者なら通信先のIPアドレスやデータ量を見ることができます。例えば、会社で仕事中に明らかに業務に関係ない動画サイトのIPアドレスと大量のデータ通信を行っていた場合、動画を見てサボっていることがバレてしまうかもしれません。このあたりは良くも悪くもSSLの限界と言えます。通信先の秘匿については当コラムの『DNSとブラウザ間の通信を暗号化!DNS over HTTPS(DoH)とは?』にて詳しく解説していますので、ぜひご覧ください。

まとめ

ここまで「SSLとは何なのか?」という話のほんの触りの部分だけをご紹介してきました。SSLは複雑で理解の難しい技術ですが、サーバーを運用してSSL化されたサイトを配信する程度であれば、秘密鍵やCSR、SSL証明書の役割が大まかに理解できれば十分です。

また、「SSLの限界」を知り「出来ること」と「出来ないこと」を把握することで、より一層安全にインターネットを利用する意識が身につきます。この機会に、インターネットの利用方法を振り返ってみましょう。

こちらの記事もあわせておすすめ!

本コラムではSSLの仕組みや意味を紹介しました。SSL証明書の役割を分かりやすく説明した『SSL証明書の必要性』の記事もおすすめです。また、証明書の選び方で特長や違いを知りたい方は『SSLサーバー証明書の違い』をご覧ください。

用語の解説

本コラムに出てきた用語について、こちらで解説します。

サーバー証明書 SSL証明書、エンドエンティティ証明書などとも呼ばれますが、いわゆる「証明書」と呼ばれるものはサーバー証明書を指しています。「秘密鍵」と一緒に利用するものであり、サーバーにインストールして利用します。レンタルサーバーでは管理画面から自分でインストールする場合もありますが、一般的には管理画面上で購入して簡単な設定を行う(数回クリックする)だけで有効化されることが多く、最近では証明書ファイルの実体を操作することが少なくなりました。
CSR CSR(Certificate Signing Request:証明書署名要求)とは、「SSL証明書を発行するための申請書」のようなものです。CSRには発行したい証明書のコモンネーム(サブドメインまでを含んだドメイン名)や組織名などが記載されています。最も重要なのは、CSRには秘密鍵とセットになる「公開鍵」が含まれていることです。この公開鍵に認証局が署名することで「SSL証明書」になります。
公開鍵・秘密鍵 CSRを作成するには、まず「秘密鍵」を作成する必要があります。「公開鍵」は秘密鍵を使って作成されるため、セットになっており、公開鍵で暗号化したものは秘密鍵以外では復号することができません。秘密鍵はCSRを生成する際に必要なため、生成されたサーバー内にあることが一般的です。サーバーの秘密鍵は認証局で保管するものではないため、一度失くしてしまうと再発行ができません。また、乱数を使って生成されるため再作成もできません。そのため、取扱いに十分注意する必要があります。さくらのレンタルサーバでは、SSL設定を削除すると秘密鍵も消えてしまいますが、秘密鍵のバックアップボタンがありますので削除前に秘密鍵をダウンロードして安全に保管しておくことをおすすめしています。公開鍵と秘密鍵が存在するのは、「公開鍵暗号方式」の特徴です。
共通鍵 公開鍵暗号方式は電子署名には向いていますが、1対1の暗号化通信にはパフォーマンス面などで不向きです。そのため、実際にデータを暗号化してやり取りする際には「共通鍵暗号方式」が使われます。ここでは個々の公開鍵や秘密鍵は必要なく、サーバーとブラウザで同じ鍵(共通鍵)を使ってデータを暗号化、復号してやり取りを行います。SSLでは、この共通鍵で安全にやり取りするために、電子署名の検証によるドメイン認証と鍵交換が行われます。
復号 暗号化されたデータを元の平文に戻すことです。
ルート認証局 /
ルート証明書
SSL証明書を発行する最上位の認証局は「ルート認証局」と呼ばれ、ルート認証局が自身を証明するために発行する証明書のことを「ル―ト証明書」と言います。一般的に自己署名の証明書は信頼されませんが、ルート認証局は定められた厳正な運用基準に基づいた審査を受けているため、信頼性を担保されています。また、ルート証明書は端末やWebブラウザなどにあらかじめ組み込まれており、Webサイトとの通信時に「Webサイトが提示するSSL証明書」の正当性をそのルート証明書によって判断します。
中間CA証明書 中間CA証明書はルート証明書によって署名・発行された別の(サーバー証明書とは異なる)SSL証明書です。ルート証明書によって署名・発行された中間CA証明書が、サーバー証明書を署名・発行することで結果的に「ルート証明書がサーバー証明書を認証する」という信頼の連鎖(トラストチェーン)の中間地点になります。
悪意のある第三者 SSL関連の記事でよく出てくる「悪意のある第三者」ですが、「一体誰なの?どんなことしてるの?」と思われるかもしれません。詳しくは『セキュリティ関連の記事に出てくる「悪意のある第三者」とは?』で紹介していますので、ぜひご覧ください。
データ読み込み中...