<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-hallambaker-dare-00" indexInclude="false" ipr="trust200902" scripts="Common,Latin" sortRefs="true" submissionType="independent" symRefs="true" tocDepth="3" tocInclude="true" version="3" xml:lang="en"><front>
<title abbrev="Data At Rest Envelope">Data At Rest Envelope (DARE)</title>
<seriesInfo name="draft-hallambaker-dare-00" value="draft-hallambaker-dare" stream="independent"/>
<author fullname="Phillip Hallam-Baker" initials="P. M." surname="Hallam-Baker"><organization>ThresholdSecrets.com</organization>
<address>
<email>phill@hallambaker.com</email>
</address>
</author>
<date day="6" month="October" year="2025"/>
<area/>
<workgroup/>
<abstract>
<t>This document describes the Data At Rest Envelope (DARE) Envelope and Sequence. The DARE Envelope syntax is used to package plaintext or encrypted content payload and metadata with JOSE decryption and signature data authenticating the payload and metadata. The DARE Sequence format comprises a sequence of DARE Envelopes.</t>
<t>The binary encoding of DARE envelopes allows compact encoding of encrypted and signed payloads of unknown length in a single pass with minimal overhead. The binary encoding of DARE sequences is designed to support an append only write mode and efficient reading in either the forwards or backwards directions. The JSON encoding of DARE Envelopes and sequences allows envelopes and sequences to be incorporated in other JSON objects.</t>
<t>This document does not cover construction of indexes or signatures over multiple entries in a sequence.</t>
</abstract>
</front>
<middle>
<section title="Introduction" anchor="n-introduction"><t>This document describes the Data At Rest Envelope (DARE) Envelope and Sequence. The DARE Envelope syntax is used to package plaintext or encrypted content payload and metadata with JOSE decryption and signature data authenticating the payload and metadata. The DARE Sequence format comprises a sequence of DARE Envelopes.</t>
<t>Two serializations are defined, a JSON serialization allowing envelopes and sequences to be included in other JSON objects and a binary serialization employing a simple {length, data} approach. This avoids the overhead of Base64 encoding signed and encrypted components.</t>
<t>The envelope and sequence serializations are optimized for different purposes:</t>
<ul>
<li>The DARE envelope binary serialization allows payloads of unknown length to be efficiently encoded in a single pass with bounded memory overhead.</li>
<li>The DARE sequence binary serialization is designed to support append only writes and sequential reads in either the forward or the reverse direction. </li>
</ul>
<t>The envelope and sequence approaches are complimentary in that enveloped data <bcp14>MAY</bcp14> be efficiently added to a sequence and an individual entry in a sequence <bcp14>MAY</bcp14> be extracted as an envelope.</t>
<t>A DARE Envelope is a sequence of exactly four fields:</t>
<ul>
<li>Unsigned header</li>
<li>Signed header</li>
<li>Encrypted or plaintext payload</li>
<li>Trailer</li>
</ul>
<t>The unsigned header contains all the information required to process the signed header and payload. This includes the decryption information (if required) and the digest algorithm used to process the payload (if required). The signature value itself <bcp14>MAY</bcp14> be specified in either the unsigned header or the trailer.</t>
<t>A DARE Sequence is a sequence of DARE envelope entries in which each entry contains exactly three fields, the contents of the unsigned header and trailer being combined:</t>
<ul>
<li>Unsigned header</li>
<li>Signed header</li>
<li>Encrypted or plaintext payload</li>
</ul>
<section title="Serialization" anchor="n-serialization"><t>Two serialization formats are supported, a JSON serialization to allow DARE data to be exchanged within JSON objects and a binary serialization that avoids the need for Base64 encoding of cryptographic inputs and outputs. Unlike CBOR and the numerous flavors of 'Binary JSON' encodings, the DARE binary serialization is limited to specifying opaque binary blobs containing either JSON objects (headers, trailers) or payload data.</t>
<section title="JSON Serialization" anchor="n-json-serialization"><t>The JSON serialization of a DARE envelope consists of an array of four entries in which the unsigned header and trailer are represented as a JSON object and the signed header and payload are represented as a string containing the Base64 encoding of the field.</t>
<sourcecode>Minimal DARE Envelope: Envelope
[null,
  "ewogICJjdHkiOiAidGV4dC9wbGFpbiJ9",
  "VGhpcyBpcyBhIHRlc3QgZm9yIERhdGEgQXQgUmVzdCBFbnZlbG9wZQ",
  null
  ]</sourcecode>
<t>The envelope serialization is designed to allow efficient encoding of streamed data of unknown length without the need for buffering with the signature information being split between the unsigned header and the trailer.</t>
<t>The JSON serialization of a DARE sequence consists of a sequence of envelope entries. Each envelope containing three entries, an unsigned header, a signed header and a payload.</t>
<sourcecode>Minimal DARE Sequence: Sequence
[[null,
    "ewogICJjdHkiOiAidGV4dC9wbGFpbiJ9",
    "VGhpcyBpcyBhIHRlc3QgZm9yIERhdGEgQXQgUmVzdCBFbnZlbG9wZQ",
    null
    ]
  ]</sourcecode>
<t>The sequence serialization does not support separation of the signature data</t>
</section>
<section title="Binary Serialization" anchor="n-binary-serialization"><t>The binary serialization of the envelope consists of a Type Identifier sequence specifying a DARE Envelope followed by the same four entries from the JSON encoding encoded as a series of {length, data} items in which the length entries are encoded as variable length integers.</t>
<sourcecode>Minimal DARE Envelope: Envelope

  F8 00 18 7B  0A 20 20 22  63 74 79 22  3A 20 22 74
  65 78 74 2F  70 6C 61 69  6E 22 7D 28  54 68 69 73
  20 69 73 20  61 20 74 65  73 74 20 66  6F 72 20 44
  61 74 61 20  41 74 20 52  65 73 74 20  45 6E 76 65
  6C 6F 70 65  00 00</sourcecode>
<t>The binary serialization of a DARE Sequence follows the same pattern. The sequence begins with a Type Identifier sequence specifying a DARE Sequence followed by a sequence of wrapped frames, each consisting of three parts:</t>
<ul>
<li>Forward length indicator</li>
<li>Envelope entry</li>
<li>Reverse length indicator</li>
</ul>
<t>The forward and reverse length indicators are both encoded as variable length integers but with the bytes of the reverse length indicator written backwards to enable the sequence to be read efficiently in either the forward or reverse direction.</t>
<sourcecode>Minimal DARE Sequence: Sequence

  F9 00 40 43  00 18 7B 0A  20 20 22 63  74 79 22 3A
  20 22 74 65  78 74 2F 70  6C 61 69 6E  22 7D 28 54
  68 69 73 20  69 73 20 61  20 74 65 73  74 20 66 6F
  72 20 44 61  74 61 20 41  74 20 52 65  73 74 20 45
  6E 76 65 6C  6F 70 65 43  40</sourcecode>
</section>
</section>
<section title="JOSE Signature and Encryption" anchor="n-jose-signature-and-encryption"><t>The DARE Envelope and Sequence constructions make use of JOSE signature and encryption but with modifications designed to support efficient processing of very large payloads and to facilitate use in incremental encryption of sequences.</t>
<t>In the DARE model, an envelope presents all the information necessary to process the payload. In a typical workflow a processor needs to know what type of content is to be processed and which party vouches for it before processing the payload itself.</t>
<t>The security enhancements supported are correspondingly limited, the only field that can be encrypted is the payload field and the signature value is always computed over a manifest consisting of the digest of the signed header and the digest of the envelope payload value. If a different processing order is required, this is achieved by nesting. While nested constructions result in a very serious space overhead when using JSON encoding (33% increase in encoding size per pass), this is not a concern when the binary encoding is used.</t>
</section>
<section title="Extensions" anchor="n-extensions"><t>The DARE Sequence Format is intended to be used as the basis for append only data structures offering a wide range of index and signature capabilities. These capabilities are outside the scope of this document as the range of approaches is very large.</t>
<t>For example, a simple file archive format based on DARE Sequence might consist of an initial entry describing the collection as a whole, a sequence of entries containing data from a single file and a final entry containing an index of the entire collection and a signature over the list of digest values of each entry. This approach is optimal for read access but incurs a penalty on writes.</t>
<t>Applications involving frequent write operations are likely to be better served by some form of Haber-Stornetta chained digest construction. Merkel Tree offers an acceptable balance of space efficiency, read performance and write performance for most purposes but is not necessarily ideal for all. A system logging application in which a server writes out reports on each transaction as it is performed, might be better served by a construction in which large numbers of entries are authenticated in a chained digest construction, the result of which is periodically signed by some relevant authority.</t>
</section>
</section>
<section title="Definitions" anchor="n-definitions"><section title="Related Specifications" anchor="n-related-specifications"><t>The DARE Envelope and Sequence formats are based on the following existing standards and specifications.</t>
<dl>
<dt>Message syntax</dt>
<dd>
<t>The cryptographic processing model is based on JSON Web Signature (JWS) <xref target="RFC7515"></xref>, JSON Web Encryption (JWE) <xref target="RFC7516"></xref> and JSON Web Key (JWK) <xref target="RFC7517"></xref>.</t>
</dd>
<dt>Cryptographic primitives.</dt>
<dd>
<t>The HMAC-based Extract-and-Expand Key Derivation Function <xref target="RFC5869"></xref> and Advanced Encryption Standard (AES) Key Wrap with Padding Algorithm <xref target="RFC3394"></xref> are used.</t>
</dd>
<dt>Cryptographic algorithms</dt>
<dd>
<t>The cryptographic algorithms and identifiers described in JSON Web Algorithms (JWA) <xref target="RFC7518"></xref> are used together with additional algorithms as defined in the JSON Object Signing and Encryption IANA registry <xref target="IANAJOSE"></xref>.</t>
</dd>
</dl>
</section>
<section title="Requirements Language" anchor="n-requirements-language"><t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described in <xref target="RFC2119"></xref>.</t>
</section>
<section title="Defined terms" anchor="n-defined-terms"><t>The terms "Authentication Tag", "Content Encryption Key", "Key Management Mode", "Key Encryption", "Direct Key Agreement", "Key Agreement with Key Wrapping" and "Direct Encryption" are defined in the JWE specification <xref target="RFC7516"></xref>.</t>
<t>The terms "Authentication", "Ciphertext", "Digital Signature", "Encryption", "Initialization Vector (IV)", "Message Authentication Code (MAC)", "Plaintext" and "Salt" are defined by the Internet Security Glossary, Version 2 <xref target="RFC4949"></xref>. </t>
<dl>
<dt>Annotated Envelope</dt>
<dd>
<t>A DARE Envelope that contains an <tt>Annotations</tt> field with at least one entry.</t>
</dd>
<dt>Authentication Data</dt>
<dd>
<t>A Message Authentication Code or authentication tag.</t>
</dd>
<dt>Complete Envelope</dt>
<dd>
<t>A DARE envelope that contains the key exchange information necessary for the intended recipient(s) to decrypt it.</t>
</dd>
<dt>Detached Envelope</dt>
<dd>
<t>A DARE envelope that does not contain the key exchange information necessary for the intended recipient(s) to decrypt it.</t>
</dd>
<dt>Encryption Context</dt>
<dd>
<t>The master key, encryption algorithms and associated parameters used to generate a set of one or more enhanced data sequences.</t>
</dd>
<dt>Enhancement</dt>
<dd>
<t>Applying a cryptographic operation to a data sequence. This includes encryption, authentication and both at the same time.</t>
</dd>
<dt>Generator</dt>
<dd>
<t>The party that generates a DARE envelope.</t>
</dd>
<dt>Group Encryption Key</dt>
<dd>
<t>A key used to encrypt data to be read by a group of users. This is typically achieved by means of some form of proxy re-encryption or distributed key generation.</t>
</dd>
<dt>Group Encryption Key Identifier</dt>
<dd>
<t>A key identifier for a group encryption key.</t>
</dd>
<dt>Master Key (MK)</dt>
<dd>
<t>The master secret from which keys are derived for authenticating enhanced data sequences.</t>
</dd>
<dt>Recipient</dt>
<dd>
<t>Any party that receives and processes at least some part of a DARE envelope.</t>
</dd>
<dt>Related Envelope</dt>
<dd>
<t>A set of DARE envelopes that share the same key exchange information and hence the same Master Key.</t>
</dd>
<dt>Uniform Data Fingerprint (UDF)</dt>
<dd>
<t>The means of presenting the result of a cryptographic digest function over a data sequence and content type identifier specified in the Uniform Data Fingerprint specification <xref target="draft-hallambaker-mesh-udf"></xref></t>
</dd>
</dl>
</section>
</section>
<section title="Architecture" anchor="n-architecture"><t>DARE Envelope and DARE Sequence provide a means of efficiently serializing cryptographic payloads without the complexity of a full binary serialization format such as ASN.1 or CBOR.</t>
<t>The cryptographic processing model follows the same pattern as JSON Web Encryption and JSON Web Signature but only supporting modern cryptographic algorithms and cipher modes:</t>
<ul>
<li>Key Exchange mechanisms <bcp14>MUST</bcp14> support use of context information.</li>
<li>Signature mechanisms are used in pure mode.</li>
<li>Bulk encryption algorithms <bcp14>MUST</bcp14> support Authenticated Encryption with Associated Data (AEAD).</li>
</ul>
<section title="DARE Envelope" anchor="n-dare-envelope"><t>A DARE envelope is a sequence of exactly four fields:</t>
<dl>
<dt>Unsigned header</dt>
<dd>
<t><bcp14>MUST</bcp14> provide all the information required to begin processing the security enhancements to the payload. This includes the digest algorithm (if used) and the information required to decrypt the payload. <bcp14>MAY</bcp14> provide the signature and/or digest values.</t>
</dd>
<dt>Signed header</dt>
<dd>
<t><bcp14>MAY</bcp14> be used to specify content metadata and/or any other information to be included within the scope of the signature.</t>
</dd>
<dt>Payload</dt>
<dd>
<t>Contains the content data in the case of an unencrypted envelope and the encrypted content data and associated integrity tag (if required) in the case of encrypted data.</t>
</dd>
<dt>Trailer</dt>
<dd>
<t><bcp14>MUST</bcp14> be present, even if empty. <bcp14>MAY</bcp14> be used to specify the signature value(s).</t>
</dd>
</dl>
<t>Allowing signature data to be split between the unsigned header and the trailer allows implementations to support efficient single pass processing of streamed data of indeterminate length without the need to buffer large quantities of data.</t>
<section title="Security Enhancements" anchor="n-security-enhancements"><t>A core principle of the DARE architecture is that the security enhancements all pertain to the sequence of octets specified in the envelope payload.</t>
<ul>
<li>If the envelope is signed, the signature is computed over the digest of the payload octets. That is, the ciphertext if the envelope is encrypted and the content data itself otherwise.</li>
<li>The headers and trailer are always cleartext.</li>
</ul>
<t>If an application requires the combination of encryption and a signature over the plaintext, this <bcp14>MAY</bcp14> be achieved through nesting with an outer encrypted envelope containing an inner envelope with the content plaintext and signature data. The same approach <bcp14>MAY</bcp14> be applied to encrypt content metadata.</t>
</section>
</section>
<section title="DARE Sequence" anchor="n-dare-sequence"><t>A DARE Sequence is a sequence of DARE Envelope entries consisting of three fields:</t>
<dl>
<dt>Unsigned header</dt>
<dd>
<t><bcp14>MUST</bcp14> provide all the information required to process the security enhancements to the payload including the signature values.</t>
</dd>
<dt>Signed header</dt>
<dd>
<t>As for envelope Signed Header.</t>
</dd>
<dt>Payload</dt>
<dd>
<t>As for envelope payload except that the payload is encoded as a single chunk.</t>
</dd>
</dl>
<t>Splitting the signature data into two parts does not provide a useful advantage when processing sequence entries as each envelope entry is wrapped in a frame beginning and ending with fixed length specifiers to allow efficient read operations in either the forwards or reverse directions.</t>
</section>
</section>
<section title="Serialization" anchor="n-serialization-0"><t>Two serialization formats are defined</t>
<dl>
<dt>JSON Serialization</dt>
<dd>
<t>Yada, 33% payload expansion</t>
</dd>
<dt>Binary Serialization</dt>
<dd>
<t>Very small overhead, minimum of 6 bytes, maximum of 40 bytes + 8 bytes per chunk.</t>
</dd>
</dl>
<section title="JSON Serialization" anchor="n-json-serialization-0"><t>DARE Envelopes and Sequences are encoded as JSON sequences.</t>
<section title="Dare Envelope" anchor="n-dare-envelope-0"><t>A DARE Envelope in JSON serialization consists of a sequence with four entries:</t>
<dl>
<dt>Unsigned header</dt>
<dd>
<t>The unsigned header as a JSON object.</t>
</dd>
<dt>Signed header</dt>
<dd>
<t>A string containing the base64url encoded value of the JSON serialization of the signed header.</t>
</dd>
<dt>Encrypted or plaintext payload</dt>
<dd>
<t>A string containing the base64url encoded value of the JSON serialization of the payload.</t>
</dd>
<dt>Trailer</dt>
<dd>
<t>The trailer as a JSON object or the value null.</t>
</dd>
</dl>
<t>For example, the following envelope contains a payload containing the text  'This is a test' and a header specifying that the content type is  text/plain: </t>
<sourcecode>Envelope
[null,
  "ewogICJjdHkiOiAidGV4dC9wbGFpbiJ9",
  "VGhpcyBpcyBhIHRlc3Q",
  null
  ]
Signed Header:
{
  "cty": "text/plain"}
Payload:
This is a test</sourcecode>
</section>
<section title="Dare Sequence" anchor="n-dare-sequence-0"><t>A DARE Sequence in JSON serialization consists of a sequence of sequences. Each entry in the outer sequence containing a single envelope entry with exactly three fields:</t>
<dl>
<dt>Unsigned header</dt>
<dd>
<t>The unsigned header as a JSON object.</t>
</dd>
<dt>Signed header</dt>
<dd>
<t>A string containing the base64url encoded value of the JSON serialization of the signed header.</t>
</dd>
<dt>Encrypted or plaintext payload</dt>
<dd>
<t>A string containing the base64url encoded value of the JSON serialization of the payload.</t>
</dd>
</dl>
<t>For example, the following sequence contains the envelopes presented in the previous two examples: </t>
<sourcecode>Sequence
[[null,
    "ewogICJjdHkiOiAidGV4dC9wbGFpbiJ9",
    "VGhpcyBpcyBhIHRlc3QgZm9yIERhdGEgQXQgUmVzdCBFbnZlbG9wZQ",
    null
    ],
  [null,
    "ewogICJjdHkiOiAidGV4dC9wbGFpbiJ9",
    "VGhpcyBpcyBhIHRlc3Q",
    null
    ]
  ]</sourcecode>
</section>
</section>
<section title="Binary Serialization" anchor="n-binary-serialization-0"><t>The binary serialization is the preferred serialization for DARE Envelopes and Sequences allowing use of cryptographic enhancements without the need for Base64 encoding of cryptographic inputs or outputs.</t>
<section title="Type Identifier" anchor="n-type-identifier"><t>Type Identifiers are a sequence of zero or more odd octets (bit 0 is set) terminated by a single even octet (bit 0 is clear). This definition allows for an unlimited number of type identifiers to be defined.</t>
<t>This document specifies the following Type Identifiers:</t>
<table><thead>
<tr>
<th>
Type</th>
<th>
Purpose</th>
</tr>
</thead>
<tbody>
<tr>
<td>
[248]</td>
<td>
DARE Envelope with JSON metadata</td>
</tr>
<tr>
<td>
[249][00]</td>
<td>
DARE Sequence with JSON metadata</td>
</tr>
</tbody>
</table><t>The assignment of a single byte Type Identifier for DARE Envelope is justified by the need for compactness when used in nested encodings and to allow an entire envelope to specified in highly constrained messaging contexts (e.g. NFC tag, QR Code).</t>
<t>Since it is the nature of sequences to contain large numbers of items, this use does not justify assignment of a single byte identifier.</t>
<t>Applications <bcp14>MAY</bcp14> specify additional Type Identifiers to be used in place of the defaults above to specify particular data formats using DARE Encodings. For example, a content archive format based on DARE Sequence might use its own Type Identifier so that files can be identified as being in that particular format.</t>
</section>
<section title="Varint" anchor="n-varint"><t>It is intended that the variable length integer encoding used in DARE be the same as the encoding used in MOQ. Currently, MOQ uses the same encoding as QUIC which allows one byte encoding of the integers 0-63, but there is an outstanding proposal to switch to an encoding that would allow single byte encoding of the integers 0-127.</t>
<t>When used to specify the lengths of DARE sequence frames, the octets of the final, varint are written in reverse order to allow the value to be read backwards. This encoding is referred to in this document as a <em>ravint</em>.</t>
<t>For convenience of readers, the QUIC definition, as used in the examples is presented here:</t>
<t>The QUIC variable-length integer encoding reserves the two most significant bits of the first byte to encode the base-2 logarithm of the integer encoding length in bytes. The integer value is encoded on the remaining bits, in network byte order.</t>
<t>This means that integers are encoded on 1, 2, 4, or 8 bytes and can encode 6-, 14-, 30-, or 62-bit values, respectively. The following summarizes the encoding properties.</t>
<table><thead>
<tr>
<th>
2MSB</th>
<th>
Length</th>
<th>
Usable Bits</th>
<th>
Range</th>
</tr>
</thead>
<tbody>
<tr>
<td>
00</td>
<td>
1</td>
<td>
6</td>
<td>
0-63</td>
</tr>
<tr>
<td>
01</td>
<td>
2</td>
<td>
14</td>
<td>
0-16383</td>
</tr>
<tr>
<td>
10</td>
<td>
4</td>
<td>
30</td>
<td>
0-1073741823</td>
</tr>
<tr>
<td>
11</td>
<td>
8</td>
<td>
62</td>
<td>
0-4611686018427387903</td>
</tr>
</tbody>
</table><t></t>
</section>
<section title="Known Length Field" anchor="n-known-length-field"><t>All fields in a DARE Envelope or DARE Sequence envelope entry except for the payload are serialized as known length fields. This comprises a Length: Data form as follows:</t>
<dl>
<dt>Length</dt>
<dd>
<t>A varint specifying the number of data octets that follow.</t>
</dd>
<dt>Data</dt>
<dd>
<t>A sequence of [length] octets.</t>
</dd>
</dl>
</section>
<section title="Variable Length Field" anchor="n-variable-length-field"><t>The payload field in a DARE Envelope or DARE Sequence envelope entry is serialized as a variable length field. This consists of zero or more known length fields of length greater than zero followed by the varint zero.</t>
<t>The payload data consists of the concatenation of the data sections of the fixed length fields. </t>
</section>
<section title="Frame wrapper" anchor="n-frame-wrapper"><t>A frame wrapper consists of a sequence of three entries:</t>
<dl>
<dt>Forward length</dt>
<dd>
<t>The number of octets of frame data</t>
</dd>
<dt>Frame data entry</dt>
<dd>
<t>A sequence of [Forward Length] octets.</t>
</dd>
<dt>Reverse length</dt>
<dd>
<t>number of octets of frame data written as a ravint.</t>
</dd>
</dl>
<t>The value of the forward and reverse length indicators <bcp14>MUST</bcp14> be equal and <bcp14>MUST</bcp14> use the same number of encoding bytes.</t>
</section>
<section title="Envelope Serialization" anchor="n-envelope-serialization"><t>For example, the binary encoding of the envelope shown in the previous example is: </t>
<sourcecode>Envelope

  F8 00 18 7B  0A 20 20 22  63 74 79 22  3A 20 22 74
  65 78 74 2F  70 6C 61 69  6E 22 7D 0E  54 68 69 73
  20 69 73 20  61 20 74 65  73 74 00 00</sourcecode>
</section>
<section title="Sequence Serialization" anchor="n-sequence-serialization"><t>For example, the binary encoding of the sequence shown in the previous example is: ~~~~ DARE Sequence in Binary Serialization: Sequence </t>
<t>F9 00 40 43 00 18 7B 0A 20 20 22 63 74 79 22 3A </t>
<ol start="0">
<li> 69 73 20 69 73 20 61 20 74 65 73 74 20 66 6F </li>
<li> 20 44 61 74 61 20 41 74 20 52 65 73 74 20 45 </li>
<li>E 76 65 6C 6F 70 65 43 40 29 00 18 7B 0A 20 20 </li>
<li> 63 74 79 22 3A 20 22 74 65 78 74 2F 70 6C 61 </li>
<li> 6E 22 7D 0E 54 68 69 73 20 69 73 20 61 20 74 </li>
<li> 73 74 29 ~~~~ </li>
</ol>
</section>
</section>
</section>
<section title="Encryption" anchor="n-encryption"><t>DARE Encryption is designed to allow the use of a single key exchange to encrypt multiple envelope entries in a sequence. This avoids the computation and data overhead of repeated public key operations.</t>
<t>JOSE Web Encryption supports use of the industry standard algorithms and approaches current at the time development began. DARE Encryption narrows the scope of the supported encryption algorithms and cipher modes to those considered state of the art in 2025. Instead of supporting many approaches to key exchange to avoid unnecessary processing, the same key exchange construction is used regardless of the number of recipients or the number of items to be encrypted:</t>
<ul>
<li>The symmetric cipher mode used <bcp14>MUST</bcp14> provide Authenticated Encryption with Associated Data.</li>
<li>Support for the X25519 and X448 algorithms is <bcp14>REQUIRED</bcp14></li>
</ul>
<t>The DARE encryption process has two stages:</t>
<dl>
<dt>Key Exchange</dt>
<dd>
<t>A random value that will become the exchanged key is generated using a sufficiently random technique and assigned a unique key identifier.</t>
<t>An ephemeral public key pair is generated for each of the intended public encryption keys, the ephemeral key and encryption key is then used to establish a shared secret which is in turn used as an encryption key in a key wrapping operation on the exchanged key.</t>
</dd>
<dt>Encryption Parameters Derivation</dt>
<dd>
<t>A salt value is computed for each plaintext to be enciphered. It is sufficient that the salt value be guaranteed to be unique for each plaintext.</t>
<t>A Key Derivation Function is used to combine the exchanged key and the salt to derive the encryption key and initialization vector to be used to encrypt the plaintext to obtain the ciphertext.</t>
</dd>
</dl>
<section title="Algorithms Suites" anchor="n-algorithms-suites"><t>The algorithms used in these examples are sub-optimal. The following table shows the algorithms currently used and the proposed replacements.</t>
<table><thead>
<tr>
<th>
Purpose</th>
<th>
Current</th>
<th>
Proposed</th>
</tr>
</thead>
<tbody>
<tr>
<td>
Key Identifier</td>
<td>
UDF of PKIX subjectKeyInfo</td>
<td>
UDF of JOSE Thumbprint</td>
</tr>
<tr>
<td>
Key Wrap </td>
<td>
A256KW</td>
<td>
A256GCMKW</td>
</tr>
<tr>
<td>
Key Derivation Function</td>
<td>
SHAKE256</td>
<td>
SHAKE256</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</tbody>
</table><t>The rationale for these changes is that the SHAKE functions defined in SHA3 offer a considerably simpler approach than the HKDF approach used in the earlier version of DARE.</t>
</section>
<section title="Key Exchange" anchor="n-key-exchange"><t>The key exchange process comprises the following steps:</t>
<ul>
<li>A random value that will become the exchanged key is generated using a sufficiently random technique and assigned a unique key identifier.</li>
<li>An ephemeral public key pair is generated for each of the intended public encryption keys, the ephemeral key and encryption key is then used to establish a shared secret which is in turn used as an encryption key in a key wrapping operation on the exchanged key.</li>
</ul>
<section title="Exchanged Key Generation" anchor="n-exchanged-key-generation"><t>The exchanged key is a random sequence of octets containing at least as many bits as the symmetric cipher encryption key. Each exchanged key is assigned a unique identifier.</t>
<t>The generation technique <bcp14>MUST</bcp14> ensure that the exchanged key is:</t>
<ul>
<li>Sufficiently random</li>
<li>Does not leak information that might be useful to an attacker.</li>
</ul>
<t>One means of satisfying these constraints is to use a strong Key Derivation Function to combine a random value provided by the platform with a secret value obtained from an independent source. This ensures that the exchanged key cannot be used as a side channel. [Move this to an appendix and reference each time]</t>
<t>The Key Exchange information comprises:</t>
<ul>
<li>The Exchanged Key Identifier [Optional].</li>
<li>The list of Recipient Key Information entries.</li>
</ul>
<t>In the case that the exchanged key is only used to encrypt the payload of the envelope in which the Key Exchange Information is specified, the Exchanged Key Identifier <bcp14>MAY</bcp14> be omitted.</t>
<sourcecode>Exchanged Key
  14 C3 88 28  3F 62 FC 2D  09 77 5D 02  BD B3 79 8C
  F0 AF 8A 8B  4F 73 F0 2C  CB ED D3 24  C6 E2 EF 80
Exchanged Key Identifier
MCFX-KXN4-4Z6Q-D2OO-AJW2-FRLH-PDIV</sourcecode>
</section>
<section title="Recipient Data Generation" anchor="n-recipient-data-generation"><t>Recipient key information is calculated for each decryption key as follows:</t>
<ul>
<li>An ephemeral key is generated with the same algorithm parameters as the decryption key.</li>
<li>The private component of the ephemeral key and the decryption key are used to compute the shared secret for the recipient.</li>
<li>A KDF is used to calculate the key wrap parameters for the recipient.</li>
<li>The key wrap algorithm and parameters are applied to the Exchanged Key to create the wrapped key data for the recipient.</li>
</ul>
<t>The recipient key information comprises:</t>
<ul>
<li>The Recipient Key Identifier.</li>
<li>The public component of the ephemeral key.</li>
<li>The wrapped exchanged key data.</li>
<li>The key wrap algorithm identifier.</li>
</ul>
<sourcecode>Recipient Public Key
MAY4-Y4CP-ZNS5-XUIB-2ZYL-QVRI-UTC3
Ephemeral Key Pair: Envelope
{
  "crv": "X25519",
  "Public": "HNDDtrjgh7VqFhMD2zMmxeoN3dan1Us-KWVyxLHcODE"}
SharedSecret
  19 6A 8E FF  00 81 D8 F8  CD E6 3C 1D  40 29 7D 4E
  5D 4E F4 19  4D C6 CF CD  0E E9 7A 80  49 C6 0B 14
Wrapped Exchanged Key
  E8 BC CC 09  B1 AB 26 86  EB CF 90 F4  C7 3A AF D7
  AE 73 B3 9C  87 B1 15 68  B9 58 BB D1  13 BD 82 B4
  59 5D 77 FF  BE 17 86 44
Recipient Information: Envelope
{
  "kid": "MAY4-Y4CP-ZNS5-XUIB-2ZYL-QVRI-UTC3",
  "epk": {
    "PublicKeyECDH": {
      "crv": "X25519",
      "Public": "HNDDtrjgh7VqFhMD2zMmxeoN3dan1Us-KWVyxLHcODE"}},
  "wmk": "6LzMCbGrJobrz5D0xzqv165zs5yHsRVouVi70RO9grRZXXf_vheGRA"}</sourcecode>
</section>
</section>
<section title="Payload Encryption" anchor="n-payload-encryption"><section title="Encryption Parameters Derivation" anchor="n-encryption-parameters-derivation"><t>The encryption key and nonce are obtained by applying a Key Derivation Function to the concatenation of a salt value and the exchanged key.</t>
<t>The Associated Data used in the AEAD encryption algorithm is the Signed Header.</t>
</section>
<section title="Secure salt construction" anchor="n-secure-salt-construction"><t>Implementations <bcp14>MUST</bcp14> ensure that each salt value used is unique.</t>
<sourcecode>Salt
  93 E5 A0 2B  93 93 A6 6B  8B BF B7 B0  28 DF 00 F1
  3E 69 47 6E  AD FB 31 3E  B2 C7 02 10  A4 84 2E 19</sourcecode>
</section>
<section title="Salt erasure" anchor="n-salt-erasure"><t>If the salt value contains sufficient unpredictable information, erasure of the salt value in a data sequence renders decryption of the payload value infeasible.</t>
</section>
</section>
<section title="Payload Format" anchor="n-payload-format"><t>The input to the KDF is the concatenation of the Salt value and the Exchanged Key: </t>
<sourcecode>KDF Input
  93 E5 A0 2B  93 93 A6 6B  8B BF B7 B0  28 DF 00 F1
  3E 69 47 6E  AD FB 31 3E  B2 C7 02 10  A4 84 2E 19
  14 C3 88 28  3F 62 FC 2D  09 77 5D 02  BD B3 79 8C
  F0 AF 8A 8B  4F 73 F0 2C  CB ED D3 24  C6 E2 EF 80</sourcecode>
<t>Since we require a 256 bit key and 96 bit nonce, 352 bits of KDF output are required: </t>
<sourcecode>KDF Output = SHAKE256(KDF Input,352)
  7A E2 8F C3  A4 FE 57 FC  CA C4 E5 D2  B3 4D CF F2
  3F DC 51 8A  FC D7 B7 D9  59 B3 29 37  CF 77 45 EA
  0A D8 DA 5C  34 A1 45 5C  EB D9 20 1E</sourcecode>
<t>The first 96 bits of the output provide the nonce, the following 256 bits provide the key: </t>
<sourcecode>Encryption Nonce
  7A E2 8F C3  A4 FE 57 FC  CA C4 E5 D2
Encryption Key
  B3 4D CF F2  3F DC 51 8A  FC D7 B7 D9  59 B3 29 37
  CF 77 45 EA  0A D8 DA 5C  34 A1 45 5C  EB D9 20 1E</sourcecode>
<t>The plaintext payload is the string 'This is a test'. The ciphertext is obtained by applying AES-GCM to the plaintext payload using the key and  nonce derrived using the KDF and the Signed header as Associated Data. </t>
<sourcecode>Associated Data
  7B 0A 20 20  22 63 74 79  22 3A 20 22  74 65 78 74
  2F 70 6C 61  69 6E 22 7D
Ciphertext
  7F 34 BA 07  B7 41 83 62  4A 50 1A 8C  4E 12 0E 53
  FC 29 E6 5D  BE 8B D5 39  12 A9 A0 84  10 01 97 B1
  B0 43 F6 9A  8E 87 24 FB  D7 8E A8 B8  71 93 CA 8C
  4E 29 AA 23  3C 6C 33 01</sourcecode>
<t>The complete encryption envelope is: </t>
<sourcecode>DARE Envelope With Encrypted Payload: Envelope
[{
    "enc": "A256GCM",
    "Salt": "k-WgK5OTpmuLv7ewKN8A8T5pR26t-zE-sscCEKSELhk",
    "recipients": [{
        "kid": "MAY4-Y4CP-ZNS5-XUIB-2ZYL-QVRI-UTC3",
        "epk": {
          "PublicKeyECDH": {
            "crv": "X25519",
            "Public": "HNDDtrjgh7VqFhMD2zMmxeoN3dan1Us-KWVyxLHcOD
  E"}},
        "wmk": "6LzMCbGrJobrz5D0xzqv165zs5yHsRVouVi70RO9grRZXXf_v
  heGRA"}
      ]},
  "ewogICJjdHkiOiAidGV4dC9wbGFpbiJ9",
  "fzS6B7dBg2JKUBqMThIOU_wp5l2-i9U5EqmghBABl7GwQ_aajock-9eOqLhxk8
  qMTimqIzxsMwE",
  null
  ]</sourcecode>
</section>
</section>
<section title="Signature" anchor="n-signature"><t>The DARE signature scheme is designed to provide a simple and efficient means of signing a DARE Envelope or Envelope Entry Payload and associated content metadata. As with the approach to encryption, the opportunity is taken to make use of the full capabilities of modern signature algorithms:</t>
<ul>
<li>The signature algorithm <bcp14>MUST</bcp14> support context strings.</li>
<li>The signature value is computed over a manifest consisting of a digest algorithm identifier, the digest of the signed header, and the digest of the payload bytes using the pure version of the signature algorithm (not pre-hashed).</li>
</ul>
<t>The DARE signature approach intentionally removes much of the flexibility provided by the JWS signature approach.</t>
<section title="Signature Preamble" anchor="n-signature-preamble"><t>Signed DARE Envelopes <bcp14>MAY</bcp14> separate signature data presenting only the information required to process the signature </t>
<ul>
<li>The digest algorithm used to digest the Signed Header and Payload.</li>
<li>The Key Identifier of the Signature Key</li>
<li>An application context specifier (optional)</li>
</ul>
<sourcecode>Signature Preamble: Envelope
{
  "signatures": [{
      "dig": "SHA3512",
      "alg": "ED25519",
      "kid": "MBN5-OA3P-7DRU-FLK3-PTP2-OAUC-PXJN"}]}</sourcecode>
</section>
<section title="Calculating the Signature Value" anchor="n-calculating-the-signature-value"><t>The signature algorithm takes three inputs:</t>
<ul>
<li>The private signature key</li>
<li>The signature manifest</li>
<li>A Context String denoting the purpose for which the signature was created.</li>
</ul>
<section title="Signature Manifest" anchor="n-signature-manifest"><t>The signature manifest consists of the concatenation of the following octet sequences:</t>
<ul>
<li>The ASCII encoding of the digest algorithm identifier.</li>
<li>A zero octet.</li>
<li>The digest value of the unsigned header octets as specified in the envelope.</li>
<li>The digest value of the payload octets as specified in the envelope.</li>
</ul>
<t>Note that the signature value presented in DARE envelope is always a signature over the payload octets presented in that envelope. If the envelope is signed and encrypted, the signature value is calculated over the ciphertext, not the plaintext.</t>
<t>If the application requires a signature over a plaintext payload, the only way this can be achieved using DARE envelope is to nest an envelope containing the signature information inside an envelope containing the encryption information. This approach has the advantage of ensuring that the signature information does not leak any information regarding the plaintext. The construction of DARE Envelope permits this to be achieved in a single pass provided that the encryption mode supports single pass processing.</t>
</section>
<section title="Context String" anchor="n-context-string"><t>If the application context specifier is not specified, the context string is the string "DARE-Signature". Otherwise the context string is the concatenation of the string "DARE-Application:" and the application contact specifier.</t>
</section>
<section title="Example:" anchor="n-example"><sourcecode>Signed Header Digest
  C5 13 F0 84  4F 74 3D 9B  50 F8 1B EB  06 41 2D AA
  C6 58 3D D5  F5 83 40 FA  15 D4 69 12  09 EB 2A 13
  93 E2 F8 5B  A8 56 F3 13  60 A8 23 EE  58 68 62 B1
  14 BC 84 C9  58 1D 57 C5  FA 5D 71 D2  9F 9D B6 7E
Payload Digest
  95 94 53 1C  F4 B5 84 AB  AA CD 7C 93  BD 4E E1 00
  0C 86 A5 84  5F E5 F3 DD  99 C1 4B 96  97 F7 1E 22
  8B 1F 77 79  B9 C9 B9 C4  41 4C 05 F4  7D 29 1E 78
  8F 28 C9 ED  88 AF 06 D0  9A 37 83 E7  65 48 35 CB
Signature Manifest
  53 48 41 33  35 31 32 00  C5 13 F0 84  4F 74 3D 9B
  50 F8 1B EB  06 41 2D AA  C6 58 3D D5  F5 83 40 FA
  15 D4 69 12  09 EB 2A 13  93 E2 F8 5B  A8 56 F3 13
  60 A8 23 EE  58 68 62 B1  14 BC 84 C9  58 1D 57 C5
  FA 5D 71 D2  9F 9D B6 7E  C5 13 F0 84  4F 74 3D 9B
  50 F8 1B EB  06 41 2D AA  C6 58 3D D5  F5 83 40 FA
  15 D4 69 12  09 EB 2A 13  93 E2 F8 5B  A8 56 F3 13
  60 A8 23 EE  58 68 62 B1  14 BC 84 C9  58 1D 57 C5
  FA 5D 71 D2  9F 9D B6 7E
ContextString
  44 41 52 45  2D 53 69 67  6E 61 74 75  72 65
Signature Key Id
MBN5-OA3P-7DRU-FLK3-PTP2-OAUC-PXJN
Signature Value
  F5 E6 FB 00  E1 46 C9 17  89 96 68 44  CC A1 3E 5F
  F6 DA 93 B8  B5 A6 A2 D0  6B 22 2B 96  FF E5 DA 90
  AD E6 3B 76  2A EB A1 0C  01 D7 D5 1F  35 A5 F0 5E
  C5 E4 CF B5  C8 A2 4C DC  BE 92 3D 18  9D 51 5D 0E</sourcecode>
</section>
<section title="Signatures Header" anchor="n-signatures-header"><t>When specified in an Unsigned Header, the Signatures Header contains all the information specified in the signature preamble plus the signature values. When specified in a Trailer, the Signatures Header contains only the signature key identifiers and the corresponding signature values.</t>
<t>Each signature entry consists of the following information:</t>
<ul>
<li>The Key Identifier of the Signature Key</li>
<li>The Digest Algorithm</li>
<li>The Signature Algorithm</li>
<li>The Signature Value</li>
</ul>
<sourcecode>Signature Trailer: Envelope
{
  "signatures": [{
      "dig": "SHA3512",
      "alg": "ED25519",
      "kid": "MBN5-OA3P-7DRU-FLK3-PTP2-OAUC-PXJN",
      "signature": "9eb7AOFGyReJlmhEzKE-X_bak7i1pqLQayIrlv_l2pCt5jt2K
  uuhDAHX1R81pfBexeTPtciiTNy-kj0YnVFdDg"}]}</sourcecode>
<t>The complete envelope is thus: </t>
<sourcecode>Envelope
[{
    "signatures": [{
        "dig": "SHA3512",
        "alg": "ED25519",
        "kid": "MBN5-OA3P-7DRU-FLK3-PTP2-OAUC-PXJN"}
      ]},
  "ewogICJjdHkiOiAidGV4dC9wbGFpbiJ9",
  "VGhpcyBpcyBhIHRlc3QgZm9yIERhdGEgQXQgUmVzdCBFbnZlbG9wZQ",
  {
    "signatures": [{
        "dig": "SHA3512",
        "alg": "ED25519",
        "kid": "MBN5-OA3P-7DRU-FLK3-PTP2-OAUC-PXJN",
        "signature": "9eb7AOFGyReJlmhEzKE-X_bak7i1pqLQayIrlv_l2pC
  t5jt2KuuhDAHX1R81pfBexeTPtciiTNy-kj0YnVFdDg"}
      ]}
  ]</sourcecode>
<t>When a signed envelope is added to a sequence, the signature properties from the Header and Trailer are combined:</t>
<sourcecode>Signature In Sequence: Sequence
[[{
      "signatures": [{
          "dig": "SHA3512",
          "alg": "ED25519",
          "kid": "MBN5-OA3P-7DRU-FLK3-PTP2-OAUC-PXJN",
          "signature": "9eb7AOFGyReJlmhEzKE-X_bak7i1pqLQayIrlv_l2
  pCt5jt2KuuhDAHX1R81pfBexeTPtciiTNy-kj0YnVFdDg"}
        ]},
    "ewogICJjdHkiOiAidGV4dC9wbGFpbiJ9",
    "VGhpcyBpcyBhIHRlc3QgZm9yIERhdGEgQXQgUmVzdCBFbnZlbG9wZQ",
    null
    ]
  ]</sourcecode>
</section>
</section>
</section>
<section title="Security Considerations" anchor="n-security-considerations"><section title="Confidentiality" anchor="n-confidentiality"><section title="Salt Reuse" anchor="n-salt-reuse"></section>
<section title="Exchanged Key Construction" anchor="n-exchanged-key-construction"></section>
<section title="Side Channel" anchor="n-side-channel"></section>
</section>
<section title="Integrity" anchor="n-integrity"><section title="Malicious Frame Length Indications" anchor="n-malicious-frame-length-indications"></section>
<section title="Semantic Substitution Attack" anchor="n-semantic-substitution-attack"></section>
</section>
<section title="Availability" anchor="n-availability"><section title="Resource Exhaustion" anchor="n-resource-exhaustion"></section>
</section>
</section>
<section title="IANA Considerations" anchor="n-iana-considerations"><t>[Create registry of DARE encoded object types, prepopulate with code points for JOSE envelope and sequence, reserving code points for CBOR, XML and ASN.1]</t>
<t>[Add entries for any new JOSE headers]</t>
<t>[New JOSE Header - witness]</t>
<t>[Assign the Type Indicator registrations]</t>
</section>
<section title="Acknowledgements" anchor="n-acknowledgements"><t>The name Data At Rest Encryption was proposed by Melhi Abdulhayo?lu.</t>
</section>
<section title="Appendix A: Cryptographic Keys Used in Examples" anchor="n-appendix-a-cryptographic-keys-used-in-examples"><sourcecode>Recipient Public Key : Envelope
{
  "crv": "X25519",
  "Public": "rlq57sHnbb_f8SoOid_YgYlqLA-F0U2jSeXG5AfNkWI"}
Signature Key: Envelope</sourcecode>
</section>
<section title="Appendix B: DARE Envelope Examples and Test Vectors" anchor="n-appendix-b-dare-envelope-examples-and-test-vectors"><section title="Plaintext Unsigned" anchor="n--plaintext-unsigned-"><ul>
<li> Encryption Algorithm: none </li>
</ul>
</section>
<section title="Encrypted Unsigned" anchor="n--encrypted-unsigned-"><ul>
<li> Encryption Algorithm: X25519 </li>
<li> Encryption Algorithm: none </li>
</ul>
</section>
<section title="Plaintext Signed" anchor="n--plaintext-signed-"><ul>
<li> Encryption Algorithm: none </li>
<li> Encryption Algorithm: Ed25519 </li>
</ul>
</section>
<section title="Encrypted Signed" anchor="n--encrypted-signed-"><ul>
<li> Encryption Algorithm: X25519 </li>
<li> Encryption Algorithm: Ed25519 </li>
</ul>
</section>
</section>
<section title="Appendix C: DARE Sequence Examples and Test Vectors" anchor="n-appendix-c-dare-sequence-examples-and-test-vectors"></section>
<section title="Appendix D: Outstanding Issues" anchor="n-appendix-d-outstanding-issues"><t>The following issues need to be addressed.</t>
<table><thead>
<tr>
<th>
Issue</th>
<th>
Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
Algorithms</td>
<td>
Need to audit the algorithm choices</td>
</tr>
<tr>
<td>
Test Vectors</td>
<td>
Produce test vectors for additional algorithms</td>
</tr>
<tr>
<td>
Extensions</td>
<td>
Need work</td>
</tr>
<tr>
<td>
Security Considerations</td>
<td>
Need work</td>
</tr>
<tr>
<td>
IANA Considerations</td>
<td>
Need work</td>
</tr>
<tr>
<td>
Thumbprints</td>
<td>
Use UDFs of thumbprints </td>
</tr>
<tr>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
</tr>
</tbody>
</table><t></t>
</section>
</middle>
<back>
<references title="Normative References"><reference anchor="RFC7515"><front>
<title>JSON Web Signature (JWS)</title>
<author fullname="M. Jones" initials="M." surname="Jones"><address>
</address>
</author>
<author fullname="J. Bradley" initials="J." surname="Bradley"><address>
</address>
</author>
<author fullname="N. Sakimura" initials="N." surname="Sakimura"><address>
</address>
</author>
<date month="May" year="2015"/>
</front>
<seriesInfo name="RFC" value="7515"/>
<seriesInfo name="DOI" value="10.17487/RFC7515"/>
</reference>
<reference anchor="RFC7516"><front>
<title>JSON Web Encryption (JWE)</title>
<author fullname="M. Jones" initials="M." surname="Jones"><address>
</address>
</author>
<author fullname="J. Hildebrand" initials="J." surname="Hildebrand"><address>
</address>
</author>
<date month="May" year="2015"/>
</front>
<seriesInfo name="RFC" value="7516"/>
<seriesInfo name="DOI" value="10.17487/RFC7516"/>
</reference>
<reference anchor="RFC7517"><front>
<title>JSON Web Key (JWK)</title>
<author fullname="M. Jones" initials="M." surname="Jones"><address>
</address>
</author>
<date month="May" year="2015"/>
</front>
<seriesInfo name="RFC" value="7517"/>
<seriesInfo name="DOI" value="10.17487/RFC7517"/>
</reference>
<reference anchor="RFC5869"><front>
<title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
<author fullname="H. Krawczyk" initials="H." surname="Krawczyk"><address>
</address>
</author>
<author fullname="P. Eronen" initials="P." surname="Eronen"><address>
</address>
</author>
<date month="May" year="2010"/>
</front>
<seriesInfo name="RFC" value="5869"/>
<seriesInfo name="DOI" value="10.17487/RFC5869"/>
</reference>
<reference anchor="RFC3394"><front>
<title>Advanced Encryption Standard (AES) Key Wrap Algorithm</title>
<author fullname="J. Schaad" initials="J." surname="Schaad"><address>
</address>
</author>
<author fullname="R. Housley" initials="R." surname="Housley"><address>
</address>
</author>
<date month="September" year="2002"/>
</front>
<seriesInfo name="RFC" value="3394"/>
<seriesInfo name="DOI" value="10.17487/RFC3394"/>
</reference>
<reference anchor="RFC7518"><front>
<title>JSON Web Algorithms (JWA)</title>
<author fullname="M. Jones" initials="M." surname="Jones"><address>
</address>
</author>
<date month="May" year="2015"/>
</front>
<seriesInfo name="RFC" value="7518"/>
<seriesInfo name="DOI" value="10.17487/RFC7518"/>
</reference>
<reference anchor="RFC2119"><front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname="S. Bradner" initials="S." surname="Bradner"><address>
</address>
</author>
<date month="March" year="1997"/>
</front>
<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="2119"/>
<seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC4949"><front>
<title>Internet Security Glossary, Version 2</title>
<author fullname="R. Shirey" initials="R." surname="Shirey"><address>
</address>
</author>
<date month="August" year="2007"/>
</front>
<seriesInfo name="FYI" value="36"/>
<seriesInfo name="RFC" value="4949"/>
<seriesInfo name="DOI" value="10.17487/RFC4949"/>
</reference>
<reference anchor="draft-hallambaker-mesh-udf"><front>
<title>Mathematical Mesh 3.0 Part II: Uniform Data Fingerprint.</title>
<author fullname="Phillip Hallam-Baker" initials="P." surname="Hallam-Baker"><organization>ThresholdSecrets.com</organization>
<address>
</address>
</author>
<date day="14" month="October" year="2024"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-hallambaker-mesh-udf-19"/>
</reference>
<reference anchor="IANAJOSE"><front>
<title>[Reference Not Found!]</title>
<author initials="" surname=""><organization/>
<address>
</address>
</author>
<date/>
</front>
</reference>
</references>
</back>
</rfc>
