スポンサーリンク
目次
SSLってなに?
SSL(Secure Sockets Layer)とは、インターネット上での通信を安全に行うためのプロトコルです。
SSLで通信内容を暗号化することで、個人情報やクレジットカード情報などの重要なデータを暗号化して、通信を安全に行なうことができます。
SSLは、HTTPなどの アプリケーション層 のプロトコルと組み合わせることで使用されています。
元プロトコル | ポート番号 | SSLと組み合わせたプロトコル | ポート番号 |
HTTP | 80 | HTTPS | 443 |
SMTP | 25 | SMTPS | 465 |
FTP | 20、21 | FTPS | 989、990 |
IMAP | 143 | IMAPS | 993 |
POP3 | 110 | POP3S | 995 |
SSLは古いプロトコルである
SSLという用語は未だに広く普及していますが、実は古いプロトコルです。現在では、SSLを元として作られた TLS(Transport Layer Security) を使うことが望ましいとされています。
その理由は、2014年10月に「SSL 3.0」の仕様上の脆弱性(セキュリティ上の欠陥)が発見されており、またSSLは対応も打ち切られているため、「TLS(Transport Layer Security)」への移行が望まれています。
※「SSL 3.0」の廃止を求めるRFC 7568が2015年6月にリリースされている。
SSLはどうして必要なの?
データの盗聴(個人情報の漏洩)
インターネット上での通信は簡単に盗聴できます。そのため、通信内容を暗号化していないと個人情報が漏洩してしまう危険性があります。
SSLを利用することで、通信内容を暗号化することができ、仮に通信内容を盗聴されても解読することが困難です。その結果、個人情報などの情報漏洩を防ぐことができます。
データの改ざん
インターネット上の通信を暗号化していないと、データを「改ざん」される危険性もあります。その結果、利用者の意図していない操作を「悪意のある攻撃者」によって行われてしまいます。
SSLを利用することで、SSLサーバ証明書の存在や通信内容を暗号化することができ、データの「改ざん」を防ぐ効果があります。
「なりすまし」による詐欺行為
「なりすまし」とは本家のサイトになりすまして、偽のサイトに誘導し個人情報などを盗み取ったり、盗んだ情報を悪用するなどの行為ことをいいます。
SSLでは、第三者の機関である認証局(CA:Certification Authority)がWebサーバに対してSSLサーバ証明書を発行します。
利用者はSSLサーバ証明書を確認することで、認証局がサーバ証明書を発行した安全なWebサイトであると判断することができるため「なりすまし」による攻撃を防ぐ効果があります。
スポンサーリンク
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流れ①】SSL通信の接続要求
まずはクライアント(利用者のコンピュータ)から対象のサーバへとSSL通信の接続要求を送信します。
【SSL通信の流れ②】公開鍵付きサーバ証明書の送付
Webサーバは認証局から発行してもらった「サーバ証明書」と「公開鍵」をクライアントに送付します。
クライアント(利用者のコンピュータ)側では以下の2つの操作を行います。
- ブラウザに事前に搭載されているルート証明書(認証局が発行したSSLサーバ証明書であることを確認するための証明書)でSSLサーバ証明書を検証する。
- 「共通の鍵」を生成する。
【SSL通信の流れ③】公開鍵暗号方式で「共通の鍵」をWebサーバに送る
クライアント側で生成した「共通の鍵」は、Webサーバから送られてきた「公開鍵」で暗号化し、Webサーバに送信します。
Webサーバに送信した「共通の鍵」は、サーバ側で保持しているWebサーバの「秘密鍵」で復号されます。
【SSL通信の流れ④】共通鍵暗号方式で暗号化通信を行う
クライアントが生成した「共通の鍵」をWebサーバに渡すことができたので事前準備は終了です。
あとは共通鍵暗号方式で暗号化通信を行いデータの送受信を行います。