microsoft / microsoft/CCF

ML-DSA signatures in CCF

Open
#7,848 4 comments 0 reactions 1 assignee View on GitHub

@maxtropets is already working on this.

Since Sep 1, 2026.

Dominant language
C++
Stars
876
Forks
260
Avg merge
1d 11h
Merged PRs (30d)
157

Description

An attempt to https://github.com/microsoft/CCF/discussions/7971 (ledger signing part).

This's an ☔ for subtasks/PRs, to keep track of PQ signing completion in general.

------------------

**Why?**
* As we want PQ update to be a live code update, and as we want identities rotation flexibility, there's a separate ticket to solve that: #8264.
* This ticket focuses on supporting multiple signing identities for new or DR-ed services.

**Structural changes planned in this one**
- [x] New MLDSA PKI interface and impl (#8378)
- [x] Identity schema changes (#8263, #8304)
- current service identity serves as TLS identity, it's no longer back-endorsed
- signing identities are stored separately
- public parts: in the new table
- private parts: in node's memory
- [x] COSE signatures schema change (#8334)
- CLASSICAL=0 == ServiceKeySingleton for backwards compatibility
- PQ=1 - new value
- [ ] Back endorsements
- Schema changes (per identity type) (#8401)
- Big change to endorsement chain handling, same KV change as for signatures
- Separately, when recovering from a snapshot, a different endorsement handling mechanism is in use, needs handling different endorsement types
- [ ] Endpoints/interfaces to serve signing keys for external/internal use cases, currently TBD

**Workflow change**
- On fresh network start or recovery, the identity choice is determined by the config
- Signing identities are distributed alongside the existing service TLS identity on Join request, always in sync (until rotation is solved)
- Removing identity type is currently prohibited, as in CLASSICAL+PQ to a single is disallowed
- allows to have a realistic scope of changes, and keep endorsement chain contract
- later on, we can come up with identity termination, but there's no plan for such a need rn, as HYBRID signing is what we're aiming for the foreseeable future

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.