Open
Description
Story
Make it easy to provide end users package managers or system bootloaders a way to automatically verify that both code authors, package maintainers, and CI systems (with well known keys) all agreed independantly that a package I am about to install has the same hash, and was built from a given git ref.
This allows for end-to-end verification that logic has not been mutated from the time it was created on an author-controlled system to the final system where compiled code will be executed.
Example users
- Debian maintainer on the reproducible-builds project
- Bitcoin Core maintainer of the reproducible Gitian build system
** See: https://github.com/bitcoin-core/gitian.sigs - Yubico engineer that maintains assembly-line HSMs that install firmware for yubikeys
Assumptions
- All parties have well known keys trusted by each other
- Binary building steps could be replaced by indepenantly maintained CI/CD setups
- A lot of not scope relevant validation steps like ensuring client downloads -latest- signed binary are not covered here
Currently workflow
- Author creates code and signs commit in a feature branch
- Reviewer reviews that code and does signed merge commit to master
- Author builds binary and signs a v0.1.0 tag containing resulting binary hash as a comment
- Reviewer builds binary and signs a v0.1.0-review tag containing resulting binary hash as a comment
- Anyone publishes binary
- Package Installer downloads new binary release and source code
- Package Installer verifies v0.1.0 tag and v0.1.0-review tag are by 2 whitelisted keys that agree on the same hash just downloaded
- Package Installer installs binary
Proposed workflow
- Author creates and builds code and runs git-wotr command to sign artifacts and commit hash
- Reviewer reviews and builds code and runs git-wotr command to sign artifact and commit hash
- Merging to master, and binary/signature publishing/mirroring done by anyone.
- Package Installer downloads new binary release and source code
- Package Installer verifies signatures agree on binary they just downloaded
- Package Installer installs binary
Background
More discussion at: hashbang/git-signatures#13