You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: cosign/README.md
+36-17Lines changed: 36 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,7 +13,7 @@ The third operation is performed by a system called Rekor, a transparency log fo
13
13
And cosign is the reference Sigstore client implementation to sign arbitrary artifacts. With these components, Sigstore completed trust setup, signing and verification[2].
To verify an artifact, a verifier ensures that the trusted keys are fresh by performing a key update. With an updated root-of-trust, the first check ensures that the identity claimed was correctly verified by the identity log, and that the signature provided matches the content of the signed artifact. A final check verifies that the signature was created during the time window in which the certificate was valid.
53
+
52
54
The Sigstore team plans to refactor parts of cosign into a new, minimal, and user-friendly API named `sigstore-go`. Currently in beta, `sigstore-go` has passed the `sigstore-conformance` signing and verification test suite.
53
55
`sigstore-go` is built as a modular Go codebase including cryptographic signature creation and validation, integration with external services (Fulcio for certificates and Rekor for record-keeping) and API layers.
54
56
The `ratify-verifier-go` implementation shares the same underlying library, `sigstore-go`, as the cosign verifier.
55
57
56
58
## Concepts
57
59
58
-
**Artifact signing**: To sign an artifact, a signer generates a private/public key pair and uses the secret key to sign an arbitrary piece of data.
60
+
1. Digital Artifact Signing Fundamentals
61
+
62
+
- Artifact Signing: The process by which a signer uses a private key (paired with a public key) to produce a digital signature on an artifact (a piece of data, file, or software).
63
+
Note: The digital signature created can later be verified by others to ensure the artifact’s authenticity and integrity.
64
+
65
+
- Digital Signature: A cryptographic value computed from artifact data and a secret key. It serves as evidence that the signer endorsed the artifact and that the artifact has not been tampered with.
66
+
67
+
- Signature Verification: The process whereby verifiers use the signer’s public key to confirm that a digital signature was indeed produced by the paired private key and that the underlying artifact remains unchanged.
59
68
60
-
**OpenID Connect (OIDC)**: A widely-supported protocol allowing relying parties (applications) to verify the identity of resource owners (end users) as confirmed by identity providers.
69
+
2. Identity, Authorization, and Trust Establishment
61
70
62
-
**OIDC Provider**: Mechanism vouching that an entity (individual) controls an identity (e.g., email account)
71
+
- OpenID Connect (OIDC): A widely supported protocol that allows relying parties (applications) to authenticate resource owners (end users) based on assertions made by identity providers.
63
72
64
-
**Signers**: Individuals vouching for the authenticity of content.
73
+
- OIDC Provider: An entity or mechanism that vouches for an individual’s identity (for example, confirming control of an email account) in accordance with OIDC protocols.
65
74
66
-
**Verifiers**: Individuals checking that content is authentic.
75
+
- Signers: Individuals or entities that use their private keys to digitally sign artifacts, thereby vouching for the authenticity and integrity of content.
67
76
68
-
**Artifact Log**: Record of artifact metadata created by signers.
77
+
- Verifiers: Individuals or systems responsible for checking that the digital signature attached to an artifact is valid and that the artifact remains unaltered.
69
78
70
-
**Identity Log**: Record of mappings from identities to signing keys.
79
+
3. Trust Infrastructure and Public-Key Management
71
80
72
-
**Certificate Authority(CA)**: Entity verifying identity and issues cryptographic certificates to signers.
81
+
-Certificate Authority(CA): An entity within a Public-key Infrastructure (PKI) that is responsible for verifying identities and issuing digital certificates which associate a public key with the verified identity of a signer.
73
82
74
-
**Public-key Infrastructure (PKI)**: A set of roles, policies, hardware, software and procedures needed to create, manage, distribute, use, store and revoke digital certificates and manage public-key encryption.
83
+
- Public Key Certificate: An electronic document issued by a CA that binds a public key with an individual’s identity, thus providing proof of the publickey’s legitimacy.
75
84
76
-
**Public Key Certificate**: In cryptography, a public key certificate, is an electronic document used to prove the validity of a public key.
85
+
- Public-key Infrastructure (PKI): A comprehensive framework that includes roles, policies, hardware, software, and procedures for creating, managing, distributing, using, storing, and revoking digital certificates as well as managing public-key encryption.
86
+
87
+
4. Transparency and Auditability
88
+
89
+
- Identity Log: An online provided record, that maps verified identities to their associated signing keys. Such logs help establish trust by providing a history of key associations.
90
+
91
+
- Artifact Log: An online/offline provided record that contains metadata about artifacts, such as when and by whom they were signed. This ledger aids in auditing and tracing the provenance of digital artifacts.
77
92
78
93
## Scenarios
79
94
80
95
`ratify-verifier-go` supports multiple verification scenarios based on different signing methods, artifact types, and trust sources[3]. These scenarios can be categorized into the following main types.
|**Keyless Verification**|Fulcio issues short-lived certificates binding an ephemeral key to an OpenID Connect identity. Signing events are logged in Rekor, a signature transparency log. | CI/CD pipelines or automated workflows where no private key management is needed. |
99
+
|**Keyless Verification**|Verifyies signatures from Rekor, trust material (signed certificate timestamp) from the CT log, and certificates that chain up to Fulcio. | CI/CD pipelines or automated workflows where no private key management is needed. |
85
100
|**Key-Based Verification**| Verifies signature using a known **public key**. | Environments where signatures are verified with a known public key. |
86
101
|**Timestamp Verification**| Verifies the **timestamp** of the signature to prevent time-based attacks. Not standalone verification. | Long-term signature validity checks, ensuring signatures are valid at a specific point in time. |
87
102
|**Rekor Transparency Log (TLog)**| Verifies inclusion of the signature in the **Rekor Transparency Log** for audibility. Not standalone verification. | Auditing and compliance to ensure signatures are publicly recorded in an immutable log. |
@@ -93,10 +108,10 @@ The `ratify-verifier-go` implementation shares the same underlying library, `sig
93
108
94
109
2. Verification Materials
95
110
- The signature(s) of the artifact[4]: The cryptographic signature(s) created when the artifact was signed.
96
-
- Verification options: i.e. whether to expect SCTs (a service compliant with [RFC 6962](https://datatracker.ietf.org/doc/html/rfc6962)), TLog entries, or signed timestamps and expected identity and digest to verify.
111
+
- Verification options: i.e. whether to expect signed certificate timestamps (SCTs), TLog entries, or signed timestamps and expected identity and digest to verify.
97
112
98
113
3. Verification Key or Certificate
99
-
- Keyless Verification: Retrieves an x509 certificate on the signature and verify against Fulcio root trust.
114
+
- Keyless Verification: Retrieves an X.509[5] certificate on the signature and verify against Fulcio root trust.
100
115
- Key-Based Verification: User provides a public key, certificate or certificate chain.
101
116
102
117
### Cosign Verifier Output
@@ -126,3 +141,7 @@ The output format is defined by `ratify-go`, illustrates if the signature is val
0 commit comments