| # SOC 2 Type II β CC6 Logical Access Control Mapping |
| ## ProofBridge Liner Β· Institution-Grade Circuit Breaker |
|
|
| **Document version:** 1.0 |
| **Date:** 2026-05-01 |
| **Scope:** `contracts/AssetRegistry.sol`, `contracts/TEEVerifier.sol`, |
| `contracts/CircuitBreaker.sol`, `proofs/SafetyKernel.v` |
|
|
| --- |
|
|
| ## CC6 Control Objective |
|
|
| > The entity implements logical access security software, infrastructure, |
| > and architectures over protected information assets to protect them from |
| > security events to meet the entity's objectives. |
|
|
| --- |
|
|
| ## CC6.1 β Logical Access Security Measures |
|
|
| | Control Criterion | ProofBridge Implementation | Evidence Artifact | |
| |---|---|---| |
| | Access to protected information is restricted to authorized users. | `AssetRegistry.onlyOwner` modifier gates all administrative writes. Non-owners receive `"AR: not owner"` revert. | `contracts/AssetRegistry.sol` L48β51 | |
| | User identification and authentication is required prior to granting access. | TEEVerifier enforces EIP-191 ECDSA signature from the registered enclave before any kernel state change. Unsigned or mis-signed calls revert with `"TEE: INVALID_ATTESTATION"`. | `contracts/TEEVerifier.sol` L68β76 | |
| | Access is granted consistent with job responsibilities. | Three distinct roles: `owner` (admin), `authorizedResetter` (per-asset reset only), enclave (check writes only). No role can exceed its surface. | `contracts/AssetRegistry.sol` L130β137 | |
| | Access to protected assets is removed when no longer required. | `transferOwnership()` atomically revokes the prior owner. Per-asset `authorizedResetter` is set to `address(0)` to revoke. | `contracts/AssetRegistry.sol` L193β198 | |
|
|
| --- |
|
|
| ## CC6.2 β Prior to Issuing Credentials |
|
|
| | Control Criterion | ProofBridge Implementation | Evidence Artifact | |
| |---|---|---| |
| | Credentials are issued only after identity is established. | Enclave address is set once at deploy-time via immutable `enclavePublicKey`. Cannot be changed post-deployment, preventing credential substitution. | `contracts/TEEVerifier.sol` L40β41 | |
| | Credentials are not transmitted in clear text. | All authentication is via on-chain ECDSA signature verification. Private keys never appear in contract storage or calldata. | `contracts/TEEVerifier.sol` L86β106 | |
|
|
| --- |
|
|
| ## CC6.3 β Role-Based Access |
|
|
| | Role | Capabilities | Contract Enforcement | |
| |---|---|---| |
| | `owner` | Register assets, set thresholds, reset any kernel, transfer ownership | `onlyOwner` modifier on `registerAsset`, `setThreshold`, `transferOwnership`, `reset` | |
| | `authorizedResetter` | Reset one specific asset's kernel only | `reset()` checks `msg.sender == k.authorizedResetter` | |
| | `enclave` (TEEVerifier) | Advance kernel state via `check()` only | TEEVerifier is the only caller; signature checked before `kernel.check()` | |
| | Any address | Read `isOpen()`, call `assertOpen()` | View functions β no state modification possible | |
|
|
| --- |
|
|
| ## CC6.6 β Boundary Protection |
|
|
| | Control Criterion | ProofBridge Implementation | Evidence Artifact | |
| |---|---|---| |
| | Logical boundaries protect information assets. | Each asset has a fully isolated `KernelState` struct. A halt in one asset cannot affect another (`mapping(bytes32 => KernelState)`). | `contracts/AssetRegistry.sol` L34, L90β102 | |
| | Boundary protection mechanisms are in place. | The `assertOpen(assetId)` hook reverts token transfers when the kernel is HALTED, enforcing the boundary at the EVM level. | `contracts/AssetRegistry.sol` L155β161 | |
| | Boundary protections are monitored. | `KernelTripped`, `KernelReset`, `AssetRegistered`, `AttestationVerified` events provide immutable audit trail on-chain. | All contracts, Events sections | |
|
|
| --- |
|
|
| ## CC6.7 β Transmission Integrity |
|
|
| | Control Criterion | ProofBridge Implementation | Evidence Artifact | |
| |---|---|---| |
| | Data is protected during transmission. | All oracle/TEE data is authenticated via ECDSA before it can modify state. Replayed or tampered payloads are rejected. | `contracts/TEEVerifier.sol` L68β76 | |
| | Cryptographic mechanisms protect transmission integrity. | `keccak256(abi.encodePacked(docHash, posterior, threshold))` binds all three fields together. Changing any single field invalidates the signature. | `contracts/TEEVerifier.sol` L63β65 | |
|
|
| --- |
|
|
| ## CC6.8 β Malicious Software Prevention |
|
|
| | Control Criterion | ProofBridge Implementation | Evidence Artifact | |
| |---|---|---| |
| | Malicious software is prevented from being introduced. | Smart contracts are immutable after deployment. No `delegatecall`, no upgradeable proxy, no `selfdestruct` in CircuitBreaker or AssetRegistry. | `contracts/CircuitBreaker.sol`, `contracts/AssetRegistry.sol` | |
| | Formal verification confirms absence of unauthorized state transitions. | Coq proof (`proofs/SafetyKernel.v`) provides machine-checked guarantee that UNAUTH actors cannot reset HALTED state. TLA+ model (`proofs/SafetyKernel.tla`) confirms no deadlocks. | `proofs/SafetyKernel.v`, `proofs/SafetyKernel.tla` | |
|
|
| --- |
|
|
| ## Gas Analysis (DoS Prevention) |
|
|
| The following confirms `O(1)` execution with no unbounded loops: |
|
|
| | Function | Gas bound | Notes | |
| |---|---|---| |
| | `check(assetId, posterior)` | ~5,000 gas | Single mapping read + conditional SSTORE | |
| | `assertOpen(assetId)` | ~2,200 gas | Single mapping read + require | |
| | `reset(assetId)` | ~7,500 gas | Two SSTOREs + event emit | |
| | `registerAsset(...)` | ~65,000 gas | Struct SSTORE (first-time cold write) | |
|
|
| All hot-path functions (`check`, `assertOpen`) are O(1) and bounded, |
| preventing Denial-of-Service via gas exhaustion. |
|
|
| --- |
|
|
| ## Summary Matrix |
|
|
| | SOC 2 CC | Status | Key Control | |
| |---|---|---| |
| | CC6.1 | β
Implemented | `onlyOwner` + EIP-191 TEE attestation | |
| | CC6.2 | β
Implemented | Immutable enclave key, ECDSA-only auth | |
| | CC6.3 | β
Implemented | Three-role access model | |
| | CC6.6 | β
Implemented | Per-asset kernel isolation | |
| | CC6.7 | β
Implemented | ECDSA-bound payload integrity | |
| | CC6.8 | β
Implemented | Immutable contracts + Coq + TLA+ proofs | |
|
|
| --- |
|
|
| *This document is intended as evidence for SOC 2 Type II audit preparation. |
| Final audit opinion is the sole responsibility of the appointed CPA firm.* |
|
|