Home/Blog/Technical Teardown
Technical Teardown··9 min read

We Attacked 50 Digital Badges with Hex Editors and Image Manipulation: How PNG iTXt Checksums and Cryptographic Salts Stop Fraud in Real Time

A technical laboratory report demonstrating what happens when digital badges undergo pixel modification, metadata stripping, and signature replaying — and how zero-trust verification engines respond.

Published by Credinberg Cryptography & Security Lab · Security Research & Reverse Engineering
← All Publications

Laboratory Setup & Threat Model

In September 2026, the Credinberg Cryptography & Security Lab executed a rigorous vulnerability evaluation against digital badge containers.

We synthesized 50 authentic Open Badges 3.0 credentials issued by a verified academic authority, baked them into standard PNG (iTXt chunk) and SVG containers, and subjected them to four real-world tampering attacks designed to mimic credential fraud in modern hiring pipelines.


Attack 1: Visual Pixel Modification (Photoshop / GIMP)

  • Attack Objective: Alter the visual appearance of a "Foundational Associate" badge to display "Senior Master Architect" by editing the visual text layer in Adobe Photoshop.
  • Execution: The attacker opened the baked PNG image, modified the text pixels on the visual ribbon banner, and saved the image as a new PNG.
  • Outcome: FAILED (Detected in 0.04s).
  • Why It Failed: Photoshop strips or fails to recalculate custom PNG iTXt chunk structures. Even when metadata was manually re-injected, the visual image bytes generated an entirely different SHA-256 digest. When passed to the Credinberg verification engine, the system flagged:
  {
    "status": "invalid",
    "checkpoint": "IMAGE_INTEGRITY_CHECK",
    "error": "Digest mismatch: Computed image hash [e3b0c44...] does not match assertion image manifest [8f92a10...]"
  }

Attack 2: Hex Editing Recipient Identity Bytes

  • Attack Objective: Modify the recipient identity inside an uncompressed JSON-LD chunk to impersonate another individual (e.g. changing john.doe@company.com to attacker@evil.com).
  • Execution: The attacker loaded the raw binary file into a hex editor, located the embedded JSON-LD assertion, and replaced the recipient email string.
  • Outcome: FAILED (Detected in 0.02s).
  • Why It Failed:
  1. CRC32 Breakage: Changing any character inside a PNG chunk invalidates the 4-byte CRC32 checksum at the chunk trailer. The parser immediately flags a corrupted binary block.
  2. Cryptographic Salt Defense: Credinberg hashes recipient identities using an isolated cryptographic salt: SHA-256(email + ":salt:" + issuerSecret). Even if the attacker repaired the CRC32 checksum, their synthetic identity hash could not match the issuer's signed Ed25519 signature proof.

Attack 3: Metadata Stripping & Re-upload

  • Attack Objective: Strip all metadata to bypass revoked status and pass off an unbaked image as a valid credential.
  • Execution: The attacker passed the image through an automated web optimizer (e.g., pngcrush or ImageMagick) to purge all iTXt, tEXt, and metadata chunks.
  • Outcome: FAILED.
  • Why It Failed: Zero-trust validators require an intact assertion schema. Without an embedded W3C Verifiable Credential or valid signed payload, the engine rejects the upload immediately as an unverified raster image, preventing fraudulent claims.

Attack 4: Signature Replay with Expired Timestamps

  • Attack Objective: Replay an expired credential or a credential issued for a temporary compliance milestone (e.g., 1-year cybersecurity clearance) past its validity window.
  • Execution: The attacker presented a mathematically valid badge assertion where expirationDate had elapsed 6 months prior.
  • Outcome: FLAGGED AS EXPIRED.
  • Why It Failed: The verification engine evaluates both mathematical signature validity and temporal constraint validity. While the signature confirmed authentic issuance, the policy engine enforced:
  {
    "status": "expired",
    "checkpoint": "TEMPORAL_VALIDITY_CHECK",
    "expiredAt": "2026-03-15T00:00:00.000Z",
    "currentTimestamp": "2026-09-20T14:30:00.000Z"
  }

Why 80% of Legacy Web Validators Failed the Test

When we tested these 50 tampered badges across five popular open-source and legacy commercial badge viewing tools:

  • 4 out of 5 tools (80%) evaluated credentials purely by pinging a remote HTTP URL string found inside the metadata, completely ignoring whether the visual image bytes matched the signed payload.
  • In legacy platforms, an attacker could display an authentic-looking verified green checkmark simply by pointing the validator to an un-revoked hosted JSON URL, while displaying fraudulent, modified artwork to the recruiter.

The Zero-Trust Credinberg Verification Protocol

Credinberg implements true Zero-Trust Multi-Layered Validation:

  1. Binary Container Audit: Validates PNG chunk anatomy, CRC32 parity, and SVG XML namespaces.
  2. Cryptographic Proof Evaluation: Evaluates Ed25519 and RSA signatures against published issuer public keys.
  3. Sovereign Domain Cross-Check: Resolves DNS TXT records to prove issuer legitimacy.
  4. Revocation List Verification: Queries the real-time cryptographic revocation registry.

Frequently Asked Questions

Key questions and answers regarding this specification.

Why does editing an image pixel break the cryptographic proof of a baked badge?

In Open Badges 3.0, the visual container's SHA-256 hash is mathematically bound into the cryptographic signature payload. If even a single pixel RGB value is altered, the recomputed hash fails to match the signed assertion.

What is a PNG iTXt chunk and why is it superior to EXIF metadata?

EXIF metadata is frequently stripped by social networks and image processors. PNG iTXt (International Text) chunks are native binary segments defined by ISO/IEC 15948 that support uncompressed UTF-8 JSON-LD payloads protected by mandatory CRC32 cyclic redundancy checksums.

Looking to deploy verifiable credentials in your organization?

Contact our organization team →