基本情報技術者試験など情報処理技術者試験を受験する方にとっては必須の,SSL/TLSについてシンプルにまとめています。はじめに,SSL/TLSの概要を説明し,その後,SSLのプロトコル(SSL Handshakeプロトコル(Handshakeプロトコル,Change Cipher Specプロトコル,Alertプロトコル),Recordプロトコル),セッションの確立(プリマスタシークレット,マスタシークレット,セッション鍵(共通鍵),MACシークレット),SSL/TLSの問題点について説明しています。
SSL/TLS(Secure Socket Layer / Transport Layer Security)
SSL/TLSは,インターネット上でデータを暗号化して送信するプロトコルです。通信内容の暗号化や,サーバー認証,クライアント認証といった機能を提供します。
※ SSLは,トランスポート層(OSI基本参照モデル)のプロトコルである(トランスポート層とセッション層の間で動作する)
※ TLSは,SSLを標準化したプロトコルである
※ SSLは,ステートフルなプロトコルなので,状態管理を行うこと(以前の状態を保持すること)ができる
※ SSL/TLSは,Webブラウザの多くが対応していることから,主にWWWで利用されている。また,(Webアプリケーションシステムにおいて)インターネットVPNを構築する際に用いられることもある(SSL-VPN。クライアントに特別な設定がいらず,ファイアウォールの設定も容易なため)。SSL-VPNについては,「WAN-VPN-インターネットVPN-SSL-VPN -情報処理シンプルまとめ」を参照
SSLのプロトコル
SSLは,次のようなプロトコルで構成されています。
Handshake プロトコル | 暗号アルゴリズムや鍵など,暗号化通信に必要な情報を通信相手と交渉するプロトコル |
Change Cipher Spec プロトコル | Handshakeプロトコルにより決定した情報の利用開始を通知するプロトコル |
Alertプロトコル | エラーなどを通知するプロトコル |
Recordプロトコル | 上位層から渡されたデータを圧縮・暗号化して下位層に渡したり,下位層から渡されたデータを復号して上位層に渡したりするプロトコル |
セッションの確立
SSLセッションは,SSLハンドシェイクプロトコルにより確立します。
SSLセッション確立後は,Recordプロトコルが,上位層から渡されたデータを圧縮・暗号化して下位層に渡したり,下位層から渡されたデータを復号して上位層に渡したりします。
また,複数のセッションを使用することもできます。その場合,既存のセッション情報を用いてセッションを確立することができます。
SSL対応のプロトコル
SSLを利用できるプロトコルには,次のようなものがあります。
プロトコル | ポート番号 |
---|---|
HTTPS(HTTP over SSL/TLS) | 443 |
LDAPS(LDAP over SSL/TLS) | 636 |
FTPS DATA(FTP DATA over SSL/TLS) | 989 |
FTPS(FTP over SSL/TLS) | 990 |
POP3S(POP3 over SSL/TLS) | 995 |
SSL/TLSの問題点
SSL/TLSは,アプリケーションと連携した通信が可能ですが,次のような問題点もあります。
- それぞれのアプリケーションが,SSLに対応している必要がある
- SSLサーバーの負荷が大きい
※ サーバーのクラスタリングや,SSLアクセラレータなどの導入により負荷分散を図る必要がある。負荷分散については,「」を参照
- VPN装置がインターネットから攻撃可能な位置に配置されているため,完全な閉域性は確保できない
- 通信速度は保証されない
まとめ
今回は,SSL/TLSについて,シンプルにまとめてみました。難しく感じた場合は,また,時間を空けて読んでみましょう。