<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.8 (Ruby 3.0.4) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cel-nfsv4-hash-tree-interchange-format-03" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.5 -->
  <front>
    <title abbrev="Hash Tree Interchange Format">Attestation of File Content using an X.509 Certificate</title>
    <seriesInfo name="Internet-Draft" value="draft-cel-nfsv4-hash-tree-interchange-format-03"/>
    <author initials="C." surname="Lever" fullname="Charles Lever" role="editor">
      <organization abbrev="Oracle">Oracle Corporation</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>chuck.lever@oracle.com</email>
      </address>
    </author>
    <date year="2022" month="May" day="04"/>
    <area>Transport</area>
    <workgroup>Network File System Version 4</workgroup>
    <abstract>
      <t>This document describes a compact open format for
transporting
and
storing
an abbreviated form of a cryptographically signed hash tree.
Receivers use this representation
to reconstitute the hash tree
and
verify the integrity of file content protected by that tree.</t>
      <t>An X.509 certificate
encapsulates
and
protects
the hash tree metadata and provides cryptographic provenance.
Therefore this document updates
the Internet X.509 certificate profile specified in RFC 5280.</t>
    </abstract>
    <note>
      <name>Note</name>
      <t>Discussion of this draft occurs on the <eref target="nfsv4@ietf.org">NFSv4 working group mailing
list</eref>, archived at
<eref target="https://mailarchive.ietf.org/arch/browse/nfsv4/"/>. Working Group
information is available at
<eref target="https://datatracker.ietf.org/wg/nfsv4/about/"/>.</t>
      <t>Submit suggestions and changes as pull requests at
<eref target="https://github.com/chucklever/i-d-hash-tree-interchange-format"/>.
Instructions are on that page.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Linear hashing is a common technique for protecting the integrity of data.
A fixed-size hash, or digest, is computed over the bytes in a data set
using a deterministic and collision-resistant algorithm.
An example of such an algorithm is <xref target="FIPS.180-4"/>.</t>
      <t>Filesystem designers often employ this technique
to protect the integrity of both individual files
and filesystem metadata.
For instance, to protect an individual file's integrity,
the filesystem computes a digest
from the beginning of its content to its end.
The filesystem then stores that digest along with the file content.
The integrity of that digest can be further protected
by cryptographically signing it.
The filesystem recomputes the digest when the file is retrieved
and compares
the locally-computed digest
with
the saved digest to verify the file content.</t>
      <t>Over time, linear hashing has proven to be an inadequate fit
with the way filesystems manage file content.
A content verifier must read the entire file to validate its digest.
Reading whole files is not onerous for small files,
but reading a large file every time
its digest needs verification quickly becomes costly.</t>
      <t>Filesystems read files from persistent storage
in small pieces (blocks) on demand
to manage large files efficiently.
When memory is short, the system evicts these data blocks
and then reads them again when needed later.
There is no physical guarantee that
a subsequent read of a particular block will
give the same result as an earlier one.
Thus the initial verification of a file's becomes stale,
sometimes quickly.</t>
      <t>To address this shortcoming, some have turned to hash trees <xref target="Merkle88"/>.
A hash tree leaf node contains the linear hash of a portion
of the protected content.
Interior nodes in a hash tree contain hashes of the nodes below them,
up to the root node which stores a hash of everything in the tree.
Validating a leaf node means validating only the portion of the file
content protected by that node and its parents in the hash tree.</t>
      <t>Hash trees present a new challenge, however.
Even when signed, a single linear hash is the same size
no matter how much content it protects.
The size of a hash tree, however, increases logarithmically with
the size of the content it protects.</t>
      <t>Transporting and storing a hash tree can therefore be unwieldy.
It is particularly a problem for legacy storage formats
that do not have mechanisms to handle
extensive amounts of variably-sized metadata.
Software distribution and packaging formats might not be
flexible enough to transport this possibly large amount of integrity data.
Backup mechanisms such as tar or rsync might be unable
to handle variably-sized metadata per file.</t>
      <t>Moreover, we can readily extend network file storage protocols
to exchange a hash tree associated with every file.
However, to support such extensions,
file servers and the ecosystems where they run
must be updated to manage and store this metadata.
Thus it is not merely an issue of enriching a file storage protocol
to handle a new metadata type.</t>
      <section anchor="combining-these-solutions">
        <name>Combining These Solutions</name>
        <t>The root hash of a hash tree is itself
a fixed-size piece of metadata
similar to a linear hash.
The only disadvantage is that a verifier must
reconstitute the hash tree using the root hash
and the file content.
However, if the verifier caches each tree on local trusted storage,
that is as good as storing the whole tree.
The verifier can then use the locally cached tree
to validate portions of the file it protects
without reading each file repeatedly
from remote or untrusted durable storage.</t>
        <t>To further insulate a root hash from unwanted change,
an attestor can protect it with a cryptographic signature.
This cryptographic protection then additionally covers
the entire hash tree and the file content it protects.</t>
        <t>This integrity protection is
independent of the file's storage format
and
its underlying durable media.
The file (and the root hash that protects it) can be copied,
transmitted over networks,
or
backed up and restored
while it remains protected end-to-end.</t>
      </section>
      <section anchor="efficient-content-verification">
        <name>Efficient Content Verification</name>
        <t>We now have a small fixed-size piece of metadata
that can protect potentially huge files.
The trade-off is that
the verifier must reconstitute the hash tree
during file installation or on-demand.
File systems or remote filesystem clients
can store or cache reconstituted trees in:</t>
        <ul spacing="normal">
          <li>Volatile or non-volatile memory</li>
          <li>A secure database</li>
          <li>A private directory on a local filesystem</li>
          <li>A named attribute or stream associated with the file</li>
        </ul>
        <t>An easily accessible copy of a file's hash tree
enables frequent verification of file content.
Frequent verification protects that content
against unwanted changes due to local storage or copying errors,
malicious activity,
or data retention issues.
When verification is truly efficient, it can take place
as often as during every application read operation
without a significant impact on throughput.</t>
        <t>The current document's unique contribution is
the use of an X.509 v3 certificate
to encapsulate the representation of a hash tree.
The purpose of encapsulation is to
enable the hash tree metadata
to be exchanged
and
recognized broadly
in the Internet community.
Therefore each certificate has to:</t>
        <ul spacing="normal">
          <li>Cryptographically protect the integrity of the hash tree metadata</li>
          <li>Bind the hash tree metadata to the authenticated identity of the file content's attestor</li>
          <li>Provide for a broadly-supported standard set of cryptographic algorithms</li>
          <li>Represent the hash tree data in a commonly recognized format that is independent of storage media</li>
        </ul>
        <t>Lastly, we note that a standard representation
of hash tree metadata enables opportunities for
hardware offload of content verification.</t>
      </section>
      <section anchor="related-work">
        <name>Related Work</name>
        <t>Granted in 1982, expired US patent 4309569 <xref target="Merkle82"/>
covers the construction of a tree of digests.
Initially, these "Merkle trees" helped
improve the security of digital signatures.
Later they were used in storage integrity applications such as
<xref target="Mykletun06"/>.
They have also found their way into other domains.
<xref target="RFC6962"/>, published in 2013,
uses Merkle trees to manage log auditing, for example.</t>
        <t>A Tiger tree is a form of a hash tree
often used by P2P protocols to verify a file's integrity
while in transit.
The Tree Hash EXchange format <xref target="THEX03"/>
enables the transmission of whole Tiger trees in an XML format.
The current document proposes similar usage
where a sidecar hash tree protects file content
but reduces the integrity metadata's size.</t>
      </section>
    </section>
    <section anchor="requirements-language">
      <name>Requirements Language</name>
      <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>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
    </section>
    <section anchor="hash-tree-metadata">
      <name>Hash Tree Metadata</name>
      <t>Reconstituting a hash tree
(as opposed to building a more generic directed graph of hashes)
requires
the protected content,
a basic set of metadata,
and an understanding of how to use the metadata
to reconstitute the hash tree:</t>
      <ul spacing="normal">
        <li>The algorithm used to compute the tree's digests</li>
        <li>The divergence factor (defined as one for a hash list and two for binary hash trees)</li>
        <li>The tree height (from root to the lowest leaf node)</li>
        <li>The block size covered by each leaf node in the tree</li>
        <li>An optional salt value</li>
      </ul>
      <t>More research might be needed to cover recent innovations
in hash tree construction;
in particular, the use of prefixes to prevent
second pre-image attacks.</t>
      <t>The digest algorithm used to construct the hash tree <bcp14>MUST</bcp14>
match the digest algorithm used to sign the certificate.
Thus if SHA-2 is used to construct the hash tree,
the certificate signature is created with SHA-2.
The verifier then uses SHA-2
when validating the certificate signature
and
reconstituting the hash tree.
The object identifiers for the supported algorithms
and the methods for encoding public key materials
(public key and parameters)
are specified in
<xref target="RFC3279"/>, <xref target="RFC4055"/>, and <xref target="RFC4491"/>.</t>
      <t>The block size value of the tree is specified in octets.
For example, if the block size is 4096,
then each leaf node of the hash tree digests
4096 octets of the protected file (aligned on 4096-octet boundaries).</t>
      <t>The internal nodes are digests
constructed from the hashes of two adjacent child nodes up to the root node
(further detail needed here).
The tree's height is the distance,
counted in nodes, from the root to the lowest leaf node.</t>
      <t>The leaf nodes are ordered (left to right)
by the file offset of the block they protect.
Thus, the left-most leaf node represents
the first block in the file,
and the right-most leaf node represents the final block in the file.</t>
      <t>An explanation of the salt value goes here.</t>
      <t>Further, when computing each digest,
an extra byte might be prefixed to the pre-digested content
to reduce the possibility of a second-preimage attack.</t>
    </section>
    <section anchor="file-provenance-certificates">
      <name>File Provenance Certificates</name>
      <aside>
        <t>RFC Editor: In the following subsections,
please replace the letters II
once IANA has allocated this value.
Furthermore, please remove this Editor's Note
before this document is published.</t>
      </aside>
      <t>X.509 certificates are specified in <xref target="X.509"/>.
The current document extends
the Internet X.509 certificate profile specified in <xref target="RFC5280"/>
to represent file content protected by hash tree metadata.</t>
      <t>File provenance certificates are end-entity certificates.
The certificate's signature
identifies the attestor
and
cryptographically protects the hash tree metadata.</t>
      <t>The Subject field <bcp14>MUST</bcp14> be an empty sequence.
The SubjectAltName list carries
a filename
and
the root hash,
encoded in a new otherName type-ID, shown below.
The current document requests allocation
of this new type-ID on the id-on arc,
defined in <xref target="RFC7299"/>.
The following subsections describe
how the fields in this new type-ID are used.</t>
      <sourcecode type="asn.1"><![CDATA[
  id-pkix OBJECT IDENTIFIER ::=
             { iso(1) identified-organization(3) dod(6) internet(1)
                        security(5) mechanisms(5) pkix(7) }
  id-on OBJECT IDENTIFIER ::= { id-pkix 8 }
  id-on-fileContentAttestation OBJECT IDENTIFIER ::= { id-on II }
  FileContentAttestation ::= SEQUENCE {
     treeRootDigest OCTET STRING,
     treeDivergenceFactor INTEGER  (1..2),
     treeHeight INTEGER,
     treeBlockSize INTEGER,
     treeSaltValue OCTET STRING
  }
]]></sourcecode>
      <section anchor="new-certificate-fields">
        <name>New Certificate Fields</name>
        <section anchor="root-hash">
          <name>Root Hash</name>
          <t>The root digest field stores the digest
that appears at the root of the represented Merkle tree.
The digest appears as a hexadecimal integer.</t>
        </section>
        <section anchor="divergence-factor">
          <name>Divergence Factor</name>
          <t>The value in the tree divergence factor field represents
the maximum number of children nodes each node has
in the represented Merkle tree.
A value of two, for example,
means each node (except the leaf nodes) has no more than two children.</t>
        </section>
        <section anchor="tree-height">
          <name>Tree Height</name>
          <t>The tree height field stores
the distance from the represented Merkle tree's root node
to its lowest leaf node.
A value of one, for example,
means the tree has a single level at the root.</t>
        </section>
        <section anchor="block-size">
          <name>Block Size</name>
          <t>The block size field contains
the number of file content bytes
represented by each digest (node) in the Merkle tree.
A typical value is 4096,
meaning each node in the tree contains
a digest of up to 4096 bytes,
starting on 4096-byte boundaries.</t>
        </section>
        <section anchor="salt-value">
          <name>Salt Value</name>
          <t>The tree salt value is
a hexadecimal integer
combined with the digest values
in some way that I have to look up.
If the tree salt value is zero,
salting is not to be used
when reconstituting the represented Merkle tree.</t>
        </section>
      </section>
      <section anchor="extended-key-usage-values">
        <name>Extended Key Usage Values</name>
        <t><xref section="4.2.1.12" sectionFormat="of" target="RFC5280"/> specifies the
extended key usage X.509 certificate extension.
This extension, which may appear in end-entity certificates,
indicates one or more purposes for which the certified public key
may be used in addition to or in place of
the basic purposes indicated in the key usage extension.</t>
        <t>The inclusion of the codeSigning value (id-kp-codeSigning) indicates
that the certificate has been issued for the purpose of allowing
the holder to verify the integrity and provenance of file content.</t>
      </section>
      <section anchor="validating-certificates-and-their-signatures">
        <name>Validating Certificates and their Signatures</name>
        <t>When validating a certificate containing hash tree metadata,
validation <bcp14>MUST</bcp14> include the verification rules per <xref target="RFC5280"/>.</t>
        <t>The validator reconstitutes a hash tree using
the presented file content
and
the hash tree metadata in the certificate.
If the root hash of the reconstituted hash tree
does not match the value contained in the treeRootHash,
then the validation fails.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>.
The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.</t>
      <t>Please note that the listing of any individual implementation here
does not imply endorsement by the IETF.
Furthermore, no effort has been spent to verify the information
presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.
Readers are advised to note that other implementations may exist.</t>
      <t>There are no known implementations of the X.509 certificate extensions
described in the current document.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>It is important to note the narrow meaning of the digital
signature in X.509 certificates as defined in this document.
That signature connotes that the data content of the certificate
has not changed since the certificate was signed,
and it identifies the signer cryptographically.
The signature does not confer any meaning or guarantees
other than the integrity of the certificate's data content.</t>
      <section anchor="x509-certificate-vulnerabilities">
        <name>X.509 Certificate Vulnerabilities</name>
        <t>The file content and hash tree can be unpacked
and then resigned by someone who participates
in the same web of trust as the original content creator.
Verifiers should consult appropriate certificate revocation databases
as part of validating attestor signatures to mitigate this form of attack.</t>
      </section>
      <section anchor="hash-tree-collisions-and-pre-image-attacks">
        <name>Hash Tree Collisions and Pre-Image Attacks</name>
        <t>A typical attack against digest algorithms is a collision attack.
The usual mitigation for this form of attack is
choosing a hash algorithm known to be strong.
Implementers <bcp14>SHOULD</bcp14> choose amongst digest algorithms that are
known to be resistant to pre-image attacks.
See <xref target="RFC4270"/> for a discussion of attacks on
digest algorithms typically used in Internet protocols.</t>
        <t>Hash trees are subject to a particular type of collision attack
called a "second pre-image attack".
Digest values in intermediate nodes in a hash tree
are generated from lower nodes.
Executing a collision attack to replace a subtree
with content that hashes to the same value
does not change the root hash value
and is more manageable than replacing all of a file's content.
This kind of attack can occur
independently of the strength of the tree's hash algorithm.
The tree height is included in the signed metadata to mitigate this form of attack.</t>
      </section>
      <section anchor="file-content-vulnerabilities">
        <name>File Content Vulnerabilities</name>
        <t>There are two broad categories of attacks
on mechanisms that protect the integrity of file content:</t>
        <dl>
          <dt>Overt corruption</dt>
          <dd>
            <t>An attacker makes the file's content dubious or unusable (depending on the end system's security policies) by corrupting either the file's content or its protective metadata in a detectable manner.</t>
          </dd>
          <dt>Silent corruption</dt>
          <dd>
            <t>An attacker alters the file's content and its protective metadata in synchrony such that any changes remain undetected.</t>
          </dd>
        </dl>
        <t>The goal of the current document's mechanism is to turn
as many instances of the latter as possible
into the former,
which are more likely to identify corrupted content before it is consumed.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <aside>
        <t>RFC Editor: In the following subsections,
please replace RFC-TBD with the RFC number assigned to this document,
and
please replace II with the number assigned to this new type-ID.
Furthermore, please remove this Editor's Note
before this document is published.</t>
      </aside>
      <section anchor="object-identifiers-for-hash-tree-metadata">
        <name>Object Identifiers for Hash Tree Metadata</name>
        <t>Following the "Specification Required" policy
as defined in <xref section="4.6" sectionFormat="of" target="RFC8126"/>,
the author of the current document requests
several new type-ID OIDs on the id-on arc defined in
<xref section="2" sectionFormat="of" target="RFC7299"/>.
The registry for this arc is maintained at the following URL:
<eref target="https://www.iana.org/assignments/smi-numbers/smi-numbers.xhtml#smi-numbers-1.3.6.1.5.5.7.8"/></t>
        <t>Following <xref target="RFC5280"/>,
the current document requests newly-defined objects in the following subsections
using 1988 ASN.1 notation.</t>
        <sourcecode type="asn.1"><![CDATA[
  id-pkix OBJECT IDENTIFIER ::=
             { iso(1) identified-organization(3) dod(6) internet(1)
                        security(5) mechanisms(5) pkix(7) }
  id-on OBJECT IDENTIFIER ::= { id-pkix 8 }
  id-on-fileContentAttestation OBJECT IDENTIFIER ::= { id-on II }
]]></sourcecode>
        <t>IANA should use the current document (RFC-TBD)
as the reference for these new entries.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC3279">
          <front>
            <title>Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="L. Bassham" initials="L." surname="Bassham">
              <organization/>
            </author>
            <author fullname="W. Polk" initials="W." surname="Polk">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <date month="April" year="2002"/>
            <abstract>
              <t>This document specifies algorithm identifiers and ASN.1 encoding formats for digital signatures and subject public keys used in the Internet X.509 Public Key Infrastructure (PKI).  Digital signatures are used to sign certificates and certificate revocation list (CRLs).  Certificates include the public key of the named subject.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3279"/>
          <seriesInfo name="DOI" value="10.17487/RFC3279"/>
        </reference>
        <reference anchor="RFC4055">
          <front>
            <title>Additional Algorithms and Identifiers for RSA Cryptography for use in the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization/>
            </author>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <date month="June" year="2005"/>
            <abstract>
              <t>This document supplements RFC 3279.  It describes the conventions for using the RSA Probabilistic Signature Scheme (RSASSA-PSS) signature algorithm, the RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-OAEP) key transport algorithm and additional one-way hash functions with the Public-Key Cryptography Standards (PKCS) #1 version 1.5 signature algorithm in the Internet X.509 Public Key Infrastructure (PKI).  Encoding formats, algorithm identifiers, and parameter formats are specified.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4055"/>
          <seriesInfo name="DOI" value="10.17487/RFC4055"/>
        </reference>
        <reference anchor="RFC4491">
          <front>
            <title>Using the GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94 Algorithms with the Internet X.509 Public Key Infrastructure Certificate and CRL Profile</title>
            <author fullname="S. Leontiev" initials="S." role="editor" surname="Leontiev">
              <organization/>
            </author>
            <author fullname="D. Shefanovski" initials="D." role="editor" surname="Shefanovski">
              <organization/>
            </author>
            <date month="May" year="2006"/>
            <abstract>
              <t>This document supplements RFC 3279.  It describes encoding formats, identifiers, and parameter formats for the algorithms GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94 for use in Internet X.509 Public Key Infrastructure (PKI).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4491"/>
          <seriesInfo name="DOI" value="10.17487/RFC4491"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper">
              <organization/>
            </author>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="W. Polk" initials="W." surname="Polk">
              <organization/>
            </author>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet.  An overview of this approach and model is provided as an introduction.  The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms.  Standard certificate extensions are described and two Internet-specific extensions are defined.  A set of required certificate extensions is specified.  The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions.  An algorithm for X.509 certification path validation is described.  An ASN.1 module and examples are provided in the appendices.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="X.509">
          <front>
            <title>ITU-T X.509 - Information technology - The Directory: Public-key and attribute certificate frameworks.</title>
            <author>
              <organization>International Telephone and Telegraph Consultative Committee</organization>
            </author>
            <date year="2019" month="January"/>
          </front>
        </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">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC4270">
          <front>
            <title>Attacks on Cryptographic Hashes in Internet Protocols</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization/>
            </author>
            <author fullname="B. Schneier" initials="B." surname="Schneier">
              <organization/>
            </author>
            <date month="November" year="2005"/>
            <abstract>
              <t>Recent announcements of better-than-expected collision attacks in popular hash algorithms have caused some people to question whether common Internet protocols need to be changed, and if so, how.  This document summarizes the use of hashes in many protocols, discusses how the collision attacks affect and do not affect the protocols, shows how to thwart known attacks on digital certificates, and discusses future directions for protocol designers.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4270"/>
          <seriesInfo name="DOI" value="10.17487/RFC4270"/>
        </reference>
        <reference anchor="RFC6962">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Kasper" initials="E." surname="Kasper">
              <organization/>
            </author>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves.  The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="RFC7299">
          <front>
            <title>Object Identifier Registry for the PKIX Working Group</title>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <date month="July" year="2014"/>
            <abstract>
              <t>When the Public-Key Infrastructure using X.509 (PKIX) Working Group was chartered, an object identifier arc was allocated by IANA for use by that working group.  This document describes the object identifiers that were assigned in that arc, returns control of that arc to IANA, and establishes IANA allocation policies for any future assignments within that arc.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7299"/>
          <seriesInfo name="DOI" value="10.17487/RFC7299"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer">
              <organization/>
            </author>
            <author fullname="A. Farrel" initials="A." surname="Farrel">
              <organization/>
            </author>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section.  This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory.  Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications.  This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="FIPS.180-4">
          <front>
            <title>Secure Hash Standard</title>
            <author fullname="Quynh H. Dang" initials="Q." surname="Dang">
              <organization/>
            </author>
            <date month="July" year="2015"/>
          </front>
          <seriesInfo name="National Institute of Standards and Technology" value="report"/>
          <seriesInfo name="DOI" value="10.6028/nist.fips.180-4"/>
        </reference>
        <reference anchor="Merkle88">
          <front>
            <title>A Digital Signature Based on a Conventional Encryption Function</title>
            <author fullname="Ralph C. Merkle" initials="R." surname="Merkle">
              <organization/>
            </author>
            <date year="1988"/>
          </front>
          <seriesInfo name="Advances in Cryptology - CRYPTO '87" value="pp. 369-378"/>
          <seriesInfo name="DOI" value="10.1007/3-540-48184-2_32"/>
        </reference>
        <reference anchor="Mykletun06">
          <front>
            <title>Authentication and integrity in outsourced databases</title>
            <author fullname="Einar Mykletun" initials="E." surname="Mykletun">
              <organization/>
            </author>
            <author fullname="Maithili Narasimha" initials="M." surname="Narasimha">
              <organization/>
            </author>
            <author fullname="Gene Tsudik" initials="G." surname="Tsudik">
              <organization/>
            </author>
            <date month="May" year="2006"/>
          </front>
          <seriesInfo name="ACM Transactions on Storage" value="Vol. 2, pp. 107-138"/>
          <seriesInfo name="DOI" value="10.1145/1149976.1149977"/>
        </reference>
        <reference anchor="Merkle82">
          <front>
            <title>Method of providing digital signatures</title>
            <author initials="R." surname="Merkle" fullname="Ralph Merkle">
              <organization/>
            </author>
            <date year="1982" month="January"/>
          </front>
        </reference>
        <reference anchor="THEX03" target="http://www.nuke24.net/docs/2003/draft-jchapweske-thex-02.html">
          <front>
            <title>Tree Hash EXchange format (THEX)</title>
            <author initials="J." surname="Chapweske" fullname="Justin Chapweske">
              <organization>Onion Networks, Inc.</organization>
            </author>
            <author initials="G." surname="Mohr" fullname="Gordon Mohr">
              <organization>Bitzi, Inc.</organization>
            </author>
            <date year="2003" month="January"/>
          </front>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The editor is grateful to
Bill Baker,
Eric Biggers,
James Bottomley,
Russ Housley,
Benjamin Kaduk,
Rick Macklem,
Greg Marsden,
Paul Moore,
Martin Thomson,
and
Mimi Zohar
for their input and support.</t>
      <t>Finally, special thanks to
Transport Area Directors
Martin Duke
and
Zaheduzzaman Sarker,
NFSV4 Working Group Chairs
David Noveck
and
Brian Pawlowski,
and
NFSV4 Working Group Secretary
Thomas Haynes
for their guidance and oversight.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1c2XLbSJZ9z6/AuB5KmiBpSZYXaaYrWrbksqpt2WPJ7qWi
owMkkiRKIMBGApJZDve3zLfMl80592YCyUXVERMzb1MVYZFYMm/evMu5S3I4
HBrT5E1hT5OzprGuSZu8KpNqmrzOC5u8qsrGlk3SurycJWmZ/Gn09OAkeWXr
Jp/mk7SxJh2Pa3t3mrxJ3Ty5qa1NLvFOPZmn5cwmr6t6kTYmqyZX6QKTZHU6
bYYTWwzLqbs7Hs7x1rDBW8O8f2s4lbeGB08Mp5hV9eo0cU1m8mV9mjR165qj
g4OTgyOT1jY9xaxp6ZZV3Zj7qr6d1VW7PE2ubMNvuo7rlWvsIvlsa8flHZtq
7KrCYsGnpl1mqXzA4svsb2lRlSB0ZZ1Z5qfJz001GSQOg9d26vBptdAPWNIi
XS7Bl78ak7bNvKpPTZLkpTtNXo2St/bO1vheyrJfzdO6sK67WlfkuM3ypuLX
qp6dJu/rdCIsr7EU2QbcCdzVm7gwqdqyIT8+lXljs+S6IfHcsLOFrbEleMYu
0rw4TSbzdnI7Kjjl7yt5fzSpFsaUwt38zoLej69fPTl6fqKfjg+ePvWfjk8O
9dPToxcH+unF4dEzfBIJ4EoTLzePLm8+DW+8ZAyx+7p75HNjJ/OyKqrZCjdu
5jY5z2s7aWQ/P7TjIp8Mb+0KcpUladPU+bhtbDLphSuZ1mAft9GNHnHKns+J
55oIWynTpUVyYwu7nGMDZUx+m9Xpck45dm3RyKrxZbHIIexkZ8K9P00OD4ZH
B4cnxuSB+sCd46Pnfv3PTp4d6afnRyeeY89Pjnnt9eWH69Hhi4Ph8Wly/v5y
dHgwenZw9OLx1eX1zai/aZJ3tr4t7IsX3WOHBwfPHz8ZPj3G7ReHL46HR397
coTnVnisacuDZ/2Th8dPH+Ofk5Pnz0b693k34FG8Ie8smJRRJJZ1dZdnVN0s
n+UNGOTyGZjV1pDuTXaK5H4c+SH1mkrvx7QAD/vrnmfDw5MXoPXmzcWfDp7E
BIgVEHtw8SdvB5SryR4f3t+aeqh/PA0/jagvy3vrbm24oYT8BM3Py+27qj8l
Rc6rPRT0spyMdg3/I5ZYzev1kX+s6gxvxzdk0Jd582vej6UrfwJhgW3igtN6
ZpvTZN40y9PHj+/v70dle2uPjkelbR7DRLjHfPSxmr1fJoHwYTO3X4YHR6N5
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

-->

</rfc>
