Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

はじめに

最終更新 Markdown で表示Agent セットアップ

Privacy Pass の動作を自分で確認する方法は、次の 2 つです。

  • デモツールで実際のトークンを取得する: ブラウザーツールと Cloudflare 提供のデモ Issuer を使い、Issuer が署名した実際のトークンを取得する、いちばん速い方法です。
  • ローカルの例を見る: 実際の Blind RSA 暗号を使い、発行と利用の流れ一式を、自分のマシンで数分で実行します。

プロトコル自体を理解するには、Privacy Pass Protocol を参照してください。Cloudflare が運用する本番デプロイを検証する準備ができたら、Production Deployment Testing を参照し、必要なインフラの構築を始めるために お問い合わせ ください。


デモツールで実際のトークンを取得する

Issuer が署名したトークンの見た目をいちばん速く確認するには、Cloudflare の Privacy Pass Demo Tool を使います。Issuer を指定すると、ブラウザーで発行フロー一式を実行し、検証済みトークンを返します。

前提条件

トークンの取得方法

  1. Privacy Pass デモツール を開きます。
  2. Fetch from issuer URL にデモ Issuer のディレクトリ URL を貼り付けて送信します。ツールは Issuer ディレクトリ(トークンタイプ 2(Blind RSA)の token-keys 一覧)を表示し、以降の手順のフィールドを自動で埋めます。
  3. Create challenge で、事前入力されたフォームを送信します。ツールは Issuer のキーから WWW-Authenticate のトークンチャレンジを組み立てます。
  4. 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: true

Valid token: true は、トークンの発行、ブラインド解除、検証が成功したことを意味します。

例が 4 つの役割にどう対応するか

この例は、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 — 各役割の運用者と、デプロイモデルです。

役に立ちましたか?