---
url: /pdf-agent-stack/ja/skills/pdf-trust.md
description: 受け取った PDF の信頼性監査を行う Skill — evaluate_policy の 4 値判定を軸に Trust Report を返す Skill
---

# pdf-trust — 受入監査

受け取った PDF（契約書・請求書・診療文書・行政文書など）が「本物か・信用してよいか・改ざんされていないか」を監査し、推奨判定付きの **Trust Report** を返す Skill です。

## 原則

1. 内容の真偽は判定しません — 判定するのは真正性（原本性・完全性）のみです
2. 検証結果は技術的事実として返し、最終判断は利用者に委ねます
3. 判定の根拠（どのツールの何の結果か）を必ず明示します
4. **判定はコードが返し、LLM は説明文だけを書く** — 4 値判定は pdf-verify の `evaluate_policy` が返します。Skill の仕事は firedRules の解説・推奨アクション・法令根拠の引用であり、判定の上書きではありません

## 4 値判定

| 判定 | 意味 |
|---|---|
| `trust_and_use` | そのまま利用可 |
| `use_with_caution` | 留意事項付きで利用可 |
| `human_review_required` | 人間の確認が必要 |
| `reject` | 受け入れ不可 |

## 前提 MCP

| MCP | 必須/任意 | 役割 |
|---|---|---|
| pdf-verify（v0.7.0+、**v0.29.0+ 推奨**） | **必須** | evaluate_policy・署名検証・改ざん検知・PAdES・PDF/A（**v0.11.0+ は PDF/A-4 も**。`pdfa-4` / `pdfa-4e` / `pdfa-4f`。**`pdfa-4b` は存在しない**） |
| pdf-reader | 任意 | 署名フィールド構造・タグ・メタデータの観測 |
| pdf-spec | 任意 | 逸脱時の ISO 32000 根拠引用 |
| houki-egov / houki-nta / tax-law / labor-law | 任意 | プロファイルが指定する法令根拠 |

v0.7.0 が下限なのは、そこで初めて `evaluate_policy` が入るからです。出力の形は v0.21.0 以降が前提で、この版で `verify_signatures` / `detect_pades_level` の JSON 最上位が配列から辞書（`{ scope, signatures: [...] }` / `{ scope, levels: [...] }`）に変わりました。一覧だけを読んでいると、その一覧が不完全であることに気づけません。**Skill が推奨するのは v0.29.0+** です。v0.27.0 で、証明書の有効期間と失効を、検証できたタイムスタンプの時刻で判定するようになりました（ISO 32000-2 §12.8.3.4.5・§12.8.3.4.6）。失効した署名者証明書は、タイムスタンプが失効より前を示すときだけ `revoked_after_validation_time`（`use_with_caution`）になり、それ以外は `indeterminate` になります（それ以前の版は `invalid` を返していました）。v0.28.0 から、`revocation_freshness`（既定 24 時間）より古い失効情報を `good` の根拠にしません。v0.29.0 から JSON を 25,000 文字で切らなくなりました。それ以前の版は `isError: false` のまま `JSON.parse` できない本文を返すことがありました。代わりに、一覧が件数上限を超えると `xxxTruncated: { returned, total }` が付きます。pdf-trust は v0.8.1 から 0.27.0 / 0.28.0 の変更を、v0.8.2 から 0.29.0 の項目を読みます。

## 監査の流れ（Phase）

| Phase | やること |
|---|---|
| 0 | 目的の確認とプロファイルの選定 |
| 1 | `evaluate_policy` で全ファイルを一括判定（4 値） |
| 2 | 該当したルール（`firedRules`）の解釈・深掘り |
| 2.5 | 署名後の変更の特定 — 「何バイト増えた」を「何が・どのページのどこに書かれたか」まで下ろす |
| 3 | プロファイル別チェック（PDF/A・PDF/UA・長期保存など） |
| 4 | 法令根拠の取得（プロファイル指定時） |
| 5 | Trust Report の生成 |

本文やユースケースで「Phase 2.5」のように参照するのは、この表の番号です。

## プロファイル

| プロファイル | 想定文書 | 特徴 |
|---|---|---|
| `contract` | 契約書・NDA・発注書 | 署名必須。未署名は human_review_required |
| `financial` | 請求書・決算書・申告書 | 長期保存チェック込み |
| `legal` | 訴訟資料・法務文書 | 署名後変更の全履歴を要求 |
| `medical` | 診療情報提供書・検査報告書 | 最も保守的。caution を review に格上げ |
| `government` | 行政文書・公共告知 | 長期保存チェック込み。未署名を許容 |
| `general` | 上記以外 | 追加チェックなし |

## 実測例 — 4 値判定（2026-08-11・すべて実在検体）

| 検体 | プロファイル | 判定 | 該当ルール |
|---|---|---|---|
| 自作 CA 署名 + **CRL を DSS に同梱** + trust_anchors 指定 | general | `trust_and_use` | なし（valid + trusted + revocation good） |
| インターネット官報 2026-08-10 号本紙（内閣府署名 + AMANO タイムスタンプ） | government | `use_with_caution` | TRUST-NOT-EVALUATED / REVOCATION-UNKNOWN |
| 同上の自作検体で **CRL なし** | general | `use_with_caution` | REVOCATION-UNKNOWN |
| 未署名の請求書 PDF | contract | `human_review_required` | UNSIGNED-REQUIRED（署名の画像は電子署名ではない） |
| 署名対象範囲を 1 バイト改変した検体 | general | `reject` | POL-REJECT-INVALID（digest 不一致） |

1 行目と 3 行目の差分は **CRL の有無だけ**です（trust_anchors はどちらも指定済み）。アンカーを渡すだけでは最良判定に届かず、失効確認が
good になって初めて `trust_and_use` に到達します。CRL が署名者をカバーしたことで PAdES の構造観測も
B-T → **B-LTA** に上がります（この検体には文書タイムスタンプが最初から入っているため、CRL で B-LT の
条件が満たされると同時に B-LTA の構造が揃います）— 4 値判定と LTV の関係が 1 対の検体で見えます。

## Trust Report 抜粋（官報の個票より）

evaluate_policy の判定に加え、Phase 2.5（verify_integrity + locate_objects）が
「署名後の +9938 バイト」の正体を特定します:

| オブジェクト | 変更 | 役割 | ページ / 矩形 |
|---|---|---|---|
| 64 | added | form field widget | p.1 / 0,0,0,0（不可視） |
| 65 | added | **/DocTimeStamp 署名辞書** | ページ非参照 |
| 54 | modified | AcroForm 辞書 | — |

→ 署名後の変更は **AMANO タイムスタンプの付与そのもの**です（増分更新は ISO 32000-2 §7.5.6 で合法）。
「N バイト足された」で止めず「何が足されたか」まで降ろすのが Phase 2.5 の仕事です。
このほか官報個票では、PDF/UA を veraPDF が NOT COMPLIANT と判定（タグなし実コンテンツ 236 件ほか
10 規則）、PDF/A 参考測定は veraPDF が暗号化文書に結果を返さず「**未実施**」と記録しました —
測れなかった項目は passed ではなく未実施と明記します。

## インストール

```sh
/plugin marketplace add shuji-bonji/claude-plugins
/plugin install pdf-verify-mcp@shuji-bonji   # 必須基盤
/plugin install pdf-trust@shuji-bonji
# 任意: pdf-reader-mcp（位置特定）・pdf-spec-mcp（条文引用）・houki 系（法令根拠）
```

リポジトリ: [shuji-bonji/pdf-trust-skill](https://github.com/shuji-bonji/pdf-trust-skill)（SKILL.md 本体・プロファイル定義）

## ツールが足りないときの動き（縮退動作）

* pdf-verify 未接続 → 監査は成立しません。接続を案内して停止します
* 旧 verify（v0.7.0 未満・evaluate_policy なし）→ 手動判定表にフォールバックし、レポートに「手動判定」と明記します
* 任意 MCP の欠落 → 該当項目を「未実施（ツール未接続）」と明記します。項目を書かずに省くと「チェック済みで問題なし」と誤読されます
* 測れなかった検査（例: 暗号化 PDF の PDF/A を veraPDF が採点できない）→ 未実施として記録します。判定不能は無罪ではありません
