> Do we instead use a structure containing the full AKI (as encoded in the 
> certificate) and the serial number? This would seem to me to allow unique 
> identification, without having the issuer certificate to hand.

The Authority Key Identifier only identifies the authority's key.  Please see 
my earlier message [1] for some thoughts and questions regarding whether or not 
that's sufficient to identify the issuer.  My view is that it's insufficient, 
and that an issuer can only be uniquely identified by its Key and Name.  If you 
accept my view then...

I suppose we could define a structure that contains all of the following 
elements:

  *   the full AKI
  *   the full Issuer DN
  *   the certificate serial number

To keep ARI requests small, we'd probably want to send hashes of those elements 
rather than the elements themselves.  And it would make sense to build in hash 
algorithm agility.  And...we've essentially just reinvented CertID, except 
we've swapped the hash of the issuer's public key for a hash of the AKI 
extension.

Is needing / not needing a copy of the issuer certificate really such a big 
deal that we need to reinvent the (CertID) wheel?


[1] https://mailarchive.ietf.org/arch/msg/acme/QHNxo0L89XS6Y9VNF1oD6X907UY/

________________________________
From: Q Misell <q=40as207960....@dmarc.ietf.org>
Sent: 26 July 2023 17:52
To: Rob Stradling <r...@sectigo.com>
Cc: Aaron Gable <aa...@letsencrypt.org>; Ilari Liusvaara 
<ilariliusva...@welho.com>; acme@ietf.org <acme@ietf.org>
Subject: Re: [Acme] Practical concerns of draft-ietf-acme-ari


CAUTION: This email originated from outside of the organization. Do not click 
links or open attachments unless you recognize the sender and know the content 
is safe.


> RFC5280 permits CAs to populate 
> AuthorityKeyIdentifier.{authorityCertIssuer,authorityCertSerialNumber} 
> instead of AuthorityKeyIdentifier.keyIdentifier.

Do we instead use a structure containing the full AKI (as encoded in the 
certificate) and the serial number? This would seem to me to allow unique 
identification, without having the issuer certificate to hand.
________________________________

Any statements contained in this email are personal to the author and are not 
necessarily the statements of the company unless specifically stated. AS207960 
Cyfyngedig, having a registered office at 13 Pen-y-lan Terrace, Caerdydd, 
Cymru, CF23 9EU, trading as Glauca Digital, is a company registered in Wales 
under № 
12417574<https://find-and-update.company-information.service.gov.uk/company/12417574>,
 LEI 875500FXNCJPAPF3PD10. ICO register №: 
ZA782876<https://ico.org.uk/ESDWebPages/Entry/ZA782876>. UK VAT №: GB378323867. 
EU VAT №: EU372013983. Turkish VAT №: 0861333524. South Korean VAT №: 
522-80-03080. AS207960 Ewrop OÜ, having a registered office at Lääne-Viru 
maakond, Tapa vald, Porkuni küla, Lossi tn 1, 46001, trading as Glauca Digital, 
is a company registered in Estonia under № 16755226. Estonian VAT №: 
EE102625532. Glauca Digital and the Glauca logo are registered trademarks in 
the UK, under № UK00003718474 and № UK00003718468, respectively.


On Wed, 26 Jul 2023 at 08:56, Rob Stradling 
<rob=40sectigo....@dmarc.ietf.org<mailto:40sectigo....@dmarc.ietf.org>> wrote:
> > For reasons I outlined in 
> > https://mailarchive.ietf.org/arch/msg/acme/aoiW7X3lPYoQ6X8hhRGEvG3HDmo/, I 
> > have a strong preference for sticking with CertID and an equally strong 
> > preference against a 'return to the "url in the Order object" '.
>
> Returning to that message, the main impression I get is that you want ARI to 
> be implementable outside of an ACME server, so you can implement it in OCSP 
> responder infrastructure.

Hi Aaron.  Yes, that's my goal.

> This makes sense, but raises two questions in my mind:
> 1) How do you intend to achieve this goal now that ARI includes POST 
> protocols which by definition must be aware of ACME user accounts?

The "renewalInfo" resource in each of our ACME server directory objects will 
point to our ACME server web frontend, which will handle POST requests directly 
(using our ACME server backend, which is part of our CA system) but will either 
proxy or HTTP-redirect GET requests to our OCSP infrastructure.  I'm expecting 
the "heavy-polling nature of ARI" (as you phrased it) to only affect GET 
requests, so I think we should be fine with splitting the traffic in this 
manner.

FWIW, our intent is that our OCSP infrastructure will also respond to ARI GET 
requests for certificates issued via non-ACME mechanisms.  I realise this is 
out of scope for draft-ietf-acme-ari and the ACME WG, but I feel that it makes 
sense to do it.  The GET request part of ARI is not tied to the ACME protocol, 
and the goals expressed in 
https://www.ietf.org/archive/id/draft-ietf-acme-ari-01.html#section-1 are not 
unique to the ACME protocol.

> 2) This desire doesn't seem tied to the CertID structure itself, just to the 
> idea of independently-constructable ARI request URLs. Would you be okay with 
> a different structure, as long as it is still externally constructable?

Yes, I'm OK with that in principle.

I have a strong preference for basing ARI requests on certificate serial 
numbers rather than thumbprints: selfishly, our OCSP infrastructure is already 
geared up to handle serial number lookups; but also, it's harder for a client 
to mangle a serial number than a thumbprint (e.g., consider non-canonical 
encodings of the copy of the signature parameters that isn't covered by a 
certificate's signature).

To unambiguously identify the issuer, I suppose CABForum BR-compliant CAs could 
maybe live with ARI using the certificate's 
AuthorityKeyIdentifier.keyIdentifier field (as others have proposed already on 
this thread), because the BRs forbid CAs from populating the 
AuthorityKeyIdentifier.{authorityCertIssuer,authorityCertSerialNumber} fields.  
However, we're defining ARI in the context of IETF, not CABForum; and in the 
IETF context, RFC5280 permits CAs to populate 
AuthorityKeyIdentifier.{authorityCertIssuer,authorityCertSerialNumber} instead 
of AuthorityKeyIdentifier.keyIdentifier.  ACME has already seen adoption beyond 
the initial WebPKI use case, so I think we should expect ARI to need to support 
non-WebPKI use cases too.

Is it required that a CA's Subject DN must be globally unique?  No.

Is it required that a CA's SubjectPublicKeyInfo must be globally unique?  
Again, no.

If two CAs have different Subject DNs but share the same SubjectPublicKeyInfo, 
should we consider them to be the same CA or different CAs?

OCSP would answer "different CAs", judging by the definition of the CertID 
structure.  FWIW, crt.sh takes the "different CAs" view too...and BTW this 
isn't just a theoretical question: crt.sh knows of >160 SubjectPublicKeyInfos 
that are each associated with >1 Subject DN (see [1]).  One example: 
https://crt.sh/?caid=65461 and https://crt.sh/?caid=65479.

Considering all of these edge and corner cases in the context of ARI...I can't 
help but wonder if CertID might actually be the least worst tool for the job.

Is it really a problem if the ARI protocol requires the ARI client to possess a 
copy of the issuer certificate?
Are there realistic scenarios in which an ARI client would not be able to 
locate a copy of the issuer certificate?


[1] psql -h crt.sh -p 5432 -U guest -d certwatch -c "select count(*), 
min(name), max(name) from ca group by public_key having count(*) > 1 and 
min(name) != max(name) order by count(*);"

________________________________
From: Acme <acme-boun...@ietf.org<mailto:acme-boun...@ietf.org>> on behalf of 
Aaron Gable 
<aaron=40letsencrypt....@dmarc.ietf.org<mailto:40letsencrypt....@dmarc.ietf.org>>
Sent: 20 July 2023 16:38
To: Ilari Liusvaara <ilariliusva...@welho.com<mailto:ilariliusva...@welho.com>>
Cc: acme@ietf.org<mailto:acme@ietf.org> <acme@ietf.org<mailto:acme@ietf.org>>
Subject: Re: [Acme] Practical concerns of draft-ietf-acme-ari


CAUTION: This email originated from outside of the organization. Do not click 
links or open attachments unless you recognize the sender and know the content 
is safe.


On Wed, Jul 19, 2023 at 11:16 PM Ilari Liusvaara 
<ilariliusva...@welho.com<mailto:ilariliusva...@welho.com>> wrote:
E.g., the client might be deterministically generating renewal time
from window (the client I wrote does this). This works nicely if the
renewal window does not shift around. However, it becomes heavily
biased toward beginning of the window if the window shifts around.

Why? The draft specifically says that clients should be choosing a time within 
the window randomly, not deterministically. What's the motivation (and method) 
for doing a deterministic derivation?

 On Wed, Jul 19, 2023 at 11:16 PM Ilari Liusvaara 
<ilariliusva...@welho.com<mailto:ilariliusva...@welho.com>> wrote:
The single most annoying part of the process is the hash of the issuer
key. For that, you need the issuer certificate, while everything else
can be pulled from the subject certificate.

 On Thu, Jul 20, 2023 at 3:31 AM Deb Cooley 
<debcool...@gmail.com<mailto:debcool...@gmail.com>> wrote:
Issuer key hash:  Is this not in the Authority Key ID extension?  Or is this 
extension not used?

If these things are not the same, my recommendation would be to use Authority 
Key ID value as a way to ID the issuing CA.

 On Thu, Jul 20, 2023 at 7:10 AM Ilari Liusvaara 
<ilariliusva...@welho.com<mailto:ilariliusva...@welho.com>> wrote:
AFAICT, no.

RFC5280 merely recommends a construction for AKI, that nevertheless
happens to match value used by issuer key hash in OCSP.

However:

1) One can not rely on this, because some CAs do it differently.

2) The value used in ARI is computed using SHA-256, and does not match
   the recommended AKI construction.

To be clear, the issuer hashes in ARI are *not* computed using SHA-256, they're 
computed using any hash algorithm of the client's choice, just like OCSP. This 
is what I meant when I said that OCSP's "CertID" structure has "algorithm 
agility": it has an algorithm field which must be set to the algorithm used to 
hash the Issuer Name and Issuer Key. Let's Encrypt's ARI implementation happens 
to reject any requests which use an algorithm other than SHA-256, but that's 
not part of the draft.

Producing the IssuerNameHash is easy from just the end-entity certificate, 
since the Issuer Name is of course embedded in it.

Producing the IssuerKeyHash is *almost* easy from just the end-entity 
certificate, but in fact impossible to guarantee correct. For example, if a CA 
follow's RFC 5280 Section 4.2.1.2 to construct their Subordinate CA 
Certificates' Subject Key Identifier (specifically "The keyIdentifier is 
composed of the 160-bit SHA-1 hash of the value of the BIT STRING 
subjectPublicKey (excluding the tag, length, and number of unused bits)"), then 
the end-entity cert's IssuerKeyID is exactly the needed IssuerKeyHash with a 
hash algorithm of SHA-1. Similarly, all of Let's Encrypt's Subordinate CA Certs 
use the exact same method 
(https://github.com/letsencrypt/boulder/blob/908421bb98c11c8ffce640029b6357446c528cfb/cmd/ceremony/cert.go#L199-L209),
 except with SHA-256 instead of SHA-1. So it is *technically* possible for 
clients to simply extract the AuthorityKeyId, transfer it to the CertID, and 
submit it to Let's Encrypt's ARI endpoint.

However, there's no way to guarantee that. The AuthorityKeyID field gives no 
indication of how it was produced, and there's no way to guarantee that a CA 
will continue to use the same method over time. So to guarantee correctness, a 
client can't rely on the AKID and has to use the Issuer cert to re-derive the 
Issuer Key Hash.

This is very unfortunate, and is the primary reason that I'm seriously 
considering changing the request format. It would be truly nice for the request 
to be constructable using *only* the end-entity cert.

Maybe it would be best to state "Hey, the CA generated its own Issuer Key IDs, 
it can be expected to recognize them too", and make the request simply 
IssuerKeyID + Serial, in some simple concatenate+base64url format.

On Thu, Jul 20, 2023 at 4:14 AM Rob Stradling 
<rob=40sectigo....@dmarc.ietf.org<mailto:40sectigo....@dmarc.ietf.org>> wrote:
For reasons I outlined in 
https://mailarchive.ietf.org/arch/msg/acme/aoiW7X3lPYoQ6X8hhRGEvG3HDmo/, I have 
a strong preference for sticking with CertID and an equally strong preference 
against a 'return to the "url in the Order object" '.

Returning to that message, the main impression I get is that you want ARI to be 
implementable outside of an ACME server, so you can implement it in OCSP 
responder infrastructure. This makes sense, but raises two questions in my mind:
1) How do you intend to achieve this goal now that ARI includes POST protocols 
which by definition must be aware of ACME user accounts?
2) This desire doesn't seem tied to the CertID structure itself, just to the 
idea of independently-constructable ARI request URLs. Would you be okay with a 
different structure, as long as it is still externally constructable?

Thanks,
Aaron
_______________________________________________
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