The 10th part in a series of beginner tutorials on integrating physical devices with the IOTA protocol.
This is the 10th part in a series of beginner tutorials where we explore integrating physical devices with the IOTA protocol. In this tutorial we will be exploring a concept known as Bio-metric authentication. If you own a smart-phone with a fingerprint reader, chances are you already use this technology every day.
So what does all of this have to do with IOTA?
I guess the most obvious use-case for integrating Bio-metric technology with IOTA would be something like logging in to your IOTA wallet (as implemented in the mobile Trinity wallet). However, my interest in this area is of a more profane nature. What if combing these technologies could be used to address the worlds bigger problems, such as voter fraud, air-traffic safety or human identification in disaster areas?
To understand how integrating Bio-metric technology with IOTA could help solve these problems we must take a step back and look at it from a larger perspective. When using the fingerprint reader on your phone, the fingerprints used for comparison and authentication is typically stored inside the reader (phone) itself. This works fine as long as you are using the same reader every time. Problem comes when you need to be authenticated by a different reader that does not already have your fingerprints registered. Imagine trying to implement fingerprint authentication as a voter fraud protection mechanism in a national election. There would have to be thousands of fingerprint readers across every voting location in the country. Now imagine having to store all the fingerprints of every citizen in each reader. This would be close to impossible. A better option would probably be to have all fingerprints stored in a secure and tamper proof location where they could be retrieved when needed. This is where DLT and the IOTA tangle shines.
We will not be solving any world scale problems today. However, the use-case proposed in this tutorial deals with the same problem as described above, just on a smaller scale.
The Use Case
Lets image our trusted hotel owner have a safe in each hotel where he stores cash for his daily business. Now and then one of his employees needs to access a safe to make deposits or withdrawals. To prevent any unauthorized personnel accessing the safes he decides to install a Bio-metric authentication mechanism in the form of a fingerprint reader at each safe. As he gets new employees, or his current staff rotates between his hotels, it would be difficult to keep the fingerprint database in every reader up to date with the current staff situation. After puzzling over this problem for a while he comes up with the perfect solution. What if he could store the staff fingerprints on the IOTA tangle instead of the fingerprint readers themselves? Whenever a staff member needs to access a safe at any hotel, his or her fingerprints would automatically be downloaded from the IOTA tangle to the reader before being authenticated. Would this even be possible?
Let’s see if we can help him out…
We will be using IOTA transaction message fragments to store the actual fingerprint data on the IOTA tangle. It is important to be aware that IOTA transaction messages are not encrypted, and that any fingerprint data uploaded to the tangle could easily be decoded and recreated by a bad actor. To simplify coding for this project i decided not to include any data encryption/decryption. If you feel uncomfortable uploading non-encrypted fingerprint data to the tangle you should consider adding your own encryption/decryption mechanism in the code, or use some other object as a replacement for your fingers.
The components you will need to build this project is as follows:
- Any internet connected computer running a Debian based Linux variant.
Personally, i’m using a Raspberry PI with the Raspbian operating system.
- ZhianTec ZFM optical fingerprint reader
- FTDI232 USB to serial adapter
The ZhianTec ZFM optical fingerprint reader
The ZhianTec ZMF optical fingerprint reader is popular for its low cost and comp ability with both the Rasberry PI and Arduino ecosystems. The ZMF comes in several different models (ZFM-20, ZFM-60, ZFM-70 and ZFM-100). I’m not exactly sure what model my reader is as there is no marking on it. However, the python library used for this project should support all the models listed above.