2A.ml - Machine Learning et données cryptées

Comment faire du machine learning avec des données cryptées ? Ce notebook propose d'en montrer un principe exposé dans CryptoNets: Applying Neural Networks to Encrypted Data with High Throughput and Accuracy.

In [1]:
%matplotlib inline
In [2]:
from jyquickhelper import add_notebook_menu
add_notebook_menu()
Out[2]:
run previous cell, wait for 2 seconds

Principe

Le machine learning sur des données cryptées repose sur un algorithme de chiffrement_homomorphe ou homomorphic encryption. Ce concept a été inventé par Craig Gentry (lire Fully Homomorphic Encryption Using Ideal Lattices, Fully Homomorphic Encryption over the Integers). On note $x \rightarrow \varepsilon(x)$ une fonction de chiffrement complètement homomorphe. Il vérifie :

$$\begin{array}{ll}\varepsilon(x+y) = \varepsilon(x) + \varepsilon(y) \\ \varepsilon(x*y) = \varepsilon(x) * \varepsilon(y)\end{array}$$

. Dans l'exemple qui suit, nous avons besoin que le système de cryptage soit partiellement homomorphe : seule l'addition est stable une fois l'entier crypté.

Un exemple : $\varepsilon:\mathbb{N} \rightarrow \mathbb{Z}/n\mathbb{Z}$ et $\varepsilon(x) = (x * a) \mod n$. Cela veut dire que l'on peut crypter des données, faire des calculs avec et décrypter un résultat qui serait presque le même que si les calculs avaient été fait sur les données non cryptées.

Exercice 1 : écrire deux fonctions de cryptage, décryptage

Il faut bien choisir $n$, $a$ pour implémenter la fonction de cryptage : $\varepsilon:\mathbb{N} \rightarrow \mathbb{Z}/n\mathbb{Z}$ et $\varepsilon(x) = (x * a) \mod n$. On vérifie ensuite qu'elle conserve l'addition au module $n$ près.

In [3]:
 

Exercice 2 : Entraîner une régression linéaire

In [4]:
from sklearn.datasets import load_diabetes
data = load_diabetes()
In [5]:
X = data.data
Y = data.target
In [6]:
 

Exercice 3 : réécrire la fonction de prédiction pour une régression linéaire

In [7]:
 

Exercice 4 : assembler le tout

Prendre une observation, crypter, prédire, décrypter, comparer avec la version non cryptée. Il faudra sans doute un peu ruser car la fonction de cryptage s'applique à des entiers et le modèle de prédiction à des réels.

In [8]:
 

Questions

  • A quelle condition peut-on aussi entraîner un modèle sur des données cryptées ?
  • Et les arbres de décision ?
In [9]: