Chiffrement Homomorphe : Implémentation du schéma BFV
L'objectif de ce projet est de présenter une implémentation d'un schéma de chiffrement homomorphe, en particulier le schéma BFV. Il s'agira ici de présenter plusieurs implémentations, en vue de démontrer dans des cas pratiques la nécessité de tels algorithmes.
03 implémentations seront présentées ici :
✔ Interface graphique
✔ Implémentation Réseau
✔ Calculs aléatoires
⚠️ Vous devez avoir git installé
⚠️ minimal python version : Python 3.10
Téléchargement du code en local :
git clone https://github.com/IgorGreenIGM/FHE-BFV
Installation des modules python nécéssaires :
pip install numpy
pip install pandas
pip install matplotlib
pip install customtkinter
python ui.py
Se placer dans le dossier example du projet et taper la commande :
python benchmark.py
⚠️ les noms utilisés ici ainsi que toutes autres données sont purement fictives et ont étés générées aléatoirement.
Ici, nous simulons un cas de figure réel dans lequel une entreprise A a besoin d'effectuer un calcul / certaines opérations(augmentations des primes) sur les salaires de ses employés, mais de dispose pas de la puissance de calcul nécéssaire.
Elle décide alors de se tourner vers un datacenter pour la réalisation de ses calculs. mais néanmoins elle ne souhaite pas que le datacenter ait access à ses données en clair. D'ou l'utilisation du schéma BFV.
Il est nécéssaire d'avoir deux ordinateurs en réseau et de connaitre l'adresse IP d chacun d'entre eux, l'un fonctionnant en tant que client(entreprise A) et l'autre en tant que server(Datacenter).
le fichier des employés de A se trouve dans le repertoire : "network/datas/datas.csv"
Demarrage du serveur :
ouvrir le fichier network/server_send.py (sur le pc serveur) et modifier la variable "CLIENT_IP_ADRESS" par l'adresse IP du client.
Se placer dans le dossier network du projet et taper la commande :
python server_receive.py
Demarrage du client :
ouvrir le fichier network/client_encrypt.py (sur le pc client) et modifier la variable "SERVER_IP_ADRESS" par l'adresse IP du serveur.
Se placer dans le dossier network du projet et taper la commande :
python client_encrypt.py
Le fichier sera alors chiffré et transmis au server par le client.
Une fois le travail de calcul par le serveur terminé :
Sur le pc client tapez la commande :
python client_decrypt.py
Sur le pc server tapez la commande :
python server_send.py
Le fichier calculé sera alors reçu par le client, qui le dechiffrera et le fichier final sera dans le repertoire "network/datas/results/final.csv"
- @IgorGreenIGM - Idea & Initial work
- @TchassiDaniel
- @FredyFezeu
- @Krostemgoua
- @Bakotchaloic