Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by h4x0rr on Saturday March 09, 2024 @03:47PM
(#39654610)
Can anyone explain why the results are different to begin with? E.g. why is this audio fingerprinting even possible in the first place?
[ Parent
| on HN ]
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by dmazzoni on Saturday March 09, 2024 @04:16PM
(#39654808)
The essence seems to be that the web audio API has a lot of algorithms that do a lot of math, and every browser has a slightly different implementation, and the exact results depend on the operating system and cpu too. So if you use the web audio API to generate a small signal all browsers will generate something that's really close, but the tiny differences can be used to help tell them apart.
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by nox101 on Saturday March 09, 2024 @04:24PM
(#39654870)
that wouldn't help. you already know the browser and os through easier means
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by unglaublich on Saturday March 09, 2024 @04:28PM
(#39654894)
Like what? The voluntarily provided User-Agent? The browser is in control of that.
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by meandmycode on Saturday March 09, 2024 @07:23PM
(#39655727)
The browser in this adversarial scenario is also in control of the audio context too
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by bdd8f1df777b on Saturday March 09, 2024 @09:59PM
(#39656390)
Yet it is incredibly difficult to hide the underlying hardware or low level library differences. Not without slowing things down significantly.
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by hiatus on Saturday March 09, 2024 @10:54PM
(#39656599)
Do you, as an end user, know how to change these settings compared to changing your user agent?
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by c0pium on Sunday March 10, 2024 @01:42PM
(#39660958)
From the average user perspective those settings are equally impossible to change, as they neither know nor care that they even exist.
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by jameshart on Sunday March 10, 2024 @12:26AM
(#39656930)
But why would it vary in ways that are consistent run to run on one machine, but not consistent with the same process executed on another similar machine?
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by ralphist on Sunday March 10, 2024 @05:46AM
(#39657900)
Every datapoint reduces the number of people it could belong to. CPU + browser + browser version + OS + major OS version can narrow it down by a lot.
Then add resolution, IP address location (which VPN they use is also a datapoint), which time they are active at, etc. and you can get a good almost-unique identifier.
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by matheusmoreira on Sunday March 10, 2024 @07:14AM
(#39658281)
Maybe we should make the browser implementations consistent to the point they can't be told apart. Alternatively, we can reduce the precision of the results so that the tiny differences are deleted.
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by Finesse on Sunday March 10, 2024 @10:34PM
(#39664409)
Browser vendors already copy the Audio API code from each other, you can see it in their public GitHub repositories. It doesn't help.
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by echoangle on Saturday March 09, 2024 @04:10PM
(#39654772)
Probably implementation details and compiler optimizations, float addition is not commutative for example. Implementing the same algorithm with the same formulas correctly can still lead to slightly different results
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by saagarjha on Saturday March 09, 2024 @10:13PM
(#39656442)
Floating point addition is not commutative, but it is still consistent. Getting different results is usually the result of using alternative algorithms or relaxing standards (that may, for example, reorder terms).
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by echoangle on Sunday March 10, 2024 @04:22AM
(#39657589)
I don’t think the web spec implemented by the browser specifies the order of every operation, only the algorithm. If safari and chrome devs implement the audio api based on the spec, there can still be minor floating point differences because of the way they implemented the same calculations. That’s why they can fingerprint your browser versions with this.
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by Angostura on Sunday March 10, 2024 @12:57AM
(#39657020)
I would have thought it might have yielded a machine and OS identifier - but more user specific than that?
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by echoangle on Sunday March 10, 2024 @04:23AM
(#39657593)
That’s what it does, users on the same browser and same hardware should have identical fingerprints. It’s just one way of multiple to narrow down your fingerprint.
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by Angostura on Monday March 11, 2024 @02:14PM
(#39671558)
Thanks for the clarification - much appreciated
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by Retr0id on Saturday March 09, 2024 @04:12PM
(#39654782)
This was my first thought too, and they cover it in more detail here https://fingerprint.com/blog/audio-fingerprinting/#why-the-a...
TL;DR different codepaths even within the same codebase (e.g. SIMD variants) can result in subtly different floating point results (iiuc, likely related to to the fact that floating point math is unexpectedly sensitive to order of operations etc.)
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by TylerE on Sunday March 10, 2024 @12:06AM
(#39656854)
Funny how when I posted more or less exactly this comment in another context recently a lot of people refused to take me seriously!
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by Retr0id on Sunday March 10, 2024 @12:32AM
(#39656949)
Floats are deterministic, though (if they weren't, this wouldn't be a workable fingerprinting vector). Reordering of operations (etc.) in a way that would actually change the results needs to be done by human edits, or with compiler options like ffast-math that explicitly allow the compiler to "break the rules" and make such changes. In either case, the concrete instructions emitted by the compiler will have deterministic behavior (and if they don't, that's a hardware bug)
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by TylerE on Sunday March 10, 2024 @03:03AM
(#39657278)
What word would you use if sin(x) returns a different value on different platforms, or even different OS or librsry version? Sure smells like a fiction that depends on external state rather than simply its input.
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by Retr0id on Sunday March 10, 2024 @11:16AM
(#39659825)
The existence of platforms that do not conform to their own specifications does not make an operator non-deterministic.
Edit: I found this pretty great article on the subject https://randomascii.wordpress.com/2013/07/16/floating-point-...
We're both right, depending on how you frame the question.
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by heinrich5991 on Sunday March 10, 2024 @11:19AM
(#39659845)
sin(x) is platform-dependent.
Re:How We Bypassed Safari 17's Advanced Audio Fingerprinting...
by a-dub on Saturday March 09, 2024 @04:45PM
(#39654993)
i think it comes from similar tricks that are played with webgl where there is a lot of entropy that comes from pc videocard drivers and the hardware itself.
it's a shame that browser people have to add noise to audio buffer handling to try and thwart it.