Руководство для разработчиков частных государственных токенов

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

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

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

В этом документе излагаются технические детали реализации токенов частного государства (PST). Более подробную информацию см. в обзоре PST .

Процесс обучения для PST.
Процесс обучения PST: Этот процесс состоит из нескольких этапов, начиная с понимания API и определения вашей собственной стратегии использования токенов (больше действий, связанных с продуктом или бизнесом). После этого технический этап заключается в реализации демо-версии в вашей локальной среде и последующем применении ее в реальном сценарии использования.

Как работают токены частного государства?

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

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

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

Подходят ли мне частные государственные токены?

Варианты использования частных государственных токенов.

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

Выпуск и обмен токенов

Реализация PST происходит в три этапа:

  1. Выпуск токенов
  2. Погашение токенов
  3. Пересылка записи о погашении

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

Основной поток токенов частного государства.
Диаграмма последовательности: на диаграмме показано базовое использование PST в реальном сценарии, когда два веб-сайта хотят обменяться сигналами об этом конкретном экземпляре Chrome. Два веб-сайта выполняют операции выпуска и погашения в разные моменты, имея возможность обмениваться доверенными сигналами между собой.

Определите свою стратегию токена

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

Токены и записи погашения: какая между ними связь?

Каждое устройство может хранить до 500 токенов для каждого веб-сайта и эмитента верхнего уровня. Кроме того, каждый токен имеет метаданные, информирующие, какой ключ эмитент использовал для его выпуска. Эта информация может быть использована для принятия решения о выкупе или отказе от токена в процессе погашения. Данные PST хранятся внутри браузера на устройстве пользователя, и доступ к ним возможен только через PST API.

При погашении токена запись о погашении (RR) сохраняется на устройстве. Это хранилище действует как кэш для будущих погашений. Существует ограничение на выкуп двух токенов каждые 48 часов для каждого устройства, страницы и эмитента. Новые вызовы погашения будут использовать кэшированные RR, где это возможно, вместо того, чтобы отправлять запрос эмитенту.

Связь между PST и RR.
  1. Выпускаются новые токены (максимум 500 на каждого эмитента, сайт и устройство).
  2. Все токены хранятся в хранилище токенов на устройстве (аналогично хранилищу файлов cookie).
  3. Если активная запись не найдена, новые записи могут быть созданы после выдачи (максимум 2 каждые 48 часов).
  4. Записи RR считаются активными до истечения срока их действия и будут использоваться в качестве локального кэша.
  5. Новые вызовы погашения попадут в локальный кеш (новые записи RR не генерируются).

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

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

Переменная/поведение Описание Возможное использование
Метаданные ключа токена Каждый токен может быть выпущен с использованием одного и только одного криптографического ключа, а в PST существует ограничение в шесть ключей на каждого эмитента. Один из потенциальных способов использования этой переменной — определение диапазона доверия к вашим токенам на основе ваших криптографических ключей (например, ключ 1 = высокое доверие, а ключ 6 = нет доверия).
Срок действия токена Дата истечения срока действия токена совпадает с датой истечения срока действия ключа. Ключи можно менять по крайней мере каждые 60 дней, и все токены, выпущенные с недействительными ключами, также считаются недействительными.
Ограничение скорости погашения токенов Существует ограничение на два погашения токенов на одно устройство и эмитента каждые 48 часов. Зависит от предполагаемого количества погашений, необходимых для вашего варианта использования каждые 48 часов.
Максимальное количество эмитентов на источник верхнего уровня Максимальное количество эмитентов на источник верхнего уровня в настоящее время равно двум. Тщательно определите эмитентов каждой страницы.
Токены на каждого эмитента на устройстве Максимальное количество токенов каждого эмитента на конкретном устройстве в настоящее время составляет 500. Убедитесь, что количество токенов не превышает 500 на каждого эмитента.

Обязательно обрабатывайте ошибки на своей веб-странице при попытке выпустить токены.
Ротация ключевых обязательств Каждый эмитент PST обязан предоставить конечную точку с ключевыми обязательствами, которые могут меняться каждые 60 дней, и любая ротация, превышающая это значение, будет игнорироваться. Если срок действия ваших ключей истечет менее чем через 60 дней, во избежание сбоев необходимо обновить обязательства по ключам до этой даты (см. подробности ).
Срок действия записи о погашении Продолжительность жизни RR может быть определена, чтобы определить дату истечения срока действия. Поскольку записи RR кэшируются во избежание ненужных новых вызовов погашения эмитенту, важно убедиться в наличии достаточно свежих сигналов погашения. Поскольку существует ограничение на скорость погашения в два токена каждые 48 часов, важно определить срок службы вашего RR, чтобы иметь возможность успешно выполнять вызовы погашения в течение хотя бы этого периода времени (срок действия RR должен быть установлен соответствующим образом). Рекомендуется устанавливать этот срок жизни порядка недель.

Примеры сценариев

Сценарий № 1. Срок действия RR составляет менее 24 часов (t=t), и погашение выполняется несколько раз в течение 48-часового окна.

Пример сценария 1 PST: небольшой срок службы.
В этом сценарии существует 28-часовое окно, в течение которого пользователь не сможет выкупить новые токены, а срок действия всех RR истечет.

Сценарий № 2. Срок действия RR составляет 24 часа , и погашение выполняется несколько раз в течение 48-часового окна.

Пример сценария 2 по тихоокеанскому стандартному времени: срок службы 24 часа.
В этом сценарии, поскольку срок жизни RR составляет 24 часа, погашение можно производить в течение всех 48 часов без каких-либо ограничений.

Сценарий №3. Срок действия RR составляет 48 часов , и погашение выполняется несколько раз в течение 48-часового окна.

Пример сценария 3 по тихоокеанскому стандартному времени: срок службы 48 часов.
В этом сценарии, поскольку срок жизни RR составляет 48 часов, погашение можно производить в течение всех 48 часов без каких-либо ограничений.

Запустить демо-версию

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

Демонстрационный экран PST.

Запустив эту демонстрацию, ваш браузер использует серверы эмитента и выкупщика демо-версии для предоставления и использования токенов.

Технические соображения

Демо-версия будет работать лучше всего, если вы выполните следующие шаги:

  • Обязательно остановите все экземпляры Chrome, прежде чем запускать Chrome с флагами.
  • Если вы работаете на компьютере с Windows, прочтите это руководство о том, как передавать параметры в исполняемый файл Chrome.
  • Откройте Chrome DevTools в разделе «Приложения» > «Хранилище» > «Токены частного состояния» при использовании демонстрационного приложения, чтобы просмотреть токены, выпущенные/погашенные эмитентом демо-версии.
Экран Chrome DevTools с PST.

Настроить на усыновление

Стать эмитентом

Эмитенты играют ключевую роль в PST. Они присваивают значения токенам, чтобы определить, является ли пользователь ботом или нет. Если вы хотите начать работу с PST в качестве эмитента, вам необходимо зарегистрироваться, выполнив процесс регистрации эмитента.

Чтобы подать заявку на получение статуса эмитента, оператор веб-сайта эмитента должен открыть новую задачу в репозитории GitHub , используя шаблон «Новый эмитент PST». Следуйте инструкциям в репозитории, чтобы заполнить проблему. Как только конечная точка будет проверена, она будет объединена с этим репозиторием, и серверная инфраструктура Chrome начнет получать эти ключи.

Серверы-эмитенты

Эмитенты и покупатели являются ключевыми участниками PST; серверы и токены — ключевые инструменты PST. Хотя мы уже предоставили некоторую информацию о токенах и в документации Github , мы хотели предложить более подробную информацию о PST-серверах. Чтобы настроиться в качестве эмитента PST, вам необходимо сначала настроить сервер-эмитент.

Разверните свою среду: серверы-эмитенты.

Чтобы реализовать сервер эмитента токенов, вам потребуется создать собственное серверное приложение, предоставляющее конечные точки HTTP.

Компонент эмитента состоит из двух основных модулей: (1) сервера эмитента и (2) эмитента токена.

Компоненты сервера эмитента.

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

  1. Сервер эмитента. В нашем примере реализации наш сервер выдачи — это сервер Node.js , который использует платформу Express для размещения конечных точек HTTP эмитента. Вы можете посмотреть пример кода на GitHub .

  2. Эмитент токенов. Криптографический компонент эмитента не требует какого-либо специального языка, но из-за требований к производительности этого компонента в качестве примера мы предоставляем реализацию C, которая использует библиотеку Boring SSL для управления токенами. Пример кода эмитента и дополнительную информацию об установке можно найти на GitHub.

  3. Ключи: компонент эмитента токенов использует специальные ключи EC для шифрования токенов. Эти ключи должны быть защищены и храниться в безопасном хранилище.

Технические требования к серверам эмитента

Согласно протоколу, вам необходимо реализовать как минимум две конечные точки HTTP на сервере-эмитенте:

  • Обязательство ключа (например, /.well-known/private-state-token/key-commitment ): эта конечная точка — это место, где данные вашего открытого ключа шифрования будут доступны браузерам для подтверждения легитимности вашего сервера.
  • Выдача токена (например, /.well-known/private-state-token/issuance ): конечная точка выдачи токена, где будут обрабатываться все запросы токенов. Эта конечная точка будет точкой интеграции для компонента эмитента токена.

Как упоминалось ранее, из-за ожидаемого высокого трафика, который потенциально будет обрабатывать этот сервер, мы рекомендуем вам развернуть его с использованием масштабируемой инфраструктуры (например, в облачной среде), чтобы иметь возможность настраивать свой сервер в соответствии с переменным спросом.

Отправить вызов на сервер эмитента

Внедрите вызов выборки веб-сайта в свой стек эмитента, чтобы выпустить новые токены.

 // issuer request
    await fetch("/.well-known/private-state-token/issuance", {
      method: "POST",
      privateToken: {
        version: 1,
        operation: "token-request"
      }
    });

См. пример кода .

Серверы Искупителя

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

Вы можете выбрать запуск эмитента и искупителя на одном сервере (или группе серверов).

Компоненты сервера Redeemer.
Демо-компоненты PST: это основные компоненты сервера-искупителя. Сервер-искупитель (приложение Node.js) и искупитель токенов (криптографический компонент, отвечающий за проверку подписей и токенов в процессе погашения).

Технические требования к серверам-редимерам

Согласно протоколу, вам необходимо реализовать как минимум две конечные точки HTTP для вашего сервера-искупителя:

  • /.well-known/private-state-token/redemption : конечная точка, где будет обрабатываться все выкуп токенов. В этой конечной точке будет интегрирован компонент выкупа токена.

Отправить вызов на сервер искупителя

Чтобы выкупить токены, вам нужно будет реализовать вызов выборки веб-сайта в вашем стеке выкупателя, чтобы выкупить токены, выпущенные ранее.

    // redemption request
    await fetch("/.well-known/private-state-token/redemption", {
      method: "POST",
      privateToken: {
        version: 1,
        operation: "token-redemption",
        refreshPolicy: "none"
      }
    });

См. пример кода .

После погашения токена вы можете отправить запись погашения (RR), выполнив еще один вызов выборки:

    // attach redemption records from the issuers to the request
    await fetch("<DESTINATION_RESOURCE>", {
      method: "POST",
      privateToken: {
        version: 1,
        operation: "send-redemption-record",
        issuers: [<ISSUER_DOMAIN>]
      }
    });

См. пример кода .

Разверните свою реализацию

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

Реальное развертывание

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

  • Небольшое количество посещений в месяц (~ <1 миллиона посещений в месяц). Сначала следует развернуть API для небольшой аудитории.
  • Вы владеете им и контролируете его: при необходимости вы можете быстро отключить внедрение без сложных согласований.
  • Не более одного эмитента: Ограничить количество токенов в целях упрощения тестирования.
  • Не более двух искупителей: Вам нужно упростить устранение неполадок в случае возникновения проблем.

Поиск неисправностей

Вы можете проверить PST на вкладках «Сеть» и «Приложения» Chrome DevTools.

На вкладке Сеть:

Проверка DevTools на вкладке «Сеть».
Проверка DevTools для PST: перейдите в раздел «Сеть» > «Токены частного состояния» , чтобы получить всю необходимую информацию о токенах и эмитентах одной конкретной страницы.

На вкладке Приложение:

Проверка DevTools для вкладки «Приложение».
Проверка DevTools для PST: перейдите в раздел «Приложение» > «Токены частного состояния», чтобы получить всю необходимую информацию о токенах и эмитентах одной конкретной страницы.

Узнайте больше об этой интеграции DevTools .

Рекомендации по работе с сервером и устранение неполадок

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

  • Ваши конечные точки должны применять надежную криптографию с использованием TLS 1.3 или 1.2.
  • Ваша инфраструктура должна быть готова обрабатывать переменные объемы трафика (включая пиковые нагрузки).
  • Убедитесь, что ваши ключи защищены и безопасны, соответствуют вашей политике контроля доступа, стратегии управления ключами и планам обеспечения непрерывности бизнеса.
  • Добавьте в свой стек метрики наблюдаемости, чтобы обеспечить прозрачность и понимание использования, узких мест и проблем с производительностью после перехода в рабочую среду.

Больше информации

  1. Просмотрите документацию разработчика:
    1. Начните с чтения обзора , чтобы освоить PST и его возможности.
    2. Посмотрите вступительное видео PST .
    3. Попробуйте демо-версию PST.
    4. Также прочитайте объяснение API, чтобы узнать о нем более подробную информацию.
    5. Узнайте больше о текущей спецификации API.
  2. Участвуйте в обсуждении через вопросы GitHub или вызовы W3C .
  3. Чтобы лучше понять терминологию, просмотрите глоссарий Privacy Sandbox .
  4. Чтобы узнать больше о таких понятиях Chrome, как «пробная версия Origin» или «Флаги Chrome», просмотрите короткие видеоролики и статьи, доступные на сайте goo.gle/cc .