Re: [Acme] Benjamin Kaduk's Discuss on draft-ietf-acme-email-smime-10: (with DISCUSS and COMMENT)

Alexey Melnikov <alexey.melnikov@isode.com> Thu, 12 November 2020 16:28 UTC

Return-Path: <alexey.melnikov@isode.com>
X-Original-To: acme@ietfa.amsl.com
Delivered-To: acme@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AAD593A1391; Thu, 12 Nov 2020 08:28:58 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.1
X-Spam-Level:
X-Spam-Status: No, score=-2.1 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NICE_REPLY_A=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=isode.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4Z5io2joFbiu; Thu, 12 Nov 2020 08:28:57 -0800 (PST)
Received: from waldorf.isode.com (waldorf.isode.com [62.232.206.188]) by ietfa.amsl.com (Postfix) with ESMTP id 2F64B3A0FB1; Thu, 12 Nov 2020 08:28:57 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1605198535; d=isode.com; s=june2016; i=@isode.com; bh=45Cb+Oev5NUbjR96xk8DQfQ0Ltm/NoiNKj3/5/nfCV0=; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:Cc:MIME-Version: In-Reply-To:References:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description; b=nF0iwGiLtV8rNzgP5M2dghtordAm0TR7zi2lUqNXgmxpPrjK5LhjSuv5D7wRNeMzEkFc7F ztNW5CudZI3CIk2LReGLhgYlONwzK+4GCLvK29W3xnY099wD+SmGnQEgmtYRDZDfp+f4cR kf+0gEHPOQ/vgpb8mvJ+1ENoGQfamiI=;
Received: from [172.27.253.123] (connect.isode.net [172.20.0.72]) by waldorf.isode.com (submission channel) via TCP with ESMTPSA id <X61ixgA312XR@waldorf.isode.com>; Thu, 12 Nov 2020 16:28:54 +0000
To: Benjamin Kaduk <kaduk@mit.edu>, The IESG <iesg@ietf.org>
Cc: rsalz@akamai.com, acme@ietf.org, acme-chairs@ietf.org
References: <160456339844.32027.10383263330343255957@ietfa.amsl.com>
From: Alexey Melnikov <alexey.melnikov@isode.com>
Message-ID: <c72efad4-76b8-e323-56f8-3735d76a1d9c@isode.com>
Date: Thu, 12 Nov 2020 16:28:39 +0000
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.4.2
In-Reply-To: <160456339844.32027.10383263330343255957@ietfa.amsl.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Language: en-GB
Content-transfer-encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/acme/FZvlLAW5xAJdvCBR38u2dP9UB-0>
Subject: Re: [Acme] Benjamin Kaduk's Discuss on draft-ietf-acme-email-smime-10: (with DISCUSS and COMMENT)
X-BeenThere: acme@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Automated Certificate Management Environment <acme.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/acme>, <mailto:acme-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/acme/>
List-Post: <mailto:acme@ietf.org>
List-Help: <mailto:acme-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/acme>, <mailto:acme-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 12 Nov 2020 16:28:59 -0000

Hi Ben,

On 05/11/2020 08:03, Benjamin Kaduk via Datatracker wrote:
> The more straightforward point is that the procedure in section 3
> indicates that token-part2 is returned to the ACME client over HTTPS,
> but the stated procedure does not otherwise involve an ACME client in
> initiating the newOrder request.  I think we need to clarify the
> interaction/relationship between end-user/email client UI/etc and the
> ACME client in step 1.  In particular, I think that "[t]his document
> doesn't prescribe how exactly S/MIME certificate issuance is initiated"
> seems incompatible with requiring there to be an ACME client involved
> (and the presumed newOrder ACME request, etc.) unless the "initiate"
> operation is supposed to be the way by which the ACME client is
> triggered to start the request.

I propose the following new description to address your above DISCUSS 
points. This probably needs another editorial pass for readability, but 
I think the new description is much better for implementors:

    The process of issing an S/MIME certificate works as follows. Note
    that the ACME client can be a standalone application (if the MUA is
    not ACME-email-aware) or can be a component of the MUA.

    1.  An end-user initiates issuance of an S/MIME certificate for one
        of her email addresses.  This might be done using email client
        UI, by running a command line tool, by visiting a Certificate
        Authority web page, etc.  This document doesn't prescribe
        specific UI used to initiate S/MIME certificate issuance.

    2.  The ACME-email-aware client component begins the certificate
        issuance process by sending a POST request to the server's
        newOrder resource, including the identifier of type "email".  See
        Section 7.4 of [RFC8555] for more details.

    3.  The ACME server responds to the POST request, including
        "authorizations" URL for the requested email address.  The ACME
        client then retrieves information about the corresponding "email-
        reply-00" challenge as specified in Section 7.5 of [RFC8555].
        The "token" field of the corresponding "challenges" array element
        (which contains "type": "email-reply-00" as another field)
        contains token-part2. token-part2 should contain at least 128
        bits of entropy.

    4.  After responding to the authorization request the ACME server
        generates another token and a "challenge" email message with the
        subject "ACME: <token-part1>", where <token-part1> is the
        base64url encoded [RFC4648] of the token.  The ACME server MUST
        generate a fresh token for each S/MIME issuance request
        (authorization request), and token-part1 MUST contain at least
        128 bits of entropy.  The challenge email message structure is
        described in more details in Section 3.1.

    5.  The MUA retrieves and parses the challenge email message. The
        ACME client concatenates "token-part1" (received over email) and
        "token-part2" (received over HTTPS [RFC2818]) to create ACME
        "token", calculates keyAuthorization (as per Section 8.1 of
        [RFC8555]), then returns the base64url encoded SHA-256 digest
        [FIPS180-4] of the key authorization.  The MUA returns the
        base64url encoded SHA-256 digest obtained from the ACME client in
        the body of a response email message.  The response email message
        structure is described in more details in Section 3.2.

    6.  Once the MUA sends the response email, the ACME client can start
        polling the authorization URL (using POST-as-GET request) to see
        if the ACME server received and validated the response email
        message.  (See Section 7.5.1 of [RFC8555] for more details.)  If
        the "status" field of the challenge switches to "valid", then the
        ACME client can proceed with request finalization.  The
        Certificate Signing Request (CSR) MUST indicate the exact same
        set of requested identifiers as the initial newOrder request.
        For an identifier of type "email", the PKCS#10 [RFC2986] CSR MUST
        contain the requested email address in an extensionRequest
        attribute [RFC2985] requesting a subjectAltName extension. If a
        request to finalize an order is successful, the ACME server will
        return a 200 (OK) with an updated order object.  If the
        certificate is issued successfully, i.e. if the order "status" is
        "valid", then the ACME client can download the issued S/MIME
        certificate from the URL specified in the "certificate" field.

Best Regards,

Alexey