Dear QUIC enthusiasts,

@cc [email protected]

I am reaching out to express my support for the proposal QUIC on stream, which
I believe is being discussed at the moment.

The motivations of the proposal essentially highlights performance issues of
QUIC due to UDP, which was a common observation and motivation for our QUIC-like
protocol atop TCPs that we designed at UCLouvain [0].

However, I believe there are also security motivations to use another substrate
than UDP. QUIC is supposed to be a general purpose transport protocol, but
there exists use-cases for which QUIC's properties linked to UDP make the
system less secure than TLS/TCP. I am thinking, for example, to the behavior
common to all QUIC stacks to silently drop undecryptable packets (e.g., because
keys are not available yet, or because AEAD decryption fails). This behavior
may have strong negative effects to low-latency anonymous communications such as Tor that could carry HTTP/3 frames in between a Tor client and a destination
server, and tunneled through Tor. It would be possible for malicious exit
relays to build a perfect signalling mechanism (in terms of FP=0/FN=0) that can
support a malicious entry node to silently drive a user's circuit to a
compromised exit node before any attempt of a connection to a destination is
even made, and then link source to destination.

A method to build such a signal is to inject a few packets at the exit relay
towards the client when the channel is expected to be silent. This is generally
simple to achieve. In the case of an HTTP/3 connection, these packets would
then be dropped by the client's QUIC stack, but such a signal would be
observable on the wire by the entry node. We initially designed attacks on the Tor routing protocols, called dropmarks [1] that exploited Tor's tolerance to
unexpected messages, also coined as the Robustness principle. These problems
are currently partially resolved in Tor, but using HTTP/3 with QUIC would
enable them again. You can read more about Tor's analysis of this issue within
Tor proposal 344, section 1.1.3 [2].

Because of such problems, the planned support of UDP and HTTP/3 in Tor browser and Tor (regarding UDP) has been halted (source: informal discussions with the
Tor devs on IRC).

I believe similar concerns may arise to MASQUE if a support of a Tor-like chain of proxies is eventually discussed. For this kind of future usage, I believe we need a HTTP/3 layer that uses a substrate behaving as TLS/TCP. I *think* there
are several possibilities to achieve this:

- Modifying QUIC streams such that the protocol gets closer to TLS/TCP while keeping
  most of QUIC's advantages over TLS/TCP. I *think* it could be possible by
  adding information into the short header, and using it for reordering stream   data before AEAD decryption rather than after decryption. But such a change   would run deep inside QUIC's design, and would lead to many side-effects to
  deal with (e.g., control-flow). Probably a no-go.

- Supporting a QUIC-like design atop TCP. QUIC on stream is an interesting
  starting point.

I am in favor of the second option, and I believe it may further be developed in the future to reach similar capabilities than QUIC, if there is motivation
for it.

Best,

Florentin Rochet

[0] https://orbi.uliege.be/bitstream/2268/264667/1/paper.pdf
[1] https://www.freehaven.net/anonbib/cache/dropping-pets2018.pdf
[2] https://spec.torproject.org/proposals/344-protocol-info-leaks.txt

Reply via email to