Analyse et tissage d'aspects
L'arrivée de langages de programmation de haut
niveau incluant des mécanismes de sécurité ouvre
la possibilité de concevoir et de raisonner sur la
sécurité d'un logiciel en s'appuyant sur des techniques
proposées dans le contexte de l'analyse statique et de la
transformation de programmes, en s'inspirant de la tehcniques de tissage de la programmation par
aspects.
Les approches statiques
reposent sur le programmeur pour implanter les propriétés
de sécurité. On vérifie ensuite statiquement (par
interprétation abstraite, model-checking ou vérification
de types) que les propriétés sont effectivement
assurées. Ce type d'approche n'entraîne aucun
surcoût dynamique. En revanche, des approximations doivent
être faites et certains
programmes sûrs sont rejetés. L'implantation des
propriétés reste complètement à la charge
du programmeur.
Les approches dynamiques
reposent sur un processus observant et contrôlant
l'exécution du programme à sécuriser. Les
moniteurs de sécurité, qui stoppent les programmes
tentant de violer la politique de sécurité, appartiennent
à cette classe. Ce type
d'approche ne rejette jamais de programme sûr et permet de
modifier ou changer facilement la politique de sécurité
(pour faire face à de nouvelles
menaces, par exemple). Les approches dynamiques sont par contre
relativement coûteuses en temps d'exécution.
Les approches mixtes visent à combiner les avantages des deux
approches précédentes. Une approche mixte repose sur des
analyses statiques afin de limiter le surcoût à
l'exécution. D'un autre coté, les approximations
n'entraînent plus le rejet de programme mais l'insertion de tests
dynamiques. Comme avec une approche dynamique, aucun programme
sûr n'est rejeté. Comme avec une approche statique, un
programme qui peut être montré sûr statiquement
s'exécute sans le moindre surcoût.