Skip to content

Conversation

prabhu
Copy link
Contributor

@prabhu prabhu commented Aug 16, 2025

Fixes #674

With inspiration from the Node.js PRs and this, this pull request adds three new post-quantum algorithms: "ML-DSA-44", "ML-DSA-65", and "ML-DSA-87" and three new key encapsulation mechanisms: "ML-KEM-512", "ML-KEM-768", "ML-KEM-1024" to better future-proof BOM signature validity. The hypothetical but real threat this addresses is that traditional signatures with RSA/ECDSA may become invalid when quantum computers break them.

Following alternative ideas could be considered:

  1. URI-Based references

"algorithm": "urn:nist.gov:fips204:ml-dsa-44" instead of simple upper case enum strings. This however is a significant breaking change to replace all existing identifiers in use.

  1. Extend signer definition

Signature object support signer as one of the types. A new type called postQuantumSigner could be created to extend signer to capture additional attributes related to PQ algorithms and also to support a broad range of PQ algorithms.

"properties": {
            "signers": {
              "type": "array",
              "title": "Signature",
              "description": "Unique top level property for Multiple Signatures. (multisignature)",
              "items": {"$ref": "#/definitions/signer"}
            }
          }
  1. Enable additional properties

Currently, additional properties are disabled for signer. To increase flexibility, this could be enabled.

This PR proposes a simple enhancement to the enum, key type indicators, and validation, making this feature >= 1.7 only without any possibility for backports.

TBD:

Enhancing CBOM to support the corresponding OID values.

Algorithm OID
ml-dsa-44 2.16.840.1.101.3.4.3.17
ml-dsa-65 2.16.840.1.101.3.4.3.18
ml-dsa-87 2.16.840.1.101.3.4.3.19
ml-kem-512 2.16.840.1.101.3.4.4.1
ml-kem-768 2.16.840.1.101.3.4.4.2
ml-kem-1024 2.16.840.1.101.3.4.4.3

stevespringett and others added 30 commits August 30, 2024 23:25
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Dmitry Volk <volk.dmitry@gmail.com>
…but a name.

Signed-off-by: Dmitry Volk <volk.dmitry@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
1. enabled test runner for schema 1.7
1. copied all test cases from 1.6 to 1.7 
1. renamed the files from `*.1.6.*` to `*.1.7.*`
1. migrated the test cases from schema 1.6 to schema 1.7

see the diff/delta of each individual commit for details

java tests are expected to fail, as long as
CycloneDX#256 is not done
… named/spdx licenses

Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
We often only need the latest docs, while developing a new version.
Therefore, the latest version's docs are generated first.
jkowalleck and others added 19 commits June 6, 2025 15:32
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
as discussed in CycloneDX#233 we need to tell which component type to use for
just-in-time compilers and interpreters.

This PR adds the information to the spec.

- fixes CycloneDX#233
…o or process (or both) are required. Added invalid JSON test case.

Signed-off-by: Steve Springett <steve@springett.us>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
As discussed in ticket CycloneDX#454, this PR adds the following abilities:
- have multiple license expressions 
- have a mix of license expressions, SPDX license IDs, and named
licenses

Please read the original ticket and see the provided example data for
use-cases.


fixes CycloneDX#454
…ter. Updated formulation description. Updated test cases.

Signed-off-by: Steve Springett <steve@springett.us>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
Signed-off-by: Jan Kowalleck <jan.kowalleck@gmail.com>
on top of CycloneDX#630

changes:
- ADDED: citation's "attributedTo" may also link to tools -- yes, we
have "processes", which are basically tools, but this way it might get
more convenient to use citations for BOM generators.
- DOCS: streamlined documentation
- REFACTOR: reworked the ProtoBuf structures to match some constraints
in the the spec -- `choice`/`oneOf` ...
- TESTS: practical examples for `citation.expressions`
## Changed
- Formulations may be used to describe how any referencable object
within the BOM came together, including components, services, metadata,
declarations, or the BOM itself.
  Before, it was restricted to components and services.

## Added
- Citations - describe how certain information in the BOM came together,
or were sourced from, or are asserted.


-----

TODO/DONE 
- [x] JSON schema modified
- [x] XML schema modified
- [x] ProtoBuf schema modified
- [x] JSON examples/test data crafted 
- [x] XML examples/test data crafted 
- [x] ProtoBuf examples/test data crafted
Signed-off-by: Prabhu Subramanian <prabhu@appthreat.com>
@prabhu prabhu requested a review from a team as a code owner August 16, 2025 12:39
prabhu added 2 commits August 16, 2025 14:02
Signed-off-by: Prabhu Subramanian <prabhu@appthreat.com>
Signed-off-by: Prabhu Subramanian <prabhu@appthreat.com>
@prabhu prabhu changed the title Adds support for post-quantum ML-DSA algorithms Adds support for post-quantum ML-DSA & ML-KEM algorithms Aug 18, 2025
"ML-DSA-44",
"ML-DSA-65",
"ML-DSA-87",
"ML-KEM-512",
Copy link
Contributor

@bhess bhess Sep 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ML-KEM are KEM (similar to public-key encryption) algorithms and not signature algorithms. Is it on purpose to list them here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a good question. This was added in the last commit. I am happy to revert this if we can merge based on only the signature algorithms alone.

@jkowalleck jkowalleck changed the base branch from 1.7-dev to master September 8, 2025 13:19
@jkowalleck jkowalleck changed the base branch from master to 1.7-dev September 8, 2025 13:19
@jkowalleck
Copy link
Member

this PR is based on 1.7-dev branch. the respective changes are not part of CycloneDX spec or it's release cycle.

please create all the needed changes based on master branch and target the PR to it.

@prabhu prabhu changed the base branch from 1.7-dev to master September 8, 2025 13:48
@prabhu prabhu closed this Sep 8, 2025
@prabhu
Copy link
Contributor Author

prabhu commented Sep 8, 2025

Created #682

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEATURE]: Support for post-quantum ML-DSA algorithms in JSF
8 participants