SOC 2 Trust Services — Security (Common Criteria) readiness view
This page is generated from the requirement table the AiSSAY engine ships for this framework. When the engine produces an evidence pack, each row below gets a status computed from the operator's own records at that moment. This page shows the table, not anyone's results.
Informational mapping prepared by the operator's own tooling. Not a legal opinion, not a certification, and not a substitute for advice of counsel. It organizes the operator's records against the cited requirements; whether those records satisfy the requirements is a determination for the operator, counsel, and the examiner.
SOC 2 is an attestation of ORGANIZATIONAL controls operating over time, issued by a CPA firm. Code cannot be SOC 2; this view shows which criteria the shipped mechanisms evidence and which require organizational controls no software supplies.
The requirement table
12 rows: 7 mechanism, 3 organizational, 1 named gap, 1 computed
| Requirement | Mechanism, duty or gap | Type |
|---|---|---|
| CC3.x — risk assessment process | organizational: documented risk assessment; the failure taxonomy and drift reports are inputs to it, not substitutes for it | organizational |
| CC6.1(c) — attribution of access to identified individuals | PARTIAL. Every read is logged with an actor, a reason and a chain position, but the actor is self-asserted unless the reader supplies an identity key — the log records who someone SAID they were. Signed attribution is available and its use is visible in the evidence block below; where entries are self-asserted the pack says so rather than presenting a name as an identification. | mechanism |
| CC6.1 — logical access restricted to authorized users | DELEGATED when the store is sealed by your key manager (the kms provider): whoever your key manager refuses cannot open the store at all, and every open appears in your key manager's own audit log. This store itself has no authentication, roles or permissions and refuses no read: once a key is unwrapped, the process holding it can read every record. Under any other provider, NOT IMPLEMENTED — the operating system's file permissions are the only access control. The status is computed from the provider this store declares, not assumed. | computed |
| CC6.1(b) — access authorization and periodic review | organizational: who may hold a store, and the periodic review of that list, are decisions no software makes | organizational |
| CC6.6 — protection of data at rest | per-record AES-256-GCM under a store master key; split custody available; cryptographic deletion | mechanism |
| CC7.2 — monitoring for anomalies and security events | chain and access-log verification, external anchor checks, injection detection on every run | mechanism |
| CC7.3/7.4 — evaluation and response to security events | capture-gap sealing, fork detection and signed acknowledgement, high-severity findings flagged for named review | mechanism |
| CC8.1 — change management | VERSION-stamped releases, per-fix pinned tests, and the signed instrument-profile ledger for every learned change to judgment | mechanism |
| A1.2 (Availability) — backup and recovery | ledger restoration from the external witness and fork-vs-rewrite diagnosis exist as mechanisms; a documented backup schedule is organizational | organizational |
| CC6.7 — cryptographic key management over time | re-key ceremony: a successor key is sealed through the same provider, every record is moved under it with each record declaring its key, and the old key is destroyed only after every record reads back under the new one; grants and custody shares of the retired key open nothing afterwards. Rotating the key manager's own wrapping key is the key manager's. LIMIT: anyone holding both the old key and an old copy of the ciphertext can still read that copy. | mechanism |
| CC4.1 — independent evaluation of controls | NOT IMPLEMENTED. No penetration test, no third-party review of the cryptographic design, no external audit of any kind. Every assurance in this pack is the operator's own tooling describing itself, which is exactly the class of claim this product exists to treat sceptically. | named gap |
| C1.1 (Confidentiality) — confidential information protected | minimization before storage (PII scrubbed pre-seal), encryption at rest, access logging of every read with reason | mechanism |
How a status is earned
- Evidenced
- a deterministic check ran against your records and the counts support the row. A store holding no relevant records reads unevidenced — a true statement, not a passing one. Empty never counts as clean.
- Delegated
- the mechanism is enforced by a system you already trust — a store sealed by your own key manager delegates access control to it, and the pack says the enforcing log is your key manager's, not ours. The pack names the endpoint the key manager was reached at. An AWS endpoint other than AWS's own default for the region reads delegated to that endpoint, with a request that you confirm it is your key management service. One backend — AWS KMS — has run against the real AWS KMS service; no other backend has.
- Test seam
- sealed by an in-process test backend — a stub, or a stand-in for the AWS client — and the status names which. No key manager enforces access. The seam is built and tested, and the pack refuses to call that delegation.
- Partially evidenced
- the mechanism is built and some of your runs carry its evidence, but not all — usually because they were sealed before the mechanism existed. The pack says how many runs are in each group, and never counts the missing ones as passing.
- Organizational
- the requirement is a procedure only people can perform. The pack names it as yours instead of dressing a policy up as a mechanism.
- Named gap
- the pack cannot evidence it — either the mechanism is not built, or no software can supply it — and it says which. The gap is printed, because a reviewer should read it here rather than discover it.
No status is typed in by hand: every status is recomputed from the store each time a pack is produced, the requirement and mechanism text is written and reviewed as part of the engine, and the dependency evidence comes from our release scan. A failing mechanism can never be read as evidence that the control works.
Rows marked “computed” are the access-control rows. Their status is computed from the provider your store declares: a gap unless your key manager seals the store, “test seam” under a stub or stand-in backend, “delegated” only under a real one. Today they can never read evidenced, and marking them as a built mechanism would overstate them.