<?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.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ounsworth-lamps-cms-dhkem-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <front>
    <title abbrev="CMS DHKEM">Use of the DH-Based KEM (DHKEM) in the Cryptographic Message Syntax (CMS)</title>
    <seriesInfo name="Internet-Draft" value="draft-ounsworth-lamps-cms-dhkem-00"/>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road – Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="J." surname="Gray" fullname="John Gray">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road – Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>john.gray@entrust.com</email>
      </address>
    </author>
    <author initials="R." surname="Housley" fullname="Russ Housley">
      <organization abbrev="Vigil Security">Vigil Security, LLC</organization>
      <address>
        <postal>
          <city>Herndon, VA</city>
          <country>US</country>
        </postal>
        <email>housley@vigilsec.com</email>
      </address>
    </author>
    <date year="2023" month="August" day="25"/>
    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 66?>

<t>The DHKEM Algorithm is a one-pass (store-and-forward)
mechanism for establishing keying data to a recipient using the
recipient's Diffie-Hellman or elliptic curve Diffie-Hellman public key.
This document defines a mechanism
to wrap Ephemeral-Static (E-S) Diffie-Hellman (DH) and Elliptic Curve
Diffie-Hellman (ECDH) such that it can be used in KEM interfaces
within the Cryptographic Message Syntax (CMS).
This is a sister document to RSA-KEM <xref target="RFC5990"/> and simplifies future
cryptographic protocol design by only needing to handle KEMs at the
protocol level.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://EntrustCorporation.github.io/cms-dhkem/draft-ietf-ounsworth-cms-dhkem.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ounsworth-lamps-cms-dhkem/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Limited Additional Mechanisms for PKIX and SMIME (lamps) Working Group mailing list (<eref target="mailto:spasm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/spasm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/spasm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/EntrustCorporation/cms-dhkem"/>.</t>
    </note>
  </front>
  <middle>
    <?line 80?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Cryptographic Message Syntax (CMS) enveloped-data content type
<xref target="RFC5652"/> and the CMS authenticated-enveloped-data content type
<xref target="RFC5083"/> support both key transport and key agreement algorithms to
establish the key used to encrypt the content.  In recent years,
cryptographers have be specifying Key Encapsulation Mechanism (KEM)
algorithms, including quantum-secure KEM algorithms.  This document
defines conventions for wrapping Diffie-Hellman Ephemeral-Static (E-S)
Diffie-Hellman (DH) and Elliptic Curve Diffie-Hellman (ECDH) to fit the
KEM interface for the CMS enveloped-data content type and the CMS
authenticated-enveloped-data content type as defined in
<xref target="I-D.ietf-lamps-cms-kemri"/>.
This is a parallel mechanism to <xref target="RFC5990"/> which does the same for RSA.
The benefit is to allow forward-compatibility of older DH-based ciphers
into new mechanisms that only support KEMs.</t>
      <t>A KEM algorithm is a one-pass (store-and-forward) mechanism for
transporting random keying material to a recipient using the recipient's
public key.  The recipient's private key is needed to recover the random
keying material, which is then treated as a pairwise shared secret
between the originator and recipient.  A KEM algorithm provides three
functions:</t>
      <ul spacing="normal">
        <li>KeyGen() -&gt; (pk, sk):</li>
      </ul>
      <ul empty="true">
        <li>
          <t>Generate the public key (pk) and a private key (sk).</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>Encapsulate(pk) -&gt; (ct, ss):</li>
      </ul>
      <ul empty="true">
        <li>
          <t>Given the recipient's public key (pk), produce a ciphertext (ct) to be
passed to the recipient and shared secret (ss) for the originator.</t>
        </li>
      </ul>
      <ul spacing="normal">
        <li>Decapsulate(sk, ct) -&gt; ss:</li>
      </ul>
      <ul empty="true">
        <li>
          <t>Given the private key (sk) and the ciphertext (ct), produce the
shared secret (ss) for the recipient.</t>
        </li>
      </ul>
      <t>To support a particular KEM algorithm, the CMS originator <bcp14>MUST</bcp14> implement
Encapsulate().</t>
      <t>To support a particular KEM algorithm, the CMS recipient <bcp14>MUST</bcp14> implement
KeyGen() and Decapsulate().  The recipient's public key is usually
carried in a certificate <xref target="RFC5280"/>.</t>
      <t>This draft follows the DH-Based KEM (DHKEM) construction defined in
<xref target="RFC9180"/> whereby the <tt>Encapsulate()</tt> operation includes the
generation of an ephemeral key and the usage of that key against the
recipient's static public key.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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>
      <?line -18?>

</section>
    <section anchor="cryptographic-dependencies">
      <name>Cryptographic dependencies</name>
      <section anchor="key-derivation-function">
        <name>Key Derivation Function</name>
        <t>A key derivation function (KDF):</t>
        <ul spacing="normal">
          <li>
            <tt>Extract(salt, ikm)</tt>: Extract a pseudorandom key of fixed length <tt>keyLength</tt> bytes from input keying material <tt>ikm</tt> and an optional byte string <tt>salt</tt>.</li>
          <li>
            <tt>Expand(prk, info, L)</tt>: Expand a pseudorandom key <tt>prk</tt> using optional string info into <tt>L</tt> bytes of output keying material.</li>
          <li>
            <tt>keyLength</tt>: The output size of the <tt>Extract()</tt> function in bytes.</li>
        </ul>
      </section>
      <section anchor="elliptic-curve-diffie-hellman">
        <name>(Elliptic Curve) Diffie Hellman</name>
        <t>An elliptic curve or finite field Diffie-Hellman group providing the following operations:</t>
        <ul spacing="normal">
          <li>
            <tt>GenerateKeyPair()</tt>: create a new DH key.</li>
          <li>
            <tt>DH(skX, pkY)</tt>: Perform a non-interactive Diffie-Hellman exchange using the private key <tt>skX</tt> and public key <tt>pkY</tt> to produce a Diffie-Hellman shared secret of length <tt>Ndh</tt>. This function can raise a ValidationError as described in <xref target="RFC9180"/> Section 7.1.4.</li>
        </ul>
      </section>
    </section>
    <section anchor="dh-based-kem-dhkem">
      <name>DH-Based KEM (DHKEM)</name>
      <t>This is a straightforward application of the DHKEM construction from
<xref target="RFC9180"/> section 4.1 which is to be used unmodified.</t>
      <t>CMS encrypt operations performed by the sender are to use <tt>Encap(pkR)</tt>.
CMS decrypt operations performed by the received are to use <tt>Decap(enc, skR)</tt>.</t>
      <t>The authenticated modes, <tt>AuthEncap(pkR, skS)</tt> and <tt>AuthDecap(enc, skR, pkS)</tt>
do not apply to CMS.</t>
    </section>
    <section anchor="asn1-module">
      <name>ASN.1 Module</name>
      <t>In order to carry a DHKEM inside a CMS KEMRecipientInfo <xref target="I-D.ietf-lamps-cms-kemri"/>,
we define <tt>id-kem-dhkem</tt>, <tt>kema-dhkem</tt>, and <tt>DHKemParameters</tt>.</t>
      <artwork><![CDATA[
CMS-DHKEM-2023
    { iso(1) member-body(2) us(840) rsadsi(113549)
      pkcs(1) pkcs-9(9) smime(16) modules(0)
      id-mod-cms-dhkem-2023(TBDMOD) }

  DEFINITIONS IMPLICIT TAGS ::=
  BEGIN
  -- EXPORTS ALL;

  IMPORTS

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

   KEM-ALGORITHM
     FROM KEMAlgorithmInformation-2023 -- [I-D.ietf-lamps-cms-kemri]
       { iso(1) identified-organization(3) dod(6) internet(1)
         security(5) mechanisms(5) pkix(7) id-mod(0)
         id-mod-kemAlgorithmInformation-2023(99) }

   pk-dh, pk-ec
     FROM PKIXAlgs-2009
       { iso(1) identified-organization(3) dod(6) internet(1)
         security(5) mechanisms(5) pkix(7) id-mod(0)
         id-mod-pkix1-algorithms2008-02(56) }

  pk-X25519, pk-X448
    FROM Safecurves-pkix-18
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-safecurves-pkix(93) } ;


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

  kema-dhkem KEM-ALGORITHM ::= {
      IDENTIFIER id-alg-dhkem
      PARAMS TYPE DHKemParameters
      PUBLIC-KEYS { pk-dh | pk-ec | pk-X25519 | pk-X448 }
      UKM ARE optional
      SMIME-CAPS { TYPE DHKemParameters IDENTIFIED BY id-kem-dhkem } }

  DHKemParameters ::= SEQUENCE {
      dh         KeyAgreeAlgorithmIdentifier,
      kdf        KeyDerivationFunction,
      keyLength  KeyLength }

  KeyAgreeAlgorithmIdentifier ::= AlgorithmIdentifier{ KEY-AGREE, {...} }

  KeyDerivationFunction ::= AlgorithmIdentifier { KEY-DERIVATION, {...} }

  KeyLength ::= INTEGER (1..MAX)

END

]]></artwork>
      <t>EDNOTE: The other way to define this would be to call out a toplevel DHKEM for each one: <tt>id-kema-dhkem-dh</tt> <tt>id-kema-dhkem-ecdh</tt>, <tt>id-kema-dhkem-x25519</tt>, <tt>id-kema-dhkem-x448</tt>.
EDNOTE: This approach adds a layer of wrapping for the benefit of agility and future-proofing. I would be happy to write them each out if that's considered better.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document does not add any security considerations above
those already present for the Ephemeral-Static mode of the underlying (EC)DH primitive
and in <xref target="RFC9180"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers the OID <tt>id-alg-dhkem</tt></t>
      <t>The IANA is requested to allocate a value
from the "SMI Security for S/MIME Module Identifier" registry for the
included ASN.1 module, and allocate values from "SMI Security for
S/MIME Algorithms" to identify the new algorithm defined within.</t>
      <section anchor="object-identifier-allocations">
        <name>Object Identifier Allocations</name>
        <section anchor="module-registration-smi-security-for-smime-module-identifer">
          <name>Module Registration - SMI Security for S/MIME Module Identifer</name>
          <ul spacing="normal">
            <li>Decimal: IANA Assigned - Replace TBDMOD</li>
            <li>Description: CMS-DHKEM-2023 - id-mod-cms-dhkem-2023</li>
            <li>References: This Document</li>
          </ul>
        </section>
        <section anchor="object-identifier-registrations-smi-security-for-smime-attributes">
          <name>Object Identifier Registrations - SMI Security for S/MIME Attributes</name>
          <ul spacing="normal">
            <li>
              <t>DHKEM  </t>
              <ul spacing="normal">
                <li>Decimal: IANA Assigned - Replace TBDALG</li>
                <li>Description: id-alg-dhkem</li>
                <li>References: This Document</li>
              </ul>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC5083">
          <front>
            <title>Cryptographic Message Syntax (CMS) Authenticated-Enveloped-Data Content Type</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="November" year="2007"/>
            <abstract>
              <t>This document describes an additional content type for the Cryptographic Message Syntax (CMS). The authenticated-enveloped-data content type is intended for use with authenticated encryption modes. All of the various key management techniques that are supported in the CMS enveloped-data content type are also supported by the CMS authenticated-enveloped-data content type. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5083"/>
          <seriesInfo name="DOI" value="10.17487/RFC5083"/>
        </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"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <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="RFC5652">
          <front>
            <title>Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="September" year="2009"/>
            <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>
          <seriesInfo name="STD" value="70"/>
          <seriesInfo name="RFC" value="5652"/>
          <seriesInfo name="DOI" value="10.17487/RFC5652"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-cms-kemri">
          <front>
            <title>Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Russ Housley" initials="R." surname="Housley">
              <organization>Vigil Security, LLC</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust</organization>
            </author>
            <author fullname="Tomofumi Okubo" initials="T." surname="Okubo">
              <organization>DigiCert, Inc.</organization>
            </author>
            <date day="9" month="August" year="2023"/>
            <abstract>
              <t>   The Cryptographic Message Syntax (CMS) supports key transport and key
   agreement algorithms.  In recent years, cryptographers have been
   specifying Key Encapsulation Mechanism (KEM) algorithms, including
   quantum-secure KEM algorithms.  This document defines conventions for
   the use of KEM algorithms by the originator and recipients to encrypt
   and decrypt CMS content.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-cms-kemri-04"/>
        </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"/>
            <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"/>
            <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="RFC5990">
          <front>
            <title>Use of the RSA-KEM Key Transport Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="J. Randall" initials="J." surname="Randall"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <author fullname="J. Brainard" initials="J." surname="Brainard"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="September" year="2010"/>
            <abstract>
              <t>The RSA-KEM Key Transport Algorithm is a one-pass (store-and-forward) mechanism for transporting keying data to a recipient using the recipient's RSA public key. ("KEM" stands for "key encapsulation mechanism".) This document specifies the conventions for using the RSA-KEM Key Transport Algorithm with the Cryptographic Message Syntax (CMS). The ASN.1 syntax is aligned with an expected forthcoming change to American National Standard (ANS) X9.44.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5990"/>
          <seriesInfo name="DOI" value="10.17487/RFC5990"/>
        </reference>
        <reference anchor="RFC9180">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
      </references>
    </references>
    <?line 289?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
cPE9yCQAAA==

-->

</rfc>
