I have analyzed the two mechanisms proposed in the draft, with specific focus 
on the impact of middleboxes. 

 

Assumptions:

The middlebox is deployed inline, between the client and the fronting server, 
and is allowed to intercept TLS sessions.  The middlebox is policy-driven, and 
uses SNI as an input in determining whether or not to intercept the session; 
the policy must use the SNI of the hidden server.

 

Mechanism #1 : Tunnel ClientHello in 0-RTT early data.

(1) Mechanism #1 requires 0-RTT support, but the middlebox would not be 
violating the TLS 1.3 specification by not implementing 0-RTT.  The middlebox 
intercepts all sessions destined to a specific fronting server (F); the 
identity of F should be public knowledge, but even if it is not, we have to 
assume that the middlebox has a mechanism to decide when to intercept sessions 
destined to F.  

 

(2) Assume that the middlebox actually supports PSK and 0-RTT, i.e. TLS 
intercept with PSK/0-RTT support in the session between the client and the 
middlebox, as well as PSK/0-RTT support in the session between the middlebox 
and the fronting server.  The middlebox will be able to decode ClientHello#2 
sent in the 0-RTT early data because the client_early_traffic_secret will be 
known to the middlebox.  The middlebox would thus have access to the SNI of the 
hidden server, and would be able to evaluate policy.  The middlebox would have 
the option to pull out of the session after sending ClientHello#2 to the 
fronting server (re-encrypted with the client_early_traffic_secret shared 
between the middlebox and the fronting server).

 

Mechanism #2: Session ticket that can be decoded by Fronting and Hidden server.

(3) Mechanism #2 relies on PSK session resumption support in the middlebox; 
this is not guaranteed.

 

(4) The middlebox would not participate or interfere in any of the out-of-band 
channels between the fronting server and the hidden server, which implies that 
the middlebox will not be able to decode the session ticket generated by the 
hidden server - but it does not have to.  The middlebox would be able to 
observe the encoded session ticket in the NewSessionTicket message because it 
intercepts the initial TLS session between the client and the hidden server 
(even if mechanism #1 is used for the first session).  The middlebox would thus 
be able to extract the SNI of the hidden server from the NewSessionTicket 
message and build a mapping of encoded session tickets to hidden servers. TLS 
sessions (destined to the fronting server) that were not previously intercepted 
by the middlebox will use PSK identities that are not in the mapping table - 
the middlebox would likely force intercept of those sessions and strip the 
unknown PSK identities, which would result in a TLS session that terminates on 
the fronting server, leaving the fronting server without any knowledge of the 
hidden server.

 

(5) Ignoring middleboxes, in my opinion the infrastructure required for 
collaboration between fronting servers and hidden servers (stateful, 
shared-key, public-key, or otherwise) would be a practical barrier to entry for 
most server administrators.

 

 

--Roelof

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to