<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent" [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5652 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml">
<!ENTITY RFC5869 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5869.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC5911 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5911.xml">
<!ENTITY RFC5912 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5912.xml">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" number="XXXX" submissionType="IETF" category="std" consensus="yes" ipr="trust200902" obsoletes="" updates="" xml:lang="en" symRefs="true" tocInclude="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.22.3 -->
  <front>
    <title abbrev="HKDF OIDs">Algorithm Identifiers for the HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
    <seriesInfo name="RFC" value="XXXX"/>
    <author fullname="Russell Housley" initials="R." surname="Housley">
      <organization abbrev="Vigil Security">Vigil Security, LLC</organization>
      <address>
        <postal>
          <street>515 Dranesville Road</street>
          <street>Herndon, VA 20170</street>
          <street>United States of America</street>
        </postal>
        <email>housley@vigilsec.com</email>
      </address>
    </author>
    <date month="June" year="2019"/>
    <keyword>HKDF, Algorithm Identifier</keyword>
    <abstract>
      <t>
   RFC 5869 specifies the HMAC-based Extract-and-Expand Key Derivation
   Function (HKDF) algorithm.  This document assigns algorithm
   identifiers to the HKDF algorithm when used with three common one-way
   hash functions.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="section-1" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
   The HKDF algorithm <xref target="RFC5869" format="default"/> is a key derivation function based on
   the Hashed Message Authentication Code (HMAC).  This document assigns
   algorithm identifiers to the HKDF algorithm when used with three
   common one-way hash functions.  These algorithm identifiers are
   needed to make use of the HKDF in some security protocols, such as
   the Cryptographic Message Syntax (CMS) <xref target="RFC5652" format="default"/>.</t>
      <section anchor="section-1.1" numbered="true" toc="default">
        <name>Terminology</name>
        <t>
   
       
    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
    NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
    "MAY", and "OPTIONAL" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> 
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
      <section anchor="section-1.2" numbered="true" toc="default">
        <name>ASN.1</name>
        <t>
   In this specification, values are generated using ASN.1 <xref target="X.680" format="default"/> using
   the Basic Encoding Rules (BER) and the Distinguished Encoding Rules
   (DER) <xref target="X.690" format="default"/>.</t>
      </section>
    </section>
    <section anchor="section-2" numbered="true" toc="default">
      <name>HKDF Algorithm Identifiers</name>
      <!-- [rfced] random test note. -->
      <t>
   This section assigns three algorithm identifiers to HKDF <xref target="RFC5869" format="default"/> used with
   three common one-way hash functions that are specified in <xref target="SHS" format="default"/>:
   SHA-256, SHA-384, and SHA-512.  When any of these three object
   identifiers appear within the ASN.1 type AlgorithmIdentifier, the
   parameters component of that type SHALL be absent.</t>
      <t>
   The specification of AlgorithmIdentifier is available in <xref target="RFC5911" format="default"/>,
   which evolved from the original definition in X.509
   <xref target="X.509-88" format="default"/>.</t>
      <t>
   The assigned object identifiers are:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
id-alg-hkdf-with-sha256 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
    us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 28 }

id-alg-hkdf-with-sha384 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
    us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 29 }

id-alg-hkdf-with-sha512 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
    us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 30 }
]]></artwork>
    </section>
    <section anchor="section-3" numbered="true" toc="default">
      <name>ASN.1 Module</name>
      <t>
   This section contains the ASN.1 module for the HKDF algorithm
   identifiers.  This module imports types from other ASN.1 modules that
   are defined in <xref target="RFC5912" format="default"/>.</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
HKDF-OID-2019
  { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
    smime(16) modules(0) id-mod-hkdf-oid-2019(68) }

DEFINITIONS IMPLICIT TAGS ::=
BEGIN

-- EXPORTS All

IMPORTS

AlgorithmIdentifier{}, KEY-DERIVATION
  FROM AlgorithmInformation-2009  -- [RFC5912]
    { iso(1) identified-organization(3) dod(6) internet(1)
      security(5) mechanisms(5) pkix(7) id-mod(0)
      id-mod-algorithmInformation-02(58) } ;

--
-- Object Identifiers
--

id-alg-hkdf-with-sha256 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
    us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 28 }

id-alg-hkdf-with-sha384 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
    us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 29 }

id-alg-hkdf-with-sha512 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
    us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 30 }

--
-- Key Derivation Algorithm Identifiers
--

KeyDevAlgs KEY-DERIVATION ::= {
  kda-hkdf-with-sha256 |
  kda-hkdf-with-sha384 |
  kda-hkdf-with-sha512,
  ... }

kda-hkdf-with-sha256 KEY-DERIVATION ::= {
    IDENTIFIER id-alg-hkdf-with-sha256
    PARAMS ARE absent
    SMIME-CAPS { IDENTIFIED BY id-alg-hkdf-with-sha256 } }

kda-hkdf-with-sha384 KEY-DERIVATION ::= {
    IDENTIFIER id-alg-hkdf-with-sha384
    PARAMS ARE absent
    SMIME-CAPS { IDENTIFIED BY id-alg-hkdf-with-sha384 } }

kda-hkdf-with-sha512 KEY-DERIVATION ::= {
    IDENTIFIER id-alg-hkdf-with-sha512
    PARAMS ARE absent
    SMIME-CAPS { IDENTIFIED BY id-alg-hkdf-with-sha512 } }

END
]]></artwork>
    </section>
    <section anchor="section-4" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
   Despite the simplicity of HKDF, there are many security
   considerations that have been taken into account in the design and
   analysis of this construction.  An exposition of all of these aspects
   is well beyond the scope of this document.  Please refer to <xref target="EPRINT" format="default"/>
   for detailed information, including rationale for the HKDF design.</t>
    </section>
    <section anchor="section-5" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>
   One object identifier for the ASN.1 module in <xref target="section-3" format="default"/> was
   assigned in the "SMI Security for S/MIME Module Identifiers
   (1.2.840.113549.1.9.16.0)" registry <xref target="IANA-MOD" format="default"/>:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
id-mod-hkdf-oid-2019 OBJECT IDENTIFIER ::= {
   iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
   pkcs-9(9) smime(16) mod(0) 68 }
]]></artwork>
      <t>
   Three object identifiers for the HKDF algorithm identifiers were
   assigned in the "SMI Security for S/MIME Algorithms
   (1.2.840.113549.1.9.16.3)" registry <xref target="IANA-ALG" format="default"/>:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
id-alg-hkdf-with-sha256 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
    us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 28 }

id-alg-hkdf-with-sha384 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
    us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 29 }

id-alg-hkdf-with-sha512 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
    us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 30 }
]]></artwork>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="SHS">
          <front>
            <title>Secure Hash Standard (SHS)</title>
            <seriesInfo name="DOI" value="10.6028/NIST.FIPS.180-4"/>
            <seriesInfo name="FIPS" value="PUB 180-4"/>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date month="August" year="2015"/>
          </front>
        </reference>
        <!-- [rfced] updated by RFC 8174 -->
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization/>
            </author>
            <date year="1997" month="March"/>
            <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>
        </reference>
        <reference anchor="RFC5652" target="https://www.rfc-editor.org/info/rfc5652" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <seriesInfo name="DOI" value="10.17487/RFC5652"/>
            <seriesInfo name="RFC" value="5652"/>
            <seriesInfo name="STD" value="70"/>
            <author initials="R." surname="Housley" fullname="R. Housley">
              <organization/>
            </author>
            <date year="2009" month="September"/>
            <abstract>
              <t>This document describes the Cryptographic Message Syntax (CMS).  This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC5869" target="https://www.rfc-editor.org/info/rfc5869" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5869.xml">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <seriesInfo name="DOI" value="10.17487/RFC5869"/>
            <seriesInfo name="RFC" value="5869"/>
            <author initials="H." surname="Krawczyk" fullname="H. Krawczyk">
              <organization/>
            </author>
            <author initials="P." surname="Eronen" fullname="P. Eronen">
              <organization/>
            </author>
            <date year="2010" month="May"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications.  The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization/>
            </author>
            <date year="2017" month="May"/>
            <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>
        </reference>
        <reference anchor="X.680">
          <front>
            <title>Information technology -- Abstract Syntax Notation One (ASN.1): Specification of basic notation</title>
            <seriesInfo name="ISO/IEC" value="8824-1:2015"/>
            <seriesInfo name="ITU-T" value="Recommendation X.680"/>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date month="August" year="2015"/>
          </front>
        </reference>
        <reference anchor="X.690">
          <front>
            <title>Information technology -- ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <seriesInfo name="ISO/IEC" value="8825-1:2015"/>
            <seriesInfo name="ITU-T" value="Recommendation X.690"/>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date month="August" year="2015"/>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="EPRINT" target="https://eprint.iacr.org/2010/264.pdf">
          <front>
            <title>Cryptographic Extraction and Key Derivation: The HKDF Scheme</title>
            <seriesInfo name="Proceedings" value="of CRYPTO 2010"/>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <date month="August" year="2010"/>
          </front>
        </reference>
        <reference anchor="IANA-ALG" target="https://www.iana.org/assignments/smi-numbers/">
          <front>
            <title>SMI Security for S/MIME Algorithms (1.2.840.113549.1.9.16.3)</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="IANA-MOD" target="https://www.iana.org/assignments/smi-numbers/">
          <front>
            <title>SMI Security for S/MIME Module Identifier (1.2.840.113549.1.9.16.0)</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC5911" target="https://www.rfc-editor.org/info/rfc5911" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5911.xml">
          <front>
            <title>New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIME</title>
            <seriesInfo name="DOI" value="10.17487/RFC5911"/>
            <seriesInfo name="RFC" value="5911"/>
            <author initials="P." surname="Hoffman" fullname="P. Hoffman">
              <organization/>
            </author>
            <author initials="J." surname="Schaad" fullname="J. Schaad">
              <organization/>
            </author>
            <date year="2010" month="June"/>
            <abstract>
              <t>The Cryptographic Message Syntax (CMS) format, and many associated formats, are expressed using ASN.1.  The current ASN.1 modules conform to the 1988 version of ASN.1.  This document updates those ASN.1 modules to conform to the 2002 version of ASN.1.  There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax.  This document is not an Internet Standards Track  specification; it is published for informational purposes.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC5912" target="https://www.rfc-editor.org/info/rfc5912" xml:base="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5912.xml">
          <front>
            <title>New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)</title>
            <seriesInfo name="DOI" value="10.17487/RFC5912"/>
            <seriesInfo name="RFC" value="5912"/>
            <author initials="P." surname="Hoffman" fullname="P. Hoffman">
              <organization/>
            </author>
            <author initials="J." surname="Schaad" fullname="J. Schaad">
              <organization/>
            </author>
            <date year="2010" month="June"/>
            <abstract>
              <t>The Public Key Infrastructure using X.509 (PKIX) certificate format, and many associated formats, are expressed using ASN.1.  The current ASN.1 modules conform to the 1988 version of ASN.1.  This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="X.509-88">
          <front>
            <title>Recommendation X.509: The Directory - Authentication Framework</title>
            <author>
              <organization>CCITT</organization>
            </author>
            <date year="1988"/>
          </front>
        </reference>
      </references>
    </references>
  </back>
</rfc>
