| rfc9575-usestt.txt | rfc9575.txt | |||
|---|---|---|---|---|
| skipping to change at line 352 ¶ | skipping to change at line 352 ¶ | |||
| +---------------+ | | +---------------+ | | |||
| | | | | | | |||
| | | | | | | |||
| | Authentication Payload | | | Authentication Payload | | |||
| | | | | | | |||
| | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| Figure 1: Standard ASTM Authentication Message Page | Figure 1: Standard ASTM Authentication Message Page | |||
| Page Header: (1 octet) | _Page Header_: (1 octet) | |||
| Authentication Type (4 bits) and Page Number (4 bits) | Authentication Type (4 bits) and Page Number (4 bits) | |||
| Authentication Payload: (23 octets per page) | _Authentication Payload_: (23 octets per page) | |||
| Authentication Payload, including headers. Null padded. See | Authentication Payload, including headers. Null padded. See | |||
| Section 3.2.2. | Section 3.2.2. | |||
| The Authentication Message is structured as a set of pages per | The Authentication Message is structured as a set of pages per | |||
| Figure 1. There is a technical maximum of 16 pages (indexed 0 to 15) | Figure 1. There is a technical maximum of 16 pages (indexed 0 to 15) | |||
| that can be sent for a single Authentication Message, with each page | that can be sent for a single Authentication Message, with each page | |||
| carrying a maximum 23-octet Authentication Payload. See | carrying a maximum 23-octet _Authentication Payload_. See | |||
| Section 3.2.4 for more details. Over Legacy Transports, these | Section 3.2.4 for more details. Over Legacy Transports, these | |||
| messages are "fragmented", with each page sent in a separate Legacy | messages are "fragmented", with each page sent in a separate Legacy | |||
| Transport frame. | Transport frame. | |||
| Either as a single Authentication Message or a set of fragmented | Either as a single Authentication Message or a set of fragmented | |||
| Authentication Message Pages, the structure is further wrapped by | Authentication Message Pages, the structure is further wrapped by | |||
| outer ASTM framing and the specific link framing. | outer ASTM framing and the specific link framing. | |||
| 3.2.2. Authentication Payload Field | 3.2.2. Authentication Payload Field | |||
| Figure 2 is the source data view of the data fields found in the | Figure 2 is the source data view of the data fields found in the | |||
| Authentication Message as defined by [F3411]. This data is placed | Authentication Message as defined by [F3411]. This data is placed | |||
| into the Authentication Payload shown in Figure 1, which spans | into the _Authentication Payload_ shown in Figure 1, which spans | |||
| multiple Authentication Pages. | multiple _Authentication Pages_. | |||
| 0 1 2 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 | 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 Headers | | |||
| | +---------------+---------------+ | | +---------------+---------------+ | |||
| | | | | | | | | |||
| +---------------+---------------+ | | +---------------+---------------+ | | |||
| . . | . . | |||
| . Authentication Data / Signature . | . Authentication Data / Signature . | |||
| skipping to change at line 402 ¶ | skipping to change at line 402 ¶ | |||
| | ADL | | | | ADL | | | |||
| +---------------+ | | +---------------+ | | |||
| . . | . . | |||
| . Additional Data . | . Additional Data . | |||
| . . | . . | |||
| | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| Figure 2: ASTM Authentication Message Fields | Figure 2: ASTM Authentication Message Fields | |||
| Authentication Headers: (6 octets) | _Authentication Headers_: (6 octets) | |||
| As defined in [F3411]. | As defined in [F3411]. | |||
| Authentication Data / Signature: (0 to 255 octets) | _Authentication Data / Signature_: (0 to 255 octets) | |||
| Opaque authentication data. The length of this payload is known | Opaque authentication data. The length of this payload is known | |||
| through a field in the Authentication Headers (defined in | through a field in the _Authentication Headers_ (defined in | |||
| [F3411]). | [F3411]). | |||
| Additional Data Length (ADL): (1 octet - unsigned) | _Additional Data Length (ADL)_: (1 octet - unsigned) | |||
| Length in octets of Additional Data. The value of ADL is | Length in octets of _Additional Data_. The value of _ADL_ is | |||
| calculated as the minimum of 361 - Authentication Data / Signature | calculated as the minimum of 361 - Authentication Data / Signature | |||
| Length and 255. Only present with Additional Data. | Length and 255. Only present with _Additional Data_. | |||
| Additional Data: (ADL octets) | _Additional Data:_ (_ADL_ octets) | |||
| Data that follows the Authentication Data / Signature but is not | Data that follows the _Authentication Data / Signature_ but is not | |||
| considered part of the Authentication Data, and thus is not | considered part of the _Authentication Data_, and thus is not | |||
| covered by a signature. For DRIP, this field is used to carry | covered by a signature. For DRIP, this field is used to carry | |||
| Forward Error Correction (FEC) generated by transmitters and | Forward Error Correction (FEC) generated by transmitters and | |||
| parsed by receivers as defined in Section 5. | parsed by receivers as defined in Section 5. | |||
| 3.2.3. SAM Data Format | 3.2.3. SAM Data Format | |||
| Figure 3 is the general format to hold authentication data when using | Figure 3 is the general format to hold authentication data when using | |||
| SAM and is placed inside the Authentication Data / Signature field in | SAM and is placed inside the _Authentication Data / Signature_ field | |||
| Figure 2. | in Figure 2. | |||
| 0 1 2 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 | 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 Type | | | |||
| +---------------+ | | +---------------+ | | |||
| . . | . . | |||
| . SAM Authentication Data . | . SAM Authentication Data . | |||
| . . | . . | |||
| | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| Figure 3: SAM Data Format | Figure 3: SAM Data Format | |||
| SAM Type: (1 octet) | _SAM Type_: (1 octet) | |||
| The following SAM Types are allocated to DRIP: | The following SAM Types are allocated to DRIP: | |||
| +==========+=============================+ | +==========+=============================+ | |||
| | SAM Type | Description | | | SAM Type | Description | | |||
| +==========+=============================+ | +==========+=============================+ | |||
| | 0x01 | DRIP Link (Section 4.2) | | | 0x01 | DRIP Link (Section 4.2) | | |||
| +----------+-----------------------------+ | +----------+-----------------------------+ | |||
| | 0x02 | DRIP Wrapper (Section 4.3) | | | 0x02 | DRIP Wrapper (Section 4.3) | | |||
| +----------+-----------------------------+ | +----------+-----------------------------+ | |||
| skipping to change at line 470 ¶ | skipping to change at line 470 ¶ | |||
| Table 1: DRIP SAM Types | Table 1: DRIP SAM Types | |||
| | Note: ASTM International is the owner of these code points as | | Note: ASTM International is the owner of these code points as | |||
| | they are defined in [F3411]. In accordance with Annex 5 of | | they are defined in [F3411]. In accordance with Annex 5 of | |||
| | [F3411], the International Civil Aviation Organization (ICAO) | | [F3411], the International Civil Aviation Organization (ICAO) | |||
| | has been selected by ASTM as the registrar to manage | | has been selected by ASTM as the registrar to manage | |||
| | allocations of these code points. The list is available at | | allocations of these code points. The list is available at | |||
| | [ASTM-Remote-ID]. | | [ASTM-Remote-ID]. | |||
| SAM Authentication Data: (0 to 200 octets) | _SAM Authentication Data_: (0 to 200 octets) | |||
| Contains opaque authentication data formatted as defined by the | Contains opaque authentication data formatted as defined by the | |||
| preceding SAM Type. | preceding SAM Type. | |||
| 3.2.4. ASTM Broadcast RID Constraints | 3.2.4. ASTM Broadcast RID Constraints | |||
| 3.2.4.1. Wireless Frame Constraints | 3.2.4.1. Wireless Frame Constraints | |||
| A UA has the option to broadcast using Bluetooth (4.x and 5.x), Wi-Fi | A UA has the option to broadcast using Bluetooth (4.x and 5.x), Wi-Fi | |||
| NAN, or IEEE 802.11 Beacon; see Section 6. With Bluetooth, FAA and | NAN, or IEEE 802.11 Beacon; see Section 6. With Bluetooth, FAA and | |||
| skipping to change at line 522 ¶ | skipping to change at line 522 ¶ | |||
| To keep consistent formatting across the different transports (Legacy | To keep consistent formatting across the different transports (Legacy | |||
| and Extended) and their independent restrictions, the authentication | and Extended) and their independent restrictions, the authentication | |||
| data being sent is REQUIRED to fit within the page limit that the | data being sent is REQUIRED to fit within the page limit that the | |||
| most constrained existing transport can support. Under Broadcast | most constrained existing transport can support. Under Broadcast | |||
| RID, the Extended Transport that can hold the least amount of | RID, the Extended Transport that can hold the least amount of | |||
| authentication data is Bluetooth 5.x at 9 pages. | authentication data is Bluetooth 5.x at 9 pages. | |||
| As such, DRIP transmitters are REQUIRED to adhere to the following | As such, DRIP transmitters are REQUIRED to adhere to the following | |||
| when using the Authentication Message: | when using the Authentication Message: | |||
| 1. Authentication Data / Signature data MUST fit in the first 9 | 1. _Authentication Data / Signature_ data MUST fit in the first 9 | |||
| pages (Page Numbers 0 through 8). | pages (Page Numbers 0 through 8). | |||
| 2. The Length field in the Authentication Headers (which encodes the | 2. The _Length_ field in the _Authentication Headers_ (which encodes | |||
| length in octets of Authentication Data / Signature only) MUST | the length in octets of _Authentication Data / Signature_ only) | |||
| NOT exceed the value of 201. This includes the SAM Type but | MUST NOT exceed the value of 201. This includes the SAM Type but | |||
| excludes Additional Data. | excludes _Additional Data_. | |||
| 3.2.4.3. Timestamps | 3.2.4.3. Timestamps | |||
| In ASTM [F3411], timestamps are a Unix-style timestamp with an epoch | In ASTM [F3411], timestamps are a Unix-style timestamp with an epoch | |||
| of 2019-01-01 00:00:00 UTC. For DRIP, this format is adopted for | of 2019-01-01 00:00:00 UTC. For DRIP, this format is adopted for | |||
| Authentication to keep a common time format in Broadcast payloads. | Authentication to keep a common time format in Broadcast payloads. | |||
| Under DRIP, there are two timestamps defined: Valid Not Before (VNB) | Under DRIP, there are two timestamps defined: Valid Not Before (VNB) | |||
| and Valid Not After (VNA). | and Valid Not After (VNA). | |||
| skipping to change at line 563 ¶ | skipping to change at line 563 ¶ | |||
| take into consideration the UA environment, propagation | take into consideration the UA environment, propagation | |||
| characteristics of the messages being sent, and clock differences | characteristics of the messages being sent, and clock differences | |||
| between the UA and Observers. For UA signatures in scenarios | between the UA and Observers. For UA signatures in scenarios | |||
| typical as of 2024, a reasonable offset would be to set VNA | typical as of 2024, a reasonable offset would be to set VNA | |||
| approximately 2 minutes after VNB; see Appendix B for examples | approximately 2 minutes after VNB; see Appendix B for examples | |||
| that may aid in tuning this value. | that may aid in tuning this value. | |||
| 4. DRIP Authentication Formats | 4. DRIP Authentication Formats | |||
| All formats defined in this section are contained in the | All formats defined in this section are contained in the | |||
| Authentication Data / Signature field in Figure 2 and use the | _Authentication Data / Signature_ field in Figure 2 and use the | |||
| Specific Authentication Method (SAM, Authentication Type 0x5). The | Specific Authentication Method (SAM, Authentication Type 0x5). The | |||
| first octet of the Authentication Data / Signature of Figure 2 is | first octet of the _Authentication Data / Signature_ of Figure 2 is | |||
| used to multiplex among these various formats. | used to multiplex among these various formats. | |||
| When sending data over a medium that does not have underlying FEC, | When sending data over a medium that does not have underlying FEC, | |||
| for example Legacy Transports, then FEC (per Section 5) MUST be used. | for example Legacy Transports, then FEC (per Section 5) MUST be used. | |||
| Examples of Link, Wrapper, and Manifest are shown as part of an | Examples of Link, Wrapper, and Manifest are shown as part of an | |||
| operational schedule in Appendix B.2.1. | operational schedule in Appendix B.2.1. | |||
| 4.1. UA-Signed Evidence Structure | 4.1. UA-Signed Evidence Structure | |||
| The UA-Signed Evidence Structure (Figure 4) is used by the UA during | The _UA-Signed Evidence Structure_ (Figure 4) is used by the UA | |||
| flight to sign over information elements using the private key | during flight to sign over information elements using the private key | |||
| associated with the current UA DET. It is encapsulated by the SAM | associated with the current UA DET. It is encapsulated by the _SAM | |||
| Authentication Data field of Figure 3. | Authentication Data_ field of Figure 3. | |||
| This structure is used by the DRIP Wrapper (Section 4.3), Manifest | This structure is used by the DRIP Wrapper (Section 4.3), Manifest | |||
| (Section 4.4), and Frame (Section 4.5). DRIP Link (Section 4.2) MUST | (Section 4.4), and Frame (Section 4.5). DRIP Link (Section 4.2) MUST | |||
| NOT use it, as it will not fit in the ASTM Authentication Message | NOT use it, as it will not fit in the ASTM Authentication Message | |||
| with its intended content (i.e., a Broadcast Endorsement). | with its intended content (i.e., a Broadcast Endorsement). | |||
| 0 1 2 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 | 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 | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| | VNB Timestamp by UA | | | VNB Timestamp by UA | | |||
| skipping to change at line 624 ¶ | skipping to change at line 624 ¶ | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| Figure 4: Endorsement Structure for UA-Signed Evidence | Figure 4: Endorsement Structure for UA-Signed Evidence | |||
| Valid Not Before (VNB) Timestamp by UA: (4 octets) | _Valid Not Before (VNB) Timestamp by UA_: (4 octets) | |||
| See Section 3.2.4.3. Set by the UA. | See Section 3.2.4.3. Set by the UA. | |||
| Valid Not After (VNA) Timestamp by UA: (4 octets) | _Valid Not After (VNA) Timestamp by UA_: (4 octets) | |||
| See Section 3.2.4.3. Set by the UA. | See Section 3.2.4.3. Set by the UA. | |||
| Evidence: (0 to 112 octets) | _Evidence_: (0 to 112 octets) | |||
| The Evidence field MUST be filled in with data in the form of an | The _Evidence_ field MUST be filled in with data in the form of an | |||
| opaque object specified in the DRIP Wrapper (Section 4.3), | opaque object specified in the DRIP Wrapper (Section 4.3), | |||
| Manifest (Section 4.4), or Frame (Section 4.5). | Manifest (Section 4.4), or Frame (Section 4.5). | |||
| UA DRIP Entity Tag: (16 octets) | _UA DRIP Entity Tag_: (16 octets) | |||
| This is a DET [RFC9374] currently being used by the UA for | This is a DET [RFC9374] currently being used by the UA for | |||
| authentication; it is assumed to be a Specific Session ID (a type | authentication; it is assumed to be a Specific Session ID (a type | |||
| of UAS ID typically also used by the UA in the Basic ID Message). | of UAS ID typically also used by the UA in the Basic ID Message). | |||
| UA Signature: (64 octets) | _UA Signature_: (64 octets) | |||
| Signature over the concatenation of preceding fields (VNB, VNA, | Signature over the concatenation of preceding fields (_VNB_, | |||
| Evidence, and UA DET) using the keypair of the UA DET. The | _VNA_, _Evidence_, and _UA DET_) using the keypair of the UA DET. | |||
| signature algorithm is specified by the Hierarchical Host Identity | The signature algorithm is specified by the Hierarchical Host | |||
| Tags (HHIT) Suite ID of the DET. | Identity Tags (HHIT) Suite ID of the DET. | |||
| When using this structure, the UA is minimally self-endorsing its | When using this structure, the UA is minimally self-endorsing its | |||
| DET. The HI of the UA DET can be looked up by mechanisms described | DET. The HI of the UA DET can be looked up by mechanisms described | |||
| in [DRIP-REG] or by extracting it from a Broadcast Endorsement (see | in [DRIP-REG] or by extracting it from a Broadcast Endorsement (see | |||
| Sections 4.2 and 6.3). | Sections 4.2 and 6.3). | |||
| 4.2. DRIP Link | 4.2. DRIP Link | |||
| This SAM Type (Figure 5) is used to transmit Broadcast Endorsements. | This SAM Type (Figure 5) is used to transmit Broadcast Endorsements. | |||
| For example, the BE: HDA, UA is sent (see Section 6.3) as a DRIP Link | For example, the BE: HDA, UA is sent (see Section 6.3) as a DRIP Link | |||
| skipping to change at line 720 ¶ | skipping to change at line 720 ¶ | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| Figure 5: Broadcast Endorsement / DRIP Link | Figure 5: Broadcast Endorsement / DRIP Link | |||
| VNB Timestamp by Parent: (4 octets) | _VNB Timestamp by Parent_: (4 octets) | |||
| See Section 3.2.4.3. Set by Parent Entity. | See Section 3.2.4.3. Set by Parent Entity. | |||
| VNA Timestamp by Parent: (4 octets) | _VNA Timestamp by Parent_: (4 octets) | |||
| See Section 3.2.4.3. Set by Parent Entity. | See Section 3.2.4.3. Set by Parent Entity. | |||
| DET of Child: (16 octets) | _DET of Child_: (16 octets) | |||
| DRIP Entity Tag of Child Entity. | DRIP Entity Tag of Child Entity. | |||
| HI of Child: (32 octets) | _HI of Child_: (32 octets) | |||
| Host Identity of Child Entity. | Host Identity of Child Entity. | |||
| DET of Parent: (16 octets) | _DET of Parent_: (16 octets) | |||
| DRIP Entity Tag of Parent Entity in DIME Hierarchy. | DRIP Entity Tag of Parent Entity in DIME Hierarchy. | |||
| Signature by Parent: (64 octets) | _Signature by Parent_: (64 octets) | |||
| Signature over concatenation of preceding fields (VNB, VNA, DET of | Signature over concatenation of preceding fields (_VNB_, _VNA_, | |||
| Child, HI of Child, and DET of Parent) using the keypair of the | _DET of Child_, _HI of Child_, and _DET of Parent_) using the | |||
| Parent DET. | keypair of the Parent DET. | |||
| This DRIP Authentication Message is used in conjunction with other | This DRIP Authentication Message is used in conjunction with other | |||
| DRIP SAM Types (such as the Manifest or the Wrapper) that contain | DRIP SAM Types (such as the Manifest or the Wrapper) that contain | |||
| data (e.g., the ASTM Location/Vector Message, Message Type 0x2) that | data (e.g., the ASTM Location/Vector Message, Message Type 0x2) that | |||
| is guaranteed to be unique, unpredictable, and easily cross-checked | is guaranteed to be unique, unpredictable, and easily cross-checked | |||
| by the receiving device. | by the receiving device. | |||
| A hash of the final link (BE: HDA on UA) in the Broadcast Endorsement | A hash of the final link (BE: HDA on UA) in the Broadcast Endorsement | |||
| chain MUST be included in each DRIP Manifest (Section 4.4). | chain MUST be included in each DRIP Manifest (Section 4.4). | |||
| skipping to change at line 768 ¶ | skipping to change at line 768 ¶ | |||
| hierarchy, the parent of the UA is its HHIT Domain Authority (HDA), | hierarchy, the parent of the UA is its HHIT Domain Authority (HDA), | |||
| the parent of an HDA is its Registered Assigning Authority (RAA), | the parent of an HDA is its Registered Assigning Authority (RAA), | |||
| etc. It is also assumed that all DRIP-aware entities use a DET as | etc. It is also assumed that all DRIP-aware entities use a DET as | |||
| their identifier during interactions with other DRIP-aware entities. | their identifier during interactions with other DRIP-aware entities. | |||
| 4.3. DRIP Wrapper | 4.3. DRIP Wrapper | |||
| This SAM Type is used to wrap and sign over a list of other [F3411] | This SAM Type is used to wrap and sign over a list of other [F3411] | |||
| Broadcast RID messages. | Broadcast RID messages. | |||
| The Evidence field of the UA-Signed Evidence Structure (Section 4.1) | The _Evidence_ field of the _UA-Signed Evidence Structure_ | |||
| is populated with up to four ASTM Messages [F3411] in a contiguous | (Section 4.1) is populated with up to four ASTM Messages [F3411] in a | |||
| octet sequence. Only ASTM Message Types 0x0, 0x1, 0x3, 0x4, and 0x5 | contiguous octet sequence. Only ASTM Message Types 0x0, 0x1, 0x3, | |||
| are allowed and must be in Message Type order as defined by [F3411]. | 0x4, and 0x5 are allowed and must be in Message Type order as defined | |||
| These messages MUST include the Message Type and Protocol Version | by [F3411]. These messages MUST include the Message Type and | |||
| octet and MUST NOT include the Message Counter octet (thus are fixed | Protocol Version octet and MUST NOT include the Message Counter octet | |||
| at 25 octets in length). | (thus are fixed at 25 octets in length). | |||
| 4.3.1. Wrapped Count and Format Validation | 4.3.1. Wrapped Count and Format Validation | |||
| When decoding a DRIP Wrapper on a receiver, a calculation of the | When decoding a DRIP Wrapper on a receiver, a calculation of the | |||
| number of messages wrapped and a validation MUST be performed by | number of messages wrapped and a validation MUST be performed by | |||
| using the number of octets (defined as wrapperLength) between the VNA | using the number of octets (defined as wrapperLength) between the | |||
| Timestamp by UA and the UA DET as shown in Figure 6. | _VNA Timestamp by UA_ and the _UA DET_ as shown in Figure 6. | |||
| <CODE BEGINS> | <CODE BEGINS> | |||
| if (wrapperLength MOD 25) != 0 { | if (wrapperLength MOD 25) != 0 { | |||
| return DECODE_FAILURE; | return DECODE_FAILURE; | |||
| } | } | |||
| wrappedCount = wrapperLength / 25; | wrappedCount = wrapperLength / 25; | |||
| if (wrappedCount == 0) { | if (wrappedCount == 0) { | |||
| // DECODE_SUCCESS; treat as DRIP Wrapper over extended transport | // DECODE_SUCCESS; treat as DRIP Wrapper over extended transport | |||
| } | } | |||
| else if (wrappedCount > 4) { | else if (wrappedCount > 4) { | |||
| skipping to change at line 807 ¶ | skipping to change at line 807 ¶ | |||
| Figure 6: Pseudocode for Wrapper Validation and Number of | Figure 6: Pseudocode for Wrapper Validation and Number of | |||
| Messages Calculation | Messages Calculation | |||
| 4.3.2. Wrapper over Extended Transports | 4.3.2. Wrapper over Extended Transports | |||
| When using Extended Transports, an optimization to DRIP Wrapper can | When using Extended Transports, an optimization to DRIP Wrapper can | |||
| be made to sign over co-located data in an ASTM Message Pack (Message | be made to sign over co-located data in an ASTM Message Pack (Message | |||
| Type 0xF). | Type 0xF). | |||
| To perform this optimization, the UA-Signed Evidence Structure is | To perform this optimization, the _UA-Signed Evidence Structure_ is | |||
| filled with the ASTM Messages to be in the ASTM Message Pack, the | filled with the ASTM Messages to be in the ASTM Message Pack, the | |||
| signature is generated, and then the Evidence field is cleared, | signature is generated, and then the _Evidence_ field is cleared, | |||
| leaving the encoded form shown in Figure 7. | leaving the encoded form shown in Figure 7. | |||
| 0 1 2 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 | 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 | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| | VNB Timestamp by UA | | | VNB Timestamp by UA | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| | VNA Timestamp by UA | | | VNA Timestamp by UA | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| | | | | | | |||
| skipping to change at line 847 ¶ | skipping to change at line 847 ¶ | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| Figure 7: DRIP Wrapper over Extended Transports | Figure 7: DRIP Wrapper over Extended Transports | |||
| To verify the signature, the receiver MUST concatenate all the | To verify the signature, the receiver MUST concatenate all the | |||
| messages in the Message Pack (excluding the Authentication Message | messages in the Message Pack (excluding the Authentication Message | |||
| found in the same Message Pack) in ASTM Message Type order and set | found in the same Message Pack) in ASTM Message Type order and set | |||
| the Evidence field of the UA-Signed Evidence Structure before | the _Evidence_ field of the _UA-Signed Evidence Structure_ before | |||
| performing signature verification. | performing signature verification. | |||
| The functionality of a Wrapper in this form is equivalent to Message | The functionality of a Wrapper in this form is equivalent to Message | |||
| Set Signature (Authentication Type 0x3) when running over Extended | Set Signature (Authentication Type 0x3) when running over Extended | |||
| Transports. The Wrapper provides the same format but over both | Transports. The Wrapper provides the same format but over both | |||
| Extended and Legacy Transports, which allows the transports to be | Extended and Legacy Transports, which allows the transports to be | |||
| similar. Message Set Signature also implies using the ASTM validator | similar. Message Set Signature also implies using the ASTM validator | |||
| system architecture, which depends on Internet connectivity for | system architecture, which depends on Internet connectivity for | |||
| verification that the receiver may not have at the time an | verification that the receiver may not have at the time an | |||
| Authentication Message is received. This is something the Wrapper, | Authentication Message is received. This is something the Wrapper, | |||
| skipping to change at line 889 ¶ | skipping to change at line 889 ¶ | |||
| Wrapper (Section 4.3.3) and greatly reduce overhead. | Wrapper (Section 4.3.3) and greatly reduce overhead. | |||
| Observers MUST hash all received ASTM Messages and cross-check them | Observers MUST hash all received ASTM Messages and cross-check them | |||
| against hashes in received Manifests. | against hashes in received Manifests. | |||
| Judicious use of a Manifest enables an entire Broadcast RID message | Judicious use of a Manifest enables an entire Broadcast RID message | |||
| stream to be strongly authenticated with less than 100% overhead | stream to be strongly authenticated with less than 100% overhead | |||
| relative to a completely unauthenticated message stream (see | relative to a completely unauthenticated message stream (see | |||
| Section 6.3 and Appendix B). | Section 6.3 and Appendix B). | |||
| The Evidence field of the UA-Signed Evidence Structure (Section 4.1) | The _Evidence_ field of the _UA-Signed Evidence Structure_ | |||
| is populated with 8-octet hashes of [F3411] Broadcast RID messages | (Section 4.1) is populated with 8-octet hashes of [F3411] Broadcast | |||
| (up to 11) and three special hashes (Section 4.4.2). All of these | RID messages (up to 11) and three special hashes (Section 4.4.2). | |||
| hashes MUST be concatenated to form a contiguous octet sequence in | All of these hashes MUST be concatenated to form a contiguous octet | |||
| the Evidence field. It is RECOMMENDED that the maximum number of | sequence in the _Evidence_ field. It is RECOMMENDED that the maximum | |||
| ASTM Message Hashes used be 10 (see Appendix B.1.1.2). | number of ASTM Message Hashes used be 10 (see Appendix B.1.1.2). | |||
| The Previous Manifest Hash, Current Manifest Hash, and DRIP Link (BE: | The _Previous Manifest Hash_, _Current Manifest Hash_, and _DRIP Link | |||
| HDA, UA) Hash MUST always come before the ASTM Message Hashes as seen | (BE: HDA, UA) Hash_ MUST always come before the _ASTM Message Hashes_ | |||
| in Figure 8. | as seen in Figure 8. | |||
| An Observer MUST use the Manifest to verify each ASTM Message hashed | An Observer MUST use the Manifest to verify each ASTM Message hashed | |||
| therein that it has previously received. It can do this without | therein that it has previously received. It can do this without | |||
| having received them all. A Manifest SHOULD typically encompass a | having received them all. A Manifest SHOULD typically encompass a | |||
| single transmission cycle of messages being sent; see Section 6.4 and | single transmission cycle of messages being sent; see Section 6.4 and | |||
| Appendix B. | Appendix B. | |||
| 0 1 2 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 | 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 | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| skipping to change at line 927 ¶ | skipping to change at line 927 ¶ | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| | | | | | | |||
| . . | . . | |||
| . ASTM Message Hashes . | . ASTM Message Hashes . | |||
| . . | . . | |||
| | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| Figure 8: DRIP Manifest Evidence Structure | Figure 8: DRIP Manifest Evidence Structure | |||
| Previous Manifest Hash: (8 octets) | _Previous Manifest Hash_: (8 octets) | |||
| Hash of the previously sent Manifest Message. | Hash of the previously sent Manifest Message. | |||
| Current Manifest Hash: (8 octets) | _Current Manifest Hash_: (8 octets) | |||
| Hash of the current Manifest Message. | Hash of the current Manifest Message. | |||
| DRIP Link (BE: HDA, UA): (8 octets) | _DRIP Link (BE: HDA, UA)_: (8 octets) | |||
| Hash of the DRIP Link Authentication Message carrying BE: HDA, UA | Hash of the DRIP Link Authentication Message carrying BE: HDA, UA | |||
| (see Section 4.2). | (see Section 4.2). | |||
| ASTM Message Hash: (8 octets) | _ASTM Message Hash_: (8 octets) | |||
| Hash of a single full ASTM Message using hash operations described | Hash of a single full ASTM Message using hash operations described | |||
| in Section 4.4.3. | in Section 4.4.3. | |||
| 4.4.1. Hash Count and Format Validation | 4.4.1. Hash Count and Format Validation | |||
| When decoding a DRIP Manifest on a receiver, a calculation of the | When decoding a DRIP Manifest on a receiver, a calculation of the | |||
| number of hashes and a validation can be performed by using the | number of hashes and a validation can be performed by using the | |||
| number of octets between the UA DET and the VNB Timestamp by UA | number of octets between the _UA DET_ and the _VNB Timestamp by UA_ | |||
| (defined as manifestLength) such as shown in Figure 9. | (defined as manifestLength) such as shown in Figure 9. | |||
| <CODE BEGINS> | <CODE BEGINS> | |||
| if (manifestLength MOD 8) != 0 { | if (manifestLength MOD 8) != 0 { | |||
| return DECODE_FAILURE | return DECODE_FAILURE | |||
| } | } | |||
| hashCount = (manifestLength / 8) - 3; | hashCount = (manifestLength / 8) - 3; | |||
| <CODE ENDS> | <CODE ENDS> | |||
| Figure 9: Pseudocode for Manifest Sanity Check and Number of | Figure 9: Pseudocode for Manifest Sanity Check and Number of | |||
| Hashes Calculation | Hashes Calculation | |||
| 4.4.2. Manifest Ledger Hashes | 4.4.2. Manifest Ledger Hashes | |||
| The following three special hashes are included in all Manifests: | The following three special hashes are included in all Manifests: | |||
| * the Previous Manifest Hash links to the previous Manifest. | * the _Previous Manifest Hash_ links to the previous Manifest. | |||
| * the Current Manifest Hash is of the Manifest in which it appears. | * the _Current Manifest Hash_ is of the Manifest in which it | |||
| appears. | ||||
| * the DRIP Link (BE: HDA, UA) Hash ties the endorsed UA key to the | * the _DRIP Link (BE: HDA, UA) Hash_ ties the endorsed UA key to the | |||
| Manifest chain. | Manifest chain. | |||
| The Previous and Current hashes act as a ledger of provenance for the | The Previous and Current hashes act as a ledger of provenance for the | |||
| Manifest chain, which should be traced back if the Observer and UA | Manifest chain, which should be traced back if the Observer and UA | |||
| were within Broadcast RID wireless range of each other for an | were within Broadcast RID wireless range of each other for an | |||
| extended period of time. | extended period of time. | |||
| The DRIP Link (BE: HDA, UA) is included so there is a direct | The _DRIP Link (BE: HDA, UA)_ is included so there is a direct | |||
| signature by the UA over the Broadcast Endorsement (see Section 4.2). | signature by the UA over the Broadcast Endorsement (see Section 4.2). | |||
| Typical operation would expect that the list of ASTM Message Hashes | Typical operation would expect that the list of _ASTM Message Hashes_ | |||
| contain nonce-like data. To enforce a binding between the BE: HDA, | contain nonce-like data. To enforce a binding between the BE: HDA, | |||
| UA and avoid trivial replay attack vectors (see Section 9.1), at | UA and avoid trivial replay attack vectors (see Section 9.1), at | |||
| least one ASTM Message Hash MUST be from an [F3411] message that | least one _ASTM Message Hash_ MUST be from an [F3411] message that | |||
| satisfies the fourth requirement in Section 6.3. | satisfies the fourth requirement in Section 6.3. | |||
| 4.4.3. Hash Algorithms and Operation | 4.4.3. Hash Algorithms and Operation | |||
| The hash algorithm used for the Manifest is the same hash algorithm | The hash algorithm used for the Manifest is the same hash algorithm | |||
| used in creation of the DET [RFC9374] that is signing the Manifest. | used in creation of the DET [RFC9374] that is signing the Manifest. | |||
| This is encoded as part of the DET using the HHIT Suite ID. | This is encoded as part of the DET using the HHIT Suite ID. | |||
| DETs that use cSHAKE128 [NIST.SP.800-185] compute the hash as | DETs that use cSHAKE128 [NIST.SP.800-185] compute the hash as | |||
| follows: | follows: | |||
| cSHAKE128(ASTM Message, 64, "", "Remote ID Auth Hash") | cSHAKE128(ASTM Message, 64, "", "Remote ID Auth Hash") | |||
| For ORCHID Generation Algorithms (OGAs) other than "5" (EdDSA/ | For ORCHID Generation Algorithms (OGAs) other than "5" (EdDSA/ | |||
| cSHAKE128) [RFC9374], use the construct appropriate for the | cSHAKE128) [RFC9374], use the construct appropriate for the | |||
| associated hash. For example, the hash for "2" (ECDSA/SHA-384) is | associated hash. For example, the hash for "2" (ECDSA/SHA-384) is | |||
| computed as follows: | computed as follows: | |||
| Ltrunc( SHA-384( ASTM Message | "Remote ID Auth Hash" ), 8 ) | Ltrunc( SHA-384( ASTM Message | "Remote ID Auth Hash" ), 8 ) | |||
| When building the list of hashes, the Previous Manifest Hash is known | When building the list of hashes, the _Previous Manifest Hash_ is | |||
| from the previous Manifest. For the first built Manifest, this value | known from the previous Manifest. For the first built Manifest, this | |||
| is filled with a random nonce. The Current Manifest Hash is null | value is filled with a random nonce. The _Current Manifest Hash_ is | |||
| filled while ASTM Messages are hashed and fill the ASTM Message | null filled while ASTM Messages are hashed and fill the _ASTM Message | |||
| Hashes field. When all messages are hashed, the Current Manifest | Hashes_ field. When all messages are hashed, the _Current Manifest | |||
| Hash is computed over the Previous Manifest Hash, Current Manifest | Hash_ is computed over the _Previous Manifest Hash_, _Current | |||
| Hash (null filled), and ASTM Message Hashes. This hash value | Manifest Hash_ (null filled), and _ASTM Message Hashes_. This hash | |||
| replaces the null-filled Current Manifest Hash and becomes the | value replaces the null-filled _Current Manifest Hash_ and becomes | |||
| Previous Manifest Hash for the next Manifest. | the _Previous Manifest Hash_ for the next Manifest. | |||
| 4.4.3.1. Legacy Transport Hashing | 4.4.3.1. Legacy Transport Hashing | |||
| Under this transport, DRIP hashes the full ASTM Message being sent | Under this transport, DRIP hashes the full ASTM Message being sent | |||
| over the Bluetooth Advertising frame. This is the 25-octet object | over the Bluetooth Advertising frame. This is the 25-octet object | |||
| that starts with the Message Type and Protocol Version octet along | that starts with the Message Type and Protocol Version octet along | |||
| with the 24 octets of message data. The hash MUST NOT include the | with the 24 octets of message data. The hash MUST NOT include the | |||
| Message Counter octet. | Message Counter octet. | |||
| For paged ASTM Messages (currently only Authentication Messages), all | For paged ASTM Messages (currently only Authentication Messages), all | |||
| skipping to change at line 1034 ¶ | skipping to change at line 1035 ¶ | |||
| hashed as one object. | hashed as one object. | |||
| 4.4.3.2. Extended Transport Hashing | 4.4.3.2. Extended Transport Hashing | |||
| Under this transport, DRIP hashes the full ASTM Message Pack (Message | Under this transport, DRIP hashes the full ASTM Message Pack (Message | |||
| Type 0xF) regardless of its content. The hash MUST NOT include the | Type 0xF) regardless of its content. The hash MUST NOT include the | |||
| Message Counter octet. | Message Counter octet. | |||
| 4.5. DRIP Frame | 4.5. DRIP Frame | |||
| This SAM Type is defined to enable use of the UA-Signed Evidence | This SAM Type is defined to enable use of the _UA-Signed Evidence | |||
| Structure (Section 4.1) in the future beyond the previously defined | Structure_ (Section 4.1) in the future beyond the previously defined | |||
| formats (Wrapper and Manifest) by the inclusion of a single octet to | formats (Wrapper and Manifest) by the inclusion of a single octet to | |||
| signal the format of Evidence data (up to 111 octets). | signal the format of _Evidence_ data (up to 111 octets). | |||
| The content format of Frame Evidence Data is not defined in this | The content format of _Frame Evidence Data_ is not defined in this | |||
| document. Other specifications MUST define the contents and register | document. Other specifications MUST define the contents and register | |||
| for a Frame Type. At the time of publication (2024), there are no | for a _Frame Type_. At the time of publication (2024), there are no | |||
| defined Frame Types; only an Experimental range has been defined. | defined Frame Types; only an Experimental range has been defined. | |||
| Observers MUST check the signature of the structure (Section 4.1) per | Observers MUST check the signature of the structure (Section 4.1) per | |||
| Section 3.1.2.2 and MAY, if the specification of Frame Type is known, | Section 3.1.2.2 and MAY, if the specification of _Frame Type_ is | |||
| parse the content in Frame Evidence Data. | known, parse the content in _Frame Evidence Data_. | |||
| 0 1 2 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 | 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 | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| | Frame Type | | | | Frame Type | | | |||
| +---------------+ . | +---------------+ . | |||
| . Frame Evidence Data . | . Frame Evidence Data . | |||
| . . | . . | |||
| | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| Figure 10: DRIP Frame | Figure 10: DRIP Frame | |||
| Frame Type: (1 octet) | _Frame Type_: (1 octet) | |||
| As shown in Figure 10, the Frame Type takes the first octet, which | As shown in Figure 10, the _Frame Type_ takes the first octet, | |||
| leaves 111 octets available for Frame Evidence Data. See | which leaves 111 octets available for _Frame Evidence Data_. See | |||
| Section 8.1 for Frame Type allocations. | Section 8.1 for Frame Type allocations. | |||
| 5. Forward Error Correction | 5. Forward Error Correction | |||
| For Broadcast RID, FEC is provided by the lower layers in Extended | For Broadcast RID, FEC is provided by the lower layers in Extended | |||
| Transports. The Bluetooth 4.x Legacy Transport does not support FEC, | Transports. The Bluetooth 4.x Legacy Transport does not support FEC, | |||
| so the following application-level scheme is used with DRIP | so the following application-level scheme is used with DRIP | |||
| Authentication to add some FEC. When sending data over a medium that | Authentication to add some FEC. When sending data over a medium that | |||
| does not have underlying FEC, for example Bluetooth 4.x, this section | does not have underlying FEC, for example Bluetooth 4.x, this section | |||
| MUST be used. | MUST be used. | |||
| skipping to change at line 1091 ¶ | skipping to change at line 1092 ¶ | |||
| all page data of an Authentication Message. This allows the | all page data of an Authentication Message. This allows the | |||
| correction of a single erased page in an Authentication Message. If | correction of a single erased page in an Authentication Message. If | |||
| more than a single page is missing, then handling of an incomplete | more than a single page is missing, then handling of an incomplete | |||
| Authentication Message is determined by higher layers. | Authentication Message is determined by higher layers. | |||
| Other FEC schemes, to protect more than a single page of an | Other FEC schemes, to protect more than a single page of an | |||
| Authentication Message or multiple [F3411] Messages, are left for | Authentication Message or multiple [F3411] Messages, are left for | |||
| future standardization if operational experience proves it necessary | future standardization if operational experience proves it necessary | |||
| and/or practical. | and/or practical. | |||
| The data added during FEC is not included in the Authentication Data | The data added during FEC is not included in the _Authentication Data | |||
| / Signature, but instead in the Additional Data field of Figure 2. | / Signature_, but instead in the _Additional Data_ field of Figure 2. | |||
| This may cause the Authentication Message to exceed 9 pages, up to a | This may cause the Authentication Message to exceed 9 pages, up to a | |||
| maximum of 16 pages. | maximum of 16 pages. | |||
| 5.1. Encoding | 5.1. Encoding | |||
| When encoding, two things are REQUIRED: | When encoding, two things are REQUIRED: | |||
| 1. The FEC data MUST start on a new Authentication Page. To do | 1. The FEC data MUST start on a new Authentication Page. To do | |||
| this, the results of parity encoding MUST be placed in the | this, the results of parity encoding MUST be placed in the | |||
| Additional Data field of Figure 2 with null padding before it to | _Additional Data_ field of Figure 2 with null padding before it | |||
| line up with the next page. The Additional Data Length field | to line up with the next page. The _Additional Data Length_ | |||
| MUST be set to number of padding octets + number of parity | field MUST be set to number of padding octets + number of parity | |||
| octets. | octets. | |||
| 2. The Last Page Index field (in Page 0) MUST be incremented from | 2. The _Last Page Index_ field (in Page 0) MUST be incremented from | |||
| what it would have been without FEC by the number of pages | what it would have been without FEC by the number of pages | |||
| required for the Additional Data Length field, null padding, and | required for the _Additional Data Length_ field, null padding, | |||
| FEC. | and FEC. | |||
| To generate the parity, a simple XOR operation using the previous | To generate the parity, a simple XOR operation using the previous | |||
| parity page and current page is used. Only the 23-octet | parity page and current page is used. Only the 23-octet | |||
| Authentication Payload field of Figure 1 is used in the XOR | _Authentication Payload_ field of Figure 1 is used in the XOR | |||
| operations. For Page 0, a 23-octet null pad is used for the previous | operations. For Page 0, a 23-octet null pad is used for the previous | |||
| parity page. | parity page. | |||
| Figure 11 shows an example of the last two pages (out of N) of an | Figure 11 shows an example of the last two pages (out of N) of an | |||
| Authentication Message using DRIP Single Page FEC. The Additional | Authentication Message using DRIP Single Page FEC. The _Additional | |||
| Data Length is set to 33, as there are always 23 octets of FEC data | Data Length_ is set to 33, as there are always 23 octets of FEC data | |||
| and there are 10 octets of padding in this example to line it up into | and there are 10 octets of padding in this example to line it up into | |||
| Page N. | Page N. | |||
| Page N-1: | Page N-1: | |||
| 0 1 2 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 | 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 | | | | Page Header | | | |||
| +---------------+ | | +---------------+ | | |||
| | Authentication Data / Signature | | | Authentication Data / Signature | | |||
| skipping to change at line 1157 ¶ | skipping to change at line 1158 ¶ | |||
| | | | | | | |||
| | | | | | | |||
| | | | | | | |||
| +---------------+---------------+---------------+---------------+ | +---------------+---------------+---------------+---------------+ | |||
| Figure 11: Example Single Page FEC Encoding | Figure 11: Example Single Page FEC Encoding | |||
| 5.2. Decoding | 5.2. Decoding | |||
| Frame decoding is independent of the transmit media. However, the | Frame decoding is independent of the transmit media. However, the | |||
| decoding process can determine from the first Authentication page | decoding process can determine from the first Authentication Page | |||
| that there may be a Bluetooth 4.x FEC page at the end. The decoding | that there may be a Bluetooth 4.x FEC page at the end. The decoding | |||
| process MUST test for the presence of FEC and apply it as follows. | process MUST test for the presence of FEC and apply it as follows. | |||
| To determine if FEC has been used, a check of the Last Page Index is | To determine if FEC has been used, a check of the _Last Page Index_ | |||
| performed. In general, if the Last Page Index field is one greater | is performed. In general, if the _Last Page Index_ field is one | |||
| than that necessary to hold Length octets of Authentication Data, | greater than that necessary to hold _Length_ octets of Authentication | |||
| then FEC has been used. Note that if Length octets are exhausted | Data, then FEC has been used. Note that if _Length_ octets are | |||
| exactly at the end of an Authentication Page, the Additional Data | exhausted exactly at the end of an Authentication Page, the | |||
| Length field will occupy the first octet of the following page. The | _Additional Data Length_ field will occupy the first octet of the | |||
| remainder of this page will be null padded under DRIP to align the | following page. The remainder of this page will be null padded under | |||
| FEC to its own page. In this case, the Last Page Index will have | DRIP to align the FEC to its own page. In this case, the _Last Page | |||
| been incremented once for initializing the Additional Data Length | Index_ will have been incremented once for initializing the | |||
| field and once for the FEC page, for a total of two additional pages, | _Additional Data Length_ field and once for the FEC page, for a total | |||
| as in the last row of Table 5. | of two additional pages, as in the last row of Table 5. | |||
| To decode FEC in DRIP, a rolling XOR is used on each Authentication | To decode FEC in DRIP, a rolling XOR is used on each _Authentication | |||
| Page received in the current Authentication Message. A Message | Page_ received in the current Authentication Message. A Message | |||
| Counter, outside of the ASTM Message but specified in [F3411], is | Counter, outside of the ASTM Message but specified in [F3411], is | |||
| used to signal a different Authentication Message and to correlate | used to signal a different Authentication Message and to correlate | |||
| pages to messages. This Message Counter is only a single octet in | pages to messages. This Message Counter is only a single octet in | |||
| length, so it will roll over (to 0x00) after reaching its maximum | length, so it will roll over (to 0x00) after reaching its maximum | |||
| value (0xFF). If only a single page is missing in the Authentication | value (0xFF). If only a single page is missing in the Authentication | |||
| Message the resulting parity octets should be the data of the erased | Message the resulting parity octets should be the data of the erased | |||
| page. | page. | |||
| Authentication Page 0 contains various important fields, only located | Authentication Page 0 contains various important fields, only located | |||
| on that page, that help decode the full ASTM Authentication Message. | on that page, that help decode the full ASTM Authentication Message. | |||
| If Page 0 has been reconstructed, the Last Page Index and Length | If Page 0 has been reconstructed, the _Last Page Index_ and _Length_ | |||
| fields MUST be validated by DRIP. The pseudocode in Figure 12 can be | fields MUST be validated by DRIP. The pseudocode in Figure 12 can be | |||
| used for both checks. | used for both checks. | |||
| <CODE BEGINS> | <CODE BEGINS> | |||
| function decode_check(auth_pages[], decoded_lpi, decoded_length) { | function decode_check(auth_pages[], decoded_lpi, decoded_length) { | |||
| // check decoded_lpi does not exceed maximum value | // check decoded_lpi does not exceed maximum value | |||
| if (decoded_lpi >= 16) { | if (decoded_lpi >= 16) { | |||
| return DECODE_FAILURE | return DECODE_FAILURE | |||
| } | } | |||
| skipping to change at line 1234 ¶ | skipping to change at line 1235 ¶ | |||
| return DECODE_FAILURE | return DECODE_FAILURE | |||
| } | } | |||
| return DECODE_SUCCESS | return DECODE_SUCCESS | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| Figure 12: Pseudocode for Decode Checks | Figure 12: Pseudocode for Decode Checks | |||
| 5.3. FEC Limitations | 5.3. FEC Limitations | |||
| The worst-case scenario is when the Authentication Data / Signature | The worst-case scenario is when the _Authentication Data / Signature_ | |||
| ends perfectly on a page boundary (Page N-1). This means the | ends perfectly on a page boundary (Page N-1). This means the | |||
| Additional Data Length would start the next page (Page N) and have 22 | _Additional Data Length_ would start the next page (Page N) and have | |||
| octets worth of null padding to align the FEC to begin at the start | 22 octets worth of null padding to align the FEC to begin at the | |||
| of the next page (Page N+1). In this scenario, an entire page (Page | start of the next page (Page N+1). In this scenario, an entire page | |||
| N) is being wasted just to carry the Additional Data Length. | (Page N) is being wasted just to carry the _Additional Data Length_. | |||
| 6. Requirements and Recommendations | 6. Requirements and Recommendations | |||
| 6.1. Legacy Transports | 6.1. Legacy Transports | |||
| Under DRIP, the goal is to bring reliable receipt of the paged | Under DRIP, the goal is to bring reliable receipt of the paged | |||
| Authentication Message using Legacy Transports. FEC (Section 5) MUST | Authentication Message using Legacy Transports. FEC (Section 5) MUST | |||
| be used, per mandated RID rules (for example, the US FAA RID Rules | be used, per mandated RID rules (for example, the US FAA RID Rules | |||
| [FAA-14CFR]), when using Legacy Transports (such as Bluetooth 4.x). | [FAA-14CFR]), when using Legacy Transports (such as Bluetooth 4.x). | |||
| skipping to change at line 1571 ¶ | skipping to change at line 1572 ¶ | |||
| frames* (manifest frame count + base frame count). | frames* (manifest frame count + base frame count). | |||
| 9.3. VNA Timestamp Offsets for DRIP Authentication Formats | 9.3. VNA Timestamp Offsets for DRIP Authentication Formats | |||
| Note the discussion of VNA Timestamp offsets here is in the context | Note the discussion of VNA Timestamp offsets here is in the context | |||
| of the DRIP Wrapper (Section 4.3), DRIP Manifest (Section 4.4), and | of the DRIP Wrapper (Section 4.3), DRIP Manifest (Section 4.4), and | |||
| DRIP Frame (Section 4.5). For DRIP Link (Section 4.2), these offsets | DRIP Frame (Section 4.5). For DRIP Link (Section 4.2), these offsets | |||
| are set by the DIME and have their own set of considerations in | are set by the DIME and have their own set of considerations in | |||
| [DRIP-REG]. | [DRIP-REG]. | |||
| The offset of the VNA Timestamp by UA is one that needs careful | The offset of the _VNA Timestamp by UA_ is one that needs careful | |||
| consideration for any implementation. The offset should be shorter | consideration for any implementation. The offset should be shorter | |||
| than any given flight duration (typically less than an hour) but be | than any given flight duration (typically less than an hour) but be | |||
| long enough to be received and processed by Observers (larger than a | long enough to be received and processed by Observers (larger than a | |||
| few seconds). It is recommended that 3-5 minutes should be | few seconds). It is recommended that 3-5 minutes should be | |||
| sufficient to serve this purpose in any scenario, but it is not | sufficient to serve this purpose in any scenario, but it is not | |||
| limited by design. | limited by design. | |||
| 9.4. DNS Security in DRIP | 9.4. DNS Security in DRIP | |||
| As stated in Section 3.1 specification of particular DNS security | As stated in Section 3.1 specification of particular DNS security | |||
| skipping to change at line 1730 ¶ | skipping to change at line 1731 ¶ | |||
| Table 4: Authentication State Names, Colors, and Descriptions | Table 4: Authentication State Names, Colors, and Descriptions | |||
| A.1. None: Black | A.1. None: Black | |||
| The default state where authentication information has not yet been | The default state where authentication information has not yet been | |||
| received and is not currently being received. | received and is not currently being received. | |||
| A.2. Partial: Gray | A.2. Partial: Gray | |||
| A pending state where authentication pages are being received, but a | A pending state where Authentication Pages are being received, but a | |||
| full Authentication Message has yet to be compiled. | full Authentication Message has yet to be compiled. | |||
| A.3. Unsupported: Brown | A.3. Unsupported: Brown | |||
| A state wherein authentication data is being or has been received but | A state wherein authentication data is being or has been received but | |||
| cannot be used, as the Authentication Type or SAM Type is not | cannot be used, as the Authentication Type or SAM Type is not | |||
| supported by the Observer. | supported by the Observer. | |||
| A.4. Unverifiable: Yellow | A.4. Unverifiable: Yellow | |||
| skipping to change at line 1922 ¶ | skipping to change at line 1923 ¶ | |||
| five slots; thus it can authenticate up to four ASTM Messages co- | five slots; thus it can authenticate up to four ASTM Messages co- | |||
| located in the same Message Pack. | located in the same Message Pack. | |||
| B.1.1.2. Eleven ASTM Messages | B.1.1.2. Eleven ASTM Messages | |||
| Eleven ASTM Messages (see Table 5) is where a Manifest with FEC | Eleven ASTM Messages (see Table 5) is where a Manifest with FEC | |||
| invokes the situation mentioned in Section 5.3. | invokes the situation mentioned in Section 5.3. | |||
| Eleven is the maximum number of ASTM Message Hashes that can be | Eleven is the maximum number of ASTM Message Hashes that can be | |||
| supported resulting in 14 total hashes. This completely fills the | supported resulting in 14 total hashes. This completely fills the | |||
| Evidence field of the UA-Signed Evidence Structure making its total | _Evidence_ field of the _UA-Signed Evidence Structure_ making its | |||
| size 200 octets. This fits on exactly 9 Authentication Pages ((201 - | total size 200 octets. This fits on exactly 9 Authentication Pages | |||
| 17) / 23 == 8), so when the ADL is added, it is placed on the next | ((201 - 17) / 23 == 8), so when the ADL is added, it is placed on the | |||
| page (Page 10). Per rule 1 in Section 5.1, this means that all of | next page (Page 10). Per rule 1 in Section 5.1, this means that all | |||
| Page 10 is null padded (expect the ADL octet) and FEC data fills Page | of Page 10 is null padded (expect the ADL octet) and FEC data fills | |||
| 11, resulting in a plus-two page count when FEC is applied. | Page 11, resulting in a plus-two page count when FEC is applied. | |||
| This drives the recommendation is Section 4.4 to only use up to 10 | This drives the recommendation is Section 4.4 to only use up to 10 | |||
| ASTM Message Hashes, not 11. | ASTM Message Hashes, not 11. | |||
| B.2. Full Authentication Example | B.2. Full Authentication Example | |||
| This example (Figure 13) is focused on showing that 100% of ASTM | This example (Figure 13) is focused on showing that 100% of ASTM | |||
| Messages can be authenticated over Legacy Transports with up to 125% | Messages can be authenticated over Legacy Transports with up to 125% | |||
| overhead in Authentication Pages. Extended Transports are not shown | overhead in Authentication Pages. Extended Transports are not shown | |||
| in this example, because, for those, Authentication with DRIP is | in this example, because, for those, Authentication with DRIP is | |||
| skipping to change at line 2092 ¶ | skipping to change at line 2093 ¶ | |||
| LLC for early prototyping to find holes in earlier drafts of this | LLC for early prototyping to find holes in earlier drafts of this | |||
| specification. | specification. | |||
| * Carsten Bormann for the simple approach of using bit-column-wise | * Carsten Bormann for the simple approach of using bit-column-wise | |||
| parity for erasure (dropped frame) FEC. | parity for erasure (dropped frame) FEC. | |||
| * Soren Friis for pointing out that Wi-Fi implementations would not | * Soren Friis for pointing out that Wi-Fi implementations would not | |||
| always give access to the MAC Address, as was originally used in | always give access to the MAC Address, as was originally used in | |||
| calculation of the hashes for DRIP Manifest. Also, for confirming | calculation of the hashes for DRIP Manifest. Also, for confirming | |||
| that Message Packs (0xF) can only carry up to 9 ASTM frames worth | that Message Packs (0xF) can only carry up to 9 ASTM frames worth | |||
| of data (9 Authentication pages). | of data (9 Authentication Pages). | |||
| * Gabriel Cox (chair of the working group that produced [F3411]) for | * Gabriel Cox (chair of the working group that produced [F3411]) for | |||
| reviewing the specification for the SAM Type request as the ASTM | reviewing the specification for the SAM Type request as the ASTM | |||
| Designated Expert. | Designated Expert. | |||
| * Mohamed Boucadair (Document Shepherd) for his many patches and | * Mohamed Boucadair (Document Shepherd) for his many patches and | |||
| comments. | comments. | |||
| * Eric Vyncke (DRIP AD) for his guidance regarding the document's | * Eric Vyncke (DRIP AD) for his guidance regarding the document's | |||
| path to publication. | path to publication. | |||
| End of changes. 76 change blocks. | ||||
| 139 lines changed or deleted | 140 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||