On Wed, May 28, 2025 at 6:32 PM Stephen Farrell <stephen.farr...@cs.tcd.ie> wrote:
> I'd not think being able to fingerprint an implementation > implies a total loss of user privacy, which is how I read > the above. > > What am I missing? > Not a total loss of privacy. Just the ability to detect which implementation initiated this connection. That's what I understood MT's goal to be. On Wed, May 28, 2025 at 6:42 PM Christian Huitema <huit...@huitema.net> wrote: > It is not really about implementation. It is about configuration, from > which the DPI wants to deduce "is this connection going to receive > videos". They do that today looking at the SNI, but I assume that they > will do it tomorrow by looking at which QUIC extensions you negotiate, > or whether your initial parameter values resemble something that MoQ > uses, etc. > In the context of browsers, a single configuration is used across all websites. (There might be some minor differences based on what you got in the HTTPS RR, but not for us since we don't support QUICv2.) You're right in the context of apps though. The YouTube and Google Search apps use the same QUIC implementation but with different configurations. I still think that the total search space is sufficiently small here that it doesn't make a real difference. Maybe, but the transport parameters are much worse than the DCID length. > Absolutely true. But I'm not sure this is enough to prevent implementation/configuration fingerprinting. That's kinda why I am looking for a "default TP" profile. If we chose > the default well, it can coincide with regular H3 over QUIC, and so the > "real" ECH will not look different from H3+Grease. I don't think a "default TP" profile is workable in practice. Google's implementation sends custom transport parameters to indicate what experiments it's running. Some are public, like delayed ACK, and some are proprietary. But fundamentally, if there is no ECH config, we'll still want these transport parameters to be communicated to the server. As another example, I don't expect anyone using MPQUIC to only use it when ECH is enabled. Since transport parameters are our ~only extension joint, it needs to work even when there is no ECH config. If we really wanted to solve this problem, I would instead solve it by adding a TLS EncryptedExtensions message in the client-to-server direction that is sent under handshake encryption as part of the client's second flight, and allowing transport parameters to be sent there. Most transport parameters aren't needed until then anyway. David