Protection du contenu des mémoires externes dans les systèmes embarqués, aspect matériel

À notre époque, les systèmes numériques sont devenus omniprésents dans notre vie quotidienne. Ils sont utilisés dans plusieurs domaines, comme le Cloud Computing, les systèmes embarqués ou les bases de données. Ces systèmes manipulent des informations sensibles qui sont stockées dans une zone mémoire non nécessairement fiable. Par conséquent, la protection de données résidant dans un espace de stockage non fiable ou non digne de confiance est un problème critique du point de vue de la sécurité .

Malheureusement, la sécurité de ces systèmes est vulnérable à certaines attaques telles que les exploitations logicielles et les attaques matérielles. Parmi les zones critiques de ces systèmes on peut citer le bus de communication entre le ou les composants de calcul (processeurs, SoC) et les composants de stockage (la mémoire vive, le disque dur, etc.). Un intrus accédant physiquement à ces systèmes, s’il parvient à espionner le bus de communication, peut récupérer le code exécuté et les données manipulées et obtenir ainsi de l’information potentiellement sensible (attaques passives). Il peut aussi modifier les informations qui transitent sur le bus ou le contenu des mémoires (attaques actives), ce qui peut perturber le bon fonctionnement du système.

Les utilisateurs de services en ligne, par exemple, s’attendent à ce que leurs données sensibles soient stockées et protégées dans un système informatique de confiance appartenant au fournisseur de services. Cependant, si cette hypothèse de confiance n’est pas fondée, et que des données sensibles sont divulguées, la réputation du fournisseur de services peut être sévèrement compromise. Le scandale provoqué par la vente sur eBay [1] d’un ordinateur ayant précédemment appartenu à une banque et contenant des données concernant des clients de la banque est une bonne illustration des conséquences possibles d’un défaut de protection de données sensibles.

Chiffrement par bloc

Un algorithme de chiffrement par bloc prend en entrées un message en clair de taille fixe, une clé et produit un message chiffré de taille fixe (en général de la même taille que celle du message en clair). La taille du message en clair et du message chiffré est un paramètre de l’algorithme, par exemple 64 bits pour DES, 128 bits pour AES.

Structure du chiffrement par bloc Un algorithme de chiffrement par bloc est
divisé en deux parties : le générateur de clés (key schedule) et le chemin de données . Le chemin de données inclut deux opérations de base introduites par Shannon [8] qui sont la confusion (c’est-à-dire rendre la relation entre la clé et le texte chiffré le plus complexe possible) et la diffusion (c’est-à-dire permettre à chaque bit de texte clair d’avoir une influence sur une grande partie du texte chiffré). Ce chemin de données est le plus souvent composé d’une fonction (ou un ensemble de fonctions) appelée un tour (round) qui se répète un nombre fixe de fois. Il prend le texte en clair en entrée, et délivre en sortie le texte chiffré après le nombre fixe de tours.

Le générateur de clés traite une clé secrète et en déduit les sous-clés de tours utilisées à chaque tour du chemin de données. La dérivation de la clé est nécessaire pour ajouter de la confusion : elle augmente la dépendance de chaque bit du texte chiffré sur tous les bits de la clé secrète.

Le premier tour du chemin de données prend le texte en clair et la clé du premier tour comme entrées, puis les tours suivants prennent la sortie du tour précédent et la clé du tour correspondant comme entrées.

Exemple : AES L’algorithme Rijndael [9] a été développé par Joan Daemen et Vincent Rijmen suite à un appel de NIST afin de normaliser le chiffrement par bloc. Il a été adopté comme nouvelle norme après un processus de normalisation de cinq ans. Il a été ensuite appelé AES (Advanced Encryption Standard) et a remplacé le célèbre algorithme DES (Data Encryption Standard) [10] pour lequel la longueur de clé (56 bits) est devenue trop petite pour résister à une attaque par force brute [11] (cette attaque consiste à essayer successivement toutes les clés possibles).

L’algorithme AES traite des blocs de données de 128 bits en utilisant des clés de chiffrement de longueur de 128, 192 ou 256 bits. Un tour dans AES est défini par une série d’opérations (AddRoundKey, SubBytes, ShiftRows et MixColumns). Le nombre de tours utilisés dépend de la taille de la clé : 10 dans le cas d’une clé de 128 bits, 12 pour une clé de 192 bits et 14 pour une clé de 256 bits.

Un des objectifs d’AES était d’être implémentable efficacement aussi bien en logiciel qu’en matériel. De nombreuses implémentations matérielles ont été proposées aussi bien sur cible FPGA qu’ASIC. Par exemple, l’implémentation d’AES sur ASIC (technologie 0.18µm CMOS), présentée dans [12], montre que le chiffrement d’un bloc de 128 bits est réalisé en 11 cycles d’horloges à une fréquence de 330 MHz, ce qui a donné un débit de 3.84 Gbits/s.

Table des matières

Introduction
1 Éléments de cryptographie
1.1 Définitions
1.2 Techniques de chiffrement
1.2.1 Chiffrement symétrique
1.2.1.1 Chiffrement de flux
1.2.1.1.1 Masque jetable (One Time Pad, OTP)
1.2.1.1.2 Chiffrement de flux synchrone
1.2.1.1.3 Chiffrement de flux auto-synchrone
1.2.1.2 Chiffrement par bloc
1.2.1.2.1 Structure du chiffrement par bloc
1.2.1.2.2 Exemple : AES
1.2.1.2.3 Modes d’opération
Electronic CodeBook (ECB)
Cipher-Block Chaining (CBC)
Cipher FeedBack (CFB)
Output FeedBack (OFB)
Mode compteur
1.2.1.3 Conclusion
1.2.2 Chiffrement asymétrique
1.2.3 Sécurité des techniques de chiffrement
1.3 Techniques de vérification d’intégrité
1.3.1 Fonctions de hachage
1.3.1.1 Code de détection de modification
1.3.1.1.1 Exemple : SHA
1.3.1.2 Code d’authentification de message
1.3.1.2.1 Exemple : CBC-MAC
1.3.2 Paradoxe des anniversaires
1.3.3 Conclusion
2 Panorama des techniques de protection
2.1 Modèle de menace
2.2 Méthodes de protection
2.2.1 Confidentialité
2.2.2 Intégrité
2.2.2.1 Méthodes de protection contre l’attaque par injection
2.2.2.2 Méthodes de protection contre l’attaque par permutation spatiale
2.2.2.3 Méthodes de protection contre l’attaque par rejeu
2.3 Les arbres de Merkle réguliers
2.3.1 Opérations
2.3.1.1 Initialisation
2.3.1.2 Vérification
2.3.1.3 Mise à jour
2.3.2 Évaluation des performances
2.3.2.1 Notations
2.3.2.2 Initialisation
2.3.2.3 Lecture vérifiée
2.3.2.4 Écriture vérifiée
2.3.3 Variantes des arbres de Merkle
2.3.3.1 Parallelizable Authentication Tree
2.3.3.2 TEC-Tree
ReadAndCheck
WriteAndUpdate
2.3.4 Comparaison des différents arbres
2.4 Plates-formes de calcul sécurisées
2.4.1 Best
2.4.2 Dallas DS5002FP
2.4.3 XOM
2.4.4 AEGIS
2.4.5 CryptoPage
2.4.6 MESA
2.4.7 PE-ICE
2.5 Conclusion
Conclusion

Cours gratuitTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *