• Aucun résultat trouvé

La recherche (ou query en anglais) peut représenter un problème complexe dans le contexte des bases de données chiffrées. Ce problème est en fait plus large qu'il n'y paraît.

En effet, la recherche d'une information chiffrée dans une base de données elles-mêmes chiffrées n'est qu'une facette du problème qui consiste à effectuer une opération donnée dans cette base de données.

Pour le dire plus clairement, l'informatique n'a pas révolutionné les mathématiques: les opérations de bases sur lesquelles toute autre opération est basée restent l'addition, la soustraction, la multiplication et la division. Certains vont même plus loin en assimilant la soustraction à un cas particulier d'addition et la division à un cas particulier de multiplication. Une recherche dans une base de données sera donc, au final, une série d'instructions exécutées par le processeur. Dès lors, que la finalité de cette série d'instructions soit une recherche ou une addition ne change presque rien à notre problème: comment effectuer une opération dans une base de données chiffrées?

1.6.1 Déterminisme

La première partie de la solution est de classifier le type de chiffrement utilisé. En effet, il peut être déterministe ou non-déterministe. Cette section a donc pour fonction d'expliquer la différence qui existe entre un chiffrement déterministe et un chiffrement non-déterministe au travers d'exemples concrets.

1.6.1.1 Déterministe

Un système de chiffrement déterministe est un schéma de chiffrement qui produira toujours le même texte chiffré pour un texte clair donné et pour une certaine clé [22].

Dès lors, il devient plus aisé d'effectuer des opérations sur les parties chiffrées. En effet, prenons le cas très simple d'un schéma de chiffrement tel que pour chaque bloc, le chiffrement consiste à additionner la valeur de la clé (il s'agit donc d'un chiffrement symétrique car pour le déchiffrer, il suffit de soustraire la clé). On a donc, si la clé vaut un,

n��&opOccqé= n��&oQdOq+ 1

Supposons également que les données ne soient constituées que d'une matrice contenant des chiffres et qu'un bloc corresponde à un seul chiffre. Le système de chiffrement s'applique sur chaque élément individuellement (les éléments vont donc garder leur place initiale) avec une clé valant un.

ID élève Points ID* élève Points*

1 6 2 7

2 4 3 5

3 3 4 4

4 8 5 9

5 2 6 3

Matrice non-chiffrée Matrice chiffrée

Il est donc clair que la recherche dans ce genre de schéma de chiffrement est relativement aisée. Effectivement, il suffit de chiffrer la recherche de la même manière que les données ont été chiffrées pour que la recherche puisse s'exécuter sur les données chiffrées. Prenons un exemple simple,

Select*

FromNom_de_ma_Table whereID élève = 2

Select*

FromNom_de_la_Table whereID* élève = 3

Notons au passage que ce genre de chiffrement ne respecte pas l'additivité ni la multiplicité homomorphique. En effet, on a

1 + 2 = 3

2 + 3 4

De plus, on a également

1 x 2 = 1

2 x 3 2

Ce système de chiffrement n'est donc visiblement pas homomorphique en addition et en multiplication.

Le point fort de ce système est qu'il est aisé d'y effectuer une opération dans les données cryptées mais il souffre d'un point faible de taille: la sécurité!

Il est indéniable qu'un pirate informatique doué pourrait, par recoupements, réussir à déterminer l'emplacement de certaines informations etc.

Il est donc clair que ce genre de système n'est pas adapté à pour l'utilisation d'unCloud contenant des données sensibles car il n'offre pas assez de sécurité.

1.6.1.2 Non-déterministe

Un système de chiffrement non-déterministe, également appelé probabiliste, est un schéma de chiffrement qui utilise au moins un élément aléatoire de sorte que si le même message est codé plusieurs fois, les messages chiffrés résultants seront généralement différents (d'où l'idée de probabilité) [23]. Ce genre de mécanisme se rencontre essentiellement dans des schémas de chiffrements asymétriques mais certains schémas symétriques l'utilisent également.

Un exemple concret de ce genre de chiffrement peut être élaboré à partir du système AES décrit plus haut.

Le principe est de démarrer notre système de chiffrement par un vecteur initial de valeur aléatoire auquel on ajoute le premier bloc de notre message à coder. Ensuite, le résultat de cette opération est chiffré grâce à l'algorithme AES et une certaine clé (symétrique). Pour chiffrer le second bloc, on utilisera le résultat de ce chiffrement pour l'ajouter au bloc et ce n'est qu'après cette opération que l'on pourra utiliser AES pour chiffrer et ainsi de suite pour les autres blocs.

Il apparaît donc que le résultat d'un tel schéma est non-déterministe car le vecteur initial aléatoire implique une possible variation du résultat final liée à la probabilité d'utiliser le même vecteur initial aléatoire.

Figure 8: Chiffrement non-déterministe (http://research.microsoft.com/apps/pubs/default.aspx?id=192055)

Dans ce genre de schéma, la recherche et les autres opérations sur les données déjà chiffrées sont, si pas impossibles, très complexes. En effet, comme une même information peut être chiffrée différemment, il est donc presque impossible de l'identifier dans une base où chaque donnée peut prendre une valeur particulière parmi un panel de valeurs.

Certaines solutions approchent quand même la réalisation d'une recherche dans des données chiffrées grâce à un algorithme pseudo-non-déterministe telle que celle proposée par Porticor (voir ci-après). Mais aucune n'y arrive lorsque l'algorithme est réellement non-déterministe.

1.6.2 Chiffrement homomorphique

De par sa nature complexe, le chiffrement homomorphique permet de réaliser des additions et des multiplications: ce qui revient à dire qu'il permet d'effectuer des recherches sur les données codées.

Mais ce système de codage est-il déterministe ou non-déterministe? Le choix est crucial car il a été démontré plus haut que le danger inhérent aux systèmes de chiffrement déterministe est le fait de pouvoir déterminer où se situent les différentes informations.

Il est donc important de pouvoir utiliser un système de codage homomorphique non-déterministe.

Le système de chiffrement homomorphique échappe quelque peu à cette classification car, tout comme le système AES, il peut être utilisé de plusieurs façons le rendant tantôt déterministe et tantôt non-déterministe [16].

Documents relatifs