<?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-rfc2629 version 1.5.16 -->
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cel-nfsv4-hash-tree-interchange-format-02" category="std" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.11.1 -->
  <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-02"/>
    <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="2021" month="November" day="08"/>
    <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" numbered="true" toc="default">
      <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" format="default"/>.</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" format="default"/>.
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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <name>Related Work</name>
        <t>Granted in 1982, expired US patent 4309569 <xref target="Merkle82" format="default"/>
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" format="default"/>.
They have also found their way into other domains.
<xref target="RFC6962" format="default"/>, 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" format="default"/>
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" numbered="true" toc="default">
      <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" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they
appear in all capitals, as shown here.</t>
    </section>
    <section anchor="hash-tree-metadata" numbered="true" toc="default">
      <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" format="default"/>, <xref target="RFC4055" format="default"/>, and <xref target="RFC4491" format="default"/>.</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" numbered="true" toc="default">
      <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" format="default"/>.
The current document extends
the Internet X.509 certificate profile specified in <xref target="RFC5280" format="default"/>
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" format="default"/>.
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="root-hash" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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 anchor="validating-certificates-and-their-signatures" numbered="true" toc="default">
        <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" format="default"/>.</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" numbered="true" toc="default">
      <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" format="default"/>.
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" numbered="true" toc="default">
      <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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
        <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" format="default"/> 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" numbered="true" toc="default">
        <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" numbered="true" toc="default">
      <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" numbered="true" toc="default">
        <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" format="default"/>,
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" format="default"/>.
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" format="default"/>,
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" toc="default">
      <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:
H4sIAFcyiWEAA+1c6XIbuXb+j6dAPD9GSpHUYnmRkjsV2ZJtTbzF0vguU1O3
QDZIYtQLb6NbMsfl+yx5ljxZzncO0I0mqblVqeRfZqosshfg4OAs31nA8Xis
VOOa3J7p86axvjGNq0pdzfUrl1v9siobWza69a5caFPqP02eHJ7ql7Zu3NzN
TGOVmU5re3em3xi/1De1tfqK3qlnS1MurH5V1YVpVFbN3puCJslqM2/GM5uP
y7m/Oxkv6a1xQ2+NXf/WeM5vjQ+PFaZYVPX6TPsmU25Vn+mmbn1zfHh4SrdN
bc0ZzWpKv6rqRt1X9e2irtrVmX5vG3yTdVyvfWML/dnWHss7UdXUV7mlBZ+p
dpUZ/kCLL7O/mrwqidC19WrlzvTPTTUbaU+D13bu6dO6kA+0pMKsVsSXX5Qy
bbOs6jOltSv9mX450W/tna3pe8nLfrk0dW59d7WuwHGbuabC16penOkPtZkx
y2taCm8D3YnclZt0YVa1ZQN+/FS6xmb6ugHx2LDzwta0JfSMLYzLz/Rs2c5u
Jzmm/LeK35/MqkKpkrnr7izR++nVy8fHz07l08nhkyfh08npkXx6cvz8UD49
Pzp+Sp9YArBSHeTm0dXNT+ObIBlj2n3ZPfC5sbNlWeXVYk03bpZWX7jazhre
z4/tNHez8a1dk1xl2jRN7aZtY/WsFy49r4l92EY/eYQpez7rwDUWtpKnM7m+
sbldLWkDeUx8W9RmtYQc+zZveNX0pSgcCTvYqbH3Z/rocHx8eHSqlIvUR+6c
HD8L6396+vRYPj07Pg0ce3Z6gmuvrj5eT46eH45PzvTFh6vJ0eHk6eHx84P3
V9c3k/6m0u9sfZvb58+7x44OD58dPB4/OaHbz4+en4yP//r4mJ5b02NNWx4+
7Z88OnlyQP+cnj57OpG/z7oBj9MNeWeJSRlEYlVXdy6D6mZu4RpikHcLYlZb
k3RvspMl99MkDCnXRHo/mZx42F8PPBsfnT4nWm/eXP7p8HFKAFsBtgeXfwp2
QLiq9/Dw/tbUY/kTaPhxAn1Z3Vt/a+MNIeRH0nxXbt8V/SkhckHtSUGvytlk
1/CvaYnVsh6O/LqqM3o7vcGDvnDNb64fS1b+mITl8DEv2NQL25zpZdOszg4O
7u/vJ2V7a49PJqVtDshE+AM8eiBm79dZJHzcLO0Xsm+TZVPkSo3HY9J035CS
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
sGyi/htjS2d30EsAAA==

-->

</rfc>
