PDF ↓
C3PAO Assessment Guidev26.07.27.1120DenseDefense · ForteFide

ForteFide C3PAO Assessor Guide

A reference for Certified Third-Party Assessment Organization personnel evaluating a customer environment that used ForteFide to prepare for a CMMC Level 2 assessment — what ForteFide asserts, what a signed evidence package contains, and how to verify every artifact in it cryptographically and offline.

Signed evidence package — Pro license requiredVerification — offline, no DenseDefense server accessManual-only controls — assessor / customer attestation

How to use this guide

Start hereSection 1 (Audience & Purpose) then Section 4 (Evidence Package Contents) — what you will actually receive
Verify firstSection 5 (Signature Verification) — run the bundled verifier before trusting anything else in the package
WorkflowSection 9 (Sample Assessor Workflow) — a phase-by-phase intake checklist you can adapt to your C3PAO's process

1 · Audience & Purpose

Audience

This guide is written for C3PAO assessors — Certified Third-Party Assessment Organization personnel performing CMMC Level 2 certification assessments under 32 CFR Part 170. Specifically: Certified CMMC Professionals (CCP), Certified CMMC Assessors (CCA), and Lead Assessors who will encounter ForteFide-generated evidence during a customer's assessment.

Purpose

ForteFide is a customer-operated tool. It runs inside the OSC's (Organization Seeking Certification) environment, assesses systems against all 110 NIST SP 800-171 Rev 2 security requirements — 79 via technical scan, the remaining 31 via organizational evidence and attestation — and, optionally, remediates findings and produces a signed evidence package. As an assessor reviewing that package, you need to know:

What this guide is not

This guide is not assessor training. It does not interpret 32 CFR Part 170, NIST SP 800-171A assessment objectives, or the Cyber AB Assessment Process. It does not tell you whether to accept ForteFide evidence — that judgment belongs to you and your C3PAO. It documents what ForteFide produces and how to verify it.

Vendor independence. ForteFide is a third-party tool. The OSC operates ForteFide themselves; DenseDefense does not have access to customer scan data, evidence, or signing material. The signed evidence package is self-contained: every claim it makes is verifiable locally with the bundled public key and verifier script, with no callback to DenseDefense.

2 · ForteFide Overview

What ForteFide is

ForteFide is a CMMC Level 2 / NIST SP 800-171 Rev 2 compliance preparation platform with three coupled functions:

What ForteFide is not

Architecture in brief

Standards covered

StandardCoverage in ForteFide
NIST SP 800-171 Rev 2All 110 security requirements across 14 families (79 have a technical scan, 82 controls are auto-remediable across the union of Linux + Windows). Each requirement maps to one or more automated probes and/or manual-only flags.
NIST SP 800-171AAssessment objectives drive ForteFide's evidence selection. Per-control evidence captures the command, raw output, and determination.
32 CFR Part 170ForteFide produces an SPRS scorecard, SSP scaffold, and POA&M documents in formats compatible with Final Rule submission expectations. The C3PAO confirms suitability.
DoD Assessment Methodology v2.13SPRS scoring weights (Critical -5, High -3, Medium -3, Low -1) applied; starting score 110.

3 · The 6-Step Customer Journey

ForteFide structures the customer's work into six steps. Each step produces specific, named artifacts. The signed evidence package (Section 4) bundles the artifacts produced from Step 3 onward. Steps 1 and 2 are setup; their artifacts are operationally useful but not part of compliance evidence.

#StepPurpose Evidence produced
1ReconDiscover and select targets in CUI scope. Target list (operational, not in the evidence package).
2PrepareProvision a per-host service account; deploy SSH key/cert auth.Per-target service-account manifest (operational; removed by Teardown).
3ScanRun the 79 scanned controls against each target. Raw scan output, control determinations, host roll-up — captured in scan_data.json.
4Remediate (optional)Apply fixes; capture rollback bundles before each change.Remediation log, per-control rollback bundles, journal entries (remediation.jsonl).
5EvidenceGenerate the signed evidence ZIP for the assessor.Signed evidence package — this is what the C3PAO receives. See Section 4.
6Out (Teardown)Remove service accounts; close out journal; restore original machine state where possible.Teardown log entry, journal closure record.

Signed vs. unsigned evidence

ForteFide produces two distinct evidence tiers. Only one is what the assessor expects to receive.

TierWhen produced ManifestUse
Signed (C3PAO-grade)Step 5 (Evidence) of the customer journey, from a scan run after Prepare + optional Remediate.signed=True, Ed25519 signature over the canonical JSON manifest with SHA-256 per artifact.Ship to the assessor. The package the customer paid for.
Unsigned (verification only)Automatically, when rollback-all succeeds on any target — ForteFide rescans those targets so the operator can verify the rollback restored the baseline.signed=False, context="post_rollback_rescan". No Ed25519 signature.Operator confidence only. Reject if it appears in your evidence intake.
Before accepting any ForteFide evidence package, open manifest.json at the package root and confirm signed=True. If you see signed=False or context="post_rollback_rescan", this is verification data the customer should not have shipped. Reject and request the signed package.

Why the journey shape matters to the assessor

The evidence package you receive corresponds to a specific moment in the customer's journey — specifically Step 5, after Step 3 (or Step 3 + Step 4) has run and before Step 6 has run. The generated_utc timestamp on the manifest pins this moment.

4 · Evidence Package Contents

A signed ForteFide evidence package is a single ZIP archive named ForteFide_Signed_Evidence_<scan_id>.zip.

ZIP contents (canonical)

FilenameFormat What it is
evidence_manifest.jsonJSONAuthoritative chain-of-custody record. Lists every artifact with its SHA-256 hash. Carries the Ed25519 signature, the embedded public key, machine fingerprint, license identity, and product version.
verify_evidence.pyPythonStandalone verifier. Recomputes per-artifact SHA-256 and verifies the manifest signature. No network calls; no DenseDefense dependency. Source ships in plaintext.
ForteFide_Scan_Report_<id>.pdfPDFPer-scan report: targets, per-control results, scoring, raw command output excerpts.
01_System_Security_Plan.pdfPDFSSP scaffold. System identification, environment, family-by-family compliance summary, per-control implementations. Includes placeholders the customer must complete.
02_POA_M.pdfPDFPlan of Action & Milestones for NOT MET controls. Severity, target remediation date by severity, finding text.
03_Asset_Inventory.pdfPDFHosts in scope; OS; per-host MET/NOT MET counts.
04_SPRS_Scorecard.pdfPDFSPRS score (starts at 110, weighted deductions per failed control). Family-level breakdown.
05_Control_Evidence.pdfPDFPer-control raw evidence: the command run, the output captured, the determination. This is the artifact-level audit trail.
08_Incident_Response_Plan.pdfPDFIRP scaffold. Customer completes the team roster and contact fields.
09_Training_Records.pdfPDFAT family attestation scaffold.
10_Attestation_Index.pdfPDFPer-family status of the manual (organizational) controls: which families have a customer-signed attestation and which are still ATTESTATION REQUIRED. Sealed under the same Ed25519 manifest as every other artifact.
<FAMILY>_Attestation_Signed.pdfPDFCustomer-signed per-family attestation PDFs for the manual-only controls. Present only for families the customer has signed. The customer attests; ForteFide does not verify the underlying control.
scan_data.jsonJSONFull raw scan record. The PDFs are renderings; this is the underlying data the customer cannot alter without invalidating the manifest hash.
remediation_log.jsonJSONActivity-log slice covering remediation events for this scan. Present only when remediation ran.
control_overrides.jsonJSONCustomer-asserted overrides (compensating control, risk accepted, not applicable), each with a rationale string. Present only when overrides exist.
dd-trust-manifest.jsonJSONDD-Trust event log. Each remediation gets PRE-state, POST-state, and verdict entries; an evidence-seal event is appended at sign time.
state_change_pairs.jsonJSONPer-control verified-remediation proof. One entry per remediated control: {control_id, before, after, verified}, where verified comes from re-running the same 800-171A check that originally failed — not from the fix's exit code. Present only when remediation ran.

What is NOT in the package

Evidence-seal event

Immediately before the manifest is signed, ForteFide writes a dd-trust-manifest.json snapshot then appends an evidence-seal event recording scan_id and artifact_count. This event is the last record in the DD-Trust log inside the ZIP. Its presence demonstrates the ZIP was produced through the documented seal path; its absence indicates a hand-assembled ZIP, which the Ed25519 signature would also catch.

5 · Signature Verification

Signature verification is the C3PAO's primary defense against a tampered or forged evidence package. The package is self-verifying: every check runs locally and uses only the public material bundled in the ZIP.

Doctrine: License = Key = Proof

ForteFide operates under an explicit trust-anchor doctrine the C3PAO should understand. The customer's license.key file IS the cryptographic trust anchor. ForteFide derives the signing keys from the license payload; it does not store the derived keys separately.

Practical consequence. A customer who uninstalls ForteFide without preserving license.key has destroyed the trust anchor. Their previously-shipped evidence ZIPs still exist as files, and the manifest signatures are still cryptographically valid at the instant of issue — but provenance can no longer be re-derived. Treat such packages as unverifiable for new assessments.

Cryptographic primitives

ItemAlgorithm Value bundled in package
Manifest signatureEd25519manifest['signature'] — base64-encoded 64-byte signature over canonicalized JSON of the manifest with the signature field removed.
Public keyEd25519manifest['public_key'] — base64-encoded 32-byte public key. Same key embedded in the ForteFide build that produced the package.
Per-artifact hashSHA-256manifest['artifacts'][i] ['sha256'] — 64-hex-character digest of the file as included in the ZIP.
Manifest digestSHA-256manifest['manifest_sha256'] — digest of the canonicalized manifest JSON (informational; the signature is the authoritative integrity check).
Canonicalizationjson.dumps(sort_keys=True)All keys sorted; standard JSON whitespace. Guarantees the exact same bytes are signed and verified across implementations.

Step 1 — run the bundled verifier (recommended)

$ unzip ForteFide_Signed_Evidence_42.zip -d ff_evidence
$ cd ff_evidence
$ python3 verify_evidence.py

 OK ForteFide_Scan_Report_42.pdf
 OK 01_System_Security_Plan.pdf
 OK 02_POA_M.pdf
 OK 04_SPRS_Scorecard.pdf
 OK 05_Control_Evidence.pdf
 OK scan_data.json
 OK dd-trust-manifest.json

Signature: VALID (Ed25519, public_key signed in)

verify_evidence.py requires PyNaCl (pip install pynacl). It runs in any Python 3.8+ environment. The script source is plain text in the ZIP; you may inspect it before running.

Step 2 — manual verification with openssl (alternative)

If you prefer not to run vendor-supplied scripts, you can verify manually. The bundled public key is base64 inside manifest['public_key']. openssl 3.0+ is required for raw Ed25519 verification:

# 1. Extract the raw 32-byte Ed25519 public key from the manifest, wrap it in a
#    PEM SubjectPublicKeyInfo header, reproduce the exact canonicalized-JSON bytes
#    that were signed (every manifest field except signature/public_key), decode
#    the base64 signature, then:
openssl pkeyutl -verify -pubin -inkey pub.pem \
  -rawin -in payload.bin -sigfile sig.bin
# Expected: 'Signature Verified Successfully'

Trust assumptions in signature verification

Practical bar. Signature verification gives you confidence the package you received is the package the customer's ForteFide instance sealed. It does not, on its own, prove the scan accurately reflects the target's state. For that, combine the package with manual spot-checks of the underlying targets (Section 8, Sample Assessor Workflow).

What to do if verification fails

6 · Auth Tier Disclosure

ForteFide uses a three-tier authentication cascade for operator-to-target access. The tier used directly affects how much weight a C3PAO should place on per-control evidence. The scan report and remediation log record the tier used per target.

TierMechanism StrengthCompliance posture
Tier 1SSH certificate (Ed25519 user cert with 30-day validity, issued by a license-derived CA)StrongestPreferred. Cert expiry binds the auth window to the ForteFide engagement; no long-lived static credential.
Tier 2SSH public key (Ed25519 keypair, deployed at Prepare) StrongAcceptable. Public key stays in target authorized_keys until Teardown removes it.
Tier 3Password (admin-supplied, used once for Prepare or as scan-time fallback when SSH key/cert deploy failed)WeakestCompliance scrutiny flag. Persistent password use indicates Prepare did not complete cleanly. Verify the customer has a documented reason.

How to read the tier in evidence

Per-control evidence in 05_Control_Evidence.pdf and scan_data.json includes the auth tier used — look for the auth_tier field, or the "Auth: tier-N" line in the per-host header of the scan report.

Tier 3 is a flag, not a fail. A Tier 3 entry does not invalidate the scan. It indicates the control evidence was gathered over a password-authenticated channel, which is a weaker assertion of "only ForteFide acted on the target" than Tier 1 or Tier 2. Confirm with the customer; do not silently accept.

Lockout-warning controls in the evidence trail

A small set of Linux controls are enabled for automatic remediation only behind an explicit per-control, per-target operator acknowledgment (ACK) — each carries a non-trivial chance of locking ForteFide out of the host if applied without coordination. The remediation log records the ACK timestamp and operator identity alongside the apply record. Absence of an ACK record for one of these controls means it was never remediated; presence means the operator deliberately accepted the lockout risk before the change ran.

7 · Manual-Only Controls

Some 800-171 controls cannot be reliably verified by an automated remote scanner. ForteFide flags these as MANUAL and does not attempt to remediate them automatically. Out-of-band assessor verification is required.

Categories ForteFide flags as manual

How manual-only entries appear in evidence

Manual-only controls in 05_Control_Evidence.pdf and scan_data.json do NOT receive an automated MET. They emit ATTESTATION_REQUIRED (passed=null, flagged for attestation) — ForteFide deliberately does not auto-pass a control it cannot technically verify. Out-of-band evidence the customer supplies (signed policies, training records, physical-security inventory, HR records) goes alongside the ForteFide package.

Manual-control attestation — in-product, sealed

Current ForteFide builds let the customer attest to the manual-only controls inside the product. The customer signs a per-family attestation PDF; each signed PDF folds into the evidence ZIP under the existing Ed25519 seal, and a sealed 10_Attestation_Index.pdf records, per family, whether the attestation is signed (ATTESTED) or still pending (ATTESTATION REQUIRED).

The automated compliance percentage is unaffected by attestation: the score is computed over the 79 technically-assessed controls, and the 31 organizational controls are excluded from that denominator. Attestation does not move the automated number; it supplies the customer's signed assertion for the controls a scanner cannot evaluate.

Honesty boundary — what the seal does and does NOT mean. The Ed25519 seal on an attestation PDF provides chain-of-custody integrity and provenance ONLY — it proves the file was assembled by ForteFide at the stated time and has not been altered since. It is explicitly NOT a claim that ForteFide verified the underlying control. Verification that the control is actually implemented is the sole responsibility of the signing official; the customer's signature is the attestation, and a false attestation is the customer's liability, not ForteFide's. Treat a signed attestation as the customer's representation to be examined and interviewed against, not as tool-verified evidence.

What this means for the assessor

8 · Leave-No-Trace & State-Change Verification

ForteFide is designed so that, after Teardown, the customer's targets are returned to the state they were in before Prepare. ForteFide also ships paired, cryptographically signed install/remove records for every state change it makes on a target host, so an assessor can verify the leave-no-trace claim offline rather than trusting operator say-so.

What gets removed at Teardown

Item created during Prepare/Remediate Removed at Teardown?
Per-host service accountYes
Service-account home directory and authorized_keysYes (entire account is deleted)
Deployed SSH public keyYes (with the account)
Deployed SSH user certificateYes (with the account); also auto-expires after 30 days
sshd_config modificationsReverted from rollback bundle
Service-account privileges (sudo entries, group memberships) Yes
Per-control remediations (package installs, registry edits, audit rules) Reverted only if the customer explicitly invokes rollback from the dashboard. Teardown does NOT auto-rollback remediations.

What's in the evidence package

Pairing install with remove

Pair key: (target, action_type, canonical(details)). For every install record there should be a matching remove record with the same pair key. Any unpaired install is a leave-no-trace audit gap. Any orphan remove (no matching install) usually indicates a pre-existing artifact the customer cleaned up, not a cause for concern.

License retention is required for verification. The signing-key derivation requires the customer's license.key file. If the customer uninstalled ForteFide without backing it up, the derived key is unrecoverable — signatures on file exist but cannot be verified. Treat such artifacts as UNTRUSTED. DenseDefense does not escrow license.key files and cannot regenerate them. Asking the customer for license.key alongside the evidence package is a normal part of the assessment intake checklist for a ForteFide-generated engagement.

What this assurance buys you (assessor angle)

Verified remediation (state-change proof)

After each remediation, ForteFide re-runs the same 800-171A check that originally returned NOT MET — it does not trust the remediation command's exit code. The outcome is recorded as a per-control state-change pair {control_id, before, after, verified} and sealed into the signed evidence package as state_change_pairs.json, under the same Ed25519 chain of custody as the scan evidence.

What leave-no-trace does NOT promise

9 · Sample Assessor Workflow

A practical workflow for incorporating a ForteFide signed evidence package into a CMMC Level 2 assessment. Adapt to your C3PAO's process.

Phase 1 — receive and verify the package (15-30 min)

Phase 2 — manifest review (15 min)

Phase 3 — per-control review (variable)

Phase 4 — live verification (recommended)

Phase 5 — manual-only controls (variable)

Phase 6 — SPRS scoring sanity check (10 min)

Phase 7 — document the assessor determination

Record in your workpapers: package SHA-256, signature verification result, manifest identifiers, the ForteFide version that produced the package, the auth tiers observed, the controls you spot-checked, the live-verification results, and the manual-only evidence obtained out-of-band. Your assessment determination derives from this composite, not from the ForteFide package alone.

10 · Trust Model & Known Limitations

Stating the trust assumptions and known limitations explicitly so the C3PAO knows what the signature does and does not defend against, and what to plan around.

Threats the signed package defends against

Threats the signed package does NOT defend against

Net assurance. The signed evidence package gives strong assurance the package is authentic ForteFide output and has not been tampered with end-to-end. It gives medium assurance the ForteFide instance was not modified. It gives moderate assurance the per-control determinations reflect target state. The C3PAO closes the residual gap with live verification and out-of-band evidence for manual-only controls.

Known limitations

A · Appendix A: Glossary

Term Meaning in this guide
C3PAOCertified Third-Party Assessment Organization. Authorized by The Cyber AB to perform CMMC Level 2 certification assessments.
CCA / CCPCertified CMMC Assessor / Certified CMMC Professional — individual credentials under the Cyber AB ecosystem.
OSC / OSAOrganization Seeking Certification / Organization Seeking Assessment. The customer being assessed.
CUIControlled Unclassified Information — the data type the CMMC Level 2 assessment is concerned with.
CMMCCybersecurity Maturity Model Certification. DoD compliance framework codified in 32 CFR Part 170.
NIST SP 800-171 / 800-171ANIST publication enumerating 110 security requirements for non-federal systems handling CUI, and its companion publication defining assessment objectives.
SPRSSupplier Performance Risk System. DoD scoring format used by prime contractors; ForteFide produces an SPRS scorecard.
SSP / POA&MSystem Security Plan / Plan of Action & Milestones — required compliance documents; ForteFide produces scaffolds.
Ed25519Edwards-curve digital signature algorithm — 32-byte keys, 64-byte signatures. Used for the manifest signature.
Auth tierForteFide-internal classification of the auth method used per target. Tier 1 = SSH cert, Tier 2 = SSH key, Tier 3 = password. 1 is strongest.
DC-aware controlsForteFide's internal list of controls whose remediation behavior depends on whether the Windows target is a domain controller — APPLIED on DCs, SKIPPED on domain members.
Leave-no-traceDesign principle: targets return to their pre-Prepare state at Teardown. Customer-controlled remediation persistence is opt-in via per-control rollback bundles.
Manual-onlyA control the scanner cannot reliably verify; ForteFide flags it for assessor review rather than fabricating automated evidence.

B · Appendix B: Control Determination Semantics

Every control in scan_data.json carries a determination from a small fixed vocabulary. Understanding each determination is essential to reading 05_Control_Evidence.pdf correctly.

DeterminationField value What it meansAssessor action
METpassed: trueForteFide ran a probe, captured output, and the output satisfies the control's pass criteria.Spot-check the captured command and raw output.
NOT METpassed: falseThe output does NOT satisfy the control's pass criteria.Confirm a POA&M entry exists with a severity-appropriate target date.
MANUALpassed: null, determination: "manual"Control is in the manual-only category. ForteFide did not attempt automated probing.Verify out-of-band: signed policy, training record, physical inspection, HR record.
NOT APPLICABLEpassed: null, determination: "na"Customer asserted the control does not apply to this environment. Override rationale required.Read the override rationale and confirm the asserted environmental fact.
ERRORpassed: null, determination: "error"Probe execution failed (timeout, auth failure, target unreachable). The control was NOT evaluated.Treat as missing evidence; request a re-scan of the affected target.
OVERRIDDENpassed: true with an override flag, determination: "override-met"Customer accepted a compensating control or risk and marked the control MET via override, with rationale.Apply heightened scrutiny — the underlying probe may have returned NOT MET.

C · Appendix C: NIST 800-171 Family Coverage

The 14 NIST SP 800-171 Rev 2 families and how ForteFide handles each. "Automated" means ForteFide runs probes and produces a MET / NOT MET determination from raw output. "Manual-flagged" means ForteFide marks the control for assessor or customer review and does not fabricate a determination. "Hybrid" means some controls in the family are automated and some are manual.

IDFamily ForteFide handling
ACAccess ControlHybrid. Local account, lockout, session, remote-access controls automated. Policy-statement controls manual.
ATAwareness and TrainingManual-flagged. Attestation-based; ForteFide produces a Training Records scaffold.
AUAudit and AccountabilityMostly automated. Audit subsystem state, log retention, log-write success captured via probes.
CASecurity AssessmentHybrid. Self-assessment frequency and POA&M presence automated; system-boundary documentation manual.
CMConfiguration ManagementMostly automated. Baseline drift, software inventory, least-functionality probes run. One control is DC-aware.
IAIdentification and AuthenticationMostly automated. Password policy, MFA presence, account ageing, identifier reuse all probed. One control is DC-aware.
IRIncident ResponseHybrid. IRP existence and contact accuracy via a scaffold document; tabletop-exercise evidence remains organizational.
MAMaintenanceHybrid. Remote-maintenance auth automated; on-site maintenance ledger manual.
MPMedia ProtectionMostly manual-flagged. Removable-media policy, sanitization, transport are organizational.
PEPhysical and Environmental ProtectionManual-only. ForteFide cannot inspect server rooms or verify badge logs.
PSPersonnel SecurityManual-only. Background-screening and termination records are HR-system records ForteFide does not access.
RARisk AssessmentHybrid. Vulnerability-scan presence and remediation cycle automated; risk-register content review remains assessor-side.
SCSystem and Communications ProtectionMostly automated. Boundary protection, DNS, encryption-in-transit, secure baselines all probed.
SISystem and Information IntegrityMostly automated. Patch level, malicious-code defense, monitoring presence all probed.

Total: 110 NIST 800-171 r2 controls. ForteFide technically scans 79 of the 110; 31 are organizational (training, physical, personnel), assessed via attestation and out-of-band documentation. The automated compliance percentage is computed over the 79 technically-assessed controls; the 31 organizational controls are excluded from that denominator, not counted as failures. Automated remediation covers 67 controls on Linux and 66 on Windows (82 distinct controls across the union of both) — the remainder are manual-flagged for the assessor's independent verification or are doctrine-skipped on DC targets to prevent self-lockout. Exact per-control automation status is in scan_data.json under control_results[].determination.