Skip to content

[css-fonts] incorporate mitigations for font based fingerprinting #4055

Open
@pes10k

Description

@pes10k

Font based finger printing is a common, privacy violating pattern, where websites build semi-identifiers based on uncommon fonts a user has installed. This semi-identifier is then combined with other semi-unique-identifiers (hardware configuration, user configuration, viewport size, etc) to build highly identifying values, used for tracking users.

Examples

  • Panopticlick includes a well know demonstration of how this can be done: https://panopticlick.eff.org

  • Fingerprint2.js is a popular library that uses font-based fingerprinting (among other signals) to identify users

Some browsers provide some defenses against this privacy violation. Safari, for example, only reports the default system fonts through Safari, and will not use other, uncommon fonts, even if they're installed on the OS. Firefox provides a similar option.

The standard should be modified to protect against / not allow font-based fingerprinting by default, instead of relying on non-standardized, vendor specific mitigations.

Suggested Mitigation
I suggest having the standard follow Safari's approach, and requiring browsers to only treat the default fonts on the platform as system fonts. A simple (though maybe not the best / most elegant) way of doing this would be to modify section 5.2 in "CSS Fonts Module Level 3" to modify the system font fallback procedure to only return the default platform fonts. Those might be specified per platform, or just as this list:
http://www.ampsoft.net/webdesign-l/WindowsMacFonts.html

Metadata

Metadata

Assignees

Labels

Needs Design / Proposalcss-fonts-4Current Worki18n-trackerGroup bringing to attention of Internationalization, or tracked by i18n but not needing response.privacy-trackerGroup bringing to attention of Privacy, or tracked by the Privacy Group but not needing response.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions