Skip to content

Clarifications on cryptographic agility and versions #566

@kommendorkapten

Description

@kommendorkapten

See sigstore/sig-clients#16 for more background.

In short, we are adding support for cryptographic agility across numerous clients, but I think we must clarify some of this with a formal definition of the "protocol version" that indicates what algorithms are required by a client.

We are now in a situation where it's a bit hard to understand what's required from a client, and what signature algorithms that is supported, this state has led to some scenarios where SHA256/P384 have been used, but it's not listed as a supported algorithm, see sigstore/sigstore-go#424 (comment) and https://github.com/sigstore/protobuf-specs/blob/v0.4.0/protos/sigstore_common.proto#L78

Also there is no official list on what algorithms are required to implement by a client. The best we have is the sigstore-conformance test suite.

To lay out a plan forward, my suggestion is that we do the following:

  1. The "protocol version" is the released version of protubuf-specs used, not the bundle version.
  2. Release a patch version, 4.0.1 that adds PKIX_ECDSA_P384_SHA256 = x [deprecated = true]; algorithm type, making it clear to clients that this combinations can be encountered.
  3. Prepare for a 4.1.0 release:
    1. document the required signature algorithms to support.
    2. document recommended signature algorithms to support.
    3. add a new flag to the verifier, allowDeprecatedAlgorithm (this could be used to implement fallback to P384/SHA256 in a controlled manner)
    4. update sigstore conformance test with a 4.1.0 test suite, to allow for clients to only test against required signature algorithms, this would also make it clear what is required to add a new client, the historical context may not be needed for a new ecosystem. I think this will be a big win in terms of clarity (today it can be overwhelming for new clients to add support for all the legacy behaviours we have, so 4.1.0 would be a new version where all this are properly clarified and the scope set).

The exact algorithms to require can be decided once we agree on an approach forward, but I'm thinking of a very minimal set:

  • P256/SHA256
  • P384/SHA384

Recommended algorithms

  • RSA/PKCS1v15 2048, 3072 and 4096
  • Ed25519 pure and ph

Other signature algorithms are optional to include, and relying on any of them means that interoperability is not guaranteed (this means that even using a recommended algorithm is not guaranteed to work across all clients).

It's 2025 and I think it's fair to not require support for RSA.

I will also bring this up on the next sigstore clients meeting.

cc @haydentherapper @loosebazooka @woodruffw @ret2libc @bobcallaway (for TSC awareness) @codysoyland

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions