Many a times our data is copied by unauthorized users through external hard disks or USB drives. There are several USB protection apps available for PC. One of the common problems with all the apps are that the apps are password protected. So, if an imposter knows the app password, he can copy the data or change the data easily. We wanted to build a system that can offer password protection to USB and also protect the system against password leak. What better ways to solve than a biometric authentication for the system? As Knurld announced their cloud based voice recognition APIs, we got excited and thought that their service could be the missing link between what current USB locking apps provides and what they should be. So, building an extremely secured USB locker for PC using Biometric verification is the main inspiration behind our app.
What it does
The app gives you three major settings for USB, Read Only, Full Access and completely blocking USB. Based on user preference user can opt for a particular policy. The app runs in the background and when a USB storage device is inserted and if the selected policy is read only or disabled, it prompts the user to change the policy through biometric verification.
User's account is registered with Knurld. The app let's the user to register his voiceprint during enrollement by uttering Purple, Maroon and orange three times each. During verification process, a random order of the phrases is presented to the user who records a voice uttering the words in order as par the instruction. This audio is validated against his recorded voice print using Knurld's apis.
How we built it
We first built a basic USB protection app for PC. We tested all the USB functionalities. We tested in Windows 7, 8.1,10 because we wanted our app to be available for as large number of PCs as possible. The display settings varied in different OS versions. So , we had to write some native code to handle the display to make the app appear homogeneous across 7, 8.1 and 10.
Integrating Knurld's API into the app was a big problem. We took it as a separate project. We first wrote http request response based functions to call each end points individually. Then we created the workflow to chain these end point calling methods to complete verification and enrollment. Both of these Knurld's end points need several calls to and from the servers through several data exchange. So we had to write a responsive thread with appropriate user feedback. We created algorithm to find out estimated time for communication of each of the endpoints.
Now once Knurld's API was ready at C# level, we had to create audio recording and audio balancing system. We created native win 32 based audio recording system and integrated with Knruld's C# SDk that we built.
Finally we combined the sdk to our USB app.
Challenges we ran into
The overall time for a verification and enrollment process is about 20-30 seconds average. This means that user may not know what is going on at the background. So we created a stage based feedback such that user can easily understand which stage he is in and how much time it might take for the verification/ enrollment. Working on this responssive feedback system alsong with creating a c# sdk from scratch were big challenges.
Accomplishments that we're proud of
Overall, to be able to build an app that we ourselves have started using for our laptops is something that we are really proud of. We want you to try out and use our app for your PCs.
What we learned
The major learning was Biometric cloud integration, windows native win32 apis for voice recording and audio dsp, and registry level working of device manager and devices.
What's next for USB Vlocker
We could not succeed to protect SD card. We want to integrate SD card security alongside USB protection using the same app. We also want to distribute the app for PCs, for people to use our product and safeguard their data.