<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.1.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-morrison-ot-command-authority-03" category="info" submissionType="independent" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="OT Command Authority">Consented and Attributable Agent Authority for Operational-Technology Control Actions</title>
    <seriesInfo name="Internet-Draft" value="draft-morrison-ot-command-authority-03"/>
    <author fullname="Blake Morrison">
      <organization>Alter Meridian Pty Ltd</organization>
      <address>
        <email>blake@truealter.com</email>
      </address>
    </author>
    <author fullname="Christopher Whiteside">
      <organization>Independent</organization>
      <address>
        <email>cwhiteside.engineering@gmail.com</email>
      </address>
    </author>
    <author fullname="Iman Schrock">
      <organization>EMILIA Protocol, Inc.</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>team@emiliaprotocol.ai</email>
      </address>
    </author>
    <date year="2026" month="September" day="30"/>
    <area>Security</area>
    <workgroup>Independent Submission</workgroup>
    <keyword>operational technology</keyword>
    <keyword>industrial control systems</keyword>
    <keyword>agent identity</keyword>
    <keyword>authorization</keyword>
    <keyword>audit</keyword>
    <abstract>
      

<t>This memo specifies a binding profile by which a control action issued
to an operational-technology (OT) or industrial control system on the
authority of a software agent is refused unless it carries a verifiable
statement of who the agent is, which human principal it acts for,
whether that principal authorised this specific action on this specific
asset, whether a named human signed off on the action where its risk
class requires it, and an append-only record sufficient to attribute
the action afterward.  The profile does not invent new cryptography or a
new identity mechanism.  It composes primitives specified elsewhere,
DNSSEC-rooted agent discovery, a scoped and revocable authorisation
grant, a named-human authorization receipt bound into the record as
human-authorization evidence, and an append-only transparency record,
into a single structure, the Command Authority Envelope, that an
enforcement point evaluates and, on any missing or invalid binding,
refuses.  The profile is availability-first and fails closed on
authority, never on safety: it <bcp14>MUST NOT</bcp14> be placed in the trip path of a
safety function.  The memo maps the profile onto the identification,
use-control, and audit requirements that the IEC 62443 and NERC CIP
frameworks state but do not give a wire mechanism for.  A neighbouring
proposal gates safety-critical commands on an agent's trust level; this
profile takes the opposite position, and states why.  The methods by
which a principal's identity is inferred are out of scope by
construction.</t>
    </abstract>
  </front>
  <middle>
    

<section anchor="introduction">
      <name>Introduction</name>
      <t>Two bodies of standards work are moving quickly in parallel, and they
do not meet.</t>
      <t>One is agent identity for the enterprise cloud.  A software agent that
acts for a person or an organisation is being given a verifiable
identity and a way to authenticate itself, composing existing web and
workload-identity primitives.  The web-bot-auth effort <xref target="WEBBOTAUTH"/>
specifies how an automated agent authenticates itself over HTTP using
HTTP Message Signatures <xref target="RFC9421"/>, and it deliberately
declines to bind that key to a human principal.  This work is real and
useful, and it is scoped to general information systems.  It does not
address operational technology.</t>
      <t>The other is operational-technology security.  Frameworks such as
<xref target="IEC62443"/>, <xref target="SP80082"/>, and the <xref target="NERCCIP"/> reliability standards govern
the industrial control systems that run the electric grid, water,
pipelines, and manufacturing.  They require that actors be identified
(the identification and authentication control family), that use be
controlled (the use-control family), and that consequential actions be
auditable.  They state these as requirements.  They do not specify a
wire mechanism by which an agent-originated command carries the proof
that satisfies them, and the installed base of control protocols
(Modbus, DNP3, and their peers) authenticates a command largely by its
position on the network rather than by anything the sender proved.</t>
      <t>The gap between the two is specific and, at present, unserved: there is
no interoperable way for a command issued to a control system on the
authority of an agent to carry a revocable, auditable, principal-bound
statement of the authority under which it is issued, such that an
enforcement point can refuse the command when that statement is absent
or invalid.  An agent that can write a setpoint to a turbine, open a
breaker, or change a treatment dose is a workload whose authority to do
so must be provable, scoped, revocable, and attributable after the
fact, at stakes where a wrong action is a physical event rather than a
corrupted record.</t>
      <t>This memo specifies that binding.  It introduces no new identity
mechanism.  It composes primitives specified in separate memos into one
envelope, the Command Authority Envelope (CAE), that accompanies an
agent-originated OT control action, and it specifies the fail-closed
behaviour of an enforcement point that evaluates it.</t>
      <t>Applicability.  The operating condition this profile is written for is a
plant that must keep its critical services running through a sustained
loss of external connectivity, whether that loss is permanent by design
or produced by an isolation event.  This is the assumed case rather than
an exception the profile tolerates.  Nothing in the envelope requires a
network path beyond the conduit at the moment of evaluation: an encoding
<bcp14>MUST</bcp14> be verifiable offline against cached trust anchors with declared
staleness bounds (Section 7), which covers the agent key material, the
approver directory and the transparency-log checkpoint alike (Section 8).
Where a bound is exceeded the enforcement point fails closed on
authority, and never on safety (Section 6).</t>
      <t>Scope.  The actions this profile is written for are those requiring an
auditable point in time that ties the user, the command and the
authorisation together: an operator-requested process stop outside the independent safety path, a setpoint pushed outside
normal operating parameters, the starting or stopping of a process.  More
generally, it addresses deployments where traditional control protocols
are in use but additional controls on the authorisation of commands are
required.  It is not a general mechanism for machine-to-machine
communication within a plant operating inside its set boundaries.</t>
      <section anchor="a-neighbouring-proposal-and-where-this-profile-parts-from-it">
        <name>A neighbouring proposal, and where this profile parts from it</name>
        <t>One other Internet-Draft addresses agent authority for industrial
control directly.  <xref target="SHARIFICS"/> applies an agent-trust transport to
Modbus/TCP, OPC UA, MQTT, and CoAP, mandates ECDSA message signing over
those protocols, and maps agent trust levels to the Security Levels of
<xref target="IEC62443"/>.  It supplies, in concrete wire form, much of the transport
binding this memo defers (Section 7), and a deployment that wants a
worked control-protocol encoding today will find one there.</t>
        <t>On one point the two proposals disagree, and the disagreement is this
memo's central claim.  <xref target="SHARIFICS"/> gates safety-critical commands on the
agent's trust level: a command to a safety-classified point is rejected
when the issuing agent presents an insufficient trust level.  This memo
forbids exactly that (Section 6).  A safety function's right to bring or
hold the process in a safe state, and its right to refuse an unsafe
command on its own criteria, <bcp14>MUST NOT</bcp14> be made to depend on the
resolution, verification, or trust level of any agent credential.
Gating a safety command on an identity check makes the safety function
unavailable precisely when the identity infrastructure is degraded, and
that is a safety regression introduced in the name of security.  The two
proposals can compose on everything below the safety boundary: agent
signing, trust-level-to-Security-Level mapping, and the per-protocol
envelopes are complementary to the bindings this memo defines.  They
cannot compose across the safety boundary, and this memo places that
boundary where an OT safety case requires it and <xref target="SHARIFICS"/> does not.</t>
        <t>The unclaimed ground this memo occupies is the coupling: a consented,
resolvable, human-principal authority, plus a named-human authorization
at the moment of consequence, plus an attributable append-only record,
drawn into a single enforcement-point-evaluated, risk-class-graded,
fail-closed refusal profile whose defining axiom is that a safety
function is never gated on any of it.  Each of the five primitives is
specified elsewhere.  The refusal profile and the safety carve-out are
the contribution.</t>
      </section>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
"<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and
"<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described in
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>
      <t>This document uses the following terms.</t>
      <dl>
        <dt>Agent:</dt>
        <dd>
          <t>A software actor that issues a control action to an OT system.  An
agent is a workload with a discoverable identity, not a human.</t>
        </dd>
        <dt>Principal:</dt>
        <dd>
          <t>The human, or the organisation acting through a human, on whose
authority the agent issues an action.  The principal is the party
that issues the authorisation grant (Section 3.3) under which the
agent acts.</t>
        </dd>
        <dt>Approver:</dt>
        <dd>
          <t>A named, accountable human who signs off on a specific control action
at the moment of consequence, per <xref target="EPRECEIPTS"/>.  The approver need not
be the principal, and for a consequential action <bcp14>SHOULD NOT</bcp14> be the
agent that initiated the action.</t>
        </dd>
        <dt>Control action:</dt>
        <dd>
          <t>A request that changes, or commands the change of, the state of a
physical process or of a device that governs one: a setpoint write,
a breaker operation, a mode change, a dose change.  A read-only
observation is not a control action for the purposes of this memo.
Where a deployment elects to apply this profile to reads, it does so
under the Observe class (Section 5).</t>
        </dd>
        <dt>Conduit:</dt>
        <dd>
          <t>In the sense of <xref target="IEC62443"/>, the communication path between zones
across which a control action travels.  This profile is enforced at
the conduit, by the evaluating function this memo calls the
enforcement point.</t>
        </dd>
        <dt>Enforcement point:</dt>
        <dd>
          <t>The function, resident on or at the boundary of a conduit, that
evaluates the CAE of an agent-originated control action and refuses
the action on any missing or invalid binding.  This memo gives the
function its own name because <xref target="IEC62443"/> uses "conduit" for a channel
grouping rather than for an evaluating function, and the two need to
be distinguishable in a sentence.  The enforcement point is the
conduit's evaluating function; it is not a different place.</t>
        </dd>
        <dt>Command Authority Envelope (CAE):</dt>
        <dd>
          <t>The structure defined in this memo that a control action <bcp14>MUST</bcp14> carry to
be accepted by an enforcement point that implements this profile.</t>
        </dd>
        <dt>Authorisation grant:</dt>
        <dd>
          <t>A scoped, revocable object, signed by the principal, that authorises a
named agent to perform a named control verb on a named asset until a
stated expiry (Section 3.3).</t>
        </dd>
        <dt>Binding moment:</dt>
        <dd>
          <t>A named human's signed authorization of one exact control action at
the moment of consequence, carried as human-authorization evidence
(Section 3.4).  The evidence is the receipt; the interaction that
produces it <bcp14>MAY</bcp14> be delivered through the briefing-and-binding envelope
of <xref target="BINDINGMOMENT"/>.</t>
        </dd>
        <dt>Risk class:</dt>
        <dd>
          <t>The category assigned to a control action by its potential physical
consequence, which determines which bindings the CAE <bcp14>MUST</bcp14> carry.</t>
        </dd>
        <dt>Safety function:</dt>
        <dd>
          <t>A function whose purpose is to bring or hold the process in a safe
state, including a safety-instrumented system (SIS).  Safety functions
are explicitly outside the authority path of this profile (Section 6).</t>
        </dd>
      </dl>
    </section>
    <section anchor="the-command-authority-envelope">
      <name>The Command Authority Envelope</name>
      <t>A control action issued on the authority of an agent to an enforcement
point that implements this profile <bcp14>MUST</bcp14> carry a Command Authority
Envelope.  The CAE is a signed structure carried alongside the control
action.  The bindings it carries are listed below; the mapping from each
binding to the composed artefact that supplies its concrete fields is in
Section 7.  The CAE binds five things.</t>
      <section anchor="agent-identity">
        <name>Agent identity</name>
        <t>The CAE <bcp14>MUST</bcp14> identify the issuing agent by a discoverable identifier
whose key material is resolvable and verifiable independently of the
enforcement point.  A deployment reachable from public DNS <bcp14>SHOULD</bcp14>
resolve the agent identifier per <xref target="MCPDNS"/>, for which verification is
DNSSEC-rooted and fails closed when DNSSEC is absent.  The agent's
request signature <bcp14>MUST</bcp14> be verifiable per <xref target="RFC9421"/>, consistent with
<xref target="WEBBOTAUTH"/>.  This binding answers "which machine issued this", and
nothing more; on its own it is insufficient, which is the gap the
web-bot-auth effort leaves open by design.</t>
      </section>
      <section anchor="principal-reference">
        <name>Principal reference</name>
        <t>The CAE <bcp14>MUST</bcp14> carry a reference to the principal on whose authority the
agent acts.  The reference is a resolvable identity handle, not a bare
string.  This binding is the one the agent-authentication layer
deliberately omits: it names the human behind the machine.  A control
action whose CAE names no principal <bcp14>MUST</bcp14> be treated as principal-less
and refused at any risk class above the lowest (Section 5).</t>
      </section>
      <section anchor="authorisation-grant">
        <name>Authorisation grant</name>
        <t>The CAE <bcp14>MUST</bcp14> carry a reference to a scoped, revocable authorisation
grant, issued and signed by the principal, that authorises this action.
The grant <bcp14>MUST</bcp14> name the specific asset (the zone, conduit, device, or
point), the specific control verb it authorises, and the specific agent
authorised to exercise it, and it <bcp14>MUST</bcp14> carry an expiry.  A grant that
names a broader scope than the action does not satisfy this requirement
more strongly; it satisfies it exactly to the overlap, and an
enforcement point <bcp14>MUST</bcp14> evaluate coverage against the specific action,
not against the grant's breadth.  Authority is captured against the
action, not inferred from an operator's one-time enrolment.</t>
        <t>This section states conformance requirements, not one mandated object.
Any grant artefact meeting the requirements below is a conforming
filler, and this memo names the fillers known to it without preferring
one.  A conforming authorisation grant:</t>
        <t>G1.  is signed by the principal whose authority the action invokes;</t>
        <t>G2.  names the asset, the control verb, and the authorised agent;</t>
        <t>G3.  carries an expiry;</t>
        <t>G4.  is content-addressed, so that a record can reference exactly the
     grant that was in force;</t>
        <t>G5.  is revocable, and permits an enforcement point to establish its
     revocation state or to refuse for want of it; and</t>
        <t>G6.  permits an enforcement point to evaluate coverage against the
     specific action and to fail closed, under a distinguishable
     reason, on any requirement it cannot meet.</t>
        <t>Two fillers are known at the time of writing, and neither is privileged
by this memo.</t>
        <t>EP-CONSENT-GRANT-v1 <xref target="EPCONSENTGRANT"/> meets G1 and G3 through
G6, and needs an authorised-agent profile and check before it meets G2.  It
is a signed standing grant naming an asset, a control verb, and an expiry,
content-addressed by a grant hash, revocable by a revocation statement
against that hash, and its verifier refuses under distinct reasons for
signature, validity window, revocation, asset, verb, and grant-binding
failures.  G2 requires the grant to name the authorised agent, and this
filler does not yet define or check that binding; its asset, verb and
validity checks are unaffected.  Current revocation status at an enforcement
point depends on that point's freshness policy (Section 8), and offline
signature verification alone does not establish it.
<xref target="EPCAEPROFILE"/> maps it against the authorisation-grant,
binding-moment and audit-record bindings of this memo.  It is, so far as
the authors are aware, the first artefact specified and implemented against
this row.</t>
        <t>The grant of <xref target="CONSENT"/> does not meet G2 as it stands.  It authorises a
reader to READ an attribute about a data subject and is signed by that
subject, so it grants a read of an attribute rather than a command over
an asset, and it requires profiling with asset, verb, and
authorised-agent fields before it fills this row.</t>
        <t>The distinction is worth stating plainly, because the two objects are
easily confused.  The grant of this section authorises an agent to ACT
on an asset and is signed by the principal whose authority the action
invokes.  The grant of <xref target="CONSENT"/> authorises a read and is signed by the
data subject.  The two carry the same revocation and content-addressing
machinery and the same signed-by-the-authorising-party discipline; they
differ in what they authorise and in who signs.  The principal of this
memo and the subject of <xref target="CONSENT"/> are different roles occupying the
signer slot of two different objects.</t>
      </section>
      <section anchor="binding-moment">
        <name>Binding moment</name>
        <t>For a control action whose risk class requires it (Section 5), the CAE
<bcp14>MUST</bcp14> carry an authorisation artefact that binds a named, accountable
human to this exact action before the action executes.  The artefact is
bound into the CAE as human-authorization evidence per <xref target="HUMANAUTHBIND"/>,
and the bound evidence is an authorization receipt per <xref target="EPRECEIPTS"/>, or
an equivalent artefact carrying the same properties.</t>
        <t>The artefact <bcp14>MUST</bcp14> satisfy, at the enforcement point, the binding
requirements of <xref target="HUMANAUTHBIND"/>:</t>
        <ul spacing="normal">
          <li>
            <t>it is credited only against artefact bytes, a signature the
enforcement point verifies or a digest it matches, and never against a
bare assertion that a human approved (B1, digest grounding);</t>
          </li>
          <li>
            <t>its action binding <bcp14>MUST</bcp14> agree with the control action's asset and
verb, so that an approval issued for one action cannot be spent on
another (B2, action agreement).  An artefact authorising a different
action <bcp14>MUST</bcp14> invalidate the binding, not merely weaken it;</t>
          </li>
          <li>
            <t>the enforcement point <bcp14>MUST</bcp14> distinguish verifying the artefact (its
digests and signatures hold) from accepting it (its issuer's key is
pinned out of band), and <bcp14>MUST NOT</bcp14> accept an artefact from an unpinned
issuer (B3, verified versus accepted);</t>
          </li>
          <li>
            <t>the absence of the artefact is the absence of evidence, never a
default grant of authority (B4, fail-closed absence);</t>
          </li>
          <li>
            <t>where the artefact is available in both an embedded and a referenced
form, the two <bcp14>MUST</bcp14> agree, and an enforcement point that resolves the
reference <bcp14>MUST</bcp14> refuse the action if the resolved artefact differs from
the embedded one (B5, form consistency).  Section 7 offers both forms,
so this requirement is live in this profile.</t>
          </li>
        </ul>
        <t>The action the enforcement point evaluates and the action it forwards <bcp14>MUST</bcp14>
be the same action.  An enforcement point <bcp14>MUST</bcp14> fix the action's asset, verb
and parameters before it verifies the artefact, and <bcp14>MUST</bcp14> forward that fixed
action to the process.  Where verification, revocation lookup or spend
recording introduces a wait, the action <bcp14>MUST NOT</bcp14> be re-read from a mutable
structure after that wait.  An enforcement point that verifies one object and
forwards another satisfies B2 against an action nobody authorised.  B2 alone
does not reach this, because agreement is checked at one moment and the action
executes at another, and the interval between them is where the substitution
happens.</t>
        <t>The receipt <bcp14>MUST</bcp14> carry the approving human's own signature over a digest
of the action, be verifiable by the enforcement point offline against
cached key material and a published log checkpoint per <xref target="EPRECEIPTS"/>, and
<bcp14>MUST NOT</bcp14> be usable more than once.</t>
        <t>A binding moment <bcp14>MUST</bcp14> carry an expiry.  An enforcement point <bcp14>MUST</bcp14> refuse
an artefact presented after its expiry, and <bcp14>MUST NOT</bcp14> treat a captured
approval as valid for any window the artefact does not itself state.  A
captured decision is evidence of a decision taken at a moment, not a
standing token.</t>
      </section>
      <section anchor="audit-record">
        <name>Audit record</name>
        <t>The CAE <bcp14>MUST</bcp14> carry an append-only, independently attributable record of
the action.  The record is a signed statement per the SCITT architecture
<xref target="RFC9943"/>, registered on a transparency service, with a COSE receipt
<xref target="RFC9942"/> proving the statement's inclusion in the service's append-only
log.  The statement <bcp14>MUST</bcp14> be sufficient to attribute the action
afterward: which agent, on which principal's authority, under which
authorisation grant, with which binding moment where one was required,
against which asset, at which time per <xref target="RFC3339"/>.  Where a binding moment
was required, the statement <bcp14>MUST</bcp14> reference the authorisation artefact by
digest per <xref target="HUMANAUTHBIND"/>, so that the record of the action and the
evidence of its human authorisation bind the same bytes.</t>
        <t>This record composes published standards.  SCITT signed statements and
COSE receipts are the append-only, independently verifiable artefacts
the evidence requirements of <xref target="IEC62443"/> and <xref target="NERCCIP"/> call for.  The
agent-authentication layer references such a record but does not itself
produce it; that gap, not the absence of any suitable format, is what
this binding fills.</t>
        <t>The record <bcp14>MUST</bcp14> carry a provenance term drawn from the closed vocabulary
of <xref target="PROVENANCE"/>, stating how the assertion the record makes was
corroborated.  The term labels the record, which is an assertion about
the action; it does not label the physical action itself, which is
attributed by the signed statement.  This distinction matters, because a
closed provenance vocabulary can say how a claim came to be believed and
cannot say that a valve moved.  Where the agent includes a
machine-generated rationale in the record, for example a stated reason
for escalating the action to a human in the sense of the initiator
attestation of <xref target="EPRECEIPTS"/>, that rationale carries its own term from
the same vocabulary.</t>
        <t>An enforcement point <bcp14>MUST</bcp14> refuse a control action whose audit record
carries no provenance term, and <bcp14>MUST</bcp14> refuse one whose term has decayed
to uncertainty.  A record that cannot say how it came to be believed
does not confer authority.</t>
        <t>The record states what the enforcement point observed, not what it
intended.  Where the outcome of the action is unresolved in the sense of
Section 4, the record <bcp14>MUST</bcp14> say so, and <bcp14>MUST NOT</bcp14> assert that the action
took effect.  A statement that an asset reached a state, written without
observing the process, corroborates nothing, and the provenance term of
<xref target="PROVENANCE"/> labels the record rather than repairing it.</t>
      </section>
    </section>
    <section anchor="enforcement-point-evaluation-and-fail-closed-behaviour">
      <name>Enforcement-Point Evaluation and Fail-Closed Behaviour</name>
      <t>An enforcement point that implements this profile <bcp14>MUST</bcp14> evaluate the CAE
of every agent-originated control action before the action reaches the
process, and <bcp14>MUST</bcp14> refuse the action if any binding required for the
action's risk class is absent, malformed, expired, revoked, or
unverifiable.</t>
      <t>Refusal is the default and the safe state for authority.  An enforcement
point <bcp14>MUST NOT</bcp14> accept a control action on the ground that the CAE could
not be evaluated (for example because a revocation status could not be
reached); an unevaluable authority is a refused authority.  This is the
same posture as the <xref target="COMPUTELOC"/> gate: the enforcement point refuses the
request rather than attempting to prove, cryptographically, that the
agent lacked authority.  That is an honest and contestable trust
boundary, and Section 8 states it as such.</t>
      <t>Evaluation before the action yields one of two outcomes, accept or
refuse.  The action itself yields a third.  Where an enforcement point
has accepted a CAE, dispatched the action, and cannot determine from the
process whether the action took effect, the outcome is unresolved.  An
enforcement point <bcp14>MUST NOT</bcp14> report an unresolved outcome as performed,
and <bcp14>MUST NOT</bcp14> report it as refused.  Reporting it as refused is the worse
of the two, because a refusal asserts that nothing reached the process.</t>
      <t>An unresolved outcome carries no authority forward.  Retrying the action
is a new control action, requiring its own CAE and, where the action's
risk class requires a binding moment, its own binding moment
(Section 5).  An enforcement point <bcp14>MUST NOT</bcp14> re-present the artefact of an
unresolved action, and <bcp14>MUST NOT</bcp14> resolve the outcome by asking the agent
what happened.</t>
      <t>Fresh authorization alone <bcp14>MUST NOT</bcp14> permit another attempt at the same unresolved operation. The deployment <bcp14>MUST</bcp14> retain a stable operation identifier and a durable unresolved state across restart and re-authorization. It <bcp14>MUST NOT</bcp14> release another attempt merely because the original response was lost. Authenticated reconciliation or a deployment-specific recovery procedure must establish whether, and under what conditions, another attempt is permissible.</t>
      <t>Section 3.4 requires that a binding-moment artefact <bcp14>MUST NOT</bcp14> be usable
more than once, and the enforcement point is what makes that hold.  An
enforcement point <bcp14>MUST</bcp14> record each artefact it accepts as spent, and
<bcp14>MUST</bcp14> refuse any later action presenting an artefact already recorded.
Two records carry that requirement rather than one.  The spend record at the
enforcement point <bcp14>MUST</bcp14> survive a restart of the enforcement point, and where a
downstream conduit can duplicate an action already dispatched, the record that
suppresses the duplicate <bcp14>MUST</bcp14> survive a restart of that conduit.  Survival of
power loss is a requirement on the deployment, and no implementation reported
in Section 12 demonstrates it.  Spend state
held only in volatile memory makes the requirement once per uptime
rather than once, and a power cycle is an ordinary event in an OT
deployment rather than an exceptional one.  An artefact dispatched
against an unresolved outcome is spent.</t>
      <t>Single spend holds only where one enforcement point evaluates every
agent-originated control action for a given asset.  Where more than one
enforcement point can admit an action for the same asset, no single
enforcement point can hold the spend record that Section 3.4 requires,
and a deployment <bcp14>MUST</bcp14> either scope each asset to a single enforcement
point or refuse the action, on the same ground as an unreachable
revocation status.</t>
      <t>What this section requires of an enforcement point is at-most-once admission
and forwarding of the authorised attempt.  It does not require, and cannot
deliver, exactly-once physical effect.  An unresolved outcome means the process
may or may not have acted, and no property of the authority path resolves that
question.  At-most-once admission and reconciliation alone do not establish
exactly-once physical effect.  That depends on the executor, the device, and
how uncertain outcomes are resolved.  A
deployment claiming exactly-once effect on the strength of this profile alone
has claimed something this profile does not provide.</t>
      <t>Refusal of a control action on authority grounds <bcp14>MUST NOT</bcp14> itself be able
to prevent, delay, or gate a safety function (Section 6).  The authority
path and the safety path are separate, and the profile lives only in the
former.</t>
    </section>
    <section anchor="risk-classes">
      <name>Risk Classes</name>
      <t>An enforcement point assigns each control action a risk class by its
potential physical consequence.  The mapping from action to class is a
property of the deployment and its process hazard analysis, not of this
memo; this memo specifies only which bindings each class requires.  A
deployment <bcp14>SHOULD</bcp14> align its classes with the Security Levels of
<xref target="IEC62443"/>.</t>
      <t>Three classes are defined; a deployment <bcp14>MAY</bcp14> define finer gradations
between them.</t>
      <dl>
        <dt>Observe (lowest):</dt>
        <dd>
          <t>A read of process state, carried under this profile only where a
deployment has elected to apply the profile to reads (Section 2).
Where it applies, the CAE <bcp14>MUST</bcp14> carry agent identity and an audit
record.  Principal reference, an authorisation grant, and a binding
moment are <bcp14>OPTIONAL</bcp14>.</t>
        </dd>
        <dt>Adjust (middle):</dt>
        <dd>
          <t>A change within a bounded, pre-authorised safe envelope, for example a
setpoint move within an interlocked range.  The CAE <bcp14>MUST</bcp14> carry agent
identity, principal reference, an authorisation grant covering the
asset and verb, and an audit record.  A binding moment is <bcp14>RECOMMENDED</bcp14>
and <bcp14>MAY</bcp14> be required by the deployment.</t>
        </dd>
        <dt>State-change (highest):</dt>
        <dd>
          <t>A change of process or device state with safety or reliability
consequence, for example a breaker operation, a mode change, or a
change that leaves an interlocked envelope.  The CAE <bcp14>MUST</bcp14> carry all
five bindings, and the binding moment <bcp14>MUST</bcp14> be present and valid.</t>
        </dd>
      </dl>
      <t>An enforcement point <bcp14>MUST</bcp14> refuse a State-change action whose CAE lacks a
valid binding moment, without exception, and <bcp14>MUST NOT</bcp14> downgrade an
action's class to avoid a binding requirement.</t>
      <t>Where a State-change action's outcome is unresolved (Section 4), a retry
is a new action of the same class.  Its binding moment <bcp14>MUST</bcp14> be present
and valid in its own right, which means a human decides again.  That decision is necessary where this section requires it and is not sufficient: the retry remains subject to the rule in Section 4 on another attempt at an unresolved operation, and a fresh binding moment does not by itself clear the uncertainty.</t>
    </section>
    <section anchor="safety-carve-out">
      <name>Safety Carve-Out</name>
      <t>This is the requirement the profile refuses to compromise, and it is
stated here, ahead of the security considerations, because it is the one
an OT engineer will test first.</t>
      <t>A safety function <bcp14>MUST NOT</bcp14> be gated on any binding in this profile.  A
safety-instrumented system, an emergency shutdown, a hardware interlock,
a protective relay operating on its own criteria: none of these is an
agent-originated control action in the sense of this memo, and none of
them <bcp14>MAY</bcp14> be made to depend on the resolution, verification, or
revocation status of a CAE.  A safety action that a plant would take
autonomously <bcp14>MUST</bcp14> remain takeable when every network, every DNS
resolver, and every consent endpoint is unreachable.</t>
      <t>This is where this profile and <xref target="SHARIFICS"/> part (Section 1.1).  A design
that rejects a safety-classified command because the issuing agent
presented an insufficient trust level has placed an identity check in the
safety path.  This memo forbids that placement.  The profile constrains
who may command a process to move.  It has no authority over the
process's own right to protect itself.  A design that allowed an identity
check to block a trip would be a safety regression introduced in the name
of security, and this memo forbids it.</t>
    </section>
    <section anchor="encoding-and-transport-binding">
      <name>Encoding and Transport Binding</name>
      <t>This section maps each CAE binding to the composed artefact that supplies
its concrete fields.  It stops there deliberately.  This memo does not
mandate, and this revision does not specify, a single outer CAE encoding
or a novel wire structure of its own.  Where the profile needs a field, it
takes it from a primitive already specified elsewhere; where a concrete
encoding decision remains, it is named as such and left to a later
revision.</t>
      <t>The CAE is a signed structure.  Each binding is filled as follows.</t>
      <table>
        <thead>
          <tr>
            <th align="left">CAE binding</th>
            <th align="left">Filled by</th>
            <th align="left">Concrete fields come from</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Agent identity (3.1)</td>
            <td align="left">Resolvable agent identifier and request signature</td>
            <td align="left">
              <xref target="MCPDNS"/> for the identifier and its DNSSEC-rooted key material; <xref target="RFC9421"/> for the signature, consistent with <xref target="WEBBOTAUTH"/></td>
          </tr>
          <tr>
            <td align="left">Principal reference (3.2)</td>
            <td align="left">Resolvable principal handle</td>
            <td align="left">A resolvable identity handle naming the human on whose authority the agent acts</td>
          </tr>
          <tr>
            <td align="left">Authorisation grant (3.3)</td>
            <td align="left">Principal-signed, scoped, revocable grant naming asset, verb, agent, and expiry</td>
            <td align="left">Any filler meeting G1 to G6 of Section 3.3. <xref target="EPCONSENTGRANT"/> meets G1 and G3 to G6 and needs an authorised-agent profile and check for G2; the grant structure of <xref target="CONSENT"/> requires profiling with asset, verb, and authorised-agent fields first</td>
          </tr>
          <tr>
            <td align="left">Binding moment (3.4)</td>
            <td align="left">Named-human authorization evidence carrying an approver's signature over the action digest</td>
            <td align="left">The binding object (<tt>human_authorization_ref</tt> by digest, or <tt>human_authorization</tt> embedded) of <xref target="HUMANAUTHBIND"/>, carrying an authorization receipt per <xref target="EPRECEIPTS"/>; the interaction optionally via <xref target="BINDINGMOMENT"/></td>
          </tr>
          <tr>
            <td align="left">Audit record (3.5)</td>
            <td align="left">SCITT signed statement with a COSE inclusion receipt</td>
            <td align="left">A signed statement per <xref target="RFC9943"/>, registered on a transparency service, with a receipt per <xref target="RFC9942"/>; the binding moment referenced by digest per <xref target="HUMANAUTHBIND"/></td>
          </tr>
        </tbody>
      </table>
      <t>An encoding of the CAE <bcp14>MUST</bcp14> meet the following requirements, which are
properties the OT environment imposes and are independent of the field
map above.</t>
      <t>An encoding <bcp14>MUST</bcp14> be verifiable offline against cached trust anchors,
because many OT environments are segmented from public networks for
long, declared intervals (Section 8).  The offline-verifiable
authorization receipt of <xref target="EPRECEIPTS"/> and the offline COSE inclusion
proof of <xref target="RFC9942"/> are chosen for this reason.  An encoding <bcp14>MUST</bcp14> carry a
freshness element (a nonce and an <xref target="RFC3339"/> timestamp with a declared
maximum age) to bound replay.  An
encoding <bcp14>SHOULD</bcp14> ride above, and <bcp14>MUST NOT</bcp14> weaken, the transport security
of the underlying session; where the session is <xref target="OPCUA"/>, the CAE rides
above the OPC-UA secure channel, which proves the channel while the CAE
proves the authority.</t>
      <t>Transport bindings for specific control protocols are out of scope for
this revision.  <xref target="SHARIFICS"/> specifies per-protocol signed envelopes for
Modbus/TCP, OPC UA, MQTT, and CoAP, and a deployment <bcp14>MAY</bcp14> carry a CAE
within such an envelope; the two are complementary below the safety
boundary (Section 1.1).  The concrete outer encoding of the CAE, how the
five bindings above are serialised together into one structure, is the
natural content of a companion document or a future revision.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section is written to be attacked.  Several of the boundaries below
are honest and contestable rather than closed, and they are marked as
such.  Independent review from an operational-technology and critical-
infrastructure background is the review this document most needs.</t>
      <t>Availability over authentication.  In OT the priority order is
availability, then integrity, then confidentiality, the inverse of the
usual information-systems order.  This profile is built to that order:
it fails closed on authority and never on safety (Section 6), and it
refuses rather than blocks.  The reviewer should test whether any path
in a deployment could let an authority check stall a time-critical
control loop; if one exists, the deployment has mis-placed the gate.</t>
      <t>Command integrity and diverse-channel confirmation.  The CAE binds
authority to a control action and makes the action attributable; it is
not, on its own, an integrity mechanism for the command value on the
wire.  The profile requires that an encoding ride above and not weaken
the transport security of the underlying session (Section 7), so the
command value is protected to the integrity the session provides, and no
further.  Where a corrupted or spoofed command value is itself a hazard,
and in particular where the controlled function carries a safety-integrity
requirement at SIL 2 or above in the sense of <xref target="IEC61508"/> and <xref target="IEC61511"/>,
the transport integrity of a single command path is not sufficient by
itself: a deployment <bcp14>SHOULD</bcp14> confirm the commanded state over a channel
independent of the command path, for example an independent read-back of
the achieved process state, and <bcp14>SHOULD</bcp14> treat a discrepancy as a fault for
the process's own safety logic to handle rather than for this profile to
handle.  Providing such a diverse channel, and meeting a stated SIL target
for the end-to-end control function, is a functional-safety engineering
task governed by <xref target="IEC61508"/> and <xref target="IEC61511"/>; it is substantial work, it is
a property of the deployment and its safety case, and it is out of scope
for the authority binding this memo specifies.  This memo neither supplies
nor weakens that integrity: a diverse-channel confirmation composes
beneath the authority profile, and, like every mechanism here, it <bcp14>MUST NOT</bcp14>
be placed where it can gate a safety function (Section 6).</t>
      <t>Refuse, do not prove.  An enforcement point refuses an action whose
authority it cannot verify.  It does not prove the agent lacked
authority.  This is a deliberate, contestable boundary inherited from
<xref target="COMPUTELOC"/>.  An adversary who can make a valid CAE unevaluable can
cause refusal, which in an availability-first setting is itself a
denial-of-control concern; the mitigation is the offline-verifiable
trust anchor and cached revocation state below, and the reviewer is
invited to find the residue.</t>
      <t>Binding-moment forgery and the human-in-the-loop.  The gravest failure
this profile must exclude is a State-change that executes on no human
decision.  The requirement that the binding moment be an authorization
receipt carrying the approver's own signature over the action digest,
verifiable offline and not usable more than once (Section
3.4), is what excludes it: an agent cannot manufacture that signature,
and cannot replay a genuine one.  One residual surface remains and is
stated plainly: the presentation attack of <xref target="EPRECEIPTS"/> Section 11.3, in
which an approver may sign a faithful-looking rendering of the wrong
action.  This memo inherits that residual and the mitigations
<xref target="EPRECEIPTS"/> states (render from the hashed bytes, register render
templates under the policy, and for the highest classes render the
material parameters on a surface the orchestrating operator did not
author).  It is an enforcement-side obligation this profile places on
the enforcement point, not a property it can assume.</t>
      <t>Revocation latency versus plant time.  An authorisation grant revoked
mid-session <bcp14>MUST</bcp14> stop future actions it covered within a bounded,
declared latency.  In a plant, that latency competes with real-time
control constraints and with intervals of network segmentation.  The
trade between revocation freshness and offline operability is real and is
not fully closed here; a deployment <bcp14>MUST</bcp14> declare its revocation latency
budget and its maximum trust-anchor staleness, and <bcp14>MUST NOT</bcp14> let either
gate a safety function.  A revocation cannot recall an action already
released to the process, and this profile does not close that gap.</t>
      <t>Key distribution in segmented plants.  DNSSEC-rooted discovery per
<xref target="MCPDNS"/> assumes the resolver is reachable.  A segmented or air-gapped
plant is not.  This profile therefore requires offline verification
against cached trust anchors with declared staleness bounds, for the
agent key material, the approver directory of <xref target="EPRECEIPTS"/>, and the
transparency-log checkpoint of <xref target="RFC9943"/>.  The management of those
anchors, their rotation, and their revocation across a fleet of
long-lived devices is the same lifecycle problem that current OT security
guidance identifies as largely unsolved, and this memo does not claim to
solve it; it requires only that a deployment state its bounds and fail
closed on authority when a bound is exceeded.</t>
      <t>Confused deputy and compromised agent.  A valid CAE proves authority,
not intent.  A compromised agent holding a valid grant can issue any
action the grant covers.  The mitigations are scope minimality (a grant
naming the exact asset, verb, and agent, Section 3.3), the binding moment
for consequential classes (Section 3.4), which a compromised agent cannot
forge because it carries a human's own signature, and the audit record
(Section 3.5) that makes the action attributable after the fact.  None of
these prevents a first malicious action within scope; they bound its
blast radius and guarantee its attribution.</t>
      <t>Operator as adversary.  Consistent with the wider architecture this
profile belongs to, the operator of the identity and consent
infrastructure is treated as a potential adversary.  The authorisation
grant is signed by the principal and not the operator; the binding moment
is signed by an approver key the operator does not hold (Section 3.4,
and the corresponding guarantee in <xref target="EPRECEIPTS"/>); the audit record is a SCITT signed statement on an
append-only log whose checkpoint the operator cannot rewrite undetectably
(<xref target="RFC9943"/>, <xref target="RFC9942"/>).  These exist so that no single operator is
structurally required and every action is visible and attributable,
rather than trusting the operator to behave.</t>
      <t>Scope and the deliberate omission.  This memo specifies only the binding
and refusal semantics over already-specified discovery, authorisation,
human-authorization, and transparency primitives.  The methods by which a
principal's identity or trustworthiness is inferred are out of scope by
construction, and no such method is described, referenced in detail, or
required here.  A reviewer does not need those methods to judge the trust
model, the fail-closed behaviour, or the safety carve-out, which are the
parts that matter for this document.</t>
    </section>
    <section anchor="deployment-and-incremental-adoption">
      <name>Deployment and Incremental Adoption</name>
      <t>This profile is meant to be adopted incrementally, alongside the installed
base rather than in place of it.  The enforcement point (Section 2) is an
added function at a conduit boundary; it does not replace a control
protocol, a safety system, or a historian, and a deployment can introduce
it for one asset class or one high-consequence verb before extending it.
The authority bindings compose above existing per-protocol transports,
including the signed control-protocol envelopes of <xref target="SHARIFICS"/> where those
are deployed, so a site that has already invested in a transport binding
keeps that investment.</t>
      <t>Adoption of a profile like this depends on the integrating parties, the
control-system vendors, the asset owners, and the operators of the
discovery, authorisation, and transparency primitives, each investing in
the integration on its own side, and a specification alone does not create
that investment.  This memo takes the position that the incentive most
likely to carry that investment without a mandate is that the profile
discharges an obligation the deployer already holds rather than adding a
new one.  <xref target="IEC62443"/> and the <xref target="NERCCIP"/> reliability standards already
require that consequential actions be identified, use-controlled, and
auditable; a deployer meets those requirements today with bespoke,
non-interoperable, and often manual evidence.  The append-only,
independently verifiable audit record this profile carries (Section 3.5)
turns that standing, unfunded compliance obligation into a concrete and
reusable mechanism, which lowers an existing cost rather than imposing a
new one.  The concrete integration path on each party's side, and the
commercial and operational incentives that make a given party invest, are
deployment matters beyond the scope of this memo and are the natural
content of a companion deployment document.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions in this revision.  A future revision
that specifies a concrete CAE encoding is expected to register a media
type and <bcp14>MAY</bcp14> request registries for binding types and risk-class
identifiers, per <xref target="RFC8126"/>.</t>
    </section>
    <section anchor="normative-and-informative-references">
      <name>Normative and Informative References</name>
      <t>Several references in this document are normative because an implementer
requires them to construct or verify a Command Authority Envelope, yet
they are individual Internet-Drafts rather than published standards: the
Morrison-family memos <xref target="CONSENT"/>, <xref target="BINDINGMOMENT"/>, and <xref target="MCPDNS"/>, and the
Schrock EMILIA-Protocol memos <xref target="HUMANAUTHBIND"/> and <xref target="EPRECEIPTS"/>.  A
normative reference to a work in progress will hold this document in the
RFC Editor queue until the referenced drafts are published or the
references are re-scoped; the authors acknowledge this and expect to
revisit the normative and informative split as the referenced work
matures.  The remaining normative references are to published standards:
<xref target="RFC9421"/>, and the transparency pair <xref target="RFC9943"/> (SCITT) and <xref target="RFC9942"/>
(COSE Receipts).</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations in accordance
with <xref target="RFC7942"/>.  It is intended to assist the IETF in its decision
processes for this document.  The description of implementations in this
section is intended neither to describe those implementations as
complete or correct nor to endorse them; the listing of an
implementation here does not imply endorsement by the IETF.  This section
is expected to be removed before the document advances beyond the
Independent Stream.</t>
      <t>No independent implementation of CAE evaluation at an enforcement point is
known at the time of this revision.  An independent implementation, against one
concrete control-protocol binding, remains the strongest near-term signal this
document could receive, and is explicitly solicited.  Several of the composed
primitives do have running code, and two results are reported here.</t>
      <t>The EMILIA Protocol implementation (<xref target="EPCONSENTGRANT"/>, <xref target="EPCAEPROFILE"/>)
reports three same-team reference ports, in JavaScript, Python and Go, agreeing
across 21 suites and 332 conformance vectors at revision
8f0d9a9fec507a70ea006a91c0765e539a96ffaa, together with an externally
authored Rust implementation built from a pinned public source tree that matched
16 suites and 164 of those vectors at that pin; that Rust result is recorded at
revision 2535c192553903c63bdc56499da8db7b5d719afc, which fixes the Rust source
at 7faba36010e7590727bebbc5b9dcceee60539b9b and the evaluator run at
18739076c822bdc757147326e8d36716432d1b41.  This Rust result is time-pinned
and is not yet a strict clean-room acceptance result.  Each revision named in
this paragraph was supplied by the implementer and is reported as supplied;
none was independently re-run for this document.</t>
      <t>Separately, the canonicalisation on which digest grounding depends (B1,
Section 3.4) is reported by two independently written implementations, one in
Python and one in TypeScript, agreeing on a vector suite of 16 canonicalisation
cases and 5 required refusals.  Nineteen of the twenty-one are exercised on
both sides.  Two of the refusals run on the Python side only: a parsed
JavaScript value cannot present a duplicate member name, and an integer
outside the IEEE 754 double range is outside the range
RFC 8785 specifies.  Both implementations' test suites read that
suite from a single file, and the suite was derived once and then re-derived
independently on the other implementation before being accepted.  The result
reported here was obtained on 18 September 2026 against the then-current
revision of both implementations, neither of which is public at the time of
writing.  This is
agreement on what the two sides hash and not on CAE evaluation, and it is reported
because a digest-grounded binding is only as interoperable as the bytes the two
sides hash.  Two implementations that disagree about an action's canonical form
disagree about every binding computed over it, and do so silently: the
signatures verify on each side and match on neither.</t>
      <t>The deployment claims this section previously carried for <xref target="MCPDNS"/>,
<xref target="BINDINGMOMENT"/> and <xref target="COMPUTELOC"/> are withdrawn from it.  One of them
described an architecture that was subsequently replaced, and the others have
not been re-verified against the code that would substantiate them.  A claim
about another document's implementation belongs in that document, where its own
author checks it; repeating it here gave it a second home that nobody was
checking.</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>The separation held in Sections 3.3 and 3.4, under which a per-action
artefact at the binding moment never rounds up into a standing
authorisation, was settled in exchange between the authors.  Sections 3.3,
3.4, 4 and 12 of this revision carry text originating with I. Schrock, who
was credited as a contributor in earlier revisions and is an author of this
one.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3339" target="https://www.rfc-editor.org/info/rfc3339" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9421" target="https://www.rfc-editor.org/info/rfc9421" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9421.xml">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="RFC9943" target="https://www.rfc-editor.org/info/rfc9943" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9943.xml">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="C. Fournet" initials="C." surname="Fournet"/>
            <author fullname="Y. Deshpande" initials="Y." surname="Deshpande"/>
            <author fullname="S. Lasker" initials="S." surname="Lasker"/>
            <date month="June" year="2026"/>
            <abstract>
              <t>Traceability in supply chains is a growing security concern. While Verifiable Data Structures (VDSs) have addressed specific issues, such as equivocation over digital certificates, they lack a universal architecture for all supply chains. This document defines such an architecture for single-issuer signed statement transparency. It ensures extensibility and interoperability between different transparency services as well as compliance with various auditing procedures and regulatory requirements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9943"/>
          <seriesInfo name="DOI" value="10.17487/RFC9943"/>
        </reference>
        <reference anchor="RFC9942" target="https://www.rfc-editor.org/info/rfc9942" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9942.xml">
          <front>
            <title>CBOR Object Signing and Encryption (COSE) Receipts</title>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="C. Fournet" initials="C." surname="Fournet"/>
            <date month="June" year="2026"/>
            <abstract>
              <t>CBOR Object Signing and Encryption (COSE) Receipts prove properties of a Verifiable Data Structure (VDS) to a verifier. VDSs and associated Proof Types enable security properties, such as minimal disclosure, transparency, and non-equivocation. Transparency helps maintain trust over time and has been applied to certificates, end-to-end encrypted messaging systems, and supply chain security. This specification enables concise transparency-oriented systems by building on Concise Binary Object Representation (CBOR) and COSE. The extensibility of the approach is demonstrated by providing CBOR encodings for Merkle inclusion and consistency proofs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9942"/>
          <seriesInfo name="DOI" value="10.17487/RFC9942"/>
        </reference>
        <reference anchor="CONSENT" target="https://datatracker.ietf.org/doc/draft-morrison-consent-settlement/">
          <front>
            <title>Consent-Bound Identity Disclosure with Subject Settlement for HTTP-Native Agent Payments</title>
            <author fullname="Blake Morrison">
              <organization>Alter Meridian Pty Ltd</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="BINDINGMOMENT" target="https://datatracker.ietf.org/doc/draft-morrison-binding-moment-envelope/">
          <front>
            <title>The Briefing-and-Binding Envelope: A Delivery Contract for Agent-to-Principal Decision Moments with Dual-Veto Reconciliation</title>
            <author fullname="Blake Morrison">
              <organization>Alter Meridian Pty Ltd</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="MCPDNS" target="https://datatracker.ietf.org/doc/draft-morrison-mcp-dns-discovery/">
          <front>
            <title>Discovery of Model Context Protocol Servers via DNS TXT Records</title>
            <author fullname="Blake Morrison">
              <organization>Alter Meridian Pty Ltd</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="HUMANAUTHBIND" target="https://datatracker.ietf.org/doc/draft-schrock-human-authorization-binding/">
          <front>
            <title>Binding Named-Human Authorization Evidence into Agent-Action Records</title>
            <author fullname="Iman Schrock">
              <organization>EMILIA Protocol, Inc.</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="EPRECEIPTS" target="https://datatracker.ietf.org/doc/draft-schrock-ep-authorization-receipts/">
          <front>
            <title>Authorization Receipts for High-Risk Agent Actions</title>
            <author fullname="Iman Schrock">
              <organization>EMILIA Protocol, Inc.</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7942" target="https://www.rfc-editor.org/info/rfc7942" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="EPCONSENTGRANT" target="https://github.com/emiliaprotocol/emilia-protocol/blob/main/docs/EP-CONSENT-GRANT-SPEC.md">
          <front>
            <title>EP-CONSENT-GRANT-v1: A Signed, Scoped, Revocable Standing Grant</title>
            <author fullname="Iman Schrock">
              <organization>EMILIA Protocol, Inc.</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="EPCAEPROFILE" target="https://github.com/emiliaprotocol/emilia-protocol/blob/main/docs/EP-CONSENT-GRANT-CAE-PROFILE.md">
          <front>
            <title>EP profile of the Command Authority Envelope consent-grant and binding-moment slots</title>
            <author fullname="Iman Schrock">
              <organization>EMILIA Protocol, Inc.</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="COMPUTELOC" target="https://datatracker.ietf.org/doc/draft-morrison-compute-location-gate/">
          <front>
            <title>The Compute-Location Gate: Provenance-Class Routing of Identity Inference with Wire-Layer Refusal of Unconsented Provenance Classes</title>
            <author fullname="Blake Morrison">
              <organization>Alter Meridian Pty Ltd</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="PROVENANCE" target="https://datatracker.ietf.org/doc/draft-morrison-substrate-provenance-grammar/">
          <front>
            <title>Substrate-Provenance Annotation Grammar for Large-Language-Model Output</title>
            <author fullname="Blake Morrison">
              <organization>Alter Meridian Pty Ltd</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="WEBBOTAUTH" target="https://datatracker.ietf.org/doc/draft-meunier-webbotauth-httpsig-protocol/">
          <front>
            <title>HTTP Message Signatures for automated traffic</title>
            <author fullname="Thibault Meunier">
              <organization/>
            </author>
            <author fullname="Sandor Major">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="SHARIFICS" target="https://datatracker.ietf.org/doc/draft-sharif-attp-industrial-control-systems/">
          <front>
            <title>ATTP for Industrial Control Systems: Cryptographic Agent Authentication in SCADA and IoT Environments</title>
            <author fullname="Raza Sharif">
              <organization>CyberSecAI Ltd</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="IEC62443">
          <front>
            <title>IEC 62443, Security for Industrial Automation and Control Systems</title>
            <author>
              <organization>International Electrotechnical Commission</organization>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="NERCCIP">
          <front>
            <title>NERC Critical Infrastructure Protection (CIP) Reliability Standards</title>
            <author>
              <organization>North American Electric Reliability Corporation</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="SP80082">
          <front>
            <title>NIST SP 800-82 Rev. 3, Guide to Operational Technology (OT) Security</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="OPCUA">
          <front>
            <title>OPC Unified Architecture, Part 2: Security Model</title>
            <author>
              <organization>OPC Foundation</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="IEC61508">
          <front>
            <title>IEC 61508, Functional Safety of Electrical/Electronic/Programmable Electronic Safety-related Systems</title>
            <author>
              <organization>International Electrotechnical Commission</organization>
            </author>
            <date year="2010"/>
          </front>
        </reference>
        <reference anchor="IEC61511">
          <front>
            <title>IEC 61511, Functional Safety: Safety Instrumented Systems for the Process Industry Sector</title>
            <author>
              <organization>International Electrotechnical Commission</organization>
            </author>
            <date year="2016"/>
          </front>
        </reference>
      </references>
    
  </back>
</rfc>
