Trying to understand this discussion, the Issue 990 design revue in w3ctag 
<https://github.com/w3ctag/design-reviews/issues/990> and the privacy side 
(I put a comment in the Issue 306 
<https://github.com/WICG/trust-token-api/pull/306#issuecomment-2449585140> but 
perhaps talking is here is better) :

   - In case of the user denies giving consent to X vendors / tech via the 
   CMP (Consent Management Platform), will the token be shared cross site if a 
   wildcard is set anyway? The question also works with the Global privacy 
   control
   - Is there a way to prevent any adtech to redeem the token to display an 
   ads anywhere outside? (But I think this question is already in the blink 
   discussion)
   - Not related but somehow related, if the token is considered First 
   party tracking (Potential risk noted in the spec 
   
<https://github.com/WICG/trust-token-api/blob/main/README.md#first-party-tracking-potential>)
 
   then combined with the wildcard, you have a cross site tracking : How to 
   prevent that?


On Wednesday, October 23, 2024 at 1:41:52 AM UTC+2 Jeffrey Yasskin wrote:

> This all makes sense to me. I don't personally have a good sense of the 
> privacy implications of calling this, but that's a question for the privacy 
> reviewers, not me. :) I'm torn on the question of when to make it easier 
> for sites to pick their issuers. The overall TAG sense 
> <https://github.com/w3ctag/design-reviews/issues/990> was that because 
> this makes the risk worse, you should add the easier mitigation before 
> shipping this change. But you have more experience with the particular 
> users of this API, so it could be that you're right to want to wait for 
> those users to complain. Is there a good issue for them to comment on if 
> they run into this problem, so you can notice and fix it quickly? I think 
> it'd be reasonable for the API owners to let this ship given a good way to 
> catch if it breaks anything.
>
> The TAG also requested that you ask the Privacy WG to review the PST API 
> <https://github.com/w3ctag/design-reviews/issues/990>, to get some 
> non-Google validation that there aren't any privacy reasons to avoid 
> loosening the permission policy. I wouldn't expect the API owners to insist 
> that shipping wait for the Privacy WG.
>
> For the thread's information, I also got a request to help PSTs move into 
> a WG, as the launch process requires we do 
> <https://www.chromium.org/blink/launching-features/#new-feature-prepare-to-ship:~:text=If%20your%20specification%20is%20still%20in%20an%20incubation%20venue%20and%20not%20a%20working%20group%2C%20propose%20that%20the%20feature%20migrate%20to%20a%20working%20group.>,
>  
> and we're figuring out what shape that should take.
>
> Jeffrey
>
> On Thu, Oct 3, 2024 at 11:37 AM Ari Chivukula <ari...@chromium.org> wrote:
>
>> Divided Jeffrey's email to separate questions verbatim (italic font). Our 
>> responses are below the question (bold font). 
>>
>>
>> 1. https://github.com/WICG/trust-token-api/issues/106 says that adtech 
>> services want to redeem tokens without needing to get changes made on the 
>> top-level site. The request seems to say that it's the adtech origin that's 
>> directly called from the top-level site, but I think this change would 
>> allow redemptions anywhere down the tree of ad-related frames? 
>>
>> Yes, this change would allow redemptions anywhere down the tree of frames 
>> regardless of origin unless explicit Permissions-Policies/allow-attributes 
>> block them (7).
>>
>>   * Is there any risk of an ad redeeming tokens to interfere with other 
>> ads? 
>> https://github.com/WICG/trust-token-api?tab=readme-ov-file#private-state-token-exhaustion
>>  
>> says only 1 token is redeemed per top-level page visit, which prevents the 
>> ad from deliberately using up the user's tokens, but it could still race to 
>> prevent any other ad from knowing to trust the user.
>>
>> Yes, an ad redeeming a token may interfere with other origins' 
>> capabilities, as that redemption operation associates the issuer with 
>> the top level origin. And this counts towards the issuer limit. At most 2 
>> issuers per top level origin is allowed. See step 4 in algorithm (1). 
>> Associating an issuer with the top level origin occupies a slot. Once an ad 
>> redeems a token, only one issuer slot is left for all others in the same 
>> top level page.
>>
>> Following a successful redemption, a redemption record (3) is stored, 
>> step 14 in algorithm (2). Redemption records are keyed by (issuer, 
>> toplevel) origin pair. Any other origin in the page trying to redeem a 
>> token from the same issuer will get this cached redemption record.
>>
>> Put another way, ads can’t ‘use up’ tokens that other ads on the page 
>> want to redeem, because those other ads would just re-use the same 
>> redemption record.
>>
>> The explainer text is not in the best shape, created issue #307 
>> <https://github.com/WICG/trust-token-api/issues/307> to fix this. 
>>
>> 2. This intent also expands which origins can _issue_ tokens, but I don't 
>> see the justification for that in the issue. What circumstances need that?
>>
>> Yes, you are correct that the particular request cited here is pertaining 
>> to redemption operations. However, we are aware that many anti-fraud 
>> vendors are only embedded in 3p contexts, without necessarily having script 
>> access on the top-level site. Vendors who currently rely on third-party 
>> cookies to establish and convey trust will need commensurate permissions on 
>> both redemption and issuance sides.
>>
>> There's some privacy impact from using this API. The tight default 
>> permission policy meant that top-level sites had to explicitly ask to 
>> expose their users to that privacy impact. Without it, shouldn't we expect 
>> lots of embedded resources to try to learn whatever information they can 
>> using this API? Why is that extra risk good for users overall?
>>
>> We see this is a key tradeoff that many third-party cookie replacement 
>> APIs have to contend with. Given the widespread reliance on third-party 
>> cookies, it may not be practical to have anti-fraud vendors to work with 
>> every publisher/page to update their permission policy for the frames they 
>> have. Usefulness of the signal depends on its availability.
>>
>> Further, the extra risk is actually very small: it's not going to affect 
>> users' privacy if anyone can learn that they've visited 2 particular 
>> issuers and the 6 bits those issuers want to convey about them. In fact, 
>> the privacy risk is decreased by allowing 3p issuers to send that 
>> information, because it limits the inference about which sites a user has 
>> actively visited.
>>
>> Note that the information embedded resources can learn are constrained by 
>> limiting information content stored in a token (4) and limiting the number 
>> of issuers per page (5). Additionally, PST issuers are expected to register 
>> on GitHub 
>> <https://github.com/GoogleChrome/private-tokens/blob/main/PST-Registration.md>
>>  
>> with some transparency on how they’re using the tokens.
>>
>> I don't find the "the top-level origin could call hasPrivateToken up to 
>> twice before any other JavaScript is included" mitigation plausible: folks 
>> often don't control the order of their Javascript that closely. It seems 
>> more likely that sites would just explicitly set the permission policy to 
>> the origins they trust to pick their issuers: is there a reason that's not 
>> an adequate defense?
>>
>> Permission policy can certainly be used, but it does not prevent 
>> third-party scripts embedded on the top-level context from picking their 
>> own issuers. The hasPrivateToken method overcomes that issue. 
>>
>> For the general case, the JS API method mitigates most cases, but we have 
>> heard that folks would like a more explicit way of doing this, either as a 
>> meta tag or header that can be sent by the server since the JS inclusion 
>> order and complexities with single page sites means that this is a little 
>> fragile if it's not the earliest executed JS.
>>
>> While we could add a new meta-tag/header feature to control issuance 
>> origins and then change the policy to default to *, given the low usage and 
>> (in our estimation) the low risk of changing the policy default we would 
>> prefer to pursue this change and follow up if requested by clients.
>>
>> But then you've still just switched the burden from sites that want to 
>> delegate use of this API, to sites that need to defend against hostile use 
>> of the API. Can you share any analysis of why you think attacks will be 
>> much less likely than uses, or some other reason that it's good for users 
>> and sites to switch that burden?
>>
>> While it could be viewed as a “burden switch”, the fundamental privacy 
>> properties of PSTs mentioned above are such that the vast majority of sites 
>> shouldn’t have cause to be concerned. For sites that are looking to prevent 
>> any cross site communication, the permission policy remains available.  
>> References
>>
>> 1. 
>> https://wicg.github.io/trust-token-api/#append-private-state-token-redemption-request-headers
>>
>> 2. https://wicg.github.io/trust-token-api/#handle-a-redeem-response
>>
>> 3. https://wicg.github.io/trust-token-api/#redemption-record
>>
>> 4. https://wicg.github.io/trust-token-api/#limit-encoded-info
>>
>> 5. https://wicg.github.io/trust-token-api/#per-issuer-limits
>>
>> 6. https://github.com/WICG/trust-token-api/issues/106
>>
>> 7. 
>> https://developer.mozilla.org/en-US/docs/Web/HTTP/Permissions_Policy#allowlists
>>
>> 8. https://chromestatus.com/metrics/feature/timeline/popularity/3276
>>
>> ~ Ari Chivukula (Their/There/They're)
>>
>>
>> On Wed, Oct 2, 2024 at 4:51 PM Ari Chivukula <ari...@chromium.org> wrote:
>>
>>> These are good questions! Sorry for the delay in replying, now that TPAC 
>>> has passed we should have something soon.
>>>
>>> ~ Ari Chivukula (Their/There/They're)
>>>
>>>
>>> On Wed, Sep 11, 2024 at 3:52 PM Jeffrey Yasskin <jyas...@chromium.org> 
>>> wrote:
>>>
>>>> This Intent makes me realize that my mental model of Private State 
>>>> Tokens wasn't correct. I'd been thinking of users going to a site that 
>>>> trusts them, having that site issue some tokens, and then going to another 
>>>> site which would redeem a token to increase its trust. In both cases, the 
>>>> sites could rely on third-parties to handle the tokens, but the sites have 
>>>> intentional relationships with their service providers and so could enable 
>>>> them in the top-level Permission Policy.
>>>>
>>>> This Intent implies that something else is going on, maybe multiple 
>>>> things.
>>>>
>>>> 1. https://github.com/WICG/trust-token-api/issues/106 says that adtech 
>>>> services want to redeem tokens without needing to get changes made on the 
>>>> top-level site. The request seems to say that it's the adtech origin 
>>>> that's 
>>>> directly called from the top-level site, but I think this change would 
>>>> allow redemptions anywhere down the tree of ad-related frames? 
>>>>   * Is there any risk of an ad redeeming tokens to interfere with other 
>>>> ads? 
>>>> https://github.com/WICG/trust-token-api?tab=readme-ov-file#private-state-token-exhaustion
>>>>  
>>>> says only 1 token is redeemed per top-level page visit, which prevents the 
>>>> ad from deliberately using up the user's tokens, but it could still race 
>>>> to 
>>>> prevent any other ad from knowing to trust the user.
>>>> 2. This intent also expands which origins can _issue_ tokens, but I 
>>>> don't see the justification for that in the issue. What circumstances need 
>>>> that?
>>>>
>>>> There's some privacy impact from using this API. The tight default 
>>>> permission policy meant that top-level sites had to explicitly ask to 
>>>> expose their users to that privacy impact. Without it, shouldn't we expect 
>>>> lots of embedded resources to try to learn whatever information they can 
>>>> using this API? Why is that extra risk good for users overall?
>>>>
>>>> I don't find the "the top-level origin could call hasPrivateToken up to 
>>>> twice before any other JavaScript is included" mitigation plausible: folks 
>>>> often don't control the order of their Javascript that closely. It seems 
>>>> more likely that sites would just explicitly set the permission policy to 
>>>> the origins they trust to pick their issuers: is there a reason that's not 
>>>> an adequate defense?
>>>>
>>>> But then you've still just switched the burden from sites that want to 
>>>> delegate use of this API, to sites that need to defend against hostile use 
>>>> of the API. Can you share any analysis of why you think attacks will be 
>>>> much less likely than uses, or some other reason that it's good for users 
>>>> and sites to switch that burden?
>>>>
>>>> Thanks,
>>>> Jeffrey
>>>>
>>>> On Mon, Sep 9, 2024 at 5:58 AM Ari Chivukula <ari...@chromium.org> 
>>>> wrote:
>>>>
>>>>> Contact emails
>>>>>
>>>>> ari...@chromium.org, kaust...@chromium.org, sva...@chromium.org, 
>>>>> ayk...@google.com, nic...@google.com
>>>>>
>>>>> Specification
>>>>>
>>>>> https://github.com/WICG/trust-token-api/pull/306
>>>>>
>>>>> Summary
>>>>>
>>>>> Access to the Private State Token API 
>>>>> <https://wicg.github.io/trust-token-api/> is gated by Permissions 
>>>>> Policy <https://www.w3.org/TR/permissions-policy/> features. We 
>>>>> proposed to update the default allowlist 
>>>>> <https://w3c.github.io/webappsec-permissions-policy/#policy-controlled-feature-default-allowlist>
>>>>>  
>>>>> for both `private-state-token-issuance 
>>>>> <https://wicg.github.io/trust-token-api/#policy-controlled-feature-private-state-token-issuance>`
>>>>>  
>>>>> and `private-state-token-redemption 
>>>>> <https://wicg.github.io/trust-token-api/#policy-controlled-feature-private-state-token-redemption>`
>>>>>  
>>>>> features from self to * (wildcard).
>>>>>
>>>>>
>>>>> Blink component
>>>>>
>>>>> Blink>StorageAccessAPI 
>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EStorageAccessAPI>
>>>>>
>>>>>
>>>>> Motivation
>>>>>
>>>>> The Private State Tokens API <https://wicg.github.io/trust-token-api/> 
>>>>> has received recurring feedback from developers 
>>>>> <https://github.com/WICG/trust-token-api/issues/106> that the current 
>>>>> requirement to have first-party sites opt-in to allow third-parties to 
>>>>> invoke token issuance and redemption operations is not practical. This is 
>>>>> especially true for use cases where embeds don’t have first-party script 
>>>>> access to either execute the operations directly in first-party context, 
>>>>> or 
>>>>> to enable the permission policies on the relevant frames. Current default 
>>>>> requires every site to update permission policy for iframes that embed 
>>>>> invalid traffic (IVT) detection scripts.Since scale and coverage are of 
>>>>> essence for IVT detection that rely on identifying outlier patterns; the 
>>>>> need for coordination with first-parties places a high cost for 
>>>>> successful 
>>>>> adoption.
>>>>>
>>>>> TAG review
>>>>>
>>>>> https://github.com/w3ctag/design-reviews/issues/990
>>>>>
>>>>> Compatibility
>>>>>
>>>>> This will not break any existing Private State Token API usage as it 
>>>>> only increases permissiveness. As usage increases, sites may need to 
>>>>> consider the need to mitigate issuer exhaustion 
>>>>> <https://wicg.github.io/trust-token-api/#issuer-exhaustion>.
>>>>>
>>>>> Competing scripts might race to call hasPrivateToken to ensure their 
>>>>> preferred issuer enters the issuerAssociations 
>>>>> <https://wicg.github.io/trust-token-api/#issuerassociations> map 
>>>>> <https://infra.spec.whatwg.org/#ordered-map> before the issuer of 
>>>>> others given a limit of two per top-level origin 
>>>>> <https://html.spec.whatwg.org/multipage/webappapis.html#concept-environment-top-level-origin>.
>>>>>  
>>>>> To control this process, the top-level origin 
>>>>> <https://html.spec.whatwg.org/multipage/webappapis.html#concept-environment-top-level-origin>
>>>>>  
>>>>> could call hasPrivateToken up to twice before any other JavaScript is 
>>>>> included to ensure their preferred issuers are available.
>>>>>
>>>>> Few enough websites 
>>>>> <https://chromestatus.com/metrics/feature/timeline/popularity/3277> 
>>>>> are using the API that we believe we can broaden the default permission 
>>>>> set 
>>>>> and not open any concerning new avenues of attack.
>>>>>
>>>>>
>>>>> Interoperability
>>>>>
>>>>> Gecko: Position Requested 
>>>>> <https://github.com/mozilla/standards-positions/issues/1066>
>>>>>
>>>>> WebKit: Position Requested 
>>>>> <https://github.com/WebKit/standards-positions/issues/391>
>>>>>
>>>>> Web developers: Positive 
>>>>> <https://github.com/WICG/trust-token-api/issues/106>
>>>>>
>>>>> Debuggability
>>>>>
>>>>> Storage written can be examined in devtools.
>>>>>
>>>>> Is this feature fully tested by web-platform-tests?
>>>>>
>>>>> Yes 
>>>>> <https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/external/wpt/trust-tokens/>
>>>>>
>>>>> Tracking bug
>>>>>
>>>>> https://issues.chromium.org/353738486
>>>>>
>>>>> Link to entry on the Chrome Platform Status
>>>>>
>>>>> https://chromestatus.com/feature/5205548434456576
>>>>>
>>>>> -- 
>>>>> 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 blink-dev+...@chromium.org.
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGpy5DL2enC2Q1vYBb%2BKA-O3aYW-a3bcvpWnU12NdAvQT6eUcg%40mail.gmail.com
>>>>>  
>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGpy5DL2enC2Q1vYBb%2BKA-O3aYW-a3bcvpWnU12NdAvQT6eUcg%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 blink-dev+unsubscr...@chromium.org.
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/a4f1c03c-80af-46bd-843c-a1385d2e4030n%40chromium.org.

Reply via email to