Il existe de nombreux protocoles de sécurité destinés à communiquer via internet. L'un des principaux, Transport Layer Security (TLS) [4], a pour objectif de sécuriser l'échange de données entre deux parties. Très largement utilisé, le protocole de chi rement HTTPS [5] repose sur ce dernier. TLS est donc une cible privilégiée pour un adversaire souhaitant accéder à des données con dentielles. Nous introduisons ici FlexTLS, une librairie développée en F# et basée sur les primitives cryptographiques de miTLS [2], une implémentation de référence, formellement véri ée, de TLS. FlexTLS a une API propre lui permettant d'implémenter de manière exible et concise des scénarios de handshake sans réutiliser le state-machine de miTLS.
La spéci cation de TLS est volumineuse et en constante évolution. Dans le cadre de sa mise à jour vers la version 1.3 [6], le TLS Working Group de l'IETF est en train de procéder à des changements radicaux sur certains aspects du protocole : par exemple, la suppression du mécanisme d'échange de clés RSA ou encore le chi rement opportuniste du handshake. Cela implique des modi cations parfois profondes dans les librairies existantes et tend à introduire de nouveaux problèmes dans le protocole et ses implémentations. Du fait de la complexité du phénomène, ces erreurs ne sont pas nécessairement détectées par les tests de fonctionnement usuels.
Certains aspects problématiques de la spéci cation ne sont détectés qu'au moment d'écrire le code. Or, du fait de l'instabilité actuelle de celle-ci, aucun outil ne permettait, à notre connaissance, de réaliser une évaluation de la sécurité, de l'interopérabilité et du comportement fonctionnel des implémentations de TLS et à fortiori, pas dans de courts délais. Par ailleurs, les fonctionnalités encore en cours de maturation sont rarement implémentées du fait de l'investissement en temps à consentir.
Il est donc nécessaire pour les industriels et les académiques d'avoir accès à un outil permettant de répondre aux problématiques suivantes :
L'objectif de FlexTLS est de répondre à l'ensemble de ces besoins.
A n de garantir une meilleure cohérence entre la spéci cation du protocole et ses implémentations et d'accroître le niveau de sécurité de celles-ci, nous pouvons désormais accompagner l'émergence d'un nouveau concept quasiment en temps réel grâce au prototypage par FlexTLS.