You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[spec] Make bikeshed check references to Private Aggregation API
Currently, all references to the private-aggregation-api spec are
declared in the "anchors" block. According to the bikeshed docs, this is
how you link to dfns in specs that aren't part in the autolinking
database[1]. As a result, bikeshed hasn't actually been checking our
references, nor has it always been generating the correct links[2].
Private Aggregation spec is already in the database[3], so I think we
can promote these to actual references.
This commit makes the necessary adjustments to the "link-defaults"
block. With this change, invalid references to the Private Aggregation
spec are now compilation errors.
[1]: https://speced.github.io/bikeshed/#custom-dfns
[2]: For instance, clicking "context ID" in step 10 of "obtain the
pre-specified report parameters" links to a non-existent anchor on
the Private Aggregation spec.
[3]: https://github.com/tobie/specref/blob/3569d1ecfa298461f3de0586ed2d13ffb000fa29/refs/browser-specs.json#L1179
In order to prevent cross-site user tracking, browsers are partitioning all forms of storage by [=top-level traversable=] site; see [=Client-Side Storage Partitioning=]. But, there are many [=legitimate use cases=] currently relying on unpartitioned storage.
226
219
227
-
This document introduces a new storage API that is intentionally not partitioned by [=top-level traversable=] site (though still partitioned by context origin), in order to serve a number of the use cases needing unpartitioned storage. To limit cross-site reidentification of users, data in Shared Storage may only be read in a restricted environment, called a worklet, and any output from the worklet is in the form of a [=fenced frame=] or a [=Private Aggregation=] report. Over time, there may be additional output gates included in the standard.
220
+
This document introduces a new storage API that is intentionally not partitioned by [=top-level traversable=] site (though still partitioned by context origin), in order to serve a number of the use cases needing unpartitioned storage. To limit cross-site reidentification of users, data in Shared Storage may only be read in a restricted environment, called a worklet, and any output from the worklet is in the form of a [=fenced frame=] or a [=serialize an aggregatable report|Private Aggregation report=]. Over time, there may be additional output gates included in the standard.
228
221
229
222
<div class="example">
230
223
`a.example` randomly assigns users to groups in a way that is consistent cross-site.
@@ -267,7 +260,7 @@ This document introduces a new storage API that is intentionally not partitioned
267
260
268
261
The {{SharedStorageWorklet}} Interface {#worklet}
269
262
=================================================
270
-
The {{SharedStorageWorklet}} object allows developers to supply [=module scripts=] to process [=Shared Storage=] data and then output the result through one or more of the output gates. Currently there are two output gates, the [=Private Aggregation=] output gate and the {{SharedStorageWorklet/selectURL()|URL-selection}} output gate.
263
+
The {{SharedStorageWorklet}} object allows developers to supply [=module scripts=] to process [=Shared Storage=] data and then output the result through one or more of the output gates. Currently there are two output gates, the <code>{{privateAggregation}}.{{PrivateAggregation/contributeToHistogram()}}</code> output gate and the {{SharedStorageWorklet/selectURL()|URL-selection}} output gate.
271
264
272
265
<xmp class='idl'>
273
266
typedef (USVString or FencedFrameConfig) SharedStorageResponse;
@@ -580,7 +573,7 @@ Moreover, each {{SharedStorageWorklet}}'s [=global scopes|list of global scopes=
580
573
|contextId| is not null, return a new {{DOMException}} with name
581
574
"`DataError`".
582
575
1. Return a new [=pre-specified report parameters=] with the items:
In particular, an embedder can select a [=/URL=] from a short list of [=/URL=]s based on data in their shared storage and then display the result in a [=fenced frame=]. The embedder will not be able to know which [=/URL=] was chosen except through specific mechanisms that will be better-mitigated in the longer term. Currently, a few bits of entropy can leak each time that the user clicks on the [=fenced frame=] to initiate a [=top-level traversable=][=navigate|navigation=] and/or the [=fenced frame=] calls the {{reportEvent()}} API.
2402
2395
2403
-
An embedder is also able to send aggregatable reports via the [=Private Aggregation=] API, which adds noise in order to achieve differential privacy, uses a time delay to send reports, imposes limits on the number of reports sent, and processes the reports into aggregate data so that individual privacy is protected.
2396
+
An embedder is also able to send aggregatable reports via {{privateAggregation}}, which adds noise in order to achieve differential privacy, uses a time delay to send reports, imposes limits on the number of reports sent, and processes the reports into aggregate data so that individual privacy is protected.
0 commit comments