概要

SSL(Secure Sockets Layer)によって、アプリケーションプロトコルのデータの暗号化/改ざんチェック、アクセス先の認証ができます。SSLの最も一般的な用途はHTTPS(HTTP over SSL/TLS)です。HTTPSを中心として、SSLの概要を解説します。

SSLとは

SSL(Secure Sockets Layer)とは、TCP/IPのアプリケーションプロトコルのデータを保護するためのプロトコルです。SSLの最も典型的な利用例は、Webアクセスを保護するHTTPS(HTTP over SSL)です。

ちなみに、Generative AIに「SSLについて初心者にわかりやすく教えてください」と聞いてみたところ、次のような回答でした。(2023/5/17)

Google Bard

ChatGPT

HTTPS(HTTP over SSL)

HTTPSによって、WebブラウザとWebサーバアプリケーション間のHTTP通信をSSLで保護できます。HTTPSでの保護とは、具体的に以下の内容です。

  • アクセス先のWebサーバが本物であることを認証する
  • WebブラウザとWebサーバアプリケーション間のデータの暗号化および改ざんチェック

あなたがAmazonでお買い物するときを考えてみましょう。Amazonにログインするときにユーザ名/パスワードを送信します。また、注文内容や住所/名前/クレジットカード番号などの情報を送信します。その宛先がニセのAmazonのWebサーバだと困ります。SSLにより、アクセス先が確かに本物のAmazonのWebサーバであることを確認できます。

そして、あなたからAmazonのWebサーバに送信する情報が不正な第三者に盗聴されたり、改ざんされたりすると困ります。クレジットカード番号が流出したり、見に覚えのない注文がされてしまうかもしれません。SSLによって、暗号化と改ざんチェックを行います。そのため、あなたがAmazonに送信した情報は途中で変更されることなく、なおかつ、AmazonのWebサーバだけが見られるようになります。

図 HTTPSのWebアクセスの保護
図 HTTPSのWebアクセスの保護

SSL/TLSによって、追加の制御情報も付加されますが、図では省略しています。

常時SSL化

以前は、個人のWebサイトなど単に情報提供だけを目的としていて、ユーザから情報を送信しないときには、HTTPSを利用することはほとんどありませんでした。HTTPSを利用するには、デジタル証明書を取得するためWebサイト運用者にとって追加のコストが必要です。

ところが、GoogleがWebサイトのすべての通信をHTTPSで保護する常時SSL化を推奨するようになっています。SSL化していないWebサイトは、検索エンジンの評価も下がってしまうことから、今ではほとんどのWebサイトは、HTTPSで通信を保護する「常時SSL化」が当たり前になっています。SSL化していない、つまり、HTTPSを利用していないWebサイトへアクセスするとWebブラウザに警告が表示されることがあります。

図 SSL化されているWebサイトとSSL化されていないWebサイト
図 SSL化されているWebサイトとSSL化されていないWebサイト

その他SSLの用途

HTTPSが最も多いSSLの用途ですが、HTTPだけを保護するために利用しているわけではありません。冒頭でも触れていますが、TCP/IPアプリケーションプロトコルを保護できます。

基本的にはTCPを利用するアプリケーションプロトコルです。

HTTPSも含めた以下のような、SSLで保護するアプリケーションプロトコルがあります。

プロトコルウェルノウンポート概要
HTTPS443HTTPの通信をSSLで保護します。
FTPS21/990FTPの通信をSSLで保護します。
SMTPS456SMTPの通信をSSLで保護します。
POP3S995POP3の通信をSSLで保護します。
IMAP4S993IMAP4の通信をSSLで保護します。
表 SSLの用途

SSLとTLS

ここまで「SSL」という言葉を利用していますが、実際にはSSLは利用していません。現在は、SSLの後継プロトコル「TLS(Transport Layer Security)」に置き換わっています。

もともとSSLは米Netscape Communications社が開発しました。ただし、さまざまな脆弱性が発見されて、SSL自体の利用はすでに禁止されています。

SSLはIETFによって引き継がれてTLSとして標準化されています。現在のTLSの最新バージョンはTLS1.3です。

「SSL」は利用していないのですが、「SSL」という言葉自体はすでに幅広く浸透しています。そのため、今でも「SSL」という言葉を使うことが多くなっています。あるいは、「SSL/TLS」というように両方を併記することもあります。

SSL/TLSの仕組みを理解するための重要な技術

SSL/TLSで安全に通信するための詳しい仕組みを理解するためには、以下の技術(キーワード)の理解が必要です。

  • デジタル証明書
  • デジタル署名
  • ハッシュ関数
  • 暗号化(共通鍵暗号/公開鍵暗号)

デジタル証明書

SSL/TLSの仕組みで最も重要な技術がデジタル証明書です。証明書というものは、「誰か」が「何か」を証明するものです。デジタル証明書での「誰か」と「何か」は以下の通りです。

誰か : 認証局(Certificate Authority / Certification Authority)
何か : サーバは証明書に記載の組織が運用している正規のサーバである。証明書に含まれる公開鍵で暗号化すればサーバのみが復号できる

たとえば、AmazonのWebサーバのデジタル証明書は、言葉にすると次のような内容です。

「サーバは確かに本物のAmazonのサーバです!証明書に含まれる公開鍵で暗号化して情報を送ってもらえれば、他に漏れることはありません!証明書の発行元の認証局が保証します!」

デジタル署名

デジタル署名は、データの作成者/送信者の身元と、データが改ざんされていないことを確認するために利用します。デジタル証明書に、発行元の認証局のデジタル署名を付加します。

認証局のデジタル署名によって、デジタル証明書を発行した認証局が確かに本物で、含まれている情報や公開鍵が改ざんされていないことがわかるようにします。

ハッシュ関数

ハッシュ関数は、デジタル署名などでデータの改ざんや誤り検出のために利用します。

暗号化(共通鍵暗号/公開鍵暗号)

デジタル証明書およびデジタル署名の仕組みを理解するには、共通鍵暗号/公開鍵暗号がとても重要です。

SSL/TLS(HTTPS)について、「Webブラウザからのデータをデジタル証明書の公開鍵で暗号化する」というような解説が多くされていますが、正確ではありません。SSL/TLSでは、共通鍵暗号と公開鍵暗号を組み合わせて利用します。

公開鍵暗号:
デジタル証明書を検証するときに公開鍵暗号を利用します。また、データそのものを暗号化するときに利用する共通鍵の素をクライアントとサーバ間で共有するために公開鍵暗号を利用します。

共通鍵暗号:
データそのものは処理の負荷が軽い共通鍵暗号を利用します。前述のように、共通鍵の素を公開鍵暗号により、クライアントとサーバ間で共有します。

図 SSL/TLSの仕組みを理解するために重要な技術
図 SSL/TLSの仕組みを理解するために重要な技術

SSL/TLSによって、追加の制御情報も付加されますが、図では省略しています。

まとめ

ポイント

  • SSL(Secure Sockets Layer)とは、TCP/IPのアプリケーションプロトコルのデータを保護するためのプロトコルです。
  • HTTPS(HTTP over SSL)は、SSLの最も一般的な用途です。SSLによって、具体的に以下のような安全なWebアクセスが可能です。
    • アクセス先のWebサーバが本物であることを認証する
    • WebブラウザとWebサーバアプリケーション間のデータの暗号化および改ざんチェック
  • 「SSL」は「TLS」に置き換わっていますが、現在でも「SSL」という言葉が幅広く利用されています。
  • SSL/TLSの仕組みを理解する上で重要な技術は以下の通りです。
    • デジタル証明書
    • デジタル署名
    • ハッシュ関数
    • 暗号化(共通鍵暗号/公開鍵暗号)

セキュリティの基礎