Projet de Cryptographie — Protection de l'information
FISE2 • Télécom Saint-Etienne • 2024–2025
Le chiffrement homomorphique permet d'effectuer des calculs sur des donnees chiffrees sans jamais les dechiffrer. Le resultat, une fois dechiffre, correspond exactement a celui qu'on aurait obtenu en clair.
Ce projet explore ce paradigme sous deux angles :
-
Theorie & Implementations — Etude detaillee et implementation pedagogique de deux schemas de chiffrement homomorphe : Paillier (partiel, addition) et BGV (complet, addition + multiplication).
-
Application au Machine Learning — Analyse du cas pratique d'Apple utilisant le schema BFV pour la reconnaissance d'image sur des donnees chiffrees (recherche visuelle dans la galerie photo).
- Apercu
- Schemas implementes
- Structure du projet
- Prerequis
- Build
- Utilisation du code
- Contenu du rapport
- References
- Auteurs
- Licence
| Schema | Type | Operations | Securite | Fichier |
|---|---|---|---|---|
| Paillier | Partiel | Addition | Logarithme discret | src/paillier.py |
| BGV | Complet (FHE) | Addition + Multiplication | LWE / Ring-LWE | src/bgv.py |
Permet l'addition sur des entiers chiffres. La multiplication de deux chiffres dans l'espace Z_n^2 correspond a l'addition des messages en clair :
E(m1) * E(m2) = E(m1 + m2) mod n^2
Permet l'addition et la multiplication sur des entiers chiffres. Base sur le probleme LWE (Learning With Errors), resistant aux attaques quantiques :
Addition : (c0, c1) + (c0', c1') = (c0 + c0', c1 + c1')
Multiplication : necessite une relinearisation pour revenir a 2 composantes
crypto-homomorphisme/
|
|-- rapport/ Rapport complet (Markdown -> PDF)
| |-- rapport.md Source du rapport
| |-- Makefile Build via pandoc + xelatex
| +-- figures/ Schemas et illustrations
|
|-- presentation/ Supports de presentation
| |-- revealjs/ Slides Reveal.js (pandoc -> HTML)
| | |-- pres.md Source des slides
| | |-- Makefile Build
| | +-- images/ Assets visuels
| |-- manim/ Slides animees Manim
| | |-- main.py Source des animations
| | |-- Makefile Build
| | +-- assets/ SVG et ressources
| +-- oral.md Notes de presentation orale
|
|-- src/ Implementations Python
| |-- paillier.py Chiffrement de Paillier
| +-- bgv.py Chiffrement BGV
|
|-- Makefile Build global
|-- requirements.txt Dependances Python
+-- .gitignore
- Python >= 3.9
- pandoc + xelatex (pour le rapport PDF)
- Dependances Python :
pip install -r requirements.txtLes packages
manimetmanim-slidesne sont necessaires que pour la presentation animee.
# Tout construire (rapport + presentation)
make
# Rapport seul (genere rapport/rapport.pdf)
make rapport
# Presentation Reveal.js seule (genere presentation/revealjs/pres.html)
make pres
# Presentation Manim seule
make pres-manim
# Nettoyage des artefacts generes
make cleanpython src/paillier.pyGeneration des cles :
p = 7, q = 11
n = 77, g = 78, lambda = 30
--------------------------------------------------
Entrez le message m1 (entier) : 3
Entrez le message m2 (entier) : 5
--------------------------------------------------
Addition homomorphe:
c_add = c1 * c2 mod n^2 = 3790
--------------------------------------------------
Dechiffrement:
m = L(u) * mu mod n = 8
--------------------------------------------------
Resultat attendu : 3 + 5 mod n = 8
Correct
python src/bgv.pyEntrez le message m1 (entier entre 0 et t-1) : 4
Entrez le message m2 (entier entre 0 et t-1) : 5
--------------------------------------------------
Addition homomorphe : 4 + 5 = 9 Correct
Multiplication homomorphe : 4 * 5 = 20 Correct
Note : Ces implementations sont pedagogiques et utilisent des parametres simplifies. Elles ne sont pas destinees a un usage en production.
| Chapitre | Sujet |
|---|---|
| 1. Le chiffrement homomorphique | Definition formelle, principe de fonctionnement, correction & bootstrapping, classes de fonctions (partielles vs completes) |
| 1.1 Paillier | Generation de cles, chiffrement, propriete additive, dechiffrement, exemple numerique detaille |
| 1.2 BGV | LWE, generation de cles polynomiales, encodage par facteur d'echelle, addition & multiplication homomorphe, relinearisation, noise budget |
| 2. Reconnaissance d'image chiffree | Vecteurs d'embedding, quantification, batching, cas pratique Apple (BFV), perspectives et limitations |
Principes generaux
- Homomorphic Encryption — Introduction
- Chiffrement homomorphe — Wikipedia
- Statistique Canada — Chiffrement homomorphe
Fondements mathematiques
Schemas specifiques
Applications
- Apple — Homomorphic Encryption for ML
- Zama — Encrypted Image Filtering (HuggingFace)
- Zama — Concrete ML
| Nom | GitHub | |
|---|---|---|
| Justin BOSSARD | @realnitsuj | |
| Tom MAFILLE | @0-T0M-0 |
Projet realise dans le cadre du cours de Cryptographie (Protection de l'information), FISE2 — Télécom Saint-Étienne.
Ce projet est distribue a des fins educatives. Le code source est disponible sous licence MIT.

