Académique Documents
Professionnel Documents
Culture Documents
Option :
Thème :
Réalisé par :
Zeinab Bouchehioua
Encadrée par :
M. Lilian BOSSUET
M. Chiheb REBAI
I
Remerciements
Le travail présenté dans ce rapport a été effectué dans le cadre de mon projet de fin d’études
d’ingénieur en télécommunications, option Architecture des Systèmes des Télécommunications
(AST) à l’école supérieure des communications de Tunis (Sup’Com).
Mr. Rebai Chiheb, maître assistant à Sup’Com, pour m’avoir donné l’opportunité d’effectuer ce
projet au sein du laboratoire IMS, pour son encadrement attentif, son soutient et ses précieux
conseils.
Mes remerciements s’adressent aussi à Dominique Dallet, Professeur à l’ENSEIRB, pour son
accueil chaleureux, sa joie, sa bonne humeur et surtout pour les gâteaux qu’il nous ramène
régulièrement.
Un grand merci à Bertrand Le Gal, Maître de Conférences à l’ENSEIRB, pour m’avoir consacré
de son temps à chaque fois que je viens l’ennuyer avec mes nombreuses questions.
Merci à Maher Jridi, ingénieur diplômé de Sup’Com et doctorant à l’IMS pour son aide logistique
et surtout pour sa joie de vivre et son sourire qui m’encourage chaque matin à terminer cette
longue journée.
I
Remerciements
Merci à Nicolas Méchouk, doctorant à l’IMS pour son aide et pour son attention.
Je tiens à remercier tous ce qui m’ont soutenu durant ce projet, je parle bien sur de ma famille
que j’embrasse et de mon ange Issam avec qui j’ai passé des moments inoubliables durant mes
week end à Paris.
Je tiens à remercier tous mes amis à bordeaux, surtout Haïfa avec qui j’ai fait quelques folies et
bien rigolé. Je la remercie pour les bons plats qu’elle m’a concoctés.
II
Résumé et mots clés
Les travaux présentés dans ce document sont dans le cadre d’un projet pour l’entreprise SAFT
qui veut garantir les clauses de confidentialité de sa propriété intellectuelle avec ses sous traitants.
Pour répondre à l’attente de cette entreprise, nous allons travailler sur le choix d’une solution qui
répondra aux critères imposés par l’entreprise SAFT.
Nous allons exposer la problématique de l’entreprise SAFT et répondre à cette problématique par
des solutions bien choisies.
Nous commencerons par étudier une solution sur les microcontrôleurs 16 bits de Microchip à
savoir le CodeGuard Security. Nous allons mettre en œuvre cette solution sur un dsPIC33F et
effectuer un certains nombres de tests. Au terme de ce travail, nous avons effectué une formation
pour l’entreprise SAFT un document de type tutorial leur sera livré. Puis nous étudierons les
solutions de sécurité matérielles reconfigurables sur les FPGA Flash et SRAM.
Même si les deux solutions présentées répondent à la problématique de l’entreprise SAFT, nous
proposerons une solution hybride : implémenter le concept du CodeGuard sur FPGA.
Mots clé :
IP, microcontrôleur, PIC, sécurité, CodeGuard, FPGA, systèmes embarqués.
III
Glossaire
A I
AES: Advanced Encryption Standard IP: Intellectual Property
AIVT: Alternate Interrupt Vecteur Table
R
C RAM: Random Access Memory
CEM : Compatibilité électromagnétique
CPU: Central Process Unit
CSoC : Configurable System on Chip P
PIC: Peripheral Interface Controller
D
DES: Data Encryption Standard S
DMA: Direct Memory Access
SFR: Special Function Register
DSP: Digital Signal Procesing
SRAM: Static Random Access Memory
dsPIC: digital signal PIC
F
FB: Flash Memory Blocks
Flash: Flash-erase EPROM
FPGA: Field Programmable Gate Array
K
KO: Kilos Octets
IV
Table des matières
Remerciements.............................................................................................................................................. I
Résumé et mots clés................................................................................................................................. III
Introduction générale...................................................................................................................................1
Chapitre I
Contexte et problématique ...................................................................................................3
1. Problématique de la société SAFT ....................................................................................4
2. Introduction à la sécurité ..................................................................................................6
2. 1. La notion de sécurité...........................................................................................................................................................6
2. 2. Objectifs de la sécurité .......................................................................................................................................................6
2. 3. Cibles de la sécurité.............................................................................................................................................................7
3. Les solutions de protection des IP....................................................................................8
3. 1. Solutions software (Watermarking et Fingerprinting)...................................................................................................8
3. 2. Protection hardware pour une cible software.................................................................................................................9
3. 3. Solution avec protection hardware reconfigurable sur FPGA ..................................................................................11
3. 4. Choix des solutions à étudier...........................................................................................................................................12
4. Conclusion....................................................................................................................... 13
Chapitre II
Solution software avec protection hardware : CodeGuard Security ................................... 15
1. CodeGuard Security......................................................................................................... 15
1.1. Définition du principe de CodeGuard............................................................................................................................15
1. 2. Les différents types d’implémentation du CodeGuard Security ...............................................................................16
1. 3. Les niveaux de sécurité du CodeGuard Security..........................................................................................................17
1. 4. Organisation de la mémoire programme.......................................................................................................................19
1. 5. Organisation de la mémoire de données .......................................................................................................................20
1. 6. Les registres de configurations ........................................................................................................................................21
2. Allocation des segments.................................................................................................. 21
2. 1. Le boot segment ................................................................................................................................................................21
2. 2. Le secure segment .............................................................................................................................................................24
2. 3. Le general segment............................................................................................................................................................26
V
Table des matières
Chapitre III
Système matériel reconfigurable sécurisé ..........................................................................39
1. Problème de protection du bitstream pour FPGA SRAM et Flash ................................40
2. Les FPGA SRAM............................................................................................................. 41
2. 1. Problème de protection du bitstream ...........................................................................................................................41
2. 2. La solution de Xilinx........................................................................................................................................................41
2. 3. La solution d’Altera..........................................................................................................................................................42
3. Les FPGA Flash ..............................................................................................................43
3. 1. Problème de protection du bitstream ............................................................................................................................43
3. 2. ACTEL fusion....................................................................................................................................................................44
4. Résultats ..........................................................................................................................47
4. 1. FPGA d’ACTEL................................................................................................................................................................47
4. 2. FPGA de Xilinx .................................................................................................................................................................47
5. Conclusion.......................................................................................................................47
Conclusions et perspectives................................................................................................48
Annexe .........................................................................................................................................................51
Bibliographie ...............................................................................................................................................63
VI
Liste des figures
VII
Liste des figures
VIII
Liste des tableaux
IX
Introduction générale
Contexte de l’étude
Aujourd’hui la conception d’un système numérique devient de plus en plus complexe et demande
l’interaction de plusieurs intervenants (société de services, sous-traitants, clients). Les relations
donneur d’ordre/sous traitants et fournisseurs/clients, sont complexes et souvent liés. C’est dans
ce contexte que l’entreprise SAFT réalise des batteries pour des marchés principalement
industriels et des applications dans le domaine du transport (automobile, transport en commun,
aéronautique…) puisqu’elle fait appel à un sous traitant pour effectuer des tâches qui ne font pas
partie de son domaine de compétence.
Objectif de l’étude
L’objectif de ce projet est de répondre aux attentes de l’entreprise SAFT qui veut protéger sa
propriété intellectuelle. Celle-ci se traduit par un algorithme qui s’occupe de la gestion des
batteries. Parmi les contraintes imposées ; l’entreprise SAFT veut une solution dont la mise en
œuvre n’implique pas des coûts exorbitants, la solution ne doit pas être encombrante et doit
pouvoir bénéficier d’une faible consommation d’énergie.
Nous allons tout au long de ce rapport proposer des solutions et étudier les plus pertinentes qui
répondent aux contraintes imposées par l’entreprise SAFT.
Plan de travail
Le travail présenté dans ce rapport est subdivisé en trois parties : dans la première partie nous
poserons le problème que nous devons résoudre pour l’entreprise SAFT et qui consiste en la
protection de sa propriété intellectuelle. Nous proposerons un certains nombres de solutions
pour y répondre et nous choisirons les plus adéquates à l’application de l’entreprise SAFT.
Dans la deuxième partie de ce rapport, nous détaillerons une des solutions proposées,
CodeGuard Security, qui permet la protection hardware d’une cible software (microcontrôleurs).
Dans la troisième partie, les solutions sur les systèmes matériels reconfigurables (FPGA) seront
1
Introduction générale
2
Chapitre I
Contexte et problématique
La gestion de la confidentialité des données et de la sécurité des informations contenues dans un système
électronique sensible s’appuie sur l'état de l'art technologique du moment et doit être pris en compte dès les
premières étapes de l'intégration matérielle des systèmes numériques intégrés programmables ou
configurables tel que les FPGA, microcontrôleurs ou ASIC.
Nous commencerons ce chapitre en posant la problématique de l’entreprise SAFT qui veut garantir la
confidentialité de ses données quand elle fait appel à des sous-traitants ou à ses clients. Pour pouvoir
répondre à cette problématique, des notions générales sur la sécurité seront étudiées en début de ce chapitre.
Puis un certains nombres de solutions, répondant à l’attente de l’entreprise SAFT, seront énumérés. Nous
commencerons par les solutions software tel que le watermarking et le fingerprinting, puis des solutions
hardware sur microcontrôleur et sur FPGA seront introduites. A la fin de ce chapitre, nous choisirons les
solutions qui seront étudiées dans les prochains chapitres.
3
Chapitre1-Contexte et problématique
*www.saft.com 4
Chapitre I-Contexte et problématique
temps régulier et de fournir des résultats sur l’état de la batterie tel que la puissance
consommée, l’autonomie). Donc par exemple, l’application de X (figure 1) veut utiliser les
résultats fournit par l’application de SAFT, c’est pour cela qu’il faut assurer l’interaction entre
les différentes applications.
Application de Application de
SAFT X
Application de
Y
Pour mieux comprendre la figure 2, nous allons prendre un exemple plus concret.
L’entreprise SAFT possède une application qui permet la gestion de la batterie pour une
voiture et son application doit fournir des résultats pour l’application de l’utilisateur X.
L’application de ce dernier s’occupe du contrôle de l’énergie consommée ; elle récupère la
valeur de la puissance consommée par la batterie fournit par l’application de SAFT pour
déterminer si la consommation est normale et ne dépasse pas le seuil maximal de la
consommation. L’application de l’utilisateur Y s’occupe de la distribution de l’énergie
dans la voiture. Cette application utilise des résultats fournis par l’application de SAFT tel
que l’autonomie de la batterie pour optimiser la consommation de cette dernière.
L’exemple présenté montre que plusieurs applications communiquent entre elles dans un
même système c’est pour cela qu’il faut assurer l’interaction entre les différentes
applications.
La société SAFT veut un composant à faible consommation. Pour la gestion de batterie,
le composant qui sera choisit ne doit fonctionner que durant les périodes de mesures sur
la batterie. C'est-à-dire qu’il fonctionne quand l’application de SAFT effectuera des
mesures sur la batterie et se mettra en mode veille quand il n’y a pas de calculs à effectuer.
Donc le composant doit bénéficier du mode veille pour minimiser la consommation
d’énergie.
L’entreprise SAFT impose des restrictions de coût puisqu’elle veut une solution à faible
coût (ne dépassant pas les 10 euros).
5
Chapitre I-Contexte et problématique
L’algorithme à protéger est de petite taille donc il n’y a pas de contraintes de mémoire. Le
composant qui sera choisit ne doit pas nécessairement avoir une mémoire de grande
capacité et le code de leur application ne sera pas compresser pour alléger les contraintes
sur la mémoire.
Le système final ne doit pas être encombrant c'est-à-dire qu’il ne doit pas occuper une
grande surface puisque, ne l’oublions pas, l’application de SAFT est une application
embarquée et doit répondre aux contraintes d’un système embarqué (en éliminant la
contrainte temps réel).
Pour la protection de son algorithme, l’entreprise SAFT n’impose pas de contrainte de
temps. Les mesures qui s’effectuent sur la batterie se font à intervalle de temps réguliers
et à faibles fréquences.
Pour répondre au problème de protection de propriété intellectuelle de l’entreprise SAFT en
respectant le cahier de charge présenté dans le paragraphe précédent, nous allons tout d’abord
rappeler quelques notions de sécurité.
2. Introduction à la sécurité
2. 1. La notion de sécurité
La sécurité en électronique peut être divisée en trois parties (la sécurité des données, la sécurité
d’un système et la sécurité de la conception (Figure 2)) et a quatre objectifs : l’intégrité, la
confidentialité, la disponibilité et l’authentification.
2. 2. Objectifs de la sécurité
La sécurité électronique vise généralement quatre objectifs [1] principaux :
L’intégrité : c’est garantir que les données sont bien celles que l’on croit être ; vérifier
l’intégrité des données consiste à déterminer si les données n’ont pas été altérées.
6
Chapitre I-Contexte et problématique
La confidentialité : c’est assurer que seules les personnes autorisées aient accès aux
ressources échangées ; la confidentialité consiste à rendre l’information inintelligible à
d’autres personnes que les seuls acteurs de la transaction.
La disponibilité : c’est maintenir le bon fonctionnement de l’accès au système; l’objectif
de la disponibilité est de garantir l’accès aux ressources.
L’authentification : c’est assurer que seules les personnes autorisées aient accès aux
ressources; l’authentification consiste à assurer l’identité d’un utilisateur. Un contrôle
d’accès peut permettre (par exemple par le moyen d’un mot de passe qui devra être
crypté) l’accès à des ressources uniquement aux personnes autorisées.
2. 3. Cibles de la sécurité
Pour garantir les objectifs de la sécurité cités dans le paragraphe précédent, il faut définir les
champs d’application de la sécurité :
Sécurité des données : elle équivaut à la sécurité des informations confidentielles
contenues dans le système, comme une clé cryptographique ou des données
confidentielles.
Sécurité du système : elle consiste en la sécurisation du système physique. Elle permet
d’éviter que quelqu’un essaies de le contrôler afin d’effectuer des opérations malveillantes,
changer son comportement ou le détruire.
Sécurité de la conception : consiste en la sécurisation de la propriété intellectuelle. En
d’autres termes, il ne faut pas sécuriser la fonction du système, mais l’implémentation de
cette fonction. Cette protection doit se faire pour les différents types de composants
virtuels.
Comme nous l’avons vu dans la première partie de ce chapitre, l’entreprise SAFT veut protéger
sa propriété intellectuelle donc dans le reste de ce chapitre nous traiterons essentiellement de la
sécurité de la conception pour répondre à la problématique posée. Dans ce cadre, nous allons
proposer un ensemble de solutions de sécurisation de l’algorithme pour l’entreprise SAFT. Cette
entreprise veut garantir la confidentialité de son application, elle veut que cette dernière soit pour
le sous-traitant ou le client une boite noire qui possède un certains nombres d’entrées et retourne
des résultats. Protéger l’application de l’entreprise SAFT revient en quelque sorte à la protection
d’un IP (Intellectual Property). Nous allons donc étudier différentes solutions de protections des
IP afin de voir si certaines d’entres elles correspondent aux besoins de l’entreprise SAFT.
7
Chapitre I-Contexte et problématique
a. Watermarking
Une marque est un mécanisme pour introduire de l’information supplémentaire dans un texte,
une image, un son, une vidéo ou dans un composant virtuel. Les premières sont apparues pour
marquer les images et le son. Ces marques exploitent les imperfections de la vision ou de
l’audition humaine, mais l’objet original est modifié. Par contre, le marquage d’un composant
virtuel impose une contrainte plus forte, il doit rester fonctionnellement correct. L’efficacité
d’une technique de marquage (watermarking ou fingerprinting) [3] repose sur quatre critères :
Une marque doit être difficile à modifier ou à supprimer.
Il doit être difficile d’ajouter une marque à un composant une fois qu’il a été délivré.
Une marque doit être indétectable par l’utilisateur.
Une marque doit préserver la fonctionnalité du composant et son influence sur les
performances du composant doivent être négligeable.
Il est possible de marquer un composant virtuel à différents niveaux de sa conception. Plus le
niveau choisi pour marquer un composant virtuel est bas, plus cette marque doit être robuste par
8
Chapitre I-Contexte et problématique
rapport aux différentes opérations restant à exécuter pour obtenir le produit fini. Une marque
peut être une séquence de bits aléatoires, ou une chaîne de caractères en ASCII qui peut être ou
non cryptée, la version cryptée étant plus robuste.
b. Fingerprinting
C’est une signature unique qui identifie, à la fois le propriétaire et l’utilisateur d’un composant
virtuel [4]. Elle doit répondre aux mêmes critères que les watermarks en prenant en compte de
nouvelles contraintes :
Un protocole de fingerprinting doit pouvoir générer des signatures client suffisamment
différentes les unes des autres pour ne pas les confondre.
Un protocole de fingerprinting doit pouvoir générer un grand nombre de signatures client
rapidement.
Les algorithmes et les protocoles cryptographiques introduisent des pertes significatives de
performance, c’est pour cela qu’une étude sur la sécurisation matérielle des composants sera
effectuée dans la suite.
9
Chapitre I-Contexte et problématique
L’exemple de la figure 3 décrit un scénario entre trois utilisateurs. Chaque utilisateur sécurise son
application en utilisant un composant qui lui est propre. Prenons l’exemple où l’utilisateur 1 est
l’entreprise SAFT, elle enregistre son application qui permet la gestion de la batterie dans le
composant 1 et la sécurise, l’utilisateur 2 est le sous traitant qui s’occupe du contrôle de la
consommation. Ce dernier stocke son application dans un autre composant (2) pour garantir la
confidentialité de son application. Et considérons que l’utilisateur 3 est un autre sous traitant qui
s’occupe de la distribution de l’énergie, et il protège ses données via un troisième composant. Au
final nous aurons une cartes avec trois circuits intégrés spécifiques pour chaque utilisateur. Une
telle architecture, induit des inconvénients tels que des coûts élevés, une occupation de silicium,
une consommation d’énergie élevée puisqu’il y a au sein de la même carte trois composants, sans
oublier la difficulté à gérer la communication entre ces trois composants et les problèmes de
CEM (Compatibilité électromagnétique) engendré par les composants.
Pour répondre à tous ces inconvénients, au lieu de partitionner le système sur plusieurs circuits
intégrés, il est possible d’imaginer une architecture avec un unique circuit programmable dont la
mémoire est segmentée, c’est ce que présente la figure 4. A cette segmentation sont ajoutés des
privilèges en lecture et/ou en écriture aux différents utilisateurs.
Dans le cas de la figure 4, l’utilisateur 1 enregistre son application dans la première partie de la
mémoire programme (segment 1), puis il fournit à l’utilisateur 2 le composant. Ce dernier
enregistrera son application dans le deuxième segment de la mémoire et fournit le composant
pour le dernier utilisateur qui stockera ses données dans le segment 3. Les trois segments
possèdent des niveaux de sécurité hiérarchisés : chaque segment possède des privilèges d’accès
aux autres segments. Prenons l’exemple où l’utilisateur 1 permet seulement à l’utilisateur 2
d’accéder à son segment et de bénéficier de privilèges d’accès en lecture et/ou en écriture. Si
10
Chapitre I-Contexte et problématique
l’utilisateur 3, qui ne possède pas les privilèges d’accès en lecture et/ou écriture au segment 1,
tente d’accéder à ce dernier. Le système générera une interruption (non masquable) matérielle ou
un reset pour arrêter la tentative d’accès et par suite, l’instruction de l’utilisateur 3 ne sera pas
effectuer.
La solution présentée a de nombreux avantages [5] dont les principaux sont ceux cités ci
dessous :
Permet à plusieurs personnes de protéger leurs codes en n’utilisant qu’un seul composant,
Permet de réduire les coûts de protection de l’IP (un composant est utilisé à la place des
trois prévus),
Permet de réduire les risques de perte de la confidentialité des données (protection
matérielle),
Permet une intégration plus facile du composant,
Gain en rapidité d’exécution.
Cette solution parait intéressante pour notre étude, nous allons étudier dans le deuxième chapitre
une solution basée sur le même principe. Elle est commercialisée par Microchip et mise en œuvre
sur les microcontrôleurs 16 bits : CodeGuard Security.
11
Chapitre I-Contexte et problématique
Dans la figure 5, à chaque mise sous tension du FPGA, le fichier de configuration est transféré de
la mémoire externe (Flash) vers la SRAM du FPGA. Puis un circuit de décryptage va assurer le
décryptage du bitstream pour ensuite configurer le FPGA.
Le problème du transfert du bitstream ne se pose pas pour les FPGA Flash [7] sauf pour le cas
des mises à jour. Puisque ce type de FPGA possède une mémoire non volatile (Flash).
Néanmoins, ces FPGA possède une faille de sécurité et leur mémoire Flash doit être protégé en
lecture et écriture.
12
Chapitre I-Contexte et problématique
4. Conclusion
Dans ce chapitre introductif, la problématique de l’entreprise SAFT a été posée, qui est de
garantir la protection de son application qui permet la gestion de la batterie. Nous allons, après
avoir choisit les solutions les plus adéquates c'est-à-dire celles qui répondent (même en partie) à la
problématique de l’entreprise SAFT, étudier dans un premier temps, la solution de sécurisation
des données proposée par Microchip : CodeGuard Security. Cette solution consiste en la
segmentation de la mémoire, chaque segment possède un niveau de sécurité offrant des privilèges
de lecture et/ou écriture de la mémoire aux différents utilisateurs. Puis nous verrons dans le
troisième chapitre les solutions reconfigurables sur FPGA car ces dernières offrent des capacités
de calculs et de reconfigurabilités répondant aux besoins actuels même si ça ne répond qu’en
partie aux contraintes imposées par le cahier de charge de l’entreprise SAFT. Nous étudierons le
cas des FPGA SRAM de Xilinx et d’Altera qui possèdent le problème de transfert du bitstream.
Pour remédier à ce problème, nous verrons les FPGA Flash d’Actel qui n’ont pas de problème
avec le transfert du fichier de configuration puisque ce dernier se trouve dans la Flash qui est
interne au FPGA. Mais la faille de ce type de FPGA est qu’il faut protéger la mémoire Flash en
lecture et écriture.
13
Chapitre II
Dans le chapitre précédent, la problématique de l’entreprise SAFT a été posée ainsi que différentes
solutions y répondant que ce soit des solutions sur des microcontrôleurs ou sur FPGA. Dans ce chapitre,
nous allons répondre à cette problématique en étudiant le concept de sécurisation avec CodeGuard; l’utilité
d’utiliser cette méthode sera posée en première partie. Puis le principe de fonctionnement du CodeGuard
sera présenté avec les différents niveaux de sécurité possibles. Dans une seconde partie, l’implémentation de
cette solution sur un microcontrôleur bien choisi et un certain nombre de tests seront effectués pour vérifier
les différents concepts présentés au début de ce chapitre.
Enfin dans le dernier volet de ce chapitre, les inconvénients d’une telle architecture seront exposés ainsi que
des solutions pour y remédier.
14
Chapitre II- Solution software avec protection hardware: CodeGuard Security
1. CodeGuard Security
1.1. Définition du principe de CodeGuard
Le principe du CodeGuard Security est d’organiser la mémoire flash en trois segments [8] qui
peuvent contenir du code comme le montre la figure 6.
Dans la figure précédente, nous avons pris un exemple avec trois parties. Par exemple, un
vendeur d’IP enregistre son application dans le boot segment qui constitue la partie la plus
sécurisée car l’accès à ce segment est restreint pour les deux autres segments. Après avoir
enregistré son IP dans ce segment, le vendeur d’IP fournit le microcontrôleur au sous-taitant 1
qui va stockée son application dans le second segment : le secure segment. Le deuxième
intervenant est le sous traitant 1, il enregistre son application dans ce segment et il bénéficie d’un
niveau de sécurité inférieur à celui du boot segment mais supérieur à celui du general segment.
L’accès au secure segment est restreint au general segment. Le sous traitant 2 enregistre son
application dans le dernier segment qui est le general segment. C’est le segment le moins sécurisé
car il n’y a pas de restrictions d’accès pour ce dernier.
Chaque segment comme nous venons de le voire à un niveau de sécurité bien précis :
Le boot segment : il bénéficie du plus haut niveau de sécurité ; il a un accès illimité (sans
restriction) aux autres segments. C’est dans ce segment où peut être enregistré les parties
les plus sécurisées tels que les bootloader, clé de cryptage/décryptage…
Le secure segment : c’est le segment qui se trouve juste après le boot segment et qui
possède le deuxième niveau de sécurité après le boot segment. L’accès à ce segment est
seulement restreint au general segment. On y trouve stocké des algorithmes propriétaires,
des petites look up table…
15
Chapitre II- Solution software avec protection hardware: CodeGuard Security
Type d’implémentation
Basic Intermediate Advanced
Boot segment Non Oui Oui
Secure segment Non Non Oui
General segment Oui Oui Oui
Tableau 1 : Type d’implémentation du CodeGuard.
Suivant la taille de la mémoire, on peut choisir un des trois types d’implémentations donc ce
choix dépends du composant sur lequel on travaille. Le tableau 2 montre les différents types
d’implémentations qu’on peut avoir sur trois familles de composants.
Tous les microcontrôleurs cités dans le tableau 2 possèdent une architecture de harvard ; c'est-à-
dire que la mémoire programme et la mémoire de données sont séparées. Ils possèdent des bus
programme et données séparés (leur tailles dépend du type de microcontrôleur) comme on peut
le noter dans la figure 7.
Boot Segment
Secure Segment
General Segment
Boot Segment
Secure Segment
General Segment
Niveau de sécurité standard: il n’y a pas de restrictions d’accès pour les autres
segments c'est-à-dire qu’on peut accéder au segment en entier. Dans ce cas il n’y a pas de
security reset et tout le segment est accessible comme le montre la figure 10.
Figure 10 : Les accès autorisés dans le cas d’un niveau de sécurité standard.
18
Chapitre II- Solution software avec protection hardware: CodeGuard Security
Le tableau 3 résume les opérations possibles entre les différents segments en tenant compte du
niveau de sécurité choisi.
Opération vers
Exécution du code à Boot segment Secure segment General segment
partir du Niveau de Niveau de Niveau de sécurité
sécurité sécurité
Standard Elevé Standard Elevé Standard Elevé Aucun
Boot Standard L, E, B - L, E, B BR L, E, B B L, E, B
segment Elevé - L, E, B L, E, B BR L, E, B B L, E, B
Secure Standard B BR L, E, B - L, E, B B L, E, B
segment Elevé B BR - L, E, B L, E, B B L, E, B
General Standard B BR B BR L, E, B - -
segment Elevé B BR B BR - L, E, B -
Aucun B BR B BR - - L, E, B
Tableau 3 : Les opérations possibles entre les différents segments suivant le niveau de sécurité
choisi.
Légende :
L : lecture
E : écriture
B : branchement vers tout le segment
BR : branchement restreint aux 32 premières instructions
19
Chapitre II- Solution software avec protection hardware: CodeGuard Security
20
Chapitre II- Solution software avec protection hardware: CodeGuard Security
La figure 13 montre les accès permis à partir de la mémoire programme vers la mémoire RAM si
cette dernière est segmentée.
Dans le cas de la figure 13, si par exemple l’utilisateur ayant enregistré son application dans le
general segment (mémoire programme) tente d’accéder au boot segment RAM. Sa demande
d’accès sera interdite via le contrôle effectué sur des registres de configurations qui seront étudiés
plus en détails dans la section suivante.
21
Chapitre II- Solution software avec protection hardware: CodeGuard Security
La taille de ce segment est déterminée par les trois bits du BSS ; en fait la taille du segment est
prédéfinie et on a le choix entre trois configurations. Ce choix dépend de l’application que
l’utilisateur veut enregistrer dans ce segment, le tableau 4 résume les différentes valeurs qui
peuvent être affectées au BSS suivant le niveau de sécurité choisi et la taille du segment.
22
Chapitre II- Solution software avec protection hardware: CodeGuard Security
application dans le BSRAM (Boot Segment RAM). La configuration de cette dernière s’effectue
via le sixième et le septième bit du FBS nommés RBS.
La figure 15 montre que le boot segment RAM se situe à la fin de la mémoire RAM juste avant la
DMA.
En ce qui concerne la taille de la RAM allouée pour le boot segment, il y a trois tailles prédéfinies
qui sont résumées dans le tableau 5 ainsi que la valeur des bits de configurations.
23
Chapitre II- Solution software avec protection hardware: CodeGuard Security
Le bit RL_BSRAM est mis à 1 lorsque l’exécution du code qui se trouve dans le boot segment est
terminé pour libérer la RAM réservée, et quand le code effectue un branchement au boot
segment, ce bit est remit à zéro pour réallouer la RAM pour ce segment.
Le deuxième bit du registre BSRAM ; IR_BSR est mis à 1 s’il y a eu un accès de lecture non
autorisé et sera remis à 0 lors d’un reset ou d’un accès autorisé.
Le bit IW_BSR est mis à 1 s’il y a eu une tentative d’écriture non autorisée et sera remis à 0 lors
d’un reset ou d’une tentative d’écriture autorisée.
2. 2. Le secure segment
a. Définition des caractéristiques de ce segment
C’est le segment qui se trouve juste après le boot segment et son accès est restreint au segment
dont le niveau de priorité est inferieur c'est-à-dire pour le general segment.
De même que le boot segment, ce segment est configuré via le registre FSS qui est représenté
dans la figure 17.
Légende :
Case vide : bits non implémentés
RSS : Secure Segment RAM Code Protection bits
SSS: Secure Segment Program Flash Code Protection bits
SWRP: Secure Segment Program Flash Write Protection bit
Le tableau 6 montre que la taille de ce segment est, comme le boot segment, prédéfinie.
24
Chapitre II- Solution software avec protection hardware: CodeGuard Security
25
Chapitre II- Solution software avec protection hardware: CodeGuard Security
La configuration de la RAM s’effectue via le sixième et le septième bit du FSS nommés RSS. Et
pour le choix de la taille de ce segment, il y a trois tailles prédéfinies qui sont listées dans le
tableau 7.
Prend la valeur
1 0
IW_SSR Pas de tentative d’écriture Tentative d’écriture illégale
illégale ou un reset a été effectué
IR_SSR Pas d’accès de lecture non Accès de lecture non autorisé
autorisé
Libération du secure segment Le secure segment RAM est
RL_SSR RAM pour un usage général réservé pour le secure
segment
Tableau 8: Description des combinaisons de valeurs que peut prendre le registre SSRAM
2. 3. Le general segment
C’est le dernier segment qui est accessible par les autres segments sans aucune restriction, et sa
taille est la partie de la mémoire flash qui reste c'est-à-dire la taille de la mémoire flash moins la
26
Chapitre II- Solution software avec protection hardware: CodeGuard Security
taille du boot et secure segment. Ce segment existe toujours sans tenir compte de l’existence des
deux autres segments et il se trouve juste après le secure segment, si ce dernier existe.
Et sa configuration s’effectue via le registre FGS représenté par la figure 20.
Légende:
GSS: General Segment Program Flash Code Protection bits
GWRP: General Segment Program Flash Write Protection bit
Le general segment possède la protection en écriture c'est-à-dire qu’il ne peut pas être modifié et
pour activer cette option, on doit mettre le bit GWRP ou FBS(0) à 0. Dans le cas contraire,
quand le FBS(0) prend la valeur 1, le general segment peut être écrit.
En ce qui concerne la mémoire de données, le general segment data RAM est accessible par les
trois segments, comme on peut le voir sur la figure 13.
Après l’étude du concept du CodeGuard Security, le choix du microcontrôleur s’impose selon le
type d’implémentation qui va être choisi et selon les caractéristiques de ce dernier.
3. Choix du composant
Pour implémenter le CodeGuard Security, le choix entre quatre composants se présente et qui
sont le PIC24F [9], PIC24H [10], dsPIC30F [11] ou le dsPIC33F [12]. Pour pouvoir prendre une
décision sur le choix du composant, on va se baser sur un certains nombres de critères qui sont
résumés dans le tableau 9.
Vitesse du Type
Flash (KO) RAM (KO) CPU d’implémentation Prix
(MIPS) du CodeGuard
PIC24F 128 8 16 Basic $5.02
PIC24H 256 16 40 Advanced $7.16
dsPIC30F* 144 8 30 Advanced $8.31
dsPIC33F 256 30 40 Advanced $7.66
Tableau 9: Choix du microcontrôleur.
*Le dsPIC30F60
Tous les composants décrit dans le tableau suivant ont un package de 100 pins à part le dspic30 qui
possède 80 pins.
27
Chapitre II- Solution software avec protection hardware: CodeGuard Security
On va déjà éliminer le PIC24F puisqu’il ne peut supporter que l’implémentation basique c'est-à-
dire celle qui ne contient qu’un seul segment (le general segment) et cette configuration ne nous
intéresse pas pour notre application.
On ne va pas non plus choisir le dspic30F vu son prix élevé et sa faible taille de la mémoire Flash.
Il nous reste à choisir entre le pic24H et le dspic33F qui supportent l’implémentation advanced
du CodeGuard, notre choix va se tourner vers le dspic33F car il possède une taille de RAM
supérieure, en plus il possède une unité arithmétique et logique pour le traitement du signal ce qui
lui confère une rapidité de calcul supérieur à celle du PIC24H.
4. 1. Architecture Harvard
Les dsPIC ont une architecture harvard avec des bus programme et données séparés. Cette
architecture autorise des tailles de bus différentes : soit 16 bits pour les données et 24 bits pour
les instructions comme le montre la figure 21.
Cette organisation permet aussi de réduire considérablement les temps d'exécution car, pendant
que le processeur lit la prochaine instruction dans la mémoire programme, il exécute l'actuelle qui
manipule des données en RAM.
4. 2. Mémoire programme
Elle est organisée [12] [13] de la manière suivante :
Les vecteurs d'interruption se placent au début de la mémoire programme juste après
l’instruction de reset.
Le code du programme de l'application est programmé à partir de l'adresse 0x000200.
28
Chapitre II- Solution software avec protection hardware: CodeGuard Security
4. 3. Mémoire RAM
Elle est représentée par la figure 23. L'espace adressable est de 30K octets. Elle est divisée en
plusieurs blocs [12] :
SFR (Special Function Register): ce bloc de 2Ko regroupe les registres du CPU (Central
Process Unit) (travail, état et pointeur de pile) et les registres de configuration des
périphériques
X RAM et Y RAM: ces deux blocs sont contigus ; le CPU y lit et écrit de façon classique
mais le module DSP peut accéder simultanément aux deux blocs en un seul cycle pour
effectuer les opérations de type MAC (Multiply And Accumulate)
29
Chapitre II- Solution software avec protection hardware: CodeGuard Security
Le dernier bloc de 32Koctets n'est pas implanté et on peut y stocké des données ; cela
permet au CPU d'accéder à des tableaux de constantes comme il le fait avec des variables
en RAM.
4. 4. Présentation de la carte
La figure 24 présente la carte explorer 16 [14] que nous allons utiliser pour la mise en œuvre du
CodeGuard. Pour plus de détails sur les différents composants, se référer à l’annexe B.
30
Chapitre II- Solution software avec protection hardware: CodeGuard Security
5. Résultats d’implémentation
Le travail de développement a été effectué sur l’outil MPLAB IDE v7.60 [15] qui supporte le
langage ANSI C avec des instructions en plus spécifiques au microcontrôleur (compilateur
MPLAB C30 [16]) et le langage assembleur (MPASM [17]).
MPLAB ICD2 (In Circuit Debugger 2) [18] permet la programmation et le debbugage sur le
dsPIC via l’interface de MPLAB IDE. Ce dernier est connecté (figure 25) au PC via une interface
USB ou RS-232 et est connecté à la carte via une interface RJ-11.
Dans cet exemple, on va implémenter le CodeGuard Security avec un niveau de sécurité élevé
(high security) et les spécifications des trois segments sont listées dans le tableau 10.
31
Chapitre II- Solution software avec protection hardware: CodeGuard Security
Dans le boot segment, le premier utilisateur va enregistrer son code. Les utilisateurs 2 et 3 vont
respectivement enregistrer leurs applications dans le secure et le general segment. Et ces deux
derniers ne pourront accéder qu’au boot segment access area (c'est-à-dire aux 32 premières
instructions) et l’utilisateur 3 pourra accéder aussi au secure segment access area.
La figure 27 nous montre les accès permis en utilisant les spécifications décrites dans le tableau
10.
32
Chapitre II- Solution software avec protection hardware: CodeGuard Security
Pour mieux comprendre, on va détailler les documents que doit fournir un utilisateur à un autre.
L’utilisateur 1 :
Il doit fournir à l’utilisateur 2 le fichier d’édition des liens et un fichier assembleur dans lequel il y
a les adresses des fonctions qui se trouvent dans le boot segment access area ainsi que bien sûr le
microcontrôleur programmé.
Dans le linker script l’utilisateur doit définir les champs suivant :
Les différentes régions de la mémoire programme et de donnée
L’emplacement de certains registres de configuration
L’adresse de début de la table des vecteurs d’interruption
L’adresse de début de l’aivt (Alternate Interrupt Vector Table) des sections qui se
trouvent dans la mémoire de donnée
Emplacement du programme qui se trouve dans le main
L’adresse de début de chaque segment
Réservation de l’espace mémoire dans la flash pour chaque segment (allocation de la
mémoire)
Réservation de l’espace mémoire pour les registres de configurations de l’oscillateur
33
Chapitre II- Solution software avec protection hardware: CodeGuard Security
Plus généralement, la figure 29 montre les accès qui vont générés le security reset.
L’exemple qui suit va mettre en évidence le security reset, on prendra le cas où l’utilisateur 3
accède au boot segment de l’utilisateur 1. La figure 30 montre bien que l’utilisateur a bien
configuré son segment avec un niveau de sécurité élevé.
34
Chapitre II- Solution software avec protection hardware: CodeGuard Security
Puis dans la figure 31, on aperçoit que la valeur du registre RCON prend la valeur de 4083h et
bien sûr, on ne peut pas le distinguer sur cette figure, l’appel de la fonction qui se trouve dans ce
segment n’aura pas lieu.
Par contre si l’utilisateur 3 accède à la zone autorisé c'est-à-dire au boot access area (les 32
premières instructions) de l’utilisateur 1 donc il n’y aura pas de security reset et l’exécution de
l’appel de la fonction résidant dans cette partie sera effectuée. La figure 32 nous donne la valeur
du registre RCON qui est à 83h.
35
Chapitre II- Solution software avec protection hardware: CodeGuard Security
36
Description Niveau de sécurité Résultats
dans le boot secure access area (ne dépassant pa s Boot segment : Elevé Exécution du code
les 32 instructions).
37
Test 3 Définition dans le boot de plusieurs fonctions
(avec paramètres en entrées et en sortie) dans le Exécution seulement des fonctions
boot secure access area et définition d’une Boot segment : Elevé qui se trouvent le boot access area
fonction hors du boot access area.
Appel de ces fonctions dans le secure segment.
6. Conclusion
Dans ce chapitre, nous avons répondu à la problématique de l’entreprise SAFT en proposant une
solution de sécurisation hardware sur des microcontrôleurs. Dans la première partie de ce
chapitre, le principe de CodeGuard a été défini. Puis les méthodes de configuration de ce dernier
ont été décrites. Des exemples d’implémentation ont été présentés et à la fin de ce chapitre, les
inconvénients d’une telle architecture ont été cités.
Pour répondre aux inconvénients du CodeGuard et aux performances limitées des
microcontrôleurs ; nous allons dans le chapitre suivant, proposer d’autres solutions de protection
de l’IP sur FPGA.
38
Chapitre III
Les progrès des technologies de conception et des architectures permettent d’implémenter de très grands
circuits sur FPGA. De nos jours, les FPGA peuvent implémenter des designs comportant des millions de
portes logiques et blocs mémoire de taille moyenne. De plus, des FPGA comprenant des microcontrôleurs,
implémentés directement dans le silicium ou dans leurs ressources disponibles. Les FPGA et les
Configurable System on Chip (CSoC) des entreprises comme Xilinx, Altera ou Actel sont devenus de
vraies plate-formes d’implémentation de systèmes entiers.
La tendance à implémenter des systèmes entiers sur FPGA a crée un besoin de protection des données
contenus dans ces derniers. Assurer la protection d’un FPGA revient à protéger le fichier de configuration.
Nous verrons dans ce chapitre diverses technologies utilisées pour assurer la protection de ce fichier.
Ce chapitre sera basé sur l’étude des solutions de sécurisation pour le matériel reconfigurable. En première
partie, les failles de sécurité dans les FPGA SRAM et Flash vont être étudiées. La deuxième partie de ce
chapitre, présente les solutions qui se trouvent sur le marché et plus précisément celles proposées par Actel,
Xilinx et Altera. Puis les résultats d’implémentations sur les trois cartes des constructeurs définis
précédemment seront presentés.
39
Chapitre III-Système matériel reconfigurable sécurisé
Fichier VHDL
Synthèse
Netlist
Placement et
FPGA routage
Bitstream
La figure 33, décrit les étapes de génération du fichier de configuration ; la synthèse est une étape
qui permet de convertir le fichier VHDL en un circuit d’éléments logiques représenté sous forme
de netlist (fichier EDIF). La deuxième étape est le placement et routage, cette opération permet
d’instancier dans le FPGA tous les composants décrits dans la netlist ainsi que leur
interconnexion. La dernière étape est la génération du bitstream; le résultat du placement et
routage est converti en binaire de façon à pouvoir configurer le FPGA.
Pour les FPGA SRAM, le fichier de configuration est programmé dans une mémoire externe non
volatile, ce dernier devra être chargé à chaque mise sous tension dans une mémoire volatile
interne au FPGA.
Par contre le problème de transfert du bitstream d’une mémoire externe non volatile vers la
mémoire de configuration ne se pose pas pour les FPGA Flash. Puisque ces derniers ont une
mémoire non volatile intégré. Cependant ce problème existe pour les mises à jour à distances.
Pour remédier à ce problème, le fichier de configuration doit être crypté. Sans oublier que la
mémoire Flash doit être protégée en lecture et écriture. Nous étudierons plus en détails ce type de
FPGA dans ce chapitre.
40
Chapitre III-Système matériel reconfigurable sécurisé
Nous allons étudier deux exemples de protection du bitstream pour ce type de FPGA à savoir la
solution de la société Xilinx et Altera.
2. 2. La solution de Xilinx
Pour garantir la sécurité des FPGA, Xilinx propose d’utiliser sur les Virtex 4 [19] le cryptage
symétrique AES (chiffrement de blocs de 128 bits avec une clé de 256 bits) [20]. Les Virtex ont
un bloc de décryptage intégré qui permet le décryptage du bitstream. Le cryptage se fait par le
logiciel de Xilinx (ISE). La clé de décryptage est stockée dans une mémoire volatile soutenue par
une batterie. La figure 35 permet de mieux comprendre cette procédure.
41
Chapitre III-Système matériel reconfigurable sécurisé
La clé est stockée dans le FPGA via l’interface JTAG, puis le fichier de configuration sera généré
et crypté avec la même clé enregistrée dans le FPGA. Le fichier de configuration sera programmé
dans une mémoire externe, le décryptage de ce dernier sera effectué dans le FPGA.
Cette structure ne présente pas que des avantages, au contraire, elle possède un certains nombres
d’inconvénients : la batterie prend de la place sur la carte, sa durée de vie est limitée et elle
augmente le coût du composant. Dans cette même optique, nous allons étudier les FPGA Stratix
III d’Altera qui ont une petite variante par rapport aux Virtex que nous venons de voir ; c’est
qu’ils permettent de stocker la clé d’une manière volatile ou non (la batterie est optionnel selon le
choix de stockage de la clé).
2. 3. La solution d’Altera
La solution proposée par Altera, pour les Stratix III [21], utilise l’algorithme de cryptage avancé
AES et une clé de 256 bits et convient parfaitement aux applications nécessitant un haut niveau
de protection. Avant de recevoir le fichier de configuration crypté, l’utilisateur défini et stocke
une clé dans le FPGA qui permettra le décryptage. Les FPGA Stratix permettent de stocker la clé
de deux manières possibles ; soit d’une manière non volatile c'est-à-dire que la clé dans ce cas doit
être supportée par une batterie. Soit d’une manière non volatile (ne nécessite pas de batterie
externe) la clé est enregistrée dans une petite mémoire Flash interne.
La figure 36 explique les étapes de transfert du bitstream de la mémoire externe non volatile vers
la mémoire interne (SRAM) du FPGA. Nous allons décrire les étapes de cryptage/décryptage du
bitstream. Une clé AES définie par l’utilisateur peut être programmée dans le Stratix III (nous
prendrons le cas où la clé sera stockée d’une manière non volatile). Cette même clé est utilisée par
le logiciel de conception Quartus II pour générer un fichier de configuration crypté qui sera
stocké dans une mémoire externe. Lors de la mise sous tension, la mémoire transfert le fichier de
configuration crypté vers le FPGA qui utilise la clé stockée pour décrypter le fichier et s’auto-
configurer.
42
Chapitre III-Système matériel reconfigurable sécurisé
Après l’étude théorique des FPGA SRAM et du problème de transfert du bitstream qui doit être
crypté lors de la mise sous tension. Nous allons étudier les FPGA Flash pour les quelles le
problème de protection du fichier de configuration existe mais sous une autre forme.
43
Chapitre III-Système matériel reconfigurable sécurisé
La figure 37 met l’accent sur la nécessité de crypter le bitstream lors des mises à jour effectuées à
distance. Sans oublier que la mémoire Flash doit être protégée en lecture et écriture pour
empêcher la lecture ou l’altération du fichier de configuration. Pour répondre à ces deux
problèmes, une solution est disponible sur le marché et elle a été proposée par ACTEL en
commercialisant les FPGA fusion, que nous allons étudier plus en détails dans le paragraphe
suivant.
3. 2. ACTEL fusion
Les FPGA fusion [22], produit par ACTEL, permettent de traiter les signaux numériques et
analogiques, et sont constitués essentiellement de trois éléments qui sont la Flash, FBs (Flash
Memory Blocks) et le core du FPGA. Chacune de ses trois parties peut être programmée
indépendamment avec un fichier de configuration. Et ce dernier peut être crypté avec AES (128
bits) ou non.
La solution d’ACTEL [23] permet de crypter le fichier de configuration avec l’algorithme AES et
de protéger le FPGA en lecture (Flashlock) c'est-à-dire qu’on ne peut pas accéder au FPGA sans
la bonne clé. La figure 38 montre comment le bitstream est crypté et décrypté.
Dans la figure 38, le circuit de décryptage est représenté ainsi que le block MAC (Message
Authentication Control) qui vérifie si dans le fichier de configuration, il y a la bonne clé de
cryptage. Le cryptage/décryptage présenté précédemment permet la protection du fichier de
configuration lors des mises à jour à distance, et pour protéger l’accès en lecture et écriture au
FPGA, une technologie de contrôle d’accès est utilisée : le Flashlock. Elle utilise une clé de 128
bits pour protéger la mémoire Flash en lecture et écriture et permet aussi de protéger la clé de
44
Chapitre III-Système matériel reconfigurable sécurisé
l’algorithme de cryptage. En d’autres termes, le Flashlock est comme un mot de passe qui permet
d’identifier l’utilisateur.
Les FPGA fusion permettent d’utiliser deux technologies pour protéger le fichier de
configuration et le choix dépend de l’action qui sera établie. Les différents niveaux de sécurité
possibles sont listés dans le tableau 13.
Niveau de sécurité
Mise à jour FPGA programmé
Pas de Flashlock et pas nul nul
d’AES
Flashlock nul élevé
Cryptage avec AES et élevé élevé
Flashlock
Tableau 13 : Les niveaux de sécurité possibles avec le FPGA fusion.
Pour chacun de ces niveaux de sécurité, on peut imaginer trois scenarios qui sont résumés par la
figure 39. Puisque le choix du niveau de sécurité dépend du lieu dans lequel il y aura le transfert
du bitstream.
45
Chapitre III-Système matériel reconfigurable sécurisé
Dans cette partie, nous avons étudié les FPGA Flash en nous basant sur les FPGA fusion
d’ACTEL et nous avons décrit le problème de protection du bitstream pour ce type de FPGA.
Nous avons vu qu’il fallait crypter le fichier de configuration lors des mises à jour à distances et
qu’il fallait protéger la mémoire Flash en lecture et écriture.
Après l’étude théorique des deux familles de FPGA à savoir les FPGA SRAM et Flash, nous
allons effectuer des tests pour pouvoir déterminer la taille du fichier de configuration crypté ou
non.
46
Chapitre III-Système matériel reconfigurable sécurisé
4. Résultats
4. 1. FPGA d’ACTEL
Des tests sur le AFS 600 avec un programme simple ont été effectués pour des niveaux différents
de sécurités, et ceci dans le but de déterminer la taille du fichier de configuration :
Sans niveaux de sécurité : x kOctets
Avec un niveau de sécurité moyen (Flashlock) : y = x + 5 kOctets
Avec un niveau de sécurité élevé (Flashlock + AES) : y + 1 kOctets
4. 2. FPGA de Xilinx
Les tests ont été effectués sur un Virtex 4 dans le but de déterminer la variation de la taille du
fichier de configuration avec ou sans cryptographie.
Sans AES : x kOctets
Avec AES : x+2 kOctets
5. Conclusion
Dans ce chapitre, nous avons étudié les solutions de protection de données sur FPGA, même si
ca ne répond qu’en partie à la problématique de l’entreprise SAFT puisque, comme nous l’avons
présenté dans le cahier de charges (cf. premier chapitre), n’impose pas des contraintes de rapidité
de calculs. Le but de cette étude est de trouver une nouvelle solution de protection de données
qui répond aux contraintes actuelles et qui soit sûr. Nous avons abouti à la conclusion suivante :
implémenter le concept de CodeGuard Security sur FPGA, en répondant bien sûr aux
inconvénients de ce dernier. La solution qui sera développée durant le mois de juillet sera une
solution reconfigurable ; elle ne sera pas figée comme celle proposée par Microchip. Le nombre
d’utilisateurs ne sera pas limité à trois et le choix de la taille des segments sera choisi et non
imposé. L’établissement du cahier de charge de cette solution sera établi dans la conclusion dans
la partie perspectives.
47
Conclusions et perspectives
Conclusions
Dans le cadre de ce projet de fin d’étude, nous nous sommes intéressés aux solutions de
protection matérielle de la propriété intellectuelle dans le cadre d’un projet pour l’entreprise
SAFT. Nous avons dans ce document répondu à la problématique présentée dans le premier
chapitre. Dans un premier temps, nous avons étudié diverses solutions de protection de la
propriété intellectuelle, puis nous avons optés pour les solutions matérielles sur microcontrôleurs
et FPGA.
Nous avons étudié la solution sur des microcontrôleurs 16 bits de Microchip à savoir le
CodeGuard Security que nous avons mis en œuvre sur dsPIC33F. Puis après l’avoir mis en
application sur la cible via MPLAB IDE et effectué un ensemble de tests simulant plusieurs
scénarios, nous avons effectué une formation pour SAFT sur le concept du CodeGuard Security
et sur sa mise en œuvre. Un document de type tutorial doit être livrer à la société.
Dans le troisième et dernier chapitre, nous avons étudié les solutions sur des systèmes
reconfigurables car nous cherchions une solution flexible, qui réponde aux attentes actuelles et
future. Nous avons étudié les solutions de protection des FPGA SRAM et Flash en particulier
celles proposées par Actel (Flash), Xilinx et Altera(SRAM).
Néanmoins les deux solutions proposées dans ce document, même si elles répondent à la
problématique de l’entreprise SAFT, présentent chacune des inconvénients et des avantages
propres à chaque solution. Le concept de CodeGuard est une solution simple qui ne consomme
pas beaucoup de ressources mais figée, les solutions sur FPGA sont reconfigurables mais
consomment beaucoup de ressources (au moment du décryptage). Pour remédier à ces
inconvénients, nous allons proposer une solution mixte : implémenter le concept de CodeGuard
sur FPGA. Ainsi nous aurons répondu au problème de rapidité de calcul, de consommation de
ressources et la solution n’est plus figée.
48
Déroulement du travail
Perspectives
Nous implémentons actuellement un système de protection des IPs pour un système embarqué
avec des contrôles de privilèges d’accès. Nous nous sommes inspirés du concept de Microchip :
CodeGuard pour la segmentation de la mémoire et nous avons répondu aux inconvénients de ce
dernier à savoir le nombre limité d’utilisateurs et les niveaux de sécurité limité aussi (deux niveaux
de sécurité).
Notre système répondra aux attentes présentes et futur en termes de rapidité de calculs, il
permettra à n utilisateurs d’enregistrer leurs applications dans un même composant (n est limité
par la taille de la mémoire), ce système sera doté d’au moins quatre niveaux de sécurité (accès en
lecture, en lecture/écriture, en lecture aux 32 premières instructions, non accéssibles).
49
Nous implémenterions ce système sur MicroBlaze (voir annexe D), processeur softcore de Xilinx.
L’architecture que nous proposons pour le moment est la suivante:
Registre Segment 1
Registre Segment 2
Registre Segment n
Lecture de
l’instruction sur Opération de
le bus d’addresse Z-1 Unité de Contrôle
de la mémoire Opération vers
programme
Reset
Mémoire programme
Architecture proposée.
Nous allons définir le cahier des charges de cette application et commencer l’implémentation de
cette solution après avoir approfondi notre étude durant le mois de Juillet.
50
Annexe
51
Annexe A
Architecture du dsPIC33F
52
Annexe A : Architecture du dsPIC33F
On va énumérer très rapidement, les différents périphériques du dsPIC33F qui sont représentés
par la figure précédente :
ALU (Unité Arithmétique et Logique):16 bits
Les registres de travail (16 bits) : Ce sont des registres lié à l’ALU et qui reçoivent par le bus de
données les informations issues des blocs de registres ou des entrées/sorties.
AGU (Adress Generation Unit): génère des adresses sur 16 bits, il y a deux modules.
DSP : Il est composé de deux accumulateurs de 40 bits, un multiplieur de 17 bits et un
Barrel Shifter de 40 bits. Ce qui lui permet d’effectuer des opérations MAC en un seul
cycle.
La figure suivante nous montre la composition du DSP et nous éclair par suite sur son
fonctionnement.
Périphériques
ADC (Analog to Digital Converter): Il y a deux modules qui peuvent avoir une résolution
de 10 ou 12 bits.
Watchdog: Il peut être assimilé à un mécanisme qui va surveiller si le programme
s’exécute toujours dans de bonnes conditions, dans le cas contraire ce processus va
effectuer un reset du microcontrôleur.
53
Annexe A : Architecture du dsPIC33F
Les timers : Leur nombre peut aller jusqu’à neuf, le timer 0 est toujours présent (il peut se
nommer RTCC pour horloge temps réel). Chaque timer peut générer une interruption et
fonctionne de façon très différente.
Output Compare: permet de générer des signaux type PWM.
Input Capture: permet de recevoir les signaux de type PWM et de sauvegarder la valeur
d’un timer lors d’une action sur une broche. Il joue le rôle d’une horloge interne
différente de l’horloge système
Périphériques de communication série
UART (Universal Asynchronous Receiver Transmitter): permet les communications
séries asynchrones. Il communique avec le microprocesseur par l’intermédiaire du bus de
données et en série avec l’extérieur par une liaison série asynchrone (sans horloge).
SPI (Sérial Peripheral Interface): Ce type de communication est généralement réservé à
l’échange de données entre deux circuits intégrés sur un même circuit imprimé. C’est le
maitre qui cadence l’échange avec son horloge.
I2C (Inter-Integrated Circuit): Les communications utilisent deux fils (SCL et SDA pour
horloge et données), l’horloge est unique (donc synchrone) et générée par un maitre. Les
données transitent sur un seul fil en émission et en réception.
Controller Area Network (CAN): interface série permettant de communiquer avec
d’autres CAN ou microcontrôleur.
Data Converter Interface module (DCI): permet par exemple l’interfaçage avec des
codeur/décodeur audio.
Périphériques (utilisation d’un moteur)
Motor Control PWM module: permet de commander un moteur.
Quadrature Encoder Interface module: nous renseigne sur le mouvement (vitesse) du
moteur.
Les entrées/sorties
Chaque E/S possède trois registres
Data Direction Register: permet de déterminer si les pins associées à un port jouent le
rôle d’une entrée ou sortie.
Port Register:
En mode écriture, il affecte la valeur à la bascule.
En mode lecture, il permet de lire la valeur de l’E/S.
Data Latch Register:
En mode écriture, il affecte la valeur à la bascule.
54
Annexe A : Architecture du dsPIC33F
dsPIC33F J256GP710
Taille Flash (KO) 256
Taille RAM (KO) 30
16-bits timers 9
Input capture 8
Output compare 8
Codec Interface 1
ADC 2
UART 2
SPI 2
I2C 2
Enhanced CAN 2
I/O pins 85
pins 100
55
Annexe B
La carte explorer 16
Légende :
1. Bouton reset
2. Port RJ-11
3. Sélecteur PIC/PIM (PIC : si on change de microcontrôleur, PIM : si on garde toujours le
PIC24F).
4. Port USB
5. PIC18F
56
Annexe B : La carte explorer 16
57
Annexe C
OUTPUT_ARCH("33FJ256GP710")
EXTERN(__resetPRI)
EXTERN(__resetALT)
Définition des différentes régions de la mémoire et ceci permet d’informer le linker l’état
de la mémoire est disponible dans le composant
MEMORY
{
data (a!xr) : ORIGIN = 0x800, LENGTH = 0x7800
reset : ORIGIN = 0x0, LENGTH = 0x4
ivt : ORIGIN = 0x4, LENGTH = 0xFC
aivt : ORIGIN = 0x104, LENGTH = 0xFC
program (xr) : ORIGIN = 0x200, LENGTH = 0x2AA00
Détermination des adresses des sections qui se trouvent dans la mémoire de donnée
__YDATA_BASE = 0x4800;
58
Annexe C : Le fichier d’édition des liens
__DMA_BASE = 0x7800;
__DMA_END = 0x7FFF;
__DATA_BASE = 0x2000;
Mémoire Programme
Instructions lors du reset
.reset :
{
SHORT(ABSOLUTE(__reset)); (La première fonction qui sera appelé après le reset du
composant)
SHORT(0x04);
SHORT((ABSOLUTE(__reset) >> 16) & 0x7F);
SHORT(0);
} >reset
BS_Section __BSP_BASE :
{
*(BS_Section);
}>program
SS_Section __SSP_BASE :
{
59
Annexe C : Le fichier d’édition des liens
*(SS_Section);
}>program
GS_Section __GSP_BASE :
{
*(GS_Section);
}>program
Mémoire Donnée
Réservation de l’espace mémoire pour les registres de configurations de l’oscillateur
__FGS :
{ *(__FGS.sec) } >__FGS
__FOSCSEL :
{ *(__FOSCSEL.sec) } >__FOSCSEL
__FOSC :
{ *(__FOSC.sec) } >__FOSC
__FWDT :
{ *(__FWDT.sec) } >__FWDT
SECTIONS
{
Définition de la table des vecteurs d’interruption
.ivt __IVT_BASE :
{
LONG(DEFINED(__ReservedTrap0) ? ABSOLUTE(__ReservedTrap0) :
ABSOLUTE(__DefaultInterrupt));
.
.
.
LONG(DEFINED(__Interrupt117) ? ABSOLUTE(__Interrupt117) :
ABSOLUTE(__DefaultInterrupt));
} >ivt
60
Annexe C : Le fichier d’édition des liens
.
.
.
LONG(DEFINED(__AltInterrupt117) ? ABSOLUTE(__AltInterrupt117) :
(DEFINED(__Interrupt117) ? ABSOLUTE(__Interrupt117) :
ABSOLUTE(__DefaultInterrupt)));
} >aivt
}
Dans cette dernière partie du fichier, on va indiquer l’emplacement des SFR (Special
Function Register) c'est-à-dire qu’on va donner l’adresse mémoire de chaque registre
comme décrit ci-dessous.
L’adresse de chaque registre est écrite en deux versions, une avec un underscore et
l’autre sans, et ceci permet au programme écrit en langage c et assembleur de ce référer à
ces registres.
_WREG0 = 0x0000 ;
WREG0 = 0x0000 ;
_WREG1 = 0x0002 ;
WREG1 = 0x0002 ;
61
Annexe D
Le MicroBlaze
Architecture du MicroBlaze
Le MicroBlaze est un microprocesseur RISC qui possède une architecture de harvard et qui est
sur 32 bits. Il possède comme le montre la figure ci dessous:
32 registres internes de 32 bits de large,
Un pipeline à 3 niveaux,
Un bus instructions interne (ILMB),
Un bus de données interne (DLMB),
Un bus d'instructions externe (IOPB),
Un bus de données externe (DOPB),
Jeu d’instruction sur 32 bits.
62
Annexe D : Le MicroBlaze
La figure précédente nous présente les différentes liaisons entre le MicroBlaze et les autres
composants qui se trouvent dans le FPGA.
Caractéristiques du MicroBlaze
Le MicroBlaze possède plusieurs caractéristiques dont on en cite les plus importantes ci-dessous :
C’est un processeur facilement reconfigurable puisqu’il est possible de sélectionner ses
composants internes et de les paramétrer,
Jeu d’instructions optimisé pour les applications embarquées,
Pas d’occupation de silicium en plus puisqu’il est à l’intérieur du FPGA,
On peut atteindre de bonnes performances sans ajouter de coût
63
Bibliographie
64
[22] Actel.Fusion Family of Mixed-Signal Flash FPGAs with Optional Soft ARM Support, Avril 2006.
[23] Actel.Application Note Fusion Security, Avril 2006.
Liens utiles :
www.microchip.com
www.actel.com
www.xilinx.com
www.actel.com
65