Les algorithmes de base de notre application
AES et ECC
Introduction
La cryptographie moderne se compose de deux grandes familles de cryptographie, chacune d’elle a des points positifs et des point négatifs, la cryptographie symétrique ou la cryptographie à clé secrète est caractérisée par la rapidité d’un cryptosystème symétrique qui utilise peu de ressources systèmes, la cryptographie asymétrique ou la cryptographie à clé publique permet la transmission de la clé secrète. Dans ce chapitre, nous allons parler de l’algorithme le plus fort dans la famille de cryptographie symétrique qui est AES (Advanced Encryption Standard) qui fournit un niveau de sécurité satisfaisant et un chiffrement rapide en terme de temps d’exécution, et de la cryptographie à base des courbes elliptiques qui se base sur le problème du logarithme discret et qu’elle représente le cryptosystème le plus fort dans la famille de la cryptographie asymétrique.
AES (Advanced Encryption Standard)
Dans cette section nous allons présenter et détailler le principe de fonctionnement de l’AES.
Présentation de l’AES
Depuis le 26 novembre 2001, l’algorithme de chiffrement par bloc « Rijndael », dans sa version 128 bits, est devenu le successeur du DES sous le nom d’Advanced Encryption Standard (AES). [29] Issu d’un concours lancé par le National Institute of Standards and Technology(NIST) en 1997, Rijndael a franchi toutes les étapes de sélection et maintenant un standard fédéral américain enregistré sous le numéro FIPS 197. Inscrit dans la National Security Agency (NSA). [29] Promu par le gouvernement américain, à devenir un standard pour l’échange sécurisé des informations, aux États-Unis et entre les États-Unis et leurs partenaires. Le champ d’application de l’AES a évolué et devient, à compter du premier octobre 2015, l’algorithme de chiffrement des informations jusqu’au niveau TOP SECRET aux États-Unis. De même, il est, aujourd’hui, l’algorithme symétrique de chiffrement par bloc le plus couramment utilisé Les algorithmes de base de notre application AES et ECC en occident. L’AES est un algorithme de chiffrement symétrique par bloc. Il chiffre et déchiffre des blocs de données à partir d’une seule clef. Contrairement au DES, basé sur un réseau de Feistel, l’AES s’appuie sur un réseau de substitutions et de permutations (SP-network). Ce dernier est constitué de fonctions de substitutions non linéaires contenues dans une S-Box et de fonctions de permutation linéaire. Chaque boîte prend un bloc de texte et la clé en entrée puis fournit un bloc de texte chiffré en sortie. Les entrées et sorties de l’AES sont des blocs de 128 bits et la longueur de la clé peut être de 128, 192 ou 256 bits. Pour son fonctionnement interne, chaque bloc de données est organisé en tableau de quatre colonnes et quatre lignes, chaque case contenant un octet, soit 4 × 4 × 8 = 128 bits par tableau. Les opérations de chiffrement et de déchiffrement sont effectuées sur ce tableau, puis, le résultat est copié dans un tableau de sortie. [29] 3.2.2 Principe de fonctionnement [25] AES est un chiffrement par bloc symétrique prend une taille de bloc de texte en clair de 128 bits ou 16 octets. La longueur de clé peut être de 128, 192 ou 256 bits. L’entrée des algorithmes de chiffrement et de déchiffrement est un seul bloc de 128 bits. Ce bloc est représenté comme une matrice carrée 4 * 4 d’octets. De même, la clé est représentée sous la forme d’une matrice carrée d’octets, puis la fonction d’extension de clé (key expansion function) génère N+1 clés de tour. Chaque clé de tour sert comme l’une des entrées de la transformation AddRoundKey dans chaque tour. Les premiers N-1 tours se composent de quatre fonctions de transformations distinctes: SubBytes, ShiftRows, MixColumns et AddRoundKey, qui sont décrites par la suite. Le tour final ne contient que trois transformations, et il y a une seule transformation initiale (AddRoundKey) avant le premier tour, qui peut être considéré comme le tour 0. La sortie du tour final étant le texte chiffré de 128 bits. Le chiffrement se compose de N tours, où le nombre de tours dépend de la longueur de la clé: 10 tours pour une clé de 128 bits, 12 tours pour une clé de 192 bits et 14 tours pour une clé de 256 bits. Le pseudo code de la fonction de chiffrement de l’AES peut s’écrire de la façon suivante. Dans ce cas, Nb correspond au nombre de mots de 32 bits et par conséquent au nombre de colonnes du tableau d’états et Nr correspond au nombre de tours utilisés dans l’algorithme. 1: function Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)]) 2: byte state[4,Nb] 3: state ← in 4: AddRounkey(state, w[0, Nb-1]) 5: for round=1 step 1 to Nr-1 do 6: SubBytes(state) 7: ShiftRows(state) 8: MixColumns(state) 9: AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) 10: end for 11: SubBytes(state) 12: ShiftRows(state) 13: AddRounkey(state, w[Nr*Nb, (Nr+1)*Nb-1]) 14: return state 15:endfunction
Fonctions de transformation AES
Nous passons maintenant à la discussion de chacune des quatre transformations utilisées dans AES. Les opérations de chiffrement s’appuient sur quatre fonctions: AddRoundKey, SubBytes, ShiftRows et MixColumns. Chacune de ces fonctions est exécutée sur le tableau d’états. Le cycle de chiffrement comprend une transformation initiale, des tours intermédiaires et un tour final. Le déchiffrement est réalisé en effectuant les opérations inverses des quatre fonctions de chiffrement, dans l’ordre inverse : InvShiftRows, InvSubBytes et InvMixColumns. La fonction AddRoundKey reste inchangée.