-
Notifications
You must be signed in to change notification settings - Fork 837
OCPBUGS-109794: clarify FIPS-approved TLS groups in TLSSecurityProfile docs #2983
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
Open
sanchezl
wants to merge
1
commit into
openshift:master
Choose a base branch
from
sanchezl:tls-groups-fips-godoc-fix
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: openshift/api
Length of output: 50370
🌐 Web query:
NIST FIPS 203 ML-KEM approved status and whether hybrid groups X25519MLKEM768, SecP256r1MLKEM768, and SecP384r1MLKEM1024 are FIPS-approved or merely implementation-specific groups💡 Result:
NIST FIPS 203, which specifies the Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM), is an official, approved Federal Information Processing Standard that became effective on August 14, 2024 [1][2][3]. Regarding the hybrid groups X25519MLKEM768, SecP256r1MLKEM768, and SecP384r1MLKEM1024, these are not themselves "FIPS-approved" as standalone entities in the sense of being specified within a FIPS standard [4][5]. Instead, they are hybrid mechanisms defined in RFC 10024 that combine FIPS-approved elliptic curve algorithms with ML-KEM [4][5]. These hybrid groups are implementation-specific constructions designed to permit FIPS-compliant key derivation as per NIST SP 800-56C and NIST SP 800-135 [4][5]. The regulatory status of these groups depends on the underlying components [4][5]: 1. FIPS-compliance requirements: NIST SP 800-56Cr2 allows for the use of HMAC-based Key Derivation Functions (HKDF) with multiple shared secrets, provided that the first shared secret is generated by a FIPS-approved key-establishment scheme [4][5]. 2. Implementation dependencies: Because FIPS 140-3 certification requires the cryptographic schemes used to be certified, the certification requirement shifts based on the order of the shared secrets in the hybrid construction [4][5]. - For SecP256r1MLKEM768 and SecP384r1MLKEM1024, the ECDHE shared secret is placed first; therefore, the ECDHE implementation must be FIPS-certified, while the ML-KEM implementation does not require it [4][5]. - For X25519MLKEM768, the ML-KEM shared secret is placed first; consequently, the ML-KEM implementation must be FIPS-certified [4][5]. In summary, these hybrid groups allow organizations to maintain FIPS compliance in their key establishment processes by strategically ordering components to ensure that the required FIPS-approved algorithms meet the necessary certification criteria [4][5].
Citations:
🏁 Script executed:
Repository: openshift/api
Length of output: 50370
🌐 Web query:
site:rfc-editor.org/rfc/rfc9954 OR site:rfc-editor.org/rfc/rfc10024 X25519MLKEM768 SecP256r1MLKEM768 FIPS mode TLS supported groups💡 Result:
NamedGroupvalues in TLSsupported_groups. [1]X25519MLKEM768— code point 4588 / 0x11EC, Recommended: YSecP256r1MLKEM768— code point 4587 / 0x11EB, Recommended: NSecP384r1MLKEM1024— code point 4589 / 0x11ED, Recommended: N [2]SecP256r1MLKEM768as the practical choice when both components must use FIPS-approved mechanisms. Its ECDHE component must be implemented by a certified implementation; the ML-KEM component need not itself be certified under the described construction. [2]X25519MLKEM768may also be implemented in a FIPS-approved manner, but RFC 10024 notes that the ML-KEM implementation must be certified, because ML-KEM is the first shared secret in the combiner. [2]Bottom line: In FIPS mode, prefer
SecP256r1MLKEM768if your TLS/provider implementation supports it and has the required certification.X25519MLKEM768is the broadly practical default outside that constraint.[1] RFC 9954 (rfc-editor.org)
[2] RFC 10024 (auth48-transition.rfc-editor.org)
Citations:
🏁 Script executed:
Repository: openshift/api
Length of output: 42598
Correct the FIPS guidance for TLS
NamedGroupvalues.FIPS 203 approves ML-KEM. RFC 10024 defines the hybrid groups and makes FIPS-mode availability dependent on the provider and validated construction;
SecP256r1MLKEM768is not categorically excluded. Replace the blanket wording in the three source comments with implementation-scoped wording, then runmake update-codegen-crdsto regenerate all listed CRDs.📍 Affects 11 files
config/v1/types_tlssecurityprofile.go#L18-L21(this comment)config/v1/types_tlssecurityprofile.go#L173-L176config/v1/types_tlssecurityprofile.go#L281-L284payload-manifests/crds/0000_10_config-operator_01_apiservers-CustomNoUpgrade.crd.yaml#L603-L606payload-manifests/crds/0000_10_config-operator_01_apiservers-CustomNoUpgrade.crd.yaml#L724-L727payload-manifests/crds/0000_10_config-operator_01_apiservers-Default.crd.yaml#L369-L372payload-manifests/crds/0000_10_config-operator_01_apiservers-DevPreviewNoUpgrade.crd.yaml#L603-L606payload-manifests/crds/0000_10_config-operator_01_apiservers-DevPreviewNoUpgrade.crd.yaml#L724-L727payload-manifests/crds/0000_10_config-operator_01_apiservers-OKD.crd.yaml#L369-L372payload-manifests/crds/0000_10_config-operator_01_apiservers-TechPreviewNoUpgrade.crd.yaml#L603-L606payload-manifests/crds/0000_10_config-operator_01_apiservers-TechPreviewNoUpgrade.crd.yaml#L724-L727payload-manifests/crds/0000_80_machine-config_01_kubeletconfigs-CustomNoUpgrade.crd.yaml#L189-L192payload-manifests/crds/0000_80_machine-config_01_kubeletconfigs-CustomNoUpgrade.crd.yaml#L310-L313payload-manifests/crds/0000_80_machine-config_01_kubeletconfigs-Default.crd.yaml#L268-L271payload-manifests/crds/0000_80_machine-config_01_kubeletconfigs-DevPreviewNoUpgrade.crd.yaml#L189-L192payload-manifests/crds/0000_80_machine-config_01_kubeletconfigs-DevPreviewNoUpgrade.crd.yaml#L310-L313payload-manifests/crds/0000_80_machine-config_01_kubeletconfigs-OKD.crd.yaml#L268-L271payload-manifests/crds/0000_80_machine-config_01_kubeletconfigs-TechPreviewNoUpgrade.crd.yaml#L189-L192payload-manifests/crds/0000_80_machine-config_01_kubeletconfigs-TechPreviewNoUpgrade.crd.yaml#L310-L313🤖 Prompt for AI Agents