[11u] Second opinion? RFR: 8171279: Support X25519 and X448 in TLS

Doerr, Martin martin.doerr at sap.com
Mon Oct 12 09:54:08 UTC 2020


Hi Götz,

thanks for restoring the functionality. Your incremental change looks correct.

> The larger comment a bit down states that FIPS is unusable in 11.
I guess you would need a Java debugger / JVMTI agent to enable it with SunJSSE which is nothing we have to support ��
Note that FIPS 140 mode can be used by another provider which doesn't need your new code: https://github.com/elastic/elasticsearch/pull/48378

On the other hand, your new version reflects the status of JDK-8217835 correctly, which is not backported.
So I'm fine with either version.

Best regards,
Martin


> -----Original Message-----
> From: Lindenmaier, Goetz <goetz.lindenmaier at sap.com>
> Sent: Montag, 12. Oktober 2020 08:39
> To: Lindenmaier, Goetz <goetz.lindenmaier at sap.com>; 'Alvarez, David'
> <alvdavi at amazon.com>; Doerr, Martin <martin.doerr at sap.com>; jdk-
> updates-dev at openjdk.java.net
> Subject: RE: [11u] Second opinion? RFR: 8171279: Support X25519 and X448 in
> TLS
> 
> Hi,
> 
> I gave it a try:
> http://cr.openjdk.java.net/~goetz/wr20/8171279-X25519_in_TLS-jdk11/02-
> incremental/
> I think this incremental change restores the lost functionality.
> It does not break any of the existing tests. But I didn't run
> any tests for FIPS.
> 
> On the other side, Matthias found this:
> https://github.com/elastic/elasticsearch/issues/37250
> The larger comment a bit down states that FIPS is unusable in 11.
> If so, I would prefer to skip the incremental change above.
> 
> Full webrev:
> http://cr.openjdk.java.net/~goetz/wr20/8171279-X25519_in_TLS-jdk11/02/
> 
> Best regards,
>   Goetz
> 
> 
> 
> 
> > -----Original Message-----
> > From: jdk-updates-dev <jdk-updates-dev-retn at openjdk.java.net> On
> Behalf
> > Of Lindenmaier, Goetz
> > Sent: Thursday, October 8, 2020 6:37 PM
> > To: 'Alvarez, David' <alvdavi at amazon.com>; Doerr, Martin
> > <martin.doerr at sap.com>; jdk-updates-dev at openjdk.java.net
> > Subject: [CAUTION] RE: [11u] Second opinion? RFR: 8171279: Support
> > X25519 and X448 in TLS
> >
> > Hi David,
> >
> > > I haven't tested the full FIPS functionality,
> > That is the problem. I don't have appropriate tests, either.
> >
> > > but code like this:
> > > import com.sun.net.ssl.internal.ssl.Provider;
> > >
> > > public class FipsProviderTest {
> > >     public static void main(String[] args) {
> > >         com.sun.net.ssl.internal.ssl.Provider p = new Provider(
> > >                 "cryptoProvider");
> > >     }
> > > }
> > >
> > >
> > > That makes use of that constructor will no longer work.
> >
> > Ok, I see how you can reach the FIPS functionality.
> > But the example is obviously too small to touch
> > the code I changed.
> > It compiles fine, with and without the change.
> > And it runs fine if I add SunJSSE as provider, for example.
> >
> > > I don't know
> > > what is our statement regarding the usage of --add-exports, are we ok
> > > breaking solutions that make use of it? If we are, is it only when we
> > > have no other option or will be one situation like this one acceptable?
> > Yes, I would prefer to not change the behavior even for
> > things not explicitly exposed.
> >
> > Best regards,
> >   Goetz.
> >
> > >
> > > Thanks,
> > > David
> > >
> > >
> > > On Wed, 2020-10-07 at 07:50 +0000, Lindenmaier, Goetz wrote:
> > > > CAUTION: This email originated from outside of the organization. Do
> > > > not click links or open attachments unless you can confirm the sender
> > > > and know the content is safe.
> > > >
> > > >
> > > >
> > > > Hi,
> > > >
> > > > I would like to get a second opinion on how to deal
> > > > with the lost FIPS coding in this downport.
> > > > Could someone from outside SAP have a look please?
> > > >
> > > > Thanks,
> > > >   Goetz.
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: Doerr, Martin <martin.doerr at sap.com>
> > > > > Sent: Tuesday, October 6, 2020 8:12 PM
> > > > > To: Lindenmaier, Goetz <goetz.lindenmaier at sap.com>; jdk-updates-
> > dev
> > > > > <jdk-updates-dev at openjdk.java.net>
> > > > > Subject: RE: [11u] RFR: 8171279: Support X25519 and X448 in TLS
> > > > >
> > > > > Hi Götz,
> > > > >
> > > > > thanks for backporting this change. I think it's good to put it
> > > > > into 11.0.10,
> > > > > now, so we have enough testing time.
> > > > > Please find comments and questions inline.
> > > > >
> > > > >
> > > > > > file
> > > > > > src/java.base/share/classes/sun/security/ssl/CipherSuite.java
> > > > > > Non-applying chunk fixes typo in a comment that is not in 11.
> > > > > > I copied the comment to 11.
> > > > >
> > > > > Good.
> > > > >
> > > > >
> > > > > > file
> > > > > > src/java.base/share/classes/sun/security/ssl/DHKeyExchange.java
> > > > > > Deleting class DHEKAKeyDerivation failed because the code in 11
> > > > > > uses
> > > > > > JsseJce.getKeyAgreement()
> > > > > > where the patch uses KeyAgreement.getInstance().
> > > > >
> > > > > Right.
> > > > >
> > > > >
> > > > > > file
> > > > > >
> src/java.base/share/classes/sun/security/ssl/ECDHClientKeyExchang
> > > > > > e.java
> > > > > > 11 has different imports.
> > > > > > The remaining conflicts arise from different usages of
> > > > > > KeyFactory, ECUtil
> > > > >
> > > > > and
> > > > > > JsseJce.
> > > > >
> > > > > Good.
> > > > >
> > > > >
> > > > > > file
> > > > > >
> src/java.base/share/classes/sun/security/ssl/ECDHKeyExchange.java
> > > > > > The conflicts arise from different usages of KeyAgreement and
> > > > > > JsseJce.
> > > > >
> > > > > Ok.
> > > > >
> > > > >
> > > > > > file
> > > > > >
> src/java.base/share/classes/sun/security/ssl/ECDHServerKeyExchang
> > > > > > e.java
> > > > > > Different imports.
> > > > > > The remaining conflicts arise from different usages of
> > > > > > KeyFactory, ECUtil
> > > > >
> > > > > and
> > > > > > JsseJce.
> > > > >
> > > > > Ok.
> > > > >
> > > > >
> > > > > > file
> > > > > > src/java.base/share/classes/sun/security/ssl/SSLExtension.java
> > > > > > Copyright
> > > > > >
> > > > > > file
> > > > >
> > > > > src/java.base/share/classes/sun/security/ssl/SSLSocketInputRecord.j
> > > > > ava
> > > > > > Copyright
> > > > >
> > > > > We don't edit Copyright headers for backports. Ok.
> > > > >
> > > > >
> > > > > > file
> > > > > > src/java.base/share/classes/sun/security/ssl/SignatureScheme.java
> > > > > > imports
> > > > >
> > > > > Ok.
> > > > >
> > > > >
> > > > > > file
> > > > > >
> > > > >
> > > > >
> src/java.base/share/classes/sun/security/ssl/SupportedGroupsExtensi
> > > > > on.jav
> > > > > > a
> > > > > > Different imports.
> > > > >
> > > > > Ok.
> > > > >
> > > > > > Enums are moved to a file of their own: NamedGroup.java
> > > > > > Removing the enums does not apply because in 13 FIPS support was
> > > > > > removed.
> > > > >
> > > > > So you just deleted them manually. Fine.
> > > > >
> > > > > > Also, a name string was added.
> > > > >
> > > > > You mean "String name" in the code you removed?
> > > > >
> > > > > > The supported group types differ, too.
> > > > >
> > > > > That's expected. Did that cause manual integration?
> > > > >
> > > > > > In 11, the enums have a row of additional functionality that
> > > > > > I now removed, too.  E.g., additional constructors,
> > > > > > isSupported(),
> > > > > > isECAvailable.
> > > > >
> > > > > That's in the code which is gone. That's fine.
> > > > >
> > > > > > Some further differences are again usages of ECUtil, JsseJce etc.
> > > > > > The original patch has more NamedGroups: "// Secondary NIST
> > > > > > curves"
> > > > >
> > > > > Ok.
> > > > >
> > > > > > file test/jdk/javax/net/ssl/templates/SSLSocketTemplate.java
> > > > > > configureClientSocket() already in 11. We downported this with
> > > > > > a previous change.
> > > > >
> > > > > Ok. I can see this code is already there.
> > > > >
> > > > > > The NamedGroups enum is moved to a file of it's own.
> > > > > > Before this change, the named Groups knew about FIPS in 11. The
> > > > > > new
> > > > >
> > > > > ones
> > > > > > don't.
> > > > > > https://bugs.openjdk.java.net/browse/JDK-8217835 "Remove the
> > > > > > experimental SunJSSE FIPS compliant mode"
> > > > > > removed FIPS support in 13 before this change was implemented.
> > > > > >
> > > > > > As I understand 8217835, the experimental FIPS feature cannot be
> > > > > > used in
> > > > > > 11, it just remained in the code. So I skipped adapting
> > > > > > NamedGroups to the
> > > > > > old behaviour, I can not test it anyways.
> > > > > > What do you think, do we need to add this code to
> > > > > > NamedGroupd.java
> > > > > > again?
> > > > >
> > > > > Sounds like this is ok according to the CSR
> > > > > https://bugs.openjdk.java.net/browse/JDK-8217907
> > > > > Since this file is new with this backport, I prefer keeping it like
> > > > > the original
> > > > > one for the backport.
> > > > > We could open a new bug in case anybody wants it back, but I guess
> > > > > that's
> > > > > not the case.
> > > > >
> > > > > There's still some Fips code there:
> > > > > (!requireFips || namedGroup.isFips)*/     ) {  // GL fix isFips
> > > > > With a comment!
> > > > > What are you planning to do with it?
> > > > >
> > > > >
> > > > > > There are two follow ups,
> > > > > > 8224650: Add tests to support X25519 and X448 in TLS
> > > > > > 8243549:
> > > > > > sun/security/ssl/CipherSuite/NamedGroupsWithCipherSuite.java
> > > > > > failed with Unsupported signature algorithm: DSA
> > > > > >
> > > > > > I have downported these too, and will send RFR once this is
> > > > > > stable.
> > > > > > Existing and new test are all passing.
> > > > > >
> > > > > > https://bugs.openjdk.java.net/browse/JDK-8171279
> > > > > > http://hg.openjdk.java.net/jdk/jdk/rev/946f7f2d321c
> > > > >
> > > > > Ok. That's an important point.
> > > > > There may be more to come, but that's all we currently have AFAICS.
> > > > >
> > > > >
> > > > > Best regards,
> > > > > Martin
> > > >
> > > >


More information about the jdk-updates-dev mailing list