[Acme] Re: Introducting a new draft about adding a new ACME challenge type: public key challgenge
Aaron Gable <aaron@letsencrypt.org> Wed, 12 March 2025 04:45 UTC
Return-Path: <aaron@letsencrypt.org>
X-Original-To: acme@mail2.ietf.org
Delivered-To: acme@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 24AB5A3B734 for <acme@mail2.ietf.org>; Tue, 11 Mar 2025 21:45:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (1024-bit key) header.d=letsencrypt.org
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 62FSTTXvULsX for <acme@mail2.ietf.org>; Tue, 11 Mar 2025 21:45:26 -0700 (PDT)
Received: from mail-oi1-x229.google.com (mail-oi1-x229.google.com [IPv6:2607:f8b0:4864:20::229]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 4AAD4A3B72C for <acme@ietf.org>; Tue, 11 Mar 2025 21:45:26 -0700 (PDT)
Received: by mail-oi1-x229.google.com with SMTP id 5614622812f47-3f6dccdcadaso2164369b6e.2 for <acme@ietf.org>; Tue, 11 Mar 2025 21:45:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=letsencrypt.org; s=google; t=1741754725; x=1742359525; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=EOrARAJCgDzqhAJ8K+OLqG9b8b73x48wIBAOAMyxnXM=; b=Hu0wUM0PIUMkT+qDUd1uExpFCngUIRpii3GtxO/dioMIoa+sV+GNyZW+ybryxxE5/f lJQYlEiZC7T67+n9ktL7Hm96p4ZMfOjomfwyvDrATaJ4BhDwiZOLgwZEmveC2MuV4g2a +CQImGRhDXDeRZK/Ini6vw023sswlJubnyH9g=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741754725; x=1742359525; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=EOrARAJCgDzqhAJ8K+OLqG9b8b73x48wIBAOAMyxnXM=; b=vHk8ux8dKuFelSzE7jhiGoA9OseOWmXRayvLq1dn4ayUWg+8LNfWDCCcuVdDVbT/Dg 4G4vw77uM/amWxz94ttF9M0nIOd6v8LCvDd8+6cUrhEHiwS0u8NrULqhquMlBttqPqfL LT5WAQLGGcpCyGH2HBGzRXiIikoeTLr8NgdDGrQA0VsVUmcJ/1MBX3IqcTk3Vj9p8ClT wA9epkD8O/slqxRiwVkRgKyZKPJ8DID2dkYO8bUgQPEjFiKn3Mjp7AQjIB/Y9VyPvUAU AnpB/sTGg0oeKmg4xfx2goiHbDpaMClSl3z4qhyw0yAMkCS9jpoErwy/gq3iFDV+N25K mcCA==
X-Forwarded-Encrypted: i=1; AJvYcCXikv+dvzXbRJdBazktNgDFHuInSvfwaPfomYjj0H4XHoJ6bpihwG4qMyrADPQtYbD2aueY@ietf.org
X-Gm-Message-State: AOJu0Yyem0BSx8UWB5rgomqcefOyVYgd82aJxHfAJlSUeprTPavJPCJH 73FOUciiaPEhsaqgiUB44yeqKYPzrw8q6NPwMW0nn6gclT/FKFX0jKpCMX1As+AkKGl6Z8nAhGP huayReapqfdzU4kT3+KZ43usI3Vbp63bR/vW/GQ==
X-Gm-Gg: ASbGnctSMJhziZrb9DtU3F4fjkonZ5DaEAOSF2kQEzusJdRemZ9v6j+9azq3rA5EdnF GEA7j1r+grpGwWADbXeK9TRm1QMerW+wMy9eqDP9STsznHxlAXI0Cx/lHP+hPIFWcE/9YehOwzd 0VZifCb5H4NVh6X2xTaNPkeghPDG0=
X-Google-Smtp-Source: AGHT+IH3EYO+Tz7PXTCmAtH4zmqt1NsKElHgk01iU9LaLTu9/GZTljQyEeBRfNMIG51hzmyJXcjzAMJkVmGcNrNqEDo=
X-Received: by 2002:a05:6808:1443:b0:3fb:2e8f:4de5 with SMTP id 5614622812f47-3fb2e8f50dfmr1854305b6e.17.1741754725344; Tue, 11 Mar 2025 21:45:25 -0700 (PDT)
MIME-Version: 1.0
References: <1cef6a03e3b94cf0bbe9b0b4dea64203@huawei.com> <CAMEWqGsUDpdyc7opxYKNPpg6WnQCD56_5zaDUv6ysjrmYwG_Tg@mail.gmail.com> <CH0PR11MB573998C7B1781074E3E3133E9F2E2@CH0PR11MB5739.namprd11.prod.outlook.com> <73547adca6b4494faf2e5d3709c18c8b@huawei.com> <CAEmnErdyL9qkfQRw7USOX8-LYoCSQS7U0qCi1HQYkj_yWDiVBA@mail.gmail.com> <CAL02cgTCOwECrPpJ_WZghD0JO5ON_39mhfsDk1QaaQXRFOpCVg@mail.gmail.com> <8e0aebc38cc945bbab74dca308555ba1@huawei.com> <CAMEWqGv6yR6x7i7a5ns_x3U0M7Wj8r4B=cA=v0W4nsBT-QzBdA@mail.gmail.com> <cf77f751fbb54546b01a11c4361e651a@huawei.com> <CAMEWqGsSBQs7P=PBW8GLjPA7mkjCyHqxpD15mknqJd8A_a00Wg@mail.gmail.com> <0fe02043c353492e8f61748acc2c2039@huawei.com> <CAMEWqGtDNzBhU8Byik6uJdOp5ia7rurTpKSdEQkPTSBVJabhyw@mail.gmail.com> <c80cf2ffdcd24c7782eb98be3afd92c1@huawei.com> <CAMEWqGvym3rHzQX3NtQobC48Jy7+sAs13Uppm5M-gK_sP6YMMg@mail.gmail.com> <cf607f51194a4adfbacc3f8359c6d6d9@huawei.com> <CAMEWqGvpXD3Pqq3qSbbsDs3qNEn7oSU-Mi_=3XWhNkC5M7hwOg@mail.gmail.com>
In-Reply-To: <CAMEWqGvpXD3Pqq3qSbbsDs3qNEn7oSU-Mi_=3XWhNkC5M7hwOg@mail.gmail.com>
From: Aaron Gable <aaron@letsencrypt.org>
Date: Tue, 11 Mar 2025 21:45:14 -0700
X-Gm-Features: AQ5f1Joft0d7CbSWsjJB_qhWJK-cKliESyrAixheBgJWLA__TUQEMa89dCirpJI
Message-ID: <CAEmnErdGnGxBPUiHgDyhPrQ2hB5derJx9POJc44DL8fvN1CPSg@mail.gmail.com>
To: "Xialiang(Frank, IP Security Standard)" <frank.xialiang@huawei.com>, "draft-geng-acme-public-key.authors@ietf.org" <draft-geng-acme-public-key.authors@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000b0cb1006301ddf6c"
Message-ID-Hash: ZXQHLRUURQBKGMAI6GPZZP3GGGQE7DG2
X-Message-ID-Hash: ZXQHLRUURQBKGMAI6GPZZP3GGGQE7DG2
X-MailFrom: aaron@letsencrypt.org
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-acme.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: Richard Barnes <rlb@ipv.sx>, Mike Ounsworth <Mike.Ounsworth@entrust.com>, IETF ACME <acme@ietf.org>, Q Misell <q@as207960.net>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Acme] Re: Introducting a new draft about adding a new ACME challenge type: public key challgenge
List-Id: Automated Certificate Management Environment <acme.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/acme/7olBjSwDInVRzrHNXPPuql9VeIo>
List-Archive: <https://mailarchive.ietf.org/arch/browse/acme>
List-Help: <mailto:acme-request@ietf.org?subject=help>
List-Owner: <mailto:acme-owner@ietf.org>
List-Post: <mailto:acme@ietf.org>
List-Subscribe: <mailto:acme-join@ietf.org>
List-Unsubscribe: <mailto:acme-leave@ietf.org>
Hi all, At the request of this draft's authors, I'm using this thread to provide additional feedback on the updated version of the document ( draft-geng-acme-public-key-01 <https://datatracker.ietf.org/doc/draft-geng-acme-public-key/01/>) which will be presented at IETF 122. While I appreciate the document updates to address my comments about omitting the CSR, I believe this document is still structurally quite scattered and does not successfully argue its motivation. Regarding the structure, I think the logic would be much clearer if the document were laid out as: 1. Introduction (similar to today) 2. Terminology (BCP 14 boilerplate) 3. The pk Identifier Type (defines the `pk` identifier type; doesn't bother with the "selfsign-cert" and "csr" identifier types, as those are just transport mechanisms for a public key, not things that would be included in a certificate directly) 4. Identifier Validation Challenges 4.1. pk-idp-01 (how to use a third-party identity provider to prove control of the key, as described by the document today in Sections 2 and 5) 5. Changes to the Finalize Request (detailing how an ACME server may allow the CSR to be omitted from a finalize request if a pk identifier has been validated) 6. Security Considerations (absorbing most of the contents of what is currently Section 3 "Security Model") 7. IANA Considerations This layout would more closely match the layout of both RFC 8738 (ACME IP) and RFC 8823 (ACME S/MIME), for ease of readability. This layout would also pave the way for a number of other potential validation challenges to be included. Ideas I've had, which should be thoroughly designed and discussed and likely dismissed, include: 4.2. tls-alpn-01 (how to use the existing tls-alpn-01 challenge, with the additional requirement that the presented certificate contain the requested public key and that the TLS handshake complete successfully) 4.3. pk-tls-01 (a new method similar to the above, but without the acme-tls/1 ALPN protocol and without the acmeIdentifier extension, allowing the applicant to use their currently-valid TLS certificate if they plan to keep using the same key) 4.4. pk-dns-01 (similar to the existing dns-01 challenge, with the change that the server expects to find a hash of the pubkey in the TXT record rather than a key authorization) 4.5. pk-dane-01 (similar to the above, but searching for a TLSA 3 1 X or TLSA 1 1 X record rather than a TXT record) 4.6. pk-jwk-01 (as mentioned by Richard Barnes upthread, use the private key to sign a JWS over the challenge token, and POST it to the challenge URL like the new onion-csr-01 challenge) Regarding the motivation, I believe the core of the motivation is presented in the third and fourth paragraphs of the introduction: > 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. Based on the standard ACME application process, the ACME server can communicate with the user and prove the validity of the user's identity through its proxy. However, standard ACME application process does not verify that the public key in the challenge phase and the public key in the CSR are the same when the CSR is submitted. The proxy may be a malicious adversary that substitutes the final CSR and applies for a mismatched certificate. > > Similarly, in non-proxy scenarios the certificate applicant is the ACME client, which may generate other arbitrary public-private key pairs to apply for obtaining mismatched certificates after completing the challenge phase, i.e., the public key of the finally issued certificate does not match with the public key in the challenge phase, which results in a security risk. Unfortunately, I find this reasoning flimsy. Let's take the proposed situation at face value: a fleet of machines have the internet connectivity to complete DCV challenges, but not to run their own ACME clients. Instead, all their outbound ACME requests are handled by a "proxy" which holds the ACME account key and uses it to sign the ACME requests. The argument is that this fleet may not fully trust that proxy, fearing that it could substitute a different CSR (i.e. a different public key) at the finalization step. But allowing those backend clients to prove that they control various pubkeys does nothing to mitigate the threat of this malicious proxy: it can simply modify the new-order requests to include different pubkey identifiers, complete the challenges to prove control over those pubkeys itself, and then still substitute a different CSR at finalize time. The clients gain no assurance that a certificate containing a different pubkey won't be issued by the proxy. If the backend clients don't trust the proxy, they shouldn't be completing DCV challenges on its behalf. Similarly, in the non-proxy case, an applicant which does not trust its ACME client should not complete any DCV challenges on behalf of that client. Remember that, from the ACME server's perspective, the ACME client (i.e. the entity which controls the ACME client's account key) *is* the applicant -- any other machines which may be helping complete DCV challenges are just helpers, not the "real" applicant. If you don't trust your ACME client, you've already lost, because the Server trusts nothing *but* the ACME client. Again, I appreciate the work the authors have done on this draft. I think that the general concept of a pubkey identifier type is a good one, and we should discuss the merits of various challenge types that can be used to verify that the client wants a given key to appear in its certificate and/or that it controls the corresponding private key. I look forward to discussing this further at IETF 122 and into the future. Aaron
- [Acme] Introducting a new draft about adding a ne… Xialiang(Frank, IP Security Standard)
- [Acme] 回复: Re: 回复: [EXTERNAL] Re: Introducting a … Xialiang(Frank, IP Security Standard)
- [Acme] Re: Introducting a new draft about adding … Q Misell
- [Acme] Re: Introducting a new draft about adding … Ilari Liusvaara
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … Richard Barnes
- [Acme] 回复: Introducting a new draft about adding … Xialiang(Frank, IP Security Standard)
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … Seo Suchan
- [Acme] Re: 回复: Re: 回复: [EXTERNAL] Re: Introductin… Q Misell
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … Aaron Gable
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … 吴攀雨
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … Michael Richardson
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … 吴攀雨
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … Aaron Gable
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … Michael Richardson
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … Amir Omidi
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … Michael Richardson
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … 吴攀雨
- [Acme] Re: [EXTERNAL] Re: Introducting a new draf… Mike Ounsworth
- [Acme] Re: 回复: Re: 回复: [EXTERNAL] Re: Introductin… Q Misell
- [Acme] Re: 回复: Re: 回复: [EXTERNAL] Re: Introductin… Q Misell
- [Acme] 回复: Re: Introducting a new draft about add… Xialiang(Frank, IP Security Standard)
- [Acme] Re: Introducting a new draft about adding … 吴攀雨
- [Acme] Re: [EXTERNAL] Re: Introducting a new draf… Mike Ounsworth
- [Acme] 回复: [EXTERNAL] Re: Introducting a new draf… Xialiang(Frank, IP Security Standard)
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … Aaron Gable
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … Kathleen Moriarty
- [Acme] Re: 回复: [EXTERNAL] Re: Introducting a new … Aaron Gable
- [Acme] 回复: Re: 回复: [EXTERNAL] Re: Introducting a … Xialiang(Frank, IP Security Standard)
- [Acme] 回复: 回复: Re: 回复: [EXTERNAL] Re: Introductin… Xialiang(Frank, IP Security Standard)
- [Acme] Re: 回复: Re: 回复: [EXTERNAL] Re: Introductin… Q Misell
- [Acme] 回复: 回复: Re: 回复: [EXTERNAL] Re: Introductin… Xialiang(Frank, IP Security Standard)
- [Acme] 回复: 回复: Re: 回复: [EXTERNAL] Re: Introductin… Xialiang(Frank, IP Security Standard)
- [Acme] Re: 回复: Re: 回复: [EXTERNAL] Re: Introductin… Q Misell
- [Acme] 回复: 回复: Re: 回复: [EXTERNAL] Re: Introductin… Xialiang(Frank, IP Security Standard)
- [Acme] Re: Introducting a new draft about adding … Aaron Gable
- [Acme] Re: Introducting a new draft about adding … Q Misell