SC-31(2): Maximum Bandwidth
SC-31(2) requires you to identify any covert channels in your environment (storage and/or timing) and then enforce technical limits that cap the maximum amount of data those channels can leak (“maximum bandwidth”) to defined values. To operationalize it, you need an inventory of plausible covert channels, documented bandwidth thresholds, implemented mitigations, and recurring verification evidence tied to system risk.
Key takeaways:
- You must first identify covert storage/timing channels before you can cap their bandwidth.
- Auditors will look for defined “values,” technical enforcement, and repeatable testing evidence, not policy statements.
- Treat this as an engineering control with compliance governance: ownership, exceptions, and continuous validation.
SC-31(2): Maximum Bandwidth is a NIST SP 800-53 Rev. 5 control enhancement that pushes your program beyond generic “prevent data exfiltration” language into a measurable outcome: reduce the effective data rate of covert channels to predefined limits. Covert channels matter in high-assurance and regulated environments because they bypass intended access controls and monitoring by abusing shared resources (storage channels) or measurable timing behavior (timing channels).
For a Compliance Officer, CCO, or GRC lead, the fastest path to execution is to treat SC-31(2) as a short lifecycle: (1) scope systems where covert-channel risk is credible, (2) enumerate likely channels and their pre-mitigation capacity, (3) set explicit “maximum bandwidth” values based on risk and system constraints, (4) implement technical mitigations that enforce those values, and (5) retain evidence that shows the limits hold over time.
This page gives requirement-level implementation guidance: who owns what, what to configure, how to document “values,” what artifacts exams ask for, and how to avoid common failures (like defining values with no measurement plan). Source references are limited to the NIST SP 800-53 Rev. 5 materials provided.
Regulatory text
Requirement (verbatim): “Reduce the maximum bandwidth for identified covert [one or more of: storage; timing] channels to [values].” 1
What the operator must do:
- Identify covert channels that exist or are plausible in your system (storage channels, timing channels, or both).
- Define explicit maximum bandwidth values for those channels (the “[values]” placeholder must be filled with your organization’s thresholds).
- Implement controls that reduce and cap the channel bandwidth so the channel cannot exceed the defined values under expected operating conditions.
- Demonstrate the cap holds with repeatable verification and retained evidence.
This control enhancement sits within NIST SP 800-53 Rev. 5 2. The key operational point is that the requirement is measurable: if you cannot explain your bandwidth values, how you enforced them, and how you validated them, you do not have a defensible implementation.
Plain-English interpretation (what SC-31(2) really means)
You are required to limit how much information can be secretly transmitted through non-approved paths inside your systems. These paths can be:
- Covert storage channels: hiding information in shared storage locations, metadata, resource states, caches, logs, file attributes, queue depths, etc.
- Covert timing channels: encoding information by manipulating the timing of operations (response times, scheduling, CPU contention, network jitter patterns, lock contention).
“Maximum bandwidth” means the data rate of the covert channel. The control expects you to make that rate low enough (based on your defined values) so the channel becomes impractical, detectable, or acceptably bounded for your risk model.
Who it applies to (entity + operational context)
This control is most relevant where you have:
- Federal information systems or systems aligned to NIST SP 800-53 Rev. 5 requirements 3.
- Contractor systems handling federal data where NIST SP 800-53 controls are contractually flowed down or used as a baseline 3.
Operationally, SC-31(2) usually lands on systems with:
- Multi-tenant or multi-user execution, where shared compute/storage creates covert paths.
- High confidentiality workloads (regulated data, sensitive mission data).
- Strong isolation requirements (segmented enclaves, cross-domain patterns, restricted admin models).
If you run typical enterprise SaaS with strong logical controls but without high-assurance isolation needs, you may still scope SC-31(2) for specific components (e.g., shared worker pools, shared caches, noisy-neighbor risks), but you should document scoping decisions and rationale.
What you actually need to do (step-by-step)
The execution model below is written so you can assign owners and produce audit-ready artifacts quickly.
Step 1: Assign ownership and create a control card (governance you can run)
Create a one-page “control card” for SC-31(2) with:
- Control objective: cap covert-channel bandwidth to defined values.
- Owner: security architecture + platform engineering (implementation), GRC (oversight).
- In-scope systems: list by system boundary.
- Trigger events: major architecture changes, new multi-tenant component, new hypervisor/container runtime, new cross-domain interface.
- Cadence: run health checks on a defined schedule aligned to system change velocity.
- Exceptions: what qualifies, who approves, time limits, compensating controls.
This closes a common audit gap: teams can’t show who runs the control or when.
Step 2: Identify covert channels (make it concrete, not theoretical)
For each in-scope system, run a structured identification exercise:
- Architectural review: shared resources (CPU, memory, caches, disk, message queues, rate limiters), IPC mechanisms, shared logs, shared temp storage, shared DB connections.
- Threat modeling prompt: “If an untrusted process/tenant could influence a shared state or timing, what could another tenant observe?”
- Dependency review: hypervisor, container runtime, service mesh, load balancers, shared caches (e.g., Redis), shared object storage patterns, CI/CD runners.
Output artifact: Covert Channel Register with fields:
- Channel type (storage/timing)
- Channel description and preconditions
- Affected components
- Likely sender/receiver roles
- Candidate measurement approach
- Proposed mitigation(s)
- Assigned maximum bandwidth value (once set)
Step 3: Define your “[values]” (set bandwidth caps you can defend)
NIST leaves “[values]” open. Your job is to set defensible thresholds per channel or per channel class. Do it with a short decision workflow:
A. Choose the unit and measurement approach
- Timing channels: bits per second estimated from observable timing variance or request/response modulation.
- Storage channels: bits per event, bits per shared-state update, or bits per time window (depending on mechanism).
B. Tie values to impact
- If the channel could expose regulated or classified data, set a stricter cap and require stronger mitigations.
- If the channel only enables low-sensitivity signaling, your cap can be higher, but you still need rationale.
C. Document the rationale Auditors rarely argue with the number if you can show:
- how you derived it,
- why it is achievable,
- how you verify it,
- what happens when it fails.
Output artifact: Bandwidth Threshold Standard 1 and approvals.
Step 4: Implement mitigations that actually reduce bandwidth
Pick mitigations that map to the channel type. Examples (adapt to your environment):
For covert timing channels
- Reduce timing resolution exposed to untrusted parties (coarse timers, jitter injection where appropriate).
- Add rate limiting and request scheduling controls to prevent precise modulation.
- Partition workloads to reduce shared contention (dedicated pools for high-risk tenants/processes).
- Stabilize response behavior (constant-time patterns for sensitive operations where feasible).
For covert storage channels
- Remove or isolate shared writable state across trust boundaries.
- Enforce strict per-tenant namespaces and access controls for caches, queues, temp storage.
- Normalize or scrub metadata that can be used for signaling (where applicable).
- Constrain resource quotas (disk, queue depth, cache keys) to limit signaling capacity.
Output artifacts: configuration baselines, architecture decision records, change tickets, and implementation diffs.
Step 5: Validate bandwidth caps (verification that stands up in an exam)
You need a verification approach appropriate to the channel:
- Test design: create a repeatable test that attempts to transmit information via the suspected covert mechanism and measures achieved throughput.
- Acceptance criteria: achieved throughput must be at or below your defined maximum value.
- Negative tests: demonstrate that removing the mitigation increases throughput (only in non-production test environments).
If building measurement from scratch is hard, start with a risk-based approach:
- validate the highest-risk channels first,
- document why lower-risk channels rely on design constraints and periodic review.
Output artifacts: test procedures, test results, and sign-off.
Step 6: Operationalize: continuous control health checks
Run control health checks tied to change:
- new shared infrastructure services,
- scaling events that change tenancy mix,
- runtime upgrades,
- config drift.
Track findings to closure with owners and due dates.
Step 7: Manage third parties (where covert channels cross your boundary)
If your system depends on third-party components that affect isolation (cloud, hypervisor, managed Kubernetes, shared CI runners):
- require documentation of isolation controls and configuration options,
- capture your shared responsibility assumptions,
- define how you validate the parts you control.
Daydream can help here by turning SC-31(2) into a requirement runbook with mapped owners, change triggers, and an evidence checklist, so your program doesn’t stall at “we have a policy.”
Required evidence and artifacts to retain
Keep an evidence bundle that proves design, implementation, and ongoing operation:
- SC-31(2) control card (owner, scope, cadence, exceptions)
- System scope statement (what systems are in/out and why)
- Covert Channel Register (identified channels, type, status, mitigations)
- Bandwidth Threshold Standard with approvals (“[values]” filled in)
- Architecture/engineering artifacts
- architecture diagrams showing trust boundaries and shared resources
- configuration baselines (rate limits, isolation settings, partitioning)
- change records for mitigation deployment
- Verification package
- test plan and procedures
- test results and logs
- remediation tickets for failures and retest evidence
- Exception records
- risk acceptance memo
- compensating controls
- expiration date and review notes (if you set one)
Common exam/audit questions and hangups
Auditors and assessors tend to focus on four friction points:
- “What are your covert channels?” If you cannot name them, you likely did not perform identification.
- “Where are the values?” “[values]” must be explicit, approved, and tied to channels or classes of channels.
- “Show me enforcement.” They will ask for configs, code, architecture changes, or runtime constraints that cap bandwidth.
- “How do you know it works today?” Expect requests for recent test results or control health check outputs tied to change events.
Frequent implementation mistakes (and how to avoid them)
| Mistake | Why it fails | Fix |
|---|---|---|
| Defining bandwidth values but never measuring | You can’t show the cap holds | Build a minimal test harness for high-risk channels; document method and results |
| Treating SC-31(2) as a policy statement | No technical enforcement | Map each channel to a concrete mitigation and configuration baseline |
| One-time analysis with no change triggers | Covert channels reappear with new infrastructure | Tie reviews to architectural changes and shared-service introductions |
| Over-scoping everything | Teams stall under analysis paralysis | Start with systems that have multi-tenant execution or strict isolation requirements |
| No exception path | Engineering bypasses the control informally | Formalize exceptions with approvals and compensating controls |
Enforcement context and risk implications
No public enforcement cases were provided in the source catalog for SC-31(2), so this page does not cite specific actions. Practically, the risk is audit and mission impact: covert channels can undermine confidentiality controls that otherwise look strong on paper, and assessors may treat missing “[values]” and missing validation as a control design failure under NIST-based assessments 3.
Practical execution plan (30/60/90-day)
Time-boxing helps, but avoid treating the calendar as evidence. Use these phases as operational milestones.
First 30 days (Immediate)
- Assign SC-31(2) control owner(s) and publish the control card.
- Confirm in-scope systems and document boundaries.
- Build the first version of the Covert Channel Register from architecture review and threat modeling workshops.
- Choose measurement approaches per channel class and draft the Bandwidth Threshold Standard for approval.
Next 60 days (Near-term)
- Implement mitigations for the highest-risk channels (shared caches, shared worker pools, shared temp storage, high-resolution timing exposure).
- Create baseline configurations and put them under change control.
- Build or adapt test procedures to estimate covert channel throughput for prioritized channels.
- Run first validation cycle and track remediation items to closure.
By 90 days (Operationalized)
- Expand coverage to remaining in-scope channels or justify exclusions with documented rationale.
- Bake checks into engineering workflows (architecture review gates, config drift checks, change triggers).
- Run a second validation cycle to demonstrate repeatability.
- Finalize evidence retention locations and prepare an assessor-ready evidence pack.
Frequently Asked Questions
Do we have to address both storage and timing channels?
The text allows “one or more of: storage; timing,” so scope depends on what you identify in your environment 1. If you only address one type, document why the other is not credible for the in-scope system boundary.
What should we put for the “[values]” if we don’t have a mature measurement program?
Set provisional values with a documented measurement plan and a defined review trigger tied to system change. Then prioritize building measurement for the highest-risk channels so you can replace provisional values with tested thresholds.
Is SC-31(2) the same as standard DLP or egress filtering?
No. DLP and egress filtering target overt channels (approved paths used improperly). SC-31(2) targets covert channels that use shared state or timing behavior to transmit information outside intended mechanisms 1.
How do auditors evaluate “maximum bandwidth” if it’s hard to compute precisely?
They look for a defensible method: identification, defined thresholds, technical controls that constrain the channel, and repeatable validation results. If precision is limited, show conservative assumptions and a plan to improve measurement fidelity.
Can we meet SC-31(2) through architecture alone (strong isolation) without explicit bandwidth tests?
Sometimes, but you need to document the architectural properties that remove or tightly constrain shared resources across trust boundaries. Expect follow-up questions on how you verify that those properties remain true after changes.
Where does Daydream fit if we’re trying to move fast?
Use Daydream to standardize the SC-31(2) control card, route approvals for “[values],” and generate an evidence checklist per validation cycle so engineering outputs land in an audit-ready package instead of scattered tickets and docs.
Footnotes
Frequently Asked Questions
Do we have to address both storage and timing channels?
The text allows “one or more of: storage; timing,” so scope depends on what you identify in your environment (Source: NIST SP 800-53 Rev. 5 OSCAL JSON). If you only address one type, document why the other is not credible for the in-scope system boundary.
What should we put for the “[values]” if we don’t have a mature measurement program?
Set provisional values with a documented measurement plan and a defined review trigger tied to system change. Then prioritize building measurement for the highest-risk channels so you can replace provisional values with tested thresholds.
Is SC-31(2) the same as standard DLP or egress filtering?
No. DLP and egress filtering target overt channels (approved paths used improperly). SC-31(2) targets covert channels that use shared state or timing behavior to transmit information outside intended mechanisms (Source: NIST SP 800-53 Rev. 5 OSCAL JSON).
How do auditors evaluate “maximum bandwidth” if it’s hard to compute precisely?
They look for a defensible method: identification, defined thresholds, technical controls that constrain the channel, and repeatable validation results. If precision is limited, show conservative assumptions and a plan to improve measurement fidelity.
Can we meet SC-31(2) through architecture alone (strong isolation) without explicit bandwidth tests?
Sometimes, but you need to document the architectural properties that remove or tightly constrain shared resources across trust boundaries. Expect follow-up questions on how you verify that those properties remain true after changes.
Where does Daydream fit if we’re trying to move fast?
Use Daydream to standardize the SC-31(2) control card, route approvals for “[values],” and generate an evidence checklist per validation cycle so engineering outputs land in an audit-ready package instead of scattered tickets and docs.
Authoritative Sources
Operationalize this requirement
Map requirement text to controls, owners, evidence, and review workflows inside Daydream.
See Daydream