Intent to Ship: Private Aggregation API

840 views
Skip to first unread message

Alex Turner

unread,
Jun 20, 2023, 4:51:33 PM6/20/23
to blin...@chromium.org

Contact emails

ale...@chromium.org

Explainer

https://github.com/patcg-individual-drafts/private-aggregation-api

Specification

https://patcg-individual-drafts.github.io/private-aggregation-api

Summary

A generic mechanism for measuring aggregate, cross-site data in a privacy preserving manner. The potentially identifying cross-site data is encapsulated into "aggregatable reports". To prevent leakage, this data is encrypted, ensuring it can only be processed by the aggregation service. During processing, this service will add noise and impose limits on how many queries can be performed.


Blink component

Blink>PrivateAggregation

TAG review

https://github.com/w3ctag/design-reviews/issues/846

TAG review status

Pending

Risks



Interoperability and Compatibility



Gecko: No signal specific to Private Aggregation (https://github.com/mozilla/standards-positions/issues/805). However the Gecko position on Shared Storage (one of the ways Private Aggregation is exposed) is negative.

WebKit: No signal (https://github.com/WebKit/standards-positions/issues/189)

Web developers: Developers have shown interest in the API both for cross-site use cases through Shared Storage and for Protected Audience aggregate reporting and have engaged on GitHub[1]. For Shared Storage, multiple testers have publicly flagged their interest via the public Shared Storage Testers List [2].

[2] https://github.com/WICG/shared-storage/blob/main/shared-storage-tester-list.md

Other signals:

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?

No



Debuggability

The proposal includes a temporary debugging mechanism to facilitate testing and integration. An internals page (chrome://private-aggregation-internals) is also available to view the status of pending and sent reports.


Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?

All but WebView


Is this feature fully tested by web-platform-tests?

Reports sent through the API are subject to large delays and require overriding a public key endpoint. Some end-to-end tests are currently internal web tests. Where possible, tests are external and we are proposing new WebDriver APIs to support testing via web-platform-tests. Tests for the integration with Protected Audience are in-progress and should land soon.


Flag name

privacy-sandbox-ads-apis

Requires code in //chrome?

False

Tracking bug

https://crbug.com/1316659

Launch bug

https://crbug.com/1292756

Estimated milestones

We intend to start an incremental ramp towards 100% in Stable starting with M115.

Anticipated spec changes

A few changes to current behavior are expected including tying debug mode to third-party cookie eligibility (issue) and padding the encrypted payload (issue). Extensions to the API to support multiple aggregation services, enable Protected Audience report verification, and allow arrays of contributions (issue) are also expected and are purely additive. The JS interface for all of these changes will be backwards compatible with the current API.


Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5743412790689792

Links to previous Intent discussions

Intent to prototype: https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA%2BBiFkKSt4YBNUn2h42G3z%2BqjwxjFAo%3DsPnrbvvOoNaDa_aAQ%40mail.gmail.com Intent to Experiment: https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA%2BBiF%3DKQYXEVn%3DB4rMabH14UdYyA%2BF8qQkWyUVPB0rypS1N0Q%40mail.gmail.com


This intent message was generated by Chrome Platform Status.

Rick Byers

unread,
Jun 20, 2023, 5:39:07 PM6/20/23
to Alex Turner, mat...@chromium.org, blin...@chromium.org
Thanks for working to enable more automation here, and putting what you can in WPT today. I think it's reasonable to pursue this in parallel. Are you looking for approval for the WebDriver API addition now too (still a PR), or happy to send a separate I2S for that when you're ready to ship it? +mat...@chromium.org and team can advise on extending webdriver. 

Flag name

privacy-sandbox-ads-apis

Requires code in //chrome?

False

Tracking bug

https://crbug.com/1316659

Launch bug

https://crbug.com/1292756

Estimated milestones

We intend to start an incremental ramp towards 100% in Stable starting with M115.

Anticipated spec changes

A few changes to current behavior are expected including tying debug mode to third-party cookie eligibility (issue) and padding the encrypted payload (issue). Extensions to the API to support multiple aggregation services, enable Protected Audience report verification, and allow arrays of contributions (issue) are also expected and are purely additive. The JS interface for all of these changes will be backwards compatible with the current API.


Thanks. Skimming the open issues I see at least one which sounds like it would be a non-trivial breaking change. Are there others? Do you want to drive such issues to resolution (one way or the other) prior to shipping or make the case for why a breaking change will be doable (eg. a practical v2 migration strategy)?

--
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/CAA%2BBiFk4cb%2Bi69Symy-KCjHbtquGSQCn5scXy_YMSSWGut2vJw%40mail.gmail.com.

Yoav Weiss

unread,
Jun 21, 2023, 3:27:04 AM6/21/23
to Rick Byers, Alex Turner, mat...@chromium.org, blin...@chromium.org
Thanks for catching that. That issue was effectively resolved, but spun up other (in-thread) discussions. I now closed it and suggested the discussions would be spun up to their own issues (#70 is a backwards compatible ergonomics change still remaining). 

Are there others? Do you want to drive such issues to resolution (one way or the other) prior to shipping or make the case for why a breaking change will be doable (eg. a practical v2 migration strategy)?

--
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/CAA%2BBiFk4cb%2Bi69Symy-KCjHbtquGSQCn5scXy_YMSSWGut2vJw%40mail.gmail.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 blink-dev+...@chromium.org.

Alex Turner

unread,
Jun 21, 2023, 11:32:49 AM6/21/23
to Rick Byers, mat...@chromium.org, blin...@chromium.org
Yeah, I think it makes sense to consolidate these together unless there are concerns with that approach. Thanks!

Yoav Weiss

unread,
Jun 26, 2023, 12:32:48 PM6/26/23
to Alex Turner, Rick Byers, mat...@chromium.org, blin...@chromium.org
I wanted to comment on this intent with my spec mentor hat on. I reviewed this specification and provided feedback to its authors.

My main point of feedback was around its layering and how it relates to the other 2 specifications (Shared Storage and Protected Audience) that use the infrastructure that it defines. My feedback was properly addressed, and the specification was re-written such that it's unaware of its users, and its users are calling its algorithms, rather than the other way around.
There's still work to be done to move the user algorithms from monkeypatch sections in this spec to their respective specifications, but I wouldn't consider that a blocker and I trust the team to do that soon.
Beyond that, feedback around naming was addressed and I believe that ergonomics feedback can be addressed in a backwards compatible manner.

As is, I believe the specification is in good shape to be implemented interoperably. I also believe the team is committed to improve it further on the (non-blocking) points that are still outstanding. 

Rick Byers

unread,
Jun 28, 2023, 11:53:36 AM6/28/23
to Yoav Weiss, Alex Turner, mat...@chromium.org, blin...@chromium.org
On Mon, Jun 26, 2023 at 12:32 PM Yoav Weiss <yoav...@chromium.org> wrote:
I wanted to comment on this intent with my spec mentor hat on. I reviewed this specification and provided feedback to its authors.

My main point of feedback was around its layering and how it relates to the other 2 specifications (Shared Storage and Protected Audience) that use the infrastructure that it defines. My feedback was properly addressed, and the specification was re-written such that it's unaware of its users, and its users are calling its algorithms, rather than the other way around.
There's still work to be done to move the user algorithms from monkeypatch sections in this spec to their respective specifications, but I wouldn't consider that a blocker and I trust the team to do that soon.
Beyond that, feedback around naming was addressed and I believe that ergonomics feedback can be addressed in a backwards compatible manner.

As is, I believe the specification is in good shape to be implemented interoperably. I also believe the team is committed to improve it further on the (non-blocking) points that are still outstanding. 

Thanks Yoav for the spec mentorship summary.
Ok. Just discussed in the API owners meeting. Can you please get someone with webdriver spec experience (eg. @mat...@chromium.org) to review the PR? If the PR lands with such a review, then we can include it here. But if that ends up taking too long, then we suggest splitting it out for a follow-up - it doesn't need to block this feature overall.

Flag name

privacy-sandbox-ads-apis

Requires code in //chrome?

False

Tracking bug

https://crbug.com/1316659

Launch bug

https://crbug.com/1292756

Estimated milestones

We intend to start an incremental ramp towards 100% in Stable starting with M115.

Anticipated spec changes

A few changes to current behavior are expected including tying debug mode to third-party cookie eligibility (issue) and padding the encrypted payload (issue). Extensions to the API to support multiple aggregation services, enable Protected Audience report verification, and allow arrays of contributions (issue) are also expected and are purely additive. The JS interface for all of these changes will be backwards compatible with the current API.


Thanks. Skimming the open issues I see at least one which sounds like it would be a non-trivial breaking change. Are there others? Do you want to drive such issues to resolution (one way or the other) prior to shipping or make the case for why a breaking change will be doable (eg. a practical v2 migration strategy)?

Can you do a quick pass over open issues looking for any others with future compat risk (i.e. potential future breaking changes) and label them as such?

Alex Turner

unread,
Jun 28, 2023, 12:34:11 PM6/28/23
to Rick Byers, Yoav Weiss, mat...@chromium.org, blin...@chromium.org
Sounds good to me! I'll start that process now.
 

Flag name

privacy-sandbox-ads-apis

Requires code in //chrome?

False

Tracking bug

https://crbug.com/1316659

Launch bug

https://crbug.com/1292756

Estimated milestones

We intend to start an incremental ramp towards 100% in Stable starting with M115.

Anticipated spec changes

A few changes to current behavior are expected including tying debug mode to third-party cookie eligibility (issue) and padding the encrypted payload (issue). Extensions to the API to support multiple aggregation services, enable Protected Audience report verification, and allow arrays of contributions (issue) are also expected and are purely additive. The JS interface for all of these changes will be backwards compatible with the current API.


Thanks. Skimming the open issues I see at least one which sounds like it would be a non-trivial breaking change. Are there others? Do you want to drive such issues to resolution (one way or the other) prior to shipping or make the case for why a breaking change will be doable (eg. a practical v2 migration strategy)?

Can you do a quick pass over open issues looking for any others with future compat risk (i.e. potential future breaking changes) and label them as such?
 
Just did a pass and added labels. I've also added a brief comment to each issue marked "compat" with some detail on the risk/possible mitigations. Thanks!

Rick Byers

unread,
Jul 6, 2023, 8:42:07 PM7/6/23
to Alex Turner, Yoav Weiss, mat...@chromium.org, blin...@chromium.org
FWIW Mathias was on vacation this week but is back next week (but I'm out). Hopefully you two can connect and agree on the path here. Having automation support for testing usage of this feature makes sense to me generally, so hopefully the question is just around the details of the mechanics.

Flag name

privacy-sandbox-ads-apis

Requires code in //chrome?

False

Tracking bug

https://crbug.com/1316659

Launch bug

https://crbug.com/1292756

Estimated milestones

We intend to start an incremental ramp towards 100% in Stable starting with M115.

Anticipated spec changes

A few changes to current behavior are expected including tying debug mode to third-party cookie eligibility (issue) and padding the encrypted payload (issue). Extensions to the API to support multiple aggregation services, enable Protected Audience report verification, and allow arrays of contributions (issue) are also expected and are purely additive. The JS interface for all of these changes will be backwards compatible with the current API.


Thanks. Skimming the open issues I see at least one which sounds like it would be a non-trivial breaking change. Are there others? Do you want to drive such issues to resolution (one way or the other) prior to shipping or make the case for why a breaking change will be doable (eg. a practical v2 migration strategy)?

Can you do a quick pass over open issues looking for any others with future compat risk (i.e. potential future breaking changes) and label them as such?
 
Just did a pass and added labels. I've also added a brief comment to each issue marked "compat" with some detail on the risk/possible mitigations. Thanks!

I reviewed the current state of all these and it looks pretty low-risk to me. Alex / Yoav, any decisions there you think this I2S should still be blocked on?

عبد الله رتيبة

unread,
Jul 7, 2023, 5:06:59 AM7/7/23
to Rick Byers, Alex Turner, Yoav Weiss, mat...@chromium.org, blin...@chromium.org

Alex Turner

unread,
Jul 7, 2023, 9:48:21 AM7/7/23
to Rick Byers, Yoav Weiss, mat...@chromium.org, blin...@chromium.org
I'll follow up with him on Monday, but I don't expect any major changes. Note also that we've aligned the Private Aggregation spec change with Attribution Reporting's section
 

Flag name

privacy-sandbox-ads-apis

Requires code in //chrome?

False

Tracking bug

https://crbug.com/1316659

Launch bug

https://crbug.com/1292756

Estimated milestones

We intend to start an incremental ramp towards 100% in Stable starting with M115.

Anticipated spec changes

A few changes to current behavior are expected including tying debug mode to third-party cookie eligibility (issue) and padding the encrypted payload (issue). Extensions to the API to support multiple aggregation services, enable Protected Audience report verification, and allow arrays of contributions (issue) are also expected and are purely additive. The JS interface for all of these changes will be backwards compatible with the current API.


Thanks. Skimming the open issues I see at least one which sounds like it would be a non-trivial breaking change. Are there others? Do you want to drive such issues to resolution (one way or the other) prior to shipping or make the case for why a breaking change will be doable (eg. a practical v2 migration strategy)?

Can you do a quick pass over open issues looking for any others with future compat risk (i.e. potential future breaking changes) and label them as such?
 
Just did a pass and added labels. I've also added a brief comment to each issue marked "compat" with some detail on the risk/possible mitigations. Thanks!

I reviewed the current state of all these and it looks pretty low-risk to me. Alex / Yoav, any decisions there you think this I2S should still be blocked on?

I agree -- I think all the remaining decisions there are low enough risk to not be blocking. Yoav, does that seem right to you?

Yoav Weiss

unread,
Jul 7, 2023, 10:28:39 AM7/7/23
to Alex Turner, Rick Byers, mat...@chromium.org, blin...@chromium.org
I agree that any potential future changes resulting from the open issues would be backwards compatible, so shouldn't block this intent.

Mathias Bynens

unread,
Jul 10, 2023, 4:00:51 AM7/10/23
to blink-dev, yoav...@chromium.org, rby...@chromium.org, mat...@chromium.org, blin...@chromium.org, ale...@chromium.org
Thank you for including a WebDriver extension for this; I’ve left some review feedback on the PR. Overall, I wanted to voice my support for pursuing the Web Platform feature (and this Intent) separately from the WebDriver extension, as long as you’re confident in the testing strategy — no need to block on it.

Alex Turner

unread,
Jul 10, 2023, 2:05:03 PM7/10/23
to Mathias Bynens, blink-dev, yoav...@chromium.org, rby...@chromium.org, mat...@chromium.org
As a quick update, the WebDriver extension PR has now landed. (Thanks Mathias for the review!) So, it should be safe to include that change as part of this I2S.

Mike Taylor

unread,
Jul 10, 2023, 3:58:07 PM7/10/23
to Alex Turner, Mathias Bynens, blink-dev, yoav...@chromium.org, rby...@chromium.org, mat...@chromium.org

Chris Harrelson

unread,
Jul 11, 2023, 12:00:04 PM7/11/23
to Mike Taylor, Alex Turner, Mathias Bynens, blink-dev, yoav...@chromium.org, rby...@chromium.org, mat...@chromium.org

Yoav Weiss

unread,
Jul 11, 2023, 12:45:26 PM7/11/23
to Chris Harrelson, Mike Taylor, Alex Turner, Mathias Bynens, blink-dev, rby...@chromium.org, mat...@chromium.org
LGTM3
Reply all
Reply to author
Forward
0 new messages