Sie sind auf Seite 1von 3

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

Das könnte Ihnen auch gefallen