Internet Engineering Task Force T. Sato
Internet-Draft MyAuberge K.K.
Intended Status: Standards Track 9 June 2026
Expires: 9 December 2026
Kernel Identity and Attestation for Governing Enforcement Components
draft-sato-soos-kia-01
Abstract
This document specifies the Kernel Identity and Attestation (KIA)
protocol for the Sovereign Object OS (SOOS) governance architecture.
KIA defines the cryptographic identity of the GEC, the trust
chain anchoring kernel authority from hardware root through operator
root keypair to every signed Event Log entry, the GEC Manifest
schema for runtime state attestation, and the Revocation Registry
maintenance requirements. KIA is the Layer 0 signing and
attestation component on which the audit trail guarantees of
draft-sato-soos-gar, the mandate enforcement guarantees of
draft-sato-soos-mjwt, and the multi-agent delegation chain of
draft-sato-soos-mad all depend.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current
Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other
documents at any time. It is inappropriate to use Internet-Drafts
as reference material or to cite them other than as "work in
progress."
This Internet-Draft will expire on 9 December 2026.
Copyright Notice
Copyright (c) 2026 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with
respect to this document.
Table of Contents
1. Introduction
2. Terminology
3. Trust Chain Architecture
3.1. Chain Overview
3.2. Hardware Root
3.3. Operator Root Keypair
3.4. GEC Attestation Certificate
3.5. The Kernel Is Below Cedar
4. KIA Responsibilities
4.1. Keypair Generation and Management
4.2. GEC Manifest Issuance
4.3. Event Log Signing
4.4. Revocation Registry Maintenance
4.5. Agent-Kernel Mutual Authentication
4.6. Federation Attestation
5. GEC Manifest
5.1. Purpose
5.2. Schema
5.3. Issuance Triggers
5.4. Staleness
5.5. PTD Consistency Requirement
6. Event Log Signing (INV-9)
6.1. Scope
6.2. Canonical Form
6.3. Signed Event Classes
7. Revocation Registry (INV-11)
7.1. Structure
7.2. Rebuild on Restart
7.3. Revocation Authority
7.4. Agent Revocation Prohibition
8. Policy Change Attestation (INV-10)
9. Federation and Cross-Instance Verification
10. GEC as RATS Attester
11. Relationship to WIMSE
12. Conformance
13. Open Issues
13.1. OQ-S-18: Deployment Topology
13.2. OQ-S-19: Agent Runtime Attestation Profile
14. Security Considerations
14.1. Private Key Extraction
14.2. GEC Manifest Forgery
14.3. Policy Hash Manipulation
14.4. Revocation Registry Incompleteness
14.5. Cascade Revocation Race
14.6. Implementation Degradation
14.7. Agent Session Revocation
15. IANA Considerations
16. Normative References
17. Informative References
Appendix B. Related Work
B.1. RATS Architecture (RFC 9334)
B.2. WIMSE
B.3. SPIFFE / SPIRE
B.4. SCITT
B.5. TCG TPM and Hardware Attestation
B.6. SOOS Companion Drafts
Appendix C. Vibe Coding Assets
C.1. Protocol Summary
C.2. Key Identifiers
C.3. Canonical Reference
Acknowledgements
Author's Address
1. Introduction
Every GEC event -- every state transition, every mandate
revocation, every human escalation and resolution, every session
boundary -- is signed by the GEC keypair. Without this signing,
there is no audit trail integrity: any party with write access to
the Event Log could inject or modify events without detection.
Without the trust chain anchoring that keypair to a hardware root
and operator identity, there is no basis for a verifying party
to trust the signed entries.
A Governing Enforcement Component (GEC) is the enforcement kernel
in a governed agentic AI system: the component that evaluates Cedar
policies, executes XState state machines, and commits every state
transition to an append-only, signed Event Log. The GEC is the
enforcement physics of the system -- no agent may modify governed
object state except through the GEC's execution sequence. KIA
defines what it means for a GEC to have a verifiable cryptographic
identity. The Sovereign Object OS (SOOS) is the reference
implementation of the GEC pattern; all normative examples in this
document use SOOS terminology. Any implementation conforming to
the Cedar + XState + append-only Event Log pattern MAY claim KIA
conformance.
This document specifies three things:
(1) The KIA trust chain: the sequence of cryptographic
relationships from hardware root to operator root keypair to
GEC Attestation Certificate to GEC keypair to Event Log
signatures.
(2) The GEC Manifest: a signed attestation of the GEC's
current runtime state, issued at deployment and reissued on
every policy change (INV-10). The GEC Manifest is the
document an external verifier, a federated kernel instance,
or an agent uses to establish trust in a kernel before
submitting a mandate or accepting an Event Log entry.
(3) The Revocation Registry maintenance requirements (INV-11):
the kernel-maintained index of revoked mandate JWT IDs,
rebuilt from the Event Log on restart, checked at every
mandate presentation.
The GEC is a RATS Attester as defined in [RFC9334]. This is a
normative declaration: KIA implements the RATS Attester role for
governance execution kernels. The GEC Manifest is RATS Evidence
extended with SOOS-specific fields (Section 5.2). The operator
root keypair holder is the RATS Endorser; the GEC Attestation
Certificate is the RATS Endorsement. Any external system consuming
Event Log entries or GEC Manifests is a RATS Relying Party. The
complete RATS role mapping is specified in Section 10.
A critical architectural principle governs KIA's position in the
SOOS stack: the GEC is not above Cedar -- it is below Cedar.
Cedar is one of the tools the kernel uses. The kernel's identity
anchor is the operator root keypair and the hardware attestation
layer beneath it. KIA grounds that anchor; Cedar governs what
the GEC permits; together they form the enforcement physics of
SOOS.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
this document are to be interpreted as described in BCP 14
[RFC2119] [RFC8174] when, and only when, they appear in all
capitals.
2. Terminology
Attester
An entity that produces Evidence about its own trustworthiness,
as defined in [RFC9334]. In SOOS, the GEC is the Attester.
This is a normative claim: KIA implements the RATS Attester role.
Endorser
An entity that vouches for the Attester by producing Endorsements,
as defined in [RFC9334]. In SOOS, the operator root keypair
holder is the Endorser. The GEC Attestation Certificate
(Section 3.4) is the RATS Endorsement.
Evidence
The signed claims produced by an Attester, as defined in
[RFC9334]. In SOOS, the GEC Manifest is the Evidence, extended
with SOOS governance-specific fields (Section 5.2).
Relying Party
An entity that consumes Attestation Results and makes trust
decisions, as defined in [RFC9334]. In SOOS: agents verifying
kernel authenticity before submitting mandates; external audit
consumers; federated kernel instances.
Verifier
An entity that appraises Evidence and produces Attestation
Results, as defined in [RFC9334]. In the standard SOOS model,
verification is performed inline by the Relying Party directly
against the GEC Manifest. A separate Verifier service is not
required but MAY be deployed for high-assurance environments.
KIA
Kernel Identity and Attestation. The Layer 0 SOOS component
that generates and manages the GEC keypair, issues Kernel
Manifests, signs all Event Log entries, and maintains the
Revocation Registry.
Kernel Keypair
An Ed25519 keypair generated by KIA at deployment initialisation.
The private key MUST remain inside the secure element for the
kernel's operational lifetime. The public key is published in
the GEC Manifest and GEC Attestation Certificate.
GEC Manifest
A signed document issued by KIA declaring the GEC's current
runtime state: SOOS conformance version, keypair fingerprint,
loaded Cedar policy set hashes, SO Type Registry hash, XState
definition hashes, and RATS Evidence extension fields (Section
5.2).
GEC Attestation Certificate
A certificate issued by the operator root keypair over the kernel
keypair fingerprint, binding the GEC's cryptographic identity
to the operator's identity at deployment time.
Operator Root Keypair
A human-held, hardware-backed Ed25519 keypair held by the
operator. The private key MUST never be held by the kernel
process. This keypair signs the GEC Attestation Certificate
and is the human authority anchor for the SOOS deployment.
Revocation Registry
A kernel-maintained in-memory index of all revoked mandate JWT
IDs (jti values), rebuilt from the Event Log on kernel restart.
Policy Governance Kernel
The kernel subsystem responsible for committing Cedar policy set
changes to the GEC runtime. A policy set change by the
Policy Governance Kernel is the trigger for GEC Manifest
reissuance (INV-10).
Secure Element
A hardware security module (HSM), Trusted Platform Module (TPM),
or equivalent hardware-backed key storage device from which
private key material cannot be exported.
3. Trust Chain Architecture
3.1. Chain Overview
The KIA trust chain is a directed sequence of signing relationships.
Each layer is signed by or derives authority from the layer above
it. The chain is:
Hardware root (TPM / HSM)
|
v
Operator root keypair (human-held, hardware-backed RECOMMENDED)
|
v
GEC Attestation Certificate
(operator signs GEC keypair fingerprint at deployment)
|
v
GEC Manifest
(kernel signs its own runtime state: Cedar hashes,
SO Type Registry hash, XState definition hashes)
|
v
Event Log entries
(kernel signs each event with the GEC keypair -- INV-9)
|
v
Cedar evaluations
(kernel evaluates every transition; Cedar is below the
signing layer and above the state machine)
|
v
Sovereign Objects
(kernel governs all state transitions on all SOs)
|
v
Agents
(mandate JWTs issued under Party Registry authority;
mandate validity checked at Step 1 of every transition)
The critical invariant is that no signing relationship flows
upward. An agent cannot sign on behalf of the kernel; the kernel
cannot sign on behalf of the operator root; the operator root
cannot sign on behalf of the hardware root. Compromise at any
layer is detectable by verifying the chain from above.
3.2. Hardware Root
The hardware root is a TPM 2.0-compliant device, HSM, or equivalent
hardware security device providing:
(a) Non-exportable key generation and storage.
(b) Platform measurement (PCR values or equivalent) establishing
that the GEC software is running in an expected state.
(c) Attestation of the hardware-backed status of the operator root
keypair and the GEC keypair.
Where the deployment environment does not support hardware-backed
key storage, the implementation MUST document this as a deployment
constraint in the GEC Manifest (Section 5.2) and SHOULD surface
this as a conformance warning to operators.
3.3. Operator Root Keypair
The operator root keypair is the human authority anchor of the SOOS
deployment. It is held by the operator, not by the GEC process.
Requirements:
(a) The operator root private key MUST NOT be accessible to the
kernel process.
(b) The operator root private key SHOULD be held in a hardware-
backed secure element.
(c) The operator root keypair is used for exactly two purposes:
(i) Signing the GEC Attestation Certificate at deployment.
(ii) Issuing MANDATE_REVOCATION_ISSUED events (INV-11).
(d) The operator root public key fingerprint MUST appear in the
GEC Manifest (Section 5.2) as the operator_identity field.
3.4. GEC Attestation Certificate
The GEC Attestation Certificate is issued by the operator root
keypair at kernel deployment time. It binds the GEC's
cryptographic identity to the operator's identity.
The GEC Attestation Certificate MUST contain:
kernel_keypair_fingerprint SHA-256 of the Ed25519 public key
generated by KIA at deployment.
operator_identity The operator root public key
fingerprint.
deployment_timestamp ISO-8601 timestamp of issuance.
soos_version The SOOS conformance version the
kernel is attesting to.
hardware_backed Boolean: TRUE if the GEC keypair
is stored in a hardware secure
element; FALSE otherwise.
operator_signature Ed25519 signature over the canonical
JSON of the above fields, by the
operator root keypair.
The GEC Attestation Certificate is embedded in the Kernel
Manifest (Section 5.2, attestation_certificate field).
3.5. The Kernel Is Below Cedar
A core architectural principle of KIA is that the GEC's identity
and authority do not depend on Cedar. Cedar evaluates policies that
the kernel enforces. KIA grounds the GEC's identity in the
hardware root and operator keypair, both of which are established
before Cedar policy evaluation begins.
This means:
(a) Cedar DENY on a proposed transition does not prevent the kernel
from signing a CEDAR_DENY Event Log entry. The signing happens
regardless of the Cedar result. INV-9 is unconditional.
(b) A Cedar policy change does not invalidate historical Event Log
entries. The GEC Manifest reissuance (INV-10) records the
policy change; historical entries carry the cedar_policy_ref
field identifying which policy set was active at evaluation
time.
(c) A compromised Cedar policy set cannot forge kernel signatures.
The GEC keypair is independent of the Cedar policy layer.
4. KIA Responsibilities
4.1. Keypair Generation and Management
At deployment initialisation, KIA MUST:
(a) Generate an Ed25519 keypair.
(b) Store the private key in a hardware secure element where
available. The private key MUST NOT be exported from the
secure element under any circumstances.
(c) Register the public key fingerprint (SHA-256) with the
operator for inclusion in the GEC Attestation Certificate.
(d) Issue the initial GEC Manifest once the GEC Attestation
Certificate has been received from the operator.
The GEC keypair is the operational keypair for the deployment
lifetime. Keypair rotation is an operator-initiated operation
requiring issuance of a new GEC Attestation Certificate and
a new GEC Manifest. All Event Log entries signed under the
prior keypair remain valid under the prior keypair fingerprint.
4.2. GEC Manifest Issuance
KIA MUST issue a GEC Manifest:
(a) At deployment initialisation, after receiving the Kernel
Attestation Certificate from the operator.
(b) On every policy set change committed by the Policy Governance
Kernel (INV-10).
(c) On GEC keypair rotation.
The GEC Manifest schema is specified in Section 5.2.
4.3. Event Log Signing
KIA MUST sign every Event Log entry with the GEC keypair
(INV-9). This requirement applies without exception to all event
types.
An Event Log entry that does not carry a valid kernel_signature
field MUST be treated as invalid by any verifying party. An
invalid entry MUST NOT be used as evidence in audit, federation,
or dispute resolution.
The signing procedure is specified in Section 6.
4.4. Revocation Registry Maintenance
KIA MUST maintain the Revocation Registry: an in-memory index of
all mandate JWT IDs (jti values) that appear in any
MANDATE_REVOCATION_ISSUED event in the Event Log (INV-11).
KIA MUST rebuild the Revocation Registry from the Event Log on
kernel restart before processing any mandate presentations.
KIA MUST check the Revocation Registry at Step 1 of every kernel
execution sequence. A mandate whose jti appears in the Revocation
Registry MUST be REJECTED.
The Revocation Registry is specified in Section 7.
4.5. Agent-Kernel Mutual Authentication
KIA SHOULD support an agent-kernel mutual authentication handshake
before mandate presentation. The handshake allows the agent to
verify the GEC's identity (via the GEC Manifest) and the
kernel to verify the agent's identity (via the agent's Party
Registry keypair) before the agent submits a mandate JWT.
For Class 2 and Class 3 agents (as defined in
draft-sato-soos-idp-04 Section 6.4), this handshake SHOULD be
performed at session initialisation. For Class 1 agents, the
handshake is OPTIONAL.
The mutual authentication handshake protocol is:
(1) Agent requests the current GEC Manifest from the kernel
API endpoint.
(2) Agent verifies the GEC Manifest signature against the
kernel public key fingerprint it holds (obtained via operator
provisioning or prior GEC Manifest).
(3) Agent verifies the attestation_certificate in the Kernel
Manifest against the operator root public key.
(4) Kernel verifies the agent's Ed25519 public key against the
Party Registry.
(5) Both parties proceed to mandate presentation.
This handshake does not replace mandate validation at Step 1 of
the kernel execution sequence. It is an optional pre-validation
step that allows well-behaved Class 2 and Class 3 agents to abort
before mandate presentation if the GEC's attestation state is
unexpected (e.g., stale GEC Manifest, unexpected Cedar policy
set hashes).
4.6. Federation Attestation
When a GEC instance presents Event Log entries or claims
to a second GEC instance, the receiving kernel MUST verify
the presenting kernel's identity and attestation state before
accepting cross-instance events.
The verification protocol is:
(1) The receiving kernel requests the presenting kernel's current
GEC Manifest.
(2) The receiving kernel verifies the GEC Manifest signature
against the presenting kernel's public key fingerprint.
(3) The receiving kernel verifies the attestation_certificate in
the GEC Manifest against the presenting operator's root
public key (obtained via operator-to-operator provisioning).
(4) The receiving kernel checks that the
soos_conformance_version in the presenting kernel's Kernel
Manifest is compatible with the receiving kernel's version.
(5) If all checks pass, the receiving kernel MAY accept signed
Event Log entries from the presenting kernel for cross-instance
audit and federation purposes.
The cross-instance federation protocol (what is exchanged and
under what conditions) is out of scope for this document. This
section specifies only the KIA attestation requirements that
federation depends on.
5. GEC Manifest
5.1. Purpose
The GEC Manifest is the primary attestation document of a SOOS
kernel instance. It serves three purposes:
(a) Agent trust establishment: an agent verifies the Kernel
Manifest before submitting mandates to establish that it is
communicating with a genuine, conforming GEC.
(b) Operator auditability: the GEC Manifest records which Cedar
policy sets and XState definitions are loaded, enabling
operators to verify that the GEC is running the expected
governance configuration at any point in time.
(c) Federation: a receiving kernel instance verifies the
presenting kernel's GEC Manifest before accepting
cross-instance events (Section 4.6).
(d) PTD anchor: the GEC Manifest carries the ptd_endpoint field
and the cedar_policy_hash that enable external parties to
discover and verify the GEC's Policy Transparency Disclosure
(PTD) per [SOOS-CAP] Section 12a. The GEC Manifest
is the authoritative discovery mechanism for PTD endpoint
location (OQ-PTD-01 resolved).
5.2. Schema
KernelManifest {
manifest_version
The schema version of this GEC Manifest document.
Fixed at "1.0" for this specification.
manifest_id
UUID v4, kernel-assigned. Unique per issuance event.
issued_at
ISO-8601 timestamp of GEC Manifest issuance.
soos_conformance_version
The SOOS specification version this kernel is conforming to.
Implementations MUST populate this field.
kernel_keypair_fingerprint
SHA-256 of the Ed25519 public key held by this kernel instance.
This is the fingerprint against which all Event Log entry
kernel_signature fields are verified. This field also serves
as the GEC instance identifier: a stable, globally unique
reference to this kernel deployment. External systems --
including MJWT aud claim binding (draft-sato-soos-mjwt) --
MUST retrieve this value from the GEC Manifest via the kernel
API endpoint before constructing audience-bound tokens.
operator_identity
SHA-256 fingerprint of the operator root Ed25519 public key.
cedar_policy_set_hashes[]
An array of objects, one per loaded Cedar policy set:
{ policy_set_id, version, sha256 }. The sha256 is computed
over the canonical serialisation of the policy set. This
field changes on every policy set change, triggering INV-10
GEC Manifest reissuance.
so_type_registry_hash
SHA-256 of the current SO Type Registry content. Changes
when SO Type definitions are added, updated, or deprecated.
xstate_definition_hashes[]
An array of objects, one per loaded XState definition:
{ so_type_id, sha256 }. The sha256 is computed over the
canonical serialisation of the XState definition.
deployment_timestamp
ISO-8601 timestamp of kernel deployment initialisation.
Immutable across GEC Manifest reissuances for the same
deployment lifetime.
hardware_backed
Boolean. TRUE if the GEC keypair is stored in a hardware
secure element. FALSE if software key storage is used.
MUST be set accurately; false attestation is a conformance
violation.
attestation_certificate
The GEC Attestation Certificate (Section 3.4), embedded
in full. This binds the GEC keypair fingerprint to the
operator identity.
ptd_endpoint
URI at which the GEC's Policy Transparency Disclosure
(PTD) is available. REQUIRED. Resolves OQ-PTD-01:
PTD endpoint discovery is via this field in the GEC
Manifest. External parties -- regulators, auditors,
Verified External Auditors -- MUST use this endpoint
to retrieve the current signed PTD for this GEC instance.
The URI SHOULD use the HTTPS scheme. The endpoint MUST
serve a response conforming to [SOOS-CAP]
Section 12a.4.
ptd_current_version
String. The version string of the PTD currently served
at ptd_endpoint. This field is distinct from ptd_version
in the PTD itself: ptd_current_version in the GEC Manifest
is the Manifest's record of the current PTD version,
enabling Relying Parties to detect PTD staleness without
fetching the full PTD document. REQUIRED when ptd_endpoint
is present.
loaded_policy_ids[]
Array of cmr:// URIs. CAP-RRS Regulation Record IDs
currently active in the GEC's CMR evaluation set. MUST be
populated; empty array is valid for deployments with no
active CAP-RRS Regulation Records. RATS Evidence extension
field (Section 10).
cedar_policy_hash
SHA-256 string. Single digest over the full compiled Cedar
policy set. Summary field complementing the per-set
cedar_policy_set_hashes[] array. Relying Parties performing
policy-state comparison SHOULD use this field for a fast
equality check before inspecting per-set hashes. RATS
Evidence extension field (Section 10).
kernel_version
String (semver). SOOS KernelSpec implementation version
(e.g., "3.0.0"). Distinct from soos_conformance_version,
which identifies the specification version; kernel_version
identifies the implementation version. Relying Parties
performing version-gating SHOULD check this field. RATS
Evidence extension field (Section 10).
attestation_timestamp
Unix timestamp (UTC seconds). Moment of GEC Manifest
issuance. Relying Parties SHOULD verify freshness; the
recommended maximum staleness for production deployments is
86400 seconds (24 hours). RATS Evidence extension field
(Section 10).
deployment_constraints[]
Array of strings. OPTIONAL; absent (not null) when no
constraints apply. An absent field and an empty array are
semantically equivalent; implementations SHOULD omit the
field rather than include an empty array. Informative.
Records deployment constraints that affect KIA security
properties; does not affect conformance. RATS Evidence
extension field (Section 10).
Recommended values:
"vtpm:azure-confidential-vm"
"vtpm:aws-nitro-enclave"
"vtpm:gcp-confidential-compute"
"software-key-storage"
"shared-keypair:multi-region"
manifest_signature
Ed25519 signature over the canonical JSON of all preceding
fields, including ptd_endpoint, ptd_current_version, the
RATS Evidence extension fields (loaded_policy_ids[],
cedar_policy_hash, kernel_version, attestation_timestamp)
and deployment_constraints[] if present, computed by the
GEC keypair.
}
5.3. Issuance Triggers
A new GEC Manifest MUST be issued on each of the following
events:
(a) Deployment initialisation (initial manifest).
(b) Policy Governance Kernel commits a Cedar policy set change.
The new GEC Manifest MUST carry the updated
cedar_policy_set_hashes[] and cedar_policy_hash reflecting
the new policy set. (INV-10)
(c) SO Type Registry update (addition, modification, or
deprecation of an SO Type definition).
(d) XState definition update for any loaded SO Type.
(e) Kernel keypair rotation.
5.4. Staleness
INV-10: A stale GEC Manifest constitutes a KIA attestation
failure. A GEC Manifest is stale if the Policy Governance
Kernel has committed a policy set change and the GEC Manifest
has not been reissued with the updated cedar_policy_set_hashes[].
The GEC MUST reissue the GEC Manifest before processing
any kernel.transition() calls that would be governed by the new
policy set. A kernel that processes transitions under a new Cedar
policy set before reissuing the GEC Manifest is non-conforming.
Note: staleness is a liveness property of the GEC Manifest,
not a security property of the Event Log. Event Log entries
signed before a policy change remain valid under the prior
cedar_policy_ref field.
5.5. PTD Consistency Requirement
The cedar_policy_hash in the GEC Manifest and the cedar_policy_hash
in the PTD served at ptd_endpoint MUST be identical at any given
moment.
This consistency requirement is the cryptographic anchor that
makes the PTD verifiable. A Relying Party performing a PTD
consistency check MUST:
(a) Retrieve the current GEC Manifest.
(b) Retrieve the current PTD from ptd_endpoint.
(c) Verify that cedar_policy_hash in the GEC Manifest equals
cedar_policy_hash in the PTD.
(d) Verify the PTD's ptd_signature against the GEC keypair
fingerprint from the GEC Manifest.
If step (c) fails, the PTD is inconsistent with the GEC Manifest.
The GEC MUST generate CAP_TRANSPARENCY_VIOLATION
[SOOS-CAP] Section 12a.6 if this condition is detected
by the kernel's own self-consistency check.
The gec_instance_id field in the PTD is equal to the
kernel_keypair_fingerprint in the GEC Manifest. Relying Parties
MUST verify this equality as part of the PTD consistency check to
confirm the PTD was issued by the GEC whose Manifest they hold.
Note on terminology: ptd_version (in the PTD) is the PTD
document's own monotonically increasing version.
ptd_current_version (in the GEC Manifest) is the Manifest's
record of that version. These are intentionally distinct fields:
one is the PTD's self-declaration; the other is the Manifest's
pointer. Both MUST reflect the same PTD generation event.
CONF-KIA-15 (see Section 12) enforces this requirement
normatively.
6. Event Log Signing (INV-9)
6.1. Scope
INV-9: Every Event Log entry MUST be signed by the GEC keypair
(KIA). An unsigned entry is not a valid Event Log entry.
INV-9 applies without exception. The following table lists all
event types defined across the SOOS specification suite that MUST
carry a kernel_signature field:
Core kernel events:
STATE_TRANSITION
MANDATE_REVOCATION_ISSUED
CREATE_SOVEREIGN_OBJECT
SOVEREIGN_OBJECT_ARCHIVED
GDPR_ERASURE_EXECUTED
AEP session events:
AEP_SENSE_DELIVERED
AEP_SESSION_CLOSED
HEM events:
HEM_INVOKED
HEM_RESOLVED
HEM_TIMEOUT
MAD cluster events (draft-sato-soos-mad):
CLUSTER_DECLARED
CLUSTER_MEMBER_ADDED
CLUSTER_MEMBER_REMOVED
CLUSTER_MERGED
CLUSTER_SPLIT
CLUSTER_DISSOLVED
SO lifecycle events (draft-sato-soos-sov):
SOVEREIGN_OBJECT_TYPE_MIGRATED
SO_TYPE_VERSION_COMMITTED
SO_TYPE_INHERITANCE_REGISTERED
SO_TYPE_CHILD_REVALIDATION_REQUIRED
6.2. Canonical Form
The kernel_signature field MUST be an Ed25519 signature over the
canonical JSON form of the event. Canonical JSON is defined as:
(a) All object keys sorted lexicographically.
(b) No insignificant whitespace.
(c) String values encoded as UTF-8.
(d) The kernel_signature field excluded from the signed content
(the signature is over the event object prior to the addition
of the kernel_signature field).
Implementations MUST use this canonical form for both signing and
verification. Non-canonical signing is a conformance violation.
6.3. Signed Event Classes
For clarity, this section notes the significance of INV-9 across
three event classes:
State transitions (STATE_TRANSITION): The kernel_signature makes
every state transition on every Sovereign Object a non-repudiable,
tamper-evident record. A verifier can check the full Event Log
history of any SO using only the GEC public key fingerprint
from the GEC Manifest.
HEM events (HEM_INVOKED, HEM_RESOLVED, HEM_TIMEOUT): The
HEMContext embedded in HEM_INVOKED includes the principal_signature
of the deciding human principal (for HEM_RESOLVED) under the human's
own Party Registry keypair. The kernel_signature wraps this: the
HEM record is therefore doubly signed -- by the deciding human's
keypair (authentication of the decision) and by the GEC keypair
(authentication of the record).
MANDATE_REVOCATION_ISSUED: This event carries both an
authority_signature (the human operator principal's signature over
the revocation decision) and a kernel_signature (the GEC's
signature over the complete event including the
authority_signature). The double-signing ensures that neither the
revocation decision nor its kernel recording can be forged
independently.
7. Revocation Registry (INV-11)
7.1. Structure
INV-11: A revoked mandate MUST NOT be accepted at Step 1 of the
kernel execution sequence. A mandate is revoked if its jti appears
in any MANDATE_REVOCATION_ISSUED event committed to the Event Log
with a valid authority_signature.
The Revocation Registry is a kernel-maintained in-memory index:
RevocationRegistry {
revoked_jtis: Map<jti_string, RevocationRecord>
}
RevocationRecord {
revoked_jti: <jti>,
revocation_event_id: <UUID of MANDATE_REVOCATION_ISSUED>,
revoked_at: <ISO-8601>,
revocation_scope: "THIS_MANDATE_ONLY" |
"CASCADE_TO_DESCENDANTS",
transaction_disposition: "COMPLETE_SAFE" |
"SUSPEND_ALL" |
"ROLLBACK_AVAILABLE"
}
The Revocation Registry contains all jtis listed in all
revoked_mandate_jwt_ids arrays of all MANDATE_REVOCATION_ISSUED
events in the Event Log, including all jtis added by
CASCADE_TO_DESCENDANTS expansion.
7.2. Rebuild on Restart
The Revocation Registry MUST be rebuilt from the Event Log on
every kernel restart, before the GEC processes any mandate
presentations.
The rebuild procedure is:
(1) Scan the Event Log in append order from genesis.
(2) For each MANDATE_REVOCATION_ISSUED event with a valid
authority_signature and kernel_signature, add all jtis in
revoked_mandate_jwt_ids to the Revocation Registry.
(3) For each CASCADE_TO_DESCENDANTS revocation, traverse the
mandate issuance tree (maintained in the Party Registry) and
add all descendant jtis.
(4) The Revocation Registry is complete when the Event Log has
been fully scanned.
This follows the same rebuild pattern as the Cluster Registry
defined in draft-sato-soos-mad Section 5.4. Both registries are
performance projections over the Event Log, not second sources of
truth. INV-7 (the Event Log is the single source of truth)
applies to both.
7.3. Revocation Authority
Only a human-held Party Registry principal may issue
MANDATE_REVOCATION_ISSUED events. The authority_signature field
MUST be an Ed25519 signature by the revoking principal's keypair,
over the canonical JSON of the revocation event (excluding the
kernel_signature field).
The GEC MUST verify the authority_signature field against the
revoking principal's public key in the Party Registry before
committing the MANDATE_REVOCATION_ISSUED event to the Event Log.
An authority_signature that does not verify MUST cause the kernel
to REJECT the revocation attempt without writing any Event Log
entry.
7.4. Agent Revocation Prohibition
An agent MUST NOT issue MANDATE_REVOCATION_ISSUED events. This
prohibition is enforced by the Party Registry principal type check:
only principals flagged as human-held in the Party Registry may
sign revocation events.
This prohibition is absolute. No mandate, Cedar policy, or
operator configuration may grant an agent the authority to revoke
mandates. Mandate revocation is a human-authority operation.
8. Policy Change Attestation (INV-10)
INV-10: The kernel's GEC Manifest MUST be reissued whenever
the Policy Governance Kernel commits a policy set change. A stale
GEC Manifest constitutes a KIA attestation failure.
The policy change sequence is:
(1) The operator or Policy Governance Kernel prepares a new Cedar
policy set.
(2) The Policy Governance Kernel commits the new policy set to
the kernel runtime.
(3) KIA immediately issues a new GEC Manifest with updated
cedar_policy_set_hashes[] and cedar_policy_hash reflecting
the new set.
(4) The new GEC Manifest is published to the kernel API
endpoint.
(5) Subsequent kernel.transition() calls are evaluated under the
new policy set, with the new cedar_policy_ref field in the
STATE_TRANSITION event.
Steps 3 and 5 MUST be atomic with respect to each other: the
kernel MUST NOT evaluate transitions under the new policy set
before issuing the new GEC Manifest, and MUST NOT issue the
new GEC Manifest before the new policy set is committed.
The prior GEC Manifest remains valid for verification of Event
Log entries signed before the policy change. Historical entries
carry the cedar_policy_ref from the policy set active at
evaluation time; verifiers MUST use the manifest whose
cedar_policy_set_hashes[] contains the matching policy_set_id
and version.
9. Federation and Cross-Instance Verification
SOOS deployments may federate: a receiving kernel instance accepts
and verifies Event Log entries produced by a presenting kernel
instance. KIA provides the cryptographic foundation for this
verification.
The receiving kernel MUST:
(a) Obtain the presenting kernel's current GEC Manifest via
the presenting kernel's API endpoint or an operator-
provisioned out-of-band channel.
(b) Verify the GEC Manifest signature against the presenting
kernel's public key fingerprint.
(c) Verify the attestation_certificate in the GEC Manifest
against the presenting operator's root public key (obtained
via operator-to-operator trust establishment).
(d) Check that the soos_conformance_version is compatible.
(e) For each presented Event Log entry, verify the
kernel_signature against the kernel_keypair_fingerprint from
the verified GEC Manifest.
(f) Verify that the cedar_policy_ref in each presented entry
matches a policy_set_id and version recorded in the Kernel
Manifest that was current at the entry's timestamp.
The cross-instance trust establishment protocol (how operators
exchange root public keys and negotiate federation terms) is out
of scope for this document and is deferred to a successor
specification.
10. GEC as RATS Attester
KIA declares the GEC as a RATS Attester as defined in [RFC9334].
The complete role mapping is:
+------------------+------------------------------------------------+
| RATS Role | KIA / SOOS Equivalent |
+------------------+------------------------------------------------+
| Attester | GEC instance (via KIA subsystem) |
| Evidence | GEC Manifest (Section 5.2) |
| Endorser | Operator root keypair holder |
| Endorsement | GEC Attestation Certificate (Section 3.4) |
| Verifier | Inline by Relying Party (standard); separate |
| | KIA Verification Service (high-assurance) |
| Relying Party | Agents submitting mandates; external audit |
| | consumers; federated kernel instances |
| Reference Values | SOOS KernelSpec conformance version string; |
| | expected cedar_policy_set_hashes[] per |
| | deployment |
+------------------+------------------------------------------------+
The GEC Manifest is RATS Evidence extended with SOOS governance-
specific fields. The extension fields are defined in Section 5.2
and MUST be included in every GEC Manifest (CONF-KIA-13). These
fields enable a Relying Party to verify not only the GEC's identity
but also its active policy configuration -- the governance-critical
property that generic RATS Evidence does not specify.
In the standard SOOS deployment model, no separate Verifier service
is required. Relying Parties verify the GEC Manifest inline against
the operator-provisioned operator root public key. A deployment MAY
provision a separate RATS Verifier service; this is RECOMMENDED for
high-assurance deployments subject to regulatory audit requirements.
Implementation note: Operators MAY use CoRIM [RATS-CORIM] to
distribute Reference Values for appraisal of GEC Manifests. This
use is informative and does not affect KIA conformance requirements.
11. Relationship to WIMSE
WIMSE (Workload Identity in Multi-Service Environments) [WIMSE-ARCH]
addresses workload-side identity for workload-to-workload and
workload-to-service authentication. KIA is the governance-kernel-
side complement: WIMSE establishes the identity credential the GEC
presents to external services; KIA attests the policy state the GEC
is running.
The division of responsibility is:
WIMSE: Answers "who is this GEC?" -- the identity credential
presented by the GEC process to agents and services.
KIA: Answers "what is this GEC running?" -- the policy
configuration attestation that makes identity meaningful
for governance.
Implementations SHOULD use WIMSE tokens as the identity credential
format for GEC-to-GEC and GEC-to-service authentication, with KIA
attestation (the GEC Manifest) as the policy-state proof layered
above the WIMSE identity assertion. A receiving kernel that accepts
a WIMSE token from a presenting kernel SHOULD also request and verify
the presenting kernel's current GEC Manifest before accepting cross-
instance Event Log entries (see Section 4.6 and CONF-KIA-12).
SPIFFE SVIDs [SPIFFE-ID] MAY be used as the agent-side identity
credential at Step 0 of the kernel execution sequence, providing a
URI-based workload identity (spiffe://trust-domain/path) verifiable
against a SPIFFE trust domain configured for the operator. SPIFFE
SVIDs and WIMSE tokens are complementary agent-side identity
formats; KIA's GEC Manifest is the kernel-side attestation that
neither replaces.
Note on scope: OQ-S-19 (Agent Runtime Attestation Profile,
Section 13.2) addresses whether agents SHOULD provide WIMSE-based
or RATS-based runtime attestation to the GEC. WIMSE is the primary
candidate framework for resolving OQ-S-19. That resolution is
deferred to a KIA successor document.
12. Conformance
A conforming KIA implementation MUST satisfy all of the following
requirements.
CONF-KIA-01: The GEC MUST generate an Ed25519 keypair at
deployment initialisation. The private key MUST NOT be exported
from the secure element.
CONF-KIA-02: The GEC MUST issue a GEC Manifest at
deployment, after receiving the GEC Attestation Certificate.
CONF-KIA-03: The GEC MUST reissue the GEC Manifest on every
Cedar policy set change committed by the Policy Governance Kernel,
before processing any transition governed by the new policy set.
(INV-10)
CONF-KIA-04: Every Event Log entry MUST carry a kernel_signature
field containing an Ed25519 signature over the canonical JSON of
the event (excluding the kernel_signature field itself), signed
by the GEC keypair. (INV-9)
CONF-KIA-05: An Event Log entry without a valid kernel_signature
MUST be treated as invalid by any verifying party and MUST NOT be
used as evidence in audit, federation, or dispute resolution.
CONF-KIA-06: The Revocation Registry MUST be rebuilt from the
Event Log on kernel restart before processing any mandate
presentations. (INV-11)
CONF-KIA-07: The GEC MUST check the Revocation Registry at
Step 1 of every kernel execution sequence. A mandate whose jti
appears in the Revocation Registry MUST be REJECTED. (INV-11)
CONF-KIA-08: Only a human-held Party Registry principal may issue
MANDATE_REVOCATION_ISSUED events. An agent MUST NOT be permitted
to issue mandate revocations under any mandate, Cedar policy, or
operator configuration.
CONF-KIA-09: The GEC MUST verify the authority_signature on
MANDATE_REVOCATION_ISSUED events before committing them to the
Event Log. An invalid authority_signature MUST cause the kernel
to REJECT the revocation without writing any Event Log entry.
CONF-KIA-10: HEM_INVOKED, HEM_RESOLVED, and HEM_TIMEOUT events
MUST be signed by the KIA keypair (INV-9). The HEMContext
embedded in HEM_INVOKED is part of the permanent signed audit
record.
CONF-KIA-11: The hardware_backed field in the GEC Manifest
MUST accurately reflect whether the GEC keypair is stored in
a hardware secure element. False attestation is a conformance
violation.
CONF-KIA-12: For federation, the receiving kernel MUST verify
the presenting kernel's GEC Manifest signature and
attestation_certificate before accepting cross-instance Event Log
entries.
CONF-KIA-13: Every GEC Manifest MUST include the five RATS
Evidence extension fields defined in Section 5.2:
loaded_policy_ids[], cedar_policy_hash, kernel_version,
attestation_timestamp, and deployment_constraints[] (absent when
no constraints apply). A GEC Manifest missing loaded_policy_ids[],
cedar_policy_hash, kernel_version, or attestation_timestamp is
non-conforming.
CONF-KIA-14: Implementations SHOULD use WIMSE tokens [WIMSE-ARCH]
as the identity credential format for GEC-to-GEC authentication,
with the GEC Manifest as the policy-state attestation layered above
the WIMSE identity credential. Where WIMSE is not available,
implementations MAY use SPIFFE SVIDs [SPIFFE-ID] or operator-
provisioned Ed25519 public key fingerprints as the GEC identity
credential.
CONF-KIA-15: The cedar_policy_hash in the GEC Manifest and the
cedar_policy_hash in the PTD served at ptd_endpoint MUST be
identical. The GEC MUST regenerate the PTD atomically with every
GEC Manifest reissuance triggered by a Cedar policy set change
(Section 5.3(b)). A GEC Manifest and PTD with differing
cedar_policy_hash values is non-conforming. A non-conforming
state MUST generate CAP_TRANSPARENCY_VIOLATION per
[SOOS-CAP] Section 12a.6. See Section 5.5.
13. Open Issues
13.1. OQ-S-18: Deployment Topology
How KIA behaves in non-standard deployment topologies -- in
particular, cloud-native deployments without hardware TPM access,
multi-region deployments where the GEC keypair must be shared or
sharded across availability zones, and containerised deployments
where the secure element is a software HSM -- is unresolved.
The current specification requires hardware backing RECOMMENDED
(not MUST) precisely to accommodate cloud-native deployments. A
deployment topology profile document is required to specify the
acceptable attestation architectures for each deployment class
and the GEC Manifest declarations required for each.
OQ-S-18 is tracked as MEDIUM priority. It does not block single-
instance deployments with hardware HSM backing.
13.2. OQ-S-19: Agent Runtime Attestation Profile
KIA specifies how the GEC attests to agents and verifiers
(the downward-facing direction in the trust chain). The upward-
facing direction -- how agents attest their own runtime state to
the GEC -- is unresolved.
Specifically: when a Class 2 or Class 3 agent presents a mandate
JWT, should the GEC require accompanying attestation evidence
about the agent's runtime environment (e.g., that the agent is
running in a TEE, that the agent's model weights are a known and
approved hash, that the agent process has not been modified since
mandate issuance)?
This is a genuine architectural open question. Requiring agent
runtime attestation closes a significant threat: a compromised
agent runtime that holds a valid mandate. But it imposes
attestation infrastructure requirements on all agent providers,
which may be disproportionate for Class 1 scenarios.
OQ-S-19 is tracked as HIGH priority. It is the primary item
for resolution in a KIA successor document. The RATS architecture
(RFC 9334) and WIMSE workload attestation models are the primary
inputs for OQ-S-19 resolution.
14. Security Considerations
14.1. Private Key Extraction
The security of the entire SOOS audit trail depends on the kernel
keypair private key remaining inside the secure element. An
attacker who extracts the private key can forge any Event Log entry
for any SO. Implementations MUST use hardware-backed key storage
wherever available and MUST document the absence of hardware backing
as a deployment constraint.
14.2. GEC Manifest Forgery
A forged GEC Manifest with an attacker-controlled keypair
fingerprint would cause agents to trust a fraudulent kernel.
The GEC Attestation Certificate (operator-signed) binds the
GEC keypair to the operator identity. A verifier that skips
attestation_certificate verification is vulnerable to Kernel
Manifest forgery. Implementations MUST verify the
attestation_certificate as part of any GEC Manifest
verification procedure.
14.3. Policy Hash Manipulation
The cedar_policy_set_hashes[] in the GEC Manifest commits the
kernel to a specific set of Cedar policies. An attacker who
can modify Cedar policies at runtime without triggering a Kernel
Manifest reissuance can cause the GEC to evaluate transitions
under an unattempted policy set while presenting a stale Kernel
Manifest. INV-10 prevents this: the GEC Manifest MUST be
reissued before the new policy set governs any transition.
Implementations MUST enforce the atomicity of policy commit and
GEC Manifest reissuance.
14.4. Revocation Registry Incompleteness
If the Revocation Registry rebuild on restart is incomplete (e.g.,
due to Event Log corruption or a truncated scan), revoked mandates
may be accepted at Step 1. Implementations MUST complete the full
Event Log scan before accepting any mandate presentations after a
restart. Partial Revocation Registry rebuilds MUST NOT result
in an operational kernel.
14.5. Cascade Revocation Race
In a CASCADE_TO_DESCENDANTS revocation, the GEC adds all
descendant jtis to the Revocation Registry atomically. A non-
atomic implementation risks a window where the parent mandate is
revoked but descendant mandates remain valid. Implementations
MUST add all jtis (parent and all descendants) to the Revocation
Registry in a single atomic operation, consistent with the
MANDATE_REVOCATION_ISSUED event's revoked_mandate_jwt_ids array.
14.6. Implementation Degradation
KIA's security guarantees depend on the GEC keypair being stored
in a hardware secure element (Sections 3.2, 4.1). In environments
without hardware TPM or HSM access -- virtual machines, containers,
cloud functions -- the GEC keypair may fall back to software key
storage. This is a conformance-permitted degradation
(hardware_backed: false) but constitutes a security degradation
relative to the hardware-backed baseline.
Threat: Silent degradation. A deployment that silently falls back
to software key storage without surfacing this to operators or
Relying Parties provides false assurance. An operator who believes
the GEC keypair is hardware-backed when it is not has a misleading
audit trail.
Mitigation requirements:
(a) The GEC Manifest MUST set hardware_backed: false accurately.
False attestation is a conformance violation (CONF-KIA-11).
(b) The GEC SHOULD surface a persistent operator notification at
startup if hardware-backed key storage is not available. The
notification MUST include the deployment constraint and its
implication.
(c) Relying Parties consuming a GEC Manifest with
hardware_backed: false SHOULD treat Event Log entries with
reduced trust. Deployments subject to regulatory audit
requirements SHOULD document this as a known risk.
(d) Deployments using vTPM SHOULD set hardware_backed: true and
MUST record the vTPM type in deployment_constraints[]
(Section 5.2). A Relying Party SHOULD inspect
deployment_constraints[] even when hardware_backed: true,
as a vTPM entry signals weaker isolation guarantees than a
physical HSM.
(e) A deployment that does not meet hardware_backed: true MUST
document this in operational runbooks and MUST NOT represent
the deployment as fully KIA-conformant without qualification.
See also CONF-KIA-11 (false attestation prohibition) and
Section 14.1 (private key extraction).
14.7. Agent Session Revocation
KIA operates within the SOOS session lifecycle model. When an
agent session is revoked -- by operator action, CAEP signal, or
CAP constitutional violation -- KIA's mandate validation
responsibilities (Sections 4.4, 7) are superseded by the MAD
session revocation procedure [SOOS-MAD].
Implementations MUST NOT continue accepting mandate JWTs after
receiving a session revocation signal. All Revocation Registry
entries generated during the revocation event MUST be written with
completion_state PARTIAL or CLEAN per the MAD session revocation
lifecycle specification.
15. IANA Considerations
This document has no IANA actions at this time. A successor
document will define the SOOS GEC Manifest registry and the
Agent Runtime Attestation Profile registry.
16. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/rfc/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in
RFC 2119 Key Words", BCP 14, RFC 8174,
DOI 10.17487/RFC8174, May 2017,
<https://www.rfc-editor.org/rfc/rfc8174>.
[RFC9334] Birkholz, H., Thaler, D., Richardson, M., Smith, N.,
and W. Pan, "Remote ATtestation procedureS (RATS)
Architecture", RFC 9334, DOI 10.17487/RFC9334,
January 2023,
<https://www.rfc-editor.org/rfc/rfc9334>.
[WIMSE-ARCH]
Salomoni, D. et al., "WIMSE Architecture",
draft-ietf-wimse-arch-07, Work in Progress, March 2026.
[SOOS-AEP] Sato, T., "Agent Execution Protocol",
draft-sato-soos-aep-01, Work in Progress, June 2026.
[SOOS-CAP] Sato, T., "Constitutional AI Protocol",
draft-sato-soos-cap-03, Work in Progress, June 2026.
[SOOS-GAR] Sato, T., "Governance Audit Record",
draft-sato-soos-gar-02, June 2026.
[SOOS-HEM] Sato, T., "Human Escalation Mechanism",
draft-sato-soos-hem-04, Work in Progress, June 2026.
[SOOS-MAD] Sato, T., "Multi-Agent Delegation",
draft-sato-soos-mad-02, Work in Progress, June 2026.
[SOOS-MJWT] Sato, T., "Mandate JWT",
draft-sato-soos-mjwt-01, June 2026.
[SOOS-SOV] Sato, T., "Sovereign Object",
draft-sato-soos-sov-01, June 2026.
17. Informative References
[SOOS-IDP] Sato, T., "Intent Declaration Primitive",
draft-sato-soos-idp-04, June 2026.
[RFC8037] Liusvaara, I., "CFRG Elliptic Curve Diffie-Hellman
(ECDH) and Signatures in JSON Object Signing and
Encryption (JOSE)", RFC 8037, DOI 10.17487/RFC8037,
January 2017,
<https://www.rfc-editor.org/rfc/rfc8037>.
[RATS-CORIM]
Birkholz, H. et al., "Concise Reference Integrity
Manifest (CoRIM)", Work in Progress, 2026.
[SPIFFE-ID]
SPIFFE Project, "Secure Production Identity Framework
for Everyone (SPIFFE)", Work in Progress,
draft-ietf-spiffe-spiffe-id, 2026.
[SCITT-ARCH]
Birkholz, H. et al., "An Architecture for Trustworthy
and Transparent Digital Supply Chains",
draft-ietf-scitt-architecture, Work in Progress, 2026.
This appendix situates KIA within the broader attestation and
identity standards landscape. KIA is an application of
established attestation patterns -- primarily RATS (RFC 9334) --
to the specific requirements of a kernel-governed agentic AI
execution environment.
The normative RATS role mapping for KIA is specified in Section 10.
This appendix provides additional context on the RATS architecture
for readers unfamiliar with RFC 9334.
The Remote ATtestation procedureS (RATS) architecture [RFC9334]
defines a general model for remote attestation: an Attester
produces Evidence, an Endorser vouches for the Attester, a
Verifier appraises Evidence against Reference Values to produce
Attestation Results, and a Relying Party consumes Attestation
Results.
KIA implements the RATS model with the following mapping:
Attester: The GEC (via KIA).
Endorser: The operator root keypair holder.
Evidence: The GEC Manifest.
Endorsement: The GEC Attestation Certificate.
Verifier: Any party checking the GEC Manifest
(agents, federated kernels, auditors).
Relying Party: Agents submitting mandates; receiving kernel
instances; audit consumers.
The primary divergence from the generic RATS model is that SOOS
does not require a separate Verifier service. Verification is
performed inline by the relying party (agent or receiving kernel)
against the GEC Manifest directly. This is appropriate for
the SOOS deployment model, where the kernel and its agents
operate in a controlled operator domain.
A successor document (OQ-S-18 / OQ-S-19) will address whether a
RATS Verifier service is warranted for high-assurance deployment
topologies.
B.2. WIMSE
The normative WIMSE integration statement for KIA is in Section 11.
This appendix provides additional context on the WIMSE working
group scope and the OQ-S-19 open question.
The Workload Identity and Minimal Security for Environments (WIMSE)
working group defines how workloads -- long-running, machine-
operated processes including AI agents -- establish cryptographic
identity and present that identity for authentication. WIMSE's
primary deliverable is a JOSE-bound token format carrying workload
identity with caller-identity binding.
WIMSE and KIA address complementary directions in the SOOS trust
chain. WIMSE handles agent-to-kernel and agent-to-service
identity: how an agent proves to the GEC who it is before the
kernel validates its mandate. KIA handles kernel-to-everything
identity: how the GEC proves to agents, to auditors, and to
federated kernels that it is a genuine, conforming GEC
running the expected policy configuration.
A conforming SOOS deployment SHOULD use WIMSE tokens (or SPIFFE
SVIDs) as the agent identity credential at Step 1 of the kernel
execution sequence, complementing the mandate JWT. This resolves
OQ-S-19 (Agent Runtime Attestation Profile) at the identity layer,
though the full runtime attestation question (attesting agent model
weights or TEE execution) remains open.
B.3. SPIFFE / SPIRE
The SPIFFE Identity Framework provides a URI-based workload
identity standard (spiffe://trust-domain/path) with X.509-
and JWT-based credential formats (SVIDs). SPIRE is the reference
implementation.
In the SOOS Party Registry, agent identities are Ed25519 public
key fingerprints. A SPIFFE SVID could serve as the agent-
authentication credential at Step 0 of the kernel execution
sequence (pre-mandate presentation), with the GEC verifying the
SVID against a SPIFFE trust domain configured for the operator.
SPIFFE/SPIRE is the natural complement to WIMSE for agent identity
in SOOS deployments. Neither replaces KIA: both address the
agent side of the trust chain; KIA addresses the kernel side.
B.4. SCITT
The Supply Chain Integrity, Transparency and Trust (SCITT)
architecture defines a transparency log model: signed statements
about supply chain artifacts are appended to an append-only,
auditable log, with inclusion proofs enabling verifiers to check
that a statement was accepted by the transparency service.
draft-sato-soos-gar (Governance Audit Record) is the SOOS
integration of SCITT: KIA-signed SOOS Event Log entries are
submitted to a SCITT transparency service as COSE-signed
statements, providing third-party verifiable inclusion proofs for
the SOOS audit trail.
KIA is the signing layer that makes GAR possible: GAR submits
KIA-signed events to SCITT. Without KIA's INV-9 guarantees, the
SCITT statements would not carry a verifiable kernel identity
binding. KIA and GAR are designed as a pair.
B.5. TCG TPM and Hardware Attestation
The Trusted Computing Group (TCG) Trusted Platform Module (TPM)
specifications define the hardware security device model on which
KIA's hardware root requirement is based. TPM 2.0 provides
Platform Configuration Registers (PCRs) for measuring the
software stack, endorsement keys for hardware identity, and
attestation keys for signing Evidence.
KIA's hardware_backed field and the hardware root layer in the
trust chain (Section 3.2) directly reference the TCG model.
Deployments using TPM 2.0 SHOULD use the TPM endorsement key as
the hardware root from which the operator root keypair derives
its hardware backing.
The CoRIM (Concise Reference Integrity Manifest) format [RATS-CORIM]
is a candidate future format for distributing the SOOS Reference
Values that RATS Verifiers would appraise GEC Manifests against.
This is deferred to the OQ-S-18 deployment topology specification.
B.6. SOOS Companion Drafts
KIA is one of twelve SOOS IETF individual submissions. The drafts
that directly depend on KIA are:
draft-sato-soos-gar-02 Governance Audit Record. Submits KIA-
signed Event Log entries to a SCITT
transparency service. GAR is the
external audit consumer of KIA.
draft-sato-soos-mad-02 Multi-Agent Delegation. All cluster
events (Section 6.1) are signed by KIA.
The mandate issuance tree in MAD depends
on the Party Registry, which is managed
by the same kernel that KIA signs for.
draft-sato-soos-hem-04 Human Escalation Mechanism. HEM_INVOKED,
HEM_RESOLVED, and HEM_TIMEOUT are KIA-
signed (CONF-KIA-10). The human
principal_signature in HEMDecision is
wrapped by the KIA kernel_signature.
draft-sato-soos-aep-01 Agent Execution Protocol. AEP_SENSE_
DELIVERED and AEP_SESSION_CLOSED are
KIA-signed (Section 6.1).
draft-sato-soos-mjwt-01 Mandate JWT. INV-11 (the Revocation
Registry) is a KIA responsibility
(Section 7). MANDATE_REVOCATION_ISSUED
is KIA-signed. The MJWT aud claim MUST
be bound to the kernel_keypair_fingerprint
retrieved from the GEC Manifest (Section
5.2).
This appendix provides structured machine-readable references to
support AI-assisted implementation of KIA. Informative.
C.1. Protocol Summary
Protocol: Kernel Identity and Attestation (KIA)
Version: draft-sato-soos-kia-01
Family: SOOS protocol suite
Role: Layer 0 signing and attestation -- GEC keypair management,
GEC Manifest issuance, Event Log signing (INV-9), and
Revocation Registry maintenance (INV-11)
Status: Standards Track
Stack position: Below Cedar and all other SOOS protocols.
Depended upon by GAR (audit signing), MJWT
(revocation registry), MAD (cluster event signing),
and HEM (HEM event signing).
C.2. Key Identifiers
Trust chain: Hardware Root -> Operator Root Keypair ->
GEC Attestation Certificate -> GEC Manifest ->
Event Log entries -> Cedar evaluations -> Sovereign Objects
GEC Manifest fields (RATS Evidence extension):
loaded_policy_ids[], cedar_policy_hash, kernel_version,
attestation_timestamp, deployment_constraints[]
Conformance identifiers: CONF-KIA-01 through CONF-KIA-15
Invariants: INV-9 (Event Log signing), INV-10 (policy change
attestation), INV-11 (Revocation Registry)
Open issues: OQ-S-18 (deployment topology), OQ-S-19 (agent
runtime attestation profile)
C.3. Canonical Reference
Specification: https://soosproject.ai/drafts/kia
Datatracker: https://datatracker.ietf.org/doc/draft-sato-soos-kia/
Stack overview: https://soosproject.ai/stack
Acknowledgements
The KIA trust chain architecture is modelled on the RATS
architecture defined in RFC 9334 and the SPIFFE identity framework.
The hardware attestation model follows TCG TPM 2.0 specifications.
The SCITT integration in Appendix B.4 builds on the
draft-ietf-scitt-architecture design. The authors thank the RATS
Working Group, the WIMSE Working Group, and the SCITT community
for foundational work that made KIA's design possible.
Author's Address
Tom Sato
MyAuberge K.K.
Chino, Nagano, Japan
Email: tomsato@myauberge.jp
URI: https://soosproject.ai/drafts/kia