Q-Trust Plane Whitepaper v1.1 (Full)
Quantum-Safe Zero-Trust Control Plane for Hybrid Web2/Web3 Infrastructure
Author: Mayckon Giovani (Lead Senior Software Engineer) Version: 1.1 (Presentation-ready, includes formal DSL spec) Date: December 16, 2025 Distribution: Public technical whitepaper (recommended: dual-license Community + Enterprise)
Abstract
Modern organizations run critical operations across fragmented security domains: Cloud IAM, Kubernetes RBAC, CI/CD permissions, secrets management, and on-chain administration (smart contracts, bridges, oracles). This fragmentation creates systemic failures: inconsistent authorization, weak auditability, excessive privilege, token sprawl, and brittle governance—especially catastrophic in Web3 systems where a single mistake can irreversibly move funds.
Q-Trust Plane is a cryptographic zero-trust control plane that unifies identity verification, policy decision, short-lived capability grants, cryptographic evidence, and mandatory on-chain anchoring for high-stakes actions across both Web2 and Web3. It standardizes a universal authorization flow: every critical action must present a context-bound, non-replayable, short-lived grant issued only after formal policy evaluation over verified identity + attestations, followed by evidence capture whose integrity is independently verifiable via on-chain Merkle anchoring.
This whitepaper specifies the end-to-end architecture, threat model, multichain integrations, and QPL (Q-Policy Language) including formal grammar, type system, canonicalization rules, and complete examples.
Table of Contents
-
Executive Summary
-
The Problem
-
Goals and Non-Negotiable Guarantees
-
Core Concepts
-
System Architecture
-
Identity and Attestation Model
-
QPL (Q-Policy Language) – Formal Specification
- 7.1 Design Principles
- 7.2 Data Model
- 7.3 Type System
- 7.4 Formal Grammar (EBNF)
- 7.5 Canonicalization and Hashing
- 7.6 Evaluation Semantics
- 7.7 Obligations and Enforcement
- 7.8 Complete Policy Examples
-
Grant Protocol (Capability Tokens)
-
Evidence System and Mandatory On-Chain Anchoring
-
Multichain Operation Model
-
Key Management and Signing (PQC-Ready)
-
Agents (Enforcement Points)
-
Threat Model and Security Analysis
-
Reliability, HA, and Operational Behavior
-
Multi-Tenancy and Enterprise Governance
-
Compliance, Auditability, and External Verification
-
Productization and Monetization
-
Roadmap
-
Conclusion Appendices: A. Canonical Encoding Rules B. Reference Data Schemas (Request/Grant/Evidence) C. Example Policies Library
1. Executive Summary
Q-Trust Plane is an enterprise-grade security and governance system designed to make authorization deterministic, cryptographic, and externally verifiable across hybrid Web2/Web3 infrastructure.
It introduces a single control plane that:
- Verifies workload/user identity (OIDC/mTLS/wallet bindings).
- Verifies attestations (SLSA provenance, SBOM digests, approvals, signatures).
- Evaluates formal policies using QPL (the included DSL).
- Issues short-lived, one-time, context-bound capability grants.
- Requires enforcement agents (CI/CD, Kubernetes, IaC, Web3 deployers) to present those grants.
- Produces a cryptographic evidence chain, then anchors it on-chain via Merkle roots (mandatory in this whitepaper).
Outcome: a system where high-stakes actions are not merely logged, but cryptographically provable, policy-linked, and tamper-evident, with chain-level audit anchors enabling external verification.
2. The Problem
2.1 Fragmented authorization is structurally unsafe
Modern operations use many independent “authorization islands”:
- Cloud IAM (AWS/Azure/GCP)
- Kubernetes RBAC / Admission Controls
- CI/CD permissions (GitHub/GitLab)
- Secrets management
- On-chain admin (multisigs, upgradeability, bridge validators)
- Off-chain bots/oracles
These systems are rarely unified under a single policy model, causing:
- inconsistent control boundaries
- ad hoc approvals
- hidden privilege escalation paths
- operational gaps between “allowed” in CI and “allowed” on-chain
- audit trails that can’t be independently verified
2.2 CI/CD and supply chain are the new perimeter
Most critical incidents now involve:
- compromised runners or build agents
- malicious dependencies
- artifact tampering
- stolen tokens with broad privileges
2.3 Web3 amplifies consequences
Bridges, oracles, and upgradeable contracts concentrate enormous risk. A single unauthorized upgrade or signer rotation can instantly produce irreversible loss.
3. Goals and Non-Negotiable Guarantees
3.1 Security guarantees (non-negotiable)
- Default Deny: deny unless explicitly allowed.
- Least Privilege: scope grants to the smallest possible action/resource context.
- Ephemeral Authorization: grants are short-lived and single-use by default.
- Context Binding: grants are bound to execution context (job id, commit hash, artifact digest, chain id, environment, agent identity).
- Deterministic Policy Decision: decisions are reproducible given the same inputs.
- Cryptographic Auditability: every decision and action yields signed evidence.
- Mandatory On-Chain Anchoring: every allowed critical action’s evidence is anchored on-chain (Merkle root publication).
- PQC-readiness: support hybrid signatures (classical + post-quantum).
3.2 Operational requirements
- Integrate with existing CI/CD and infra systems without replacing them.
- Support multichain execution patterns.
- Provide both SaaS multi-tenant and self-hosted enterprise deployments.
4. Core Concepts
- Subject: the requesting identity (human, workload, pipeline job, bot).
- Resource: the target asset (contract, chain, secret, cluster, namespace, repo, model).
- Action: operation requested (deploy, upgrade, rotate_key, apply_iac).
- Context: runtime details (job id, branch, artifact digests, environment).
- Attestations: proofs associated with request (SLSA, SBOM, approvals).
- Policy: deterministic decision logic + obligations.
- Grant: signed capability token authorizing exactly one action within strict constraints.
- Evidence: cryptographic record of request, decision, execution, and outputs.
- Anchor: on-chain commitment of evidence integrity (Merkle roots).
5. System Architecture
5.1 Logical components
- API Gateway: gRPC/REST, authentication entrypoint, rate limiting.
- Identity Verifier: validates OIDC, mTLS, wallet bindings; produces a subject fingerprint.
- Attestation Verifier: validates provenance, signatures, approvals, SBOM digests.
- Policy Engine: evaluates QPL policies deterministically.
- Grant Issuer: produces signed grants, enforces single-use & TTL.
- Evidence Ledger: constructs an append-only hash-chained evidence log.
- On-Chain Anchor Service: batches evidence into Merkle trees and publishes roots to chain contracts.
- Agents: enforcement points (CI/CD agent, Terraform agent, K8s admission agent, Web3 deployer agent, bridge operator agent).
- Admin Console: policy management, tenant governance, audit proof retrieval.
5.2 Control-plane / data-plane separation
- Q-Trust Plane = control plane (decision, grants, evidence, anchors).
- Agents = data plane (execution + enforcement).
No agent performs privileged actions without a valid grant.
6. Identity and Attestation Model
6.1 Identity sources
- OIDC (GitHub Actions, GitLab CI, Azure AD, Google, Okta)
- mTLS workload identities (optional, enterprise)
- Wallet signatures (treated as factors; bind wallet to enterprise subject)
6.2 Composite subject model
A Subject is not merely “a valid token,” but a composite of:
- verified issuer
- claims (repo, workflow, job id, actor)
- workload attributes (runner identity, cluster identity)
- risk signals (time window, unusual branch, unusual chain)
- attached attestations
6.3 Attestations (mandatory for high risk)
Examples:
- SLSA provenance digest of build outputs
- SBOM digest (CycloneDX/SPDX) for artifacts/images
- Artifact signature verification (cosign/sigstore/PGP)
- Human approvals evidence (multi-approver constraints)
7. QPL (Q-Policy Language) – Formal Specification (v1.1)
7.1 Design Principles
QPL must be:
- Deterministic: same inputs → same outputs.
- Audit-friendly: policy decisions can be replayed and proven.
- Expressive: cross-layer conditions (CI + IaC + Web3).
- Strict: explicit allow; obligations must be satisfied.
- Canonicalizable: stable hashing and signing across implementations.
QPL is policy-as-code designed for cryptographic governance.
7.2 Data Model (Request Context)
7.2.1 Authorization Request object AuthzRequest
A request is evaluated against policies using a normalized object:
Top-level fields:
subject: identity claims and derived rolesresource: target descriptoraction: string enumcontext: environment and execution dataattestations: verified proof metadata (digests, issuers, signatures)
7.2.2 Canonical path notation
Policies reference data via stable paths:
subject.claims.repocontext.git.branchresource.chain.idattestations.slsa.digestattestations.approvals.count
7.3 Type System
7.3.1 Primitive types
boolint(signed 64-bit)string(UTF-8)bytes(opaque byte array, represented as base64 in JSON APIs)time(RFC3339 UTC instant)duration(seconds as int or ISO-8601 duration in APIs)semver(Semantic Version)cidr(CIDR block)hash(typed hash: e.g.,hash:sha256,hash:keccak256)
7.3.2 Composite types
list<T>set<T>(unordered, unique elements)map<string, T>object(structured record with named fields)
7.3.3 Typed comparisons
==,!=valid for same types.<,<=,>,>=valid forint,time,semver,duration(if normalized).inoperator for membership inset/list.matchesfor regex onstring.starts_with,ends_with,containsfor strings.hash_eq(a,b)for comparing typed hashes with algorithm/domain separation checks.
7.3.4 Null handling
QPL is strict:
- missing fields evaluate as
undefined - comparisons with
undefinedyieldfalse(exceptis_defined(x))
Functions:
is_defined(x) -> boolcoalesce(x, y) -> type(x|y)(first defined)
7.4 Formal Grammar (EBNF)
This grammar defines the source form of QPL.
7.4.1 Lexical
- Identifiers:
[A-Za-z_][A-Za-z0-9_]* - Strings: double-quoted with escapes
- Integers:
-?[0-9]+ - Comments:
// ...and/* ... */
7.4.2 EBNF
policy_set = { policy } ;
policy = "policy" identifier "{"
meta_block
match_block
decision_block
"}" ;
meta_block = "meta" "{"
{ meta_entry }
"}" ;
meta_entry = identifier ":" literal ";" ;
match_block = "match" "{"
{ match_entry }
"}" ;
match_entry = "action" ":" string ";"
| "resource" ":" resource_selector ";" ;
resource_selector = "{" { resource_field } "}" ;
resource_field = identifier ":" literal_or_pattern ";" ;
literal_or_pattern = literal | pattern ;
pattern = "regex" "(" string ")"
| "glob" "(" string ")" ;
decision_block = "effect" ":" effect ";"
[ "when" ":" expr ";" ]
[ obligations_block ]
[ constraints_block ]
[ evidence_block ]
[ ttl_block ]
;
effect = "allow" | "deny" ;
obligations_block = "obligations" "{" { obligation_entry } "}" ;
obligation_entry = identifier ":" obligation_value ";" ;
obligation_value = literal
| object_literal
| list_literal ;
constraints_block = "constraints" "{" { constraint_entry } "}" ;
constraint_entry = identifier ":" literal_or_object ";" ;
evidence_block = "evidence" "{" { evidence_entry } "}" ;
evidence_entry = identifier ":" literal_or_object ";" ;
ttl_block = "ttl" ":" duration_literal ";" ;
expr = or_expr ;
or_expr = and_expr { "or" and_expr } ;
and_expr = unary_expr { "and" unary_expr } ;
unary_expr = [ "not" ] primary ;
primary = "(" expr ")"
| comparison
| function_call
| boolean_literal
;
comparison = value comp_op value ;
comp_op = "==" | "!=" | "<" | "<=" | ">" | ">="
| "in" | "matches" ;
value = literal
| path
| function_call
| list_literal
| set_literal
;
path = identifier { "." identifier } ;
function_call = identifier "(" [ arg_list ] ")" ;
arg_list = value { "," value } ;
literal = string | int | boolean_literal | time_literal | hash_literal ;
list_literal = "[" [ value { "," value } ] "]" ;
set_literal = "{" [ value { "," value } ] "}" ;
object_literal = "{" [ object_entry { "," object_entry } ] "}" ;
object_entry = identifier ":" value ;
duration_literal = int "s" | int "m" | int "h" ;
time_literal = "time" "(" string ")" ;
hash_literal = "hash" "(" string "," string ")" ;
Notes:
resource_selectorsupports exact matches and patterns (glob/regex).- All blocks are part of a single policy definition.
whenis optional; if omitted, it defaults totrue.
7.5 Canonicalization and Hashing
Canonicalization ensures policies can be hashed, signed, and verified across systems.
7.5.1 Canonical Policy Representation (CPR)
A policy must be converted into a canonical JSON-like structure:
Rules:
-
Whitespace/comments removed.
-
All object keys sorted lexicographically.
-
Sets sorted by canonical value ordering.
-
Regex/glob patterns stored as explicit tagged objects:
{"pattern":{"type":"regex","value":"^main$"}}
-
Durations normalized to seconds.
-
Time normalized to RFC3339 UTC.
-
Hashes stored as typed object:
{"hash":{"alg":"sha256","value":"...hex..."}}
-
Boolean expressions normalized into explicit AST nodes:
{"op":"and","args":[...]}{"op":"or","args":[...]}{"op":"not","arg":...}
7.5.2 Policy Hash
Policy hash computation:
policy_hash = SHA-256( canonical_bytes(CPR(policy)) )policy_set_hash = SHA-256( concat_sorted(policy_hashes) )
7.5.3 Domain Separation
Every hash includes domain separation to prevent cross-context collisions:
H("QTRUST:POLICY:" || canonical_bytes)H("QTRUST:REQUEST:" || canonical_bytes)H("QTRUST:EVIDENCE:" || canonical_bytes)
7.5.4 Signing
A policy bundle is signed (hybrid):
sig_classic = Sign(Ed25519, policy_set_hash)sig_pqc = Sign(Dilithium/Falcon, policy_set_hash)Bundle includes both.
7.6 Evaluation Semantics
7.6.1 Matching phase
A policy is considered if:
match.actionequals requestedaction(string)match.resourceselector matches requestedresource(exact/pattern)
7.6.2 Condition phase
If when exists, it must evaluate to true.
Expression evaluation is strict and deterministic:
- Any comparison with
undefinedyieldsfalse(unlessis_definedused).
7.6.3 Effect resolution
Policies are evaluated in a deterministic order:
-
Determine all matching policies.
-
Evaluate each
when. -
Apply resolution:
- Any
denythat matches and evaluates true overrides allow (deny-wins). - If no allows remain, deny.
- Any
-
If allow selected, include:
- obligations
- constraints
- evidence requirements
- TTL
7.6.4 Obligations are mandatory
If an allow policy returns obligations, the grant issuer includes them and the agent must satisfy them to complete the action. Failure → evidence violation → enforcement penalties.
7.7 Obligations and Enforcement
Obligations are contract-like requirements the agent must fulfill.
Examples:
require_mfa: truerequire_approvals: { group: "security", count: 2 }require_attestation: { type: "sbom", alg: "sha256" }require_anchor: truerequire_evidence_fields: ["tx_hash", "bytecode_hash", "artifact_digest"]require_time_window: { start: "09:00", end: "18:00", tz: "America/Santiago" }
Enforcement:
-
Grant issuance includes obligations.
-
Agents must report evidence that satisfies obligations.
-
Non-compliance triggers:
- incident alerts
- temporary quarantining of subject/agent
- stricter future policy enforcement
- optional revocation workflows
7.8 Complete QPL Policy Examples (Presentation-Ready)
Example 1: EVM Mainnet Contract Deployment (Release Only, Signed, 2 Security Approvals)
policy deploy_evm_mainnet_release {
meta {
id: "POL-DEPLOY-EVM-MAINNET-RELEASE";
owner: "platform-security";
severity: "critical";
version: "1.0.0";
}
match {
action: "web3.contract.deploy";
resource: { type: "contract", chain: "evm", network: glob("mainnet*") };
}
effect: allow;
when: (
subject.issuer in {"https://token.actions.githubusercontent.com", "https://gitlab.com"} and
context.git.branch == "main" and
context.git.tag matches regex("^v[0-9]+\\.[0-9]+\\.[0-9]+$") and
attestations.commit.signature_valid == true and
attestations.sbom.present == true and
attestations.slsa.present == true and
attestations.approvals.group == "security" and
attestations.approvals.count >= 2
);
obligations {
require_anchor: true;
require_evidence_fields: ["tx_hash","contract_address","bytecode_hash","artifact_digest","pipeline_run_url"];
require_two_person_rule: true;
}
constraints {
max_ttl_seconds: 90;
allowed_chains: ["ethereum:1","arbitrum:42161"];
allowed_artifacts: { digest_alg: "sha256", source: "registry" };
}
evidence {
anchor_epoch_seconds: 60;
merkle_domain: "QTRUST:EVIDENCE";
}
ttl: 90s;
}
Example 2: Deny Any Upgrade Outside Business Hours
policy deny_upgrades_after_hours {
meta { id: "POL-DENY-UPGRADE-AFTER-HOURS"; owner: "security"; version: "1.0.0"; }
match {
action: "web3.contract.upgrade";
resource: { type: "proxy", chain: "evm", network: glob("*") };
}
effect: deny;
when: not within_time_window(context.time.utc, "12:00", "23:00", "UTC");
}
Example 3: Terraform Apply in Prod Requires SBOM + SLSA + Signed Plan
policy terraform_apply_prod {
meta { id: "POL-IAC-PROD-APPLY"; owner: "devsecops"; version: "1.2.0"; severity: "high"; }
match {
action: "iac.terraform.apply";
resource: { type: "terraform", env: "prod" };
}
effect: allow;
when: (
attestations.slsa.present == true and
attestations.sbom.present == true and
attestations.terraform.plan_signed == true and
context.git.branch == "main"
);
obligations {
require_anchor: true;
require_evidence_fields: ["plan_digest","apply_log_digest","pipeline_run_url"];
}
ttl: 120s;
}
Example 4: Bridge Signer Rotation Requires Quorum + Emergency Lockout
policy bridge_rotate_signers {
meta { id: "POL-BRIDGE-ROTATE-SIGNERS"; owner: "bridge-security"; version: "2.0.0"; severity: "critical"; }
match {
action: "web3.bridge.rotate_signers";
resource: { type: "bridge", chain: "evm", network: glob("mainnet*") };
}
effect: allow;
when: (
attestations.approvals.group == "bridge-security" and
attestations.approvals.count >= 3 and
attestations.runbook.acknowledged == true
);
obligations {
require_anchor: true;
require_two_person_rule: true;
require_evidence_fields: ["tx_hash","new_signers_hash","threshold","incident_ticket"];
require_emergency_lockout: { duration_seconds: 3600 };
}
ttl: 60s;
}
8. Grant Protocol (Capability Tokens)
8.1 Grant properties
A grant is a signed capability token with:
- strict TTL (
nbf,exp) - single-use nonce
- binding to subject fingerprint and execution context
- embedded policy hash and obligations
- evidence commitments for later anchoring
8.2 Grant schema (logical)
grant_id: UUIDv7 + noncesubject_fp: hash of canonical subject claims + issuer + workload identityaction: stringresource: canonical resource descriptorcontext_bindings: job id, repo, commit, artifact digests, chain id, agent idpolicy_hash: SHA-256(CPR(policy))policy_set_hash: SHA-256(sorted(policy_hashes))obligations: required evidence & constraintsevidence_commitment: leaf hash prefix (domain-separated)nbf,expsig_classic,sig_pqc
8.3 One-time use
The issuer maintains a consumed-grant index (or a bloom + persistence) to enforce one-time use.
9. Evidence System and Mandatory On-Chain Anchoring
9.1 Evidence record
Each allowed action produces:
- request digest
- decision digest
- grant digest
- execution outputs (tx hash, artifact digest, plan digest)
- chained hash pointer to previous evidence
- issuer signature (hybrid)
- timestamp
9.2 Merkle batching and anchoring (mandatory)
-
evidence leaves collected for epoch window (e.g., 60 seconds)
-
build Merkle tree
-
publish root to chain via
AuditAnchorcontract -
store Merkle proofs per evidence leaf
-
provide external verification API:
- leaf, proof, root, tx hash, chain id
9.3 External verification
Any auditor can prove inclusion of a specific evidence event in a published on-chain root.
10. Multichain Operation Model
10.1 Chain adapters
Adapters normalize:
- chain identifiers
- transaction receipts
- contract bytecode/runtime hashes
- upgrade events (proxy patterns)
- bridge/oracle events
10.2 Action taxonomy (non-exhaustive)
web3.contract.deployweb3.contract.upgradeweb3.admin.set_roleweb3.bridge.rotate_signersweb3.bridge.pauseweb3.oracle.update_feed
Each maps to:
- risk profile
- TTL bounds
- required attestations/approvals
- evidence field requirements
11. Key Management and Signing (PQC-Ready)
11.1 Principles
- keys never leave the vault in raw form
- signing is mediated via grants
- keys are segregated by tenant, environment, chain, and action class
11.2 Hybrid signature strategy
-
classical: Ed25519/secp256k1
-
PQC: Dilithium/Falcon
-
both signatures included for:
- policy bundles
- grants
- evidence records
12. Agents (Enforcement Points)
Agents implement:
- context collection
- authorization request submission
- grant verification
- execution
- evidence submission
- anchor proof retrieval
Agent types:
- CI Agent
- Terraform Agent
- Kubernetes Admission Agent
- Web3 Deployer/Upgrader Agent
- Bridge Operator Agent
- MLOps Deployment Agent
Fail-closed for critical actions.
13. Threat Model and Security Analysis
Threats addressed:
- token theft and replay → TTL + one-time + context binding
- compromised runner → attestation requirements + binding to runner identity + least privilege
- malicious dependency → SBOM/SLSA requirements + artifact signatures
- insider abuse → deny-wins + approvals + separation of duties + immutable anchoring
- log tampering → chained evidence + signatures + on-chain Merkle anchoring
- future cryptographic breaks → hybrid PQC signatures
14. Reliability and Operational Behavior
-
stateless core where possible
-
durable stores for:
- consumed grants
- evidence ledger
- policy bundles
-
HA deployments with quorum and idempotent anchoring
-
controlled degradation:
- deny high risk on control-plane outage
- allow read-only / low-risk by policy class
15. Multi-Tenancy and Enterprise Governance
-
isolated keys and policy stores per tenant
-
per-tenant salting for commitments
-
roles:
- org admin
- policy maintainer
- security approver
- auditor (read-only)
- incident responder
16. Compliance and Auditability
Q-Trust enables:
- deterministic replay of decisions
- cryptographic evidence proofs
- external validation of audit integrity (on-chain)
- separation of duties via policy constraints
- formal “what policy was in effect at time T” through policy hash anchoring
17. Productization and Monetization
-
SaaS pricing by grants/month, agents, tenants, chains, audit epochs
-
enterprise add-ons:
- HSM
- advanced governance workflows
- auditor portal and export formats
- HA and DR
-
professional services:
- policy design
- bridge/oracle governance hardening
- supply chain posture upgrades
18. Roadmap (Engineering)
Phase 1: Core + CI + anchoring end-to-end Phase 2: IaC + K8s enforcement Phase 3: Web3 deploy/upgrade governance Phase 4: Vault + hybrid PQC signatures Phase 5: MLOps governance module Phase 6: Enterprise hardening, auditor portal, DR
19. Conclusion
Q-Trust Plane treats authorization as a cryptographic governance discipline, not a collection of scattered permissions. By enforcing short-lived context-bound grants, mandatory attestations, and on-chain anchored evidence, it offers a security posture suitable for the most dangerous domains: Web3 bridges, oracles, upgradeable contracts, and high-stakes production infra.
Appendix A — Canonical Encoding Rules (Summary)
- Normalize to CPR (Canonical Policy Representation).
- Sort object keys lexicographically.
- Normalize durations to seconds.
- Normalize timestamps to RFC3339 UTC.
- Encode boolean expressions as AST nodes.
- Apply domain separation prefixes before hashing.
- Hash with SHA-256 by default; chain adapter may additionally compute Keccak digests for EVM artifacts.
Appendix B — Reference Schemas (High-Level)
B.1 Authorization Request
- subject: issuer, claims, roles, workload identity
- resource: type, chain, network, identifiers
- action: string
- context: git metadata, pipeline metadata, environment metadata
- attestations: digests + verification results
B.2 Evidence Event
- event_id, timestamp
- request_digest, policy_hash, grant_digest
- execution_outputs (typed)
- prev_event_hash
- signatures (classic + pqc)
- anchor_epoch, merkle_leaf_hash
Appendix C — Policy Library (Starter Set)
- mainnet deploy gates
- proxy upgrade strict controls
- bridge signer rotation governance
- emergency pause procedures
- terraform production apply gates
- k8s admission restrictions for privileged pods
- secrets access leasing rules
- ml model deployment governance rules