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: demos/bundle-attestation-demo-slides.html
+21-15Lines changed: 21 additions & 15 deletions
Original file line number
Diff line number
Diff line change
@@ -190,8 +190,8 @@ <h2>Generated artifacts have no upstream tag</h2>
190
190
</tbody>
191
191
</table>
192
192
<divclass="grid2">
193
-
<divclass="mini"><h4>Without attestation</h4><p>Bundle is just files. <codeclass="inl">checksums.txt</code>catches accidental corruption, nothing else.</p></div>
194
-
<divclass="mini"><h4>With <codeclass="inl">--attest</code></h4><p>The generated payload files listed in <codeclass="inl">checksums.txt</code>, including <codeclass="inl">recipe.yaml</code>, are cryptographically bound to the creator <em>and</em> the binary that produced it. Recursive provenance.</p></div>
193
+
<divclass="mini"><h4>Without attestation</h4><p><codeclass="inl">checksums.txt</code>detects accidental payload or tree changes, but provides no signed creator identity or provenance.</p></div>
194
+
<divclass="mini"><h4>With <codeclass="inl">--attest</code></h4><p>The complete closed-world payload inventory, including <codeclass="inl">recipe.yaml</code>, is cryptographically bound to the creator <em>and</em> the binary that produced it. Recursive provenance.</p></div>
195
195
</div>
196
196
</div>
197
197
</section>
@@ -202,7 +202,7 @@ <h2>Generated artifacts have no upstream tag</h2>
<svgclass="diagram" viewBox="0 0 860 380" role="img" aria-label="Recipe flows through aicr bundle --attest, producing a bundle directory with attestation/ subdirectory containing two signed Sigstore bundles">
205
+
<svgclass="diagram" viewBox="0 0 860 380" role="img" aria-label="Recipe flows through aicr bundle --attest, producing a closed-world bundle inventory with checksums.txt and the two permitted attestation files">
<tr><tdclass="ok">3</td><td><code>attested</code></td><td>Bundle attestation verified; binary attestation missing or external data used (a <em>failed</em> binary attestation reports attested but exits nonzero)</td></tr>
340
-
<tr><tdclass="warn">2</td><td><code>unverified</code></td><td>Checksums valid, no <codeclass="inl">--attest</code> was passed</td></tr>
341
-
<tr><tdclass="bad">1</td><td><code>unknown</code></td><td>Missing/invalid <codeclass="inl">checksums.txt</code>, or bundle attestation fails verification</td></tr>
343
+
<tr><tdclass="ok">3</td><td><code>attested</code></td><td>Bundle attestation verified; binary attestation missing, or external data used</td></tr>
344
+
<tr><tdclass="warn">2</td><td><code>unverified</code></td><td>Closed-world checksum inventory valid, no <codeclass="inl">--attest</code> was passed</td></tr>
345
+
<tr><tdclass="bad">1</td><td><code>unknown</code></td><td>Missing, invalid, or incomplete manifest; unexpected filesystem entry; or failed attestation</td></tr>
342
346
</tbody>
343
347
</table>
344
348
<divclass="note">
345
349
<spanclass="t info">Why levels, not pass/fail</span>
346
350
Different bundles live under different threats. CI-built production bundles must be
347
351
<codeclass="inl">verified</code>; an on-call engineer’s emergency hotfix bundle might only
348
-
reach <codeclass="inl">attested</code>. Operators pick the floor per environment.
352
+
reach <codeclass="inl">attested</code>. Legacy bundles with incomplete manifests remain
353
+
<codeclass="inl">unknown</code> and must be regenerated. Operators pick the floor per environment.
349
354
</div>
350
355
</div>
351
356
</section>
@@ -366,7 +371,7 @@ <h2>Policy from one flag</h2>
366
371
<spanclass="c"># Constrain the CLI version that produced the bundle.</span>
+ Rekor inclusion proof). Its in-toto subject is the SHA256 of
108
-
`checksums.txt`, so signing this one file transitively pins every generated
109
-
payload file that `checksums.txt` lists, including `recipe.yaml`. The signer
110
-
identity is the creator's OIDC identity.
115
+
`checksums.txt`, so signing this one file transitively pins the complete
116
+
closed-world payload inventory, including `recipe.yaml`. The signer identity
117
+
is the creator's OIDC identity.
111
118
***`aicr-attestation.sigstore.json`** — the SLSA Build Provenance attestation
112
119
*of the AICR CLI binary that produced the bundle*, copied in at bundle time.
113
120
Its signer identity is NVIDIA CI (`https://github.com/NVIDIA/aicr/.github/workflows/on-tag.yaml@...`).
@@ -142,13 +149,15 @@ Bundle verification: PASSED
142
149
143
150
Five gates run, top to bottom:
144
151
145
-
1.**Checksums** — every generated payload file listed in `checksums.txt`, including `recipe.yaml`, is hashed and compared.
152
+
1.**Closed-world inventory** — every regular payload file, including `recipe.yaml`, is hashed and compared; additional files, directories, symlinks, and other non-regular objects are rejected.
146
153
2.**Bundle signature** — the Sigstore Bundle is verified against the trusted root.
147
154
3.**Bundle predicate** — the in-toto subject is checked against the actual `checksums.txt` digest.
148
155
4.**Binary attestation chain** — `aicr-attestation.sigstore.json` is verified and its subject is checked against the CLI binary digest claimed in the bundle predicate.
149
156
5.**Identity pin** — the binary attestation's signer is pinned to NVIDIA CI workflows.
150
157
151
-
Any gate failing short-circuits to a lower trust level (see table below).
158
+
An invalid inventory or failed attestation reports `unknown` trust. An absent
159
+
attestation can still reach `unverified` when the closed-world inventory is
|**4**|`verified`| Checksums + bundle attestation + binary attestation pinned to NVIDIA CI |
165
-
|**3**|`attested`| Bundle attestation verified; binary attestation missing/unverified, or external data used. A *failed* binary attestation also reports attested but exits nonzero (#1550) |
166
-
|**2**|`unverified`| Checksums valid, `--attest` was not used |
167
-
|**1**|`unknown`| Missing/invalid `checksums.txt`, or bundle attestation fails verification |
173
+
|**4**|`verified`| Closed-world inventory + bundle attestation + binary attestation pinned to NVIDIA CI |
174
+
|**3**|`attested`| Closed-world inventory + bundle attestation verified; binary attestation missing, or external data used |
175
+
|**2**|`unverified`| Closed-world checksum inventory valid; `--attest` was not used |
176
+
|**1**|`unknown`| Missing, invalid, or incomplete `checksums.txt`; unexpected filesystem entries; or bundle/binary attestation verification failure |
177
+
178
+
Legacy bundles with incomplete manifests report `unknown` trust and must be
179
+
regenerated before deployment.
168
180
169
181
Pick the floor per environment. Production bundles must be `verified`; an
170
182
emergency hotfix bundle built off-CI might only be required to reach
0 commit comments