fakeshield-api / fakeshield /docs /architecture.md
Akash4911's picture
Production Deploy: Improved robustness and logging
66b6851
|
Raw
History Blame Contribute Delete
13.2 kB

πŸ›‘οΈ FakeShield: System Architecture & DFD Documentation

This document provides a comprehensive analysis of the FakeShield AI Forensic Laboratory architecture. It details the Level 1 Data Flow Diagram (DFD) and zooms in on the Level 2 Data Flow Diagram (DFD) for the AI Image Forensic Lab (Process 3.0).


πŸ“‚ Overview of Data Flow Diagrams (DFDs)

A Data Flow Diagram (DFD) maps out the flow of information for any process or system. It uses standardized symbols to represent:

  • External Entities (Square / Rectangle): Sources or destinations of data outside the system's boundary.
  • Processes (Circle / Rounded Rectangle): Processing units that transform input data flows into output data flows.
  • Data Stores (Open-ended Rectangle / Parallel Lines): Locations where data is stored.
  • Data Flows (Arrows): Directed paths showing the movement of data.

πŸ”„ Core Architectural & Access Control Rules

The DFD is designed to enforce the two main technical characteristics of your platform:

1. Unified Database Store (MongoDB)

All persistent data in FakeShield is stored within a single logical MongoDB Database. It is segmented into the following collection stores:

  • users: Stores usernames, password hashes, and subscription status (free or paid).
  • text_forensics: Stores text scan logs and detailed model outputs.
  • image_forensics: Stores image metadata audits, Grad-CAM overlays, and ELA records.
  • audio_forensics: Stores voice cloning results, spectrograms, and pitch metrics.
  • video_forensics: Stores frame-by-frame landmark tracking and consistency telemetry.

2. Tiered Access Permissions

  • AI Text Lab (Process 2.0): Open to both Free and Paid/Subscription tiers. Users only need to register and log in to scan text.
  • AI Image Lab (Process 3.0), AI Audio Lab (Process 4.0), and AI Video Lab (Process 5.0): Restricted to Paid/Subscription tier accounts. Free users are blocked with a 403 Forbidden error. They must use the Upgrade Handler (Process 8.0) to gain access.

🎨 Level 1 DFD: System Overview

The Level 1 DFD displays the macro-level subsystems of FakeShield, showing how data streams between user inputs, the security routers, the background status tracker, and the backend MongoDB database.

graph TD
    %% Define Styles and Shapes for DFD Standards
    classDef entity fill:#1e1b4b,stroke:#818cf8,stroke-width:2px,color:#fff;
    classDef process fill:#0f172a,stroke:#38bdf8,stroke-width:2px,color:#fff;
    classDef datastore fill:#18181b,stroke:#a1a1aa,stroke-width:2px,color:#fff;

    %% External Entities (Rectangles)
    User["πŸ‘€ External Entity: User / Client (React UI)"]:::entity
    SMTP["πŸ“¨ External Entity: SMTP Mail Server"]:::entity
    OAuth["πŸ”‘ External Entity: OAuth Provider (Google/GitHub)"]:::entity

    %% Process Nodes (Rounded Rectangles / Circles)
    P1["βš™οΈ Process 1.0:<br/>Authentication & Profile Manager"]:::process
    P2["βš™οΈ Process 2.0:<br/>AI Text Lab (Free Tier Access)"]:::process
    P3["βš™οΈ Process 3.0:<br/>AI Image Lab (Subscription Plan Only)"]:::process
    P4["βš™οΈ Process 4.0:<br/>AI Audio Lab (Subscription Plan Only)"]:::process
    P5["βš™οΈ Process 5.0:<br/>AI Video Lab (Subscription Plan Only)"]:::process
    P6["βš™οΈ Process 6.0:<br/>Forensic PDF Report Builder"]:::process
    P7["βš™οΈ Process 7.0:<br/>Dashboard & Analytics Aggregator"]:::process
    P8["βš™οΈ Process 8.0:<br/>Subscription & Payment Upgrade Handler"]:::process

    %% Unified MongoDB Data Store (Parallel Lines / Cylinders)
    subgraph D1["πŸ’Ύ Data Store 1.0: Unified MongoDB Database"]
        D1a["D1.1: Users Collection"]:::datastore
        D1b["D1.2: Text Forensics Collection"]:::datastore
        D1c["D1.3: Image Forensics Collection"]:::datastore
        D1d["D1.4: Audio Forensics Collection"]:::datastore
        D1e["D1.5: Video Forensics Collection"]:::datastore
    end
    
    %% In-Memory Cache for Status Tracking
    D6["πŸ’Ύ Data Store 2.0:<br/>In-Memory Job Cache (RAM)"]:::datastore

    %% -------------------------------------------------------------
    %% Data Flows
    %% -------------------------------------------------------------

    %% Authentication flows
    User -->|Local credentials / Signup info| P1
    User -->|OAuth Sign In Trigger| P1
    P1 <-->|OAuth Verification token exchange| OAuth
    P1 -->|Issue JWT session token & profile details| User
    P1 <-->|Read / Write user profile parameters| D1a

    %% Billing & Upgrade flows
    User -->|QR payment code & Upgrade request| P8
    P8 -->|Upgrade status / tier confirmation| User
    P8 -->|Update user status to subscription_tier=paid| D1a

    %% Text Lab (Free Tier Flow)
    User -->|Submit Text & JWT token (Free or Paid)| P2
    P2 -->|Acknowledge request & return Job ID| User
    P2 -->|Initialize job status| D6
    P2 -->|Background Worker runs models| P2
    P2 -->|Update job status to complete & write results| D6
    User -->|Poll status (Job ID, JWT)| P2
    D6 -->|Read current job status & outputs| P2
    P2 -->|Return Text Analysis details| User
    P2 -->|Persist text scan outputs| D1b
    P2 -->|Dispatch warning email when threat=CRITICAL| SMTP

    %% Image Lab (Subscription Plan Flow)
    User -->|Submit Base64 Image, Grad-CAM request, JWT token| P3
    P3 -->|Validate Subscription Status| P3
    D1a -->|Verify tier is paid| P3
    P3 -->|Synchronous ELA, spectral analysis & DINOv2 metrics| P3
    P3 -->|Persist image scan metrics| D1c
    P3 -->|Return Image forensics split maps & scores (if paid)| User

    %% Audio Lab (Subscription Plan Flow)
    User -->|Submit Audio WAV/MP3 file, JWT token| P4
    P4 -->|Validate Subscription Status| P4
    D1a -->|Verify tier is paid| P4
    P4 -->|Acknowledge request & return Job ID (if paid)| User
    P4 -->|Initialize job status| D6
    P4 -->|Background Worker runs WavLM & AST| P4
    P4 -->|Update job status to complete & write results| D6
    User -->|Poll status (Job ID, JWT)| P4
    D6 -->|Read current job status & outputs| P4
    P4 -->|Return Audio analysis metrics| User
    P4 -->|Persist audio scan metrics| D1d

    %% Video Lab (Subscription Plan Flow)
    User -->|Submit Video MP4 file, JWT token| P5
    P5 -->|Validate Subscription Status| P5
    D1a -->|Verify tier is paid| P5
    P5 -->|Acknowledge request & return Job ID (if paid)| User
    P5 -->|Initialize job status| D6
    P5 -->|Background Worker checks landmark consistency| P5
    P5 -->|Update job status to complete & write results| D6
    User -->|Poll status (Job ID, JWT)| P5
    D6 -->|Read current job status & outputs| P5
    P5 -->|Return Video consistency metrics| User
    P5 -->|Persist video scan metrics| D1e

    %% PDF Report Builder flows
    User -->|Request report download (Scan ID + JWT)| P6
    P6 -->|Downloadable PDF binary stream| User
    D1b -->|Fetch text results| P6
    D1c -->|Fetch image results| P6
    D1d -->|Fetch audio results| P6
    D1e -->|Fetch video results| P6

    %% Dashboard and Stats flows
    User -->|Request dashboard overview & statistics| P7
    P7 -->|Aggregated scan counts, history logs| User
    D1a -->|Verify user's billing/tier metadata| P7
    D1b -->|Query text scans list| P7
    D1c -->|Query image scans list| P7
    D1d -->|Query audio scans list| P7
    D1e -->|Query video scans list| P7

πŸ”¬ Level 2 DFD: AI Image Forensic Lab (Process 3.0)

A Level 2 DFD zooms in on a specific Level 1 Process to map out its internal steps. The diagram below details the inner workings of the AI Image Forensic Lab (Process 3.0), demonstrating how base64 inputs are sanitized, evaluated for quick-veto watermarks, processed through a thread pool, and combined into a final confidence-weighted decision.

graph TD
    %% Define Styles
    classDef entity fill:#1e1b4b,stroke:#818cf8,stroke-width:2px,color:#fff;
    classDef process fill:#0f172a,stroke:#38bdf8,stroke-width:2px,color:#fff;
    classDef datastore fill:#18181b,stroke:#a1a1aa,stroke-width:2px,color:#fff;

    %% External Entity
    User["πŸ‘€ External Entity: User / Client (React UI)"]:::entity

    %% Sub-processes of Process 3.0
    P31["βš™οΈ Process 3.1:<br/>Base64 Decoder & Format Sanitizer"]:::process
    P32["βš™οΈ Process 3.2:<br/>Watermark & C2PA Metadata Auditor<br/>(Fast Short-Circuit Checks)"]:::process
    P33["βš™οΈ Process 3.3:<br/>Forensic Signal Extraction Pipeline<br/>(Parallel Thread Pool)"]:::process
    P34["βš™οΈ Process 3.4:<br/>Confidence-Weighted Fusion Engine<br/>(Veto Rules & Decision Logic)"]:::process
    P35["βš™οΈ Process 3.5:<br/>MongoDB Image Scan Logger"]:::process

    %% Data Stores
    D1a["πŸ’Ύ D1.1: Users Collection (MongoDB)"]:::datastore
    D1c["πŸ’Ύ D1.3: Image Forensics (MongoDB)"]:::datastore

    %% -------------------------------------------------------------
    %% Data Flows (Process 3.0 Breakdown)
    %% -------------------------------------------------------------
    
    %% Input and Authorization
    User -->|1. Base64 Image string + JWT token| P31
    D1a -->|2. Verify user has paid/subscription status| P31
    
    %% Decoding & Magic number check
    P31 -->|3. Cleaned Image Byte Stream (WAV/PNG/JPG checks)| P32
    
    %% Short circuit evaluation (Gemini Watermark / C2PA metadata)
    P32 -->|4a. Watermark/C2PA Detected: AI Veto (1.0 Prob, 100% Conf)| P34
    P32 -->|4b. No Short-circuit: Pass bytes to ML extractors| P33
    
    %% Deep Extraction Pipeline
    subgraph P33Sub["Forensic Extraction Modules"]
        P33 -->|FFT Spectrum| FFT["FFT Anomaly Extractor"]
        P33 -->|DINOv2 ViT CLS| DINO["RIGID Perturbation Evaluator"]
        P33 -->|umm-maybe & dima806| Neural["Neural Classifier Ensemble"]
        P33 -->|Error Level Analysis| ELA["ELA Compressor"]
        P33 -->|Wiener Filter Residual| PRNU["PRNU Noise Auditor"]
        P33 -->|EXIF Auditor| EXIF["EXIF Metadata Inspector"]
        P33 -->|CLIP Prompt Align| CLIP["CLIP Semantic Evaluator"]
    end
    
    %% Outputs from extraction to decision engine
    FFT -->|5. Radial average slope & colormap| P34
    DINO -->|5. Cosine similarity shifts| P34
    Neural -->|5. Combined classifier weights| P34
    ELA -->|5. Recompression error variance map| P34
    PRNU -->|5. Isotropy residual metrics| P34
    EXIF -->|5. Software tagging blacklist results| P34
    CLIP -->|5. Prompt similarity vectors| P34

    %% Decision, Logging and Return
    P34 -->|6. Unified Diagnostics payload (Verdicts, Heatmaps)| P35
    P35 -->|7. Persist document to image_forensics collection| D1c
    P34 -->|8. Final Analysis report (JSON response)| User

πŸ“Š Detailed Level 2 Data Flow Specifications (Process 3.0)

Step ID Source Destination Data Elements Transmitted Purpose / Code Reference
3.0.1 User Process 3.1 Base64 Image String, Grad-CAM Flag, JWT User triggers image audit. Check authorization from users collection.
3.0.2 Process 3.1 Process 3.2 Sanitized Binary Bytes Decodes Base64, strips padding, validates magic headers (JPEG FF D8 FF, PNG 89 50 4E 47, etc.).
3.0.3 Process 3.2 Process 3.4 AI Veto (1.00 Prob, 100% Conf) Short-Circuit Route: Bypasses heavy processing if Google Gemini watermark astroid or C2PA c2pa.genai is found.
3.0.4 Process 3.2 Process 3.3 Verified Byte Stream Standard Route: If no watermark is found, routes bytes to thread pool for feature extraction.
3.0.5 Process 3.3 (Modules) Process 3.4 Individual Scores, spectral graphs, ELA images Extracts 7 signals (FFT, DINOv2, ELA, PRNU, Neural, EXIF, CLIP) in parallel.
3.0.6 Process 3.4 Process 3.5 Final Verdict, Threat Level, Heatmaps Merges signals using confidence weights. If CLIP Semantic > 0.92, triggers digital art veto.
3.0.7 Process 3.5 D1.3 Store Scan document schema Logs scan results to MongoDB image_forensics collection.
3.0.8 Process 3.4 User Final JSON analytical results Delivers ELA diff overlay, Spectral power plots, and gauges back to the frontend.

πŸ–ŒοΈ Step-by-Step Drawing Guide for Project Presentation

To explain the Level 2 DFD in your project slides or viva:

  1. Emphasize the Short-Circuit (Process 3.2): Standard ML models are computationally heavy. Explain that Process 3.2 checks for Gemini astroid watermarks and C2PA credentials to immediately output a verdict of AI-Generated without consuming ML thread time.
  2. Describe the Parallelism (Process 3.3): Explain that the system spawns a ThreadPoolExecutor to extract seven separate forensic signals (FFT, RIGID/DINOv2, Neural Ensemble, ELA, PRNU, EXIF, CLIP) concurrently, preventing CPU execution block.
  3. Explain the Weighted Fusion (Process 3.4): Highlight how the engine resolves conflicts. If deep classifiers report "human" due to texture smoothing, the CLIP Semantic veto overrides the neural model to correctly classify AI-generated illustrations.