Université de Yaoundé : MASSICO M2
Canevas de situation problème
UE MASSICO502 : Ingénierie de la cryptographie
Cours : Aspects Algorithmiques des Cryptosystèmes
Titre : Implémentation des algorithmes A.E.S et SHA.
Durée : Six (06) semaines dès le début du cours
ACTIVITE 1 : Implémentation de l’algorithme A.E.S
Objectifs
L’objectif de ce travail est la réalisation d’une implémentation du cryptosystème à clé secrète
AES en C/C++ ou Java.
Conventions
Les entrées et les sorties d’AES consistent en des séquences de 128 bits. La clé secrète de
chiffrement est une suite de 128, 192 ou 256 bits.
Dans AES, les octets correspondent à des séquences de 8 bits interprétées comme des
éléments du corps fini à 256 éléments F256. Ensuite, tout flux d’octets est organisé sous forme
matricielle, selon un modèle illustré dans la figure 1. Cette matrice aura nécessairement 4
lignes et un nombre de colonnes fonction de la taille du flux, définissant ainsi une taille de
bloc N.
Figure 1 : Représentation matricielle d’un flux de 16 octets
1
Par exemple, pour les flux d’entrée/sortie qui, dans AES, correspondent à des séquences de 16
octets, on obtiendra des matrices de 4 lignes et Nb = 4 colonnes. De même,
la matrice associée `a une cl´e de 128 bits aura 4 lignes et Nk = 4 colonnes ;
avec une clé de 192 bits, la matrice aura 4 lignes et Nk = 6 colonnes ;
pour une clé de 256 bits, la matrice aura 4 lignes et Nk = 8 colonnes ;
Description de l’algorithme de chiffrement A.E.S
Pour être tout à fait exact, l’algorithme AES n’est pas exactement celui de Rijndael
(l’algorithme DES) dans la mesure où ce dernier supporte des tailles de blocs plus nombreux
qu’AES. AES fixe la taille de blocs à 128 bits - représenté par Nb = 4. Nb reflète le nombre de
mots de 32 bits dans un bloc (c’est aussi le nombre de colonnes nécessaire pour une
représentation matricielle). AES utilise des clés de 128, 192 ou 256 bits. La longueur de clé
est caractérisée de façon similaire par Nk = 4, 6 ou 8. Comme DES, AES exécute une
séquence de rondes qui seront détaillés dans la suite. On note Nr le nombre de rondes qui
doivent être effectuées. Ce nombre dépend des valeurs de Nb et de Nk. Les différentes
configurations possibles sont détaillées dans le tableau ci-dessous.
Tableau 1 : Détails des configurations possibles
Cahier des charges de l’exécutable à produire
La compilation des sources produites devra fournir un exécutable aes accompagné d’un
rapport du travail.
On se limitera au chiffrement/déchiffrement d’un bloc de 128 bits. Les groupes qui le
souhaitent pourront étendre leur système au chiffrement/déchiffrement de chaînes de longueur
quelconque, voir même d’un fichier.
Libre à vous également d’implémenter d’autres options (pour permettre par exemple de
supporter tous les modes de chiffrements (AES-128, AES-192, AES-256)).
2
ACTIVITE 2 : Implémentation de l’algorithme SHA
Objectif
L’objectif est la réalisation d’une implémentation de fonction de hachage cryptographique
SHA256 en C/C++ ou Java.
Description
SHA (Secure Hash Algorithm) est une famille de fonctions de hachage cryptographique
utilisée par les autorités de certification pour signer certificats et CRL (Certificate Revocation
List). Il existe alors plusieurs versions de SHA : SHA0 (obsolète puisque totalement
vulnérable), SHA1 (actuellement le plus utilisé), SHA2 (qui nous intéresse) et enfin le tout
dernier SHA3 né en 2012.
SHA2 est le successeur de SHA1 et comprend 4 types de fonctions : SHA224, SHA256,
SHA384 et SHA512. Il fonctionne sur le même principe que SHA1 mais est plus résistant aux
attaques et donne un condensat plus long. Les fonctions SHA-2 prennent en entrée un
message de taille arbitraire, avec une borne (toute théorique) pour celle-ci, et produisent un
résultat (appelé « hash », haché, condensat ou encore empreinte ...) de taille fixe. La taille du
haché est indiquée par le suffixe : 224 bits pour SHA-224, 256 bits pour SHA-256, 384 bits
pour SHA-384 et 512 bits pour SHA-512.
Résultat attendu
Les résultats attendus devront constituer les éléments suivants :
1. Un cahier des charges
2. Un exécutable sha256
3. Un rapport du travail