I've seen a lot of discussions in the last week about the Web
Environment Integrity proposal. Quite predictably from the moment
it got called things like "DRM for the web", people have
been arguing passionately against it on HN, Github issues, etc. The
basic claims seem to be that it's going to turn the web into a walled
garden, kill ad blockers, kill all small browsers, kill all small operating systems,
kill accessibility tools like screen readers, etc.
The Web Environment Integrity proposal is basically:
- A website can request an attestation from the browser
- The browser forwards the attestation requests to an attester
- The attester checks properties like hardware and software integrity
- If they check out, the attester creates a token and signs it with its private key.
- The attester hands off the signed token to the browser, which in turn sends it to the website.
- The website checks that the token was signed by a trusted attester
Here's a funny thing I suspect few of those commenters know: A
very similar mechanism already exists on the web, and is already
deployed in production browsers (Safari), operating systems (iOS, OS X),
and hosting infrastructure (Cloudflare, Fastly). That mechanism is
Private Access Tokens /
Privacy Pass.
Here's what PATs (as deployed by Apple, and on by default) do to the best of my understanding:
- A website can request an attestation from the browser
- The browser forwards the attestation requests to an attester
- The attester checks properties like hardware and software integrity.
- If they check out, the attester calls the website's trusted token issuer
- The issuer checks whether to trust the attester and whether the information passed by the attester is sufficient, and then issues a token signed by its private key
- The attester hands off the signed token to the browser, which passes it to the website.
- The website checks that the token was signed by a trusted token issuer
This launching was hailed in the tech press as a win for privacy and security, not
as an attempt to kill accessibility tools or build a walled garden.
[1]
You might notice that the basic operating model of the two protocols
is almost exactly the same. So is their intended use. From the
"DRM for websites" perspective, I don't think there is a
difference.
With both WEI and PATs, the website would be able to ask Apple to verify that the
request is coming from a genuine non-jailbroken iPhone running
Safari, and block the ones running Firefox on Linux. And in both,
the intent is not for the API to be used for that kind of outright blocking.
Neither lists e.g. checking whether the browser is running an ad blocker
extension as a use case. Both would have just the same technical capabilities
for making that kind of thing happen, by just having the attester check for it,
and I bet that in both cases the attester would be equally unmotivated in
actually providing that kind of attestation.
It's also not that PATs would somehow make it easier for people
to spin up new attesters for small or new platforms. Want to
run your own attester for PATs? You could, but the issuers you care
about will not trust it. [2]
Now, the technologies aren't quite identical, but the distinctions are
subtle and would just matter for exactly the kind of anti-abuse work
that both of the proposals were ostensibly meant for. The big one is
the WEI proposal including the ability to content-bind the attestation
to a specific operation. It's a feature anyone trying to use a feature
like this for abuse prevention would think is needed, but that adds no
power to the theorized "DRM for the web" use case. There is also a
more obvious difference between the two, with whether the attester and
issuer are the same entity or split. But that too is irrelevant
in the discussion on how the technology could be misused.
[3]
In principle there could also be differences in the exact things that
the APIs allow attesting for. But neither standard defines the
exact set of attestations, just the mechanisms.
Given the DRM narrative would have worked exactly the same for the two
projects, why such a different reception? I can only think of two
differences, both social rather than technical.
One is that the PAT (and related Privacy Pass) draft standards were
written in the IETF and are dense standardese. There was no plaintext
explainer. Effectively nobody outside of the internet standardization
circles read those drafts, and if they had they wouldn't have known
whether they needed to be outraged or not. The first time it actually
broke through to the public was when Apple implemented it.
The other is the framing. PATs were sold to the public exclusively as
a way of seeing fewer captchas. Who wouldn't want fewer captchas? WEI
was pitched as a bunch of fairly abstract use cases and mostly from
the perspective of the service provider, not for how it'd improve the
user experience by reducing the need for invasive challenges and data
collection.
This isn't the first time I've seen two attempts at a really similar
project, with one getting lauded while the other gets trashed for
something that's common to both. But it is the one where the two
things are the most similar, and it feels like it should be
instructive somehow.
If the takeaway is that standards proposals should be opaque and kept
away from the public for as long as possible, before being launched
straight to prod based on a draft spec, that'd be bad. If it's that
standard proposals should be carefully written to highlight the
benefit for the end user, even starting from the first draft, that's
probably pretty good? And if it's that only Apple can launch any
browser features without a massive backlash, it seems pretty damn bad.