<?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.7.19 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-geng-acme-public-key-00" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="ACME PK Challenge">Automated Certificate Management Environment (ACME) Extension for Public Key Challenges</title>
    <seriesInfo name="Internet-Draft" value="draft-geng-acme-public-key-00"/>
    <author initials="F." surname="Geng" fullname="Feng Geng">
      <organization>Huawei Technologies</organization>
      <address>
        <email>gengfeng@huawei.com</email>
      </address>
    </author>
    <author initials="P." surname="Wu" fullname="Panyu Wu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>wupanyu3@huawei.com</email>
      </address>
    </author>
    <author initials="L." surname="Xia" fullname="Liang Xia">
      <organization>Huawei Technologies</organization>
      <address>
        <email>frank.xialiang@huawei.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="09"/>
    <workgroup>Automated Certificate Management Environment Working Group</workgroup>
    <keyword/>
    <keyword/>
    <keyword/>
    <abstract>
      <?line 54?>

<t>This document specifies an extension to the ACME protocol <xref target="RFC8555"/> that enables ACME servers to use the public key authentication protocol to verify that the client has control of the private key corresponding to the public key. This document also defines several application methods for binding identity information to public keys.</t>
    </abstract>
  </front>
  <middle>
    <?line 58?>

<section anchor="intro">
      <name>Introduction</name>
      <t>More and more applications use end-to-end encryption to protect the communication process, in which X.509 certificates play an important role. ACME helps to promote and popularize the certificate. In the automatic application process for certificates, the public key of the submitted certificate signing request (CSR) is not checked in the finalized order request to see if it belongs to the applying user. The public key replacement attack may exist for this.</t>
      <t>Normally a user has a client for automated applications. And in some specific application scenarios, some users who expect to obtain certificates and allow continuous updates cannot integrate such a client. Such a user might use a proxy as a unified entry point for automated certificate requests. This proxy might be a system or an administrator.</t>
      <t>In environments where proxies are used, which are usually relatively safe, there are also risks with very low probability. Based on the standard ACME automated certificate request process, the ACME server can communicate with the user and prove the validity of the user's identity through the use of proxies. However, in this scenario, on the one hand, users may inevitably need to grant their own identity proofing privileges to intermediate proxies, e.g., they need proxies to complete DNS records; on the other hand, at the final submission of the CSR, the proxy may substitute the final CSR and apply for a mismatched certificate.</t>
      <t>Similarly, in other non-proxy scenarios it is possible for an applicant to obtain the CSR of another users, thus obtaining the corresponding certificate of the others, resulting in a security risk.</t>
      <t>This specification introduces a new ACME challenge type to allow the identity of a user to be verified by means of public key (PK) authentication. In this process it can be ensured that the public key of the application request is consistent with the public key in the final submitted CSR, eliminating the security risk of public key replacement in the certificate application.</t>
      <t>The protocol interaction process is based on the ACME standardized process. The client only needs to know how to initiate the public key authentication protocol by opening a given URL, and then recognize when that interaction has ended. Once finished, the ACME client can query the status of the challenge to the ACME server to determine if the challenge was successful and, if so, to complete the standard ACME awarding process. The entire process of applying for a certificate conforms to the ACME standardized process.</t>
      <t>Note that this specification requires an Identity Provider (IDP) that records public keys. The IDP is the trust center for the automated certificate request process, which stores the trusted user's public key and possibly the identity information corresponding to the public key. Specific identity information can be selected based on the actual operations. Before the certificate request process, the user's public key should have been entered into the IDP in some way, such as self-registration by the user or LDAP-based import.</t>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>The general process of the PK challenge is illustrated by the standard ACME certificate issuance sequence. First the client needs to submit a certificate request, which carries the public key information at the start. The server responds to the client that it must satisfy authentication. The client can select one of its supported authentication methods from a variety of authentication methods and inform the server. The server returns what needs to be accomplished for this authentication method. This content will contain the “start URL”. This authentication method is similar to that of single sign-on (SSO) [draft-biggs-acme-sso-01], except that the IDP here must contain the user's public key and no longer requires a passphrase or key information.</t>
      <t>The client performs a request for one of the authentication methods and the server responds to it. Among these may be one or more challenge of type pk-01, which can be used to start the process of authentication based on the web through different start URL. The request redirects the client to the applicant object and the IDP, which conducts a public key authentication protocol with the applicant. After successfully providing validation to the IDP, the ACME server logs the associated challenge as validated (or not).</t>
      <t>In the process of authentication, the process of this specification is quite different from the way of SSO. The authentication process is primarily authenticated through public key authentication protocols (e.g. aPAKE/Opaque <xref target="I-D.irtf-cfrg-opaque"/>). The IDP here also needs to support the appropriate public key authentication protocols.</t>
      <t>Then the redirection to the client indicates that the authentication process has been completed, at which point it can be demonstrated that the client has the private key corresponding to the public key in the application order. The user's private key information is always private in this process and does not need to be provided to the agent, only part of the computation is done. After completing the authentication, it redirects the client to the certificate request process.</t>
      <t><xref target="fig-pk-challenge-overview"/> depicts the overview of the public key challenge flow:</t>
      <figure anchor="fig-pk-challenge-overview">
        <name>Overview of the PK Challenge Flow</name>
        <artwork><![CDATA[
Client                                                    ACME Server

~~~~~~~~~~~~~~~~~~~~ ACME client ~~~~~~~~~~~~~~~~~~~~~

request new order              -------->
                              <--------           required authorizations
request authorization           -------->
                              <--------        PK challenge with start URL

~~~~~~~~~~~~~~~~~~~~ Browser ~~~~~~~~~~~~~~~~~~~~~~~~

request on PK start URL         --------->
                             <---------         ACME redirect to provider
                                            authentication request

             provider authenticates client (not shown here)

provider redirect to ACME       --------->
identity assertion
                                          validate provider assertion
                                            record challenge as valid
                             <---------               redirect to client

~~~~~~~~~~~~~~~~~~~~ ACME client ~~~~~~~~~~~~~~~~~~~~~~

request challenge             -------->
                           <---------                          valid
request finalize (CSR)         --------->
                           <---------                    finalize URL
finalize                      -------->
                           <---------                     certificate


]]></artwork>
      </figure>
      <t>After completing authentication the client eventually submits the CSR. This specification requires that the public key contained in the CSR must match the public key in the starting order. In this way, tampering with public key information can be avoided. Other processes are consistent with the standard process.</t>
    </section>
    <section anchor="acme-pk-identifier-type">
      <name>ACME pk Identifier Type</name>
      <t>This document defines the pk-01 challenge type that ensures strong consistency between the final certificate and the identity of the application order even in scenarios where proxies are present. And public key authentication protocol is utilized to provide strong security for the authentication process.</t>
      <t>The pk-01 challenge type can be applied to a variety of identity types that contain public key information. the public key can be used directly with no specific identity information. The identifier pk can be used in case of user-bound devices; Csr and selfsign-cert can be used in cases where specific identity information needs to be bound. Implementations MUST NOT use the challenge of type pk-01 as options to validate a type identifier other than the following:</t>
      <artwork><![CDATA[
"identifier": { "type": "pk", "value":"MIGfMA0GC***GbQIDAQAB"}
"identifier": { "type": "selfsign-cert", "value":"MIIHSDCC***AU1GH3xQ="}
"identifier": { "type": "csr", "value":"MIICljCCA***RL64+taHbP"}


]]></artwork>
    </section>
    <section anchor="acme-pk-01-challenge-type">
      <name>ACME pk-01 Challenge Type</name>
      <t>The pk-01 challenge type requires the client to access the specified pk-url to start the PK challenge and complete the verification of the corresponding private key control of the declared public key. A challenge of this type MUST include all required fields described in section 8 of <xref target="RFC8555"/>. In addition, the following fields are defined for this specific type of challenge:</t>
      <t>pk_url (required, string): The URL to start the pk challenge type process. The server must include enough information in the URL to allow the request to be associated with a specific challenge and to be able to point to a specific PK provider or public key server.</t>
      <t>pk_provider (optional, string): The domain of the PK provider relied upon for this challenge. An ACME server MAY rely upon any number of PK providers and public key servers, however each MUST be represented as a different entry in the challenge array. The applicant can use this field to differentiate the list of providers and select the most appropriate one. If this field does not exist, the ACME server's default identity provider is used. The server MUST NOT present more than one pk-01 challenge with the same pk_provider value in a single authorization, including values for unprovided fields.</t>
      <t>The server MUST sets the status of the challenge to processing after receiving a response from the client within the validity period. If the client completes the proof of ownership of the private key corresponding to public key and the generated identity assertion validates the declared identifier, then the status of the challenge is set to valid. If the server fails to validate the public key against the private key control or fails to validate the declared identifier, the status of the challenge will be set to invalid.</t>
      <artwork><![CDATA[
{
  “type”: “pk-01”,
  “url”: https://example.org/acme/chall/abc123_defg456,
  “status”: “pending”,
  “pk_url”: “https://example.org/acme/start-pk”,
  “pk_provider”: “https://pk-identity-provider.org/”
}


]]></artwork>
    </section>
    <section anchor="public-key-authentication-order-fulfillment">
      <name>Public Key Authentication &amp; Order Fulfillment</name>
      <t>Public key authentication is essentially authenticating the control of the corresponding private key of a public key and pk_url allows the client to initiate the public key authentication process. The server must accept GET requests for PK URL. Upon receiving such a request:</t>
      <ol spacing="normal" type="1"><li>
          <t>The ACME server receives the request and redirects it to the IDP server. IDP instance holds the public key, e.g. IDP instances supporting the aPAKE/Opaque protocols.</t>
        </li>
        <li>
          <t>The IDP server requires the requesting party to perform authentication to verify that it holds the private key corresponding to the public key. The IDP will include supported public key verification protocols in the verification request, protocols that include, but are not limited to (1) challenge public key signature and verify signature, (2) Opaque/AKE and (3) non-interactive zero-knowledge (NIZK) discrete logarithm equality (DLEQ) proof, etc. The client selects one of the protocols to perform the authentication process.</t>
        </li>
        <li>
          <t>After successfully authenticating the identity, the IDP returns the user's information and the logged-in device public key information to the ACME server. When the ACME server receives the request, it checks whether the device public key is consistent with the public key in the order. When the ACME server receives the request, it MUST check whether the device public key is consistent with the public key in the order. For identifiers of type csr and selfsign-cert, identity consistency checks are also required. The challenge is successful if the check passes.</t>
        </li>
      </ol>
      <figure anchor="fig-pk-authentication-overview">
        <name>Overview of the Public Key Authentication Flow</name>
        <artwork><![CDATA[
ACME Server                                Applicant                                       IDP

~~~~~~~~~~~~~~~~~~~~~~~~~provider authenticates client ~~~~~~~~~~~~~~~~~~~~~~~~~~
ACME redirect to provider        ------------------------------------------------->

                                    <-------------      list of supported 
                                                        public key authentication protocols
select authentication protocol   ------------->        
                                           
verification        <-------------------------------------------------    redirect to ACME Server


]]></artwork>
      </figure>
      <t>When the ACME server receives a response from IDP, it must validate it and update the appropriate challenge status. The server updates the challenge status to valid if the provider validation is successful, or to invalid if it is unsuccessful.</t>
      <t>In the case of public key verification, the IDP acts as the asserting party and conducts a public key authentication agreement with the user to obtain public key information and identity information about the subject (user). The ACME server acts as a relying party that receives identity information from the IDP. The ACME server verifies the consistency of the public key and the order public key after receiving the public key and identity information. For the identifiers of type csr and selfsign-cert, the identity consistency needs to be further checked on the basis again.</t>
      <t>As defined in section 7.4 of <xref target="RFC8555"/> once the client has been authorized in all respects, it can proceed with the completion of the order. The client SHOULD use the public key declared in the order as the public key in the CSR. If the order identifier type is csr or selfsign-cert, the commonName, subjectAltName, etc. fields should be filled in the CSR. Then the CSR, encapsulated as specified, is submitted to the ACME server.</t>
      <t>The server needs to validate the order against the identifier after receiving a request from the customer to complete the order. For identifiers of pk type, it is necessary to check whether the public key recorded in the identifier matches the public key in the CSR. For csr or selfsign-cert type identifiers, in addition to this, the identity in the order has to be verified against the identity in the CSR. The client's request for order fulfillment can only be continued under the condition that all checks have been passed.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document is an extension to ACME to provide an additional validation method for verifing that the client has control of the public key corresponding to the private key. For general security considerations related to the ACME certificate issuance process, see <xref target="RFC8555"/>.</t>
      <t>As with ACME validation methods, the security of PK validation depends on the risk of the validation process being compromised and the strength of the binding between the validation process and the ACME transaction.</t>
      <t>The binding of the validation process to the ACME transaction is managed through a built-in public key validation protocol, where the IDP and the requesting party negotiate an validation protocol to return identity information to the ACME server.</t>
      <t>As for the security based on PK-based authentication itself, it is carried out based on the public key authentication protocol, and corresponding risk mitigation measures can be applied. In PK-based certificate issuance, the PK provided is trustworthy enough to assert whether a given user has a given identity and public key information. A malicious PK provider may falsify these assertions, resulting in the issuance of the wrong certificate. CA's selection of a trusted PK provider is one of the initiatives to mitigate this risk.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="acme-identifier-types">
        <name>8.1  ACME Identifier Types</name>
        <t>The "ACME Identifier Types" registry is to be updated to include the following entries:</t>
        <artwork><![CDATA[
+----------------+------------------+
| Label          | Reference        |
+----------------+------------------+
| pk             | RFC XXXX         |
+----------------+------------------+
| csr            | RFC XXXX         |
+----------------+------------------+
| selfsign-cert  | RFC XXXX         |
+----------------+------------------+

]]></artwork>
      </section>
      <section anchor="acme-validation-method">
        <name>8.2   ACME Validation Method</name>
        <t>The "ACME Validation Methods" registry is to be updated to include the following entries:</t>
        <artwork><![CDATA[
+------------+-------------------------+---------+------------+
| Label      | Identifier Type         | ACME    | Reference  |
+------------+-------------------------+---------+------------+
| pk-01      | pk/csr/selfsign-cert    | Y       | RFC XXXX   |
+------------+-------------------------+---------+------------+


]]></artwork>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8555" target="https://www.rfc-editor.org/info/rfc8555" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8555.xml">
          <front>
            <title>Automatic Certificate Management Environment (ACME)</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
            <author fullname="D. McCarney" initials="D." surname="McCarney"/>
            <author fullname="J. Kasten" initials="J." surname="Kasten"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8555"/>
          <seriesInfo name="DOI" value="10.17487/RFC8555"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.irtf-cfrg-opaque" target="https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-opaque-17" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.irtf-cfrg-opaque.xml">
          <front>
            <title>The OPAQUE Augmented PAKE Protocol</title>
            <author fullname="Daniel Bourdrez" initials="D." surname="Bourdrez"/>
            <author fullname="Hugo Krawczyk" initials="H." surname="Krawczyk">
              <organization>AWS</organization>
            </author>
            <author fullname="Kevin Lewi" initials="K." surname="Lewi">
              <organization>Meta</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare, Inc.</organization>
            </author>
            <date day="27" month="September" year="2024"/>
            <abstract>
              <t>This document describes the OPAQUE protocol, an augmented (or asymmetric) password-authenticated key exchange (aPAKE) that supports mutual authentication in a client-server setting without reliance on PKI and with security against pre-computation attacks upon server compromise. In addition, the protocol provides forward secrecy and the ability to hide the password from the server, even during password registration. This document specifies the core OPAQUE protocol and one instantiation based on 3DH. This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-opaque-17"/>
        </reference>
      </references>
    </references>
    <?line 252?>



  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
