Signing, provenance and SBOM, described mechanically
None of these makes your software safer on its own. An SBOM is an inventory, a signature proves who produced an artefact, and a provenance attestation describes how it was built. All three are statements, and a statement only becomes a control at the point something refuses to run because the statement is missing or wrong. Most programmes generate the artefacts and never build that refusal, which produces a large amount of metadata and no change in what can reach production.
What does each artefact actually prove?
They answer different questions and are routinely conflated in procurement conversations. A signature answers who built this. A provenance attestation answers how and from what source it was built. An SBOM answers what is inside it. A VEX statement answers whether a known vulnerability affects it. None answers whether the software is secure, and a supplier who implies otherwise is worth pressing on.
| Artefact | Proves | Does not prove | Produced by |
|---|---|---|---|
| Signature | Which identity produced this exact artefact | That the contents are good, or that the identity is trustworthy | The build system, at publish time |
| Provenance attestation | Which source revision, builder and parameters produced it | That the source itself was reviewed | The build platform, not the project's own scripts |
| SBOM | The components present, to the depth it was generated at | Whether any of them is vulnerable, now or later | The build, ideally from resolved dependency data |
| VEX statement | Your assessment of whether a specific vulnerability applies | That the assessment is correct | The team that owns the product |
| Transparency log entry | That the signature existed at a point in time | Anything about the artefact's quality | A public or private log service |
| Verification policy | Nothing by itself, it is the thing that gives the others force | That it is enforced everywhere, unless you check | You, at the deployment boundary |
Where does an SBOM have to be generated to be useful?
Inside the build, from the dependency resolution the build actually performed. An SBOM produced by scanning a finished artefact is a reconstruction: it identifies what a tool can recognise in the output, misses statically linked and vendored code, and cannot see build-time components that shaped the result. An SBOM produced by the build knows exactly which versions were resolved, because it was there when they were.
Depth is the next property to check. A list of direct dependencies is much less useful than the full transitive graph, because the components that cause incidents are usually several levels down and were chosen by a resolver rather than a person. When a supplier gives you an SBOM, check that transitive dependencies appear and that each entry carries a version and a machine-matchable identifier. Names alone are close to useless for matching.
The two formats you will meet are SPDX and CycloneDX, both standardised and widely supported. The choice matters less than consistency: pick one internally, convert at the boundary if a customer wants the other, and store the document with the artefact under the same retention. An SBOM you cannot retrieve for the version running in production has no operational value.
How does artefact signing work now?
Increasingly without long-lived keys. The pattern that has become common uses the build system's own workload identity: the pipeline presents a signed token asserting which repository and workflow is running, a certificate authority issues a short-lived certificate bound to that identity, the artefact is signed with it, and the signature is recorded in a transparency log. Nothing durable needs storing, which removes the key management problem that made signing unpopular for two decades.
The consequence is what verification then checks. You are no longer checking that a signature matches a key you hold, but that the signing identity is the specific repository and workflow you expect, which is stronger and easier to get wrong. A policy accepting any valid signature from a public log accepts a signature from anyone at all, and that is the most common misconfiguration here.
So write the verification policy explicitly: this image must be signed by this identity, from this source repository, on this reference, using this builder. Then test it by attempting to deploy something signed by a different workflow and confirming refusal. A signing programme that has never rejected anything has not been demonstrated to work.
What does provenance add beyond a signature?
It links the artefact back to the inputs, so you can answer whether the thing running in production came from the commit you reviewed. A signature tells you your pipeline produced it. Provenance tells you which revision, which build parameters and which builder produced it, which is what you need after any incident involving a compromised dependency or a modified build step.
The commonly referenced framework here is SLSA, which describes build levels of increasing strength. The distinction that matters is between provenance a project generates about itself, which anyone able to modify the build can also modify, and provenance the build platform generates in a way the build's scripts cannot forge. That is the question to ask a supplier, rather than which level number they claim.
The related property is reproducibility of inputs: dependencies pinned by digest, a pinned builder image, no unpinned network fetches during the build. Provenance describing a build that pulls the latest of something is documenting non-determinism.
Which of this is actually obligatory?
That depends on your jurisdiction, your sector and your customers, and it is a question for counsel rather than for a guide. The shape of the obligations is describable, though, and it now differs sharply between the two jurisdictions most buyers ask about.
In the United States the position changed in January 2026. OMB Memorandum M-26-05, of 23 January 2026, rescinded M-22-18 and its companion M-23-16, the memoranda that had required agencies to collect a CISA Common Form self-attestation of secure development practices before using third-party software. There is no government-wide attestation mandate now. Agencies set risk-based, agency-tailored assurance requirements instead, use of the Common Form is optional, and an attestation is collected only where an agency's own risk assessment calls for one. So both attestation and SBOM provision reach a federal supplier through the terms of an individual contract rather than through a common form, and M-26-05 contemplates terms requiring an SBOM of the runtime production environment on request.
In the European Union the duty is statutory rather than contractual. The Cyber Resilience Act obliges manufacturers of products with digital elements to maintain a machine-readable component inventory and report actively exploited vulnerabilities, phasing in with the reporting duties ahead of the full product requirements.
Sector standards add their own. Payment card requirements include an inventory of bespoke software and its third-party components, and medical device, automotive and industrial regimes each have component documentation expectations. In every case the operative text is the one your contract or your regulator points at, not a summary of it.
The practical reading is that generating SBOMs and provenance is becoming a condition of selling to regulated buyers, on a timetable set by whoever you sell to. Build the capability because it is a procurement requirement heading towards you, and have the specific obligations confirmed by someone accountable for the answer.
What is the minimum that is worth having?
Four things, in this order. Every artefact signed at build with a workload identity rather than a stored key. A verification policy at the deployment boundary that names the expected signing identity and refuses anything else. An SBOM generated by the build, stored with the artefact and retrievable by version. And provenance generated by the build platform, checked by the same admission policy.
Treat the first two as one item, because signing without verification is a filing exercise and verification without signing is impossible. Everything else in this area increases what you know; that pair decides what can run.
The test to run this week: take the newest artefact in your production registry and try to answer, from stored data alone, which commit produced it, who signed it, and what its dependency list was at build time. If any of those requires asking a person, that is the gap, and it is the same gap that turns a supply chain incident into a fortnight of archaeology.
Common questions
- Is an SBOM a security control?
- No, it is an inventory. It tells you which components are present at the depth it was generated at, which is what lets you answer whether you are affected when a vulnerability is published. It says nothing about whether those components are vulnerable now, and it prevents nothing on its own. It becomes operationally useful only when it is stored with the artefact, retrievable by version, and matched against vulnerability data automatically.
- When should an SBOM be generated?
- During the build, from the dependency resolution the build performed. An SBOM produced by scanning a finished artefact is a reconstruction that misses vendored and statically linked code and cannot see build-time components. Check that the document includes transitive dependencies, not just direct ones, and that every entry carries a version and a machine-matchable identifier, because component names alone cannot be matched reliably against vulnerability sources.
- What is the difference between signing and provenance?
- A signature says which identity produced this exact artefact. Provenance says which source revision, build parameters and builder produced it. The signature lets you refuse artefacts your pipeline did not create; provenance lets you trace a running artefact back to the commit you reviewed, which is what an investigation needs. Provenance generated by the build platform is stronger than provenance a project generates about itself, since the latter can be modified by anyone who can modify the build.
- What is the most common mistake in artefact signing?
- Verifying that a signature is valid rather than verifying who made it. With keyless signing bound to workload identity, any valid signature recorded in a public transparency log is cryptographically fine and may come from anyone at all. The verification policy has to name the expected signing identity, source repository, reference and builder, and it should be tested by deploying something signed by a different workflow and confirming refusal.
- Are SBOMs legally required?
- It depends on jurisdiction, sector and customer, and it is a question for counsel rather than a guide. In the United States there is no longer a government-wide mandate: OMB Memorandum M-26-05 of 23 January 2026 rescinded the memoranda that required agencies to collect a CISA Common Form secure development self-attestation, so federal attestation and SBOM obligations now arrive through the terms of an individual agency contract rather than through a common form. In the EU, the Cyber Resilience Act obliges manufacturers of products with digital elements to maintain a machine-readable component inventory and report actively exploited vulnerabilities, phased in over time. Sector standards add further inventory expectations.
- What is the minimum useful supply chain setup?
- Sign every artefact at build using workload identity rather than a stored key, and enforce a verification policy at the deployment boundary that names the expected signing identity. Generate the SBOM in the build and store it with the artefact so it is retrievable by version. Have the build platform produce provenance and check it in the same admission policy. The signing and verification pair is the part that changes what can run, so do it first.