Защита конфиденциальности для агрегированных отчетов

Служба агрегирования генерирует сводные отчеты с подробными данными о конверсиях и измерениями охвата на основе необработанных агрегированных отчетов. Чтобы обеспечить конфиденциальность и безопасность пользовательских данных, служба агрегации использует структуру, которая поддерживает дифференциальную конфиденциальность (DP) для количественной оценки и ограничения объема информации, которую эти отчеты раскрывают об отдельных пользователях.

В этом руководстве обсуждаются инструменты и стратегии создания агрегированных отчетов, которые помогают обеспечить безопасность данных об отдельных пользователях:

Сводные отчеты с добавленным шумом

Когда вы группируете агрегированные отчеты, служба агрегирования создает сводный отчет. Этот сводный отчет представляет собой совокупность всех вкладов всех предопределенных ключей домена с добавленным статистическим шумом.

Шум, добавляемый в отчеты, не зависит от количества агрегированных отчетов, значений отдельных отчетов или агрегированных значений отчетов. Шум извлекается из дискретной версии распределения Лапласа и масштабируется до бюджета вклада (чувствительность L1 ), который применяется клиентом в зависимости от соответствующего API измерения и параметра конфиденциальности epsilon .

Дополнительные сведения о шуме и его влиянии на данные отчета см. в разделе Понимание шума в сводных отчетах .

Бюджет взносов

Чтобы контролировать конфиденциальность сводного отчета, количество вкладов, передаваемых во время вызова, привязывается к определенному ограничению вкладов, также известному как бюджет вкладов. Бюджет вклада зависит от того, используете ли вы API отчетов по атрибуции или API частного агрегирования .

Чтобы узнать больше о том, как установить бюджеты взносов для каждого API, см. следующие разделы документации API:

Стратегии пакетной обработки отчетов

При пакетной обработке агрегированных отчетов важно оптимизировать стратегии пакетной обработки, чтобы не были превышены ограничения конфиденциальности. Двумя важными принципами правильного пакетирования отчетов являются правило «нет дубликатов» и идея непересекающихся пакетов .

Правило «Нет дубликатов»

Служба агрегации применяет правило «без дубликатов». Это правило гласит, что агрегированный отчет, который однозначно идентифицируется report_id , может появляться только один раз в одном пакете. Если агрегируемый отчет появляется более одного раза в пакете, первый отчет включается в агрегирование, последующие отчеты с тем же report_id отбрасываются, и пакет завершается успешно.

Правило также гласит, что один и тот же общий идентификатор не может появляться более чем в одном пакете. Если общий идентификатор уже был включен в предыдущий успешный пакет, последующий пакет, который также включал тот же общий идентификатор, завершится неудачно.

Один и тот же отчет можно использовать только один раз для каждого пакета.
Рисунок 1. Если отчет появляется в пакете более одного раза, агрегация включает первый экземпляр и отбрасывает последующие отчеты с тем же идентификатором.

Без правила «без дубликатов» злоумышленник мог бы получить представление о содержимом определенного пакета, манипулируя содержимым пакетов путем включения дублирующихся копий отчета в один или несколько пакетов.

Дополнительные сведения о применении правила «не повторяться» в пакете отчетов или в нескольких пакетах см. в разделе Дублирование отчетов в пакетах .

Непересекающиеся партии

Чтобы избежать ситуаций, в которых происходит перекрытие между пакетами, служба агрегации принудительно применяет непересекающиеся пакеты. Это означает, что два или более пакетов не могут содержать отчеты с общим идентификатором . Общий идентификатор — это комбинация данных, собранных из shared_info агрегируемого отчета, а также идентификатора фильтрации из запроса задания. Если идентификатор фильтрации не указан, по умолчанию используется значение 0.

В следующем примере поля shared_info вы можете увидеть API, attribution_destination (для отчетов по атрибуции), reporting_origin , scheduled_report_time , source_registration_time (для отчетов по атрибуции) и version . Эти поля, за исключением report_id , вместе с идентификатором фильтрации из запроса задания, вносят вклад в общий идентификатор.

"shared_info": {
  "API": "attribution-reporting",
  "attribution_destination": "https://privacy-sandbox-demos-shop.dev",
  "report_id": "5b052748-f5fb-4f14-b291-de03484ed59e",
  "reporting_origin": "https://privacy-sandbox-demos-dsp.dev",
  "scheduled_report_time": "1707786751",
  "source_registration_time": "0",
  "version": "0.1"
}

Поскольку source_registration_time усекается до дня, а scheduled_report_time усекается до часа, существуют отчеты с одинаковым общим идентификатором. В этом примере Report1 и Report2 имеют общие информационные поля. Оба отчета имеют одинаковый API, версию, attribution_destination , reporting_origin и source_registration_time . Поскольку report_id не является частью общего идентификатора, вы можете игнорировать эту разницу.

В следующих примерах для Report1 и Report2 значение scheduled_report_time одинаковое.

Поделилась информацией Report1 :

"shared_info": {
  "API": "attribution-reporting",
  "attribution_destination": "https://shop.dev",
  "report_id": "5b052748-...",
  "reporting_origin": "https://dsp.dev",
  "scheduled_report_time": "1708376890",
  "source_registration_time": "0",
  "version": "0.1"
}

Поделенная информация Report2 :

"shared_info": {
  "API": "attribution-reporting",
  "attribution_destination": "https://shop.dev",
  "report_id": "5b052748-...",
  "reporting_origin": "https://dsp.dev",
  "scheduled_report_time": "1708376890",
  "source_registration_time": "0",
  "version": "0.1"
}

Запланированное время отчета: «19 февраля 2024 г., 21:08:10» для Report1 и «19 февраля 2024 г., 21:55:10» для Report2 . Поскольку значение поля scheduled_report_time усекается до часа, оба отчета имеют 1708376890 (закодированное значение для «19 февраля 2024 г., 21:00») в качестве значения поля scheduled_report_time .

Поскольку все остальные поля и идентификатор фильтрации одинаковы, оба отчета имеют один и тот же общий идентификатор. А поскольку оба отчета имеют один и тот же общий идентификатор, они оба должны быть включены в один и тот же пакет.

Если отчет 1 был помещен в ранее успешный пакет, а отчет 2 обрабатывается в последующем пакете, пакет с отчетом 2 завершится сбоем с ошибкой PRIVACY_BUDGET_EXHAUSTED . В этом случае удалите отчеты с общим идентификатором, которые были успешно объединены в предыдущие пакеты, и повторите попытку. Дополнительные сведения об этой ошибке см. в разделе Коды ошибок и способы их устранения для службы агрегации .

Отчеты с общим идентификатором следует включать в один пакет.
Рисунок 2. Пакет 2 содержит отчет, который имеет общий идентификатор с отчетом в пакете 1, поэтому пакет 2 завершается сбоем.

Предварительно объявленные ключи агрегации

Когда вы отправляете пакет в службу агрегации, он должен включать как агрегируемые отчеты, полученные от источника отчетов, так и выходной файл домена. Выходной домен содержит ключи или сегменты, полученные из агрегированных отчетов.

С точки зрения конфиденциальности ко всем ключам, заранее объявленным в выходном домене, добавляется шум, даже если ни один реальный отчет не соответствует конкретному ключу. Указание выходного домена защищает от атаки, при которой наличие ключа в выходных данных раскрывает что-то об отдельном пользователе или событии. Например, если вы показали кампанию только одному пользователю, получение ключа в выходных данных покажет, что пользователь позже совершил конверсию, даже с добавлением шума. Указав этот домен первым, вы можете быть уверены, что он ничего не расскажет о вкладе пользователей.

Вы можете объявить эти 128-битные ключи либо в API отчетов об атрибуции , либо в API частной агрегации и использовать их для кодирования измерений, которые вы хотите отслеживать.

Только предварительно объявленные ключи рассматриваются для агрегирования и включаются в сводный отчет. К агрегированным значениям сегментов сводного отчета добавляется статистический шум, который отражается в созданном сводном отчете.

Пакет конфиденциальности в службе агрегирования.
Рисунок 3. Сводный отчет содержит только предварительно объявленные ключи, также известные как сегменты.

Если ключ агрегирования включен в выходной файл домена, но не находится в пакетном отчете, даже если агрегированное значение равно нулю, окончательный сводный отчет, скорее всего, будет ненулевым из-за добавленного шума для сохранения конфиденциальности.