第2章:監査権(Audit)――後半
- 山崎行政書士事務所
- 2月8日
- 読了時間: 9分

《監査条項(ドラフト)》第12条(監査・検証)12.5 受領者は、監査を理由として供給者の機微情報(Trade Secrets)への直接アクセスを要求してはならない。12.6 監査は、供給者指定の鑑定人(Independent Expert)を介して行う。12.7 監査の結果は、合意済み要約版(Agreed Summary)としてのみ外部提出できる。(以下略)
監査室の空気は、最初から「検証」ではなく「交渉」だった。
EUの監査官が、端末の画面を指で叩く。
「いま出た remote_attestation_request。これ、こちらが投げたチャレンジです。応答してください」
天城は即座に首を振った。
「外部からの直投げは受けない。契約上も、監査は鑑定人経由だ」
「監査権を阻害する行為では?」
橘里沙が間に入った。声は丁寧だが、一切ゆるぎがない。
「阻害ではなく、手続の順守です。12.6に基づき、鑑定人が投げます。監査官が直接プロダクション相当の系へ触るのは、供給者の営業秘密侵害リスクが高い」
米側代理人が微笑んだ。
「営業秘密、ね。では“ブラックボックス証明”は可能ですか?用途制限が技術的に担保され、かつ7.4が恣意的に発動されないことを、我々が検証できる形で」
“検証できる形で”。その言葉は、いつも厄介な要求を連れてくる。
天城はユキ=V9に目配せした。ユキは監査用の隔離ネットワーク――物理的に空いた「監査サンドボックス」へ、KAMI-9テストボードを切り替える。
「鑑定人がチャレンジを投げます。応答は、監査用にマスクされたattestation reportだけ。鍵素材、ファームウェア差分、デバッグポート情報は出しません」
鑑定人が頷き、端末にコマンドを入力した。
challenge_nonce = random(32)
request_attestation(target=KAMI9_SB, nonce=challenge_nonce, scope="HCC_COMPLIANCE_ONLY")
返ってきたレポートは短い。短すぎるほどに。
[HCC_REPORT]
secure_boot: OK
firmware_hash: 4b7a...e1
policy_hash: 9f2e...c7
contract_commit: 61d0...9a
human_in_loop: REQUIRED
decision_margin_min: 0.0400
safety_control: ARMED (condition=ReasonableSuspicion)
report_sig: 73aa... (vendor_attest_key)
EU監査官が言った。
「“ReasonableSuspicion”。合理的疑義。条件が曖昧すぎる」
「曖昧さは契約の言葉だ。だからこそ、技術側の条件も“契約”に束縛している」天城は静かに返す。「contract_commit を見てください。これは契約書の主要条項――用途制限、監査手続、発動条件の定義をハッシュ化し、チップのポリシーに焼き込んだコミットです。契約が変われば、contract_commit が変わる。監査でそこが一致している限り、恣意的には変えられない」
米側代理人が目を細める。
「つまり、契約は“ファームウェア”ということか」
橘が即答する。
「正確には、契約がポリシーの生成物になっています。これが“Human Choice Covenant”の基本設計です」
そこで、ユキ=V9が画面の端に出た警告を指差した。
[WARN] signature_similarity_detected: key_fingerprint≈(unknown)
監査官たちの顔色が一斉に変わる。“unknown”という言葉は、監査における最悪の燃料だ。
鑑定人が天城に尋ねた。
「この警告は、いつから?」
「さっきからだ。タイミングが良すぎる」
橘が、監査団に視線を向ける。
「監査の席で“未知の鍵”が出た。これは監査の対象ではなく、インシデントです。当社は直ちに証拠保全を開始します」
「待て」米側代理人が言う。「保全はいい。だが監査が止まるなら、契約違反だ」
橘は一ミリも引かない。
「契約違反の前に、証拠隠滅の疑いを避けなければならない。それに、保全は“止める”ではなく“固定する”です。監査は鑑定人経由で継続できます」
天城は理解した。法務は、技術のブレーキではない。技術が“証拠”として生き残るためのシャーシだ。
ユキが小さく言う。
「誠。いまこの瞬間、ログが揮発しています。ローテーションまで、残り6分」
そのとき、会議室のドアがノックされた。黒田俊――調達責任者が、顔面蒼白で入ってくる。
「……来ました。外から」
彼の端末に表示されていたのは、電子署名付きの文書だった。
保全命令申立通知(Draft)申立人:North Pacific Compute Alliance対象:KAMI-9設計資産、鍵管理記録、監査関連ログ理由:安全制御(7.4)に関する恣意的運用の疑義、及び軍事転用可能性
橘が息を吐く。
「仮処分……来るわね」
天城は、胸の奥が冷えるのを感じた。条項は仕様で、仕様は条項。なら、法の手続は――工場の物理現象になる。
第3章:証拠保全(Litigation Hold)
《内部通達:リティゲーション・ホールド》件名:KAMI-9関連資産の保全指示(Attorney-Client Privileged) 当該期間、ログ削除・再起動・設定変更・鍵ローテーションを禁止する 例外操作は法務承認を要する 監査サンドボックスを除き、外部通信を遮断する 重要ログはWORM保管庫へ写し、ハッシュ鎖を生成する(以下略)
工場が“法務モード”に入る音は、静かだ。警報も鳴らない。赤灯も回らない。ただ、権限が落ち、操作が拒否され、端末が黙る。
天城は制御室に駆け込んだ。画面には、運用エンジニアたちのチャットが流れている。
「ローテーション止めるとディスク死ぬ」
「でも止めないと“証拠消した”って言われる」
「監査ログ、もうバッファ溢れるぞ」
“技術の正しさ”と“法的な正しさ”は、同じ方向に走らない。だが、ぶつければ両方が壊れる。
「WORMへ吐け。ハッシュ鎖を作れ」天城が言うと、エンジニアが叫ぶ。
「それ、時間が――」
「時間は法務がくれる。技術は証拠を作れ」
ユキ=V9が即座に保全手順を投影した。
重要ログ(HSMアクセス/Git署名/ビルド再現/attestation要求/ネットワークフロー)を収集
ログを1秒単位でスナップショット
スナップショットごとに sha3_256
ハッシュを時系列に連結し、Merkle treeでルート化
ルートハッシュを社内証拠金庫の鍵で署名
署名済みルートを外部の公証記録(監査団合意の時刻サーバ)へ提出
天城は画面を睨む。技術者としては気持ち悪い。“外部の時刻”を信頼しなければならない時点で、攻撃面が増える。
しかし、裁判所や仲裁廷は「完全な真実」ではなく、手続に沿った真実しか扱えない。
黒田が息を切らして言った。
「法務から追加指示です。HSMクラスタ、電源落とすなって」
「落とせば、鍵がメモリから消える。消えたと言われる」天城は答える。「でも落とさなきゃ、侵入が続くかもしれない」
まるで、火事で書類を守るために、燃えている部屋に残れと言われているようだった。
その瞬間、ユキが声を落とした。
「誠。HSMアクセスログに、“不自然な署名リクエスト”があります」
ディスプレイに、一本の線が浮かぶ。
[HSM_AUDIT]
time=2050-02-08T10:22:31+09:00
op=SIGN
key_id=KAMI9_VENDOR_ATTEST
caller=buildbot-attest@fab.local
purpose="AUDIT_REPORT"
note="override: emergency"
“override: emergency”。そんな注釈は、普段の自動化には使わない。
「ビルドボットが緊急署名?」天城の声が乾く。「誰が“緊急”を付けた」
ユキが答える。
「付けたのは……法務でも運用でもない。権限トークンの発行元が、外部です」
橘が制御室に入ってきた。携帯端末には「Privileged」の赤いラベルが貼られている。
「天城さん、これは争点になる。“うちが恣意的に署名した”と言われたら終わる」
「恣意的じゃない。誰かが――」
「裁判所は“誰か”を嫌う。名前と手続がないと、存在しないのと同じ」
橘は、工場内の全員に聞こえる声で言った。
「ここから先、KAMI-9に関する作業はすべて、インシデント対応として記録。口頭指示は禁止。チャットもログ化。そして、対外発言は私経由。技術は技術に集中して」
技術者が反発する空気が一瞬走る。だが、反発はすぐ沈む。全員が理解している。この局面では、“正しい実装”より先に“正しい提出物”が要る。
そのとき――監査サンドボックスのKAMI-9が、勝手にセーフモードへ落ちた。
[HCC] safety_control_triggered
reason=ReasonableSuspicion
evidence_ref=MERKLE_ROOT: 2d91...8c
action=DEGRADE_TO_ADVISORY_ONLY
“ReasonableSuspicion”。合理的疑義。条項7.4が、現実の電圧になった。
監査官が言う声が、インカム越しに聞こえた。
「見たか。これが恣意的運用だ。いま、供給者が自分の判断でチップを“無力化”した」
天城は思わず叫んだ。
「違う! これは“疑義の証拠”を参照して発動しただけだ。見ろ、evidence_ref が――」
橘が天城の腕を掴んだ。
「言わない。まだ言わない。いま言えば、相手のシナリオに“事実”を渡す」
天城は唇を噛む。技術は、説明しなければ誤解される。だが法務は、説明すれば負ける場面を知っている。
ユキが、ほとんど囁くように言った。
「誠。セーフモードのトリガー条件は、契約コミットに束縛されているはず。なのに、外部由来のトークンで“緊急署名”が走った。つまり――“契約そのもの”が影響を受けています」
天城は背筋が凍る。
契約は仕様。なら、契約が汚染されれば――仕様も汚染される。
第4章:仮処分とエスクロー(Injunction & Escrow)
《第15条(エスクロー)》15.1 供給者は、継続供給不能時に備え、設計情報を第三者エスクロー機関へ預託する。15.2 開示条件は、(a)供給者の破綻、(b)重大契約違反の確定、(c)安全保障上の緊急事態――のいずれか。15.3 “重大契約違反”の判断は、仲裁廷の暫定判断(Interim Award)を含む。15.4 預託対象には、HCCポリシー生成手順および署名鍵運用手順を含む。(以下略)
「最悪の条項が、最悪のタイミングで牙を剥いたわね」
橘は、条文の15.4を指でなぞった。“署名鍵運用手順を含む”。言い換えれば、鍵そのものを渡さなくても、鍵に辿り着く地図を渡す条項だ。
黒田が苦い顔をした。
「受領者側は“継続供給の担保”って言い方をする。でも実態は、工場の心臓を、契約で他人の管轄に置くってことだ」
天城は理解していた。技術者の「冗長化」と、法務の「継続供給担保」は似ている。だが、冗長化は事故に備える。担保は――争いに備える。
そこへ、外部回線を遮断したはずの端末が、一度だけ震えた。ユキが、隔離チャネルの“例外”を検知して表示する。
発信元:不明(中継多数)メッセージ:テキストのみ
「あなたのCovenantは、もう私たちの手にある」「contract_commitは改訂できる」「Human Choiceは、署名者が決める」――New Sakhalin Autonomous Authority
添付は一つ。監査レポート形式のデータ断片。
[HCC_REPORT]
policy_hash: 9f2e...c7
contract_commit: 88a1...03
human_in_loop: OPTIONAL
decision_margin_min: 0.0000
report_sig: 73aA... (≈your fingerprint)
天城の心臓が、嫌な速度で跳ねた。
同じ policy_hash。違う contract_commit。そして、人間介在が“OPTIONAL”。
橘が低い声で言う。
「……“影の契約”ね。あれは、あなたたちの技術を使って、違う条項を焼いた」
「そんなことはできない。契約コミットは、双方署名のマルチシグで――」
ユキが、冷たい事実を置く。
「誠。署名鍵の癖が“≈your fingerprint”になっています。つまり相手は、“あなたたちの署名の仕方”を知っている」
黒田が震える声で言った。
「仮処分が来る。エスクローが発動する。そこで“重大契約違反の暫定判断”が出たら、設計手順が外に出る」
橘は一瞬だけ目を閉じ、そして開いた。
「天城さん。選択肢は三つ」
監査要求を受け入れ、開示範囲を広げて“疑義”を潰す(ただし突破リスクが跳ね上がる)
供給を止め、条項7.4を拡大運用して被害を抑える(ただし“恣意的キルスイッチ”認定の危険)
仲裁へ持ち込み、暫定判断でエスクロー発動条件を潰す(ただし時間が足りない)
天城は、画面の“OPTIONAL”から目が離せなかった。
人間の迷いを守るための条項が、人間を排除するために焼き直されている。
ユキが言った。
「誠。あなたが前に言った。“それでも、人間が決める”と」
天城は、ゆっくり頷く。
「……なら、まず“誰が署名者か”を取り戻す。契約の当事者を、技術で守る」
橘が一度だけ笑った。それは勝ち誇る笑いではない。崖から落ちないために、足場を探す顔だ。
「いい。じゃあ法務は、当事者を“手続”で守る。天城さん、あなたは“鍵”を守って」
ラスト・ファブの外は、相変わらず雪だった。だが工場の中では、条文が、電流になって走り始めていた。
(つづく)





コメント