Architecture

Zero-Trust model where no long-lived SSH keys exist on user devices.

Disclosure
This diagram reflects the current implementation. Some operational hardening details are intentionally omitted from public documentation.

Components

Component Role
Flask Server Handles authentication, MFA verification, and certificate signing requests.
OpenSSH CA Signs user public keys with a generated CA key. Certificates expire in minutes.
WebAuthn Provides phishing-resistant MFA using hardware keys or biometrics.
Audit Ledger Hash-chained log of all issuance events. Tamper-evident by design.

Security Properties

Trust Zones

The CA private key is the root of trust. It is generated at startup if missing and stored in a Docker volume (/app/ca_store). The volume is never exposed to unprivileged containers.

Certificate issuance requires successful WebAuthn or TOTP verification. The audit ledger records every issuance with a cryptographic chain to detect tampering.

Diagram

Ephemera Architecture Diagram