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

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

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

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

SSLとは

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

SSL通信されていないとインターネットはどうなる?

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

例えば、あなたが会社のパソコンからアクセスしている場合、社内のネットワーク管理者なら、あなたの通信を自由に見ることができます。そして、それは比較的簡単にできてしまいます。飲食店などで利用できる無料Wi-Fiなども、ちょっとした知識があれば管理者が非SSLの通信を盗み見ることが可能です。

この弱い部分を補うため、SSLはブラウザとサーバー間の通信を暗号化します。そのため、パソコンからサーバーまでの間でデータを盗み見られたとしても、データは暗号化されているため解読は困難となります。


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

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

証明書を利用するまでに以下の工程が必要となります。

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

秘密鍵の扱いに注意!

証明書はCSRを介して生成され、秘密鍵とペアになるように構成されています。証明書は公開鍵なので再発行できますが、秘密鍵は唯一無二の存在です。一部の古い暗号スイートを利用していた場合、秘密鍵が流出するとそのドメインのサーバーとの通信を誰でも復号できてしまうため、絶対に失くさないようにしましょう。

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

逆に言えば、PFS非対応の暗号スイートを利用していた場合、秘密鍵が盗まれてしまうと全ての通信を解読できてしまうのです。最新のブラウザでは使われなくなっていますが、RSAという鍵交換方式はPFSに対応していません。

SSL通信が成立するまで

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

  1. ブラウザ:SSL通信をリクエストする
  2. サーバー:SSLサーバー証明書を送付する
  3. ブラウザ:受け取った証明書の公開鍵を使って共通鍵を暗号化し、サーバーに送付する
  1. サーバー:受け取った共通鍵を、秘密鍵を使って復号する
  2. ブラウザ/サーバー:一致した共通鍵を使って送受信するデータを暗号化、復号して暗号化通信を成立させる

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

階層構造で有効性を検証

さらにSSLの世界ではSSLサーバー証明書を署名する中間CA証明書があり、中間CA証明書を署名するルート証明書という階層構造を取り入れることで、その証明書が正しく発行されているか?ということを検証できるようになっています。これが次に解説する改ざん、なりすましの防止機能となります。

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

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

改ざん防止とは?

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

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

なりすまし防止とは?

では、なりすましとはどういう状況でしょうか。先程のデータ改ざんで登場した市役所のホームページですが、完全にホームページをコピーして違うサーバーへ設置し、URLも同じにして、○○市役所ですよ!と名乗ることが実はできてしまいます。ですが、SSL通信の際に必要な秘密鍵はコピーできません。秘密鍵が無い状態でSSL通信を試みても公開されているSSLサーバー証明書だけではSSL通信ができず、ドメインの正当性が保証されないため、ブラウザ側で「このホームページは○○.jpと名乗っているけど実際には違うサイトだよ!」と教えてくれます。この場合、多くのブラウザではページを表示することすらされないため、なりすましの被害を防止することができます。

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

改ざん防止となりすましの防止については、SSLサーバー証明書の「認証局」という組織の存在が重要になります。暗号化自体は認証局が無くても実現可能ですが、認証局はサーバーでもパソコンでもない第三者機関であり、「○○.jpを名乗るこのサイトは本当に○○.jpですよ」と保証してくれる組織です。

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

証明書の種類によっては「○○.jpとは、株式会社○○が運営しているサイトですよ」と運営組織を保証してくれる場合もあります(OV/EV認証)。銀行のホームページにアクセスして鍵アイコンをクリックすると会社名が表示されるのはEV証明書という特殊なSSLサーバー証明書を利用しているからです。

参考:「SSLサーバー証明書の違い」

SSLの限界

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

まとめ

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

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

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

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

用語の解説

記事に出てきた用語について、こちらで解説します。

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