Utilisateur:Qwyvin/Attaque par interpolation

Une page de Wikipédia, l'encyclopédie libre.

En cryptographie, une attaque par interpolation est un type d'attaque cryptanalytique contre les chiffrements par blocs.

Après que deux types d'attaques, la cryptanalyse différentielle et la cryptanalyse linéaire, ont été présentées sur les chiffrements par blocs, de nouveaux chiffrements par blocs ont été introduits, créés pour être sûrs contre ces attaques. Parmi ceux-ci, il y a des chiffrements itératifs par blocs tels que le KN-Cipher et le chiffrement SHARK. Cependant, Thomas Jakobsen et Lars Knudsen ont montré à la fin des années 1990 que ces chiffrements étaient faciles à casser en introduisant une nouvelle attaque appelée attaque par interpolation.

Dans cette attaque, on utilise une fonction algébrique pour représenter une S-box. Il peut s'agir d'une fonction quadratique, polynomiale ou rationnelle sur un corps de Galois. Ses coefficients peuvent être déterminés par des techniques d'interpolation lagrangienne, en utilisant des textes clairs connus comme points de données. Des textes clairs choisis peuvent également être utilisés pour simplifier les équations et optimiser l'attaque.

Dans sa version la plus simple, une attaque par interpolation exprime le texte chiffré comme un polynôme du texte en clair. Si le polynôme a un nombre relativement faible de coefficients inconnus, alors le polynôme peut être reconstruit avec une collection de paires texte clair/texte chiffré (p/c). Grâce au polynôme reconstruit, l'attaquant dispose alors d'une représentation du chiffrement sans connaissance exacte de la clé secrète.

Exemple[modifier | modifier le code]

Soit un chiffrement itéré donné par

est le texte clair, la sortie du -ème tour, la -ème sous-clé (dérivée de la clé secrète par un key schedule), et pour un chiffrement itéré à tours, est le texte chiffré.

Considérons un chiffrement à 2 tours. Soit le message, et le texte chiffré.

Le résultat du premier tour devient alors

et la sortie du deuxième tour devient

L'expression du texte chiffré sous forme de polynôme du texte en clair donne

où les sont des constantes dépendant de la clé.

En utilisant autant de paires texte clair/texte chiffré que le nombre de coefficients inconnus dans le polynôme , on peut construire le polynôme. Cela peut par exemple être fait par interpolation lagrangienne. Lorsque les coefficients inconnus ont été déterminés, on a une représentation du chiffrement, sans connaissance de la clé secrète .

Existence[modifier | modifier le code]

Pour un chiffrement par bloc de -bits, il y a textes clairs possibles, et donc paires distinctes . S'il y a coefficients inconnus dans , puisque l'on a besoin d'autant de paires que de coefficients inconnus dans le polynôme, alors une attaque par interpolation n'existe que si .

Complexité temporelle[modifier | modifier le code]

Supposons que le temps nécessaire pour construire le polynôme en utilisant les paires sont petites, en comparaison du temps nécessaire pour chiffrer les textes en clair requis. S'il y a coefficients inconnus dans , la complexité temporelle de cette attaque est alors , et exige paires connues distinctes.

Attaque par interpolation par Meet-In-The-Middle[modifier | modifier le code]

Compte tenu d'un chiffrement itéré à tours avec longueur de bloc , soit la sortie du chiffrement après tours, . On exprimera la valeur de comme un polynôme du texte clair , puis comme polynôme du texte chiffré . Soit l'expression de via le texte en clair, et laisse être l'expression de via le texte chiffré. Le polynôme est obtenu en calculant en utilisant la formule itérée du chiffre jusqu'à l'arrondi , et le polynôme est obtenu en calculant à rebours à partir de la formule itérée du chiffre à partir du tour jusqu'au tour .

L'égalité suivante devrait donc être vraie :

et si les deux et sont des polynômes avec un faible nombre de coefficients, alors on peut résoudre l'équation pour les coefficients inconnus.

Complexité temporelle[modifier | modifier le code]

On suppose que peut être exprimé par coefficients, et peut être exprimé par coefficients. Il faudrait alors paires connues distinctes pour résoudre l’équation en la mettant d'une équation matricielle. Cependant, cette équation matricielle est résoluble jusqu’à une multiplication et une addition près. Donc, pour être sûr d'obtenir une solution unique et non nulle, on fixe à un le coefficient correspondant au degré le plus élevé et le terme constant à zéro. Donc, paires connues distinctes sont nécessaires. La complexité temporelle de cette attaque est donc , et exige paires connues distinctes.

Avec l'approche Meet-In-The-Middle, le nombre total de coefficients est généralement inférieur à celui de la méthode normale. Cela rend la méthode plus efficace, puisque moins de paires sont nécessaires.

Récupération de clé[modifier | modifier le code]

On peut également utiliser l'attaque par interpolation pour récupérer la clé secrète .

Si l'on supprime le dernier tour d'un chiffrement itéré à tours de longueur de bloc , la sortie du chiffrement devient . On appellera ce chiffrement modifié le chiffrement réduit. L'idée est de "deviner" la sous-clé du dernier tour , de sorte que l'on puisse décrypter un tour pour obtenir le résultat du chiffre réduit. Ensuite, pour vérifier l'hypothèse, on utilise l'attaque par interpolation sur le chiffre réduit.

Par la méthode normale, on exprime la sortie du chiffre réduit comme un polynôme du texte en clair , qu'on appellera . Alors si on peut exprimer avec coefficients, puis en utilisant connu distinct paires, on peut construire le polynôme. Pour vérifier l’hypothèse de la dernière sous-clé, on vérifie ensuite avec une paire supplémentaire si l'égalité est vraie.

Si oui, alors avec une forte probabilité, l'hypothèse pour la dernière sous-clé était correcte. Si non, on fait une nouvelle hypothèse de la sous-clé.

Par la méthode Meet-In-The-Middle, on exprime le résultat du tour comme polynôme du texte clair et comme polynôme de la sortie du chiffre réduit . On appellera ces polynômes et , et leur nombre de coefficients et coefficients, respectivement. Puis avec paires connues distinctes, on peut trouver les coefficients. Pour vérifier la supposition de la sous-clé du dernier tour, on vérifie avec une paire supplémentaire si l'égalité est vraie.

Si oui, alors avec une forte probabilité, la dernière sous-clé était correcte. Si non, on fait une autre hypothèse de la sous-clé.

Une fois que l'on a trouvé la bonne dernière sous-clé, on peut alors continuer de la même manière avec les sous-clés restantes.

Complexité temporelle[modifier | modifier le code]

Avec une sous-clé de longueur , il y a clés différentes. Chacune a une probabilité d'être correcte si elle est choisie au hasard. On va donc en moyenne faire hypothèses avant de trouver la bonne clé.

La méthode normale a donc une complexité temporelle moyenne de , exigeant paires connues distinctes, et la méthode Meet-In-The-Middle a une complexité temporelle moyenne , exigeant paires connues distinctes.

Application pratique[modifier | modifier le code]

Une variate de l'attaque Meet-in-the-middle peut être utilisée pour attaquer les S-box qui utilisent la fonction inverse, car une S-box de bits donne dans .

C'est par exemple le cas du chiffrement par bloc SHARK, qui résiste à la cryptanalyse différentielle et linéaire après un petit nombre de tours. Cependant, il a été cassé en 1996 par Thomas Jakobsen et Lars Knudsen, en utilisant une attaque par interpolation. Notons SHARK une version de SHARK de tours avec une taille de bloc bits utilisant S-box parallèles de bits. Jakobsen et Knudsen ont découvert qu'il existe une attaque par interpolation sur SHARK (chiffrement par bloc de 64 bits) en utilisant environ textes clairs choisis, et une attaque par interpolation sur SHARK (chiffrement par bloc de 128 bits) en utilisant environ textes clairs choisis.

Thomas Jakobsen a également présenté une version probabiliste de l'attaque par interpolation qui utilise un algorithme de Madhu Soudan pour améliorer le décodage des codes de Reed-Solomon. Cette attaque peut fonctionner même lorsqu’une relation algébrique entre textes clairs et textes chiffrés ne s’applique qu’à une partie des valeurs.

Références[modifier | modifier le code]

[[Catégorie:Attaque cryptanalytique]] [[Catégorie:Pages avec des traductions non relues]] [[Catégorie:Cryptologie]]