Introduce random noises to canvas data when resist fingerprinting is enabled.
Categories
(Core :: Privacy: Anti-Tracking, task)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox115 | --- | fixed |
People
(Reporter: timhuang, Assigned: timhuang)
References
(Blocks 1 open bug)
Details
(Whiteboard: [fpp:m2])
Attachments
(5 files, 2 obsolete files)
Adding random noises when extracting canvas data to prevent browsing fingerprinting. We should address the following canvas types
- Canvas Element
- Offscreen Canvas
- CanvasRendering2dContext
| Assignee | ||
Updated•3 years ago
|
Updated•3 years ago
|
| Assignee | ||
Comment 1•3 years ago
|
||
This patch adds nsRFPService::RandomizePixels() and
nsRFPService::GetPointInRandomizedPixels(). These two function will be
used to randomize the canvas data.
| Assignee | ||
Comment 2•3 years ago
|
||
Adding a pref to control canvas randomization. When canvas randomization
is enabled, we will allow the canvas image data extraction without
the canvas prompt when fingerprinting protection is on.
Depends on D175496
| Assignee | ||
Comment 3•3 years ago
|
||
This patch introduces random noises to data extraction functions of
canvas element and offscreen canvas. The random noise is based on the
random key of the cookieJarSettings and the image data itself.
The random noises would interfere the ability of fingerprinters that
use canvas data to fingerprint users. The random noise will make unique
canvas finerprint to for every browsing session. Therefore, fingerprinter
cannot use canvas fingerprint to tracker individuals across browsing
sessions.
Depends on D175497
| Assignee | ||
Comment 4•3 years ago
|
||
This patch changes the return value of these two function if the canvas
randomization is enabled. We would alter the return valuse if the test
position is in the place where affected by the canvas noise data.
Depends on D175499
| Assignee | ||
Comment 5•3 years ago
|
||
Adding tests to ensure we add random noise when extracting canvas data
if canvas randomization is enabled.
Depends on D175500
| Assignee | ||
Comment 6•3 years ago
|
||
Adding a test to verfy the canvas randomization on
CanvasRenderingContext2D.isPointInPath() and isPointInStroke().
Depends on D175501
| Assignee | ||
Comment 7•3 years ago
|
||
Depends on D175497
Updated•3 years ago
|
Updated•3 years ago
|
Updated•3 years ago
|
Updated•3 years ago
|
Updated•3 years ago
|
Updated•3 years ago
|
Comment 8•3 years ago
|
||
Is there a design doc that outlines the threat model and mitigations? For example, I don't understand the purpose of introducing randomization into isPointInPath() and isPointInStroke()
| Assignee | ||
Comment 9•3 years ago
|
||
Hi Jeff,
This is the overview document that describes the canvas randomization.
For isPointInPath() and isPointInStroke() specifically, the fingerprinter could use these two functions to extract the canvas image data by testing every possible position on the canvas. So, we introduce the random noises using a similar approach as we do for image data extraction functions.
Comment 10•3 years ago
|
||
(In reply to Tim Huang[:timhuang] from comment #9)
For
isPointInPath()andisPointInStroke()specifically, the fingerprinter could use these two functions to extract the canvas image data by testing every possible position on the canvas. So, we introduce the random noises using a similar approach as we do for image data extraction functions.
Can you elaborate on how that would work? The return value of isPointInPath shouldn't be affected by the contents of the canvas.
| Assignee | ||
Comment 11•3 years ago
|
||
Per discussion with Jeff, the isPointInPath() and isPointInStorke() shouldn't reveal browser fingerprints because the result of these two functions is solely based on the Path/Stroke settings on the canvas. The function doesn't render the Path/Stroke to check the point so we can rule out the hardware fingerprints here. It's the same for software settings; no software setting would affect the Path/Stroke settings on Canvas.
Therefore, we don't need to add random noises to them because no browser fingerprints leaked from them. I will update the patches.
Updated•3 years ago
|
Updated•3 years ago
|
Updated•3 years ago
|
Comment 12•3 years ago
|
||
Comment 13•3 years ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/a17d7d650aec
https://hg.mozilla.org/mozilla-central/rev/c118df0f5b8c
https://hg.mozilla.org/mozilla-central/rev/c7dcc4328876
https://hg.mozilla.org/mozilla-central/rev/b640578b7534
https://hg.mozilla.org/mozilla-central/rev/7dfc345ccf21
Description
•