Bouncy Castle FIPS Issue
Brent Putman
putmanb at georgetown.edu
Wed Jul 14 22:59:43 UTC 2021
Hi David,
I took a look and unfortunately what you propose won't work, for at
least 2 reasons.
First (the main and show-stopping technical issue), those
provider-based algorithms you mention are apparently for the
KeyAgreement service of the Java security framework. It seems those
combine the key agreement op with the KDF op all in one go?
That won't work for our design because we're modeling the requirements
of XML Encryption 1.1 where the KA and KDF ops are conceptually
completely separate. They are defined separately, have distinct XML
representations, etc, so one can mix-and-match KA algo and KDF algo.
So in OpenSAML we have distinct KA and KDF interfaces and then various
impls for each. For example we have interface
org.opensaml.xmlsec.derivation.KeyDerivation. The ConcatKDF impl of
that in question that threw a NoClassDefFoundError with FIPS was our
org.opensaml.xmlsec.derivation.impl.ConcatKDF, which imports these
KDF-related classes (along with some needed BC digest classes):
import org.bouncycastle.crypto.agreement.kdf.ConcatenationKDFGenerator;
import org.bouncycastle.crypto.params.KDFParameters;
It was specifically throwing on not finding
org.bouncycastle.crypto.DerivationParameters, which is the interface
implemented by the above BC KDFParameters. For reference that source
is here:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=blob;f=opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/derivation/impl/ConcatKDF.java;hb=refs/heads/main
By contrast, for PBKDF2 we are using the SecretKeyFactory service with
the JDK-provided algorithm support for "PBKDF2With*" (completed with
the appropriate PRF algo ID). So if the BC provider had a
SecretKeyFactory impl for ConcatKDF by itself, that would be closer to
our needs. But....
Second, it's unlikely we could introduce a deployment requirement for
people to add the BC provider declaratively in java.security and also
questionable for us to add the BC provider programmatically by
default. As a library OpenSAML probably shouldn't muck with people's
environments like that.
And in XML Encryption 1.1, ConcatKDF is the mandatory-to-implement KDF
(PBKDF2 is optional). For that reason it is our default KDF for ECDH,
and it needs to work out-of-the-box. So hopefully you can see that
adding a requirement on configuring a third-party provider would be an
issue for us. Our team can discuss further the idea of
automagically/programmatically adding in BC. I personally am not a fan
of the idea. But unless/until BC has a provider-based impl of the
ConcatKDF by itself, it's essentially a moot question.
I guess what I would ask about the FIPS version is: If the provider
there fundamentally supports ConcatKDF via the KeyAgreement algorithms
you mention, then why aren't the KDF interfaces/impls there as well?
Probably they are there but just with different package and/or class
names, etc? If they are, then you know, that means the FIPS version
really isn't a drop-in replacement for the regular library, so it's
going to be challenging for us as a downstream consumer to overcome that.
Thanks,
Brent
On 7/13/21 10:30 PM, David Hook wrote:
> Hi Brent,
>
> I'd like to suggest that it gets changed to use the BC provider
> rather than the BC low-level API.
>
> For some reason I can't connect to any of the nabble references, so I
> can't easily find the source file concerned, but from what I
> understand V4.1 added support for the ConcatKDF key derivation
> function with ECDH. When I checked the code this looked like
> something the BCFIPS provider supports already (and the BC provider)
> for the JCE. The agreement algorithms ending in CKDF use the concat
> KDF function.
>
> The following ones are currently available in both providers:
>
> ECCDHWITHSHA1CKDF
> ECCDHWITHSHA256CKDF
> ECCDHWITHSHA384CKDF
> ECCDHWITHSHA512CKDF
>
> I have subscribed to the dev list if you would prefer to continue the
> discussion there. If you would include the link to the source file
> either way we should be able to work something out that will work for
> both providers (as I have commit access to both, you'd hope so!).
>
> Let me know,
>
> Thanks,
>
> David
>
> On 14/7/21 7:17 am, Brent Putman wrote:
>>
>> Hello,
>>
>> Sorry David (Hook) that I didn't get back to you when I returned
>> from vacation a couple of weeks ago, I unfortunately overlooked that
>> email todo.
>>
>> I'm interested to hear what you had in mind. If possible it would
>> be great to have this discussion over on the Shibboleth/OpenSAML
>> developers list, so that other members of the team and community can
>> be aware and participate:
>>
>> https://shibboleth.net/mailman/listinfo/dev
>>
>> Thanks,
>> Brent
>>
>>
>> On 7/9/21 11:54 AM, David Castro wrote:
>>> Brent,
>>>
>>> Just wanted to follow up Re: the following thread on the FIPS issue
>>> we were having.
>>>
>>> https://shibboleth.1660669.n2.nabble.com/Bouncy-Castle-FIPS-Issue-td7649455.html#a7649653
>>> <https://shibboleth.1660669.n2.nabble.com/Bouncy-Castle-FIPS-Issue-td7649455.html#a7649653>
>>>
>>> We spoke with David Hook from Bouncy Castle (included in this
>>> thread) and he had some ideas on resolving the issue. Scott Cantor
>>> recommended you as the point of contact, but let us know if there
>>> is someone else we should reach out to.
>>>
>>> We are also available to assist as needed.
>>>
>>> Cheers,
>>> David
>>>
>>> --
>>> CONFIDENTIALITY NOTICE: This transmission, and any attachments, may
>>> contain CONFIDENTIAL, PRIVILEGED or PROPRIETARY information of
>>> HRworx, LLC (dba Intelliworx) that is protected from disclosure
>>> under applicable laws. If you are not the intended recipient, any
>>> disclosure, copying, distribution, or use of any of the information
>>> contained in or attached to this transmission is STRICTLY
>>> PROHIBITED. If you have received this communication in error,
>>> please notify the sender, by reply e-mail, and delete the original
>>> message with any attachments. Thank you for your cooperation.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://shibboleth.net/pipermail/dev/attachments/20210714/ad9f3ce2/attachment.htm>
More information about the dev
mailing list