Half of Android users don’t bother to lock their phones, despite having the choice of using patterns, passwords, PINs, and even their faces to secure their devices, according to a study by Sophos. Therein lies the problem - people want convenience. It is too troublesome to spend that extra few seconds typing your password on the tiny phone keyboard. With the advent of behavioral biometrics, I thought it apt to be able to make a convenient yet secure lock screen that uses various sensors an channels to determine if the user unlocking the phone is authorised, and if not, present a secondary authentication sequence in the form of voice authentication provided by Knurld.
What it does
It looks like a normal swipe-to-unlock lock screen. However, when you do so, it looks at the way you are unlocking your phone, specifically the time to unlock as well as pressure data, to guess if you are the actual user or not. If so, the phone is unlocked as per normal. However, if there are indicators that you might not be authorized (swipe too slow or too fast), you will be asked to verify your voice print.
Challenges I ran into
I initially used Scikit-learn, a machine learning kit, to build up a training model for users' unlocking pattern. However, I needed to have a large data set of users to form the negative training model for the portion where I trained the model not to unlock the phone for. Without this initial dataset, the model could not work as intended and had to be scrapped.
What I learned
It was my first time writing an Android app. The learning curve was pretty steep since I was writing a lock screen app and had to override tons of system calls to make it function like a lock screen. For example, I had to disable the home button but this did not work in later version of the Android SDK and OS.
What's next for Biometric Lock Screen
Integrate the Neura SDK in the app to make it more secure.
Also, it seems that the Android device I have do not have finger pressure data, so I could not test that portion.