Skip to content

IgorGreenIGM/FHE-BFV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CHIFFREMENT HOMOMORPHE : SCHEMA BFV

Status GitHub Pull Requests License


Chiffrement Homomorphe : Implémentation du schéma BFV

📝 Table des matières

🧐 À propos

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

🏁 Installation

⚠️ 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

🎈 Utilisation

Interface graphique :

Se placer dans le dossier ui du projet et taper la commande :
python ui.py


Calculs aléatoires :

Il s'agit ici de générer une serie d'operandes aléatoires et d'operateurs, de chiffrer les opérandes et d'éffectuer les calculs sur les operandes en fonction des opérateurs(+, x, -).

Se placer dans le dossier example du projet et taper la commande :

python benchmark.py

Implémentation réseau :

⚠️ 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"

✍️ Authors

About

BFV Fully Homomorphic Encryption Scheme

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages