【OSI 参照モデル レイヤ5 セッション層】SSL/TLS とは

OSI 参照モデル

本記事は、全7回に渡る OSI 参照モデルの解説のうち、レイヤ5のセッション層に関する記事です。

その他のレイヤの解説については以下の記事をご確認ください。

スポンサーリンク

セッション層とは

セッション層とは、セッション(通信の開始から終了までに行う、複数の通信を1つにまとめたもの)を管理する層です。

セッションの具体例を挙げると以下のとおりです。

開始セッション中の処理終了同一性
マイページログインマイページの閲覧ログアウト同じセッション ID を持つクライアントは同じユーザーと見なす(毎回ログインしなくてよい)
暗号化通信共通鍵交換後暗号化通信共通鍵の有効期限同じ TLS セッション(同じ共通鍵を持つ)クライアントは同じユーザーと見なす(毎回共通鍵を交換しなくてよい)

TCP/IP では対応する層が存在しないため、セッション層に対応するプロトコルは存在しません。
セッション機能は、アプリケーションの機能他の層のプロトコルに跨って実装されています。

セッション機能を実装するプロトコルの一例として SSL/TLS プロトコルがあります。

SSL/TLS プロトコルは以下の層に跨って位置します。

モデル対応する層層の間と言われる所以
OSI 参照モデルトランスポート層セッション層の間TLS コネクション
TLS セッション
TCP/IPトランスポート層とアプリケーション層の間 [1]アプリケーション層
TLS Handshake Protocol
TLS Record Protocol
トランスポート層 [1]

At the lowest level, layered on top of some reliable transport protocol (e.g., TCP [TCP]), is the TLS Record Protocol.
(中略)
the TLS Handshake Protocol, allows the server and client to authenticate each other and to negotiate an encryption algorithm and cryptographic keys before the application protocol transmits or receives its first byte of data.

[1] https://datatracker.ietf.org/doc/html/rfc5246
スポンサーリンク

SSL/TLS プロトコルとは

SSL(Secure Sockets Layer)/TLS(Transport Layer Security) プロトコルとは、主にアプリケーション層のプロトコルを暗号化するために使用するプロトコルです。

なお、TLS は SSL の新しいバージョンのことです(TLS 1.0 は SSL 3.1 のことです。)

SSL/TLS とアプリケーション層のプロトコルの組み合わせ

SSLと組み合わせたプロトコルポート番号元のプロトコルポート番号
HTTPS443HTTP80
SMTPS465SMTP25
LDAPS636LDAP389
FTPS (data)989FTP (data)20
FTPS (control)990FTP (control)21
IMAPS993IMAP143
POP3S995POP3110

SSL/TLS ハンドシェイク

SSL/TLS ハンドシェイクは、アプリケーション層のプロトコルが暗号化通信を開始するために、SSL/TLS コネクションを確立することです。

なお、SSL/TLS ハンドシェイクは、3way ハンドシェイクの(TCP コネクションが確立した)後に実施します。

クライアントサーバ備考
HelloRequestClientHello を要求
ClientHello以下を送信
・TLSのバージョン
・乱数
・セッションID
・暗号方式
・ハッシュアルゴリズムのリスト(cipher_suites)
・圧縮方法
ServerHelloClient Hello から利用する cipher_suites 等を選ぶ
ServerCertificateサーバーの公開鍵と証明書
ServerKeyExchange鍵交換プロトコルに依存
anonymous Diffie-Hellman であれば、gx mod p (サーバーの秘密鍵で暗号した共通値)を送信
CertificateRequestClientCertificate を要求
ServerHelloDoneサーバ側からのメッセージ送信が終わった事を示す
ClientCertificateクライアントの公開鍵と証明書
ClientKeyExchange鍵交換プロトコルに依存
anonymous Diffie-Hellman であれば、gy mod p(クライアントの秘密鍵で暗号した共通値)を送信
CertificateVerifyクライアントが署名能力を持っていることを証明するために、全メッセージに対し、共有されたmaster secret で署名
ChangeCipherSpec暗号通信に移行
Finished暗号文
ChangeCipherSpec暗号通信に移行
Finished暗号文
アプリケーション層のデータ通信アプリケーション層のデータ通信暗号文
https://ja.wikipedia.org/wiki/Transport_Layer_Security
https://qiita.com/n-i-e/items/41673fd16d7bd1189a29

TLS 証明書、公開鍵、秘密鍵の詳細については、以下の記事をご覧ください。

スポンサーリンク

TLS セッションとは

SSL/TLS におけるセッションとは、複数の SSL/TLS コネクションを1つに束ねたものです。
SSL/TLS セッションが確立されている限り、別の SSL/TLS コネクションで共通鍵を使い回すことができます。

https://milestone-of-se.nesuke.com/wp-content/uploads/2019/05/connection-session-3.png.webp

上記のように1つの TLS セッションでは、複数(1つ以上)の TLS コネクションが存在します。

同じ TLS セッションであれば、別の TLS コネクションであっても、前回の共通鍵を使い回すことが可能です。

HTTP セッションとは

HTTP プロトコル自体にセッション機能は実装されていません。
HTTP におけるセッションとは、アプリケーション側でセッション ID を管理することでクライアントの状態(ログイン済みや買い物かごの情報など)を覚えておくことです。

HTTP を用いたアプリケーションでは、一般的にセッション ID として cookie を利用することでセッションを管理します。

https://milestone-of-se.nesuke.com/nw-basic/as-nw-engineer/connection-and-session/

セッション管理の詳細については、以下の記事をご覧ください。

Cookieとセッションをちゃんと理解する - Qiita
引用/参考書籍 「よくわかるPHPの教科書」 「初めてのPHP5」 「パーフェクトPHP」 「体系的に学ぶ安全なWebアプリケーションの作り方」 「PHPスーパーサンプル」 「プロになるためのWeb技術入門」 インターネット...

次のレイヤについて

OSI 参照モデル レイヤ5のセッション層に関する説明は以上となります。

次のレイヤに関する説明は以下の記事をご覧ください。

参考資料

以下のサイトや書籍を参考にしました。

3 Minutes Networking
ネットワークエンジニアとして
ネットワークエンジニアに必要なネットワーク技術とCisco・Juniper・F5製品の技術解説。NWエンジニアの仕事内容や年収を紹介。ネットワークスペシャリスト、CCNA/CCNP/CCIEの情報発信。
0

コメント