情報処理

SSL(HTTPS)の仕組みを図解で分かりやすく説明

2020年3月28日

「SSL」って知っているかな?
安全に通信を行うための仕組みですよね。
そうだね。では、実際にどのように「SSL」が安全に通信されているかの「仕組み」を知っているかな?
それは...わからないです...
本記事では、SSL(HTTPS)の仕組みを図解で分かりやすく説明しています。

スポンサーリンク

SSLってなに?

SSL(Secure Sockets Layer)とは、インターネット上での通信を安全に行うためのプロトコルです。

SSLで通信内容を暗号化することで、個人情報やクレジットカード情報などの重要なデータを暗号化して、通信を安全に行なうことができます。

プロトコルって何ですか?
英語と日本語だと会話が成立しないのと同じで、通信もルールを決めてやり取りしています。そのルールのことをプロトコルといいます。

SSLは、HTTPなどの アプリケーション層 のプロトコルと組み合わせることで使用されています。

元プロトコルポート番号SSLと組み合わせたプロトコルポート番号
HTTP80HTTPS443
SMTP25SMTPS465
FTP20、21FTPS989、990
IMAP143IMAPS993
POP3110POP3S995

SSLは古いプロトコルである

SSLという用語は未だに広く普及していますが、実は古いプロトコルです。現在では、SSLを元として作られた TLS(Transport Layer Security) を使うことが望ましいとされています。

その理由は、2014年10月に「SSL 3.0」の仕様上の脆弱性(セキュリティ上の欠陥)が発見されており、またSSLは対応も打ち切られているため、「TLS(Transport Layer Security)」への移行が望まれています。

※「SSL 3.0」の廃止を求めるRFC 7568が2015年6月にリリースされている。

TLS は未だに SSL と呼ばれることの方が多いため「TLS/SSL」と表記されることも多いです。

SSLはどうして必要なの?

SSLはどうして必要なんですか?
SSLが必要な理由は「盗聴」「改ざん」「なりすまし」といった攻撃から利用者の安全を守るためです。

データの盗聴(個人情報の漏洩)

データの盗聴

インターネット上での通信は簡単に盗聴できます。そのため、通信内容を暗号化していないと個人情報が漏洩してしまう危険性があります。

盗聴ってどうやってするんですか?
ネットワークの問題を解決のために使用する専用機器などを悪用することで、通信内容を盗聴できます。

SSLを利用することで、通信内容を暗号化することができ、仮に通信内容を盗聴されても解読することが困難です。その結果、個人情報などの情報漏洩を防ぐことができます。

データの改ざん

データの改ざん

インターネット上の通信を暗号化していないと、データを「改ざん」される危険性もあります。その結果、利用者の意図していない操作を「悪意のある攻撃者」によって行われてしまいます。

SSLを利用することで、SSLサーバ証明書の存在や通信内容を暗号化することができ、データの「改ざん」を防ぐ効果があります。

「なりすまし」による詐欺行為

なりすまし

「なりすまし」とは本家のサイトになりすまして、偽のサイトに誘導し個人情報などを盗み取ったり、盗んだ情報を悪用するなどの行為ことをいいます。

SSLでは、第三者の機関である認証局(CA:Certification Authority)がWebサーバに対してSSLサーバ証明書を発行します。

利用者はSSLサーバ証明書を確認することで、認証局がサーバ証明書を発行した安全なWebサイトであると判断することができるため「なりすまし」による攻撃を防ぐ効果があります。

ただし、近年では「SSL証明書」を導入している詐欺サイトが増えてきています。「SSL = 安心」とは考えず、個人情報を入力する際は「正規のURLなのか」「証明書の内容は正しいのか」などを確認することが大切です。

スポンサーリンク

SSL通信で使われる2つの暗号方式

SSL通信では「ハイブリッド暗号方式」と呼ばれる暗号方式を採用しています。「ハイブリッド暗号方式」とは「共通鍵暗号方式」と「公開鍵暗号方式」の2つの暗号方式を組み合わせた暗号方式です。

共通鍵暗号方式

共通鍵暗号方式

共通鍵暗号方式は「暗号化」と「復号」で使用する鍵が同じなのが特徴です。

そのため、第三者に鍵が知られてしまうと簡単に解読される危険性がある為、鍵を秘密にしておく必要があります。

共通鍵暗号方式は、暗号化や復号の処理が比較的簡単な為、処理時間が早いというメリットがあります。しかし、処理が簡単な分 解読されやすいというデメリットもあります。

また、共通鍵暗号方式を使う相手の数に応じて鍵を作る必要がある為、鍵の数が多数必要です。

公開鍵暗号方式

公開鍵暗号方式は「暗号化」と「復号」で使用する鍵が別なのが特徴です。

公開鍵暗号方式では、まず「暗号化の鍵」を公開します。

「暗号化の鍵」を公開することにより自分宛の暗号化には、公開した鍵を使用してもらいます。そのため、鍵の受け渡しが容易であり秘密に管理する必要があるのは、自分の復号鍵だけです。

また、共通鍵暗号方式では相手の数に応じで鍵を作る必要がありますが、公開鍵暗号方式では相手の数に関係なく公開鍵は1つでよいので鍵の管理が容易で安全性が高くなります。

公開鍵暗号方式のメリットは安全性の高いという点ですが、処理時間が遅いというデメリットもあります。

SSLサーバ証明書の何のために必要なの?

SSLを利用するには、認証局(CA:Certification Authority)と呼ばれる第三者の機関からSSLサーバ証明書を発行してもらう必要があります。

サーバ証明書には「サーバ所有者の情報」や「暗号化通信に必要な鍵」「発行者の署名データ」などが含まれます。

サーバ証明書

Webサイトの所有者は、認証局が管理している「SSLサーバ証明書」を購入し、認証局はサイト所有者の実在性を確認し「SSLサーバ証明書」と「公開鍵」を発行します。

「SSLサーバ証明書」を発行するまでの主な流れは次のとおりです。

  • 秘密鍵を作成する
  • 秘密鍵を使用してCSR(サーバ証明書を発行するための署名要求)を生成する
  • 生成したCSRを使い、認証局に申し込む
  • 認証局から「SSLサーバ証明書」を発行してもらう

認証局に証明してもらったWebサイトは、URLの左側に鍵マークが付与され、さらに鍵マークをクリックすると「SSLサーバ証明書」の内容が確認できます。

証明書の確認

利用者は「SSLサーバ証明書」を確認することで、認証局が「SSLサーバ証明書」を発行した安全なWebサイトであると判断することができるため、「なりすまし」による攻撃を防ぐ効果があります。

しかし、なかには身元の不確かな機関(自分含む)が発行した証明書を使っているWebサイトも存在します。このような証明書のことを「オレオレ証明書」と呼びます。

SSL通信の仕組み

それでは、SSL通信の仕組みをWebサイトを安全に表示するプロトコルである「HTTPS」を例として説明していきます。

【SSL流れ①】SSL通信の接続要求

TLSの接続要求

まずはクライアント(利用者のコンピュータ)から対象のサーバへとSSL通信の接続要求を送信します。

【SSL通信の流れ②】公開鍵付きサーバ証明書の送付

公開鍵付きサーバ証明書の送付

Webサーバは認証局から発行してもらった「サーバ証明書」と「公開鍵」をクライアントに送付します。

クライアント(利用者のコンピュータ)側では以下の2つの操作を行います。

  • ブラウザに事前に搭載されているルート証明書(認証局が発行したSSLサーバ証明書であることを確認するための証明書)でSSLサーバ証明書を検証する。
  • 「共通の鍵」を生成する。

【SSL通信の流れ③】公開鍵暗号方式で「共通の鍵」をWebサーバに送る

クライアント側で生成した「共通の鍵」は、Webサーバから送られてきた「公開鍵」で暗号化し、Webサーバに送信します。

Webサーバに送信した「共通の鍵」は、サーバ側で保持しているWebサーバの「秘密鍵」で復号されます。

「公開鍵暗号方式」を使ってクライアントとWebサーバ間で共通の鍵となる「共通の鍵」を送信します。

【SSL通信の流れ④】共通鍵暗号方式で暗号化通信を行う

共通鍵暗号方式で暗号化通信を行う

クライアントが生成した「共通の鍵」をWebサーバに渡すことができたので事前準備は終了です。

あとは共通鍵暗号方式で暗号化通信を行いデータの送受信を行います。

なるほど。安全性の高い「公開鍵暗号方式」で"共通の鍵"を共通し、処理速度が速い「共通鍵暗号方式」でデータの送受信を行う流れですね。
その通りです。これで「SSL通信の仕組み」についての説明は終了です。お疲れ様でした。

helpful