Your Fortress Against Behavioral Fingerprinting
Invisible protection for your typing, mouse, and touch patterns. Works silently.
Quick Start • Features • How It Works • Installation • Documentation
Behavioral biometrics tracking is an increasingly common privacy threat. Websites analyze your:
- ⌨️ Typing patterns - keystroke timing, rhythm, word boundaries
- 🖱️ Mouse movements - velocity, acceleration, Bezier curves
- 📜 Scroll behavior - speed, patterns, pauses
- 📱 Touch patterns - pressure, angle, swipe velocity
- 📡 Device motion - accelerometer, gyroscope data
These create unique "behavioral fingerprints" that can identify you across the web—even in private browsing mode. Research shows that 36% of major websites employ this tracking technique.
| Company | Industry | Tracking Focus |
|---|---|---|
| BioCatch | Banking | Keystroke + Mouse |
| BehavioSec | Authentication | Full Behavioral |
| TypingDNA | Identity | Keystroke Dynamics |
| NuData | E-commerce | Session Behavior |
- Event Interception - Capture-phase interception of keyboard, mouse, and scroll events
- Adaptive Delay Injection - Privacy-level-based timing obfuscation (10-80ms)
- Order Preservation - Events maintain original sequence despite variable delays
- Context-Aware Adjustments - Gaming detection, form fields, search boxes
- Word-Boundary Detection - Natural pauses between words (Gaussian distribution)
- Digraph Noise - Common key-pair timing pattern obfuscation
- Session Randomization - Per-session behavioral variations
- ML Evasion - Adversarial patterns against neural network classifiers
Based on latest academic research:
| Protection | Research Basis | Defense Against |
|---|---|---|
| Touch Obfuscation | BehaveFormer | Mobile fingerprinting |
| Device Motion | Sensor fingerprinting papers | Accelerometer/gyroscope tracking |
| Timing Attacks | Web timing attacks research | RAF/Audio context timing |
| Interaction Patterns | Behavioral biometrics | Focus/blur/click patterns |
| Flight Time Correlation | DeepKey, TypeNet | Keydown/keyup timing analysis |
| Fatigue Modeling | Fatigue effects research | Session-based pattern detection |
| Log-Normal Distribution | Human reaction time studies | Statistical fingerprinting |
| Pointer Obfuscation | Pen/stylus research | Pressure/tilt fingerprinting |
- Extension Hiding - Prevents detection via
chrome.runtime.id - Symbol-based Markers - Non-enumerable synthetic event markers
- IIFE Wrapping - Minimal global footprint
- Web Worker Timing - Protection against worker-based timing attacks
- Dieter Rams-Inspired UI - Minimalist black & white design
- Three Privacy Levels - Low, Medium, High
- Real-time Statistics - Protection metrics dashboard
- Tracker Detection - Alerts when behavioral trackers detected
┌─────────────────────────────────────────────────────────────────────┐
│ Content Script Layer │
├─────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────┐│
│ │ Keyboard │ │ Mouse │ │ Scroll │ │ Touch ││
│ │ Interceptor │ │ Obfuscator │ │ Obfuscator │ │Obfuscator││
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ └────┬─────┘│
│ │ │ │ │ │
│ └──────────────────┴──────────────────┴───────────────┘ │
│ │ │
│ ┌───────────▼───────────┐ │
│ │ Delay Calculator │ │
│ │ (Word Boundary + │ │
│ │ Digraph + Session) │ │
│ └───────────┬───────────┘ │
│ │ │
│ ┌───────────▼───────────┐ │
│ │ Event Queue │ │
│ │ (Order Preservation) │ │
│ └───────────┬───────────┘ │
│ │ │
│ ┌───────────▼───────────┐ │
│ │ Event Synthesizer │ │
│ │ (Synthetic Dispatch) │ │
│ └───────────────────────┘ │
├─────────────────────────────────────────────────────────────────────┤
│ V2 Protection Layer │
├─────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────┐│
│ │ Device │ │ Timing │ │ Interaction │ │ ML ││
│ │ Motion │ │ Attack │ │ Pattern │ │ Evasion ││
│ │ Protection │ │ Protection │ │ Protection │ │ ││
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────┘│
├─────────────────────────────────────────────────────────────────────┤
│ Stealth Layer │
├─────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Extension │ │ Performance │ │ WebWorker │ │
│ │ Hider │ │ Coarsener │ │ Timing │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Service Worker (Background) │
├─────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Storage │ │ Statistics │ │ Message │ │
│ │ Manager │ │ Manager │ │ Router │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ React Popup UI │
├─────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Main │ │ Stats │ │ Settings │ │
│ │ View │ │ View │ │ View │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
# Clone the repository
git clone https://github.com/Fevra-Dev/kala.git
cd kala
# Install dependencies
npm install
# Build the extension
npm run build
# Load in Chrome
# 1. Navigate to chrome://extensions
# 2. Enable "Developer mode"
# 3. Click "Load unpacked"
# 4. Select the dist/ folder# Prerequisites: Node.js 18+ and npm
# Install dependencies
npm install
# Development build (with source maps)
npm run dev
# Production build (optimized, no console logs)
npm run build
# Run tests
npm test
# Lint code
npm run lintChrome / Brave / Edge:
- Navigate to
chrome://extensions(oredge://extensions) - Enable "Developer mode" (top right)
- Click "Load unpacked"
- Select the
dist/directory
Firefox:
- Run
npm run build:firefox(if available) - Navigate to
about:debugging#/runtime/this-firefox - Click "Load Temporary Add-on"
- Select
dist/manifest.json
// 1. Capture-phase interception (before page sees event)
document.addEventListener('keydown', handler, { capture: true });
// 2. Clone original event data
const eventData = cloneEvent(originalEvent);
// 3. Calculate delay with multiple noise sources
const delay = baseDelay // Privacy level base (10-80ms)
+ wordBoundaryPause // Natural word pauses
+ digraphNoise // Key-pair patterns
+ sessionVariation // Per-session randomness
+ gaussianNoise; // Natural variance
// 4. Queue for ordered dispatch
eventQueue.enqueue(eventData, delay);
// 5. Synthesize and dispatch with timing obfuscation
eventQueue.process(() => {
synthesizer.dispatch(eventData, target);
});| Level | Delay Range | Use Case |
|---|---|---|
| Low | 10-20ms | Gaming, real-time typing |
| Medium | 20-45ms | General browsing (recommended) |
| High | 40-80ms | Maximum privacy |
Kala automatically adjusts behavior based on input context:
- Gaming - Reduced latency when WebGL/gamepad detected
- Search fields - Minimal delay for better UX
- Password fields - Standard protection
- Text editors - Slight adjustment for contenteditable
| Module | Purpose |
|---|---|
event-interceptor.ts |
Capture-phase keyboard/pointer interception |
event-queue.ts |
Order-preserving delayed dispatch |
delay-calculator.ts |
Adaptive delay with log-normal distribution |
event-synthesizer.ts |
Synthetic event creation |
word-boundary-detector.ts |
Natural typing pause detection |
digraph-noise-generator.ts |
Key-pair timing patterns |
mouse-obfuscator.ts |
Mouse movement noise injection |
scroll-obfuscator.ts |
Scroll pattern obfuscation |
touch-obfuscator.ts |
Touch/swipe velocity obfuscation |
pointer-obfuscator.ts |
Pen pressure/tilt normalization |
flight-time-correlator.ts |
Correlated keydown/keyup timing |
fatigue-model.ts |
Session-based typing fatigue simulation |
device-motion-protection.ts |
Accelerometer/gyroscope protection |
timing-attack-protection.ts |
RAF/audio timing attack defense |
interaction-pattern-protection.ts |
Focus/blur/click pattern protection |
ml-evasion.ts |
Adversarial ML patterns |
extension-hider.ts |
Extension fingerprinting prevention |
performance-coarsener.ts |
performance.now() precision reduction |
webworker-timing-protection.ts |
Web Worker timing attack defense |
context-detector.ts |
Gaming/form/search context detection |
tracker-detector.ts |
Behavioral tracker signature detection |
index.ts |
Main content script entry point |
Kala is designed for minimal performance impact:
| Metric | Target | Actual |
|---|---|---|
| Event processing overhead | <2ms | ~1.2ms |
| Frame rate maintenance | 60 FPS | ✅ Maintained |
| Memory footprint | <5MB | ~3MB |
| CPU usage | <5% | ~2% |
| Document | Description |
|---|---|
| Testing Guide | How to test and develop the extension |
# Run unit tests
npm test
# Run with coverage
npm run test:coverage
# Run linting
npm run lint
# Type checking
npm run typecheck
# Full CI pipeline
npm run ciKala's design is informed by academic research on behavioral biometrics:
- BeCAPTCHA-Mouse (2020) - Mouse dynamics analysis and evasion
- BehaveFormer (2023) - Multi-modal behavioral biometrics
- DeepKey (2017) - Keystroke dynamics authentication
- TypeNet (2023) - Deep learning keystroke analysis with flight time
- Sensor fingerprinting - Device motion fingerprinting research
- Fatigue Effects on Keystroke Dynamics (2019) - Session-based variation
- Log-normal Distribution of Inter-Key Intervals (2018) - Statistical modeling
- TypeScript - Type-safe JavaScript
- React 18 - Modern UI framework
- Webpack 5 - Module bundling
- Chrome Extension Manifest V3 - Latest extension platform
- Jest - Testing framework
- ESLint + Prettier - Code quality
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Behavioral biometrics research community
- Privacy advocacy organizations
- Open source contributors
Kala — Your fortress. Works silently.