software-supply-chain-security
this repository demonstrates software supply chain security practices using sigstore for artifact signing and verification.
it includes steps to create, sign, and verify software artifacts, along with verifying their inclusion in a merkle tree transparency log.
the workflow implemented here helps ensure:
- integrity of published artifacts
- provenance tracking of software releases
- prevention of supply chain attacks
repository structure
| file / folder | description |
|---|---|
artifact.md |
initial sample artifact file to sign |
artifact.bundle |
signed bundle generated by sigstore for artifact.md |
artifact_2.md |
second sample artifact |
artifact_2.bundle |
signed bundle for artifact_2.md |
main.py |
core verification script (inclusion & consistency checks) |
merkle_proof.py |
utilities for working with merkle tree proofs |
util.py |
helper functions used across scripts |
demo.png |
visual demo of signing and verification steps |
__pycache__/ |
compiled python cache files |
.gitignore |
ignored files for git |
demo workflow
the overall process is divided into three steps:
step 1: create & sign artifact
generate an artifact and sign it with sigstore:
echo "hello world!" > artifact_2.md
python -m sigstore sign --bundle artifact_2.bundle artifact_2.md
this generates:
- the signed bundle
artifact_2.bundle - transparency log entry metadata (e.g.,
logIndex,logID)
step 2: get merkle tree & artifact info
extract important fields from the bundle:
cat artifact_2.bundle | jq '.' | tail -n 5
example output:
"logIndex": 482833136,
"logID": "c0d23d6ad406973f9559f3ba2d1ca01f84147d8ffc5b8445c224f98b9591801d"
check the current checkpoint of the merkle tree:
python3 main.py -c
step 3: verify artifact
a) verify signature & inclusion
python main.py --inclusion 482833136 --artifact artifact_2.md
output will confirm:
- signature validity
- offline root hash calculation
- inclusion proof verification
b) verify tree consistency
python3 main.py --consistency \
--tree-id 1193050959916656506 \
--tree-size 360933865 \
--root-hash 141a3c752daec75b527dd79101d859a33c38d94b4721e54328a9427a5a50c271
demo screenshot
prerequisites
- python 3.8+
sigstorecli tooljqfor json parsingpip install -r requirements.txt(if present)
use case
this setup is ideal for:
- securing ci/cd pipelines
- ensuring integrity of open-source releases
- validating provenance of dependencies
author
aaditya rengarajan <ar9668>
assignment for software supply chain security
[to-do]
[] review test-cases written with ai-assistance
Metadata
Release files for sscs-assignment 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sscs_assignment-0.1.0.tar.gz | 153.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sscs_assignment-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 315.9 kB
Release files / sscs_assignment-0.1.0.tar.gz
| Download URL | sscs_assignment-0.1.0.tar.gz |
|---|---|
| Size | 153.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e6fa11d8e13e7bf445620e09780f790d00988e7e6f4cf4e08aa320498ee86e42
|
|
BLAKE2b-256 checksum How to use checksums |
9a3bca9fbd5f4897c4e39d7a97c7b3321be25e0735743498e32cd29690253150
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.2.1 CPython/3.12.3 Windows/11
|
Release files / sscs_assignment-0.1.0-py3-none-any.whl
| Download URL | sscs_assignment-0.1.0-py3-none-any.whl |
|---|---|
| Size | 162.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f01292860db603d15ecc7f896f9308d69d2f690e79e02d6b00ff7524279031ff
|
|
BLAKE2b-256 checksum How to use checksums |
c3edcd3e39330309b0a6106b685465fcb9054cd6cd998ed77952d537a6ae7502
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.2.1 CPython/3.12.3 Windows/11
|