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.