I have not been able to find any credible source which tried to prove or disprove the randomness of mouse movements.
- A Google Scholar search for "mouse movement entropy" gives surprisingly few results: about one page of computer science results, of which three which are tangentially related, before it gets to research on "behaviour of mice in open fields" (which was enthralling, by the way).
- "User re-authentication via mouse movements" is related but tangential. While they seem to get pretty good results in terms of false positives and false negatives, they note that it's not good enough for authentication by itself. This indicates that, at least when you have one mouse movement sample of an individual, it should be much easier to predict future movements (and nobody ever visits an untrusted website which could capture your mouse movements).
- "A true random number generator based on mouse movement and chaotic cryptography" is a proposal on how one could implement such an RNG, not whether the source (mouse movements) are actually unpredictable in the first place.
- And a git repository for the aforementioned proposal.
- Relevant questions on this website do not answer the question: none are either long enough to contain evidence in itself (which would have to be empirical, since we're talking about analysing human behaviour, so that means describing a test setup, giving statistical properties of the results, describing the conclusion... a big post altogether) or link to such research.
- What are you doing when you move your mouse randomly during a truecrypt volume creation?
- Research about entropy of human randomness?
- Note that this question is not a duplicate because I am asking about mouse movements specifically. That question is more broad, as exemplified by the answer regarding user-chosen passwords or user-generated brain waves.
- How much more secure is encryption if the program requires random input from the user?
- Is this password generator safe?
- How much time / "entropy collected" should generating a RSA 2048bit keypair take?
- How high is the entropy of this salt-generating code? (No code-reading actually necessary)
- Approximately how much entropy in each of these low entropy sources?
- For how much time should I randomly move the mouse for generating encryption keys?
- On our sister site, there are again relevant questions but no answers which answer this question:
- Mentions that NIST defines some statistical tests which you can do, presuming it will show that mouse movements pass such tests. I am not sure how comprehensive this battery of tests really is since in my experience, most such tests pass anything and everything with flying colours. It might be good to know if those tests are reliable and if so, if they indeed approve of mouse movements.
- Random web results:
- https://en.wikipedia.org/wiki/Entropy_(computing) None of the sources seem to answer the question. (The article does not claim mouse movements have good entropy.)
- The conclusion is more about how compressible mouse movements are, than about the actual unpredictability. As a short example, while a compressor would usually not be able to compress the output of a simple RNG by much, observing even a few outputs might be enough to predict the next state. Similarly, if a few points describe the curve the mouse is making, one can extrapolate many of the other points. I'm not saying the source is irrelevant, but I also don't see it as (close to) conclusive evidence.
- Reading the comment thread after writing the above, I found it funny to see someone saying "Estimating [unpredictability of] user mouse movement is a complicated human factors question.. there is probably some academic research on that already". You don't say!
It might be relevant to mention that a quick look at the Puttygen source code indicates that it seems to generates private keys solely based on mouse movements. It fills an array with the time of mouse movement events in the even cells and the mouse position in the odd cells, sprinkles some magic shuffling over it (shuffling memory, xoring fields), and calls some RSA/DSA/EC* key generator with the array as argument. Whether there is serious evidence that mouse movement is a good entropy source is quite important for such use-cases. Note that this is different from using it as an additional source, such as in the Linux kernel, which will only increase the quality even if it's a mediocre source.
I have a hard time believing nobody ever looked into this. What am I missing?