URL: https://ethical-tech-colab.github.io/digital-passport-artworks/
A browser-based prototype for issuing, verifying, and revoking digital passports for artworks — built entirely client-side with real cryptographic primitives.
Prototype notice: Duplicate detection works within a single browser session only. Upload one image, issue its passport, then upload another image — the system compares them in real time. There is no persistent database; refreshing the page clears all memory. This demo shows the detection pipeline, not a production registry.
This single-page application walks through the full lifecycle of an artwork's digital passport:
- Upload — submit artwork photos with an interactive crop tool that auto-detects the subject
- Fingerprint — compute three independent fingerprints (SHA-256, perceptual dHash, and angle count)
- Similarity Search — check against all previous submissions in the session using perceptual hashing, multi-scale keypoint matching (Harris corners + SIFT-style descriptors + RANSAC), optional MobileNet embeddings, and engineered feature vectors
- Forensic Signal Fusion — run spectral/edge energy, noise-floor, block-relative ELA, and provenance marker checks
- Forgery-Risk Scoring & Routing — compute a weighted risk score; auto-clear, flag for human review, or block based on similarity + risk
- Certificate Chain — generate a real ECDSA P-256 trust chain (governance root → federated root → issuing CA) in-browser
- Passport Issuance — the issuing CA signs the artwork record; duplicate submissions are blocked
- Revocation — StatusList2021-style signed bitstring; instant revoke/reinstate
- Verification — full chain-of-trust verification; edit the passport JSON to simulate tampering
- Duplicate detection — uploading the same artwork twice (even from a different angle) is caught by the similarity engine; the system blocks issuing a second passport and directs the user to retrieve the existing record
- Human review gate — inconclusive risk scores or unconfirmed similarity matches are routed to human review instead of auto-issuing
- Real cryptography — ECDSA P-256 key generation, signing, and verification via the Web Crypto API
- Fully client-side — nothing leaves the browser tab; no server, no database, no network calls (except the optional MobileNet model)
Open index.html in any modern browser. For full Web Crypto support, serve it over localhost:
# Python
python3 -m http.server 8080
# Node
npx serve .Then visit http://localhost:8080.
- Vanilla HTML / CSS / JavaScript (single file, no build step)
- Web Crypto API (ECDSA P-256, SHA-256)
- Canvas API (dHash, color histograms, HOG descriptors, keypoint extraction, ELA)
- Optional: TensorFlow.js + MobileNet for real embedding-based similarity
MIT