Évolution des logiciels défensifs en vue d`une

publicité
CO M I T É N A T I O N A L
F RANÇAIS DE
RA D I O É L E C T R I C I T É
SCIENTIFIQUE
EVOLUTION DES LOGICIELS DEFENSIFS EN VUE D'UNE
AMELIORATION DE L'IMMUNITE DES SYSTEMES EMBARQUES
Rachid ALAOUI * - Etienne SICARD ** - Lahoussine BOUHOUCH *** Stéphane BAFFREAU **** - A MOUDDEN*****
(*) ETAR Sous Massa Draa, Agadir Maroc, [email protected]
(**) Université de Toulouse, INSA DGEI, 135 Avenue de Rangueil, 31077 Toulouse Cedex France
(***) Département Génie Electrique, EST Agadir, Université Ibn Zohr, B.P. 33/S, 80000 Agadir, Maroc
(****) Université de Toulouse, GEII IUT de Tarbes, 1 Rue Lautréamont, 65000 Tarbes, France
(*****) Laboratoire MCCM. Faculté des Sciences, Université Ibn Zohr, Agadir
Résumé. Pour améliorer l'immunité électromagnétique des systèmes embarqués, bien souvent les
concepteurs centrent leurs efforts sur la partie
matérielle. Cependant, de tels systèmes sont généralement construits autour d'un ou plusieurs calculateurs. De ce fait, une approche complémentaire peut
être envisagée afin de diminuer la susceptibilité du
système final: le développement d'un logiciel défensif.
Dans cet article, nous présentons quelques méthodes
logicielles destinées à améliorer l'intégrité du système
tout en préservant sa fonctionnalité première.
Par ailleurs, ces systèmes présentent des similitudes
technologiques: leur architecture repose sur un ou
plusieurs circuits intégrés programmables.
Ces composants, pour une grande partie des microcontrôleurs, gèrent la fonctionnalité globale du
système. Aussi, leur immunité électromagnétique se
doit d'être la meilleure possible. Pour cela, deux types
d'approches complémentaires peuvent être effectuées.
La première se situe au niveau matériel. L'étude est
effectuée sur le composant lui-même, et peut être
complétée par une évaluation au niveau système [1],
[2], [3].
La seconde approche correspond à un traitement
logiciel spécifique. L'application informatique
développée doit non seulement effectuée les tâches
requises pour le système, mais elle doit également
prendre en compte et gérer au mieux les éventuelles
perturbations électromagnétiques extérieures [4], [5],
[6]. Dans la suite de cet article, nous nous
intéresserons uniquement à cette approche.
I. INTRODUCTION
Les systèmes électroniques embarqués sont devenus
incontournables dans la vie actuelle de l'homme. Ils
sont partout présents, que ce soit dans les domaines du
transport, de la télécommunication, du médical, …
Les fonctions qu'ils doivent accomplir sont toujours
plus nombreuses, complexes, voire, dans bien des cas,
critiques pour l'intégrité des personnes qui les
utilisent. De plus, de part leur grande transportabilité,
ces systèmes peuvent évoluer dans des environnements électromagnétiques très difficiles. La figure 1
illustre ce propos au travers de l'automobile qui peut
être soumise à de multiples sources d'agressions
électromagnétiques, de formes d'onde, d'amplitude et
de fréquences très différentes.
II. PROTECTIONS MATERIELLES
La détection et la correction matérielle d’une erreur
s’appuient toujours sur une architecture spéciale
souvent au niveau équipement, les composants restant
des éléments standard dans la plupart des cas
(Commercial-Off The Shelf).
Ces architectures existent au niveau circuit et sont
principalement destinées à parer les SEU (Single
Event Upset), dus à la pénétration d’une particule
(neutron, particule bêta, etc.) dans le composant. Ce
sont des effets localisés soumis à des lois probabilistes
(par exemple : la probabilité d’agresser les n circuits
redondants est très faible). Il existe des circuits de
type FPGA incluant des systèmes de corrections
automatiques mais ils représentent un surcoût
important pour l’équipement et sont peu utilisés.
L’agression par rayonnement électromagnétique
n’évoque pas les mêmes contraintes : le circuit peut
être agressé dans son ensemble et pas nécessairement
sur des I/O ou les alimentations. Dans un tel cas de
figure, tous les circuits redondants et de contrôle
Composants
Radar
Téléphone
Moteurs électrique
Fig.1 – illustration de quelques sources d'agression
électromagnétique dans le domaine automobile.
1
peuvent être perturbés, d’où l’utilisation de l’approche
logicielle [7].
III. PRINCIPE DES LOGICIELS DEFENSIFS
Le développement d’un système sûr de fonctionnement passe par l’utilisation combiné d’un ensemble
de techniques logicielles qui peuvent se résumer
comme suit :
• Prévention des fautes : comment empêcher
l’occurrence ou l’introduction de fautes ;
• Tolérance aux fautes : comment fournir un service à
même de remplir la fonction du système en dépit
des fautes ;
• Prévision des fautes : comment estimer la présence,
la création et les conséquences des fautes [8].
L'utilisation de ces techniques logicielles dans le but
d'améliorer l'immunité du système peut se faire à trois
niveaux différents.
Le premier se situe directement à l'interface entre le
micro-contrôleur et son proche environnement. Ceci
implique l'utilisation de techniques spécifiques de
traitement et d'analyse des signaux d'entrée/sortie [5].
Le second niveau correspond à la gestion des
informations internes au micro-contrôleur. A savoir,
principalement les données nécessaires pour la bonne
exécution de l'application logicielle. Dans ce cas,
l'étude porte sur l'intégrité des mémoires et met en
œuvre des techniques de duplication des données [9]
ou de code de redondance cyclique [10].
Enfin, le dernier niveau concerne l'exécution de
l'application elle-même. Ceci implique de mettre en
place des techniques et des indicateurs afin de
s'assurer que le flot de contrôle est bien respecté. Ce
sont ces dernières techniques que nous considérerons
dans la suite de l'article.
IV. DESCRIPTION DES METHODES
GESTION DU FLOT DE CONTROLE
CODE
Code dupliqué
x=1;
y=5;
i=0;
tant que (i < 5)
{
z = x + i* y ;
I=i+1;
}
i=2*z;
x=-2;
y = -10 ;
i=0;
tant que (i > -10)
{
z = x + i * y / (-2) ;
i = i + (-2);
}
i = (-4) * z / (-2) ;
Fig. 2: Principe de la duplication du code par
expressions régulières
IV.2 GESTION PAR SIGNATURES
Dans cette technique, nous partons du principe qu'un
programme est un conglomérat de blocs ou nœuds
(Ni) de codes (procédures et fonctions) [11]. Un nœud
ne peut contenir d’instructions de branchement ou de
saut en dehors de la première et de la dernière
instruction. Une signature notée Si et une différence
de signature notée di sont assignés à chaque nœud
(Fig. 3).
G1=S1
G2=S2
N1
N2
G1=S1
S1
d1
N1
S1
d1
N3
S3
D3
Branchement illégal
S1
D2=S1 ⊕ S2
N2
G4 ≠S4
N4
Branchement incorrect
Branchement correct
Gn : signature courante du noeud Nn
Sn : Signature assignée au noeud Nn
dn : Difference de signature
Fig.3: Principe de la gestion par signatures.
Un registre de signature générale (G) est réservé pour
stocker la signature du nœud en cour d’exécution.
Pendant l’exécution normal du nœud Ni, la valeur de
G = Gi = Si. Si ce registre a une valeur différente de la
valeur assignée au nœud courant, cela signifie qu’il y
a une erreur dans le programme.
Lors d'un changement de nœud, une nouvelle
signature est générée par une fonction. Cette mise à
jour est effectuée en considérant les deux valeurs
associée à chaque bloc Ss (source) et Sd (destination).
Ces deux signatures déterminent le prochain
branchement.
DE
Afin de gérer au mieux le flot de contrôle d’une
application, il existe de nombreuses techniques de
protection logicielle. Dans les paragraphes suivants,
nous nous focaliserons sur trois d’entre elle : la
duplication du code par expressions régulières, la
gestion par signatures ainsi que la gestion par
identifiants.
IV.1
DUPLICATION DU
EXPRESSIONS REGULIERES
Code initial
IV.3 GESTION PAR IDENTIFIANTS
PAR
Le principe (Fig. 4) est similaire à la gestion par
signatures. Cependant, la fonction XOR est remplacée
par la fonction concaténation. Un identifiant (IDB) est
assigné à chaque nœud et un code à chaque
branchement. Un registre est réservé pour recevoir
l’identifiant de départ et d’arrivé. Une fonction F
calcule la nouvelle valeur et la compare avec le
nouveau bloc éventuel de branchement. Le
branchement s’établi et le registre se met à jour s’il
n’y a pas eu d’erreur sinon une procédure de gestion
d’erreur est déclenchée.
Cette technique consiste à dupliquer le code d'un
programme initial en créant un programme copie [6].
Ce second programme exécute des instructions
similaires à celui d'origine en manipulant des données
modifiées. La figure 2 présente un exemple de
transformation: une multiplication par un facteur -2.
Au final, on exécutera les deux programmes puis l'on
comparera les résultats obtenus pour savoir si
l'exécution s'est correctement déroulée.
2
IDB1=0x30
IDB2=0x20
N1
F2=F1| IBC2
Si F? R erreur
N2
R=br12
F=0x20
br12=0x2030
Fig.4: Principe de la gestion par identifiants.
Fig.6 – Caractéristiques de la carte de test.
La carte de test est étudiée pour faciliter l’injection de
perturbations radiofréquences par couplage capacitif
selon la méthode « Direct Power Injection » (DPI)
décrite dans la norme IEC 62132-2 [12]. Pour limiter
les réflexions du signal d’agression, les pistes
d’injection sont adaptées 50 Ω par un choix judicieux
de largeur de piste de circuit imprimé. Les
connecteurs câble/circuit sont de type SMB, également adaptés 50 Ω. Les capacités de couplage et les
connecteurs sont situés au plus proche du point
d’entrée dans le composant de façon à minimiser la
longueur des pistes non adaptées. Parmi les
différentes points fonctionnels pouvant être agressés
on note le réseau d’alimentation, l’horloge et des
entrées/sorties analogiques et numériques.
De par les caractéristiques de la carte de test, d’autres
méthodes d’agressions sont envisageables: agression
par boucle magnétique en champ proche selon la
nouvelle proposition IEC 62132-9, ou encore
agression globale en cellule TEM/GTEM ou TEM
miniature telle que présentée par [13].
Une description du banc de mesure est donnée à la
Figure 7. Le banc de test utilisé repose sur le principe
de mesure DPI. La perturbation est créée par un
générateur de signaux radio-fréquence, puis amplifiée
avant d’être injectée dans le composant sous test au
moyen d’une capacité de couplage. Un oscilloscope
particulier analyse en temps réel les signaux émis par
le micro-contrôleur et déclenche une interruption
lorsque le signal « utile » sort du gabarit prédéfini. Le
signal utile correspond à un signal carré généré par
l’application logicielle embarquée. Les appareils de
contrôle et de mesures sont connectés entre eux par un
bus IEEE et gérés par un logiciel spécifique
développé au laboratoire.
V. EXPERIMENTATION
Nous proposons de tester les concepts évoqués sur une
plate-forme conçu autour d’un micro-contrôleur
S12X. Le composant Freescale MC9S12XDP512 est
un micro-contrôleur 16 bits développé en 2005,
principalement destiné aux applications automobiles.
Ce composant de faible coût de revient, ayant une
faible consommation, intègre deux cœurs de calcul: un
processeur 16 bits de technologie CISC et un coprocesseur, la XGate, de technologie RISC. Ce dernier
a pour principal objectif la gestion des événements
d’interruption. Ce qui permet au processeur de se
focaliser sur l’exécution d’une tâche de fond. Le lien
entre les deux unités s’effectue alors au travers des
zones de mémoire données. La figure 5 présente un
diagramme de bloc simplifié de ce circuit intégré.
5 Contrôleur
de Bus CAN
Convertisseur
A/D 10 bits
SPI, SCI, I²C,
Interruption
Temps Réel
119
Entrées/Sorties
PWM
sur 16 bits
Co-Processeur XGATE
Flash 512 ko
RAM 32 ko
EEPROM 4 ko
Processeur S12X
Fig.5 – Diagramme de bloc simplifié du microcontrôleur S12X.
Afin d’évaluer l’impact du logiciel défensif sur la
susceptibilité du micro-contrôleur aux agressions de
type interférences 1MHz-3GHz, une carte de test a été
développée. Cette carte est réalisée sur un substrat de
type FR4, au format TEM/GTEM (10,3 x 10,3 cm).
Un premier plan de masse sur lequel est isolé le
micro-contrôleur permet de clore électriquement la
cage de Faraday constituée par la cellule TEM (Fig. 6
à gauche). Le second plan est constitué d’un plan de
masse et de quelques signaux. La troisième couche est
principalement un plan d’alimentation. La dernière
couche correspond à un plan de masse et de signaux.
C’est sur cette dernière couche que les composants et
connecteurs nécessaires au bon fonctionnement du
composant sont montés (Fig. 6 à droite).
Fig.7 – Banc de mesure utilisé pour les
expérimentations.
3
Le critère de susceptibilité retenu pour la mesure
correspond à une fluctuation du signal de sortie du
micro-contrôleur supérieure à 20% de sa valeur
nominale en tension et en décalage temporel. Pour une
fréquence de perturbation donnée on détermine le
moment où le signal sort du gabarit. Cette tâche est
grandement simplifiée par l'oscilloscope intégrant un
système temps réel de détection de sortie d’enveloppe.
La puissance est mesurée à l’aide d’un coupleur.
REFERENCES
[1] A. Boyer, S. Akue Boulingui, S. Bendhia, E.
Sicard, S. Baffreau, "A methodology for
predicting by near field chip to chip coupling"
EMC Compo 07, Torino Italy, November 2007 .
[2] A. Z. H. Wang, "On-chip ESD protection for
Integrated circuits", An IC Design Perspective,
Kluwer Academic Publishers, 2002, ISBN
0-7923-7647-1
[3] IEC 62014-3: 93/146/CDV, "EMC for
Component, Integrated Circuits Electrical
Model (ICEM)", Document online at
http://www.ic-emc.org
[4] S. Baffreau, L. Tysk, G. Motet, "Détection
logicielle des défaillances d'une plate-forme
matérielle dues à des champs électromagnétiques", CEM'04, Toulouse France, Mars 2004.
[5] D. Campbell, "Defensive software programming
with
embedded
microcontrollers",
IEE
Colloquium on Electromagnetic Compatibility
of Software, Birmingham, UK, 1998.
[6] M. Rebaudengo, M. S. Reorda, M. Torchiano,
M. Violante, "Soft-error detection through
software fault-tolerance techniques", IEEE
International
Symposium
Defect
Fault
Tolerance in VLSI Systems, Austin, USA,
November 1999, pp. 210-218.
[7] Enrique LAMOUREUX, " Etude de la
susceptibilité des Circuits intégrés numériques
aux Agressions hyper-fréquences", Chap.2,
Thèse No 817, INSA-TOULOUSE, 25 janvier
2006.
[8] J.C. Laprie, " Guide de la sûreté de
fonctionnement", Cépaduès-Editions, Paris
1995,pp 7-8,
[9] N. Oh, S. Mitra, E. J. McCluskey, "ED4I: Error
Detection by Diverse Data and Duplicated
Instructions", IEEE Transaction on Computers,
Vol. 51, N°2, pp. 180-199, February 2002.
[10] ISO 11898 Controller Area Network (CAN) for
high speed communication.
[11] N. Oh, P. P. Shirvani, E. J. McCluskey,
"Control-flow checking by software signatures",
IEEE Transaction on Reliability, Vol. 51,
pp. 111-122, March 2002.
[12] IEC 62132 part 2, 47A/529/NP, "Direct RF
power injection to measurement method".
[13] B. Körber, M. Trebeck, N. Müller, F. Klotz,
"IC-Stripline – A new proposal for susceptibility
and emission testing of ICs", 6th International
work shop on electromagnetic compatibility of
integrated circuit EMC Compo, Torino (Italy),
November 2007.
VI. EVALUATION
Afin d’évaluer l’impact au niveau logiciel, nous avons
utilisé un programme de référence, nommé par la suite
code conventionnel, et nous l’avons comparé aux trois
techniques de protection logicielle. Cette évaluation
considère l’espace mémoire utilisé ainsi que le temps
d’exécution nécessaire. Le tableau 1 synthétise les
résultats mesurés en terme d’occupation mémoire et
de temps d’exécution des différents codes.
Techniques
CC
OC-TE
CT
OC-TE
Augmentation
relative en %
Expressions
régulières
Signatures
96octets
219 octets
127
48µs
109 µs
18 octets
37 octets
105
9 µs
18.5 µs
Identifiants
27 octets
52 octets
93
13.5 µs
26 µs
Tableau1 : Occupation mémoire et temps d’exécution.
CC : Code conventionnel.
CT : Code avec technique de protection logicielle.
OC : Occupation mémoire.
TE : Temps d’exécution.
Quelque soit le logiciel défensif considéré, l'espace
mémoire nécessaire et le temps d’exécution sont plus
que doublés. Par ailleurs, il est important de remarqué
que la taille du code conventionnel est très limitée. De
ce fait, l’ajout de quelques lignes de code
supplémentaire a un impact très fort sur ces deux
paramètres. De plus, les programmes ont été réalisés
sans la prise en compte des nouvelles stratégies de
programmation offerte par les circuits intégrés multicœurs. Par conséquent, une optimisation reste encore
possible pour chacun des logiciels.
CONCLUSION
Dans cet article, nous avons décrit la problématique
de la susceptibilité électromagnétique des systèmes
embarqués. De plus, des techniques de protection
logicielle pour améliorer la bonne exécution du flot de
contrôle ont été présentée, ainsi qu'une mise en œuvre
expérimentale. Enfin, les coûts en temps et espace
mémoire nécessaire pour la mise en œuvre de ces
techniques ont été évalués.
4
Téléchargement