Les réseaux euclidiens
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.
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 qubit, 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.
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. Aujourd'hui, aucuns algorithmes "classique" permet de décoder 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.
Les principes de base du réseau euclidien
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.
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 :
Base 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.
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.
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.
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. Dans une dimension 8 le message OK correspondrait à 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 = .
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é
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
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ééffectue une multiplication matricielle avec B et notre resultat 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.
Avantages et inconvénients
Avantages
Robustesse
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.
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. En effet, on sait que les algorithmes quantique sont limités à la classe BQP et résoudre ce type de problème ne permet pas de résoudre les problème NP-complet.
Problèmes
Inconvénients
Un jeu sur les reseaux euclidiens : 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 qu'on a vu plus haut de manière plus ludique. Deux articles de vulgarisations scientifique sont disponibles et expliquent les notions misent en oeuvre dans le jeu.
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.
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 :
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.
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 permettrai 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é.
Bibliographie
Réseaux euclidiens Article de vulgarisation Cryptris 1 Article de vulgarisation Cryptris 2