views:

31

answers:

1

I'm using a biometric fingerprint scanner with an SDK that allows me to compare two images of a fingerprint. My question is if I wanted to locally store one of the images for later comparison what is the safest way to do this?

My line of thinking is that when doing the same thing with passwords, an easy safe way would be to hash the original password for storage, and later compare hashes instead of plaintext passwords. Obviously this is impossible with the fingerprint images as they would produce slightly different results each time. So what is the safest way to store the original image?

Thanks in advance

+2  A: 

Biometrics rely on a fuzzy comparison. In order for this to happen you must have the original image. A hash is by definition a one way operation, and thus is not suitable.

In order to safely store these credentials you should use a symmetric cipher. AES-256 with CBC mode and a randomized IV, and a cryptographic nonce as a key is a very good choice. Although IV is less important in this specific implementation because 2 identical fingerprints is impossible thus 2 identical cipher texts should never happen, however I would still implement a random IV. A lot can go wrong with a impmamentaiton of a symmetric cipher and there are libraires that take care of it such a Jasypt, although I don't know what platform you are using.

If an attacker is able to retrieve the original finger print used for comparisons then he will be able to bypass this security system. For instance The MythBusters where able to break 2 off the shelf fingerprint readers using this attack. In light of this attack you may want to consider Two-Factor Authentication.

Rook
+1 especially for mention of two-factor
msw