2019年3月21日木曜日 16時27分46秒 UTC+1 Ryan Sleevi: > On Thu, Mar 21, 2019 at 9:42 AM tadahiko.ito.public--- via > dev-security-policy <dev-security-policy@lists.mozilla.org> wrote: > > > Hi I have few questions about Mozilla Root Store Policy 5.1 > > > > Mozilla Root Store Policy 5.1 only permits following algorithms for ECC. > > > > > 5.1 Algorithms > > > > > > Root certificates in our root program, and __any certificate__ which > > > chains up to them, __MUST__ use __only__ algorithms and key sizes from > > the following set: > > > > > > RSA keys whose modulus size in bits is divisible by 8, and is at > > least 2048. > > > Digest algorithms: SHA-1 (see below), SHA-256, SHA-384, or SHA-512. > > > ECDSA keys using one of the following curve-hash pairs: > > > P-256 with SHA-256 > > > P-384 with SHA-384 > > > > > > I am wondering the above is for validation path only, or also for usage of > > EE certificate. > > #I thought it might be also for EE cert, since RFC5480 does not require > > anything on key usage(I descrive detail at the bottom of this text). > > > > During the discussion in which it was introduced, the goal was two-fold: > 1) Restrict the set of SubjectPublicKeyInfos to ones supported by Mozilla > policy and appropriate for Mozilla users > 2) Restrict the set of SignatureAlgorithms to ones supported by Mozilla > policy and appropriate for Mozilla Users > > This would apply to all certificates in the certification path. This is > also why DSA keys (and signatures) are excluded, even though they are > permissible under the Baseline Requirements. > > A clearer rewording of this section may be to specifically enumerate the > allowed SubjectPublicKeyInfo AlgorithmIdentifiers (for all certificates in > the chain) and the signatureAlgorithm AlgorithmIdentifiers (for all > certificates in the chain). The current language was modeled after the > Baseline Requirements structure, which similarly conflates these two fields. > > > > As far as I understand, ECDSA public key just show a point on elliptic > > curve. that point can also be used (plain)ECDH or ECIES. > > So, if 5.1's description is also for end entity cert, EE cert's key-usage > > must contain digitalSignature, can contain nonRepudiation, and must not > > contain key agreement, key encipherment, etc. to comply 5.1. > > > > (question.1) > > So far I guess, that statement of 5.1 include requirement for key-usage of > > any EE certs, not limit to server certificates. is it correct? > > > > To make sure I understand the scenarios: > A) The EE certificate does not contain an EKU extension > B) The EE certificate contains an EKU extension, and DOES NOT contain > id-kp-serverAuth > C) The EE certificate contains an EKU extension, and DOES contain > id-kp-serverAuth > > I) The Intermediate certificate does not contain an EKU extension > II) The Intermediate certificate contains an EKU extension, and DOES NOT > contain id-kp-serverAuth > III) The Intermediate certificate contains an EKU extension, and DOES > contain id-kp-serverAuth > > I break this down, because the following combinations have historically > been considered "not server certificates": I+B, II+(A, B, C), III+B > While the following have been considered in scope for policy: I+(A,C), > III+(A, C). > Similarly, the issuance practices of I+(A, B, C) and III+(A, B, C) have all > been considered subject to the BRs; the most notable example of this is > using SHA-1 to sign EE certificates that aren't server certificates (but > the intermediate CA's key is capable of issuing them). This is where the > language "any certificate which chains up to them" comes from. > > Your question - what are the permissible key usages extensions - is similar > to the I+(A, B, C) / III+(A, B, C) scenario. > > Considering the keyUsage extension specifically (i.e. not considering the > signatureAlgorithm nor the SubjectPublicKeyInfo algorithm) strikes me as > fitting in the I+B, II+(A, B, C), III+B scenario. There's a legitimate > question about whether it should apply in the I+B/III+B scenario (i.e. the > intermediate is technically capable of issuing TLS certificates, but this > certificate happens to be not-TLS), but I would think for the II+(A, C) > scenario it should be OK to declare it out of scope. I'm nervous about the > II+B scenario, since you could always issue a version of II` that set a > different EKU... >
Thanks to provide me the scope and your concern. It seems clear for me. > (question.2) > > In addition, if CA issue ECC certificate without appropriate key-usage, > > reason to revoke can be non-compliance with Mozilla's root program? > > > > > > RFC 5480 does not seems to require anything for key-usage #since, RFC 2119 > > state MAY is "truely optional" > > > RFC 5480 ECC SubjectPublicKeyInfo Format March 2009 > > > > > > If the keyUsage extension is present in an End Entity (EE) > > > certificate that indicates id-ecPublicKey in SubjectPublicKeyInfo, > > > then any combination of the following values MAY be present: > > > > > > digitalSignature; > > > nonRepudiation; and > > > keyAgreement. > > > > This is a great question! > > If the certificate is in scope of the BRs (i.e. the intermediate is either > I or III), then we know Subscriber certificates MUST have a Key Usage > (7.1.2.3(e) of the BRs). > >From RFC 5280, Section 4.1.2.3, we know "When the keyUsage extension > appears in a certificate, at least one of the bits MUST be set to 1." > >From RFC 5280, Section 4.2.1.12, we know that if an EKU asserts > id-kp-serverAuth (so (I, II, III)+C), then you're restricted to > "digitalSignature, keyEncipherment, or keyAgreement" (those are the only > consistent values enumerated) > >From RFC 5246, 7.4.2 (and RFC 8446, Section 4.4.2.2), we can also see > further restrictions on the allowed key usage bits of server certificates; > this is not strictly an issuing prohibition, but worth considering. > > We can see through RFC 3279, 4055, 5756, 4491, 5480, and 5758 the relevant > keyUsages for a variety of algorithms, such as RSA, DSA, and of course, EC. > > If I understand this question correctly, it's asking about whether the MAY > of values (X, Y, Z) means SHALL NOT/MUST NOT for values (A, B, C). > > One interpretation says "You may set these values... or any other value". > The MAY tells clients what they should be prepared for, potentially > allowing them to reject any value outside of that if they're unprepared for > it. > Another interpretation says "These are the ONLY values that MAY be present. > You MAY assert one or more of them, but you MUST NOT assert something else" > Thanks for your answer. so far for me, interpretation of that explanations seems very ambiguous. When I read RFC, I thought "MAY" meant the former. (to support ECIES and further forward compatibilities ) As same time, I do agree the latter interpretation of "MAY" should be sensible with the webPKI framework. Fortunately, I am attending IETF right now. so I will ask people who is confident with wording on RFCs. Their opinion should help the future of corresponding. > While I have thoughts on "what is sensible", I'm not sure if that's aligned > with "what is required", so I'm hoping to make sure I've understood both > the questions correctly and provided the citations, to get feedback from > other members of this community. _______________________________________________ dev-security-policy mailing list dev-security-policy@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-security-policy