OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

pkcs11 message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [pkcs11] PKCS#11 FIPS Indicator proposal review


On 10/22/21 5:02 AM, Daniel Minder wrote:

Bob, all,

Â

Dieter and I have reviewed and discussed the proposal extensively. Here is our feedback:

Â

CK_UTF8CHAR is probably most general. This is likely an informational (pass through to your UI) type interface. CK_ULONG is easier for matching, but CK_UTF8CHAR means we won't have to define any special defines for non-integer levels (but it also means it's likely one vendor puts '4+' and another puts '4plus') as well..
ack.
I like both of these better than my proposed CKR_ value.

In the case you are failing, CKR_MECHANISM_INVALID would still comply. I don't know if other vendors would want to continue using the later, or use the validation status error code to give more detail. This error code is mostly an afterthought on my part since I'm likely to just use the indicator in my token. If it's used, then when NSS updates, it will return an error related to the mechanism being unvalidated rather then unknown or invalid.

It's not "needed" for Cxxx - CxxxFinal. It is needed for C_WrapKey() which no active 'operation' you can access (unless you break pkcs11 rules and try to read the session on another thread), nor any object

That is absolutely positively correct (for that session). I have three comments about this: 1) the application controls is sessions and access to the token, so the application knows which C_Derive operation it called on that session. 2) C_Derive also returns a key object which receives the CKA_VALIDATION_FLAG attribute that doesn't change on the second Derive, 3) C_WrapKey has the same issue, except it doesn't return a key object, so it *must* be queried right after the operation.

It is the C_WrapKey operation I am trying to solve with last. Given you need it for C_WrapKey, I see no reason not to allow it for other session queries as well. Again the application is the manager of his sessions, not one else can use his sessions without violating the PKCS #11 spec (because you need to guarrentee thread sequencing on the application level to the session...e.i. you can't call the same session twice from multiple threads at the same time).

Hmm that's interesting. You aren't arguing for removing last state, you are arguing for removing current state.

I think there's a slight complication with overlapping operations (C_EncryptDigest). but that complication exists in the current state as well.. I think my only objection is my current prototype implementation in NSS is able to tell you that your current ssl connection has all FIPS indicators because I'm able to query the current ssl state (before the connection finishes), so there is a real world application use for the current state.

I'm pretty sure it's required.
yup, that's the current issue I also have with my SSL FIPS indicators.
Unfortunately I think we've just argued that we need both and have to deal with the potential ambiguity.

So in practice the CKR_VALIDATION_INVALID* call and the FIPS indicator will likely be mutually exclusive. That is an application that return CKR_VALIDATION_INVALID won't update the FIPS indicator because the function never executed. I envision tokens like NSS would never return CKR_VALIDATION_INVALID, but would just update the FIPS indicator. Some tokens will always return CKR_VALIDATION_INVALID for invalid mechanism, and always return FIPS indicator on (this is using 'implicit indicator method' of NIST). There may be tokens that do a mix. In that case the effect of the mechanism the was CKR_VALIDATION_INVALID would be null on the FIPS indicators.

BTW, I don't expect the application would call the API every call. It *could* in principle, but in general applications really only care if this macro operation was completed using properly FIPS validated modules. So, my SSL chaining example. NSS doesn't call the FIPS indicator every call, only when the application asks 'hey is the current thing I'm doing fips'. In the case of SSL we can query just the state of the two encryption session (and two mac session in the case on non-AEAD) and merge those into a single indicator. The FIPS Validation state flows from the key agreement to the key derive to the actual encryption (through the key's validation status flag)), making it unnecessary to query each step along the way.

Bob



*I'm still using the old name, but I like your new names better.

Â

Weâre looking forward to the next TC call.

Â

Regards,

Daniel

Â




Utimaco IS GmbH
Germanusstr. 4, D.52080 Aachen, Germany, Tel: +49-241-1696-0, www.utimaco.com
Seat: Aachen â Registergericht Aachen HRB 18922
VAT ID No.: DE 815 496 496
Managementboard: Stefan Auerbach (Chairman) CEO, Malte Pollmann CSO, Martin Stamm CFO

This communication is confidential. If you are not the intended recipient, any use, interference with, disclosure or copying of this material is unauthorised and prohibited. Please inform us immediately and destroy the email.




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]