AES est la norme de cryptage américaine. Partie IV

image



Autres articles du cycle
AES — . I

ES — . II

AES — . III

AES — . IV

AES — . V.





Dans cette partie IV, nous complétons la description du chiffrement AES-128. Pour les lecteurs qui ne sont pas familiers avec les parties précédentes de l'ouvrage, j'expliquerai que le matériel est présenté à des fins pédagogiques et cela impose un certain nombre de caractéristiques (détails, exemples numériques, fondements mathématiques, etc.) Il ne s'agit pas seulement de se familiariser avec la norme , et l'utilisation du matériel présenté pour le développement d'algorithmes de cryptage et de décryptage (en l'absence de clé). Les auteurs de nombreuses publications bien connues en ligne (et hors ligne) ne se sont pas fixé de tels objectifs, ce qui rend ces publications peu utiles à nos fins.



Le processus inverse de cryptage est appelé décryptage de message. Pour déchiffrer (avec une clé) les textes chiffrés (PCT), une table de substitution inverse et des clés rondes sont créées, qui sont utilisées dans l'ordre inverse par rapport au schéma de cryptage, mais similaire au processus de cryptage.



DĂ©crypter les messages AES



La liste des opĂ©rations de dĂ©chiffrement d'un message reste la mĂȘme que pour le chiffrement. Plus de dĂ©tails sur les opĂ©rations peuvent ĂȘtre trouvĂ©s ici . Il s'agit d'un principe assez gĂ©nĂ©ral des chiffrements - une seule implĂ©mentation matĂ©rielle pour le chiffrement et le dĂ©chiffrement, qui est fournie par des ensembles des mĂȘmes fonctions pour les deux processus. Seuls le texte source et la sĂ©quence de soumission des clĂ©s sont modifiĂ©s.



Le processus de dĂ©chiffrement des messages est mis en Ɠuvre comme une sĂ©quence de transformations inverses (inverses) utilisĂ©es pour le chiffrement, dans l'ordre inverse de leur sĂ©quence pendant le chiffrement. Il est Ă©galement Ă©vident que les touches rondes sont utilisĂ©es dans l'ordre appropriĂ©: d'abord, la clĂ© reçue en dernier, puis l'avant-derniĂšre touche, et ainsi de suite jusqu'Ă  la premiĂšre touche ronde.



Tous les noms de transformation restent les mĂȘmes, mais sont prĂ©fixĂ©s par Inv. Nous les considĂ©rerons dans le mĂȘme ordre que prĂ©cĂ©demment. Le chiffrement AES permet deux options de dĂ©chiffrement, inverse et direct, qui sont dĂ©crites en dĂ©tail ci-dessous.



Option de déchiffrement inversé



Le déchiffrement inversé d'un message est un processus naturel d'inversion du processus de chiffrement.



L'opĂ©ration AddRoundKey reste la mĂȘme (inchangĂ©e) S + Ki pour les 16 octets de l'Ă©tat comme elle l'a fait lors du chiffrement du message, c'est-Ă -dire est l'inverse de lui-mĂȘme. Cela est dĂ» au fait que la logique XOR est utilisĂ©e dans l'opĂ©ration et que les octets sont reprĂ©sentables en nombres binaires.

La clé du dernier tour est simplement ajoutée (résumée) au message chiffré.



InvSubBytes. L'essence de cette transformation n'a pas changĂ©, c'est-Ă -dire que chaque octet du message en cours de conversion est remplacĂ© par un autre extrait de la table (S -1-block) remplacement. Bien entendu, la table de substitution est ici diffĂ©rente. L'octet {x, y} est remplacĂ© par l'octet de Inv S (x, y) selon le mĂȘme principe: x - ligne de table, y - sa colonne. L'octet de remplacement est extrait de la cellule Ă  l'intersection de la ligne (x) et de la colonne (y) de la table Inv S (x, y).



Comme prĂ©cĂ©demment, la taille de la table est de 16 × 16 = 256 octets, chacun Ă©tant obtenu par multiplication et soustraction de matrice vectorielle (transformation affine) du produit du vecteur de dĂ©calage C.Dans les champs binaires, les opĂ©rations d'addition et de soustraction sont Ă©quivalentes, le vecteur C peut donc ĂȘtre simplement ajoutĂ© Ă  produit. Le tableau InvSubBytes est illustrĂ© ci-dessous. Le nƓud de substitutions S -1 spĂ©cifiĂ© est prĂ©sentĂ© dans le tableau 1 suivant, les valeurs sont donnĂ©es au format hexadĂ©cimal:



Tableau 1. Tableau des substitutions du bloc inverse S -1







Le tableau montre des exemples de remplacement de deux octets 4A → 5C et 9F → 6E remplis de vert.



InvShiftRows. Cette transformation dĂ©cale les lignes du tableau (le carrĂ© d'Ă©tat) vers la droite (dans le sens opposĂ© au dĂ©calage d'origine). La valeur de dĂ©calage pour chaque ligne reste la mĂȘme: la premiĂšre ligne (du haut) n'est pas dĂ©calĂ©e c0 = 0, la seconde est dĂ©calĂ©e de c1 = 1, la suivante est dĂ©calĂ©e de c2 = 2 et la derniĂšre est c3 = 3 positions (cellules). Les valeurs c0, c1, c2, c3 ont Ă©tĂ© donnĂ©es dans le tableau et dans la figure prĂ©cĂ©demment pour le premier cycle de conversion de message.







Le résultat d'une telle multiplication dans la représentation scalaire est:



S'0C = ({0l} · S0C) {({0b} · S1C) ⊕ ({0d} · S2C) ⊕ ({09} · S3C);

S'1C = ({09} S0C) ⊕ ({0l} S1C) ⊕ ({0b} S2C) ⊕ ({0d} S3C);

S'2C = ({0d} S0C) ⊕ ({09} S1C) ⊕ ({0l} S2C) ⊕ ({0b} S3C);

S'3C = ({0b} S0C) ⊕ ({0d} S1C) ⊕ ({09} S2C) ⊕ ({0l} S3C).





Pour obtenir des informations informatiques Ă  partir de PC, l'algorithme de dĂ©cryptage utilise les mĂȘmes valeurs de paramĂštres que celles utilisĂ©es dans le processus de cryptage. Pour la formation de la clĂ© Ă©tendue, les rĂšgles restent les mĂȘmes.



Option de déchiffrement direct



Les particularitĂ©s de l'algorithme de dĂ©cryptage pour certaines transformations inverses permettent de conserver la mĂȘme sĂ©quence d'opĂ©rations que dans l'algorithme de cryptage, mais certaines valeurs de paramĂštres nĂ©cessitent des modifications. Tout d'abord, nous parlons de la clĂ© (son dĂ©roulement).



La recherche a montrĂ© que l'ordre des fonctions SubBytes () et ShiftRows () ne change pas la valeur du rĂ©sultat, c'est-Ă -dire que ces fonctions sont permutables (elles commutent). Cette position (propriĂ©tĂ©) est Ă©galement vraie pour les fonctions InvSubBytes (), InvShiftRows (). Ce schĂ©ma est facile Ă  expliquer. Le fait est que les deux fonctions fonctionnent sur des octets entiers et que les dĂ©calages sont effectuĂ©s par un multiple entier d'un octet et ne modifient pas la valeur des octets eux-mĂȘmes.

Notez ce qui suit à propos de l'opération MixColumns (). Il est linéaire aux octets d'entrée (données).



InvMixColumns (State XOR Round Key) = InvMixColumns (State) XOR

InvMixColumns (Round Key).

Ces caractéristiques des fonctions (propriétés) permettent de changer l'ordre de leur application, c'est-à-dire

InvSubBytes (InvShiftRows ()) = InvShiftRows (InvSubBytes ()).

AddRoundKey (InvMixColumns ()) = InvMixColumns (AddRoundKey ()),

mais à condition que les colonnes (mots de 32 bits) de la clé de déchiffrement étendue aient été précédemment passées via la fonction

InvMixColumns ().



Ce qui prĂ©cĂšde signifie que le mode de dĂ©cryptage du PC peut ĂȘtre rendu effectif en prĂ©servant l'ordre d'utilisation des fonctions adoptĂ©es pour le cryptage. Evidemment, dans ce cas, les coĂ»ts de mise en Ɠuvre matĂ©rielle et logicielle du chiffrement sont considĂ©rablement rĂ©duits. Les modifications concernent uniquement la procĂ©dure de gĂ©nĂ©ration du dĂ©ploiement de clĂ©.



Dans la fonction InvMixColumns (), vous devez convertir le type de la variable, le paramÚtre d'entrée de la fonction est un tableau d'octets bidimensionnel (carré) et la clé développée est formée comme un tableau linéaire (chaßne) de mots de 32 bits. Pour cette raison, il est nécessaire d'effectuer une correspondance de type avec le carré.



Montrons, à l'aide de l'exemple d'une transformation en 2 tours, deux versions équivalentes de la procédure de déchiffrement RIJNDAEL. La premiÚre option est l'inverse habituel de la fonction de cryptage. La deuxiÚme option est obtenue à partir de la premiÚre en modifiant l'ordre des opérations en trois paires de transformations

InvShi ftRows () → InvSubBytes () 2 fois et

AddRoundKey () → InvMixColumns () 1 fois.



Le résultat de la transformation est enregistré lors du passage de l'original à la

séquence d'opérations inverse dans les paires spécifiées.



À partir du tableau, nous voyons que la procĂ©dure de chiffrement et la deuxiĂšme variante de la procĂ©dure de dĂ©chiffrement coĂŻncident jusqu'Ă  l'ordre d'utilisation des clĂ©s rondes (lors de l'exĂ©cution des opĂ©rations AddRoundKey), des tables de remplacement (lors de l'exĂ©cution des opĂ©rations SubBytes () et InvSubBytes ()) et des matrices de transformation (lors de l'exĂ©cution des MixColumns ( ) et InvMixColumns ()).



Tableau 2 - SĂ©quence des transformations dans la version Ă  deux tours de RIJNDAEL







Un résultat similaire s'avÚre vrai pour n'importe quel nombre de tours.



Récupération d'une clé de chiffrement à l'aide de la derniÚre sous-clé





GĂ©nĂ©ration de clĂ©s de chiffrement AES rondes. Le programme de clĂ© pour gĂ©nĂ©rer des clĂ©s rondes Ă  partir d'une clĂ© de chiffrement d'origine de 128 bits est une fonction rĂ©cursive. Cette fonction est dĂ©crite en dĂ©tail ici . Les conditions initiales de son lancement sont les 4 premiers mots de 4 octets de la clĂ© (4 × 32 bits), soit W [0], W [1], W [2], W [3]. Formulons le problĂšme de la rĂ©cupĂ©ration de cette clĂ© de chiffrement de 128 bits comme suit:



Soit les composants de la clé ronde 10 ronde W [43], W [42], W [41], W [40].

Il est nécessaire de récupérer la clé de chiffrement complÚte avec uniquement cette clé ronde.

Il convient de considérer d'abord la solution du problÚme sur des données numériques. Prenons l'exemple numérique donné dans FIPS PUB 197 comme base.... Le tableau 3 contient la clé du tour 10.



La procédure de génération de clés rondes est organisée de telle maniÚre qu'elle permet un mouvement vers l'avant (dépliage de la clé) le long d'un certain nombre de valeurs clés précédentes. Pour reculer à partir d'un point d'une série de valeurs, il est nécessaire d'avoir les données initiales du processus de calcul à ce point de retour. Que le point de retour soit la derniÚre étape du dernier 10e tour, à savoir, quatre mots de 4 octets de la 10e clé ronde Nk = Nb = 4 sont connus.



Tableau 3 - clé de 128 bits du 10e tour de l'algorithme de chiffrement AES En







outre, les résultats et les actions de l'algorithme clé de récupération sont placés pour commodité dans le tableau 4, qui est similaire à une table de génération de clé (en quelque sorte renversée).



Tableau 4 - Récupération de la clé de chiffrement à partir de la clé connue du 10e tour







Explications pour le tableau 4. Les nombres ronds sont comptĂ©s dans l'ordre inverse du 10 au 1er. Trois colonnes (3, 8, 9) du tableau contiennent des clĂ©s prĂȘtes Ă  l'emploi avec des numĂ©ros courants diffĂ©rents en fonction du numĂ©ro de ligne i. Les cellules restantes contiennent des donnĂ©es auxiliaires pour les calculs intermĂ©diaires. Ainsi, la valeur de la clĂ© W [i] apparaĂźt dans le tableau trois fois dans trois colonnes.



Les colonnes 1 et 2 sont le nombre r du tour et le nombre ordinal i du mot clé de 4 octets. Le dernier mot de ce type pendant le cryptage a le numéro i = 43. Dans le tableau, nous l'écrivons dans la ligne supérieure de la colonne de droite (9). Les nombres i des lignes du tableau sont décroissants et dans la colonne 9 ils correspondent aux mots de la clé W [i]. La 8Úme colonne contient le mot W [i - Nk] de la clé avec un nombre réduit W [43 - 4] = W [39], et la 3Úme colonne - le mot clé W [i - 1] = W [42], précédent W [i] = W [43].



La signification du mot W [39] dans la 8Úme colonne est inconnue et nous la trouvons à partir des données initiales en utilisant la formule:







Pour les calculs de formule, les conditions de sélection de la ligne de formule sont d'abord vérifiées. Pour W [43], i = 43 et Nk ne divise pas complÚtement la valeur 43, c'est-à-dire que pour i = 43 la valeur de W [i] est déterminée par la ligne du bas de la formule: W [43] = W [42] W [39]. Ici, pour les valeurs données de W [42] et W [43], le dernier terme W [39] n'est pas défini.

Alors W [39] = W [43] W [42] = b6630ca6 - e13f0cc8.



En arithmétique binaire mod2, les opérations d'addition et de soustraction sont équivalentes, donc les calculs bit à bit pour chacun des 4 octets du mot-clé W [39] prennent la forme (Tableau 5):

Tableau 5 - Calculs d'octets du mot-clé W [39].







Ainsi, la valeur du mot clé W [39] = 575c006e a été trouvée. Nous transférons cette valeur à la 3Úme colonne, à la ligne i = 40 et à la 9Úme colonne à la ligne i = 39. Les



calculs de la ligne i = 40 sont effectués comme lors du développement de la clé.



Le mot inconnu W [i - Nk] = W [40 –Nk] = W [i = 36] doit ĂȘtre dĂ©terminĂ© comme dans le cas prĂ©cĂ©dent par la diffĂ©rence W [36] = W [40] 7 colonne de la ligne 40.



À son tour, la valeur en 7- La Ăšme colonne de la ligne 40 est formĂ©e comme la somme (OR) des 5Ăšme et 6Ăšme colonnes. La valeur de la 5e colonne est obtenue Ă  partir de W [39] aprĂšs un dĂ©calage cyclique RotWord (4e colonne) et une opĂ©ration de remplacement de sous-mot (5e colonne).



Les résultats de ces actions prennent la forme

RotWord (575c006e) = 5c006e57; Sous-mot (5c006e57) = 4a639f5b.



La valeur de la 6Ăšme colonne est obtenue sous forme de constante

Rcon [j = i / Nk] = Rcon [j = 40/4] = 2 j-1 = 2 9 .



Cette constante est représentée par un octet hexadécimal

2 9 ≈100000000 = x 9 , mais il n'y en a pas dans le champ GF (2 8 ): vous devez trouver le reste de la division par un polynĂŽme irrĂ©ductible, c'est-Ă -dire

Xneuf:X8+X4+X3+X+1=Xcinq+X4+X2+X=00110110=36.



AprÚs avoir inclus la constante dans le mot-clé, nous avons

Rcon [j = 40 / Nk] = 36000000 (6e colonne). La valeur de la 7e colonne est obtenue comme suit (7e colonne) = (5e colonne) ⊕ (6e colonne) = 4a639f5b⊕36000000 = 7c639f5b.



Et enfin, pour

W [36] = W [40] (7Ăšme colonne de la ligne 40) = d014f9a8 7c639f5b = ac7766f3.



D'autres calculs par analogie mÚnent au résultat final - la clé de chiffrement.

Il y a plus d'informations sur les fonctions w et RotWord, Rcon et SubWord. Supposons que nous notions Kr [j] - le j-iÚme octet de la r-iÚme clé ronde et w [i] comme dans la documentation.



On obtient: Kr = (w [Nk ∙ r], w [Nk ∙ r + 1], · · ·, w [Nk ∙ r + Nk - 1]).



Pour différents i, nous avons les relations suivantes



pour i ≠ 0 mod Nk, Nk ≀ i <Nb ∙ (Nr +1), w [i] = w [i - Nk] xor w [i - 1] et

pour i = 0 mod Nk, w [i] = w [i - Nk] xor SubWord (RotWord (w [i - 1])) xorRcon [i / Nk].



Par consĂ©quent, pour i ≠ 0modNk, Nk 0≀i <Nb ∙ (Nr + 1) –Nk, w [i] = w [i + Nk] xor w [i + Nk - 1] et pour i = 0modNk, w [i] = w [i + Nk] xorSubWord (RotWord (w [i + Nk - 1])) xorRcon [i + Nk / Nk]

Avec AES-256, vous devez ajouter une opération Subword lorsque i est comparable à 4mod Nk. Il est donc possible de déduire la clé précédente de la sous-clé finale et d'obtenir pas à pas la valeur K0 de la clé de chiffrement.



Les fondements mathématiques du chiffrement AES - 128 sont assez complets et détaillés ici .



Passons au mappage de champ field: GF (2 8 ) → GF (2 8 ); x → x 2 + x. L'image de cette carte

1 = Im (l) a la dimension dim GF (2) (1) = 7.



Equation x2 + x = Ξ, oĂč Ξ 1 a deux solutions diffĂ©rentes (racines de l'Ă©quation) 1, 2є GF (2 8 ).



Par le thĂ©orĂšme de Vieta, x1⊕x2 = 1, la somme des racines est Ă©gale au coefficient de l'Ă©quation en x 2 avec le signe opposĂ©, et le produit des racines x1⊗x2 = Ξ est Ă©gal au terme libre de l'Ă©quation (dans notre Ă©quation avec le signe opposĂ©).



On sait que dans l'arithmétique des champs binaires, les opérations d'addition et de soustraction d'éléments mod2 sont équivalentes.







Ainsi, les racines de l'Ă©quation sont liĂ©es par le rapport x2 = x1⊕1, puisque le coefficient en x dans l'Ă©quation est 1. Cela signifie que dans la reprĂ©sentation dĂ©cimale des Ă©lĂ©ments de champ avec leur ordre lexicographique, ils sont situĂ©s l'un aprĂšs l'autre, ne diffĂ©rant que d'un.



Donc, pour x = 0 et x = 1 et pour x = 2 et x = 3, nous obtenons:







Les résultats (images) de la cartographie dans les paires réduites (0, 1); (2, 3) complÚtement coïncidé, c'est-à-dire deux types correspondent à une image. Par conséquent, la cardinalité de l'image est deux fois inférieure à la cardinalité de la pré-image et sa dimension de ses éléments est de 7.



Le produit des paires de racines, c'est-à-dire le terme libre d'une équation quadratique est commodément déterminé par la représentation en puissance des éléments du champ (images inverses). Dans ce cas, les exposants sont additionnés mod255, c'est-à-dire modulo l'ordre du groupe multiplicatif du champ GF (2 8 ).



All Articles