要約

  • NewSessionTicketは、将来のハンドシェイクで使う不透明なPSK識別子をクライアントに渡す。受理されれば新しいTLS接続と発行元のハンドシェイクが暗号学的につながるが、古いトランスポートや現在のアプリケーション判断が復元されるわけではない。
  • 有効期間、難読化された年齢、nonce、KDFハッシュ、SNI、PSKモード、binderは、それぞれ別の限定された問いに答える。現在の認可、同じバックエンド、0-RTT受理、過去の業務判断を再利用する権限までは証明しない。
  • 実証可能な再開には、版管理された状態契約、限定されたチケット鍵とサービス受理範囲、独立した0-RTT判断、変化し得る権限の再検証、完全ハンドシェイクへの観測可能な復帰が必要である。

正しい再開が誤った権限を運んだ

障害切替先のノードは、6時間前のチケットを復号し、関連状態を読み出し、再開ハンドシェイクを完了した。運用指標ではresumedが成功になった。一方、ID基盤では、その間に利用者の管理者ロールが削除されていた。

アプリケーションはID基盤を照会せず、チケットと共に保存された古い結論を採用した。TLSが確認したのは、以前のハンドシェイクから派生した秘密をクライアントが所持することだった。現在の業務権限は確認していない。

ここでは二つの時計が混同された。暗号ポリシー上のPSKはまだ利用可能だったが、認可ポリシー上の権限は失効していた。真正な状態であっても、時間の経過によって権威を失う。

チケットが指すのは新しいPSKである

TLS 1.3は、旧来のセッションIDとTLS 1.2チケットの仕組みを共通のPSK交換に置き換えた。クライアントFinishedの後、サーバーはNewSessionTicketを送信できる。チケット値は、再開秘密とチケット固有のticket_nonceから導出されるPSKに対応する。

チケットはサーバーのデータベースを引くキーでもよい。自己暗号化・自己認証された状態をクライアントに持たせてもよい。どちらもプロトコル上は不透明なPSK識別子であり、以前のトラフィック鍵や接続そのものではない。

一つの接続から複数のチケットを発行できる。並列接続やインターフェース間の競争に使えるが、nonceが異なるため各チケットのPSKも異なる。監査記録は「同じセッション」とまとめず、発行単位と鍵世代を識別しなければならない。

再開では、新しいハンドシェイク、新しいトラフィック鍵、新しいレコード番号が作られる。以前のソケット、プロセスメモリ、アプリケーション取引、ネットワーク経路は戻らない。

有効期間は受理の約束ではない

ticket_lifetimeは発行時から数え、最大7日である。0なら即時破棄を意味する。クライアントはさらに早く削除でき、サーバーは表示値より短く扱える。

したがって、この値はクライアントが利用を試せる上限であって、サーバーに期限いっぱいの受理を強制しない。鍵ローテーション、データベース削除、受理範囲の縮小、アプリケーション状態の失効は、期限前でも完全ハンドシェイクを要求できる。

ticket_age_addは、チケットごとのランダム値を年齢に加えて、受動的な相関を難しくする。サーバーはその値を差し引いて経過時間と比較する。しかし、コピーされたチケットにも同じ算術が付く。これは能動的なリプレイ防止トークンではない。

年齢が許容範囲外なら、サーバーは0-RTTを拒否し、ClientHelloを新鮮だと仮定すべきではない。一方、通常の再開は続けられる場合がある。年齢判定、PSK選択、再開、早期データ受理は別々の結果である。

Binderが証明するのは秘密の連鎖

クライアントはClientHelloでPSK識別子と対応するbinderを提示する。binderはPSKを今回のハンドシェイクに結び付け、再開秘密を通じて発行元のハンドシェイクにもつなぐ。

この証明は強いが範囲が狭い。アカウントが有効か、端末姿勢が維持されているか、契約が続いているか、リスク評価が変わっていないかは証明しない。改ざんされていない結論でも、古くなることはある。

PSKで認証する再開では、サーバーはCertificateとCertificateVerifyを再送しない。過去の認証文脈が暗号学的役割を担う。そこに可変の業務主張を結び付けるなら、何を継承し、何を現在の権威源から取り直すかを明示する必要がある。

OpenSSLは、ハンドシェイク後のクライアント認証で状態が更新された後に、新しいチケットを発行できる。新しいチケットは新しいID状態に対応する。古いチケットが遡って更新されるわけではない。

サービス名は現在の入力である

再開ClientHelloにも現在のSNIが入る。クライアントは、元の証明書が新しい名前に対して有効な場合にだけ再開でき、通常は元と同じSNIを使うべきである。実装がアプリケーションへSNIを渡すなら、今回の値を渡さなければならない。

RFC 9525も、参照IDを現在要求しているサービスに結び付ける。SNIとALPNはサービスとプロトコルを示す。チケットを復号できることは、同じ基盤上の全名称、全テナント、全プロトコルで受理できる権限ではない。

地域間でラッピング鍵を共有すればフェイルオーバー成功率は上がる。同時に、古い状態を解釈できるノード集合も広がる。BoringSSLが名前を越えた再開を明示的なポリシーとして扱うのは、復号能力と受理権限が同義でないためである。

KDFハッシュも境界になる。元の接続と同じKDFハッシュを使う暗号スイートだけが再開に使える。この互換性は暗号学的構成を許すだけで、以前のルーティングや権限を固定しない。

再開と0-RTTは別の決定である

チケットにはearly_data拡張と最大バイト数を含められる。これはクライアントが0-RTTを提示できる条件であり、サーバーが受理する義務でも、アプリケーション操作がリプレイに安全だという証明でもない。

観測では、チケットの復号または検索、ハンドシェイクでのPSK選択、0-RTT受理を分離する。年齢の疑義、アンチリプレイ記憶の欠落、アプリケーションパラメータ変更により、早期データだけ拒否して通常の再開を完了できる。

HTTP 425はさらに上の境界を扱う。早期データ由来の要求をオリジンが実行しないための手段であり、チケットが運べる状態の権限を定義しない。本件は0-RTTを全面無効にした1-RTT再開でも発生する。

QUICでは、記憶したトランスポートとアプリケーションパラメータの互換性も必要になる。有効なTLSチケットだけでは、以前のQUIC制限やHTTP/3 SETTINGSが今も適合するとは言えない。

保存方式が受理範囲を決める

データベース型チケットは、使用時に削除し、消費可能な識別子として監査し、一つの権威ストアに限定できる。ただし、データベースの可用性とレプリケーション整合性が再開の依存先になる。

自己完結型チケットはノード障害に強い。反面、ラッピング鍵を持つノードは鍵が退役するまで状態を解釈できることが多い。鍵の配布範囲は、状態を受理できる権限範囲でもある。

これは「状態型は安全、自己完結型は危険」という二択ではない。データベース遅延は二重受理や誤拒否を招く。広い鍵共有や長い鍵世代の重複は、古い状態の解釈期間を延ばす。

OpenSSLは復号結果、鍵名、アプリケーションデータ、発行枚数、抑止設定を公開する。GnuTLSもチケット鍵と追加発行を制御する。BoringSSLの実装は年齢値を新しくし、枚数を制限し、早期データを別条件にする。

APIの存在は制御面の証拠である。実際の鍵世代、ローテーション完了、格納主張、認可再照会までは証明しない。

永続する結論ではなく版付き参照を運ぶ

PSK識別子、KDFハッシュ、再開モード、認証済みハンドシェイクへの限定参照は、比較的安定した暗号事実である。利用者権限、端末信頼、契約、テナント経路は変化する。

アプリケーションは、利用者IDと認可バージョンをチケット状態に格納し、受理時に現在値と比較できる。期限付きのテナント経路を持たせ、移行後は拒否できる。クライアント認証が変われば新しい世代を発行できる。

危険なのは、administrator=true、端末信頼済み、契約有効といった結論を版も失効条件もなく保存する設計である。暗号化と認証は不正な書換えを防ぐが、正しい過去を正しい現在には変えない。

EAP-TLSは認証再開に一つ以上のチケットを使い、7日上限を守る。そのプロファイル側が「再開」の意味と無効化条件を定める。TLSは状態の運び手であり、現在のネットワークアクセスを決める主体ではない。

フェイルオーバー後にも残る証拠

プライバシーを守るチケット相関値または鍵名、発行ノード・地域、発行時刻、表示期限と実効期限、鍵世代、保存方式、KDFハッシュ、PSKモードを記録する。提示時には年齢、復号結果、選択インデックス、現在のSNI・ALPN、再開結果、完全ハンドシェイクへの復帰理由を残す。

0-RTTは別に記録する。提示、暗号学的適格性、受理・拒否、上限、アンチリプレイ状態、アプリケーション判断を分ける。resumed=trueからearly_data_accepted=trueを推測してはならない。

業務状態には、スキーマ版、認可版、失効確認、経路版、現在判断の権威源を付ける。発行と受理を結ぶ相関値は使えるが、チケットやPSKそのものをログに出してはならない。

期限切れ、サーバー短縮期限、未知・退役鍵、認証失敗、DB行削除、地域間再利用、SNI/ALPN変更、KDF不一致、チケットは復号可能だが利用者は失権済みという負の試験が必要である。

拒否時の復帰も証明する。ポリシーが許せば完全ハンドシェイクを成功させ、緊急時には無関係なTLSサービスを止めずに、一つの鍵世代または状態版だけを退役できなければならない。

出典