Thanks for the explanation. I am focusing on your 3 example to check whether I correctly understood.

The goal of the adversary is to anonymize the communication, e.g. matching client and destination. It does so by "volunteering" a number of guards and exits. If a communication is routed through a Guard and an Exit controlled by the attacker (E_a and G_a) r, the two will collaborate.

They could obviously collaborate and try to match timings of packets, but it much easier to alter the end-to-end exchange between client and destination, somehow inserting a mark at one end that can be recovered at the other end. I assume that we have an onion setup, and that this setup prevents G_a and M from actually seeing the packets send and received by the client -- but of course E_a can see them. E_a and G_a have to find a signal that will alter the volume and timing of packets between client and server.

With QUIC, you believe that this can be achieved by inserting a bogus packet, which will be relayed to the other end but will be discarded because it does not pass decryption. Intermediaries like M cannot detect this. That packet is inserted by E_a as if it came from the destination, at a time when the destination would normally be silent. The "absence of the expected silence" is the signal.

3) malicious guard and exit

Client-----G_a-----M-----E_a-----Destination

In that scenario, the adversary can abuse QUIC's robustness to derive a perfect
traffic confirmation technique, as discussed above.

My current guess is that we cannot have a QUIC connection over a whole circuit, or over a set of MASQUE proxies that resists such an adversary without impractical changes in the QUIC protocol.  Some research would be needed to know what combination of layers and protocols (and extensions; e.g., datagrams) would be safe to use. I *think*  QUIC on stream would be, as long as it behaves like the TLS1.3 record layer.

The key issue there is that anybody can inject a packet and that QUIC will drop it. With TCP, packet injection is likely to break the connection. Breaking the connection matches one of the goals of the adversary, as they know which connection was broken by the injection. But breaking the connection can be observed.

The timing attack relies on the adversaries guessing that the communication should remain silent for a particular time interval. The first defense may be to break that guess. Either end of the QUIC connection could also inject their own set of bogus QUIC packets at random times. Would that be efficient?

-- Christian Huitema


Reply via email to