Cryptage homomorphic de Craig Gentry¶
Un cryptage homomorphe préserve l’addition et la multiplication : une addition sur des nombres cryptés est égale au résultat crypté de l’addition sur les nombres non cryptées. Craig Gentry a proposé un tel cryptage dans son article Fully Homomorphic Encryption over the Integers. Le système de cryptage encrypte et décrypte des bits (0 ou 1).
Définition du cryptage¶
La clé secrète
est un entier impair
codé sur
bits :
.
La clé publique
est une séquence de
entiers aléatoires tirés selon un loi
. La séquence
(doit vérifier
est impair et
est pair. Il faut recommencer si ce n’est pas le cas. Chaque entier est codé sur au plus
bits.
Choisir un ensemble aléatoire et un entier aléatoire
dans l’intervalle
. Calculer
.
La fonction effectue des opérations sur
bits. Le résultat est
.
Le résultat cherché est .
Avec : (valeurs suggérées par l’article mais d’autres sont possibles
Pour simuler une loi
, choisir
tel que
,
tel que
et calculer
.
est le reste de la division entière de
par
, reste choisi dans l’intervalle
.
Exercice 1 : implémenter le cryptage¶
[ ]:
Exercice 2 : vérifier que le cryptage est stable par addition et multiplication¶
[ ]:
Exercice 3 : implémententer l’addition entière¶
[ ]:
Exercice 4 : implémenter la multiplication entière¶
[ ]:
[ ]: