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#
[ ]:
[ ]: