[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Straw poll for Algorithm Identifiers in Subject Public Key Info.



Dan:

>> > Is KDF an appropriate level of granularity for certificate-based
>> > constraints on the usage of public keys? 
>
>> Well, only to those who strive for strict compliance to SP 800-56A,
>> in the face of application protocols allowing noncompliant KDFs.

>
> I do not think that it is the role of the certificate to "enforce"
> compliance.  Rather, the application needs to be run in "FIPS mode"
> so that all of the choices necessary to conform to NIST guidance are made.

Yes, Alice can run in FIPS mode, but she may also like to tell Bob to please only secure email to her using FIPS mode.  Well, perhaps, nobody else but me really cares?

I care.  However, I do not see the certificate as the enforcement tool.  In the case of S/MIME, the SMIMECapabilities extension is used.  It tell the message originator the capabilities of the recipient.  If the recipient only offers "FIPS mode" algorithms, then those are the only ones that will be used by the message originator.  In the case of TLS and other protocols where real-time negotiation happens, either of the parties can ensure that "FIPS mode" algorithms are used, as long as both parties actually support them.

Back to the original question: 4055 optionally allows the cert to specify the MGF in OAEP.  So why not be able to specify the KDF for ECMQV/ECDH in a cert?  I see these as analogous.

RFC 4055 allows the parameters to be absent when used in the certificate subject public key information.  If they are present, then the MGF, for example, is carried there.

I would be happy with a similar arrangement for elliptic curve algorithms.  That is, we must have the same flexibility to omit the ECDH/ECMQV KDF.

>> > And if so, is it
>> > cryptographically appropriate to use a single public key size
>> > with both SHA-256 and SHA-384 KDFs? 
>
>> Many in IETF have argued that a SHA-1 based KDF (such as the TLS's
>> or IPSec's) provides 160 bits of security, so it is acceptable for
>> use with 128-bit security, i.e. 256 bit ECC keys.  By the same
>> argument, a SHA-256 based KDF ought to be acceptable for an 384-bit ECC key.

>
> So?  What does this have to do with the best way to represent the
> algorithm constraints in the certificate?

Nothing: I was only addressing David's specific question of whether it's "cryptographically appropriate" to used mixed sizes.

>> > Specifying a list of allowed features does not satisfy the design
>> > team's goal of using certificates to reduce protocol negotiation -
>> > if more than one KDF is possible with a pair of peer certificates,
>> > it is still necessary to negotiate which KDF to use.
>
>> Doesn't it reduce negotiation?  Alice and Bob can state their crypto
>> abilities using certs.  Then one of them chooses an algorithm in the
>> intersection of the abilities, and tells the other that he/she's
>> used it.  The certs have saved the protocol from sending at least
>> some "crypto capabilities" message flows.

>
> The closest thing that we have for something like this is
> SMIMECapabilities.  In this case, the store-and-forward nature of
> email makes this a reasonable thing to do.  If real-time
> negotiations are possible in the protocol, then keeping the CA out
> of the picture is desirable.

What extra involvement of the CA is there, when the KDF (or MGF for OAEP) is specified in the cert?

The CA is the one that is signing the certificate.  A CA should not sign stuff that it does not understand, so it is involved in the ECDH/ECMQV KDF selection or the OAEP MGF selection if it is included in the certificate.

>> > But to answer the question, the design team slides stated:
>> >
>> > * Define an optionally critical certificate extension
>> >    - Sequence of Algorithm Identifiers, as in X9.62 parameters
>>
>> Yes, that does it.
>>
>> >    - Reuse X9 algorithm Identifiers
>> >        . Deprecating "with recommended"?
>> >    - Add three "family" OIDs (ECDSA, ECDH, ECMQV)
>> >
>> > So the extension approach allows a list of KDFs, but the RFC 4055
>> > approach does not.  I believe that a list is unnecessary because
>> > an ECMQV public key of a given size should imply the acceptable
>> > KDF size (or conversely, a key derive function should imply the
>> > acceptable public key size).
>> >
>>
>> I'm a little confused now.  While we're deprecating "with
>> recommended" syntax, we're introducing a "family" syntax, where the
>> crypto parameters (KDFs, etc.) are implicitly "recommended" by
>> association with key size.  This seems a paradoxical to me.  They're
>> are some distinctions: the "family" OIDs are meant for a cert,
>> whereas the "with recommended" OIDs are being deprecated at both the
>> cert and application level; also, some people would construe the
>> "family" OIDs to mean "any" acceptable crypto parameters are okay,
>> not that some parameters are "recommended"; but neither point
>> completely resolves my confusion.  I will go back to the design team
>> slides to see if it clarifies things for me, but I thought I'd raise
>> this now, just in case it helps anybody else.

>
> I interpreted the design team output to say that the family OIDs
> would specify ECDSA, ECDH, and ECMQV without saying anything about
> the KDF at all.

So, with family OIDs, the protocol would determine/negotiate the KDF.  That should be fine with David's preference of implied acceptable KDF size, provided the protocol specifiers adhere to it.

I like this open functionality of family OIDs.  But I think there should be an option to make them specific, less open-ended, as is available in 4055, the design team proposal, and the X9.62 syntax.  In retrospect, family-like OIDs could have easily been added to the X9.62 syntax, simply by making the parameters field optional, then defining their absence to mean that any (legal) parameter is allowed.  (E.g. ecdsa-with-Specified, omitting the hash parameter.)

As said above, I'm okay with that as long as it is possible to omit the algorithm identifier parameters (as is allowed in RFC 4055) in a certificate subject public key.  Obviously, there are places where the same OID will be used where the parameters are required to be present (as is also the case in RFC 4055).

If we don't like lists, then PKIX can limit the list length to 1, and still comply the X9.62 syntax.  If we need family OIDs, then only a small tweak of X9.62 syntax is needed (as described above).

At the risk of repeating myself too much, I am not happy if the parameters to select the KDF are required.  I have no problem with one being present.

On the other hand, I like the gradual migration possibilities of a critical/noncritical extensions.  Critical extensions are functionally like 4055/X9.62, so the noncritical is the added value.  If the relying party is understands the noncritical extensions, is he/she required to comply with them?

Yes.

Russ