Skip to content

Reproducible build support #2

Open
@lrvick

Description

@lrvick

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

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

  1. Author creates code and signs commit in a feature branch
  2. Reviewer reviews that code and does signed merge commit to master
  3. Author builds binary and signs a v0.1.0 tag containing resulting binary hash as a comment
  4. Reviewer builds binary and signs a v0.1.0-review tag containing resulting binary hash as a comment
  5. Anyone publishes binary
  6. Package Installer downloads new binary release and source code
  7. 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
  8. Package Installer installs binary

Proposed workflow

  1. Author creates and builds code and runs git-wotr command to sign artifacts and commit hash
  2. Reviewer reviews and builds code and runs git-wotr command to sign artifact and commit hash
  3. Merging to master, and binary/signature publishing/mirroring done by anyone.
  4. Package Installer downloads new binary release and source code
  5. Package Installer verifies signatures agree on binary they just downloaded
  6. Package Installer installs binary

Background

More discussion at: hashbang/git-signatures#13

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-feedbackNeeds more people to give their opinion

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions