Pre-release

v0.1.0-rc.1 is out. Until v1.0.0, any release may change fundamentally. Download v0.1.0-rc.1 Project status

Trust Center

What protects your CA, and what doesn't yet.

Every control below says whether it is built, the release it shipped in and the code and tests that prove it. Gaps link the open work that tracks them, and the things CryptOS leaves out on purpose say why.

  • 38Implemented
  • 8Partial
  • 11Planned
  • 4Not planned

CryptOS holds no certifications. It is open-source software you run yourself, not a hosted service, so there is no SOC 2 report or ISO 27001 certificate to share. Every claim here links to the code, so your own reviewers can test it.

CryptOS is pre-1.0 (v0.1.0-rc.1 is the latest release). Expect the gaps listed here to change from one release candidate to the next.

Architecture

How it fits together.

The node's surfaces and where each trust boundary sits, then the appliance from firmware to the CA. The security review adds the boot chain, key custody and the fleet.

CryptOS architecture and trust boundariesOff the boxcryptosctlyour admin certificateTLS 1.3, mTLSFleetOS Manageroptional; dials the nodewith the node's admin certEnrolment clientsACME, EST, SCEPTSA requestersRelying partiesfetch CRL, OCSPand the CA certificateCryptOS node: no shell, no SSH, no loginManagement APIgRPC, mTLS on :443, one addresstrusts only the pinned admin certBreak-glass socket/run/cryptos.sockon the box only, no networkProtocol listenersACME :8555 · EST :8443 (TLS)SCEP :80 · TSA :318on only if enabled; never on a RootRevocationCRL and OCSP over HTTP :80when a base URL is setCA engineprofiles, issuance, revocationRFC 5280 path lengthEmbedded etcd127.0.0.1 onlyon the encrypted state diskcryptos-consolelocal dashboardreads the socketTPM 2.0CA key made andused inside itsign
Figure 1. Architecture and trust boundaries. Solid arrows are calls; dashed arrows are reads and writes on the box.
CryptOS appliance high-level designThe CAmanagement API :443 · protocol listeners · CA engine · embedded etcdsupervised by PID 1, with the local dashboard on the consoleRead-only root: SquashFS (xz), mounted read-only, never writteninitGo PID 1cryptos-nodecryptosctlon-box clientfor the socketcryptos-consolestatus screenon the consolecryptsetupstatic, LUKS2and disk toolsUnified kernel image (UKI)systemd-stub · Linux kernel · cmdline with lockdown=confidentialityinitrd shim that carries the SquashFS and switches root into itUEFI firmware, Secure Bootboots the UKI you signed with your own db keyHardware or VMx86-64, network and consoleTPM 2.0seals the disk key to PCR 7 + 11Disk (written by the installer)p1: EFI system partitionFAT, 512 MiBthe UKI and EFI/cryptos/machine.yamlp2: cryptos-stateLUKS2, aes-xts-plain64, argon2idext4 at /var/lib/cryptosconfig · etcd · auditInterfacesOne network interfacemanagement on its address, protocols on allLocal consoleread-only dashboard; no login promptNo SSH, no shellevery change goes through the API
Figure 2. The appliance, from firmware to the CA. Dashed arrows show what the firmware boots and what the TPM unseals on disk.

Controls

Controls by area.

Implemented means it is built and on main, with the release it first shipped in. Partial means it is built with a named gap. Planned means it isn't built yet. Not planned means it is left out on purpose.

Architecture and trust boundaries 6

No shell and no login: one mutually authenticated API, and a break-glass socket that never leaves the box.

Keys and TPM custody 6

CA keys made and used inside the TPM, and a state disk that only the expected boot chain can open.

Ceremonies and quorum 4

How a Root comes into being, what records it, and what still needs more than one person.

Issuance and protocols 10

Every path to a certificate runs through one profile engine, held to the RFCs.

Identity, access and approvals 5

One pinned admin on each node; certificate-based roles and approvals in FleetOS Manager.

Audit trail 5

Hash-chained, signed logs on the node and in the manager, and what they don't do yet.

Appliance platform 6

A read-only image you sign yourself, with signed upgrades and a guarded clock.

FleetOS Manager 5

An optional console that carries requests to the nodes and never holds a CA key.

Availability and recovery 5

What happens when a node is lost: escrow for software keys today, pairs and split custody later.

  • REC-1 CA key escrow for software keys

    Partial in v0.1.0-rc.1

    A software CA key can be exported and imported in a passphrase envelope (Argon2id and AES-256-GCM). A TPM key can't be exported, so it can't be escrowed.

    Evidence (2)
  • REC-2 Two-node pairs with failover

    Planned

    Active and passive pairs with a shared address and lease-gated signing aren't built.

    Evidence (1)
  • REC-3 Split custody for Root recovery

    Planned

    Recovering a Root through split custody (for example Shamir shares or smart cards) isn't built.

    Evidence (1)
  • REC-4 A changed boot chain means a rebuild

    Partial in v0.1.0-rc.1

    In TPM mode, if the PCR values drift outside an upgrade the state disk can't be unsealed and the node must be set up again. This is a stated limit, not a recovery path.

    Evidence (1)
  • REC-5 Encrypted backup of node state

    Planned

    There is no backup of a node's etcd state today; only a software CA key can be escrowed (REC-1). An encrypted snapshot and restore isn't built.

    Open work: cryptos-node#407 Encrypted backup and restore of a node's etcd state

Supply chain and development 9

Reproducible, unsigned releases, secret scanning, CI gates and how to report a vulnerability.

  • SUP-1 Reproducible release images

    Implemented in v0.1.0-rc.1

    The release pipeline builds the image twice and compares the outputs byte for byte. Releases carry SHA256SUMS and a build manifest.

    Evidence (2)
  • SUP-2 No project signature on releases

    Not planned

    The project doesn't sign the images you boot. You verify the checksums and sign with your own key (APP-2).

    Why: A project key in your boot chain would make the project a party to your trust. You hold the keys, not us.

    Evidence (1)
  • SUP-3 SBOM and build provenance

    Not planned

    Release images carry no SBOM or provenance attestation; the image build sets them off.

    Why: Reproducible builds and published checksums are the check today; an SBOM isn't scheduled.

    Evidence (1)
  • SUP-4 Secret scanning

    Implemented in v0.1.0-rc.1

    Gitleaks runs in CI on every code repository.

    Evidence (2)
  • SUP-5 Tests gate every change

    Implemented in v0.1.0-rc.1

    Go code is formatted, linted, vetted and tested in CI, with a software TPM and interop tests, before it can merge.

    Evidence (1)
  • SUP-6 Pinned CI actions

    Partial

    Third-party GitHub Actions are pinned by commit SHA. A few org and tool references still float.

    Evidence (1)
  • SUP-7 Standard library crypto on the certificate path

    Partial in v0.1.0-rc.1

    Key generation, signing and X.509 use only the Go standard library and golang.org/x/crypto. It is a written rule; no linter enforces it yet.

    Evidence (1)
  • SUP-8 Private vulnerability reporting

    Implemented

    Vulnerabilities are reported privately through GitHub security advisories; the latest 0.x release gets fixes.

    Evidence (1)
  • SUP-9 Vulnerability scanning in CI

    Planned

    CI scans for secrets and runs the linters and tests, but no workflow checks for known vulnerabilities with govulncheck or runs gosec yet.

    Open work: cryptos-node#406 Run govulncheck and gosec in the Go repos' CI

Documents

Documents.

The security review is the long form of this page: architecture, the appliance, the boot chain and key custody, the fleet, and every control with its evidence.

  • Security review

    Architecture, appliance design, boot chain and TPM key custody, the fleet, and every control with its evidence, in four numbered figures.

  • Security policy

    How to report a vulnerability and which versions get fixes.

  • Secure Boot with your own key

    Why releases ship unsigned and how you sign the image you boot.

  • Keys never leave the TPM

    How the CA key is made, used and kept inside the TPM.

Sub-processors

Sub-processors.

CryptOS is self-hosted. The project runs no service that sees your keys, certificates or audit trail. The only outside services are the project's own infrastructure and the ones you choose to connect.

ServicePurposeData it seesScope
GitHubSource code, CI, releases, container images and private vulnerability reportsNo customer data. You download images and releases from it.Project infrastructure
Cloudflare PagesHosts this website and the docsVisitors' requests to these sites. No product data.Project infrastructure
Your storage for FleetOS ManagerThe manager's inventory, approvals and audit logFleet metadata and certificates, never a CA private keyChosen and run by you; none is bundled
Your operator CASigns the certificates FleetOS Manager operators sign in withOperator names and access levelsChosen and run by you

Report a vulnerability

Found a vulnerability? Tell us privately.

Please don't open a public issue, discussion or pull request for a suspected vulnerability.

  1. Open the affected repository on GitHub, go to the Security tab and choose Report a vulnerability.
  2. Say what you found, how to reproduce it, and the version or commit affected.
  3. Expect an acknowledgement within a few business days. We'll agree a fix and a disclosure timeline with you, and credit you in the advisory unless you'd rather not be named.