Skip to content
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

KMS requirement for SLSA 3/4 is too prescriptive #187

Closed
Tracked by #508
mattmoor opened this issue Oct 19, 2021 · 6 comments
Closed
Tracked by #508

KMS requirement for SLSA 3/4 is too prescriptive #187

mattmoor opened this issue Oct 19, 2021 · 6 comments
Labels
slsa 3 Applies to a SLSA 3 requirement spec-change Modification to the spec (requirements, schema, etc.)

Comments

@mattmoor
Copy link
Contributor

This is the wording in particular that I'm looking at:

The provenance signing key MUST be stored in a secure key management system accessible only to the build service account.

In particular, this precludes models that take advantage of ephemeral keys and CAs (e.g. Sigstore's Fulcio), which are not KMS systems. However, I'd argue that despite something like Fulcio not satisfying this as-written, it is a strictly stronger model because long-lived key material is never exposed to the build service.

As a sort of meta-comment, SLSA doesn't really touch on the exclusive use of [very] short-lived credentials, despite the fact that exfiltrating long-lived creds is a key attack vector. I was mentioning to @kimsterv that the use of exclusively short-lived credentials (e.g. Workload Identity) and keys (e.g. Fulcio) might make a nice basis for SLSA 5.

@dlorenc
Copy link

dlorenc commented Oct 19, 2021

I think the language around all of the signing stuff needs to be improved a bit. Key management is only one part of the puzzle, without rotation/revocation you're really not left in a much better place than not signing things at all.

@MarkLodato MarkLodato changed the title KMS requirement for SLSA 3/4 KMS requirement for SLSA 3/4 is too prescriptive Oct 19, 2021
@MarkLodato MarkLodato added spec-change Modification to the spec (requirements, schema, etc.) slsa 3 Applies to a SLSA 3 requirement labels Oct 19, 2021
@MarkLodato
Copy link
Member

Agreed. The current wording is too prescriptive. The overall intent is to require the build service to move provenance generation to a trusted control plane such that it requires significant effort to compromise. The three bullets there, including the KMS one, are to address particular issues that are likely to come up but are not intended to be comprehensive.

Any suggestions on how we can improve this? Is there a way we can talk about key management / signing such that it doesn't prescribe exactly how the secret material must be protected? Or alternatively, should we list options that we believe a good?

@trishankatdatadog
Copy link
Member

Mark: I think a bit of both: generalize the description to include both use cases, and also list some concrete options.

@kimsterv
Copy link
Member

kimsterv commented Feb 9, 2022

@trishankatdatadog flagging that this issue ties into the doc discussed today in the wg

@awwad
Copy link

awwad commented Sep 14, 2022

Current text:

This SHOULD be through a digital signature from a private key accessible only to the service generating the provenance.

' nice to know this has been highlighted before. ^_^

Preston and I happened to stumble over this requirement and brought it up this week because the existing text is vague enough to reasonably be seen not to fit very good implementations and also to reasonably be seen to fit very bad implementations.

Access to a private key can be seen as meaning visibility of the raw key value (exfiltration risk) or ability to use the key during compromise (use risk). It's easy to think of this as a requirement for reducing the odds of key exfiltration, but I think it would be best to make this about key access in the broad sense of ability to use the key.

@shaunmlowry
Copy link

shaunmlowry commented Sep 23, 2022

related #414
#415
The wording has already changed to allow for non-falsifiable attestations secured by mechanisms other than digital signatures, let's ensure that intent is preserved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
slsa 3 Applies to a SLSA 3 requirement spec-change Modification to the spec (requirements, schema, etc.)
Projects
No open projects
Status: Done
Development

No branches or pull requests

8 participants