Expanding a bit from my original thread: https://safenetforum.org/t/behavioral-biometric-with-safe/
I would like to make a specific post with more details of how it may benefit the MaidSafe project.
Since we are in the middle of the redesign of the authentication scheme I think it is the appropriate moment to put this option on the table: Keystroke Dynamics.
Keystroke Dynamics can identify a person by the speed, style and latency of typing, it also considers the ratio of mistakes, to uniquely identify the user.
Instead of using usernames or double passwords, imagine the following login sequence:
(imagine that you are already enrolled)
- You open the launcher
- You are greeted and asked to type a short phrase generated randomly.
- Once you submit it, Launcher greets you and you are logged.
Very easy, there is nothing to memorize, just be your normal self.
The advantages of this? Besides the obvious user friendliness, normal keylogging doesn’t work, the words you type are meaningless.
What matters is how you type it, that identifies who you are.
If you are thinking about keyloggers that timestamp key strokes, well, since the paragraph you type are randomly generated everytime you login the attacker can’t simply do a reply attack. To successfully compromise it, it would involve some deep analytics to map out the timing of every keystroke, OCRing when the phrase appears and emulating your typing style.
In any case, if your computer is pwned and they have enough privileges to have payloads running it is game over anyways, but with this Keystroke Dynamics implemented it would require some extra effort as it must be tailored for this specific attack incrementing the cost of the attack.
This also would provide a solution to the “proof of unique human” (https://safenetforum.org/t/proof-of-unique-human)
It could also be combined with username/password scheme, still using keystroke dynamics.
I was thinking the following:
- You open the launcher
- Type your one password (min 5 characters, complexity not required), if everything okay, you are authenticated.
2.1) If you you mistype it, try again
2.2) If password is correct but he timing doesn’t match, sends you to the full phrase authentication.
In the case of using passwords, I think they can be particularly weaker in replay attacks.
The enrollment process could consist on typing two to three phrases that would contain all the letters of the alphabet (like the “Lazy brown fox…”). It would be really really simple and straightforward, and yet there wouldn’t be a compromise on its security.
In the enrollment it could be added an extra option for emergencies: asking the user to type two phrases with only one hand, for each hand. This way you allow the user to get authenticated if they get one hand incapacitated, I think it is enough redundancy considering that statistics of both hands of being mutilated are quite low.
Minor injuries in fingers shouldn’t affect the typing latency.
So summarizing, the benefits are:
- Bruteforcing becomes impossible (not only you have to find the right password, but also the right latency for each character)
- Even typical Keylogging becomes irrelevant
- Shoulder surfing or writing down the passwords are also irrelevant
- New methods of hacking must be invented to attack this specific system, and to exploit that the attacker must gain local access. In fact at that point it may be more practical to directly grab the private key from memory, than to emulate the keystrokes latencies as it would take time to map all the keys of the victim. (you will have to sit there and wait to “harvest” enough keystrokes, hoping that he writes a lengthy mail anytime soon)
As an anti-bot method, botmakers would have to randomly generate profiles with keystroke timings maps, then OCRing the phrases that the launcher would be generating for enrollment. It would certainly add more difficulty to the process.
For anti bot measures I would propose at registration/enrollment to show a short game such as breaking the maidsafe logo randomly into pieces and asking the user to fix the puzzle by clicking and dragging the pieces with the mouse, very easy for humans, very hard to automatize it.
Some papers on Keystroke Dynamics:
There is a commercial demo here, so you can test it out with enrollment and authentication: