Comment un logiciel peut-il résister aux attaques et à l’utilisation malveillante ? C’est le problème général de la sécurité du logiciel, et c’est un vaste problème tant les failles de sécurité sont nombreuses et variées, de la manipulation des utilisateurs à l’observation et la perturbation des circuits de l’ordinateur, en passant par l’exploitation astucieuse de « bugs » dans le code du logiciel.
Le cours a abordé cette problématique de sécurité du logiciel sous l’angle des langages de programmation et de leurs techniques de typage, d’analyse statique et de vérification déductive. Cette approche est connue sous le nom de language-based security dans la littérature. Le cours s’est efforcé de caractériser la contribution de cette approche à la sécurité informatique, ainsi que ses limitations. Pour ce faire, nous avons décrit un certain nombre de problèmes de sécurité du logiciel ainsi que les protections classiques contre ces problèmes, et avons comparé ces dernières aux garanties que l’on peut obtenir par l’approche language-based security.