<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.4.2 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-drip-auth-17" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.7.0 -->
  <front>
    <title abbrev="DRIP Auth Formats">DRIP Entity Tag Authentication Formats &amp; Protocols for Broadcast Remote ID</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-drip-auth-17"/>
    <author initials="A." surname="Wiethuechter (Editor)" fullname="Adam Wiethuechter">
      <organization>AX Enterprize, LLC</organization>
      <address>
        <postal>
          <street>4947 Commercial Drive</street>
          <city>Yorkville</city>
          <region>NY</region>
          <code>13495</code>
          <country>USA</country>
        </postal>
        <email>adam.wiethuechter@axenterprize.com</email>
      </address>
    </author>
    <author initials="S." surname="Card" fullname="Stuart Card">
      <organization>AX Enterprize, LLC</organization>
      <address>
        <postal>
          <street>4947 Commercial Drive</street>
          <city>Yorkville</city>
          <region>NY</region>
          <code>13495</code>
          <country>USA</country>
        </postal>
        <email>stu.card@axenterprize.com</email>
      </address>
    </author>
    <author initials="R." surname="Moskowitz" fullname="Robert Moskowitz">
      <organization>HTT Consulting</organization>
      <address>
        <postal>
          <street/>
          <city>Oak Park</city>
          <region>MI</region>
          <code>48237</code>
          <country>USA</country>
        </postal>
        <email>rgm@labs.htt-consult.com</email>
      </address>
    </author>
    <date year="2022" month="August" day="08"/>
    <area>Internet</area>
    <workgroup>DRIP Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document describes how to add trust into the Broadcast Remote ID (RID) specification discussed in the DRIP Architecture. It defines message types and associated formats (sent within the Authentication Message) that can be used to authenticate past messages sent by an unmanned aircraft (UA) and provide proof of UA trustworthiness even in the absence of Internet connectivity at the receiving node.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>Unmanned Aircraft Systems (UAS) operate usually in a volatile environment when it comes to communication. Unmanned Aircraft (UA) are generally small with little computational (or flying) horsepower to carry standard communication equipment. This limits the media of communication to few viable options.</t>
      <t>Observer systems (e.g., smartphones and tablets) place further constraints on the communication options. The Broadcast Remote ID (RID) messages must be available to applications on these platforms without modifying the devices.</t>
      <t>As discussed in <xref target="RFC9153" format="default"/> two communication schemes to a UAS for Remote ID (RID) are considered: Broadcast and Network RID.</t>
      <t>This document focuses on adding trust to Broadcast RID (Section 3.2 of <xref target="RFC9153" format="default"/>) via the Authentication Message by combining dynamically signed data with an endorsement of the UA's identity from a DRIP Identity Management Entity (DIME).</t>
      <t>This authentication approach also provides the missing, but United States (US) Federal Aviation Administration (FAA) mandated, error correction for the Bluetooth 4.x transmissions (see <xref target="fec-details" format="default"/>). This is error correction not only for the authentication message itself, but indirectly, to other messages authenticated via the Manifest method (see <xref target="drip-manifest" format="default"/>).</t>
      <t>A summary of addressed DRIP requirements is provided in <xref target="req-sum" format="default"/>.</t>
      <section anchor="uas-observers-and-drip-authentication" numbered="true" toc="default">
        <name>UAS Observers and DRIP Authentication</name>
        <t>Without authentication, a UA Observer has no basis for trust. As the messages are sent via wireless broadcast, they may be sourced anywhere within wireless range and making any claims desired by the sender. The DRIP Specific Authentication Methods, as defined herein, when properly used enables a high level of trust on other ASTM message content and source. These messages are designed to provide the Observers with actionable information.</t>
        <section anchor="ua-attestation" numbered="true" toc="default">
          <name>UA Endorsement</name>
          <t>When an Observer receives a DRIP-based Authentication Message (<xref target="drip-wrapper" format="default"/>, <xref target="drip-manifest" format="default"/>, <xref target="drip-frame" format="default"/>) that only contains the UA DET, timestamps, and signature; it SHOULD use the DRIP Entity Tag (DET) to retrieve the Host Identity (HI) from DNS (Section 5, <xref target="drip-registries" format="default"/>) or a local cache to validate the signature. Once the Observer has the DET/HI pair, all further (or cached previous) DRIP Authentication Messages can be validated. The content signed over can now be trusted to have been sent by the holder of the private key corresponding to the HI and DET but not the context of it.</t>
        </section>
        <section anchor="dime-attestation" numbered="true" toc="default">
          <name>DIME Endorsement</name>
          <t>When an Observer receives a DRIP Link Authentication Message (<xref target="drip-link" format="default"/>), that contains an endorsement of the UA DET DIME registration (Appendix B); it SHOULD use the DET of the DIME to retrieve the DIME HI from DNS (Section 5, <xref target="drip-registries" format="default"/>) or a local cache to validate the signature. The UA DET/HI pair is now known to be registered in a given DIME. As the HI is encapsulated in the data being endorsed all further (or previously received and cached) DRIP Authentication Messages using the UA DET can be validated.</t>
        </section>
        <section anchor="chain-of-dimes-to-trust-root" numbered="true" toc="default">
          <name>Chain of DIMEs to Trust Root</name>
          <t>An Observer can receive a series of DRIP Link Authentication Messages (<xref target="drip-link" format="default"/>) each one pertaining to a DIMEs registration on the chain. Similar to <xref target="dime-attestation" format="default"/>, each link can be validated. A chain of  DIME Endorsements (<xref target="dime-attestation" format="default"/>) can also be obtained via DNS. This is done by decomposing the received DET and altering the HID values and performing CERT lookups containing a copy of DIME Endorsements.</t>
        </section>
        <section anchor="authentication-content-correlation" numbered="true" toc="default">
          <name>Authentication Content Correlation</name>
          <t>While the content of DRIP Authentication Messages can be validated via their signature this does not resolves issues due to context of that information (as noted in <xref target="ua-attestation" format="default"/>). After signature validation the Observer MUST use other sources of information, for example a visual confirmation of UA position, to correlate against and provided context. When a correlation does not make sense it SHOULD be rejected as if the signature failed to validate.</t>
        </section>
      </section>
    </section>
    <section anchor="terminology" numbered="true" toc="default">
      <name>Terminology</name>
      <section anchor="required-terminology" numbered="true" toc="default">
        <name>Required 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>
      </section>
      <section anchor="definitions" numbered="true" toc="default">
        <name>Definitions</name>
        <t>This document makes use of the terms defined in <xref target="RFC9153" format="default"/>. In addition, the following terms are defined:</t>
        <t>DRIP Entity Tag (DET):</t>
        <ul empty="true" spacing="normal">
          <li>An HHIT that is used as an identifier in DRIP as specified in <xref target="drip-rid" format="default"/>.</li>
        </ul>
        <t>DRIP Identity Management Entity:</t>
        <ul empty="true" spacing="normal">
          <li>Registry service for DETs and other information in DRIP as specified in <xref target="drip-registries" format="default"/>.</li>
        </ul>
        <t>Legacy Transports:</t>
        <ul empty="true" spacing="normal">
          <li>use of broadcast frames (Bluetooth 4.x) as specified in <xref target="F3411" format="default"/>.</li>
        </ul>
        <t>Extended Transports:</t>
        <ul empty="true" spacing="normal">
          <li>use of extended advertisements (Bluetooth 5.x), service info (Wi-Fi NaN) or vendor specific element information (Wi-Fi BEACON) in broadcast frames as specified in <xref target="F3411" format="default"/>. Must use ASTM Message Pack (Message Type 0xF).</li>
        </ul>
        <t>Hierarchial Host Identity Tag (HHIT):</t>
        <ul empty="true" spacing="normal">
          <li>A special-use, non-routable, IPv6 address constructed as specified in <xref target="drip-rid" format="default"/>.</li>
        </ul>
        <t>HHIT Domain Authority (HDA):</t>
        <ul empty="true" spacing="normal">
          <li>A class of DIME usually associated with a USS in UTM.</li>
        </ul>
        <t>Hierarchial ID (HID):</t>
        <ul empty="true" spacing="normal">
          <li>Encoding of the RAA and HDA into the HHIT structure as defined in <xref target="drip-rid" format="default"/>.</li>
        </ul>
        <t>Host Identity (HI):</t>
        <ul empty="true" spacing="normal">
          <li>Public key have of an asymmetric keypair used in generating a HHIT as specified in <xref target="drip-rid" format="default"/>.</li>
        </ul>
        <t>Registered Assigning Authority (RAA):</t>
        <ul empty="true" spacing="normal">
          <li>A class of DIME usually associated with a CAA such as the US FAA.</li>
        </ul>
      </section>
    </section>
    <section anchor="background" numbered="true" toc="default">
      <name>Background</name>
      <section anchor="problem-space-and-focus" numbered="true" toc="default">
        <name>Problem Space and Focus</name>
        <t>The initial standards for RID (<xref target="FAA-14CFR" format="default"/>, <xref target="F3411" format="default"/>) do not address the concerns of trust in the UA space with communication in the Broadcast RID environment. This is a requirement that will need to be addressed for various different parties that have a stake in the UA industry.</t>
        <t>DRIP's goal as stated in the charter is:</t>
        <ul empty="true" spacing="normal">
          <li>to specify how RID can be made trustworthy and available in both Internet and local-only connected scenarios, especially in emergency situations.</li>
        </ul>
        <t>This document focuses on providing the first observable "link" of this trust chain over Broadcast RID; with an importance of the observer being offline. This first link is the primary stepping stone for an observer to gain access and use "enhanced related services".</t>
        <section anchor="broadcast-rid-radio-frequency-options" numbered="true" toc="default">
          <name>Broadcast RID Radio Frequency Options</name>
          <t>A UA has the option of broadcasting using Bluetooth (4 and 5) or Wi-Fi (BEACON or NAN), see <xref target="reqs" format="default"/>.  With Bluetooth, FAA and other Civil Aviation Authorities (CAA) mandate transmitting simultaneously over both 4 and 5. With Wi-Fi, use of BEACON is recommended. Wi-Fi NAN is another option, depending on the CAA.</t>
          <t>Bluetooth 4.x presents a payload size challenge in that it can only transmit 25 bytes of payload where the others all can support larger payloads.</t>
        </section>
      </section>
      <section anchor="reasoning-for-ietf-drip-authentication" numbered="true" toc="default">
        <name>Reasoning for IETF DRIP Authentication</name>
        <t><xref target="F3411" format="default"/> defines Authentication Message framing only. It does not define authentication formats or methods. It explicitly anticipates several signature options, but does not fully define even those. <xref target="F3411" format="default"/> Annex A1 defines a Broadcast Authentication Verifier Service, which has a heavy reliance on real-time connectivity to the Internet (specifically into UTM) that is not always guaranteed. Fortunately, <xref target="F3411" format="default"/> also allows third party standard Authentication Types, several of which DRIP defines herein.</t>
        <t>The standardization of specific formats to support the DRIP requirements in UAS RID for trustworthy communications over Broadcast RID is an important part of the chain of trust for a UAS ID. Per <xref target="drip-arch" format="default"/> in Section 5, there is a need to have Authentication formats to relay information for observers to determine trust. No existing formats (defined in <xref target="F3411" format="default"/> or other organizations leveraging this feature) provide the functionality to satisfy this goal resulting in the work reflected in this document.</t>
      </section>
      <section anchor="auth-message" numbered="true" toc="default">
        <name>ASTM Authentication Message</name>
        <t>The ASTM Authentication Message (Message Type 0x2) is a unique message in the Broadcast <xref target="F3411" format="default"/> standard as it is the only one that is larger than the Bluetooth 4.x frame size. To address this, it is defined as a set of "pages" that each fits into a single Bluetooth 4.x broadcast frame. For other media these pages are still used but all in a single frame.</t>
        <section anchor="auth-page" numbered="true" toc="default">
          <name>Authentication Page</name>
          <figure anchor="astm-auth-page">
            <name>Standard ASTM Authentication Message Page</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
 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
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                                                               |
|                                                               |
|                     Authentication Payload                    |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+

Page Header: (1 byte)
    Authentication Type (4 bits)
    Page Number (4 bits)
    
Authentication Payload: (23 bytes per page)
    Authentication Payload, including headers. Null padded.
]]></artwork>
          </figure>
          <t>This document leverages Authentication Type 0x5, Specific Authentication Method (SAM), as the principal authentication container, defining a set of SAM Types in <xref target="drip-authentication-formats" format="default"/>. This is denoted in every Authentication Page in the <tt>Page Header</tt>. The SAM Type is denoted as a field in the <tt>Authentication Payload</tt> (see <xref target="sam-data" format="default"/>).</t>
          <t>The Authentication Message is structured as a set of pages. There is a technical maximum of 16 pages (indexed 0 to 15 in the <tt>Page Header</tt>) that can be sent for a single Authentication Message, with each page carrying a maximum 23-byte <tt>Authentication Payload</tt>. See <xref target="drip-restrictions" format="default"/> for more details. Over Bluetooth 4.x, these pages are "fragmented" into separate Bluetooth 4.x broadcast frames.</t>
          <t>Either as a single Authentication Message or a set of fragmented Authentication Message Pages the structure is further wrapped by outer ASTM framing and the specific link framing (Bluetooth or Wi-Fi).</t>
        </section>
        <section anchor="authentication-payload-field" numbered="true" toc="default">
          <name>Authentication Payload Field</name>
          <t><xref target="astm-auth" format="default"/> is the source data view of the data fields found in the Authentication Message as defined by <xref target="F3411" format="default"/>. This data is placed into <xref target="astm-auth-page" format="default"/>'s <tt>Authentication Payload</tt>, spanning multiple pages.</t>
          <figure anchor="astm-auth">
            <name>ASTM Authentication Message Fields</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
 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
+---------------+---------------+---------------+---------------+
|                     Authentication Headers                    |
|                               +---------------+---------------+
|                               |                               |
+---------------+---------------+                               |
.                                                               .
.                Authentication Data / Signature                .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+
|      ADL      |                                               |
+---------------+                                               |
.                                                               .
.                       Additional Data                         .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+

Authentication Headers: (6-bytes)
    As defined in F3411.

Authentication Data / Signature: (255-bytes max)
    Opaque authentication data.

Additional Data Length (ADL): (1-byte - unsigned)
    Length in bytes of Additional Data.

Additional Data: (255-bytes max):
    Data that follows the Authentication Data / Signature but
    is not considered part of the Authentication Data.
]]></artwork>
          </figure>
          <t>When <tt>Additional Data</tt> is being sent, a single unsigned byte (<tt>Additional Data Length</tt>) directly follows the <tt>Authentication Data / Signature</tt> and has the length, in bytes, of the following <tt>Additional Data</tt>. For DRIP, this field is used to carry Forward Error Correction as defined in <xref target="fec-details" format="default"/>.</t>
        </section>
        <section anchor="drip-restrictions" numbered="true" toc="default">
          <name>ASTM Constraints</name>
          <t>To keep consistent formatting across the different transports (Legacy and Extended) and their independent restrictions, the authentication data being sent is REQUIRED to fit within the page limit that the most constrained existing transport can support. Under Broadcast RID the transport that can hold the least amount of authentication data is Bluetooth 5.x and Wi-Fi BEACON at 9-pages.</t>
          <t>As such DRIP transmitters are REQUIRED to adhere to the following when using the Authentication Message:</t>
          <ol spacing="normal" type="1"><li>
              <tt>Authentication Data / Signature</tt> data MUST fit in the first 9 pages (Page Numbers 0 through 8).</li>
            <li>The <tt>Length</tt> field in the <tt>Authentication Headers</tt> (which denotes the length in bytes of <tt>Authentication Data / Signature</tt> only) MUST NOT exceed the value of 201.</li>
          </ol>
        </section>
      </section>
    </section>
    <section anchor="fec-details" numbered="true" toc="default">
      <name>Forward Error Correction</name>
      <t>For Broadcast RID, Forward Error Correction (FEC) is provided by the lower layers in Extended Transports (Bluetooth 5.x, Wi-Fi NaN, and Wi-Fi BEACON). The Bluetooth 4.x Legacy Transport does not have supporting FEC so with DRIP Authentication the following application level FEC scheme is used to add FEC. This section is only used for Bluetooth 4.x transmission/reception.</t>
      <t>The Bluetooth 4.x lower layers have error detection but not correction. Any frame in which Bluetooth detects an error is dropped and not delivered to higher layers (in our case, DRIP). Thus it can be treated as an erasure.</t>
      <t>DRIP supports 2 different FEC encodings. Single Page FEC is the simpler scheme, but can correct for only a single erased page. Multiple Page FEC is more complex, but can correct for multiple erased pages.</t>
      <t>The data added during FEC is not included in the <tt>Authentication Data / Signature</tt> but instead in the <tt>Additional Data</tt> field of <xref target="astm-auth" format="default"/>. This may cause the Authentication Message to exceed 9-pages, up to a maximum of 16-pages.</t>
      <section anchor="general-encoding-rules" numbered="true" toc="default">
        <name>General Encoding Rules</name>
        <t>For DRIP the FEC data MUST start on a new ASTM Authentication Page. To do this once the results of parity encoding is placed in the <tt>Additional Data</tt> field of <xref target="astm-auth" format="default"/> with null padding before it to line up with the next page. The <tt>Additional Data Length</tt> field is set to <tt>number of padding bytes + number of parity bytes</tt>.</t>
      </section>
      <section anchor="general-decoding-rules" numbered="true" toc="default">
        <name>General Decoding Rules</name>
        <t>If Page 0 is being reconstructed an additional check of the <tt>Last Page Index</tt> to check against how many pages are actually present, MUST be performed for sanity. An additional check on the <tt>Length</tt> field SHOULD also be performed.</t>
        <t>To determine if Single Page FEC or Multiple Page FEC has been used a simple check of the <tt>Last Page Index</tt> can be used. If the number of pages left after the <tt>Length</tt> of Authentication Data is not exhausted then the remaining pages should be all FEC. The <tt>Additional Data Length</tt> byte can further confirm this; taking into account any null padding needed for page alignment.</t>
      </section>
      <section anchor="single-page" numbered="true" toc="default">
        <name>Single Page</name>
        <section anchor="enc-single-page" numbered="true" toc="default">
          <name>Encoding</name>
          <t>To generate the parity a simple XOR operation using the previous parity page and current page is used. Only the 23-byte <tt>Authentication Payload</tt> field of <xref target="astm-auth-page" format="default"/> is used in the XOR operations. For Page 0, a 23-byte null pad is used for the previous parity page.</t>
          <t><xref target="single-fec" format="default"/> shows the last two pages (out of N) of an Authentication Message using DRIP Single Page FEC. The <tt>Additional Data Length</tt> is set to 33 as there is 23-bytes of FEC data and 10-bytes of padding to line it up into Page N.</t>
          <figure anchor="single-fec">
            <name>Example Single Page FEC Encoding</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
Page N-1:
 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
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                Authentication Data / Signature                |
|                                                               |
|               +---------------+---------------+---------------+
|               |    ADL=33     |                               |
+---------------+---------------+                               |
|                          Null Padding                         |
|                                                               |
+---------------+---------------+---------------+---------------+

Page N:
 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
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                                                               |
|                     Forward Error Correction                  |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
          </figure>
        </section>
        <section anchor="dec-single-page" numbered="true" toc="default">
          <name>Decoding</name>
          <t>To decode Single Page FEC in DRIP a rolling XOR is used on each <tt>Authentication Page</tt> received in the current <tt>Authentication Message</tt>. A Message Counter, outside of the ASTM Message but specified in <xref target="F3411" format="default"/> is used to signal a different <tt>Authentication Message</tt> and to correlate pages to them. This Message Counter is only 1-byte in length, so it will rollover (to 0x00) after reaching its maximum value (0xFF). If only 1-page is missing in the <tt>Authentication Message</tt> the resulting parity bytes should be the data of the erased page.</t>
        </section>
      </section>
      <section anchor="multiple-page" numbered="true" toc="default">
        <name>Multiple Page</name>
        <section anchor="enc-multi-page" numbered="true" toc="default">
          <name>Encoding</name>
          <t>For Multiple Page FEC there are two variations: Frame Recovery and Page Recovery. Both follow a similar process, but are offset at what data is protected.</t>
          <t>For DRIP the polynomial to use for Reed Solomon is: <tt>1 + x^2 + x^3 + x^4 + x^8</tt>. This polynomial was selected as it commonly used in Reed Solomon implementations. A form of it was deployed by the National Aeronautics and Space Administration (NASA) for the Voyager probes <xref target="VOYAGER" format="default"/>; a problem space with far tighter constraints than RID.</t>
          <t><xref target="multi-fec" format="default"/> is a generic example of Multiple Page FEC Authentication Message where 3-pages out of N are used for Reed Solomon FEC. The <tt>Additional Data Length</tt> is set to 72 as there are 10-bytes of padding and 62-bytes of parity from Reed Solomon.</t>
          <figure anchor="multi-fec">
            <name>Example Multiple Page FEC Encoding</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
Page N-3:
 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
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                Authentication Data / Signature                |
|                                                               |
|               +---------------+---------------+---------------+
|               |    ADL=72     |                               |
+---------------+---------------+                               |
|                          Null Padding                         |
|                                                               |
+---------------+---------------+---------------+---------------+

Page N-2:
 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
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                                                               |
|                     Forward Error Correction                  |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+

Page N-1:
 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
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                                                               |
|                     Forward Error Correction                  |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+

Page N:
 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
+---------------+---------------+---------------+---------------+
|  Page Header  |                                               |
+---------------+                                               |
|                                                               |
|                     Forward Error Correction                  |
|                                                               |
|               +---------------+---------------+---------------+
|               |                                               |
+---------------+          Null Padding                         |
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
          </figure>
          <ul empty="true" spacing="normal">
            <li>Informative Note: the last page in the example is padded to fill the full page as specified by <xref target="F3411" format="default"/>.</li>
          </ul>
          <section anchor="enc-page" numbered="true" toc="default">
            <name>Page Recovery</name>
            <t>Page Recovery in Multiple Page FEC protects the same content, just the Authentication Message, as Single Page FEC. The benefit is increased protection from a maximum of one page, up to the page maximum (minus pages being used for authentication).</t>
            <t>In Page Recovery, the <tt>Authentication Payload</tt> field of <xref target="astm-auth-page" format="default"/> for each page is used. Reed Solomon is performed in a byte-wise fashion across each Authentication Page to generate a number of parity bytes. The number of these parity bytes directly corresponds to the number of pages of FEC to be append to the Authentication Message. The resulting parity bytes are placed to the corresponding bytes in the FEC pages. This can be considered a form of interleaving that takes advantage of the fixed page length.</t>
            <t>See <xref target="page-example" format="default"/> for a detailed example of encoding for Page Recovery.</t>
          </section>
          <section anchor="enc-frame" numbered="true" toc="default">
            <name>Frame Recovery</name>
            <t>Frame Recovery in Multiple Page FEC protects not just the Authentication Message it is carried in but also other ASTM Messages being sent. This is at the cost of much longer Authentication Messages. Up to 240 messages (255 minus 15 pages maximum for FEC) can be protected using Frame Recovery.</t>
            <t>For Frame Recovery both transmitter and receiver need to agree on what messages are being Reed Solomon'd over. It is RECOMMENDED that the data is limited to a full transmission set of ASTM Messages. For example in the European Union (EU) a full set of ASTM Messages would include: 1x Basic ID, 1x Location/Vector, 1x System and 1x Operator ID. With DRIP this would also included 1x Authentication that would be carrying the FEC (along with DRIP Authentication).</t>
            <t>Similar to <xref target="enc-page" format="default"/>, Reed Solomon is performed in a bytes-wise fashion across messages to generate the desired number of parity bytes. These messages MUST be in Message Type order when performing the Reed Solomon operation. All 25-bytes of the ASTM Message are used during this operation for Frame Recovery. After the computation the new pseudo-frames formed by the parity are concatenated together. The length of this data is used in the calculation of the <tt>Additional Data Length</tt> with the amount of padding needed to align to a new Authentication Page. The padding and parity data are then placed in the <tt>Additional Data</tt> field.</t>
            <t>See <xref target="frame-example" format="default"/> for a detailed example of encoding for Frame Recovery.</t>
          </section>
        </section>
        <section anchor="dec-multi-page" numbered="true" toc="default">
          <name>Decoding</name>
          <t>To determine if Page Recovery or Frame Recovery is used two modulo checks with the <tt>ADL</tt> after the length of the null-pad is removed are needed. One against the value of 23, and the other against the value of 25. If 23 comes back with a value of 0 then Page Recovery is being used. If 25 comes back with 0 then Frame Recovery is used. Any other combination indicates an error.</t>
          <t>As it is known which pages were not received in an <tt>Authentication Message</tt> (or were erased by Bluetooth due to detected errors), the Reed Solomon capacity can be dedicated exclusively to correction of erasures, rather than to detection and correction of errors, thereby doubling its effective capacity. This is accomplished by marking the erasures, i.e., filling the dummy page(s) or frames with nulls.</t>
          <t>For either Page Recovery or Frame recovery the first step on the receiver is to create empty (or dummy) <tt>Authentication Pages</tt> for any pages missing in the <tt>Authentication Message</tt>. Then the <tt>Additional Data</tt> can be extracted from the <tt>Authentication Message</tt>, have its null-padding removed and further processed.</t>
          <section anchor="dec-page" numbered="true" toc="default">
            <name>Page Recovery</name>
            <t>To decode Page Recovery, the received FEC data along with the <tt>Authentication Payload</tt> of each <tt>Authentication Page</tt> has Reed Solomon performed using erasures byte-wise across the pages. The results should have all pages of the <tt>Authentication Message</tt> recovered. The receiver SHOULD validate the rebuilt message before decoding the actual authentication.</t>
          </section>
          <section anchor="dec-frame" numbered="true" toc="default">
            <name>Frame Recovery</name>
            <t>To decode Frame Recovery, the receiver breaks the <tt>Additional Data</tt> into 25-byte chunks. This will produce the pseudo-frames of parity bytes from the <tt>Authentication Message</tt>.</t>
            <t>To build the rest of the message set, static messages such as Basic ID and Operator ID are constant and can be filled in using any received copy that is cache by the receiver for that UA. Dynamic messages in the set, such as Location/Vector or System can be nulled out to have Reed Solomon alway recover them and the results checked against cached copies from recent transmissions of the UA.</t>
            <t>With all the frames in the set, Reed Solomon can be used in an erasure mode to decode byte-wise across the frames to fill in the erasures and rebuild the entire set of messages. Validation of the <tt>Authentication Message</tt> SHOULD be performed before further processing of authentication data.</t>
          </section>
        </section>
      </section>
      <section anchor="fec-limitations" numbered="true" toc="default">
        <name>FEC Limitations</name>
        <t>The worst case scenario is when the <tt>Authentication Data / Signature</tt> ends perfectly on a page (Page N-1). This means the <tt>Additional Data Length</tt> would start the next page (Page N) and have 22-bytes worth of null padding to align the FEC to begin at the start of the next page (Page N+1). In this scenario an entire page (Page N) is being wasted just to carry the <tt>Additional Data Length</tt>. This should be avoided where possible in an effort to maintain efficiency.</t>
      </section>
    </section>
    <section anchor="drip-authentication-formats" numbered="true" toc="default">
      <name>DRIP Authentication Formats</name>
      <t>All formats defined in this section are the content for the <tt>Authentication Data / Signature</tt> field in <xref target="astm-auth" format="default"/> and use the Specific Authentication Method (SAM, Authentication Type 0x5). The first byte of the <tt>Authentication Data / Signature</tt> of <xref target="astm-auth" format="default"/>, is used to multiplex between these various formats.</t>
      <t>When sending data over a medium that does not have underlying Forward Error Correction (FEC), for example Bluetooth 4.x, then <xref target="fec-details" format="default"/> MUST be used. <xref target="appendix-a" format="default"/> gives a high-level overview of a state machine for decoding and determining a trustworthiness state. <xref target="appendix-c" format="default"/> shows an example of using the formats defined in this section.</t>
      <section anchor="drip-authentication-field-definitions" numbered="true" toc="default">
        <name>DRIP Authentication Field Definitions</name>
        <t>ASTM Message (25-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Full ASTM Message as defined in <xref target="F3411" format="default"/>; specifically Message Types 0x0, 0x1, 0x3, 0x4, and 0x5</li>
        </ul>
        <t>ASTM Message Hash (12-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Hash of a single full ASTM Message using hash operations described in (<xref target="hash-op" format="default"/>). Multiple hashes MUST be in Message Type order.</li>
        </ul>
        <t>Attestation Data (0 to 112 bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Opaque attestation data that the UA is attesting during its flight in <xref target="drip-data" format="default"/>.</li>
        </ul>
        <t>Broadcast Endorsement (136-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>DIME HI over UA DET/HI. Generated by a DIME during a UA DET, being used as a Session ID, registration. Used in <xref target="drip-link" format="default"/>.</li>
        </ul>
        <t>Current Manifest Hash (12-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Hash of the current Manifest Message (<xref target="drip-manifest" format="default"/>). See <xref target="block-hashes" format="default"/>.</li>
        </ul>
        <t>Frame Type (1-byte):</t>
        <ul empty="true" spacing="normal">
          <li>Sub-type for future different DRIP Frame formats. See <xref target="frame-type" format="default"/>.</li>
        </ul>
        <t>Not Before Timestamp by UA (4-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Timestamp denoting recommended time to start trusting data in <xref target="drip-data" format="default"/>. MUST follow the format defined in <xref target="F3411" format="default"/>. That is a Unix-style timestamp but with an epoch of 01/01/2019 00:00:00.  MUST be set no earlier than the time the signature is generated.</li>
        </ul>
        <t>Not After Timestamp by UA (4-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Timestamp denoting recommended time to stop trusting data in <xref target="drip-data" format="default"/>. MUST follow the format defined in <xref target="F3411" format="default"/>. That is a Unix-style timestamp but with an epoch of 01/01/2019 00:00:00 with an additional offset is then added to push a short time into the future (relative to <tt>Not Before Timestamp</tt>) to avoid replay attacks. The offset used against the Unix-style timestamp is not defined in this document. Best practice identifying an acceptable offset should be used taking into consideration the UA environment, and propagation characteristics of the messages being sent and clock differences between the UA and Observers. A reasonable time would be to set <tt>Not After Timestamp</tt> 2 minutes after <tt>Not Before Timestamp</tt>.</li>
        </ul>
        <t>Previous Manifest Hash (12-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Hash of the previously sent Manifest Message (<xref target="drip-manifest" format="default"/>). See <xref target="block-hashes" format="default"/>.</li>
        </ul>
        <t>UA DRIP Entity Tag (16-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>The UA DET <xref target="drip-rid" format="default"/> in byte form (network byte order) and is part of <xref target="drip-data" format="default"/>.</li>
        </ul>
        <t>UA Signature (64-bytes):</t>
        <ul empty="true" spacing="normal">
          <li>Signature over all 4 preceding fields of <xref target="drip-data" format="default"/> using the HI of the UA.</li>
        </ul>
        <section anchor="bas" numbered="true" toc="default">
          <name>Broadcast Attestation Structure</name>
          <!-- Remove this section as the subsections really just fill this in? -->

<t>Variations of the <tt>Attestation Structure</tt> format of <xref target="drip-registries" format="default"/> MUST be used when running DRIP Authentication under the DRIP SAM Types (filling the <tt>SAM Authentication Data</tt> field (<xref target="sam-authentication-data" format="default"/>)). The only differences are that the timestamps are set by the UA and the <tt>Attestor Identity Information</tt> is set to the DET of the UA.</t>
          <t>When using this structure, the UA is minimally self-attesting its DET. It may be attesting the DET registration in a specific HID (see <xref target="link-example" format="default"/>). The HI of the UA DET can be looked up by mechanisms described in <xref target="drip-registries" format="default"/> or by extracting it from a Broadcast Endorsement (see <xref target="drip-link" format="default"/> and <xref target="drip-recommendations" format="default"/>).</t>
          <figure anchor="drip-data">
            <name>Broadcast Attestation Structure</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
 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
+---------------+---------------+---------------+---------------+
|                                                               |
|                              UA                               |
|                        DRIP Entity Tag                        |
|                                                               |
+---------------+---------------+---------------+---------------+
|                                                               |
.                                                               .
.                        Attestation Data                       .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+
|                   Not Before Timestamp by UA                  |
+---------------+---------------+---------------+---------------+
|                    Not After Timestamp by UA                  |
+---------------+---------------+---------------+---------------+
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                          UA Signature                         |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
          </figure>
        </section>
        <section anchor="sam-data" numbered="true" toc="default">
          <name>SAM Data Format</name>
          <t><xref target="sam-frame" format="default"/> is the general format to hold authentication data when using SAM and is placed inside the <tt>Authentication Data / Signature</tt> field in <xref target="astm-auth" format="default"/>.</t>
          <figure anchor="sam-frame">
            <name>SAM Data Format</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
 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
+---------------+---------------+---------------+---------------+
|   SAM Type    |                                               |
+---------------+                                               |
.                                                               .
.                     SAM Authentication Data                   .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+

SAM Type (1 byte):
    Byte defined by F3411 to multiplex SAMs

SAM Authentication Data (0 to 200 bytes):
    Authentication data (opaque to baseline F3411 but parsed by DRIP).
]]></artwork>
          </figure>
          <section anchor="sam-type" numbered="true" toc="default">
            <name>SAM Type</name>
            <t>The SAM Type field is maintained by the International Civil Aviation Organization (ICAO) and for DRIP four are planned to be allocated:</t>
            <table align="center">
              <thead>
                <tr>
                  <th align="left">SAM Type</th>
                  <th align="left">Description</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">0x01</td>
                  <td align="left">DRIP Link (<xref target="drip-link" format="default"/>)</td>
                </tr>
                <tr>
                  <td align="left">0x02</td>
                  <td align="left">DRIP Wrapper (<xref target="drip-wrapper" format="default"/>)</td>
                </tr>
                <tr>
                  <td align="left">0x03</td>
                  <td align="left">DRIP Manifest (<xref target="drip-manifest" format="default"/>)</td>
                </tr>
                <tr>
                  <td align="left">0x04</td>
                  <td align="left">DRIP Frame (<xref target="drip-frame" format="default"/>)</td>
                </tr>
              </tbody>
            </table>
          </section>
          <section anchor="sam-authentication-data" numbered="true" toc="default">
            <name>SAM Authentication Data</name>
            <t>This field has a maximum size of 200-bytes, as defined by <xref target="drip-restrictions" format="default"/>. The Broadcast Attestation Structure (<xref target="bas" format="default"/>) MUST be used in this space.</t>
          </section>
        </section>
      </section>
      <section anchor="drip-link" numbered="true" toc="default">
        <name>DRIP Link</name>
        <t>The DRIP Link SAM Type is used to transmit Broadcast Endorsements. For example, the <tt>Broadcast Endorsement: DIME, UA</tt> is sent (see <xref target="drip-recommendations" format="default"/>) as a DRIP Link message. The structure is defined in <xref target="drip-registries" format="default"/> and an example of it can be found in <xref target="link-example" format="default"/>.</t>
        <t>DRIP Link is important as its contents are used to provide trust in the DET/HI pair that the UA is currently broadcasting. This message does not require Internet connectivity to perform signature validations of the contents when the DIME DET/HI is in the receiver's cache. It also provides the UA HI so that connectivity is not required when performing validation of other DRIP Authentication Messages.</t>
        <figure anchor="link-fig">
          <name>DRIP Link</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
 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
+---------------+---------------+---------------+---------------+
|                                                               |
.                                                               .
.                      Broadcast Endorsement                    .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
        </figure>
        <t>This DRIP Authentication Message is used in conjunction with other DRIP SAM Types (such as Manifest or Wrapper) that contain data that is guaranteed to be unique, unpredictable and easily cross checked by the receiving device. The only <xref target="F3411" format="default"/> message type satisfying these requirements is the Location/Vector Message (Message Type 0x2). The hash of such a message MAY merely be included in a DRIP Manifest, but an entire such message SHOULD be encapsulated in a DRIP Wrapper periodically for stronger security.</t>
      </section>
      <section anchor="drip-wrapper" numbered="true" toc="default">
        <name>DRIP Wrapper</name>
        <t>This SAM Type is used to wrap and sign over a list of other <xref target="F3411" format="default"/> Broadcast RID messages. It MUST use the Broadcast Attestation Structure (<xref target="bas" format="default"/>).</t>
        <t>The <tt>Attestation Data</tt> field is filled with full (25-byte) <xref target="F3411" format="default"/> Broadcast RID messages. The minimum number being 1 and the maximum being 4. The encapsulated messages MUST be in Message Type order as defined by <xref target="F3411" format="default"/>. All message types except Authentication (Message Type 0x2) and Message Pack (Message Type 0xF) are allowed.</t>
        <t>To determine the number of messages wrapped the receiver can check that the length of the <tt>Attestation Data</tt> field of the DRIP Broadcast Attestation (<xref target="bas" format="default"/>) is a multiple of 25-bytes.</t>
        <figure anchor="wrapper-fig">
          <name>DRIP Wrapper over Legacy Transports</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
 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
+---------------+---------------+---------------+---------------+
|                                                               |
|                              UA                               |
|                        DRIP Entity Tag                        |
|                                                               |
+---------------+---------------+---------------+---------------+
|                                                               |
.                                                               .
.                         ASTM Message(s)                       .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+
|                   Not Before Timestamp by UA                  |
+---------------+---------------+---------------+---------------+
|                    Not After Timestamp by UA                  |
+---------------+---------------+---------------+---------------+
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                          UA Signature                         |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
        </figure>
        <section anchor="wrapper-over-extended-transports" numbered="true" toc="default">
          <name>Wrapper over Extended Transports</name>
          <t>To send the DRIP Wrapper over Extended Transports the messages being wrapped are co-located with the Authentication Message in a ATM Message Pack (Message Type 0xF). The ASTM Messages are removed from the DRIP Wrapper after signing (as they are redundant) leaving the following structure that is placed into the <tt>SAM Authentication Data</tt> of <xref target="sam-frame" format="default"/> and sent in the same Message Pack.</t>
          <figure anchor="set-sig">
            <name>DRIP Wrapper over Extended Transports</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
 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
+---------------+---------------+---------------+---------------+
|                                                               |
|                              UA                               |
|                        DRIP Entity Tag                        |
|                                                               |
+---------------+---------------+---------------+---------------+
|                   Not Before Timestamp by UA                  |
+---------------+---------------+---------------+---------------+
|                    Not After Timestamp by UA                  |
+---------------+---------------+---------------+---------------+
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                          UA Signature                         |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
          </figure>
          <t>To verify the signature the receiver must concatenate all the messages in the Message Pack (excluding Authentication Message found in the same Message Pack) in Message Type order and place them between the <tt>UA DRIP Entity Tag</tt> and <tt>Not Before Timestamp</tt> before performing signature verification.</t>
          <t>The functionality of Wrapper in this form is identical to Authentication Type 0x3 (Message Set Signature) when running over Extended Transports. What Wrapper provides is the same format but over both Extended and Legacy Transports allowing the transports to be similar. Message Set Signature also implies using the ASTM validator system architecture which relies on Internet connectivity for verification which the receiver may not have at the time of receipt of an Authentication Message. This is something Wrapper, and all DRIP Authentication Formats, avoid when the UA key is obtained via a DRIP Link Authentication Message.</t>
        </section>
        <section anchor="wrapper-limitations" numbered="true" toc="default">
          <name>Wrapper Limitations</name>
          <t>The primary limitation of the Wrapper format is the bounding of up to 4 ASTM Messages that can be sent within it. Another limitation is that the format can not be used as a surrogate for messages it is wrapping. This is due to high potential a receiver on the ground does not support DRIP. Thus, when Wrapper is being used the wrapper data must effectively be sent twice, once as a single framed message (as specified in <xref target="F3411" format="default"/>) and then again wrapped within the Wrapper format.</t>
        </section>
      </section>
      <section anchor="drip-manifest" numbered="true" toc="default">
        <name>DRIP Manifest</name>
        <t>This SAM Type is used to create message manifests. It MUST use the Broadcast Attestation Structure (<xref target="bas" format="default"/>).</t>
        <t>By hashing previously sent messages and signing them we gain trust in UAs previous reports. An observer who has been listening for any length of time can hash received messages and cross-check against listed hashes. This is a way to evade the limitation of a maximum of 4 messages in the Wrapper Format and reduce overhead.</t>
        <t>The <tt>Attestation Data</tt> field is filled with 12-byte hashes of previous <xref target="F3411" format="default"/> Broadcast messages. A receiver does not need to have received every message in the manifest to verify it. A manifest SHOULD typically encompass a single transmission cycle of messages being sent, see <xref target="operational" format="default"/>.</t>
        <figure anchor="manifest-fig">
          <name>DRIP Manifest</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
 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
+---------------+---------------+---------------+---------------+
|                                                               |
|                              UA                               |
|                        DRIP Entity Tag                        |
|                                                               |
+---------------+---------------+---------------+---------------+
|                                                               |
|                     Previous Manifest Hash                    |
|                                                               |
+---------------+---------------+---------------+---------------+
|                                                               |
|                     Current Manifest Hash                     |
|                                                               |
+---------------+---------------+---------------+---------------+
|                                                               |
.                                                               .
.                     ASTM Message Hash(es)                     .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+
|                   Not Before Timestamp by UA                  |
+---------------+---------------+---------------+---------------+
|                    Not After Timestamp by UA                  |
+---------------+---------------+---------------+---------------+
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                          UA Signature                         |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
        </figure>
        <section anchor="hash-count" numbered="true" toc="default">
          <name>Hash Count</name>
          <t>The number of hashes in the Manifest can be variable (3-9). An easy way to determine the number of hashes is to take the length of the data between the end of the <tt>UA DRIP Entity Tag</tt> and <tt>Not Before Timestamp by UA</tt> and divide it by the hash length (12). If this value is not rational, the message is invalid.</t>
        </section>
        <section anchor="hash-op" numbered="true" toc="default">
          <name>Message Hash Algorithms and Operation</name>
          <t>The hash algorithm used for the Manifest Message is the same hash algorithm used in creation of the DET <xref target="drip-rid" format="default"/> that is signing the Manifest.</t>
          <t>An DET using cSHAKE128 <xref target="NIST.SP.800-185" format="default"/> computes the hash as follows:</t>
          <artwork name="" type="" align="left" alt=""><![CDATA[
cSHAKE128(ASTM Message, 96, "", "Remote ID Auth Hash")
]]></artwork>
          <ul empty="true" spacing="normal">
            <li>
              <ul empty="true" spacing="normal">
                <li>Informative Note: <xref target="drip-rid" format="default"/> specifies cSHAKE128 but is open for the expansion of other OGAs.</li>
              </ul>
            </li>
          </ul>
          <section anchor="legacy-transport-hashing" numbered="true" toc="default">
            <name>Legacy Transport Hashing</name>
            <t>Under this transport DRIP hashes the full ASTM Message being sent over the Bluetooth Advertising frame. For Authentication Messages all the Authentication Message Pages are concatenated together and hashed as one object. For all other Message Types the 25-byte message is hashed.</t>
          </section>
          <section anchor="extended-transport-hashing" numbered="true" toc="default">
            <name>Extended Transport Hashing</name>
            <t>Under this transport DRIP hashes the full ASTM Message Pack (Message Type 0xF) - regardless of its content.</t>
          </section>
        </section>
        <section anchor="block-hashes" numbered="true" toc="default">
          <name>Pseudo-Blockchain Hashes</name>
          <t>Two special hashes are included in all Manifest messages; a previous manifest hash, which links to the previous manifest message, as well as a current manifest hash. This gives a pseudo-blockchain provenance to the manifest message that could be traced back if the observer was present for extended periods of time.</t>
          <dl newline="false" spacing="normal">
            <dt>Creation:</dt>
            <dd>
  During creation and signing of this message format this field MUST be set to 0. So the signature will be based on this field being 0, as well as its own hash. It is an open question of if we compute the hash, then sign or sign then compute.</dd>
            <dt>Cycling:</dt>
            <dd>
  There a few different ways to cycle this message. We can "roll up" the hash of 'current' to 'previous' when needed or to completely recompute the hash. This mostly depends on the previous note.</dd>
          </dl>
        </section>
        <section anchor="manifest-limitations" numbered="true" toc="default">
          <name>Manifest Limitations</name>
          <t>A potential limitation to this format is dwell time of the UA. If the UA is not sticking to a general area then most likely the Observer will not obtain many (if not all) of the messages in the manifest. Examples of such scenarios include delivery or survey UA.</t>
        </section>
      </section>
      <section anchor="drip-frame" numbered="true" toc="default">
        <name>DRIP Frame</name>
        <t>This SAM Type is for when the authentication data does not fit in other defined formats under DRIP and is reserved for future expansion under DRIP if required. This SAM Type MUST use the Broadcast Attestation Structure (<xref target="bas" format="default"/>).</t>
        <figure anchor="frame-fig">
          <name>DRIP Frame</name>
          <artwork align="center" name="" type="" alt=""><![CDATA[
 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
+---------------+---------------+---------------+---------------+
|                                                               |
|                              UA                               |
|                        DRIP Entity Tag                        |
|                                                               |
+---------------+---------------+---------------+---------------+
|  Frame Type   |                                               |
+---------------+                                               .
.                     Frame Attestation Data                    .
.                                                               .
|                                                               |
+---------------+---------------+---------------+---------------+
|                   Not Before Timestamp by UA                  |
+---------------+---------------+---------------+---------------+
|                    Not After Timestamp by UA                  |
+---------------+---------------+---------------+---------------+
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                          UA Signature                         |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+
]]></artwork>
        </figure>
        <section anchor="frame-type" numbered="true" toc="default">
          <name>Frame Type</name>
          <t>Byte to sub-type for future different DRIP Frame formats. It takes the first byte of <tt>Attestation Data</tt> in <xref target="bas" format="default"/> leaving 111-bytes for <tt>Frame Attestation Data</tt>.</t>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Frame Type</th>
                <th align="left">Name</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0x00</td>
                <td align="left">Reserved</td>
                <td align="left">Reserved</td>
              </tr>
              <tr>
                <td align="left">0xC0-0xFF</td>
                <td align="left">Experimental</td>
                <td align="left">Experimental Use</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
    <section anchor="reqs" numbered="true" toc="default">
      <name>Requirements &amp; Recommendations</name>
      <section anchor="legacy-transports" numbered="true" toc="default">
        <name>Legacy Transports</name>
        <t>With Legacy Advertisements the goal is to attempt to bring reliable receipt of the paged Authentication Message. FEC (<xref target="fec-details" format="default"/>) MUST be used, per mandated RID rules (for example the US FAA RID Rule <xref target="FAA-14CFR" format="default"/>), when using Legacy Advertising methods (such as Bluetooth 4.x).</t>
        <t>Under ASTM Bluetooth 4.x rules, transmission of dynamic messages is at least every 1 second. DRIP Authentication Messages typically contain dynamic data (such as the DRIP Manifest or DRIP Wrapper) and should be sent at the dynamic rate of 1 per second.</t>
      </section>
      <section anchor="extended-transports" numbered="true" toc="default">
        <name>Extended Transports</name>
        <t>Under the ASTM specification, Bluetooth 5.x, Wi-Fi NaN, and Wi-Fi BEACON transport of RID is to use the Message Pack (Message Type 0xF) format for all transmissions. Under Message Pack messages are sent together (in Message Type order) in a single Bluetooth 5.x extended frame (up to 9 single frame equivalent messages under Bluetooth 4). Message Packs are required by ASTM to be sent at a rate of 1 per second (like dynamic messages).</t>
        <t>Without any fragmentation or loss of pages with transmission FEC (<xref target="fec-details" format="default"/>) MUST NOT be used as it is impractical.</t>
      </section>
      <section anchor="drip-recommendations" numbered="true" toc="default">
        <name>Authentication</name>
        <t>It is REQUIRED that a UA send the following Authentication Formats to fulfill the requirements in <xref target="RFC9153" format="default"/>:</t>
        <ol spacing="normal" type="1"><li>SHOULD: send DRIP Link using the <tt>Broadcast Endorsement: DIME:Apex, DIME:RAA</tt> (satisfying GEN-3); at last once per 5 minutes</li>
          <li>MUST: send DRIP Link using the <tt>Broadcast Endorsement: DIME:RAA, DIME:HDA</tt>(satisfying GEN-3); at least once per 5 minutes</li>
          <li>MUST: send DRIP Link using the <tt>Broadcast Endorsement: DIME:HDA, UA</tt> (satisfying ID-5, GEN-1 and GEN-3); at least once per minute</li>
          <li>MUST: send any other DRIP Authentication Format (RECOMMENDED: DRIP Manifest or DRIP Wrapper) where the UA is dynamically signing data that is guaranteed to be unique, unpredictable and easily cross checked by the receiving device (satisfying ID-5, GEN-1 and GEN-2); at least once per 5 seconds</li>
        </ol>
      </section>
      <section anchor="operational" numbered="true" toc="default">
        <name>Operational</name>
        <t>UAS operation may impact the frequency of sending DRIP Authentication messages. Where a UA is dwelling in one location, and the channel is heavily used by other devices, "occasional" message authentication may be sufficient for an observer. Contrast this with a UA traversing an area, and then every message should be authenticated as soon as possible for greatest success as viewed by the receiver.</t>
        <t>Thus how/when these DRIP authentication messages are sent is up to each implementation. Further complication comes in contrasting Legacy and Extended Transports.  In Legacy, each message is a separate hash within the Manifest. So, again in dwelling, may lean toward occasional message authentication. In Extended Transports, the hash is over the Message Pack so only few hashes need to be in a Manifest. A single Manifest can handle a potential two Message Packs (for a full set of messages) and a DRIP Link Authentication Message for the <tt>Broadcast Endorsement: DIME, UA</tt>.</t>
        <t>A separate issue is the frequency of transmitting the DRIP Link Authentication Message for the <tt>Broadcast Endorsement: DIME, UA</tt> when using a Manifest Message. This message content is static; its hash never changes radically. The only change is the 4-byte timestamp in the Authentication Message headers. Thus, potentially, in a dwelling operation it can be sent once per minute, where its hash is in every Manifest. A receiver can cache all DRIP Link Authentication Message for the <tt>Broadcast Endorsement: DIME, UA</tt> to mitigate potential packet loss.</t>
        <t>The preferred mode of operation is to send the <tt>Broadcast Endorsement: DIME, UA</tt> every 10 seconds and Manifest messages immediately after a set of UA operation messages (e.g. Basic, Location, and System messages).</t>
        <section anchor="wrapper-operations" numbered="true" toc="default">
          <name>DRIP Wrapper</name>
          <t>The DRIP Wrapper MUST NOT be used in place of sending the ASTM messages as is. All receivers MUST be able to process all the messages specified in <xref target="F3411" format="default"/>.  Sending them within the DRIP Wrapper makes them opaque to receivers lacking support for DRIP authentication messages. Thus, messages within a Wrapper are sent twice: in the clear and authenticated within the Wrapper. The DRIP Manifest format would seem to be a more efficient use of the transport channel.</t>
          <t>The DRIP Wrapper has a specific use case for DRIP aware receivers. For receiver plotting received Location Messages (Message Type 0x2) on a map display an embedded Location Message in a DRIP Wrapper can be colored differently to signify trust in the Location data - be it current or previous Location reports that are wrapped.</t>
        </section>
      </section>
    </section>
    <section anchor="req-sum" numbered="true" toc="default">
      <name>Summary of Addressed DRIP Requirements</name>
      <t>The following <xref target="RFC9153" format="default"/> are addressed in this document:</t>
      <t>ID-5: Non-spoofability</t>
      <ul empty="true" spacing="normal">
        <li>Addressed using the DRIP Wrapper (<xref target="drip-wrapper" format="default"/>), DRIP Manifest (<xref target="drip-manifest" format="default"/>) or DRIP Frame (<xref target="drip-frame" format="default"/>).</li>
      </ul>
      <t>GEN-1: Provable Ownership</t>
      <ul empty="true" spacing="normal">
        <li>Addressed using the DRIP Link (<xref target="drip-link" format="default"/>) and DRIP Wrapper (<xref target="drip-wrapper" format="default"/>), DRIP Manifest (<xref target="drip-manifest" format="default"/>) or DRIP Frame (<xref target="drip-frame" format="default"/>).</li>
      </ul>
      <t>GEN-2: Provable Binding</t>
      <ul empty="true" spacing="normal">
        <li>Addressed using the DRIP Wrapper (<xref target="drip-wrapper" format="default"/>), DRIP Manifest (<xref target="drip-manifest" format="default"/>) or DRIP Frame (<xref target="drip-frame" format="default"/>).</li>
      </ul>
      <t>GEN-3: Provable Registration</t>
      <ul empty="true" spacing="normal">
        <li>Addressed using the DRIP Link (<xref target="drip-link" format="default"/>).</li>
      </ul>
    </section>
    <section anchor="icao-considerations" numbered="true" toc="default">
      <name>ICAO Considerations</name>
      <t>DRIP requests the following SAM Types to be allocated:</t>
      <ol spacing="normal" type="1"><li>DRIP Link</li>
        <li>DRIP Wrapper</li>
        <li>DRIP Manifest</li>
        <li>DRIP Frame</li>
      </ol>
      <!-- Author Note (atw): need help on this section; how should this be formatted? -->

</section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <section anchor="iana-drip-registry" numbered="true" toc="default">
        <name>IANA DRIP Registry</name>
        <t>This document requests a new subregistry for Frame Type under the <eref target="https://datatracker.ietf.org/doc/html/draft-ietf-drip-rid-28#section-8.2">DRIP registry</eref>.</t>
        <dl newline="false" spacing="normal">
          <dt>DRIP Frame Type:</dt>
          <dd>
  This 8-bit valued subregistry is for Frame Types in DRIP Frame Authentication Messages. Future additions to this subregistry are to be made through Expert Review (Section 4.5 of <xref target="RFC8126" format="default"/>). The following values are defined:</dd>
        </dl>
        <artwork name="" type="" align="left" alt=""><![CDATA[
| Frame Type | Name         | Description      |
| ---------- | ------------ | ---------------- |
| 0x00       | Reserved     | Reserved         |
| 0xC0-0xFF  | Experimental | Experimental Use |
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <section anchor="replay-attacks" numbered="true" toc="default">
        <name>Replay Attacks</name>
        <t>The astute reader may note that the DRIP Link messages, which are recommended to be sent, are static in nature and contain various timestamps. These DRIP Link messages can easily be replayed by an attacker who has copied them from previous broadcasts. There are two things to mitigate this in DRIP:</t>
        <ol spacing="normal" type="1"><li>If an attacker (who is smart and spoofs more than just the UAS ID/data payloads) willing replays an DRIP Link message they have in principle actually helped by ensuring the message is sent more frequently and be received by potential Observers.</li>
          <li>It is REQUIRED to send more than DRIP Link messages, specifically those that sign over changing data using the current session keypair, and those messages are sent more frequently. An UA beaconing these messages then actually signing other messages using the keypair validates the data receiver by an Observer. An UA who does not either run DRIP themselves or does not have possession of the same private key, would be clearly exposed upon signature verification.</li>
        </ol>
      </section>
      <section anchor="trust-timestamp-offsets" numbered="true" toc="default">
        <name>Trust Timestamp Offsets</name>
        <t>Note the discussion of Trust Timestamp Offsets here is in context of the DRIP Wrapper (<xref target="drip-wrapper" format="default"/>) and DRIP Manifest (<xref target="drip-manifest" format="default"/>) messages. For DRIP Link (<xref target="drip-link" format="default"/>) messages these offsets are set by the Attestor (typically a DIME) and have their own set of considerations as seen in <xref target="drip-registries" format="default"/>.</t>
        <t>The offset of the Trust Timestamp (defined as a very short Expiration Timestamp) is one that needs careful consideration for any implementation. The offset should be shorter than any given flight duration (typically less than an hour) but be long enough to be received and processed by Observers (larger than a few seconds). It recommended that 3-5 minutes should be sufficient to serve this purpose in any scenario, but is not limited by design.</t>
      </section>
    </section>
    <section anchor="acknowledgments" numbered="true" toc="default">
      <name>Acknowledgments</name>
      <ul spacing="normal">
        <li>Ryan Quigley and James Mussi of AX Enterprize, LLC for early prototyping to find holes in the draft specifications.</li>
        <li>Soren Friis for pointing out that Wi-Fi implementations would not always give access to the MAC Address, originally used in calculation of the hashes for DRIP Manifest. Also, for confirming that Message Packs (0xF) can only carry up to 9 ASTM frames worth of data (9 Authentication pages) - this drove the requirement for maximum page length of Authentication Data itself.</li>
        <li>Many thanks to Rick Salz for the secdir review.</li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC9153" target="https://www.rfc-editor.org/info/rfc9153">
          <front>
            <title>Drone Remote Identification Protocol (DRIP) Requirements and Terminology</title>
            <author fullname="S. Card" initials="S." role="editor" surname="Card">
              <organization/>
            </author>
            <author fullname="A. Wiethuechter" initials="A." surname="Wiethuechter">
              <organization/>
            </author>
            <author fullname="R. Moskowitz" initials="R." surname="Moskowitz">
              <organization/>
            </author>
            <author fullname="A. Gurtov" initials="A." surname="Gurtov">
              <organization/>
            </author>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document defines terminology and requirements for solutions produced by the Drone Remote Identification Protocol (DRIP) Working Group. These solutions will support Unmanned Aircraft System Remote Identification and tracking (UAS RID) for security, safety, and other purposes (e.g., initiation of identity-based network sessions supporting UAS applications). DRIP will facilitate use of existing Internet resources to support RID and to enable enhanced related services, and it will enable online and offline verification that RID information is trustworthy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9153"/>
          <seriesInfo name="DOI" value="10.17487/RFC9153"/>
        </reference>
        <reference anchor="drip-arch" target="https://www.ietf.org/archive/id/draft-ietf-drip-arch-27.txt">
          <front>
            <title>Drone Remote Identification Protocol (DRIP) Architecture</title>
            <author fullname="Stuart W. Card">
              <organization>AX Enterprize</organization>
            </author>
            <author fullname="Adam Wiethuechter">
              <organization>AX Enterprize</organization>
            </author>
            <author fullname="Robert Moskowitz">
              <organization>HTT Consulting</organization>
            </author>
            <author fullname="Shuai Zhao">
              <organization>Intel</organization>
            </author>
            <author fullname="Andrei Gurtov">
              <organization>Linköping University</organization>
            </author>
            <date day="4" month="August" year="2022"/>
            <abstract>
              <t>   This document describes an architecture for protocols and services to
   support Unmanned Aircraft System (UAS) Remote Identification (RID)
   and tracking, plus UAS RID-related communications.  This architecture
   adheres to the requirements listed in the DRIP Requirements document
   (RFC9153).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-drip-arch-27"/>
        </reference>
        <reference anchor="F3411">
          <front>
            <title>F3411-22a: Standard Specification for Remote ID and Tracking</title>
            <author>
              <organization/>
            </author>
            <date year="2022" month="July"/>
          </front>
        </reference>
        <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 fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="NIST.SP.800-185" target="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-185.pdf">
          <front>
            <title>SHA-3 derived functions: cSHAKE, KMAC, TupleHash and ParallelHash</title>
            <author fullname="John Kelsey" surname="Kelsey">
              <organization>Information Technology Laboratory</organization>
            </author>
            <author fullname="Shu-jen Change" surname="Change">
              <organization>Information Technology Laboratory</organization>
            </author>
            <author fullname="Ray Perlner" surname="Perlner">
              <organization>Information Technology Laboratory</organization>
            </author>
            <author>
              <organization abbrev="NIST">National Institute of Standards and Technology</organization>
              <address>
                <postal>
                  <country>US</country>
                  <city>Gaithersburg</city>
                </postal>
              </address>
            </author>
            <date month="December" year="2016"/>
          </front>
          <seriesInfo name="NIST Special Publications (General)" value="800-185"/>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-185"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="drip-rid" target="https://www.ietf.org/archive/id/draft-ietf-drip-uas-rid-01.txt">
          <front>
            <title>UAS Remote ID</title>
            <author fullname="Robert Moskowitz">
              <organization>HTT Consulting</organization>
            </author>
            <author fullname="Stuart W. Card">
              <organization>AX Enterprize</organization>
            </author>
            <author fullname="Adam Wiethuechter">
              <organization>AX Enterprize</organization>
            </author>
            <author fullname="Andrei Gurtov">
              <organization>Linköping University</organization>
            </author>
            <date day="9" month="September" year="2020"/>
            <abstract>
              <t>   This document describes the use of Hierarchical Host Identity Tags
   (HHITs) as a self-asserting and thereby trustable Identifier for use
   as the UAS Remote ID.  HHITs include explicit hierarchy to provide
   Registrar discovery for 3rd-party ID attestation.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-drip-uas-rid-01"/>
        </reference>
        <reference anchor="drip-registries" target="https://www.ietf.org/archive/id/draft-ietf-drip-registries-05.txt">
          <front>
            <title>DRIP Entity Tag (DET) Registration &amp; Lookup</title>
            <author fullname="Adam Wiethuechter">
              <organization>AX Enterprize, LLC</organization>
            </author>
            <author fullname="Stuart Card">
              <organization>AX Enterprize, LLC</organization>
            </author>
            <author fullname="Robert Moskowitz">
              <organization>HTT Consulting</organization>
            </author>
            <author fullname="Jim Reid">
              <organization>RTFM llp</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   This document details the required mechanisms for the registration
   and discovery of DRIP Entity Tags (DETs).  The registration process
   relies upon the Extensible Provisioning Protocol (EPP).  The
   discovery process leverages DNS, DNSSEC, and related technology.  The
   lookup process relies upon the Registration Data Access Protocol
   (RDAP).  The DETs can be registered with as their "raw public keys"
   or in X.509 certificates.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-drip-registries-05"/>
        </reference>
        <reference anchor="FAA-14CFR" target="https://www.govinfo.gov/content/pkg/FR-2021-01-15/pdf/2020-28948.pdf">
          <front>
            <title>Remote Identification of Unmanned Aircraft</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="January"/>
          </front>
        </reference>
        <reference anchor="VOYAGER" target="https://trs.jpl.nasa.gov/bitstream/handle/2014/34531/94-0881.pdf">
          <front>
            <title>Reed-Solomon Codes and the Exploration of the Solar System</title>
            <author>
              <organization/>
            </author>
            <date year="1993" month="August"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="appendix-a" numbered="true" toc="default">
      <name>Authentication State Diagrams &amp; Color Scheme</name>
      <t>ASTM Authentication has only 3 states: None, Invalid or Valid. This is because under ASTM the idea is that Authentication is done by an external service hosted somewhere on the Internet so it is assumed you will always get some sort of answer back. With DRIP this classification becomes more complex with the support of "offline" scenarios where the receiver does not have Internet connectivity. With the use of asymmetric keys this means the public key (PK) must somehow be obtained - <xref target="drip-registries" format="default"/> gets more into detail how these keys are stored on DNS and one reason for DRIP Authentication is to send PK's over Broadcast RID.</t>
      <t>There are two keys of interest: the PK of the UA and the PK of the DIME. This document gives a clear way to send the PK of the UA over the Broadcast RID messages. The key of the DIME can be sent over Broadcast RID using the same mechanisms (see <xref target="drip-link" format="default"/> and <xref target="drip-recommendations" format="default"/>) but is not required due to potential operational constraints of sending multiple DRIP Link messages. As such there are scenarios where you may have part of the key-chain but not all of it.</t>
      <t>The intent of this appendix is to give some kind of recommended way to classify these various states and convey it to the user through colors and state names/text.</t>
      <section anchor="state-colors" numbered="true" toc="default">
        <name>State Colors</name>
        <t>The table below lays out the RECOMMENDED colors to associate with state.</t>
        <table align="center">
          <thead>
            <tr>
              <th align="left">State</th>
              <th align="left">Color</th>
              <th align="left">Details</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">None</td>
              <td align="left">Black</td>
              <td align="left">No Authentication being received</td>
            </tr>
            <tr>
              <td align="left">Partial</td>
              <td align="left">Gray</td>
              <td align="left">Authentication being received but missing pages</td>
            </tr>
            <tr>
              <td align="left">Unsupported</td>
              <td align="left">Brown</td>
              <td align="left">Authentication Type/SAM Type of received message not supported</td>
            </tr>
            <tr>
              <td align="left">Unverifiable</td>
              <td align="left">Yellow</td>
              <td align="left">Data needed for verification missing</td>
            </tr>
            <tr>
              <td align="left">Verified</td>
              <td align="left">Green</td>
              <td align="left">Valid verification results</td>
            </tr>
            <tr>
              <td align="left">Trusted</td>
              <td align="left">Blue</td>
              <td align="left">Valid verification results and DIME is marked as trusted</td>
            </tr>
            <tr>
              <td align="left">Questionable</td>
              <td align="left">Orange</td>
              <td align="left">Inconsistent verification results</td>
            </tr>
            <tr>
              <td align="left">Unverified</td>
              <td align="left">Red</td>
              <td align="left">Invalid verification results</td>
            </tr>
            <tr>
              <td align="left">Conflicting</td>
              <td align="left">Purple</td>
              <td align="left">Inconsistent verification results and DIME is marked as trusted</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="state-diagrams" numbered="true" toc="default">
        <name>State Diagrams</name>
        <t>This section gives some RECOMMENDED state flows that DRIP should follow. Note that the state diagrams do not have all error conditions mapped.</t>
        <section anchor="notations" numbered="true" toc="default">
          <name>Notations</name>
          <figure anchor="state-notations">
            <name>Diagram Notations</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
o--------------o
|   PROCESS    |
o--------------o

+--------------+
|    STATE     |
+--------------+

 ooooo
o  N  o    Transition N
 ooooo

+----->    Transition Option False/No

----->     Transition Option True/Yes

]]></artwork>
          </figure>
        </section>
        <section anchor="general" numbered="true" toc="default">
          <name>General</name>
          <figure anchor="std-state-fig">
            <name>Standard Authentication Colors/State</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
o---------------------o      ooooo        +------+
|        Start        |---->o  1  o+----->| None |
o---------------------o      ooooo        +------+
                               |
                               v
                             ooooo        +-------------+
                            o  2  o+----->| Unsupported |
                             ooooo        +-------------+
                               |             ^
                               v             |
          +---------+        ooooo           |
          | Partial |<-----+o  3  o          |
          +---------+        ooooo           |
                               |             |
                               v             +
                             ooooo         ooooo        o-------------o
                            o  4  o------>o  5  o------>| SAM Decoder |
                             ooooo         ooooo        o-------------o
                               +
                               |
                               v
                        o------------------o
                        | AuthType Decoder |
                        o------------------o
]]></artwork>
          </figure>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Transition</th>
                <th align="left">Transition Query</th>
                <th align="left">Next State/Process/Transition (Yes, No)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">1</td>
                <td align="left">Receiving Authentication Pages?</td>
                <td align="left">2, None</td>
              </tr>
              <tr>
                <td align="left">2</td>
                <td align="left">Authentication Type Supported?</td>
                <td align="left">3, Unsupported</td>
              </tr>
              <tr>
                <td align="left">3</td>
                <td align="left">All Pages of Authentication Message Received?</td>
                <td align="left">4, Partial</td>
              </tr>
              <tr>
                <td align="left">4</td>
                <td align="left">Is Authentication Type received 5?</td>
                <td align="left">5, AuthType Decoder</td>
              </tr>
              <tr>
                <td align="left">5</td>
                <td align="left">Is SAM Type Supported?</td>
                <td align="left">SAM Decoder, Unsupported</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="drip-sam" numbered="true" toc="default">
          <name>DRIP SAM</name>
          <figure anchor="sam-state-fig">
            <name>DRIP SAM Decoder</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
o-------------o      ooooo        o-----------------------------o
| SAM Decoder |---->o  6  o------>| DRIP Wrapper/Manifest/Frame |
o-------------o      ooooo        o-----------------------------o
                       +                 |              ^
                       |                 |              |
                       v                 v              |
                o-----------o    o--------------------o |
                | DRIP Link |--->| Update State Cache | |
                o-----------o    o--------------------o |
                                   |                    |
                                   v                    |
        o--------------o         ooooo       o----------------------o
        | NOP / Return |<------+o  7  o----->| Extract Message from |
        o--------------o         ooooo       | Verification Queue   |
                                             o----------------------o
]]></artwork>
          </figure>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Transition</th>
                <th align="left">Transition Query</th>
                <th align="left">Next State/Process/Transition (Yes, No)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">6</td>
                <td align="left">Is SAM Type DRIP Link?</td>
                <td align="left">DRIP Link, DRIP Wrapper/Manifest/Frame</td>
              </tr>
              <tr>
                <td align="left">7</td>
                <td align="left">Messages in Verification Queue?</td>
                <td align="left">Extract Message from Verification Queue, NOP / Return</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="link-diagram" numbered="true" toc="default">
          <name>DRIP Link</name>
          <figure anchor="drip-link-state-fig">
            <name>DRIP Link State Decoder</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
o-----------o       ooooo         ooooo        +--------------+
| DRIP Link |----->o  8  o+----->o  9  o+----->| Unverifiable |
o-----------o       ooooo         ooooo        +--------------+
                      |             |
                      |-------------'
                      v
                    ooooo        +------------+
                   o  10 o+----->| Unverified |
                    ooooo        +------------+
                      |
                      v
                o---------------------o
                | Add UA DET/PK       |
                | to Key Cache        |
                o---------------------o
                      |
                      v
                    ooooo         +----------+
                   o  11 o+------>| Verified |
                    ooooo         +----------+
                      |              ^
                      v              |
                o-------------------------o
                | Mark UA DET/PK          |
                | as Trusted in Key Cache |
                o-------------------------o
]]></artwork>
          </figure>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Transition</th>
                <th align="left">Transition Query</th>
                <th align="left">Next State/Process/Transition (Yes, No)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">8</td>
                <td align="left">DIME DET/PK in Key Cache?</td>
                <td align="left">10, 9</td>
              </tr>
              <tr>
                <td align="left">9</td>
                <td align="left">DIME PK found Online?</td>
                <td align="left">10, Unverifiable</td>
              </tr>
              <tr>
                <td align="left">10</td>
                <td align="left">DIME Signature Verified?</td>
                <td align="left">Add UA DET/PK to Key Cache, Unverified</td>
              </tr>
              <tr>
                <td align="left">11</td>
                <td align="left">DIME DET/PK marked as Trusted in Key Cache?</td>
                <td align="left">Mark UA DET/PK as Trusted in Key Cache, Verified</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="drip-wrappermanifestframe" numbered="true" toc="default">
          <name>DRIP Wrapper/Manifest/Frame</name>
          <figure anchor="drip-state-fig">
            <name>DRIP Wrapper/Manifest/Frame State Decoder</name>
            <artwork align="center" name="" type="" alt=""><![CDATA[
o-----------------------------o         +--------------+
| DRIP Wrapper/Manifest/Frame |         | Unverifiable |
o-----------------------------o         +--------------+
           |                                   ^
           v                                   |
         ooooo         ooooo        o--------------------o
        o  12 o+----->o  13 o+----->| Add Message to     |
         ooooo         ooooo        | Verification Queue |
           |             |          o--------------------o
           |             |                    
           |-------------'             
           v                           
         ooooo         ooooo         ooooo        +------------+
        o  14 o+----->o  15 o+----->o  16 o+----->| Unverified |
         ooooo         ooooo         ooooo        +------------+
           |             |             |
           v             v             |
         ooooo        +-------------+  |
        o  17 o+----->| Conflicting |  |
         ooooo        +-------------+  |
           |                           |
           v                           v
         ooooo                  +--------------+
        o  18 o---------------->| Questionable |
         ooooo                  +--------------+
           +
           |
           v
         ooooo        +----------+
        o  19 o+----->| Verified |
         ooooo        +----------+
           |
           v
        +---------+
        | Trusted |
        +---------+
]]></artwork>
          </figure>
          <table align="center">
            <thead>
              <tr>
                <th align="left">Transition</th>
                <th align="left">Transition Query</th>
                <th align="left">Next State/Process/Transition (Yes, No)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">12</td>
                <td align="left">UA DET/PK in Key Cache?</td>
                <td align="left">14, 13</td>
              </tr>
              <tr>
                <td align="left">13</td>
                <td align="left">UA PK found Online?</td>
                <td align="left">14, Add Message to Verification Queue</td>
              </tr>
              <tr>
                <td align="left">14</td>
                <td align="left">UA Signature Verified?</td>
                <td align="left">17, 15</td>
              </tr>
              <tr>
                <td align="left">15</td>
                <td align="left">Has past Messages of this type been marked as Trusted?</td>
                <td align="left">Conflicting, 16</td>
              </tr>
              <tr>
                <td align="left">16</td>
                <td align="left">Has past Messages of this type been marked as Questionable or Verified?</td>
                <td align="left">Questionable, Unverified</td>
              </tr>
              <tr>
                <td align="left">17</td>
                <td align="left">Has past Messages of this type been marked as Conflicting?</td>
                <td align="left">Conflicting, 18</td>
              </tr>
              <tr>
                <td align="left">18</td>
                <td align="left">Has past Messages of this type been marked as Questionable or Unverified?</td>
                <td align="left">Questionable, 19</td>
              </tr>
              <tr>
                <td align="left">19</td>
                <td align="left">Is UA DET/PK marked as Trusted in Key Cache?</td>
                <td align="left">Trusted, Verified</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
    </section>
    <section anchor="link-example" numbered="true" toc="default">
      <name>Broadcast Endorsement: DIME, UA</name>
      <figure anchor="b-axy-fig">
        <name>Example DRIP Broadcast Endorsement: DIME, UA</name>
        <artwork align="center" name="" type="" alt=""><![CDATA[
 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
+---------------+---------------+---------------+---------------+
|                                                               |
|                             DRIP                              |
|                      Entity Tag of DIME                       |
|                                                               |
+---------------+---------------+---------------+---------------+
|                                                               |
|                             DRIP                              |
|                       Entity Tag of UA                        |
|                                                               |
+---------------+---------------+---------------+---------------+
|                                                               |
|                                                               |
|                                                               |
|                      Host Identity of UA                      |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+
|                  Not Before Timestamp by DIME                 |
+---------------+---------------+---------------+---------------+
|                   Not After Timestamp by DIME                 |
+---------------+---------------+---------------+---------------+
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                      Signature by DIME                        |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
+---------------+---------------+---------------+---------------+

DRIP Entity Tag of DIME: (16-bytes)
    DET of DIME.

DRIP Entity Tag of UA: (16-bytes)
    DET of UA.

Host Identity of UA: (32-bytes)
    HI of UA

Expiration Timestamp by DIME (4 bytes):
    Timestamp denoting recommended time to trust data to.

Signing Timestamp by DIME (4 bytes):
    Current time at signing.

DIME Signature (64 bytes):
    Signature over preceding fields using the keypair of 
    the DIME.
]]></artwork>
      </figure>
    </section>
    <section anchor="appendix-c" numbered="true" toc="default">
      <name>Example TX/RX Flow</name>
      <t>In this example the UA is sending all DRIP Authentication Message formats (DRIP Link, DRIP Wrapper and DRIP Manifest) during flight, along with standard ASTM Messages. The objective is to show the combinations of messages that must be received to properly validate a DRIP equipped UA and examples of their various states (as described in <xref target="appendix-a" format="default"/>).</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
        +-------------------+
  .-----| Unmanned Aircraft |-----.
  |     +-------------------+     |
  | 1       | 2         | 3       | 4
  |         |           |         |

  O         O           O         O
--|--     --|--       --|--     --|--
 / \       / \         / \       / \
  A         B           C         D


Broadcast Paths: Messages Received
1: DRIP Link
2: DRIP Link and DRIP Wrapper or DRIP Manifest
3: DRIP Wrapper or DRIP Manifest
4: None

Observers: Authentication State
A: Unverifiable
B: Verified, Trusted, Unverified, Questionable, or Conflicting
C: Unverifiable
D: None
]]></artwork>
      <t>As the above example shows to properly authenticate both a DRIP Link and a DRIP Wrapper or DRIP Manifest are required.</t>
    </section>
    <section anchor="fec-examples" numbered="true" toc="default">
      <name>FEC Examples</name>
      <section anchor="page-example" numbered="true" toc="default">
        <name>Multiple Page: Page Recovery</name>
        <t>The following example is an Authentication Message with 7 pages that 3 pages of parity are to be generated for. The first column is just the <tt>Page Header</tt> with a visual space here to show the boundary.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
50 098960bf8c05042001001000a00145aac6b00abba268b7
51 2001001000a0014579d8a404d48f2ef9bb9a4470ada5b4
52 ff1352c7402af9d9ebd20034e8d7a12920f4d7e91c1a73
53 dca7d04e776150825863c512c6eb075a206a95c59b297e
54 f2935fd416f27b1b42fd5d9dfaa0dec79f32287f41b454
55 7101415def153a770d3e6c0b17ae560809bc634a822c1f
56 3b1064b80a000000000000000000000000000000000000
]]></artwork>
        <t>For Page Recovery the first column is ignored and the last 23-bytes of each page are extracted to have Reed Solomon performed on them in a column wise fashion to produce parity bytes. This can be considered a form of interleaving that takes advantage of the fixed page length. For the example the following 3-bytes of parity are generated with the first byte of each page:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
dc6c02 = ReedSolomon.encoder(0920ffdcf2713b)
]]></artwork>
        <t>Each set of parity is the placed into a pseudo-frame as follows (each byte in its own message in the same column). Below is an example of the full parity generated and each 23-bytes of parity added into the additional pages as <tt>Additional Data</tt>:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
57 dc6657acd30b2ec4aa582049f52adf9f922e62c469563a
58 6c636a59145a55417a3895fd543f19e94200be4abc5e94
59 02bba5e28f5896d754caf50016a983993b149b5c9e6eeb
]]></artwork>
      </section>
      <section anchor="frame-example" numbered="true" toc="default">
        <name>Multiple Page: Frame Recovery</name>
        <t>Below is an example of a number of messages. The first column is an additional ASTM Header that contain the Message Type; with a visual space for clarity. The last 24-bytes are the actual message contents; be it location information or an Authentication Page.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
10 42012001001000a0014579d8a404d48f2ef9000000000000
11 249600006efeb019ee111ed37a097a0948081c10ffff0000
12 50098960bf8c05042001001000a00145aac6b00abba268b7
12 512001001000a0014579d8a404d48f2ef9bb9a4470ada5b4
12 52ff1352c7402af9d9ebd20034e8d7a12920f4d7e91c1a73
12 53dca7d04e776150825863c512c6eb075a206a95c59b297e
12 54f2935fd416f27b1b42fd5d9dfaa0dec79f32287f41b454
12 557101415def153a770d3e6c0b17ae560809bc634a822c1f
12 563b1064b80a000000000000000000000000000000000000
13 0052656372656174696f6e616c2054657374000000000000
14 02c2ffb019322d1ed3010000c008e40700fc080000000000
15 004e2e4f5031323334353600000000000000000000000000
]]></artwork>
        <t>A similar process is followed as in <xref target="enc-page" format="default"/>. Here every column of bytes has parity generated for it (even the ASTM Header). In the below example 5-bytes of parity are generated using the ASTM Header column:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
6c3f42b8a8 = ReedSolomon.encoder(101112121212121212131415)
]]></artwork>
        <t>After doing this to all columns the following pseudo-frames would have been generated:</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
6c86337bf7ab746f5d62bb7f8de954104b121585d3975f6e92
3f06c1bce165b0e25930d57a63c24f751145e1dd8dc115029b
42e9979580327a6a14d421c12a33aa2e1a2e517daaee581016
b8012a7b3964f7b2720d387bfa77e945556f1831cd477ef3a3
a85bb403aada89926fb8fc2a14a9caacb4ec2f3a6ed2d8e9f9
]]></artwork>
        <t>These 25-byte chunks are now concatenated together and are placed in Authentication Pages, using the <tt>Additional Data</tt>, 23-bytes at a time. In the below figure the first column is the ASTM Header as before, the second column is the <tt>Page Header</tt> for each Authentication Page and then last column is the 23-bytes of data for each page.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
12 57 6c86337bf7ab746f5d62bb7f8de954104b121585d3975f
12 58 6e923f06c1bce165b0e25930d57a63c24f751145e1dd8d
12 59 c115029b42e9979580327a6a14d421c12a33aa2e1a2e51
12 5a 7daaee581016b8012a7b3964f7b2720d387bfa77e94555
12 5b 6f1831cd477ef3a3a85bb403aada89926fb8fc2a14a9ca
12 5c acb4ec2f3a6ed2d8e9f900000000000000000000000000
]]></artwork>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
u3x/TxFXgCsKBOHbH45Xdx6ZUsQ6+Q2elC178R6I36D8FUy8CruY8hLeEMxt
TamW+gvVY117iU+5MrVXQxMwVmecbRgl00yz84MnotRSLqTq3fRTMTEak8MA
bLiZeaYJFjhdeaEJy/fP1nYth4NhisFZUsZKa3MKzKa7OyoxZdNI7MVgxaXh
3UlTUiOauu3bCP0fQX5NAYQc10dD1eX3FN6FZrDmjp6x674z+SWeD8rGV7qS
hMbZtnK7LNdwUlGDCvqZR+t3nOdf4/1C41+CImSQclVEfkqInyjPpAtFtj6Z
F+QaOJ8NugRjHdzwHS4GHlLBpiC8CZKCMl4k/jP6KE42cRd2VKPBOTz4YVtO
nGxqILk7FLNonSo2xGNmLmWtz0yOW8W3xueNK3c2GpUvN584vKvfcsYkZxeD
U8Uhy7mzeerXTbVl3lwop1dNxZSdzMnvM8eoxzhN0GO1plpcR72jQ9gfdl3B
VYxsVnwIeyMhIHM4EVcUgyfbaN2Dcolcxor4DCuoouoVXiAmOY3E353ZLPbg
KtNUk4DckaVqsLx2/1x+xzU+qQIDRbbaEmYuftV4NCmsVeZg5uvHyJl0qhK2
+eLesnEm7GdLrH4LaHiXkKvw2btdM2DdGOqWXMYSp3Wseh/V0yCPpgoDHuGP
lynvzd6PgM80o8+4kjtfnH9UrymQAKtdnErRD3HGRmZwohYbCQavrMQdonvX
uK5topw5pk1sKnO1NmwR2W2pqqMVP19a9+GSeS2btDtbVOI8TNXiDQzSLxNs
QoYid6IoVTLNUOfkcsWuaiNOUALZRml01Bh2sD9yPsyVqxPrTpUwPA4msyEo
sxWSN9UQ+XTacvgS9nWrFrlehmlbCosJ3sRhbcJduPw6lspOAibfK418gTm1
RPOa+j6G1v1YlGkQT5exLYBRF8tmnb42KM1FYldie/D0YFQPHyMKuauNtqMV
ON+wrIbjQbjsS3K/ALuOYfCEpYdz+BXOVHOxV7qJqQaIlTWsVbZmb81uU6zL
v4wl8i132Hw/Pn353ovy8neNw4DaEgaU6XlKRWQzLRjHCCVXx7Iccj1o2fxM
lhX1j43oNqw/kA4PE6xHJ2XH7ENd3pKKOukrYjzIaGUQebMeKxwnnEpAGdbp
N6XCQir/7kKEOWKfhSHX8OWgYpZDt3j5wDVL3f1okKy/xMPqvPSSXMzBqfLC
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
uqOXpqqO/LZxxf8H56fYst5GAQA=

-->

</rfc>
