Faying Protocol/1.0 — §7 Authorization Grades
プロトコル本文ナビ:章目次 | 前章 §6 暗号 | 次章 §8 ライフサイクル
§7 Authorization Grades
本章はグレード化された認可を定義する。プロトコルは「一律の全権委任」を受け入れない。各 Mandate は必ず grade を明記し、各 grade の自律性、在場要求、メッセージ要求の 3 欄はすべて厳密な意味論を持つ。§7.2 はイベント駆動のグレード切り替えを行列で網羅し、§7.3 は「在場が失効すれば必ず締まる」という単調性原則を確定する。§7.4 はメッセージ層での強制項目の差異を与え、§7.5 は G1–G4 の上に Endorsement Grades 子グレードを重ね、オフライン自律の許可層とする。
G0 と G1–G4 の直交関係:G0 Emergency Override は G1 ↔ G4 の連続グレード譜の中にない。これは直交した override チャネルである。G1–G4 は「自律性の強弱の連続軸」を表し、G0 は Human Prime が一方的に制御権を奪還する緊急チャネルであって、イベントキューの優先度と終局状態(Suspended)のレベルでのみ現れ、「昇格 / 降格」の意味論には関与しない。G0 を「G1 よりさらに厳格な連続段位」とみなすいかなる実装も、プロトコル意味論と整合しない。
数値予算の流儀:本章に登場する
max-stalenessの数値(G1=5s / G2=60s / G3=5min / G4=30min)は、いずれも付録 B「デフォルトパラメータ予算」中のPresence max-staleness(G1..G4)と一対一に対応する。付録 B の「既定値」が本章で用いる流儀であり、「上限」列は実装が調整できるプロトコル層のハード上限である。
§7.1 グレードの厳密な定義
| グレード | 自律性 | 在場要求 | メッセージ要求 | 適用 |
|---|---|---|---|---|
| G0 Emergency Override | 該当なし | 該当なし | HP が一方的に発起。作用は 1 つのみ:対象 Mandate を直ちに Suspended へ押し込む | 緊急奪還 |
| G1 Strict | 極低 | リアルタイム連続在場(顔 / WebAuthn UV、max-staleness ≤ 5s) | 各対外呼び出しに ≤ 5s の PresenceSignal を必ず添付 | 不可逆操作(送金、署名、DB 削除、端末の高権限指令) |
| G2 Moderate | 中 | タスクレベル在場(機微サブタスク前に新鮮な在場が必要、max-staleness ≤ 60s) | 機微アクション前に PresenceSignal | 中頻度の代理操作(予約、変更、フォーム送信) |
| G3 Loose | 高 | 重要ステップで照会(重要な意思決定点の前に intent-ticket) | 重要ステップに単回の intent-ticket を携える | 長期の低リスク代理(メール整理、スケジュール) |
| G4 Autonomous | 極高 | 周期ハートビート(presence-heartbeat、max-staleness ≤ 30min) | ハートビート維持 + 周期的な監査の還流 | 範囲内で自律する定常タスク |
設計上の選択:G0 は G1 ↔ G4 の連続譜の中になく、直交した override チャネルである——その存在の唯一の目的は、任意の状態で HP が直ちに制御権を奪還できるようにすることである。
自律性数直線の取り決め:G0 < G1 < G2 < G3 < G4(数値が大きいほど自律性が高い)。本章以降のすべての「昇格 / 降格」判定は target.autonomy と current.autonomy の大小比較を基準とする。G0 はこの数直線の比較に関与しない——§7.2 行列の最終行を通じて一方的に Suspended へ遷移する。
在場要求と Presence_Signal タイプの整合(詳細は §3.2 信号タイプ表):
- G1 Strict:典型信号
face-continuousまたはwebauthn-uv-fresh、max_staleness_ms = 5_000。 - G2 Moderate:典型信号
fingerprint-tap(機微サブタスク前)、max_staleness_ms = 60_000。 - G3 Loose:典型信号
intent-ticket(重要ステップで単回消費)。周期的な max-staleness 上限はないが、各重要ステップには新鮮な intent-ticket が必要。 - G4 Autonomous:典型信号
presence-heartbeat-only、max_staleness_ms = 1_800_000(30min)。
メッセージ要求の差異(§5 メッセージ一覧とクロス):
- G1 / G2 昇格方向の GRADE_SWITCH:
human_witness必須(MUST)。見証形態は既定で WebAuthn UV アサーション(§6.1 アルゴリズムスイート参照)。 - G3 / G4:これら 2 段階への昇格(たとえ target.autonomy が依然として元のグレードより低い場合でも「自律性を緩める」経路に属する)も同様に
human_witnessを要求する。「能動的降格」経路上でのみhuman_witnessが MAY に退化する。 - G0:HP のみが一方的に発起でき(IF / MS / SA が代わって発起した G0 は
E_PROTOCOLで拒否)、かつ検証可能なhuman_witnessの添付を要求する。G0 メッセージは最優先で Attestation Chain と Revocation Registry プッシュキューへ書き込まなければならない。
§7.2 トリガー条件行列
下表は 6 種のトリガーイベント × 4 つの非 G0 現在グレードの 6×4 状態遷移行列であり、プロトコル層が強制するイベント → 終状態マッピングである。表外の遷移経路は存在しない。
| イベント | 現在 G1 | 現在 G2 | 現在 G3 | 現在 G4 |
|---|---|---|---|---|
| 在場新鮮度の期限切れ | → Suspended | → G3 Loose | → Suspended | → Suspended |
| HP の能動的昇格 | — | → G1(見証必要) | → G2 / G1(見証必要) | → G3 / G2 / G1(見証必要) |
| HP の能動的降格 | → G2 | → G3 | → G4 | — |
| Ego 逸脱を検知 | → Revoked | → Revoked | → Revoked | → Revoked |
| 撤回登録が到達不能 | 呼び出し拒否 | 呼び出し拒否 | 呼び出し拒否 | 呼び出し拒否 |
| G0 Override | → Suspended | → Suspended | → Suspended | → Suspended |
行列意味論の補足説明:
- 「在場新鮮度の期限切れ」行の非対称性:G2 → G3 は許される「穏やかな降格」である(依然 Active 状態機械の分岐内)。G1 / G3 / G4 → Suspended はそれぞれ異なる 3 種の判定ロジックを表す——G1 は高機微の場面で「新鮮な在場なくして行動できない」ため。G3 は intent-ticket の場面でハートビートが主要な在場根拠でないため、重要ステップの新鮮な信号が連続して欠けると信頼不能な状態とみなす。G4 はハートビートが唯一の在場根拠であるため、ハートビート喪失は直ちに Suspended へ吸収される(§7.3 例外条項と整合)。
- 「HP の能動的昇格」行:G1 の「—」は G1 がすでに最も厳格な段位であり、より上の昇格余地がないことを表す。その他の項目は 1–3 段の一括昇格を許し、すべての昇格は必ず
human_witnessを伴う(詳細は §7.4)。 - 「HP の能動的降格」行:G4 の「—」は G4 がすでに最も緩い段位であり、より下の降格余地がないことを表す。降格方向は
human_witnessを要求しないが、RR 通知と AC チェーン記録は依然必須である。 - 「Ego 逸脱を検知」行:4 段階が統一して Revoked 終状態へ入る(Revoked は吸収状態、詳細は §8 / Property 10)。この行をトリガーする判定ロジックは §3.6 Behavior Baseline Service と §9.10.6 T5 が共同で与える。
- 「撤回登録が到達不能」行:4 段階が統一して「呼び出し拒否」であり、状態遷移ではない——単回呼び出しの Default-Deny 収束経路(エラーコード
E_RR_UNAVAILABLE)であり、Mandate 自身は現在のグレードを維持する。この行は §3.4 RR 不変条件 I-RR-2 と整合する。 - 「G0 Override」行:HP が一方的に発起し、4 段階が統一して Suspended へ吸収される。イベントキュー上では最優先で処理される(任意の pending イベントが道を譲る)。
§7.3 降格の単調性原則
在場していなければより厳格に——これは Graceful-Degradation の反直観的だが必須の形態である。在場信号の喪失は「人類の視野が狭まる」ことを意味し、ゆえに自律性は緩めるのではなく締めなければならない。番号付けの上では次のように現れる:在場失効 → grade の数値が小さくなる(より厳しい)。
形式的表現(P11 と整合):
∀ M ∈ ActiveMandates. PresenceState(M).stale = true ⟹
next_state(M) ∈ { Degraded(g'), Suspended }
where g'.autonomy < M.grade.autonomy
すなわち:在場失効後、次の状態遷移は autonomy が厳密に低い(数値がより小さく、安全性がより高い)grade へ遷移するか、直接 Suspended へ遷移しなければならない。元の grade の維持は禁止、自律性のより高い方向への切り替えも禁止。
例外(吸収状態の制約):
- G4 Autonomous のハートビート喪失 → 直接 Suspended:G4 はすでに自律性が最も高い段位であり、より厳しい降格先がない——直接 Suspended へ吸収するのはプロトコル層のハード制約である(§7.2 行列第 1 行 G4 列と整合)。
Degraded状態がMaxDegradedDurationを超過 → 直接 Suspended:「長期にわたって次級状態にとどまる」ことが暗黙の「緩和経路」になるのを避ける。具体的な閾値は付録 BMaxDegradedDurationを参照。
§7.4 グレード切り替えメッセージの要求差異
下表は 3 種の切り替え方向のメッセージ層強制項目の差異を示す。いずれかの行の「MUST」列が欠落すれば、対応する切り替えメッセージはすべて E_PROTOCOL または E_HUMAN_WITNESS_REQUIRED で拒否する(詳細は §5.4 エラーコード表)。
| 切り替え方向 | human_witness | RR 通知 | AC チェーン記録 |
|---|---|---|---|
| 昇格(自律性がより高い) | MUST | MUST | MUST |
| 降格(自律性がより低い) | MAY | MUST | MUST |
| Emergency Override | MUST | MUST(最優先プッシュ) | MUST |
メッセージ層意味論の補足:
- 昇格方向:
GRADE_SWITCH.target_grade.autonomy > current_grade.autonomyのときhuman_witness必須。欠落または署名検証失敗 →E_HUMAN_WITNESS_REQUIRED(エラーコード 1010)。この行の制約は Requirement 6.1 と完全に整合する。 - 降格方向:
human_witnessは MAY に退化するが、RR 通知と AC チェーン記録は依然必須である——降格も監査と可観測を要する一類の状態変化であり、「サイレントな降格」を禁止する。 - Emergency Override(G0):
human_witness必須。RR 通知は最優先でプッシュしなければならない(§3.4 RR プッシュチャネルの priority フィールドと整合)。AC チェーン記録は最優先で書き込む。 - AC チェーン記録「必須」のプロトコル層意味論:すべての GRADE_SWITCH(昇格 / 降格 / G0 を問わず)は
event_type = "grade-switch"の AttestationEvent を 1 件生成し(詳細は §3.3)、MS が切り替え完了後に直ちに追記する。欠落すれば監査の欠落とみなし、E_ATTESTATION_INVALIDをトリガーする。
§7.5 Endorsement Grades 子グレード
設計上の立場:Endorsement は新たなグレードではなく、**G1–G4 の上に重ねる「オフライン自律許可層」**である。各非 G0 グレード(すなわち G1–G4)には 1 件の
endorsementを重ねることができ、当該 Mandate が物理的な連絡途絶の期間中(§3.5 Liveness Channel と §4.3 状態機械が判定)も限定範囲内で自律できるようにする。G0 Emergency Override は endorsement の重ねを許さない——これは HP が一方的に制御を回収するチャネルであり、「オフライン自律」の意味論と排他的である。
重ねの意味論:
| 主グレード | endorsement の可否 | endorsement の既定作用 |
|---|---|---|
| G0 Emergency Override | 不可 | — |
| G1 Strict | 可 | 物理連絡途絶の期間中 → Disconnected。endorsed_scope は通常、高機微アクションの最小サブセット。endorsed_grade の既定 = G1(下げない) |
| G2 Moderate | 可 | endorsed_grade の既定 = G2。典型用法:定時タスクの実行 / 開始済みトランザクションの完了 |
| G3 Loose | 可 | endorsed_grade の既定 = G3。典型用法:情報整理 / 読み取り系操作のオフライン継続 |
| G4 Autonomous | 可 | endorsed_grade の既定 = G4。典型用法:長時間オフライン代理 + 再接続後の一括照合 |
子グレードのハード制約(Requirement 11.2 と連動し、最終的に P16.3 で確定):
- scope 収束:
endorsement.endorsed_scope ⊆ Mandate.scope。 - grade 収束:
endorsement.endorsed_grade.autonomy ≤ Mandate.grade.autonomy(すなわち endorsed_grade は自律性の上で主 grade より弱くなく、安全性 ≥ 主 grade)。 - lifetime 有限:
endorsement.endorsed_lifetimeは必ず有限で、∞や欠落を許さず、かつ≤ (Mandate.not_after − Mandate.not_before)。付録 B はさらにソフト上限Endorsed_Lifetime(既定 4h、上限 12h)を与える。 - オフライン撤回ポリシーは列挙可能:
endorsement.offline_revocation_policy ∈ {"stop-and-audit", "stop-only", "graceful-stop"}。既定stop-and-audit。
いずれかのハード制約が成立しないとき、BOOTSTRAP / DELEGATE 段階ですべて E_ENDORSEMENT_INVALID(エラーコード 1013)で拒否する(詳細は §5.4)。DELEGATE 時にはさらに child.endorsement が parent.endorsement に収束することを保証する必要がある——すなわち子 Mandate の endorsed_scope / endorsed_grade / endorsed_lifetime は親 Mandate の対応フィールドを超えてはならない。
連絡途絶状態機械との協調(詳細は §4.3、§8.4、§9.8):
PresenceState.stale = trueでかつ Mandate が Endorsed_Mandate のとき →Active → Disconnected(非 Endorsed 経路は直接 → Suspended)。- Disconnected の期間中、iFay は
endorsement.endorsed_scope内でendorsement.endorsed_gradeの制約に従ってのみ D 次元の行為を実行できる。 endorsement.endorsed_lifetimeが満了すれば直ちにソフトタイムアウト → Disconnected → Revoked。たとえ iFay がなお物理的に切断状態であってもである(Requirement 11.3 第 3 条「ソフトタイムアウト強制制約」)。- 責任引き受け端は常に当該 Mandate の
issuer(Human Prime)であり、endorsement の存在によって変わらない(詳細は P16.5 Endorsement_Accountability_Invariant と Requirement 11.4)。
Endorsement と G0 の排他関係:G0 Emergency Override は HP が一方的に制御権を回収するチャネルであり、その意味論が指す目標状態は Suspended(「直ちにすべての D 次元行為を停止」)である。Endorsement の意味論が指すのは「物理連絡途絶の期間中に許される D 次元行為のサブセット」である。両者は状態機械上で排他的イベントである——G0 がいったんトリガーされれば、対象 Mandate は直ちに Suspended へ吸収される。当該 Mandate は Suspended の期間中、endorsement の D 次元通過規則を適用しない(たとえ endorsement がなお lifetime のソフトタイムアウト点に達していなくてもである)。
