The growing fields of Artificial Intelligence and Biometrics led the the fusing of the two concepts to produce a innovative and useful program that learns how an individual types in order to authenticate them instead of using a password.
What it does
NoTypePass generates random sentences for the user to type, records data related to each key event, such as when a key is pressed or when it is released, and then finally sends the data to a machine learning algorithm to either train the algorithm to learn how you type or to authenticate a user by categorizing your typing style to a previously learned pattern.
How we built it
Using PyGame, we built a simple GUI that displays the random sentence to type and provides a place to type the sentence. PyGame also manages the event keys, and time.time() records the start and end time of each individual event. All of this data is stored in an object representing a Key press event, and then a Parser class uses several loops to sift through the data and calculate usable information, such as the average time between each possible combination of key presses, and the average amount of time each key has been pressed. All of this data is then written to a text file, while allows for easy organization of different users in the application and the machine learning algorithm. The machine learning algorithm looks at a large set of data from several different perspectives, and then creates a mathematical function to approximate it. This function is then used to categorize new data into a previously learned pattern, in order to authenticate a user.
Challenges we ran into
Recording and formatting precise, usable data of staggered key press events required several complex nested loops and recursive functions, which required several hours of planning and rewriting code. The amount of raw data that was produced was a much larger quantity than we first expected, and therefore we had to adapt. Training and perfecting the machine learning algorithm in order to yield the most accurate possible approximation also took several hours. Finally, typing random sentences for hours in order to produce the necessary data to train the machine learning algorithm was painstaking.
Accomplishments that we're proud of
We were able to produce a program that accurately records unique data about how a person types, in a format that is usable by a machine learning algorithm. We were also able to develop a machine learning algorithm specific to this application, and produce data to train the algorithm and accurately categorize new data into already existing patterns in order to authenticate a user.
What we learned
Everybody on the team became much more confident in the Python scripting abilities, and we all learned how to organize and manipulate large amount of data. We also learned about different machine algorithm approaches and how to train them to be more accurate.
What's next for NoTypePass
The concept of NoTypePass can be applied to a lot of different uses. We started the development of a Google chrome extension to work like the Chrome password manager, using keystroke dynamics to authenticate a user instead of a Google account login, and autofill these stored passwords into a webpage. We also plan to create a Unix and Windows services to record keystroke information in the background, to more efficiently and effectively learn how a person types while they work on homework or they next hackathon project.