« Les réseaux euclidiens » : différence entre les versions

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
 
(81 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
Un réseau euclidien est un objet mathématique qui a été utilisé premièrement pour la cryptanalyse. C'est Miklos Ajtai qui a démontré que les réseaux euclidiens peuvent servir de base solide pour la cryptologie. Certains caractéristiques remarquables des problèmes de réseaux sont qu'il n'y a pas d'instances faibles, ce qui ne va pas être le cas de RSA où avec certains nombres premiers la factorisation sera trop simple. De plus ces problèmes sont reconnu comme étant difficile. Il est donc pas possible de les résoudre efficacement. Et pour finir, on ne connaît pas d'attaque même avec un ordinateurs quantiques. Les cryptosystèmes qui se basent sur cet objet mathématique sont donc actuellement source de nombreuse études. En particularité pour la caractéristique homomorphe de ce chiffrement, c'est à dire qu'on peut effectuer des calculs directement sur le chiffré. Cela peut garantir la sécurité dans de nombreuses applications comme par exemple lors de calculs effectués sur les services cloud.
Un réseau euclidien est un objet mathématique qui a été utilisé premièrement pour la cryptanalyse. C'est Miklos Ajtai qui a démontré que les réseaux euclidiens peuvent servir de base solide pour la cryptologie. Une des caractéristiques remarquables des problèmes de réseaux est qu'il n'existe pas d'instances faibles, différemment du cas RSA où l'utilisation de certains nombres premiers entraînerait une factorisation simple pour les calculateurs actuels. De plus, ces problèmes sont reconnus comme étant difficile. Il n'est donc pas possible de les résoudre efficacement en un temps convenable même avec un ordinateur quantique. Les crypto-systèmes se basant sur cet objet mathématique sont donc actuellement source de nombreuses études, en particulier pour la caractéristique homomorphe de ce chiffrement qui permet d'effectuer des calculs directement sur les données chiffrées. Cela peut garantir la sécurité dans de nombreuses applications comme par exemple lors de calculs effectués sur les services ''cloud''.


== Introduction==
== Introduction==


Un ordinateur quantique, ou calculateur quantique, utilise les propriétés de la physique quantique comme l'intrication quantique et la superposition quantique.
Un ordinateur quantique, ou calculateur quantique, utilise les propriétés de la physique quantique comme l'intrication quantique et la superposition quantique.
Cet ordinateur n'est pas basé sur des bits ayant soit un état 0 soit un état 1, mais est basé sur des qubit, l'unité de stockage d'information quantique, qui est composé d'une superposition de deux états de base : 0 et 1.
Cet ordinateur n'est pas basé sur des bits ayant soit un état 0 soit un état 1, mais est basé sur des qubits, l'unité de stockage d'information quantique, qui est composé d'une superposition de deux états de base : 0 et 1.
Ainsi ce type d'ordinateur peut calculer 16 fois plus rapidement qu'un ordinateur à 4 bit, seulement avec 4 qubit et on double la puissance a chaque fois que l'on rajoute un ''qubit''.
Ainsi ce type d'ordinateur peut calculer 16 fois plus rapidement qu'un ordinateur à 4 bits, seulement avec 4 qubits et la puissance est doublée a chaque fois que l'on rajoute un ''qubit''.


Ce type d'ordinateur peut aujourd'hui représenter une menace envers les chiffrements actuellement utilisés
Ce type d'ordinateur peut aujourd'hui représenter une menace envers les chiffrements actuellement utilisés
En effet, RSA se base sur des nombres premiers très grands pour sécuriser les données. Pour décoder RSA, il faut utiliser la décomposition en facteurs premier.
En effet, le chiffrement RSA se base sur des nombres premiers très grands pour sécuriser les données. Pour décoder RSA, il faut utiliser la décomposition en facteurs premiers.
Aujourd'hui, aucuns algorithmes "classique" permet de décoder dans un temps raisonnable (Polynomiale).
Aujourd'hui, aucun algorithme "classique" permet de déchiffrer RSA dans un temps raisonnable (Polynomiale).


Mais l'''algorithme de Shor'', algorithme basé sur la physique quantique pourrait effectuer cette décomposition beaucoup plus rapidement et rendrait inefficace les cryptographie actuelle si ce dernier était implémenté sur un calculateur quantique.
Mais l'''algorithme de Shor'', algorithme basé sur la physique quantique pourrait effectuer cette décomposition beaucoup plus rapidement et rendrait inefficace les cryptographies actuelles si ce dernier était implémenté sur un calculateur quantique.

L'intérêt aujourd'hui est donc de trouver une solution à cette futur menace pas si lointaine. De nombreuses entreprises travaillent sur le sujet dont ''IBM'' qui est actuellement sur un nouveau type de chiffrement basé sur les réseaux euclidiens afin de remplacer les méthodes de chiffrement utilisées de nos jours .


== Les principes de base du réseau euclidien==
== Les principes de base du réseau euclidien==
[[Fichier:Réseau_euclidien_coordonnées.png|left|600px|Réseau euclidien de dimension 2]]
[[Fichier:Réseau_euclidien_coordonnées.png|left|600px|Réseau euclidien de dimension 2]]
''Pour faciliter la compréhension ainsi que la réprésentation géométrique d'un réseau, nous sommes en dimension 2 tout au long de ce wiki.''
''Pour faciliter la compréhension ainsi que la représentation géométrique d'un réseau, nous partirons du principe que le message est constitué de 2 digits résultant ainsi d'une dimension égale à 2, plus facile à représenter dans ce wiki''


Un réseau euclidien est "ensemble de points régulièrement répartis sur une dimension n" ou avec des termes plus mathématique il s'agit d'un sous-groupe discret d'un espace vectoriel euclidien.
Un réseau euclidien est "ensemble de points régulièrement répartis sur une dimension n" ou avec des termes plus mathématique, il s'agit d'un sous-groupe discret d'un espace vectoriel euclidien.


Voici la représentation d'un réseau euclidien de dimension 2. Comme le nombre de points est infini il serait difficile de faire la liste de ces points. Ils sont donc représentés par une base, ici (O, u, v). Les points ont donc des coordonnées correspondant à la base de notre réseau euclidien.
Voici la représentation d'un réseau euclidien de dimension 2. Comme le nombre de points est infini, il serait difficile de faire la liste de ces points. Ils sont donc représentés par une base, ici ''(O, u, v)''. Les points ont donc des coordonnées correspondant à la base de notre réseau euclidien.
<br/>
<br/>
<br/>
<br/>
Ligne 42 : Ligne 44 :


[[Fichier:Réseau_euclidien_bases.png|left|600px|Différentes bases d'un réseau euclidien]]
[[Fichier:Réseau_euclidien_bases.png|left|600px|Différentes bases d'un réseau euclidien]]
'''Base différentes'''
'''Bases différentes'''
Un réseau euclidien peut être représenté par plusieurs bases (image ci-contre). Les différence avec le système de coordonnées du plan (0,x,y) c'est que dans un réseau euclidien les coordonnées sont toujours des entiers et la base n'est pas nécessairement rectangulaire.
Un réseau euclidien peut être représenté par plusieurs bases (image ci-contre).Dans un réseau euclidien, différemment du système de coordonnées du plan (0,x,y), les coordonnées sont toujours des entiers et la base n'est pas nécessairement rectangulaire.
<br/>

'''Bonne ou mauvaise base ?'''
'''Bonne ou mauvaise base ?'''
Certaines bases vont être plus qualitative que d'autres. Une bonne base (base bleue) est presque rectangulaire alors qu'une mauvaise base (base rouge) est de forme quelconque.
Certaines bases vont être plus qualitatives que d'autres. Une bonne base (base bleue) est presque rectangulaire alors qu'une mauvaise base (base rouge) est de forme quelconque.








Dans notre exemple, nous avons donc deux bases. Une bonne base représentée par les vecteurs u et v, et une mauvaise base représentée par les vecteurs u' et v'.


<br/>
<br/>
Bonne base : &nbsp;
<math>\begin{pmatrix} 3 & -1 \\ -1 & 3 \end{pmatrix}</math>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Mauvaise base : &nbsp;
<math>\begin{pmatrix} 7 & 5 \\ 3 & 1 \end{pmatrix}</math>


<br/>
<br/>




Ligne 62 : Ligne 68 :




Qu'est ce que ces typologies changent ? Pour expliquer cela, on peut évoquer l'utilisation des réseaux euclidiens dans les modems : on souhaite transmettre des messages numériques entre deux machines. Cependant la transmission est analogique donc du bruit peut altérer le message. Si un point du réseau représente le message à l'envoi, on a un vecteur d'erreur ou vecteur bruit appliqué sur ce point à la réception. Comme représenté sur les images ci-dessous plus la base est bonne, plus la zone autour de chaque point couvrira au mieux l'espace et plus simple sera la correction du message, à condition que l'erreur ne soit pas trop grande. Si la base est mauvaise l'erreur sera vite trop grande.
Qu'est ce que ces typologies changent ? Pour expliquer cela, on peut évoquer l'utilisation des réseaux euclidiens dans les modems : on souhaite transmettre des messages numériques entre deux machines. Cependant la transmission est analogique donc du bruit peut altérer le message. Si un point du réseau représente le message à l'envoi, on a un vecteur d'erreur ou vecteur bruit appliqué sur ce point à la réception. Comme représenté sur les images ci-dessous, plus la base est bonne, plus la zone autour de chaque point couvrira au mieux l'espace, et plus simple sera la correction du message. Cela est à condition que l'erreur ne soit pas trop grande. Si la base est mauvaise l'erreur sera alors vite trop grande.


[[Fichier:Réseau_euclidien_couverture_bonne_base.png|400px|Couverture de l'espace avec une bonne base]]
[[Fichier:Réseau_euclidien_couverture_bonne_base.png|400px|Couverture de l'espace avec une bonne base]]
Ligne 72 : Ligne 78 :
Nous allons utiliser une bonne base comme clé privée et une mauvaise base comme clé publique.
Nous allons utiliser une bonne base comme clé privée et une mauvaise base comme clé publique.
Pour représenter un message sur le réseau euclidien, il suffit de coder notre message en ternaire, les valeurs possibles sont 0,1,-1.
Pour représenter un message sur le réseau euclidien, il suffit de coder notre message en ternaire, les valeurs possibles sont 0,1,-1.
Il est important de savoir que le nombre de digits d'un message représentera le nombre de dimensions du réseau euclidien. Plus le message est long, plus la difficulté sera élevée.
Dans une dimension 8 le message OK correspondrait à m = 0 -1 -1 1 -1 0 -1 1.
Dans une dimension 8, le message OK correspondra donc à m = 0 -1 -1 1 -1 0 -1 1.
Si on revient en dimension 2, le message ternaire m = -1 1 est représenté par un vecteur m = <math>\begin{pmatrix}-1 \\ 1\end{pmatrix}</math>.
Si on revient en dimension 2, le message ternaire m = -1 1 est représenté par un vecteur m = <math>\begin{pmatrix}-1 \\ 1\end{pmatrix}</math>.


Ligne 112 : Ligne 119 :
m_chiffré = d + m
m_chiffré = d + m
return m_chiffré
return m_chiffré

Dans notre exemple, on obtient alors un nouveau vecteur correspondant au message chiffré :
<br/>
<br/>
Message chiffré : &nbsp;
<math>\begin{pmatrix}13 \\ 7\end{pmatrix}</math>.
<br/>
<br/>


[[Fichier:Réseau_euclidien_chiffrage.png|left|700px|Chiffrage]]
[[Fichier:Réseau_euclidien_chiffrage.png|left|700px|Chiffrage]]





Ligne 146 : Ligne 162 :
=== Le déchiffrement===
=== Le déchiffrement===
Pour le déchiffrement, il suffit de retrouver le point représenté par le vecteur d grâce à notre clé privée. Pour cela on utilise l'algorithme de Babai qui va paver l'espace avec au centre de chaque pavé un point du réseau. Et ensuite permettre de retrouver le point du pavé (le point du réseau représenté par le vecteur d) où se trouve notre vecteur message chiffré.
Pour le déchiffrement, il suffit de retrouver le point représenté par le vecteur d grâce à notre clé privée. Pour cela on utilise l'algorithme de Babai qui va paver l'espace avec au centre de chaque pavé un point du réseau. Et ensuite permettre de retrouver le point du pavé (le point du réseau représenté par le vecteur d) où se trouve notre vecteur message chiffré.
Un fois le vecteur d retrouvé on le soustrait au vecteur message-chiffré.
Un fois le vecteur d retrouvé on le soustrait au vecteur message chiffré.


def dechiffre(Secret, m_chiffré):
def dechiffre(Secret, m_chiffré):
Ligne 154 : Ligne 170 :


=== Algorithme de Babai===
=== Algorithme de Babai===
[[File:réseau_euclidien_bonne_base_message.png|thumb|500px|Recherche du point du pavé sur une bonne base]]
[[File:réseau_euclidien_mauvaise_base_message.png|thumb|500px|Recherche du point du pavé sur une mauvaise base]]


C'est un mathématicien du nom de László Babai qui a inventé la meilleure solution pour retrouver le centre du ''pavé'' associé au message chiffré :
C'est un mathématicien du nom de László Babai qui a inventé la meilleure solution pour retrouver le centre du ''pavé'' associé au message chiffré :
Ligne 198 : Ligne 216 :
<br/>
<br/>
<br/>
<br/>
Enfin, on rééffectue une multiplication matricielle avec ''B'' et notre resultat ''w'':
Enfin, on ré-effectue une multiplication matricielle avec ''B'' et notre résultat ''w'':
<br/>
<br/>
<br/>
<br/>
Ligne 208 : Ligne 226 :
<br/>
<br/>
<br/>
<br/>
On obtient donc le vecteur d que l'on avait ajouté au message clair lors du chiffrement. Il suffit ensuite de le soustraire au message chiffré pour obtenir le message clair (voir partie déchiffrement).
On obtient donc le vecteur d que l'on avait ajouté au message clair lors du chiffrement. (Voir première image ci-contre)


Si on utilise la clé publique comme paramètre de cette algorithme, On ne trouvera pas le bon pavé et donc on ne trouvera pas le bon vecteur d. (Voir la deuxième photo ci-contre)
==Robustesse==


On retrouve donc la même problématique que dans l'exemple sur les modems plus haut.
Bien entendu un réseau euclidien en dimension 2, n'est pas assez robuste, cependant le temps pour réduire un réseau euclidien, c'est à dire trouver une bonne base d'un réseau, croît de manière exponentiel plus le nombre de dimension augmente. A partir de 80 dimensions il faut déjà y mettre un certain effort. les records sur clusters atteignent non sans mal, 130 dimensions. On considère qu'avec 200 ou 250 dimensions les réseaux euclidiens sont assez robuste. On estime le temps de calculs en milliards d'années.


== Robustesse ==
Le chiffrement par réseaux euclidiens représente un problème ''NP-complet'', problème impossible à résoudre pour les calculateurs classique ou quantique de manière efficace.

De plus, se baser sur des problèmes NP-Complet est d'autant plus intéressant puisqu'il est sûr et certain qu'aucun algorithme quantique ne pourra en venir à bout de manière efficace.
La cryptologie sur les réseaux euclidiens est basé sur des problèmes ''NP-complets''. Ce sont des problèmes impossible à résoudre pour les calculateurs classiques ou quantiques de manière efficace.
En effet, on sait que les algorithmes quantique sont limités à la classe [https://fr.wikipedia.org/wiki/BQP BQP] et résoudre ce type de problème ne permet pas de résoudre les problème NP-complet.
De plus, se baser sur des problèmes NP-Complets est d'autant plus intéressant puisqu'il est sûr et certain qu'aucun algorithme quantique ne pourra en venir à bout de manière efficace.
En effet, on sait que les algorithmes quantiques sont limités à la classe [https://fr.wikipedia.org/wiki/BQP BQP] et résoudre ce type de problème ne permet pas de résoudre les problèmes NP-complets.

Il y a plusieurs problèmes algorithmiques dans les réseaux :
* SVP (Shortest Vector Problem) qui permet de trouver le plus court vecteur non nul, c’est un algorithme NP-difficile.
* CVP (Closest Vector Problem) qui permet de trouver le vecteur le plus proche d’un vecteur donné dans un réseau. Il est également NP-difficile.
* La réduction de réseau, il s’agit de trouver une bonne base d’un réseau euclidien.

Pour réduire un réseau euclidien de dimension 2, il existe une méthode simple et efficace très similaire à l'algorithme d'Euclide pour calculer le PGCD de deux entiers. Comme avec l'algorithme euclidien, la méthode est itérative, à chaque étape, le plus grand des deux vecteurs est réduit en ajoutant ou en soustrayant un multiple entier du plus petit vecteur.

Cependant le temps croît de manière exponentielle quand le nombre de dimensions augmente. A partir de 80 dimensions, un effort considérable est déjà requis. Les records sur clusters atteignent avec difficultés, 130 dimensions. On considère qu'avec 200 ou 250 dimensions les réseaux euclidiens sont assez robustes puisque l'on estime le temps de calculs en milliards d'années.


== Un jeu sur les reseaux euclidiens : Cryptris==
== Un jeu sur les reseaux euclidiens : Cryptris==

[[File:cryptris.png|center|600px|Jeu cryptris]]
[http://inriamecsci.github.io/cryptris/ Cryptris] est un jeu basé sur les réseaux euclidiens, il a été conçu en collaboration avec ''l'INRIA'', et réalisé par ''Digitalcuisine''. Le jeu est open source, et fonctionne entièrement en HTML5. Ce jeu permet d'illustrer les notions que nous avons pu voir plus haut de manière plus ludique. Deux articles de vulgarisations scientifiques sont disponibles et expliquent les notions misent en oeuvre dans le jeu pour ainsi mieux comprendre cette méthode cryptographique.


== Chiffrement homomorphe==
== Chiffrement homomorphe==


Le chiffrement homomorphe permet d'effectuer une ou plusieurs opérations sans nécessité de d'accéder aux données sensibles en les déchiffrant.
Le chiffrement homomorphe permet d'effectuer une ou plusieurs opérations sans la nécessité d'accéder aux données sensibles en les déchiffrant.
Pour toute opération Op et pour tout message m1 et m2, effectuer l'opération sur les messages cryptés par la méthode C et ensuite déchiffrer par D est équivalent au résultat de l'opération sur les deux messages clairs :
Pour toutes opérations Op et pour tous messages m1 et m2, effectuer l'opération sur les messages cryptés par la méthode C et ensuite déchiffés par D est équivalent au résultat de l'opération sur les deux messages clairs :
<br/>
<br/>
<br/>
<br/>
Ligne 229 : Ligne 261 :
<br/>
<br/>
<br/>
<br/>
Prenons l'exemple d'Alice. Alice souhaite pouvoir effectuer des opérations sur deux données sensibles mais elle ne possède pas la puissance de calcul nécessaire pour l'effectuer. Elle souhaite donc demander à un organisme tiers de procéder aux calculs sur ses données. Cependant, les données à traiter sont sensibles et Alice ne fait pas confiance en cet organisme. Elle va donc une utiliser un chiffrement homomorphe et envoyer des données chiffrés à l'organisme qui pourra ainsi calculer et renvoyer le résultat, encore chiffré, à Alice. Alice pourra alors déchiffrer le message pour obtenir le résultat de l'opération sur ses données sensibles grâce aux propriétés du chiffrement homomorphe.
Prenons l'exemple d'Alice. Alice souhaite pouvoir effectuer des opérations sur deux données sensibles mais elle ne possède pas la puissance de calcul nécessaire pour l'effectuer. Elle souhaite donc demander à un organisme tiers de procéder aux calculs sur ses données. Cependant, les données à traiter sont sensibles et Alice ne fait pas confiance en cet organisme. Elle va donc utiliser un chiffrement homomorphe et envoyer des données chiffrées à l'organisme qui pourra ainsi calculer et renvoyer le résultat, encore chiffré, à Alice. Alice pourra alors déchiffrer le message pour obtenir le résultat de l'opération sur ses données sensibles grâce aux propriétés du chiffrement homomorphe.

[[File:alice.png|center|800px|Exemple Alice]]


== Chiffrement homomorphe et Cryptographie==
== Chiffrement homomorphe et Cryptographie==
Ligne 242 : Ligne 276 :
<br/>
<br/>
<br/>
<br/>
Multiplication homomorphe : <math>D(C(m1)*C(m2)) = m1*m2</math> Addition homomorphe : <math>D(C(m1)+C(m2)) = m1+m2</math>
Multiplication homomorphe : <math>D(C(m1)*C(m2)) = m1*m2</math>

Addition homomorphe : <math>D(C(m1)+C(m2)) = m1+m2</math>
<br/>
<br/>
<br/>
<br/>
On peut voir le XOR comme une addition modulo 2 et la propriété logique AND comme la multiplication modulo 2. Grace à ces deux portes logiques, il est possible d'exprimer tous les programmes et calculs existant. L'ensemble de ces deux opérations permettrai alors de pouvoir effectuer l'ensemble des opérations existantes et d’accéder à un homomorphisme complet.
On peut voir le XOR comme une addition modulo 2 et la propriété logique AND comme la multiplication modulo 2. Grace à ces deux portes logiques, il est possible d'exprimer tous les programmes et calculs existant. L'ensemble de ces deux opérations permettrait alors de pouvoir effectuer l'ensemble des opérations existantes et d’accéder à un homomorphisme complet.
C'est pourquoi le chiffrement par réseaux euclidiens est d'autant plus intéressant pour l'avenir de la cyber-sécurité.
C'est pourquoi le chiffrement par réseaux euclidiens est d'autant plus intéressant pour l'avenir de la cyber-sécurité.


== Conclusion==
== Les attaques et inconvénients==

Bien que ce type de chiffrement soit prometteur pour l'avenir, certains points noirs peuvent être cités.

En effet, alors que la taille des clés de chiffrement de la méthode RSA se situe entre 128 à 512 octets, celle des clés du cryptage par réseaux euclidiens représente plusieurs méga-octets et reste donc beaucoup trop lourde aujourd'hui pour être viable.

De plus, il faut savoir que l'addition et la multiplication homomorphe sont 1000 fois plus longues que les opérations classiques.

Ces deux inconvénients, bien qu'ils paraissent insignifiant, constituent aujourd'hui le problème majeur du chiffrement. De nombreux chercheurs dont Craig Gentry, le premier à avoir écrit une thèse sur cette méthode de chiffrement en 2009, travaille sur la réduction de la taille des clés ainsi que sur la performance pour effectuer les opérations homomorphes.

== Bibliographie==

[https://connect.ed-diamond.com/GNU-Linux-Magazine/GLMF-178/Une-cryptographie-nouvelle-le-reseau-euclidien Réseaux euclidiens]<br/>
[http://images.math.cnrs.fr/Cryptris-1-2-Comprendre-une-des.html?lang=fr Article de vulgarisation Cryptris 1]<br/>
[http://images.math.cnrs.fr/Cryptris-2-2-Les-dessous.html?lang=fr Article de vulgarisation Cryptris 2]<br/>

[http://www.neotrouve.com/?p=18110 La menace des ordinateurs quantiques]<br/>
[https://www.futura-sciences.com/tech/actualites/electronique-ibm-5-innovations-changeront-nos-vies-5-prochaines-annees-65820/?fbclid=IwAR3-BN8RFyUrfBw93r0YFX3XTV9twBgMm2gnHU1bFL-G0NfAB1bmNS3aEEI Les 5 innovations qui changeront nos vies mes 5 prochaines années]<br/>
[https://www.informatiquenews.fr/technologies-les-5-innovations-pour-les-5-annees-a-venir-56338/3?fbclid=IwAR1ruuNMRBM0EntyJq-zYwfy1-lJEu6JkPVzOT57rbFAl-q_NOYaXdT4AYA 5 innovations à venir]<br/>
[https://linuxfr.org/users/elyotna/journaux/le-chiffrement-homomorphe?fbclid=IwAR0PDzWCGyMFtWdQakivZzngO1ttamGeTweLuN8z6Eol5w76-kBjVuQZPII linuxfr - Le chiffrement homomorphe]<br/>
[http://www.bibmath.net/crypto/index.php?action=affiche&quoi=moderne/homomorphe Mathématique - Chiffrement homomorphe]
[https://en.wikipedia.org/wiki/Lattice_reduction Réduction des réseaux euclidiens]
[https://fr.wikipedia.org/wiki/R%C3%A9seau_%28g%C3%A9om%C3%A9trie%29#Probl.C3.A8mes_algorithmiques_dans_les_r.C3.A9seaux Problèmes algorithmiques sur les réseaux euclidiens]

Dernière version du 26 novembre 2018 à 00:25

Un réseau euclidien est un objet mathématique qui a été utilisé premièrement pour la cryptanalyse. C'est Miklos Ajtai qui a démontré que les réseaux euclidiens peuvent servir de base solide pour la cryptologie. Une des caractéristiques remarquables des problèmes de réseaux est qu'il n'existe pas d'instances faibles, différemment du cas RSA où l'utilisation de certains nombres premiers entraînerait une factorisation simple pour les calculateurs actuels. De plus, ces problèmes sont reconnus comme étant difficile. Il n'est donc pas possible de les résoudre efficacement en un temps convenable même avec un ordinateur quantique. Les crypto-systèmes se basant sur cet objet mathématique sont donc actuellement source de nombreuses études, en particulier pour la caractéristique homomorphe de ce chiffrement qui permet d'effectuer des calculs directement sur les données chiffrées. Cela peut garantir la sécurité dans de nombreuses applications comme par exemple lors de calculs effectués sur les services cloud.

Introduction

Un ordinateur quantique, ou calculateur quantique, utilise les propriétés de la physique quantique comme l'intrication quantique et la superposition quantique. Cet ordinateur n'est pas basé sur des bits ayant soit un état 0 soit un état 1, mais est basé sur des qubits, l'unité de stockage d'information quantique, qui est composé d'une superposition de deux états de base : 0 et 1. Ainsi ce type d'ordinateur peut calculer 16 fois plus rapidement qu'un ordinateur à 4 bits, seulement avec 4 qubits et la puissance est doublée a chaque fois que l'on rajoute un qubit.

Ce type d'ordinateur peut aujourd'hui représenter une menace envers les chiffrements actuellement utilisés En effet, le chiffrement RSA se base sur des nombres premiers très grands pour sécuriser les données. Pour décoder RSA, il faut utiliser la décomposition en facteurs premiers. Aujourd'hui, aucun algorithme "classique" permet de déchiffrer RSA dans un temps raisonnable (Polynomiale).

Mais l'algorithme de Shor, algorithme basé sur la physique quantique pourrait effectuer cette décomposition beaucoup plus rapidement et rendrait inefficace les cryptographies actuelles si ce dernier était implémenté sur un calculateur quantique.

L'intérêt aujourd'hui est donc de trouver une solution à cette futur menace pas si lointaine. De nombreuses entreprises travaillent sur le sujet dont IBM qui est actuellement sur un nouveau type de chiffrement basé sur les réseaux euclidiens afin de remplacer les méthodes de chiffrement utilisées de nos jours .

Les principes de base du réseau euclidien

Réseau euclidien de dimension 2

Pour faciliter la compréhension ainsi que la représentation géométrique d'un réseau, nous partirons du principe que le message est constitué de 2 digits résultant ainsi d'une dimension égale à 2, plus facile à représenter dans ce wiki

Un réseau euclidien est "ensemble de points régulièrement répartis sur une dimension n" ou avec des termes plus mathématique, il s'agit d'un sous-groupe discret d'un espace vectoriel euclidien.

Voici la représentation d'un réseau euclidien de dimension 2. Comme le nombre de points est infini, il serait difficile de faire la liste de ces points. Ils sont donc représentés par une base, ici (O, u, v). Les points ont donc des coordonnées correspondant à la base de notre réseau euclidien.

Vecteur u :      Vecteur v :          Base :  







Différentes bases d'un réseau euclidien

Bases différentes Un réseau euclidien peut être représenté par plusieurs bases (image ci-contre).Dans un réseau euclidien, différemment du système de coordonnées du plan (0,x,y), les coordonnées sont toujours des entiers et la base n'est pas nécessairement rectangulaire.
Bonne ou mauvaise base ? Certaines bases vont être plus qualitatives que d'autres. Une bonne base (base bleue) est presque rectangulaire alors qu'une mauvaise base (base rouge) est de forme quelconque.

Dans notre exemple, nous avons donc deux bases. Une bonne base représentée par les vecteurs u et v, et une mauvaise base représentée par les vecteurs u' et v'.



Bonne base :          Mauvaise base :  






Qu'est ce que ces typologies changent ? Pour expliquer cela, on peut évoquer l'utilisation des réseaux euclidiens dans les modems : on souhaite transmettre des messages numériques entre deux machines. Cependant la transmission est analogique donc du bruit peut altérer le message. Si un point du réseau représente le message à l'envoi, on a un vecteur d'erreur ou vecteur bruit appliqué sur ce point à la réception. Comme représenté sur les images ci-dessous, plus la base est bonne, plus la zone autour de chaque point couvrira au mieux l'espace, et plus simple sera la correction du message. Cela est à condition que l'erreur ne soit pas trop grande. Si la base est mauvaise l'erreur sera alors vite trop grande.

Couverture de l'espace avec une bonne base Couverture de l'espace avec une mauvaise base

En cryptologie, nous allons nous baser sur ces typologies pour les mêmes raisons (voir Algorithme de Babai).

Application en cryptologie

Nous allons utiliser une bonne base comme clé privée et une mauvaise base comme clé publique. Pour représenter un message sur le réseau euclidien, il suffit de coder notre message en ternaire, les valeurs possibles sont 0,1,-1. Il est important de savoir que le nombre de digits d'un message représentera le nombre de dimensions du réseau euclidien. Plus le message est long, plus la difficulté sera élevée. Dans une dimension 8, le message OK correspondra donc à m = 0 -1 -1 1 -1 0 -1 1. Si on revient en dimension 2, le message ternaire m = -1 1 est représenté par un vecteur m = .

Représentation d'un message en dimension 2
Tableau de codage ternaire














Le chiffrement

Pour le chiffrement nous utilisons notre clé publique (mauvaise base) pour tirer un point aléatoire sur le réseau. Ensuite on addition notre vecteur message m avec le vecteur d, qui correspond à notre point tiré au hasard.

  def chiffre(Pub, m):
  d = tirage_reseau(Pub)
  m_chiffré = d + m
  return m_chiffré

Dans notre exemple, on obtient alors un nouveau vecteur correspondant au message chiffré :

Message chiffré :   .

Chiffrage
















Le déchiffrement

Pour le déchiffrement, il suffit de retrouver le point représenté par le vecteur d grâce à notre clé privée. Pour cela on utilise l'algorithme de Babai qui va paver l'espace avec au centre de chaque pavé un point du réseau. Et ensuite permettre de retrouver le point du pavé (le point du réseau représenté par le vecteur d) où se trouve notre vecteur message chiffré. Un fois le vecteur d retrouvé on le soustrait au vecteur message chiffré.

  def dechiffre(Secret, m_chiffré):
  d = Algorithme_de_Babai(Secret, m_chiffré)
  m = m_chiffré - d
  return m

Algorithme de Babai

Recherche du point du pavé sur une bonne base
Recherche du point du pavé sur une mauvaise base

C'est un mathématicien du nom de László Babai qui a inventé la meilleure solution pour retrouver le centre du pavé associé au message chiffré :

  Algorithme_de_Babai(B, m_chiffré){
     B_inv = inverse(B)
     v = m_chiffré * B_inv 
     w = vector([round(x) for x in v])
     d = B * w
     return d
  }

L'algorithme marche ainsi :

On renseigne la base sous forme de matrice où chaque colonne représente un vecteur de dimension. Cette base sera plus ou moins bonne en fonction de la clé (privée ou publique). On renseigne le message chiffré également sous forme de matrice à une colonne.

Bonne base (clé privée) :          Message chiffré :  

Ensuite il s'agit de calculer l'inverse de la matrice B en appliquant la formule classique :

Formule :          Résultat :  

Il faut alors effectuer une multiplication matricielle avec B_inv et le message chiffré m_chiffre que l'on va arrondir ensuite:

Opération :    *         Résultat arrondi :  

Enfin, on ré-effectue une multiplication matricielle avec B et notre résultat w:

Opération :    *         Vecteur d:  

On obtient donc le vecteur d que l'on avait ajouté au message clair lors du chiffrement. (Voir première image ci-contre)

Si on utilise la clé publique comme paramètre de cette algorithme, On ne trouvera pas le bon pavé et donc on ne trouvera pas le bon vecteur d. (Voir la deuxième photo ci-contre)

On retrouve donc la même problématique que dans l'exemple sur les modems plus haut.

Robustesse

La cryptologie sur les réseaux euclidiens est basé sur des problèmes NP-complets. Ce sont des problèmes impossible à résoudre pour les calculateurs classiques ou quantiques de manière efficace. De plus, se baser sur des problèmes NP-Complets est d'autant plus intéressant puisqu'il est sûr et certain qu'aucun algorithme quantique ne pourra en venir à bout de manière efficace. En effet, on sait que les algorithmes quantiques sont limités à la classe BQP et résoudre ce type de problème ne permet pas de résoudre les problèmes NP-complets.

Il y a plusieurs problèmes algorithmiques dans les réseaux :

  • SVP (Shortest Vector Problem) qui permet de trouver le plus court vecteur non nul, c’est un algorithme NP-difficile.
  • CVP (Closest Vector Problem) qui permet de trouver le vecteur le plus proche d’un vecteur donné dans un réseau. Il est également NP-difficile.
  • La réduction de réseau, il s’agit de trouver une bonne base d’un réseau euclidien.

Pour réduire un réseau euclidien de dimension 2, il existe une méthode simple et efficace très similaire à l'algorithme d'Euclide pour calculer le PGCD de deux entiers. Comme avec l'algorithme euclidien, la méthode est itérative, à chaque étape, le plus grand des deux vecteurs est réduit en ajoutant ou en soustrayant un multiple entier du plus petit vecteur.

Cependant le temps croît de manière exponentielle quand le nombre de dimensions augmente. A partir de 80 dimensions, un effort considérable est déjà requis. Les records sur clusters atteignent avec difficultés, 130 dimensions. On considère qu'avec 200 ou 250 dimensions les réseaux euclidiens sont assez robustes puisque l'on estime le temps de calculs en milliards d'années.

Un jeu sur les reseaux euclidiens : Cryptris

Jeu cryptris

Cryptris est un jeu basé sur les réseaux euclidiens, il a été conçu en collaboration avec l'INRIA, et réalisé par Digitalcuisine. Le jeu est open source, et fonctionne entièrement en HTML5. Ce jeu permet d'illustrer les notions que nous avons pu voir plus haut de manière plus ludique. Deux articles de vulgarisations scientifiques sont disponibles et expliquent les notions misent en oeuvre dans le jeu pour ainsi mieux comprendre cette méthode cryptographique.

Chiffrement homomorphe

Le chiffrement homomorphe permet d'effectuer une ou plusieurs opérations sans la nécessité d'accéder aux données sensibles en les déchiffrant. Pour toutes opérations Op et pour tous messages m1 et m2, effectuer l'opération sur les messages cryptés par la méthode C et ensuite déchiffés par D est équivalent au résultat de l'opération sur les deux messages clairs :



Prenons l'exemple d'Alice. Alice souhaite pouvoir effectuer des opérations sur deux données sensibles mais elle ne possède pas la puissance de calcul nécessaire pour l'effectuer. Elle souhaite donc demander à un organisme tiers de procéder aux calculs sur ses données. Cependant, les données à traiter sont sensibles et Alice ne fait pas confiance en cet organisme. Elle va donc utiliser un chiffrement homomorphe et envoyer des données chiffrées à l'organisme qui pourra ainsi calculer et renvoyer le résultat, encore chiffré, à Alice. Alice pourra alors déchiffrer le message pour obtenir le résultat de l'opération sur ses données sensibles grâce aux propriétés du chiffrement homomorphe.

Exemple Alice

Chiffrement homomorphe et Cryptographie

Le chiffrement RSA, actuellement très utilisé, est considéré comme partiellement homomorphe. En effet, le chiffrement permet d'effectuer certaines opérations de manière homomorphe mais n'offre pas la possibilité d'effectuer l'ensemble des opérations existantes. Plus particulièrement, ce genre de chiffrement autorise soit la multiplication homomorphe soit l'addition homomorphe :

Multiplication homomorphe :

En revanche, le chiffrement par réseaux euclidiens est dit complètement homomorphe et permet donc d'effectuer l'ensemble des opérations de manière homomorphe. Pour qu'un chiffrement soit complètement homomorphe, il faut pouvoir appliquer les opérations d'addition et de multiplication sur les données chiffrées :

Multiplication homomorphe :

Addition homomorphe :

On peut voir le XOR comme une addition modulo 2 et la propriété logique AND comme la multiplication modulo 2. Grace à ces deux portes logiques, il est possible d'exprimer tous les programmes et calculs existant. L'ensemble de ces deux opérations permettrait alors de pouvoir effectuer l'ensemble des opérations existantes et d’accéder à un homomorphisme complet. C'est pourquoi le chiffrement par réseaux euclidiens est d'autant plus intéressant pour l'avenir de la cyber-sécurité.

Conclusion

Bien que ce type de chiffrement soit prometteur pour l'avenir, certains points noirs peuvent être cités.

En effet, alors que la taille des clés de chiffrement de la méthode RSA se situe entre 128 à 512 octets, celle des clés du cryptage par réseaux euclidiens représente plusieurs méga-octets et reste donc beaucoup trop lourde aujourd'hui pour être viable.

De plus, il faut savoir que l'addition et la multiplication homomorphe sont 1000 fois plus longues que les opérations classiques.

Ces deux inconvénients, bien qu'ils paraissent insignifiant, constituent aujourd'hui le problème majeur du chiffrement. De nombreux chercheurs dont Craig Gentry, le premier à avoir écrit une thèse sur cette méthode de chiffrement en 2009, travaille sur la réduction de la taille des clés ainsi que sur la performance pour effectuer les opérations homomorphes.

Bibliographie

Réseaux euclidiens
Article de vulgarisation Cryptris 1
Article de vulgarisation Cryptris 2

La menace des ordinateurs quantiques
Les 5 innovations qui changeront nos vies mes 5 prochaines années
5 innovations à venir
linuxfr - Le chiffrement homomorphe
Mathématique - Chiffrement homomorphe Réduction des réseaux euclidiens Problèmes algorithmiques sur les réseaux euclidiens