session resumption

セッション再開 (TLS)

仕様書

プロトコル

[2] TLS session resumption は、 TLS Handshake ProtocolClientHello を既存のセッションセッションIDを指定して送信することによって開始する、 簡略化された handshake の手順です。

[4] RFC 5077NewSessionTicket メッセージを使った拡張を規定しています。

[11] 「再開」というと一度終了したものを再始動させるイメージがありますが、 他で確立済みのセッションを、その切断を待たずに同時に再開できます。 プロトコル仕様上はセッションの同時使用数に上限はありません。

[12] 同時に存在するセッションの接続間では、 cipher suite 等プロトコルの設定に同じものを使う以上の関係はありません。 ある接続における再折衝が他の接続に影響を及ぼしたりしませんし、 ある接続でエラーがあっても他の接続に直ちに影響するわけではありません。

歴史

実装

[1] SessionResumption - sslyze - Checking the server's session resumption configuration. - Fast and Full-Featured SSL Scanner - Google Project Hosting ( ( 版)) <https://code.google.com/p/sslyze/wiki/SessionResumption>

[6] RFC 7486 - HTTP Origin-Bound Authentication (HOBA) ( 版) <https://tools.ietf.org/html/rfc7486#section-6.3>

The server MUST NOT allow TLS session resumption for any logged out session.

[7] Security/Server Side TLS - MozillaWiki ( 版) <https://wiki.mozilla.org/Security/Server_Side_TLS#Session_Resumption>

[8] Security/Server Side TLS - MozillaWiki ( 版) <https://wiki.mozilla.org/Security/Server_Side_TLS#Session_Resumption>

Session resumption is a very useful performance feature of TLS, but also carries a significant amount of risk. Most servers do not purge sessions or ticket keys, thus increasing the risk that a server compromise would leak data from previous (and future) connections.

The current recommendation for web servers is to enable session resumption and benefit from the performance improvement, but to restart servers daily when possible. This ensure that sessions get purged and ticket keys get renewed on a regular basis.

[9] RFC 7525 - Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) ( 版) <https://tools.ietf.org/html/rfc7525#section-3.4>

[10] AnyEvent::TLS - search.cpan.org ( 版) <http://search.cpan.org/~mlehmann/AnyEvent-7.11/lib/AnyEvent/TLS.pm>

Enables or disables RC5077 support (Session Resumption without Server-Side State). The default is disabled for clients, as many (buggy) TLS/SSL servers choke on it, but enabled for servers.