← Privacy Pass / privacy-pass
Начало работы
Есть два способа самостоятельно увидеть Privacy Pass в действии:
- Получите реальный токен с помощью демонстрационного инструмента: самый быстрый способ получить настоящий токен, подписанный издателем, с помощью браузерного инструмента и демонстрационного издателя от Cloudflare.
- См. локальный пример: запустить полный процесс выдачи и предъявления токена на своей машине за несколько минут, используя настоящую криптографию Blind RSA.
Чтобы разобраться в самом протоколе, см. Протокол Privacy Pass. Когда будете готовы проверить настоящее развёртывание, управляемое Cloudflare, см. Тестирование развертывания в продакшене и свяжитесь с нами ↗ чтобы начать настройку необходимой инфраструктуры.
Получение реального токена с помощью демонстрационного инструмента
Проще всего увидеть, как выглядит токен, подписанный издателем, с помощью Демонстрационный инструмент Privacy Pass ↗. Указав издателя, вы запускаете полный процесс выдачи токена прямо в браузере и получаете проверенный токен.
Предварительные требования
- Наш URL каталога демонстрационного издателя, приведённый здесь: https://demo-pat.issuer.cloudflare.com/.well-known/private-token-issuer-directory ↗.
Как получить токен
- Откройте демонстрационный инструмент Privacy Pass ↗.
- В Запрос по URL эмитента, вставьте URL каталога демонстрационного издателя и отправьте форму. Инструмент отобразит каталог издателя, список
token-keysс типом токена2(Blind RSA), и автоматически заполняет поля для следующих шагов. - В Создать проверку, отправьте заполненную форму. Инструмент формирует
WWW-Authenticateпроверку токена по ключу издателя. - В Отправка запроса токена, отправьте заполненную форму. Инструмент создаёт слепой запрос, отправляет его издателю, снимает ослепление с ответа и проверяет результат.
Успешный запуск покажет:
Draft 16 Valid: true
PrivateToken token=...Draft 16 Valid: true означает, что издатель вернул настоящий токен, который проходит проверку по его открытому ключу. PrivateToken token=... это готовый токен, который клиент отправляет на Origin в Authorization заголовок.
См. локальный пример
Вы можете запустить процесс выдачи и предъявления токенов на своей машине за несколько минут без какой-либо настройки Cloudflare. Он использует настоящую криптографию Blind RSA, но все происходит в рамках одного процесса: ключ издателя генерируется локально, а аттестация заменяется заглушкой. Это быстрый способ увидеть протокол в действии.
Предварительные требования
Запустите пример
@cloudflare/privacypass-ts ↗ библиотека поставляется с готовыми к запуску примерами. Клонируйте репозиторий и установите зависимости:
git clone https://github.com/cloudflare/privacypass-ts.git
cd privacypass-ts
npm ciПример с публичной проверяемостью (pub_verif.example.ts ↗) экспортирует только свои функции, поэтому добавьте небольшой раннер, который вызывает именно эту функцию. Создайте examples/run-pub-verif.ts:
import { publicVerifiableTokensPSS } from "./pub_verif.example.js";
await publicVerifiableTokensPSS();Скомпилируйте примеры и запустите ваш исполняемый файл:
npx tsc -b examples
node ./lib/examples/run-pub-verif.jsОн выводит:
Public-Verifiable tokens
Suite: ...
Valid token: trueValid token: true означает, что токен был выдан, с него сняли ослепление и его успешно проверили.
Как пример соотносится с четырьмя ролями
В этом примере в рамках одного процесса создаются Издатель, Клиент и Источник (пара ключей Издателя генерируется заранее в setup() с Issuer.generateKey), а затем проводит их через протокол.
Пример следует процессу, показанному на диаграмме, и задействует только Источник, Клиент и Издатель. Аттестатор эмулируется заглушкой и не показан на диаграмме, поскольку реальная аттестация здесь не выполняется.
┌────────┐ ┌────────┐ ┌────────┐
│ Origin │ │ Client │ │ Issuer │
└────────┘ └────────┘ └────────┘
│ │ │
│<────── Request ───────│ │
│─── TokenChallenge ───>│ │
│ │ │
│ │───── TokenRequest ─────>│
│ │<──── TokenResponse ─────│
│ │ │
│<─── Request+Token ────│ │Каждый вызов в примере соответствует одному шагу этого процесса:
const redemptionContext = crypto.getRandomValues(new Uint8Array(32));
const tokChl = origin.createTokenChallenge(issuer.name, redemptionContext); // Origin issues a token challenge
const tokReq = await client.createTokenRequest(tokChl, pkIssuer); // Client sends blinded request
const tokRes = await issuer.issue(tokReq); // Issuer signs the blinded request
const token = await client.finalize(tokRes); // Client finalizes token and resends request with it
const isValid = await origin.verify(token, issuer.publicKey); // Origin verifies against the issuer keyСледующие шаги
- Тестирование развертывания в продакшене: когда вы будете готовы перейти от этих демонстраций к реальному использованию, это подробное руководство по проверке настоящего развёртывания, управляемого Cloudflare, в котором совместно работают ваши Аттестатор, Издатель и Origin.
- Протокол Privacy Pass: четыре роли, процесс выдачи и предъявления токена, а также слепые подписи, из которых получаются токены.
- Модели развертывания: кто выполняет каждую роль и какие есть модели развёртывания.