Private Access Tokens is roughly based on the Rate Limited
privacy pass specification
(https://github.com/ietf-wg-privacypass/draft-ietf-privacypass-rate-limit-tokens/).
It is primarily triggered via HTTP-Authentication headers and
doesn't have a way of exposing that via a JS API. Developers are
expected to have endpoints that provide HTTP-Authentication
challenges that trigger the OS to issue/redeem tokens.
There's a bit of a discussion of the similarities/differences
between the APIs at
https://github.com/WICG/trust-token-api/blob/main/PST_VS_PAT.md.
There's some overlap between the use cases, but for the CAPTCHA
use case, while the platform-level signal is useful, anti-fraud
providers tend to want to use additional signals to feed into
their decision whether to present something like a CAPTCHA, and
being able to store the result of their distillation of the
decision in tokens they issue can be useful.
On Wed, Apr 5, 2023 at 3:53 AM Yoav Weiss
<[email protected]> wrote:
On Fri, Mar 17, 2023 at 5:35 PM Steven Valdez
<[email protected]> wrote:
Contact emails
[email protected], [email protected],
[email protected]
Explainer
https://github.com/WICG/trust-token-api
<https://github.com/WICG/trust-token-api>
NB: We'll rename the repository to
private-state-token-api when it's adopted by the
antifraud CG.
Specification
https://wicg.github.io/trust-token-api
<https://wicg.github.io/trust-token-api>
Design docs
https://docs.google.com/document/d/1TNnya6B8pyomDK2F1R9CL3dY10OAmqWlnCxsWyOBDVQ/edit
<https://docs.google.com/document/d/1TNnya6B8pyomDK2F1R9CL3dY10OAmqWlnCxsWyOBDVQ/edit>
Summary
The Private State Token API is a new API for propagating
user signals across sites, without using cross-site
persistent identifiers like third party cookies for
anti-fraud purposes. Anti-fraud methods that rely on
third party cookies will not work once third party
cookies are deprecated. The motivation of this API is to
provide a means to fight fraud in a world with no third
party cookies. The API prevents cross-site identification
by limiting the amount of information stored in a token.
Blind signatures prevent the issuer from linking a token
redemption to the identity of the user in the issuance
context.
Private State Token API does not generate or define
anti-fraud signals. This is up to the corresponding first
party and the token issuers. The API enforces limits on
the information transferred in these signals for privacy
concerns. Private State Token API is based on the Privacy
Pass protocol from the IETF working group
<https://datatracker.ietf.org/wg/privacypass/about/>. It
can be considered as a web-exposed form of the Privacy
Pass protocols.
The Private State Token API was formerly known as the
Trust Token API. It is renamed to more accurately reflect
its functionality.
Blink component
Internals>Network>TrustTokens
NB: As a part of the process of renaming the Trust Token
API to the Private State Token API, the blink component
will also be renamed.
TAG review
https://github.com/w3ctag/design-reviews/issues/414
<https://github.com/w3ctag/design-reviews/issues/414>https://github.com/w3ctag/design-reviews/issues/780
<https://github.com/w3ctag/design-reviews/issues/780>
TAG review status
No concerns, aside from lack of clear interest from other
browsers
Risks
Interoperability and Compatibility
We intend to update the underlying cryptographic and
token issuance protocols to align with the eventual
Privacy Pass standard. This will affect compatibility
with the small number of token issuers. Private State
Token API fetch requests include a token type and version
field that enables backward compatibility while allowing
possible extensions for future token types and
versions.While we will have a standard deprecation path
of supporting multiple versions, we expect this to be
easier with this API as each issuer using this API will
need to register to become an issuer and will provide
contact information as part of that process.
Gecko: Defer
<https://mozilla.github.io/standards-positions/#trust-token>
WebKit: Pending
(https://github.com/WebKit/standards-positions/issues/72
<https://github.com/WebKit/standards-positions/issues/72>),
already shipping similar technology
https://developer.apple.com/news/?id=huqjyh7k
<https://developer.apple.com/news/?id=huqjyh7k>(see PST
vs. PAT
<https://github.com/WICG/trust-token-api/blob/main/PST_VS_PAT.md>for
more information about the differences in the technologies).
Not on you, but do Private-Access-Tokens have something
resembling a specification or an explainer, other than
marketing material?
Do I understand correctly that they are strictly based on
protocol-level negotiation, without a JS API? How are
developers supposed to interact with them?
Is there overlap between the use-cases? (e.g. I would naively
think that CAPTCHA avoidance can rely on either/both OS-level
and anti-fraud provider attestation)
Web developers: Positive
A limited set of developers provided feedback on Private
State Tokens, indicating that the tool was valuable for
anti-fraud capabilities while also acknowledging some
utility challenges (1). Other developers also found that
Private State Tokens provided ability for authentication
purposes (as illustrated by its use in the Privacy
Sandbox k-Anonymity Server) (2).
1:
https://github.com/antifraudcg/meetings/blob/main/2022/yahoo-trust-token.pdf
<https://github.com/antifraudcg/meetings/blob/main/2022/yahoo-trust-token.pdf>
2:
https://github.com/WICG/turtledove/blob/main/FLEDGE_k_anonymity_server.md#abuse-and-invalid-traffic
<https://github.com/WICG/turtledove/blob/main/FLEDGE_k_anonymity_server.md#abuse-and-invalid-traffic>
Other signals:
Ergonomics
N/A
Activation
Using this feature requires spinning up a (or partner
with an existing) Private State Token issuer that can
issue and verify trust tokens, which is non-trivial.
Verifying properties of the Signed Redemption Record or
the client signature requires additional cryptographic
operations. It would be beneficial to have server-side
libraries that developers can use to help make using this
API easier. Sample code can be found at
https://github.com/google/libtrusttoken.
Security
N/A
WebView application risks
Does this intent deprecate or change behavior of existing
APIs, such that it has potentially high risk for Android
WebView-based applications?
As this feature does not deprecate or change behavior of
existing APIs, we don't anticipate any risk to
WebView-based applications.
Debuggability
This API is debuggable via the DevTools Application Data
panel and the operations are exposed in the Network panel.
Will this feature be supported on all six Blink
platforms (Windows, Mac, Linux, Chrome OS,
Android, and Android WebView)?
Yes
Is this feature fully tested by
web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?
Yes
<https://wpt.fyi/results/trust-tokens?label=experimental&label=master&aligned>*,
some of the tests are currently failing as renaming/API
changes in preparation for shipping these feature haven't
propagated to those tests yet. Additionally, due to the
requirements of having a server-side issuer (with bespoke
crypto) to fully test the API, a majority of the testing
is done in wpt_internal with a bespoke python
implementation of a PST issuer.
Flag name
TrustTokens (in the process of being renamed to
PrivateStateTokens)
Requires code in //chrome?
False
Non-OSS dependencies
Does the feature depend on any code or APIs outside the
Chromium open source repository and its open-source
dependencies to function?
Yes. Token operations are dependent on having the key
commitment information configured. Chrome (and Chromium
implementations that consume components from component
updater) supports this via a component, other clients
will need to consume the component or come up with their
own method of shipping the key commitment information to
the client.
Estimated milestones
Chrome for desktop:113
Chrome for Android:113
Android Webview:113
Anticipated spec changes
Open questions about a feature may be a source of future
web compat or interop issues. Please list open issues
(e.g. links to known github issues in the project for the
feature specification) whose resolution may introduce web
compat/interop risk (e.g., changing to naming or
structure of the API in a non-backward-compatible way).
The major feature changes we expect are likely to be
around the versions of tokens we support, as other use
cases may need differing properties from those provided
with the initial API and other format/API changes to
align better with standardization and interop (see the
Interoperability and Combatibilitysection up above). Most
potentially web-observable changes in our open issues
(https://github.com/WICG/trust-token-api/issues
<https://github.com/WICG/trust-token-api/issues>) are
around ergonomics of using the APIs and ways to use the
API in more locations/manners which should pose minimal
compatibility risk to existing users of the API.
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5078049450098688
<https://chromestatus.com/feature/5078049450098688>
Links to previous Intent discussions
Intent to prototype:
https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/X9sF2uLe9rA
<https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/X9sF2uLe9rA>
Intent to experiment:
https://groups.google.com/a/chromium.org/g/blink-dev/c/UIvia1WwIhk/m/stu7iXTWBwAJ
<https://groups.google.com/a/chromium.org/g/blink-dev/c/UIvia1WwIhk/m/stu7iXTWBwAJ>
Intent to extend origin trial:
https://groups.google.com/a/chromium.org/g/blink-dev/c/fpfbKgJF8Vc/m/aC8HJfGdDwAJ
This intent message was generated by Chrome Platform
Status <https://chromestatus.com/>.
--
You received this message because you are subscribed to
the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails
from it, send an email to [email protected].
To view this discussion on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CANduzxCC8T5D9WSrvo0yq7Tu7hdAj-YXLwuOyu2DqqkTRoHQRg%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CANduzxCC8T5D9WSrvo0yq7Tu7hdAj-YXLwuOyu2DqqkTRoHQRg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the
Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from
it, send an email to [email protected].
To view this discussion on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfUOedJX%2BHs1kHDRGByLPaTV23nDHUCxzbRqDz81hbO0Jw%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfUOedJX%2BHs1kHDRGByLPaTV23nDHUCxzbRqDz81hbO0Jw%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
Steven Valdez | Chrome Privacy Sandbox | [email protected] |
Cambridge, MA
--
You received this message because you are subscribed to the
Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to [email protected].
To view this discussion on the web visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CANduzxBRmxhQ4e_LTK_fDG7e9VKyNCe1EUOmmkkUXmDc02Md_A%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CANduzxBRmxhQ4e_LTK_fDG7e9VKyNCe1EUOmmkkUXmDc02Md_A%40mail.gmail.com?utm_medium=email&utm_source=footer>.