Skip to content
Docs/Operations/Security
Edit on GitHub

Security

opensecstack v1.0.0 ships with strong cryptographic primitives, structured audit, and role-enforced APIs. Whether those controls are sufficient depends on what you are defending against. This page defines the three deployment tiers and the cross-platform security guarantees that every opensecstack deployment provides. For the release cadence and version compatibility, see Versioning & Releases.

For the detailed per-tier control matrix and known gaps, see docs/security-maturity.md and the five-layer defence model in docs/security-architecture.md.

Deployment tiers

v1.0.0 is not a compliance certification — it is a quality mark meaning the code compiles, test suites pass, the API surface is frozen under semver, and the cryptographic primitives are state-of-the-art. Fitness for a specific deployment profile is tier-dependent.

TierYour situationIs v1.0.0 sufficient?
StandardSingle region, trusted operator — SaaS, NGOs, public administration, research labsYes — production-ready out of the box
ElevatedMulti-region, multi-tenant, zero-trust network expectationsYes, with ops-layer additions — Vault, service mesh (mTLS), OpenTelemetry
High assuranceBanking Tier 1, national CSIRTs, NIS2 essential entities, defence contractorsNot yet — wait for v1.1 or add compensating controls

Tier 1 — Standard deployment

For SaaS companies, mid-sized enterprises, NGOs, regional public administration, and internal corporate deployments.

Key controls shipped out of the box at this tier:

ControlImplementation
API authenticationHS256 JWT with exp/nbf checks; alg: none rejected
AuthorizationRBAC — 5 canonical roles, per-route guards (RequireWrite, RequireDelete)
Webhook authenticationHMAC-SHA256 with ±5-minute replay window, per-source secrets, 503 on empty secret
Inter-service signing (platform → CITADEL)HMAC-SHA256 via X-Citadel-Signature
Audit integrityCITADEL WORM chain — TripleHash (SHA-256 + SHA-512 + BLAKE3), Ed25519 anchors every 100 entries
Dual-control enforcementCITADEL NDS — every privileged action requires operator ≠ verifier
Password and API-key hashingArgon2id (RFC 9106) + HMAC-SHA256 pepper via sdk/go/password or opensecstack-password
Note: Before going live at Standard tier, ensure all secrets (*_AUTH_SECRET, *_AUTH_PEPPER, CITADEL_KEY_SECRET, and every *_WEBHOOK_*_SECRET) are set to at least 32 random bytes and are not committed to git or embedded in container images.

Tier 2 — Elevated deployment

For multi-region SaaS, large enterprises, organisations with zero-trust mandates, and multi-tenant deployments.

v1.0.0 is achievable at this tier with standard enterprise operations tooling — no code changes are required from you. The ops-layer additions you provide:

  • Secrets management — HashiCorp Vault, AWS KMS, GCP KMS, or Azure Key Vault as the source of truth; short-lived sidecars inject secrets at start-up
  • Network-level trust — service mesh (Istio, Linkerd) enforcing mTLS between every platform pair, or Cloudflare Tunnel / Tailscale for east-west traffic
  • Distributed tracing — OpenTelemetry collector forwarding traceparent / tracestate headers across platforms
  • Rate limiting — Envoy filter or API gateway with Redis-backed distributed buckets

Known gaps planned for v1.1: JWKS endpoints on each platform, W3C Trace Context cross-platform propagation, webhook event deduplication, and mTLS-ready deployment templates.

Tier 3 — High assurance

For banking Tier 1, national CSIRTs, critical public utilities (energy, water, telecom), NIS2 essential and important entities subject to competent-authority audit, and defence contractors.

Warning: Do not deploy v1.0.0 as-is to regulated critical infrastructure and do not advertise it as NIS2-critical-ready in procurement or compliance artefacts. The controls required at this tier — FIPS 140-2 Level 3 HSM key storage, mandatory mTLS at every boundary, signed audit trail for HARD_STOP events, and an independent third-party security audit — are scheduled for v1.1.

If you must deploy now at this tier, compensate with operational controls: HSM-backed Vault, strictly segmented networks, and mandatory 2-person release reviews. Track the v1.1 milestone for every Tier 3 gap.

Cross-platform security guarantees

Every opensecstack deployment — regardless of which platforms are installed — provides the following guarantees:

GuaranteeEnforced by
Every privileged action is cryptographically evaluatedCITADEL MARSHAL 5-gate engine
Every decision is WORM-logged with TripleHash integrityCITADEL WORM chain (SHA-256 + SHA-512 + BLAKE3)
Tamper-resistance via Ed25519 anchorsCITADEL chain anchors (every 100 entries)
Separation of Duties enforced at protocol levelCITADEL Gate 3 (NDS) — operator ≠ verifier, different role groups
All inter-platform webhooks HMAC-signed, replay-protectedIRFlow webhook spec (±5-minute window, per-source secrets)
Single sign-on with central MFA across all platformssinauth OIDC (RS256 + JWKS, PKCE S256, TOTP)
All API clients JWT-authenticated with RBACPlatform auth middleware — 5 canonical roles
Password hashing with Argon2id + server-side peppersdk/go/password + sdk/python-password

Responsible disclosure

Security vulnerabilities in any opensecstack platform should be reported privately before public disclosure. See SECURITY.md for the scope, disclosure process, and SLA. Each platform also ships its own SECURITY.md covering platform-specific scope and the threat model for that service.

Post-quantum strategy

NIST PQC standards were finalised in 2024. NIS3 (projected 2030–2032) will likely mandate migration. opensecstack is moving before it is mandatory, starting from algorithm agility rather than a single disruptive cutover.

v1.0.0 uses Ed25519 chain anchors and TripleHash as the baseline. The roadmap:

VersionYearAction
v1.0.02026Ed25519 anchors + TripleHash. Baseline.
v1.12026–2027Algorithm-identifier schema fields added. No breaking change.
v2.02028Hybrid Ed25519 + ML-DSA signatures.
v2.52029QuintHash (TripleHash + 2 PQ-resistant primitives).
v3.02030ML-DSA default. Aligned with expected NIS3 transposition.
v4.02033Ed25519 signing retired; historical verification retained.

The design principle is algorithm agility — schema fields carry algorithm identifiers from v1.1 so that the v2.0 hybrid switch is a configuration change, not a breaking API migration. Historical WORM chain entries remain verifiable after the algorithm transition.

See docs/post-quantum-roadmap.md and ADR-011 for the full rationale.

SIN — Security Intelligence Network — Open-source cybersecurity & compliance for the EU Digital Decade.

Apache-2.0 & AGPL-3.0 · GitHub · Contribute