• 15 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 23/12/2019

Prévenez les fuites de données

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Dans ce troisième chapitre, nous allons voir comment il est possible de se protéger de la personne ou de l’entité qui va traiter les données elle-même.

Enjeux et objectifs

Le "DBaaS"

Poursuivons avec l’exemple de l'utilisateur qui a installé l'application "Running App" de la société "RAC" sur son téléphone. Les données de l'utilisateur (sa position GPS, ses données cardiaques, etc.) vont être exportées chez l’éditeur "RAC" qui va les traiter, vraisemblablement sur un serveur ou sur plusieurs serveurs de type cloud.

Des fournisseurs de services peuvent proposer à "RAC" de traiter eux-mêmes les données. C'est ce qu’on appelle le "DBaaS" ou "Data Base as a Service" (en français, base de données comme un service).

Il existe donc des entreprises qui fournissent ce service de stockage et de traitement de données. Dans ce cas, les données de l’utilisateur se servant de "Running App" vont être envoyées à "Running App Corp" qui va ensuite déléguer et stocker le traitement de ces informations sur des serveurs tiers.

Dans les deux cas, la confiance que peut avoir l’utilisateur envers le traitement de ses données est relative. Il s’agit d’une confiance contractuelle, c’est-à-dire qu’elle ne prévient pas les problèmes mais qu'elle permet, éventuellement, de les résoudre au tribunal si jamais l’utilisateur constate un souci dans l’exploitation de ses données.

Le scandale Strava

Prenons comme exemple le récent scandale Strava qui est justement une société de running. En novembre 2017, Strava a tracé des graphiques assez intéressants des parcours de tous ses utilisateurs. Il a été démontré que dans certains lieux assez reculés du globe, par exemple la province d'Helmand en Afghanistan, les seuls utilisateurs de cette application étaient des militaires américains se trouvant sur le sol afghan. Ainsi, en regardant les traces envoyées par les GPS de running de ces personnes, il fut assez simple de retrouver très précisément la localisation de certaines bases militaires américaines ou d’autres pays.

Base militaire d'Helmand
Base militaire d'Helmand

Les objectifs

Nous voyons donc qu'en tant qu'exploitant de données, il faut se poser un certain nombre de questions. Nous devons en particulier nous demander quelles données on veut véritablement publier, et s’interroger sur la précision des données ainsi que sur le type d’agrégats que l’on souhaite constituer.

Ces approches peuvent également être vues comme des bonnes pratiques "Privacy by Design" dans le cas où nous ferions du traitement de données en local, et où nous sécuriserions ces traitements contre un accès illicite provenant d’un individu interne à l’entreprise.

Private Information Retrieval (PIR)

En premier lieu, nous allons étudier les protocoles de récupération d’informations confidentielles, ou Private Information Retrieval (PIR) en anglais.

Définition

Solution triviale

Il existe une solution triviale permettant au client de récupérer l'information en question. Elle consiste à chiffrer toute la base de données et, quelle que soit la requête, retourner l’intégralité de la base de données chiffrée à l’utilisateur.

Naturellement, ce concept de chiffrement de la base de données est intrinsèque à l’approche. Le fournisseur de service (celui qui stocke la base de données) ne doit évidemment pas pouvoir lire l’information qui est stockée sur le serveur.

Solution simple

Nous allons détailler une solution simple qui exploite 2 serveurs pour récupérer un bit d’information. Ici, nous sommes assez loin d’une exploitation à grande échelle d’une base de données de plusieurs gigaoctets.

Considérons que la base de données est définie comme une liste de bits K=0,1n. L'utilisateur souhaite récupérer le ième élément de cette liste, soit ki qui vaudra soit 0 soit 1.

Pour ce faire, l'utilisateur va construire 2 ensembles E1 et E2 qui vont être des éléments aléatoires compris entre 0 et n. E1 ne contiendra pas l’élément iE2 sera exactement le même ensemble que E1, mais avec l’élément i en plus.

Dans cette solution, il y a 2 serveurs qui, chacun, connaissent l’intégralité de la base de données ; et c’est de là que va jaillir l’inconnu pour le serveur.

L’utilisateur envoie de manière aléatoire E1 et E2 à chacun de ces serveurs.

Les serveurs vont calculer le ou exclusif, soit XOR, de tous les bits d’indices contenus dans E1 et dans E2. Ensuite, les serveurs vont retourner cette information à l’utilisateur qui n’aura plus qu’à calculer le ou exclusif des 2 valeurs qui lui ont été retournées. Le serveur 1 retourne à l'utilisateur 0 ou 1 et le serveur 2 lui retourne également 0 ou 1. De cette manière, l'utilisateur va très exactement récupérer la valeur de ce bit d'information, grâce au calcul ki=E1  XOR  E2.

Solution générale

La solution présentée ci-dessus est une ébauche assez simpliste. Elle se généralise à des bases de données extrêmement grandes, voire à l’exploitation de plusieurs bases de données sur le même serveur.

Primitives sécurisées distribuées

Considérons un ensemble d’individus qui possèdent des informations et qui souhaitent effectuer un calcul global à l’aide de leurs données, sans qu’aucun des individus ne connaisse la valeur des autres individus.

Cela pourrait être pour calculer la distance totale de course sur l'application "Running App", sans qu’aucun des utilisateurs ne sache exactement quelle distance a été courue par les autres utilisateurs.

Primitives sécurisées

4 primitives ont été définies :

  • la somme sécurisée ;

  • l’union ensembliste sécurisée ;

  • la taille de l’ensemble intersection sécurisé ;

  • le produit scalaire sécurisé.

Grâce à ces 4 primitives, il est possible d’effectuer tout un tas de calculs de Data Mining : le calcul de règles d’association, des opérations avec le clustering, des opérations de classification, etc. Et tout ça de manière vraiment sécurisée !

Somme sécurisée

Le protocole pour calculer la somme sécurisée est assez simple.

Approche
Approche "distribuée"

Calculons la somme modulo 50 de la distance totale parcourue par 3 utilisateurs de l'application "Running App".

Un utilisateur a couru 5 km. Cet individu va tirer au sort aléatoirement un nombre compris entre 0 et 49 ; ici il tire la valeur 32.

L'utilisateur ajoute sa valeur, à savoir 5, ce qui fait 37 et la transmet au prochain individu. Ce dernier rajoute sa propre valeur qui est de 7, ce qui fait 44 et la transmet au troisième individu.

Celui-ci rajoute sa valeur qui est de 9.

Ce résultat est transmis à l’individu suivant qui ajoute sa propre valeur de distance, soit 2. Puis, il retourne cette valeur à l’utilisateur de départ qui va soustraire le nombre initial qu’il connaît pour obtenir la valeur totale de cette somme, à savoir 23.

La cryptographie homomorphe

Définition

La cryptographie homomorphe est une caractéristique de certains cryptosystèmes tels que RSQ, Paillier, El Gamal, etc.

Prenons un exemple. Le cryptosystème RSA est constitué d’une clé publique (e, m). Cette clé permet de chiffrer un certain message considéré comme étant un nombre entier p.

Le chiffré d'un message p se calcule par : E(p)=pe mod m 

La propriété homomorphe est : E(p1)E(p2)=pe1pe2 mod m=(p1p2)e mod m=E(p1p2)

Que vous fassiez cette opération de multiplication sur les nombres en clair ou bien sur les chiffrés de ces nombres, vous obtiendrez toujours la même valeur.

Dans le cas du cryptosystème RSA, nous sommes uniquement capable de faire des multiplications. C'est ce qu’on appelle un chiffrement complètement homomorphe : un chiffrement où 2 opérateurs, l’addition et la multiplication, vont être homomorphes.

Pourquoi ça marche ?

Le chiffrement homomorphe est une réponse au calcul général sécurisé.

Voici 4 éléments importants :

  1. Tout programme avec une entrée bornée peut être transformé en un circuit booléen. En effet, lorsque vous écrivez un programme, vous pouvez le transformer en un petit circuit booléen avec des portes logiques et/ou, etc.

  2. Tout circuit booléen peut être transformé en un polynôme modulo 2. Effectivement, la multiplication de deux valeurs modulo 2 correspond à faire le "et". De plus, l’addition de deux valeurs modulo 2 vous donne le "ou" exclusif.

  3. Si nous sommes capable d’évaluer de manière sécurisée un polynôme, cela signifie que nous sommes en mesure d’évaluer de manière sécurisée le programme équivalent.

  4. Pour évaluer de manière sécurisée un polynôme, il est suffisant de pouvoir calculer de manière sécurisée les opérations d'addition et de multiplication sur ce polynôme.

Définition

Une fonction de chiffrement complètement homomorphe est une fonction sur un anneau dont la valeur se situe entre 0 et 1. Cette valeur est donc comprise dans l’ensemble des booléens pour lequel les opérations d’addition et de multiplication se transforment en d’autres opérations sur cet anneau.

Notez que le coût pour une grande sécurité est incroyablement élevé. Si vous voulez fournir des données sur lesquelles vous êtes capable d’effectuer des calculs de manière complètement homomorphe, la taille va être extrêmement grande par rapport aux données initiales. Actuellement, c’est quelque chose qui n’est pas exploitable pour des calculs de type big data.

Pour conclure ce chapitre, retenez que plusieurs techniques existent pour permettre le traitement sécurisé de données, sans faire aucune hypothèse de confiance dans les serveurs qui traitent les données, si ce n’est qu’ils effectuent des calculs corrects.

Retenez également que les coûts de traitement sont en général assez importants, surtout dans le cas du chiffrement homomorphe.

Exemple de certificat de réussite
Exemple de certificat de réussite