OIDC Ephemeral Signing Design

Keyless Payload Signing via Identity Provider Tokens
Status:
DESIGN DRAFT
Protocol:
SWT3 v1.0
Updated:
April 30, 2026
Classification:
PUBLIC
Patent:
Patent pending
Design document. This describes a planned capability. It is not yet implemented in the SWT3 SDK or server. Feedback welcome at engineering@tenovaai.com.
OIDC ephemeral signing eliminates long-lived shared secrets for payload signing. Instead of configuring a static signing_key, the SDK obtains a short-lived OIDC identity token from the workload's identity provider (AWS IAM, GCP Workload Identity, Azure Managed Identity, GitHub Actions OIDC) and uses it to sign payloads. The server verifies the signature against the IdP's public JWKS endpoint. No shared secret to rotate, leak, or manage.

1. Problem Statement

Static HMAC signing keys solve payload authenticity but introduce operational burden:

OIDC ephemeral signing removes the shared secret entirely. The workload proves its identity using its existing cloud identity, and the server verifies against the identity provider's public key infrastructure.

2. How It Works

2.1 Flow

  1. The SDK detects that signing_mode: "oidc" is configured (no signing_key provided).
  2. At flush time, the SDK requests a short-lived OIDC identity token from the workload's identity provider.
  3. The SDK signs the payload using the OIDC token as the HMAC key (the token itself is the ephemeral secret).
  4. The SDK includes the OIDC token in the X-SWT3-OIDC-Token header.
  5. The server validates the OIDC token against the IdP's JWKS endpoint (cached, refreshed hourly).
  6. The server extracts the subject claim (sub) and verifies it matches the tenant's registered OIDC identity.
  7. The server re-computes the HMAC using the token as the key and validates the signature.
  8. The payload is accepted with signature_status: "oidc_verified".

2.2 Token Lifecycle

ProviderToken SourceTTLAudience
AWSSTS AssumeRoleWithWebIdentity1 hourswt3.tenova.io
GCPMetadata server /computeMetadata/v1/instance/service-accounts/default/identity1 hourswt3.tenova.io
AzureManaged Identity endpoint1 hourswt3.tenova.io
GitHub ActionsACTIONS_ID_TOKEN_REQUEST_URL5 minutesswt3.tenova.io
KubernetesService Account Token projectionConfigurableswt3.tenova.io

2.3 Server-Side Verification

The server performs three checks:

  1. Token validity: Verify JWT signature against IdP's JWKS. Check exp, aud, iss.
  2. Identity binding: Match the sub claim against the tenant's registered OIDC identities.
  3. Payload signature: Re-compute HMAC-SHA256 using the raw JWT as the key. Compare against payload_signature using constant-time comparison.

3. Configuration

3.1 SDK Configuration

# .swt3.yaml
endpoint: https://sovereign.tenova.io/api/v1/witness
api_key_env: SWT3_API_KEY
tenant_id: ACME_DEFENSE
signing_mode: oidc
oidc_audience: swt3.tenova.io

3.2 Server-Side Registration

POST /api/v1/oidc-bindings
{
  "issuer": "https://token.actions.githubusercontent.com",
  "subject": "repo:acme/fraud-detector:ref:refs/heads/main",
  "label": "GitHub Actions - fraud detector CI"
}

3.3 Supported Identity Claims

ProviderIssuerSubject Example
AWShttps://sts.amazonaws.comarn:aws:iam::123456:role/fraud-detector
GCPhttps://accounts.google.com123456789@developer.gserviceaccount.com
Azurehttps://login.microsoftonline.com/{tenant}/v2.0system-assigned-managed-identity-id
GitHubhttps://token.actions.githubusercontent.comrepo:org/repo:ref:refs/heads/main

4. Security Properties

Advantages over static HMAC keys:
Limitations:

5. Comparison: Signing Modes

PropertyStatic HMACOIDC Ephemeral
Shared secret requiredYesNo
Key rotation neededYes (manual)No (automatic)
Air-gap compatibleYesNo
Identity bindingBy key possessionBy cloud identity
Compromise blast radiusUntil key rotatedToken TTL (minutes/hours)
Setup complexityLowMedium
Latency impactNoneToken fetch (cached)
Observation fieldsignature_status: "verified"signature_status: "oidc_verified"

6. Patent Considerations

Patent pending. The combination of OIDC identity tokens as ephemeral HMAC keys for compliance witness payload signing, with server-side JWKS verification and identity-to-tenant binding, represents a novel application of workload identity federation to cryptographic compliance attestation.

7. Implementation Roadmap

  1. Server: OIDC identity binding store (issuer, subject, tenant, active status).
  2. Server: JWKS cache with hourly refresh per issuer.
  3. Server: OIDC token validation in witness endpoint (parallel path to HMAC validation).
  4. SDK (Python): signing_mode="oidc" with provider auto-detection.
  5. SDK (TypeScript): signingMode: "oidc" with provider auto-detection.
  6. Dashboard: OIDC binding management UI on settings page.