Calculer sur des données chiffrées
Homomorphisme partiel : RSA et Paillier
Le chiffrement totalement homomorphe est difficile à obtenir. Mais bien avant lui, on connaissait déjà des schémas partiellement homomorphes, qui laissent passer une seule sorte d'opération. Et ils sont déjà très utiles.
Homomorphe, mais partiellement
Un schéma partiellement homomorphe autorise un seul type d'opération sur les clairs — soit la multiplication, soit l'addition, mais pas les deux, et sans limite de nombre d'opérations de ce type. Plusieurs schémas classiques, connus de longue date, ont cette propriété « par accident ».
RSA est multiplicativement homomorphe
Reprenons RSA (dans sa version brute, sans remplissage aléatoire). Le chiffrement d'un message m est c = m^e mod n. Prenons deux messages m1 et m2 :
c1 = m1^e mod n
c2 = m2^e mod n
c1 × c2 = (m1^e)(m2^e) = (m1 × m2)^e mod n
Le produit des deux chiffrés est exactement le chiffré du produit m1 × m2. On a donc multiplié deux nombres cachés sans les connaître. RSA est multiplicativement homomorphe.
Attention : c'est aussi une faiblesse si l'on n'ajoute pas de remplissage (padding). C'est l'une des raisons pour lesquelles le RSA réel n'est jamais utilisé « brut ».
Paillier est additivement homomorphe
Le schéma de Paillier (1999) possède la propriété duale, et bien plus utile en pratique : le produit de deux chiffrés donne le chiffré de la somme des clairs.
D( E(m1) × E(m2) ) = m1 + m2
On multiplie les chiffrés, on obtient (après déchiffrement) l'addition des messages. Paillier est additivement homomorphe.
| Schéma | Opération sur les chiffrés | Effet sur les clairs |
|---|---|---|
| RSA brut | multiplication | multiplication |
| Paillier | multiplication | addition |
L'application phare : le vote électronique
L'homomorphisme additif de Paillier est parfait pour le vote chiffré. Chaque bulletin est un 0 ou un 1 chiffré. Pour compter les voix, l'urne n'a pas besoin de déchiffrer les bulletins : elle multiplie tous les chiffrés entre eux.
E(1) × E(0) × E(1) × E(1) = E(1 + 0 + 1 + 1) = E(3)
Le résultat est le chiffré du total des voix. On ne déchiffre qu'une seule fois, à la toute fin, pour révéler le décompte — sans jamais exposer un bulletin individuel. Le secret du vote est préservé.
En résumé
Beaucoup de schémas sont partiellement homomorphes : ils laissent passer une seule opération. RSA brut est multiplicativement homomorphe (c1 × c2 chiffre m1 × m2), tandis que Paillier est additivement homomorphe (le produit des chiffrés donne le chiffré de la somme). Cette dernière propriété rend Paillier idéal pour le vote électronique, où l'on additionne des bulletins chiffrés sans jamais les ouvrir.

