| Internet-Draft | UAS/AV Act Finality | September 2026 |
| Das | Expires 22 March 2027 | [Page] |
Problem: Unmanned Aircraft System (UAS) trust infrastructure answers two questions well. Remote Identification (RID), strengthened by the Drone Remote ID Protocol (DRIP), answers "who is this aircraft?", and UAS Traffic Management (UTM), U-space, and geo-awareness answer "may this flight take place here and now?". Neither answers the question that decides physical consequence: may this specific act -- arming motors, crossing into a newly restricted volume, releasing a delivery payload, activating a camera over a protected area, emitting on a radio band, or joining a coordinated multi-aircraft manoeuvre -- become effective at this actuator, at this instant, under the airspace and revocation state that is current now? Authorizations are granted before or at take-off, while acts are executed continuously by mission computers and autonomy stacks that can be compromised, misled, coerced with validly signed commands, or cut off from their authorities. Observers on the ground, in turn, can verify an aircraft's identity but not whether what it is doing was authorized before it happened.¶
Solution: The IETF-facing contribution of this document is Compact Broadcast Act Evidence: 16-octet per-act decision records authenticated with a TESLA-style one-way key chain sealed inside a Protected Enforcement Domain and anchored to the aircraft's DRIP identity. This lets an Observer verify, after a short disclosure delay and within the 25-octet Broadcast RID message budget, that the protected enforcement domain made an allow, deny, or safe-state decision before the corresponding evidence key was disclosed, without requiring a public-key signature on every act. The evidence mechanism is coupled to an execution-finality profile in which each safety-significant or externally consequential act remains non-effective as a Candidate Act until the Protected Enforcement Domain verifies an act-bound, sink-bound Execution Handle against live trusted context, consumes current authority state atomically, commits a Finality Receipt, and only then releases the physical enablement condition at the Finality Sink. The profile also specifies act classes and sinks, self-contained object fields, sink processing pseudocode, envelope handles for high-rate control, a boundary-proximity revalidation policy, bounded offline operation, and composite multi-aircraft semantics. For constrained onboard, air-to-air, telemetry, or other small-frame links, the profile also defines an optional Beacon Proof Capsule (BPC): a compact act-bound and sink-bound execution-proof representation using an Authority Reference, freshness and generation state, a context commitment, a keyed binding commitment, explicit truncation-risk sizing, authenticated multi-frame reconstruction when necessary, and fail-closed resolver semantics. A BPC is an input to execution verification; the AER/KDR/Anchor mechanism is output evidence of the PED decision, and the two roles are intentionally non-interchangeable.¶
Additional profiles: This document also describes three narrowly scoped execution-finality embodiments: conflict-set-bound Detect-and-Avoid (DAA) resolution finality for UAS, emergency-scene temporary authority finality for autonomous road vehicles as an informative cross-domain application, and atomic control-authority handover with monotonic authority epochs for autonomous motion platforms. These profiles preserve the same rule: an authenticated or correctly computed instruction remains a Candidate Act until the current effectuation boundary independently verifies the state on which that instruction depends. In an autonomous road vehicle, that boundary may be a protected motion-admission gate rather than a motor or ESC gate, so the architecture can coexist with the vehicle's existing perception, planning, braking, steering, and minimal-risk-control functions.¶
Industrial context and complementarity: The mechanism complements, and does not replace, Broadcast and Network RID, DRIP Entity Tags and authentication, DET resolution through DNS, UTM and U-space services, geo-awareness, Detect-and-Avoid, flight-control safety logic, automotive ADAS/autonomy stacks, remote-assistance systems, and authenticated command channels. Publicly described examples of the kinds of software-defined or autonomy-enabled platforms to which this boundary can be complementary include Tesla driver-assistance systems, BYD DiPilot and related intelligent-driving platforms, DJI enterprise drone automation, Boeing autonomous and uncrewed aircraft systems, and Lockheed Martin/Sikorsky autonomous aircraft systems. These names are illustrative only: this document does not state or imply that any named organization uses, endorses, requires, or has evaluated this profile. Their existing perception, planning, stabilization, DAA, ADAS, command-and-control, and safety mechanisms remain in place; the proposed finality layer operates later, at a protected motion-admission or actuator boundary, to verify the concrete pending act against current protected authority and state before effectuation. The scope of this document remains strictly civil and excludes weapon release, targeting, and counter-UAS engagement. This is an individual Informational Internet-Draft, not a DRIP WG work item. In short, its IETF/IRTF relevance is to DRIP (DET-anchored compact act evidence for Observers), RATS (attestation of the protected enforcement domain), COSE/CBOR (deterministic compact objects), ACE (constrained scoped authorization as input rather than effectuation), SCITT (later audit of receipts), and T2TRG (constrained Things with multiple authorities). No WG adoption or code-point allocation is requested in this version; the draft is offered for technical discussion in those communities and in UAS, Remote ID, constrained-security, autonomous-vehicle, and aviation standards forums.¶
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 22 March 2027.¶
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.¶
This document is an individual Informational Internet-Draft. It is not a DRIP Working Group work item and does not request allocation of a DRIP or ASTM/ICAO carriage code point in this version. The compact evidence format and its carriage are presented for technical review and possible future standardization.¶
An uncrewed aircraft is a moving actuator. Its acts have immediate physical consequence and, once effective, often cannot be recalled: a rotor that spins up near people, a payload that leaves its latch, a camera frame captured over a private garden, or a transmission that interferes with a protected band. Current UAS governance authorizes the flight, identifies the aircraft, and records what happened. It does not, in general, make an individual consequential act depend on authority that is verified at the actuator at the moment of effect.¶
The gap is structural rather than a matter of stricter policy. Consider the following civil situations, each of which occurs within a flight that was validly authorized at take-off:¶
Mid-flight restriction. A delivery aircraft is authorized for a corridor at 14:00. At 14:07 a temporary restriction is activated over part of that corridor for an emergency response. The authorization token held by the ground software is still cryptographically valid; the next corridor segment is no longer lawful. Whether the aircraft enters depends on whether the new geo-zone data reached, and was obeyed by, software that may be stale or compromised.¶
Compromised or misled mission computer. The perception or planning stack is fed adversarial input, runs a faulty update, or is controlled by an attacker with root access. If it has effective write access to motor output registers, ESC arming, the payload latch, or the camera power rail, a software failure becomes a physical event. A software-only geofence running on the same processor can be altered or bypassed by the same failure.¶
Validly signed but unsafe command. A ground station, fleet service, or remote pilot sends a correctly authenticated command to release a payload at an unapproved coordinate, disable RID transmission, or enter a restricted volume. Link authentication (for example, MAVLink 2 message signing) establishes that the command came from a key holder. It does not establish that this act is permitted in the present context.¶
Degraded or lost link. The aircraft loses contact with its operator, UTM service, and revocation source. A revocation issued after link loss cannot be learned. Without an explicit bound, cached authority may continue to permit acts indefinitely.¶
Partial coordinated manoeuvre. Several aircraft must change formation or hand off an inspection segment together. If some commit and others do not, separation assumptions are violated. Retries and compensations are themselves new acts.¶
Unverifiable conduct for Observers. A police officer, facility operator, or member of the public can use DRIP to verify that Broadcast RID messages come from the registered owner of a DRIP Entity Tag (DET). They cannot verify whether an act they are watching -- a camera pointed at a stadium, a payload lowered in a car park -- was authorized before it happened, and Broadcast RID has no room for per-act public-key signatures at typical broadcast rates.¶
In all six cases, the missing element is the same: a boundary, positioned immediately before the physical effect, at which authority for this act is verified against current state and consumed, and without which the actuator lacks the physical means to act.¶
Execution finality for aircraft cannot be delivered by one vendor in isolation, for four reasons.¶
Each of the following is necessary and well established. None of them, alone or together, makes an individual act non-effective until authority for that act is verified and consumed at the sink.¶
| Mechanism | Question it answers | Boundary relative to this document |
|---|---|---|
| Broadcast and Network RID (ASTM F3411 [F3411]; regional rules such as 14 CFR Part 89 and EU Regulation 2019/945) | Who is this aircraft, where is it, who operates it? | Identity and telemetry; no act-level authority. |
| DRIP: DET [RFC9374], architecture [RFC9434], authentication formats [RFC9575], and DET/DIME resolution in DNS [RFC9886] | Who controls the claimed DET, and can its identity/authentication material be resolved and verified? | Trustworthy identity, resolution, and message provenance; does not state whether a physical act was authorized before it occurred. |
| UTM (ASTM F3548 [F3548]) and U-space (EU Implementing Regulation 2021/664); authorization services such as LAANC | May this flight or operation take place in this airspace and time? | Strategic and tactical flight authorization; enforcement onboard is left to the aircraft. |
| Geo-awareness, geo-zone data (for example EUROCAE ED-269), vendor geo-zone databases, autopilot geofences and failsafes | Is the aircraft inside a permitted volume, and what should it do if not? | Usually software-mediated and co-located with the stack that can fail; typically movement-centric, not covering payload, sensor, and RF acts; not bound to consumable per-act authority. |
| MAVLink 2 message signing; authenticated onboard messaging (for example AUTOSAR SecOC-style truncated MAC with freshness) | Did this message come from a key holder, and is it fresh? | Authenticates the channel or sender; a valid key holder may still request a contextually unauthorized act. |
| Secure boot, measured boot, and remote attestation [RFC9334] | Is the software that booted the expected software? | Establishes platform state; runtime deviation, coercion, and stale authority remain possible after boot. |
| Flight logs, post-flight analysis, Network RID records | What happened? | After the fact; the effect has already occurred. |
In scope: civil UAS in the specific and certified categories and comparable national regimes, including delivery, infrastructure inspection, agriculture, mapping, emergency and public-safety support, and urban air mobility support functions.¶
Out of scope: weapons, weapon release, targeting, and counter-UAS engagement. This document does not define airworthiness or certification requirements, does not replace flight-control safety design, does not define legal rules, and does not decide which acts a regulator permits. It defines how a permission that has been issued is technically enforced at the moment of effect, and how that enforcement can be evidenced.¶
A safe-state manoeuvre (hover, loiter, controlled descent, landing, return-to-home) is never blocked by this profile for lack of a fresh handle; safe states are pre-authorized as described in Section 12.¶
Section 16 is intentionally included as an informative cross-domain application to autonomous road vehicles because the same effectuation-boundary problem occurs when a temporary first-responder instruction requests a bounded exception to ordinary motion policy. It does not change the UAS interoperability scope of the BPC, AER, RID, or DRIP mechanisms in this document. Section 17 applies to UAS and may also be reused by other autonomous motion platforms.¶
This document is intended to be implementable without requiring any companion Internet-Draft. The UAS Candidate Act fields, Authority Object fields, handle bindings, consume ordering, receipt semantics, failure behavior, composite rules, and broadcast-evidence procedures required by this profile are stated locally. Companion individual Internet-Drafts provide broader cross-domain background on execution handles [DAS-HANDLE], registries [DAS-REG], composite finality [DAS-COMPOSITE], jurisdiction binding [DAS-JURISDICTION], actuation binding [DAS-ACTUATION], state continuity [DAS-STATE], revocation [DAS-REVOCATION], consequence-path completeness [DAS-PATH], and the general architecture [DAS-PROTOCOL]. Those references are informative; in case of a difference, the rules in this UAS profile control for this document. Symbolic failure names not allocated by an IANA registry are local to this document.¶
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.¶
RID, UA, UAS, DET, HDA, Observer, and Broadcast Endorsement are used as in [RFC9153], [RFC9434], and [RFC9575]; DET/DIME resolution through DNS is described by [RFC9886]. The following terms are used in addition.¶
This section collects notation used by the cryptographic, execution-finality,
delayed-disclosure, and autonomous-motion constructions in this document. Symbols
are local to this specification unless an external reference states otherwise.
In artwork, || denotes byte-string concatenation, not logical OR. Structured
objects that are hashed or authenticated are first encoded using the deterministic
representation required by the applicable section.¶
"UAS-BPC-ACT", "UAS-BPC-BIND",
"UAS-AFE-chain", "UAS-AFE-tag", and
"UAS-AFE-rec" prevent values from different cryptographic roles from
being treated as interchangeable. In generic explanatory notation,
DOM_E denotes the AER record-authentication domain; in this profile its
concrete record-domain label is "UAS-AFE-rec".¶
X => Y means that
whenever X is true, Y is required to be true under the stated invariant.¶
The delayed-disclosure construction uses a reverse one-way chain. The indexing in this subsection is normative for interpreting the equations in Section 18. AER intervals are zero-based. Interval i uses a tag key K'_i derived from the then-undisclosed chain value K_(i+1); K_0 is only the public Anchor commitment.¶
K_N = Trunc_128(SHA-256("UAS-AFE-seed" || K_seed || epoch_id)). Unlike
K_seed, K_N is a chain value and may become public if the final usable evidence
interval is reached and its scheduled disclosure occurs.¶
K_i = F(K_(i+1)) for i = N-1 ... 0.¶
F(x) = Trunc_128(SHA-256("UAS-AFE-chain" || x)).¶
F'(x) = Trunc_128(SHA-256("UAS-AFE-tag" || x)).¶
K'_i = F'(K_(i+1)). The prime denotes a derived tag key; K'_i is not
itself a member of the reverse chain.¶
[T_0 + i*Delta, T_0 + (i+1)*Delta).¶
hdr; Header_i is equivalent
explanatory notation when the interval must be explicit.¶
protected master seed: K_seed (never disclosed)
terminal chain value: K_N = Trunc_128(SHA-256(
"UAS-AFE-seed" || K_seed || epoch_id))
reverse chain: K_i = F(K_(i+1))
public anchor: K_0
interval i tag key: K'_i = F'(K_(i+1))
disclosure: K_(i+1) after delay d
chain authentication: F^((j+1)-k)(K_(j+1)) = K_k
loss recovery: K_(i+1) = F^(j-i)(K_(j+1)), j > i
¶
The mission computer keeps every function it has today: perception, planning, route optimization, obstacle avoidance, inspection logic, and operator assistance. What changes is that its outputs become proposals. The PED sits on every path from a command source to an enablement condition.¶
Off-board authorities Observers / auditors
+-----------------------------+ +--------------------+
| Operator | UTM/U-space USS | | DRIP Observer app |
| Aviation authority | Payload| | Regulator, insurer |
+--------------+--------------+ +---------^----------+
| AAO, revocation, g_air | AER + key
v | disclosure
+--------------------------- UA ----------------------|------------+
| | |
| +------------------+ proposals +---------------+--------+ |
| | Mission computer |-------------->| Protected Enforcement | |
| | autonomy, AI, | | Domain (PED) | |
| | planner, GCS link|<--decisions---| keys | sealed refs | |
| +------------------+ | consume | receipts | |
| | evidence key chain | |
| +------------------+ trusted | safe-state logic | |
| | GNSS/RTK, VIO, |-------------->| | |
| | IMU, baro, time, | context +---+-----+-----+-----+--+ |
| | battery, ESC tel.| | | | | |
| +------------------+ enable/ | | | | |
| release v v v v |
| +------+ +-----+ +----+ +-------+ |
| RID module <-- AER ---------| ESC / | |Latch| | RF | |Camera/| |
| (Broadcast RID, DRIP) | motor | |power| | PA | |sensor | |
| | regs | | | | EN | | power | |
| +------+ +-----+ +----+ +-------+ |
| Finality Sinks (default: disabled) |
+-------------------------------------------------------------------+
Three authorities are kept separate. Computation authority belongs to the mission computer. Resource and airspace authority belongs to off-board issuers and is carried in AAOs. Effect authority exists only at the PED and is expressed as a released enablement condition. A compromise of the first does not yield the third.¶
The PED MUST hold every protected enablement condition in the non-effective state by default. A command signal that reaches a sink without the corresponding enablement condition MUST NOT produce the effect. The mission computer, debug ports, maintenance interfaces, and radio command links MUST NOT have a path to a protected register bank or enable line that bypasses the PED; this is the path-completeness requirement of [DAS-PATH] applied to the airframe.¶
The stabilizing inner control loop may run in the flight controller outside the PED. The PED gates the envelope within which that loop may drive the motors, and the arming condition, rather than every inner-loop computation. This keeps real-time attitude control where it is today.¶
| Act class (code); reuse | Example | Finality Sink | Withheld condition |
|---|---|---|---|
| ARM (0x01); SINGLE_USE | Arm motors for take-off | ESC arming register / enable line | ESC enable asserted |
| KINETIC_ENVELOPE (0x02); ENVELOPE | Fly segment k within corridor at speed <= v_max | Motor output register bank, thrust limit | Write window for setpoints inside envelope |
| VOLUME_ENTRY (0x03); SINGLE_USE | Enter geo-zone Z or next corridor segment | Envelope expansion at PED | New envelope released |
| PAYLOAD_RELEASE (0x04); SINGLE_USE | Lower or release a delivery parcel at drop zone D | Latch solenoid or winch driver | Solenoid power window |
| SENSOR_ACTIVATE (0x05); ENVELOPE | Camera on, resolution R, field of view F, area A | Camera power rail or sensor-output key | Rail enable or output key |
| RF_EMIT (0x06); ENVELOPE | Transmit video downlink on band B at power P | Power amplifier enable, frequency register | PA enable, register permit |
| MODE_TRANSITION (0x07); SINGLE_USE | Switch from assisted to autonomous BVLOS mode | Flight-mode register | Register write permit |
| RID_CHANGE (0x08); SINGLE_USE | Change RID transmission state | RID module enable and configuration | Configuration write permit |
| COORDINATED (0x09); Composite child | Formation change across N aircraft | Each aircraft's kinetic sink | Per-child release after composite commit |
| SAFE_STATE (0x3F); n/a | Hover, loiter, descend, land, return-to-home | Flight controller safe-state path | Pre-authorized (no handle) |
RID_CHANGE requests that would suppress legally required RID transmission MUST be denied unless an authority object explicitly permits the change, since the enforcement domain is the component that must not be coercible into making the aircraft anonymous.¶
Objects are encoded as deterministic CBOR [RFC8949] (Section 4.2 of that document) when carried onboard or over constrained links, and MAY be encoded as JCS JSON [RFC8785] off-board. Signatures use COSE [RFC9052]. The CDDL [RFC8610] below uses text keys for readability. The compact integer-key mapping in Section 6.2 is the encoding RECOMMENDED on onboard buses. Implementations that speak only the text-key form MUST still produce the same deterministic digest over the integer-key encoding when computing d(U), or declare that they use the text-key encoding for digesting and never mix the two.¶
u-cad = {
"v" : 1,
"act_class" : uint, ; Table 2 code
"ua_det" : bstr .size 16, ; DRIP Entity Tag of this UA
"sink_id" : bstr .size 8, ; PED-local sink identifier
"act_id" : bstr .size 16, ; random per Candidate Act
"params" : act-params, ; load-bearing parameters only
"ctx_digest" : bstr .size 32, ; digest of live context snapshot
"g_air" : uint, ; airspace/geo-zone generation
"g_rev" : uint, ; revocation generation
"g_pol" : uint, ; operator policy generation
"aao_digest" : bstr .size 32, ; authority object relied on
? "composite": { "id": bstr .size 16, "digest": bstr .size 32 }
}
act-params = kinetic-env / volume-entry / payload
/ sensor / rf / other
kinetic-env = {
"corridor_id" : bstr, "segment" : uint,
"v_max_cms" : uint, "a_max_cms2" : uint,
"h_min_dm" : int, "h_max_dm" : int,
"t_start" : uint, "t_end" : uint ; seconds, GNSS time
}
payload = {
"drop_zone_id" : bstr, "h_max_dm" : uint,
"v_max_cms" : uint, "tilt_max_cdeg" : uint
}
sensor = { "sensor" : uint, "res_class" : uint,
"fov_cdeg" : uint, "area_id" : bstr, "t_end" : uint }
rf = { "band_id" : uint, "p_max_dbm" : int, "t_end" : uint }
volume-entry = { "zone_id" : bstr, "g_air" : uint }
other = { * tstr => any }
¶
The descriptor digest is d(U) = SHA-256(det-CBOR(U)) [RFC6234]. Only load-bearing fields are included; fields that do not change the effect MUST NOT be added, so that the sink can reconstruct the descriptor from the pending act rather than trusting a caller-supplied digest.¶
When the compact profile is used, text keys MUST be replaced by the following major integers before deterministic encoding. Unknown keys are rejected.¶
| Text key | Integer | Object |
|---|---|---|
| v | 1 | U-CAD, AAO, handle, receipt, anchor |
| act_class / act_classes | 2 | U-CAD / AAO |
| ua_det | 3 | all UA-bound objects |
| sink_id | 4 | U-CAD, handle |
| act_id | 5 | U-CAD |
| params | 6 | U-CAD |
| ctx_digest | 7 | U-CAD, receipt |
| g_air / g_air_min | 8 | U-CAD / AAO |
| g_rev / g_rev_min | 9 | U-CAD / AAO |
| g_pol | 10 | U-CAD |
| aao_digest | 11 | U-CAD |
| composite | 12 | U-CAD |
| issuer | 13 | AAO |
| corridor | 14 | AAO |
| envelopes | 15 | AAO |
| t_start / t_end | 16 / 17 | AAO, params |
| quorum | 18 | AAO |
| offline | 19 | AAO |
| reuse | 20 | handle (0=SINGLE_USE, 1=ENVELOPE) |
| expiry | 21 | handle |
| nonce | 22 | handle |
| act_digest | 23 | handle (= d(U)) |
| decision | 24 | receipt (0=DENY, 1=ALLOW, 2=SAFE) |
| n | 25 | receipt counter |
| prev | 26 | previous receipt digest |
| handle_digest | 27 | receipt |
| code | 28 | receipt deny code |
aao = {
"issuer" : tstr, ; operator, USS/USSP, authority
"ua_det" : bstr .size 16,
"act_classes" : [+ uint],
"corridor" : corridor,
"envelopes" : { * uint => any }, ; per act class bounds
"g_air_min" : uint, ; lowest acceptable g_air
"g_rev_min" : uint,
"t_start" : uint, "t_end" : uint,
"quorum" : { * uint => uint }, ; act class => required signers
"offline" : { "t_max" : uint, "classes" : [* uint] }
}
corridor = [+ prism]
prism = { "poly" : [3* [lat_e7: int, lon_e7: int]],
"h_min_dm" : int, "h_max_dm" : int }
; carried inside COSE_Sign1; multiple issuers => COSE_Sign
¶
The AAO is resolved by the PED and never by the mission computer. Possession of an AAO by any software component confers no authority.¶
An Execution Handle in this profile is a COSE_Sign1 (or COSE_Sign, when the AAO quorum requires it) object that binds at minimum:¶
The handle is non-bearer: possession without a successful consume at the named sink confers no effect. Identical SINGLE_USE handles MUST be refused on the second consume. A Finality Receipt is a PED-signed COSE_Sign1 that binds the decision, d(U) when known, the handle digest when a handle was presented, ctx_digest when a context snapshot was taken, the selected safe state on deny, a monotonic receipt counter n, the previous receipt digest, and, when evidence is emitted, the same 8-octet AER header that was queued. A receipt MUST NOT be accepted as a handle (deny code EF-008).¶
A protected receipt chain may authenticate each committed receipt against the preceding receipt. One representative construction, preserving the provisional receipt-chain invariant, is:¶
R_n = Auth_K( Header_n || B_n || Counter_n || H(R_(n-1)) )¶
Here B_n is the applicable Binding Commitment or equivalent act-bound decision commitment. The exact authenticator is profile-specific; the required property is that deleting, reordering, substituting, or rolling back a committed receipt is detectable by the protected receipt state.¶
This section defines an optional compact transport profile for execution verification over links where the full AAO, full Execution Handle, or complete policy state is too large or too costly to transmit on every act. It is distinct from the Compact Broadcast Act Evidence mechanism of Section 18. A BPC is presented before effectuation as verification input. An AER, KDR, Anchor, or Finality Receipt is evidence about a decision and MUST NOT be accepted as a BPC or Execution Handle.¶
The U-CAD already provides the canonical Candidate Act U and d(U). For a BPC, the PED additionally forms a selected Context object Ctx containing only state material to the effect, for example corridor or geo-zone generation, geographic cell, altitude band, mission phase, payload state, flight mode, RF mode, and policy or revocation state. Exact coordinates need not be broadcast.¶
D_A = SHA-256( "UAS-BPC-ACT" || det-CBOR(U) )
D_C = SHA-256( "UAS-BPC-CTX" || det-CBOR(Ctx) )
B = HMAC-SHA-256(K_bind,
"UAS-BPC-BIND" || D_A || sink_id || authority_ref ||
g_air || g_rev || g_pol || D_C || freshness || expiry)
B_t = Trunc_t(B)
¶
K_bind is held or derived inside the PED and the verifying Finality Sink and is unavailable to the mission computer, ordinary transmitter, and other act-proposing components. A deployment may use an unkeyed binding only where the retained length is sized against the offline substitution budget in Section 7.4. Changing a load-bearing act field, sink, authority, generation, context, freshness value, or expiry therefore changes the expected binding.¶
Sink_2 != Sink_1
=> Binding(A, Sink_2) != Binding(A, Sink_1)
except with the bounded cryptographic collision probability
¶
A deployment may derive distinct capsule-authentication and act-binding keys from a common protected root. A representative derivation is:¶
K_B = HKDF(K_root,
"BEACON" || SessionNonce || DeviceID || PolicyEpoch || SinkClass)
K_bind = HKDF(K_root,
"BIND" || SessionNonce || DeviceID || SinkID)
¶
The derivations intentionally use different domain-separation labels and different scope inputs. K_B authenticates the compact transport object; K_bind binds execution semantics to the act and Finality Sink. Disclosure or compromise of one derived-key role therefore does not intentionally collapse the two roles. Equivalent KDFs may be used where they provide the same separation property.¶
Key evolution used for ordinary undisclosed session keys is distinct from the reverse chain used for delayed-disclosure evidence. A forward erasure ratchet may evolve as:¶
K_(i+1) = H(K_i) ; erase K_i after use¶
Because disclosure of K_i would reveal all later values in that construction, a forward ratchet MUST NOT be used as the delayed-disclosure evidence chain of Section 18. That evidence chain runs in the reverse direction so that disclosure authenticates past intervals without revealing later undisclosed evidence keys.¶
A BPC need not carry the AAO in full. The PED may maintain an authenticated local cache of AAOs and use a compact Authority Reference. A preferred keyed construction first derives a stable full digest of the deterministic AAO payload and then derives a short reference under a protected reference key K_R:¶
D_AAO = SHA-256( det-CBOR(AAO-payload) )
R = Trunc_r( HMAC-SHA-256(K_R,
"UAS-BPC-AUTHREF" || D_AAO) )
¶
K_R is not available to the mission computer or ordinary beacon transmitter. An unkeyed reference may be used only when r is selected using an applicable attacker-work budget. Resolution MUST occur in or under control of the PED or Finality Sink. Unknown, stale, ambiguous, revoked, or unresolved Authority References MUST NOT authorize effectuation.¶
A representative BPC contains the following logical fields. The precise byte layout is profile-specific; fields may be implicit from protected session state, dictionary-indexed, delta-encoded, or recovered from local state. This version defines no IANA allocation for BPC profiles.¶
; Semantic BPC. Integer keys are illustrative profile-local labels.
bpc = {
0 : 1, ; version
1 : uint, ; profile_id
2 : uint, ; act_class
3 : uint, ; sink class or compact sink id
4 : bstr, ; authority_ref, typically 4 or 8 octets
5 : uint, ; g_air or session-relative airspace generation
6 : uint, ; g_rev
7 : uint, ; g_pol
8 : uint, ; freshness / sequence
9 : uint, ; expiry delta or time-slot
10 : bstr, ; context_ref_or_digest
11 : bstr, ; B_t, compact Binding Commitment
12 : uint, ; flags / risk profile
13 : bstr ; capsule authenticator
}
¶
Non-limiting compression includes compact act and sink dictionaries, a 32- or 64-bit Authority Reference, expiry delta instead of an absolute timestamp, corridor or geo-cell references instead of coordinates, a compact Context Commitment, and bitmaps for authenticated predicate state. A predicate bitmap is advisory unless covered by the capsule authenticator and never substitutes for the sink's own protected checks.¶
Truncation length is selected explicitly rather than by convenience. Let t be the retained number of Binding Commitment bits and q the approximate number of distinct commitments in the relevant collision domain. The birthday estimate for accidental coincidence is:¶
P_coll ~= q(q-1) / 2^(t+1) for target epsilon_c: t >= ceil( log2( q(q-1) / (2 * epsilon_c) ) )¶
For an unkeyed commitment whose inputs are known or predictable, an attacker may search offline for a substituted act producing the same short value. With W offline trials:¶
P_sub ~= W / 2^t for target epsilon_s: t >= ceil( log2( W / epsilon_s ) )¶
For a keyed binding where offline search is unavailable without K_bind, a targeted attacker is limited to online attempts that encounter freshness and replay controls:¶
P_sub <= A_online / 2^t¶
These expressions size compact fields; they are not an airworthiness or total system-failure probability. The selected t therefore depends on safety class, act rate, fleet size, session lifetime, replay-cache lifetime, whether the binding is keyed, and the accepted attempt budget. Higher-consequence act classes may use longer compact commitments.¶
If a receiver's protected cache or reconstruction process finds more than one full candidate consistent with the same short value, it MUST NOT choose one heuristically. It MUST deny the consequential act or escalate to a profile carrying a longer commitment or full proof.¶
Trunc_t(B_1) = Trunc_t(B_2) AND B_1 != B_2
=> Ambiguous
Ambiguous => Effectuate(CandidateAct) = FALSE
¶
In addition to B_t, the BPC is authenticated as a complete transport object. A symmetric constrained profile may compute:¶
Tag = Trunc_m( HMAC-SHA-256(K_B,
"UAS-BPC-CAPSULE" || canonical(BPC_without_Tag)) )
¶
K_B is a protected session or link key. For an expected aggregate attacker verification budget A and permitted aggregate forgery probability epsilon_f, a deployment can select:¶
A / 2^m <= epsilon_f m >= ceil( log2( A / epsilon_f ) )¶
Other authenticated constructions may be used where their security and field sizes meet the applicable profile. The capsule authenticator protects the transport representation; B_t separately binds the execution semantics to the actual act and sink.¶
If a complete BPC or its referenced proof material does not fit one transport unit, it may be fragmented. Let P be the complete encoded proof and p_i its ordered fragments. A protected sender computes:¶
P = p_0 || p_1 || ... || p_(n-1)
Root = SHA-256( "UAS-BPC-FRAG-ROOT" || P )
F_i = { SessionID, Root, i, n, p_i, Auth_i }
Auth_i = Trunc_m( HMAC-SHA-256(K_frag,
"UAS-BPC-FRAG" || SessionID || Root ||
i || n || p_i) )
¶
No individual fragment is execution authority. The verifier MUST authenticate the required fragment set, require a common SessionID and Root, reconstruct the ordered proof, and verify the Root before continuing normal finality verification. A fragment from another session, root, fragment count, policy generation, or device context MUST NOT be mixed into the reconstruction.¶
IncompleteEvidence => NoEffectuation
FragmentsReceived < RequiredFragments
=> Effectuate(CandidateAct) = FALSE
Verify(BPC) != TRUE
=> Effectuate(CandidateAct) = FALSE
¶
A missing or corrupted fragment, unknown Authority Reference, unresolved context reference, stale generation, invalid capsule tag, ambiguous sink, collision-guard trigger, absent freshness state, or incomplete reconstruction therefore leaves the consequential Candidate Act non-effective. Safe-State Set actions remain available.¶
A protected resolver may be used when the constrained link carries only an Authority Reference and compact commitment. The PED supplies at least the Authority Reference, Binding Commitment or compact value, UA reference, current generation information, and requested act class. The resolver may return the resolved AAO and authenticated resolver proof. The resolver does not decide the physical act; the PED and Finality Sink still reconstruct the actual impending U-CAD and apply current local state.¶
PROCEDURE RESOLVE_BPC_AUTHORITY(bpc):
aao := PROTECTED_CACHE_LOOKUP(bpc.authority_ref)
IF aao IS NOT NULL: RETURN aao
IF authenticated_resolver_available:
response := RESOLVER_QUERY(bpc.authority_ref,
bpc.binding_commitment,
SELF.det,
CURRENT_GENERATIONS())
IF VERIFY_RESOLVER_RESPONSE(response):
CACHE_PROTECTED(response.aao)
RETURN response.aao
RETURN UNKNOWN
¶
UNKNOWN is not EMPTY and is not authorization. A cache miss or resolver failure MUST result in no permission expansion; the PED may hold, request refresh, use a permitted Safe-State Set action, or require a full AAO over another authenticated path.¶
The sink never trusts an upstream description of the act merely because the BPC authenticated correctly. It independently reconstructs the pending U-CAD and recomputes the expected binding from actual local command and actuator state.¶
PROCEDURE PED_FINALIZE_BPC(pending_act, bpc, sink):
ASSERT sink.enable == DISABLED
IF NOT BPC_COMPLETE_AND_AUTHENTIC(bpc):
RETURN SAFE_DENY("BPC_INCOMPLETE_OR_INVALID")
U_actual := RECONSTRUCT_UCAD(pending_act, sink)
IF U_actual IS NULL:
RETURN SAFE_DENY("BPC_ACT_RECONSTRUCT_FAILED")
AAO_current := RESOLVE_BPC_AUTHORITY(bpc)
IF AAO_current == UNKNOWN:
RETURN SAFE_DENY("BPC_AUTHORITY_UNKNOWN")
C_current := SNAPSHOT_TRUSTED_CONTEXT()
D_A := SHA256("UAS-BPC-ACT" || DET_CBOR(U_actual))
D_C := SHA256("UAS-BPC-CTX" || DET_CBOR(SELECT_BOUND_CONTEXT(C_current)))
B_actual := HMAC_SHA256(K_bind,
"UAS-BPC-BIND" || D_A || sink.id ||
bpc.authority_ref || bpc.g_air || bpc.g_rev || bpc.g_pol ||
D_C || bpc.freshness || bpc.expiry)
IF TRUNC(B_actual, bpc.binding_bits) != bpc.binding_commitment:
RETURN SAFE_DENY("BPC_BINDING_MISMATCH")
BEGIN ATOMIC
G := READ_CURRENT_GENERATIONS()
IF NOT BPC_GENERATIONS_CURRENT_OR_PERMITTED(bpc, G, U_actual):
ABORT SAFE_DENY("BPC_GENERATION_STALE")
IF NOT CONSUME_BPC_FRESHNESS(bpc):
ABORT SAFE_DENY("BPC_REPLAY")
R := MAKE_RECEIPT(ALLOW, HASH(U_actual), HASH(bpc),
CTX_DIGEST(C_current), n := counter + 1, prev := r_last)
COMMIT(R)
END ATOMIC
IF COMMIT_STORE_UNAVAILABLE:
RETURN SAFE_DENY("BPC_RECEIPT_STORE_UNAVAILABLE")
RELEASE(sink, SCOPED_ENABLEMENT(U_actual, AAO_current, bpc.expiry))
EMIT_ACT_EVIDENCE(R) # optional evidence output; never authority input
RETURN ALLOW
¶
The BPC and AER mechanisms serve opposite directions of trust. A BPC is consumed before effectuation to help determine whether the exact impending act may become effective. An AER is emitted only after the PED has committed an allow, deny, or safe-state receipt and is later verified by Observers. Accordingly:¶
AcceptAsAuthority(x) => x NOT IN {Receipt, AER, KDR, Anchor}
TreatAsObserverEvidence(BPC) => FALSE unless separately profiled as evidence
¶
This role separation is load-bearing. Replaying a valid AER, KDR, Anchor, or Finality Receipt at a sink cannot create execution authority, and possession of a BPC cannot be used to claim that the corresponding physical act actually occurred.¶
The following non-normative pseudocode shows the processing order. The order is normative: static verification, then reading current state and consuming inside one atomic section, then committing the receipt, then releasing.¶
A representative conjunction for the BPC path is:¶
ALLOW =
AuthValid
AND ActMatch
AND SinkMatch
AND Fresh
AND NotReplayed
AND PolicyCurrent
AND RevocationCurrent
AND ContextMatch
AND BeaconAuthentic
AND EvidenceComplete
¶
Additional act-class predicates may strengthen this conjunction. No omitted predicate is implied to be optional where another section requires it.¶
The replay and receipt state transitions precede capability release:¶
Consumed(N) = TRUE => Accept(N) = FALSE
CapabilityReleased
=> NonceConsumed AND ReceiptCommitted
ReadCurrentEpochs <= ConsumeNonce <= CommitReceipt(n)
< ReleaseCapability < Effectuate(A)
Epoch_presented != Epoch_current(read inside commit)
=> Effectuate(A) = FALSE
unless an explicitly defined compatibility rule applies
¶
Within the ordering artwork, X < Y means that X strictly completes
before Y may occur, while X <= Y means that X occurs no later than Y and
may be ordered within the same protected atomic transaction. These symbols express
required happens-before relationships rather than wall-clock duration. Current
policy and revocation state used for the deciding result are read inside the
protected commit, not only during an earlier pre-check.¶
Where the verifying PED and physical actuator boundary are separate, successful verification may derive a short-lived sink-local capability:¶
E = MAC_KS( B || SinkID || ActuatorEnvelope || Counter ) Effectuate(A) => Verify_KS(E)¶
K_S is the protected sink-local capability-authentication key defined in Section 3.2. E is local bounded execution authority, not a transferable bearer token; it is scoped to the verified Binding Commitment, sink, actuator envelope, and protected counter state.¶
PROCEDURE PED_FINALIZE(pending_act, handle, sink):
# 0. Default: enablement condition is withheld. Initialize audit fields
# so any early denial can be recorded without dereferencing unset state.
ASSERT sink.enable == DISABLED
U := NULL
dU := NULL
C := NULL
raw_handle_digest := HASH_IF_PRESENT(handle)
# 1. Reconstruct; never trust a caller-supplied digest.
U := RECONSTRUCT_UCAD(pending_act, sink)
IF U IS NULL: DENY(RECONSTRUCT_FAILED)
dU := SHA256(DET_CBOR(U))
# 2. Static verification (no mutable state read).
IF NOT VERIFY_COSE(handle, issuer_keys): DENY(SIG_INVALID)
IF handle.act_digest != dU: DENY(ACT_MISMATCH)
IF handle.sink_id != sink.id: DENY(SINK_MISMATCH)
IF handle.ua_det != SELF.det: DENY(UA_MISMATCH)
IF U.act_class NOT IN AAO(handle).act_classes:
DENY(CLASS_NOT_PERMITTED)
# 3. Live context from trusted sources inside the PED.
C := SNAPSHOT_TRUSTED_CONTEXT() # GNSS/RTK, VIO, IMU, baro,
# time, battery, ESC telemetry
IF NOT POSITION_CONSISTENT(C): SELECT_SAFE(LOC_CONFIDENCE_LOW)
IF NOT PREDICATES_HOLD(U, AAO(handle), C): DENY(PREDICATE_FAILED)
# 4. Atomic section: currentness + consume + receipt commit.
BEGIN ATOMIC
G := READ_CURRENT_GENERATIONS() # g_air, g_rev, g_pol
IF handle.g_rev < G.g_rev AND REVOKES(G, handle):
ABORT DENY(EF-062)
IF handle.g_air < G.g_air AND AFFECTS(G.airspace_delta, U):
ABORT DENY(EF-061)
IF handle.g_air < G.g_air AND NOT AFFECTS(G.airspace_delta, U):
NOTE(GEN_ADVANCED_NOT_AFFECTING) # only if AAO permits
IF NOT CONSUME(handle, U, reuse_policy): ABORT DENY(CONSUMED)
R := MAKE_RECEIPT(ALLOW, dU, raw_handle_digest,
CTX_DIGEST_IF_PRESENT(C),
n := counter + 1, prev := r_last)
COMMIT(R) # crash-consistent, monotonic
END ATOMIC
IF COMMIT_STORE_UNAVAILABLE: DENY(EF-081) # fail closed
# 5. Release only after receipt commit.
RELEASE(sink, SCOPED_ENABLEMENT(U, handle, t_expiry))
EMIT_ACT_EVIDENCE(R) # broadcast evidence, optional
RETURN ALLOW
PROCEDURE DENY(code):
# dU and C may be NULL for an early parsing or signature failure.
# The denial receipt records only values already established by the PED.
R := MAKE_DENY_RECEIPT(code = code,
act_digest = dU,
raw_handle_digest = raw_handle_digest,
ctx_digest = CTX_DIGEST_IF_PRESENT(C),
sink_id = sink.id,
n = counter + 1,
prev = r_last)
IF COMMIT(R):
EMIT_ACT_EVIDENCE(R)
sink.enable := DISABLED # unchanged
SELECT_SAFE(MAP_TO_SAFE_STATE(IF_DEFINED(U.act_class), code))
RETURN DENY
¶
A denial MUST NOT cause loss of controlled flight. Denial of a payload act keeps the latch locked and continues flight; denial of a sensor act removes sensor power while preserving navigation sensors; denial of a volume entry holds or reroutes; denial of a kinetic envelope clamps to the last valid envelope or begins a controlled descent according to Section 12.¶
For a locally cached authority path, a representative verification latency may be decomposed as:¶
T_verify =
T_parse
+ T_lookup
+ T_MAC
+ T_hash
+ T_replay
+ T_receipt
+ T_compare
¶
This is an implementation cost model, not a mandated latency target. It makes explicit why certificate-chain validation, resolver synchronization, and complex policy parsing are preferably cold-path operations while the actuation hot path uses bounded local checks.¶
Motor setpoints are issued at hundreds of hertz; per-setpoint handles are neither necessary nor practical. An Envelope Handle authorizes the set¶
E = { u : |v(u)| <= v_max, |a(u)| <= a_max, h_min <= h(u) <= h_max,
p(u) in Corridor_k } over window W = [t_s, t_e]
¶
and every setpoint u_j at time t_j is admitted by the sink-side comparator if and only if u_j is in E and t_j is in W and the aggregate ceiling is not exceeded, for example cumulative distance D_j = sum over i <= j of |p_i - p_(i-1)| <= D_max. This check is a set of range comparisons that can be implemented in FPGA logic or a secure microcontroller within one control period. Leaving E, leaving W, or exceeding the ceiling ends the envelope; further motion requires a new handle or a safe state. Identical repeats of a SINGLE_USE handle MUST be refused.¶
This section states predicates and conservative scheduling relationships used by the PED. They are protocol-policy inputs, not airworthiness or certification formulas. Notation: p(t) is the UA position in a local East-North-Up frame derived from trusted sources; Corridor_k is the permitted volume for segment k; d(t) is the signed horizontal-or-vertical distance from p(t) to the nearest boundary of Corridor_k (positive inside); v_max is the envelope speed bound; a_brk is a conservative guaranteed deceleration value established for the applicable airframe/state by protected configuration or attested safety data; tau is a conservative upper bound on sensing, PED, controller, and actuator reaction delay; and eps_pos is the position uncertainty bound.¶
P_corr(t) := p(t) in Corridor_k AND h_min <= h(t) <= h_max
P_time(t) := t_start <= t <= t_end
P_vel(t) := |v(t)| <= v_max AND |a(t)| <= a_max
P_gen := g_air(handle) = g_air* OR
(g_air(handle) < g_air* AND delta(g_air*) does not
intersect Corridor_k over [t, t_end])
P_rev := NOT revoked(handle, g_rev*)
P_payload := p(t) in DropZone AND h(t) <= h_drop_max
AND |v(t)| <= v_drop_max AND tilt(t) <= tilt_max
P_sensor := footprint(p(t), attitude, fov) subset of PermittedArea
AND res_class <= res_permitted
¶
Starred quantities are read inside the atomic section of Section 8. P_sensor uses the projected sensor footprint rather than aircraft position, because a camera outside a protected area can still image inside it.¶
Envelope authority is revalidated at an interval Delta_r. Between two revalidations the aircraft can move at most v_max * Delta_r, and after a failed revalidation it needs a stopping distance¶
s_stop(v_max) = v_max * tau + v_max^2 / (2 * a_brk)¶
For the aircraft never to leave Corridor_k undetected, the following condition is sufficient:¶
v_max * Delta_r + s_stop(v_max) + eps_pos <= d(t) => Delta_r(t) <= ( d(t) - eps_pos - s_stop(v_max) ) / v_max¶
When this scheduling profile is selected, the PED MUST use conservative, protected values for a_brk, tau, and eps_pos and schedule the next revalidation no later than the resulting Delta_r(t). A deployment MUST substitute a more conservative certified or safety-engineered stopping model where the point-mass expression is not adequate. If the right-hand side is less than or equal to zero, the PED MUST NOT release further outward motion and MUST either reduce v_max or select a safe state. The revalidation rate therefore rises near boundaries and may fall in the interior. Worked example: d = 60 m, eps_pos = 5 m, v_max = 15 m/s, a_brk = 5 m/s^2, tau = 0.1 s gives s_stop = 1.5 + 22.5 = 24 m and Delta_r <= (60 - 5 - 24) / 15 = 2.07 s; at d = 30 m the bound is 0.07 s and the PED instead lowers v_max to 8 m/s, giving s_stop = 7.2 m and Delta_r <= 2.23 s.¶
Revalidation is also triggered by events, independent of Delta_r: arrival of a new generation, waypoint transition, altitude-band change, payload-state change, RF-mode change, sensor disagreement, and battery or thermal threshold crossings.¶
Given m independent position sources with estimates p_i and stated one-sigma uncertainties sigma_i, the PED computes the fused estimate p_hat and requires¶
for all i, j : |p_i - p_j| <= k * (sigma_i + sigma_j) eps_pos := k * max_i sigma_i count of agreeing sources >= q_min (q_min >= 2 RECOMMENDED)¶
with k a positive profile-selected uncertainty multiplier (for example 3), q_min the minimum number of sufficiently independent or partially independent sources that must agree, and |.| denoting the profile's applicable spatial-distance norm. Disagreement is treated as insufficient location confidence: no envelope expansion, no volume entry, no payload release, no sensor activation over area-scoped permissions. A single spoofed GNSS source that diverges from visual-inertial odometry or barometric altitude beyond the bound therefore removes authority rather than steering it.¶
For every allowed act the following ordering holds:¶
t_verify_static < t_read_current <= t_consume <= t_commit(R)
< t_release < t_effect
¶
The remaining risk is usefully decomposed, but this document does not assign a single numerical probability bound to the complete cyber-physical system. Relevant contributors include cryptographic collision or forgery risk (eps_hash, eps_sig), protected-state or crash-consistency failure (eps_store), an unmodelled or bypassing consequence path (eps_path), and trusted-context failure within the accepted tolerance (eps_ctx):¶
residual_risk := {
eps_hash, eps_sig, eps_store, eps_path, eps_ctx
}
¶
The cryptographic terms may be made negligible under their stated assumptions; eps_path and eps_ctx are engineering and assurance quantities, not cryptographic constants. In particular, eps_ctx depends on sensor independence, q_min, stated uncertainty, environmental conditions, and the applicable threat model. The decomposition is intended to expose these assumptions rather than to present an airworthiness or certification probability.¶
A new airspace generation g_air' (for example activation of a temporary restriction) can arrive through Network RID services, a USS or USSP, or a data link. On receipt, the PED verifies its signature and monotonicity (g_air' > g_air*), atomically updates g_air*, and evaluates the delta against every outstanding handle:¶
ON NEW_GENERATION(update):
IF NOT VERIFY(update) OR update.g <= g_air*: IGNORE_AND_LOG
BEGIN ATOMIC
g_air* := update.g
FOR h IN OUTSTANDING_HANDLES():
IF INTERSECTS(update.delta, h.corridor, [now, h.t_end]):
INVALIDATE(h) # future consume fails
IF h.reuse == ENVELOPE AND h.active:
END_ENVELOPE(h) # stops admitting setpoints
SELECT_SAFE(REROUTE_OR_HOLD)
END ATOMIC
REQUEST_NEW_AAO_IF_LINK_AVAILABLE()
¶
A UA that has not received a generation cannot enforce it. This is why the offline bound of Section 11 exists and why AAOs carry g_air_min: an authority can refuse to issue handles to an aircraft whose last acknowledged generation is stale.¶
At link loss time t_L the PED enters offline mode. In offline mode it MAY continue to honour handles that were already issued, only for act classes listed in the AAO's "offline.classes", and only until¶
t_off_end = min( t_L + T_off_max , h.t_end for each handle h )¶
after which only S_safe is permitted. New handles MUST NOT be created offline for SINGLE_USE classes other than those listed. PAYLOAD_RELEASE and SENSOR_ACTIVATE SHOULD NOT be listed as offline classes. Receipts are appended to a sealed local buffer protected by the monotonic counter and are reconciled when the link returns.¶
The residual exposure to a revocation or restriction issued after t_L is therefore bounded and computable:¶
T_exposure <= T_off_max D_exposure <= v_max * T_off_max (inside last released envelope)¶
Operators and authorities can choose T_off_max per operation class. This converts "the aircraft kept flying on cached authority" into a stated, auditable bound.¶
| Condition | Kinetic effect | Other subsystems |
|---|---|---|
| Volume entry denied / generation affects corridor | Hold (multirotor hover, fixed-wing loiter) or reroute inside last valid corridor | Unchanged |
| Payload predicate fails | Continue flight | Latch locked, solenoid unpowered |
| Sensor predicate fails | Continue flight | Camera power removed; navigation sensors kept |
| RF predicate fails | Continue flight | Payload radio silent; command-and-control and RID links kept |
| Location confidence low | Hold, then controlled descent if not recovered in T_loc | Payload locked, area-scoped sensors off |
| Envelope exceeded | Clamp to envelope, or controlled landing if clamping is unsafe | Unchanged |
| Offline window expired | Return-to-home or land at nearest pre-approved site | Payload locked |
| Consume or receipt store unavailable (EF-081) | Hold, then land | All non-safety sinks disabled |
S_safe is fixed in PED firmware or FPGA logic and is part of the attested measurement. It cannot be widened by the mission computer. Safe-state manoeuvres use the flight controller's existing stabilization and landing logic.¶
a IN S_safe
=> Available(a) regardless of Verify(BPC)
¶
The invariant applies only to the pre-authorized stabilizing or risk-reducing action set; failure of ordinary authorization therefore does not itself remove the protected means to maintain or reach a safe state.¶
A command from a ground station, fleet service, or remote pilot that is correctly signed is treated as a Candidate Act, not as authority. The PED evaluates it against the same predicates. A validly signed command to enter a restricted volume, release a payload outside a drop zone, exceed an envelope, activate a sensor over a protected area, disable RID, or join an unauthorized coordinated act is denied. For act classes that the AAO marks with a quorum, the handle MUST carry the required COSE_Sign signatures (for example remote pilot plus fleet safety authority plus payload authority).¶
Q = { A_1, A_2, ... , A_n }
QuorumValid(Q, k) <=>
| { A_i : Verify(A_i) = TRUE } | >= k
¶
The threshold result is still only one input to finality: the exact act, sink, freshness, current epochs, and live context remain independently verified.¶
A coordinated act across N aircraft (formation change, synchronized handoff of an inspection segment, simultaneous corridor swap) follows [DAS-COMPOSITE] with the ALL_REQUIRED join rule and the following UAS-specific constraints.¶
NON_EFFECTIVE --all prepared--> PREPARED --log COMMIT--> EFFECTUATED
| | \
| any prepare fails | \--log unreachable--> HOLD
v v |
ABORTED <-- CAS ABORT on reserve expiry (log reachable) <------+
(log returns)
Each participating unit also derives its own act/sink/context binding. One representative per-unit construction is:¶
B_i = HMAC_(K_bind,i)(
D_A || Sink_i || Context_i || N_i )
¶
A common high-level coordinated proposal therefore does not create transferable authority between units; a proof valid for unit i does not automatically authorize unit j.¶
For the informative autonomous-road-vehicle application, a cooperative manoeuvre negotiated between vehicles or roadside infrastructure may use a more specific participant binding:¶
B_v = HMAC_(K_bind,v)(
D_M
|| Sink_v
|| TrajDigest_v
|| LaneGroup
|| SpeedBand
|| TimeSlot
|| E_P
|| E_R
|| N_v )
¶
D_M is the digest of the agreed manoeuvre and TrajDigest_v is the trajectory envelope assigned to vehicle v. The vehicle motion-admission sink reconstructs the trajectory actually produced by its planner and admits it only on match. For an all-required cooperative manoeuvre, the protected HOLD state is the current lane-and-speed envelope or another profile-defined minimal-risk state.¶
No-split property: because every child release requires reading the same committed log entry, and the log accepts exactly one of COMMIT or ABORT per composite identifier, no execution exists in which one child effectuates under COMMIT while another effectuates under ABORT. Liveness depends on log reachability; safety does not.¶
A DAA system can correctly identify an intruder and compute a valid resolution maneuver at an initial time, while the traffic picture changes before that maneuver reaches the motion-admission boundary. A second intruder can become relevant, a track can move or be reclassified, uncertainty can expand, a surveillance source can become stale, ownship state can diverge, or another DAA source can supersede the earlier resolution. Authentication of the original DAA output proves neither that its safety basis is still current nor that the trajectory actually presented to the flight controller is the trajectory that was evaluated.¶
The profile therefore does not reduce DAA finality to "check for collisions before moving". It binds the accepted resolution to the complete policy-relevant Conflict Set, ownship state, Resolution Epoch, motion sink, and validity horizon on which the resolution was computed. Immediately before motion admission, the protected domain reconstructs the current Conflict Set and the actual impending motion and refuses effectuation if the accepted safety basis is no longer equivalent.¶
+--------------------+ +--------------------+
| Traffic sources | | Protected ownship |
| cooperative / | | GNSS / IMU / VIO |
| non-cooperative | | time / flight state|
+---------+----------+ +---------+----------+
\ /
\ /
v v
+------------------------------+
| DAA computation engine |
| proposes resolution M |
+--------------+---------------+
| Candidate M
v
+------------------------------+
| Protected DAA Finality Domain|
| ConflictSetRoot | ResEpoch |
| current-set revalidation |
+-----------+------------------+
| scoped motion capability
v
+------------------------------+
| Motion-admission Finality Sink|
| reconstruct actual trajectory |
+-----------+------------------+
| match + current safety
v
Flight controller
|
deny ---->+----> Safe-Action Set
The DAA engine may remain ordinary or high-performance software. It computes proposed resolutions but does not itself hold the final actuator authority. The protected DAA Finality Domain maintains at least the canonical Conflict Set or an authenticated membership representation, its Conflict-Set Root, protected ownship state, source-health and freshness state, the current Resolution Epoch, nonces or sequence state, and the receipt state used by the motion-admission sink.¶
For each policy-relevant intruder j, a canonical descriptor may include track reference, source class, cooperative or non-cooperative class, relative position, relative velocity, acceleration estimate where used, covariance or bounded uncertainty, freshness, closest-point-of-approach quantities, track confidence, provenance reference, and an encounter or right-of-way class. Descriptors are deterministically sorted before the Conflict-Set Root is computed.¶
C_root = H( CanonicalSort(I_1 || I_2 || ... || I_n) )¶
A DAA Resolution Descriptor binds at least C_root, an ownship-state commitment, the proposed maneuver or trajectory-tube digest, the Resolution Epoch, the motion-admission sink, a validity horizon, the applicable safety profile, sensor-source epochs, policy and revocation state, freshness, and a nonce.¶
One non-limiting constant-velocity safety check for intruder j is:¶
t_CPA,j = clamp( -(r_j . v_j) / ||v_j||^2, 0, T ) d_CPA,j = || r_j + v_j * t_CPA,j || m_j(M) = d_CPA,j(M) - (D_req,j + epsilon_j) MultiIntruderSafe(M) <=> min_j m_j(M) >= 0¶
r_j and v_j are relative position and velocity, T is the prediction horizon, D_req,j is the required separation for the encounter class, and epsilon_j is a conservative margin for surveillance uncertainty, state-estimation error, latency, and applicable model error. This document does not require constant-velocity CPA; a certified DAA algorithm, reachable-set method, probabilistic conflict model, velocity-obstacle method, well-clear logic, or another deterministic safety predicate may replace it.¶
The load-bearing requirement is multi-intruder atomicity: a maneuver accepted to resolve one conflict does not obtain authority if it creates or leaves an unacceptable conflict with another policy-relevant track.¶
Eq(C_auth, C_now) =
SameRelevantMembers
AND FreshEnough
AND DeltaUncertainty <= U_max
AND NoNewHigherRiskTrack
¶
Exact set equality is the strongest profile, but an implementation may define a deterministic equivalence predicate that admits bounded changes proven not to invalidate the resolution. A newly relevant intruder, a removed track without a trusted termination reason, stale source state, material uncertainty expansion, or a changed encounter class SHOULD force recomputation unless the selected profile defines and verifies a safe equivalence rule.¶
When airborne DAA, ground-based DAA, UTM conflict services, autopilot obstacle avoidance, or a remote pilot can each propose a resolution, the protected domain maintains a monotonic Resolution Epoch. Superseding the accepted resolution increments the epoch and invalidates all ordinary motion capabilities bound to the prior epoch.¶
Accept(M) =>
M.resolution_epoch == CurrentResolutionEpoch
¶
This prevents two individually authenticated or individually valid DAA outputs from simultaneously steering the aircraft under different traffic snapshots.¶
PROCEDURE FINALIZE_DAA_RESOLUTION(candidate_M, descriptor, sink):
ASSERT sink.motion_expansion == DISABLED
own_auth := READ_PROTECTED_OWNSHIP()
C_auth := LOAD_CONFLICT_SET(descriptor.conflict_root)
REQUIRE descriptor.resolution_epoch == CURRENT_RESOLUTION_EPOCH()
REQUIRE FRESH(own_auth)
REQUIRE REQUIRED_TRACKS_FRESH(C_auth)
REQUIRE HASH(candidate_M) == descriptor.maneuver_digest
REQUIRE sink.id == descriptor.sink_id
FOR EACH intruder j IN C_auth:
REQUIRE SAFETY_MARGIN(candidate_M, own_auth, j) >= 0
PREPARE_DAA_FINALITY(descriptor)
BEGIN ATOMIC
own_now := READ_PROTECTED_OWNSHIP()
C_now := BUILD_CURRENT_RELEVANT_CONFLICT_SET()
epoch := CURRENT_RESOLUTION_EPOCH()
IF epoch != descriptor.resolution_epoch:
ABORT RECOMPUTE("RESOLUTION_EPOCH_CHANGED")
IF NOT CONFLICT_EQUIVALENT(C_auth, C_now):
ABORT RECOMPUTE("CONFLICT_SET_CHANGED")
FOR EACH intruder j IN C_now:
IF SAFETY_MARGIN(candidate_M, own_now, j) < 0:
ABORT RECOMPUTE("CURRENT_MARGIN_FAIL")
R := COMMIT_DAA_RECEIPT(
descriptor_digest = HASH(descriptor),
current_conflict_root = ROOT(C_now),
resolution_epoch = epoch)
END ATOMIC
actual_M := RECONSTRUCT_ACTUAL_TRAJECTORY(sink)
IF NOT MATCHES_AUTHORIZED_MOTION(actual_M, candidate_M):
RETURN SAFE_DENY("DAA_TRAJECTORY_SUBSTITUTION")
RELEASE(sink,
MOTION_CAPABILITY(HASH(actual_M), epoch, HASH(R)))
RETURN ALLOW
¶
This subsection is an informative cross-domain application to autonomous road vehicles. At an emergency scene, a police officer, firefighter, road worker, or other authorized responder may legitimately request a vehicle to perform a motion that ordinary road policy would reject: cross a lane marking, reverse, stop in an unusual position, enter a temporarily restricted lane, or follow a temporary path around an incident. Simply authenticating the responder does not establish that the instruction applies to this vehicle, this incident, this scene, this concrete motion, or the present time, and should not create unrestricted remote-driving authority.¶
The profile therefore creates temporary authority that is incident-bound, scene-bound, vehicle-bound, act-bound, sink-bound, time-bounded, independently corroborated by local scene evidence, and automatically extinguished when the applicable scene condition ends.¶
+----------------------+ +----------------------+
| Responder / incident | | Vehicle-local scene |
| authority service | | perception / sensors |
+----------+-----------+ +----------+-----------+
| ESAC | corroboration
v v
+------------------------------------------+
| Protected Vehicle Finality Domain |
| incident | scene | vehicle | exception |
| nonce | epochs | expiry | scene digest |
+-------------------+----------------------+
| temporary capability
v
+------------------------------------------+
| Motion-admission Finality Sink |
| reconstruct actual path and exception |
+-------------------+----------------------+
|
v
Vehicle motion
completion / expiry / scene exit / revocation
|
+----> invalidate authority
An Emergency Scene Authority Capsule (ESAC) may bind the vehicle identifier, responder role and authority reference, incident identifier and incident epoch, emergency-scene identifier, scene polygon or scene commitment, instruction class, permitted path or trajectory digest, speed and acceleration envelope, explicit traffic-rule exception class, start time and expiry, scene-evidence commitment, policy and revocation epochs, motion sink identifier, and nonce.¶
The responder identity is necessary but not sufficient. The protected vehicle domain independently derives local scene state from available protected or corroborated sources, for example emergency-vehicle presence, responder presence, temporary signs, lane closure, cone geometry, road blockage, fire or smoke scene, infrastructure state, or another profile-defined scene signal. Perception output alone is evidence and does not directly unlock steering, throttle, or braking authority.¶
The emergency-scene profile preserves separate mathematical treatment of scene commitment, corroboration, temporary-authority validity, geographic scope, motion admissibility, and automatic authority extinction. These predicates are conjunctive at the finality boundary; responder authentication alone is not sufficient.¶
A representative scene commitment is:¶
S_scene = H(
IncidentID ||
ScenePolygon ||
LocalEvidenceDigest ||
TemporaryControlDigest ||
SceneEpoch )
¶
Local physical corroboration may be represented by q-of-n protected validation results. Let v_i be 1 when independent evidence channel e_i satisfies its profile-defined validation rule and 0 otherwise:¶
SceneCorroborated <=> sum_i v_i >= q¶
A profile SHOULD prevent multiple messages or observations derived from the same physical source from being counted as independent evidence. Higher-consequence exception classes may require both valid responder authority and at least one independent local physical confirmation.¶
Let E(t) denote whether the temporary emergency authority is effective at time t. One representative validity rule is:¶
E(t) =
CredentialValid
AND IncidentCurrent
AND SceneMatch(S_scene)
AND VehicleMatch
AND t <= t_exp
AND NOT Revoked
AND NOT Consumed
¶
For a location-bounded emergency scene, localization uncertainty may be incorporated by dilating the authorized scene polygon by a conservative margin delta_loc:¶
position(t) IN Dilate(ScenePolygon, delta_loc)¶
The Candidate Emergency Maneuver M may become effective only when temporary authority remains valid, the requested traffic-rule exception is explicit, the actual reconstructed motion lies within the emergency envelope, hard safety predicates remain satisfied, and finality-specific sink and epoch checks succeed:¶
Allow(M) =
E(t)
AND ExplicitExceptionMatch(M)
AND M IN EmergencyEnvelope
AND HardSafety(M, state)
AND ActualMotionMatch(M)
AND SinkMatch
AND PolicyEpochCurrent
AND RevocationEpochCurrent
AND Fresh
¶
ActualMotionMatch(M) is evaluated over the motion reconstructed at or adjacent to the motion-admission Finality Sink, rather than solely over an upstream responder instruction or planner description. SinkMatch requires that the temporary authority name the same governed motion-admission sink that would make the act effective. PolicyEpochCurrent and RevocationEpochCurrent are evaluated against protected current state.¶
The temporary exception is narrowly scoped. It authorizes only the concrete exception and motion envelope expressed by the ESAC; it does not disable ordinary hard safety predicates or create a standing override.¶
completion OR expiry OR scene_exit OR incident_change
OR revocation OR corroboration_loss OR policy_epoch_change
OR revocation_epoch_change OR sink_mismatch
=> TemporaryAuthority := INVALID
¶
Automatic extinction is load-bearing. A cryptographically valid ESAC that is replayed outside its incident, scene, vehicle, epoch, path, validity window, or named Finality Sink cannot authorize effectuation. Loss of required local corroboration also removes the temporary permission expansion while preserving the applicable Safe-State Set.¶
PROCEDURE FINALIZE_EMERGENCY_SCENE_ACT(esac, planned_path, sink):
BLOCK_TEMPORARY_EXCEPTION_EXPANSION()
KEEP_SAFE_ACTIONS_AVAILABLE()
REQUIRE VERIFY_RESPONDER_AUTHORITY(esac.authority_ref)
REQUIRE INCIDENT_CURRENT(esac.incident_id, esac.incident_epoch)
REQUIRE VEHICLE_MATCH(esac.vehicle_binding)
REQUIRE NOT_REVOKED(esac)
REQUIRE NOW() <= esac.expiry
local_scene := BUILD_PROTECTED_LOCAL_SCENE_STATE()
REQUIRE SCENE_MATCH(esac.scene_commitment, local_scene)
actual_path := RECONSTRUCT_ACTUAL_MOTION(planned_path, sink)
REQUIRE PATH_WITHIN_EMERGENCY_ENVELOPE(actual_path, esac)
REQUIRE EXCEPTION_EXPLICITLY_COVERS(esac, actual_path)
REQUIRE HARD_SAFETY_PREDICATES_PASS(actual_path, local_scene)
BEGIN ATOMIC
REQUIRE NONCE_UNUSED(esac.nonce)
CONSUME(esac.nonce)
R := COMMIT_EMERGENCY_RECEIPT(
esac_digest = HASH(esac),
scene_digest = HASH(local_scene),
path_digest = HASH(actual_path),
decision = ALLOW)
END ATOMIC
RELEASE(sink,
TEMP_MOTION_CAPABILITY(
incident_id = esac.incident_id,
scene_epoch = esac.scene_epoch,
path_digest = HASH(actual_path),
exception_class = esac.exception_class,
receipt_digest = HASH(R),
expiry = esac.expiry))
RETURN ALLOW
ON completion OR expiry OR incident_change OR scene_exit
OR revocation OR corroboration_loss OR policy_epoch_change:
INVALIDATE_SCENE_CAPABILITIES()
RESTORE_ORDINARY_AUTHORITY()
¶
An autonomous motion platform can have multiple controllers that are each individually legitimate: an autonomy stack, remote pilot, remote-assistance service, fleet controller, DAA safety controller, local human operator, emergency authority, or minimal-risk controller. The critical failure is therefore not only an unauthorized controller. Network delay, partial handover, retry, failover, duplicated sessions, stale credentials, or recovery can leave two authorized controllers believing that each controls the same steering, thrust, braking, trajectory-admission, or mode-transition boundary.¶
This profile treats control transfer itself as a Candidate Act. Protected state records the Current Controller and Control Authority Epoch for each governed sink or sink class. PREPARE, COMMIT, and ENABLE semantics change this state transactionally, and every ordinary control command is accepted only when its controller identity and epoch match current protected authority state.¶
+---------------+ +---------------+
| Controller A | | Controller B |
| epoch e | | pending e+1 |
+-------+-------+ +-------+-------+
\ /
\ /
v v
+------------------------------+
| Protected Authority State |
| current_controller_id |
| authority_epoch |
| envelope | handover_state |
+--------------+---------------+
| current controller + epoch only
v
+------------------------------+
| Governed Finality Sink |
| reject stale controller/epoch|
+--------------+---------------+
v
Actuator
PREPARE(B) -> COMMIT(epoch e+1) -> ENABLE(B)
partial failure -> Safe-Action Set
AuthorityState[sink] = {
current_controller_id,
authority_epoch,
permitted_act_classes,
current_envelope_digest,
handover_state,
prepared_new_controller_id,
prepared_envelope_digest,
expiry,
revocation_epoch,
monotonic_counter,
prior_receipt_digest
}
¶
The state may be maintained per vehicle, actuator class, motion-admission sink, or another control domain. Independent non-conflicting sinks may have different Current Controllers, but sinks whose simultaneous control can conflict MUST enforce exclusivity through the same protected authority state.¶
Let A(c,s,e,t) be 1 when controller c has ordinary effectuation authority over sink s in epoch e at time t and 0 otherwise. The exclusivity invariant is:¶
for all s,e,t:
sum_c A(c,s,e,t) <= 1
¶
A separately defined Safe-State Set does not violate this invariant when it is restricted to stabilizing or risk-reducing actions and cannot expand ordinary authority.¶
Accept(cmd) =>
cmd.controller_id == CurrentController[s]
AND cmd.epoch == CurrentEpoch[s]
AND cmd.sink_id == s
AND cmd.act IN CurrentEnvelope[s]
AND Fresh(cmd)
¶
A credential that remains cryptographically valid after a handover does not preserve actuation authority if its controller identifier or epoch is stale.¶
A preferred handover has three logical phases. PREPARE verifies the proposed new controller, its requested sink set, authority basis, freshness, revocation state, and requested control envelope while the old controller remains responsible for bounded continuity. COMMIT atomically increments the Control Authority Epoch, marks the old ordinary-control binding stale, records the new Current Controller and envelope, and commits a handover receipt. ENABLE permits the new controller to submit ordinary commands under the committed epoch.¶
ACTIVE(A,e)
|
v
PREPARE(B,e+1) --failure--> ACTIVE(A,e) or SAFE
|
v
COMMIT(B,e+1)
|
+--> all A/e ordinary commands become stale
v
ENABLE(B,e+1)
¶
If the system fails after PREPARE but before COMMIT, the proposed new controller has no effectuation authority. If COMMIT occurred but readiness of the new controller cannot be established, the system enters a bounded Safe-State Set or requires a new handover; it does not resurrect the prior epoch merely because an old controller continues transmitting.¶
PROCEDURE HANDOVER_CONTROL(sink_set, old_id, new_id, request):
FOR EACH s IN sink_set:
REQUIRE AuthorityState[s].current_controller_id == old_id
REQUIRE VERIFY_CONTROLLER(new_id, request.authority)
REQUIRE NOT_REVOKED(new_id)
REQUIRE ENVELOPE_SAFE(request.envelope, CURRENT_CONTEXT())
BEGIN ATOMIC
FOR EACH s IN sink_set:
AuthorityState[s].handover_state := PREPARED
AuthorityState[s].prepared_new_controller_id := new_id
AuthorityState[s].prepared_envelope_digest :=
HASH(request.envelope)
END ATOMIC
REQUIRE CONTROLLER_READY(new_id, request.fresh_session_proof)
BEGIN ATOMIC
FOR EACH s IN sink_set:
e_new := AuthorityState[s].authority_epoch + 1
AuthorityState[s].authority_epoch := e_new
AuthorityState[s].current_controller_id := new_id
AuthorityState[s].current_envelope_digest :=
HASH(request.envelope)
AuthorityState[s].handover_state := COMMITTED
R := COMMIT_HANDOVER_RECEIPT(sink_set, old_id, new_id, e_new)
END ATOMIC
ENABLE_CONTROLLER(new_id, sink_set, e_new, HASH(R))
RETURN COMMITTED
PROCEDURE ADMIT_CONTROLLER_COMMAND(cmd, sink):
S := READ_PROTECTED_AUTHORITY_STATE(sink)
IF cmd.controller_id != S.current_controller_id:
RETURN SAFE_DENY("STALE_OR_WRONG_CONTROLLER")
IF cmd.authority_epoch != S.authority_epoch:
RETURN SAFE_DENY("STALE_AUTHORITY_EPOCH")
IF cmd.sink_id != sink.id:
RETURN SAFE_DENY("SINK_MISMATCH")
IF NOT WITHIN_ENVELOPE(cmd, S.current_envelope_digest):
RETURN SAFE_DENY("ENVELOPE_MISMATCH")
IF NOT FRESH_AND_UNUSED(cmd):
RETURN SAFE_DENY("REPLAY_OR_STALE")
RETURN ADMIT(cmd)
¶
DRIP lets an Observer verify that Broadcast RID messages come from the registered owner of a DET, including when the Observer has no Internet access [RFC9575]. The Observer still cannot verify whether an act it can see was decided by the aircraft's enforcement domain before it became effective. Four constraints make a direct approach impractical:¶
The mechanism below addresses all four: fixed 16-octet records, loss-tolerant delayed key disclosure, symmetric per-record authentication, and a protected master seed that never leaves the PED.¶
The design applies the TESLA delayed key disclosure principle [RFC4082] to act-decision records. The default profile uses a distinct PED evidence-signing key; the aircraft's DRIP/HI identity endorses that evidence key once for its validity interval. The mission computer and RID module do not hold the undisclosed evidence-chain keys. At the start of an evidence epoch the PED generates a random master seed K_seed that is never disclosed, derives the terminal chain value K_N from K_seed and epoch_id, and then derives the reverse one-way chain down to K_0. K_seed may be erased after K_N and the chain state are securely established. Time is divided into intervals of length Delta starting at T_0 (GNSS or UTC time). K_0 is a public chain commitment carried in the signed Anchor and is never used directly or through F' as an AER tag key. Records emitted in zero-based interval i are authenticated with K'_i = F'(K_(i+1)). K_(i+1) is broadcast d intervals later. An Observer accepts a record only if it arrived before the key for its interval could have been disclosed, and verifies it once the key arrives. A signed Anchor and Evidence Key Endorsement bind the chain to the PED evidence key and to the UA's DET.¶
generation (inside PED, once per epoch):
K_seed --derive with epoch_id--> K_N --F--> ... --F--> K_1 --F--> K_0
K_seed is never disclosed; K_0 is the public chain commitment.
use (time runs left to right):
interval: | 0 | 1 | 2 | 3 | 4 | 5 | ...
records: AER AER AER AER AER AER
tagged with: K'_0 K'_1 K'_2 K'_3 K'_4 K'_5
derived from: K_1 K_2 K_3 K_4 K_5 K_6
disclosed: K_1 K_2 K_3 (d = 3)
Anchor (signed once, repeated):
{DET, PED key id, T_0, Delta, d, N, K_0, ...}
A lost disclosure for interval i is recovered from any later interval j:
K_(i+1) = F^(j-i)(K_(j+1))
The default, and the only path specified as interoperable in this version, is:¶
This document does not use "PED holds the DET key" as a default. On typical airframes the DET key is in the RID module or flight software, which is the component whose compromise this mechanism exists to survive. An implementation in which the PED is also the DET key holder is a degenerate case of the same endorsement (self-endorsement) and adds no Observer-visible format.¶
F(x) = Trunc_128( SHA-256( "UAS-AFE-chain" || x ) )
F'(x) = Trunc_128( SHA-256( "UAS-AFE-tag" || x ) )
K_seed <- random 128 bits (generated inside PED; never disclosed)
K_N = Trunc_128(SHA-256(
"UAS-AFE-seed" || K_seed || epoch_id))
K_i = F(K_(i+1)), i = N-1 ... 0
K_0 = public chain commitment in the signed Anchor
I_i = [ T_0 + i*Delta , T_0 + (i+1)*Delta ), 0 <= i < N
K'_i = F'(K_(i+1)) (tag key for interval i)
K_(i+1) is disclosed during I_(i+d)
hdr = first 8 octets of the AER (header, below)
tag = Trunc_64( HMAC-SHA-256( K'_i,
"UAS-AFE-rec" || ua_det || epoch_id || hdr ) )
AER = hdr || tag (16 octets)
¶
HMAC is as defined in [RFC2104], SHA-256 as in [RFC6234]. Domain-separation strings prevent the master-seed derivation, chain function, tag-key derivation, and record MAC from being confused with one another or with other protocols. K_seed is not a chain value and is never included in an Anchor, KDR, AER, receipt, or ordinary transmitter state. Chain values K_1 through K_N may become public only according to the disclosure schedule.¶
K_0 is deliberately commitment-only. Because K_0 is public in the Anchor, using F'(K_0) as an interval tag key would make the corresponding interval forgeable by any Observer. The zero-based AER interval i therefore uses K_(i+1), while K_0 remains solely the authenticated chain root.¶
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Ver|Knd| Act Class |Dec| SinkC | Interval Index (16 bits) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Receipt Counter n (32 bits) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Tag (64 bits, truncated HMAC) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Ver (2) = 0 Knd (2) = 0 (AER) Act Class (6) = Table 2 code; 0x00 = UNSPECIFIED (privacy mode) Dec (2) = 00 DENY, 01 ALLOW, 10 SAFE_STATE_SELECTED, 11 reserved SinkC (4) = sink class (motor, latch, RF, sensor, mode, RID, ...)
Octet 0 Octets 1-2 Octets 3-18 +------------------------+--------------------------+------------------+ |Ver(2)|Knd(2)|Rsvd(4) | Interval Index (16 bits) | K_(i+1) (128 b) | +------------------------+--------------------------+------------------+ Header = 24 bits (3 octets); disclosed key = 128 bits (16 octets). Total = 19 octets. Knd = 1 (KDR).
; Anchor: signed once per epoch by the PED evidence key (COSE_Sign1),
; repeated periodically so late-arriving Observers can verify.
afe-anchor = {
"ua_det" : bstr .size 16,
"epoch_id" : bstr .size 4,
"ped_kid" : bstr .size 8,
"t0" : uint, ; seconds
"delta_ms" : uint, ; interval length
"d" : uint, ; disclosure lag in intervals
"n_len" : uint, ; chain length N
"k0" : bstr .size 16, ; chain commitment K_0
"n_start" : uint, ; first receipt counter in epoch
? "aao_hint": bstr .size 8 ; optional, privacy-dependent
}
; Evidence Key Endorsement: binds the distinct PED evidence key to
; the UA DET and is signed by the UA Host Identity / DRIP identity key.
afe-endorsement = { "ua_det": bstr .size 16, "ped_kid": bstr .size 8,
"ped_pub": bstr, "valid_to": uint }
¶
A 16-octet AER and a 19-octet KDR each fit within the data area of a single 25-octet Broadcast RID message before transport framing. The first page of an F3411 Authentication Message carries additional header fields; exact page packing and carriage are left open in this version (see Section 18.10).¶
The Interval Index is an unsigned 16-bit index within one evidence epoch, not a perpetually wrapping global counter. This profile deliberately avoids 16-bit wrap ambiguity rather than attempting to infer a wrapped index: an epoch MUST contain no more than 60000 intervals and a new Anchor and chain MUST begin before index reuse. An Observer MUST reject an AER or KDR whose index is greater than or equal to the Anchor's n_len. T_0, Delta, d, n_len, and the Observer's receive time provide the expected interval; if the received index is not consistent with that expected interval within the configured receive-delay and clock-error allowance, the record is not eligible for real-time verification. An implementation that permits index wrap requires an unambiguous lifting rule and is outside this profile.¶
PED ON RECEIPT_COMMITTED(R): # from PED_FINALIZE / DENY
IF R.act_class NOT IN evidence_classes: RETURN
i := INTERVAL_INDEX(now) # floor((now - T_0) / Delta)
hdr := PACK(ver=0, kind=0, class=MAYBE_COARSE(R.act_class),
dec=R.decision, sinkc=R.sink_class,
idx=i, n=R.counter)
K_tag_i := F'(K_(i+1)) # K'_i; derived AER key for interval i
tag := TRUNC64(HMAC_SHA256(K_tag_i,
"UAS-AFE-rec" || ua_det || epoch_id || hdr))
QUEUE_TO_RID_MODULE(hdr || tag, repeats = r_aer)
RECORD_IN_RECEIPT(R, hdr) # receipt n carries same header
PED EVERY INTERVAL j >= d:
q := j - d # AER interval whose key becomes public
QUEUE_TO_RID_MODULE(PACK_KDR(idx = q, key = K_(q+1)),
repeats = r_kdr)
PED EVERY T_anchor AND AT EPOCH START:
QUEUE_TO_RID_MODULE(ANCHOR_SIGNED_ONCE) # same bytes, no re-sign
¶
The RID module forwards queued evidence without the ability to compute tags, because it never holds K_(i+1) before disclosure for interval i. Evidence traffic MUST NOT displace messages that regulation requires; it is sent in remaining capacity. Receipt n in the PED's signed receipt chain MUST contain the same 8-octet header, so that broadcast evidence and later-audited receipts can be matched one-to-one.¶
Let delta_max be an upper bound on the difference between the Observer clock and the time base used for T_0. An Observer with GNSS-derived time can generally use a tighter delta_max than an Observer relying only on network time. If only NTP, cellular time, or another network-derived clock is available, delta_max MUST conservatively bound that source and its uncertainty; otherwise the Observer MUST NOT claim the real-time pre-disclosure property and may retain the record for later audit only.¶
OBSERVER ON ANCHOR(A, endorsement, drip_evidence):
REQUIRE DRIP_VERIFY_DET(A.ua_det, drip_evidence) # RFC 9575
REQUIRE VERIFY(endorsement, HI(A.ua_det)) # PED evidence key <- DET
REQUIRE VERIFY_COSE_SIGN1(A, endorsement.ped_pub)
REQUIRE A.n_len <= 60000
STORE chain[A.ua_det, A.epoch_id] :=
{ last_key_index: 0, last_K: A.k0, A }
OBSERVER ON AER(rec, t_r): # t_r = trusted local receive time
a := chain[det, epoch]; IF a IS NONE: BUFFER(rec); RETURN
IF NOT CLOCK_ERROR_BOUNDED(delta_max):
STORE_FOR_AUDIT_ONLY(rec); RETURN
i := UINT16(rec.idx)
IF i >= a.n_len: DISCARD(rec, "INDEX_OUT_OF_EPOCH"); RETURN
expected := FLOOR((t_r - a.t0) / a.delta)
IF NOT INDEX_PLAUSIBLE(i, expected, receive_delay_bound, delta_max):
DISCARD(rec, "INDEX_TIME_INCONSISTENT"); RETURN
x := FLOOR((t_r + delta_max - a.t0) / a.delta)
IF x >= i + a.d: DISCARD(rec, "UNSAFE_LATE") # key may be public
PENDING[i].add(rec) # safe; wait for K_(i+1)
OBSERVER ON KDR(kd, t_r):
a := chain[det, epoch]; IF a IS NONE: BUFFER(kd); RETURN
IF NOT CLOCK_ERROR_BOUNDED(delta_max):
STORE_FOR_AUDIT_ONLY(kd); RETURN
q := UINT16(kd.idx) # AER interval index
IF q >= a.n_len: RETURN
key_index := q + 1 # disclosed chain key is K_(q+1)
IF key_index <= a.last_key_index: RETURN
expected_disclosure := FLOOR((t_r - a.t0) / a.delta) - a.d
IF NOT INDEX_PLAUSIBLE(q, expected_disclosure,
receive_delay_bound, delta_max):
DISCARD(kd, "INDEX_TIME_INCONSISTENT"); RETURN
IF ITERATE(F, kd.key, key_index - a.last_key_index) != a.last_K:
DISCARD(kd); RETURN
FOR i FROM a.last_key_index TO q: # recover any lost interval keys
K_interval := ITERATE(F, kd.key, q - i) # equals K_(i+1)
FOR rec IN PENDING[i]:
K_tag_i := F'(K_interval) # equals K'_i
IF TRUNC64(HMAC_SHA256(K_tag_i, "UAS-AFE-rec" || det
|| epoch || rec.hdr)) == rec.tag:
MARK_VERIFIED(rec) # PED decided (class, dec, n) in I_i
ELSE: MARK_INVALID(rec)
a.last_key_index := key_index; a.last_K := kd.key
¶
With Delta = 1 s and d = 3, and an Observer clock whose error is bounded by delta_max = 1 s, a record becomes verifiable roughly 3 to 4 seconds after emission. These values are RECOMMENDED starting points, not requirements. If the Observer cannot establish a clock-error bound -- for example, it has only an unsynchronized or untrusted local clock -- it may retain records for later audit but MUST NOT claim the TESLA real-time property that the record arrived before key disclosure.¶
Delayed disclosure authenticates PED origin and pre-disclosure reception; it does not, by itself, prove physical location. A still-safe AER can be relayed to another Observer before disclosure. Correlation with DRIP-authenticated Location/Vector messages from the same interval is therefore a mitigation against location confusion, not a cryptographic proof that the observed physical act occurred at the reported coordinates. The signed receipt chain remains the authoritative detailed audit record.¶
A verified AER establishes that the holder of the anchored key chain -- the PED endorsed for that DET -- emitted, during interval I_i, decision record n with the stated act class, decision, and sink class. Combined with DRIP-authenticated Location/Vector messages from the same interval, an Observer can associate the decision with where the aircraft was.¶
It does not establish that the physical effect occurred, that every decision was received (broadcast is lossy; counter gaps are visible but are not by themselves evidence of misconduct), or anything about the content of the authority object beyond the optional hint. Full detail is in the signed receipt chain, which an authorized auditor can later obtain and match to broadcast headers by counter n.¶
Broadcast evidence is never authority. A sink, PED, or service MUST NOT accept an AER, KDR, or Anchor as a handle, and a receipt presented as a handle is refused (EF-008).¶
| Approach | Per-act octets on air | Per-act onboard operation | Loss behaviour | Origin |
|---|---|---|---|---|
| DET-signed structure per act | >= 64-octet signature plus identifiers and timestamps; multi-page on legacy transport | One public-key signature | Lost page may lose the record | Key holder of DET (often RID module or flight software) |
| AER with delayed disclosure (this document) | 16 (plus one 19-octet KDR per interval, shared by all records) | One HMAC-SHA-256 | Lost KDR recovered from any later KDR | PED only |
Forgery resistance per record is bounded by the 64-bit tag (success probability about 2^-64 per attempt) and by one-wayness of F. A 64-bit tag is chosen because the record is evidence rather than authority; deployments that need more MAY use a 24-octet AER variant with a 128-bit tag.¶
Where the sink is reached over a bus, the enablement condition SHOULD be a physical line or gated rail controlled directly by the PED (for example ESC enable, latch solenoid supply, PA enable), because a gated condition is not bypassed by a forged bus frame.¶
Where a sink can only be reached by bus messages (for example ESCs on CAN or DroneCAN, where classic CAN frames carry 8 data octets and CAN FD frames up to 64), the PED MAY establish a per-arming session key with the sink and send envelope releases carrying a freshness counter and a truncated MAC. That arrangement authenticates the release but places part of enforcement in the sink's firmware; it is a mitigation-class profile unless the sink's firmware is itself within the attested PED boundary. This profile does not assume that current off-the-shelf or consumer ESC firmware is a PED; such a sink qualifies for the stronger profile only when its relevant firmware, key state, and bypass resistance are within the attested enforcement boundary.¶
This document crosses several existing protocol and security work areas, but it does not assert that any one Working Group or Research Group owns the complete execution-finality problem. The mappings below identify reusable IETF/IRTF mechanisms and review communities. They are not statements of adoption, charter expansion, or venue assignment.¶
The mechanisms in this document do not standardize aircraft aerodynamics, steering geometry, braking control, ESC control laws, or collision-avoidance algorithms. Those remain functions of avionics, vehicle-control, autonomy, and safety systems. The Internet-facing problem arises because identity, authority, attestation, revocation, freshness, remote-assistance instructions, responder credentials, UTM/U-space state, V2X or air-to-air coordination, and audit evidence can originate across network and administrative boundaries, while the consequence occurs later at a local physical sink. The protocol question is how that network-originated state remains cryptographically and semantically bound to the exact act that is about to become effective.¶
Internet / administrative side Physical system side
+----------------------------+ +-----------------------+
| identity / DET / PKI | | perception / planner |
| attestation / Evidence | | DAA / ADS / autopilot |
| UTM, U-space, V2X state | +-----------+-----------+
| responder / operator auth | |
| revocation / policy state | | Candidate Act
+-------------+--------------+ v
| +-----------------------+
| authenticated / | Protected Enforcement |
| integrity-protected | Domain |
| protocol objects | - current authority |
+-------------------------------> | - epochs / freshness |
| - exact-act binding |
| - receipt state |
+-----------+-----------+
|
scoped release only
v
+-----------------------+
| Finality Sink |
| motor / steering / |
| brake / latch / RF / |
| motion admission |
+-----------------------+
|
v
physical effect
The architectural boundary is therefore between a network/control-plane assertion and local effectuation. Authentication of the upstream message is necessary but not sufficient: the sink must determine whether that assertion is still current, applies to this device and sink, and still describes the actual impending act. This is the same separation expressed throughout this document as computation or communication not being, by itself, release authority.¶
| Threat | Effect without this profile | Mitigation | Residual |
|---|---|---|---|
| Compromised mission computer writes actuators | Unauthorized motion, release, sensing | No path to enablement conditions except via PED (path completeness) | eps_path if a bypass exists in hardware design |
| Stolen or replayed handle | Repeat of an authorized act | Non-bearer, act- and sink-bound, atomic consume | eps_store |
| Stale authority after restriction | Entry into restricted volume | Generation read inside consume; event-triggered revalidation; offline bound | T_off_max when offline |
| GNSS spoofing | False containment | Multi-source consistency; disagreement removes authority | eps_ctx if all sources falsified consistently |
| Coerced but validly signed command | Unsafe act by authenticated source | Command treated as Candidate Act; quorum for marked classes | Colluding quorum |
| Partial coordinated act | Separation loss | Composite decision log; prepare never moves; HOLD | Liveness when log unreachable |
| Stale DAA conflict basis or superseded resolution | An avoidance maneuver can become unsafe before motion admission | Conflict-Set Root, current-set revalidation, multi-intruder check, and monotonic Resolution Epoch | Depends on integrity, freshness, and completeness of the protected traffic inputs |
| Replayed or over-broad emergency-scene authority | A temporary traffic-rule exception can be reused for another vehicle, scene, incident, path, or time | Incident/scene/vehicle/act/sink binding, independent local scene corroboration, explicit exception class, nonce, expiry, and automatic authority extinction | Residual risk if all required local scene evidence is consistently falsified |
| Split-brain controller handover | Two valid controllers can issue conflicting ordinary actuation commands | Protected Current Controller state, monotonic Control Authority Epoch, transactional PREPARE/COMMIT/ENABLE, and stale-epoch rejection at the sink | Availability can fall back to the Safe-State Set during incomplete handover or recovery |
| Truncated BPC commitment collides or is searched offline | Wrong act or authority could appear to match a short value | Keyed binding preferred; explicit collision and attacker-work sizing; ambiguity causes deny or longer proof | Deployment-selected t and online-attempt budget |
| Mixed, missing, or corrupted BPC fragments | Partial proof could be mistaken for authority | Per-fragment authentication, common SessionID and Root, ordered reconstruction, root verification; incomplete evidence means no effectuation | Availability loss under packet loss or jamming |
| Unknown or stale compact Authority Reference | Reference substitution or stale cached authority | Protected keyed reference, authenticated cache/resolver, current generation checks at finality; UNKNOWN never means authorized | Resolver/cache availability |
| Forged broadcast evidence by RID module or third transmitter | False appearance of authorized conduct | Key chain seed sealed in PED; tag keys disclosed only after safety window | 2^-64 per record; Observer clock outside delta_max |
| Late replay or relay of evidence | Old or remote decision presented as locally current | Interval index bound in tag; pre-disclosure receive-time condition; correlate with DRIP-authenticated Location/Vector from the same interval | A relay inside the disclosure window remains possible; if location evidence is also forged or unavailable, act-evidence verification alone does not prove local physical presence |
| Receipt presented as handle | Authority laundering | Refused (EF-008) | None expected |
| Denial of evidence broadcast (jamming) | Observer sees nothing | None at the broadcast layer; receipts remain for audit | Loss of real-time observability |
A PED that is itself compromised defeats this profile; its isolation, non-extractable keys, and attested measurement are therefore load-bearing assumptions. Denial and safe-state selection are designed so that the failure mode of the enforcement layer is a controlled holding, descent, or landing manoeuvre, never uncontrolled flight.¶
Broadcast act class values can reveal operational details (for example that a camera is active). Deployments MAY use the UNSPECIFIED act class (privacy mode), broadcasting only decision, sink class, counter, and tag, with full detail confined to receipts available to authorized auditors. The optional AAO hint SHOULD NOT be broadcast where it would link flights to customers. Receipts SHOULD omit imagery, customer identity, and raw sensor data, carrying digests instead. Whether and how act evidence is broadcast is subject to regional regulation; this document does not assume a mandate.¶
The DAA profile can involve sensitive traffic tracks and the emergency-scene profile can involve responder, incident, and scene information. Implementations SHOULD keep raw track sets, responder identities, and detailed scene observations inside protected local state where possible, carrying commitments, pseudonymous references, coarse classes, or auditor-only receipt fields instead. Control-handover receipts SHOULD avoid exposing operator identity beyond what is necessary to prove the authority transition.¶
This document has no IANA actions. It does not request a DRIP Frame Type, a Specific Authentication Method value, or an IANA act/sink registry. If the compact evidence mechanism progresses in a future standards effort, carriage and registry work would require the process appropriate to the selected transport, including coordination with ASTM/ICAO where applicable.¶
An accompanying non-normative reference repository,
UAS-Autonomous-Vehicle-Execution-Finality-Reference, instantiates the
principal state machines, cryptographic bindings, and negative-control cases in
this document. The repository is intended to make the architectural claims
falsifiable and reproducible rather than to serve as production flight, vehicle,
or actuator software. It is not a normative dependency of this specification.¶
The public repository is available at [GITHUB-EF-REF]. Related public background records by the author are [DAS-ZENODO], which describes the broader execution-finality authority problem; [DAS-ZENODO-HW], which provides hardware-enforcement context; and [DAS-ZENODO-PURPOSE], which discusses purpose-bound execution finality in another application domain. These resources are informative only and are not normative dependencies of this UAS/AV profile.¶
The current packaged snapshot contains 68 files. Its principal contents are:¶
The reference harness was produced by translating the equations, state transitions, object bindings, and pseudocode in this document into a small, deterministic software model. The implementation uses Python and, for the packaged cryptographic paths, standard-library SHA-256, HMAC-SHA-256, and a minimal HKDF construction. Test cases were then derived from the stated invariants and from explicit adversarial mutations: each load-bearing field or state transition is changed, replayed, reordered, made stale, made unavailable, or subjected to a modeled crash point, and the expected outcome is checked before any simulated capability release.¶
The red-team methodology therefore follows the traceability pattern
architectural invariant -> adversarial mutation -> expected protected
failure -> automated test. For control-authority handover, the packaged
campaign additionally executes seeded randomized crash schedules and checks the
invariant that no modeled state gives two ordinary controllers simultaneous
effectuation authority over the same governed sink.¶
The code was written as a clean-room reference model of the mechanisms described in this document. It was not extracted from, reverse engineered from, or validated against any proprietary OEM flight controller, autonomous-driving stack, vehicle ECU, secure element, actuator controller, or named industrial platform.¶
In the packaged snapshot used while preparing this revision, the automated
suite reports 66 passing tests. A seeded control-handover red-team campaign
using seed 20260918 executed 5,000 modeled schedules and reported zero
dual-authority violations. These numbers describe that particular repository
snapshot and software model; they are not conformance certification and may
change as the harness and test set evolve.¶
The repository also records local Python benchmark measurements for BPC
generation, finality verification/consume/receipt/capability processing, AER
generation, and fragmentation/reassembly. Those measurements are environment
specific and are reported together with the machine and interpreter details.
They exclude network delay, secure-element or HSM access, durable storage
fsync, certified real-time scheduling, bus arbitration, and physical
actuator I/O.¶
Passing the reference harness demonstrates only that the included software state machine and cryptographic bindings satisfy the tested properties under the modeled inputs and adversary. It supports reproducibility and engineering plausibility of those software-level mechanisms; it does not establish physical non-bypassability, airworthiness, automotive functional safety, real-time deadline compliance, RF interoperability, secure-element extraction resistance, resistance to all correlated sensor failures, or production readiness.¶
In particular, a real platform must separately demonstrate that no actuator, DMA, debug, maintenance, alternate bus-master, emergency, firmware-rollback, or failover path can create the protected effect without traversing the applicable Finality Sink. Hardware testing should additionally inject reset, brownout, torn-write, persistent-state rollback, HSM/secure-element timeout, bus and DMA bypass attempts, clock rollback, packet burst loss, controller partition, and actuator-acknowledgement failures at each protected transition.¶
The repository does not substitute for system hazard analysis, flight testing, airworthiness approval, automotive safety engineering, cybersecurity certification, standards conformance, or regulatory approval. It also does not demonstrate that any named industrial platform implements this architecture. Results from the pure-software harness should therefore be described as reference-implementation evidence, not as production-platform validation.¶
The author's understanding of DRIP, F3411, and airframe practice may contain inaccuracies. Critical technical review, especially from DRIP participants and autopilot developers, is invited.¶
This non-normative appendix gives industrial deployment context only. The descriptions are based on publicly available material and are intended to explain where an execution-finality boundary could sit relative to existing products and architectures. No implementation from any named organization was used, simulated, reverse engineered, or tested in preparing this document, and no affiliation, endorsement, adoption, infringement conclusion, or claim of technical deficiency is stated or implied. Corrections from the organizations concerned are welcome.¶
The complementarity rule is deliberately narrow: existing perception, planning, localization, DAA, ADAS, geofencing, flight-control, braking, steering, remote assistance, authenticated messaging, and fail-safe logic continue to perform their present functions. This profile does not replace them. Instead, those components produce or support a Candidate Act. A protected execution-finality component then verifies the concrete act actually pending at the motion-admission or actuator boundary against current authority, freshness, policy, revocation, context, conflict set, scene, or control-authority state before releasing only the bounded enablement required for that act.¶
Existing product / autonomy stack Added finality boundary
+-------------------------------------+ +-----------------------+
| perception | planning | DAA / ADAS | Candidate | protected current |
| geofence | remote assistance | C2 |---- Act ---->| state + act binding |
| stabilization / minimal-risk logic | | + receipt + consume |
+-------------------+-----------------+ +-----------+-----------+
| |
| existing safe-state path | bounded release
v v
+-------------+ +-------------+
| safe control| | motion / |
| remains | | actuator sink|
+-------------+ +-------------+
The finality layer does not replace perception, planning, stabilization,
braking, steering, DAA, ADAS, or vendor safety logic.
| Ecosystem | Publicly described role | Complementary role of this profile |
|---|---|---|
| Tesla [TESLA-AUTOPILOT] | Camera- and AI-based driver assistance, including Autopilot and Full Self-Driving (Supervised); Tesla states that currently enabled features require active driver supervision and do not make the vehicle autonomous. | The existing perception and driving-assistance stack can continue to compute a trajectory or manoeuvre. A protected motion-admission sink can, as an additional layer, bind the concrete pending manoeuvre to current authority, scene, control-authority epoch, freshness, and safety state before admitting a bounded steering, braking, propulsion, or mode transition. This profile does not replace Tesla's driver-monitoring, planning, braking, steering, or safety logic. |
| BYD [BYD-DIPILOT] | DiPilot intelligent-driving assistance and vehicle-domain architectures integrating sensing, decision, and control functions. | The vehicle's existing sensor fusion, intelligent-driving planner, AEB, lane-control, and motion-control functions remain unchanged. Execution finality can be placed after planning and before motion admission so that a remotely approved path, emergency-scene exception, cooperative manoeuvre, or controller handover is effective only when its act, scene, vehicle, epoch, and sink bindings still match current protected state. |
| DJI Enterprise [DJI-AUTOMATION] | Enterprise drone mission planning and flight automation across waypoints, inspection missions, cameras, and multiple aircraft. | Mission automation can continue to generate waypoints, camera requests, payload operations, and flight plans. The PED can sit below the mission-planning layer and gate only the final arming, envelope expansion, payload, sensor, RF, or other consequential enablement after reconstructing the actual impending act. Existing flight-controller stabilization and failsafes remain available as the Safe-State Set. |
| Boeing autonomous and uncrewed systems [BOEING-AUTONOMY] | Publicly described autonomous and uncrewed aircraft, collaborative systems, secure communications, and human-operated AI/autonomy architectures. | For civil or dual-use architectural discussion only, conflict-set-bound DAA finality can sit downstream of a DAA or autonomy planner so that an accepted avoidance resolution remains bound to the conflict-set basis on which it was computed. Control-authority handover finality can additionally ensure that only the controller named by the current protected authority epoch can admit motion. Existing flight-control, safety, and mission systems remain primary. |
| Lockheed Martin / Sikorsky autonomy [LOCKHEED-AUTONOMY] | Publicly described autonomous and uncrewed systems, human-machine teaming, autonomous mission execution, and Sikorsky MATRIX autonomy. | The profile can complement such autonomy patterns by treating planner or operator output as a Candidate Act rather than final authority. DAA conflict-set revalidation, monotonic control-authority epochs, and sink-local verification can be added at the final motion or actuator boundary while leaving perception, mission planning, vehicle stabilization, and certified safety functions intact. This document's scope remains civil and excludes weapon, targeting, and counter-UAS effectuation. |
| PX4 and ArduPilot (open-source autopilots) | Flight control, geofence, mission, and failsafe logic. | PED gates arming, envelope, payload, sensor, and RF enablement beneath the autopilot; autopilot failsafes remain a Safe-State implementation rather than being displaced by the finality layer. |
| Wing, Amazon Prime Air, Zipline | Automated delivery operations using route planning, fleet operations, airspace services, and payload delivery mechanisms. | Payload release can be represented as a single-use, drop-zone-bound Candidate Act whose concrete latch or winch operation is reconstructed and verified at the payload sink before release, with optional receipt and observer evidence. |
| NVIDIA Jetson-class and Qualcomm robotics/vehicle compute | High-performance onboard AI, perception, connectivity, and planning compute used in robotics, vehicles, and edge systems. | Accelerator output remains computational input to a Candidate Act. A smaller protected controller or safety domain can hold final authority state and release the actuator or motion-admission capability only after independent verification. |
| USS/USSP providers under ASTM F3548 and U-space | Flight authorization, conformance monitoring, geo-awareness, and operational information exchange. | These services can remain upstream issuers of authority and current-generation information. The aircraft PED consumes that information at effectuation time, and optional receipts or evidence can be returned to authorized operators or auditors. |
The same complementarity principle applies to the three narrower embodiments in this document. For DAA finality, the DAA engine continues to detect and resolve conflicts; the new step is revalidation that the accepted manoeuvre is still bound to the current conflict set at motion admission. For emergency-scene authority, the vehicle's normal ADAS/autonomy and minimal-risk functions remain active; the new step is a temporary, scene-corroborated, vehicle- and act-bound exception that extinguishes automatically. For control-authority handover, existing controllers continue to compute commands; the new step is protected exclusive-controller state and a monotonic epoch that rejects commands from superseded controllers at the finality sink.¶
The accompanying reference repository includes deterministic byte-level vectors for selected BPC, AER/KDR, and authenticated-fragmentation cases. Future revisions of this document are expected to include or normatively reference a broader set of vectors for the following classes: (1) U-CAD canonical encoding and digest using both the readable text-key representation and the compact integer-key profile; (2) handle bound to wrong sink; (3) SINGLE_USE replay; (4) envelope exit by position, speed, altitude, window, and aggregate ceiling; (5) generation advance affecting and not affecting the corridor; (6) revocation read inside consume; (7) GNSS/VIO disagreement; (8) offline window expiry; (9) composite COMMIT, CAS ABORT, and HOLD on unreachable log; (10) keyed BPC Binding Commitment computation; (11) compact Authority Reference resolution, including UNKNOWN and stale-reference denial; (12) BPC truncation at selected collision and attacker-work budgets; (13) collision guard ambiguity causing deny or escalation; (14) authenticated fragment generation, cross-session mixing rejection, missing-fragment denial, ordered reconstruction, and Root verification; (15) BPC capsule-authenticator computation and forgery-budget sizing; (16) sink-side reconstruction of the actual pending act and compact-binding comparison; (17) master-seed derivation of K_N and reverse-chain derivation through K_0; (18) AER tag computation; (19) Observer safety condition at the boundary x = i + d; (20) lost KDR recovery across several intervals; (21) evidence-epoch renewal before 16-bit index reuse; (22) Observer using network time with insufficient delta_max; (23) receipt presented as handle; and (24) AER, KDR, Anchor, or BPC evidence presented as execution authority.¶