Privacy Pass の動作を自分で確認する方法は、次の 2 つです。
- デモツールで実際のトークンを取得する: ブラウザーツールと Cloudflare 提供のデモ Issuer を使い、Issuer が署名した実際のトークンを取得する、いちばん速い方法です。
- ローカルの例を見る: 実際の Blind RSA 暗号を使い、発行と利用の流れ一式を、自分のマシンで数分で実行します。
プロトコル自体を理解するには、Privacy Pass Protocol を参照してください。Cloudflare が運用する本番デプロイを検証する準備ができたら、Production Deployment Testing を参照し、必要なインフラの構築を始めるために お問い合わせ ↗ ください。
Issuer が署名したトークンの見た目をいちばん速く確認するには、Cloudflare の Privacy Pass Demo Tool ↗ を使います。Issuer を指定すると、ブラウザーで発行フロー一式を実行し、検証済みトークンを返します。
- ここに掲載する デモ Issuer のディレクトリ URL: https://demo-pat.issuer.cloudflare.com/.well-known/private-token-issuer-directory。 ↗
- Privacy Pass デモツール ↗ を開きます。
- Fetch from issuer URL にデモ Issuer のディレクトリ URL を貼り付けて送信します。ツールは Issuer ディレクトリ(トークンタイプ
2(Blind RSA)のtoken-keys一覧)を表示し、以降の手順のフィールドを自動で埋めます。 - Create challenge で、事前入力されたフォームを送信します。ツールは Issuer のキーから
WWW-Authenticateのトークンチャレンジを組み立てます。 - Send Token Request で、事前入力されたフォームを送信します。ツールはリクエストをブラインドし、Issuer へ送り、レスポンスのブラインドを解除して結果を検証します。
成功すると、次のように表示されます。
Draft 16 Valid: true
PrivateToken token=...Draft 16 Valid: true は、Issuer が公開鍵に対して検証できる実際のトークンを返したことを意味します。PrivateToken token=... の値は、クライアントが Authorization ヘッダーで Origin へ送る、確定したトークンです。
Cloudflare のセットアップなしで、発行と利用の流れを自分のマシンで数分で実行できます。実際の Blind RSA 暗号を使いますが、すべては 1 つのプロセス内で完結します。Issuer キーはローカルで生成し、アテステーションはスタブです。プロトコルの動作を素早く確認できます。
@cloudflare/privacypass-ts ↗ ライブラリには、実行できる例が付属しています。リポジトリをクローンし、依存関係をインストールします。
git clone https://github.com/cloudflare/privacypass-ts.git
cd privacypass-ts
npm ci公開検証の例(pub_verif.example.ts ↗)は関数をエクスポートするだけなので、その 1 つだけを呼ぶ小さなランナーを追加します。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 は、トークンの発行、ブラインド解除、検証が成功したことを意味します。
この例は、1 つのプロセス内で Issuer、Client、Origin を作成します(Issuer のキーペアは setup() 内で Issuer.generateKey により事前生成します)。その後、プロトコルに沿って実行します。
例は図の流れに従い、Origin、Client、Issuer だけを動かします。実際のアテステーションは実行しないため、Attester はスタブで、図からも外しています。
┌────────┐ ┌────────┐ ┌────────┐
│ Origin │ │ Client │ │ Issuer │
└────────┘ └────────┘ └────────┘
│ │ │
│<────── Request ───────│ │
│─── TokenChallenge ───>│ │
│ │ │
│ │───── TokenRequest ─────>│
│ │<──── TokenResponse ─────│
│ │ │
│<─── Request+Token ────│ │例の各呼び出しは、その流れの 1 ステップに対応します。
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- Production Deployment Testing — これらのセルフサーブデモを超える準備ができたら、自分の Attester、Issuer、Origin を連携させた、Cloudflare 運用の本番デプロイを検証する詳細ガイドです。
- Privacy Pass Protocol — 4 つの役割、発行と利用の流れ、トークンを生成するブラインド署名です。
- Deployment Models — 各役割の運用者と、デプロイモデルです。