Kinematic features are all you need.
For my first paper, I studied whether movement patterns could tell generated mouse input from a real person's input. I also tested what happened when the generator knew exactly how the detector worked.
PDF Mouse generators already imitate the curves, timing, and small corrections seen in human movement. I wanted to know whether that was enough to fool a detector that only saw the movement itself.
I tested the detector on the Balabit and BOUN datasets. It found more than 99.5% of generated movements while flagging fewer than 0.1% of human ones. After I retrained the detector once, the attacker's mean evasion score fell from 0.999 to 0.010 by round five.
- Equal error rate
- ≤ 0.001
- Balabit + BOUN datasets
- TPR at FPR < 0.1%
- > 99.5%
- True positive rate
White-box evasion · before → after retraining
Mean evasion score across five rounds of white-box Bayesian optimization.
- 43,216 human trials
- 29 users
- 17 of 32 features
How I approached it.
I focused on the shape and timing of each movement. I left out features that could reveal the mouse or its polling rate instead of the movement itself.
- 01
What I measured
I gave the detector only x and y positions and their timestamps. It uses 17 movement features and does not rely on information about the mouse itself.
- 02
Why timing matters
Modern generators already imitate several parts of human movement. They can draw a convincing path, but their speed and timing still make them easier to identify.
- 03
How I tested it
I let the attacker see every feature and optimize against the detector for five rounds. After I retrained the detector once, the attacker's mean evasion fell from 0.999 to 0.010.
What came out of it.
The main lesson was that each generator could match some parts of human movement, but none could match all of them at the same time.
-
Movement data only
I built the detector around x, y, and timestamps. It does not rely on device fingerprints, and I left out features that reveal polling rate.
-
Retraining the detector
I ran five rounds of white-box Bayesian optimization. After one detector retraining round, the attacker's mean evasion fell from 0.999 to 0.010.
-
A feature guide
I organized 32 movement features into six groups and identified 15 that should be left out because they reveal polling rate.
-
SigmaDrift
I also released the mouse generator as open source so other researchers can test against it and build on the work.
Read the paper or check my code.
I've made the paper, detector, and SigmaDrift generator available below.
Open the PDF- Mouse dynamics
- Adversarial ML
- Motor control
- Anti-cheat
- Behavioral biometrics