|
1 | 1 | # Security |
2 | 2 |
|
3 | | -Commits and releases are cryptographically signed with my (Chris Yarbrough's) GPG key `F744D8C299C05EAA` to ensure authenticity. |
| 3 | +Commits and releases are cryptographically signed to ensure authenticity. |
4 | 4 |
|
5 | | -> If you would like to contribute to this repo, you may optionally also sign your commits, but it's not a requirements, since I will be vetting each pull request anyway. |
| 5 | +- **Commits**: Signed with my (Chris Yarbrough's) GPG key `F744D8C299C05EAA` |
| 6 | +- **Release Artifacts** (v0.3.0+): Signed with GitHub's build provenance attestations using Sigstore |
| 7 | + |
| 8 | +> If you would like to contribute to this repo, you may optionally also sign your commits, but it's not a requirement, since I will be vetting each pull request anyway. |
6 | 9 |
|
7 | 10 | Continue reading to learn how you can verify the repository and release artifacts. |
8 | 11 |
|
@@ -34,7 +37,65 @@ Verify the integrity of this guide by comparing the key ID and fingerprint throu |
34 | 37 | - This guide. |
35 | 38 | - The public source of trust. |
36 | 39 |
|
37 | | -## Verify Binaries |
| 40 | +## Verify Binaries (Recommended: v0.3.0+) |
| 41 | + |
| 42 | +Starting with v0.3.0, releases include cryptographic build provenance attestations that prove the artifacts were built by the official GitHub Actions workflow. This verification method is more secure and easier than GPG verification. |
| 43 | + |
| 44 | +### Prerequisites |
| 45 | + |
| 46 | +Install the GitHub CLI: |
| 47 | +```shell |
| 48 | +# macOS |
| 49 | +brew install gh |
| 50 | + |
| 51 | +# Linux (Debian/Ubuntu) |
| 52 | +sudo apt install gh |
| 53 | + |
| 54 | +# Windows |
| 55 | +winget install GitHub.cli |
| 56 | +``` |
| 57 | + |
| 58 | +Authenticate with GitHub: |
| 59 | +```shell |
| 60 | +gh auth login |
| 61 | +``` |
| 62 | + |
| 63 | +### Verification Steps |
| 64 | + |
| 65 | +1. Download a release artifact: |
| 66 | + ```shell |
| 67 | + gh release download v0.3.0 --pattern "ucll-osx-arm64.tar.gz" --repo chrisyarbrough/UnityCommandLineLauncher |
| 68 | + ``` |
| 69 | + |
| 70 | +2. Verify the attestation: |
| 71 | + ```shell |
| 72 | + gh attestation verify ucll-osx-arm64.tar.gz --owner chrisyarbrough |
| 73 | + ``` |
| 74 | + |
| 75 | +3. Successful verification confirms: |
| 76 | + - ✓ The artifact was built by the official GitHub Actions workflow |
| 77 | + - ✓ The artifact matches the exact commit SHA in the repository |
| 78 | + - ✓ The build process is cryptographically signed and logged in Sigstore's transparency log |
| 79 | + - ✓ No tampering occurred after the build |
| 80 | + |
| 81 | +### What the Attestation Proves |
| 82 | + |
| 83 | +The build provenance attestation includes: |
| 84 | +- **Repository**: chrisyarbrough/UnityCommandLineLauncher |
| 85 | +- **Workflow**: .github/workflows/release.yml |
| 86 | +- **Commit SHA**: The exact Git commit that produced this artifact |
| 87 | +- **Build Environment**: GitHub-hosted runner details |
| 88 | +- **Transparency Log**: Public Sigstore Rekor entry (searchable at https://search.sigstore.dev) |
| 89 | + |
| 90 | +This provides stronger security guarantees than traditional GPG signatures because: |
| 91 | +- The signing key is tied to the GitHub repository (not a personal GPG key) |
| 92 | +- The entire build process is attested, not just the final artifact |
| 93 | +- Signatures are logged in a public, tamper-proof transparency log |
| 94 | +- Verification doesn't require trusting or importing external keys |
| 95 | + |
| 96 | +## Verify Binaries (Legacy: GPG Method) |
| 97 | + |
| 98 | +For older releases (pre-v0.3.0) or builds that were created locally: |
38 | 99 |
|
39 | 100 | 1. Import my public key: |
40 | 101 | ```shell |
|
0 commit comments