Dear IETF ACME Working Group,

I hope this message finds you well.

I recently reviewed the attack model discussed in Section 11.1 of RFC 8555,
specifically regarding the consequences of compromising an ACME account's
private key. In light of these concerns, I would like to propose ACME++, an
enhancement to the ACME protocol designed to prevent attackers from issuing
fraudulent certificates. Below, I provide an brief overview of the key
components of ACME++ and its protocol design.

1. Client Authz Object

ACME++ introduces enhanced client verification mechanisms, with a primary
focus on the Client Authz object. This object serves as a unique
verification token that binds an ACME client to a specific account. It
combines the client's IP address and a client-generated ID, helping to
distinguish legitimate clients from potential attackers, while making the
system more resilient to brute-force and other types of attacks.

Client Authz Object Fields:


Field Name

Description


status

Current verification status of the identifier.


expires

Current verification expiration time.


identifier

Unique identifier consisting of the client's IP address and client-generated
ID.


challenges

A list of ACME Challenge objects for client verification.

2. newClientAuthz Directory Service

ACME++ introduces a new endpoint, newClientAuthz, as part of the CA server
Directory services. The client can send a POST-as-GET request to
/acme/client-authz/<authz_id> to access the Client Authz object. The client
can then complete the challenges in the object using HTTP-01 or DNS-01
challenge types. Upon successful completion of all challenges, the client is
verified, and the CA updates the Client Authz object status to "valid,"
allowing the CA to proceed with certificate issuance.

3. ACME++ Protocol Workflow

The ACME++ protocol workflow can be summarized as follows:

1.      The ACME client initiates a newOrder request, including its IP
address, self-generated client ID, ACME account key, and Account UID in the
request to the CA server.
2.      The CA performs two verification steps:

*       It checks whether the client's communication IP matches the
submitted IP address.
*       It verifies the existence of a valid Client Authz record for the
client.

If both conditions are met, the CA proceeds with certificate issuance
according to the standard ACME protocol. If the IP addresses do not match,
the CA terminates the connection, as this may indicate a compromised ACME
account. If no valid Client Authz record exists, the CA generates a new
Client Authz object for the client, assigns it a "pending" status, and
returns the object ID along with challenges to the client.

The challenge generation follows a structured approach: the CA retrieves all
valid Authz records associated with the account and randomly selects a few
(in logarithmic scale) to create new challenges, which the client must
complete to re-validate domain ownership.

 

I hope that ACME++ can provide an additional layer of security for
ACME-based certificate management, helping to mitigate potential attacks
while streamlining the verification process for legitimate clients. I would
greatly appreciate any feedback or suggestions the Working Group might have
regarding this proposal.

Thank you for your attention to this matter. I look forward to your
thoughts.

Best regards,
Tianyu Zhang
Tsinghua University

 

_______________________________________________
Acme mailing list -- acme@ietf.org
To unsubscribe send an email to acme-le...@ietf.org

Reply via email to