Q-INTERCEPT · WHITEPAPER

Security Posture

On-prem audit, customer-typed consent, methodology-hashed reports.
Version1.3.1
Published2026-09-17
AuthorsQ-Intercept Engineering
Reviewed byNot yet reviewed — no technical advisor seated
Methodology1.0.0-draft · sha256:5586bedd2057b6ea2dc094591d692b2418a22df66299328f49c6e6d7ab6e89cd

ABSTRACT

The Quantum Audit CLI runs entirely inside the customer's firewall, reads scheduler logs locally, generates a PDF report on the head node, and never opens a network connection. The only artifact designed to cross the trust boundary is a sanitized JSON manifest, written to a local file only after the customer types a consent token, and moved — if at all — by the customer, by hand, over a channel they choose. This document specifies the threat model, sanitization treatment, control mappings against [NIST SP 800-53], [ISO/IEC 27001], and [SOC 2 TSC 2017], and the incident-handling protocol adopted from [NIST SP 800-61].

Principles

Four invariants. Every section below is a consequence of one of these.

  1. 1.1
    On-prem only. The CLI is a GPG-signed single binary (a Docker distribution path is committed on the roadmap, not yet shipped). The CLI's own code imports no network-capable module, enforced by an automated test. Since v0.0.3 each release binary bundles no Python networking modules and no TLS libraries, checked automatically on every release build with the bundle's module list published and signed, and it completes a full audit with networking disabled at the kernel level. Air-gapped environments are supported. Platform: Linux x86-64 with glibc 2.28 or newer; v0.0.3 and v0.0.4 were tested before signing on RHEL/Rocky 8 and 9, Ubuntu 22.04 and 24.04, and Debian 12 and 13.
  2. 1.2
    Customer-typed consent. The customer previews the sanitized manifest locally, and the CLI refuses to write it to disk unless the customer types --consent EXPORT-SANITIZED-MANIFEST. The CLI never transmits it; any transfer is a separate manual step.
  3. 1.3
    Methodology hash on every artifact. Every PDF report page and every manifest carry the version and hash of the methodology that produced them. The hash pins the scoring math; it is not a signature over the report, and it does not authenticate the binary.
  4. 1.4
    Open compliance. Controls are mapped to [SOC 2 TSC 2017], [ISO/IEC 27001], [GDPR Art. 32], [HIPAA §164.312]. Mappings are reproduced in §4 and disclosed in the engagement SOW.

Threat model

2.1 Adversaries

The audit CLI defends against the following adversary classes, in order of effort required:

  • A1: Curious insider. An employee of the customer who is authorized to run the CLI but not authorized to see other customers' data. Mitigated by §3 sanitization; no cross-customer data exists in the customer's manifest.
  • A2: Network observer. An in-network attacker watching the customer's traffic. The CLI generates none. If the customer later transfers a manifest, it moves over a channel the customer chooses and secures; the payload is already sanitized, and its workload ids are keyed HMACs that cannot be reversed without the customer's key.
  • A3: Q-Intercept staff. Engineering staff at Q-Intercept attempting to learn customer-identifiable details from manifests. Mitigated by sanitization at the source: identifying fields are not in the manifest schema, and ids are keyed under a customer-held key Q-Intercept never receives.
  • A4: Compromised methodology. A modified CLI distributed to customers. Mitigated by GPG signature verification before running (§4.2). The methodology hash on each report page identifies the scoring constants but is not itself proof the binary is genuine.

2.2 Trust boundary

The boundary runs through a manual transfer the customer performs, if they choose to. Everything left of the boundary stays inside the customer's network. Only the sanitized manifest is designed to cross.

   CUSTOMER INFRASTRUCTURE  (firewalled)                    │   Q-INTERCEPT
                                                            │
   ┌──────────────────────────────────────────┐             │
   │  qintercept CLI  (opens no connections)  │             │
   │                                          │             │
   │   sacct / kubectl JSON / PBS accounting ─┤             │
   │              │                           │             │
   │              ▼                           │             │
   │   ┌─────────────────────┐                │             │
   │   │  Workload classifier│                │             │
   │   │  (15 archetypes)    │                │             │
   │   └──────────┬──────────┘                │             │
   │              ▼                           │             │
   │   ┌─────────────────────┐                │             │
   │   │  PDF report + QSS   │ stays local    │             │
   │   └─────────────────────┘                │             │
   │              │                           │             │
   │              ▼                           │             │
   │   ┌─────────────────────┐                │             │
   │   │  manifest.json      │                │             │
   │   │  (sanitized, HMAC)  │ written local  │             │
   │   └──────────┬──────────┘                │             │
   │              │                           │             │
   │  --consent EXPORT-SANITIZED-MANIFEST     │             │
   │              │                           │ manual,     │  ┌────────────────┐
   │              └──────────────────────────── customer's ─┼─►│ Q-Intercept    │
   │                                          │ channel     │  │ (optional)     │
   └──────────────────────────────────────────┘             │  └────────────────┘
                                                            │
   ── trust boundary ─────────────────────────────────────  │
                                                            │

2.3 Out of scope

Endpoint compromise of the customer's head node is out of scope; the CLI inherits the operating system's trust model. Side-channel attacks against the local PDF artifact are out of scope; the customer is responsible for the PDF's local storage. The security of the customer's chosen transfer channel is the customer's. Quantum-cryptographic attacks against HMAC-SHA256 and the GPG release signature are out of scope until fault-tolerant hardware credibly threatens the underlying primitives; see §5.3 for the policy on methodology revisions triggered by the threat landscape.

Sanitization

3.1 Field-level treatment

The following table is the full schema of what the CLI may include in a manifest, and what it never includes. The manifest is built from categorical results only; raw identifiers are discarded when the logs are parsed, before any manifest exists.

Workload ids
HMAC-SHA256 of the job name under a key the customer holds (--manifest-key), truncated to 16 hex characters. Without a key the CLI falls back to bare SHA-256 and prints a warning that low-entropy names are brute-forceable
Sanitized
Per-workload archetype, band, cost band
Categorical labels only. Cost band is low / mid / high / unknown, derived from the Classical Cost sub-score
Sanitized
Aggregate counters
Workload count; counts per archetype, band, and cost band
Sanitized
Scheduler type
One of {slurm, k8s, pbs}
Sanitized
Methodology version + hash
Pins the scoring constants that produced the manifest
Sanitized
Raw job names, container images, scripts, command lines, file paths
Not in the manifest schema
Never
User IDs, group IDs, IP addresses, hostnames
Not in the manifest schema
Never
Dollar values, rates, runtimes, QSS sub-scores, problem dimensions
Not in the manifest schema; stay in the local PDF report
Never

3.2 Customer consent flow

Writing an exportable manifest is gated on a typed consent token. The CLI never uploads anything. Output below is from the bundled sample logs (v0.0.4).

$ qintercept audit --sample --manifest-preview

# Sanitized manifest preview (nothing has left this machine):
{
  "archetype_counts": { "no_candidate": 1, "portfolio_qaoa": 1, "vqe_molecular": 1 },
  "band_counts": { "High": 2, "Not a candidate": 1 },
  "cost_band_counts": { "low": 3 },
  "methodology_hash": "sha256:5586bedd…89cd",
  "methodology_version": "1.0.0-draft",
  "scheduler": "slurm",
  "workload_count": 3,
  "workloads": [
    { "archetype": "vqe_molecular", "band": "High", "cost_band": "low", "id": "4c43dcac0170e66e" },
    ...
  ]
}

$ qintercept audit --sample --export-manifest m.json

REFUSED: manifest export requires explicit consent.
  Review with --manifest-preview, then re-run with:
  --export-manifest m.json --consent EXPORT-SANITIZED-MANIFEST

$ qintercept audit --sample --export-manifest m.json --consent EXPORT-SANITIZED-MANIFEST

Sanitized manifest written LOCALLY: m.json
  Review it, then upload manually out-of-band if you choose. This tool made no network connection.

3.3 Methodology-hash provenance

Every report PDF carries the methodology version and hash in each page footer, and every manifest carries them as fields. A reviewer can pin a report to an exact methodology revision and audit the lineage. Methodology updates never silently revise downstream artifacts; old reports continue to cite the version that produced them.

Compliance

4.1 Mapped controls

The audit CLI distribution and manifest handling carry the following control mappings. Full mapping spreadsheet provided with the engagement SOW.

SOC 2 Type II
Common Criteria CC6 (Logical access), CC7 (System operations), CC8 (Change management). Confidentiality category. [SOC 2 TSC 2017]
ISO/IEC 27001:2022
Annex A: 5.1 (Policies), 5.32 (Intellectual property), 8.16 (Monitoring), 8.24 (Cryptography), 8.34 (Audit logging). [ISO/IEC 27001]
GDPR (EU) 2016/679
Article 32: Security of processing. Pseudonymisation of workload ids by HMAC-SHA256 under a customer-held key; identifying fields excluded from the manifest; no network transmission by the CLI. [GDPR Art. 32]
HIPAA 45 CFR §164
Technical Safeguards §164.312: access control (a), audit controls (b), integrity (c), transmission security (e). BAA addendum available. [HIPAA §164.312]

4.2 Distribution security

The CLI is distributed as a PyInstaller binary, GPG-signed with our release key. SHA-256 checksums and detached signatures are published alongside every release. (Corrected 2026-08-11: an earlier version of this page claimed cosign-signed Docker images with SLSA level 3 provenance. Neither exists yet — the Docker distribution path is committed on the roadmap and will ship only when it carries equivalent signature guarantees.)

Release signing key (verify before running):
8E0F 6615 AF74 ED02 92BC 9DE0 327E 0EDE F81E 63D4
Q-Intercept Release Signing <releases@q-intercept.com> · ed25519 · expires 2028-06-13

Put these five files in one directory, then run the block there (Linux; on macOS replace sha256sum -c with shasum -a 256 -c): qintercept-v0.0.4-linux-x86_64, qintercept-v0.0.4-linux-x86_64.asc, SHA256SUMS, SHA256SUMS.asc, q-intercept-release-signing-key.asc. The block runs in a child shell, so a failure prints its reason without closing your terminal.

bash <<'VERIFY'
set -euo pipefail
V=v0.0.4
BIN="qintercept-${V}-linux-x86_64"
FPR=8E0F6615AF74ED0292BC9DE0327E0EDEF81E63D4
export GNUPGHOME="$(mktemp -d)"                     # throwaway keyring; leaves yours untouched
gpg --quiet --import q-intercept-release-signing-key.asc
gpg --status-fd 1 --verify "${BIN}.asc" "$BIN" 2>/dev/null | grep -q "^\[GNUPG:\] VALIDSIG ${FPR} " \
  || { echo "FAIL: binary signature is not from ${FPR}"; exit 1; }
gpg --status-fd 1 --verify SHA256SUMS.asc SHA256SUMS 2>/dev/null | grep -q "^\[GNUPG:\] VALIDSIG ${FPR} " \
  || { echo "FAIL: SHA256SUMS signature is not from ${FPR}"; exit 1; }
sha256sum -c --ignore-missing SHA256SUMS | grep -q "^${BIN}: OK$" \
  || { echo "FAIL: ${BIN} does not match SHA256SUMS"; exit 1; }
rm -rf "$GNUPGHOME"
chmod +x "$BIN"
echo "OK: ${BIN} verified (signature + checksum, key ${FPR})"
VERIFY

Succeeds only if both signatures come from the key 8E0F 6615 AF74 ED02 92BC 9DE0 327E 0EDE F81E 63D4 and the binary matches SHA256SUMS: it then prints OK and marks the binary executable. Otherwise it prints a FAIL line and exits 1. It checks the fingerprint, not just "Good signature", because gpg accepts a good signature from any key you import. Release v0.0.4.

Verifying by hand, gpg will also warn that the key "is not certified with a trusted signature". That warning is expected for a key you have just imported; the fingerprint comparison against this page is the trust check, and the block above performs it. Do not skip it: a download of the key alone proves nothing if the same channel could have been tampered with. A good signature proves the file was signed by the holder of this key; it does not prove the binary matches our source, which is what source review under NDA (§4.3) is for.

Installation instructions verify the signature before running. The signature is the only check on the binary itself: a modified binary run without verification could print any methodology hash, so the hash on a report is not proof of a genuine binary. Scope note: the automated no-network test covers the CLI's own code. For the release binary, v0.0.3 added a build gate: no Python networking modules (socket, ssl, http, urllib.request) and no OpenSSL libraries may be bundled, and each release publishes a signed BUNDLE-MANIFEST.txt listing every bundled module and native file. The binary still contains the Python interpreter and system C library, which can make system calls, so the hard boundary is your own sandbox (for example a container with networking disabled). v0.0.2 bundled networking modules and OpenSSL that the CLI never called.

4.3 Third-party review

The audit CLI source, the sanitization layer, and the manifest schema are open to inspection under mutual NDA during engagement scoping. Independent code review by a customer-nominated firm is supported and is the only path to certifying that the deployed binary matches the published source.

Incident response

The protocol below follows the lifecycle defined in [NIST SP 800-61]: Preparation, Detection & Analysis, Containment, Eradication & Recovery, Post-incident.

5.1 Customer-side incidents

The CLI is the customer's. Incident response on the customer head node is owned by the customer. Q-Intercept is available within 24 hours of notification to assist with manifest re-validation, methodology re-pinning, and engagement re-issue at no charge if the cause is traced to the CLI distribution.

5.2 Q-Intercept-side incidents

An incident is declared when any of the following are detected: accidental disclosure of customer manifest data, or release signing-key compromise. Notification is sent to all affected customers within 72 hours per [GDPR Art. 32].

Recovery includes rotation of the release signing key, re-issue of affected binaries and reports, and a public post-mortem published on this page within 30 calendar days.

5.3 Threat-landscape revisions

When the cryptographic primitives this document relies on become credibly threatened, the methodology version increments and a migration plan is published. The plan is reviewed by the technical advisor once one is seated, and any affected customer under active engagement receives the migrated artifact at no charge.

Publication

6.1 Versioning

This document is versioned independently of the methodology. The methodology is identified by its version and hash; this document by the version and date below. Together they are the canonical reference for any audit, response, or compliance evidence.

Version
Date
Change
1.3.1
2026-09-17
CLI v0.0.4: the report now prints per-workload annualized classical cost and a top-10 by cost; the sample transcript was re-checked against the v0.0.4 binary.
1.3.0
2026-09-17
CLI v0.0.3: platform requirement (glibc 2.28+, six distributions tested before signing, CLI ADR-0010) and the release-binary bundle claim permitted by CLI ADR-0007.
1.2.0
2026-09-17
Published the release-signing public key and a four-step verification procedure. Earlier versions showed only the fingerprint and a verify command, which fails with "No public key" on a machine that has not imported the key.
1.1.0
2026-09-17
Correction. Earlier versions described behavior the CLI does not have: an upload step to an ingest endpoint over TLS, a --i-have-reviewed-this flag, a submit command, and a manifest with CLI version and dollar cost buckets. They also said workload names were plain SHA-256 hashed (they are keyed HMAC-SHA256 under a customer-held key), and that the methodology hash authenticates reports (it does not). All sections now match CLI v0.0.2 and methodology 1.0.0-draft.
1.0.0
2026-06-04
Initial publication. Threat model A1–A4, sanitization schema, control mappings.

REFERENCES

[NIST SP 800-53]
NIST SP 800-53 Rev. 5. Security and Privacy Controls for Information Systems and Organizations. Mapped controls: AC (Access Control), AU (Audit & Accountability), SC (System & Communications Protection), IR (Incident Response).
[NIST SP 800-61]
NIST SP 800-61 Rev. 2. Computer Security Incident Handling Guide. Adopted lifecycle (Preparation → Detection → Analysis → Containment → Eradication → Recovery → Post-incident) for §5.
[SOC 2 TSC 2017]
AICPA SOC 2 Trust Services Criteria (2017, with 2022 points of focus). Common Criteria (CC1–CC9) plus the Confidentiality category. Audit CLI distribution chain in scope.
[ISO/IEC 27001]
ISO/IEC 27001:2022. Information security management systems. Annex A controls 5.1, 5.32, 8.16, 8.24, 8.34 mapped to §3 sanitization and §5 incident handling.
[GDPR Art. 32]
Regulation (EU) 2016/679, Article 32. Security of processing: pseudonymisation, encryption, ability to ensure ongoing confidentiality, integrity, availability and resilience.
[HIPAA §164.312]
45 CFR §164.312. HIPAA Security Rule: Technical Safeguards (access control, audit controls, integrity, transmission security). Engagement-specific BAA addendum available.
[OWASP ASVS 4.0]
OWASP Application Security Verification Standard v4.0.3. V2 Authentication, V3 Session Management, V8 Data Protection, V13 API and Web Service. Used as a checklist for the audit CLI.

HOW TO ENGAGE

Send a request for the engagement SOW. We respond within 48 hours with a mutual NDA, a full control-mapping spreadsheet, and the GPG-signed CLI distribution package.