Keystroke Biometric: Data Capture Resolution Accuracy

Keystroke Biometric Background: read & understand this section


This project has two objectives.

Objective 1

The first objective is to investigate the various coding methods of obtaining keystroke biometric data (such as low-level assembly code versus Visual Basic) and the measurement accuracy (temporal resolution) of the methods. Several methods have apparently been used to capture keystroke biometric data. The keystroke biometric system at Pace University uses a Java Applet to capture the input data over the internet: the time that a key is struck and the time a key is released (in milliseconds). The Java Applet is as follows:
import javax.swing.*;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
//import java.rmi.*;

public class KeySpeed16_Applet extends Applet
 implements ActionListener
   private int APPLET_WIDTH = 700;
   private int APPLET_HEIGHT = 420;

   private KeySpeed16 keySpeed;

   public void init()
   { url = this.getDocumentBase();
      String query = url.getQuery();

      //query = "Hug&Hort&Fable&1&kb&pc";    //test purposes

      try {
          String[] user = query.split("&");
          keySpeed = new KeySpeed16(user[0].toUpperCase(), user[1].toUpperCase(),
                      user[2].toUpperCase(), user[3].toUpperCase(),
          add (keySpeed);
          setSize (APPLET_WIDTH, APPLET_HEIGHT);
      catch (Exception e) {


   public void actionPerformed (ActionEvent event)
      //System.setSecurityManager(new RMISecurityManager());

Although this applet is presumed to record the timing information in milliseconds, it often appears to be accurate only to centiseconds. The accuracy of the current method should be determined and, if necessary, improved to accurately record the timing in milliseconds.

Objective 2

The second objective is to carefully monitor and oversee the progress of the three keystroke biometric projects to ensure that the work is properly coordinated and integrated.

Fast Agile XP Deliverables

We will use the agile methodology, particularly Extreme Programming (XP) which involves small releases and fast turnarounds in roughly two-week iterations. Many of these deliverables can be done in parallel by different members or subsets of the team. The following is the current list of deliverables (ordered by the date initiated, deliverable modifications marked in red, deliverable date marked in bold red if programming involved, completion date and related comments marked in green, pseudo-code marked in blue):

Deliverables Common to all Keystroke Projects

Deliverables specific to this project (these can be performed in parallel with the common deliverables):
  1. 10/5 Create a table of the various coding methods of obtaining keystroke biometric data (such as low-level assembly code versus Visual Basic) and the reported measurement accuracy (temporal resolution) of the methods.
  2. 10/5 Using our Java applet, capture the keystrokes of an arbitrary input text of English sentences (about 1000 keystrokes). The input text can be copied or extemporaneous (not copied, such as an email). Perform a statistical analysis of the data recorded as follows: perform a frequency count of the last digit (the millisecond digit) of the key press, key release, and dwell (key release - key press) times. Display the results in three simple bar graphs. If the applet and computer clock are doing the job expected, the result should be roughly an equal number of each of the ten digits (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) for each of the three bar graphs. Conduct this experiment on desktop and laptop machines from various manufacturers.