要約

  • RFC 3436 は同じ番号の逆方向ストリームを対にし、各双方向ストリーム上に独立した TLS 接続を確立した。セッション再開と遅延ハンドシェイクは使えたが、保護対象の各ストリームは自分のハンドシェイクを終える必要があった。
  • TLS の直列レコードは unordered delivery と有限寿命を許さず、保護範囲も SCTP ユーザーデータに限られた。RFC 6083 は後にこの制約を列挙し、一つの DTLS 接続へ境界を移した。

アソシエーションは一色ではなかった

32 ストリームの SCTP アソシエーションを考える。ストリーム 0 は完全なハンドシェイク済み、1 は別の接続の TLS セッションを再開中、2 は利用時まで未交渉である。単方向ストリームは TLS を運べず、別の双方向ストリームは平文の SCTP データを運べる。「TLS 有効」という一つの表示では、この状態を表現できない。

2002 年 12 月のRFC 3436は TLS 1.0 を SCTP 上で使う方法を定めた。テキスト版、RFC Editor 記録、Datatrackerとその履歴は文書の存在と標準化過程を示すが、特定製品の実装、相互接続、運用効果を示さない。

TLS 1.0は信頼できる順序付きバイト列を前提とした。一方のRFC 2960の SCTP は、境界を持つメッセージ、複数ストリーム、マルチホーミングを提供した。RFC 3436 は両者を変更せず、一つの TLS レコードを一つの SCTP ユーザーメッセージとして運んだ。

TLS に MTU を意識させないため、SCTP が分割と再構成を担う。最低 18,437 バイト、すなわち 2^14 + 2048 + 5 のユーザーメッセージを扱う必要があり、部分配送 API が必要になる場合もあった。下位の断片はレコードではなく、完成したレコードもアプリケーション処理の成功証明ではない。

独立性には接続数で支払った

両方向の同じストリーム番号を組み合わせ、少ない側の本数だけ双方向ストリームを作る。余りは単方向のままである。TLS 接続は各双方向ストリームに一つずつ置かれ、ハンドシェイクも独立した。

この設計なら、一つのストリームの停止が全ストリームの head-of-line blocking にはならない。しかし、多数の保護ストリームは多数の TLS 状態機械を意味した。完全ハンドシェイク、別接続のセッションを使う短縮ハンドシェイク、初回利用まで交渉を遅らせる方法が選べた。長い RTT なら完全交渉の並列実行が有利なこともあり、計算負荷が制約なら再開が有利だった。セッション共有は接続共有ではない。ストリーム 0 の準備完了はストリーム 1 の完了を証明しない。

TLS レコードは厳密な順序を要求したため、保護ストリームでは SCTP の unordered delivery を使えず、期限切れレコードを放棄することもできなかった。単方向ストリームも対象外である。RFC 3758が部分信頼性を定めた後も、この機能は RFC 3436 の直列 TLS には入らなかった。

暗号化は SCTP 制御を覆わなかった

RFC 4895は決定的な限界を明記した。RFC 3436 の TLS が保護するのは SCTP ユーザーデータだけで、SCTP chunk の送信元を証明するものではない。そこで SCTP-AUTH が選択された DATA や制御 chunk の認証を別に担った。TLS レコードの秘匿性、TLS ピアの身元、DATA chunk の真正性、制御 chunk の真正性は別の証拠である。

マルチホーミングでも同じである。最初に認証した IP と異なるアドレスからレコードが来てもよい。安全判断はトランスポートアドレスではなく、認証済みピアの身元に基づくべきだと RFC は述べた。

2011 年のRFC 6083は、unordered delivery 非対応、部分信頼性非対応、両方向で同数のストリームしか使えないこと、そして各双方向ストリームに一つの TLS 接続が必要なことを「深刻な制約」とした。代替案はアソシエーション内に一つの DTLS 接続を置き、セキュリティ制御を順序付きで完全に信頼できるストリーム 0 に集約し、アプリケーションデータには他の多くのストリーム、無順序配送、部分信頼性を認めた。DATA と必要な FORWARD-TSN には SCTP-AUTH も要求した。

RFC 8996は後に TLS 1.0 と 1.1 を廃止した。従って RFC 3436 の暗号スイート要件は歴史資料であり、現在の推奨ではない。

Heng Lu の現実の層という視点なら、規格、ハンドシェイク、chunk 認証、アプリケーション結果を混ぜない。実行コードの優位は実測を求め、最小初期仕様は既存部品を再利用する狭い共通部分の価値を説明する。これは後世の編集的読解であり、著者の意図を推測するものではない。

RFC 3436 の教訓は「SCTP は安全」ではない。「このストリームは、この身元で、この配送規則に従ってハンドシェイクを完了した。制御面には別の証明が要る」である。

出典

その他の凍結記録