On 18/09/13 14:20, Tomas Gustavsson wrote:
<snip>
> 5. Add in Security Considerations the scary issuerDN/serialNumber equality.
>
> Step 2 (wishful):
> - I would prefer if the PreCertificate was it's own data structure that
> could not be confused with a real certificate.
Alternatively, could we avoid this confusion by simply changing the
first byte in the PreCertificate's TBSCertificate (always 0x30) to some
other value before computing the hash?
<snip>
> - The PreCertificate could be signed by a PreCertificate Signer instead
> of a PreCertificate CA, like an OCSP signer but for PreCertificates. The
> delegation method is well known.
Hmmm...the RFC doesn't say whether a "Precertificate Signing
Certificate" needs to contain basicConstraints:CA=TRUE and
keyUsage=keyCertSign, or not.
--
You received this message because you are subscribed to the Google Groups "certificate-transparency" group.
To unsubscribe from this group and stop receiving emails from it, send an email to certificate-transparency+unsub...@googlegroups.com.
The only requirement Precertificate Signing Certificates have to fulfill for CT is to unambiguously bind the pre-cert to the final certificate and its issuer. For everything else - how to implement this safely, in a non-confusing way for clients and in compliance with CA policies and software - we are completely open to suggestions, and I'm glad to see this discussion!I'll try to comment on a few points raised.1. "The PreCertificate could be signed by a PreCertificate Signer instead of a PreCertificate CA, like an OCSP signer but for PreCertificates. The delegation method is well known."I figured we should require CA:True because a) it is aligned with also allowing precertificates to be directly signed by CA certificates; and b) relying only on the EKU seemed brittle. OCSP is a somewhat different story - the PreCertificate Signing CA is effectively fulfilling CA functionality.But then I am clueless when it comes to your (hypothetical) Precertificate Signing Certificate issuance process. Are there problems with this approach?
2. "Since a Precertificate is arguably not a Certificate, why don't we require Precertificate Signing Certificates to contain...basicConstraints: CA=TRUE
and
keyUsage: digitalSignature (keyCertSign MUST NOT be set)"I'm trying to wrap my head around what this achieves. What's the benefit of using the more generic digitalSignature key usage vs the CT-specific EKU?I am also wondering whether "keyCertSign MUST NOT be set" is something that should be mandated by the CT log, or something that would be left up to CAs. Thoughts?3. ""Alternatively, could we avoid this confusion by simply changing the first byte in the PreCertificate's TBSCertificate (always 0x30) to some other value before computing the hash?"
This sounds like a hack with unforeseen consequences. If reusing the TBS is an insurmountable problem then I would rather have a dedicated structure. Though I suspect it'll further complicate client code...
Cheers,Emilia
To unsubscribe from this group and stop receiving emails from it, send an email to certificate-transparency+unsubscr...@googlegroups.com.
On 19/09/13 10:16, Tomas Gustavsson wrote:
<snip>
> Why not only have only one method to sign a PreCertificate? Let's say a
> PreCertificate signer certificate with {CA:False, KU:digitalSignature,
> EKU: CT}. Since the PreCertificate is not a certificate, let's not sign
> it with a CA.
I want to be able to sign PreCertificates using the CA Private Key. I
don't want the administrative hassle of having to issue PreCertificate
Signing Certificates for all of the many Intermediate CAs that we operate.
> Many audit and certification schemes requires the CA private key to
> _only_ be used for cert and CRL signing.
Which ones?
We already sign OCSP Responses using CA private keys too.
--
You received this message because you are subscribed to the Google Groups "certificate-transparency" group.
To unsubscribe from this group and stop receiving emails from it, send an email to certificate-transparency+unsub...@googlegroups.com.
On 18/09/13 10:15, Tomas Gustavsson wrote:
<snip>
> 1. PreCertificates signed by the real CA.
> This sounds very dangerous as will break the fundamental X.509 rule of
> unique issuerDN/serialNumber pairs. The consequences of having two
> "certificates" with the same issuerDN/serialNumber in the wild can not
> possibly be estimated, making this practice quite dangerous imho.
The CABForum BRs Appendix B (4) says:
"All other fields and extensions MUST be set in accordance with RFC 5280."
Although the title of Appendix B is "Certificate Extensions", I think
"fields and extensions" must surely imply that "fields" are the
non-extension parts of a certificate (such as the serial number).
And since certificate serial numbers are not explicitly mentioned in
Appendix B, I conclude that certificate serial numbers "MUST be set in
accordance with RFC 5280".
RFC 5280 Section 4.1.2.2 says:
"The serial number...MUST be unique for each certificate issued by a
given CA".
I therefore have to conclude that CT Precertificates "signed by the real
CA" are currently _illegal_ under the BRs. Given that the
publicly-trusted CAs MUST follow the BRs, this is a problem (for CAs
that would want to use this option for Precertificates).
I've been discussing this with Ben over the last few days, and we've
come up with 2 possible ways forward...
1. Try to persuade the CABForum to update the BRs so that a
Precertificate/Certificate are permitted to share the same serial
number. (CABForum isn't afraid to break compatibility with RFC5280 when
it wants to: the BRs permit non-critical Name Constraints and prohibit
OCSP "good" for "non-issued certificates", for example).
2. In RFC6962-bis, allow the certificate serial numbers of a
Precertificate/Certificate to be either:
a. identical (as per RFC6962), or...
b. consecutive (i.e. if the Precertificate Serial Number = X, then
the Certificate Serial Number = X+1).
- CAs would obviously need to make sure that both X and X+1 have
not been used as serial numbers in any previously issued certificates
(and if they have, then choose a different value for X!)
- Both the Precertificate and the Certificate would need to contain
a flag to signal that option 2b has been used. (This could be achieved
without increasing the size of either cert by simply using different
OIDs for the Poison and SCT List extensions).
Option 1 seems preferable, but option 2 wouldn't be a big deal.
From an implementation perspective.
- I can live with option 1, implementation wise. From a lot of views it looks dangerous though (audit, CABForum etc). It sounds like a gamble for the future.
- Option 2 sounds very dangerous and costly implementation wise. There are probably a large range of different implementations for ensuring unique serial numbers. Introducing a second unique serial will have consequences nobody can foresee.
- Option 3 is a little more work to implement, but not a lot. This really looks like the safest option IMHO. Very few unforeseen consequences, and implementing a small asn.1 structure is not very hard.
Cheers,
Tomas
Surely at least some implementations can handle this easily.
> - Option 2 sounds very dangerous and costly implementation wise. There are
> probably a large range of different implementations for ensuring unique
> serial numbers. Introducing a second unique serial will have consequences
> nobody can foresee.
If there is any CA who is going to deploy CT that wants to use this
> - Option 3 is a little more work to implement, but not a lot. This really
> looks like the safest option IMHO. Very few unforeseen consequences, and
> implementing a small asn.1 structure is not very hard.
option, I will happily add it to the spec.
Have I missed something? What is ambiguous and inconsistent?
> 2. The CAs, CA/B Forum and auditors agree there is no issue (If Rod casts
> doubts relating to BRs I have no choice than to also doubt and consider it
> adventurous).
>
>>
>>
>> > - Option 2 sounds very dangerous and costly implementation wise. There
>> > are
>> > probably a large range of different implementations for ensuring unique
>> > serial numbers. Introducing a second unique serial will have
>> > consequences
>> > nobody can foresee.
>>
>> Surely at least some implementations can handle this easily.
>
>
> I'll assume this was just a generic comment and not a support for how this
> option should go into the spec.
> Any standards attempt who is based on "I know one implementation who can do
> this and I don't care about the other 50" should be banned from standards.
As I said earlier, the RFC has another option, that is, issue the
Precertificate from an intermediate.
>> > - Option 3 is a little more work to implement, but not a lot. This
>> > really
>> > looks like the safest option IMHO. Very few unforeseen consequences, and
>> > implementing a small asn.1 structure is not very hard.
>>
>> If there is any CA who is going to deploy CT that wants to use this
>> option, I will happily add it to the spec.
>
>
> I would assume that whatever CT specifies is what will be used. I would
> expect there to be _either_ option 1 or option 3 in the spec, not both.
> Both would be very smelly imho.
What matters is what helps CAs to implement CT, not your sense of smell.
Have I missed something? What is ambiguous and inconsistent?
> 2. The CAs, CA/B Forum and auditors agree there is no issue (If Rod casts
> doubts relating to BRs I have no choice than to also doubt and consider it
> adventurous).
>
>>
>>
>> > - Option 2 sounds very dangerous and costly implementation wise. There
>> > are
>> > probably a large range of different implementations for ensuring unique
>> > serial numbers. Introducing a second unique serial will have
>> > consequences
>> > nobody can foresee.
>>
>> Surely at least some implementations can handle this easily.
>
>
> I'll assume this was just a generic comment and not a support for how this
> option should go into the spec.
> Any standards attempt who is based on "I know one implementation who can do
> this and I don't care about the other 50" should be banned from standards.
As I said earlier, the RFC has another option, that is, issue the
Precertificate from an intermediate.
>> > - Option 3 is a little more work to implement, but not a lot. This
>> > really
>> > looks like the safest option IMHO. Very few unforeseen consequences, and
>> > implementing a small asn.1 structure is not very hard.
>>
>> If there is any CA who is going to deploy CT that wants to use this
>> option, I will happily add it to the spec.
>
>
> I would assume that whatever CT specifies is what will be used. I would
> expect there to be _either_ option 1 or option 3 in the spec, not both.
> Both would be very smelly imho.
What matters is what helps CAs to implement CT, not your sense of smell.
--You received this message because you are subscribed to a topic in the Google Groups "certificate-transparency" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/certificate-transparency/1tWzSXKe3gQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to certificate-transp...@googlegroups.com.
On 18 November 2013 13:07, Tomas Gustavsson <tomass...@gmail.com> wrote:Great, thanks.
> But of course, I didn't mean to be dismissive (right word?).
>
> I'm actually all for lining up the different options and then deciding what
> to include, based on all CAs preferences. I'll just toss in my
> implementation based comments on the fire...
For EJBCA, I'd suggest using the intermediate CA, since that path does
not violate BRs. Is there a problem with doing that?
BTW, I read your blog post, which still suggests skipping Precerts,
but surely that's not actually your position? Without Precerts, SCTs
cannot be included in certs...
On 17/11/13 16:48, Erwann Abalea wrote:
<snip>
> That unicity comes from X.509 itself:
[...]
> RFC5280 couldn't have changed it.
Even though RFC5280 only cites X.509 as an Informative (not Normative)
reference? ;-)
<snip>
> I'm really not in favor of option 1.
> How about an option 3 that uses something other than a certificate
> structure for the "precert" role? IIRC, the certificate format was
> chosen because it's convenient.
Yes, it's very convenient. I wrote our code for generating
Precertificate tbsCertificates the other day. Pretty much all I had to
do was add an "add poison extension" flag to our existing Certificate
tbsCertificate generation code. Easy!
Also, the intermediate does not make the certificate
larger...