The CDK Security Architecture
Abstract
This document describes the cryptographic architecture underlying CDK's evidence model: how identities are established, how signatures are produced without long-lived key custody, and how every signing event becomes part of a public, tamper-evident record. It does not describe what CDK defends against — see the forthcoming Threat Model — only the mechanisms available to defend with.
1. Identity
CDK never asks a user or CI system to create or manage a CDK-specific credential. Every signer authenticates using an OIDC identity it already has — a GitHub Actions workflow token, a Google Workspace account, a corporate SSO session. CDK verifies the OIDC token and nothing else; there is no separate CDK password or API key to leak.
2. Signing
Signing uses Sigstore's keyless flow. Fulcio, Sigstore's certificate authority, issues a short-lived certificate — typically valid for minutes — binding the verified OIDC identity to an ephemeral public key generated locally. The matching private key is discarded immediately after signing.
There is no long-term key for CDK, the signer, or an attacker to compromise.
3. Transparency Log
Every signing event is recorded in Rekor, Sigstore's public transparency log — an append-only Merkle tree, the same structural pattern used by Certificate Transparency (RFC 6962). A compromised actor cannot sign an attestation and later remove the record: the log entry, and the inclusion proof for it, are permanent and independently checkable.
4. Storage
Evidence at rest is encrypted, and every record is hash-chained to the one before it within its graph. Modifying a stored attestation after the fact breaks that chain — verifiable independently of whether you trust CDK's storage layer at all.
5. Boundary
CDK holds no long-term signing keys, custodies no private key material, and is not the sole record of any signature — Rekor's log exists independently of CDK's own database. If CDK disappeared tomorrow, every attestation it had produced would remain independently verifiable.