Matrice MDS

De testwiki
Version datée du 16 mai 2024 à 10:56 par imported>Criric (tentative d'adoption (pas de nouveau lien trouvé))
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Modèle:Orphelin En algèbre et en cryptologie, une matrice MDS est une matrice possédant des propriétés particulières liées aux codes optimaux[1]. Les propriétés de ces matrices sont particulières et bien connues, ce qui participe notamment à l'analyse des algorithmes de chiffrement par bloc qui les utilisent. Plus précisément, dans une série d'articles scientifiques portant sur les propriétés des réseaux de substitution-permutation, Heys et Tavares[2]Modèle:,[3] ont montré que remplacer la couche de permutation par une couche linéaire de diffusion améliorait la résistance aux attaques cryptanalytiques, notamment la cryptanalyse linéaire et différentielle[4]. Pour cette raison, le terme de « matrice de diffusion MDS » est parfois employé.

Du fait de ces propriétés, les matrices MDS sont au cœur de la conception ou de l'analyse des algorithmes modernes de chiffrement par bloc, dont AES, SHARK[5], Square, Twofish[6], Anubis, KHAZAD, Manta, Hierocrypt, Kalyna et Camellia. Les matrices MDS interviennent également, quoique de manière moins systématique, dans le design de certains algorithmes de hachage (par exemple Whirlpool).

Définition

Soit K=𝔽qun corps fini, et M une matrice k×k à coefficients dans K. On dit que Mest une « matrice (de diffusion) MDS » si le code de matrice génératrice (Ik|M), où Ikest la matrice identité, est un code MDS[Note 1]. Il existe plusieurs définitions équivalentes, qui peuvent être utilisées pour construire de telles matrices explicitement (voir ci-dessous) ; notamment, une matrice est MDS si et seulement si tous ses mineurs sont inversibles.

Par extension, on appelle encore matrice MDS les matrices binaires obtenues via une réalisation du corps Ksur le corps 𝔽2.

Construction

À partir de codes MDS

Une méthode courante pour construire des matrices MDS consiste à générer un code de Reed-Solomon sur 𝔽2m, puis mettre sa matrice génératrice sous forme systématique (Ik|M).

Prenons par exemple K=𝔽8𝔽2[X]/(X3+X+1)et construisons sur Kun code de Reed-Solomon de paramères [6, 3, 4], alors on obtient la matrice génératrice sous forme systématique (I3|M)avec

M=(1XX31X6X61X4X5)

On peut obtenir à partir de Mune matrice binaire en remplaçant chaque Xmpar la puissance correspondante de la matrice compagnon du polynôme X3+X+1 , on obtient alors

Mb=(100010001010001111110011111100010001101100010101100010100010001011111101111101100)Utiliser une représentation différente de 𝔽8donnerait des matrices Met Mbdifférentes et non isomorphes.

Recherche exhaustive

Toutes les matrices MDS ne découlent pas de la construction ci-dessus. En particulier, il peut être souhaitable de doter la matrice de propriétés supplémentaires (qu'elle soit circulante, par exemple, afin d'en simplifier l'implémentation). Dans ces cas, il n'est pas rare de procéder à une recherche exhaustive[7]Modèle:,[8]Modèle:,[9].

Applications

Les matrices MDS sont de bonnes matrices de diffusion et sont utilisées à cette fin dans les algorithmes de chiffrement par bloc. Ainsi, l'étape MixColumns de l'AES/Rijndael peut être vu comme la multiplication par une matrice MDS circulante, à savoir

M=(2311123111233112)

où les coefficients appartiennent au corps fini AES isomorphe à 𝔽256. Cette matrice est un élément clé dans la stratégie de conception de l'AES, dite « wide trail » [10]Modèle:,[11].

Notes et références

Notes

Modèle:Références

Références

Modèle:Références

Modèle:Portail



Erreur de référence : Des balises <ref> existent pour un groupe nommé « Note », mais aucune balise <references group="Note"/> correspondante n’a été trouvée