Supply Chain Integrity, Transparency, and Trust E. Moore Internet-Draft CIRIS L3C Intended status: Informational 21 October 2026 Expires: 24 April 2027 Signed Attestation Rows of the CIRIS Epistemic Grammar and Their Relationship to SCITT draft-moore-scitt-ciris-ceg-00 Abstract The CIRIS Epistemic Grammar (CEG) records claims between parties as signed rows. Each row is one JSON object, canonicalised with the JSON Canonicalization Scheme (JCS) and signed twice: once with Ed25519 and once with ML-DSA-65, where the ML-DSA-65 signature covers the canonical bytes followed by the Ed25519 signature. Every row has one of five types: a claim, a delegation, a replacement, a withdrawal, or a recantation. A node admits a row only after a fixed set of checks, and it refuses a failing row with a named reason. This document specifies the signed object, the signing input, the signature construction, and the admission checks, so that a second implementation can produce and verify the same bytes. It then describes how these rows relate to the roles of the SCITT architecture (RFC 9943), and where they differ from a SCITT Transparency Service. It defines no new SCITT mechanism and requests no IANA action. About This Document This note is to be removed before publishing as an RFC. The latest revision of this draft can be found at https://github.com/CIRISAI/CIRISConstitution/tree/main/ietf. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-moore-scitt-ciris-ceg/. Source for this draft and an issue tracker can be found at https://github.com/CIRISAI/CIRISConstitution. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Moore Expires 24 April 2027 [Page 1] Internet-Draft CEG Attestation Rows and SCITT October 2026 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 24 April 2027. 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. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2. Requirements Language . . . . . . . . . . . . . . . . . . 4 1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 2. The Signed Object . . . . . . . . . . . . . . . . . . . . . . 6 2.1. Members of a Row . . . . . . . . . . . . . . . . . . . . 6 2.2. The Mirror . . . . . . . . . . . . . . . . . . . . . . . 7 2.3. Members of the Signed Object . . . . . . . . . . . . . . 8 3. The Five Row Types . . . . . . . . . . . . . . . . . . . . . 8 4. The Signing Input . . . . . . . . . . . . . . . . . . . . . . 9 4.1. Absent, Never Null, Never Materialised . . . . . . . . . 9 4.2. Arrays . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.3. Strings That Carry Bytes . . . . . . . . . . . . . . . . 10 4.4. Instants . . . . . . . . . . . . . . . . . . . . . . . . 10 4.5. Numbers . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.6. Size . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.7. The Content Hash . . . . . . . . . . . . . . . . . . . . 11 5. Signatures . . . . . . . . . . . . . . . . . . . . . . . . . 11 5.1. The Hybrid Signature . . . . . . . . . . . . . . . . . . 11 5.2. Cosignatures . . . . . . . . . . . . . . . . . . . . . . 12 Moore Expires 24 April 2027 [Page 2] Internet-Draft CEG Attestation Rows and SCITT October 2026 5.3. Keys . . . . . . . . . . . . . . . . . . . . . . . . . . 12 6. Admission as a Registration Policy . . . . . . . . . . . . . 13 6.1. Who May Withdraw a Row . . . . . . . . . . . . . . . . . 14 7. The Safety Model the Rows Carry . . . . . . . . . . . . . . . 15 7.1. Two Planes . . . . . . . . . . . . . . . . . . . . . . . 15 7.2. Consent-Bounded Flow . . . . . . . . . . . . . . . . . . 16 7.3. Accountable Key Relationships . . . . . . . . . . . . . . 16 7.4. A Bounded Human Halt . . . . . . . . . . . . . . . . . . 17 7.5. What Is Not Claimed . . . . . . . . . . . . . . . . . . . 17 8. Relationship to SCITT . . . . . . . . . . . . . . . . . . . . 17 8.1. Roles . . . . . . . . . . . . . . . . . . . . . . . . . . 18 8.2. Differences . . . . . . . . . . . . . . . . . . . . . . . 18 9. Lifecycle of an Agent Decision . . . . . . . . . . . . . . . 19 10. Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . 19 11. Implementation Status . . . . . . . . . . . . . . . . . . . . 20 12. Security Considerations . . . . . . . . . . . . . . . . . . . 20 13. Privacy Considerations . . . . . . . . . . . . . . . . . . . 21 14. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 15. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 15.1. Normative References . . . . . . . . . . . . . . . . . . 22 15.2. Informative References . . . . . . . . . . . . . . . . . 23 Appendix A. CDDL . . . . . . . . . . . . . . . . . . . . . . . . 25 Appendix B. Test Vectors . . . . . . . . . . . . . . . . . . . . 29 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 30 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 30 1. Introduction CEG is the row format of the CIRIS system, in which people, devices, communities and AI agents make claims about each other and act on them. It is defined normatively in the CIRIS Constitution [CC]. This document restates the parts of that definition that another implementation needs in order to interoperate at the byte level. Three goals shape the format: * Any party holding a row can recompute its signing bytes exactly. Signatures are over a canonical form, and every point where JSON or JCS would let one encoding produce two byte strings is fixed. Two encodings of one meaning can still exist (an explicit default, or a one-element scope written as a string); they are different rows with different bytes, and both verify (Section 4). * Rows exchanged between nodes have to resist forgery by an attacker with a quantum computer. Every such row carries an ML-DSA-65 signature [FIPS204] beside the Ed25519 signature [RFC8032], and both MUST verify. Moore Expires 24 April 2027 [Page 3] Internet-Draft CEG Attestation Rows and SCITT October 2026 * The set of row types is closed, so that every row is subject to the same admission rules. New kinds of claim are new values of dimension, never new types. SCITT [RFC9943] defines an architecture for registering signed statements with a Transparency Service and returning receipts that prove registration. CEG rows play a similar role in their own system, but the two were designed separately and differ in encoding and in how proofs are delivered. Section 8 describes the relationship. A COSE encoding of CEG rows is out of scope; Section 8 says what one would need to cover. 1.1. Scope In scope: * the signed object of an attestation row and its member set (Section 2); * the five row types (Section 3); * the canonical signing input (Section 4); * the hybrid signature and cosignatures (Section 5); * the admission checks, written as a SCITT Registration Policy (Section 6). Informative only: * the safety properties the rows carry (Section 7); * the relationship to SCITT roles (Section 8); * the lifecycle of an agent's decision record (Section 9). Out of scope: the transport between nodes, the storage schema, the meaning of individual claim families (the "dimension" namespace), and the governance rules that decide who may hold which role. [CC] defines each of these. 1.2. Requirements Language The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "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, as shown here. Moore Expires 24 April 2027 [Page 4] Internet-Draft CEG Attestation Rows and SCITT October 2026 1.3. Terminology This document uses the terms Issuer, Signed Statement, Transparency Service, Registration Policy, Receipt, Transparent Statement, and Relying Party as defined in [RFC9943]. It also uses: Row: One signed attestation. On the wire it is a JSON object [RFC8259] that carries the signed object and members beside it. Signed object: The JSON object named attestation_envelope inside a row. Its JCS image is the signing input. Nothing else in the row is signed. Attester: The key that signs a row's signed object. It plays the SCITT Issuer role. Subject: A party a row is about. attested_key_id names the primary subject; subject_key_ids lists any others, including parties that have no key. Producer, Consumer, Substrate: A Producer emits rows. A Consumer verifies and reads rows. A Substrate stores and relays rows and applies the admission checks. One node is usually all three. Refusal token: A fixed, case-sensitive ASCII string that names why a row was refused, so that two implementations agree on a refusal as well as on an acceptance. The tokens of [CC] are either all lowercase or all uppercase, and are compared byte for byte. A refusal of the shape of a row uses the token federation_malformed_row together with a reason from a closed set; "refused with reason R" in this document means that token with reason R. Local tier, federation tier: A row at the local tier stays on the node that wrote it and is not replicated. A row at the federation tier may leave the node. Promotion from the local tier to the federation tier adds the ML-DSA-65 signature and does not change the signing input, so a promoted row is byte-identical to one written at the federation tier. key_id: A key identifier of the form