W3C home > Mailing lists > Public > public-media-capture@w3.org > June 2015

RE: Request for feedback: Media Capture and Streams Last Call

From: Mike O'Neill <michael.oneill@baycloud.com>
Date: Sun, 28 Jun 2015 20:34:46 +0100
To: "'Eric Rescorla'" <ekr@rtfm.com>
Cc: "'public-privacy \(W3C mailing list\)'" <public-privacy@w3.org>, <public-media-capture@w3.org>
Message-ID: <02d201d0b1d9$7e3f1f70$7abd5e50$@baycloud.com>
Hash: SHA1

From: Eric Rescorla [mailto:ekr@rtfm.com]
Sent: 28 June 2015 18:56
To: Mike O'Neill
Cc: Greg Norcie; public-privacy (W3C mailing list); Simon Rice; public-media-capture@w3.org
Subject: Re: Request for feedback: Media Capture and Streams Last Call

On Sun, Jun 28, 2015 at 4:26 AM, Mike O'Neill <michael.oneill@baycloud.com> wrote:
Hash: SHA1

In the last Privacy IG call I pointed out a privacy issue in Media Capture (http://www.w3.org/TR/2015/WD-mediacapture-streams-20150414/#access-control-model) .

This is where a MediaDeviceInfo object with the deviceId property is returned without any authorisation. The value returned is effectively a UID cookie singling-out the device (and obviously therefore the individual using it). This creates the possibility to easily fingerprint any user agent that supports the API.

To say the privacy risk of this is alleviated because of the same origin policy is disingenuous, as this is equivalent to placing a user unique random number i.e. a UID cookie with an infinite persistence, and of course it will be used for tracking.

It is irrelevant that the value is scoped to a single origin because any embedded third-party in their own origin iframe will be able to identify the user and even pass the identifier server-side or via the many cross-site scripting methods to the top level browsing context or to other third-parties.

Even though the identifier is reset when cookies are cleared, it should not be a requirement on users that, in order the protect their fundamental right to privacy, they have to in perpetuity periodically scrub all their cookies, some of which they may have consented to, indicate a tracking “opt-out” or that do not have a privacy impact.

I'm having trouble following your argument here.

In general, sites which can access this API can also set cookies and/or write data
to indexeddb (modulo third-party cookie blocking [0]) which allows them to equally
well track the user. And since they can put either random data or data of their own
choice there, it seems that this API is strictly less powerful than cookies [1]. Given that,
I'm not sure why you think it represents an incremental threat to user privacy.

I don't think it's really that useful to characterize this as "fingerprinting", since the
typical value proposition of fingerprinting is opposed to cookies is that it provides
a stable identifier across origins, which deviceId does not.

Tracking via cookies is relatively understood by users, user-agents or extensions making them more or less transparent. There are various ways to see what cookies have been placed, by whom, how long they will persist etc. There are now often ways for users to have fine granular control of them, again often built into browsers or if not available via extension tools. The privacy risk is still there but users at least have been given some ability to see what is happening and take some control.

The ability to fingerprint users via an always accessible UID is invisible and no existing browsers or tools help users to be aware of it. Should there be yet another browser UI to indicate “such-and-such origin has executed enumerateDevices, watch out you may be being tracked”. How will that be explained to users who are increasingly concerned about being tracked without their knowledge? The predictable result of all this will be content blocking of any third-party that executes the API (without consent if that is detectable, in any case if not).

Of course other APIs also have been released that expose fingerprinting risks, but that is no reason to add to the chaos. Every time a new API is introduced that enables invisible tracking people’s trust in the web is diminished. This will  also lead to widespread blocking of third-party behaviour e.g. any third-party iframe that executes XHR or creates a beacon, a ridiculous arms race that is no good for anyone.

I have already pointed out that single origin scoping does not help with this. The value of fingerprinting is that it is mostly undetectable, shooting ids across origins is a minor problem – already solved in many ways. To ubiquitous third-parties it is not an issue at all.

- -Ekr

[0] I don't know how implementations presently behave in the face of third-party
cookie blocking, but I wouldn't be averse to requiring some sort of comparable
behavior for deviceId.

Zeroing out deviceId in non top level browsing contexts might work, how about that?

[1] Modulo restrictions on the maximum lifetime of a cookie.
Version: GnuPG v1
Comment: Using gpg4o v3.4.103.5490 - http://www.gpg4o.com/
Charset: utf-8


Received on Sunday, 28 June 2015 19:35:18 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 16:26:33 UTC