D
epartement informatique et r
eseau
EDITE de Paris
Int
egration de la s
ecurit
e et de la
s
uret
e de fonctionnement dans la
construction dintergiciels critiques
`
THESE
presentee et soutenue publiquement le 5 juillet 2010
pour lobtention du
Doctorat de lEcole
Nationale Sup
erieure des T
el
ecommunications
sp
ecialit
e : Informatique et R
eseaux
par
Julien Delange
Composition du jury
Rapporteurs :
Yvon Kermarrec
Laure Petrucci
Examinateurs :
Oleg Sokolsky
Jean-Charles Fabre
Invite :
Jean-Paul Blanquart
EADS/Astrium Satellites
Directeurs :
Laurent Pautet
Fabrice Kordon
Remerciements
Trop de personnes `
a remercier. Nous allons donc faire simple. Je remercie
avant tout mes directeurs de th`ese, Laurent Pautet et Fabrice Kordon.
Ces remerciements se justifient par leur simple acceptation de supporter le
mauvais el`eve que je suis. Merci `a leur attention, mais surtout `a leur patience
et `
a leur contribution dans le travail que jai mene.
Je remercie egalement Peter Feiler, J
orgen Hanssen et bien entendu,
Bruce Lewis pour leur accueil chaleureux lors de mon voyage au Software
Engineer Institute, `
a Pittsburgh. Ce voyage ma donne lopportunite de decouvrir un autre pays fin 2008, en plein changement. Je naurais jamais pense
venir aux Etats-Unis pendant ma th`ese et encore moins y vivre une telle aventure. Je les remercie encore une fois, ces echanges mont permis de mettre en
valeur mon travail de th`ese `a plusieurs reprises.
Je remercie egalement les membres du comite AADL pour leur contribution
`a la redaction de lannexe ARINC653 pour ce standard de modelisation. Je
pense particuli`erement `
a Thierry Cornillaud ou Oleg Sokolsky qui ont
ete de precieux relecteurs, traquant les erreurs et autres coquilles que javais
pu laisser.
Enfin, jaimerais encore remercier des dizaines de personnes qui mont aide
ro
me Hugues qui a ete
de pr`es ou de loin dans mon travail. Je pense `a Je
linstigateur de discussions interessantes sur la generation de code, `a Franc
ois Goudal, Julian Pidancet ou Laurent Lec qui ont ete de tr`es bons
el`eves et dexcellents contributeurs au projet que jai mene. Merci aussi `a Bechir Zalila ou Irfan Hamid pour leur accueil `a mon arrivee au sein du
departement Informatique et Reseaux de TELECOM ParisTech.
Enfin, merci `
a tous ceux qui ont ete oublies : amis ou ennemis dun jour,
personnes rencontrees au detour de conversations enflamees. Rien naurait ete
pareil sans vous et cest ce melange doppositions, de contradictions ou de
complicite qui ont rendu ces trois annees epuisantes mais passionantes.
Contexte general . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.2
Garantie de securite/s
urete : la metaphore de limmeuble . . .
12
1.3
18
1.4
24
1.5
Plan du memoire . . . . . . . . . . . . . . . . . . . . . . . . . .
25
2
Probl
ematique
27
2.1
Approches de securite . . . . . . . . . . . . . . . . . . . . . . .
29
2.2
Approches de s
urete . . . . . . . . . . . . . . . . . . . . . . . .
42
2.3
50
2.4
60
3
Approche propos
ee
3.1
67
69
3.2
72
3.3
Langages de modelisation . . . . . . . . . . . . . . . . . . . . .
79
4
Sp
ecification et validation de larchitecture
91
4.1
93
4.2
94
4.3
4.4
4.5
4.6
4.7
5
Implantation et certification automatiques
7
135
5.2
5.3
5.4
5.5
5.6
6
Cas d
etudes
179
6.1
6.2
6.3
6.4
Etude
de lempreinte memoire . . . . . . . . . . . . . . . . . . . 203
6.5
7
Conclusions et Perspectives
209
7.1
Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
7.2
Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Bibliographie
217
A
Publications & glossaire
223
229
. . . . . . . . . . . . 247
Abstract
Safety-critical software (used in avionics, military or aerospace domains)
must preserve their integrity, ensure a continuous operational state and
enforce security of their data. There requirements are met through a dedicated development process that analyses and detects errors before system
release.
However, these methods are not sufficient and safety or security still occurs
in such systems (e.g. explosion of Ariane 5, mission failure of Mars Climate
Orbiter, etc). In addition, meeting safety and security becomes more and
more difficult due to an increasing number of functionalities.
This thesis introduces a new method to build safety-critical systems and
ensure their safety and security requirements. The approach proposes patterns for the specification of safe and secure systems. Then, a dedicated
development process relies on them to (i) validate, (ii) automatically implement and (iii) certify the system, enforcing its requirements from the
specifications to the code.
System validation (i) detects specification errors, ensuring its correctness
and feasibility prior any development effort. The automatic implementation process (ii) translates system specification into code and ensures their
requirements enforcement. The certification (iii) aspect verifies that specification requirements are met in the implementation by analyzing the
system during its execution. It also evaluates its compliance against certification standards (such as DO178B).
Keywords : safety, security, ARINC653, MILS, code generation, partitioned system, POK, AADL, Ocarina.
R
esum
e
Les syst`emes embarques critiques (utilises dans le domaine avionique, militaire ou medical) doivent assurer une continuite de service et la securite
des donnees quils contiennent ou echangent. La garantie de ces exigences
seffectue au travers dun processus de developpement rigoureux qui sattache `
a detecter et corriger toute erreur avant la mise en production du
syst`eme.
Toutefois, plusieurs exemples (explosion de la fusee Ariane 5, echec de la
mission Mars Climate Orbiter ) ont montre les limites de ces methodes. De
plus, laugmentation des fonctionnalites fournies par ces syst`emes complique la garantie de r`egles de securite et de s
urete.
Ce travail de th`ese propose une methode de conception de syst`emes critiques visant `
a faciliter le respect des politiques de securite et de s
urete
dans la production de syst`emes critiques. Lapproche decrite au sein de ce
manuscrit definit des r`egles de specifications des syst`emes s
urs et securises
qui sont utilises au cours dun cycle de developpement qui (i) valide, (ii)
implante et (iii) certifie automatiquement le syst`eme.
La validation de larchitecture (i) assure la bonne constitution des specifications et garantit leur faisabilite. Limplantation automatique (ii) gen`ere
le syst`eme `
a partir des specifications validees, garantissant la bonne traduction des specifications en code executable. Laspect certification (iii) compare lexecution du syst`eme avec ses specifications et verifie sa conformite
avec les standards de certification inherents aux syst`emes critiques. Cette
partie de notre approche assure que les syst`emes implantes respectent les
contraintes de securite et de s
urete decrites par lutilisateur.
Mots-cl
es : s
urete, securite, ARINC653, DO178B, MILS, generation de
code, syst`eme partitionne, POK, AADL, Ocarina.
10
Chapitre 1
Introduction g
en
erale
Sommaire du chapitre
1.1
1.2
Contexte g
en
eral . . . . . . . . . . . . . . . . . . . . .
Garantie de s
ecurit
e/s
uret
e : la m
etaphore de limmeuble . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Contexte . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2 Assurance de la securite . . . . . . . . . . . . . . . .
1.2.3 Assurance de s
urete . . . . . . . . . . . . . . . . . .
1.2.4 Assurance de securite et la s
urete : difficultes . . . .
1.3 Difficult
es de conception : causes et cons
equences .
1.3.1 Causes de la difficulte de garantie de securite/s
urete
1.3.2 Consequences sur la securite/s
urete . . . . . . . . .
1.4 Positionnement, d
efinition des objectifs . . . . . . .
1.4.1 Definition des objectifs . . . . . . . . . . . . . . . . .
1.5 Plan du m
emoire . . . . . . . . . . . . . . . . . . . . .
11
12
12
13
14
15
17
18
18
20
24
24
25
1.1
Contexte g
en
eral
Jour apr`es jour, nous utilisons toujours plus de syst`emes embarques. Ces
derniers prennent place dans differents domaines de notre vie quotidienne :
loisirs (consoles de jeux portables, lecteurs MP3), transport (pilotage automatique du metro, contr
ole de vitesse etc.) Si des defaillances nont souvent
que peu dimportance pour la majorite des utilisateurs, certains syst`emes, dits
critiques (par ex : domaine avionique ou medical), doivent en revanche garantir leur bon fonctionnement ou la protection des donnees quils manipulent
(par ex : domaine militaire). Une erreur de conception peut etre catastrophique et causer labandon dune mission ou des pertes humaines. Si le grand
public nest pas toujours acteur dans lutilisation de ces syst`emes, il nen est
pas moins utilisateur (passager dun vol, conducteur de voiture, etc.) et subit
les consequences de ces defaillances.
Cependant, la conception de ces syst`emes est devenue de plus en plus
compliquee de par lajout constant de fonctionnalites. Ces nouvelles capacites
compliquent larchitecture des syst`emes, rendant la garantie de leur fonctionnement difficile. Cette complexite est dautant plus preoccupante car certains
aspects apparaissant comme triviaux peuvent avoir de lourdes consequences
sur le fonctionnement du syst`eme. Le cas de lexplosion de la fusee Ariane
(erreur de conception du logiciel de pilotage [43]) ou du drone explorateur
de Mars (erreur dans les specifications des unites dans le logiciel de controle
du drone [75]) montrent que certaines erreurs qui peuvent sembler triviales
(par exemple, erreur dans lintegration du syst`eme metrique) peuvent avoir de
lourdes consequences.
Les sections suivantes illustrent cette complexite. Dabord en partant dun
exemple simple de notre vie quotidienne (la construction dun immeuble). Puis,
en etablissant une correspondance entre les probl`emes identifies avec ceux que
rencontres dans la production de syst`emes critiques. Enfin, la fin de ce chapitre
introduit lapproche developpee tout au long de ce manuscrit.
1.2
Garantie de s
ecurit
e/s
uret
e : la m
etaphore de
limmeuble
Archives
Archives
Bureaux
B
Bureaux
Salle confrence
A B
partage
Entre Courrier Entre
Poste
Entre/sortie A
Archives
Bureaux
Bureaux
Archives
1.2.1
Contexte
1.2.2
Assurance de la s
ecurit
e
D
efinition : S
ecurit
e
Ensemble de fonctions et mecanismes destines `a proteger
linformation des entites nayant pas lautorisation de les
manipuler.
Afin de garantir lisolation de linformation entre les deux societes, plusieurs mecanismes sont mis en jeu dans la construction et lexploitation du
batiment.
Protection des soci
et
es par isolation des locaux
Pour assurer la protection de linformation de chaque societe, bureaux et
archives sont isoles dans un etage separe, accessible aux seuls employes des
entreprises concernees. Cette specificite est visible sur larchitecture generale
du batiment (figure 1.1), o`
u un etage est reserve pour les bureaux et salles
darchives de chaque entreprise.
Contr
ole des acc`
es
Afin que les employes de chaque societe ne puissent communiquer par lutilisation dun canal de communication commun (couloir ou escalier), des acc`es
dedies `
a chaque entreprise sont mis en place :
1. de lexterieur vers les bureaux. Ainsi, une societe ne peut acceder aux
bureaux de sa concurrente de lexterieur.
2. des bureaux vers les archives. Un escalier relie les bureaux de chaque
societe `
a sa salle darchive.
Pour assurer que seuls les employes habilites franchissent la porte de leur
societe, un contr
ole dacc`es est mis en place. Il consiste `a verifier lidentite
de lemploye `
a laide dune carte, assurant que la personne qui se presente
appartient bien `
a la societe proprietaire des locaux accedes.
14
1.2.3
Assurance de s
uret
e
D
efinition : S
uret
e
Ensemble de mecanismes mis en place pour assurer la
continuite de fonctionnement du syst`eme.
1.2.4
Assurance de s
ecurit
e et la s
uret
e : difficult
es
1.3
Difficult
es de conception : causes et cons
equences
1.3.1
Causes de la difficult
e de garantie de s
ecurit
e/s
uret
e
Conduite
1960
1970
1980
1990
2000
2010
Complexit
Complexit totale de
l'lectronique embarque
1990
2000
Temps
20
B737 ($470K)
18
B777 ($4M)
16
Lgende
B747 ($370K)
14
A330/A340 ($2M)
B757 ($190K)
Airbus
A320 ($800K)
A310 ($400K)
12
10
Boeing
Evolution
irralisable
A300FF ($40K)
A300B ($4.6K)
INS ($0.8K)
6
1960
1970
1980
1990
2000
2010
2020
Annes
1.3.2
Cons
equences sur la s
ecurit
e/s
uret
e
Une difficult
e danalyse du syst`
eme
La croissance des fonctionnalites et donc, du nombre de lignes de code
(SLOC) a pour consequence de :
1. disseminer les exigences et les services, rendant difficile leur identification
dans une quantite de code importante ;
2. introduire des interactions non souhaitees entre les differentes parties du
syst`eme ;
3. rendre difficile les revues de code et lutilisation doutils danalyse.
Or, la quantite de code etant toujours plus importante, lanalyse de limpact dune fonction sur une autre est devenue trop co
uteuse. Actuellement,
20
Figure 1.6 Distribution de la localisation des erreurs au cours du developpement des syst`emes (Source : The Economic Impacts of Inadequate Infrastructure for Software Testing - [77])
En transposant ces probl`emes sur la metaphore de limmeuble, cette complexite serait mise en avant par lintroduction dautres entreprises et dautres
mecanismes de securite et de s
urete. Dans le cas de la construction dun immeuble hebergeant 100 entreprises, il deviendrait difficile de construire un batiment assurant lisolation entre chacune dentre elle. Dans une telle situation,
il serait necessaire de :
veiller `
a ce que les dispositifs de detection dincendie soient tous isoles ;
assurer que le temps de traitement du service courrier soit divise en 100
tranches de temps egales ;
isoler les syst`emes de controles didentite pour louverture de chaque
porte.
De plus, il serait necessaire, voire indispensable au vu du nombre detages de
ce nouveau b
atiment, dintroduire un ascenseur partage entre les entreprises
ou dajouter un ascenseur pour chaque entreprise. Une telle infrastructure
demanderait alors un contr
ole dacc`es special assurant lisolation des employes
de chaque entreprise. En dautres termes, lajout de nouvelles entreprises dans
un tel b
atiment ayant des contraintes de securite/s
urete fortes serait difficile,
long et tr`es co
uteux.
21
Analyse des
exigences,
conception de
larchitecture
Conception &
tests unitaires
Integration
Total
Analyse des
exigences,
conception
de
larchitecture
3.5 %
3.5 %
Total
O`
u les erreurs
sont
introduites
Production
O`
u les erreurs sont trouv
ees
Conception
&
tests
unitaires
Int
egration
Beta
test
10.5 %
35 %
6%
15 %
70 %
6%
9%
2%
3%
20 %
16.5 %
6.5 %
50.5 %
1%
9%
2.5 %
20.5 %
10 %
100 %
Cette idee est appuyee par letude [77] qui montre (tableau 1.2) que les
co
uts de developpement pourraient etre significativement reduits par une amelioration du processus de production. Les reductions potentielles sont induites
par une diminution du nombre de developpeurs et dingenieurs mais surtout,
un nombre reduit derreurs `a corriger lors des phases les plus avancees du
developpement (integration et certification).
Pour terminer sur un parall`ele avec la metaphore introduite au debut de ce
chapitre (section 1.2), le manque danalyse reviendrait `a ce que les proprietes
de chaque materiau soit revues lors de la construction, que lisolation soit verifiee pour chaque etage. Si cela est co
uteux mais realisable pour un immeuble,
cela est impossible lorsque plusieurs batiments doivent etre crees quotidiennement. Dans ce contexte, le manque dautomatisation signifie que chaque
element de la construction est realise manuellement `a partir des mati`eres premi`eres et quaucune partie du batiment nest pre-construit. Si cela nest pas
envisageable dans le contexte de la construction, ce manque dautomatisation
est bien present dans la conception de syst`emes critiques.
23
D
eveloppeurs
CAD/CAM/CAE et PDM
Utilisateurs
Automobile
Aerospatial
Total
Co
uts relatifs `
a
lefficacit
e des tests
(milliards de $)
Potentielles r
eductions
des co
uts (milliards de $)
373.1
157.7
1229.7
237.4
1840.2
377.0
54.5
589.2
Table 1.2 Impact financier des erreurs logicielles (Source : The Economic
Impacts of Inadequate Infrastructure for Software Testing - [77])
1.4
Positionnement, d
efinition des objectifs
1.4.1
D
efinition des objectifs
1.5
Plan du m
emoire
25
26
Chapitre 2
Probl
ematique
Sommaire du chapitre
2.1
2.2
2.3
2.4
Approches de s
ecurit
e . . . . . . . . . . . . . . . . . . 29
2.1.1
29
2.1.2
Mod`eles de securite . . . . . . . . . . . . . . . . . .
34
2.1.3
Algorithmes de chiffrement . . . . . . . . . . . . . .
38
2.1.4
41
Approches de s
uret
e . . . . . . . . . . . . . . . . . . . 42
2.2.1
2.2.2
ARINC653 . . . . . . . . . . . . . . . . . . . . . . .
43
2.2.3
48
50
2.3.2
51
2.3.3
55
2.3.4
59
Securite . . . . . . . . . . . . . . . . . . . . . . . . .
60
2.4.2
S
urete de fonctionnement . . . . . . . . . . . . . . .
62
2.4.3
Methodes de conception . . . . . . . . . . . . . . . .
63
2.4.4
Synth`ese . . . . . . . . . . . . . . . . . . . . . . . . .
64
27
Chapitre 2. Problematique
Rappels
Lobjectif des travaux presentes consiste `a proposer une approche
garantissant la securite et la s
urete tout au long du cycle de vie
dun syst`eme critique. Lintroduction generale du precedent chapitre
decrit le probl`eme sous une forme simple, abordable.
Ce premier contact a introduit la difficulte dassurance de securite
et de s
urete dans le contexte de la construction de syst`emes dits
critiques . Il est tr`es difficile dassurer ces exigences tout au long
du cycle de developpement (des specifications `a la certification, en
passant par limplantation).
A cette complexite sajoutent des contraintes inherentes `a la criticite du domaine detude. Ces derni`eres imposent un cycle de conception specifique, introduisant des methodes dediees et une certification
obligatoire du syst`eme. Ces contraintes (issues des standards de certification comme la couverture de code), fortes, assurent le respect
des exigences du concepteur (mecanismes de protection de donnees)
et de plusieurs contraintes de conception (lensemble du code ecrit
est execute).
Objectifs du chapitre
Ce chapitre presente le contexte technique de cette th`ese. Il decrit les
approches existantes dun point de vue securite, s
urete et methodes
de conception.
Laspect securite presentera lapproche MILS, les politiques de securite existantes et les algorithmes de chiffrement existants.
La section traitant la s
urete decrit les methodes danalyse de la s
urete
des specifications dun syst`eme et decrit le standard ARINC653 dedie
`a la s
urete de fonctionnement.
Enfin, la derni`ere section traite des methodes de conception. Elle
donne un apercu du standard DO178B, reference du domaine avionique, et introduit les concepts de methodes danalyse de code.
28
2.1
2.1.1
Approches de s
ecurit
e
Multiple Independent Level of Security
Chapitre 2. Problematique
Repr
esentation des composants
MILS definit son propre formalisme de representation des composants et
des niveaux de securite. Celui-ci dissocie composants materiels et logiciels offrant la possibilite de specifier les proprietes de securite. Cependant, peu defforts ont ete realises pour integrer cette methode de representation au sein
de langages de modelisation existants tels UML, AADL ou SysML. Ce formalisme est uniquement graphique et definit une representation ainsi que les
annotations necessaires `
a la specification des contraintes de securite. [5, 20, 6]
montrent plusieurs exemple de son utilisation.
Chaque composant specifie :
les niveaux de securite quil utilise (niveau de classification des donnees
utilisees - par exemple : top-secret, secret, non classifie)
les niveaux disolation maintenus entre les differents niveaux de securite
au sein du composant. En effet, si ce dernier manipule plusieurs niveaux
de securite, il doit alors specifier les mecanismes disolation entre ces
niveaux (prevention dune fuite dinformation) ou labsence disolation
(introduction dun vecteur de faille de securite).
De cette specification, trois categories de composants sont definies [119] :
Single Level of Security (SLS) : le composant ne manipule quun seul
niveau de securite.
Multiple Single Level of Security (MSLS) : le composant utilise plusieurs
niveaux de securite et garantit leur isolation. Celle-ci doit cependant
etre prouvee (par tests, verification formelle), bien que MILS nindique
pas quelles methodes de validation doivent etre utilisees, celles-ci etant
laissees `
a la discreation du concepteur du syst`eme.
Multiple Levels of Security (MLS) : le composant utilise plusieurs niveaux de securite et ne maintient aucune isolation entre eux.
Le but premier de MILS etant la separation des niveaux de securite, il est
preferable deviter dutiliser des composants MLS, ces derniers pouvant etre
des vecteurs de failles ou de creation de canaux caches [119]. A linverse, ces
composants peuvent etre divises suivant leurs niveaux de securite (un composant MLS contenant deux niveaux de securite peut etre divise en deux composants SLS manipulant chacun un unique niveau de securite). De tels travaux
ont ete menes dans [5].
Plus generalement, il est essentiel de reduire voire supprimer les composants manipulant plusieurs niveaux de securite. Les composants MSLS, de par
la garantie disolation quils doivent apporter, sont co
uteux `a developper et
maintenir (utilisation de tests, methodes formelles, etc.). La bonne pratique
etant de maximiser lutilisation des composants SLS, facilement analysables
puisque ne pouvant pas creer de faille.
Exemple
Lexemple suivant illustre la representation dun pilote daffichage gerant
deux ecrans et deux niveaux de securite, les informations de chaque niveau
de securite etant affichees separement sur un ecran. La figure 2.1 presente le
concept de lapproche MILS en terme de modelisation.
La partie superieure de la figure montre limplantation traditionnelle
30
Approche classique
Approche MILS
Pilote d'affichage (SLS)
Confidentiel
Chapitre 2. Problematique
lanalyse et la validation de la securite, presente quelques limites dexpressivite : les composants ne specifient pas formellement quels elements du syst`eme
ils representent (composants non types, absence de specification des aspects
logiciels et/ou materiels, etc.). Pour ces raisons, il apparait pertinent dintegrer les concepts de MILS `
a dautres formalismes de representation ayant une
semantique plus precise.
Plusieurs initiatives ont ete engagees pour decrire les exigences de securite
de MILS dans dautres langages de specification, tel AADL. Par exemple, la societe WW Technology a realise des efforts significatifs pour creer des outils
danalyse de mod`eles AADL validant des contraintes de MILS. Cependant,
au vu du caract`ere commercial du produit, aucune information scientifique
pertinente nest disponible quant au contenu de ces produits et des fonctions
de validation quils proposent (niveau de verification, rapport avec le support
dexecution sous-jacent, etc.). Cela limite lanalyse que lon est amene `a porter
sur cette initiative, mais montre toutefois que la transposition des principes de
MILS vers un langage de specification general est une proposition pertinente.
Maintenant que lapproche de representation des mecanismes de securite
a ete realisee, nous abordons la plate-forme dexecution de MILS, destinee `a
garantir lisolation entre composants.
Plate-forme dex
ecution MILS
La plate-forme dexecution MILS a pour objectif de separer les niveaux de
securite entre les composants lors de leur execution. Elle est composee dun
noyau (separation kernel ) et (parfois, suivant les articles et la partie de la
communaute presentant les travaux) dun intergiciel.
Le developpement de ces deux composants est toujours en cours, letape
actuelle consistant `
a rediger un protection profile (section 2.4.3) en vue de
la validation des r`egles de MILS par la communaute des Crit`eres Communs
(presentee en section 2.3.2).
Le noyau definit des services disolation fortement similaires `a ceux proposes par ARINC653. Cette similitude est dailleurs assumee par la communaute
MILS [97]. Chaque application est executee dans une partition qui est soumise
`a une isolation :
1. temporelle : la partition est executee pendant une periode de temps
fixe et predeterminee `
a la configuration. La duree de cette tranche de
temps est invariable, une violation de cette contrainte constitue un canal cache pour obtenir des informations sur le syst`eme (par exemple,
le temps dexecution dune tache peut donner des informations sur son
comportement).
2. spatiale : lespace memoire alloue `a la partition est unique et non accessible aux autres partitions. Ainsi, chaque partition (et par consequent,
chaque niveau de securite) est isole et ne peut lire ou ecrire les donnees
des autres partitions executees sur le meme processeur. Ce mecanisme
est fourni par le materiel executant le noyau (bien souvent, il sagit de
lunite de gestion de memoire - Memory Management Unit ou MMU du processeur).
32
Chapitre 2. Problematique
modification des donnees par le pilote (donnees applicatives contenues
par chaque couche).
De plus, dans le cas dun pilote connecte `a plusieurs partitions manipulant
plusieurs niveaux de securite, ce pilote contiendra simultanement des donnees
`a plusieurs niveaux de securite. Ce cas est malheureusement un cas pratique,
plusieurs drivers ne pouvant pas controler le meme materiel `a cause des mecanismes dimplantation (redirection dinterruption, etc.).
Il est donc necessaire dintroduire un mecanisme disolation spatiale dans
le traitement des connections reseaux. Ces mecanismes disolation, introduits
sous le terme de middleware MILS sont tr`es mal definis dans la litterature
de MILS [5]. Ces proprietes de securite sont assurees par linterface reseau
dite de confiance ( Trusted Network Interface Unit ) et assure alors
que pilote et pile protocolaire sont s
urs et garantissent lisolation des niveaux
de securite.
Cependant, considerer une interface reseau comme s
ure implique :
soit quelle fournit une isolation des niveaux de securite par une analyse,
des tests ou une verification formelle de limplantation. Dans ce cas, ce
composant sera considere comme MSLS car garantissant une isolation
entre les niveaux de securite quil manipule. Cependant, le developpement de tels composants reste co
uteux.
soit quelle ne manipule quun seul niveau de securite, ce quil faut verifier
lors de la conception du syst`eme. Dans ce cas, ce composant est considere
comme SLS.
Cependant, ces contraintes ne sont pas clairement explicitees. Dans les
articles recents comme [97], il est dit que les mecanismes de communication
doivent apporter des garanties disolation [111], sans en donner une description
precise. Ces mecanismes doivent toutefois offrir une protection des niveaux de
securite et des attaques specifiques au medium de communication (deni de
service, ecoute du medium, etc.).
A cause du manque de precision, les applications reparties requi`erent des
mecanismes specifiques disolation pour garantir leur securite.
ements remarquables de la plate-forme MILS
El
A partir de cet apercu de la plate-forme MILS, il est dej`a possible de
degager quelques elements pertinents dans le contexte de securite :
le noyau se doit detre reduit au strict minimum
les pilotes ne doivent pas resider dans le noyau mais en espace utilisateur
lisolation temporelle et spatiale sont ici utilisees `a des fins de securite
1. lisolation temporelle supprime un canal cache dinformation (le
temps dexecution dune application).
2. lisolation spatiale garantie lintegrite et la non-modification des
donnees entre les differents niveaux de securite.
2.1.2
Mod`
eles de s
ecurit
e
Un mod`ele de securite est un ensemble de r`egles definissant les interactions possibles (envoi/reception de donnees, etc.) entre les composants dun
34
Chapitre 2. Problematique
Gnral
(confidentiel-dfense)
Gnral
(confidentiel-dfense)
Soldat
(non classifi)
Soldat
(non classifi)
Non autoris
Autoris
Gnral
(confidentiel-dfense)
Soldat
(non classifi)
Soldat
(non classifi)
Autoris
Non autoris
Chapitre 2. Problematique
Bureau de conception
A
Bureau de conception
B
Usine de fabrication
Bureau de conception
B
Usine de fabrication
A
Usine de fabrication
B
2.1.3
Algorithmes de chiffrement
Chiffrement
Donne en "clair"
Cl
Donne en "clair"
Dchiffrement
Donne chiffre
Figure 2.6 Fonctionnement du chiffrement symetrique
Deux algorithmes de chiffrement symetriques tr`es utilises sont presentes :
Data Encryption Standard et Blowfish.
Data Encryption Standard (DES) Data Encryption Standard [76] a ete
cree en 1976 `
a la suite dune demande faite par le National Bureau of Standards
(NBS) (connu depuis 1988 sous le nom du National Institute of Standards and
Technology NIST). Le but etait la conception dun algorithme utilisable par
les institutions ne disposant `a lepoque que de ressources de calcul limitees.
DES chiffre un message par bloc de 64 bits `a laide dune cle de 56 bits. Les
operations mathematiques utilisees par lalgorithme sont principalement de la
permutation, des operations arithmetiques non-complexes (telles que XOR) et
des substitutions de sequences binaires.
Ces proprietes (blocs de taille reduite, operations arithmetiques simples)
font de DES un algorithme adapte aux syst`emes embarques de par leur aspect deterministe : le temps de chiffrement/dechiffrement peut etre facilement
deduit de la taille de la donnee (nombre de blocs et diterations requis pour
chiffrer une donnee). Par consequent, lingenieur peut calculer le co
ut dutilisation du protocole (quel est le nombre de calculs necessaires pour chiffrer
une donnee).
Il est `
a noter que cet algorithme est vulnerable `a diverses attaques ou
techniques de cryptanalyse [52]. Il remet donc en cause la confidentialite des
donnees chiffrees. Des alternatives (comme le 3-DES [28]) ont ete proposees
afin de pallier ce probl`eme.
Toutefois, DES reste utilise de nos jours et constitue un bon exemple dalgorithme de chiffrement simple et deterministe.
Blowfish
Blowfish [102] est un algorithme de chiffrement concu en 1993 par Bruce
Schneier. Lobjectif premier etait de proposer une alternative viable `a DES,
alors critique pour ses vulnerabilites. Il presente lavantage detre libre, publiquement disponible et surtout, de ne jamais avoir ete casse par des techniques
de cryptanalyse.
Tout comme DES, cet algorithme chiffre les donnees par blocs de 64 bits.
Les cles de chiffrement/dechiffrement ont une taille variable, de 32 `a 448 bits.
Il repose sur des substitutions et lusage de fonctions mathematiques simples
(tels que XOR ou modulo). Cet algorithme est, tout comme DES, deterministe
dans le temps de calcul necessaire au chiffrement des donnees. Enfin, il est peu
39
Chapitre 2. Problematique
consommateur de ressources, propriete particuli`erement interessante dans le
contexte des syst`emes embarques.
Tout comme DES, Blowfish est un protocole tr`es utilise. A titre indicatif,
son auteur donne une liste [101] des produits (commerciaux ou non) lutilisant.
Algorithmes asym
etriques
Donne en "clair"
Donne en "clair"
Chiffrement
Dchiffrement
Donne chiffre
Cl prive
Cl publique
A linverse du chiffrement symetrique, les techniques de chiffrement asymetrique dissocient la cle de chiffrement de la cle de dechiffrement. La cle utilisee
pour chiffrer les donnees est appelee cle publique . Elle est disponible `a
toute entite souhaitant envoyer un message `a celui detenant la cle privee
, dont lutilite est de decrypter le message.
La figure 2.7 illustre lutilisation dun protocole de chiffrement asymetrique : les donnees sont chiffrees `a laide de la cle publique, puis dechiffrees
par la cle privee.
2.1.4
Synth`
ese des probl`
emes soulev
es
Chapitre 2. Problematique
Cependant, de par leurs caracteristiques, certains protocoles peuvent
ne pas convenir dans le contexte des syst`emes critiques au vu de leur
manque de determinisme ou de consommation de ressources trop importante.
Afin dapporter une plus grande coherence dans lapport de la securite du
syst`eme, ces approches detre connectees entre elles afin dassurer la securite
au sein des specifications (verification dune politique de securite, garantie de
lisolation, etc.), et `
a lexecution du syst`eme (chiffrement de donnees, plateforme assurant lisolation des niveaux de securite).
2.2
Approches de s
uret
e
2.2.1
Lequipe de recherche High Integrity Systems Engineering Group de luniversite de York (Angleterre) a effectue de nombreux travaux autour de lidentification des fautes et de leur propagation. Pour cela, ils utilisent une representation du syst`eme dediee `
a la specification des fautes et leur propagation [113, 72, 87].
Cette presentation introduit le formalisme FTPC (Failure Propagation
and Transformation Calculus [113]) qui sappuie sur le format Real-Time Networks [88] pour decrire les differents aspects du syst`eme. Les composants representent des elements materiels (capteurs, peripheriques) et les connections
modelisent les communications entre ces elements.
Plusieurs types de connections sont possibles : canal devenement, regroupement de communication, etc. Une connection peut etre interpretee comme
un composant independant, definissant alors ses propres erreurs[113].
Le concepteur decrit ensuite les erreurs pouvant survenir dans le syst`eme.
Pour cela, il annote les composants en decrivant chaque erreur quil peut contenir. Enfin, il specifie les interactions potentielles et propagations de ces fautes.
Une liste derreurs predefinie est par ailleurs disponible [72], comme :
value : erreur de valeur
late/early : erreur de timing, ev`enement ou valeur recus ou trop tard
ou trop t
ot.
omission/comission : le service nest pas rendu ou est rendu alors quil
nest pas demande.
La figure 2.8 illustre cette approche. Cet exemple definit trois taches (T1,
T2 et T3) communiquant entre elles. Le canal entre T1 et T2 utilise une file
de messages tandis que la communication entre T2 et T3 utilise de la memoire
42
2.2. Approches de s
urete
T1
T2
T3
2.2.2
ARINC653
Chapitre 2. Problematique
Tche
Tche
Tche
Tche
Tche
Tche
Partition 1
Partition 2
Criticit A
Criticit B
Module
(isole les partitions)
2.2. Approches de s
urete
de s
urete en decrivant la procedure de recouvrement associee `a chaque faute
des couches du syst`eme.
Ces mecanismes de partitionnement et disolation des fautes sont fournis
par un noyau specifique (appele module dans la terminologie ARINC653). Il
propose un jeu de services reduits : isolation des partitions, confinement des
communications inter-partitions et detection/recouvrement derreurs. Il a pour
but detre petit et potentiellement certifiable et/ou verifiable formellement.
Ordonnancement hi
erarchique
Ordonnancement
de niveau 0
(partitions)
Ordonnancement
de niveau 1
(tches)
Un syst`eme dexploitation ARINC653 utilise une politique dordonnancement hierarchique [74] (illustree dans la figure 2.10) `a deux niveaux :
1. ordonnancement des partitions par le noyau. Le noyau execute cycliquement chaque partition pendant un temps fixe, predefini `a la configuration. Cest ce premier niveau dordonnancement qui garantit lisolation
temporelle entre partitions. Il est represente par le niveau 0 dans la figure
2.10.
2. ordonnancement des taches dans les partitions. Ce second niveau dordonnancement est specifique `a chaque partition. Lalgorithme peut donc
etre different pour chacune delle : une partition peut ordonnancer ses
t
aches en utilisant lalgorithme Rate Monotonic Scheduling [66] alors
quune autre utilisera un algorithme Round Robin comme le montre
lexemple de la figure 2.10.
Ordonnancement
RMS
Ordonnancement
RMS
Ordonnancement
Round-Robin
Partition 1
Partition 2
Ordonnancement
Round-Robin
Partition 1
Partition 2
10 ms
Services de communication
Le standard ARINC653 definit un service de communication pour lechange
de donnees `
a linterieur (intra-partition) et `a lexterieur (extra-partition) des
partitions.
Les communications intra-partition ne sont soumises `a aucun controle du
module ARINC653 et sont sous lautorite de lenvironnement dexecution de
la partition. Celui-ci est donc charge dassurer le bon etablissement de la communication et du contr
ole de ses ressources associees (tampons demission/reception, verrous, etc.).
45
Chapitre 2. Problematique
A linverse, les communications inter-partitions sont predefinies lors de la
configuration du module. Celui-ci supervise leur etablissement et verifie que
seules les partitions autorisees peuvent etablir des canaux de communication.
Ce contr
ole evite ainsi tout dysfonctionnement d
u `a une erreur de communication inter-partitions, celle-ci pouvant avoir un impact sur des partitions evaluees `
a differents niveaux de criticite. Par exemple, une partition peu
critique envoyant une quantite importante de messages `a une partition critique peut la saturer et la rendre indisponible. Si ce service (communications
inter-partitions contr
olees par le noyau) a un objectif de s
urete dans le cadre
dARINC653, il constitue un element cle de la securite pour MILS. Ainsi, ce
meme service serait donc pertinent au sein dune plate-forme commune assurant s
urete et securite.
Exemple darchitecture ARINC653
Partition 1
Partition 2
Criticality A
Criticality B
Noyau partitionn
(isolation des partitions)
Noeud ARINC653
2.2. Approches de s
urete
Cependant, le choix dimplantation est determinant sur la s
urete de fonctionnement et une faute au sein dun pilote peut avoir des repercutions importantes sur les proprietes critiques du syst`eme (comme lisolation temporelle
ou spatiale) : implante dans le noyau, le pilote peut alors contenir une erreur
et modifier le contenu ou consommer le temps dexecution de partitions de
haute criticite. Par exemple, il peut executer une boucle infinie qui impliquera
la non-execution dune partition. En revanche, si le pilote est implante comme
une partition applicative, le partage du peripherique est alors plus difficile et
il est necessaire de creer des interfaces de communication avec le noyau pour
lexecution de quelques fonctions privilegiees.
Le tableau 2.1 synthetise les differents avantages et inconvenients de chaque
choix dimplantation. Limplantation des pilotes au sein des partitions permet
de contraindre le pilote `
a lisolation spatiale et temporelle. De plus, une erreur dans limplantation du pilote naura pas dimpact direct sur les autres
partitions. Toutefois, cette methode dimplantation demande `a ce que des services dedies soient introduits afin que la partition communique avec le materiel
(operations dinput/output executees uniquement dans le mode privilegie du
processeur). A linverse, limplantation dans le noyau est plus simple, puisque
le developpeur peut directement communiquer avec les couches materielles.
Toutefois, le pilote aura acc`es `a toute la memoire du syst`eme et pourra perturber son fonctionnement si bien quune erreur impactera les services les plus
critiques du syst`eme.
Meme la methode dimplantation des pilotes de peripheriques est laissee
`a la discretion du concepteur de la plate-forme, il semble approprie que ces
derniers soient confines dans des partitions [69], afin de garantir au maximum
les services de s
urete fournis par le module.
Pilote
dans
une
partition
Pilote dans
le noyau
Avantages
Isolation des fautes du
pilote
Acc`es plus rapide
si utilise exclusivement
par une partition
Reduction des degats
possible causes par une
partition
Facilite dimplantation
Facilite de partage du
peripherique entre partitions
Inconv
enients
Interface specifique
avec le noyau
Implantation plus difficile
Table 2.1 Avantages et inconvenients de limplantation dun pilote de peripherique dans une partition ou dans le noyau
47
Chapitre 2. Problematique
D
eploiement de syst`
emes ARINC653
Le standard ARINC653 propose une methode dediee pour la configuration
et le deploiement de syst`emes partitionnes. Elle consiste `a allouer les ressources
necessaires pour chaque entite du syst`eme et `a apporter une coherence dans
le nommage du syst`eme reparti (identification des nuds, nommage des ports
de communication, etc.).
Il est donc necessaire que chaque nud ait connaissance des besoins de ses
partitions (consommation memoire, ordonnancement, communication intra et
inter-partitions) et des donnees didentification des autres nuds/partitions
(liens potentiels entre partitions de nuds distincts, etc.).
Dans ce but, le standard ARINC653 introduit un fichier de description
de larchitecture pour la description des ressources et des communications du
syst`eme. Ce fichier, ecrit en format XML, specifie :
le nombre de nuds de lapplication.
les partitions de chaque module avec leurs exigences (taille memoire
requise, etc.).
les connections entre partitions.
En utilisant ce fichier XML, lintegrateur gen`ere le code de configuration de
chaque nud de lapplication repartie. Cependant, cette etape de generation
de code se limite `
a la creation de code de configuration et ne permet pas de
generer le code correspondant aux aspects applicatifs du syst`eme.
Le cycle de developpement complet quimplique cette methode de configuration et de deploiement est illustre dans la figure 2.12. Au cours de ce cycle,
lutilisateur decrit larchitecture de son syst`eme (fichier XML) et fournit le
code applicatif des partitions (premi`ere etape de la figure 2.12). Le code de
configuration du module est alors automatiquement cree `a partir de la description XML fournie (etape 2). Ce code de configuration est ensuite integre
avec les partitions et les services du noyau pour creer limplantation du syst`eme (etape 3). Cette operation est repetee pour chaque nud de lapplication
repartie.
V
erification darchitectures ARINC653
Le standard ARINC653 ne propose pas doutil danalyse et de validation
de larchitecture. Cela limite les possibilites de validation avant implantation
alors que, comme discute en introduction (section 1.3), cest precisement lors
de la specification que les erreurs sont introduites.
Cependant, il est toutefois possible de sappuyer sur le fichier de deploiement XML pour realiser quelques validations. Meme si ce fichier ne constitue
pas une description compl`ete de larchitecture, il permet deffectuer plusieurs
validations : des outils comme CARTS [40] utilisent un formalisme proche de
ce format pour verifier lordonnancement des taches au sein des partitions.
2.2.3
Synth`
ese des probl`
emes soulev
es
2.2. Approches de s
urete
1
crit
manuellement
Description
architecture
(fichier XML)
Gnrateur de code
XML vers C/Ada
2
Code partitions
Partition 3
Partition 2
Intgration
Code de configuration
du noyau
Partition 1
Noyau
Systme partitionn
complet
Figure 2.12 Processus de developpement dune application ARINC653
`a la s
urete de fonctionnement du syst`eme et agissent `a differents niveaux du
cycle de conception dun syst`eme.
Lapproche de detection et danalyse des fautes son propre formalisme et
necessite donc de traduire les specifications du syst`eme avant de proceder `a
son analyse. Il ne propose quune methode de detection derreurs suite `a des
echanges de donnees mais ne definit aucun mecanisme quant `a lexecution du
syst`eme ni les politiques associees au recouvrement des erreurs.
A linverse, ARINC653 definit une plate-forme dexecution garantissant
la s
urete de fonctionnement entre les composants contenus dans le syst`eme.
Cependant, ce dernier ne sappuie sur aucune analyse de larchitecture et ne
permet pas de detecter les erreurs au cours de la specification du syst`eme (le
formalisme XML est davantage destine `a des fins de generation de configuration qu`
a un but danalyse des aspects s
urete).
Afin de pouvoir representer et valider les aspects s
urete dun syst`eme (premier objectif de nos travaux, section 1.4), il est donc necessaire dunifier ces
approches par :
une methode de representation commune des syst`emes s
urs (avec leurs
services disolation tels ceux definis dans ARINC653).
une utilisation des specifications pour la validation de la s
urete et la
detection de fautes potentielles.
49
Chapitre 2. Problematique
2.3
Cette section presente plusieurs standards et methodes de conception utilisees dans le contexte des syst`emes critiques : DO178B, les Crit`eres Communs
et les techniques danalyse de code. Nous donnons un apercu des niveaux dassurance `
a fournir pour la construction et la certification de syst`emes critiques.
Nos travaux etant orientes vers les syst`emes avioniques, nous presenterons
le standard DO178B dans ce domaine. La description des Crit`eres Communs
donne un apercu des contraintes liees `a la securite tandis que la presentation
des techniques danalyse de code explicitent les technologies actuelles permettant de verifier plusieurs caracteristiques de limplantation.
2.3.1
La notion de niveau de s
uret
e
Au sein des standards de certification, la notion de niveau de s
urete (Safety
Integrity Level - SIL) est centrale. Cette notion specifie le niveau de criticite
dun composant ou dune fonction. De la valeur de cette propriete (critique, tr`es
critique, etc.) depend les contraintes qui doivent etre satisfaites. Les methodes
et contraintes imposees au developpement du syst`eme dependront donc de son
SIL.
Dans la terminologie du standard DO178B, cette notion est appelee DAL
Development Assurance Level ou Design Assurance Level. Les composants logiciels ou materiels sont qualifies par rapport `a un niveau de DAL, et garantissent plusieurs contraintes (analyse des risques, validation, verification
formelle, etc.) en fonction du niveau quil utilisent.
Plusieurs approches/methodes doivent etre utilisees conjointement pour
qualifier un produit `
a un certain niveau dassurance. La liste suivante (donnee
`a titre indicatif et incompl`ete) donne un apercu des contraintes pouvant etre
requises :
verification formelle
validation de mod`eles
analyse des risques et de leur propagation
relecture manuelle du code (audit)
analyse de couverture du code
analyse statique du code
Ces techniques ont pour objectif daccrotre la confiance dans le logiciel
en detectant les potentiels vecteurs derreurs lors du developpement de syst`eme. Une metrique dediee permet de caracteriser la frequence de survenue
des fautes : le MTBF Mean Time Between Failures. Plus ce dernier est important, plus faibles sont les chances quune faute perturbe le fonctionnement du
syst`eme. Il faut donc maximiser le MTBF afin de sassurer que la probabilite
de survenue dune erreur soit la plus faible possible. A titre dexemple, les
methodes actuelles de mesure parviennent `a evaluer des taux entre 103 et
104 erreur par heure de fonctionnement [71].
Differentes methodes [107, 106, 70, 8] evaluent le MTBF. Cependant, cette
50
2.3.2
Les Crit`
eres Communs (Orange Book)
Chapitre 2. Problematique
DAL
Cons
equences
dune faute
Aucune
consequence
Mineure
Majeure
Serieuse (morts
potentiels)
Catastrophique
(crash de lavion)
Efforts de certification
Aucun effort de certification
Assurance qualite (suivi des modifications du
logiciel)
Documentation
Tracabilite des specifications de haut niveau
du logiciel, des specifications du syst`eme et des
verifications
Verification formelle des specifications (optionnelle)
Conformites aux exigence du DAL de niveau D
Tracabilite des specifications jusquau code
source
Couverture structurelle du code (toutes les instructions sont executees - voir section 2.3.3).
Conformite aux standards industriels (e.g.
ARINC653)
EAL2
EAL3
EAL4
EAL5
EAL6
EAL7
Exigences
test structurel du syst`eme : lingenieur le consid`ere comme
une bote noire (il na pas connaissance des mecanismes
internes) et le soumet `a un ensemble de valeurs dentrees
pour tester son bon fonctionnement.
test fonctionnel du syst`eme : lingenieur le consid`ere comme
une bote blanche (il a connaissance du fonctionnement
interne) et realise plusieurs tests pour verifier son bon fonctionnement (test de defaillance, etc.).
teste et verifie methodiquement : utilisation dune suite de
tests pour valider les mecanismes de securite, realisation
dune documentation de tests.
concu, teste et verifie methodiquement, meme exigences que
le niveau EAL3, le developpement est egalement documente.
valide et teste. Pour cela, le concepteur et lingenieur certifiant le syst`eme utilisent une representation du syst`eme pour
lanalyser `
a laide doutils dedies.
conception verifiee de facon semi-formelle et syst`eme teste.
Meme niveau dexigence que le niveau precedent. Ici, le niveau EAL5 requiert que le test et/ou la certification soient
egalement realises `a partir dune representation/modelisation du syst`eme.
conception verifiee de facon formelle et syst`eme teste. Meme
niveau que precedemment sauf que la representation utilisee
est formelle.
Table 2.3 Definition des contraintes pour les niveaux devaluation des Crit`eres Communs
53
Chapitre 2. Problematique
Niveau EALn+
A noter toutefois que certaines evaluations peuvent specifier que le syst`eme
remplit davantage de contraintes que son niveau devaluation, mais pas assez
pour le niveau superieur. Par exemple, un produit qui satisfait davantage de
contraintes que le niveau EAL5 mais pas toutes celles dEAL6 recevra alors
levaluation EAL5+.
Critiques
Cependant, le processus de certification propose par les Crit`eres Communs
est vivement critique [62]. Il lui est reproche de se focaliser sur les aspects
documentation aux depends de la verification des mecanismes implantes. En
particulier, seul le niveau EAL7 necessite une revue du code de lapplication.
Et meme si les niveaux inferieurs requi`erent une assurance des mecanismes de
securite, peu de contraintes sont imposees sur limplantation du syst`eme.
[62] met en avant le fait que seules les evaluations menees au niveau EAL5
valident une qualite des mecanismes de securite. Cette critique remet en cause
le veritable but des Crit`eres Communs et les garanties que ces contraintes
apportent quant `
a lassurance de securite.
Enfin, le co
ut du processus de certification est mis en avant. Celui-ci est
extremement co
uteux dun point de vue pecuniaire et temporel. Certains syst`emes sont dej`
a consideres comme obsol`etes avant meme la fin du processus
de certification, remettant en cause son utilite.
Profils de protection et syst`
emes partitionn
es
Les Crit`eres Communs proposent un profil de protection pour la validation
darchitectures partitionnees [67, 49]. Il decrit les exigences de securite devant
etre respectees par un syst`eme partitionne en vue de sa certification. Son
existence montre linteret des industriels pour ce type darchitecture : ce profil
est le fruit dun travail de la National Security Agency (NSA).
De son c
ote, la communaute MILS redige egalement dun profil de protection dedie `
a la validation et limplantation de syst`eme respectant les contraintes
de cette approche. Ce profil rassemble egalement les personnes impliquees dans
le profil precedemment cite [67, 49] et decrit les aspects specifiques `a lapproche
MILS. Il devrait etre publie prochainement [97].
Transparence de l
evaluation
Le processus devaluation et de certification se veut transparent : les profils
de protection et les rapports de certification sont disponibles en ligne. Il est
donc possible de savoir comment atteindre un certain niveau dassurance de securite (technologies et approches utilisees, etc.) et de connatre les mecanismes
de securite utilises par les syst`emes soumis au processus de certification.
Exemples de certifications EAL
De nombreux produits de notre quotidien ont ete soumis `a levaluation des
Crit`eres Communs : Microsoft Windows Vista est evalue au niveau EAL1.
54
2.3.3
Chapitre 2. Problematique
domaines critiques tels lavionique necessitaient que le code des applications
soit evalue en terme de couverture. Cependant, les techniques traditionnelles
de production de code ne sont pas appropriees pour creer du code fiable et
exempt derreur. A linverse, il a ete souleve (`a travers lexemple du Space
Shuttle) quune analyse et verification independante du code permettait de
reduire le nombre derreurs. Il est donc necessaire de realiser plusieurs analyses
afin de detecter les erreurs au sein du code et assurer sa qualite.
Nous presentons maintenant les differentes approches danalyse de code.
Lanalyse statique de code
Lanalyse statique de code est un ensemble de techniques qui sattache `a
detecter les erreurs potentielles dans un programme sans lexecuter. Le but
de ces techniques est danalyser les instructions et le flux des donnees pour
essayer de trouver de fautes potentielles (par exemple, le debordement dun
type). Lavantage reside dans la capacite `a deceler des erreurs sans `a avoir
executer le programme.
Plusieurs outils aussi bien libres que commerciaux, sont disponibles. Une
liste des outils utilises est disponible sur [3] et dans [121].
Dans la communaute Francaise, le projet Frama-C [24], initie par le Commissariat `
a lEnergie Atomique (CEA) et lInstitut National de Recherche
en Informatique et en Automatique (INRIA), verifie plusieurs proprietes du
code (valeur dune variable, etc.). Il divise un programme en plusieurs sousprogrammes independants, facilitant ainsi lanalyse de lapplication globale.
De nombreux autres outils en provenance du monde commercial (PolySpace) ou academique (E-SETHEO [114]) sont disponibles [121]. En fonction
des approches, plusieurs langages (C, Ada, etc.) sont analyses afin de detecter
les erreurs de securite (depassement de tampon) que de s
urete (non determinisme du code).
La g
en
eration de code
La generation de code consiste `a produire automatiquement limplantation
dun syst`eme `
a partir de ses specifications. Ce concept nest pas nouveau et
est dej`
a utilise dans de nombreux produits commerciaux comme Matlab/Simulink [90] ou encore SCADE (Esterel ou Lustre [56]).
Ces approches suppriment le facteur principal de creation derreur : le
programmeur. Le formalisme source (Matlab/Simulink [90], Lustre [56]) fait
abstraction des notions complexes des langages de programmation et cache
les difficultes dimplantation. Le processus de generation transpose alors ces
constructions abstraites en une implantation dans le langage cible (C, Ada,
etc.). Suivant lexpressivite du formalisme source, le generateur produit un executable complet ou un squelette : des langages avec une semantique forte (tel
Lustre [56]) permettent de generer limplantation integrale dun programme
alors que des approches utilisant UML [65] se limiteront `a la production de
squelettes (semantique faible ne comprenant pas toutes les informations necessaires `
a la generation compl`ete du syst`eme).
56
Chapitre 2. Problematique
que le syst`eme ne contient pas de code non teste et potentiellement dangereux.
La norme DO178B impose quune analyse de couverture de code soit menee
afin de certifier un syst`eme. Les contraintes de cette analyse dependent du
niveau de certification (DAL) recherche.
Il existe trois differents niveaux de couverture du code :
1. statement Coverage (SC) ou couverture des instructions : assure que
toutes les instructions sont executees au moins une fois. Ce niveau de
couverture est requis pour la qualification dun composant au DAL C de
la norme DO178B.
2. decision Coverage (DC) ou couverture des decisions : assure que toutes
les instructions sont executees et que toutes les conditions sont evaluees
`a vrai et faux. Ce niveau de couverture est requis pour la qualification
dun composant au DAL B de la norme DO178B.
3. Modified Condition/Decision Coverage (MC/DC) : assure que chaque
instruction est executee et que chaque branche de chaque condition est
evaluee au moins une fois avec une valeur differente. Ce type de couverture est explicite dans [63, 60]. Ce niveau de couverture est requis pour
la qualification dun composant au DAL A de la norme DO178B.
1
2
3
4
5
6
p r o c e d u r e P (A , B , C : B o o l e a n ) i s
begin
i f (A and t h e n B) o r e l s e C t h e n
Do Something ;
end i f ;
end P ;
2.3.4
Synth`
ese des probl`
emes soulev
es
Cette section a mis en lumi`ere la problematique de conception des syst`emes critiques : ces derniers doivent etre construits suivant des methodes
rigoureuses, precises et verifier plusieurs contraintes importantes (couverture
de code, verification de limplantation par rapport aux specifications, etc.).
Cependant, le respect des contraintes associees `a ces methodes de developpement sont extremement co
uteuses en termes de ressources (financi`eres,
temporelles, etc.) et difficiles `a atteindre (manque doutillage, faible integration au cycle de developpement, etc.). Le recours `a differents formalismes de
specifications pour valider le syst`eme (associe `a la verification de la conformite
de ces representations), la verification du code produit manuellement avec les
specifications ou lanalyse de couverture de code sont autant delements qui
sajoutent et rendent ce processus co
uteux et lourd `a supporter.
Lapproche presentee au cours de ce manuscrit sattachant `a proposer une
methode de conception pour les syst`emes critiques, elle doit integrer des techniques reduisant les erreurs et assurant la conformite avec les standards de
certification en :
1. validant le formalisme utilise comme langage source par le generateur
de code (objectif 1, section 1.4). Ceci assure alors que le generateur luimeme nintroduira pas derreur.
2. generant automatiquement lapplication afin de supprimer toute erreur
introduite par la production manuelle de code (objectif 2, cf 1.4).
3. analysant automatiquement lapplication (test de couverture, etc.), assurant sa conformite aux standards de certification (objectif 3, section
1.4) et apportant des garanties quant `a la qualite de son code.
Un tel processus permet dameliorer la fiabilite du developpement et limite
lintroduction derreurs `
a chacune de ces etapes.
59
Chapitre 2. Problematique
2.4
2.4.1
S
ecurit
e
MILS
Formalisme de repr
esentation
Lapproche MILS represente larchitecture et introduit une abstraction de
ces concepts afin dassurer lisolation des niveaux de securite.
Cependant, le formalisme de representation est semantiquement pauvre,
lexpressivite est insuffisante pour le developpement dapplications critiques.
En particulier, il serait approprie de :
1. specifier le lien entre les composants et les elements (logiciels et materiels) de larchitecture qui les executent. Cette faculte permettrait `a une
meilleure analyse puisque lassociation du logiciel et du materiel peut
avoir un impact sur la securite du syst`eme.
2. pouvoir annoter les composants dans le but de specifier les autres exigences que pourrait avoir le concepteur dapplications (ajout des aspects
de performance ou de s
urete).
Dans un cycle traditionnel de developpement, lajout de ces informations
est realise par lutilisation dannotations pour analyser les differents aspects du
syst`eme. Cependant, il est important deviter la multiplication des formats de
representations ; la transposition dune representation `a une autre est co
uteuse
et source derreurs (precision de la semantique de chaque langage, erreur de
transformation des specifications, etc.).
Plate-forme dex
ecution
Afin de garantir leur isolation, MILS confine les niveaux de securite dans
des partitions. Lors de lexecution du syst`eme, MILS definit une plate-forme
dexecution securisee qui isole les partitions temporellement et spatialement.
Les communications entre partitions sont analysees `a lexecution afin dassurer
que seules les partitions autorisees communiquent.
Toutefois, le manque de precision dans la description de la plate-forme
MILS limite son utilisation. La relation entre les specifications de haut-niveau
et les services de la plate-forme dexecution ne sont pas explicites, laissant
alors le developpeur seul responsable des choix quant `a la transformation des
specifications vers du code executable. De plus, les services devant etre fournis par la plate-forme dexecution ne sont pas clairement definis (publication
dune API, guide de lutilisateur/developpeur, etc.) et toujours en cours de
standardisation au sein dun profil de protection [97].
Cependant, `
a partir de la description globale de larchitecture, il est evident
que les concepts disolation temporelle et spatiale sont semblables `a ceux introduits par le standard ARINC653 (presente dans la section 2.2.2). Pourtant,
labsence de definition formelle des services, de relation entre labstraction du
syst`eme et sa plate-forme dexecution font quil est :
60
Politiques de s
ecurit
e
Les politiques de securite (telles Bell-Lapadula, Biba, Chineese Wall) posent
plusieurs probl`emes quant a` leur utilisation.
En premier lieu, chaque mod`ele apporte des solutions specifiques, tr`es
contraignantes et il est impossible de les integrer ensemble (par exemple, Biba
et Bell-Lapadula ne sont pas integrables, leurs r`egles etant totalement opposees
comme le montrent les figures 2.2 et 2.3).
De plus, ces mod`eles agissent `a un niveau abstrait et ne proposent pas de
representation commune des composants de securite. Ces approches m`enent `a
une premi`ere description de la politique de securite dun syst`eme et peuvent
constituer une premi`ere phase de specification de la securite. Mais cela ne
donne aucunement le decoupage logique de lapplication avec ses differents
composants.
Enfin, le deploiement de ces mod`eles nest pas defini et il nest pas dit
quels mecanismes de securite doivent etre mis en uvre pour respecter ces politiques de securite. Toutes ces approches ne donnent aucune indication quant
aux services de securite qui doivent etre implantes au sein dune plate-forme
conforme aux r`egles de MILS.
Algorithmes de chiffrement
Les algorithmes de chiffrement constituent des mecanismes de protection
de linformation puissants et doivent etre davantage lies `a la specification du
syst`eme. En particulier, un algorithme ou une cle de chiffrement differents
seront utilises pour proteger les donnees dun niveau de securite specifique.
D`es lors, il devient interessant de specifier ses algorithmes et danalyser les
interactions possibles entre niveaux de securite.
Il serait donc necessaire, au niveau de la specification, de connecter ces algorithmes et leur specificites de configuration (fonctions et cles de chiffrement
utilisees, etc.) avec les contraintes de la specification (niveaux de securite). Ceci
permettrait de les analyser plus rapidement et de detecter les erreurs potentielles quant `
a leur utilisation (erreur de configuration, absence de chiffrement
pour les niveaux de securite importants, etc.).
Dans le contexte des syst`emes critiques, il serait pertinent dassocier lutilisation de ces mecanismes de securite aux niveaux de securite du syst`eme
(confidentiel, secret, etc.). Cette nouvelle information specifierait alors les niveaux de securite utilises par chaque composant dune architecture MILS, et
permettrait donc de valider la bonne isolation des niveaux de securite.
61
Chapitre 2. Problematique
2.4.2
S
uret
e de fonctionnement
2.4.3
M
ethodes de conception
Chapitre 2. Problematique
G
en
eration de code
La generation de code apporte une avancee significative dans la qualite du
syst`eme cree. Cependant, le code genere doit toujours etre soumis `a un effort
de certification, `
a moins que le generateur lui-meme le soit.
Sauf cas particuliers de generateurs tr`es optimises, ces outils gen`erent la
plupart du temps de nombreuses fonctionnalites inutiles, alourdissant alors
lempreinte memoire du syst`eme genere et minimisant le taux dinstructions
effectivement executees.
Couverture de code
La couverture de code consiste `
a analyser lexecution du syst`eme et `a assurer
lexecution de chaque instruction lors de tests. Cette approche est toutefois
tr`es contraignante et nest utilisable quavec un sous-ensemble des langages de
programmation (ex : Ada ou sous-ensemble de C). Cependant, dans le cadre
des syst`emes critiques, cette contrainte na que peu dimpact car ces deux
langages sont majoritairement utilises.
De plus, meme si elle se rev`ele optimale, la couverture de code ne peut
assurer seule le bon fonctionnement dun syst`eme. En particulier, dautres
fautes peuvent survenir pendant lexecution (par exemple : reception dune
valeur erronee, depassement de tampon). Ces erreurs ne sont pas analysees
par ces techniques.
Enfin, il est difficile, voire impossible, dassurer la couverture de lintegralite dun syst`eme. En particulier, certains services peuvent netre jamais
utilises alors quils ont une importance (par exemple, les exceptions processeur). Certaines parties du code devront donc etre analysees separement par
lingenieur souhaitant certifier le syst`eme.
Ces arguments montrent que, dans notre contexte de securite/s
urete, la
couverture de code est un outil necessaire mais pas suffisant. Il apporte une
garantie sur la fiabilite du code, mais doit etre couple `a dautres approches
danalyse. En particulier, la validation de larchitecture du syst`eme (afin de
detecter les erreurs pouvant survenir `a lexecution), ainsi que la generation de
code (assurant la conformite de limplantation avec la specification).
2.4.4
Synth`
ese
64
Certification de
limplantation
(objectif 3)
++
G
en
eration
automatique et
plate-forme s
ecuris
ee
(objectif 2)
+
+
++
++
++
++
+
+
++
++
++
++
Synth`
ese de ce chapitre
Ce chapitre a dress
e un aper
cu des m
ethodes destin
ees `
a
assurer s
ecurit
e et s
uret
e de fonctionnement. Lobjectif de
cette th`ese etant dassurer ces proprietes de bout en bout, ce chapitre a presente des approches qui montrent leur garantie au cours
du cycle de vie du syst`eme critique : specification (representation des
exigences et mecanismes de securite/s
urete) et limplantation (services disolation des niveaux de securite). Il a egalement introduit les
contraintes associees `
a la construction de syst`emes critiques (generation/couverture de code, etc.).
Il a
et
e soulign
e quil est difficile dassurer les m
ecanismes de
s
ecurit
e et de s
uret
e . Ces aspects doivent etre specifies et valides
(objectif 1, section 1.4) mais aussi correctement implantes (objectif
2, section 1.4). Cependant, la verification de ces deux aspects au
sein du meme syst`eme reste problematique, les techniques actuelles
utilisant des formalismes specifiques et co
uteux `a integrer. Il est donc
necessaire de definir une methode de representation unique afin de
saffranchir du co
ut de transformation des specifications.
Ces exigences doivent
egalement satisfaire les contraintes
inh
erentes au d
eveloppement de syst`
emes critiques. Ceuxci imposent de nombreuses r`egles contraignantes en termes de validation et de certification (assurance des mecanismes dimplantation,
analyse de couverture de code) se revelant co
uteuses et difficiles `a satisfaire (manque doutils, absence dautomatisation, etc.). Il est donc
necessaire de les integrer dans un processus de developpement global
et proposer des methodes et outils pertinents automatisant ces taches
de validation/certification (objectif 3, section 1.4).
65
Chapitre 2. Problematique
66
Chapitre 3
Approche propos
ee
Sommaire du chapitre
3.1
67
Rappels
Le precedent chapitre a presente la problematique en listant les solutions existantes suivant trois aspects :
1. s
ecurit
e : approches visant `a assurer la mise en place dune
politique de securite dans les specifications et `a definir les mecanismes necessaires `
a la protection des donnees dans limplantation.
2. s
uret
e : services et approches pour assurer son respect lors de
la conception du syst`eme (detection des erreurs, procedures de
recouvrement).
3. standards de d
eveloppement : contraintes imposees pour le
developpement de syst`emes critiques.
Le precedent chapitre a egalement enumere les limites des travaux
existants, mettant en lumi`ere les aspects pouvant etre ameliores par
notre approche.
Objectifs du chapitre
Ce chapitre degage les elements pertinents des solutions etudiees et
presente ceux qui sont repris et/ou ameliores pour constituer notre
approche. Trois principaux manques sont identifies et constituent une
base de travail pour ameliorer lassurance de securite/s
urete dans la
construction de syst`emes critiques.
Lapproche est ensuite detaillee en reprenant les objectifs identifies
en introduction (section 1.4) : specification et validation de larchitecture, implantation et certification. Pour chaque objectif, les solutions
pertinentes sont referencees.
La definition de notre approche met en lumi`ere le besoin de representation unique de larchitecture avec ses contraintes de securite et de
s
urete pour diriger lensemble du processus de developpement. A ce
titre, ce chapitre se termine par une section dediee `a la presentation
des langages de specification existants et detaille les motivations du
choix du langage AADL.
68
3.1
Cette section presente les solutions que nous avons identifiees comme pertinentes. Ces derni`eres sont donc integrees dans le cadre de nos travaux. Nous
rappelons leurs limites et les possibles ameliorations qui seront realisees.
3.1.1
Architecture partitionn
ee pour la s
ecurit
e ou la s
uret
e
Les paragraphes suivants resument lutilite de lisolation fournie par larchitecture partitionnee et decrivent les manques que nous avons identifie pour
une assurance commune de securite et de s
urete.
Pertinence et ad
equation de lisolation pour la s
ecurit
e/s
uret
e
Larchitecture partitionnee est utilisee soit dans un contexte de securite
(MILS, section 2.1.1) soit dans un contexte de s
urete (ARINC653, section
2.2.2).
Dans ces deux cas, les composants du syst`eme sont confines dans des partitions soumises `
a lisolation temporelle et spatiale. Les raisons de cette isolation
dependent de la contrainte (s
urete, securite) assuree par le syst`eme comme le
resume le tableau 3.1.
Type
disolation
Spatiale
Temporelle
S
ecurit
e
S
uret
e
Assurance de labsence
dimpact entre entites de
criticite differente.
Garantie dun temps dexecution fixe pour chaque
partition.
3.1.2
Repr
esentation et analyse
3.1.3
Standards et processus de d
eveloppement
Les paragraphes suivants rappellent les exigences et limportance des standards de developpement. Ils enum`erent par ailleurs leurs limites que notre
approche doit prendre en compte en vue de leur integration.
Pertinence et ad
equation
Notre etude preliminaire a mis en avant plusieurs standards referents (DO178B
et Crit`eres Communs) dans la certification des syst`emes critiques. Ces derniers
requi`erent la verification de la bonne implantation des exigences du syst`eme
et le respect de plusieurs contraintes fortes (telle la couverture de code).
Ces standards imposent un processus de d
eveloppement contraignant et rigoureux consistant `a verifier le syst`eme de bout en bout :
specifications : validation des caracteristiques pour prevenir toute erreur
dans les etapes suivantes du developpement. Comme detaille dans les
paragraphes precedents (section 3.1.2), cette etape est co
uteuse et source
derreurs.
implantation : traduction des specifications en code executable. Cette
etape est source derreur de par le caract`ere humain du processus.
certification : analyse du syst`eme et de ses caracteristiques (ordonnancabilite, couverture de code, etc.). Cette etape etant realisee manuellement
71
3.2
Pr
esentation de lapproche propos
ee
Spcifications
(1)
Validation (2)
Implantation (3)
Application
gnre
Certification (4)
3.2.1
Sp
ecification des architectures partitionn
ees et des
contraintes de s
ecurit
e/s
uret
e associ
ees
Motivations
La critique de lexistant (section 3.1.2) a mis en lumi`ere les probl`emes poses par lusage de multiples representations du syst`eme. Il est donc necessaire
de le specifier les exigences du syst`eme au moyen dun formalisme de representation commun. Celui-ci doit etre extensible afin de donner lopportunite
`a lutilisateur de specifier dautres contraintes que celles relatives `a la securite
et la s
urete (ex : ordonnancement).
73
Spcification architecture
1. Patrons de modlisation
architecture partitionne
Spcification contraintes
scurit
2. Patrons de modlisation
scurit
Spcification contraintes
sret
3. Patrons de modlisation
sret
Spcification architecture
partitionne + contraintes scurit/sret
3.2.2
Motivations
Dans notre contexte, la validation de larchitecture apparat comme un
pre-requis : elle permet de detecter les fautes au plus tot et est requise par
les standards de certification (tels DO178B ou Crit`eres Communs). Elle doit
donc etre la plus compl`ete possible et analyser autant de caracteristiques du
syst`eme que possible.
Spcifications
1. Rgles validation
architecture partitionne
2. Rgles validation
politique de scurit
Spcifications
valides
3. Rgles validation
politique de sret
R`
egles de validation propos
ees
Afin de valider le syst`eme et assurer le respect des exigences de securite
et de s
urete, des outils analysent les specifications et detectent les potentielles
erreurs de conception (figure 3.3).
Une premi`ere etape consiste `a assurer que la specification proposee par
lutilisateur respecte les patrons de modelisation proposes (premi`ere etape de
la figure 3.3). Les r`egles de validation verifient la bonne constitution du mod`ele
et la coherence des proprietes disolation spatiale et temporelle.
Dautres r`egles, specifiques `a la securite et `a la s
urete (etapes 2 et 3 de la
figure 3.3) sont appliquees. Celles dediees `a la securite (etape 2 de la figure
3.3) analysent les specifications et verifient le respect de politiques de securite
comme Bell-Lapadula, Biba ou MILS (section 2.1.2). De plus, elles assurent la
coherence de la specification des mecanismes de protection de donnees (utilisation dalgorithmes de chiffrement, coherence des param`etres de configuration
comme les cles de chiffrement, etc.).
75
3.2.3
Implantation automatique `
a partir des sp
ecifications valid
ees
Motivations
Les approches presentees precedemment (DO178B et Crit`eres Communs)
ainsi que les sections 3.1.2 et 3.1.3 ont montre le manque de lien entre les
differentes etapes du developpement. Elles ont montre que le developpement
de syst`emes critiques devait etre realise par un processus rigoureux assurant :
1. la bonne implantation des specifications,
2. labsence de code mort,
3. la predictabilite du code,
4. labsence derreur.
La composante humaine dun developpement introduisant des erreurs, de
telles contraintes ne peuvent etre satisfaites par des methodes de production
traditionnelles (sauf recours `
a de co
uteux tests et relectures).
Pour ces raisons, limplantation du syst`eme est automatiquement realisee
par un outil dedie. Ce dernier traduit les specifications du concepteur en code,
assurant ainsi la bonne traduction de ses exigences par le recours `a des patrons
de generation : ces derniers creent automatiquement le code de lapplication
en fonction des specifications du concepteur dapplication.
D
efinition dun g
en
erateur automatique de syst`
emes partitionn
es
Le processus dimplantation automatique est divise en deux parties (figure
3.4) :
1. un outil de generation de code qui analyse et transforme les specifications
en code au moyen de patrons de generation.
2. une plate-forme dexecution qui sinterface avec le code genere et fournit
les services necessaires (isolation/securite/s
urete).
76
Spcifications
Patrons gnration
sret
Patrons gnration
architecture partitionne
Code sret
Code architecture
Plate-forme
d'excution
partitionne
Intgration
Patrons gnration
scurit
Code scurit
Application gnre
3.2.4
D
efinition de la certification dans notre contexte
Le mot certification a differentes significations suivant le contexte et le
domaine dans lequel il est employe. En avionique (standard DO178B), le processus de certification implique par exemple la definition dun jeu de test et de
couverture de code pour chaque exigence. A linverse, dans le contexte spatial
77
Application gnre
Analyse de couverture
de code
Analyse d'ordonnancement
Conformit ordonnancement
application gnre/spcifications
Spcifications
Analyse comportementale
Conformit politique de
scurit et de sret
3.3
Langages de mod
elisation
Cette section presente les raisons qui nous ont amenees `a representer le
syst`eme et ses contraintes au moyen dun unique langage. Il presente les differents formalismes existants avec leurs avantages et leur limite. Puis, il motive
le choix dAADL et introduit ce langage de modelisation.
3.3.1
3.3.2
Langages existants
UML/Marte
MARTE [84] est un profil UML pour la definition des contraintes de temps
et de performances dun syst`eme. Il etend la semantique dUML et se place
comme le successeur du profil Schedulability, Performance and Time Specification (SPT [80]). Il definit un ensemble de classes pour modeliser les ressources
logicielles/materielles dun syst`eme, leurs associations et caracteristiques nonfonctionnelles.
Lutilisateur specifie son syst`eme par lintermediaire de plusieurs diagrammes
(cas dutilisation, etc.), chacun deux exprimant les caracteristiques du syst`eme.
MARTE introduit egalement trois types danalyse : lanalyse quantitative
generique (pour valider la faisabilite des proprietes non-fonctionnelles), lanalyse de performance (verification du temps de reponse, du comportement des
composants, etc.) et lanalyse dordonnancabilite (assurant alors le respect des
echeances dans le pire-cas dexecution).
Il est actuellement utilise en coordination avec plusieurs partenaires pour
valider son utilisation dans un contexte industriel [38] . Des travaux ont ete
inities afin de valider plusieurs caracteristiques comme lordonnancement en
interfacant le profil avec des outils danalyse tel Cheddar [9].
Trois probl`emes se posent dans lutilisation de MARTE :
1. les multiples diagrammes, limitent leur utilisation par des outils de generation de code. Le manque de precision dans la semantique (d
u principalement `
a lheritage dUML) du formalisme (un meme element peut
avoir plusieurs representations) rend difficile lanalyse et lexploitation
du mod`ele.
2. loutillage est encore peu fourni. Plusieurs outils supportent UML et
potentiellement MARTE, mais peu dentre eux fournissent des fonctionnalites danalyse et/ou de generation de code.
Certains outils provenant du monde UML (tels ceux supportant la validation de mod`eles `
a laide dObject Contraint Language (OCL [81])
peuvent etre utilises. Toutefois, la complexite de linteraction entre OCL
et UML rend ces approches peu pratiques.
De plus, pour etre utilises pour la production de syst`emes critiques, des
outils dedies devront etre developpes. Par exemple, en terme de generation de code, les solutions actuelles ne sont pas adaptees aux applications
temps-reel (introduction de code mort, generation de code limitee `a des
squelettes dimplantation, etc.).
3. la syntaxe du langage, la surcharge du meta-mod`ele et lheritage dUML
font de MARTE une solution `a la semantique complexe et difficile dusage.
Ces elements constituent un obstacle `a son utilisation.
80
3.3.3
3.3.4
Pr
esentation du langage AADL
AADL est un langage de modelisation darchitecture definissant les composants materiels et logiciels du syst`eme, leurs caracteristiques (nommees
proprietes) et leurs interactions (connections, associations). Nous presentons
dabord le coeur du langage et decrivons chaque type de composant.
Composants
AADL definit les composants logiciels suivants :
le composant data represente un type de donnee, un emplacement en
memoire (memoire partagee) ou une simple variable.
le composant process modelise un espace dadressage separe dans lequel
sexecutent plusieurs taches. Ce composant peut etre interprete comme
un processus UNIX.
le composant thread modelise un fil dexecution qui execute du code
applicatif. Sa semantique est similaire `a celles des threads POSIX.
le composant subprogram represente une sequence de code executable
par une t
ache (composant thread). Il peut etre une reference `a du code
traditionnel (code C ou Ada) ou `a un mod`ele applicatif (Scade, Simulink,
etc.).
AADL definit les composants materiels suivants :
le composant device modelise un peripherique (clavier, souris, etc.) ou
du materiel specifique (capteur, moteur, etc.). Il represente lelement
comme une bote noire et ne specifie pas le contenu de son implantation.
Cette specificite peut etre ajoutee par la suite `a laide dune propriete.
le composant processor represente un micro-controleur et un syst`eme
dexploitation minimal (ordonnanceur, pilotes de peripheriques, etc.). Un
processeur peut contenir des virtual processor et acceder `a un bus.
le composant virtual processor specifie un processeur virtuel : un
ordonnanceur ou une machine virtuelle. Ce composant est utilise pour
diviser un processeur physique (cas de la virtualisation ou du partitionnement) ou specifier ces particularite dimplantation (processeur contenant
plusieurs coeurs).
le composant bus fournit lacc`es entre les composants processor, device et memory. Les connections entre composants peuvent etre associees `
a un bus, decrivant ainsi la strategie de deploiement dun syst`eme
reparti.
le composant virtual bus represente une partie dun bus ou un protocole. Ce composant peut etre utilise pour segmenter un bus (specification
des proprietes de qualite de service dun bus) ou decrire les fonctions dun
protocole.
le composant memory modelise une memoire physique (disque dur,
RAM, ROM, etc.). Ces composants sont utilises pour stocker des donnees
et peuvent etre utilises par des process ou des thread.
Enfin, le langage definit egalement un dernier type de composant (appele
system), servant `
a agreger composants materiels et logiciels.
83
abstract
data
processor
virtual processor
memory
bus
virtual bus
device
subprogram
subprogram group
thread
thread group
process
Peut contenir
system, processor, virtual processor, memory, bus,
virtual bus, device, process, data, subprogram, subprogram group, abstract
data, subprogram, subprogram group, thread, thread
group, process, virtual processor, memory, bus, virtual bus, device, system, abstract
data, subprogram
virtual processor, memory, virtual bus, abstract
abstract, virtual processor, virtual bus
memory, bus, abstract
virtual bus, abstract
virtual bus, abstract
bus, virtual bus, abstract
data, abstract
subprogram, abstract
data, subprogram group, subprogram, abstract
data, subprogram group, subprogram, abstract,
thread, thread group
data, subprogram, subprogram group, thread, thread
group, abstract
Interfaces et connections
Un composant peut definir des mecanismes pour sinterfacer et echanger
des donnees avec les autres elements de larchitecture (param`etre dun sousprogramme, port de communication, etc.). La communication entre composants est alors etablie en connectant ces interfaces.
Une interface est une caracteristique visible entre les composants. Ce sont
des entites nommees de larchitecture qui permettent dechanger des donnees
ou envoyer des signaux. Lechange de donnees est realisee grace aux ports de
type donnees (data) et aux param`etres des composants subprogram. Lenvoi
et la reception de signaux se fait grace aux ports de type ev`enement (event).
Le listing 3.1 illustre lutilisation des interfaces et des connections en AADL.
Un composant process (Transmitter_Process.Impl) contient un composant
84
85
};
end C o l l e c t S a m p l e s ;
Le listing 3.2 donne un exemple de composant utilisant un langage dannexe. Ici, OCL [81] est associe au thread et definit une pre-condition sur la
valeur associee au port dentree et une post-condition sur celui de sortie.
Plusieurs langages dannexes sont dej`a disponibles et compl`etent la description dune architecture. Les plus utilises sont :
lannexe comportementale (ou Behavioral annex [51]) qui decrit le
comportement des composants.
lannexe de mod
elisation des erreurs (ou error model annex [95])
qui specifie les erreurs (et leur gestion) de chaque composant.
Propri
et
es Les proprietes AADL sont des annotations associees aux differentes entites du mod`ele. Ce sont des attributs types qui leur ajoutent une
information. Cette derni`ere peut etre reutilisee par les outils danalyse, de
validation ou de generation de code.
La plupart du temps, linformation rajoutee specifie une contrainte, une
exigence ou une caracteristique du syst`eme (par exemple : la capacite de calcul, le niveau de securite, etc.). Le standard AADL definit un ensemble de
proprietes standards , mais lutilisateur peut egalement definir ses propres
proprietes.
subprogram T r a n s m i t
features
Input
: in
p a r a m e t e r Message ;
Output : out p a r a m e t e r Message ;
properties
S o u r c e L a n g u a g e => Ada95 ;
Source Name
=> T r a n s m i t t e r . D o T r a n s m i t ;
end T r a n s m i t ;
thread implementation Transmitter Thread . Impl
calls
{ D o T r a n s m i t : subprogram T r a n s m i t ; } ;
connections
parameter I n p u t
> D o T r a n s m i t . I n p u t ;
p a r a m e t e r D o T r a n s m i t . Output > Output ;
properties
D i s p a t c h P r o t o c o l => S p o r a d i c ;
Period
=> 20 ms ;
end T r a n s m i t t e r T h r e a d . I m p l ;
3.3.5
1
2
3
4
5
6
theorem B u s e s R a t e
f o r e a c h e i n b u s s e t do
C n x S e t ( e ) := { x i n c o n n e c t i o n s e t |
is bound to (x , e )};
C o n n e c t e d D a t a S e t := { x i n d a t a s e t |
i s a c c e s s e d b y ( x , Cnx Set ) } ;
7
8
9
10
11
12
check ( g e t p r o p e r t y v a l u e
( e , A S S E R T P r o p e r t i e s : : A c c e s s B a n d w i d t h ) >=
sum ( s e t p r o p e r t y v a l u e
( C o n n e c t e d D a t a S e t , s o u r c e d a t a s i z e ) ) ) ;
end ;
Ocarina propose
egalement des fonctionnalit
es de g
en
eration de code
`
a partir de mod`
eles AADL. Capable de generer limplantation darchitectures reparties `
a partir des specifications, il sinterface avec plusieurs langages
utilises pour la construction de syst`emes critiques (tels Ada ou C ).
88
89
Synth`
ese de ce chapitre
Ce chapitre enum`ere les solutions reprises dans la constitution de
notre approche et rappelle leurs limites :
1. labsence de plate-forme dexecution commune pour la s
urete
et la securite ;
2. le manque de coherence et leparpillement des specifications
dans plusieurs documents utilisant des formalismes differents ;
3. labsence de relation entre les specifications validation validees
et limplantation ;
4. le manque dautomatisation du cycle de developpement, augmentant les co
uts (temporels, financiers) de developpement.
A partir de ces elements, nous presentons notre approche. Celle-ci
sarticule autour de quatre principaux points correspondant `a nos
objectifs initiaux (section 1.4) :
1. la repr
esentation de larchitecture (premi`ere partie de
lobjectif 1) avec ses contraintes de securite et de s
urete au
moyen dun unique langage de modelisation (AADL). Lutilisation dun seul langage permet de saffranchir de multiples
transformations de mod`eles, co
uteuses et sources derreur.
2. la validation automatique des sp
ecifications (seconde
partie de lobjectif 1) verifie que la specification exprimee par
le concepteur du syst`eme est exempte de defaut tant dans sa
structure que dans ses caracteristiques.
3. la g
en
eration automatique de limplantation (objectif 2)
garantit que les specifications sont respectees dans le syst`eme
genere. En outre, ce processus cree le code `a laide de patrons
de generation assurant la predictabilite du code et supprimant
le facteur derreur humain.
4. la certification automatique (objectif 3) assure que les
contraintes exprimees dans la specification sont bien respectees
dans lapplication generee. Il verifie egalement que les exigences
de developpement des standards (tels DO178B ou les Crit`eres
Communs) sont respectees.
Les deux premiers points sont discutes dans le chapitre 4 tandis que
les deux derniers font lobjet du chapitre 5.
90
Chapitre 4
Sp
ecification et validation de
larchitecture
Sommaire du chapitre
4.1
4.2
Mod
elisation de larchitecture partitionn
ee . . . . . 94
4.3
4.4
4.5
4.6
4.7
4.2.1
Noyau . . . . . . . . . . . . . . . . . . . . . . . . . .
95
4.2.2
Partitions . . . . . . . . . . . . . . . . . . . . . . . .
96
4.2.3
Isolation spatiale . . . . . . . . . . . . . . . . . . . .
98
4.2.4
4.2.5
T
aches . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.2.6
4.2.7
. . . . . . 109
4.3.1
4.3.2
4.3.3
4.3.4
Mod
elisation des aspects s
uret
e . . . . . . . . . . . . 113
4.4.1
4.4.2
4.4.3
Conformite de la politique de s
urete . . . . . . . . . 118
4.5.2
4.5.3
Mod
elisation des aspects s
ecurit
e . . . . . . . . . . . 124
4.6.1
4.6.2
4.7.2
4.7.3
4.7.4
91
Rappels
Dans le chapitre precedent, nous avons identifie les solutions pertinentes pour lassurance de securite et de s
urete et nous avons presente
notre approche. Celle-ci sappuie sur deux parties : lune de sp
ecification et validation (premier objectif de nos travaux), lautre,
dimplantation et de certification (second et troisi`eme objectifs).
Ce chapitre du manuscrit se concentre sur le premier objectif : la
sp
ecification et la validation de larchitecture.
Objectifs du chapitre
Ce chapitre decrit la specification et la validation des syst`emes partitionnes. Dans un premier temps, il introduit les patrons de modelisation dedies `
a la representation darchitectures s
ures et securisees.
Dans un second temps, il decrit les r`egles de validation de la coherence
du syst`eme et de ses caracteristiques de securite et de s
urete. Cette
verification realisee sur les specifications assurent que lutilisateur
na pas introduit derreur lors de la conception, evitant ainsi leur
propagation lors des phases suivantes du developpement.
92
4.1
Exigences de larchitecture
partitionn
ee
Exigence 1 (E1)
Exigence 2 (E2)
Exigence 3 (E3)
Mod
elisation AADL
4.2
Mod
elisation de larchitecture partitionn
ee
4.2.1
Noyau
Exigences de larchitecture
partitionn
ee
Mod
elisation AADL
Contr
ole lexecution des partitions (E1)
Propriete
Slots_Allocation
associant
chaque tranche de temps aux partitions
Slots_Allocation : list of reference (virtual processor) applies to (processor).
Propriete Major_Frame Major_Frame : time
applies to (processor).
p r o c e s s o r noyau
end noyau ;
p r o c e s s o r i m p l e m e n t a t i o n noyau . i
subcomponents
p1 : v i r t u a l p r o c e s s o r e n v i r o n n e m e n t p a r t i t i o n . i ;
p2 : v i r t u a l p r o c e s s o r e n v i r o n n e m e n t p a r t i t i o n . i ;
properties
Slots
=> ( 1 0 0 ms , 200ms ) ;
S l o t s A l l o c a t i o n => ( r e f e r e n c e ( p1 ) , r e f e r e n c e ( p2 ) ) ;
M a jo r F ra me
=> 300ms ;
end noyau . i ;
95
Arinc Module
4.2.2
Partitions
Partition (PMpartition )
Exigences de larchitecture
partitionn
ee
Mod
elisation AADL
Ordonnancement des t
aches par un
algorithme dordonnancement specifique a
` chaque partition(E3).
Specification des exigences memoires (E4)
Enum
eration des fonctionnalites de lenvironnement via lajout de la propriete
Additional_Features au composant virtual processor Additional_Features :
list of Supported_Additional_Features
applies to (virtual processor).
Description du patron
Lenvironnement dexecution est modelise par un composant AADL virtual
processor. Il est contenu au sein dun composant processor (module/noyau
executant la partition) et decrit ses caracteristiques par lassociation de proprietes.
96
Environnement
d'excution
Exemple
Le listing 4.2 met en uvre ce patron de modelisation. Le mod`ele decrit un composant representant lenvironnement dexecution de la partition
(environnement_partition). Celui-ci est contenu dans un composant de type
processor comme lexige le patron de modelisation precedemment presente
(section 4.2.2). Celui-ci specifie les caracteristiques/contraintes dexecution
de la partition : politique dordonnancement (exigence E3, ici, lalgorithme
Round-Robin est utilise) via la propriete Scheduling_Protocol, fonctions applicatives disponibles (exigence E5, les environnements modelises supportent
les biblioth`eques dentrees/sorties standard (libc_stdio) et mathematique
(libmath) comme le decrit la propriete Additional_Features).
Les ressources et interfaces de la partition (exigence E1) sont representees
par le composant contenu_partition (contenant ici une donnee, une tache et
deux interfaces). La description de leurs contraintes memoires (exigence E4)
est decrite par lassociation des proprietes standards Source_Code_Size et
Source_Data_Size au composant contenu_partition.
Enfin, cet ensemble de ressources (composant contenu_partition) est
associe `
a son environnement dexecution (exigence E2) par la definition de la
propriete Actual_Processor_Binding.
97
4.2.3
Isolation spatiale
Exigences de larchitecture
partitionn
ee
Mod
elisation AADL
Contenu de
la partition
segment
mmoire
mmoire principale
99
process implementation p a r t i t i o n . i
...
end p a r t i t i o n . i ;
memory s e g m e n t
end s e g m e n t ;
memory i m p l e m e n t a t i o n s e g m e n t . p e t i t
properties
B y t e C o u n t => 1 0 ;
end s e g m e n t . p e t i t ;
memory i m p l e m e n t a t i o n s e g m e n t . g r a n d
properties
B y t e C o u n t => 2 0 0 0 0 ;
end s e g m e n t . g r a n d ;
memory m e m o i r e p r i n c i p a l e
end memoire p r i n c i p a l e ;
memory m e m o i r e p r i n c i p a l e . i
subcomponents
s e g m e n t 1 : memory s e g m e n t . p e t i t ;
s e g m e n t 2 : memory s e g m e n t . g r a n d ;
end m e m o i r e p r i n c i p a l e . i ;
sy s t em i m p l e m e n t a t i o n s y s t e m e p a r t i t i o n n e . i
subcomponents
p a r t i t i o n 1 : process p a r t i t i o n . i ;
p a r t i t i o n 2 : process p a r t i t i o n . i ;
memoire
: memory m e m o i r e p r i n c i p a l e . i ;
properties
A c t u a l M e m o r y B i n d i n g => ( r e f e r e n c e ( memoire . s e g m e n t 1 ) )
a p p l i e s to p a r t i t i o n 1 ;
A c t u a l M e m o r y B i n d i n g => ( r e f e r e n c e ( memoire . s e g m e n t 2 ) )
a p p l i e s to p a r t i t i o n 2 ;
end s y s t e m e p a r t i t i o n n e . i ;
4.2.4
Isolation temporelle
4.2.5
T
aches
Les partitions contiennent des taches executant le code applicatif du syst`eme. Un patron de modelisation (tableau 4.5) decrit comment les taches dun
syst`eme partitionne sont representees en AADL.
T
ache (PMtache )
Exigences de larchitecture
partitionn
ee
Mod
elisation AADL
Tche
Contenu de la partition
process p a r t i t i o n
...
end p a r t i t i o n ;
thread tache
properties
S o u r c e C o d e S i z e => 3 KByte ;
S o u r c e D a t a S i z e => 4 KByte ;
S o u r c e S t a c k S i z e => 10 KByte ;
end t a c h e ;
thread implementation tache . r a p i d e
properties
C o m p u t e E x e c u t i o n T i m e => 1 . . 2ms ;
Period
=> 5 ms ;
Deadline
=> 5 ms ;
end t a c h e . r a p i d e ;
thread implementation tache . l e n t e
properties
C o m p u t e E x e c u t i o n T i m e => 10 . . 20ms ;
Temps m i n i m a l d e x e c u t i o n : 10ms
Temps maximal d e x e c u t i o n : 20ms
Period
=> 50 ms ;
Deadline
=> 50 ms ;
end t a c h e . l e n t e ;
process implementation p a r t i t i o n . i
subcomponents
tache1 : thread tache . rapide ;
tache2 : thread tache . l e n t e ;
end p a r t i t i o n . i ;
Buffer
Exigences de larchitecture
partitionn
ee
Mod
elisation AADL
Semaphore
Events
Blackboard
4.2.6
Communications intra-partition
Source_Buffer
Source_Event
Source_Blackboard
Tche emettrice
Semaphore
Destination_Buffer
Destination_Event
Destination_Blackboard
Tche destinataire
Process_Partition
105
thread implementation r e c e p t e u r . i
...
end r e c e p t e u r . i ;
process p a r t i t i o n
...
end p a r t i t i o n ;
process implementation p a r t i t i o n . i
subcomponents
: thread emetteur . i ;
tache emettrice
: thread recepteur . i ;
tache receptrice
: data type donnee
donnee partagee
{ C o n c u r r e n c y C o n t r o l P r o t o c o l => F i f o ;
Timeout
=> 200 ms ; } ;
connections
p o r t t a c h e e m e t t r i c e . s o u r c e b u f f e r >
tache receptrice . destination buffer ;
p o r t t a c h e e m e t t r i c e . s o u r c e b l a c k b o a r d >
tache receptrice . destination blackboard ;
p o r t t a c h e e m e t t r i c e . s o u r c e e v e n t >
tache receptrice . destination event ;
d a t a a c c e s s d o n n e e p a r t a g e e >
tache emettrice . acces semaphore ;
d a t a a c c e s s d o n n e e p a r t a g e e >
t a c h e r e c e p t r i c e . acces semaphore ;
properties
...
end p a r t i t i o n . i ;
4.2.7
Communications inter-partitions
Queuing Port
Exigences de larchitecture
partitionn
ee
Mod
elisation AADL
Sampling Port
Repr
esentation graphique
La representation graphique des patrons est illustree dans la figure 4.6 qui
contient deux composants process. Ceux-ci echangent des donnees via le service de queuing et sampling ports. Ce format de representation permet de
representer les connections mais les specificites de chaque service ne sont pas
decrit. Lexemple ci-apr`es les definit.
Source Sampling
Source Queuing
Partition Source
Destination Sampling
Destination Queuing
Partition Destination
107
108
4.3
Les sections suivantes presentent les r`egles de validation dediees aux architectures partitionnees. Dans un premier temps, la structure du mod`ele est
verifiee assurant que lutilisateur respecte les patrons de modelisation proposes. Puis, les caracteristiques (isolation temporelle, spatiale, etc.) du syst`eme
sont analysees afin de verifier la faisabilite de larchitecture (les segments memoires sont-ils suffisament dimenssionnes, evaluation de lordonnancabilite du
syst`eme, etc.).
4.3.1
Conformit
e de la structure du mod`
ele
Pour t o u t composant p r o c e s s p r s f a i r e
l i s t e s e g m e n t s M e m o i r e = composants memory a s s o c i e s a p r s ;
liste partitions
= composants v i r t u a l p r o c e s s o r a s s o c i e s a p r s ;
V e r i f i e r que
( ( t a i l l e ( s e g m e n t s M e m o i r e ) == 1 )
et
( t a i l l e ( p a r t i t i o n s ) == 1 )
);
f i n pour tout ;
La seconde r`egle (listing 4.8) valide la specification de la memoire du syst`eme. Elle analyse le composant memory principal du syst`eme racine (representant la memoire RAM) et verifie quil specifie plusieurs sous-composants
memory (segments) avec leurs caracteristiques (proprietes AADL decrivant la
109
4.3.2
Isolation temporelle
4.3.3
Isolation spatiale
La r`egle associee `
a la validation de lisolation spatiale assure que chaque
partition est associee `
a un segment memoire et que ce dernier est correctement
dimensionne.
Pour t o u t composant p r o c e s s p r s f a i r e
l i s t e s e g m e n t s M e m o i r e s = composants memory a s s o c i e s a p r s ;
l i s t e m e m o i r e s P r i n c i p a l e s = composants p a r e n t s de s e g m e n t s M e m o i r e s ;
V e r i f i e r que
( ( t a i l l e ( l i s t e segmentsMemoires ) > 0)
et
( composants de l a l i s t e m e m o i r e s P r i n c i p a l e s s o n t de t y p e memory ) ) ;
f i n pour tout ;
Pour t o u t composant p r o c e s s p r s f a i r e
l i s t e t a c h e s = sous composants t h r e a d de p r s ;
l i s t e s e g m e n t s M e m o i r e = composants memory a s s o c i e s a p r s ;
l i s t e t a i l l e M e m o i r e = p r o p r i e t e B y t e C o u n t de s e g m e n t s M e m o i r e ;
v a r i a b l e t a i l l e D i s p o n i b l e = somme d e s v a l e u r s de t a i l l e M e m o i r e ;
v a r i a b l e m e m o i r e R e q u i s e = p r o p r i e t e S o u r c e S t a c k S i z e de t a c h e s +
p r o p r i e t e S o u r c e D a t a S i z e de t a c h e s +
p r o p r i e t e S o u r c e C o d e S i z e de t a c h e s ;
V e r i f i e r que ( t a i l l e D i s p o n i b l e >= m e m o i r e R e q u i s e ) ;
f i n pour tout ;
Listing 4.12 R`egle validant la taille des segments memoires associes aux
partitions
4.3.4
Analyse dordonnancement
Dans le contexte des syst`emes critiques, la validation des contraintes temporelles est importante. Le non-respect dune echeance signifie quune fonction
na pu etre executee, et peut avoir des consequences graves. Plusieurs outils
simulent et verifient lordonnancement de syst`emes temps-reel. Cependant,
dans le cas des syst`emes partitionnes, la validation de cette exigence est plus
complexe car lordonnancement seffectue `a deux niveaux (ordonnancement
dit hierarchique operant au niveau du noyau et des partitions).
Cette etape de validation doit donc considerer chaque niveau dordonnancement (noyau, partition) avec ses caracteristiques (tranches de temps allouees
aux partitions, periode et echeance de chaque tache, etc.). Le nombre de param`etres etant important, cette validation est complexe et ne peut etre realisee
manuellement.
Pour lautomatiser, nous utilisons des outils appropries. Au cours des travaux presentes dans ce manuscrit, nous avons collabore avec le laboratoire
LISyC, initiateur du projet de simulateur dordonnancement Cheddar [104],
dans le but de valider lordonnancement de syst`emes partitionnes `a partir de
mod`eles AADL.
Ces travaux ont permis dinterfacer nos patrons de modelisation AADL
avec Cheddar. Les mod`eles sont exportes vers Cheddar qui simule lordonnancement du syst`eme en incluant les contraintes temporelles de chaque niveau
dexecution du syst`eme (politique dordonnancement du noyau et de ses partitions). En particulier, il utilise notre patron de modelisation de lisolation
temporelle pour ordonnancer periodiquement chaque partition.
Cette simulation permet :
1. de visualiser lordonnancement du syst`eme (instants dactivation dune
t
ache, temps de calcul, etc.).
2. de verifier la faisabilite de la politique dordonnancement par une simulation du pire temps dexecution de chaque tache.
112
4.4
Mod
elisation des aspects s
uret
e
4.4.1
Niveau de criticit
e dune partition
D
efinition : Criticit
e
La criticite represente le degre dimportance dun composant. Dans le cas des architectures partitionnees, la criticite
dune partition specifie limportance des fonctions remplies
par cette partition au regard des autres [99, 94].
113
Criticit
e dune partition
Exigences de larchitecture
partitionn
ee
Mod
elisation AADL
Description
Le patron de modelisation (tableau 4.8) introduit la propriete Criticality et
lassocie au composant AADL virtual processor. La valeur de cette propriete est une lettre (allant de A `a E) specifiant le niveau de criticite de la
partition comme le prevoit le standard DO178B.
Exemple
Le listing 4.13 illustre la definition de la criticite dune partition. La propriete AADL Criticality est associee au composant virtual processor
modelisant lenvironnement dexecution de chaque partition.
4.4.2
Repr
esentation des fautes
Exigences de
larchitecture
partitionn
ee
Mod
elisation AADL
thread tache
...
properties
H M Errors
HM Actions
end t a c h e ;
=> ( N u m e r i c E r r o r , A p p l i c a t i o n E r r o r ) ;
=> ( T h r e a d R e s t a r t , P a r t i t i o n R e s t a r t ) ;
115
Valeur
Module_Config
Signification
configuration du module invalide (ex : le Major
Frame est incorrect).
Module_Init
erreur lors de linitialisation du module (ex : impossible
de charger une partition).
Module_Scheduling
erreur lors de lexecution du premier niveau dordonnancement (partitions).
Partition_Scheduling erreur lors de lexecution du second niveau dordonnancement (t
aches de la partition elue).
Partition_Config
erreur dans la configuration de la partition (ex : nombre
de t
ache invalide).
Partition_Handler
erreur lors de lexecution de la politique de recouvrement de la partition.
Partition_Init
erreur lors de linitialisation de la partition.
Deadline_Miss
echeance ratee par une t
ache au sein dune partition.
Application_Error
erreur applicative levee par une t
ache au sein dune partition.
Numeric_Error
erreur relative a
` une operation mathematique (ex : division par zero).
Illegal_Request
requete invalide fate au noyau par une t
ache (ex : appel
syst`eme invalide).
Stack_Overflow
debordement dans la pile dexecution dune t
ache.
Memory_Violation
violation de lisolation spatiale (la t
ache essaye dacceder a
` une zone memoire qui nappartient pas a
` sa partition).
Hardware_Fault
erreur materielle (ex : peripherique ayant leve une erreur).
Power_Fail
erreur dalimentation (ex : le syst`eme va sarreter dans
5 minutes).
4.4.3
possibles
de
la
propriete
HM_Errors
Politiques de recouvrement
Il est necessaire que chaque composant associe une action `a chaque erreur detectee. Un patron de modelisation (tableau 4.11) specifie ces differentes
procedures.
116
Exigences de larchitecture
partitionn
ee
Mod
elisation AADL
HM_Actions : Supported_Recovery_Action
applies to (thread, processor, virtual
processor).
Signification
ignorer et lenregistrer.
attendre une confirmation de lerreur.
arreter la partition ayant leve lerreur.
arreter le module.
arreter le processus fautif.
redemarrer le processus/la t
ache fautive.
redemarrer la partition contenant lerreur.
redemarrer le module et toutes les partitions quil execute.
ne rien faire.
4.5
4.5.1
Conformit
e de la politique de s
uret
e
Les r`egles illustrees dans les listings 4.15, 4.16 et 4.17 valident la conformite des erreurs et les politiques de recouvrement specifiees par lutilisateur.
Elles valident que les erreurs et actions specifiees sont semantiquement correctes au regard du niveau qui est cense le detecter (par exemple, une tache
ne peut pas redemarrer le module controlant lensemble des partitions, cela
impacterait alors des partitions qui ne lincluent pas et violerait les proprietes disolation). Ces r`egles de validation correspondent `a celles decrites dans le
standard ARINC653 [4] et veillent `a ce que la specification du syst`eme respecte
les caracteristiques de confinement des syst`emes partitionnes.
Pour t o u t e v a l e u r e r r e u r de l a l i s t e e r r e u r s G e r e e s f a i r e
V e r i f i e r que e r r e u r e s t i n c l u e d a n s l a l i s t e
( M o d u l e C o n f i g , M o d u l e I n i t , M o d u l e S c h e d u l i n g ) ;
f i n pour tout ;
Pour t o u t e v a l e u r a c t i o n de l a l i s t e e r r e u r s A c t i o n s
V e r i f i e r que a c t i o n e s t i n c l u e d a n s l a l i s t e
( N o t h i n g , M o d u l e S t o p , M o d u l e R e s t a r t ) ;
f i n pour tout ;
f i n pour tout ;
faire
La r`egle du listing 4.15 assure que le noyau (composant processor) ne detecte que les erreurs dinitialisation et dordonnancement des partitions. De la
118
Pour t o u t composant v i r t u a l p r o c e s s o r p a r t i t i o n f a i r e
l i s t e e r r e u r s G e r e e s = p r o p r i e t e ARINC653 : : HM Errors de p a r t i t i o n ;
l i s t e a c t i o n s G e r e e s = p r o p r i e t e ARINC653 : : HM Action de p a r t i t i o n ;
Pour t o u t e v a l e u r e r r e u r de l a l i s t e e r r e u r s G e r e e s f a i r e
V e r i f i e r que e r r e u r e s t c o m p r i s e d a n s l a l i s t e s u i v a n t e
( P a r t i t i o n C o n f i g , P a r t i t i o n I n i t ,
P a r t i t i o n S c h e d u l i n g , P a r t i t i o n H a n d l e r ) ;
f i n pour tout ;
Pour t o u t e v a l e u r a c t i o n de l a l i s t e a c t i o n s G e r e e s f a i r e
V e r i f i e r que a c t i o n e s t c o m p r i s e d a n s l a l i s t e s u i v a n t e
( N o t h i n g , P a r t i t i o n S t o p , P a r t i t i o n R e s t a r t ) ;
f i n pour tout ;
f i n pour tout ;
Pour t o u t composant t h r e a d t a c h e f a i r e
l i s t e e r r e u r s G e r e e s = p r o p r i e t e ARINC653 : : HM Errors de t a c h e ;
l i s t e a c t i o n s G e r e e s = p r o p r i e t e ARINC653 : : HM Actions de t a c h e ;
Pour t o u t e v a l e u r e r r e u r de e r r e u r s G e r e e s f a i r e
V e r i f i e r que e r r e u r e s t c o m p r i s d a n s l a l i s t e
( D e a d l i n e M i s s , A p p l i c a t i o n E r r o r , N u m e r i c E r r o r ,
I l l e g a l R e q u e s t , S t a c k O v e r f l o w , M e m o r y V i o l a t i o n ,
H a r d w a r e F a u l t , P o w e r F a i l ) ;
f i n pour tout ;
Pour t o u t e v a l e u r a c t i o n de a c t i o n s G e r e e s
faire
119
4.5.2
e r r e u r s G e r e e s = p r o p r i e t e ARINC653 : : HM E rrors de t a c h e +
p r o p r i e t e ARINC653 : : HM E rrors de p a r t i t i o n +
p r o p r i e t e ARINC653 : : HM E rrors de noyau
V e r i f i e r que
120
M o d u l e C o n f i g , M o d u l e I n i t ,
,
M o d u l e S c h e d u l i n g
P a r t i t i o n S c h e d u l i n g , P a r t i t i o n C o n f i g ,
, P a r t i t i o n I n i t ,
P a r t i t i o n H a n d l e r
D e a d l i n e M i s s
, A p p l i c a t i o n E r r o r ,
N u m e r i c E r r o r
, I l l e g a l R e q u e s t ,
, M e m o r y V i o l a t i o n ,
S t a c k O v e r f l o w
H a r d w a r e F a u l t
, P o w e r F a i l ) ;
f i n pour tout ;
4.5.3
Lorsquune erreur est detectee, une tentative de reparation est executee par
le declenchement dune action de recouvrement. Cependant, celle-ci peut avoir
un impact sur lexecution des autres entites du syst`eme par lintermediaire
des communications inter-partitions. Lorsquune tache connectee `a une autre
partition l`eve une erreur, lexecution de laction de recouvrement peut impacter
la partition connectee. Dans ce cas, labsence de donnees peut etre temporaire
(pendant le redemarrage de la tache fautive) ou permanente (`a cause de
larret de la t
ache).
Nous considerons alors quil y a un impact significatif lorsque la tache
fautive est contenue dans une partition moins critique que la tache receptrice :
labsence de donnees au sein dune partition critique peut alors elle-meme
entraner des defaillances applicatives importantes. Lerreur se propage donc
entre partitions de criticites heterog`enes.
Afin de verifier limpact dune erreur et de sa politique de recouvrement,
deux r`egles de validation detectent les impacts des politiques de recouvrement
entre partitions ayant une criticite differente. La premi`ere, decrite dans le
listing 4.20, detecte les impacts temporaires alors que la seconde, illustree
dans le listing 4.21, detecte les impacts permanents.
Pour etablir ces deux r`egles de validation, il faut dissocier les politiques
de recouvrement ayant un impact de celles nen ayant pas. Cette dichotomie
est reprise des travaux danalyse des erreurs [72] et separe les politiques de
recouvrement en trois groupes :
1. celles nayant aucun impact sur le syst`eme (faute ignoree ou devant etre
confirmee)
2. celles ayant un impact transitoire sur le syst`eme (redemarrage de lentite
fautive)
3. celles ayant un impact permanent sur le syst`eme (arret du composant
fautif)
A partir de ces informations, chaque tache est analysee :
si la t
ache est connectee `a une tache de plus forte criticite et quelle
utilise un mecanisme de recouvrement pouvant arreter le composant, la
r`egle de validation specifie quune erreur permanente peut impacter un
composant plus critique.
si la t
ache est connectee `a une tache de plus forte criticite et que le
mecanisme de recouvrement ne limpacte que transitoirement, la r`egle
121
122
a c t i o n s D e s t i n a t i o n = p r o p r i e t e ARINC653 : : HM Actions
de p a r t i t i o n D e s t i n a t i o n +
p r o p r i e t e ARINC653 : : HM Actions
de t a c h e s D e s t i n a t i o n ;
V e r i f i e r que
(( c r i t i c i t e D e s t i n a t i o n < c r i t i c i t e S o u r c e )
ou
( v a l e u r s de a c t i o n s D e s t i n a t i o n ne c o n t i e n t p a s l a v a l e u r
( P a r t i t i o n R e s t a r t , P r o c e s s R e s t a r t , C o n f i r m ) ) ) ;
f i n pour tout ;
f i n pour tout ;
a c t i o n s D e s t i n a t i o n = p r o p r i e t e ARINC653 : : HM Actions
de p a r t i t i o n D e s t i n a t i o n +
p r o p r i e t e ARINC653 : : HM Actions
de t a c h e s D e s t i n a t i o n ;
V e r i f i e r que
( ( c r i t i c i t e D e s t i n a t i o n < c r i t i c i t e S o u r c e ) ou
( v a l e u r s de a c t i o n s D e s t i n a t i o n ne c o n t i e n t p a s l a v a l e u r
( P a r t i t i o n S t o p , P r o c e s s S t o p ,
P r o c e s s S t o p A n d S t a r t A n o t h e r ) ) ) ;
f i n pour tout ;
f i n pour tout ;
123
4.6
Mod
elisation des aspects s
ecurit
e
4.6.1
Niveaux de s
ecurit
e
Niveau de s
ecurit
e (PMniveausecurite )
Exigences de larchitecture
partitionn
ee
Description dun niveau de securite (E1)
Specification de levaluation du
niveau de securite (E2)
Definition des niveaux de securite a
` une partition (E3)
Mod
elisation AADL
Description
Le patron de modelisation dedie aux niveaux de securite est presente dans
le tableau 4.13. Il represente un niveau de securite par un composant virtual
bus (exigence E1 du tableau 4.13). Il introduit une propriete (Security_Level)
pour specifier levaluation du niveau de securite (exigence E2). Cette propriete
a pour valeur un entier : plus lentier est important, plus la contrainte de securite est forte.
Chaque partition decrit les niveaux de securite quelle supporte (exigence
E3) par la definition de la propriete Provided_Virtual_Bus_Class. Elle associe `a lenvironnement dexecution de la partition (composant virtual processor)
la liste des niveaux de securite (virtual bus) quelle fournie.
124
niveau_securite.secret
ort
g_p
u in
que
sam
environnement_execution
plin
g_p
ort
niveau_securite.topsecret
contenu_partition
Exemple
Le listing 4.22 illustre lutilisation de ce patron de modelisation. Deux composants virtual bus (niveau_securite.secret et niveau_securite.topsecret)
definissent deux niveaux de securite, le second etant classifie `a un niveau plus
eleve. Dans cet exemple, la partition est associee `a ces deux niveaux de securite.
Ces deux niveaux sont associes `a la partition, via lassociation de la propriete Provided_Virtual_Bus_Class au composant virtual processor (modelisant son environnement). Enfin, chaque port de la partition utilise un niveau de securite, leventdataport est associe au niveau niveau_securite.topsecret et le dataport `a niveau_securite.secret.
v i r t u a l bus i m p l e m e n t a t i o n n i v e a u s e c u r i t e . s e c r e t
...
properties
S e c u r i t y L e v e l => 2 ;
end n i v e a u s e c u r i t e . s e c r e t ;
v i r t u a l bus i m p l e m e n t a t i o n n i v e a u s e c u r i t e . t o p s e c r e t
...
properties
125
4.6.2
M
ecanismes de chiffrement
M
ecanismes de chiffrement (PMchif f rement )
Exigences de larchitecture
partitionn
ee
Mod
elisation AADL
Sous-programme
pour chiffrer les donnes
marshalling_type
Sous-programme pour
dchiffrer les donnes
receive
Implemented_As
...
subprogram i m p l e m e n t a t i o n d e s s e n d . i
end d e s s e n d . i ;
subprogram d e s r e c e i v e
end d e s r e c e i v e ;
...
...
subprogram i m p l e m e n t a t i o n d e s r e c e i v e . i
end d e s r e c e i v e . i ;
...
data d e s d a t a
end d e s d a t a ;
data implementation d e s d a t a . i
end d e s d a t a . i ;
...
128
4.7
Les r`egles presentees dans les paragraphes suivants valident les aspects
securite de larchitecture, assurant quun syst`eme respecte une politique de
securite. Celles-ci consid`erent que toutes les ressources dune partition (taches,
donnees, etc.) sont evaluees au meme niveau de securite. Celles-ci partageant
le meme espace dadressage, une faille de securite de lun deux expose de facto
les autres composants de la partition.
Cela marque une diff
erence avec certaines approches danalyse de la
securite qui se basent sur le fait quune partition peut contenir plusieurs taches
evaluees `
a des niveaux de securites heterog`enes. Ces approches ([111, 55])
verifient lisolation au sein des partitions alors que lespace memoire nest pas
protege.
Notre approche est differente et consid`ere que tous les composants dune
meme partition sont evalues au meme niveau de securite, tout comme des
standards comme ARINC653 specifie un unique niveau de criticite pour chaque
partition (une meme partition ne peut contenir des taches ayant un niveau de
criticite different).
Il est
egalement important de rappeler la potentielle incompatibilit
e
des politiques de s
ecurit
e analys
ees. Par exemple, un mod`ele verifiant
la politique Bell-Lapadula ne verifiera pas la politique Biba, ces deux politiques de securite etant opposees (leur description peut etre trouvee dans la
section 2.1.2). Le r
ole de nos r`egles de validation est de montrer que nos patrons de modelisation peuvent etre reutilises pour assurer la conformite dune
architecture avec une politique. Cest ensuite `a la charge de lutilisateur de
savoir quelle politique est la plus appropriee (en fonction des contraintes de
son syst`eme, de son domaine dapplication, etc.).
4.7.1
Implantation des m
ecanismes de s
ecurit
e
Pour t o u t composant v i r t u a l b u s n i v e a u S e c u r i t e f a i r e
v a r i a b l e composant = composant a s s o c i e a l a p r o p r i e t e
I m p l e m e n t e d A s de n i v e a u S e c u r i t e ;
V e r i f i e r que
( ( l a v a r i a b l e composant e s t d e f i n i e )
e t que ( composant c o n t i e n t un sous composant s e n d )
e t que ( composant c o n t i e n t un sous composant r e c e i v e )
e t que ( composant c o n t i e n t un sous composant
m a r s h a l l i n g t y p e de t y p e d a t a )
)
f i n pour tout ;
La seconde
etape analyse les composants virtual bus classifi
es `
a des
niveaux de s
ecurit
e diff
erents (par exemple, deux composants virtual
bus, lun assurant le niveau de securite top-secret, lautre le niveau confidentiel ).
Deux niveaux de securite differents doivent offrir des mecanismes de protection distincts. Si tel nest pas le cas, cela signifierait quune entite de faible niveau puisse lire ou ecrire les donnees destinees `a un autre niveau (par exemple,
une entite secr`ete envoie des donnees `a une entite top-secr`ete). Ce type de communication est interdit pour certains mod`eles de securite, tel MILS (qui doit
assurer lisolation de chaque niveau de securite).
Une r`egle de validation analyse chaque niveau de securite et verifie lexistence de mecanismes de protection distincts (analyse des proprietes AADL des
composants virtual bus). Cela assure alors quun niveau de securite donne
ne peut lire ou ecrire les donnees en provenance dun autre niveau.
Cette r`egle est illustree dans le listing 4.25 pour le protocole Blowfish. Elle
analyse chaque composant virtual bus : lorsque ceux-ci sont classifies `a un
niveau different (valeur de la propriete Security_Level), elle verifie que les
mecanismes de protection specifies (algorithmes et cles de chiffrement) ne sont
pas identiques.
Cette analyse du mod`ele assure la coherence des mecanismes de protection
130
Pour t o u t composant v i r t u a l b u s n i v e a u S e c u r i t e f a i r e
l i s t e a u t r e s N i v e a u x D e S e c u r i t e = composants
v i r t u a l b u s a y a n t une p r o p r i e t e POK : : S e c u r i t y L e v e l
d i f f e r e n t e de n i v e a u S e c u r i t e ;
Pour t o u t composant a u t r e N i v e a u D e S e c u r i t e f a i r e
V e r i f i e r que
((
( p r o p r i e t e POK : : B l o w f i s h K e y de n i v e a u S e c u r i t e ) !=
( p r o p r i e t e POK : : B l o w f i s h K e y de a u t r e N i v e a u D e S e c u r i t e )
)
et
(
( p r o p r i e t e POK : : B l o w f i s h I n i t de n i v e a u S e c u r i t e ) !=
( p r o p r i e t e POK : : B l o w f i s h I n i t de a u t r e N i v e a u D e S e c u r i t e )
))
;
f i n pour tout ;
f i n pour tout ;
4.7.2
Politique de s
ecurit
e Bell-Lapadula
Pour t o u t composant p r o c e s s p r o c e s s S o u r c e f a i r e
variable partitionSource
= composant v i r t u a l p r o c e s s o r
associe a prs ;
l i s t e n i v e a u x D e S e c u r i t e S o u r c e = composants v i r t u a l b u s
associe a partition ;
liste
liste
liste
processesDestination
= composants p r o c e s s c o n n e c t e
a ProcessSource ;
partitionsDestination
= composants v i r t u a l p r o c e s s o r
associes a processesDestination ;
n i v e a u x D e S e c u r i t e D e s t i n a t i o n = v i r t u a l bus a s s o c i e
a partitionsDestination ;
131
V e r i f i e r que
( n i v e a u x D e S e c u r i t e S o u r c e <= n i v e a u x D e S e c u r i t e D e s t i n a t i o n ) ;
f i n pour tout ;
4.7.3
Politique de s
ecurit
e Biba
Pour t o u t composant p r o c e s s p r o c e s s S o u r c e f a i r e
variable partitionSource
= composant v i r t u a l p r o c e s s o r
associe a prs ;
l i s t e n i v e a u x D e S e c u r i t e S o u r c e = composants v i r t u a l b u s a s s o c i e
a partition ;
liste
processesDestination
= composants p r o c e s s c o n n e c t e
a ProcessSource ;
= composants v i r t u a l p r o c e s s o r
associes a processesDestination ;
liste
partitionsDestination
liste
n i v e a u x D e S e c u r i t e D e s t i n a t i o n = v i r t u a l bus a s s o c i e
a partitionsDestination ;
V e r i f i e r que
( n i v e a u x D e S e c u r i t e S o u r c e >= n i v e a u x D e S e c u r i t e D e s t i n a t i o n ) ;
f i n pour tout ;
4.7.4
Conformit
e MILS
La r`egle associee `
a la validation des contraintes de MILS assure lisolation
de chaque niveau de securite et detecte donc les potentiels echanges entre
niveaux de securite differents.
Cette r`egle, illustree dans le listing 4.28 assure lisolation des niveaux de securite. Elle analyse les connections entre partitions et assure que les partitions
communiquant partagent le meme niveau de securite.
Pour t o u t composant p r o c e s s p r o c e s s S o u r c e f a i r e
variable partitionSource
= composant v i r t u a l p r o c e s s o r
associe a prs ;
l i s t e n i v e a u x D e S e c u r i t e S o u r c e = composants v i r t u a l b u s a s s o c i e
a partition ;
132
liste
processesDestination
= composants p r o c e s s c o n n e c t e
a ProcessSource ;
= composants v i r t u a l p r o c e s s o r
associes a processesDestination ;
liste
partitionsDestination
liste
n i v e a u x D e S e c u r i t e D e s t i n a t i o n = v i r t u a l bus a s s o c i e
a partitionsDestination ;
V e r i f i e r que
( n i v e a u x D e S e c u r i t e S o u r c e == n i v e a u x D e S e c u r i t e D e s t i n a t i o n ) ;
f i n pour tout ;
133
Synth`
ese de ce chapitre
Ce chapitre a presente nos patrons de modelisation pour la description darchitecture partitionnees via le langage AADL. Ils offrent
en particulier la capacite dexprimer les contraintes (isolation spatiale, temporelles, exigences de securite/s
urete) et les services/ressources (t
aches, communications intra-partition et inter-partitions)
de ce type darchitecture. Les patrons proposes dans ces travaux ont
fait lobjet dun travail au sein du comite AADL sous la forme dune
annexe au standard [34].
Dans un second temps, ce chapitre a introduit plusieurs r`egles de validation de mod`eles AADL. Ces derni`eres se divisent en trois groupes :
1. validation du respect des patrons de mod
elisation. Ces
r`egles assurent que larchitecture specifiee par lutilisateur utilise correctement les patrons de modelisation decrits precedemment.
2. validation de la politique de s
uret
e. Ces r`egles verifient
que la politique de securite specifiee par lutilisateur permet de
recouvrir toutes les fautes potentielles que nous proposons dans
nos patrons de modelisation. Elles analysent les interactions
possibles entre partitions classifiees `a des niveaux de criticite
differents et detectent les impacts potentiels entre partitions de
faible criticite et partitions de haute criticite.
3. validation de la politique de s
ecurit
e. Ces r`egles assurent le
respect de politiques de securite (Bell-Lapadula, Biba, MILS) et
assure que lutilisateur a correctement specifie les mecanismes
de protection de donnees (chiffrement, etc.).
Ces r`egles doivent etre considerees comme un support pour le concepteur dapplication, lui specifiant comment doit etre constituee la specification de son syst`eme (composants et proprietes `a utiliser). Cette
description est reutilisee par des r`egles de validation, detectant les erreurs potentiellement introduites par lutilisateur. Ces deux elements
(patrons de modelisation, r`egles de validation) constituent une reponse au premier objectif fixe en introduction (section 1.4).
Une fois larchitecture validee, il est necessaire dimplanter le syst`eme. Le chapitre suivant detaille comment il est possible de proceder `
a cette implantation automatiquement, `a partir de ces mod`eles
architecturaux.
134
Chapitre 5
Implantation et certification
automatiques
Sommaire du chapitre
5.1
5.2
5.3
5.4
5.5
Aper
cu du processus de g
en
eration . . . . . . . . .
5.1.1 Objectifs du processus dimplantation . . . . . . .
5.1.2 Objectifs du processus de certification . . . . . . .
5.1.3 Benefices du processus dimplantation . . . . . . .
5.1.4 Benefices du processus de certification . . . . . . .
Chane de g
en
eration . . . . . . . . . . . . . . . . .
5.2.1 Travaux existants . . . . . . . . . . . . . . . . . . .
5.2.2 Detail du processus de generation . . . . . . . . . .
Patrons de g
en
eration de code . . . . . . . . . . .
5.3.1 Composant processor . . . . . . . . . . . . . . . .
5.3.2 Composants virtual processor et process . . .
5.3.3 Composant device . . . . . . . . . . . . . . . . . .
5.3.4 Composant memory . . . . . . . . . . . . . . . . . .
5.3.5 Composant thread . . . . . . . . . . . . . . . . . .
5.3.6 Composant data . . . . . . . . . . . . . . . . . . .
5.3.7 Connections entre composants thread . . . . . . .
5.3.8 Connections entre composants process . . . . . .
5.3.9 Integration de code applicatif externe . . . . . . .
5.3.10 Optimisation . . . . . . . . . . . . . . . . . . . . .
5.3.11 Resume des patrons de generation . . . . . . . . .
Plate-forme pour syst`
emes s
urs et s
ecuris
es . . .
5.4.1 Description generale de POK . . . . . . . . . . . .
5.4.2 Architecture et services . . . . . . . . . . . . . . .
5.4.2.1 Couche noyau . . . . . . . . . . . . . . .
5.4.2.2 Couche partition (libpok) . . . . . . . . .
5.4.2.3 Modularite et finesse de configuration . .
5.4.3 Mecanismes de s
urete/securite . . . . . . . . . . .
5.4.3.1 Isolation temporelle . . . . . . . . . . . .
5.4.3.2 Isolation spatiale . . . . . . . . . . . . . .
5.4.3.3 Health Monitoring . . . . . . . . . . . . .
5.4.3.4 Algorithmes de chiffrement . . . . . . . .
5.4.4 Implantation des pilotes de peripherique . . . . . .
5.4.4.1 Mod`eles et choix dimplantation de POK
5.4.4.2 Nouveaux services introduits . . . . . . .
5.4.4.3 Implantation . . . . . . . . . . . . . . . .
Certification des exigences de la sp
ecification . .
135
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
138
138
139
139
141
141
141
142
143
144
148
149
149
149
151
152
153
155
156
158
158
158
158
159
160
162
162
162
163
164
165
166
166
167
167
167
Ordonnancement . . . . . . . . . . . . . . . . . . .
5.5.1.1 Presentation de loutil . . . . . . . . . . .
5.5.1.2 Mise en pratique . . . . . . . . . . . . . .
5.5.1.3 Retour dexperience . . . . . . . . . . . .
5.5.2 Analyse comportementale . . . . . . . . . . . . . .
5.6 Assurance des exigences des standards de certification . . . . . . . . . . . . . . . . . . . . . . . . . .
5.6.1 Contexte . . . . . . . . . . . . . . . . . . . . . . .
5.6.2 Integration avec le processus de developpement . .
5.6.3 Interet de la generation de code . . . . . . . . . . .
5.6.4 Retours dexperiences . . . . . . . . . . . . . . . .
.
.
.
.
.
168
169
169
170
171
.
.
.
.
.
172
173
173
174
175
Rappels
Le chapitre precedent decrit des patrons de modelisation et des r`egles
de validation dediees aux syst`emes partitionnes. Les patrons guident
le concepteur du syst`eme en indiquant la bonne mani`ere pour representer le syst`eme et ses caracteristiques. Les r`egles de validation
associees assurent que la specification creee respecte bien les exigences dune architecture partitionnee avec ses caracteristiques de
securite/s
urete. Ces etapes garantissent labsence derreur dans les
specifications du syst`eme, permettant de proceder `a son implantation et sa certification.
Ce chapitre detaille le processus de generation et de certification `a
partir des specifications validees. Il decrit les outils utilises, et explicite les garanties apportees quant aux mecanismes de securite/s
urete
implantes.
136
Objectifs du chapitre
Ce chapitre a un double objectif : (i) la description du processus de
generation automatique de larchitecture de syst`emes critiques et (ii)
leur certification.
Dans un premier temps, il detaille le processus de generation de code
a partir des specifications, produisant automatiquement une implan`
tation C de mod`eles AADL. Cette premi`ere partie du chapitre presente les patrons de generation de code qui transposent les constructions AADL vers C et leurs avantages (reduction de lempreinte memoire, predictabilite du code, etc.).
Dans un second temps, ce chapitre presente la plate-forme AADL
pour les applications s
ures et securisees : POK [33, 32]. Celle-ci int`egre le code genere et assure les proprietes de securite et de s
urete
decrites par le concepteur du syst`eme (isolation spatiale/temporelle,
confinement des communications, etc.).
Par ailleurs, nous proposons des outils danalyse `a lexecution pour :
1. verifier le comportement du syst`eme implante par rapport aux
specifications, garantissant la conformite de limplantation par
rapport `
a la description de lutilisateur.
2. assurer la garantie des exigences des standards de certifications
(par exemple : couverture de code).
Enfin, ce chapitre met laccent sur lutilite de lapproche dirigee par
les mod`eles : chaque etape du processus repose sur lutilisation des
patrons de modelisation proposes en section 4.
137
5.1
Aper
cu du processus de g
en
eration
Les sections suivantes situent les deux etapes abordees dans ce chapitre
par rapport `
a nos objectifs :
1. implantation automatique `
a partir des specifications (second objectif de
la th`ese, section 1.4)
2. certification du syst`eme `
a lexecution (troisi`eme objectif de la th`ese, section 1.4).
5.1.1
Lobjectif de cette
etape est de produire le syst`
eme tout en garantissant le respect de ses sp
ecifications. Pour parvenir `a le satisfaire, il
est necessaire de lier specifications et implantation.
Modles AADL
Gnrateur de code
AADL C
Etape 1
Intgration
Etape 2
Application
Le processus propos
e g
en`
ere automatiquement limplantation `
a partir de mod`
eles AADL valid
es. Il repose sur deux parties, illustrees dans
la figure 5.1 :
1. une g
en
eration de code qui transpose les constructions AADL
en code C (
etape 1 de 5.1). Cette etape gen`ere toutes les constructions necessaires `
a lexecution du syst`eme specifie et assure la liaison
entre les composants (generation de code dit glue ). Le code cree respecte ainsi les caracteristiques du mod`ele et les exigences du concepteur
(en terme de securite, s
urete, performances, etc.).
2. une int
egration avec une une plate-forme dex
ecution (
etape 2
de 5.1. Elle fournit les services necessaires `a lexecution du syst`eme (isolation temporelle, spatiale, etc.). Elle doit etre hautement configurable
afin detre configuree et deployee en fonction des directives de configuration derivees des caracteristiques du mod`ele AADL (configuration des
partitions, de la politique de securite, s
urete, etc.). Ainsi, le generateur
de code pourra produire des directives de configuration afin dadapter au
mieux la plate-forme aux besoins decrits par le concepteur dapplication.
138
5.1.2
La partie certification r
epond au troisi`
eme objectif de notre approche (section 1.4). Elle est mise en uvre par un processus en deux
etapes :
1. CERTIF-SPEC : certification de lexecution du syst`eme par rapport
aux specifications.
2. CERTIF-STD : assurance du respect des contraintes des standards de
certification (tel DO178B).
Ces contraintes de certification necessitent la creation doutils qui mettent
en relation lexecution du syst`eme avec ses specifications pour les comparer et
assurer leur conformite.
Notre processus de certification est illustr
e en figure 5.2 : CERTIFSPEC (partie gauche de la figure) sappuie sur les mod`eles AADL utilises par
les etapes precedentes du processus de developpement (validation, implantation). Ce type de certification compare execution et specifications au moyen
de deux outils analysant les aspects suivants :
1. ordonnan
cabilit
e : verification que les evenements dordonnancement
(activation des t
aches, preemption, etc.) observes `a lexecution respectent
les caracteristiques temporelles de la specification. Pour cela, un outil enregistre les evenements dordonnancement (context-switch, changement
de partition) lors de lexecution du syst`eme et les compare avec les resultats provenant de la simulation de lordonnancement realisee `a partir
des specifications.
2. comportementales : analyse de la conformite des fonctions executees
par le syst`eme.
CERTIF-STD (partie droite de la figure 5.2) apporte des garanties sur le
syst`eme genere independamment de ses specifications. Il a pour but de verifier
que les syst`emes produits respectent les exigences des standards de certification
(comme la couverture de code requise par DO178B).
5.1.3
B
en
efices du processus dimplantation
Modles AADL
Implantation automatique (figure 5.1)
Implantation (code)
Certification des
exigences du systme
Certifications des
exigences des standards
5.1.4
B
en
efices du processus de certification
5.2
Chane de g
en
eration
Les sections suivantes donnent un apercu des travaux existants et presentent les outils utilises et ameliores dans le cadre de nos travaux.
5.2.1
Travaux existants
5.2.2
D
etail du processus de g
en
eration
5.3
Patrons de g
en
eration de code
D
efinition : Patron de g
en
eration
Un patron de generation est un ensemble de r`egles qui
transforment des constructions dun langage source en des
blocs de code equivalents dans un langage cible. Ce processus doit conserver la semantique du langage. Dans le cadre
de nos travaux, les patrons de generation transposent les
composants de mod`eles AADL en code C.
143
Deadline = 5s
Period
= 5s
Execution = 2ms
Thread
Gnrateur
de code
Code gnr
5.3.1
Composant processor
Exemple de patron de g
en
eration (PGnompatron )
Entit
e AADL
R1 : Propriete PMnompatron
R2 : Sous-composant de type
thread (PMnompatron )
Code C
Creation dune variable/tableau
Appel de fonction
145
Entit
e AADL
Code C
Contr
ole des partitions : souscomposants
virtual processor
(PMnoyau E1)
Definition de la Major Frame : propriete Major_Frame (PMnoyau E2)
#d e f i n e
#d e f i n e
#d e f i n e
#d e f i n e
#d e f i n e
{85000 ,98387}
{150 ,50}
{0 ,1}
2
200
146
void p o k k e r n e l e r r o r
( uint32 t error )
{
switch ( e r r o r )
{
c a s e POK ERROR KIND KERNEL INIT :
{
pok kernel stop ();
break ;
}
c a s e POK ERROR KIND KERNEL SCHEDULING :
{
pok kernel restart ();
break ;
}
}
147
5.3.2
Entit
e AADL
Code C
R1 : Generation des t
aches et donnees de la partition (voir patrons 5.3.5 et 5.3.6) et dimenssionnement des ressources par la definition de macros
(POK_CONFIG_NB_TASKS, etc.)
R2 : Association des ressources generees a
` un environnement dexecution
Confinement
de
la
partition
:
propriete
Actual_Processor_Binding
(PMpartition E2)
Politique dordonnancement de
la partition : propriete Scheduling_Protocol (PMnoyau E3)
Description
des
fonctions
requises pour le code applicatif : propriete Additional_Features (PMnoyau E3)
5.3.3
Composant device
Dans notre approche, les pilotes de peripheriques sont executes dans une
partition dediee. Le composant AADL device est traduit comme une partition
syst`eme : le logiciel quelle execute g`ere le peripherique modelise.
Par consequent, nous appliquons `a ce composant le meme patron de modelisation quaux partitions afin de creer toutes les ressources necessaires `a
lexploitation du peripherique specifie. Cependant, le generateur realise une
passe de configuration supplementaire et adapte le noyau pour que la partition puisse acceder au materiel quelle controle (bus PCI, entrees/sorties,
etc.).
5.3.4
Composant memory
Le composant AADL memory represente les segments associes aux partitions et specifie la politique disolation spatiale (section 4.2.3). Ce composant
est utilise par la r`egle de generation R5 associee au noyau de partitionnement
(section 5.3.1).
5.3.5
Composant thread
T
ache : composant thread (PGtache )
Entit
e AADL
Code C
Tche thr0
void fonction_periodique_thr0 ()
{
appel_code_applicatif ();
envoi_donnees_thr1 ();
attente_prochaine_periode ();
}
Tche thr1
void fonction_periodique_thr1 ()
{
reception_donnees_thr0 ();
appel_code_applicatif ();
envoi_donnees_thr2 ();
attente_prochaine_periode ();
}
Tche thr2
void fonction_periodique_thr2 ()
{
reception_donnees_thr1 ();
appel_code_applicatif ();
attente_prochaine_periode ();
}
Figure 5.4 Pseudo-code des fonctions periodiques pour trois taches communiquant entre elles
La politique de gestion et de recouvrement des erreurs (Health Monitoring, section 4.4.3) est mise en uvre par les r`
egles de g
en
eration
R4 et R5. La r`egle R4 cree une fonction qui enum`ere chaque erreur decrite
par la propriete HM_Errors alors que la r`egle R5 gen`ere les appels aux actions
de recouvrement associees a` chaque erreur.
5.3.6
Composant data
Le composant AADL data modelise lacc`es `a une donnee partagee entre les
t
aches dune meme partition. Le patron de generation associe `a ce composant
est illustre dans le tableau 5.5.
Entit
e AADL
Donnee partagee entre plusieurs
t
aches (PMintrapartition E9)
Politique
dattente
:
propriete
Concurrency_Control_Protocol
(PMintrapartition E10)
Temps dattente maximal sur la
ressource partagee : propriete
Timeout (PMintrapartition E6)
Code C
R1 : Declaration dune variable globale et dun
semaphore dans la partition ;
R2 : Instantiation dun semaphore pour son
partage.
R3 : Configuration des param`etres de la fonction
de creation du semaphore : specification du param`etre decrivant la politique dattente.
R4 : Configuration des param`etres de la fonction
utilisant le semaphore, ajout du temps maximal
dattente.
Ce patron g
en`
ere une variable globale correspondant `
a la donn
ee
(r`
egle R1) et lassocie `
a un s
emaphore (r`
egle R2). Lallocation dune
telle ressource pour chaque donnee partagee garantit lexclusion mutuelle des
151
5.3.7
La connection dinterfaces entre composants thread modelisent les communications intra-partition, chaque type de port (data, event data et event) representant un service de specifique (buffer, event ou blackboard, section 4.2.6).
Entit
e AADL
Connection de ports entre
composants de type thread
(PMintrapartition E1, E5, E7)
Code C
R1 : Generation de tableaux definissant les
connections entre les ports (politique de routage).
R2 : Instantiation des communications (generation dappels de fonctions a
` linitialisation des
partitions).
R3 : Allocation statique de tampons de reception
pour stocker les donnees a
` envoyer/recevoir.
R4 : Ajout dun param`etre aux fonctions denvoi
et reception de donnees specifiant le temps maximal dattente.
R5 : Configuration de la file de reception a
` la creation des buffer : declaration du nombre de donnees
pouvant etre stockees.
R6 : Configuration de la politique dattente (param`etre de la fonction de creation) des canaux
events et queuing.
La r`
egle R1 g
en`
ere des tableaux d
ecrivant les connections entre
les ports de communications (canaux de communication). Ils sont
152
5.3.8
La connection de port entre composants process modelise une communication inter-partitions (section 4.2.7). Le patron de generation associe `a ces
entites AADL est illustre dans le tableau 5.7.
La r`
egle R1 g
en`
ere des tableaux d
ecrivant linter-connection entre
les partitions. Ces donnees sont reutilisees par la plate-forme afin detablir
les communications entre partitions. Ces derni`eres sont responsables du bon
routage des donnees conformement au mod`ele.
Les communications sont initialis
ees par des appels de fonctions ins
er
ees `
a linitialisation de la partition (r`
egle R2). Leurs param`etres
reutilisent les proprietes du port de communication : taille de la file de donnees (Queue_Size, R4), politique de reception (Queue_Processing_Protocol,
R5) de la frequence darrivee des donnees (Refresh_Period, R7) ou du temps
maximal dattente dune donnee (Timeout, R6). La generation de ces appels
`a linitialisation de la partition garantit que les canaux sont crees avant le demarrage des t
aches et assure leur disponibilite. De plus, cette caracteristique
supprime un facteur dindeterminisme temporel : une creation dun canal de
communication `
a lexecution consomme du temps processeur difficilement predictible et pouvant perturber lexecution des taches.
Lallocation statique des tampons requis pour l
emission/r
eception
des donn
ees (r`
egle R3) garantit la r
eservation de la m
emoire n
ecessaire `
a toutes les communications. De plus, elle facilite lanalyse de
lapplication generee : le recours `a une allocation dynamique entranerait un
facteur dindeterminisme (temps de reservation de la memoire, etc.).
153
154
5.3.9
Int
egration de code applicatif externe
5.3.10
Optimisation
Partition 1
noyau de partitionnement
he 1
T c
Contenu Partition 1
T c
he 2
environnement
d'execution 2
T c
he 2
T c
he 1
environnement
d'execution 1
Gnration
de code
Interface
noyau
Gestion
tches
Interface
noyau
Gestion
tches
Communications inter-partitions
Isolation
temporelle
Contenu Partition 2
segment1
Partition 2
Communications
intra-partition
Isolation
spatiale
Gestion
mmoire
Abstraction matriel
Noyau
segment2
Mmoire
Figure 5.5 Generation dun syst`eme contenant deux partitions avec communications intra et inter-partitions
le syst`eme en incluant les services intra-partition dans la premi`ere partition
et les fonctions de communication inter-partitions au noyau. Les taches de la
seconde partition netant pas connectees, les patrons nincluent pas de service
dechange de donnees.
La figure 5.6 illustre la production du syst`eme nutilisant aucun service
de communication : le generateur configure la plate-forme afin de supprimer
tout service relatif `
a lechange de donnees dans chaque couche de larchitecture
(noyau, partitions).
noyau de partitionnement
T c
he 2
Interface
noyau
T c
he 1
he 2
Contenu Partition 1
Partition 1
environnement
d'excution 2
T c
T c
he 1
environnement
d'excution 1
Contenu Partition 2
Gnration
de code
Gestion
tches
Isolation
temporelle
Partition 2
Interface
noyau
Isolation
spatiale
Gestion
tches
Gestion
mmoire
Abstraction matriel
Noyau
Segment1
Segment2
Mmoire
5.3.11
R
esum
e des patrons de g
en
eration
5.4
La section precedente a presente les patrons de generation de code specifiques aux syst`emes partitionnes. Le processus de production automatique de
code traduit les mod`eles AADL en C, remplissant ainsi une partie du second
objectif (section 1.4). Cependant, ce code necessite une plate-forme dexecution afin detre compile, integre et produire lapplication finale.
La presente section decrit la plate-forme logicielle que nous avons definie
pour supporter lexecution du code genere (remplissant ainsi la partie manquante de notre second objectif section 1.4).
5.4.1
Description g
en
erale de POK
5.4.2
Architecture et services
Couche applicative
(code Ada/C, modle Simulink, Scade, ...)
Couche partition
(fonctions et services pour l'application)
Couche noyau
(services d'isolation)
Noyau Partition
5.4.2.1
Couche noyau
Isolation
temporelle
Isolation
spatiale
Gestion des
fautes
Gestion du
temps
Communications
inter-partitions
Gestion
mmoire
Abstraction du matriel
Couche noyau
La couche noyau (detaillee par la figure 5.8) isole les partitions (isolation
temporelle/spatiale) et controle les communications inter-partitions, assurant
que seules celles autorisees peuvent etre etablies. Sa complexite a ete volontairement reduite afin de faciliter de potentiels efforts de certification.
Elle se decompose en plusieurs services repartis en plusieurs couches. La
premi`ere est une abstraction du materiel qui propose des fonctions generiques
sinterfacant avec les couches bas niveau du syst`eme. La definition de telles
fonctions favorise le portage du noyau sur dautres architectures et facilite
lecriture des services de haut niveau (ordonnancement, confinement, etc.).
Les services de gestion du temps et de la memoire offrent une representation commune du temps aux services disolation spatiale et temporelle. Ils
comprennent des fonctions pour lallocation des segments memoire et lordonnancement de chaque partition.
Le service de gestion des fautes g`ere les exceptions et interruptions relatives
aux erreurs survenant lors de lexecution du syst`eme (erreur dacc`es memoire,
division par zero, etc.). Ce service propage les erreurs dans les partitions les
ayant initiees.
159
Algorithmes de chiffrement
Fonctions maths
Interface
noyau
Pilotes de priphriques
Gestion
tches
Communications
intra-partition
Couche partition
(libpok)
Services cur
La couche partition sinterface avec le noyau pour acceder aux services quil
fournit et requiert lutilisation dinstructions privilegiees. Par exemple, un tel
service est requis pour les communications inter-partitions : le noyau les controlant, il faut que la partition emette des requetes au noyau pour les utiliser.
Le gestionnaire de t
aches propose des fonctions pour leur creation et leur
gestion (demarrage, arret, attente, etc.). Il inclut egalement les primitives de
gestion de la concurrence (mecanismes de verrouillage, semaphores, etc.).
Les communications intra-partition g`erent trois types dinteractions au
sein de la partition, repris de la semantique dAADL : buffer, blackboard
et event. Elles proposent une semantique identique aux mecanismes intrapartition dARINC653 (section 2.2.2). Chaque canal intra-partition doit etre
specifie par le developpeur `
a la compilation afin dallouer statiquement les
ressources quil requiert `
a la compilation.
Adaptation aux standards
La couche partition de POK comprend une interface dadaptation avec les
standards les plus utilises en temps-reel. Cette conformite augmente le potentiel de portabilite des applications vers POK et permet de reutiliser des
applications sur ce noyau par recompilation.
Plusieurs standards sont actuellement supportes :
1. ARINC653. Cette couche inclut lAPI du standard ARINC653 et linterface aux services cur de POK. Bien que les semantiques dARINC653
et de POK soient tr`es proches, il est necessaire de realiser une adaptation syntaxique (introduction des fonctions et param`etres de lAPI
ARINC653, etc.). Cette couche dadaptation permet au developpeur de
reutiliser ses applications existantes ecrites pour le standard ARINC653
(objectif de portabilite).
160
161
Modularit
e et finesse de configuration
Nous avons concu les services de POK dans une optique de modularite :
1. la configuration du comportement des services : chacun deux doit pouvoir adapter son comportement par rapport aux directives de configuration. Par exemple, pour chaque partition, la politique dordonnancement
peut etre modifiee par une directive de configuration (macro C).
2. chaque service est active par la definition dune directive de configuration (macro C). Ainsi, lutilisateur peut definir les services dont il
souhaite disposer aussi bien dans le noyau que dans les partitions. Par
defaut, tous les services sont desactives, et chaque couche du syst`eme
(noyau, partitions) doit etre configuree afin de definir quels services
elle contient. Dun point de vue implantation, une macro est dediee `a
lactivation de chaque service. Par exemple, la definition de la macro
POK_NEEDS_PORTS_QUEUEING active le service des queuing ports (communications inter-partitions).
Ces deux caracteristiques reduisent le code mort et lempreinte memoire.
Par ailleurs, elles ameliorent le taux de couverture du syst`eme : la configuration de chaque service specifie quelles sont leurs caracteristiques utilisees, et
desactive automatiquement celles qui ne seront pas executees. Leur activation
par directive de configuration (et surtout, la desactivation par defaut) permet
de ne conserver que ceux etant reellement necessaires, supprimant ainsi tout
code inutile et non execute par lapplication.
Une telle optimisation est traditionnellement realisee par des outils danalyse qui detectent le code inutilise et le suppriment une fois le syst`eme implante.
En lintegrant `
a POK, nous affranchissons le developpeurs davoir recours `a
de tels outils et apportons un gain de temps significatif, lempreinte memoire
et la couverture de code etant automatiquement optimales `a la conception.
5.4.3
5.4.3.1
M
ecanismes de s
uret
e/s
ecurit
e
Isolation temporelle
Lisolation temporelle est fournie par la couche noyau et assure que chaque
partition est executee pendant une tranche fixe, suivant un protocole dordonnancement cyclique, periodique.
3. cette carte est emulee par la machine virtuelle executant POK, QEMU [13].
162
Isolation spatiale
163
Health Monitoring
164
Cette t
ache execute indefiniment une procedure de traitement derreurs. A
chaque reveil, elle execute une procedure de recouvrement en fonction du type
derreur (division par zero, depassement de pile, etc.) reporte et de lentite
fautive (la t
ache de la partition ayant genere la faute). Le listing B.4 montre
la constitution dune telle procedure : pour chaque erreur detectee (erreur
applicative, echeance non atteinte), la tache fautive est redemarree.
5.4.3.4
Algorithmes de chiffrement
5.4.4
Mod`
eles et choix dimplantation de POK
Comme discute au cours des sections 2.1.1 et 2.2.2, les pilotes de gestion
de peripheriques peuvent etre implantes soit dans le noyau, soit dans les partitions. Les avantages et inconvenients de ces deux methodes ont ete discutes au
cours de la section 2.2.2, le tableau recapitulatif 2.1 synthetisant notre analyse
de ces probl`emes.
Limplantation des pilotes dans le noyau est intrusive : elle introduit
du code sp
ecifique `
a un cas dutilisation (gestion dun p
eriph
erique)
et implique de revalider le syst`
eme. Les nouvelles fonctions ont un impact sur les performances du noyau (temps de calcul des fonctions de gestion,
ressources necessaires, etc.) quil est alors necessaire de comptabiliser lors de
son analyse. Enfin, elles presentent un vecteur de faille important : une erreur
dans ces fonctions peut generer une violation de lisolation temporelle (boucle
infinie) ou spatiale (ecriture dans les segments dune partition autorise, le
noyau ayant acc`es `
a tous les segments).
Limplantation dans les partitions est contraignante mais l`
eve les
probl`
emes soulev
es pr
ec
edemment. Ce methode soumet les fonctions
de gestion du peripheriques aux mecanismes disolation spatiale et temporelle.
Elles nont donc aucun impact sur le noyau, supprimant ainsi tout besoin
de nouvelle analyse ou certification de ce dernier. Cependant, ce confinement
dans les partitions empeche les fonctions de gestion davoir un acc`es direct
au materiel. Par consequent, pour acceder `a ses donnees, il est necessaire de
developper des services dedies au sein du noyau.
Les pilotes de p
eriph
eriques de POK ont
et
e implant
es au sein des
partitions, afin de garantir la s
uret
e et la s
ecurit
e du syst`
eme. En
particulier, nous avons souhaite :
166
Dans POK, un gestionnaire de peripherique doit donc acceder au materiel quil contr
ole pour communiquer avec ce dernier (envoi dinformations de
contr
ole, de paquets, etc.). Cependant, cet acc`es seffectue dans un mode dexecution privilegie (dedie au noyau) alors que les partitions sexecutent dans un
mode normal (dit mode utilisateur , netant pas autorise `a communiquer
avec le materiel.
Il est necessaire dajouter un service de controle du materiel avec le noyau
et de linterfacer avec les partitions. Ainsi, ces derni`eres peuvent effectuer des
requetes vers le noyau pour que celui-ci realise les operations necessaires pour
envoyer ou recevoir des donnees avec le peripherique controle.
Toutefois, ce nouveau service ne doit pas se faire au detriment de la securite
ou de la s
urete. En particulier, le noyau controle les requetes effectuees par
les partitions, assurant quelles ne concernent que les peripheriques quelles
contr
olent. Pour cette raison, un peripherique nest gere que par une seule
partition, facilitant ainsi lanalyse du syst`eme et empechant de potentiels acc`es
partages (partitions communiquant via la memoire du peripherique).
5.4.4.3
Implantation
5.5
5.5.1
Ordonnancement
Pr
esentation de loutil
Modles AADL
Simulation de
l'ordonnancement (1)
Gnration (2) et
excution (3 & 4)
Traces
simulation
Traces
d'excution
5.5.1.2
Mise en pratique
Le processus, illustre dans la figure, 5.10 a ete mis en uvre dans une
chane de production dediee qui :
1. utilise loutil Cheddar pour produire le schema dordonnancement `a partir de mod`eles AADL (etape 1 de la figure 5.10).
169
Retour dexp
erience
5.5.2
Analyse comportementale
Modles AADL
Gnration
Excution par
simulateur instrument
Journal des vnements
du systme
Comparaison vnements
l'xcution / spcifications
5.6
172
5.6.1
Contexte
Ces travaux ont pris place au sein du projet COUVERTURE ayant pour
but la creation doutils danalyse de couverture de code pour la certification
DO178B de syst`emes critiques. Le laboratoire dans lequel les presents travaux
ont ete effectues etant partenaire de ce projet, cela a ete une opportunite
de fournir un retour dexperience et dameliorer les outils du projet (xcov et
version dediee de QEMU).
Application
(contient la liste des instructions)
Rapport de
couverture
5.6.2
Int
egration avec le processus de d
eveloppement
AADL models
Gnration
Systme gnr
Excution par
1
simulateur instrument
Analyse de 2
couverture de code
Rapport de
b
couverture
5.6.3
Int
er
et de la g
en
eration de code
Ces travaux sur la couverture nous donnent lopportunite de montrer linteret de la generation de code `
a partir des specifications du syst`eme. Lors du
processus de generation, loutil (Ocarina) analyse le syst`eme et produit du
code qui selectionne les services requis par chaque couche de larchitecture
partitionnee (section5.3.10) : seules les fonctions requises sont incluses dans
lapplication finale, reduisant ainsi significativement la quantite de code non
couvert.
Toutefois, cette caracteristique que nous avons mise en uvre dans notre
processus nest realisable qu`
a deux conditions :
174
5.6.4
Retours dexp
eriences
175
Synth`
ese de ce chapitre
Ce chapitre a aborde les elements correspondant au second et troisi`eme objectifs (generation et certification de syst`emes securises et
s
urs, voir section 1.4) de notre approche :
generation automatique de code pour syst`emes partitionnes `a partir de mod`eles AADL. En particulier, les patrons de production
de code assurent le suivi des specifications tout en limitant les
inconvenients traditionnels des approches de generation de code
(overhead memoire, couverture de code faible, etc.).
environnement dexecution s
ur et securise pour le code genere
(POK). Son caract`ere modulaire et hautement configurable permet dintegrer le code genere facilement. Par ailleurs, cela permet
dassurer automatiquement plusieurs contraintes specifiques aux
syst`emes critiques (reduction de lempreinte memoire, augmentation de la couverture de code).
les outils de certification qui assistent lutilisateur dans la validation de la conformite des applications produites pour :
1. la verification de lordonnancement par la comparaison des
evenements dordonnancement de la simulation avec ceux issus de lexecution.
2. la validation du comportement du syst`eme `a lexecution et la
detection de comportements non specifies.
3. lanalyse du taux de couverture de code de lapplication generee en vue dune certification avec les standards (DO178B
et ECSS [41]).
176
Entit
e AADL
Connection
de
ports
entre
composants
de
type
process
(PMinterpartitions E1etE6)
Code C
R1 : Generation de tableaux specifiant
les connections entre ports.
R2 : Instantiation des connections (generation dappels de fonction a
` linitialisation de la partition).
R3 : Allocation statique de tampons denvoi/reception des donnees.
R4 : Configuration de lappel de fonction
creant le port de communication, declaration de la taille des donnees vehiculees.
R5 : Configuration de lappel de fonction creant le port, et adaptation du param`etre specifiant la politique de mise en
file (queuing ports uniquement).
R6 : Ajout du temps maximal dattente
lors de la reception ou de lenvoi dune donnee (illimite par defaut).
R7 : Specification de la periode darrivee
des donnees lors de lappel de fonction initiant un sampling port.
R8 : Appels de fonctions chiffrant les
donnees avant envoi.
R9 : Appels de fonctions dechiffrant les
donnees a
` la reception.
R10 : Generation de macros definissant la
configuration des mecanismes de securite
(POK_CONFIG_PROTOCOLS_...).
177
Composant
AADL
processor
Patron de g
en
eration
virtual processor
process
thread
Connection
thread
entre
Connection
process
entre
Data
178
Chapitre 6
Cas d
etudes
Sommaire du chapitre
6.1
6.2
6.3
6.4
6.5
Aspect s
urete . . . . . . . . . . . . . . . . . . . . . . 181
6.1.2
6.1.3
Cas d
etude integrated avionics : gestionnaire
de pilotage . . . . . . . . . . . . . . . . . . . . . . . . 182
6.2.1
Introduction . . . . . . . . . . . . . . . . . . . . . . 182
6.2.2
6.2.3
6.2.4
Cas d
etude MILS
. . . . . . . . . . . . . . . . . 191
6.3.1
6.3.2
6.3.3
6.3.4
6.4.2
6.4.3
Etude
de lempreinte m
emoire
. . . . . . . . . . . . 203
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
179
Rappels
Les chapitres precedents ont detaille notre processus de developpement de syst`emes s
urs et securises au travers de :
1. R`
egles de mod
elisation et de validation (chapitre 4).
Celles-ci guident le concepteur du syst`eme dans la specification
de son architecture et de ses caracteristiques. Lutilisation dun
langage de modelisation standardise, associe `a ces r`egles permet
dutiliser des outils danalyse, assurant la faisabilite du syst`eme
et labsence derreur au niveau de ses specifications.
2. Une implantation et une certification automatique
(chapitre 5). Letape dimplantation traduit en code executable et lint`egre `
a une plate-forme dexecution partitionnee qui
fournit des services de securite et de s
urete. Ce processus de generation assure la bonne implantation des caracteristiques du
syst`eme et facilite son analyse. Letape de certification supervise lexecution de lapplication generee et valide le respect des
exigences de ses specifications.
Objectifs du chapitre
Les sections qui suivent mettent en pratique lapproche developpee au
cours des chapitres 4 et 5. Elles sattachent `a montrer son utilite dans
le contexte des syst`emes critiques au travers de deux cas detudes :
lun dedie `
a lassurance de s
urete, lautre `a la securite.
La s
urete de fonctionnement est mise en valeur au travers dune etude
definissant un syst`eme de pilotage davion (cas detude integrated
). Celui-ci specifie une architecture avionique modulaire (IMA) composee de plusieurs partitions isolees pour des raisons de s
urete. Cette
etude consiste `
a montrer que notre approche est capable de specifier,
valider et implanter des syst`emes avioniques de taille consequente.
Enfin, larchitecture proposee est semblable `a celles concues dans un
contexte industriel comme le montre [45].
Les aspects securite sont mis en pratique dans un cas detude (nomme
MILS ) compose de deux machines echangeant des donnees `a differents niveaux de securite via un reseau non securise (tel un lien
Ethernet). Chaque niveau definit ses mecanismes de protection des
donnees (protocole de chiffrement, etc.) et est isole dans des partitions dediees. Au cours de cette etude, le confinement de linformation
est valide au niveau de specifications et les mecanismes de protection
sont valides `
a lexecution.
180
6.1
6.1.1
Aspect s
uret
e
Les aspects s
urete du cas detude integrated mettent en pratique les elements suivants de notre approche :
1. Lutilisation de patrons de modelisation dedies `a la specification darchitectures partitionnees et de leur politique de recouvrement.
2. La validation de larchitecture partitionnee et de ses mecanismes de recouvrement derreurs.
3. La generation automatique de limplantation en respectant les mecanismes de s
urete specifies.
4. La validation du syst`eme genere et de limplantation de sa politique de
recouvrement par une analyse comportementale de lexecution.
5. Le respect du standard de certification DO178B par une analyse de couverture de code.
6.1.2
Aspect s
ecurit
e
6.1.3
Plan de l
etude
Dans un premier temps, chaque cas detude est presente separement (sections 6.2 et 6.3). Nous decrivons le contexte dutilisation de ces syst`emes, detaillons leurs exigences et les mod`eles AADL associes. Chacune de ces sections
abordent les outils de certification utilises pour analyser leur execution (validation mecanismes de s
urete pour le cas detude integrated , supervision
de lisolation des donnees pour le cas detude MILS ).
La section 6.4 rapporte les taux de couverture de code des composants
generes (noyau, partitions) dans chaque cas detude et met en relation les
181
6.2
Cas d
etude integrated avionics : gestionnaire de pilotage
6.2.1
Introduction
Ce cas detude definit une application avionique de controle de vol, dirigeant la trajectoire de lavion, g`ere le materiel de vol, affiche les informations
de navigation au pilote et detecte les erreurs potentielles. Son architecture suit
la philosophie Integrated Modular Avionics (IMA) qui consiste `a separer
les fonctions dans des partitions pour les isoler les unes des autres.
Aper
cu de larchitecture
Larchitecture proposee comprend 6 partitions inter-connectees, chacune
remplissant une fonction bien definie :
1. Le Flight Manager calcule le plan de vol de lavion.
2. Le Flight Director g`ere le materiel controlant lavion et repond aux demandes de contr
ole du controle de vol (partition 1 Flight Manager ).
3. Le Page Content Manager contient toutes les informations potentiellement affichables sur lecran du pilote et les organise en differentes pages.
Les informations proviennent de la partition 1 (Flight Manager ).
4. Le Display Manager affiche une page dinformation de navigation parmi
celles disponibles au sein de la partition 3.
5. Le Hardware Display controle le peripherique affichant les pages (carte
video + ecran) et affiche la page choisie par la partition 4.
6. Le Warning Annunciation Manager detecte de erreurs potentielles survenant lors du vol.
Les connections entre les partitions utilisent le principe de la memoire
partagee : aucune valeur nest mise en attente. Ce concept de communication
correspond `
a celui des sampling port du standard ARINC653. Chaque partition
est isolee temporellement et spatialement.
Origine de ce cas d
etude
Cet exemple a ete defini dans un rapport technique [45] publie par le Software Engineering Institute pour la conception et lanalyse de syst`emes avioniques avec le standard AADL. Un rapport [45] detaille les patrons de modelisation utilises ainsi quune analyse des flots de communication inter-partitions
182
partitioned processor
partitioned
runtime
partitioned
runtime
partitioned
runtime
partitioned
runtime
partitioned
runtime
partitioned
runtime
flightmanager
Integrated
Navigation
Navigation Sensor
Processing
Guidance
Processing
FDToFM_Page
navSensorDataToIN
navDataSensorfromNSP
navSignalDataFromSensor
navDataToGPAPC
flightdirector
navDataFromIN
navDataFromFPP
navDataToFPP
FDToFM_Request
FMToFD_Page
guidanceFromGP
FMToFD_Request
FMToPCM_Request
PCMToDM_Request
PCMToFM_Request
PCMToFM_Page
FMToPCM_Page
pe
rfD
ata
Fro
fpD
mA
ata
PC
ToG
PAP
C
FlightPlan
Processing
A
Per ircraft
fo
Calc rman
ce
ula
tion
navDataFromIN
NewPageContentFD
fuelFlow
navS
ign
al
ata
Out
ance
Ou t
NewPageContentPCM
NewPageRequestPCM
navD
NewPageRequestFD
perfDataToFPP
fpDataFromFPP
guid
H
Pag andle
eR
equ
es t
PCMToDM_Page
FMIn_fuelFlow
fromOutside_fuelFlow
pagecontentmanager
FMIn_navSignal
PageRequestFD fromOutside_navSignal
FMOut_guidanceOut
PageContentfromPageFeed
toOutside_guidanceOut
PageRequest
FMOut_fpDataOut
toOutside_fpDataOut
PageContentFD
FMOut_navDataOut
fpDataOut
toOutside_navDataOut
fuelFlow
PCMToDM_Request
DisplayToDM_Request
hardwaredisplay
DisplayToDM_Page
PeriodicIO
DMToPCM_Page
DMToPCM_Request
DMToPCM_Page
DMToPCM_Request
warningannunciationmanager
DMToDisplay_Request
DMToDisplay_Request
DMToDisplay_Page
displaymanager
segment1
DMToDisplay_Page
segment2
segment3
segment4
segment5
segment6
6.2.2
Sp
ecifications AADL
Partitions
Chaque partition est specifiee au moyen dun composant process et virtual
processor. Les composants virtual processor (environnement dexecution
de la partition) sont contenus au sein dun processor (listing 6.1) alors que
les composants process sont ajoutes dans un composant hybride system. Ces
deux composants sont associes par la propriete Actual_Processor_Binding.
Le listing 6.2 presente la definition de ces deux composants pour la partition
Display Manager.
v i r t u a l processor implementation runtime . displaymanager
properties
ARINC653 : : H M E rrors => ( P a r t i t i o n S c h e d u l i n g , P a r t i t i o n C o n f i g ,
Partition Handler , Partition Init );
ARINC653 : : HM Actions => ( P a r t i t i o n S t o p , P a r t i t i o n S t o p ,
Partition Stop , Partition Stop );
S c h e d u l i n g P r o t o c o l => RMS;
end r u n t i m e . d i s p l a y m a n a g e r ;
process process displaymanager
185
Isolation spatiale et m
emoire
Les partitions definissent leur contenu (taches, ressources, couche applicative sous-jacente, etc.) dans un composant process. La localisation au sein de
la memoire doit cependant etre specifiee. Pour cela, nous decrivons lorganisation de la memoire principale, sa division en segments et leur association avec
les partitions.
La memoire principale (memoire RAM) est specifiee `a laide dun unique
composant de type memory divise en sous-composants memory representant les
segments. Leur taille (100Ko) est definie au moyen de la propriete standard
Byte_Count. Le listing 6.3 presente la decomposition de la memoire en segments : le composant ram contient plusieurs sous-composants de type memory,
chacun deux decrit une partie de la memoire pour stocker le code ou les donnees de chaque partition.
Chaque composant process est associe `a un segment memoire pour specifier la strategie disolation spatiale (section 4.2.3). La propriete standard
Actual_Memory_Binding est definie sur chaque composant AADL process et
reference le segment memoire (composant memory) qui la contient.
memory i m p l e m e n t a t i o n s e g m e n t . d a t a s e g m e n t
properties
ARINC653 : : Memory Kind => memory data ;
ARINC653 : : A c c e s s T y p e => r e a d w r i t e ;
B y t e C o u n t => 3 0 0 0 ;
end s e g m e n t . d a t a s e g m e n t ;
memory i m p l e m e n t a t i o n s e g m e n t . c o d e s e g m e n t
properties
ARINC653 : : Memory Kind => memory code ;
ARINC653 : : A c c e s s T y p e => r e a d ;
B y t e C o u n t => 5 0 0 0 ;
end s e g m e n t . c o d e s e g m e n t ;
memory i m p l e m e n t a t i o n ram . i
subcomponents
s e g m e n t 1 d a t a : memory s e g m e n t . d a t a s e g m e n t ;
186
code
data
code
data
code
data
code
data
code
data
code
:
:
:
:
:
:
:
:
:
:
:
memory
memory
memory
memory
memory
memory
memory
memory
memory
memory
memory
segment . code
segment . data
segment . code
segment . data
segment . code
segment . data
segment . code
segment . data
segment . code
segment . data
segment . code
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
Isolation temporelle
Le noyau de partitionnement isole et controle le temps dexecution des partitions, assurant au bon respect de la periode qui leur est allouee. Cette caracteristique du syst`eme est specifiee (patron de modelisation 4.2.4) en associant les
proprietes ARINC653::Slots, ARINC653::Slots_Allocation et ARINC653::Module_Major_Frame au composant AADL processor (noyau). Le listing 6.1
montre la definition de ces proprietes pour le composant processor de ce cas
detude.
La propriete ARINC653::Slots definit une liste de six valeurs de 20ms,
decrivant les six tranches de temps que le noyau alloue pour lexecution de
ses partitions. La propriete ARINC653::Slots_Allocation specifie lallocation
de ces periodes dexecution `a chaque partition. Dans notre exemple, chaque
partition utilise une periode dexecution (20ms).
Enfin, la Major Frame du module est specifiee en definissant la propriete ARINC653::Major_Frame `a 120ms.
Politique de reprise des fautes
La politique de detection et de reprise des fautes doit etre specifiee `a
chaque niveau de larchitecture : noyau (composant AADL processor), partition (composant AADL virtual processor) et tache (composant AADL
thread).
Les patrons de modelisation dedies `a la description des fautes et des politiques de recouvrement (sections 4.4.2 et 4.4.3) associent les proprietes (ARINC653::HM_Errors et ARINC653::HM_Actions) `a chaque niveau de larchitecture : composants processor (listing 6.1), virtual processor (listing 6.2)
et thread (listing 6.4). Ces proprietes sont definies composants conformement
aux specifications de la politique de reprise des fautes (specifications de la
section 6.2.1) : en cas de faute, le noyau redemarre (valeurs de la propriete
HM_Errors `
a Module_Restart), les partitions sarretent (Partition_Stop) et
les t
aches arretent la partition (Partition_Restart).
thread thread displaymanager
features
DMToDisplay Request
: i n d a t a p o r t t y p e s : : PageRequestCmd ;
DMToDisplay Page
: out d a t a p o r t t y p e s : : P a g e C o n t e n t ;
187
,
,
,
);
Autres
el
ements de larchitecture
La specification realisee introduit dautres elements qui ne sont pas relatifs
aux aspects s
urete mais sont toutefois necessaires `a lanalyse ou la generation de limplantation. Les paragraphes suivants donnent un apercu de leur
definition.
Le mod`ele definit les types de donnees utilises dans les communications
inter-partitions. Afin de simplifier laspect applicatif de lapplication, seuls des
entiers sont utilises. La description de ces types peut etre trouvee en annexe
(section B.4.1.8).
Les sous-programmes de ce syst`eme sont implantes manuellement en C.
Les composants specifiant les sous-programmes referencent (section B.4.1.5)
ces routines afin de les integrer au syst`eme lors de sa production.
6.2.3
Validation de la sp
ecification
6.2.4
Validation des m
ecanismes de Health Monitoring
6.3
Cas d
etude MILS
6.3.1
Introduction, sp
ecification
Top-secret
Secret
Non classifi
Donnes de
la mission
Milieu hostile
Collecte
des donnes
Sauvegarde sur
support fiable
Sauvegarde
temporaire
Top-secret
+ secret
Non classifi
Sauvegarde
Milieu sr
environnement
non classifi
environnement
TS + S
envirionnement
non classifi
Partition
non classifie
Partition secret
et top-secret
Priphrique rseau
segment
segment
segment
ethernet bus
niveau de scurit non classifi
Priphrique rseau
Partition
top-secret
segment
Partition
secret
segment
segment
segment
Partition
non classifie
Environnement
non classifi
Environnement
top-secret
Environnement
secret
Environnement
non classifi
193
6.3.2
Sp
ecifications AADL
Partitions
Les partitions sont specifiees (section 4.2.2), `a laide de deux composants :
1. un composant virtual processor, representant la plate-forme dexecution de la partition. Celui-ci est soumis au controle du noyau (composant
processor). Pour modeliser cette relation de dependance, les virtual
processor sont definis comme sous-composants dun processor (listing
6.6)
2. un composant process qui modelise lespace dadressage de la partition
et ses ressources. Ce composant contient les ressources de la partition
(composants thread, data, etc.). Afin de representer le lien entre les
ressources de la partition et sa plate-forme dexecution, ces deux composants sont associes au moyen de la propriete Actual_Processor_Binding.
Les partitions de ce cas detude ne contiennent quune tache (composant
thread) chargee denvoyer ou recevoir des donnees. Le listing 6.7 montre la
definition de la partition receptrice des niveaux de securite secret et top-secrets.
195
process p a r t i t i o n s e c r e t a n d t o p s e c r e t r e c e i v e
features
v a l u e o n e : i n data port t y p e s : : i n t e g e r
{ A l l o w e d C o n n e c t i o n B i n d i n g C l a s s =>
( c l a s s i f i e r ( layers : : topsecret . i ));};
valuetwo : i n data port t y p e s : : i n t e g e r
{ A l l o w e d C o n n e c t i o n B i n d i n g C l a s s =>
( classifier ( layers :: secret . i ));};
end p a r t i t i o n s e c r e t a n d t o p s e c r e t r e c e i v e ;
process implementation p a r t i t i o n s e c r e t a n d t o p s e c r e t r e c e i v e . i
subcomponents
thr : thread threads : : t h r r e c e i v e t w o i n t . i ;
connections
p o r t v a l u e o n e > t h r . i n v a l u e 1 ;
p o r t v a l u e t w o > t h r . i n v a l u e 2 ;
end p a r t i t i o n s e c r e t a n d t o p s e c r e t r e c e i v e . i ;
Niveaux de s
ecurit
e fournis par chaque partition
Un niveau de securite est associe avec une partition (section 4.6.1) par lassociation de la propriete Provided_Virtual_Bus_Class sur les composants
virtual processor (environnement dexecution des partitions). La valeur de
cette propriete est une liste de composants virtual bus representant les niveaux de securite supportes.
Dans le mod`ele presente, chaque composant virtual processor definit
une liste `
a un element. Seule la partition receptrice des niveaux top-secret
et secret (composant partition_runtime.secretandtopsecret, listing 6.7)
supporte deux niveaux de securite et definit une liste avec les deux virtual
bus.
Niveaux de s
ecurit
e des interfaces de communication
Il est necessaire de specifier le niveau de securite associe `a chaque interface de communication afin que le generateur de code soit en mesure de creer
les appels de fonction chiffrant les donnees avant leur envoi/reception. Cette
association entre linterface de communication et son niveau de securite (section 4.6.1) requiert que la propriete AADL standard Allowed_Connection_Binding_Class soit associee `
a chaque port de la partition. Comme pour la
propriete Provided_Virtual_Bus_Class, celle-ci prend pour valeur une liste
de niveaux de securite (composant virtual bus). Toutefois, le patron de modelisation requiert que cette liste ne contienne quune seule valeur, un port
nutilisant quun seul niveau de securite (section 4.6.1).
Le listing 6.7 montre la definition de cette propriete pour les deux ports de
la partition receptrice des niveaux top-secret et secret : lun recoit les donnees
196
:
:
:
:
:
:
:
i n data port t y p e s : : i n t e g e r ;
i n data port t y p e s : : i n t e g e r ;
i n data port t y p e s : : i n t e g e r ;
out d a t a p o r t t y p e s : : i n t e g e r ;
out d a t a p o r t t y p e s : : i n t e g e r ;
out d a t a p o r t t y p e s : : i n t e g e r ;
r e q u i r e s bus a c c e s s
runtime : : ethernet . unsecure ;
properties
I n i t i a l i z e E n t r y p o i n t => c l a s s i f i e r ( r t l 8 0 2 9 : : i n i t ) ;
POK : : Device Name => r t l 8 0 2 9 ;
end r t l 8 0 2 9 ;
abstract driver container
end d r i v e r c o n t a i n e r ;
a b s t r a c t implementation d r i v e r c o n t a i n e r . i
subcomponents
p : process d r i v e r . i ;
end d r i v e r c o n t a i n e r . i ;
device implementation r t l 8 0 2 9 . i
properties
D e v i c e D r i v e r => c l a s s i f i e r ( r t l 8 0 2 9 : : d r i v e r c o n t a i n e r . i ) ;
end r t l 8 0 2 9 . i ;
6.3.3
Validation des sp
ecifications
Les paragraphes suivants presentent les r`egles de validation qui ont ete appliquees sur ce cas detude. En particulier, elles valident la conformite du mod`ele avec les patrons de modelisation de larchitecture partitionnee, la bonne
specification des mecanismes disolation ainsi que le confinement des niveaux
de securite.
Conformit
e de larchitecture partitionn
ee
Tout comme pour le cas detude integrated , les r`egles de validation (section 4.3.1) analysent le mod`ele AADL et assurent quil decrit une architecture
partitionnee (utilisation de virtual processor, process et processor, etc.).
Dans le cas present, le mod`ele est valide : lenvironnement dexecution de
chaque partition est specifie au moyen dun composant virtual processor,
198
6.3.4
Validation de limplantation
Une fois les specifications validees, les programmes des deux nuds sont
automatiquement generes par notre chane doutils :
1. Le generateur de code configure la politique disolation temporelle et spatiale. Il cree egalement le code responsable du chiffrement/dechiffrement
des donnees `
a leur envoi/reception.
2. POK fournit les services necessaires `a lexecution de larchitecture : chargement et isolation des partitions, algorithmes de chiffrement, etc.
Nous utilisons loutil QEMU [13], pour executer les deux applications et simuler le reseau les connectant. Ce reseau virtuel emule un reseau Ethernet
traditionnel au dessus du protocole TCP/IP. Le trafic echange lors de lexecution des deux applications generees peut etre capture `a laide dun outil de
capture de paquets reseaux, tel Wireshark [86]. Afin de proceder `a lanalyse
des trames echangees, nous avons mis en place un protocole de test illustre
dans la figure 6.6. Chaque application generee est executee dans sa machine
virtuelle et le trafic echange entre elles est capture par Wireshark.
Noyau
Partition 3
Partition 2
Machine virtuelle
rceptrice
Partition 1
Partition 4
Partition 3
Partition 2
Partition 1
Machine virtuelle
mettrice
Noyau
rseau ethernet mul
Reproduction secret
af:26:c6:12
46:d7:49:9f
fa:5f:37:fa
ee:10:d3:96
40:b8:6f:27
8b:61:6d:dd
Capture secret
12:c6:26:af
9f:49:d7:46
fa:37:5f:fa
96:d3:10:ee
27:6f:8b:40
dd:6d:61:8b
Table 6.1 Comparaison des donnees obtenues par reproduction du chiffrement et des donnees capturees lors de lexecution
6.4
Une analyse de couverture de code a ete realisee sur chaque cas detude
afin devaluer notre approche avec les exigences de la norme DO178B.
6.4.1
Cas d
etude integrated
Taux de couverture
69%
74%
54%
54%
54%
47%
52%
R
ecept.
Emetteur
Les taux releves dans le cas detude integrated montrent des resultats equivalents pour les partitions flightdirector, displaymanager et pagecontentmanager, celles-ci ont toutes un taux de couverture de 54%. Ceci est d
u au fait que
ces partitions utilisent les memes services et disposent des memes ressources :
chacune execute une seule t
ache et utilise le service de communication interpartitions. Embarquant un nombre de ressources equivalent et utilisant les
memes services, il est donc normal que leur taux de couverture soit similaire.
Le taux de couverture de la partition warningannunciationmanager est
moins eleve alors quelle nutilise pas le service de communication. Ce faible
taux est explique par linclusion de fonctionnalites non utilisees : certaines
fonctionnalites sont toujours incluses par letape de generation de code alors
quelles ne sont pas utilisees par le syst`eme. Leur presence et leur non execution
reduit alors le taux de couverture. Ce resultat montre que le code genere de
la configuration des services de la plate-forme peuvent etre optimises.
Le taux de couverture le plus eleve est celui de la partition flightmanager
(74%). Ce resultat sexplique par le nombre plus important de fonctions quelle
utilise (communications intra- et inter-partitions) et donc, une execution plus
exhaustive des services de lenvironnement dexecution.
Enfin, le code du noyau est couvert `a 69%. La raison de ce faible taux de
couverture vient de lutilisation du service de Health Monitoring. Ce dernier
active la gestion des exceptions dans le noyau. Cependant, ces derni`eres netant
pas toutes levees `
a lexecution, une partie du code relatif `a ce service nest donc
pas execute et reduit le taux de couverture.
Composant
Noyau
Partition driver
Partition top-secret
Partition secret
Partition non-classifie
Noyau
Partition driver
Partition top-secret et secret
Partition non-classifie
Taux de couverture
79%
55%
58%
48%
68%
78%
48%
52%
67%
6.4.2
Cas d
etude MILS
6.5. Etude
de lempreinte memoire
de ces resultats demanderait alors une adaptation de ces fonctions importees
aux outils de generation de code.
6.4.3
Analyse des r
esultats
6.5
Etude
de lempreinte m
emoire
Gestion
tches
Isolation temporelle
Isolation spatiale
Gestion du temps
Communications
intra-partition
Communications inter-partitions
Gestion mmoire
Abstraction du matriel
Partition driver
rseau (1)
Partitions applicatives
avec chiffrement (2)
Interface Gestion
Pilotes de
noyau
tches priphriques
Gestion du
temps
Gnration de code
Partition applicative
sans chiffrement (3)
Isolation
temporelle
Isolation
spatiale
Communications
inter-partitions
Interface Gestion
noyau
tches
Couche
partition
Interface
noyau
Pilotes de priphriques
Gestion
mmoire
Abstraction du matriel
Couche noyau
Fonctions maths
Couche noyau
Algorithmes chiffrement
Couche partition
(libpok)
Architecture gnrique
Architecture gnre
Figure 6.7 Impact de la generation de code sur larchitecture et la couverture
de code pour le cas detude M ILS
detude MILS ).
6.5.1
Protocole de test
6.5. Etude
de lempreinte memoire
Composant
Noyau
Partition flightmanager
Partition flightdirector
Partition displaymanager
Partition
pagecontentmanager
Partition warningannunciationmanager
Partition
hardwaredisplay
Taille totale
23 Ko
22 Ko
17 Ko
15 Ko
Taille architecture
N/A
20 Ko
16 Ko
14 Ko
Taille applicatif
N/A
1.2 Ko
700 o
604 o
15 Ko
14 Ko
612 o
13 Ko
12 Ko
620 o
15 Ko
14 Ko
600 o
Table 6.4 Taille de chaque composant genere pour le cas detude integrated
6.5.2
R
esultats du cas d
etude integrated
La taille des partitions du cas detude integrated (tableau 6.4) est inferieure `
a 30 Ko. Elle correspond `a la somme de la taille de leur environnement
dexecution et du code applicatif quelles executent. La taille du noyau correspond `
a toutes ses fonctions et ressources quil inclut. Dans ce cas detude,
le noyau utilise plusieurs canaux de communication inter-partitions, ce qui a
pour consequence daugmenter ses exigences memoire (introduction de tampons demission/reception pour chaque canal).
Cependant, nous constatons que la taille des composants est dependante
de leurs exigences et leurs ressources. Pour proceder `a cette analyse, le tableau 6.5 reporte les fonctions et ressources utilisees par chaque partition. Si
la majorite a une taille inferieure `a 20 Ko et contient quune tache executant
un sous-programme, on peut observer que la partition flightmanager depasse
le seuil des 20 Ko. Cela est d
u au fait quelle utilise davantage de ressources
(7 t
aches) et de fonctionnalites (utilisation du mecanisme de communication
intra-partition).
6.5.3
R
esultats du cas d
etude MILS
Les resultats du cas detude MILS sont presentes dans le tableau 6.6.
Le noyau est particuli`erement leger (19Ko), tout comme les partitions. Ces
resultats sexpliquent par le peu de fonctionnalites quils utilisent (la figure 6.7
detaille les fonctionnalites embarquees dans chaque couche de larchitecture).
Lempreinte memoire la plus importante concerne la partition executant les
pilotes de peripheriques. Celle-ci embarque davantage de code que les autres,
les routines de gestion du peripherique reseau etant consequentes en terme de
taille.
Les autres partitions ont une taille dependante des fonctionnalites qui sont
incluses via le processus de generation de code. Celles utilisant des protocoles
de chiffrement embarquent alors les algorithmes qui leur sont associes, leur
ajoutant alors du code et augmentant leur taille.
205
T
aches
7
Flightdirector
Displaymanager
Pagecontentmanager
Warningannunciationmanager
Hardwaredisplay
Fonctionnalit
es
API ARINC653
Gestion des t
aches
Communication intra-partition
Communication inter-partitions
API ARINC653
Gestion des t
aches
Communication inter-partitions
API ARINC653
Gestion des t
aches
Communication inter-partitions
API ARINC653
Gestion des t
aches
Communication inter-partitions
API ARINC653
Gestion des t
aches
API ARINC653
Gestion des t
aches
Communication intra-partition
Communication inter-partitions
Taille
22 Ko
17 Ko
15 Ko
15 Ko
13 Ko
15 Ko
Table 6.5 Resume des ressources et fonctions utilisees par chaque partition
du cas detude integrated
6.5.4
Analyse des r
esultats
R
ecepteur
Emetteur
6.5. Etude
de lempreinte memoire
Composant
Noyau
Partition driver
Partition top-secret
Partition secret
Partition
nonclassifie
Noyau
Partition driver
Partition top-secret
et secret
Partition
nonclassifie
Taille totale
19 Ko
53 Ko
22 Ko
26 Ko
14 Ko
Taille architecture
N/A
N/A
21 Ko
25 Ko
13 Ko
Taille applicatif
N/A
N/A
888o
888o
888o
19 Ko
53 Ko
35 Ko
N/A
N/A
34 Ko
N/A
N/A
800 o
14 Ko
13 Ko
800 o
Table 6.6 Taille de chaque composant genere pour le cas detude MILS
6.5.5
Par rapport aux precedents travaux sur la generation de code [116], notre
approche reduit considerablement la taille des applications creees. Les deux
approches existantes de generation de code `a partir de mod`eles AADL produisent du C [31] et de lAda [116]. Les applications quelles gen`erent sont
integrees avec un syst`eme dexploitation traditionnel (tel Linux ou RTEMS).
Lempreinte memoire des applications generees etait toujours superieure `a
400Ko. Cette difference de resultats sexplique par deux facteurs :
1. les programmes generes sont executes au-dessus dun syst`eme dexploitation generique et necessite linclusion de biblioth`eques tierces (runtime
Ada dans le cas des travaux portant sur la generation de code Ada, libairie C compilee statiquement pour le code C genere). Au contraire, notre
approche int`egre le code genere avec un environnement dexecution leger
et adapte `
a chaque couche du syst`eme en fonction de ses exigences.
2. aucune selection des services nest realisee par le generateur. Par consequent, les applications generees incluent de nombreuses fonctionnalites
qui ne sont pas utiles mais toutefois inclues dans lapplication. Notre approche adresse ce probl`eme en desactivant par defaut toute fonctionnalite
et active chacune dentre elle en fonction des besoins de lapplication.
Enfin, `
a titre de comparaison, un syst`eme dexploitation dedie au tempsreel comme RTEMS [79] a une empreinte memoire superieure `a 100Ko meme
lorsquil ninclut que le minimum de fonctionnalites. A linverse, notre approche de configuration fine de chaque niveau de larchitecture assure une
empreinte memoire optimisee qui permet de generer des noyaux dont la taille
est inferieure `
a 20Ko.
207
Synth`
ese de ce chapitre
Ce chapitre du manuscrit a mis en pratique la methode developpee
dans les chapitres precedents au travers de deux cas detudes : lun
concentre sur la s
urete, lautre, sur la securite. Il detaille lutilisation
de nos patrons de conception et nos r`egles de validation pour lassurance de ces deux exigences. Laspect implantation automatique
permet la bonne implantation des specifications et la certification du
syst`eme valide leur respect a` lexecution (assurance de la bonne implantation de la politique de Health Monitoring ou disolation des
donnees).
Enfin, les etudes de performances ont montre la conformite des applications produites aux contraintes des syst`emes embarques/tempsreel. Les empreintes memoires reportees sont minimales, inferieures
aux travaux precedents qui constituaient dej`a une avancee significative dans la reduction de la consommation memoire. La generation
de code de notre processus ameliore ces resultats en reduisant les
fonctionnalites des syst`emes generes. Cette selection des services de
la plate-forme dexecution reduit fortement lempreinte memoire et
maximise la couverture de code.
208
Chapitre 7
Conclusions et Perspectives
Sommaire du chapitre
7.1
Conclusions . . . . . . . . . . . . . . . . . . . . . . . .
7.1.1 Assurance de securite et de s
urete de bout en bout .
7.1.2 Reunion de la securite et de la s
urete . . . . . . . . .
7.1.3 Benefices de lapproche dirigee par les mod`eles . . .
7.1.4 POK, premier syst`eme dexploitation libre pour la
creation de syst`emes critiques s
urs et securises . . .
7.2 Perspectives . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1 Description plus fine de larchitecture . . . . . . . .
7.2.2 Vers une meilleure certification . . . . . . . . . . . .
7.2.3 Amelioration de notre plate-forme, POK . . . . . . .
7.2.4 Developpement de la communaute de POK . . . . .
209
209
211
211
212
212
213
213
214
214
7.1
Conclusions
7.1.1
Assurance de s
ecurit
e et de s
uret
e de bout en bout
7.1. Conclusions
7.1.2
R
eunion de la s
ecurit
e et de la s
uret
e
7.1.3
B
en
efices de lapproche dirig
ee par les mod`
eles
7.1.4
7.2
Perspectives
7.2. Perspectives
7.2.1
7.2.2
7.2.3
Am
elioration de notre plate-forme, POK
Enfin, le dernier axe de recherche propose concerne notre plate-forme dexecution partitionnee, POK. La recherche autour des syst`emes partitionnes est
particuli`erement active (nombreux projets tels que SPICES [2], PARSEC,
Xtratum [29], etc.) et am`ene de nouvelles approches dans notre contexte.
Dun point de vue securite, il est pertinent detudier linclusion de methodes de chiffrement asymetrique. Bien que plus lourd en ressources processeurs et memoires, leur utilisation peut etre pertinente lorsque peu dentites
echangent des donnees et que celles-ci sont hautement classifiees (meilleurs mecanismes de protection). Toutefois, cette integration necessite devaluer le co
ut
(consommation processeur et memoire) de leur utilisation et limpact en terme
de performance (temps de chiffrement/dechiffrement nexpirant pas avant une
echeance donnee, etc.).
De plus, si lisolation spatiale constitue une plus-value en terme de securite ou de s
urete, le concepteur dapplication peut souhaiter introduire plus de
flexibilite dans lordonnancement de son syst`eme [78]. Par exemple, certaines
partitions necessitent une telle adaptabilite, notamment celles executant des
pilotes de peripheriques. Pour ces derni`eres, il peut etre pertinent de rel
acher le processeur lorsque le peripherique controle na aucune demande `a
traiter et de lui allouer davantage de temps dexecution lorsque de nombreuses
donnees lui sont transmises. Nous avons commence `a explorer ces aspects en
incluant le protocole dordonnancement, HFPPS [30]. Ce dernier alloue du
temps dexecution supplementaire aux partitions quand elles en ont besoin `a
condition quelles le restituent lors des periodes suivantes.
Enfin, notre plate-forme, POK, implante lAPI du standard ARINC653.
Toutefois, sa conformite na pas ete validee, ces aspects relevant davantage de
problematiques dingenierie industrielle. La politique de test mise en uvre
dans POK valide le bon fonctionnement de chaque service, sans pour autant
tester exhaustivement tous les cas dutilisation. Toutefois, une exploitation
commerciale ou industrielle de POK necessiterait dinclure une telle campagne
de test afin de valider la conformite de notre plate-forme avec le standard.
Enfin, un dernier axe de developpement industriel consisterait `a implanter les
services secondaires dARINC653 ( Extended Services : syst`eme de fichiers,
sampling ports etendus, etc.). Lajout de ces services supplementaires compl`eterait ainsi notre plate-forme dexecution et offrirait davantage de possibilites
aux concepteurs dapplications (stockage de fichiers, communications pouvant
supporter davantage de contraintes, etc.).
7.2.4
D
eveloppement de la communaut
e de POK
Au cours de nos travaux, le projet POK et la suite doutils associee (Ocarina, REAL) ont ete utilises par plusieurs partenaires, aussi bien du domaine
industriels (Thales, Adacore) et academique (TELECOM ParisTech,
es). De
LIP6, Ecole pour lInformatique et les Techniques Avance
ces utilisations est nee une synergie entre ces differents contributeurs, aboutissant `
a la creation dune communaute. Celle-ci sest regroupee autour dun
site web et dune liste de diffusion pour publier les travaux issus du projet et
214
7.2. Perspectives
discuter des developpements futurs.
Une perspective de ces travaux constitue `a continuer `a faire vivre cette
communaute pour ameliorer les solutions developpees autour du projet. Celuici ayant pris naissance `
a TELECOM ParisTech, cest tout naturellement
cette institution qui reprendra ce projet et sera garante de la vie future de la
communaute ainsi creee. Par ailleurs, plusieurs doctorants ont dej`a commence
`a travailler sur des problematiques connexes `a POK et un projet de recherche
utilisant le projet (PARSEC, en partenariat avec Thales, le CEA, Ellidiss,
le
com ParisTech) est en
INRIA, Systerel, OpenWide, Alstom et Te
cours de realisation. La vie du projet et de la communaute devraient donc etre
assures `
a long terme.
215
216
Bibliographie
[1] Common Criteria for Information Technology Security Evaluation - http://
www.commoncriteriaportal.org/.
[2] SPICES-ITEA project - http://www.spices-itea.org/.
[3] Static Source Code Analysis Tools for C - http://www.spinroot.com/
static/.
[4] Airlines Electronic Engineering. Avionics Application Software Standard Interface. Technical report, Aeronautical Radio, INC, 1997.
[5] J. Alves-Foss, W. S. Harrison, P. Oman, and C. Taylor. The MILS Architecture
for High-Assurance Embedded Systems. CROSSTALK - International Journal
of Embedded Systems, Aout 2005.
[6] J. Alves-Foss, C. Taylor, and P. Oman. A Multi-Layered Approach to Security
in High Assurance Systems. In HICSS 04 : Proceedings of the Proceedings of the
37th Annual Hawaii International Conference on System Sciences (HICSS04)
- Track 9, page 90302.2, Washington, DC, USA, 2004. IEEE Computer Society.
[7] B. Ames. Real-time software goes modular. Military & Aerospace Electronics,
14(9), 2003.
[8] A. J. Arlow, C. J. Duffy, and J. A. McDermid. Safety Specification of the
Active Traffic Management Control System for English Motorways. In 24th
International System Safety Conference, pages 54 63, 2006.
[9] ARTIST - Network of Excellence on Embedded Systems Design. Development
of UML for Real-time Embedded Systems - http://www.artist-embedded.
org/artist/Development-of-UML-for-Real-time.html. Technical report,
ARTIST embedded, 2008.
[10] J. Barnard. The Value of a Mature Software Process. In United Space Alliance,
presentation to UK Mission on Space Software, May 1999.
[11] W. Barnes. ARINC 653 and why is it important for a safety-critical RTOS,
April 2004.
[12] D. E. Bell and L. J. LaPadula. Secure Computer System : Unified Exposition
and MULTICS Interpretation. Technical report, The MITRE Corporation,
1976.
[13] F. Bellard. QEMU, a fast and portable dynamic translator. In ATEC 05 :
Proceedings of the annual conference on USENIX Annual Technical Conference,
pages 4141, Berkeley, CA, USA, 2005. USENIX Association.
[14] C. Beounes, M. Aguera, J. Arlat, S. Bachmann, C. Bourdeau, J.-E. Doucet,
K. Kanoun, J.-C. Laprie, S. Metge, J. Moreira de Souza, D. Powell, and P. Spiesser. SURF-2 : A program for dependability evaluation of complex hardware
and software systems. In Fault-Tolerant Computing, 1993. FTCS-23. Digest of
Papers., The Twenty-Third International Symposium on, pages 668673, Jun
1993.
[15] Bernard Cole. Telelogic brings SysML to its TAU G2 system modeling suite http://www.embedded.com/news/embeddedindustry/172900319.
[16] S. Bernardi and J. Merseguer. A UML profile for dependability analysis of realtime embedded systems. In WOSP 07 : Proceedings of the 6th international
workshop on Software and performance, pages 115124, New York, NY, USA,
2007. ACM.
[17] S. Bernardi, J. Merseguer, and D. C. Petriu. Adding Dependability Analysis
Capabilities to the MARTE Profile. In MoDELS 08 : Proceedings of the 11th
international conference on Model Driven Engineering Languages and Systems,
pages 736750, Berlin, Heidelberg, 2008. Springer-Verlag.
[18] K. J. Biba. Integrity Considerations for Secure Computer Systems. Technical
report, MITRE Corp., 04 1977.
[19] E. Biham and A. Shamir. Differential cryptanalysis of des-like cryptosystems. In
CRYPTO 90 : Proceedings of the 10th Annual International Cryptology Conference on Advances in Cryptology, pages 221, London, UK, 1991. SpringerVerlag.
217
Bibliographie
[20] C. Boettcher, R. DeLong, J. Rushby, and W. Sifre. The MILS Component
Integration Approach to Secure Information Sharing. In 27th IEEE/AIAA
Digital Avionics Systems Conference (DASC), 2008.
[21] E. Borde, G. Hak, and L. Pautet. Mode-Based Reconfiguration of Critical
Software Component Architectures. In Design Automation and Test in Europe
(DATE09), 2009.
[22] M. Bordin, C. Comar, T. Gingold, J. Guitton, O. Hainque, T. Quinot, J. Delange, J. Hugues, and L. Pautet. Couverture : an Innovative Open Framework
for Coverage Analysis of Safety Critical Applications. Ada User Journal, pages
248256, Dec. 2009.
[23] D. D. F. Brewer and D. M. J. Nash. The Chinese Wall Security Policy. volume 0,
page 206, Los Alamitos, CA, USA, 1989. IEEE Computer Society.
[24] CEA/INRIA. Frama-C - http://www.frama-c.cea.fr/index.html.
[25] J. Chilenski. Aerospace Vehicle Systems Institute Systems and Software Integration Verification Overview. AADL Safety and Security Modeling Meeting,
Nov. 2007.
[26] Common Criteria Testing Laboratory. INTEGRITY-178B Separation Kernel, certification report - http://www.commoncriteriaportal.org/files/
epfiles/st_vid10119-vr.pdf. Technical report, 2008.
[27] Common Criteria Testing Laboratory. XTS-400/STOP 6.4 U4 - Validation Report, certification report : http://www.commoncriteriaportal.org/files/
epfiles/st_vid10293-vr.pdf. Technical report, 2008.
[28] D. Coppersmith, D. B. Johnson, S. M. Matyas, T. J. Watson, D. B. Johnson,
and S. M. Matyas. Triple DES Cipher Block Chaining with Output Feedback
Masking, 1996.
[29] A. Crespo, I. Ripoll, and M. Masmano. Partitioned Embedded Architecture
Based on Hypervisor : The XtratuM Approach. volume 0, pages 6772, Los
Alamitos, CA, USA, 2010. IEEE Computer Society.
[30] R. I. Davis and A. Burns. Hierarchical Fixed Priority Pre-Emptive Scheduling.
In RTSS 05 : Proceedings of the 26th IEEE International Real-Time Systems
Symposium, pages 389398, Washington, DC, USA, 2005. IEEE Computer Society.
[31] J. Delange. PolyORB-HI-C user guide - http: // aadl. telecom-paristech.
fr . Ecole Nationale Superieure des Telecommunications, 46 rue Barrault, 2007.
[32] J. Delange. POK Developpers Guide. Ecole Nationale Superieure des Telecommunications, 46 rue Barrault, 2008.
[33] J. Delange. POK Users Guide. Ecole Nationale Superieure des Telecommunications, 46 rue Barrault, 2008.
[34] J. Delange. ARINC653 Annex for AADLv2 - to be published. Technical report,
2010.
[35] J. Delange, J. Hugues, L. Pautet, and D. de Niz. A MDE-based Process for
the Design, Implementation and Validation of Safety Critical Systems. In Proceedings of the 5th UML& AADL Workshop (UML&AADL 2010), University
of Oxford, UK, Mar. 2010.
[36] J. Delange, J. Hugues, L. Pautet, and B. Zalila. Code Generation Strategies
from AADL Architectural Descriptions Targeting the High Integrity Domain.
In 4th European Congress ERTS, Toulouse, January 2008.
[37] J. Delange, L. Pautet, A. Plantec, M. Kerboeuf, F. Singhoff, and F. Kordon.
Validate, simulate, and implement ARINC653 systems using the AADL. Ada
Letters, 29(3) :3144, 2009.
[38] S. Demathieu, F. Thomas, C. Andre, S. Gerard, and F. Terrier. First Experiments Using the UML Profile for MARTE. In ISORC 08 : Proceedings of the
2008 11th IEEE Symposium on Object Oriented Real-Time Distributed Computing, pages 5057, Washington, DC, USA, 2008. IEEE Computer Society.
[39] Department of Defense of the United States. Trusted Computer System Evaluation Criteria (Orange Book).
[40] A. Easwaran, I. Lee, O. Sokolsky, and S. Vestal. A Compositional Scheduling
Framework for Digital Avionics Systems. In Proceeding of the 15th IEEE International Conference on Embedded and Real-Time Computing Systems and
Applications (RTCSA 2009), 2009.
218
219
Bibliographie
[65] R. N. Kashi and M. Amarnathan. Perspectives on the use of model based
development approach for safety critical avionics software development. In
International Conference on Aerospace Science and Technology, 2008.
[66] J. Lehoczky, L. Sha, and Y. Ding. The rate monotonic scheduling algorithm :
exact characterization and average case behavior. In Proceedings of the 10th
Real Time Systems Symposium (RTSS 1989), pages 166171, 1989.
[67] Lockheed-Martin and Boeing and Rockwell Collins and Green Hills Software
and LynuxWorks and Objective Interface and University of Idaho. U.S. Government Protection Profile for Separation Kernels in Environments Requiring
High Robustness, http://www.commoncriteriaportal.org/files/ppfiles/
pp_skpp_hr_v1.03.pdf, 2003.
[68] LynuxWorks. LynxSecure Embedded Hypervisor and Separation Kernel http://www.lynuxworks.com/virtualization/hypervisor.php.
[69] J. Mason, K. Luecke, and J. Luke. Device drivers in time and space partitioned operating systems. In 25th Digital Avionics Systems Conference, 2006
IEEE/AIAA, pages 1 9, 15-19 2006.
[70] J. McDermid. Software Hazard and Safety Analysis - ftp://ftp.cs.york.ac.
uk/pub/hise/mcdermid.pdf, January 2004.
[71] J. McDermid and T. Kelly. Software in Safety Critical Systems : Achievement and Prediction - http://www-users.cs.york.ac.uk/tpk/inuce2004.
pdf. Nuclear Future, 03 :140145, 2006.
[72] J. A. Mcdermid, M. Nicholson, D. J. Pumfrey, and P. Fenelon. Experience
with the application of HAZOP to computer-based systems. In Proceedings of
the Tenth Annual Conference on Computer Assurance. COMPASS95. Systems
Integrity, Software Safety and Process Security, pages 37 48, 1995.
[73] Med KECHIDI (LEREPS-GRES). Aeronautical manufacturer versus architectintegrator : a new industrial model for Airbus (In French). Cahiers du GRES
2008-11, Groupement de Recherches Economiques et Sociales, 2008.
[74] A. K. Mok, X. Feng, and D. Chen. Resource Partition for Real-Time Systems. In
Seventh IEEE Real-Time Technology and Applications Symposium (RTAS01),
May 2001.
[75] NASA. Mars Climate Orbiter - Mishap Investigation Board - ftp://ftp.hq.
nasa.gov/pub/pao/reports/1999/MCO_report.pdf. Technical report, 1999.
[76] National Bureau of Standards of the United States of America. Data Encryption Standard. Number 46-1 in Federal Information Processing Standards
publication. 1988. Category : ADP operations ; subcategory : computer security. Supersedes FIPS PUB 46, 1977 January 15. Shipping list no. : 88-367-P.
Reaffirmed 1988 January 22.
[77] National Institute of Standards and Technology (NIST). The Economic Impacts of Inadequate Infrastructure for Software Testing - http://www.nist.
gov/director/prog-ofc/report02-3.pdf. Technical report, 2002.
[78] T. Nolte, M. Behnam, M. Asberg, R. J. Bril, and I. Shin. Hierarchical Scheduling of Complex Embedded Real-Time Systems. In Ecole dEte Temps-Reel
(ETR09), 2009.
[79] OARCorp. RTEMS - http://www.rtems.com.
[80] Object Management Group. UML Profile for Schedulability, Performance, and
Time Specification - http://www.omg.org/docs/formal/05-01-02.pdf, January 2002.
[81] Object Management Group. OCL 2.0 Specification - http://www.omg.org/
spec/OCL/2.0/, June 2005.
[82] Object Management Group. CORBA Component Model Specification - http:
/http://www.omg.org/docs/formal/06-04-01.pdf/. Technical report, 2006.
[83] Object Management Group. Systems Modeling Language (SysML) - http:
//www.omgsysml.org, 2007.
[84] Object Management Group. UML Profile for Modeling and Analysis of Realtime and Embedded Systems (MARTE) - http://www.omgmarte.org, June
2008.
[85] Open Source Initiative.
BSD licence - http://www.opensource.org/
licenses/bsd-license.php.
220
[86] A. Orebaugh, G. Ramirez, J. Burke, and L. Pesce. Wireshark & Ethereal Network Protocol Analyzer Toolkit (Jay Beales Open Source Security). Syngress
Publishing, 2006.
[87] R. F. Paige, L. M. Rose, X. Ge, D. S. Kolovos, and P. J. Brooke. FPTC :
Automated Safety Analysis for Domain-Specific Languages. In Models in Software Engineering, volume Volume 5421/2009, pages 229242. Springer Berlin
/ Heidelberg, 2009.
[88] S. Paynter, J. Armstrong, and J. Haveman. ADL : An Activity Description
Language for Real-Time Networks. Formal Aspects of Computing, pages 120
144, 2000.
[89] System Application Program Interface (API) [C Language]. Information
technologyPortable Operating System Interface (POSIX). 1990.
[90] G. Quaranta and P. Mantegazza. Using Matlab-Simulink RTW To Build Real
Time Control Applications In User Space With RTAI-LXRT, 2001.
[91] D. J. Reifer. Industry Software Cost, Quality and Productivity Benchmarks.
http://www.compaid.com/caiinternet/ezine/Reifer-Benchmarks.pdf.
[92] D. W. Reinhardt. Considerations in the Preference for and Application of
RTCA/DO-178B in the Australian Military Avionics Context. In T. Cant,
editor, Thirteenth Australian Conference on Safety-Related Programmable Systems (SCS 2008), volume 100 of CRPIT, pages 4968, Canberra, Australia,
2008. ACS.
[93] M. Rhodes-Ousley, R. Bragg, and K. Strassberg. Network Security : The Complete Reference. McGraw-Hill Osborne Media, 2003.
[94] RTCA Inc. Software considerations in airborne systems and equipment certification (DO178B).
[95] A. E. Rugina, K. Kanoun, and M. Kaaniche. The ADAPT Tool : From AADL
Architectural Models to Stochastic Petri Nets through Model Transformation.
Technical Report arXiv :0809.4108, Sep 2008. Comments : 6 pages.
[96] J. Rushby. The Bell and La Padula Security Model. Computer Science Laboratory, SRI International, Menlo Park, CA, 1986. Draft Technical Note.
[97] J. Rushby. Separation and Integration in MILS (The MILS Constitution).
Technical report, SRI International, 2008.
[98] SAE Aerospace. Architecture Analysis and Design Language (AADL), 2004.
[99] M. A. S
anchez-Puebla and J. Carretero. A new approach for distributed computing in avionics systems. In ISICT 03 : Proceedings of the 1st international
symposium on Information and communication technologies, pages 579584.
Trinity College Dublin, 2003.
[100] C. Savarese and B. Hart. The Caesar Cipher - http://starbase.trincoll.
edu/~crypto/historical/caesar.html.
[101] B. Schneier. Products that use Blowfish - http://www.schneier.com/
blowfish-products.html.
[102] B. Schneier. Description of a New Variable-Length Key, 64-bit Block Cipher
(Blowfish. In In Fast Software Encryption, Cambridge Security Workshop Proceedings, pages 191204. Springer-Verlag, 1994.
[103] B. Schneier. Description of a New Variable-Length Key, 64-bit Block Cipher
(Blowfish) . In Fast Software Encryption, Cambridge Security Workshop, pages
191204, London, UK, 1994. Springer-Verlag.
[104] F. Singhoff, J. Legrand, L. N. Tchamnda, and L. Marce. Cheddar : a Flexible
Real Time Scheduling Framework. ACM Ada Letters journal, 24(4) :1-8, ACM
Press. Also published in the proceedings of the ACM SIGADA International
Conference, Atlanta, 15-18 November, 2004, Nov. 2004.
[105] Software Engineering Institute. Open Source AADL Tool Environment. Technical report, Software Engineering Institute - Carnegie Mellon University, 2006.
[106] Z. Stephenson, M. Nicholson, and J. McDermid. Flexibility and Manageability
of IMS Projects. In 24th International System Safety Conference, 2006.
[107] Z. R. Stephenson, J. A. McDermid, and A. G. Ward. Health Modeling for
Agility in Safety-Critical Systems Development. In 1st IET Conference on
System Safety, page 260, 2006.
[108] SysML Forum. SysML tools - http://www.sysmlforum.com/tools.htm.
221
Bibliographie
[109] TELECOM ParisTech.
TELECOM ParisTech AADL Portal http ://aadl.telecom-paristech.fr.
[110] The OpenSSL Project. OpenSSL - http://www.openssl.org. Programa de
computador, December 1998.
[111] G. Uchenick and M. Vanfleet. Multiple Independent Levels of Safety and Security : High Assurance Architecture for MSLS/MLS. In IEEE, editor, Military
Communications Conference, 2005. MILCOM, 2005.
[112] T. Vergnaud, J. Hugues, L. Pautet, and F. Kordon. Rapid Development Methodology for Customized Middleware. In Proceedings of the 16th IEEE International Workshop on Rapid System Prototyping (RSP05), pages 111117,
Montreal, Canada, June 2005. IEEE.
[113] M. Wallace. Modular Architectural Representation and Analysis of Fault Propagation and Transformation. Electr. Notes Theor. Comput. Sci., 141(3) :53
71, 2005.
[114] M. Whalen, J. Schumann, and B. Fischer. Synthesizing certified code. In L.-H.
Eriksson and P. A. Lindsay, editors, FME 2002 : Formal Methods - Getting
IT Right, International Symposium of Formal Methods Europe, volume Lectur,
pages 431450. Springer Verlag, 2002.
[115] T. W. Williams, M. R. Mercer, J. P. Mucha, and R. Kapur. Code Coverage,
What Does It Mean in Terms of Quality ? In Proceedings of the Annual Reliability and Maintainability Symposium, pages 420 424, 2001.
[116] B. Zalila. Configuration et deploiement dapplications temps-reel reparties embarquees `
a laide dun langage de description darchitecture. PhD thesis, TELECOM ParisTech, 2008.
[117] B. Zalila, I. Hamid, J. Hugues, and L. Pautet. Generating distributed high
integrity applications from their architectural description. In Ada-Europe07 :
Proceedings of the 12th international conference on Reliable software technologies, pages 155167, Berlin, Heidelberg, 2007. Springer-Verlag.
[118] B. Zalila, J. Hugues, and L. Pautet. Ocarina user guide - http: // aadl.
telecom-paristech. fr . TELECOM ParisTech.
[119] J. Zhou and J. Alves-Foss. Architecture-based refinements for secure computer
systems design. In PST 06 : Proceedings of the 2006 International Conference
on Privacy, Security and Trust, pages 111, New York, NY, USA, 2006. ACM.
[120] H. Zimmermann. OSI Reference ModelThe ISO Model of Architecture
for Open Systems Interconnection. IEEE Transactions on Communications,
28(4) :425432, 1980.
[121] M. Zitser, D. E. S. Group, and T. Leek. Testing Static Analysis Tools using
Exploitable Buffer Overflows from Open Source Code. In In Proceedings of
the 12th ACM SIGSOFT twelfth international symposium on Foundations of
software engineering, pages 97106. ACM Press, 2004.
222
Annexe A
223
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
224
224
224
225
225
225
226
A.1
A.1.1
Publications
Articles de conf
erence
Etats-Unis,
Novembre 2009.
Julien Delange, Laurent Pautet et Peter H. Feiler. Validating safety and
security requirements for partitioned architectures. In Proceedings of the
14th International Conference on Reliable Software Technologies - Ada
Europe, pages 30-43, Brest, France, Juin 2009.
Julien Delange, Laurent Pautet et Fabrice Kordon. Code Generation
Strategies for Partitioned Systems. In Proceedings of the 29th IEEE
Real-Time Systems Symposium (RTSS08), IEEE Computer Society,
pages 53-56, Barcelone, Espagne, Decembre 2008.
Julien Delange, Jer
ome Hugues Laurent Pautet et Bechir Zalila. Code
Generation Strategies from AADL Architectural Descriptions Targeting
the High Integrity Domain. In Proceedings of the 4th European Congress
ERTS, Toulouse, Paris, Janvier 2008.
A.1.2
Chapitre de livre
Julien Delange, Laurent Pautet et Fabrice Kordon. Model-Based Approach for the Configuration of ARINC653 systems dans Reconfigurable Embedded Control Systems : Applications for Flexibility and Agi` paratre.
lity . IGI Global, 2010. A
224
A.1. Publications
A.1.3
Articles de Journaux
A.1.4
Documents de standardisation
A.1.5
Rapports techniques
225
A.2
Glossaire
A.2. Glossaire
ordre fixe, predetermine et ne prenant pas en compte les param`etres
temporels comme leur periode ou echeance.
Segmentation : mecanisme de division de la memoire physique en segments caracterises par leur adresse de debut et leur taille. Contrairement
a la pagination, la segmentation nintroduit quun simple decalage me`
moire et nentraine pas dindeterminisme dans la gestion de la memoire.
S
ecurit
e : Ensemble de fonctions et mecanismes destines `a proteger
linformation des entites nayant pas lautorisation de les manipuler.
S
uret
e : Ensemble de mecanismes mis en place pour assurer la continuite
de fonctionnement du syst`eme.
227
228
Annexe B
Code source
Sommaire
B.1 Code de POK . . . . . . . . . . . . . . . . . . . . . . .
B.1.1 Initialisation des partitions . . . . . . . . . . . . . .
B.1.2 Fonction de recouvrement du noyau . . . . . . . . .
B.1.3 Fonction de recouvrement des erreurs des partitions
B.1.4 Fonction de recouvrement des erreurs des taches dans
une partition . . . . . . . . . . . . . . . . . . . . . .
B.2 Th
eor`
emes de validation impl
ement
es avec REAL .
B.2.1 Conformite de la specification . . . . . . . . . . . . .
B.2.2 Isolation temporelle . . . . . . . . . . . . . . . . . .
B.2.3 Isolation spatiale . . . . . . . . . . . . . . . . . . . .
B.2.4 Specification du Health Monitoring . . . . . . . . . .
B.2.5 Specification de la criticite des partitions . . . . . .
B.2.6 Couverture des fautes . . . . . . . . . . . . . . . . .
B.2.7 Impact de la politique de recouvrement . . . . . . .
B.2.8 Implementation des mecanismes de securite . . . . .
B.2.9 Implementation de la coherence des mecanismes de
securite . . . . . . . . . . . . . . . . . . . . . . . . .
B.2.10 Validation politique de securite Bell-Lapadula . . . .
B.2.11 Validation politique de securite Biba . . . . . . . . .
B.2.12 Validation de la politique de securite MILS . . . . .
B.3 Librairie de componsants . . . . . . . . . . . . . . . .
B.4 Repr
esentation textuelle des cas d
etudes . . . . . .
B.4.1 Cas detude integrated . . . . . . . . . . . . . .
B.4.2 Cas detude MILS . . . . . . . . . . . . . . . . .
B.5 Code source de test des cas d
etudes . . . . . . . . .
B.5.1 Programme de chiffrement . . . . . . . . . . . . . . .
229
230
230
231
232
233
233
233
234
234
235
236
236
237
238
238
238
239
239
240
247
247
265
275
275
B.1
Code de POK
B.1.1
pok ret t p o k p a r t i t i o n i n i t ()
{
i;
uint8 t
threads index = 0;
uint32 t
const u i n t 3 2 t
= base addr ;
= size ;
= POK SCHED RR ;
230
B.1.2
B.1.3
void p o k p a r t i t i o n e r r o r
( uint8 t partition ,
uint32 t error )
{
switch ( p a r t i t i o n )
{
case 0:
{
switch ( e r r o r )
{
c a s e POK ERROR KIND PARTITION INIT :
{
p o k p a r t i t i o n s e t m o d e ( 0 , POK PARTITION MODE STOPPED ) ;
break ;
}
c a s e POK ERROR KIND PARTITION SCHEDULING :
{
p o k p a r t i t i o n s e t m o d e ( 0 , POK PARTITION MODE STOPPED ) ;
break ;
}
}
break ;
}
case 1:
{
switch ( e r r o r )
{
c a s e POK ERROR KIND PARTITION INIT :
{
p o k p a r t i t i o n s e t m o d e ( 1 , POK PARTITION MODE STOPPED ) ;
break ;
}
c a s e POK ERROR KIND PARTITION SCHEDULING :
{
p o k p a r t i t i o n s e t m o d e ( 1 , POK PARTITION MODE STOPPED ) ;
232
break ;
}
}
break ;
}
}
}
B.1.4
B.2
Th
eor`
emes de validation impl
ement
es avec REAL
Afin de faciliter la lecture, lordre des theor`emes implementes suit lorganisation de la section dediee `a la validation (section 4.3).
B.2.1
Conformit
e de la sp
ecification
233
theorem C o n t a i n s M e m o r i e s
f o r e a c h s i n s y s t e m s e t do
mainmem := { y i n memory Set | i s s u b c o m p o n e n t o f ( y , s ) } ;
p a r t i t i o n s m e m := { x i n memory Set | i s s u b c o m p o n e n t o f ( x , mainmem ) } ;
c h e c k ( ( C a r d i n a l ( mainmem ) > 0 ) and
( p r o p e r t y e x i s t s ( p a r t i t i o n s m e m , B y t e C o u n t ) )
end C o n t a i n s M e m o r i e s ;
);
B.2.2
Isolation temporelle
theorem p a r t i t i o n s e x e c u t i o n
f o r e a c h p i n P r o c e s s o r S e t do
VP := { x i n V i r t u a l P r o c e s s o r S e t | I s S u b c o m p o n e n t O f ( x , p ) } ;
c h e c k ( I s I n (VP , G e t P r o p e r t y V a l u e ( p , ARINC653 : : S l o t s A l l o c a t i o n ) ) o r
I s I n (VP , G e t P r o p e r t y V a l u e ( p , POK : : S l o t s ) ) ) ;
end p a r t i t i o n s e x e c u t i o n ;
theorem s c h e d u l i n g m a j o r f r a m e
f o r e a c h cpu i n p r o c e s s o r s e t do
c h e c k ( f l o a t ( p r o p e r t y ( cpu , ARINC653 : : M o d u l e M a j o r F r a m e ) ) =
sum ( p r o p e r t y ( cpu , ARINC653 : : P a r t i t i o n S l o t s ) ) ) ;
end s c h e d u l i n g m a j o r f r a m e ;
B.2.3
Isolation spatiale
theorem P a r t i t i o n s M e m o r y
f o r e a c h p i n P r o c e s s S e t do
mem := { y i n Memory Set | I s B o u n d T o ( y , p ) } ;
c h e c k ( C a r d i n a l (mem) = 0 ) ;
end P a r t i t i o n s M e m o r y ;
theorem c h e c k m e m o r y r e q u i r e m e n t s p a r t i t i o n s
234
Listing B.10 Theor`eme validant la taille des segments memoires associes aux
partitions
B.2.4
Sp
ecification du Health Monitoring
theorem c h e c k p r o c e s s o r h m v a l i d i t y
f o r e a c h mycpu i n p r o c e s s o r s e t do
v a r a l l o w e d m o d u l e e r r o r s := l i s t ( M o d u l e C o n f i g ,
M o d u l e I n i t , M o d u l e S c h e d u l i n g ) ;
v a r a l l o w e d m o d u l e a c t i o n s := l i s t ( N o t h i n g ,
M o d u l e S t o p , M o d u l e R e s t a r t ) ;
v a r m o d u l e a c t i o n s := ( p r o p e r t y
( mycpu , ARINC653 : : HM Actions ) ) ;
var module errors
:= ( p r o p e r t y
( mycpu , ARINC653 : : H M Errors ) ) ;
check (
( p r o p e r t y e x i s t s ( mycpu , ARINC653 : : HM Actions ) ) and
( p r o p e r t y e x i s t s ( mycpu , ARINC653 : : H M Errors ) ) and
( i s i n ( m o d u l e a c t i o n s , a l l o w e d m o d u l e a c t i o n s ) ) and
( i s i n ( module errors , allowed module errors
)));
end c h e c k p r o c e s s o r h m v a l i d i t y ;
theorem c h e c k v i r t u a l p r o c e s s o r h m v a l i d i t y
f o r e a c h vp i n v i r t u a l p r o c e s s o r s e t do
v a r a l l o w e d m o d u l e e r r o r s := l i s t ( P a r t i t i o n C o n f i g ,
P a r t i t i o n I n i t , P a r t i t i o n S c h e d u l i n g , P a r t i t i o n H a n d l e r ) ;
v a r a l l o w e d m o d u l e a c t i o n s := l i s t ( N o t h i n g ,
P a r t i t i o n S t o p , P a r t i t i o n R e s t a r t ) ;
v a r m o d u l e a c t i o n s :=
( p r o p e r t y ( vp , ARINC653 : : HM Actions ) ) ;
( p r o p e r t y ( vp , ARINC653 : : H M Errors ) ) ;
:=
check ( ( p r o p e r t y e x i s t s
( property exists
( i s i n ( module
( i s i n ( module
235
theorem c h e c k t h r e a d h m v a l i d i t y
f o r e a c h t h r i n t h r e a d s e t do
v a r a l l o w e d m o d u l e e r r o r s := l i s t ( D e a d l i n e M i s s ,
A p p l i c a t i o n E r r o r , N u m e r i c E r r o r , I l l e g a l R e q u e s t ,
S t a c k O v e r f l o w , M e m o r y V i o l a t i o n , H a r d w a r e F a u l t ,
P o w e r F a i l ) ;
v a r a l l o w e d m o d u l e a c t i o n s := l i s t ( I g n o r e , C o n f i r m ,
P r o c e s s S t o p , P r o c e s s S t o p A n d S t a r t A n o t h e r ,
P r o c e s s R e s t a r t , P a r t i t i o n S t o p , P a r t i t i o n R e s t a r t ) ;
v a r m o d u l e a c t i o n s :=
( p r o p e r t y ( t h r , ARINC653 : : HM Actions ) ) ;
( p r o p e r t y ( t h r , ARINC653 : : HM Errors ) ) ;
:=
check ( ( p r o p e r t y e x i s t s ( thr ,
( p r o p e r t y e x i s t s ( thr ,
( i s i n ( module actions
( i s i n ( module errors ,
end c h e c k t h r e a d h m v a l i d i t y ;
ARINC653 : : HM Actions
ARINC653 : : H M Errors
, allowed module actions
allowed module errorsi
) ) and
) ) and
) ) and
)));
B.2.5
Sp
ecification de la criticit
e des partitions
theorem c h e c k p a r t i t i o n s c r i t i c a l i t y
f o r e a c h vp i n v i r t u a l p r o c e s s o r s e t do
c h e c k ( ( p r o p e r t y e x i s t s ( vp , ARINC653 : : C r i t i c a l i t y ) ) o r
( p r o p e r t y e x i s t s ( vp , POK : : C r i t i c a l i t y ) ) ) ;
end c h e c k p a r t i t i o n s c r i t i c a l i t y ;
B.2.6
theorem c h e c k e r r o r c o v e r a g e
f o r e a c h t h r i n t h r e a d s e t do
P r s := { x i n P r o c e s s S e t
| is subcomponent of ( thr , x ) } ;
VP :=
{ x i n V i r t u a l P r o c e s s o r S e t | i s b o u n d t o ( Prs , x ) } ;
CPU :=
{x in Processor Set
| i s s u b c o m p o n e n t o f (VP , x ) } ;
v a r e r r o r s := l i s t ( M o d u l e C o n f i g , M o d u l e I n i t ,
M o d u l e S c h e d u l i n g
,
P a r t i t i o n S c h e d u l i n g , P a r t i t i o n C o n f i g ,
P a r t i t i o n H a n d l e r
, P a r t i t i o n I n i t ,
, A p p l i c a t i o n E r r o r ,
D e a d l i n e M i s s
N u m e r i c E r r o r
, I l l e g a l R e q u e s t ,
S t a c k O v e r f l o w
, M e m o r y V i o l a t i o n ,
H a r d w a r e F a u l t
, P o w e r F a i l ) ;
v a r a c t u a l e r r o r s := ( p r o p e r t y (CPU , ARINC653 : : H M Errors ) +
236
B.2.7
theorem c h e c k o m i s s i o n t r a n s i e n t
f o r e a c h S r c P r s i n p r o c e s s s e t do
Src Thr
:= { x i n T h r e a d S e t
|
is subcomponent of (x , Src Prs )};
S r c R u n t i m e := { x i n V i r t u a l P r o c e s s o r S e t |
is bound to ( Src Prs , x )};
Dst Prs
:= { x i n P r o c e s s S e t
|
is connected to ( Src Prs , x )};
D s t R u n t i m e := { x i n V i r t u a l P r o c e s s o r S e t |
is bound to ( Dst Prs , x ) } ;
var r e s t a r t a c t i o n s
:= l i s t ( P a r t i t i o n R e s t a r t ,
P r o c e s s R e s t a r t , C o n f i r m ) ;
v a r s r c r e c o v e r y a c t i o n s :=
( p r o p e r t y ( S r c R u n t i m e , ARINC653 : : HM Actions ) +
p r o p e r t y ( S r c T h r , ARINC653 : : HM Actions ) ) ;
c h e c k ( ( ( c a r d i n a l ( S r c P r s ) > 0 ) and ( c a r d i n a l ( D s t P r s ) >= 0 ) and
( i s i n ( r e s t a r t a c t i o n s , s r c r e c o v e r y a c t i o n s ) ) and
( max ( p r o p e r t y ( D s t R u n t i m e , POK : : C r i t i c a l i t y ) ) <
max ( ( p r o p e r t y ( S r c R u n t i m e , POK : : C r i t i c a l i t y ) ) ) )
)
or
( not ( i s i n ( r e s t a r t a c t i o n s , s r c r e c o v e r y a c t i o n s ) ) )
);
end c h e c k o m i s s i o n t r a n s i e n t ;
Listing B.16 Theor`eme analysant limpact transitoire dune faute sur les
autres partitions
theorem c h e c k o m i s s i o n p e r m a n e n t
f o r e a c h S r c P r s i n p r o c e s s s e t do
:={ x i n T h r e a d S e t
|
Src Thr
is subcomponent of (x , Src Prs )};
S r c R u n t i m e :={ x i n V i r t u a l P r o c e s s o r S e t |
is bound to ( Src Prs , x )};
Dst Prs
:={ x i n P r o c e s s S e t
|
is connected to ( Src Prs , x )};
D s t R u n t i m e :={ x i n V i r t u a l P r o c e s s o r S e t |
is bound to ( Dst Prs , x ) } ;
v a r r e s t a r t a c t i o n s :=
l i s t ( P a r t i t i o n S t o p ,
P r o c e s s S t o p A n d S t a r t A n o t h e r ,
P r o c e s s S t o p ) ;
v a r s r c r e c o v e r y a c t i o n s :=
( p r o p e r t y ( S r c R u n t i m e , ARINC653 : : HM Actions ) +
p r o p e r t y ( S r c T h r , ARINC653 : : HM Actions ) ) ;
237
c h e c k ( ( ( c a r d i n a l ( S r c P r s ) > 0 ) and
( c a r d i n a l ( D s t P r s ) >= 0 ) and
( i s i n ( r e s t a r t a c t i o n s , s r c r e c o v e r y a c t i o n s ) ) and
( max ( p r o p e r t y ( D s t R u n t i m e , POK : : C r i t i c a l i t y ) ) <
max ( ( p r o p e r t y ( S r c R u n t i m e , POK : : C r i t i c a l i t y ) ) ) ) )
or
( not ( i s i n ( r e s t a r t a c t i o n s , s r c r e c o v e r y a c t i o n s ) ) ) ) ;
end c h e c k o m i s s i o n p e r m a n e n t ;
B.2.8
Impl
ementation des m
ecanismes de s
ecurit
e
theorem C h e c k V i r t u a l B u s I m p l e m e n t a t i o n
f o r e a c h VB i n v i r t u a l b u s s e t do
c h e c k ( p r o p e r t y e x i s t s (VB , I m p l e m e n t e d A s ) ) ;
end C h e c k V i r t u a l B u s I m p l e m e n t a t i o n ;
B.2.9
Impl
ementation de la coh
erence des m
ecanismes de s
ecurit
e
theorem C h e c k V i r t u a l B u s C i p h e r A l g o r i t h m s
f o r e a c h VB1 i n v i r t u a l b u s s e t do
VB2 := { x i n V i r t u a l B u s S e t |
( g e t p r o p e r t y v a l u e ( x , POK : : S e c u r i t y L e v e l ) <>
g e t p r o p e r t y v a l u e ( VB1 , POK : : S e c u r i t y L e v e l ) ) } ;
check (
( ( n o t p r o p e r t y e x i s t s ( VB1 , pok : : b l o w f i s h k e y ) ) o r
( n o t p r o p e r t y e x i s t s ( VB2 , pok : : b l o w f i s h k e y ) ) ) o r
( g e t p r o p e r t y v a l u e ( VB1 , pok : : b l o w f i s h k e y ) <>
Head ( g e t p r o p e r t y v a l u e ( VB2 , pok : : b l o w f i s h k e y ) ) )
);
end C h e c k V i r t u a l B u s C i p h e r A l g o r i t h m s ;
B.2.10
Validation politique de s
ecurit
e Bell-Lapadula
theorem b e l l l a p a d u l a
f o r e a c h p s r c i n p r o c e s s s e t do
VP1
:= { x i n v i r t u a l p r o c e s s o r s e t |
is bound to ( p src , x )};
B Src
:= { x i n v i r t u a l b u s s e t
|
i s p r o v i d e d c l a s s ( VP1 , x ) } ;
P D e s t := { x i n p r o c e s s s e t
|
is connected to ( p src , x )};
238
VP2
:= { x i n v i r t u a l p r o c e s s o r s e t |
i s b o u n d t o ( P Dest , x ) } ;
B Dst
:= { x i n v i r t u a l b u s s e t
|
i s p r o v i d e d c l a s s ( VP2 , x ) } ;
check ( c a r d i n a l ( P Dest ) = 0
or
( max ( p r o p e r t y ( B Src , POK : : S e c u r i t y L e v e l ) ) <=
min ( p r o p e r t y ( B Dst , POK : : S e c u r i t y L e v e l ) )
)
);
end b e l l l a p a d u l a ;
B.2.11
Validation politique de s
ecurit
e Biba
theorem b i b a
f o r e a c h p s r c i n p r o c e s s s e t do
VP1
:= { x i n v i r t u a l P r o c e s s o r S e t |
is bound to ( p src , x )};
B Src
:= { x i n v i r t u a l B u s S e t
|
i s p r o v i d e d c l a s s ( VP1 , x ) } ;
P D e s t := { x i n p r o c e s s S e t
|
is connected To ( p src , x )};
VP2
:= { x i n v i r t u a l P r o c e s s o r S e t |
i s b o u n d t o ( P Dest , x ) } ;
B Dst
:= { x i n v i r t u a l B u s S e t
|
i s p r o v i d e d c l a s s ( VP2 , x ) } ;
check ( c a r d i n a l ( P Dest ) = 0 or
( min ( p r o p e r t y ( B Src , POK : : S e c u r i t y L e v e l ) )
>=
max ( p r o p e r t y ( B Dst , POK : : S e c u r i t y L e v e l ) )
)
);
end b i b a ;
B.2.12
Validation de la politique de s
ecurit
e MILS
theorem MILS 1
f o r e a c h p s r c i n p r o c e s s s e t do
VP1 := { x i n V i r t u a l P r o c e s s o r S e t | i s b o u n d t o ( p s r c , x ) } ;
B S r c := { x i n V i r t u a l B u s S e t | i s p r o v i d e d c l a s s ( VP1 , x ) } ;
P D e s t := { x i n P r o c e s s S e t | I s C o n n e c t e d T o ( p s r c , x ) } ;
VP2 := { x i n V i r t u a l P r o c e s s o r S e t | i s b o u n d t o ( P Dest , x ) } ;
239
0 or
Src ,
Dst ,
Src ,
Dst ,
POK : :
POK : :
POK : :
POK : :
Security
Security
Security
Security
Level
Level
Level
Level
) ) =
) ) ) and
) ) =
) ) ) ) ) ;
B.3
Librairie de componsants
Notre chane de developpement contient un fichier contenant plusieurs composants AADL. Ceux-ci peuvent ensuite etre reutilises par le concepteur de
syst`eme pour eviter de redefinir des concepts dej`a discutes et eviter dintroduire des erreurs lors de la definition de ses mod`eles.
package p o k l i b
public
w i t h POK;
w i t h Data Model ;
P r o c e s s o r
240
500ms ) ;
=>
partition1 ) , reference ( partition2 ));
two partitions ;
processor implementation p o k k e r n e l . x 8 6 q e m u t h r e e p a r t i t i o n s
e x t e n d s p o k k e r n e l . x86 qemu
subcomponents
partition1 : v i r t u a l processor
poklib : : pok partition . basic for example ;
partition2 : v i r t u a l processor
poklib : : pok partition . basic for example ;
partition3 : v i r t u a l processor
poklib : : pok partition . basic for example ;
properties
POK : : M a jo r F ra me => 1500ms ;
POK : : S c h e d u l e r => s t a t i c ;
POK : : S l o t s => ( 5 0 0 ms , 500ms , 500ms ) ;
POK : : S l o t s A l l o c a t i o n =>
( reference ( partition1 ) , reference ( partition2 ) ,
reference ( partition3 ));
end p o k k e r n e l . x 8 6 q e m u t h r e e p a r t i t i o n s ;
processor implementation p o k k e r n e l . x 8 6 q e m u f o u r p a r t i t i o n s
e x t e n d s p o k k e r n e l . x86 qemu
subcomponents
partition1 : v i r t u a l processor
poklib : : pok partition . basic for example ;
partition2 : v i r t u a l processor
poklib : : pok partition . basic for example ;
partition3 : v i r t u a l processor
poklib : : pok partition . basic for example ;
partition4 : v i r t u a l processor
poklib : : pok partition . basic for example ;
properties
POK : : M a jo r F ra me => 2000ms ;
POK : : S c h e d u l e r => s t a t i c ;
POK : : S l o t s => ( 5 0 0 ms , 500ms , 500ms , 500ms ) ;
POK : : S l o t s A l l o c a t i o n =>
( reference ( partition1 ) , reference ( partition2 ) ,
reference ( partition3 ) , reference ( partition4 ));
end p o k k e r n e l . x 8 6 q e m u f o u r p a r t i t i o n s ;
processor implementation
pok kernel . x86 qemu four partitions with libmath
e x t e n d s p o k k e r n e l . x86 qemu
subcomponents
partition1 : v i r t u a l processor
poklib : : pok partition . basic for example with libmath
partition2 : v i r t u a l processor
poklib : : pok partition . basic for example with libmath
partition3 : v i r t u a l processor
poklib : : pok partition . basic for example with libmath
partition4 : v i r t u a l processor
poklib : : pok partition . basic for example with libmath
properties
POK : : M a jo r F ra me => 2000ms ;
POK : : S c h e d u l e r => s t a t i c ;
POK : : S l o t s => ( 5 0 0 ms , 500ms , 500ms , 500ms ) ;
POK : : S l o t s A l l o c a t i o n =>
( reference ( partition1 ) , reference ( partition2 ) ,
reference ( partition3 ) , reference ( partition4 ));
end p o k k e r n e l . x 8 6 q e m u f o u r p a r t i t i o n s w i t h l i b m a t h ;
;
;
;
;
V i r t u a l B u s e s
241
Unclassified
v i r t u a l bus
v i r t u a l bus u n e n c r y p t e d
end u n e n c r y p t e d ;
v i r t u a l bus i m p l e m e n t a t i o n u n e n c r y p t e d . i
end u n e n c r y p t e d . i ;
blowfish
v i r t u a l bus
subprogram b l o w f i s h s e n d
features
datain
: i n parameter p o k l i b : : p o i n t e d v o i d ;
countin
: i n parameter p o k l i b : : i n t e g e r ;
dataout
: out p a r a m e t e r p o k l i b : : p o i n t e d v o i d ;
c o u n t o u t : out p a r a m e t e r p o k l i b : : i n t e g e r ;
properties
Source Name => p o k p r o t o c o l s b l o w f i s h m a r s h a l l ;
end b l o w f i s h s e n d ;
subprogram i m p l e m e n t a t i o n b l o w f i s h s e n d . i
end b l o w f i s h s e n d . i ;
subprogram b l o w f i s h r e c e i v e
features
datain
: i n parameter p o k l i b : : p o i n t e d v o i d ;
countin
: i n parameter p o k l i b : : i n t e g e r ;
dataout
: out p a r a m e t e r p o k l i b : : p o i n t e d v o i d ;
c o u n t o u t : out p a r a m e t e r p o k l i b : : i n t e g e r ;
properties
Source Name => p o k p r o t o c o l s b l o w f i s h u n m a r s h a l l ;
end b l o w f i s h r e c e i v e ;
subprogram i m p l e m e n t a t i o n b l o w f i s h r e c e i v e . i
end b l o w f i s h r e c e i v e . i ;
data b l o w f i s h d a t a
end b l o w f i s h d a t a ;
data implementation b l o w f i s h d a t a . i
properties
Type Source Name => p o k p r o t o c o l s b l o w f i s h d a t a t ;
end b l o w f i s h d a t a . i ;
abstract vbus blowfish wrapper
end v b u s b l o w f i s h w r a p p e r ;
a b s t r a c t implementation vbus blowfish wrapper . i
subcomponents
send
: subprogram b l o w f i s h s e n d . i ;
receive
: subprogram b l o w f i s h r e c e i v e . i ;
: data b l o w f i s h d a t a . i ;
marshalling type
end v b u s b l o w f i s h w r a p p e r . i ;
v i r t u a l bus b l o w f i s h
end b l o w f i s h ;
v i r t u a l bus i m p l e m e n t a t i o n b l o w f i s h . i
properties
I m p l e m e n t e d A s =>
c l a s s i f i e r ( poklib : : vbus blowfish wrapper . i );
end b l o w f i s h . i ;
DES v i r t u a l b u s
subprogram d e s s e n d
features
datain
: i n parameter
242
: i n parameter
: out p a r a m e t e r
: out p a r a m e t e r
poklib : : integer ;
poklib : : pointed void ;
poklib : : integer ;
subprogram i m p l e m e n t a t i o n d e s s e n d . i
properties
Source Name => p o k p r o t o c o l s d e s m a r s h a l l ;
end d e s s e n d . i ;
subprogram d e s r e c e i v e
features
datain
: i n parameter p o k l i b : : p o i n t e d v o i d ;
countin
: i n parameter p o k l i b : : i n t e g e r ;
dataout
: out p a r a m e t e r p o k l i b : : p o i n t e d v o i d ;
c o u n t o u t : out p a r a m e t e r p o k l i b : : i n t e g e r ;
end d e s r e c e i v e ;
subprogram i m p l e m e n t a t i o n d e s r e c e i v e . i
properties
Source Name => p o k p r o t o c o l s d e s u n m a r s h a l l ;
end d e s r e c e i v e . i ;
data d e s d a t a
end d e s d a t a ;
data implementation d e s d a t a . i
properties
Type Source Name => p o k p r o t o c o l s d e s d a t a t ;
end d e s d a t a . i ;
abstract vbus des wrapper
end v b u s d e s w r a p p e r ;
a b s t r a c t implementation vbus des wrapper . i
subcomponents
send
: subprogram d e s s e n d . i ;
receive
: subprogram d e s r e c e i v e . i ;
marshalling type
: data d e s d a t a . i ;
end v b u s d e s w r a p p e r . i ;
v i r t u a l bus d e s
end d e s ;
v i r t u a l bus i m p l e m e n t a t i o n d e s . i
properties
I m p l e m e n t e d A s =>
c l a s s i f i e r ( poklib : : vbus des wrapper . i ) ;
end d e s . i ;
ceasar
v i r t u a l bus
subprogram c e a s a r s e n d
features
datain
: i n parameter p o k l i b : : p o i n t e d v o i d ;
countin
: i n parameter p o k l i b : : i n t e g e r ;
dataout
: out p a r a m e t e r p o k l i b : : p o i n t e d v o i d ;
c o u n t o u t : out p a r a m e t e r p o k l i b : : i n t e g e r ;
properties
Source Name => p o k p r o t o c o l s c e a s a r m a r s h a l l ;
end c e a s a r s e n d ;
subprogram i m p l e m e n t a t i o n c e a s a r s e n d . i
end c e a s a r s e n d . i ;
subprogram c e a s a r r e c e i v e
features
datain
: i n parameter p o k l i b : : p o i n t e d v o i d ;
243
g z i p v i r t u a l bus
subprogram g z i p s e n d
features
datain
: i n parameter p o k l i b : : p o i n t e d v o i d ;
countin
: i n parameter p o k l i b : : i n t e g e r ;
dataout
: out p a r a m e t e r p o k l i b : : p o i n t e d v o i d ;
c o u n t o u t : out p a r a m e t e r p o k l i b : : i n t e g e r ;
properties
Source Name => p o k p r o t o c o l s g z i p m a r s h a l l ;
end g z i p s e n d ;
subprogram i m p l e m e n t a t i o n g z i p s e n d . i
end g z i p s e n d . i ;
subprogram g z i p r e c e i v e
features
datain
: i n parameter p o k l i b : : p o i n t e d v o i d ;
countin
: i n parameter p o k l i b : : i n t e g e r ;
dataout
: out p a r a m e t e r p o k l i b : : p o i n t e d v o i d ;
c o u n t o u t : out p a r a m e t e r p o k l i b : : i n t e g e r ;
properties
Source Name => p o k p r o t o c o l s g z i p u n m a r s h a l l ;
end g z i p r e c e i v e ;
subprogram i m p l e m e n t a t i o n g z i p r e c e i v e . i
end g z i p r e c e i v e . i ;
data g z i p d a t a
end g z i p d a t a ;
244
V i r t u a l P r o c e s s o r
Memories
245
T h r e a d s
thread t h r p e r i o d i c
properties
Dispatch Protocol
Period
Deadline
Compute Execution Time
end t h r p e r i o d i c ;
thread t h r s p o r a d i c
properties
Dispatch Protocol
Period
Deadline
Compute Execution Time
end t h r s p o r a d i c ;
=>
=>
=>
=>
Periodic ;
100ms ;
100ms ;
5ms . . 10ms ;
=>
=>
=>
=>
Sporadic ;
100ms ;
100ms ;
5ms . . 10ms ;
S u b p r o g r a m s
subprogram s p g c
properties
Source Language
Source Text
end s p g c ;
=> C ;
=> ( . . / . . / . . / u s e r f u n c t i o n s . o ) ;
I n t e g e r
data v o i d
properties
Type Source Name => v o i d ;
end v o i d ;
data implementation v o i d . i
end v o i d . i ;
data p o i n t e d v o i d
properties
Type Source Name => v o i d ;
end p o i n t e d v o i d ;
data implementation p o i n t e d v o i d . i
end p o i n t e d v o i d . i ;
data char
properties
Type Source Name => c h a r ;
end c h a r ;
data implementation char . i
end c h a r . i ;
data p o i n t e d c h a r
properties
246
data f l o a t
properties
Data Model : : D a t a R e p r e s e n t a t i o n => f l o a t ;
end f l o a t ;
end p o k l i b ;
B.4
B.4.1
Repr
esentation textuelle des cas d
etudes
Cas d
etude integrated
B.4.1.1
Mod
elisation de la m
emoire
package m e m o r i e s
public
w i t h ARINC653 ;
memory s e g m e n t
end s e g m e n t ;
memory i m p l e m e n t a t i o n s e g m e n t . d a t a s e g m e n t
properties
ARINC653 : : Memory Kind => memory data ;
ARINC653 : : A c c e s s T y p e => r e a d w r i t e ;
B y t e C o u n t => 3 0 0 0 ;
end s e g m e n t . d a t a s e g m e n t ;
memory i m p l e m e n t a t i o n s e g m e n t . c o d e s e g m e n t
properties
ARINC653 : : Memory Kind => memory code ;
ARINC653 : : A c c e s s T y p e => r e a d ;
B y t e C o u n t => 5 0 0 0 ;
end s e g m e n t . c o d e s e g m e n t ;
memory ram
end ram ;
memory i m p l e m e n t a t i o n ram . i
subcomponents
s e g m e n t 1 d a t a : memory s e g m e n t . d a t a
s e g m e n t 1 c o d e : memory s e g m e n t . c o d e
s e g m e n t 2 d a t a : memory s e g m e n t . d a t a
s e g m e n t 2 c o d e : memory s e g m e n t . c o d e
s e g m e n t 3 d a t a : memory s e g m e n t . d a t a
s e g m e n t 3 c o d e : memory s e g m e n t . c o d e
s e g m e n t 4 d a t a : memory s e g m e n t . d a t a
s e g m e n t 4 c o d e : memory s e g m e n t . c o d e
s e g m e n t 5 d a t a : memory s e g m e n t . d a t a
s e g m e n t 5 c o d e : memory s e g m e n t . c o d e
s e g m e n t 6 d a t a : memory s e g m e n t . d a t a
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
247
end m e m o r i e s ;
B.4.1.2
Mod
elisation des partitions
package m e m o r i e s
public
w i t h ARINC653 ;
memory s e g m e n t
end s e g m e n t ;
memory i m p l e m e n t a t i o n s e g m e n t . d a t a s e g m e n t
properties
ARINC653 : : Memory Kind => memory data ;
ARINC653 : : A c c e s s T y p e => r e a d w r i t e ;
B y t e C o u n t => 3 0 0 0 ;
end s e g m e n t . d a t a s e g m e n t ;
memory i m p l e m e n t a t i o n s e g m e n t . c o d e s e g m e n t
properties
ARINC653 : : Memory Kind => memory code ;
ARINC653 : : A c c e s s T y p e => r e a d ;
B y t e C o u n t => 5 0 0 0 ;
end s e g m e n t . c o d e s e g m e n t ;
memory ram
end ram ;
memory i m p l e m e n t a t i o n ram . i
subcomponents
s e g m e n t 1 d a t a : memory s e g m e n t . d a t a
s e g m e n t 1 c o d e : memory s e g m e n t . c o d e
s e g m e n t 2 d a t a : memory s e g m e n t . d a t a
s e g m e n t 2 c o d e : memory s e g m e n t . c o d e
s e g m e n t 3 d a t a : memory s e g m e n t . d a t a
s e g m e n t 3 c o d e : memory s e g m e n t . c o d e
s e g m e n t 4 d a t a : memory s e g m e n t . d a t a
s e g m e n t 4 c o d e : memory s e g m e n t . c o d e
s e g m e n t 5 d a t a : memory s e g m e n t . d a t a
s e g m e n t 5 c o d e : memory s e g m e n t . c o d e
s e g m e n t 6 d a t a : memory s e g m e n t . d a t a
s e g m e n t 6 c o d e : memory s e g m e n t . c o d e
end ram . i ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
end m e m o r i e s ;
B.4.1.3
Mod
elisation des partitions
package p a r t i t i o n s
public
with threads ;
with types ;
248
GENERIC COMPONENT
v i r t u a l processor runtime
end r u n t i m e ;
Model b o t h v i r t u a l p r o c e s s o r and p r o c e s s f o r t h e
Warning A n n u n c i a t i o n Manager p a r t i t i o n
v i r t u a l processor implementation
runtime . warningannunciationmanager
end r u n t i m e . w a r n i n g a n n u n c i a t i o n m a n a g e r ;
process process warningannunciationmanager
end p r o c e s s w a r n i n g a n n u n c i a t i o n m a n a g e r ;
process implementation
process warningannunciationmanager . impl
subcomponents
thr : thread
threads : : thread warningannunciationmanager . impl ;
end p r o c e s s w a r n i n g a n n u n c i a t i o n m a n a g e r . i m p l ;
DISPLAY MANAGER
Model b o t h v i r t u a l p r o c e s s o r and p r o c e s s f o r t h e
D i s p l a y Manager p a r t i t i o n
Model b o t h v i r t u a l
p r o c e s s o r and p r o c e s s f o r t h e
249
Page C o n t e n t Manager p a r t i t i o n
FLIGHT MANAGER
Model b o t h v i r t u a l p r o c e s s o r and p r o c e s s f o r t h e
F l i g h t Manager p a r t i t i o n
250
FLIGHT DIRECTOR
Model b o t h v i r t u a l p r o c e s s o r and p r o c e s s f o r t h e
Flight Director partition
251
MFD
: out d a t a p o r t
t y p e s : : PageRequestCmd ;
: i n data port
t y p e s : : PageContent ;
end m f d d r i v e r ;
process implementation m f d d r i v e r . i
subcomponents
thr : thread threads : : t h r e a d m f d d r i v e r . i ;
connections
p o r t t h r . D i s p l a y T o D M R e q u e s t > D i s p l a y T o D M R e q u e s t ;
> t h r . DisplayToDM Page ;
p o r t DisplayToDM Page
end m f d d r i v e r . i ;
abstract mfd driver wrapper
end m f d d r i v e r w r a p p e r ;
a b s t r a c t implementation mfd driver wrapper . i
subcomponents
p : process mfd driver . i ;
end m f d d r i v e r w r a p p e r . i ;
d e v i c e mfd
features
DisplayToDM Request
DisplayToDM Page
: out d a t a p o r t
t y p e s : : PageRequestCmd ;
: i n data port
t y p e s : : PageContent ;
end mfd ;
d e v i c e i m p l e m e n t a t i o n mfd . i
properties
I m p l e m e n t e d A s => c l a s s i f i e r
( partitions : : mfd driver wrapper . i );
end mfd . i ;
end p a r t i t i o n s ;
B.4.1.4
Mod
elisation de la runtime
package p l a t f o r m
public
w i t h ARINC653 ;
w i t h POK;
with p a r t i t i o n s ;
processor partitioned
end p a r t i t i o n e d ;
252
p r o c e s s o r i m p l e m e n t a t i o n p a r t i t i o n e d . x86
subcomponents
part1 : v i r t u a l processor
p a r t i t i o n s : : runtime . warningannunciationmanager ;
part2 : v i r t u a l processor
p a r t i t i o n s : : runtime . displaymanager ;
part3 : v i r t u a l processor
p a r t i t i o n s : : runtime . pagecontentmanager ;
part4 : v i r t u a l processor
p a r t i t i o n s : : runtime . flightmanager ;
part5 : v i r t u a l processor
p a r t i t i o n s : : runtime . f l i g h t d i r e c t o r ;
properties
ARINC653 : : M o d u l e M a j o r F r a m e => 100ms ;
=> ( 2 0 ms , 20ms , 20ms , 20ms , 20ms ) ;
ARINC653 : : P a r t i t i o n S l o t s
ARINC653 : : S l o t s A l l o c a t i o n
=> ( r e f e r e n c e ( p a r t 1 ) ,
reference ( part2 ) ,
reference ( part3 ) ,
reference ( part4 ) ,
reference ( part5 ) ) ;
POK : : A r c h i t e c t u r e => x86 ;
POK : : BSP => x86 qemu ;
end p a r t i t i o n e d . x86 ;
end p l a t f o r m ;
B.4.1.5
Mod
elisation des sous-programmes applicatifs
package s u b p r o g r a m s
public
w i t h Types ;
subprogram s p g w a r n i n g a n n u n c i a t i o n m a n a g e r
properties
source name
=> u s e r w a r n i n g a n n u n c i a t i o n m a n a g e r ;
source language
=> C ;
=> ( . . / . . / . . / wam code . o ) ;
Source Text
S o u r c e C o d e S i z e => 4 KByte ;
S o u r c e D a t a S i z e => 1 KByte ;
end s p g w a r n i n g a n n u n c i a t i o n m a n a g e r ;
subprogram s p g d i s p l a y m a n a g e r
features
r e q u e s t : out p a r a m e t e r t y p e s : : PageRequestCmd ;
page
: i n parameter t y p e s : : PageContent ;
properties
source name
=> u s e r d i s p l a y m a n a g e r ;
source language
=> C ;
Source Text
=> ( . . / . . / . . / dm code . o ) ;
S o u r c e C o d e S i z e => 40 KByte ;
S o u r c e D a t a S i z e => 20 KByte ;
end s p g d i s p l a y m a n a g e r ;
subprogram s p g p a g e c o n t e n t m a n a g e r
properties
source name
=> u s e r p a g e c o n t e n t m a n a g e r ;
=> C ;
source language
Source Text
=> ( . . / . . / . . / pcm code . o ) ;
S o u r c e C o d e S i z e => 8 KByte ;
S o u r c e D a t a S i z e => 20 KByte ;
end s p g p a g e c o n t e n t m a n a g e r ;
253
f r o m O u t s i d e : f e a t u r e g r o u p t y p e s : : FMInData ;
fromOutside fuelFlow
fromOutside navSignal
fuelFlow
navSignal
guidanceOut
fpDataOut
navDataOut
toOutside guidanceOut
toOutside fpDataOut
254
: in
parameter
t y p e s : : FuelFlowData ;
: in
parameter
types : : navSignalData ;
: out p a r a m e t e r
t y p e s : : FuelFlowData ;
: out p a r a m e t e r
types : : NavSignalData ;
: in
parameter
t y p e s : : GuidanceData ;
: in
parameter
t y p e s : : FPData ;
: in
parameter
t y p e s : : NavData ;
: out p a r a m e t e r
t y p e s : : GuidanceData ;
: out p a r a m e t e r
t y p e s : : FPData ;
=>
=>
=>
=>
=>
: out p a r a m e t e r
t y p e s : : NavData ;
: in
parameter
t y p e s : : PageRequestCmd ;
: out p a r a m e t e r
t y p e s : : PageRequestCmd ;
: in
parameter
t y p e s : : PageRequestCmd ;
: out p a r a m e t e r
t y p e s : : PageRequestCmd ;
: i n parameter
t y p e s : : PageContent ;
: out p a r a m e t e r
t y p e s : : PageContent ;
: in
parameter
t y p e s : : PageContent ;
: out p a r a m e t e r
t y p e s : : PageContent ;
u s e r p e r i o d i c i o ;
C;
( . . / . . / . . / f m c o d e . o ) ;
12 KByte ;
26 KByte ;
subprogram s p g h a n d l e p a g e r e q u e s t
properties
source name
=> u s e r h a n d l e p a g e r e q u e s t ;
source language
=> C ;
Source Text
=> ( . . / . . / . . / f m c o d e . o ) ;
Source Code Size
=> 10 KByte ;
Source Data Size
=> 5 KByte ;
end s p g h a n d l e p a g e r e q u e s t ;
subprogram s p g f l i g h t m a n a g e r
properties
source name
=> u s e r f l i g h t m a n a g e r ;
source language
=> C ;
Source Text
=> ( . . / . . / . . / f d c o d e . o ) ;
Source Code Size
=> 15 KByte ;
Source Data Size
=> 6 KByte ;
end s p g f l i g h t m a n a g e r ;
subprogram s p g f l i g h t d i r e c t o r
properties
source name
=> u s e r f l i g h t d i r e c t o r ;
source language
=> C ;
Source Text
=> ( . . / . . / . . / f d c o d e . o ) ;
Source Code Size
=> 8 KByte ;
Source Data Size
=> 2 KByte ;
end s p g f l i g h t d i r e c t o r ;
subprogram m f d d r i v e r
features
DisplayToDM Request
DisplayToDM Page
properties
source name
source language
Source Text
Source Code Size
Source Data Size
end m f d d r i v e r ;
=>
=>
=>
=>
=>
: out p a r a m e t e r
t y p e s : : PageRequestCmd ;
: in
parameter
t y p e s : : PageContent ;
u s e r m f d d r i v e r ;
C;
( . . / . . / . . / m f d c o d e . o ) ;
8 KByte ;
2 KByte ;
255
B.4.1.6
Mod
elisation des partitions
package m e m o r i e s
public
w i t h ARINC653 ;
memory s e g m e n t
end s e g m e n t ;
memory i m p l e m e n t a t i o n s e g m e n t . d a t a s e g m e n t
properties
ARINC653 : : Memory Kind => memory data ;
ARINC653 : : A c c e s s T y p e => r e a d w r i t e ;
B y t e C o u n t => 3 0 0 0 ;
end s e g m e n t . d a t a s e g m e n t ;
memory i m p l e m e n t a t i o n s e g m e n t . c o d e s e g m e n t
properties
ARINC653 : : Memory Kind => memory code ;
ARINC653 : : A c c e s s T y p e => r e a d ;
B y t e C o u n t => 5 0 0 0 ;
end s e g m e n t . c o d e s e g m e n t ;
memory ram
end ram ;
memory i m p l e m e n t a t i o n ram . i
subcomponents
s e g m e n t 1 d a t a : memory s e g m e n t . d a t a
s e g m e n t 1 c o d e : memory s e g m e n t . c o d e
s e g m e n t 2 d a t a : memory s e g m e n t . d a t a
s e g m e n t 2 c o d e : memory s e g m e n t . c o d e
s e g m e n t 3 d a t a : memory s e g m e n t . d a t a
s e g m e n t 3 c o d e : memory s e g m e n t . c o d e
s e g m e n t 4 d a t a : memory s e g m e n t . d a t a
s e g m e n t 4 c o d e : memory s e g m e n t . c o d e
s e g m e n t 5 d a t a : memory s e g m e n t . d a t a
s e g m e n t 5 c o d e : memory s e g m e n t . c o d e
s e g m e n t 6 d a t a : memory s e g m e n t . d a t a
s e g m e n t 6 c o d e : memory s e g m e n t . c o d e
end ram . i ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
segment ;
end m e m o r i e s ;
B.4.1.7
Mod
elisation des t
aches
package t h r e a d s
public
with types ;
256
DISPLAY MANAGER
257
FLIGHT MANAGER
thread NavigationSensorProcessing
features
navSignalDataFromSensor : i n data port
types : : NavSignalData ;
navSensorDataToIN
: out d a t a p o r t
t y p e s : : NavSensorData ;
properties
=> P e r i o d i c ;
Dispatch Protocol
Period
=> 50 Ms ;
Compute Execution Time
=> 5 Ms . . 15 Ms ;
Source Data Size
=> 10 Kbyte ;
Source Code Size
=> 10 Kbyte ;
end N a v i g a t i o n S e n s o r P r o c e s s i n g ;
thread implementation NavigationSensorProcessing . impl
calls
call1 :
{ p s p g : subprogram
subprograms : : s p g n a v i g a t i o n s e n s o r p r o c e s s i n g ; } ;
end N a v i g a t i o n S e n s o r P r o c e s s i n g . i m p l ;
thread GuidanceProcessing
features
navDataFromIN
: in
data port
t y p e s : : NavData ;
fpDataFromFPP
: in
data port
t y p e s : : FPData ;
guidanceToFPP
: out d a t a p o r t
t y p e s : : GuidanceData ;
258
=>
=>
=>
=>
=>
Periodic ;
50 Ms ;
8 Ms . . 30 Ms ;
10 Kbyte ;
10 Kbyte ;
thread A i r c r a f t P e r f o r m a n c e C a l c u l a t i o n
features
fpDataFromFPP
: in
data port
t y p e s : : FPData ;
navDataFromIN
: in
data port
t y p e s : : NavData ;
fuelFlow
: in
data port
t y p e s : : FuelFlowData ;
perfDataToFPP
: out d a t a p o r t
t y p e s : : PerformanceData ;
properties
Dispatch Protocol
=> P e r i o d i c ;
Period
=> 500 Ms ;
C o m p u t e E x e c u t i o n T i m e => 1 Ms . . 100 Ms ;
Source Data Size
=> 10 Kbyte ;
Source Code Size
=> 10 Kbyte ;
end A i r c r a f t P e r f o r m a n c e C a l c u l a t i o n ;
thread implementation A i r c r a f t P e r f o r m a n c e C a l c u l a t i o n . impl
calls
call1 :
{ p s p g : subprogram
subprograms : : s p g a i r c r a f t p e r f o r m a n c e c a l c u l a t i o n ; } ;
end A i r c r a f t P e r f o r m a n c e C a l c u l a t i o n . i m p l ;
thread PeriodicIO
features
toOutside guidanceOut
: out d a t a p o r t
t y p e s : : GuidanceData ;
259
=>
=>
=>
=>
=>
: out d a t a p o r t
t y p e s : : FPData ;
: out d a t a p o r t
t y p e s : : NavData ;
: in
data port
t y p e s : : FuelFlowData ;
: in
data port
types : : navSignalData ;
: out d a t a p o r t
t y p e s : : FuelFlowData ;
: out d a t a p o r t
types : : NavSignalData ;
: in
data port
t y p e s : : GuidanceData ;
: in
data port
t y p e s : : FPData ;
: in
data port
t y p e s : : NavData ;
: in
data port
t y p e s : : PageRequestCmd ;
: out d a t a p o r t
t y p e s : : PageRequestCmd ;
: in
data port
t y p e s : : PageRequestCmd ;
: out d a t a p o r t
t y p e s : : PageRequestCmd ;
: in
data port
t y p e s : : PageContent ;
: out d a t a p o r t
t y p e s : : PageContent ;
: in
data port
t y p e s : : PageContent ;
: out d a t a p o r t
t y p e s : : PageContent ;
Periodic ;
50 Ms ;
1 Ms . . 1 Ms ;
10 Kbyte ;
10 Kbyte ;
260
=>
=>
=>
=>
=>
: in
data port
t y p e s : : PageRequestCmd ;
: out d a t a p o r t
t y p e s : : PageContent ;
: out d a t a p o r t
t y p e s : : PageRequestCmd ;
: in
data port
t y p e s : : PageContent ;
Periodic ;
1 Ms . . 1 Ms ;
50 Ms ;
10 Kbyte ;
10 Kbyte ;
FLIGHT DIRECTOR
thread t h r e a d f l i g h t d i r e c t o r
features
FDToFM Request
: in
data port
t y p e s : : PageRequestCmd ;
: out d a t a p o r t
FDToFM Page
t y p e s : : PageContent ;
properties
Dispatch Protocol
=> P e r i o d i c ;
Compute Execution Time
=> 1 Ms . . 1 Ms ;
Period
=> 50 Ms ;
Source Data Size
=> 10 Kbyte ;
Source Code Size
=> 10 Kbyte ;
end t h r e a d f l i g h t d i r e c t o r ;
thread implementation t h r e a d f l i g h t d i r e c t o r . impl
calls
call1 :
{ p s p g : subprogram
subprograms : : s p g f l i g h t d i r e c t o r ; } ;
end t h r e a d f l i g h t d i r e c t o r . i m p l ;
MFD
thread t h r e a d m f d d r i v e r
features
DisplayToDM Request
: out d a t a p o r t
t y p e s : : PageRequestCmd ;
DisplayToDM Page
: in
data port
261
=>
=>
=>
=>
=>
Periodic ;
1 Ms . . 1 Ms ;
50 Ms ;
10 Kbyte ;
10 Kbyte ;
thread implementation t h r e a d m f d d r i v e r . i
calls
c a l l 1 : { p s p g : subprogram s u b p r o g r a m s : : m f d d r i v e r ; } ;
connections
p o r t p s p g . D i s p l a y T o D M R e q u e s t > D i s p l a y T o D M R e q u e s t ;
p o r t DisplayToDM Page > p s p g . DisplayToDM Page ;
end t h r e a d m f d d r i v e r . i ;
end t h r e a d s ;
B.4.1.8
Mod
elisation des types de donn
ees
package t y p e s
public
w i t h Data Model ;
f e a t u r e group P a g e R e q u e s t
features
r e q u e s t : out d a t a p o r t PageRequestCmd ;
page : i n d a t a p o r t P a g e C o n t e n t ;
end P a g e R e q u e s t ;
f e a t u r e group P a g e R e t u r n
i n v e r s e of PageRequest
end P a g e R e t u r n ;
d a t a PageRequestCmd
properties
Data Model : : D a t a R e p r e s e n t a t i o n => i n t e g e r ;
end PageRequestCmd ;
d a t a MenuCmd
properties
Data Model : : D a t a R e p r e s e n t a t i o n => i n t e g e r ;
end MenuCmd ;
data PageContent
properties
Data Model : : D a t a R e p r e s e n t a t i o n => i n t e g e r ;
end P a g e C o n t e n t ;
d a t a PageImage
properties
Data Model : : D a t a R e p r e s e n t a t i o n => i n t e g e r ;
end PageImage ;
data NavSignalData
properties
Data Model : : D a t a R e p r e s e n t a t i o n => i n t e g e r ;
end N a v S i g n a l D a t a ;
data NavSensorData
properties
Data Model : : D a t a R e p r e s e n t a t i o n => i n t e g e r ;
262
B.4.1.9
Int
egration des composants
package s y s t e m s
public
with platform ;
with p a r t i t i o n s ;
with memories ;
sy s t e m mysystem
end mysystem ;
263
sy s t em i m p l e m e n t a t i o n mysystem . i m p l
subcomponents
cpu
: processor
p l a t f o r m : : p a r t i t i o n e d . x86 ;
mem
: memory
m e m o r i e s : : ram . i ;
WAM
: process
p a r t i t i o n s : : process warningannunciationmanager . impl ;
DM
: process
p a r t i t i o n s : : process displaymanager . impl ;
PCM
: process
p a r t i t i o n s : : process pagecontentmanager . impl ;
FM
: process
p a r t i t i o n s : : process flightmanager . pio ;
FD
: process
p a r t i t i o n s : : p r o c e s s f l i g h t d i r e c t o r . impl ;
PilotDisplay : device
p a r t i t i o n s : : mfd . i ;
connections
p o r t DM. DMToDisplay Page >
P i l o t D i s p l a y . DisplayToDM Page ;
p o r t P i l o t D i s p l a y . D i s p l a y T o D M R e q u e s t >
DM. D M T o D i s p l a y R e q u e s t ;
p o r t PCM. PCMToFM Request >
FM. FMToPCM Request ;
p o r t FM. FMToPCM Page >
PCM. PCMToFM Page ;
p o r t PCM. PCMToDM Page >
DM. DMToPCM Page ;
p o r t DM. DMToPCM Request >
PCM. PCMToDM Request ;
FMFD Request :
p o r t FM. FMToFD Request >
FD . FDToFM Request ;
FMFD Page Page : p o r t FD . FDToFM Page >
FM. FMToFD Page ;
properties
a c t u a l p r o c e s s o r b i n d i n g =>
( r e f e r e n c e ( cpu . p a r t 1 ) )
a p p l i e s t o WAM;
a c t u a l p r o c e s s o r b i n d i n g =>
( r e f e r e n c e ( cpu . p a r t 2 ) )
a p p l i e s t o DM;
a c t u a l p r o c e s s o r b i n d i n g =>
( r e f e r e n c e ( cpu . p a r t 3 ) )
a p p l i e s t o PCM;
a c t u a l p r o c e s s o r b i n d i n g =>
( r e f e r e n c e ( cpu . p a r t 4 ) )
a p p l i e s t o FM;
a c t u a l p r o c e s s o r b i n d i n g =>
( r e f e r e n c e ( cpu . p a r t 5 ) )
a p p l i e s t o FD ;
a c t u a l p r o c e s s o r b i n d i n g =>
( r e f e r e n c e ( cpu . p a r t 5 ) )
a p p l i e s to P i l o t D i s p l a y ;
actual memory binding
=>
( r e f e r e n c e (mem . s e g m e n t 5 d a t a ) ,
r e f e r e n c e (mem . s e g m e n t 5 c o d e ) )
a p p l i e s t o WAM;
actual memory binding
=>
( r e f e r e n c e (mem . s e g m e n t 2 d a t a ) ,
r e f e r e n c e (mem . s e g m e n t 2 c o d e ) )
a p p l i e s t o DM;
actual memory binding
=>
( r e f e r e n c e (mem . s e g m e n t 6 d a t a ) ,
r e f e r e n c e (mem . s e g m e n t 6 c o d e ) )
a p p l i e s t o PCM;
actual memory binding
=>
( r e f e r e n c e (mem . s e g m e n t 4 d a t a ) ,
r e f e r e n c e (mem . s e g m e n t 1 c o d e ) )
a p p l i e s t o FM;
actual memory binding
=>
( r e f e r e n c e (mem . s e g m e n t 1 d a t a ) ,
r e f e r e n c e (mem . s e g m e n t 5 c o d e ) )
264
end s y s t e m s ;
B.4.2
B.4.2.1
Cas d
etude MILS
Niveaux de s
ecurit
e
package l a y e r s
public
with p o k l i b ;
w i t h POK;
...)
v i r t u a l bus s e c r e t
end s e c r e t ;
v i r t u a l bus i m p l e m e n t a t i o n s e c r e t . i
extends p o k l i b : : des . i
properties
POK : : S e c u r i t y L e v e l => 2 ;
POK : : B l o w f i s h K e y =>
{ 0 x01 , 0 x23 , 0 x45 , 0 x67 , 0 x89 , 0 xab , 0 xcd , 0 x e f ,
0 x f 0 , 0 xe1 , 0 xd2 , 0 xc3 , 0 xb4 , 0 xa5 , 0 x96 , 0 x87 } ;
POK : : B l o w f i s h I n i t =>
{ 0 x f e , 0 xdc , 0 xba , 0 x98 , 0 x76 , 0 x54 , 0 x32 , 0 x10 } ;
end s e c r e t . i ;
v i r t u a l bus t o p s e c r e t
end t o p s e c r e t ;
v i r t u a l bus i m p l e m e n t a t i o n t o p s e c r e t . i
extends p o k l i b : : b l o w f i s h . i
properties
POK : : S e c u r i t y L e v e l => 3 ;
POK : : B l o w f i s h K e y =>
{ 0 x01 , 0 x23 , 0 x45 , 0 x67 , 0 x89 , 0 xab , 0 xcd , 0 x e f ,
0 x f 0 , 0 xe1 , 0 xd2 , 0 xc3 , 0 xb4 , 0 xa5 , 0 x96 , 0 x87 } ;
POK : : B l o w f i s h I n i t =>
{ 0 x f e , 0 xdc , 0 xba , 0 x98 , 0 x76 , 0 x54 , 0 x32 , 0 x10 } ;
end t o p s e c r e t . i ;
v i r t u a l bus u n c l a s s i f i e d
end u n c l a s s i f i e d ;
v i r t u a l bus i m p l e m e n t a t i o n u n c l a s s i f i e d . i
extends p o k l i b : : ceasar . i
properties
POK : : S e c u r i t y L e v e l => 0 ;
end u n c l a s s i f i e d . i ;
end l a y e r s ;
265
M
emoire
package m e m o r i e s
public
memory memory segment
end memory segment ;
memory i m p l e m e n t a t i o n memory segment . i
properties
Word Count => 1 1 0 0 0 0 0 ;
end memory segment . i ;
memory ram
end ram ;
memory i m p l e m e n t a t i o n ram . s e n d e r
subcomponents
topsecret
: memory memory segment . i ;
secret
: memory memory segment . i ;
unclassified
: memory memory segment . i ;
driver
: memory memory segment . i
{ Word Count => 1 2 4 0 0 0 ; } ;
end ram . s e n d e r ;
memory i m p l e m e n t a t i o n ram .
subcomponents
topsecretandsecret
unclassified
driver
receiver
: memory memory segment . i ;
: memory memory segment . i ;
: memory memory segment . i
{ Word Count => 1 2 0 0 0 0 ; } ;
end ram . r e c e i v e r ;
end m e m o r i e s ;
B.4.2.3
Partitions
package p a r t i t i o n s
public
with types ;
with threads ;
with l a y e r s ;
process p a r t i t i o n s e c r e t s e n d
features
v a l u e o u t : out d a t a p o r t t y p e s : : i n t e g e r
{ A l l o w e d C o n n e c t i o n B i n d i n g C l a s s =>
( classifier ( layers :: secret . i ));};
end p a r t i t i o n s e c r e t s e n d ;
process implementation p a r t i t i o n s e c r e t s e n d . i
subcomponents
thr : thread threads : : t h r s e n d i n t . i ;
connections
p o r t t h r . o u t v a l u e > v a l u e o u t ;
end p a r t i t i o n s e c r e t s e n d . i ;
process p a r t i t i o n t o p s e c r e t s e n d
features
v a l u e o u t : out d a t a p o r t t y p e s : : i n t e g e r
{ A l l o w e d C o n n e c t i o n B i n d i n g C l a s s =>
( c l a s s i f i e r ( layers : : topsecret . i ));};
end p a r t i t i o n t o p s e c r e t s e n d ;
266
process implementation p a r t i t i o n t o p s e c r e t s e n d . i
subcomponents
thr : thread threads : : t h r s e n d i n t . i ;
connections
p o r t t h r . o u t v a l u e > v a l u e o u t ;
end p a r t i t i o n t o p s e c r e t s e n d . i ;
process p a r t i t i o n u n c l a s s i f i e d s e n d
features
v a l u e o u t : out d a t a p o r t t y p e s : : i n t e g e r
{ A l l o w e d C o n n e c t i o n B i n d i n g C l a s s =>
( classifier ( layers :: unclassified . i ));};
end p a r t i t i o n u n c l a s s i f i e d s e n d ;
process implementation p a r t i t i o n u n c l a s s i f i e d s e n d . i
subcomponents
thr : thread threads : : t h r s e n d i n t . i ;
connections
p o r t t h r . o u t v a l u e > v a l u e o u t ;
end p a r t i t i o n u n c l a s s i f i e d s e n d . i ;
process p a r t i t i o n u n c l a s s i f i e d r e c e i v e
features
v a l u e i n : i n data port t y p e s : : i n t e g e r
{ A l l o w e d C o n n e c t i o n B i n d i n g C l a s s =>
( classifier ( layers :: unclassified . i ));};
end p a r t i t i o n u n c l a s s i f i e d r e c e i v e ;
process implementation p a r t i t i o n u n c l a s s i f i e d r e c e i v e . i
subcomponents
thr : thread threads : : t h r r e c e i v e i n t . i ;
connections
p o r t v a l u e i n > t h r . i n v a l u e ;
end p a r t i t i o n u n c l a s s i f i e d r e c e i v e . i ;
process p a r t i t i o n s e c r e t a n d t o p s e c r e t r e c e i v e
features
v a l u e o n e : i n data port t y p e s : : i n t e g e r
{ A l l o w e d C o n n e c t i o n B i n d i n g C l a s s =>
( c l a s s i f i e r ( layers : : topsecret . i ));};
valuetwo : i n data port t y p e s : : i n t e g e r
{ A l l o w e d C o n n e c t i o n B i n d i n g C l a s s =>
( classifier ( layers :: secret . i ));};
end p a r t i t i o n s e c r e t a n d t o p s e c r e t r e c e i v e ;
process implementation
partition secret and topsecret receive . i
subcomponents
thr : thread threads : : t h r r e c e i v e t w o i n t . i ;
connections
p o r t v a l u e o n e > t h r . i n v a l u e 1 ;
p o r t v a l u e t w o > t h r . i n v a l u e 2 ;
end p a r t i t i o n s e c r e t a n d t o p s e c r e t r e c e i v e . i ;
end p a r t i t i o n s ;
B.4.2.4
Carte r
eseau
package r t l 8 0 2 9
public
w i t h POK;
with types ;
with runtime ;
267
thread t h r p o l l e r
properties
D i s p a t c h P r o t o c o l => P e r i o d i c ;
C o m p u t e E x e c u t i o n T i m e => 0 ms . . 1 ms ;
P e r i o d => 100 Ms ;
end t h r p o l l e r ;
thread implementation t h r p o l l e r . i
calls
c a l l 1 : { p s p g : subprogram p o l l ; } ;
end t h r p o l l e r . i ;
thread t h r h a n d l e r
features
incoming topsecret
: i n data port t y p e s : : i n t e g e r ;
incoming secret
: i n data port t y p e s : : i n t e g e r ;
incoming unclassified
: i n data port t y p e s : : i n t e g e r ;
outgoing topsecret
: out d a t a p o r t t y p e s : : i n t e g e r ;
outgoing secret
: out d a t a p o r t t y p e s : : i n t e g e r ;
outgoing unclassified
: out d a t a p o r t t y p e s : : i n t e g e r ;
properties
D i s p a t c h P r o t o c o l => P e r i o d i c ;
C o m p u t e E x e c u t i o n T i m e => 0 ms . . 1 ms ;
P e r i o d => 1000 Ms ;
S o u r c e C o d e S i z e => 3 Kbyte ;
S o u r c e D a t a S i z e => 0 Kbyte ;
S o u r c e S t a c k S i z e => 3000 Kbyte ;
end t h r h a n d l e r ;
thread implementation t h r h a n d l e r
connections
port incoming topsecret
>
port incoming secret
>
p o r t i n c o m i n g u n c l a s s i f i e d >
end t h r h a n d l e r . i ;
.i
outgoing topsecret ;
outgoing secret ;
outgoing unclassified ;
process d r i v e r
end d r i v e r ;
process implementation d r i v e r . i
subcomponents
: thread t h r h a n d l e r . i ;
data handler
poller
: thread t h r p o l l e r . i ;
properties
POK : : N e e d e d M e m o r y S i z e => 160 Kbyte ;
end d r i v e r . i ;
device rtl8029
features
incoming topsecret
incoming secret
incoming unclassified
268
: i n data port t y p e s : : i n t e g e r ;
: i n data port t y p e s : : i n t e g e r ;
: i n data port t y p e s : : i n t e g e r ;
topsecret
secret
unclassified
access
:
:
:
:
out d a t a
out d a t a
out d a t a
requires
runtime : :
port types : : i n t e g e r ;
port types : : i n t e g e r ;
port types : : i n t e g e r ;
bus a c c e s s
ethernet . unsecure ;
properties
I n i t i a l i z e E n t r y p o i n t => c l a s s i f i e r ( r t l 8 0 2 9 : : i n i t ) ;
POK : : Device Name => r t l 8 0 2 9 ;
end r t l 8 0 2 9 ;
abstract driver container
end d r i v e r c o n t a i n e r ;
a b s t r a c t implementation d r i v e r c o n t a i n e r . i
subcomponents
p : process d r i v e r . i ;
end d r i v e r c o n t a i n e r . i ;
device implementation r t l 8 0 2 9 . i
properties
D e v i c e D r i v e r => c l a s s i f i e r ( r t l 8 0 2 9 : : d r i v e r c o n t a i n e r . i ) ;
end r t l 8 0 2 9 . i ;
end r t l 8 0 2 9 ;
B.4.2.5
Runtime g
en
erique
package r u n t i m e
public
w i t h POK;
with l a y e r s ;
v i r t u a l processor partition runtime
properties
POK : : S c h e d u l e r => RR ;
POK : : A d d i t i o n a l F e a t u r e s => ( c o n s o l e ) ;
end p a r t i t i o n r u n t i m e ;
v i r t u a l processor implementation p a r t i t i o n r u n t i m e . t o p s e c r e t
properties
P r o v i d e d V i r t u a l B u s C l a s s =>
( c l a s s i f i e r ( layers : : topsecret . i ));
end p a r t i t i o n r u n t i m e . t o p s e c r e t ;
v i r t u a l processor implementation p a r t i t i o n r u n t i m e . s e c r e t
properties
P r o v i d e d V i r t u a l B u s C l a s s =>
( classifier ( layers :: secret . i ));
end p a r t i t i o n r u n t i m e . s e c r e t ;
v i r t u a l processor implementation p a r t i t i o n r u n t i m e . s e c r e t a n d t o p s e c r e t
properties
P r o v i d e d V i r t u a l B u s C l a s s =>
( classifier ( layers :: secret . i ) ,
c l a s s i f i e r ( layers : : topsecret . i ));
end p a r t i t i o n r u n t i m e . s e c r e t a n d t o p s e c r e t ;
v i r t u a l processor implementation p a r t i t i o n r u n t i m e . u n c l a s s i f i e d
properties
P r o v i d e d V i r t u a l B u s C l a s s =>
( classifier ( layers :: unclassified . i ));
end p a r t i t i o n r u n t i m e . u n c l a s s i f i e d ;
269
B.4.2.6
package r u n t i m e s e n d e r
public
with runtime ;
w i t h POK;
processor k e r n e l s e n d e r extends runtime : : pok kernel
end k e r n e l s e n d e r ;
processor implementation k e r n e l s e n d e r . i
subcomponents
partition secret
: v i r t u a l processor
runtime : : p a r t i t i o n r u n t i m e . s e c r e t ;
partition topsecret
: v i r t u a l processor
runtime : : p a r t i t i o n r u n t i m e . t o p s e c re t ;
partition unclassified
: v i r t u a l processor
runtime : : p a r t i t i o n r u n t i m e . u n c l a s s i f i e d ;
partition network
: v i r t u a l processor
runtime : : p a r t i t i o n r u n t i m e . u n c l a s s i f i e d
{POK : : A d d i t i o n a l F e a t u r e s => ( s t d l i b , i o , p c i , s t d i o ) ; } ;
properties
POK : : M a jo r F ra me => 2000ms ;
POK : : S c h e d u l e r => s t a t i c ;
POK : : S l o t s => ( 5 0 0 ms , 500ms , 500ms , 500ms ) ;
POK : : S l o t s A l l o c a t i o n =>
( reference ( p a rt i ti o n s e c r e t ) ,
reference ( partition topsecret ) ,
reference ( p a r t i t i o n u n c l a s s i f i e d ) ,
reference ( partition network ));
end k e r n e l s e n d e r . i ;
end r u n t i m e s e n d e r ;
B.4.2.7
Runtime noeud r
ecepteur
package r u n t i m e r e c e i v e r
public
with runtime ;
w i t h POK;
270
B.4.2.8
Threads
package t h r e a d s
public
with types ;
thread t h r r e c e i v e i n t
features
i n v a l u e : i n data port t y p e s : : i n t e g e r ;
properties
D i s p a t c h P r o t o c o l => P e r i o d i c ;
C o m p u t e E x e c u t i o n T i m e => 0 ms . . 1 ms ;
P e r i o d => 1000 Ms ;
S o u r c e C o d e S i z e => 3 Kbyte ;
S o u r c e D a t a S i z e => 0 Kbyte ;
S o u r c e S t a c k S i z e => 3000 Kbyte ;
end t h r r e c e i v e i n t ;
thread implementation t h r r e c e i v e i n t . i
calls
c a l l 1 : { p s p g : subprogram s u b p r o g r a m s : : p r i n t i n t e g e r ; } ;
connections
p o r t i n v a l u e > p s p g . v a l u e t o p r i n t ;
end t h r r e c e i v e i n t . i ;
thread t h r s e n d i n t
features
o u t v a l u e : out d a t a p o r t t y p e s : : i n t e g e r ;
properties
D i s p a t c h P r o t o c o l => P e r i o d i c ;
C o m p u t e E x e c u t i o n T i m e => 0 ms . . 1 ms ;
P e r i o d => 1000 Ms ;
S o u r c e C o d e S i z e => 3 Kbyte ;
S o u r c e D a t a S i z e => 0 Kbyte ;
S o u r c e S t a c k S i z e => 3000 Kbyte ;
end t h r s e n d i n t ;
thread implementation t h r s e n d i n t . i
calls
c a l l 1 : { p s p g : subprogram s u b p r o g r a m s : : p r o d u c e i n t e g e r ; } ;
271
B.4.2.9
Sous-programmes applicatifs
package s u b p r o g r a m s
public
with types ;
subprogram p r i n t i n t e g e r
features
v a l u e t o p r i n t : i n parameter t y p e s : : i n t e g e r ;
properties
s o u r c e n a m e => u s e r p r i n t i n t e g e r ;
s o u r c e l a n g u a g e => C ;
S o u r c e T e x t => ( . . / . . / . . / u s e r c o d e . o ) ;
S o u r c e C o d e S i z e => 3 Kbyte ;
S o u r c e D a t a S i z e => 0 Kbyte ;
end p r i n t i n t e g e r ;
subprogram p r i n t t w o i n t e g e r
features
firstvaluetoprint
: i n parameter t y p e s : : i n t e g e r ;
secondvaluetoprint
: i n parameter t y p e s : : i n t e g e r ;
properties
s o u r c e n a m e => u s e r p r i n t t w o i n t e g e r ;
s o u r c e l a n g u a g e => C ;
S o u r c e T e x t => ( . . / . . / . . / u s e r c o d e . o ) ;
S o u r c e C o d e S i z e => 3 Kbyte ;
S o u r c e D a t a S i z e => 0 Kbyte ;
end p r i n t t w o i n t e g e r ;
subprogram p r o d u c e i n t e g e r
features
v a l u e p r o d u c e d : out p a r a m e t e r t y p e s : : i n t e g e r ;
properties
s o u r c e n a m e => u s e r p r o d u c e i n t e g e r ;
s o u r c e l a n g u a g e => C ;
S o u r c e T e x t => ( . . / . . / . . / u s e r c o d e . o ) ;
S o u r c e C o d e S i z e => 3 Kbyte ;
272
end s u b p r o g r a m s ;
B.4.2.10
Types
package t y p e s
public
w i t h Data Model ;
data i n t e g e r
properties
Data Model : : D a t a R e p r e s e n t a t i o n => i n t e g e r ;
end i n t e g e r ;
data r e t t
properties
Data Model : : D a t a R e p r e s e n t a t i o n => i n t e g e r ;
end r e t t ;
data s i z e t
properties
Data Model : : D a t a R e p r e s e n t a t i o n => i n t e g e r ;
end s i z e t ;
data s t r t
properties
Data Model : : D a t a R e p r e s e n t a t i o n => s t r i n g ;
end s t r t ;
end t y p e s ;
B.4.2.11
Int
egration des composants
package main
public
with
with
with
with
with
with
with
with
POK;
types ;
runtime sender ;
runtime receiver ;
rtl8029 ;
partitions ;
memories ;
runtime ;
sy s t e m m i l s a r c h i t e c t u r e s a m p l e
end m i l s a r c h i t e c t u r e s a m p l e ;
sy s t e m i m p l e m e n t a t i o n m i l s a r c h i t e c t u r e s a m p l e . i
subcomponents
273
: process
topsecret send . i ;
: process
unclassified send . i ;
: memory
Here , r e c e i v e r components .
receiver processor
: processor
runtime receiver :: kernel receiver . i ;
receiver netif
: device
rtl8029 : : rtl8029 . i
{POK : : Hw Addr => 0 0 : 0 F : FE : 5 F : 7 B : 2 F ; } ;
: process
receiver partition topsecretandsecret
partitions :: partition secret and topsecret receive . i ;
: process
receiver partition unclassified
partitions :: partition unclassified receive . i ;
receiver ram
: memory
m e m o r i e s : : ram . r e c e i v e r ;
ethernet bus
: bus r u n t i m e : : e t h e r n e t . u n s e c u r e ;
connections
C o n n e c t i o n s INSIDE t h e s e n d e r node
port s e n d e r p a r t i t i o n s e c r e t . valueout
> s e n d e r n e t i f . i n c o m i n g s e c r e t ;
port s e n d e r p a r t i t i o n t o p s e c r e t . valueout
> s e n d e r n e t i f . i n c o m i n g t o p s e c r e t ;
port s e n d e r p a r t i t i o n u n c l a s s i f i e d . valueout
> s e n d e r n e t i f . i n c o m i n g u n c l a s s i f i e d ;
C o n n e c t i o n s INSIDE t h e r e c e i v e r node
port r e c e i v e r n e t i f . outgoing topsecret
> r e c e i v e r p a r t i t i o n t o p s e c r e t a n d s e c r e t . v a l u e o n e ;
port r e c e i v e r n e t i f . outgoing secret
> r e c e i v e r p a r t i t i o n t o p s e c r e t a n d s e c r e t . v a l u e t w o ;
port r e c e i v e r n e t i f . o u t g o i n g u n c l a s s i f i e d
> r e c e i v e r p a r t i t i o n u n c l a s s i f i e d . v a l u e i n ;
Connections a c r o s s nodes
port s e n d e r n e t i f . outgoing topsecret
> r e c e i v e r n e t i f . i n c o m i n g t o p s e c r e t
{ A c t u a l C o n n e c t i o n B i n d i n g => ( r e f e r e n c e ( e t h e r n e t b u s ) ) ; } ;
port s e n d e r n e t i f . outgoing secret
> r e c e i v e r n e t i f . i n c o m i n g s e c r e t
{ A c t u a l C o n n e c t i o n B i n d i n g => ( r e f e r e n c e ( e t h e r n e t b u s ) ) ; } ;
port s e n d e r n e t i f . o u t g o i n g u n c l a s s i f i e d
> r e c e i v e r n e t i f . i n c o m i n g u n c l a s s i f i e d
{ A c t u a l C o n n e c t i o n B i n d i n g => ( r e f e r e n c e ( e t h e r n e t b u s ) ) ; } ;
Bus a c c e s s e s
bus a c c e s s e t h e r n e t b u s > s e n d e r n e t i f . e t h e r n e t a c c e s s ;
bus a c c e s s e t h e r n e t b u s > r e c e i v e r n e t i f . e t h e r n e t a c c e s s ;
properties
P r o p e r t i e s f o r t h e s e n d e r
A c t u a l P r o c e s s o r B i n d i n g =>
( reference ( sender processor . p a r t i t i o n s e c r e t ))
a p p l i e s to s e n d e r p a r t i t i o n s e c r e t ;
A c t u a l P r o c e s s o r B i n d i n g =>
( reference ( sender processor . p a r t i t i o n t o p s e c r e t ))
a p p l i e s to s e n d e r p a r t i t i o n t o p s e c r e t ;
274
A c t u a l P r o c e s s o r B i n d i n g =>
( reference ( sender processor . p a r t i t i o n u n c l a s s i f i e d ))
a p p l i e s to s e n d e r p a r t i t i o n u n c l a s s i f i e d ;
A c t u a l P r o c e s s o r B i n d i n g =>
( reference ( sender processor . partition network ))
a p p l i e s to s e n d e r n e t i f ;
Actual Memory Binding
=> ( r e f e r e n c e ( s e n d e r r a m . d r i v e r ) )
a p p l i e s to s e n d e r n e t i f ;
Actual Memory Binding
=> ( r e f e r e n c e ( s e n d e r r a m . u n c l a s s i f i e d ) )
a p p l i e s to s e n d e r p a r t i t i o n u n c l a s s i f i e d ;
Actual Memory Binding
=> ( r e f e r e n c e ( s e n d e r r a m . t o p s e c r e t ) )
a p p l i e s to s e n d e r p a r t i t i o n t o p s e c r e t ;
Actual Memory Binding
=> ( r e f e r e n c e ( s e n d e r r a m . s e c r e t ) )
a p p l i e s to s e n d e r p a r t i t i o n s e c r e t ;
P r o p e r t i e s f o r t h e r e c e i v e r
A c t u a l P r o c e s s o r B i n d i n g =>
( reference
( receiver processor . partition topsecretandsecret ))
a p p l i e s to r e c e i v e r p a r t i t i o n t o p s e c r e t a n d s e c r e t ;
A c t u a l P r o c e s s o r B i n d i n g =>
( reference ( receiver processor . p a r t i t i o n u n c l a s s i f i e d ))
a p p l i e s to r e c e i v e r p a r t i t i o n u n c l a s s i f i e d ;
A c t u a l P r o c e s s o r B i n d i n g =>
( reference ( receiver processor . partition network ))
a p p l i e s to r e c e i v e r n e t i f ;
Actual Memory Binding
=>
( reference ( receiver ram . driver ))
a p p l i e s to r e c e i v e r n e t i f ;
Actual Memory Binding
=>
( reference ( receiver ram . u n c l a s s i f i e d ))
a p p l i e s to r e c e i v e r p a r t i t i o n u n c l a s s i f i e d ;
Actual Memory Binding
=>
( reference ( receiver ram . topsecretandsecret ))
a p p l i e s to r e c e i v e r p a r t i t i o n t o p s e c r e t a n d s e c r e t ;
end m i l s a r c h i t e c t u r e s a m p l e . i ;
end main ;
B.5
B.5.1
Le programme suivant a ete utilise pour reproduire le chiffrement des donnees du niveau de securite secret du cas detude MILS (section 6.3). Ce
code sappuie sur les fonctions de chiffrement fournies dans POK (code source
disponible dans le repertoire libpok/protocols/ du projet.
#i n c l u d e < s t d i o . h>
275
276