{
  "schema": "covert-channel-lab/catalogue-v1",
  "date": "2026-09-18",
  "focus": "Air-gapped computers with nearby observers",
  "scope": "A broad inventory of channel families and related leakage paths, not an exhaustive classification of all possible physics.",
  "control_status": "Every control proposal is an engineering research obligation; a cited demonstration does not validate a mitigation.",
  "groups": {
    "digital": "Digital release and storage",
    "shared": "Shared computation and devices",
    "physical": "Nearby physical observations",
    "lifecycle": "Lifecycle and composition"
  },
  "sources": {
    "nist_definition": {
      "title": "NIST glossary: covert channel",
      "url": "https://csrc.nist.gov/glossary/term/covert_channel",
      "supports": "Terminology for unauthorized communication between cooperating entities."
    },
    "nist_controls": {
      "title": "NIST SP 800-53 Rev. 5: SC-31, PE-19, SI-11",
      "url": "https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-53r5.pdf",
      "supports": "Channel analysis, deployment-specific bandwidth assessment, physical leakage and error-message obligations."
    },
    "time_protection": {
      "title": "Ge et al.: Time Protection, the Missing OS Abstraction",
      "url": "https://arxiv.org/abs/1810.05345v2",
      "supports": "Time protection addresses shared microarchitectural state beyond memory access control."
    },
    "sel4": {
      "title": "seL4: What the proofs assume",
      "url": "https://sel4.systems/Verification/assumptions.html",
      "supports": "Confidentiality coverage is limited to modeled information channels; hardware and DMA assumptions remain explicit."
    },
    "smt": {
      "title": "Taram et al.: SecSMT (USENIX Security 2022)",
      "url": "https://www.usenix.org/system/files/sec22-taram.pdf",
      "supports": "Shared SMT pipeline resources can carry contention-based covert channels."
    },
    "gpu": {
      "title": "Naghibijouybari et al.: Rendered Insecure (CCS 2018)",
      "url": "https://www.cs.ucr.edu/~nael/pubs/ccs18.pdf",
      "supports": "GPU sharing, memory APIs, counters and timing provided demonstrated leakage paths on tested devices."
    },
    "traffic": {
      "title": "RFC 4303: IP Encapsulating Security Payload, section 2.7",
      "url": "https://www.rfc-editor.org/rfc/rfc4303.html#section-2.7",
      "supports": "Traffic-flow confidentiality needs consideration of lengths and traffic patterns in addition to encrypted content."
    },
    "airfi": {
      "title": "Guri: AIR-FI",
      "url": "https://arxiv.org/abs/2012.06884",
      "supports": "Demonstrated radio emissions from memory activity on air-gapped computers."
    },
    "magneto": {
      "title": "Guri et al.: MAGNETO",
      "url": "https://arxiv.org/abs/1802.02317",
      "supports": "Demonstrated CPU-generated magnetic signaling to nearby sensors."
    },
    "fans": {
      "title": "Guri et al.: Fansmitter",
      "url": "https://arxiv.org/abs/1606.05915",
      "supports": "Demonstrated acoustic signaling using fans on speakerless computers."
    },
    "optical": {
      "title": "Guri et al.: LED-it-GO",
      "url": "https://arxiv.org/abs/1702.06715",
      "supports": "Demonstrated optical signaling using storage activity indicators."
    },
    "power": {
      "title": "Guri et al.: PowerHammer",
      "url": "https://arxiv.org/abs/1804.04014",
      "supports": "Demonstrated conducted signaling through power lines."
    },
    "vibration": {
      "title": "Guri: AiR-ViBeR",
      "url": "https://arxiv.org/abs/2004.06195",
      "supports": "Demonstrated surface vibration signaling."
    },
    "thermal": {
      "title": "Guri et al.: BitWhisper",
      "url": "https://arxiv.org/abs/1503.07919",
      "supports": "Demonstrated thermal signaling between nearby compromised computers."
    },
    "remanence": {
      "title": "Halderman et al.: Lest We Remember (USENIX Security 2008)",
      "url": "https://www.usenix.org/legacy/event/sec08/tech/full_papers/halderman/halderman.pdf",
      "supports": "Memory remanence can outlive an operating session; this is related leakage, not itself a claim of covert collusion."
    },
    "lab": {
      "title": "This lab: explicit model and contracts",
      "url": "https://github.com/TheDarkLightX/CovertChannelLab/blob/b05c2228e4db08f243abb002af366c696a5ce51b/CONTRACTS.md",
      "supports": "The original digital and quantized-thermal assumptions, with limits stated explicitly."
    }
  },
  "channels": [
    {
      "id": "D01",
      "group": "digital",
      "title": "Output meaning and encoding",
      "kind": "covert carrier",
      "observation_path": "A worker chooses among externally distinguishable answers, file names, encodings or provenance.",
      "control_proposal": "Release one host-defined canonical authorized result through a trusted gate. Open-ended content needs a separate semantic policy.",
      "falsifier": "Two accepted outputs for the same authorized task reveal the worker-selected bit.",
      "lab_evidence": "Original abstract canonical-release proof; open-ended semantic selection remains outside it.",
      "deployment_qualified": false,
      "source_ids": [
        "lab"
      ]
    },
    {
      "id": "D02",
      "group": "digital",
      "title": "Timing, termination and retries",
      "kind": "covert carrier",
      "observation_path": "Completion, withholding, retransmission, failure or release order affects an observer.",
      "control_proposal": "Use a public schedule, total independent fallback and bounded admission. Include recovery and every downstream timestamp.",
      "falsifier": "Withholding or an invalid proposal changes a public release time or a failure flag.",
      "lab_evidence": "Original fixed-slot and total-fallback model; no real scheduler refinement.",
      "deployment_qualified": false,
      "source_ids": [
        "lab",
        "time_protection"
      ]
    },
    {
      "id": "D03",
      "group": "digital",
      "title": "Lengths, counts and traffic shape",
      "kind": "covert carrier",
      "observation_path": "Object sizes, export frequency, packet counts and intervals can encode information.",
      "control_proposal": "Fix public envelopes from authorized inputs; account for padding, dummy work, acknowledgments and external transport.",
      "falsifier": "Equal authorized results produce different externally visible sizes or counts.",
      "lab_evidence": "Unimplemented observation obligation; encryption alone does not settle it.",
      "deployment_qualified": false,
      "source_ids": [
        "traffic"
      ]
    },
    {
      "id": "D04",
      "group": "digital",
      "title": "Shared storage and metadata",
      "kind": "covert carrier",
      "observation_path": "File existence, free capacity, queues, locks or metadata connects two domains.",
      "control_proposal": "Remove cross-domain mutable namespaces or refine a trusted mediator for all visible state.",
      "falsifier": "A worker changes one shared metadata bit that another domain can read.",
      "lab_evidence": "A single abstract shared-state coordinate is modeled; real file systems are not.",
      "deployment_qualified": false,
      "source_ids": [
        "nist_definition",
        "sel4"
      ]
    },
    {
      "id": "D05",
      "group": "digital",
      "title": "Network, protocol and peripheral paths",
      "kind": "bypass and covert carrier",
      "observation_path": "Network interfaces, DNS, radios, USB or device protocols provide direct or indirect egress.",
      "control_proposal": "Enforce the air gap and device allowlist below the worker; mediate any intentional import or export.",
      "falsifier": "An unmediated path exists, or an allowed protocol field retains worker-controlled freedom.",
      "lab_evidence": "Original abstract egress flag only. Ordinary unauthorized egress is also inventoried.",
      "deployment_qualified": false,
      "source_ids": [
        "lab",
        "nist_definition"
      ]
    },
    {
      "id": "D06",
      "group": "digital",
      "title": "Logs, errors, telemetry and billing",
      "kind": "covert carrier",
      "observation_path": "Diagnostics, counters, alerts and management summaries become public messages.",
      "control_proposal": "Keep raw diagnostics within the trusted domain; release only scheduled, policy-defined summaries with their own observation proof.",
      "falsifier": "A log field or visible alert varies with a private worker choice.",
      "lab_evidence": "Research obligation; publication logging is not a runtime security implementation.",
      "deployment_qualified": false,
      "source_ids": [
        "nist_controls"
      ]
    },
    {
      "id": "S01",
      "group": "shared",
      "title": "CPU caches, TLBs and prediction state",
      "kind": "side-channel and covert carrier",
      "observation_path": "Shared or retained microarchitectural state changes another computation or its timing.",
      "control_proposal": "Use dedicated domains or hardware-specific time protection; verify partitioning, flushing and residual state coverage.",
      "falsifier": "A competing or subsequent task distinguishes private activity despite process isolation.",
      "lab_evidence": "Literature establishes the class; no tested hardware configuration is provided here.",
      "deployment_qualified": false,
      "source_ids": [
        "time_protection",
        "sel4"
      ]
    },
    {
      "id": "S02",
      "group": "shared",
      "title": "SMT, execution units and scheduling",
      "kind": "covert carrier",
      "observation_path": "Contention over pipelines, execution ports or scheduling budgets changes service to another domain.",
      "control_proposal": "Avoid cross-domain SMT and unqualified dynamic sharing; include the entire scheduler and shared fabric in the contract.",
      "falsifier": "A co-resident task distinguishes two private workload patterns.",
      "lab_evidence": "No processor-specific contention or scheduler certificate in this lab.",
      "deployment_qualified": false,
      "source_ids": [
        "smt"
      ]
    },
    {
      "id": "S03",
      "group": "shared",
      "title": "GPUs and accelerators",
      "kind": "side-channel and covert carrier",
      "observation_path": "Shared accelerator memory, execution resources, counters and runtime state connect workloads.",
      "control_proposal": "Assign an entire qualified device or prove device-specific partitioning and reset; restrict counter and management exposure.",
      "falsifier": "A second workload or later session distinguishes another job through an exposed GPU resource.",
      "lab_evidence": "Published attacks motivate review; current device and driver behavior must be checked separately.",
      "deployment_qualified": false,
      "source_ids": [
        "gpu"
      ]
    },
    {
      "id": "S04",
      "group": "shared",
      "title": "Memory buses, I/O queues and DMA",
      "kind": "side-channel and covert carrier",
      "observation_path": "Memory traffic, device queues, interrupts and transfers expose contention or writable state.",
      "control_proposal": "Separate resources or verify end-to-end arbitration, IOMMU/DMA behavior, device firmware and completion timing.",
      "falsifier": "A receiver observes a queue delay or transfer state affected by the worker.",
      "lab_evidence": "Trusted-device and hardware assumptions remain unvalidated.",
      "deployment_qualified": false,
      "source_ids": [
        "time_protection",
        "sel4"
      ]
    },
    {
      "id": "P01",
      "group": "physical",
      "title": "Radio-frequency and electromagnetic emissions",
      "kind": "covert carrier",
      "observation_path": "A nearby independent receiver measures emissions from workload-driven electrical activity.",
      "control_proposal": "Engineer an emissions boundary with frequency-specific attenuation and qualified penetrations; constrain and validate receiver positions.",
      "falsifier": "A permitted receiver distinguishes workloads outside the enclosure.",
      "lab_evidence": "AIR-FI is a channel demonstration; this lab has no emissions measurements.",
      "deployment_qualified": false,
      "source_ids": [
        "airfi"
      ]
    },
    {
      "id": "P02",
      "group": "physical",
      "title": "Low-frequency magnetic fields",
      "kind": "covert carrier",
      "observation_path": "A nearby magnetometer observes workload-dependent magnetic fields.",
      "control_proposal": "Analyze low-frequency magnetic coupling separately from RF shielding, including enclosure materials and permitted proximity.",
      "falsifier": "A permitted magnetic sensor distinguishes two worker loads.",
      "lab_evidence": "MAGNETO motivates a separate obligation; an RF enclosure label is insufficient evidence.",
      "deployment_qualified": false,
      "source_ids": [
        "magneto"
      ]
    },
    {
      "id": "P03",
      "group": "physical",
      "title": "Acoustic and ultrasonic emissions",
      "kind": "covert carrier",
      "observation_path": "Microphones observe speakers, fans or other electromechanical sound.",
      "control_proposal": "Remove unneeded transducers; qualify acoustic treatment and trusted actuation across the allowed sensor bandwidth.",
      "falsifier": "A nearby microphone distinguishes workloads even with speakers removed.",
      "lab_evidence": "Fansmitter supplies a demonstrated fan channel; no acoustic barrier is measured here.",
      "deployment_qualified": false,
      "source_ids": [
        "fans"
      ]
    },
    {
      "id": "P04",
      "group": "physical",
      "title": "Visible and infrared light",
      "kind": "covert carrier",
      "observation_path": "A camera or optical sensor sees displays, indicator activity or a path through an opening.",
      "control_proposal": "Remove worker-controlled indicators and displays; use an opaque qualified boundary and inspect optical paths and feedthroughs.",
      "falsifier": "A permitted optical receiver distinguishes workload-dependent emitted light.",
      "lab_evidence": "LED-it-GO demonstrates an indicator path; proposed infrared review extends the observer inventory.",
      "deployment_qualified": false,
      "source_ids": [
        "optical"
      ]
    },
    {
      "id": "P05",
      "group": "physical",
      "title": "Conducted power and shared electrical infrastructure",
      "kind": "covert carrier",
      "observation_path": "A receiver on shared supply infrastructure observes workload-dependent electrical behavior.",
      "control_proposal": "Evaluate engineered power isolation, filtering and load regulation against the specified measurement points. A separate outlet is not a certificate.",
      "falsifier": "A permitted supply-side measurement distinguishes workload patterns.",
      "lab_evidence": "PowerHammer demonstrates a conducted channel; no supply boundary is qualified here.",
      "deployment_qualified": false,
      "source_ids": [
        "power"
      ]
    },
    {
      "id": "P06",
      "group": "physical",
      "title": "Mechanical vibration and shared surfaces",
      "kind": "covert carrier",
      "observation_path": "Nearby devices sense vibrations transmitted through desks, racks or building structure.",
      "control_proposal": "Account for mechanical coupling and trusted moving components; qualify mounting and isolation under the stated observer model.",
      "falsifier": "A permitted sensor on a shared surface distinguishes private activity.",
      "lab_evidence": "AiR-ViBeR demonstrates this class; no mounting design is tested here.",
      "deployment_qualified": false,
      "source_ids": [
        "vibration"
      ]
    },
    {
      "id": "P07",
      "group": "physical",
      "title": "Heat, airflow and cooling behavior",
      "kind": "covert carrier",
      "observation_path": "Nearby instruments read raw temperature, exhaust, fan behavior or thermal effects on another device.",
      "control_proposal": "Bound and qualify external thermal behavior, initialization, aggregate load and cooldown. Receiver-owned instruments cannot be virtualized by the sender.",
      "falsifier": "Hot and quiet allowed workloads yield distinguishable external readings.",
      "lab_evidence": "Earlier s=7,r=2 theorem protects a mediated quantizer only; it does not protect this raw observer.",
      "deployment_qualified": false,
      "source_ids": [
        "thermal",
        "lab"
      ]
    },
    {
      "id": "L01",
      "group": "lifecycle",
      "title": "Remanence and cross-session state",
      "kind": "related leakage and storage carrier",
      "observation_path": "Residual memory, media, firmware, caches or learned state connect sessions.",
      "control_proposal": "Define every persistent state owner and verified sanitization or restoration step, including hardware and model state.",
      "falsifier": "A later permitted session observes a bit written during a prior private session.",
      "lab_evidence": "No lifecycle reset proof. Cold-boot research illustrates why software restart is not an erasure guarantee.",
      "deployment_qualified": false,
      "source_ids": [
        "remanence"
      ]
    },
    {
      "id": "L02",
      "group": "lifecycle",
      "title": "Management, maintenance and operators",
      "kind": "assurance boundary and bypass",
      "observation_path": "Controllers, firmware updates, service interfaces or human-visible procedures cross the boundary.",
      "control_proposal": "Minimize and separately authorize management; include its outputs, maintenance media and operator-visible workflow in the transcript.",
      "falsifier": "A service interface or visible maintenance response depends on a worker-controlled event.",
      "lab_evidence": "Proposed threat-model obligation, not a proved operational protocol.",
      "deployment_qualified": false,
      "source_ids": [
        "lab",
        "sel4"
      ]
    },
    {
      "id": "L03",
      "group": "lifecycle",
      "title": "Joint observations and colluding receivers",
      "kind": "composition obligation",
      "observation_path": "Receivers combine several individually innocuous signals, or several workers combine actuation.",
      "control_proposal": "Prove joint trace independence for the full coalition and aggregate loads; model adaptive observations across time.",
      "falsifier": "Two uniform individual signals reveal a secret when paired.",
      "lab_evidence": "New exact two-bit counterexample in channel_checks.py.",
      "deployment_qualified": false,
      "source_ids": [
        "lab"
      ]
    },
    {
      "id": "L04",
      "group": "lifecycle",
      "title": "Faults, alarms, resets and availability",
      "kind": "covert carrier and assurance boundary",
      "observation_path": "Selective crashes, shutdowns, failed checks and recovery produce visible differences.",
      "control_proposal": "Model failure outputs and deadlines. Preserve required safety behavior while including its observability in the contract.",
      "falsifier": "An adversary selects whether a public alarm or recovery event occurs.",
      "lab_evidence": "Fallback proof assumes the total reference result is available; physical fault handling is not verified.",
      "deployment_qualified": false,
      "source_ids": [
        "lab",
        "nist_controls"
      ]
    }
  ]
}
