CertifiedData.io
Docs/Signing Key Infrastructure

Signing Key Infrastructure

CertifiedData uses Ed25519 digital signatures to make certificates tamper-evident. This page documents how signing keys are managed, rotated, and published.

Cryptographic algorithm

All certificates are signed using Ed25519 (RFC 8032). Ed25519 was chosen for:

  • Small key and signature sizes (32-byte public key, 64-byte signature)
  • Fast deterministic signing and verification
  • Resistance to side-channel attacks
  • Wide support across cryptography libraries (OpenSSL, libsodium, Go crypto, Python cryptography)

The signature input is the RFC 8785 (JSON Canonicalization Scheme) serialization of the certificate payload — all fields except signature.

Public key endpoint

Active signing keys are published at a well-known URL that is publicly accessible without authentication:

GET /.well-known/signing-keys.json

# Response
{
  "keys": [
    {
      "key_id": "uuid",
      "algorithm": "Ed25519",
      "public_key": "base64-encoded-public-key",
      "created_at": "2026-01-01T00:00:00Z",
      "status": "active"
    }
  ]
}

Verification tools should fetch the key by key_id referenced in the certificate. Caching is acceptable; keys do not rotate frequently.

Key lifecycle

Active

Key is used to sign new certificates. Appears in /.well-known/signing-keys.json with status: active.

Retired

Key is no longer used for new certificates but remains in the public endpoint for verification of previously signed certificates.

Revoked

Key has been compromised. Certificates signed with a revoked key cannot be trusted. CertifiedData will re-issue affected certificates.

Rotation policy

Signing keys are rotated periodically or immediately upon suspected compromise. Key rotation does not invalidate existing certificates — retired keys remain in the public endpoint so that previously issued certificates can continue to be verified.

In the event of an emergency key rotation, CertifiedData will:

  • Immediately mark the compromised key as revoked
  • Publish the new key at /.well-known/signing-keys.json
  • Re-issue affected certificates under the new key
  • Publish an incident notice at /status

Key storage and security

Private signing keys are stored encrypted at rest and are never exposed via any API endpoint. Access is restricted to the certification service process only. Audit logs record every signing operation.

Key material and access controls are described in the Certificate Policy.

Key transparency

The full history of active, retired, and revoked keys is visible at the Transparency Infrastructure page. This enables third-party auditors to verify that no unauthorized keys were used to sign certificates.