<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc
  ipr="trust200902"
  category="exp"
  submissionType="IETF"
  docName="draft-madaras-preauth-receipts-00"
  version="3">

  <front>
    <title abbrev="PRE-RCT">
      PRE-RCT: Pre-Execution Authorization Receipt Format
    </title>

    <author fullname="Tom Madaras" initials="T." surname="Madaras">
      <organization>GuardSuite, VXMSecure</organization>
      <address>
        <postal>
          <city>Hollywood</city>
          <region>FL</region>
          <country>USA</country>
        </postal>
        <email>tom@vxmsecure.com</email>
      </address>
    </author>

    <author fullname="Pat Estis" initials="P." surname="Estis">
      <organization>GuardSuite, VXMSecure</organization>
      <address>
        <postal>
          <city>Houston</city>
          <region>TX</region>
          <country>USA</country>
        </postal>
        <email>pat.estis@gmail.com</email>
      </address>
    </author>

    <date year="2025" month="December" day="3"/>

    <abstract>
      <t>
        This document defines PRE-RCT, the Pre-Execution Authorization
        Receipt, a cryptographically signed and attestation-aware
        receipt format used to record high-risk authorization events.
        PRE-RCT is intended for use with pre-execution authorization
        protocols such as GNA.
      </t>
    </abstract>
  </front>

  <middle>

    <section anchor="intro">
      <name>Introduction</name>
      <t>
        Pre-execution authorization systems require durable, verifiable
        records capturing action parameters, policy state, approver
        decisions, and attestation evidence at the moment of
        authorization. PRE-RCT defines a standard structure to support
        interoperability, auditing, compliance, and long-term integrity.
      </t>
    </section>

    <section anchor="reqs">
      <name>Requirements Language</name>
      <t>
        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&nbsp;14
        (<xref target="RFC2119"/>, <xref target="RFC8174"/>)
        when, and only when, they appear in all capitals, as shown here.
      </t>
    </section>

    <section anchor="goals">
      <name>Design Goals</name>
      <t>
        PRE-RCT is intended to:
      </t>
      <t>
        * Provide strong non-repudiation.
      </t>
      <t>
        * Bind action parameters to policy state.
      </t>
      <t>
        * Support HAE attestation evidence.
      </t>
      <t>
        * Support N-of-M approvals.
      </t>
      <t>
        * Be portable across authorization systems.
      </t>
    </section>

    <section anchor="structure">
      <name>Receipt Structure</name>
      <t>
        PRE-RCT defines a structured object with required fields and
        optional domain extensions. The receipt MUST be integrity
        protected and cryptographically signed.
      </t>
    </section>

    <section anchor="fields">
      <name>Required Fields</name>
      <t>
        The following fields MUST be present:
      </t>
      <t>receipt_id</t>
      <t>action_hash</t>
      <t>policy_hash</t>
      <t>approver_identities</t>
      <t>approver_signatures</t>
      <t>timestamp</t>
      <t>execution_token</t>
      <t>hae_masking_profile_id</t>
      <t>hae_attestation_token</t>
      <t>context_snapshot (OPTIONAL)</t>
    </section>

    <section anchor="verify">
      <name>Verification</name>
      <t>
        Verifiers SHOULD:
      </t>
      <t>
        * Validate structural integrity.
      </t>
      <t>
        * Verify all digital signatures.
      </t>
      <t>
        * Recompute and compare action_hash and policy_hash.
      </t>
      <t>
        * Validate attestation tokens if present.
      </t>
      <t>
        * Enforce timestamp bounds and replay protection.
      </t>
    </section>

    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>
        This document has no IANA actions.
      </t>
    </section>

    <section anchor="security">
      <name>Security Considerations</name>
      <t>
        PRE-RCT improves auditability and tamper-evidence but does not
        prevent collusion, coercion, or compromise below the firmware
        root of trust. Implementations MUST protect receipt
        confidentiality and integrity.
      </t>
    </section>

  </middle>

  <back>
    <references>
      <name>Normative References</name>

      <reference anchor="RFC2119" target="https://www.rfc-editor.org/rfc/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials="S." surname="Bradner" fullname="Scott Bradner"/>
          <date year="1997" month="March"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
      </reference>

      <reference anchor="RFC8174" target="https://www.rfc-editor.org/rfc/rfc8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author initials="B." surname="Leiba" fullname="Barry Leiba"/>
          <date year="2017" month="May"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
      </reference>

    </references>
  </back>

</rfc>
