Gesture Based Authentication System
Visual Studio 2010 Expression Blend 4
VB .NET 2010/ VC# .NET 2010 Windows Presentation Foundation
With increasing popularity of portable computing devices including but not limited to PDAs, tablets, and smartphones, threat of data to be fallen in wrong hands has been increased. As a result, many security solutions have been developed like file encryption tools, biometric authentication systemsetc. Since most security solutions (except biometric ones) are based on some character sequence known as password. Since passwords are inputted via keyboard, they are vulnerable to keylogging, form grabbing etc. Biometric systems work as backup systems or secondary systems, and are of no use once password has been stolen. Therefore, such a security system is required that can rectify this “flaw”. If gestures are used as “passwords”, it will be quiet hard to compromise security because of following reasons: 1. In case mouse/touchpad is hooked, it is virtually impossible to extract gesture from collected coordinates; even if they are combined with clicks and active window information. 2. Form grabbing is not possible unless they are implemented using some client side scripting. 3. Though a gesture can be stolen by full screen capturing, it is impractical: recording will generate very large file to be transmitted back to attacker.
Also, streaming live video will require very high speed network; and if user is using some slow network, he may get suspicious due to very high net usage. 4. Since users will not be able to store these gestures in text files (many users do!!), chances of exposure of authentication details are very low. 5. Since gestures are direction and repetition sensitive, there will be too many possibilities for possible gestures. Therefore, brute forcing will become impractical. From above points, we can conclude that gestures are much safer alternatives for text based passwords. So, we should discuss the implementation part now… The technology I am going to discuss uses “lock points” for gesture recognition. These lock points are basically some regular geometric areas which sense presence of mouse pointer. (You can say this JUGAD technology…: P) Let us start by making a 4x4 grid of image controls as shown below:
To compare two gestures, we should have some way to store them. For ease of implementation, I will use a string. We can see the grid as 2D array of squares. Whenever mouse pointer enters into the square region, its XY index is appended to the string. To control the starting and end points of the gesture, we can process click event to toggle the reading. Now you can implement the remaining parts on your own (they are easy!). Please note that in square regions, diagonal lines will create problem as slight change in path will change the generated string. Try to rectify this on your own.
You can see the program in action here http://www.youtube.com/watch?v=B7UI_avl_VY Enjoy friends!!