Je viens de lire un article sur Slashdot intitulé IBM Researchers Open Source Homomorphic Crypto Library qui me rappelle un autre article que j’avais précédemment lu sur ce sujet de chiffrage homomorphique Alice and Bob in Cipherspace.
Le chiffrage homomorphique est une méthode qui permet à une personne tierce de faire une opération sur des données chiffrés, donc sans avoir accès à la valeur non-chiffrée.
Cela ouvre la voie à la possibilité de pouvoir faire faire des opérations lourdes et complexes sur des machines distantes (« cloud ») sur des données dont on souhaite garder le secret.
L’exemple le plus simple d’un chiffrage homomorphique est le suivant :
Admettons que j’ai deux nombres A et B avec A=3 et B=5.
Je souhaite pouvoir additionner ces deux nombres, mais supposons que cette opération soit lourde et que mon ordinateur mette des heures à faire cette opération. Je souhaite alors pouvoir faire cette opération dans le « cloud », qui lui disposerait de machines et d’architectures bien plus adaptés à ce traitement.
Par contre, je ne veux pas envoyer mes deux nombres en clairs, mais si je les chiffres, il faudrait alors que le « cloud » ait la clef pour les déchiffrer, faire son opération, rechiffrer le résultat avant de le renvoyer : mes deux nombres ne seront pas secrets au moment de l’opération, et donc quiconque aurait accès aux machines du cloud pourrait intercepter mes deux chiffres.
C’est ici que rentre en jeux le chiffrage homomorphique.
Je vais tirer au hazard un nombre entier M : disons M=2.
Je vais multiplier A et B par M pour obtenir A’ et B’ : j’obtiens donc A’=M*A=6 et B’=M*B=10.
Ce nombre M et l’opération « multiplication » sont en fait la méthode de chiffrage homomorphique.
Je soumet alors au « cloud » les nombres A’=6 et B’=10 pour qu’il effectue son opération d’addition.
Le « cloud » additionne donc 6+10 et il me retourne 16.
Je récupère le résultat 16 et j’applique la fonction homomorphique inverse qui est une division par M : 16/M=16/2=8.
J’ai donc le résultat 8 qui correspond bien à l’opération souhaité A+B=3+5=8, et ceci sans que le « cloud » n’ai à aucun moment eu accès à mes nombres 3 et 5 qui sont donc restés secret.