Skip to content

[Security] 版メタデータの trust anchor: 観測者が偽 parents で読み単調性を bypass できる #59

Description

@somasekimoto

背景

PR #56 のディープレビュー指摘 (R2-blocker1)。read 経路の完全性検証 (docs/design.md §10) のうち、CID 検証(payload真正性) + 単調性チェックでは塞がらない残りの穴。

問題

CID 照合が保証するのは「バイト列が要求した版 CID に一致すること」であり、「その版が正規の書き込みとして作られたこと」ではない。

relay 上で暗号文を観測できる攻撃者は:

  1. 観測済みの本物の暗号文を新しい crsl-lib Node に包み直す
  2. parents に任意の CID (例: クライアントの last_seen) を詰める
  3. その Node の CID を「最新版」として提示する

→ payload は本物なので CEK 復号も plain CID 照合も通る。単調性チェックは parents を信頼して祖先を辿るため、last_seen を parents に含めた偽版で bypass される。

本修正

版メタデータ(parents / version)の真正性を保証する trust anchor が必要:

  • 案A: Node への owner 署名 (書き込み時に owner が Node 全体へ署名し、クライアントが検証)
  • 案B: checkpoint (定期的に owner が署名した版チェーンのスナップショット)

いずれも crsl-lib の Node フォーマットに及ぶプロトコル変更のため、#56 のスコープ外として明文化した上でここで追跡する (design.md §10「既知の限界」1 に記載済み)。

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions