2A.ml - Machine Learning et données cryptées#
Links: notebook
, html, python
, slides, GitHub
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.
%matplotlib inline
from jyquickhelper import add_notebook_menu
add_notebook_menu()
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
une fonction de chiffrement
complètement homomorphe. Il vérifie :
. 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 :
et
. 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 ,
pour implémenter la fonction
de cryptage :
et
. On vérifie ensuite qu’elle
conserve l’addition au module
près.
Exercice 2 : Entraîner une régression linéaire#
from sklearn.datasets import load_diabetes
data = load_diabetes()
X = data.data
Y = data.target
Exercice 3 : réécrire la fonction de prédiction pour une régression linéaire#
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.
Questions#
A quelle condition peut-on aussi entraîner un modèle sur des données cryptées ?
Et les arbres de décision ?