# A PUF- and Biometric-Based Lightweight Hardware Solution to Increase Security at Sensor Nodes
## 4 Novel Biometric Sensor Nodes Using QFM-Based Fingerprint Features
### A Low-Cost Solution to Offuscate Sensitive Fingerprint Information at Sensor Nodes  
Since the QFM-based features contain sensitive information about users, they should not be stored or transmitted without protection. Taking advantage that they are binary strings, our proposal is to obfuscate them with the PUF responses of the sensor node where the user has to be recognized. A kind of biometric salting is used for this purpose where the PUF response is used as salt. Biometric Salted Data are generated in a registration (enrollment) phase whenever an accredited individual needs using the sensor, in a secure environment. The user is required to place his/her fingers  
Figure 5: (**a**,**d**) Convex cores detected by Poincaré Index, (**b**,**e**) Convex cores detected by orientation patterns, (**c**,**f**) Convex cores detected by the proposed technique that combines Poincaré Index and orientation patterns. The fingerprint image employed in (**a**–**c**) is an example of non-arch fingerprint, and the fingerprint image employed in (**d**–**f**) is an example of arch fingerprint, both taken from FVC 2002 DB1a. in the fingerprint sensor of the sensor node and the QFM-based features are extracted. The quality control performed as described in Section 4.1 allows interacting with the user to acquire good captures. If several captures, \(t\), of several fingers, \(f\), are captured, the feature information obtained is \(\{\text{QFM}\}=\left\{\text{QFM}_{ijk}\right\}\) with \(i=1,\ \ldots,t;j=1,\ \ldots,f\); and \(k=1,\ \ldots,c;c\) being the total number of QFM features extracted from each capture. A total of \(t\)-\(f\)-\(c\) ID responses are obtained from the SRAM PUF as described in Section 3.2 to generate a set of Salted Data as \(\{SD\}=\{ID_{x}\oplus\text{QFM}_{x}\}\), \(x=1\ldots,t\)-\(f\)-\(c\). For example, for two fingers per user, three samples per finger, and two QFM-based features per sample, the SD have 1.5 KBytes per user. If ID responses are fully random, the biometric information is fully obfuscated [18; 19; 31]. Nothing is revealed about who user is registered at each node. The SD generated at node D with user \(X\) are denoted as \(SD_{X}^{D}\). The same \(t\)-\(f\)-\(c\) ID responses are employed to obfuscate \(t\)-\(f\)-\(c\) secrets, \(K_{x}\), encoded with the Error Correcting Code as described in Section 2.2, and generate other \(\{HD\}=\{ID_{x}\oplus\text{K\_coded}_{x}\}\), which are denoted as \(\left\{HD_{K}^{D}\right\}\) for node D. Each sensor node, D, stores \(\{SD_{X}^{D}\}\) and \(\{HD_{K}^{D}\}\) in its non-volatile memory. The second phase of secret reconstruction is carried out whenever the secrets are needed. It consists of the following steps for a given sensor node D and a user X. A set of \(t\)-\(f\)-\(c\) responses are obtained from the same ID cells employed in the registration phase. They are XORed with the stored \(\{HD_{K}^{D}\}\) to obtain bit strings similar to \(Koded_{x}\), which are decoded to recover the original \(t\)-\(f\)-\(c\) secrets, \(K_{x}\), and the original \(t\)-\(f\)-\(c\) ID responses employed at registration. From the original \(t\)-\(f\)-\(c\) ID responses XORed with the Salted Data \(SD_{X}^{D}\), the original \(\left\{\text{QFM}^{X}\right\}=\left\{\text{QFM}_{ijk}^{X}\right\}\) of user X are recovered. The user is required to place his/her fingers in the fingerprint sensor of the sensor node and the features \(\overline{QFM}_{jlm}^{X}\) are extracted, with \(l=1,\ \ldots,q\), the number of samples captured at matching; \(j=1,\ \ldots,f\); and \(m=1,\ \ldots d\); \(d\) being the total numbers of QFM-based features extracted from each capture. The matching score that evaluates if the user is or not recognized is calculated as follows:  
\[\text{D}\Big{(}\Big{\{}QFM_{ijk}^{X}\Big{\}},\Big{\{}\overline{QFM}_{jlm}^{X }\Big{\}}\Big{)}=\frac{1}{10^{2}k^{2}}\cdot\sum_{j=1}^{f}\left\{ \begin{array} []{c}\min\\ i=1,\ldots,t\\ l=1,\ldots,\ q\end{array} \left[ \begin{array}{c}\min\\ k=1,\ldots,c\\ m=1,\ldots,\ d\end{array} \left[