コンテンツにスキップ

Evidence Bundle ルート構造(v0.1)

本ページは Evidence Bundle の規範的ルート構成とマニフェストを定義する。バリデータは、これらの要件を満たさないバンドルをスキーマ検証の前に拒否しなければならない。

v0.1 規範 MUST(まとめ)

  • バンドルルートに manifest.json が存在することは必須。
  • object_indexpayload_index:各エントリに sha256(64 文字小 hex)が必須。path は相対で ../ 禁止・ルート外参照禁止。
  • signing.signatures は空でない配列であること(空配列は無効)。
  • 各署名エントリは path(signatures/ 配下、パストラバーサル禁止)、targets(配列・最低1要素)を持ち、バンドル内の少なくとも1件の署名が targetsmanifest.json を含むこと(マニフェスト署名は必須)。
  • hash_chain:v0.1 では algorithmheadpath(hashes/ 配下)、covers(少なくとも manifest.jsonobjects/index.json)を必須とする。

バリデータはこれらを満たさないバンドルを拒否すること(MUST)。JSON Schema および参照バリデータは同一ルールを実装する。

ルート必須構成(MUST)

バンドルルートに以下が存在することは MUST とする。

項目 種別 目的
manifest.json ファイル バンドルマニフェスト(後述)。正規の記述子。
objects/ ディレクトリ 列挙オブジェクト(メタデータ・索引等)。manifest.json の object_index に列挙。
payloads/ ディレクトリ ペイロード(ルート EV JSON、Evidence Pack 等)。payload_index に列挙。
signatures/ ディレクトリ デジタル署名。v0.1 ではマニフェストを参照する署名ファイルが少なくとも1つ存在することは MUST(存在と対象参照;暗号検証は将来拡張)。
hashes/ ディレクトリ ハッシュチェーンまたは整合性記録(manifest の hash_chain に従う)。

提出時、上記のいずれかが欠けているバンドルは MUST NOT とする。バリデータはルート構成が不完全な場合、明確なメッセージで失敗することは MUST とする。

Integrity(規範)と Custody(実装側)

  • Integrity は v0.1 で規範とする:マニフェスト、索引ファイルの sha256、マニフェストに対する署名の存在を必須とする。バリデータは以下をチェックすることは MUST とする:必須ディレクトリ・ファイルの存在、manifest.json の存在と有効性、object_index / payload_index に列挙された全ファイルの存在と sha256 一致、signatures/ にマニフェストを対象とする署名が少なくとも1つ存在すること(v0.1:存在と参照のみ;v0.1.1:検証用メタデータは RECOMMENDED;v0.2 予定:暗号学的検証をスコープに含める)。
  • Custody(保管・アクセス制御・保持)は実装側で定義する。標準は保管方法を規定しない。提出時点で Integrity 要件を満たすことを要求する。

manifest.json(MUST 項目)

マニフェストには少なくとも以下を含めること(MUST)。

フィールド 説明
bundle_id string (UUID) バンドル一意識別子。
bundle_version string (SemVer) バンドルバージョン。
created_at string (date-time) 作成日時。
scope_ref string スコープ参照(例 SC-001)。パターン SC-*。
object_index array オブジェクト一覧:id, type, path, sha256。path は相対パスで ../ および先頭 / 禁止。Evidence Bundle ルート外を指してはならず、バリデータはルート外へのパスを拒否すること(MUST)。
payload_index array ペイロード一覧:logical_id, path, sha256, mime, size。object_index と同様の path 規則(相対、../ 禁止、先頭 / 禁止、バンドル内)。
hash_chain object 規範(v0.1): algorithm(sha256 | merkle)、head(64 文字小 hex)、path(hashes/ 配下の相対パス;../ 禁止・先頭 / 禁止)、covers(配列・最低1要素)を必須とする。v0.1 では coversmanifest.jsonobjects/index.json を含めること(MUST)。
signing object 規範(v0.1): signatures(配列・最低1要素)を必須とする。各要素は MUST:signature_id(例 SIG-... または UUID)、path(signatures/ 配下の相対パス;../ 禁止・先頭 / 禁止)、targets(配列・最低1要素;v0.1 では少なくとも1つの署名の targets に manifest.json を含めること)、algorithm(ed25519 | rsa-pss | ecdsa | unspecified のいずれか)。created_at(date-time)は MAY。注記: 署名の暗号検証は v0.1 の範囲外とする。参照(どのファイルを指し、何を対象とするか)は v0.1 で必須。

v0.1.1 オプション署名メタデータ(第三者による再実施のため RECOMMENDED):

フィールド 説明
signer_identity string 署名者識別(例 PGP フィンガープリント、did:key)。
signed_at string (date-time) 署名適用日時(ISO 8601)。
verification_command string 監査人が再検証するための例示 CLI コマンド。
canonicalization string 署名対象ペイロードの正規化方式:rfc8785_jsoncborunspecified

Integrity と検証:v0.1 — 参照と存在のみ。v0.1.1 — 検証用メタデータは RECOMMENDED。v0.2(予定)— 暗号学的検証をスコープに含める。

  • sha256 は 64 文字の小 hex であること(MUST)。
  • path は相対パスとし、../ および先頭 / を含んではならない(MUST)。パスは Evidence Bundle ルート内に留まること(MUST)。

JSON Schema: schemas/jsonschema/evidence_bundle_manifest.schema.json を参照。

将来拡張(情報提供)

  • Control/Requirement リンク: 将来バージョンで、Evidence Bundle 要素を Control または Requirement 識別子へリンクする標準方式を追加する可能性がある(例:NIST OSCAL 等へのエクスポート用)。v0.1 および v0.1.1 では不要。

関連