Conception et intégration d’un IP de sécurité pour les ... · l'un des points les plus...

12
SETIT 2011 6 th International Conference: Sciences of Electronic, Technologies of Information and Telecommunications March 23-26, 2011 – TUNISIA - 1 - Conception et intégration d’un IP de sécurité pour les architectures de communication dans un SoC Yahia SALAH, Medien ZEGHID and Rached TOURKI Laboratoire EμE, Faculté des Sciences de Monastir, Université de Monastir Avenue de l’Environnement, 5019 – Monastir, Tunisie [email protected] [email protected] [email protected] Résumé: Ce papier présente l’étude, la conception et l’intégration d’un IP AES de sécurité dans un medium de communication (bus et réseau sur puce "NoC") visant à protéger les applications s’exécutant dans un système embarqué sur puce (System-on-Chip "SoC") contre les attaques. L’IP AES, le bus Wishbone et le NoC décrits en VHDL au niveau RTL, ont été simulé par l’intermédiaire de l’outil de simulation VHDL Simili 3.1. Le module de sécurité est évalué dans deux types d’architectures de communication différentes: un bus Wishbone et un NoC de topologie maillée NxN basée sur un routeur générique. La synthèse de l’architecture entière du SoC a été réalisée par l’outil Synplify Pro 9.6.1 et l’implémentation hardware a été effectuée en utilisant les circuits reconfigurables FPGA. Nous montrerons les performances obtenues par ce module de sécurité, notamment en terme de surface, vitesse et fréquence de fonctionnement. Mots clés: SoC, sécurité, communication, IP AES, bus, NoC, VHDL, implémentation matérielle, synthèse, simulation. INTRODUCTION Durant cette dernière décennie, l’évolution technologique conduit à l’augmentation de la densité d’intégration et de la fréquence de fonctionnement des circuits intégrés [ITRS 05, Nano 08]. Ceci permet aujourd’hui d’assembler sur une même puce un système numérique complet, appelé système sur puce ou SoC (System-on-Chip). Ces systèmes font de plus en plus partie de notre quotidien et se retrouvent dans des domaines comme la télécommunication, l'avionique, l’automobile, la télévision numérique, etc. ; et par conséquent ils sont aussi de plus en plus susceptibles à être agressés par différentes formes d'attaques. C'est pourquoi la notion de sécurité des données dans les SoCs est de plus en plus préoccupante pour les concepteurs des circuits intégrés, et également fait l'objet de nombreux thèmes de recherches. Afin de préserver la confidentialité des données lors d’une transmission, on implante dans certains circuits intégrés des algorithmes cryptographiques [NivS 91]. Plusieurs de ceux ci ont été développés, et ils sont bien robustes mathématiquement. L’algorithme de chiffrement AES (Advanced Encryption Standard) a été choisi pour sa puissance de calcul, sa rapidité de traitement, sa simplicité et sa flexibilité d’implémentation aussi bien sous forme logicielle que matérielle. Ces caractéristiques lui permettant d’offrir une sécurité suffisante en pratique pour les applications embarquées. Toute la sécurité du système repose en fait sur le secret de la clé de chiffrement. Cependant, l'un des points les plus critiques d’un système embarqué est son support de communication. Celui-ci doit acheminer les données à la propre destination sans perte et sans modifications. Pour que les ressources, dans un SoC, puissent bien communiquer entre elles, les techniques: communication point à point et le modèle simple du bus ne sont plus adéquates. Ces deux topologies manquent de flexibilité et ont une faible scalabilité. Elles trouvent ses limites en termes de bande passante à mesure que le nombre de blocs préconçus IP (Intellectual Property) utilisés dans le SoC augmente [Ben 02]. Afin de répondre à ces nouvelles difficultés de conception, de nombreuses recherches ont fait émerger le concept de réseau intégré sur silicium NoC (Network-on-Chip). L’objectif de ce papier est double. En premier lieu, il s’agit d’étudier, concevoir et implémenter sur FPGA un IP de sécurité pour la protection des données sensibles pour les systèmes embarqués. En second lieu, il s’agit de valider ce module de sécurité dans deux types d’architectures de communication qui sont le bus Wishbone [Bus 02] et le NoC [YS 07]. Afin de

Transcript of Conception et intégration d’un IP de sécurité pour les ... · l'un des points les plus...

SETIT 2011 6th International Conference: Sciences of Electronic,

Technologies of Information and Telecommunications March 23-26, 2011 – TUNISIA

- 1 -

Conception et intégration d’un IP de sécurité pour les architectures de communication dans un SoC

Yahia SALAH, Medien ZEGHID and Rached TOURKI

Laboratoire EµE, Faculté des Sciences de Monastir, Université de Monastir Avenue de l’Environnement, 5019 – Monastir, Tunisie

[email protected]

[email protected]

[email protected] Résumé: Ce papier présente l’étude, la conception et l’intégration d’un IP AES de sécurité dans un medium de communication (bus et réseau sur puce "NoC") visant à protéger les applications s’exécutant dans un système embarqué sur puce (System-on-Chip "SoC") contre les attaques. L’IP AES, le bus Wishbone et le NoC décrits en VHDL au niveau RTL, ont été simulé par l’intermédiaire de l’outil de simulation VHDL Simili 3.1. Le module de sécurité est évalué dans deux types d’architectures de communication différentes: un bus Wishbone et un NoC de topologie maillée NxN basée sur un routeur générique. La synthèse de l’architecture entière du SoC a été réalisée par l’outil Synplify Pro 9.6.1 et l’implémentation hardware a été effectuée en utilisant les circuits reconfigurables FPGA. Nous montrerons les performances obtenues par ce module de sécurité, notamment en terme de surface, vitesse et fréquence de fonctionnement. Mots clés: SoC, sécurité, communication, IP AES, bus, NoC, VHDL, implémentation matérielle, synthèse, simulation.

INTRODUCTION Durant cette dernière décennie, l’évolution

technologique conduit à l’augmentation de la densité d’intégration et de la fréquence de fonctionnement des circuits intégrés [ITRS 05, Nano 08]. Ceci permet aujourd’hui d’assembler sur une même puce un système numérique complet, appelé système sur puce ou SoC (System-on-Chip). Ces systèmes font de plus en plus partie de notre quotidien et se retrouvent dans des domaines comme la télécommunication, l'avionique, l’automobile, la télévision numérique, etc. ; et par conséquent ils sont aussi de plus en plus susceptibles à être agressés par différentes formes d'attaques. C'est pourquoi la notion de sécurité des données dans les SoCs est de plus en plus préoccupante pour les concepteurs des circuits intégrés, et également fait l'objet de nombreux thèmes de recherches. Afin de préserver la confidentialité des données lors d’une transmission, on implante dans certains circuits intégrés des algorithmes cryptographiques [NivS 91]. Plusieurs de ceux ci ont été développés, et ils sont bien robustes mathématiquement. L’algorithme de chiffrement AES (Advanced Encryption Standard) a été choisi pour sa puissance de calcul, sa rapidité de traitement, sa simplicité et sa flexibilité d’implémentation aussi bien

sous forme logicielle que matérielle. Ces caractéristiques lui permettant d’offrir une sécurité suffisante en pratique pour les applications embarquées. Toute la sécurité du système repose en fait sur le secret de la clé de chiffrement. Cependant, l'un des points les plus critiques d’un système embarqué est son support de communication. Celui-ci doit acheminer les données à la propre destination sans perte et sans modifications. Pour que les ressources, dans un SoC, puissent bien communiquer entre elles, les techniques: communication point à point et le modèle simple du bus ne sont plus adéquates. Ces deux topologies manquent de flexibilité et ont une faible scalabilité. Elles trouvent ses limites en termes de bande passante à mesure que le nombre de blocs préconçus IP (Intellectual Property) utilisés dans le SoC augmente [Ben 02]. Afin de répondre à ces nouvelles difficultés de conception, de nombreuses recherches ont fait émerger le concept de réseau intégré sur silicium NoC (Network-on-Chip).

L’objectif de ce papier est double. En premier lieu, il s’agit d’étudier, concevoir et implémenter sur FPGA un IP de sécurité pour la protection des données sensibles pour les systèmes embarqués. En second lieu, il s’agit de valider ce module de sécurité dans deux types d’architectures de communication qui sont le bus Wishbone [Bus 02] et le NoC [YS 07]. Afin de

SETIT2011

- 2 -

faciliter l’intégration de composants ayant des protocoles incompatibles, nous avons développé des adaptateurs (wrappers) entre les différents IPs et le système de communication sur puce.

Dans la section suivante, nous introduisons brièvement la notion et le principe de la cryptographie, puis, nous parlons des techniques d’algorithmes cryptographiques qui ont été proposées dans la littérature en s’intéressant plus particulièrement sur l’algorithme de chiffrement AES, et ensuite, nous introduisons l’aspect de sécurité pour les architectures de communication dans les systèmes embarqués. Nous présenterons dans la section 2 l’architecture proposée de l’IP AES et son implémentation matérielle sur FPGA. La section 3 présente l’intégration de cet IP dans un bus Wishbone et dans un NoC. La validation concrète du fonctionnement de module de sécurité sera donnée par les résultats de simulation et de synthèse.

1. Sécurité cryptographique des SoCs

1.1. Notion et Principe de cryptographie

A coté de la fonction de cryptage, qui permet de chiffrer le contenu d’un message dans le but de le rendre indescriptible et seuls ceux qui ont la clé de décryptage puissent le lire, la cryptologie moderne a développée de nouveaux buts à atteindre et qu’on peut énumérer essentiellement: l’identification, l’authentification, la confidentialité, l’intégrité des données, la non répudiation, le contrôle d’accès et la gestion des clés [Cryp 00, Cryp 09]. La cryptologie doit satisfaire ces principales fonctions de sécurité. Elle est essentiellement basée sur l'arithmétique, et se partage en deux sous-disciplines, également importantes : la cryptographie, qui consiste à protéger des informations, et la cryptoanalyse, qui est l’art de les retrouver.

Ce travail discute de la cryptographie, qui s’insère très bien dans les systèmes embarqués. Cette science a connu un plus large essor encore avec l’apparition des systèmes et infrastructures de communications modernes où il y a une nécessité absolue de protéger les données sensibles stockées ou échangées pour respecter les individus (les destinataires) [Cryp 00]. Les applications de cryptographie sont nombreuses. Parmi eux la téléphonie mobile, la télévision à péage et les cartes bancaires.

1.2. Techniques de cryptographie

La sécurité des données cryptées repose entièrement sur deux éléments : l’invulnérabilité de l'algorithme de cryptographie et la confidentialité de la clé. La notion de clé cryptographique, qui est une suite de caractères hexa-numériques, permet de définir deux schémas de base de crypto-systèmes ou algorithmes cryptographiques: la cryptographie symétrique et la cryptographie asymétrique.

1.2.1. Cryptographie symétrique ou "à clé privée" Dans ce système, la clé qui sert au chiffrement des

informations sert également à leur déchiffrement. Ainsi, l’algorithme symétrique, appelé aussi "à clé privée" ou "à clé secrète", repose sur le fait que l'expéditeur comme le destinataire disposent d'une seule et même clé secrète.

Cette technique est très utilisée et se caractérise par une grande rapidité. Elle est implémentée aussi bien en software qu’en hardware. Ce type de cryptographie fonctionne suivant deux catégories différentes, le cryptage par bloc et le cryptage par flot ("de stream" ou "en continu"). Le cryptage par bloc est une méthode qui prend un bloc et qui le transforme en un bloc chiffré et le cryptage par flot est une méthode générant un flux chiffré en temps réel (exemple les vidéos au format RealVideo sur internet).

Le chiffrement à flot est effectué bit-à-bit sans attendre la réception complète des données à crypter. Il arrive à traiter les données de longueurs quelconques et n'a pas besoin de les découper. Une autre méthode consiste à appliquer un OU exclusif (XOR) au message à chiffrer avec un autre message prédéfini. Il existe plusieurs algorithmes dans cette catégorie tels que le RC4 [RC4 92] ou le GSM-A5/1 [GSM 00].

Le chiffrement en blocs (block-cipher) est beaucoup plus utilisé et permet une meilleure sécurité. Il s'applique à des blocs de données et non à des flux de bits (stream-ciphers). Quatre modes de chiffrement par bloc sont utilisés: Electronic CodeBook (ECB), Cipher Block Chaining (CBC), Cipher FeedBack (CFB) ou Output FeedBack (OFB). Pour cette méthode, la taille de la clé (mesurée en nombre des bits) varie suivant l'algorithme et suivant le niveau de sécurité requis. Plus la longueur de la clé est importante, plus il est difficile de la briser par une attaque exhaustive. Les algorithmes les plus connus de cette catégorie sont le DES et l’AES. Le DES (Data Encryption Standard) [DES 94] a été développé aux Etats-Unis, en 1975, par une équipe d'IBM pour le NBS (National Bureau of Standards), et adopté comme standard (FIPS 46-3) en 1977 [DES 99]. Devant l’augmentation de la puissance des ordinateurs, la taille des clés (256 clés possibles) et la taille des blocs (64 bits) du DES sont devenues courtes et présentent des risques d’attaques en distinguabilité (232). C’est pourquoi, en 1999, le NIST (National Institute of Standards and Technology) recommande l’utilisation du Triple DES [DES 01, AES 03]. Cet algorithme offre une sécurité convenable, mais devant les progrès vertigineux des technologies de la communication et de l'informatique, il est devenu trop faible au regard des attaques actuelles et ne représente plus une barrière infranchissable. En 2001, il a été remplacé par le standard officiel AES (Advanced Encryption Standard) même s’il est encore très utilisé aujourd’hui [DES 01]. L’algorithme Rijndael AES [AES 01], crée par Johan Daemen et Vincent Rijmen, peut opérer sur des blocs de message de 128 ou 256 bits et est disponible pour trois tailles des clés différentes : 128, 198 et 256 bits. Les spécifications de ces trois versions ainsi que plusieurs implémentations

SETIT2011

- 3 -

sont disponibles sur la page Web du NIST. Un cryptage de 128 bits, valeur standard utilisée par le Rijndael AES (1997), est plutôt fort à l'heure actuelle. Rijndael a été conçu de telle manière à rendre des méthodes classiques comme la cryptanalyse linéaire ou différentielle très difficiles. La NSA a donc annoncé que l’AES était apte à protéger des informations de classe "Secret" et même "Top Secret" si on utilise des clés de 256 bits [AES 04]. Cet algorithme n'est pas cassé à la date d'aujourd'hui [Cryp 09]. Il est l’aboutissement de recherches récentes notamment dans le domaine de la cryptoanalyse, et il est utilisé dans plusieurs protocoles et applications pour l’embarqué [AES 10]. Des nouvelles instructions Intel® AES dédiées au cryptage AES sont disponibles dans la famille 2010 des processeurs Intel® Core™ (i5 et i7) basés sur l’architecture codename Westmere et gravés en une technologie de 32nm. Ces nouvelles instructions visant à accélérer le traitement des algorithmes de chiffrage AES et une optimisation de la virtualisation, permettent donc un cryptage/décryptage des données rapide et sécurisé [AES 10]. Le logiciel de chiffrement TrueCrypt utilise notamment ces instructions.

Nous avons préféré nous concentrer sur l’algorithme de chiffrement AES sur lequel nous allons travailler tout au long de ce travail. Les caractéristiques et les spécifications techniques de cet algorithme seront décrites dans la section 1.3.

1.2.2. Cryptographie asymétrique ou "à double clé" Dans ce système, la clé qui sert à chiffrer le

message n'est pas la même que celle qui est utilisée pour son déchiffrement. Avec ce procédé, chaque utilisateur a sa propre paire de clés : une clé publique et une clé privée. La première est disponible pour tous les utilisateurs alors que la seconde reste secrète et stockée sur un support protégé. Ainsi, cette technique, inventée en 1975 par les deux ingénieurs en électronique Whitfield Diffie et Martin Hellman [NivS 91], permet de garantir un encryptage facile et rapide et un décryptage difficile. L'application de ce crypto-système asymétrique permet aussi de prouver l’origine de données et d'expéditeurs (fonction d'authentification) et de vérifier si les données ont été altérées (fonction d’intégrité). L'authentification de données consiste à générer une signature digitale à partir de la donnée originale et de la clé privée de l'expéditeur.

Parmi les algorithmes les plus répandus de la cryptographie asymétrique, on trouve le RSA [RSA 06]. Inventé en 1978 par trois chercheurs du MIT (Massachusetts Institute of Technology), cet algorithme de chiffrement à clef publique est toujours considéré comme efficace pour des clés suffisamment longues (1024, 2048 et 4096 bits). Ainsi, il est difficile de le casser en un temps ou avec des moyens raisonnables. Le RSA est aujourd’hui le crypto-système le plus employé. Il est utilisé dans une large variété d’appareils (téléphones, réseaux Ethernet, etc.), de logiciels (Microsoft, Apple, Sun, etc.), et dans des industries [RSA 06, Cryp 09]. Son problème majeur

réside dans le choix des deux nombres premiers p et q, de 100 chiffres au moins, permettant de calculer le produit n [Cryp 00]. Il existe d’autres algorithmes à clés publiques, l’exemple de Digital Signature Algorithm, ECDSA, XTR et ELGamel. Le principal inconvénient de ces algorithmes (incluant le RSA) est leur grande lenteur par rapport aux algorithmes à clés secrètes.

Avec le déchiffrement asymétrique le problème de la distribution de la clef est résolu. Cependant cette technique est moins rapide et demande beaucoup de calcul lors des opérations de chiffrement et de déchiffrement, ce qui peut causer des problèmes de performance lorsque de nombreuses machines doivent s'exécuter simultanément [RSA 06]. Il est plus facile d’attaquer ces algorithmes en utilisant les propriétés mathématiques des clés, comme une factorisation dans le cas du RSA. Au contraire, la cryptographie symétrique est caractérisé par une grande rapidité et des implémentations aisés aussi bien software que hardware, ce qui accélère nettement les débits et autorise son utilisation massive [Cryp 00].

1.3. Caractéristiques et spécifications techniques de l’AES

Le choix de l’algorithme AES répond à de nombreux critères dont nous pouvons citer les suivants: sa résistance face à toutes les attaques connues, sa facilité de calcul, ses besoins faibles en ressources et mémoire, sa flexibilité d’implémentation en termes de tailles de clés et de blocs, sa simplicité dans le design et la possibilité de son implémentation aussi bien sous forme logicielle (l’exemple de Krypto Zone, firewalls logiciels, etc.) que matérielle (cartes dédiées, processeurs cryptos 8 à 32 bits, algorithmes câblés, etc.).

L’AES utilise une des trois longueurs de clé de codage suivantes : 128, 192 ou 256 bits. Les tailles de clé les plus élevées offrent un plus grand nombre de bits de brouillage des données mais également une complexité accrue de l’algorithme [AES 03]. Pour une clé de 128 bits, il y a environ 3,4 x 1038 clés de 128 bits possibles. Ce qui rend impossible de casser l’AES et la recherche exhaustive demeure la seule solution [AES 03]. Cet algorithme offre toujours un niveau de sécurité suffisant pour tout type d’applications. Il s’insère très bien dans les systèmes embarqués. En effet, il ne demande que peu de mémoire. C’est pourquoi il a été utilisé dans les microcontrôleurs, les microprocesseurs, les On-Chip Memories, les MicroChips, et les cartes à puce [NoCC 03, SoCL 07, NoCS 08, AES 10].

Comme la plupart des chiffrements par blocs modernes, le processus de cryptage est basé sur une procédure d'expansion E, des boites de substitutions S, appelées au niveau de la diversification de clé K. Ce processus conserve le principe des étages au moment de l’étape d’expansion. Le déchiffrement est l'inverse du chiffrement.

Chaque fonction de chiffrement (A) ou de

SETIT2011

- 4 -

déchiffrement (B) se divise en trois blocs comme indiqué sur la figure 1:

• Une transformation initiale avec la clé. C’est l’étape de Round Initiale. Elle ne compte qu’une seule opération "AddRoundKey".

• Une série de rounds réguliers. C’est l’étape de N Rounds, avec N est le nombre d’itérations.

• Puis une transformation finale. C’est l’étape de Round Finale. Elle est quasiment identique à l’une des N Rounds. La seule différence est que l’opération MixColumns n’est pas effectuée lors de la dernière tour.

Le nombre de rounds s'établit en fonction de la taille des données traitées en entrée et de la clé utilisée. 128 bits pour N=9, 192 bits pour N=11, et 256 bits pour N=13 [AES 01]. Dans un tour, quatre transformations sont appliquées au bloc à chiffrer: SubBytes, ShiftRows, MixColumns, et AddRoundKey. Chaque tour requière sa propre clé RoundKey. Ces clés sont générées en avance ou calculées au début de chaque tour. L’unité de base sur laquelle s’appliquent les calculs est une matrice de 4 lignes et 4 colonnes (dans le cas d’une clé de 128 bits) dont les éléments sont des octets.

Round F

inale9 Rounds

de Cryptage

Texte en ClairTexte en ClairTexte en ClairTexte en Clair

AddMask

AddRoundKey(CipherKey)

SubBytes

ShiftRows

MixColumns

AddRoundKey

SubBytes

ShiftRows

AddRoundKey

AddMask

Texte CryptéTexte CryptéTexte CryptéTexte Crypté

Round Finale

9 Rounds

de Decryptage

Texte en ClairTexte en ClairTexte en ClairTexte en Clair

AddMask

InvMixColumns

AddRoundKey

InvSubBytes

InvShiftRows

AddRoundKey

InvSubBytes

InvShiftRows

AddRoundKey(RoundKey10)

Texte CryptéTexte CryptéTexte CryptéTexte Crypté

Cryptage

(A) (B)

Round Initiale

Round Initiale

Décryptage

Figure 1. Opérations de l’algorithme AES – (A) : Cryptage, (B) : Décryptage

Dans notre cas, nous considérons la version AES 128 bits. Le texte clair (Plaintext) est découpé en des blocs de messages de 128 bits. Ensuite, chaque bloc ainsi que la clé de cryptage seront placés dans une matrice carrée comportant 16 éléments (16 octets), codés sous forme hexadécimale. Cette matrice subit ensuite les quatre opérations mentionnées précédemment, et qui définissent un tour:

• AddRoundKey : c’est l’opération XOR de la matrice courante avec la sous-clé correspondante (matrice Key) à l’étape

courante.

• SubByte : c’est une opération non linéaire (S-Box) conçu pour résister à la cryptanalyse linéaire et différentielle. En cas de déchiffrement, la fonction inverse de SubByte est appelée InvSubByte, qui consiste à appliquer la même opération.

• ShiftRows : c’est une opération de permutation des bytes introduisant des décalages variables sur les lignes des données. En cas de déchiffrement, la fonction inverse de ShiftRows est appelée InvShiftRows, qui consiste à remplacer le décalage à gauche par un décalage à droite.

• MixColumns: c’est une opération de multiplication des matrices. Chaque colonne est remplacée par des combinaisons linéaires des autres colonnes. La fonction inverse de cette opération, InvMixColumns, consiste à multiplier la matrice de données résultant de l’opération InvShiftRows par l’inverse de la matrice constante.

1.4. Sécurité de la structure d’interconnexion dans un SoC

De nos jours, et grâce à l’évolution des densités d’intégration, la complexité des systèmes mono-puces ne cesse pas de s’arrêter. Ainsi, ils se trouvent soumis à des fortes contraintes de performances, de coût de production et de temps de mise sur le marché [IP 00]. Pour respecter ces contraintes, les méthodologies de conception récentes imposent à ces systèmes d’être construits par un assemblage de composants préconçus. Le concept de la réutilisation de blocs virtuels préexistants IP (Intellectual Property) est très répandu et permet de maîtriser la complexité croissante des SoCs [IP 00]. Ces cœurs d’IP peuvent être des éléments de traitement (ou de calcul) ou des éléments de stockage des données (ou de mémorisation). Plusieurs classes caractérisent les IPs, mais on peut tout de même dégager trois grandes catégories : les Hard cores (ou IPs matériels), les Soft cores (ou IPs logiciels), et les Firm cores (ou IPs firmware). La première catégorie permet d’optimiser la puissance, les performances et le plan pour une technologie spécifique (ASIC ou FPGA). Dans cette famille, les composants peuvent être des processeurs, des périphériques d’entrée/sortie, des convertisseurs, de la mémoire, des structures d’interconnexion, etc. Pour la seconde catégorie, les cœurs sont livrés sous la forme d’un code (HDL1, logiciel, ou orienté objet) synthétisable ou pas. Son principal avantage est qu’il est simple d’utilisation, c'est-à-dire flexible. Dans cette famille, un cœur permet de réaliser un traitement donné (ex. FFT, DCT, décodeur MPEG, etc.). La troisième catégorie d'IP est une catégorie intermédiaire entre les catégories Hard et Soft.

1 Hardware Description Language

SETIT2011

- 5 -

Dans un SoC, les données sont généralement échangées en clair entre les différents IPs, notamment entre un élément de traitement (ex. processeur) et un élément de stockage des données (ex. mémoire) dans lequel elles sont stockées. Un attaquant peut observer le medium de communication et récupérer le contenu de l’élément de mémorisation, ou bien peut insérer du code afin d’altérer le fonctionnement d’une application s’exécutant sur le SoC. C’est le cas avec le scénario d’attaque illustré dans la figure 2. Les objectifs des attaques menées sur ce type de systèmes sont à récupérer des informations éventuellement privé ou de prendre le contrôle. On peut dire alors que l'un des points les plus faibles d’un système embarqué sur puce est son structure d’interconnexion qui relie les blocs de calcul par les blocs de mémorisation contenant des données sensibles. Afin de prévenir tout type d’attaque de l’architecture de communication du SoC, des mécanismes de sécurité doivent être mis en place pour assurer la confidentialité et l’intégrité des données. Il devient donc nécessaire de chiffrer les données échangées entre les différents IPs du système. Pour le chiffrage, une architecture matérielle de sécurité basée sur l’algorithme AES sera utilisée. Ceci permettra d’augmenter le niveau de sûreté et de sécurité dans le système entier.

IP1 IPn-1

ExternalAttacker

WrapperWrapper

WrapperWrapper

IPm IPn+1

Wra

pp

er

IP0

Wra

ppe

r

IPn

Computational ElementStorage Element

SoC Interconnexion Structure

Figure 2. Un exemple des attaques externes dans un SoC

Les performances sécurité d’une telle architecture de SoC sont limitées par la capacité de son medium de communication. Dans la littérature, on trouve trois techniques majeurs d’interconnexion, et qui sont : la communication point-à-point, le bus, et les réseaux sur puce. La première technique permet un parallélisme contrôlé et d’établir des connexions à fort débit, mais elle soufre d’une faible possibilité de réutilisation et une manque de scalabilité. La deuxième, est un ensemble de connexion autour duquel communiquent des cœurs d’IPs. Il est réutilisable et souple d’utilisation. Il existe trois types de bus: les bus backplane, les bus processeur-mémoire et les bus entrée/sortie. Les problèmes majeurs de cette technique sont une limite en termes de bande passante et de scalabilité à mesure que le nombre de cœurs devient important. La troisième technique apparait comme une solution pour interconnecter les cœurs à la place des bus. Cette solution représente une version allégée du modèle OSI (Open System Interconnection) intégrant 3 couches au lieu de sept [NoC 03]. Dans ce

contexte, la communication par paquet s’impose de plus en plus au dépend de la technique de communication par bus. Par ailleurs, les concepteurs des SoCs se forcent pour définir un standard d’interface afin de réduire la partie adaptation et de tirer profit de cette nouvelle approche [NoC 03, Ben 02]. Actuellement, il y a pas mal de travaux autour des réseaux sur puce. Il s’agit alors de connecter les différents composants du SoC à travers un réseau avec des diverses variantes intégrant: les topologies, les protocoles de communication, les techniques de routage et de contrôle de flux. L’avenir s’oriente vers une interaction croissante entre le système d’exploitation et le NoC, avec des adaptations mutuelles du NoC et de la qualité-de-service (QoS) de l’application. Ceci suppose des aspects sécurité, surveillance et reconfiguration du système [NoC 06].

Plusieurs travaux ont intégrés des cœurs de sécurité dans des bus processeur-mémoire ou des cartes à puce [Sec 09]. Ils ont utilisés des crypto-systèmes tels que l’AES, le SHA-1, ou le 3-DES. Des études et implémentations des processeurs DSP pour le cryptage des applications nécessitant un haut niveau de sécurité ont également présentés en références [Ben 02] et [DSP 02]. Récemment, des nouvelles instructions Intel® AES dédiées au cryptage AES sont disponibles dans la famille 2010 des processeurs Intel® Core™ i5 et i7 [AES 10] pour accélérer les opérations de chiffrement des données. Néanmoins, les mécanismes et les protocoles de sécurité n’ont été encore ni étudiés ni implémentés dans le domaine de NoC. Apriori, peu des travaux émergeant l’aspect de sécurité dans le NoC, et qui sont : [NoCC 03] et [NoCS 08].

2. Implémentation matérielle de l’IP AES

2.1. Méthodologie de Conception

La méthodologie de conception est basée sur VHDL comme langage de description, l’outil VHDL Simili 3.1 pour la simulation, et Synplify Pro 9.6.1 de Synopsys pour la synthèse au niveau RTL2. Cette méthodologie est suivie pour tester et valider le fonctionnement d’un circuit logique, et pour extraire les résultats de l’implémentation matérielle sur FPGA VIRTEX 5. Elle doit répondre à la fois aux objectifs de la description architecturale utilisée comme spécification et aux contraintes de réalisation (les performances).

2.2. Eléments de l’IP AES

L’architecture de notre IP de sécurité a pour objectif la sécurisation des données transmises entre les différentes IPs dans un système mono-puce. Le schéma de cette architecture est donné par la figure 3. Elle est constituée de quatre modules : un module principal de sécurité (AES), une FIFO, une interface d’entrée avec l’IP source (InterfaceInAES), et une

2 Register Transfert Level

SETIT2011

- 6 -

interface de sortie avec l’IP destination (InterfaceOutAES). Toute la sécurité de système se base sur le module AES. Ce dernier permet de crypter et décrypter les informations contenues dans chaque trame reçue. Comme l’on souhaite que notre système soit plus fiable et vulnérable aux attaques, l’algorithme AES est adopté. Il opère sur des blocs de message de 128 bits avec une clé secrète de taille 128 bits pour chiffrer un texte en clair ou déchiffrer un texte crypté.

data b

us

dat

a b

us

AES

DataIn(128 bits)

DataOut(128 bits)

Start_Encry DoneDataLoad

CLK

Reset

Mode

StartKey

Key Original

FIFO

data_in(128 bits)

data_out(128 bits)

Write Start

InterfaceOutAES

Reg_inO(128 bits)

Reg_outO(32 bits)

CLK

Reset

StartDoneInterface

InAES

Reg_outI(128 bits)

Reg_inI(32 bits)

Data_Ready

DoneAESRoundN

DataOUT

(32 bits)

DataIN

(32 bits)

full

CLK

Reset

Entete

Stop

Ack

Start

Reset

CLK

Figure 3. Architecture du module de sécurité IP AES avec ses interfaces d’Entrée/Sortie

Le tableau 1 décrit les différents signaux d’entrée/sortie de chaque module de l’IP AES.

Table 1. Description des entrées/sorties de l’IP AES

Signal E/S Description CLK Horloge du système Reset Reset du système Start Indiquant la présence des données Ack Acquittement émie par l’initiateur DataIN[0..31] Reg_inI[0..31]

Bus des données sur 32 bits

Reg_outI[0..127] Bus des données sur 128 bits Stop Interruption d’émission Data_Ready Ecriture des trames des données Entête Indiquant le nbr des bits entrés full Bloquer l’émission des données data_in[0..127] Bus des données sur 128 bits data_out[0..127] Bus des données sur 128 bits KeyOriginal Clé original de taille de 128 bits DoneAESRound Indiquant le nombre de tours DataIn[0..127] Texte à crypter/décrypter (128 bis) DataOut[0..127] Texte à décrypter/crypter (128 bis) Done Indiquant la réussite de l’opération Start_Encry Charger les données (Texte) Mode Indiquant la nature de l’opération StartKey Charger la clé Reg_inO[0..127] Bus des données sur 128 bits Reg_outO[0..31] DataOUT[0..31]

Bus des données sur 32 bits

Dans la suite, on va décrire le comportement de chacun de ces modules.

2.2.1. L’Interface InterfaceInAES Cette interface est responsable de regrouper des

données de 32 bits en des blocs de 128 bits à partir d’un IP source, et de les émettre à travers l’architecture de communication du système (bus ou réseau).

Cette interface est le premier bloc d’entrée de l’AES. Le fonctionnement de cette composante est simple. Pour chaque front montant d’horloge CLK et lorsque le signal Start est activée à '1', il y a une lecture d’une trame de données de 32 bits. Après 4 cycles d’horloge, le regroupement de données en un bloc de 128 bits est achevé, et le signal interupt est activé à '1' pour un seul cycle. Dans le cas où le signal Start est désactivé, on passe à l’état attente, et les données rassemblées seront transmises vers le bloc FIFO. Si le signal Sart est toujours activé à '1', on reste dans l’état acquisition des données. Le signal d’acquittement Ack, provenant de l’initiateur, permet d’informer l’interface que c’est la dernière trame du bloc. Si la taille du bloc de message (Texte en Clair ou le Texte Crypté) est inferieure à 128 bits, on complète le reste du bloc par des zéros. Pour cela, nous avons ajouté le signal Entête (codé sur 2 bits) indiquant le nombre des bits transmis au FIFO. La combinaison 00 pour 128 bits, 01 pour 96 bits, 10 pour 64 bits, et 11 pour 32 bits.

La figure 4 représente les résultats de simulation de l’InterfaceInAES.

Figure 4. Résultats de simulation de l’interface d’entrée

2.2.2. Le module FIFO La mémoire FIFO est responsable à l’échange des

données entre les deux modules InterfaceInAES et le cœur d’AES. Son principe de fonctionnement est représenté par la figure 5.

Figure 5. Solution de synchronisation par FIFO

Comme l’InterfaceInAES regroupe un bloc des données de 128 bits après chaque 4 cycles d’horloge, tandis que le module de chiffrement AES termine l’exécution d’une opération (cryptage ou décryptage) après 5 cycles, il est nécessaire de placer une FIFO en entrée de l’AES pour palier aux problèmes de synchronisation dans le système entier de sécurisation.

Dans la figure, on remarque que la FIFO s’incrémente d’une case mémoire après l’exécution de 3 opérations. L’exécution des 11 premières trames

SETIT2011

- 7 -

nécessite 55 cycles. Lors de la réception de la 12ème trame, le nombre des cases sera 5. Ce qui dépasse la capacité de la FIFO. Par conséquent, le signal full est activé pour signaler le blocage de transmission des données au travers de l’interface d’entrée, et le signal stop pour arrêter l’émission des données à partir de l’IP source (maitre). Pour ce fait, la FIFO reste dans l’état de saturation jusqu’à la transmission totale des données vers l’AES.

Les résultats de simulation de la FIFO sont donnés par la figure 6. Comme il est remarqué, après chaque 5 cycles d’horloge, il y a une opération de cryptage ou décryptage.

Figure 6. Résultats de simulation du module FIFO

2.2.3. Le Cœur AES Le cœur d’AES est le module principal de l’IP de

sécurité. Ce module est un crypto-système symétrique utilisant l’algorithme de chiffrement AES. Il se base essentiellement sur 3 blocs : bloc de cryptage, bloc de décryptage et bloc d’expansion des clés. L’architecture de l’AES est représentée par la figure 7. Elle comporte six sous blocs : KeyRam1, KeyRam2, AESRound1, AESRound2, KeySchedExpansion et le Controller. Elle est synchronisée par une horloge, et contrôlée par les signaux Reset et Start.

Controller

KeyRam1

KeyRam2

Adress2

ReadRam2

WriteRam2

Adress1

ReadRam1

WriteRam1

KeySchedExpansion

AESRound1

AESRound2

InterruptionCipherText

KeyOriginal

Mode

PlainText

StartGenCLK

Reset

Start

GoAESRound

FirstText

Key

GoKeyExpan

KeyOut

KeyInEncryptionEnd CipherText

Figure 7. Architectures Hardware de l’AES core

• Fonctionnement du bloc Controller :

Toutes les opérations de cryptage et de décryptage sont surveillées par le bloc Controller. La figure 8 représente la machine d’états finie décrivant le fonctionnement interne du bloc Controller de l’AES.

Le fonctionnement interne de contrôleur est géré par 3 processus représentés par une machine d’état. Pour déclencher la génération des clés, on doit

effectuer un test sur le signal StartGen, suivi par une activation de l’un des trois processus selon le mode d’opération. Le mode 0 indique l’opération de cryptage tandis que le mode 1 indique l’opération de décryptage. Lors de l’exécution du 2ième bloc de données de 128 bits, les deux processus n°2 et n°3 s’agissent simultanément. L’état EP22 est responsable de la lecture des clés à partir de la RAM1. L’état EP23 déclenche la première opération de cryptage AddRounKey de la transformation initiale.

Figure 8. Fonctionnement interne du contrôleur

Pour générer les clés, le contrôleur met le signal GoKeyExpan à la valeur ‘1’ pour activer la fonction KeySchedExpansion. Puis, il met le signal GoAESRound à la valeur ‘1’ pour activer la transformation AESRound1.

L’emplacement des clés se réalise suivant une variable Compteur. Si elle est inférieure ou égal à 5, on active le signal writeRam1 à ‘1’ pour placer les 5 clés générées dans le bloc KeyRam1. Dans le cas contraire, on active le signal writeRam2 pour mettre les 5 dernières clés dans KeyRam2.

En cas de cryptage des données, le signal ReadRam1 est activé pour la lecture des clés. En fait, la fonction AESRound1 reçoit les clés de bloc KeyRam1 pour crypter le texte en clair (PlainText) durant 5 tours à partir de la case mémoire d’indice 0 (clé originale). Puis, le signal ReadRam2 est activé pour terminer les autres 5 tours avec ses propres 5 clés de bloc KeyRam2 et à partir de la case mémoire d’indice 0.

Pour l’opération de décryptage, le signal Readram2 est activé à 1. En fait, la fonction AESRound1 prend les clés de bloc KeyRam2 pour décrypter les données durant 5 tours à partir de la case mémoire d’indice 4 et le AESRound2 termine les autres 5 tours avec ses propres 5 clés de bloc KeyRam1 et à partir du case mémoire d’indice 5.

• Fonctionnement du KeyShedExpansion :

La fonction KeySchedExpansion est responsable à la génération de 10 clés et les garder dans un bloc KeyRam 1 ou 2. Cette fonction consiste à calculer tous les RoundKey utilisés dans les opérations AddRoundKey de toutes les transformations. Le premier tour utilise la clé de cryptage (CipherKey). Les 9 tours suivants utilisent ses propres clés dérivant de la clé originale.

SETIT2011

- 8 -

• Fonctionnement de l’AESRound :

La difficulté rencontrée dans cette partie est la suivante : la durée d’exécution d’une opération de chargement d’un bloc des données à travers l’interface d’entrée InterfaceInAES est de 4 cycles, tandis que la durée de réalisation d’une opération de cryptage est de 10 cycles. L’InterfaceInAES termine l’exécution d’une tache d’assemblage des données avant l’achèvement d’une opération de chiffrement sur le cœur d’AES, puis lui transmet le nouveau bloc des données. En contre partie, ce crypto-système est déjà en cour d’exécution ; ce qui mène à une cumule de données pour le module AES.

Pour résoudre ce problème, la fonction AESRound est divisée en deux fonctions. La première fonction, AESRound1 est déclenchée à partir de bloc Controller et doit être achevée en 5 cycles. La fonction AESRound2 s’active dès que le signal Interruption, provenant de l’AESRound1, prend la valeur 1. Dans un mode de cryptage ou décryptage, le fonctionnement des deux blocs AESRound (1 et 2) est en pipeline. Lorsque l’AESRound1 termine l’exécution du 1er bloc des données (cryptage ou décryptage), elle passe à opérer le 2ième bloc et active en même-temps l’ AESRound2 pour finir le reste d’opération du 1er bloc.

• Fonctionnement de KeyRam:

Nous avons utilisé deux AESRound pour minimiser le temps de latence prohibitif et accélérer la rapidité de l’exécution. Lorsque ces deux blocs agissent simultanément, chacun va être dirigée sur sa propre KeyRam. Pour cela, ce dernier bloc est sectionné en deux mémoires : KeyRam1 et KeyRam2. Comme il est illustré sur la figure 9, la première mémoire est composée de 6 cases : 5 clés ainsi que la clé originale, et la deuxième comporte 5 cases.

Figure 9. Sens de lecture des clés dans le mode cryptage-décryptage

2.2.4. L’Interface InterfaceOutAES Cette interface est responsable d’effectuer la

transformation inverse du module InterfaceInAES. En effet, elle segmente un bloc des données de 128 bits, arrivé à partir du module AES, en trames de données de 32 bits chacune afin de les transmettre vers l’IP destination (esclave).

Si le signal Start est activé à la valeur de 1, il y a donc une lecture d’un bloc des données cryptées ou décryptées de 128 bits reçues du module AES. Dans ce cas, les données seront fragmentés en des trames de

32 bits chacune. Ainsi, le signal DataReady est activé à la valeur 1 pour chaque trame obtenue. Dans le cas ou la taille d’un bloc des données est inferieure à 128 bits, indiquée par le signal Entête, les zéros ajoutés depuis l’interface d’entrée seront supprimés. Lors de désactivation de signal Start, on passe à l’état "attente d’un bloc des données".

2.3. Implémentation sur FPGA

2.3.1. Résultats de Simulation Les différents blocs fonctionnels de l’architecture

d’IP AES sont testés et vérifiés par simulation avant de les implémentés dans un circuit FPGA. La simulation consiste à envoyer, via un fichier de testbench décrit aussi en VHDL, des stimuli aux entrées du système et à observer le comportement de ces sorties. L’outil de simulation utilisé est VHDL Simili 3.1 permettant de visualiser la variation des signaux de sortie et par suite d’effectuer des modifications au niveau de la description en cas de résultats insatisfaisants.

La figure 10 représente les résultats de simulation de l’IP AES dans le mode de cryptage.

Figure 10. Résultats de simulation de l’IP AES en

mode de cryptage

Dans cet exemple (figure 10), nous avons choisi comme entrée du module de sécurité 6 trames de 32 bits chacune pour les cryptées et voir les résultats de simulation obtenus. Pour cela, nous avons pris une clé originale de cryptage (keyOriginal) de valeur: X"6cb3df613e590fa095cfa61bebbaf960", et un texte en clair (PlainText) après un regroupement de 4 trames de valeur : X"195791bcd91456aaa123fde734567891". Après compilation et simulation du code et son testbench, la valeur obtenue du texte crypté (CryptedText) est X"40d382f2b7e8eefab6876d056e906fa1", et le signal EncryptionEnd est activé pour indiquer que le cryptage à été effectué avec succès. Ce mode de cryptage est effectué dès que le signal Start provenant de la FIFO est activé. En outre, les deux dernières trames (64 bits, c.à.d. Entête=10) sont cryptées puis acheminées vers l’IP cible.

La figure 11 représente les résultats de simulation de l’IP AES dans un mode de décryptage.

SETIT2011

- 9 -

Figure 11. Résultats de simulation de l’IP AES en mode de décryptage

Dans la figure 11, on remarque qu’à chaque front mentant de l’horloge, l’interface d’entrée reçoit une trame de données à travers le bus DataIN de 32 bits. Après regroupement d’un bloc de données, l’ InterfaceInAES les envois au FIFO. Dès que le signal Start est activé, l’AES commence l’opération de décryptage. Après traitement, nous avons obtenu le texte en Clair. Les données de sortie d’IP AES transitent à leur destination à travers un bus DataOUT de 32 bits. Ainsi, un signal DataReady nous informe qu’une opération à été effectuée par succès.

2.3.2. Résultats de Synthèse La synthèse est définie comme un processus de

raffinements successifs visant à traduire une description VHDL de haut niveau à une description RTL. Des outils de synthèse sont développés pour faciliter le flot de conception. A partir d’une description fonctionnelle plus ou moins haut niveau, on valide cette description par simulation, puis on effectue la synthèse. Dans ce travail, la synthèse a été effectuée en utilisant l’outil Synplify Pro 9.6.1. La cible matérielle est le FPGA de la VIRTEX5 XC5VLX50T. Les résultats de synthèse de l’architecture de sécurité sont regroupés au Tableau 2.

Tableau 2 : Résultats de synthèse de l’AES Core

Module RAMs ROMs Fréq. (Mhz)

Occupation (Luts)

Interface InAES

- - 357.7 194(0%)

Interface OutAES

- - 338 123(0%)

FIFO - - 149.3 1774(6%) KeySched Expansion

- 32 190 .1 440(1%)

Contoller - - 311 .7 590(2%) KeyRam - - 475.2 396(1%)

AES Round

- - 283 .2 131(0%)

TOTAL 10 624 127.1 7978(27%) La synthèse de l’IP AES montre que celui-ci

possède une vitesse de 3 .35 Gbit/s contre un taux d’occupation de 27 %. La vitesse est calculée suivant la formule suivante :

128Fréquence

cycledeNb)s/Gbit(V

1

×

=

− (1)

Nous avons pris un schéma de blocs qui présente la totalité du circuit (voir la figure 12) dont la fréquence est de127.1 MHz.

Figure 12. Schéma en blocs de l’IP AES

Selon les résultats de synthèse sur FPGA VIRTEX5, on peut remarquer que l’espace d’occupation de la totalité des blocs de l’IP AES est très réduit, la vitesse de fonctionnement est très rapide, et la fréquence d’opération est de 127.1 MHz. Pour valider réellement le fonctionnement de l’IP, on doit l’intégrer dans un système embarqué sur puce et voir s’il est capable d’assurer un bon niveau de sécurité ou pas.

Les résultats de l’intégration de cet IP AES dans une structure d’interconnexion pour les SoCs feront l’objet de la section suivante.

3. Etudes des cas Cette section représente deux études de cas pour la

validation concrète de l’architecture de sécurité (IP AES) pour un medium de communication dans un SoC. Nous allons prendre le bus Wishbone et le réseau d’interconnexion sur puce (NoC), dont lesquelles on choisit la structure la plus fiable dans notre étude.

3.1. Intégration de l’IP-AES au sein de bus Wishbone

L'interconnexion par le bus Wishbone rend la réutilisation de la conception dans un SoC facile en créant une norme simple d'échange de données. Cette technologie repose sur les caractéristiques suivantes: une largeur modulaire de bus des données, deux modes de transfert big-Endian et little-Endian, une grande variété de configurations dans un SoC, plus qu’une technique d'arbitrage (priorité fixe, priorité centrale, Round-Robin, etc.). De plus, la conception synchrone assure la portabilité, la simplicité et la facilité d'utilisation de cette structure. Quatre types d’interconnexions définies par Wishbone et qui sont: une liaison point-à-point, un bus partagé (Shared-Bus), un commutateur de type crossbar, et un transfert Data Flow [Bus 02]. Le medium d’interconnexion le plus simple, qui est encore très utilisé dans l’industrie, est le bus partagé.

Afin de faciliter l’intégration de composants ayant des interfaces incompatibles, une possibilité est de modifier les interfaces des composants devant être connectés pour les rendre compatibles. Mais cette

SETIT2011

- 10 -

solution n’est pas satisfaisante, parce qu’elle nécessite une bonne connaissance de leurs fonctionnement et de leurs implémentation. Pour pallier à ce type des problèmes, nous avons conçus des adaptateurs de protocoles : des wrappers. Dans notre cas, nous avons adapté les signaux de l’IP AES avec les signaux de bus Wishbone (figure 14).

On veut tester la façon de transmettre et de protéger les données sur le bus Wishbone. Pour cela, nous avons choisis une application simple d’un microprocesseur-bus-mémoire comme illustrée sur la figure 13. En effet, le seul composant actif de ce scénario est le processeur. L’objectif est d’intégrer les mécanismes de sécurité dans le processeur pour vérifier le contenu de la mémoire RAM et le trafic sur le bus lorsqu’un attaquant dispose du contrôle total de ces deux composants. Pour assurer la confidentialité et l’intégrité des données, l’IP AES est intégré dans ce système.

Figure 13. Interfaçage avec bus Wishbone

Un bloc des données est chiffré à l’aide d’une clé secrète, clé qui est également stockée à la construction à l’intérieur du processeur, dans un espace mémoire accessible uniquement par l’IP AES. Quand un bloc de données est lu depuis la mémoire RAM, l’unité de déchiffrement, intégrée à l’AES, le déchiffre, à l’aide d’une clé dépendante de la clé secrète et de l’adresse du bloc. Quand un bloc de données est écrit en mémoire RAM, il est chiffré de la même manière. L’initiateur est le microprocesseur (CPU). Il émet des requêtes de lecture ou d’écriture vers le RAM à travers un wrapper. Le wrapper initiateur permet d’adapter les protocoles CPU/Wishbone et de demander l’autorisation d’accès. Si l’autorisation est fournie par l’arbitre, la requête est transmise au wrapper cible pour transmettre les données vers la RAM. Le mémoire réalise l’opération demandée par le processeur et le résultat est ensuite transmis au processeur selon le même principe que la requête.

Figure 14. Système AES Wishbone

3.1.1. Résultats de Simulation de l’IP AES-Wishbone La réalisation d’une opération

(cryptage/décryptage) d’un bloc de 128 bits dans la structure en bus a été validée par une simulation fonctionnelle. En fait, les comportements de quelques signaux d'entrée/sortie de bus Wishbone sont montrés dans la simulation. La figure 15 montre la manière de transfert des données dans le bus Wishbone.

Figure 15. Résultat de simulation de l’IP AES-Wishbone

3.1.2. Résultats de Synthèse de l’IP AES-Wishbone La synthèse de l’IP AES-Wishbone a été réalisée

sur un FPGA du type VIRTEX5 XC5VLX50T. Le tableau 3 nous présente les résultats et les pourcentages d’utilisation des ressources qui composent le circuit.

Tableau 3: Résultats et pourcentages de synthèse de l’AES-Wishbone

Fonction Ressources Utilisées

Pourcentage d’utilisation

Fréquence (Mhz) 193,4 -

RAMs 6 10%

ROM 624 -

Occupation Total (Luts) 7007 24%

La vitesse de fonctionnement de l’IP AES dans le bus Wishbone est 4.99 Gbits/s. La fréquence de circuit AES-Wishbone est 193,4 MHz.

3.2. Intégration de l’IP AES dans un NoC

Dans cette section, nous allons intégrer l’IP AES dans un réseau sur puce NoC visant à protéger l’application s’exécutant sur un système embarqué contre les attaques. Pour cela, nous avons profité de notre modèle de NoC publié en [YS 07]. La figure 15 représente ce modèle. Chaque routeur dans le réseau a un ensemble de ports bidirectionnels liés aux voisins et au cœur d'IP. Vu la simplicité et l’efficacité de la structure régulière d’un réseau, nous avons choisis la topologie maillée (2D-Mesh).

R01

R10 R11

R00

IP10WR IP11WR

IP01WR IP00WR

Figure 15. Structure d’un réseau NoC maillé 2x2

Un routeur comporte un contrôle logique

SETIT2011

- 11 -

d’acheminement et cinq ports de communication à canaux unidirectionnels: Est (indexe0), Ouest (indexe1), Nord (indexe2), Sud (indexe3) et Local (indexe4). Chaque port a un FIFO pour le stockage temporaire des paquets de données. Le port Local établit une communication entre le routeur et son cœur d’IP local. Les autres ports sont connectés aux routeurs voisins. Le contrôle logique d’acheminement est constitué d’un arbitre et un module de décision et routage. L’algorithme de routage utilisé est le XY, ou X représente la position horizontale d’un routeur dans la topologie et Y sa position verticale. Le mode de commutation de paquets est le wormhole.

Un paquet circulant dans le réseau contient des flits (payload flit) de données et un flit en-tête (header flit). Un flit est un mot de données de taille variable. Dans notre cas, cette variable est fixée à la largeur du canal physique. Le flit en-tête est composé de l’adresse du routeur source, de l’adresse du routeur destination et d’un compteur indiquant le nombre de mots présents dans le paquet (mi).

Dans notre travail, on s’intéresse à une topologie maillée du type 2x2 (figure 15) pour la transmission des données dans un SoC. Ce choix est relatif à l’application précédente qui comporte un microprocesseur, une mémoire, et l’IP AES sanctionné en deux IPs (AES cryptage et AES décryptage).

Afin de valider l’incorporation de l’IP AES dans l’architecture du NoC, nous avons conçus deux adaptateurs (wrapper) de protocoles IP/NoC, l’un pour le cryptage et l’autre pour le décryptage. Ces modules réalisent l’interface entre le protocole du NoC et celui des blocs IPs. Leur rôle est de séparer le traitement (effectué dans les IPs) des communications (gérées par le réseau NoC).

La figure 16 montre le déroulement d’acheminement des données cryptées/décryptées entre deux routeurs (R00 et R10) du NoC 2x2.

Figure 16. Déroulement d’acheminement des données entre deux routeurs dans une topologie maillée 2x2

3.2.1. Résultats de Simulation de l’IP AES-NoC2x2 Les signaux du port d’émission d’un routeur sont

reliés à ceux du port de réception du routeur voisin. La transmission d’un paquet dans la topologie maillée 2x2 de ce NoC a été validée par une simulation fonctionnelle. Le résultat de simulation illustre la transmission d'un paquet du routeur 00 vers le routeur 11 dans la topologie de la figure 15. En fait, les comportements de quelques signaux d'entrée/sortie des routeurs (switchs) 00, 10 et 11 sont montrés dans la simulation de la figure 17.

Figure 17. Simulation de la transmission d’un paquet de routeur 00 au routeur 11

L’intégration de AES processeur dans une topologie maillé 2x2 a été validée par une simulation fonctionnelle (figures 18 et 19) afin de vérifier le bon acheminement des données ente les deux IP (AES cryptage et décryptage) à travers le réseau de communication.

Figure 18. Simulation de la réception des données par routeur 00

Les signaux contrôlés par les composants wrapper initiateur et wrapper cible se déroulent correctement tout au long des transactions des données. Les figures 18 et 19 illustrent la transmission d'un paquet du routeur (ou switch) 00 vers le routeur 10.

Figure 19. Simulation d’émission des données par routeur 10

3.2.2. Résultats de Synthèse de l’IP AES-NoC2x2 Les résultats de synthèse du système AES-

NoC2x2 dans la technologie FPGA Virtex5 XC5VLX50T sont représentés dans le tableau 4.

Tableau 4. Résultats de synthèse de l’AES-NoC2x2

Fonction NoC 2x2

Ressources Utilisées

Pourcentage d’utilisation

Fréquence (Mhz)

164.7 151.8 -

RAMs 60 14 23% ROMs - 896 -

Occupation Totale (Luts)

5985 (20%)

17462 (39.8%)

60%

La génération du schématique, réalisée par l’outil de synthèse, est illustrée dans la figure 20. Nous avons obtenu une fréquence plus élevée 164,7 Mhz, ce qui mène à la robustesse de système. La synthèse de l’IP AES-NoC montre que celui-ci possède une vitesse de 3 .88Gbit/s contre un taux d’occupation (60%).

SETIT2011

- 12 -

Figure 20. Schéma en bloc d’AES Core NoC

4. Conclusion Dans ce travail, nous avons présenté la conception

d’un module de sécurité IP-AES. Cet IP a été simulé, implémenté sur FPGA, et évalué sur deux types d’architectures de communication : le bus Wishbone et le 2D-Mesh NoC. D’après les résultats de simulation avant et après synthèse, l’IP AES a été testé efficacement, avec une vitesse rapide et un espace d’occupation faible sur la technologie FPGA. Ainsi, on peut dire qu’il est un bon candidat pour la sécurité des données sensibles et confidentielles dans un tel système embarqué sur puce.

REFERENCES [AES 01] Federal Information Processing Standards (FIPS)

PUB 197-26, Advanced Encryption Standard (AES), U.S. Department Of Commerce/National Institute of Standards and Technology, 2001.

[AES 03] A. Sinha and K. Singh, “A technique for image encryption using digital signature”, Optics Communications, 218 : 229-234, 2003.

[AES 04] O. Frider, “Cryptographie: Advanced Encryption System-AES”, ETR6, Ecole d’ingénieurs de Canoon de Vaud, tcom, Mai 2004.

[AES 10] Intel® Advanced Encryption Standard (AES) Instructions Set - Rev 3, Published on January 26, 2010, Available at: http://software.intel.com/en-us/articles/intel-advanced-encryption-standard-aes-instructions-set.

[Ben 02] L.Benini, G.DeMicheli, “Networks on Chips: A New SOC Paradigm”, Computer, Vol.35, No.1, Jan 2002, pp.70-78.

[Bus 02] WISHBONE SoC Architecture Specification, Revision B.3 (September 7, 2002), in http://cdn.opencores.org/downloads/wbspec_b3.pdf

[Cryp 00] A. Canteaut, F. Lévy-dit-Véhel, “La Cryptologie Moderne”, l'INRIA et l'Ecole Supérieure de Techniques Avancées, 2000.

[Cryp 09] Le livre : Initiation à la cryptologie, 3ième édition par Gilles Dubertret, Mars 2009.

[DES 94] D. Coppersmith, “The Data Encryption Standard (DES) and its strength against attacks”, IBM Journal of Research and Development, vol. 38, no 3, May 1994, p. 243.

[DES 99] Federal Information Processing Standard (FIPS) PUB 46-3, Data Encryption Standard (DES), U.S. Department Of Commerce/National Institute of Standards and Technology, 25 October 1999.

[DES 01] Federal Information Processing Standards (FIPS) PUB 140-2, Security Requirements for Cryptographic Modules, U.S. Department Of Commerce/National Institute of Standards and Technology, 25 May 2001, updated 3 December 2002.

[DSP 02] Catherine H. Gebotys, Robert J. Gebotys: Secure Elliptic Curve Implementations: An Analysis of Resistance to Power-Attacks in a DSP Processor. CHES 2002: 114-128.

[GSM 00] A. Canteaut and E. Filiol, “Ciphertext Only Reconstruction of LFSR based Stream Ciphers”, Institut National de Recherche en Informatique et en Automatique (INRIA), Technical report No 3887, Theme 2, Feb. 2000.

[IP 00] J. Rabaey, “Silicon Platforms for the Next Generation Wireless Systems – What Role does Reconfigurable Hardware Play?”, Proceedings FPL2000, Austria, August 2000.

[ITRS 05] P.M. Zeitzoff and J.E. Chung “A perspective from the 2003 ITRS”, IEEE circuits & devices magazine, January/February 2005.

[Nano 08] C. Joachim and L. Plévert (2008), Nanosciences. La révolution invisible, Seuil, Paris, ISBN 978-2-02-086703-0.

[NivS 91] D. G. Abraham, G. M. Dolan, G. P. Double, J. V. Stevens. Transaction Security System. The Source: IBM systems journal Vol. 30 No 2 -1991.

[NoC 03] T.-T. Ye, L. Benini and G. De Micheli, “Packetized OnChip Interconnect Communication Analysis for MPSoC”, In Proc. DATE03, Paris, France, Mar. 2003.

[NoC 06] S. Evain, J-Ph. Diguet, M. El Khodary and D. Houzet, “Automated derivation of NoC Communication Specifications from Application Constraints”, IEEE SIPS 2006, Workshop on Signal Processing Systems, Banff, AB, Canada, October 2-4, 2006.

[NoCC 03] Catherine H. Gebotys, Robert J. Gebotys: A Framework for Security on NoC Technologies. ISVLSI 2003: 113-120.

[NoCS 08] M. Mirza-Aghatabar, A. Sadeghi,”An Asynchronous, Low Power and Secure Framework for Network-On-Chips", in International Journal of Computer Science and Network Security, Vol. 8, No. 7, pp. 214-223, 2008.

[RC4 92] R. Rivest. “The RC4 encryption algorithm”. RSA Data Security, 1992.

[RSA 06] Le livre : Initiation à PGP : GnuPG par Bourgeois Morgan © 2006.

[Sec 09] Data Security Silicon IP cores, www.heliontech.com.

[SoCL 07] R. Valsin, G. Gogniat, J.P. Diguet, R. Tessier, W. Burleson, “High-efficiency protection solution for off-chip memory in embedded systems”, ERSA, Las Vegas, Nevada, USA, 2007.

[YS 07] Y. Salah, M. Atri and R. Tourki, “Design of a 2D Mesh-Torus Router for Network on Chip”, Proceeding of the 7th IEEE International Symposium on Signal Processing and Information Technology, ISSPIT 2007, Cairo, Egypt, pp. 626-631, December 2007.