Richard and Karthikeyan,

We had to support not making copy/paste a hard requirement – desirable perhaps 
but not mandatory.
Our "ca-account-secret" put us in the copy/paste desirable space, but still 
do-able without it.  A MAC key is realistically  in the do-able only with 
copy/paste spectrum.

If you assume copy/paste is available, then the usability impact of introducing 
a MAC key is lessened as Richard has described.
This is a  reasonable assumption in most cases so 
https://github.com/ietf-wg-acme/acme/pull/212 is a good step forward for these 
more general use cases.

I believe we still have the option of using  
https://github.com/ietf-wg-acme/acme/pull/211 to register custom fields for use 
cases not covered by https://github.com/ietf-wg-acme/acme/pull/212. These two 
PRs together should  give us the security and flexibility that we need.

Ray


From: Richard Barnes [mailto:r...@ipv.sx]
Sent: Tuesday, November 22, 2016 4:55 PM
To: Ray Cheng <ray.ch...@entrustdatacard.com>
Cc: Karthikeyan Bhargavan <karthik.bharga...@gmail.com>; acme@ietf.org; Jacob 
Hoffman-Andrews <j...@eff.org>
Subject: Re: [Acme] Proposal for adding arbitrary CA-specific name-value pairs 
to registration object



On Tue, Nov 22, 2016 at 3:37 PM, Richard Barnes 
<r...@ipv.sx<mailto:r...@ipv.sx>> wrote:
On Tue, Nov 22, 2016 at 1:33 PM, Ray Cheng 
<ray.ch...@entrustdatacard.com<mailto:ray.ch...@entrustdatacard.com>> wrote:
We are using a "ca-account-secret" with the "new-reg" request to make an 
association between the ACME account key and a CA account.

We have implemented additional security measures around our “ca-account-secret” 
beyond ACME to satisfy our own security requirements, for example:
1. Secret expiry
2. Account lockout
3. Human approval post association
4. Monitoring

At least for our CA use case, the logistics of having to distribute a MAC key 
out of band would make it impractical enough that we would likely choose other 
options. For example, we could just have someone manually provision their ACME 
account public key into our CA account system to make the association. We 
didn't choose this route as it was deemed less operator-friendly.

I'm a little confused here.  The only thing that "distributing a MAC key out of 
band" requires is that you give the customer two strings instead of one.  
Assuming client software had a place to copy/paste in each of these, could you 
work with that?

Here's a PR implementing this idea, for concreteness:

https://github.com/ietf-wg-acme/acme/pull/212



--Richard




Regards,

Ray

> -----Original Message-----
> From: Karthikeyan Bhargavan 
> [mailto:karthik.bharga...@gmail.com<mailto:karthik.bharga...@gmail.com>]
> Sent: Saturday, November 19, 2016 2:23 AM
> To: Ray Cheng 
> <ray.ch...@entrustdatacard.com<mailto:ray.ch...@entrustdatacard.com>>
> Cc: acme@ietf.org<mailto:acme@ietf.org>; Jacob Hoffman-Andrews 
> <j...@eff.org<mailto:j...@eff.org>>
> Subject: Re: [Acme] Proposal for adding arbitrary CA-specific name-value
> pairs to registration object
>
> It is worth noting that “external_secret”, “ca-account-secret”, and
> “token” are all secret bearer tokens and, as such, offer *significantly*
> less security than the default ACME mechanisms, and in some cases may
> defeat the purpose of having account keys.
>
> I can see that different vendors may have need for symmetric secrets like
> these for their own use, but if we were to extend ACME to allow such
> “external” secrets, we should standardize their secure use.
>
> For example, a much safer way to embed “external_secret”, “ca-account-
> secret”, and “token” would be to have an “external-key-id” field, that
> indicates a MAC key that has been exchanged out-of-band; we would then use
> MAC-based authentication to bind the MAC key to the relevant JWS request,
> using the standard nested authentication mechanism we are using in roll-
> over, something like:
>
>       Sign (account-key, (request, external-key-id, MAC (external_key,
> Hash(account_key))))
>
> This would ensure that the external secret is never sent on the wire and
> is not a bearer token, and the compound authentication guarantees of the
> resulting protocol are quite strong.
>
> More generally, ACME is not a browser-based protocol and there is no need
> for us to rely on obsolete cookie-like mechanisms; ACME clients and
> servers are already doing crypto, so why not use MACs instead of passing
> bearer tokens in URLs or in the request?
>
> Best,
> Karthik
>
> > On 31 Oct 2016, at 16:43, Ray Cheng 
> > <ray.ch...@entrustdatacard.com<mailto:ray.ch...@entrustdatacard.com>>
> wrote:
> >
> > Hi Jacob,
> >
> > From: Jacob Hoffman-Andrews, Thursday, October 27, 2016 5:28 PM:
> >>
> >> On 10/04/2016 06:11 AM, Ray Cheng wrote:
> >>> One way to accomplish this in the protocol is to simply add a "ca-
> >> extension" object to the registration object, where the "ca-extension"
> >> object is an array of name-value pairs of strings. For example:
> >> I think this makes a lot of sense, and is in the spirit of the other
> >> places we've intentional left hooks for CA-specific customization,
> >> like OOB challenges. I'm inclined to accept it.
> >>
> >> Additionally, your experience as a commercial implementer of ACME may
> >> be valuable to spot places where the current protocol is lacking. For
> >> instance, you need an "account" field, and StartCom needs
> >> (https://github.com/ietf-wg-acme/acme/pull/172) a "token" field. Can
> >> we support those use cases natively in ACME so they don't need to be
> >> extensions? What do you put in the "account" field, and how do you
> >> authenticate the link between the ACME account and the Entrust account.
> >>
> >
> > We are effectively using "ca-account-id" and "ca-account-secret" fields
> to authenticate the link to the Entrust account. Since these fields do not
> currently exist in draft-03 and certbot, we are embedding them in the URL
> that a particular customer uses to access our ACME server.
> >
> > The "external_secret"/"token" is slightly different but is also useful
> as an "API key" type of authentication.
> >
> > Although we see value in a "ca-extension" object, we also support adding
> explicit fields in ACME. There are some advantages to explicit fields -
> one in particular is the special handling of designated secret fields by
> clients.
> >
> > Thanks for your feedback.
> >
> >
> > _______________________________________________
> > Acme mailing list
> > Acme@ietf.org<mailto:Acme@ietf.org>
> > https://www.ietf.org/mailman/listinfo/acme
>

_______________________________________________
Acme mailing list
Acme@ietf.org<mailto:Acme@ietf.org>
https://www.ietf.org/mailman/listinfo/acme


_______________________________________________
Acme mailing list
Acme@ietf.org
https://www.ietf.org/mailman/listinfo/acme

Reply via email to