next up previous contents
suivant: Implémentation monter: Déchiffrement précédent: La transformation InvMixColumns()   Table des matières

Déchiffrement équivalent

Dans la version basique du déchiffrement (pseudo-code 1.2) la séquence de transformations diffère de celle du chiffrement (pseudo-code 1.8), le traitement de la clé restant inchangé. Certaines propriétés du Rijndael permettent d'implémenter une routine de déchiffrement qui respecte la séquence de transformations de la routine Cipher(), la structure de celle-ci étant la plus efficace on adoptera cette routine équivalente qui nécessite tout de même une modification de la gestion de la clé.

Les deux propriétés qui permettent ce changement sont les suivantes :

  1. les transformations SubBytes() et ShiftRows() commutent (leurs inverses respectifs aussi).
  2. les transformations MixColumns() et InvMixColumns() sont linéaires :
        InvMixColumns(state XOR Round Key) = 
        InvMixColumns(state) XOR InvMixColumns(Round Key)
    
Ces propriétés permettent donc d'inverser l'ordre des transformations InvSubBytes() et InvShiftRows(). L'ordre des transformations AddRoundKey() et InvMixColumns() peut aussi être inversé si les colonnes (les mots de 32 bits) sont modifiées en utilisant InvMixColumns(). Les premiers et derniers Nb mots de la clé étendue ne doivent pas être modifiés de cette manière. Le pseudo-code du déchiffrement équivalent est donné en 1.10.


\begin{fig1}
% latex2html id marker 1983\caption{pseudo-code - déchiffrement ...
...und*Nb, (round+1)*Nb-1])
fin pour\end{boxedverbatim}
}
\end{center}\end{fig1}


next up previous contents
suivant: Implémentation monter: Déchiffrement précédent: La transformation InvMixColumns()   Table des matières
vincent@@@juneeflorentine.net