>    I can live with this, but I'm not enthusiastic.
> 
>    tl;dr: Makes things more complicated, security benefit debatable.
>    It makes me sad to lose the clean layering between cryptographic
>    verification and verification of identity.  Before, the need to provide a
>    valid signature provided some minimal validation of the request that could
>    be performed totally statelessly by the server.  Now, the request
>    validation logic needs access to the account DB.  I guess whether you see
>    this as a loss depends on whether you regard signature verification or DB
>    access as more expensive; I am far more wary of DB access, and state
>    coupling in general.
> 
>    I also don't think the attribution gains here are quite as big as are
>    being suggested.  For all requests where the account tied to the key
>    matters, the account is identified by the key.  So the error case here
>    isn't like an HTTPS client that doesn't check the server's cert and
>    proceeds with the connection anyway; an ACME server that doesn't look up
>    the account for a key is unable to proceed.
> 
>    I'll grant that the "kid" approach is somewhat harder to attack than the
>    "jwk" approach.  In order to get the server to recognize a bad key pair,
>    the attacker needs to get a confusable account URI, and account URIs are
>    issued by the server.  So you basically need two bugs instead of one (URI
>    allocation + comparison, vs. key comparison).  Nonetheless, key comparison
>    does not seem that risky to me -- it's what undergirds every TLS and SSH
>    session you've ever engaged in, after all, and I don't recall ever hearing
>    about a major vuln in an implementation of these protocols due to a key
>    comparison flaw.  I don't have the same confidence in URL allocation and
>    comparison routines, which will have much more variability.
I've already come out against this, but I'd like to echo Barnes's point
about URL comparison being a bit messy. There are multiple possible URLs
which represent a resource - "https://example.com/acme/reg/123";,
"https://example.com/acme/reg/123?";,
"https://example.com/acme/reg/123#";,
"https://example.COM./acme/reg/123";, maybe even
"http://example.com/acme/reg/123";. Specifying the "right" URL isn't as
simple as it seems. What if an implementation considers only the path
and ignores the hostname, etc. Clarifying this would probably be a
decent-sized paragraph to add to the spec.

Avoiding key comparison also seems like crypto-superstition more than a
problem demonstrated in practice. Can we point to any historical
vulnerabilities caused by an implementation error of this kind?

_______________________________________________
Acme mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/acme

Reply via email to