To help reduce information available to fingerprinting, we should randomize or truncate the values returned from Date(), event.timeStamp, and interval timers. I've never thought this was a useful thing to do before, because Tor latency is high enough and variable enough that most machines using NTP should be well concealed within the noise.
However, bug #1261 (closed) brings up a good point about javascript being able to measure the time intervals of various things (such as typing, but really it could be anything) to produce a fingerprint.
Unfortunately, we may need Firefox support for this, unless their javascript engine has changed to allow hooking of the Date() object again.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
Trac: Description: To help reduce information available to fingerprinting, we should randomize the values returned from Date(). I've never thought this was a useful thing to do before, because Tor latency is high enough and variable enough that most machines using NTP should be well concealed within the noise.
However, but bug #1261 (closed) brings up a good point about javascript being able to measure the time intervals of various things (such as typing, but really it could be anything) to produce a fingerprint.
to
To help reduce information available to fingerprinting, we should randomize the values returned from Date(). I've never thought this was a useful thing to do before, because Tor latency is high enough and variable enough that most machines using NTP should be well concealed within the noise.
However, bug #1261 (closed) brings up a good point about javascript being able to measure the time intervals of various things (such as typing, but really it could be anything) to produce a fingerprint.
Unfortunately, we may need Firefox support for this, unless their javascript engine has changed to allow hooking of the Date() object again.
This seems like a research problem. Randomizing the values naïvely won't actually keep a clever program from getting a value for Date; it will just call Date 10 times and take the mean.
Instead, we could quantize Date(), and randomize the cutoffs between the quanta, so that the value of Date remains the same (say) for 3.3 seconds minus a value chosen uniformly at random from between .6 and 0. Would this break programs people need? Probably. Would this defeat cadence attacks? Who can say; that's the research problem.
Rough guess here. Depends on how centralized the JS interpreters timesource is. It may be all over the place, and far from config settings to control it. Also, some testing of youtube and various HTML5 demo sites should be performed, especially those involving rendered graphics and synchronized animations.
Trac: Points: N/Ato 16 Description: To help reduce information available to fingerprinting, we should randomize the values returned from Date(). I've never thought this was a useful thing to do before, because Tor latency is high enough and variable enough that most machines using NTP should be well concealed within the noise.
However, bug #1261 (closed) brings up a good point about javascript being able to measure the time intervals of various things (such as typing, but really it could be anything) to produce a fingerprint.
Unfortunately, we may need Firefox support for this, unless their javascript engine has changed to allow hooking of the Date() object again.
to
To help reduce information available to fingerprinting, we should randomize or truncate the values returned from Date(), event.timeStamp, and interval timers. I've never thought this was a useful thing to do before, because Tor latency is high enough and variable enough that most machines using NTP should be well concealed within the noise.
However, bug #1261 (closed) brings up a good point about javascript being able to measure the time intervals of various things (such as typing, but really it could be anything) to produce a fingerprint.
Unfortunately, we may need Firefox support for this, unless their javascript engine has changed to allow hooking of the Date() object again. Summary: Torbutton should randomize times from Date() to Tor Browser should provide JS with reduced time precision
Related to this, we will need to quantize interval timers as well. Not sure if we'll get that for free by quantizing time, or if it will be additional work. It probably will be additional work, in which case it will need to go in a new ticket.
Related to this, we will need to quantize interval timers as well. Not sure if we'll get that for free by quantizing time, or if it will be additional work. It probably will be additional work, in which case it will need to go in a new ticket.
On one hand, changes in Firefox 5 interval timer code to support "clamping" may make this easier. On the other hand, what about that same information coming from CSS animations: https://developer.mozilla.org/en/CSS/CSS_animations
Clamping does not help us. It is specific to nsGlobalWindow::SetTimeoutOrInterval().
DOMWorkers also have their own SetTimeout functions.
There are several different DOM events, each with their own implementation of the timeStamp field. They do not share a common implementation.
I think that if we're going to do it in the browser, we pretty much have to patch PR_Now(), or alter the code in about a couple dozen different places. It will be a big patch that is sure to generate conflicts...
I think we need to stay in JS land for this one. I'm going to guess that in JS-land, this will take a couple of days to repeatedly experiment with and test.
Trac: Summary: Tor Browser should provide JS with reduced time precision to Provide JS with reduced time precision Component: Tor Browser to TorBrowserButton Points: 16 to 10
Perhaps also quote Brendan Eich and tell him, that you know Tor is part of the answer, but you as Tor Browser developer still require the feature, because...
Might be useful to introduce your position in all upstream bug tickets so the answer won't be: use Tor.