<?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.37 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-yan-anima-brski-cle-00" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="BRSKI-CLE">BRSKI-CLE: A Certificateless Enrollment protocol in BRSKI</title>
    <seriesInfo name="Internet-Draft" value="draft-yan-anima-brski-cle-00"/>
    <author initials="L." surname="Yan" fullname="Lei YAN" role="editor">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>Ruanjiandadao Road</street>
          <city>Nanjing</city>
          <code>210000</code>
          <country>China</country>
        </postal>
        <email>ray.yanlei@huawei.com</email>
      </address>
    </author>
    <date year="2023" month="July" day="10"/>
    <area>Operations and Management</area>
    <workgroup>anima</workgroup>
    <keyword>certificateless</keyword>
    <keyword>BRSKI</keyword>
    <keyword>enrollment</keyword>
    <abstract>
      <?line 54?>

<t>Bootstrapping Remote Secure Key Infrastructure (BRSKI, RFC 8995) is an automated bootstrap protocol for unconfigured devices called "pledges". Existing enrollment protocols in BRSKI are all based on certificates, which are not suitable for constrained IoT devices. This document defines a certificateless enrollment protocol in BRSKI (BRSKI-CLE) for constrained IoT devices. To achieve a lightweight protocol, a credential based on public keys is designed to replace the domain certificate used in BRSKI. An authentication centre (AC) replaced the certification authority (CA) is used to issue the credential to the pledge. A new mutual authentication protocol is also designed to authenticate using the credentials.</t>
    </abstract>
  </front>
  <middle>
    <?line 59?>

<section anchor="intro">
      <name>Introduction</name>
      <t>The Bootstrapping Remote Secure Key Infrastructure (BRSKI) <xref target="RFC8995"/> protocol provides a solution for secure zero-touch (automated) bootstrap of new (unconfigured) devices that are called "pledges". After being authenticated by the server "registrar", a pledge presents its key material to the network and acquires a network-specific identity. This process is called "enrollment". BRSKI typically uses Enrollment over Secure Transport (EST) <xref target="RFC7030"/>, which is based on certificates, as the enrollment protocol. Other alternative enrollment protocols in BRSKI, such as Constrained BRSKI<xref target="I-D.ietf-anima-constrained-voucher"/>, BRSKI-AE <xref target="I-D.ietf-anima-brski-ae"/> and <xref target="I-D.ietf-acme-integrations"/>, are also based on certificates. After enrollment, the pledge obtains a domain certificate from the registrar. The pledge will authenticate each other by the domain certificate in further communication.</t>
      <t>A certificate chain typically includes three certificates at least: an end entity certificate, a certification authority (CA) certificate and a root CA certificate. 
A long certificate chain leads to massive volumes of transmitted data and a long verification time. 
Therefore, the authentication using certificates is desirable for constrained IoT devices with limited memory or computation ability.</t>
      <t>Moreover, the process of authentication using certificates typically has two steps.
Firstly, the certificate chain is verified by every certificate's signature and its signer's public key.
The second step is to verify the signature, which is the possession proof of the private key corresponding to the public key in the certificate.
The identity information on the certificate is not checked by the authentication program and is only presented for human reading in most cases. 
Hence, in the machine-to-machine scenario, as a machine does not need to understand the identity information on the certificate, the identity information in certificates is redundant.</t>
      <t>BRSKI-CLE, alternatively to EST, is a certificateless enrollment protocol in BRSKI. The goals of BRSKI-CLE are to provide a lightweight enrollment protocol for constrained IoT devices.</t>
      <t>To enable using certificateless enrollment protocols, BRSKI-CLE makes three adaptations to BRSKI.</t>
      <ul spacing="normal">
        <li>Instead of the certificate, a credential calculated only by public keys is designed for the authentication among Pledges.</li>
        <li>Instead of CA, an authentication centre (AC) is used to issue credentials to the pledge during enrollment.</li>
        <li>A new mutual authentication protocol is designed for the authentication between two Pledges by the credentials.</li>
      </ul>
      <section anchor="terminology">
        <name>Terminology</name>
        <t><strong>AC</strong>: The authentication centre provides the credential issuance for the pledges.</t>
        <t><strong>Domain</strong>: The set of entities that share a common local trust anchor.</t>
        <t><strong>enrollment</strong>: The process where a device presents key material to a network and acquires a network-specific identity.</t>
        <t><strong>IDevID</strong>: An Initial Device Identifier X.509 certificate installed by the vendor on new equipment. This is a term from 802.1AR <xref target="IDevID"/>.</t>
        <t><strong>imprint</strong>: The process where a device obtains the cryptographic key material to identify and trust future interactions with a network. This process is the step before enrollment, as defined in BRSKI <xref target="RFC8995"/>.</t>
        <t><strong>Pledge</strong>: The prospective (unconfigured) device, which has an identity installed at the factory.</t>
      </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>
        <?line -18?>

</section>
    </section>
    <section anchor="adaptations-to-brski">
      <name>Adaptations to BRSKI</name>
      <section anchor="architecture">
        <name>Architecture</name>
        <t>The architecture of the components in BESKI-CLE is shown in <xref target="Fig1"/>. Compared with the architecture of BRSKI, the CA is replaced by the AC. The AC can be implemented on the registrar or as a backend domain component.
After imprinting, the pledge can use BESKI-CLE to obtain a credential from the AC.
It is assumed that the communication between the registrar and the AC is protected by a security protocol, such as TLS or DTLS, and they can authenticate each other using the security protocol.</t>
        <figure anchor="Fig1">
          <name>Architecture Overview</name>
          <artwork><![CDATA[
                                           +------------------------+
   +--------------Drop-Ship----------------| Vendor Service         |
   |                                       +------------------------+
   |                                       | M anufacturer|         |
   |                                       | A uthorized  |Ownership|
   |                                       | S igning     |Tracker  |
   |                                       | A uthority   |         |
   |                                       +--------------+---------+
   |                                                      ^
   |                                                      |  BRSKI-
   V                                                      |   MASA
+-------+     ............................................|...
|       |     .                                           |  .
|       |     .  +------------+       +-----------+       |  .
|       |     .  |            |       |           |       |  .
|Pledge |     .  |   Join     |       | Domain    <-------+  .
|       |     .  |   Proxy    |       | Registrar |          .
|       <-------->............<------->   (AC)    |          .
|       |        |            |       |           |          .
|       |     .  |            |       +-----+-----+          .
|IDevID |     .  +------------+             | BESKI-CLE      .
|       |     .           +-----------------+----------+     .
|       |     .           |                            |     .
|       |     .           | Authentication Centre(AC)  |     .
+-------+     .           |                            |     .
              .           +----------------------------+     .
              .                                              .
              ................................................
                             "Domain" Components
]]></artwork>
        </figure>
      </section>
      <section anchor="enrollment-protocol">
        <name>Enrollment Protocol</name>
        <t>After imprinting, the pledge must begin the process of enrollment.
A message flow of the enrollment protocol is shown in <xref target="Fig2"/>.</t>
        <figure anchor="Fig2">
          <name>Message Flow of Enrollment Protocol</name>
          <artwork><![CDATA[
+----------+                 +-----------+                +--------+
|          |                 |           |                |        |
|  Pledge  |                 | Registrar |                |   AC   |
|          |                 |           |                |        |
+-----+----+                 +-----+-----+                +----+---+
      |                            |                           |
      |    [imprint finished]      |           IDevID          | 
      |                            +-------------------------->| 
      |                            |        AllowListSet       | 
      |                            |                           |
      |                            |                           |
      |        ID_P,CS_P           |                           |
      +--------------------------->|         ID_P,CS_P         |
      |      PubKeyRequest         +-------------------------->|
      |                            |        PubKeyRequest      | 
      |                            |                           | 
      |                            |      ID_AC,PK_AC,CS_AC    | 
      |     ID_AC,PK_AC,CS_AC      |<--------------------------+
      |<---------------------------+       PubKeyResponse      |
      |      PubKeyResponse        |                           |
      |                            |                           |
      |  Enc( ID_P,symKey,PK_P)    |                           |
      +--------------------------->|   Enc(ID_P,symKey,PK_P)   |
      |     CredentialRequest      +-------------------------->|
      |                            |    CredentialRequest      | 
      |                            |                           | 
      |                            |    AEAD(ID_P,Cred,pSK)    | 
      |     AEAD(ID_P,Cred,pSK)    |<--------------------------+
      |<---------------------------+     CredentialResponse    |
      |     CredentialResponse     |                           |
      |                            |                           |
]]></artwork>
        </figure>
        <t>There are three phases in the enrollment protocol: the preliminary phase, the public key obtaining and the credential obtaining.</t>
        <section anchor="preliminary-phase">
          <name>Preliminary Phase</name>
          <t>In this phase, the registrar registers the pledge's IDevID on the AC.
The format of the AllowListSet message is shown below.</t>
          <artwork><![CDATA[
AllowListSet = (
    IDevID: string,
)
]]></artwork>
          <t><strong>IDevID</strong>: An Initial Device Identifier X.509 certificate installed by the vendor on new equipment.</t>
          <t>After authenticating the pledge successfully during imprint, the registrar must send the pledge's IDevID in the AllowListSet message to the AC.
After receiving the AllowListSet message, the AC must add the IDevID to its allowlist.</t>
        </section>
        <section anchor="public-key-obtaining">
          <name>Public Key Obtaining</name>
          <t>In this phase, the pledge sends the PubKeyRequest message to AC to request the AC's public key, and then the AC return its public key to the pledge in the PubKeyResponse message.
The format of the PubKeyRequest message is shown below.</t>
          <artwork><![CDATA[
PubKeyRequest = (
    ID_P: int,
    CS_P: CipherSuite_list,
)

CipherSuite_list=( 
    CipherSuite1: int,
    ...
    Cipher_SuiteN: int,
)

ID_P = hash(IDevID)
]]></artwork>
          <t><strong>ID_P</strong>: A number, which is derived from the IDevID, as the identity of the pledge.</t>
          <t><strong>CS_P</strong>: The cipher suites list supported by the pledge.</t>
          <t>After receiving the PubKeyRequest message, the AC will check whether the received IDevID is on the allowlist.
If the received IDevID is on the allowlist, the AC will return the PubKeyResponse message to the pledge. Otherwise, the AC should close the connection.</t>
          <t>The format of the PubKeyResponse message is shown below.</t>
          <artwork><![CDATA[
PubKeyResponse = (
    ID_AC: int,
    PK_AC: int,
    CS_AC: int,
)
]]></artwork>
          <t><strong>ID_AC</strong>: The identity of the AC.</t>
          <t><strong>PK_AC</strong>: The AC's public key.</t>
          <t><strong>CS_AC</strong>: The cipher suite choosen by the AC.</t>
        </section>
        <section anchor="credential-obtaining">
          <name>Credential Obtaining</name>
          <t>In this phase, the pledge requests its credential from the AC by sending the CredentialRequest message. Then, the AC issues the credential for the pledge in the CredentialResponse message.
The CredentialRequest message is encrypted by the public key of the AC.
The format of the CredentialRequest message is shown below.</t>
          <artwork><![CDATA[
CredentialRequest = Enc (
    ID_P: int,
    symKey: int,
    PK_P: int,
)
]]></artwork>
          <t><strong>Enc</strong>: The function encrypting by a public key.</t>
          <t><strong>symKey</strong>: A symmetric key for the following communication.</t>
          <t><strong>PK_P</strong>: The public key of the pledge.</t>
          <t>The CredentialResponse message is encrypted by the symmetric key received in the CredentialRequest message.
The format of the CredentialResponse message is shown below.</t>
          <artwork><![CDATA[
CredentialResponse= AEAD(
    ID_P: int,
    Cred: int,
    pSK: int,
)
]]></artwork>
          <t><strong>AEAD</strong>: AEAD (Authenticated Encryption with Associated Data) functions provide a unified encryption and authentication operation which turns plaintext into authenticated ciphertext and back again. <xref target="RFC5116"/></t>
          <t><strong>Cred</strong>: The credential of the pledge.</t>
          <t><strong>pSK</strong>: The pledge's partial private key from the AC.</t>
        </section>
      </section>
      <section anchor="mutual-authentication-protocol">
        <name>Mutual Authentication Protocol</name>
        <t>After enrollment, two pledges can authenticate each other by using the credential.
A message flow of the mutual authentication protocol is shown in <xref target="Fig3"/>.
The initiator acts as a client. The responder acts as a server.</t>
        <figure anchor="Fig3">
          <name>Message Flow of Mutual Authentication Protocol</name>
          <artwork><![CDATA[
+--------+                 +--------+
|        |                 |        |
| Client |                 | Server |
|        |                 |        |
+----+---+                 +----+---+
     |                          |
     |   ID_C,Cred_C,G_C,CS_C   |
     +------------------------->|
     |        Credential        |
     |                          |
     |   ID_S,Cred_S,G_S,CS_S   |
     |<-------------------------+
     |        Credential        |
     |                          |
     |        AuthCode_C        |
     +------------------------->|
     |     ProofOfPossession    |
     |                          |
     |         AuthCode_S       |
     |<-------------------------+
     |    ProofOfPossession     |
]]></artwork>
        </figure>
        <t>There are two phases for mutual authentication: credential exchange and proof-of-possession exchange.</t>
        <section anchor="credential-exchange">
          <name>credential exchange</name>
          <t>In this phase, the client and the server must exchange their credentials.
Then, the same master key is calculated based on the peer’s credential and ephemeral public key by the client and server.
The details of key derivation are shown in <xref target="map"/>.
The format of the Credential message is shown below.</t>
          <artwork><![CDATA[
Credential=（
    ID_X: int,
    Cred_X: int,
    G_X: int,
    CS_X: int,
）
X denotes the sending side, "C" for the client, "S" for the server. 
]]></artwork>
          <t><strong>ID_X</strong>: The identity of the sender.</t>
          <t><strong>Cred_X</strong>: The credential of the sender.</t>
          <t><strong>G_X</strong>: The ephemeral public key of the sender.</t>
          <t><strong>CS_X</strong>: The cipher suites list supported by the client or the cipher suite choosen by the server.</t>
        </section>
        <section anchor="proof-of-possession-exchange">
          <name>proof-of-possession exchange</name>
          <t>In this phase, the client and the server must exchange the possession proof of the master key.
The format of the ProofOfPossession message is shown below.</t>
          <artwork><![CDATA[
ProofOfPossession=(
    AuthCode_X: int,
)
X denotes the sending side, "C" for the client, "S" for the server. 
]]></artwork>
          <t><strong>AuthCode_X</strong>: The authentication code of the sender.</t>
          <t>If the receiving authentication code is equal to the authentication code calculated locally, the authentication is successful. Otherwise, the authentication fails.</t>
        </section>
      </section>
    </section>
    <section anchor="key-derivation">
      <name>Key Derivation</name>
      <section anchor="enrollment-protocol-1">
        <name>Enrollment Protocol</name>
        <t>The key derivation is based on the Schnorr signature algorithm.
Assuming "a" is a random number generated by the pledge, "b" is a random number generated by the AC, and "G" is an elliptic curve base point.</t>
        <t>Pledge’s private key and public key are an Elliptic curve cryptography (ECC) key pair.</t>
        <artwork><![CDATA[
SK_P=a, PK_P=a*G  
]]></artwork>
        <t>AC’s private key and public key are an ECC key pair.</t>
        <artwork><![CDATA[
SK_AC=b, PK_AC=b*G  
]]></artwork>
        <t>The symKey in the CredentialRequest message is a random number.</t>
        <t>After receiving the CredentialRequest message, the credential is calculated by the AC as below.
Assuming c is a random number generated by the AC.</t>
        <artwork><![CDATA[
cred = c*G+PK_P 
]]></artwork>
        <t>Then, the AC calculate the partial private key of the pledge.</t>
        <artwork><![CDATA[
pSK=c+Hash(ID_P || ID_AC || cred)*SK_AC
]]></artwork>
        <t>After receiving the CredentialResponse message, the pledge must calculate its final private and public keys.</t>
        <artwork><![CDATA[
fSK=SK_P+pSK
fPK= cred+ Hash(ID_P || ID_AC || cred)*PK_AC
]]></artwork>
        <t><strong>fSK</strong>: The final private key of the pledge.
<strong>fPK</strong>: The final public key of the pledge.</t>
      </section>
      <section anchor="map">
        <name>Mutual Authentication Protocol</name>
        <t>Assuming "x" is a random number generated by the client, "y" is a random number generated by the server, and "G" is an elliptic curve base point.</t>
        <t>The ephemeral public key of the client is:</t>
        <artwork><![CDATA[
G_X=x*G
]]></artwork>
        <t>The ephemeral public key of the server is:</t>
        <artwork><![CDATA[
G_Y=y*G
]]></artwork>
        <t>After receiving the client's Credential message, the server must calculate the following values:</t>
        <artwork><![CDATA[
fPK_C=cred_C+ Hash(ID_C || ID_AC || cred_C)*PK_AC
cv=cred_C || cred_S || ID_C || ID_S || G_X || G_Y
MK=(y + Hash(cv) *  fSK_S) *   (G_X + Hash(cv) * fPK_C)
AuthKey || EncKey = hkdf(MK, cv || "WORKKEY")
]]></artwork>
        <t><strong>fPK_C</strong>: The final public key of the client.</t>
        <t><strong>cv</strong>: The concatenation value as the input for the hash function.</t>
        <t><strong>MK</strong>: The master key.</t>
        <t><strong>AuthKey</strong>: The key for the authentication in the proof-of-possession exchange.</t>
        <t><strong>EncKey</strong>: The symmetric key for the communication after the mutual authentication.</t>
        <t>After receiving the server's Credential message, the client must calculate the following values:</t>
        <artwork><![CDATA[
fPK_S=cred_S+ Hash(ID_S || ID_AC || cred_S)*PK_AC
cv=cred_C || cred_S || ID_C || ID_S || G_X || G_Y
MK=(x + Hash(cv) *  fSK_C) *   (G_Y + Hash(cv) * fPK_S)
AuthKey || EncKey = hkdf(MK, cv || "WORKKEY")
]]></artwork>
        <t><strong>fPK_S</strong>: The final public key of the server.</t>
        <t>In the proof-of-possession exchange, the client and server calculate the same authentication codes.</t>
        <artwork><![CDATA[
AuthCode_S=HMAC(AuthKey, MK || “AUTH_SERVER”)
AuthCode_C=HMAC(AuthKey, MK || “AUTH_CLIENT”)
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TBD.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC8995">
          <front>
            <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." surname="Behringer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies automated bootstrapping of an Autonomic Control Plane. To do this, a Secure Key Infrastructure is bootstrapped. This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline. We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device. The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8995"/>
          <seriesInfo name="DOI" value="10.17487/RFC8995"/>
        </reference>
        <reference anchor="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="RFC5116">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms. The interface and registry can be used as an application-independent set of cryptoalgorithm suites. This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5116"/>
          <seriesInfo name="DOI" value="10.17487/RFC5116"/>
        </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="I-D.ietf-anima-constrained-voucher">
          <front>
            <title>Constrained Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>vanderstok consultancy</organization>
            </author>
            <author fullname="Panos Kampanakis" initials="P." surname="Kampanakis">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Esko Dijk" initials="E." surname="Dijk">
              <organization>IoTconsultancy.nl</organization>
            </author>
            <date day="7" month="July" year="2023"/>
            <abstract>
              <t>   This document defines the Constrained Bootstrapping Remote Secure Key
   Infrastructure (Constrained BRSKI) protocol, which provides a
   solution for secure zero-touch bootstrapping of resource-constrained
   (IoT) devices into the network of a domain owner.  This protocol is
   designed for constrained networks, which may have limited data
   throughput or may experience frequent packet loss.  Constrained BRSKI
   is a variant of the BRSKI protocol, which uses an artifact signed by
   the device manufacturer called the "voucher" which enables a new
   device and the owner's network to mutually authenticate.  While the
   BRSKI voucher is typically encoded in JSON, Constrained BRSKI uses a
   compact CBOR-encoded voucher.  The BRSKI voucher is extended with new
   data types that allow for smaller voucher sizes.  The Enrollment over
   Secure Transport (EST) protocol, used in BRSKI, is replaced with EST-
   over-CoAPS; and HTTPS used in BRSKI is replaced with CoAPS.  This
   document Updates RFC 8366 and RFC 8995.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-constrained-voucher-21"/>
        </reference>
        <reference anchor="I-D.ietf-anima-brski-ae">
          <front>
            <title>BRSKI-AE: Alternative Enrollment Protocols in BRSKI</title>
            <author fullname="David von Oheimb" initials="D." surname="von Oheimb">
              <organization>Siemens AG</organization>
            </author>
            <author fullname="Steffen Fries" initials="S." surname="Fries">
              <organization>Siemens AG</organization>
            </author>
            <author fullname="Hendrik Brockhaus" initials="H." surname="Brockhaus">
              <organization>Siemens AG</organization>
            </author>
            <date day="28" month="June" year="2023"/>
            <abstract>
              <t>   This document defines an enhancement of Bootstrapping Remote Secure
   Key Infrastructure (BRSKI, RFC 8995) that supports alternative
   certificate enrollment protocols, such as CMP.  This offers the
   following advantages.

   Using authenticated self-contained signed objects for certification
   requests and responses, their origin can be authenticated
   independently of message transfer.  This supports end-to-end
   authentication (proof of origin) also over multiple hops, as well as
   asynchronous operation of certificate enrollment.  This in turn
   provides architectural flexibility where to ultimately authenticate
   and authorize certification requests while retaining full-strength
   integrity and authenticity of certification requests.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-brski-ae-05"/>
        </reference>
        <reference anchor="I-D.ietf-acme-integrations">
          <front>
            <title>ACME Integrations for Device Certificate Enrollment</title>
            <author fullname="Owen Friel" initials="O." surname="Friel">
              <organization>Cisco</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="Rifaat Shekh-Yusef" initials="R." surname="Shekh-Yusef">
              <organization>Ernst &amp; Young</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="13" month="June" year="2023"/>
            <abstract>
              <t>   This document outlines multiple advanced use cases and integrations
   that ACME facilitates without any modifications or enhancements
   required to the base ACME specification.  The use cases include ACME
   integration with EST, BRSKI and TEAP.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-acme-integrations-16"/>
        </reference>
        <reference anchor="IDevID" target="https://1.ieee802.org/security/802-1ar">
          <front>
            <title>IEEE Standard for Local and metropolitan area networks - Secure Device Identity</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date year="2018" month="August"/>
          </front>
          <seriesInfo name="IEEE 802.1AR" value=""/>
        </reference>
      </references>
    </references>
    <?line 475?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank...</t>
    </section>
    <section numbered="false" anchor="contributors">
      <name>Contributors</name>
    </section>
  </back>
  <!-- ##markdown-source:
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
DbQwHJxikiZo1kyHf/8H8BmkNuFHAAA=

-->

</rfc>
