Inspiration

Electronic Signatures are legally binding in the United States and the majority of the world, but are still verified with simple mouse-writing and often just typed text.

What it does

With VeriMark, you can be safe in knowing that accidentally leaving your laptop alone for a couple seconds won't lead to important documents being forged in your name. VeriMark uses a fingerprint scanner and an image feature matching algorithm to verify that both parties are aware of who the signee on the other end is.

How I built it

With a Synaptics Fingerprint Scanner, I took multiple scans to build a model of what the expected scan positions would look like for future user identification. Then with a Java Program running checking for input via the scanner, a scan of the current print would be taken. Then it is run through a SIFT image feature matching algorithm that lets me identify common features on identities in the database and the current fingerprint scan. If a matching identity is found in the database, the user's name is returned and verification is sent to an Online Endpoint along with the current time that can be used to verify the e-signature at a later date if needed.

Challenges I ran into

I learned that the Synaptics device was a Match on Host fingerprint scanner meaning that there was no provided method to match pairs of thumbprints, one would have to be implemented. I looked online and attempted to build VeriMark with 5-6 different Java Fingerprint Matching SDK's but all of them were either very poor performance or were old and lacked important documentation. In talking with the Synaptics mentors, I learned that this was because the process of fingerprint matching was very expensive and often done at a level closer to the hardware as to maximize its efficiency. On doing some research, I came across SIFT, an image feature matching algorithm that would look for small portions of images in other images. After a couple hours fiddling with parameters, I was able to get basic fingerprint matching to work, but had a lot of misses. To mitigate this, I built a small database that would store multiple fingerprint angles and scans for each identity, meaning that the fingerprint would be compared with many others to determine a match.

Accomplishments that I'm proud of

Although fingerprint matching is traditionally very expensive, I was able to implement a version of fingerprint matching that is much lighter, while still being effective ~95% of the time, in just a short hackathon.

What I learned

There are a lot of problems that seem trivial at first, but turn out to be really tough problems when libraries and SDK's are not available.

What's next for VeriMark

I hope to expand to built in fingerprint scanners like those on laptops and the iPhone to make electronic signing much safer and much more verifiable.

Built With

Share this project:

Updates