<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="info"
  docName="draft-bezerra-relay-auth-transparency-00"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="independent"
  xml:lang="en"
  tocInclude="true"
  tocDepth="4"
  symRefs="true"
  sortRefs="true"
  version="3">

  <front>
    <title abbrev="Relay Auth Transparency">
      Authentication-Transparent Protocol Extensions in
      Middleware-Relayed Systems
    </title>

    <seriesInfo name="Internet-Draft"
                value="draft-bezerra-relay-auth-transparency-00"/>

    <author fullname="Cleiton Augusto Correa Bezerra" initials="C." surname="Bezerra">
      <organization>Independent Researcher</organization>
      <address>
        <postal>
          <country>Brazil</country>
        </postal>
        <email>augusto.cleiton@gmail.com</email>
        <uri>https://github.com/cleitonaugusto/CleitonQ</uri>
      </address>
    </author>

    <date year="2026" month="June" day="23"/>

    <area>Security</area>
    <workgroup>Individual Submission</workgroup>

    <keyword>post-quantum cryptography</keyword>
    <keyword>MAVLink</keyword>
    <keyword>ROS2</keyword>
    <keyword>DDS</keyword>
    <keyword>relay transparency</keyword>
    <keyword>authentication stripping</keyword>
    <keyword>embedded protocols</keyword>
    <keyword>ML-DSA</keyword>
    <keyword>ML-KEM</keyword>
    <keyword>UAS security</keyword>

    <abstract>
      <t>
        Protocol-aware middleware (relays, bridges, gateways) re-serializes
        messages at their protocol frame boundary, silently discarding any
        bytes appended outside that boundary. Authentication material placed
        after the frame boundary by a sender is therefore stripped at every
        relay hop before reaching the receiver, with no error indication.
        This document identifies this behavior as a protocol design
        vulnerability class -- "relay-transparent authentication stripping"
        -- demonstrates it in three independent protocol stacks (MAVLink v2,
        ROS2/DDS CDR, and CAN/AUTOSAR SecOC), and specifies the architectural
        principle that authentication material must be carried as a
        first-class, independently addressable protocol unit to survive relay
        transit. Post-quantum cryptographic schemes (ML-DSA-87, ML-KEM-1024)
        are particularly susceptible due to their large signature and
        ciphertext sizes.
      </t>
    </abstract>
  </front>

  <middle>

    <section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
        Embedded and cyber-physical systems increasingly rely on
        protocol-aware middleware components -- MAVLink relays, DDS bridges,
        CAN gateways -- to route messages between endpoints that do not share
        a direct link. These components are a fixture of drone command-and-
        control networks (MAVProxy, mavlink-router), robotic systems
        (domain_bridge, ros1_bridge), and automotive Ethernet architectures
        (DoIP gateways).
      </t>
      <t>
        A common pattern when adding authentication to existing embedded
        protocols is to append authentication material (HMAC tags, digital
        signatures, nonces) immediately after the protocol-defined frame
        boundary. This approach is attractive because it requires no changes
        to the protocol specification or to existing, unauthenticated
        endpoints.
      </t>
      <t>
        However, any protocol-aware relay along the path re-serializes
        messages at the protocol frame boundary. Bytes outside that boundary
        are in the relay's "discard" region. Authentication material placed
        there is silently stripped at every relay hop, with no error
        indication to sender or receiver. The receiver obtains a valid,
        unauthenticated frame.
      </t>
      <t>This document:</t>
      <ul spacing="normal">
        <li>Defines the vulnerability class (<xref target="class" format="default"/>)</li>
        <li>Demonstrates it in three independent protocol stacks (<xref target="demos" format="default"/>)</li>
        <li>Provides the architectural principle that authentication material
            must be a first-class protocol unit to survive relay transit
            (<xref target="principle" format="default"/>)</li>
        <li>Provides guidance for protocol designers and application
            developers (<xref target="proto-guidance" format="default"/>, <xref target="app-guidance" format="default"/>)</li>
        <li>Addresses post-quantum cryptography implications (<xref target="pqc" format="default"/>)</li>
      </ul>
    </section>

    <section anchor="terminology" numbered="true" toc="default">
      <name>Terminology</name>
      <t>
        The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described in
        BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/>
        when, and only when, they appear in all capitals, as shown here.
      </t>
      <dl newline="false" spacing="normal">
        <dt>Frame boundary:</dt>
        <dd>The byte offset at which a protocol-aware parser considers the
        current message complete, as determined by the protocol's
        length-delimitation mechanism (e.g., a length field, a type schema,
        a DLC field).</dd>

        <dt>Protocol-aware relay:</dt>
        <dd>A software or hardware component that parses incoming messages
        at the protocol frame boundary, optionally processes or filters them,
        and re-serializes new conformant frames for forwarding. Distinct from
        a "transparent relay" that forwards raw bytes without parsing.</dd>

        <dt>Relay-transparent:</dt>
        <dd>An authentication encoding that survives transit through any
        protocol-aware relay on the path, emerging intact at the receiver.</dd>

        <dt>Authentication stripping:</dt>
        <dd>The silent removal of authentication material at a relay, caused
        by re-serialization at the frame boundary.</dd>
      </dl>
    </section>

    <section anchor="class" numbered="true" toc="default">
      <name>The Relay-Transparency Vulnerability Class</name>

      <section anchor="preconditions" numbered="true" toc="default">
        <name>Structural Preconditions</name>
        <t>
          All of the following conditions must be true for this vulnerability
          to apply:
        </t>
        <ol spacing="normal" type="1">
          <li>The protocol uses length-delimited framing (a length field, a
              type schema, or a hardware-defined payload size specifies the
              exact number of bytes in each message).</li>
          <li>At least one protocol-aware relay (bridge, gateway, router)
              exists on the path between sender and receiver.</li>
          <li>Authentication material is appended after the protocol-defined
              frame boundary, rather than carried in a separately addressed
              protocol unit.</li>
        </ol>
        <t>
          When all three conditions are met, the relay MUST (per its correct
          implementation of the protocol) discard bytes outside the frame
          boundary during re-serialization. No error is generated. The
          receiver has no indication that authentication material was ever
          present.
        </t>
      </section>

      <section anchor="attack-model" numbered="true" toc="default">
        <name>Attack Model</name>
        <t>
          Precondition: An attacker controls, or is co-located with, a relay
          node on the sender-to-receiver path.
        </t>
        <t>Attack sequence:</t>
        <ol spacing="normal" type="1">
          <li>Sender transmits an authenticated message:
              [frame | auth_bytes]</li>
          <li>Relay parses [frame] at the frame boundary, discards
              [auth_bytes], and forwards [frame] only.</li>
          <li>Attacker now has visibility of unauthenticated [frame]
              in transit.</li>
          <li><t>Attacker can:</t>
            <ol spacing="normal" type="a">
              <li>Forward the stripped frame (receiver accepts it as valid
                  because it has no expectation of auth bytes being present
                  when operating through a relay), or</li>
              <li>Substitute a different payload before the relay
                  re-serializes, since no authentication exists in the
                  forwarded frame.</li>
            </ol>
          </li>
        </ol>
        <t>
          The receiver cannot distinguish case (a) or (b) from a legitimately
          authenticated message, because authentication was never carried in
          the forwarded frame.
        </t>
      </section>
    </section>

    <section anchor="demos" numbered="true" toc="default">
      <name>Protocol-Specific Demonstrations</name>

      <section anchor="mavlink" numbered="true" toc="default">
        <name>MAVLink v2</name>
        <t>
          MAVLink v2 <xref target="MAVLINK" format="default"/> is the dominant
          command-and-control protocol for unmanned aerial systems. Each frame
          begins with a Start-of-Frame byte (0xFD) and a Length byte (LEN) at
          offset 1. The complete frame is exactly 10 + LEN + 2 bytes (10-byte
          header + LEN-byte payload + 2-byte CRC-16-MCRF4XX).
        </t>
        <t>
          Any protocol-aware relay (MAVProxy, mavlink-router, QGroundControl)
          implements the following parse-and-forward loop:
        </t>
        <artwork align="left" alt=""><![CDATA[
  start = stream.find(0xFD)
  LEN   = stream[start + 1]
  frame = stream[start : start + 10 + LEN + 2]
  if crc_valid(frame):
      forward(frame)
        ]]></artwork>
        <t>
          Bytes at offset (start + 10 + LEN + 2) onwards are in the "discard"
          region. Three authentication schemes were tested against a MAVLink v2
          COMMAND_LONG frame (45 bytes), all stripped:
        </t>
        <table align="center">
          <thead>
            <tr>
              <th>Auth Scheme</th>
              <th>Sent</th>
              <th>Received</th>
              <th>Stripped</th>
            </tr>
          </thead>
          <tbody>
            <tr><td>HMAC-SHA3-256 (40 bytes)</td><td>85</td><td>45</td><td>40</td></tr>
            <tr><td>Ed25519 (72 bytes)</td><td>117</td><td>45</td><td>72</td></tr>
            <tr><td>ML-DSA-87 (4627 bytes)</td><td>4672</td><td>45</td><td>4627</td></tr>
          </tbody>
        </table>
        <t>
          MAVLink v2 defines a signing extension (INCOMPAT_FLAGS bit 0x01) that
          appends a 13-byte block (link_id + timestamp + truncated HMAC-SHA256).
          This extension survives relay transit on relays explicitly configured
          for signing support. However:
        </t>
        <ul spacing="normal">
          <li>The signing block uses a 48-bit truncated HMAC-SHA256, providing
              only classical security.</li>
          <li>A relay not configured for signing support treats INCOMPAT_FLAGS
              bit 0x01 as an unknown flag and MUST discard the frame per
              specification -- providing zero auth byte survival and frame
              loss.</li>
          <li>A new INCOMPAT_FLAGS bit defined for post-quantum authentication
              would cause relay frame loss on all relays not updated to
              understand the new bit.</li>
        </ul>
        <t>
          The INCOMPAT_FLAGS mechanism therefore cannot be used to introduce
          relay-transparent post-quantum authentication without a flag-by-flag
          negotiation across all relay software in the deployment.
        </t>
      </section>

      <section anchor="ros2dds" numbered="true" toc="default">
        <name>ROS2 / DDS CDR</name>
        <t>
          ROS2 uses Data Distribution Service (DDS) <xref target="DDS" format="default"/>
          for inter-process and inter-domain communication. Messages are serialized
          using CDR (Common Data Representation) according to the message type's
          IDL schema. The CDR frame boundary is defined by the IDL type schema:
          the deserializer reads exactly the number of bytes specified by the schema.
        </t>
        <t>Two failure modes were observed:</t>
        <t>
          CycloneDDS 11.0.1: The CDR deserializer reads exactly the schema-defined
          bytes. Bytes appended after the schema boundary arrive in the raw RTPS
          payload but are not transferred to any struct field. Re-serialization from
          the struct produces schema-sized bytes only. Authentication material is
          silently discarded.
        </t>
        <t>
          FastDDS (rmw_fastrtps_cpp, the default ROS2 RMW): Reader history buffers
          are pre-allocated to the type's maximum CDR length. Payloads exceeding
          this limit are rejected before reaching the application callback.
          Appending authentication bytes to a CDR payload causes the message to be
          silently dropped -- denial of service rather than silent stripping, but
          with identical impact on authentication visibility.
        </t>
        <t>
          Three authentication schemes were tested against
          geometry_msgs/msg/Twist (52-byte CDR payload):
        </t>
        <table align="center">
          <thead>
            <tr>
              <th>Auth Scheme</th>
              <th>Sent</th>
              <th>Received</th>
              <th>Stripped</th>
            </tr>
          </thead>
          <tbody>
            <tr><td>HMAC-SHA3-256 (32 bytes)</td><td>84</td><td>52</td><td>32</td></tr>
            <tr><td>Ed25519 (64 bytes)</td><td>116</td><td>52</td><td>64</td></tr>
            <tr><td>ML-DSA-87 (4627 bytes)</td><td>4679</td><td>52</td><td>4627</td></tr>
          </tbody>
        </table>
        <t>
          Multi-domain deployments using domain_bridge, ros1_bridge, or
          zenoh-bridge-ros2dds compound this problem: each bridge deserializes
          and re-publishes a typed message, stripping any auth bytes at every hop.
        </t>
      </section>

      <section anchor="can" numbered="true" toc="default">
        <name>CAN / AUTOSAR SecOC</name>
        <t>
          Controller Area Network (CAN) frames are hardware-delimited by the
          DLC (Data Length Code) field, which specifies 0-8 bytes (CAN 2.0B)
          or 0-64 bytes (CAN FD). Bytes outside the DLC-specified range cannot
          be represented in a CAN frame.
        </t>
        <t>
          AUTOSAR SecOC (Secure Onboard Communication) <xref target="SECOCASR" format="default"/>
          appends Freshness Values (FV) and MACs in PDU headers.
          CAN-to-Ethernet gateways (DoIP, SOME/IP) that are not SecOC-aware
          reassemble multi-frame ISO-TP sequences, extract the UDS application
          PDU, and re-serialize for the Ethernet domain. SecOC header fields
          outside the UDS PDU definition are not forwarded.
        </t>
        <t>
          The architectural root cause is identical to the MAVLink and DDS cases:
          re-serialization at the protocol frame boundary strips any out-of-band
          authentication. This is relevant to vehicle OEMs conducting TARA under
          UNECE WP.29 R155 <xref target="R155" format="default"/>: the relay-transparency
          attack class should be assessed under the Tampering category for any
          gateway that handles safety-critical PDUs.
        </t>
      </section>
    </section>

    <section anchor="impact" numbered="true" toc="default">
      <name>Impact and Severity</name>
      <t>
        The relay-transparency vulnerability affects any deployment where:
      </t>
      <ul spacing="normal">
        <li>Authentication is appended after the protocol frame boundary
            (rather than carried in a separate, first-class protocol unit),
            AND</li>
        <li>At least one protocol-aware relay is on the sender-receiver path.</li>
      </ul>
      <t>Impact:</t>
      <dl newline="false" spacing="normal">
        <dt>Authentication Bypass:</dt>
        <dd>The receiver accepts frames with no authentication material, having
        no way to distinguish them from legitimately authenticated frames (since
        both arrive stripped of auth bytes after relay transit).</dd>

        <dt>Command Injection:</dt>
        <dd>An attacker controlling a relay can substitute payloads after
        stripping, injecting arbitrary commands that the receiver treats
        as legitimate.</dd>

        <dt>Denial of Service (FastDDS case):</dt>
        <dd>Appending auth bytes causes the entire message to be dropped at
        the receiver, preventing legitimate communication.</dd>
      </dl>
      <t>
        The vulnerability is analogous to CWE-345 (Insufficient Verification
        of Data Authenticity), but the root cause is architectural rather than
        implementation-level: correct implementations of the protocol
        specification cause the stripping.
      </t>
    </section>

    <section anchor="principle" numbered="true" toc="default">
      <name>Design Principle: Authentication-Transparent Extensions</name>
      <t>
        Authentication material MUST be carried as a first-class, independently
        addressed protocol unit. The DDS middleware, MAVLink relay, or CAN
        gateway MUST forward this unit as an independent message -- whose byte
        boundary is defined by its own schema or frame header, not by its
        position relative to another message's boundary.
      </t>

      <section anchor="chunk-pattern" numbered="true" toc="default">
        <name>The CLEITONQ_CHUNK Pattern (MAVLink)</name>
        <t>
          CleitonQ <xref target="CLEITONQ" format="default"/> implements
          relay-transparent post-quantum authentication for MAVLink v2 via the
          CLEITONQ_CHUNK encoding:
        </t>
        <ul spacing="normal">
          <li>Authentication material (ML-KEM-1024 ciphertext, ML-DSA-87
              signature, HMAC-SHA3-256 tag) is fragmented into 245-byte chunks.</li>
          <li>Each chunk is encapsulated as a valid MAVLink v2 frame with its
              own MSG_ID (50000), LEN, and CRC.</li>
          <li>INCOMPAT_FLAGS is set to 0. Any relay that does not know MSG_ID
              50000 forwards it as a valid but opaque message. Any relay that
              knows the CleitonQ dialect forwards it with full understanding.</li>
          <li>No relay has reason to discard the chunk: it is a well-formed
              MAVLink frame passing CRC validation.</li>
        </ul>
        <t>
          This approach requires no relay software changes and no INCOMPAT_FLAGS
          negotiation. Authentication material arrives intact at any receiver
          connected through any standard MAVLink relay.
        </t>
      </section>

      <section anchor="parallel-topic" numbered="true" toc="default">
        <name>The DDS Parallel-Topic Pattern (ROS2)</name>
        <t>
          For ROS2/DDS deployments, authentication material MUST be published
          as a separate typed message on a parallel topic:
        </t>
        <artwork align="left" alt=""><![CDATA[
  /cmd_vel      geometry_msgs/Twist     (command payload)
  /cmd_vel/auth cleitonq_msgs/Auth      (ML-DSA-87 sig + nonce)
        ]]></artwork>
        <t>
          The cleitonq_msgs/Auth type is defined in IDL. DDS middleware forwards
          it as any other typed message, with its byte boundary defined by its
          own schema. The receiving node:
        </t>
        <ol spacing="normal" type="1">
          <li>Subscribes to both topics.</li>
          <li>Buffers /cmd_vel messages pending auth verification.</li>
          <li>On receipt of /cmd_vel/auth, verifies the signature over the
              corresponding /cmd_vel payload.</li>
          <li>Applies the command only after verification succeeds.</li>
        </ol>
      </section>

      <section anchor="general" numbered="true" toc="default">
        <name>General Principle</name>
        <t>
          For any protocol where the frame boundary is defined by a length
          field, a type schema, or a hardware-imposed maximum:
        </t>
        <t>
          Authentication material SHOULD be carried in a protocol unit with its
          own independent framing -- its own length field, schema, or CAN
          arbitration ID -- so that any protocol-aware relay can identify,
          forward, or route it independently of the message being authenticated.
        </t>
        <t>
          Authentication material SHOULD NOT be appended to an existing message
          frame beyond its protocol-defined boundary, regardless of whether the
          existing protocol version, receiver, or endpoint supports the
          authentication extension.
        </t>
      </section>
    </section>

    <section anchor="proto-guidance" numbered="true" toc="default">
      <name>Guidance for Protocol Designers</name>
      <t>
        When designing an authentication extension for an existing embedded or
        cyber-physical protocol:
      </t>
      <ol spacing="normal" type="1">
        <li>If the protocol has a first-class extension mechanism that is
            supported by all deployed relays (e.g., INCOMPAT_FLAGS bit 0x01 in
            MAVLink when all relay software is updated), use it.</li>
        <li>If relay software cannot be universally updated, define the
            authentication material as a new message type with its own message
            ID (or topic, or PDU ID) within the protocol's normal addressing
            space.</li>
        <li>Test authentication survival by routing through a conformant relay
            that does not have any special support for the authentication
            extension. Measure bytes received at the far end. They MUST equal
            bytes sent.</li>
        <li>Document whether relays that do not understand the authentication
            extension will forward or drop the authentication message.
            "Forward as opaque" (unknown MSG_ID with INCOMPAT=0 in MAVLink) is
            preferable to "must discard" (unknown INCOMPAT_FLAGS bit).</li>
      </ol>
    </section>

    <section anchor="app-guidance" numbered="true" toc="default">
      <name>Guidance for Application Developers</name>
      <t>
        When adding authentication to an existing embedded protocol deployment
        without the ability to change relay software:
      </t>
      <ol spacing="normal" type="1">
        <li>If relay software cannot be changed: use a transport-layer security
            mechanism (DTLS, TLS, WireGuard) on the links between endpoints,
            bypassing the relay's protocol parsing entirely. Note that this
            requires the relay to forward raw UDP/TCP datagrams without parsing
            the payload.</li>
        <li>If transport-layer security is unavailable: carry authentication as
            a separate, independently addressed protocol message (see
            <xref target="principle" format="default"/>).</li>
        <li>Verify by measurement: route through all relay types present in the
            deployment and confirm auth bytes arrive at the receiver.</li>
      </ol>
    </section>

    <section anchor="pqc" numbered="true" toc="default">
      <name>Post-Quantum Considerations</name>
      <t>
        Post-quantum signature schemes defined in FIPS 204
        <xref target="FIPS204" format="default"/> (ML-DSA, formerly
        CRYSTALS-Dilithium) produce signatures of 2420 to 4595 bytes
        (ML-DSA-44 to ML-DSA-87), compared to 64 bytes for Ed25519.
        Post-quantum key encapsulation (FIPS 203 <xref target="FIPS203" format="default"/>,
        ML-KEM-1024) produces a ciphertext of 1568 bytes.
      </t>
      <t>
        These sizes make the relay-transparency vulnerability significantly more
        consequential for PQC deployments than for classical ones:
      </t>
      <ul spacing="normal">
        <li>Appending 64 bytes after a frame is plausible as a deployment
            workaround in some environments. Appending 4627 bytes is not.</li>
        <li>Fragmentation of PQC material into multiple frames (as in the
            CLEITONQ_CHUNK pattern) is required for all current embedded
            protocols with payload size limits.</li>
        <li>Any PQC authentication extension for an embedded protocol MUST be
            designed with relay transparency as a primary requirement, not an
            afterthought.</li>
      </ul>
      <t>
        The CNSA 2.0 suite <xref target="CNSA20" format="default"/> requires ML-KEM
        and ML-DSA for all National Security Systems after 2030. Defense and aerospace
        deployments transitioning to PQC should assume relay-aware authentication
        transport is mandatory, not optional.
      </t>
    </section>

    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
        This document describes a vulnerability class. The mitigations in
        <xref target="principle" format="default"/>,
        <xref target="proto-guidance" format="default"/>, and
        <xref target="app-guidance" format="default"/> address the class.
      </t>
      <t>
        Implementations following the parallel-message pattern
        (<xref target="parallel-topic" format="default"/>,
        <xref target="general" format="default"/>) MUST ensure that:
      </t>
      <ul spacing="normal">
        <li>The authentication message and the authenticated payload message
            are correlated by a sequence number, timestamp, or cryptographic
            binding, to prevent replay of authentication messages for previously
            authenticated payloads.</li>
        <li>The receiver enforces a maximum time window between receipt of the
            payload and its corresponding authentication message, to limit the
            window for desynchronization attacks.</li>
        <li>The authentication message itself cannot be used as a relay for
            oracle attacks (e.g., chosen-ciphertext attacks on the KEM
            ciphertext carried in an authentication message).</li>
      </ul>
    </section>

    <section anchor="iana" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>

  </middle>

  <back>
    <references>
      <name>References</name>

      <references>
        <name>Normative References</name>

        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>

        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>

      <references>
        <name>Informative References</name>

        <reference anchor="CLEITONQ" target="https://github.com/cleitonaugusto/CleitonQ">
          <front>
            <title>CleitonQ: Relay-Transparent Post-Quantum Authentication for MAVLink v2 UAS Command and Control</title>
            <author initials="C." surname="Bezerra" fullname="Cleiton Augusto Correa Bezerra"/>
            <date year="2026"/>
          </front>
          <seriesInfo name="GitHub" value="cleitonaugusto/CleitonQ"/>
          <refcontent>DOI 10.5281/zenodo.20776349</refcontent>
        </reference>

        <reference anchor="CNSA20" target="https://media.defense.gov/2022/Sep/07/2003071834/-1/-1/0/CSA_CNSA_2.0_ALGORITHMS_.PDF">
          <front>
            <title>Commercial National Security Algorithm Suite 2.0</title>
            <author><organization>NSA</organization></author>
            <date year="2022" month="September"/>
          </front>
        </reference>

        <reference anchor="DDS" target="https://www.omg.org/spec/DDS/1.4">
          <front>
            <title>Data Distribution Service (DDS) Specification, Version 1.4</title>
            <author><organization>Object Management Group</organization></author>
            <date year="2015" month="April"/>
          </front>
        </reference>

        <reference anchor="FIPS203" target="https://doi.org/10.6028/NIST.FIPS.203">
          <front>
            <title>FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard (ML-KEM)</title>
            <author><organization>NIST</organization></author>
            <date year="2024" month="August"/>
          </front>
        </reference>

        <reference anchor="FIPS204" target="https://doi.org/10.6028/NIST.FIPS.204">
          <front>
            <title>FIPS 204: Module-Lattice-Based Digital Signature Standard (ML-DSA)</title>
            <author><organization>NIST</organization></author>
            <date year="2024" month="August"/>
          </front>
        </reference>

        <reference anchor="MAVLINK" target="https://mavlink.io/en/">
          <front>
            <title>MAVLink Micro Air Vehicle Message Marshalling Library</title>
            <author initials="L." surname="Meier" fullname="Lorenz Meier"/>
            <date year="2009"/>
          </front>
        </reference>

        <reference anchor="R155" target="https://unece.org/transport/documents/2021/03/standards/un-regulation-no-155-cyber-security-and-cyber-security">
          <front>
            <title>UN Regulation No. 155 on Cybersecurity and Cybersecurity Management Systems</title>
            <author><organization>UNECE WP.29</organization></author>
            <date year="2021"/>
          </front>
        </reference>

        <reference anchor="SECOCASR" target="https://www.autosar.org/standards/classic-platform">
          <front>
            <title>Specification of Secure Onboard Communication (SecOC), Version 5.0.0</title>
            <author><organization>AUTOSAR</organization></author>
            <date year="2021" month="November"/>
          </front>
        </reference>

      </references>
    </references>

  </back>
</rfc>
