通信を支える基盤技術をざっくりと解説します。今回は「SSL 通信」の概略についてです。
SSL 通信とは
SSL (Secure Sockets Layer) とはセキュアなデータ通信の為の仕組み (プロトコル) です。
SSL 通信のメリット・デメリット
SSL はネットワーク上で通信の安全を確保する為に広く利用されています。具体的には送受信するデータ本体を盗聴や改ざんから守り、宛先が正しい相手であること (真正性) を保証することができます。一方で SSL 通信に限らず暗号化通信を利用すると一般的に、通信が低速になるというデメリットも存在します。多くの場合には問題になるほどではありませんが、リアルタイム性を特に重視する場合には留意が必要です。
HTTPS 通信
HTTPS とは HTTP over SSL/TLS を縮めた呼称で、SSL 上で HTTP (Hyper Text Transfer Protocol) 通信を行う方式のことです。OSI 参照モデルにおけるセッション層(第 5 層) の SSL とアプリケーション層(第 7 層) の HTTP を組み合わせた通信方式になります。
SSL と TLS
TLS (Transport Layer Security Protocol) は標準化団体 IMTF (Internet Engineering Task Force) によって作成されたセキュアなデータ通信の為の仕組み (プロトコル) です。Netscape 社が開発した SSL3.0 をベースに作成されたのが TLS1.0 であり、慣例的に SSL 通信とは呼ばれているものの、現在利用されている仕組み (プロトコル) は TLS1.2 や TLS1.3 となっています。
SSL プロトコルの概要
SSL 通信では通信開始時にハンドシェイクと呼ばれる下記のやりとりを行います。
1. プロトコルバージョンと暗号化アルゴリズムを決定する
2. 証明書を送付・検証する
3. 通信で利用する鍵を共有する
ハンドシェイク終了後、暗号化通信が開始されます
プロトコルバージョンと暗号化
先に述べた通り現在利用されているプロトコルは TLS1.2/TLS1.3 で、その他 (過去のバージョン) の利用は禁止されていることがほとんどです。ハンドシェイク時には対応しているプロトコルバージョンと暗号スイート (アルゴリズムを含め必要な情報をひとまとめにしたもの) を共有しどれを利用するか決定します。別の言い方をすれば SSL 通信対応する際にはどのプロトコルバージョンと暗号スイートに対応するかを決定するのが第一歩となります。
証明書
SSL 通信では証明書を利用して通信相手 (宛先) が正しいかどうかを検証します。
例えば Web サーバー (HTTPS 通信) の管理者であれば認証局 (CA) からサーバー証明書を発行して貰い、事前に用意しておく必要があります。一方、利用者 (クライアント) の証明書は Web ブラウザインストール時に一緒に用意されることがほとんどです。
認証局 (CA) にも選択肢が有る為、SSL 通信対応する際には証明書の発行方法とインストール方法の検討が必要になります。
まとめ
今回は「SSL 通信」の仕組みについて、まずは触りだけご紹介しました。引き続き、AIMNEXT Noteでは「SSL 通信」の詳細や、セキュリティ関連の記事を投稿していこうと思います。