diff --git a/api.bs b/api.bs index e389d54..5f6477a 100644 --- a/api.bs +++ b/api.bs @@ -27,13 +27,13 @@ The primary goal of this API is to enable attribution for advertising. ## Attribution ## {#s-attribution} -Attribution is the process of identifying [=actions=] +In advertising, attribution is the process of identifying [=actions=] that precede an [=outcome=] of interest, and allocating value to those [=actions=]. -For advertising, actions that are of interest +Actions that are of interest to advertisers are primarily the showing of advertisements -(also referred to as impressions). +(also referred to as impressions). Other actions include ad clicks (or other interactions) and opportunities to show ads that were not taken. @@ -117,32 +117,108 @@ with multiple purveyors of personal information that is traded for various purpo ## Goals ## {#goals} -The goal of this document is to define a means of performing attribution +The goal of this document is to define an means of performing [=attribution=] +for advertising that does not enable tracking. -The primary challenge with attribution is in maintaining privacy. -Attribution involves connecting activity on different sites. -If that information were directly revealed, -it would enable unwanted -[[PRIVACY-PRINCIPLES#dfn-cross-context-recognition cross-context recognition]], -thereby enabling tracking. -This document avoids cross context recognition by ensuring that -attribution information is aggregated using an [=aggregation service=]. -The aggregation service is trusted to compute an aggregate -without revealing the values that each person contributes to that aggregate. +## End-User Benefit ## {#user-benefit} -Strict limits are placed on the amount of information that each browser instance -contributes to the aggregates for a given site. -Differential privacy is used to provide additional privacy protection for each contribution. +The measurement of advertising performance creates new cross-site flows of information. +That information flow creates a privacy risk or cost-- +of [[PRIVACY-PRINCIPLES#dfn-cross-context-recognition|cross-context recognition]]-- +that needs to be justified in terms of benefits to end users. -Details of aggregation service operation is included in [[#aggregation]]. -The differential privacy design used is outlined in [[#dp]]. +Any benefits realized by end users through the use of [=attribution=] is indirect. +End users that visit a website +pay for "free" content or services +primarily through their attention +to any advertisements the site shows them. +This "value" accrues to the advertiser, +who in turn pays the site. +The site is expected to use this money to +support the provision of their content or services. -## End-User Benefit ## {#user-benefit} + -New additions to the +Participation in an [=attribution=] measurement system +would comprise a secondary cost to Web users. + +Support for attribution enables more effective advertising, +largely by informing advertisers about what ads perform best, +and in what circumstances. +Those circumstances might include +the time and place that the ad is shown, +the person to whom the ad is presented, and +the details of the ad itself. + +Connecting that information to outcomes +allows an advertiser to learn what circumstances most often lead +to the outcomes they most value. +That allows advertisers to spend more on effective advertising +and less on ineffective advertising. +This lowers the overall cost of advertising +relative to the value obtained. [[ONLINE-ADVERTISING]] + +Sites that provide advertising inventory, +such as content publishers and service providers, +indirectly benefit from more efficient advertising. +Venues for advertising that are better able to +show ads that result in +the outcomes that advertisers seek +can charge more for ad placements. + +Sites that obtain support through the placement of advertisements +are better able to provide quality content or services. +Importantly, that support is derived unevenly from their audience. +This can be more equitable than other forms of financial support. +Those with a lower tendency or ability to spend on advertised goods +obtain the same ad-supported content and services +as those who can afford to pay. [[EU-AD]][[COPPACALYPSE]] + +The ability to supply "free" services +supported by advertising +has measurable economic benefit +that derives from the value of those services. [[FREE-GDP]] + + +## Collective Privacy Effect ## {#collective} + +The use of aggregation-- +if properly implemented-- +ensures that information provided to sites is about groups and not individuals. + +The introduction of this mechanism therefore represents collective decision-making, +as described in [[PRIVACY-PRINCIPLES#collective-privacy]]. + +Participation in attribution measurement carries a lower privacy cost +when the group that participates is larger. +This is due to the effect of aggregation on +the ability of sites to +extract information about individuals from aggregates. +This is especially true for central [[#dp|differential privacy]], +which is the mathematical basis for the privacy design used +in this specification. + +Larger cohorts of participants also produce more representative-- +and therefore more useful-- +statistics about the advertising that is being measured. + +If attribution is justified, +both these factors motivate the enablement of attribution for all users. + +Acting to enable attribution measurement by user agents +will not be positively received by some people. +Different people perceive the costs and benefits +that come from engaging with advertising differently. +The proposed design allows people the option of appearing to participate in attribution +without revealing that choice to sites; see [[#opt-out]]. ## Attribution Using Histograms ## {#histograms} @@ -194,7 +270,7 @@ A conversion value might also be split between multiple impressions to split credit, though this capability is not presently supported in the API. -* Compatibility with privacy-preserving aggregation systems +* Compatibility with privacy-preserving aggregation services * Flexibility to assign buckets * As histogram size increases, noise becomes a problem @@ -261,14 +337,14 @@ As a result, sites learn nothing about what happened on other sites from this in The site can collect the encrypted histograms it receives from calls to this API and submit them to the aggregation service. -The aggregation service: +Upon receiving a set of encrypted histograms from a site, the aggregation service: 1. confirms that it has not previously computed an aggregate from the provided inputs and that there are enough conversion reports, -2. adds the histograms including sufficient [[#dp noise]] +2. adds the histograms including sufficient [[#dp|noise]] to produce a differentially-private aggregate histogram, and 3. returns the aggregate to the site. @@ -277,78 +353,125 @@ The aggregation service: # API Details # {#api} -Open questions: -* Filter/query language -* Reports are sent to aggregation system directly, or via conversion site? Or - option of either? => via conversion site -* Epochs - +Before using the other Private Attribution APIs, a site must +[[#list-aggregation-services-api|list aggregation services]] to discover the aggregation services +that are supported. +The page may select any of the supported services returned by +listAggregationServices(). +The name of the selected service must be supplied as +the `aggregator` member of the +{{PrivateAttributionConversionOptions}} dictionary when calling the +measureConversion() method. -## ListAggregationSystems API ## {#list-aggregation-systems-api} +## Finding a Supported Aggregation Service ## {#list-aggregation-services-api} -navigator.privateAttribution.listAggregationSystems() +
Is any additional information required in the +{{PrivateAttributionAggregationService}} dictionary? Do we want +to rename `apiVersion` to `protocol`? And we should definitely +define an enum for it. -TODO: add whatever else is needed in this struct +The listAggregationServices() method +returns a list of aggregation services supported by the [=user agent=]. The page +must select and specify one of these services when calling the +measureConversion() method.
navigator.privateAttribution.saveImpression({ - aggregator: "aggregator.example", // the name of the aggregation system - index: 3, // the histogram index for counting this impression + histogramIndex: 3, ad: "sample-campaign-eijb", // a unique identifier for the ad placement - target: "advertiser.example", // the advertiser site where a conversion will occur + conversionSite: "advertiser.example", // the advertiser site where a conversion will occur });-Add: -* TTL -
navigator.privateAttribution.measureConversion({ - // name of the aggregation system + // name of the aggregation service aggregator: "aggregator.example", // the number of buckets in the histogram @@ -366,12 +489,10 @@ navigator.privateAttribution.measureConversion({ // a list of possible ad identifiers that can be attributed ads: ["sample-campaign-eijb"], // a list of sites where impressions might have been registered - source: ["publisher.example"] + impressionSites: ["publisher.example"] });-// TODO clarify "Infinity" -
+Ad: The [=/ad identifier=] passed to saveImpression(). +Impression Site: The site that called saveImpression(). +Conversion Sites: The conversion site(s) that were passed to saveImpression(). +Timestamp: The time at which saveImpression() was called. +Lifetime: The number of days an [=/impression=] remains eligible for attribution, +Lifetime: either from the call to saveImpression(), or a [=/user agent=]-defined limit. +Histogram Index: The histogram index passed to saveImpression(). ++
{ + "coppacalypse": { + "authors": [ + "Garrett Johnson", + "Tesary Lin", + "James C. Cooper", + "Liang Zhong" + ], + "title": "COPPAcalypse? The Youtube Settlement's Impact on Kids Content", + "href": "https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4430334", + "date": "2024-03-14" + }, "dp": { "authors": [ "Cynthia Dwork", @@ -908,6 +1082,47 @@ spec:infra; type:dfn; text:user agent "title": "The Algorithmic Foundations of Differential Privacy", "publisher": "now, Foundations and Trends in Theoretical Computer Science, Vol. 9, Nos. 3–4" }, + "eu-ad": { + "authors": [ + "Niklas FOURBERG", + "Serpil TAŞ", + "Lukas WIEWIORRA", + "Ilsa GODLOVITCH", + "Alexandre DE STREEL", + "Hervé JACQUEMIN", + "Jordan HILL", + "Madalina NUNU", + "Camille BOURGUIGON", + "Florian JACQUES", + "Michèle LEDGER", + "Michael LOGNOUL" + ], + "title": "Online advertising: the impact of targeted advertising on advertisers, market access and consumer choice", + "href": "https://www.europarl.europa.eu/thinktank/en/document/IPOL_STU(2021)662913", + "publisher": "European Parliament", + "date": "2021-06" + }, + "free-gdp": { + "authors": [ + "Leonard Nakamura", + "Jon D. Samuels", + "Rachel Soloveichik" + ], + "title": "Measuring the \"Free\" Digital Economy within the GDP and Productivity Accounts", + "href": "https://www.bea.gov/research/papers/2017/measuring-free-digital-economy-within-gdp-and-productivity-accounts", + "publisher": "Bureau of Economic Analysis", + "date": "2017-10" + }, + "online-advertising": { + "authors": [ + "Avi Goldfarb", + "Catherine Tucker" + ], + "title": "Online Advertising", + "href": "https://doi.org/10.1016/B978-0-12-385514-5.00006-9", + "edDraft": "http://www-2.rotman.utoronto.ca/~agoldfarb/OnlineAdvertising.pdf", + "publisher": "Elsevier" + }, "ppa-dp": { "authors": [ "Pierre Tholoniat",