Skip to content

[concept] fingerprint の収集範囲が「匿名」の主張に対して過剰でないか検討する #242

Description

@shinyaoguri

2026-08-02 のレビューで挙がった設計上の緊張。判断が要る。

論点

TypedCode は「匿名・個人同定はしない」と明言している (system-spec §1 スコープ外、§8.3、試験モードは「ローカル完結・サーバ非依存・匿名」)。

その一方で fingerprint は canvas / WebGL / フォント一覧 という、ブラウザ環境で最も同定力の高い信号を集めている (packages/shared/src/Fingerprint.ts)。

ADR-0024 で Tier F 限定 (content-free な Tier A には含めない) としたのは正しい手当てだが、「収集はするが配らない」であって「収集しない」ではない。

fingerprint の実際の用途

  1. チェーン root の構成要素 (SHA256(fingerprintHash + nonce ...))
  2. 別 proof からのイベント流用の検出
  3. session start token の端末束縛 (token.fingerprintHash === proof.fingerprint.hash)

これらの目的に対して、canvas / WebGL / フォントまでの同定力が必要かは自明でない。1 と 2 は nonce + serverNonce で相当部分が達成でき、3 は「同一端末であること」が言えれば足りる。

やること (案)

  • 各 fingerprint コンポーネントについて「どの目的に効いているか」を洗い出す
  • 目的に対して過剰なコンポーネント (canvas / WebGL / フォント) を落とせるか検討する。落とせるなら、匿名性の主張がより強固になる
  • 落とせない場合は「なぜ必要か」を ADR に残す (現状、収集範囲の根拠を書いた ADR が無い)

試験モードは大学の実試験で使われるため、「何を収集しているか」を学生に説明できる状態にしておく価値も高い。

Metadata

Metadata

Assignees

No one assigned

    Labels

    code-review2026-07 多角レビュー由来pkg:sharedpackages/sharedquestionFurther information is requestedseverity:medium中程度の問題

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions