TCPとTLSを連携させるTCPLS

ルーヴァン・カトリック大学のFlorentin Rochet氏らによって「TCPLS: Closely Integrating TCP and TLS」という論文が出されています。

面白そうなのでかんたんにメモしておく。

詳しくは論文や文末記載の資料を御覧ください。

TCPLS

この論文では、TCPTLSを連携させるTCPLSを考案しています。スタック図ではTCPTLSがくっついてるようなものになりますが、くっついた新しいTCPLSというプロトコルというよりかは、TCPTLSが連携して動作できるようにするイメージです。

ですので、飛び交うパケットとしては通常のTCPTLSであり、通信経路上での対応が必要ということはなさそうです。

f:id:ASnoKaze:20201220235407p:plain

もともとTCPTLSはレイヤが分かれていますが、論文では連携させる事による様々なメリットが示されています。

  • TCPLSでは、TCP制御情報をTLS拡張やTLSレコードで送ることが出来ます。通常のTCPではオプション領域が40byteまでに制限されていたり、中間装置(ネットワーク機器)によって削除・改変される可能性があります。TCPLSでは長さの上限もなく、暗号的に保護されます。
  • TCP輻輳ウィンドウとTLSのレコード長を合わせることにより、パフォーマンスを向上させる

(アプリケーションデータはTLSレコードで送受信されます。)

f:id:ASnoKaze:20201221001212p:plain

セッションの開始

TCPLS セッションは、通常のTCPハンドシェイクが行われた後にTLSハンドシェイクが行われます。

またアプリケーションには、TCPLS SocketのAPIを提供している。例えば以下など (詳細は論文を参照)

  • tcpls_connect()
  • tcpls_handshake()
  • tcpls_send()
  • etc...

その他

論文中ではTCPLSの、Happy eyeballs、Streams 、App-level Connection migrationなどにおいてもメリットについても紹介されている。また、機能面におけるQUICとの比較も行われている。

ユースケース

TCPLSではTCPレイヤの制御情報を安全にやりとりできるため、次のような仕様をより安全にできると述べている。

ここが本題であるわけだが、一旦詳細は論文を参照していただきつつ、余力があれば後日深堀りします。

参考資料

なお、IETF109でも発表があったが、具体的に標準化をすすめるというよりかは、TFO, MPTCPでのユースケースについての理解を深めるためと発表者は述べている。