証明器と検証機の配置

コネクタ層 / 構成リファレンス

証明器と検証機の配置

4つの保証をすべて取るなら、「1台の証明器 + 1台の検証機」には畳めません。4つは時間軸も信頼領域も違う場所に住んでいるからです。ただしハード分離が必須なのは署名機の1台だけで、しかもそれは小さくて構いません。

対象:外部入力からの隔離/改ざん耐性/仕様適合/再現性 2026-08-24 改訂

rev.2 — 脅威モデル / リプレイ耐性 / 鍵運用 / 成果物署名 を追記

結論

専用マシンを立てる価値があるのは署名機。残り3つは分離が要るだけで、専用ハードは要らない。

実行体と同じ信頼領域に署名鍵があると改ざん耐性はゼロになります。逆に、形式検証はビルド時、再現検証は監査時の作業なので、常時稼働のマシンを与える理由がありません。

01

脅威モデル

以降の設計判断は、この前提のもとで初めて成立します。前提が変われば、要求水準も畳み方も変わります。まずここに合意してから読み進めてください。

想定する攻撃者
実行体を完全に奪取できる攻撃者。外部 API の応答やユーザー入力を細工でき、実行体上のプロセス・ファイル・メモリに任意のアクセス権を持つ。ネットワーク経路の盗聴・書換は前提しません(TLS が健全な範囲で成立)。
達成したい性質
過去に確定した実行結果と監査ログを、事後に 改竄・偽造・削除できないこと。改竄を防ぐのではなく、改竄を検知不能にはできないことを最低ラインとします。合わせて、隔離/仕様適合/再現性の3つを、それぞれ独立に検証可能な状態に保つこと。
対象外
HSM/TPM 自体の物理侵害、鍵保管者の共謀、サプライチェーン全域の敵対的改変(それらは別途のサプライチェーン施策の領分)。国家アクター相当の攻撃能力も想定しません。ここを守る必要がある構成では、以降の推奨は下限として読み、追加の層を積む前提になります。
02

4つの保証は同じ場所に住んでいない

台数を決める前に、それぞれがいつ効くのかを揃えて見ます。ここを混ぜると、マシンだけ増えて保証は増えないという典型的な失敗になります。

守りたいもの 効く時間軸 必要な分離 専用ハード
外部入力からの隔離 実行時(呼び出し毎) ネットワーク境界+使い捨てサンドボックス 不要/専用セグメントは推奨
実行結果の改ざん耐性 実行の出口(一瞬) 署名鍵を実行体の届かない信頼領域へ 必要/ただし小型で足りる
仕様適合の保証 ビルド時(コミット毎) オフラインの CI ノード 不要/バーストCPUで足りる
再現性の担保 監査時(事後・定期) 実行体が改変できないイメージ源 不要/使い捨てで足りる
03

トポロジー

信頼境界 信頼領域 非信頼領域 ビルド時証明器 形式検証・契約テスト 署名機 署名鍵はここだけ 受信:hash + seq + ts 実行体へは戻さない 再現検証機 再実行して突合 外部世界 Web / 外部API 実行体 呼び出し毎に使い捨て 鍵を持たない 信頼しない入力 ピン留めイメージ (署名付・digest 固定) hash + seq + ts(一方向) 署名済み追記ログ 同一イメージで再実行 ビルド時 実行時 監査時 t
4つの役割は、時間軸(横)と信頼境界(上下)の2軸で位置が決まります。境界を跨ぐ経路は2本だけ —— 実行体から署名機へ出る一方向の hash + seq + ts と、ビルド時証明器から実行体へ渡す署名付きピン留めイメージ。署名機は実行体に戻さず、署名済み値は追記専用ログを介して再現検証機へ流れます。seq と ts を署名対象に含めることで、過去ハッシュの再署名(リプレイ)を排除します。
04

各ロールのマシン仕様

スペックはワークロードで動きます。以下は「どの桁を見ておけばいいか」の目安として読んでください。

署名機 ハード分離が必須
受ける
実行出口の hash と、単調カウンタ seq、時刻 ts。この3つを結合して署名対象とし、seq の逆行と ts の乖離は署名機側で拒否します。過去ハッシュの再送を防ぐ最低ラインです
出す
署名済みタプル (hash, seq, ts, sig) を追記専用ログへ publish のみ。実行体への戻り経路を持ちません。戻り経路の設計は 3 択:(a) 実行体は「受け付けた」ACK のみを取得し署名値は持たない、(b) 追記ログを実行体が読取専用で pull、(c) 入出力それぞれに単方向チャネル。監査要件が最も強いなら (a)、実装が最も軽いなら (b)
ネットワーク
インバウンドは hash + seq + ts の受信口のみ。出力は追記ログへの一方向書き込み。管理経路は帯域外(物理コンソール/別ネットワーク)に分離
鍵運用
ローテーション周期は 90 日を上限の目安に。旧鍵は監査目的で無効化フラグ付きで保持し、破棄しないこと。鍵漏洩時に「以前のログの検証が不能」にならない設計が要ります
自己検証
TPM 2.0 のリモート attestation か HSM の外部監査ログで、署名機自身の健全性を 信頼領域の外 から確認できるようにする。ここが無いと、ルートの健全性が自己申告になります
目安
2 vCPU / 2GB で足ります。TPM 2.0 内蔵の小型機、または YubiHSM 2・NitroKey HSM 等をぶら下げた Raspberry Pi クラスが現実的な下限です。データダイオード相当の物理単方向装置は規制環境向けの選択肢で、通常のコネクタ用途には過剰
落とし穴
「別プロセスにした」で止めると、実行体を取った相手が鍵も取れます。分けるべきは権限領域であってプロセス番号ではありません
実行体 閉じ込める対象
役割
コネクタ本体の実行。外部 API・Web に触れる唯一の場所
ネットワーク
egress 許可リスト。シークレットは短命・スコープ付きトークンのみを渡す。署名機への hash 送信口は authenticated(実行体テナントを識別)
検証の同居
権威的な検証(監査ログに残す確定判定)は同居させない。ただし予備的な検証 —— リクエスト送出前のスキーマチェック、入力サニタイズ、明らかな不正入力の早期棄却 —— は実行体内に置いてよい。むしろ深層防御としては推奨。区別の指標は「その判定結果が単独で監査根拠になるか」です
目安
呼び出し毎に使い捨てる VM/コンテナ。スペックはワークロード依存で、専用ハードは要りません
落とし穴
「使い捨て」がプロセス再起動止まりだと、イメージ層に入った汚染が次の呼び出しに残ります。ベースイメージから毎回起動する運用が最低ライン
ビルド時証明器 CI ノード・常時稼働不要
走らせる
2 層に分けて考えます。重層:SMT ソルバ・定理証明・モデル検査。プロトコル解釈・状態遷移・権限判定のコアに限定。
軽層:プロパティテスト、エンコーディング往復のファジング、契約テスト。API アダプタ本体を含むほぼ全域に効きます。「形式検証は割に合わない」は重層に限った話で、軽層は投資対効果が高い
成果物
ビルド出力のイメージには 成果物署名鍵 で署名し、実行体はデジェスト固定でこれを引く。この鍵は運用時の署名機と分けても同居させてもよいが、鍵の役割は必ず区別すること
時間軸
コミット毎。実行時マシンではありません
目安
8〜16 vCPU / 32GB 前後のバースト。SMT ソルバはメモリと並列度を食うので、CPU 数よりメモリで詰まることが多いです
再現検証機 監査時・使い捨て
手順
記録済み入力 → 署名付きピン留めイメージへ再投入 → 署名済み追記ログと突合。seq のギャップと ts の単調性もここで検証します
目安
実行体と同等スペックのクリーンインスタンス。専用ハードは不要です
相性
D8 系のバッチ突合型統計判定はここに置くのが自然。ただし連続ドリフト検知型は実行時側のオブザーバビリティ経路が適所で、混同しないこと
条件
イメージの取得元が実行体から書き換え不能であること。ダイジェスト固定であり、タグを動かせるだけでも再現性は失われます
05

ZK を採るかどうかは一問で決まる

入力を秘匿したまま、ログを見られない第三者に納得させる必要が実在するか?

はい ZK 証明

専用機が要ります。回路規模しだいで高メモリ、場合により GPU。証明生成が実行のクリティカルパスに乗らないよう、非同期化も併せて設計してください。

いいえ ハッシュチェーン+署名

同じ改ざん耐性が手に入ります。証明生成はミリ秒オーダーで、専用機は過剰投資です。コストの桁が数桁変わるので、まずこちらを疑ってください。

06

導入順序

4つ同時に立ち上げると高くつきます。効き目の順に積むなら、こうなります。

  1. 署名機を切り出す 最も安く、最も効きます。鍵を実行体の外に出すだけで改ざん耐性が立ちます。同時に seq と ts を署名対象に組み込み、鍵ローテーション運用も初日から回すこと。後付けは面倒です。
  2. 実行体を隔離する これが無いと他の3つの保証が全部無意味になる前提条件です。1 より効果が大きいわけではなく、1 の成立条件として要ります。
  3. 再現検証を回す 実バグの検出率が一番高い層です。監査目的よりデバッグ目的で元が取れます。この段階で成果物署名(ダイジェスト固定)が要件になります。
  4. 形式検証を、対象を絞って入れる 最後で構いません。軽層(プロパティテスト・ファジング)はここまでに常時回っている想定で、重層(SMT・定理証明)をコアに限定して足す段階です。範囲を絞らずに入れると、費用だけが先に立ちます。
07

崩してはいけない不変条件

この7つは装飾ではなく定義です。1つでも崩れると、対応する保証は「弱くなる」のではなく形式的に消えます。マシンを何台並べても復活しません。

08

現状構成への当て方

verify_audit_chain/lens_verify/d8_verdict_*/constitutional_check は、すでに検証側の役割を持っています。問題は台数ではなく、これらがコネクタ実行と同じホスト上にあるなら分離が名目に留まる、という点です。機材を足す前に、次の5つを確認してください。