Skip to content

Demystifying Digital Signatures

Priya Wadhwa

Blue TeamThe Linux Foundation15 minIntermediateOpen on YouTube ↗

Presents demystifying Digital Signatures and evaluates key implications for security practitioners.

Summary

## Overview Priya presents Sigstore, a framework for signing and verifying software without managing long-lived private keys. The talk covers Sigstore's architecture, demonstrates its practical use with container images and Git commits, and previews upcoming general availability improvements.

## The Problem with Traditional Signatures Digital signatures guarantee software has not been tampered with and identify its producer, making them valuable for build pipelines and supply chain verification. However, signing is rarely adopted because it requires maintainers to manage and protect private keys, distribute public keys to end users, and users must manually verify software before use. Code signing certificates offer an alternative but often require payment, making them inaccessible to open source projects.

## Sigstore Architecture Sigstore solves these problems through three core services:

**Cosign** is the CLI tool for signing and verifying software. Notably, users do not manage any keys themselves.

**Fulcio** is a free, publicly accessible code signing certificate authority. When a maintainer signs software with Cosign, Fulcio uses the OpenID Connect protocol to verify identity via email login (supporting GitHub, Google, and Microsoft accounts). Fulcio then issues a certificate embedding the user's email address. Cosign generates an ephemeral key pair that exists only in memory—never touching disk—using the private key to sign software and embedding the public key in the certificate. This approach is called "keyless" signing because users need not think about key management.

**Rekor** is an append-only, immutable transparency log. After signing, Cosign stores the signature and certificate as a public entry in Rekor. This centralizes key distribution, eliminating the need for maintainers to manually share public keys with end users.

## Verification and Practical Usage End users verify signed software by running Cosign, which retrieves the transparency log entry, validates the signature against the embedded public key, confirms certificate validity, and displays the signer's identity. Users then decide whether to trust that identity.

Cosign supports signing container images, arbitrary files, and attestations (including SBOMs). A Sigstore policy controller provides Kubernetes admission control, allowing cluster operators to enforce that only signed images or images from trusted identities are admitted.

## GitSign: Signing Git Commits GitSign is a new Sigstore project that signs Git commits using the same keyless flow. When configured, it can sign specific commits or all commits by default. Each signature includes the committer's email address, proving the code author controls that email. Currently, Sigstore's certificate authority root is not in GitHub's trust root, so commits appear unverified in GitHub, though anyone can manually verify them and see the associated email.

## Upcoming Work: Sigstore GA The team is working toward general availability for Rekor and Fulcio. With Sigstore GA, keyless signing will no longer be experimental, defined SLAs will be offered for core services, and reliability will increase.

Related talks