This work introduces SentinelTouch, an open-source framework for privacy-preserving fingerprint authentication and identification system that delivers both efficiency and accuracy in HE environments. Our key insight is a twofold optimization:
-
A preprocessing pipeline that reduces fingerprint image dimensions to as low while preserving most of its discriminative details
-
The design of a lightweight, HE-friendly neural network that generalizes effectively on this compact data.
We present two pipelines for usage:
-
Full-privacy pipeline, where encrypted images are processed entirely under HE settings, achieving user identification in a one-to-many setting.
-
A hybrid pipeline, where only encrypted embeddings are processed under HE settings, achieving one-to-many user identification.
After installing OpenFHE as in OpenFHE
git clone https://github.com/openfheorg/openfhe-development.git
cd openfhe
sudo apt-get install build-essential #this already includes g++
sudo apt-get install cmake
sudo apt-get install clang
sudo apt-get install libomp5
sudo apt-get install libomp-dev
mkdir build
cd build
cmake ..
make
sudo make install
git clone https://github.com/stamcenter/sentineltouch.git
cd sentineltouch
mkdir build
cd build
cmake ..
make
Run the build from the SentinelTouch for results
./hybrid_16
To build the docker image.
git clone https://github.com/stamcenter/sentineltouch.git
cd sentineltouch
docker build -t sentineltouch .
docker run sentineltouch # run the default entry which is hybrid_16
docker run sentineltouch hybrid_32 # run the hybrid 32 entry point
docker run sentineltouch lenet5_16 # run the full lenet 16 embeddings 32 entry point
docker run sentineltouch lenet5_32 # run the full-pipeline with 32 embedding space.
docker run sentineltouch python pca_1_to_N_authentication.py # run the python module for training and validation of model
docker run sentineltouch python exportAllWeights.py # run the python module to export all weights
If you have other processes running on your system while building the Docker image, you can edit the Dockerfile and limit the number of cores used for the build. For example, change make -j$(nproc) to make -j4, which should work just fine.