We need to disable TLS session resumption and HTTP keep-alive to prevent third parties from possibly using them to track users between different domains.
Ideally, we should simply prevent 3rd party origins from using these two features, but I suspect that differentiating 3rd party loads at the HTTP and TLS layers will prove difficult.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items 0
Show closed items
No child items are currently assigned. Use child items to break down this issue into smaller parts.
Linked items 0
Link issues together to show that they're related.
Learn more.
gk - You guys disable HTTP Keep-alive to prevent 3rd party correlation, right?
Yes (proxy keep-alive), that is vital to JonDonym and its static mix cascades currently.
Do you do anything about TLS Session IDs across different tabs/domains?
I am working on it at the moment although I fear binding it to the tab could be really tricky. To take the domain is probably easier here.
Yes. Also, some more research reveals that disabling keep-alive will also prevent pipelining, which would eliminate our experimental website fingerprinting defense
(https://blog.torproject.org/blog/experimental-defense-website-traffic-fingerprinting).
Indeed, that is true as pipelining is bound to keep-alive at least in Mozilla. Nevertheless I could imagine some kind of "pipelining" even if keep-alive is off. There seems no strong connection between keep-alive and randomizing request order to me.
Not quite what we need, but I actually wasn't aware this pref existed. I'll verify it does what we think in the source, and get this in the next release.
I am not sure what the pref is actually doing yet but according to my test setup with ssldump it won't help us here. I tested the following with ssldump listening:
At least for the image I could verify that the same session ID is used throughout 1)-4) and "security.enable_tls_session_tickets" was set to "false".
I hope I did something wrong here but I already double-checked my results and it does not seem to be the case.
Replying to myself: After some more digging it turns out that Session ID tracking and tracking via TLS resumption are different beasts (see: https://tools.ietf.org/html/rfc5077 especially sections 3.4 and 5.8). That would explain the still available session ID mentioned above even if the pref in question is disabled.
I suspect SSL Session ID use is going to be governed by a flag passed in to the NSS libs somewhere. Might as well roll it into this bug. As for HTTP Keep-Alive.. I think we need to ponder that one a bit more. Breaking it off into the new ticket (#4603 (closed)).
Trac: Points: 1 to 2 Summary: Disable TLS session resumption and HTTP keep-alive to Disable TLS Session resumption and Session IDs
At first glance, it looked like this was doable by calling SSL_ConfigServerSessionIDCache() during nsNSSComponent::InitializeNSS(). However, the system appears to be written to use a default session ID cache size if you set it to 0.
There does appear to be an SSL_NO_CACHE option that can be set with SSL_OptionSet(), as well as an ssl_defaults that we can bang on to disable session ID caching for each individual ssl socket.