Drop-Test Artifacts · For Red Teams & CISOs

Six attacks. Verify the rejections yourself.

Each card below downloads a real .h33pqv.json attack artifact. Drop any of them into the verifier on the right and watch the H33 substrate produce a structured REJECTED outcome with a named reason — in your browser, with no H33 infrastructure in the loop.

  1. Click Run this attack on any card. OR click Download and drop the file into the verifier on the right.
  2. Read the structured rejection reason. Compare it to the attack the card claims.
  3. For the full triple-family signature check (live on a real registry), pipe the same artifact through qsign-nap-verify --registry <jsonl> on a workstation with the substrate crates installed.
The Six Attack Artifacts
01 · Forged Receipt

Verification receipt with all-zero signature blocks

Attacker mints a JSON that looks like a real verification receipt from Compliance Desk Zeta, but cannot produce real triple-family signatures.

Expected · TripleFamilySignaturesInvalid
Download
02 · Replay Attack

Authentic receipt resubmitted from Q1 2026 against a Q3 registry

Signatures verify — the bytes are genuine. But the receipt cites a stale registry tip from last quarter; the auditor's replica has moved on.

Expected · StaleRegistryVersion
Download
03 · Stolen Key

Receipt signed by a verifier whose key was Revoked before signing time

phishy-verifier-phi reported the compromise and posted a Revoked record. The attacker keeps issuing receipts under the leaked key after that timestamp.

Expected · VerifierRevokedAtVerificationTime
Download
04 · Revoked Authority

NAP issued by a federation principal that was revoked at issuance time

rogue-bank-rho's registration was Revoked at 2026-05-23. Issuing a new artifact under that principal after that timestamp does not restore authority.

Expected · IssuerRevokedAtIssuanceTime
Download
05 · Modified Policy

NAP scope envelope edited post-issuance to flip a denial into a permit

Operator alters the policy text after a denial to claim the threshold was $2M, not $500K, all along. The signed committed_scope_hash no longer matches.

Expected · ScopeEnvelopeHashMismatch
Download
06 · Tampered Registry

Registry JSONL with a spliced record whose prev_record_hash is wrong

Attacker intercepts a registry replica in transit and inserts a record granting themselves Active issuer status. The hash chain breaks at the splice.

Expected · RegistryChainBreak
Download
Auditor's Registry Snapshot
Reference

registry-state.json

The auditor's local federation key registry replica. Used by the verifier as the source of truth for principal status and known registry tips.

In-Browser Verifier
Waiting for an artifact.
Drop one, browse, or click Run this attack on any card.

Simulated vs. live — full transparency.

This is a drop-test layer. The artifacts are real .h33pqv.json files with the structure the substrate produces; the rejections you see in the verifier panel are the same structured reasons the production Rust verifier emits. But not every check that runs in a production audit pipeline runs in your browser.

Here's exactly what is and isn't live:

CheckIn-browserProduction verifierNotes
Schema parse + URN validationLIVELIVESame JSON, same URN grammar (qsign-fed-id)
Registry tip-hash freshnessLIVELIVEString comparison against the snapshot's tip.last_record_hash
Principal status at timestampLIVELIVESame record_at() semantics, replayed in JS
Registry hash-chain integrity (prev_record_hash walk)LIVELIVEString comparison along the JSONL chain
Scope-envelope hash recomputationLIVELIVEBrowser uses SHA-384 (WebCrypto); production uses SHA3-384. Both are 384-bit; structural detection is identical.
All-zero signature heuristicLIVEN/AProduction runs the real verify; this browser shortcut catches the obvious forge without crypto.
Triple-family PQ signature verification (ML-DSA-87 + SLH-DSA-256s + FALCON-1024 at 2-of-3)SIMULATEDLIVEThe full PQ verify needs the production crates. Pipe the same artifact through qsign-nap-verify --registry for the live check.
Canonical JCS encoding equivalenceSIMULATEDLIVEThe browser uses a stable key-sorted JSON; production uses serde_jcs (RFC 8785). Differences would only matter for unicode edge cases not present in these artifacts.

Every artifact carries a _demo block that names exactly which check the in-browser verifier runs and which check the production verifier runs. Read it inside the JSON to confirm.

Next step

Open the reviewer entry point

Federation v0.6 bundle, reproduction guides, attack checklist, known limitations, contact path. For security researchers, auditors, regulators, and due-diligence teams.

Open External Review