見えるセキュリティ

TLSセッション再開

TLS SESSION RESUMPTION

この概念とは?

TLSセッション再開は、前回の接続で得た情報を使って、新しい接続の準備をする仕組みです。以前の情報を活用することで、フルハンドシェイクに比べて接続準備にかかる処理を減らせます。

TLS 1.3とTLS 1.2は、TLSのバージョンです。前回の情報を利用する目的は共通ですが、保存する情報や、新しい接続の鍵を準備する手順には違いがあります。タブを切り替えて、それぞれの流れを確認できます。

THEME
crypto
KIND
protocol
REVIEW
self-reviewed ·

前回の再開情報を使って、新しい接続の鍵を準備する流れ

STEP 1は前回の接続での準備、STEP 2からが今回の新しい接続です。ここでは、Serverの応答を確認してからデータを送る1-RTTの再開を扱います。応答を待たずに早期データを送る0-RTTは、別の教材で扱います。

接続の準備 → データ通信時間は上から下へ ↓
Client接続する側
Server接続先
  1. 前回の接続

    NewSessionTicket
    前回の接続の鍵で保護された再開案内
    ServerからClientへ

    ClientはTicketを保存し、対応するPSKを端末内で準備する。

STEP 1 まで表示しています。続きは「次へ」で追加します。

  • Clientから送る
  • Serverから送る
  • 端点内の処理には通信矢印を付けない

縦の間隔・動く速さは実際の処理時間ではありません。STEPは学習上の区切りで、パケット数や往復数とは別です。

STEP 01 / 6

前回の接続で、再開情報を準備する

STEP 1 / 6: 前回の接続で、再開情報を準備する

現在のSTEP 1STEP 2STEP 3STEP 4STEP 5STEP 6

前回の接続で安全に通信できるようになった後、Serverから再開用の案内が届くことがあります。Clientは、再開情報を選ぶための目印「Ticket」を保存し、それに対応する「再開用の秘密(PSK)」を端末内で準備します。TicketとPSKは別の値です。

このSTEPで押さえること

Ticketは再開情報を選ぶ目印で、PSKや通信鍵そのものではありません。ticketとticket_nonceはNewSessionTicket内の別々のフィールドです。

技術的な詳細を見る

NewSessionTicketはpost-handshake messageで、前回の接続のデータ通信用鍵で保護されて送られます。再開のために元の接続が既に閉じている必要はありません。RFC 9846 §4.7.1では、TicketはClientには不透明なLabelで、後続の接続ではPSK identityとして使われます。ticketとticket_nonceはNewSessionTicket内の別々のフィールドです。Ticket自体は暗号鍵ではなく、再開用PSKはresumption secretとticket_nonceからTicketごとに導出されます。Server側はTicketと対応するPSKをDB等で参照できるように管理する方法も、必要な情報を自己暗号化したTicketに持たせる方法も選べるため、この教材では保存方式を限定しません。ここではRFC 9846 Figure 3に沿う代表的な流れを示します。 前回は接続先を適切に確認した接続で、再開情報を利用できるという前提です。本例はpsk_dhe_keと新しいECDHE鍵共有を使う成功経路で、0-RTTの早期データ、HelloRetryRequest、外部PSK、Clientの証明書による認証は扱いません。Ticketには有効期間などの条件があり、保存してあれば必ず再開できるわけではありません。

パネルの開閉ではSTEPは変わりません。

この概念の要点

  • 要点

    前回の情報で、新しい接続を準備する

    セッション再開は、以前の接続をそのまま復活させることではありません。保存した再開情報を使い、新しい接続の準備を進めます。

  • 防御

    Ticketと秘密情報は別のもの

    Ticketは再開情報を選ぶための目印です。再開用のPSKそのものや、データを暗号化する鍵として送るものではありません。

  • 防御

    今回の鍵を新しく準備する

    このTLS 1.3の例では、再開用のPSKに新しい鍵共有を組み合わせます。方向別に鍵を準備し、接続準備とデータ通信を守ります。

  • 要点

    再開しても、最初からデータを送るとは限らない

    ここではServerの応答を確認してからデータを送る流れを扱います。早期データを送る0-RTTは、別の教材で確認します。

理解確認

この教材で扱うTLS 1.3の再開では、新しい接続の通信鍵をどう準備しますか。

参考資料

RELATED CONCEPTS