-
Notifications
You must be signed in to change notification settings - Fork 61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update supported algorithms #163
Comments
At the time when And that's what I'd suggest trying to achieve again. If you could subscribe to this goal, @geedo0 , please check out the oqsprovider code generator config file: It documents "user-level" algorithm names, incl. hybrid and composite ones, incl. the "co-related" classic algs' strengths. If you don't like to work with .yml, this file is generated from it for better readability. As per your specific per-algorithm questions, my suggestions would thus be as follows:
|
Yes, that's exactly the goal I had in mind. Get OpenSSH up to date and back in-line with the other OQS projects. From your
I've got the items 1-3 on-deck, but need to get PR #161 and #162 merged before I can submit. |
This aligns the algorithms supported by the OQS OpenSSH fork with the algorithms available in liboqs. - Added support for ML-KEM-IPD using the ML-KEM alias and the names/curves documented by the [PQ SSH draft RFC](https://datatracker.ietf.org/doc/draft-kampanakis-curdle-ssh-pq-ke/). - Added support for ML-DSA-IPD using the ML-DSA alias following the conventions from the Dilithium implementation. The Dilithium signatures have been disabled. - Updated from BIKE Round 3 to Round 4. This adds a new parameter set for BIKE-L5. - Added support for the Falcon PADDED format. It is disabled by default to preserve entries in the bit-mask. - Added support for MAYO. The level 1 variant is left disabled. The KEX algorithms specified by the draft RFC do not match the security level pairing convention followed by Kyber so we chose to prefer the pairings specified in the document. There were no proposed parameter sets for ML-KEM-512 so we defaulted to the conventional parameters. x25519 hybrids are currently not handled by the oqs-openssh fork so we've omitted `mlkem768x25519-sha256` support for now. This does not add support for sntrup761 as that requires handling the conflict with the upstream OpenSSH implementation. Related to Issue open-quantum-safe#163
This adds support for hybrid-PQ key exchanges with x25519. This allows for the implementation of `mlkem768x25519-sha256` as defined by [draft-kampanakis-curdle-ssh-pq-ke-02](https://datatracker.ietf.org/doc/draft-kampanakis-curdle-ssh-pq-ke/) and `[email protected]` as defined by upstream OpenSSH. We also take the opportunity to add hybrid implementations for all existing PQ key exchanges which supported NIST P-256. Due to the conflicting implementation for `[email protected]` we omit an OQS exclusive version for now and will plan for it in a future PR. Unlike in `oqs-provider`, we cannot provide support for x448 hybrid algorithms since the x448 algorithm is not available within OpenSSH. The way this all works is by introducing a new source file `kexoqsx25519.c` which is a synthesis of `kexoqsecdh.c` and `kexsntrup761x25519.c`. These files provide example implementations of hybrid-PQ for OQS-backed algorithms and x25519 usage. In that source file, we define functions to implement OpenSSH's KEX interface for each hybrid algorithm using an `oqs-template` file. Within the `generate.yml`, we add a new boolean key to flag `x25519` hybrids similar to how the `rsa` key works for hybrid signatures. Related to issue open-quantum-safe#163.
This aligns the algorithms supported by the OQS OpenSSH fork with the algorithms available in liboqs. - Added support for ML-KEM-IPD using the ML-KEM alias and the names/curves documented by the [PQ SSH draft RFC](https://datatracker.ietf.org/doc/draft-kampanakis-curdle-ssh-pq-ke/). - Added support for ML-DSA-IPD using the ML-DSA alias following the conventions from the Dilithium implementation. The Dilithium signatures have been disabled. - Updated from BIKE Round 3 to Round 4. This adds a new parameter set for BIKE-L5. - Added support for the Falcon PADDED format. It is disabled by default to preserve entries in the bit-mask. - Added support for MAYO. The level 1 variant is left disabled. The KEX algorithms specified by the draft RFC do not match the security level pairing convention followed by Kyber so we chose to prefer the pairings specified in the document. There were no proposed parameter sets for ML-KEM-512 so we defaulted to the conventional parameters. x25519 hybrids are currently not handled by the oqs-openssh fork so we've omitted `mlkem768x25519-sha256` support for now. This does not add support for sntrup761 as that requires handling the conflict with the upstream OpenSSH implementation. Related to Issue open-quantum-safe#163 Signed-off-by: gcr <[email protected]>
This aligns the algorithms supported by the OQS OpenSSH fork with the algorithms available in liboqs. - Added support for ML-KEM-IPD using the ML-KEM alias and the names/curves documented by the [PQ SSH draft RFC](https://datatracker.ietf.org/doc/draft-kampanakis-curdle-ssh-pq-ke/). - Added support for ML-DSA-IPD using the ML-DSA alias following the conventions from the Dilithium implementation. The Dilithium signatures have been disabled. - Updated from BIKE Round 3 to Round 4. This adds a new parameter set for BIKE-L5. - Added support for the Falcon PADDED format. It is disabled by default to preserve entries in the bit-mask. - Added support for MAYO. The level 1 variant is left disabled. The KEX algorithms specified by the draft RFC do not match the security level pairing convention followed by Kyber so we chose to prefer the pairings specified in the document. There were no proposed parameter sets for ML-KEM-512 so we defaulted to the conventional parameters. x25519 hybrids are currently not handled by the oqs-openssh fork so we've omitted `mlkem768x25519-sha256` support for now. This does not add support for sntrup761 as that requires handling the conflict with the upstream OpenSSH implementation. Related to Issue open-quantum-safe#163 Signed-off-by: gcr <[email protected]>
This aligns the algorithms supported by the OQS OpenSSH fork with the algorithms available in liboqs. - Added support for ML-KEM-IPD using the ML-KEM alias and the names/curves documented by the [PQ SSH draft RFC](https://datatracker.ietf.org/doc/draft-kampanakis-curdle-ssh-pq-ke/). - Added support for ML-DSA-IPD using the ML-DSA alias following the conventions from the Dilithium implementation. The Dilithium signatures have been disabled. - Updated from BIKE Round 3 to Round 4. This adds a new parameter set for BIKE-L5. - Added support for the Falcon PADDED format. It is disabled by default to preserve entries in the bit-mask. - Added support for MAYO. The level 1 variant is left disabled. The KEX algorithms specified by the draft RFC do not match the security level pairing convention followed by Kyber so we chose to prefer the pairings specified in the document. There were no proposed parameter sets for ML-KEM-512 so we defaulted to the conventional parameters. x25519 hybrids are currently not handled by the oqs-openssh fork so we've omitted `mlkem768x25519-sha256` support for now. This does not add support for sntrup761 as that requires handling the conflict with the upstream OpenSSH implementation. Related to Issue open-quantum-safe#163 Signed-off-by: gcr <[email protected]>
This aligns the algorithms supported by the OQS OpenSSH fork with the algorithms available in liboqs. - Added support for ML-KEM-IPD using the ML-KEM alias and the names/curves documented by the [PQ SSH draft RFC](https://datatracker.ietf.org/doc/draft-kampanakis-curdle-ssh-pq-ke/). - Added support for ML-DSA-IPD using the ML-DSA alias following the conventions from the Dilithium implementation. The Dilithium signatures have been disabled. - Updated from BIKE Round 3 to Round 4. This adds a new parameter set for BIKE-L5. - Added support for the Falcon PADDED format. It is disabled by default to preserve entries in the bit-mask. - Added support for MAYO. The level 1 variant is left disabled. The KEX algorithms specified by the draft RFC do not match the security level pairing convention followed by Kyber so we chose to prefer the pairings specified in the document. There were no proposed parameter sets for ML-KEM-512 so we defaulted to the conventional parameters. x25519 hybrids are currently not handled by the oqs-openssh fork so we've omitted `mlkem768x25519-sha256` support for now. This does not add support for sntrup761 as that requires handling the conflict with the upstream OpenSSH implementation. Related to Issue open-quantum-safe#163 Signed-off-by: Gerardo Ravago <[email protected]>
This adds support for hybrid-PQ key exchanges with x25519. This allows for the implementation of `mlkem768x25519-sha256` as defined by [draft-kampanakis-curdle-ssh-pq-ke-02](https://datatracker.ietf.org/doc/draft-kampanakis-curdle-ssh-pq-ke/) and `[email protected]` as defined by upstream OpenSSH. We also take the opportunity to add hybrid implementations for all existing PQ key exchanges which supported NIST P-256. Due to the conflicting implementation for `[email protected]` we omit an OQS exclusive version for now and will plan for it in a future PR. Unlike in `oqs-provider`, we cannot provide support for x448 hybrid algorithms since the x448 algorithm is not available within OpenSSH. The way this all works is by introducing a new source file `kexoqsx25519.c` which is a synthesis of `kexoqsecdh.c` and `kexsntrup761x25519.c`. These files provide example implementations of hybrid-PQ for OQS-backed algorithms and x25519 usage. In that source file, we define functions to implement OpenSSH's KEX interface for each hybrid algorithm using an `oqs-template` file. Within the `generate.yml`, we add a new boolean key to flag `x25519` hybrids similar to how the `rsa` key works for hybrid signatures. Related to issue open-quantum-safe#163.
This adds support for hybrid-PQ key exchanges with x25519. This allows for the implementation of `mlkem768x25519-sha256` as defined by [draft-kampanakis-curdle-ssh-pq-ke-02](https://datatracker.ietf.org/doc/draft-kampanakis-curdle-ssh-pq-ke/) and `[email protected]` as defined by upstream OpenSSH. We also take the opportunity to add hybrid implementations for all existing PQ key exchanges which supported NIST P-256. Due to the conflicting implementation for `[email protected]` we omit an OQS exclusive version for now and will plan for it in a future PR. Unlike in `oqs-provider`, we cannot provide support for x448 hybrid algorithms since the x448 algorithm is not available within OpenSSH. The way this all works is by introducing a new source file `kexoqsx25519.c` which is a synthesis of `kexoqsecdh.c` and `kexsntrup761x25519.c`. These files provide example implementations of hybrid-PQ for OQS-backed algorithms and x25519 usage. In that source file, we define functions to implement OpenSSH's KEX interface for each hybrid algorithm using an `oqs-template` file. Within the `generate.yml`, we add a new boolean key to flag `x25519` hybrids similar to how the `rsa` key works for hybrid signatures. Related to issue open-quantum-safe#163. Signed-off-by: Gerardo Ravago <[email protected]>
Thank you for your hard work. I am studying this project.
|
Feel free to drop that as a comment directly on PR #169 which is still open. I agree that incrementing private_key is unnecessary. The error code is more subjective. Looking at |
`[email protected]` is a PQ key exchange algorithm available in upstream OpenSSH. This implements that algorithm using the sntrup761 implementation within liboqs. Using this, we are able to demonstrate interop with upstream OpenSSH for this specific algorithm and more generally the construction of the hybrid combiner. While sntrup761 has fallen out of fashion, we have received [reassurances](open-quantum-safe/liboqs#1328 (comment)) from upstream OpenSSH that it will be supported until at least 2027. Support for the algorithm is added by adding the necessary entry to `generate.yml` and generating the relevant code snippets. In addition, we had to address the conflicting implementation from upstream by disabling the preprocessor macro and/or removing the conflicting code segment. Related to Issue open-quantum-safe#163
`[email protected]` is a PQ key exchange algorithm available in upstream OpenSSH. This implements that algorithm using the sntrup761 implementation within liboqs. Using this, we are able to demonstrate interop with upstream OpenSSH for this specific algorithm and more generally the construction of the hybrid combiner. While sntrup761 has fallen out of fashion, we have received [reassurances](open-quantum-safe/liboqs#1328 (comment)) from upstream OpenSSH that it will be supported until at least 2027. Support for the algorithm is added by adding the necessary entry to `generate.yml` and generating the relevant code snippets. In addition, we had to address the conflicting implementation from upstream by disabling the preprocessor macro and/or removing the conflicting code segment. Testing Updated `try_connection.py` to accept a specific KEX and/or SIG to test. This allows us to test arbitrary algorithms against arbitrary SSH implementations including the upstream OpenSSH. It was necessary to add a classical signature to the test so that there would be a supported signature in upstream OpenSSH that OQS could test against. In a follow-up PR I plan to add a CI job to do this, but am running short on time this week. Related to Issue open-quantum-safe#163 Signed-off-by: Gerardo Ravago <[email protected]>
Algorithm support is now fully in sync with liboqs. |
The supported algorithms here no longer align with the supported algorithms in liboqs here. We need to update the algorithms supported in the OpenSSH OQS fork back in line.
I went through the two lists by hand to identify all the mismatches since the last time these algorithms were updated. I can use some help from the maintainers as to how these newer algorithms should be brought into OpenSSH. Some specific questions off the top of my head:
Listing of algorithms that exist in liboqs, but not in OpenSSH and some initial notes/thoughts:
BIKE-L5
.r3
and need to be updated.[email protected]
The text was updated successfully, but these errors were encountered: