Quoting Bas Westerbaan (in CC) again, we will most likely see further PQ/T hybrids from the IETF crypto forum research group (CFRG for short):
> It seems likely that the CFRG will at some point produce a P-384+ML-KEM-1024 > hybrid. See > https://mailarchive.ietf.org/arch/msg/cfrg/CwrVvm-J7o85TEWkG9RJxZwfXDY/ . > That might take some time. > > Very few (but notably Ericsson) have asked for X448 hybrids, so I don't > expect them soon. That said, the construction does not necessarily be compatible to X-Wing. Just to be sure, I asked whether they see any value in parameterizing X-Wing to swap out algorithms. This is what Bas replied: > Even if the other hybrids will also use an X-Wing style combiner, it doesn't > hurt not to parametrize initially. :) So I would suggest to follow this advice for now and only refactor the implementation eventually, when further pairs of algorithms are combined in the same way. Best, Sebastian > On 29. Jun 2025, at 12:02, Sebastian Stenzel <sebastian.sten...@gmail.com> > wrote: > > >> On 28. Jun 2025, at 00:12, Wei-Jun Wang <weijun.w...@oracle.com> wrote: >> >> [...] After all, there is no parameter for X-Wing. Did you hear the authors >> they want to introduce other algorithms like ed448 and ML-KEM-1024 into it? > > I forwarded this question and let you know the answer! > > >>> >>>> On 7. Jun 2025, at 23:34, Wei-Jun Wang <weijun.w...@oracle.com> wrote: >>>> >>>> Cool. >>>> >>>> The current NamedPKCS8Key was designed based on an older approach where >>>> modern asymmetric keys store private key data in a nested OCTET STRING >>>> format. This pattern was introduced with EdDSA and XDH, and at the time of >>>> JDK 24, we anticipated it would become the norm. >>>> >>>> However, things have changed significantly, as seen in the evolution of >>>> draft-ietf-lamps-dilithium-certificates and >>>> draft-ietf-lamps-kyber-certificates. The original design now needs to be >>>> revised. While we’re still waiting for the IETF drafts to be finalized, >>>> we’re already experimenting with changes in >>>> https://github.com/openjdk/jdk/pull/24969. >>>> >>>> Hopefully, by the time X-Wing is finalized, we’ll already have a solution >>>> in place. >>>> >>>> Thanks, >>>> Weijun >>>> >>>>> On Jun 7, 2025, at 16:14, Sebastian Stenzel <sebastian.sten...@gmail.com> >>>>> wrote: >>>>> >>>>> Hi Weijun, >>>>> >>>>> I got a mostly working implementation based on NamedKEM [0], however to >>>>> fulfil the spec I need your advice: >>>>> >>>>> The (current) X-Wing spec wants this PKCS#8 encoding: [1] >>>>> >>>>> However, the NamedPKCS8Key implementation always puts a nested >>>>> OctetString into the private key part. [2] >>>>> >>>>> Note the difference here: >>>>> * >>>>> https://lapo.it/asn1js/#MDQCAQAwDQYLKwYBBAGD5i2ByHoEIAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4f >>>>> * >>>>> https://lapo.it/asn1js/#MDYCAQAwDQYLKwYBBAGD5i2ByHoEIgQg9IFQEyQtdLJL8j-hRm6Yzx3CzFiDyNk4yCADl6ZiXWo >>>>> >>>>> I believe we need some more flexibility, as the ASN.1 standard leaves it >>>>> open to the algorithms how a private key is formatted. What do you think >>>>> how to approach this? >>>>> >>>>> Or should I ask the authors whether they have a specific encoding in >>>>> mind? The ASN.1 definitions in the spec don’t seem to be complete yet. >>>>> >>>>> Best regards, >>>>> Sebastian >>>>> >>>>> [0]: >>>>> https://github.com/openjdk/jdk/compare/master...overheadhunter:jdk:x-wing >>>>> [1]: >>>>> https://www.ietf.org/archive/id/draft-connolly-cfrg-xwing-kem-07.html#appendix-D >>>>> [2]: >>>>> https://github.com/openjdk/jdk/blob/d7352559195b9e052c3eb24d773c0d6c10dc23ad/src/java.base/share/classes/sun/security/pkcs/NamedPKCS8Key.java#L76-L81 >>>>> >>>>>> On 30. May 2025, at 15:03, Wei-Jun Wang <weijun.w...@oracle.com> wrote: >>>>>> >>>>>> >>>>>> >>>>>>> On May 30, 2025, at 08:40, Sebastian Stenzel >>>>>>> <sebastian.sten...@gmail.com> wrote: >>>>>>> >>>>>>> Hi Weijun, >>>>>>> >>>>>>> waiting for the final standard is understandable. The internals may >>>>>>> still change, but the „outer hull“ of the PR is something that could >>>>>>> already be discussed before - under these premises, would it make sense >>>>>>> to already start a draft? Knowing that it won’t be merged yet? >>>>>> >>>>>> Feel free to start a draft if you’d like. I'll create a JBS issue once >>>>>> we decide we want to include it in the JDK. >>>>>> >>>>>>> >>>>>>> I have a working set of KeyPairGenerator, KeyFactory and KEM SPI >>>>>>> including test vectors basically ready - just SHAKE256 currently >>>>>>> borrowed from BC. >>>>>>> >>>>>>> I know that using SHAKE256 within the JDK is not a problem. However if >>>>>>> we want to make it public, there simply *is no* XOF API in JCA. >>>>>>> Technically the expand step of the KDF API can be used, but >>>>>>> semantically that would be a misuse. Adding a completely new API is >>>>>>> nothing I currently want to work on. >>>>>> >>>>>> I see. >>>>>> >>>>>>> >>>>>>> Btw I am somewhat familiar with the development process as I have >>>>>>> started contributing to the JDK in 2021 on cipher and NIO issues. [1] >>>>>> >>>>>> Nice to know. Sorry I didn't noticed that earlier. >>>>>> >>>>>> Thanks, >>>>>> Weijun >>>>>> >>>>>>> >>>>>>> Thank you, >>>>>>> Sebastian >>>>>>> >>>>>>> [1] >>>>>>> https://github.com/openjdk/jdk/pulls?q=is%3Apr+author%3Aoverheadhunter >>>>>>> >>>>>>>> On 29. May 2025, at 18:44, Wei-Jun Wang <weijun.w...@oracle.com> wrote: >>>>>>>> >>>>>>>> Hi Sebastian. >>>>>>>> >>>>>>>>> On May 24, 2025, at 05:40, Sebastian Stenzel >>>>>>>>> <sebastian.sten...@gmail.com> wrote: >>>>>>>>> >>>>>>>>> Hi all, >>>>>>>>> >>>>>>>>> For the past few months I have been in contact with one of the >>>>>>>>> authors of two spec drafts for future JOSE encryption standards [1] >>>>>>>>> [2] with the latter of them relying on X-Wing. >>>>>>>>> >>>>>>>>> As the X-Wing spec doesn’t face significant changes any more (there >>>>>>>>> have been some larger shifts in regards to secret key derivation last >>>>>>>>> year), I am now tasked to create a prototype implementation for these >>>>>>>>> RFCs. >>>>>>>> >>>>>>>> Thanks for your continued interest on enhancing OpenJDK. >>>>>>>> >>>>>>>> That said, we have a policy of not implementing algorithms that >>>>>>>> haven't been standardized. So we won't be able to consider your >>>>>>>> contribution until IETF publishes draft-connolly-cfrg-xwing-kem as an >>>>>>>> RFC. I'm not sure how familiar you are with the OpenJDK developing >>>>>>>> process, but in the meantime, you might find it helpful to read the >>>>>>>> OpenJDK Developers’ Guide [1] and try working on something smaller >>>>>>>> first. >>>>>>>> >>>>>>>>> >>>>>>>>> All the primitives for X-Wing are technically already there in >>>>>>>>> OpenJDK, however two of them are private API (namely SHAKE256 and >>>>>>>>> ML-KEM’s `KeyGen_internal(d, z)` [3]). So the question arises whether >>>>>>>>> I can contribute an X-Wing KEM implementation to the JDK at the >>>>>>>>> current state of the spec? >>>>>>>> >>>>>>>> It's acceptable to use private API inside OpenJDK when you are working >>>>>>>> on OpenJDK itself. After all, we created them for this very purpose. >>>>>>>> However, please keep in mind that this means you bind your X-Wing >>>>>>>> implementation to the SunJCE/SunEC implementations. Usually, as a >>>>>>>> higher-level algorithm, if its underlying algorithms could be >>>>>>>> implemented by different security providers, it will be nice to make >>>>>>>> it provider-neutral where possible. >>>>>>>> >>>>>>>>> >>>>>>>>> Alternatively, can we make the two mentioned APIs public? >>>>>>>> >>>>>>>> No. These methods are too specific to their respective algorithms. We >>>>>>>> prefer JCA/JCE-style API that is algorithm-neutral. >>>>>>>> >>>>>>>> [1] https://openjdk.org/guide/ >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Weijun >>>>>>>> >>>>>>>>> >>>>>>>>> Cheers! >>>>>>>>> Sebastian >>>>>>>>> >>>>>>>>> [1]: >>>>>>>>> https://datatracker.ietf.org/doc/html/draft-ietf-jose-hpke-encrypt/ >>>>>>>>> [2]: >>>>>>>>> https://datatracker.ietf.org/doc/html/draft-reddy-cose-jose-pqc-hybrid-hpke-07 >>>>>>>>> [3]: >>>>>>>>> https://github.com/openjdk/jdk/blob/070c84cd22485a93a562a7639439fb056e840861/src/java.base/share/classes/com/sun/crypto/provider/ML_KEM.java#L498-L536 >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >
smime.p7s
Description: S/MIME cryptographic signature