It seems to me that disabling the QUIC client's "packet injection robustness" 
would be straightforward and safe for the use case considered here.  The client 
would simply terminate the connection if it received any unexpected or invalid 
packets on the QUIC connection's 5-tuple, reproducing the behavior of TLS over 
TCP.  This does not create any obvious compatibility issue (although some care 
would be required in relation to duplicate packets).

Personally, I don't find the motivating threat model especially convincing.  An 
active attacker who controls multiple colluding proxies can mount many powerful 
deanonymization attacks against a low-latency mixnet.  "Random delay" attacks 
are especially difficult to foreclose on long-lived connections, regardless of 
protocol.

--Ben Schwartz

[1] https://datatracker.ietf.org/doc/html/rfc9000#section-5.2-6
________________________________
From: Florentin Rochet <florentin.roc...@unamur.be>
Sent: Sunday, March 30, 2025 5:24 AM
To: Christian Huitema <huit...@huitema.net>; quic@ietf.org <quic@ietf.org>
Cc: mas...@ietf.org <mas...@ietf.org>
Subject: [Masque] Re: Support for QUIC on Stream

> 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.

Indeed, this is a faithful summary.


>
>> 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?
>

This is a great question; some researchers are looking at machine padding
designs (i.e., probabilistic process sending padding cells from
client/relay) [1,2] to
thwart website fingerprinting [3] (not to confuse with browser
fingerprinting),
and for raising FP in passive traffic analysis. This can be efficient to
raise
a passive attacker's uncertainty. Regarding bandwidth overheads, the Tor
project is planning to modify [4] the set of equations that currently drive
clients' path selection logic to account for padding bandwidth. Under
surplus
of bandwidth in between client-to-middle, the padding impact can be
negligible
if the path selection logic is well designed.

But in our case we are up against an active attacker abusing QUIC's
robustness
to bias the client's choice of set of nodes to compromised entry and
exit.  To
the best of my current understanding of this problem, covering periods
of silence
cannot be efficient, nor a security guarantee can easily be formulated at
low-latency.
Covering periods of silence with padding would amount to a quantity of
traffic
that would likely render any Tor-like network unusable. In a recent research
publication [5], we've been looking at an alternative software
architecture for Tor
to build Robustness by deploying new protocol features and code (as eBPF
patches) during circuit handshake. With this technique, it was for example
possible to design forward-compatible intolerant protocols where, e.g., a
middle node would never send anything towards the client before the client
explicitly gives it a go. This may sound a bit uncanny; but essentially
protocols messages propagate with the code to handle them, so we can
adjust in
the future if necessary. With this technique, we were able to protect the
client from naturally occurring periods of silence within the Tor
protocol at low
padding overhead cost (~3.6% of the total network application traffic), and
with the middle node sending traffic towards the client using a padding
machine
sending padding and swapping padding for real messages if real messages were
received from the exit during these potential periods of silence.
Needless to
say, this is complicated design over an unorthodox software
architecture, and
it only protects _known_ silences in the Tor routing protocol (and in
fact, not
all of them [6]).

The TL;DR and current conjecture is: we can't pick up a fight against an
active
adversary and hope to obtain security guarantees at usable low latency
against
active traffic correlation.  But, we can prevent path bias with
guarantees. I'd
love to be proven wrong on the first sentence, but I am afraid going this
direction and trying to accommodate with QUIC's protocol weaknesses for
MASQUE
is likely to produce a design much weaker than Tor on both performance and
security, and kill MASQUE's potential to be a future globally deployed
privacy-preserving layer in H3 with good security properties.

Best,

Florentin


[1]
https://urldefense.com/v3/__https://spec.torproject.org/padding-spec/circuit-level-padding.html*circuit-level-padding__;Iw!!Bt8RZUm9aw!8Oycw1q7Wutde3IxqGXMPxD9xzf9qU4OKcJD13DxFvo-zyVz44lwJyMLMrGgIR3enyNhxj78S7qLXNuX2VoU1SI3lA$
[2] https://github.com/pylls/padding-machines-for-tor
[3]
https://urldefense.com/v3/__https://cosicdatabase.esat.kuleuven.be/backend/publications/files/conferencepaper/2456__;!!Bt8RZUm9aw!8Oycw1q7Wutde3IxqGXMPxD9xzf9qU4OKcJD13DxFvo-zyVz44lwJyMLMrGgIR3enyNhxj78S7qLXNuX2Vpouh1TEA$
[4]
https://urldefense.com/v3/__https://spec.torproject.org/proposals/265-load-balancing-with-overhead.html__;!!Bt8RZUm9aw!8Oycw1q7Wutde3IxqGXMPxD9xzf9qU4OKcJD13DxFvo-zyVz44lwJyMLMrGgIR3enyNhxj78S7qLXNuX2Vptje90YQ$
[5]
https://urldefense.com/v3/__https://researchportal.unamur.be/en/publications/towards-flexible-anonymous-networks__;!!Bt8RZUm9aw!8Oycw1q7Wutde3IxqGXMPxD9xzf9qU4OKcJD13DxFvo-zyVz44lwJyMLMrGgIR3enyNhxj78S7qLXNuX2Vqh0JGRKw$
[6] 
https://urldefense.com/v3/__https://gitlab.torproject.org/tpo/core/torspec/-/issues/220__;!!Bt8RZUm9aw!8Oycw1q7Wutde3IxqGXMPxD9xzf9qU4OKcJD13DxFvo-zyVz44lwJyMLMrGgIR3enyNhxj78S7qLXNuX2VpSauXb-Q$

--
Masque mailing list -- mas...@ietf.org
To unsubscribe send an email to masque-le...@ietf.org

Reply via email to