Précédent : Fondements scientifiques
Remonter : Projet COQ, Spécifications et preuves
Suivant : Logiciels
Les protocoles sont des programmes permettant la communication. Bien que leur taille soit souvent réduite, leur complexité est grande. En effet, ils sont amenés à fonctionner dans des milieux perturbés dont la modélisation précise n'est pas une tâche aisée. Au-dessus des protocoles sont construits de nombreux autres systèmes; leur bon fonctionnement est crucial et il est essentiel que ces protocoles soient correctement spécifiés- leur comportement est d'ailleurs souvent régi par une norme.
De plus en plus de services cherchent à utiliser les réseaux télématiques tels qu'Internet ou les téléphones mobiles. Il faut donc concevoir de nouveaux protocoles offrant de plus en plus de fonctionnalités. Le commerce électronique ou la téléphonie mobile soulèvent de nouvelles exigences de confidentialité des informations échangées.
Prouver un protocole est une tâche difficile, cependant la preuve ne variera en général pas beaucoup entre deux protocoles d'une même famille, il sera donc plus économique de revérifier un protocole après une modification que de rejouer à partir de zéro un jeu de tests. De plus les preuves apportent une connaissance approfondie des algorithmes et peuvent souvent être une aide précieuse pour concevoir de nouvelles méthodes.
Les preuves peuvent être faites de manière automatique lorsque les problèmes se ramènent à des modélisations finies de taille raisonnable. Cette contrainte nécessite souvent d'abstraire le problème réel. Les assistants à la démonstration tels que Coq permettent de formaliser un problème arbitrairement compliqué et de le résoudre en utilisant des étapes élémentaires correspondant au raisonnement mathématique usuel. Coq apparaît alors comme l'outil du spécialiste lui permettant de spécifier formellement un protocole et d'en justifier le bon fonctionnement. Outre l'assurance de la correction d'un protocole, Coq permettra de faire évoluer la preuve en même temps que le protocole et fournira les éléments nécessaires au processus de normalisation ou de certification. Coq est actuellement utilisé dans ce sens pour des preuves de protocoles de commerce électronique dans l'action VIP de Dyade et pour des preuves d'algorithmes intervenant dans les protocoles du réseau ATM au CNET.
Les outils utilisés pour faire des preuves reposent en général sur un traitement de notations de haut-niveau qui sont ensuite traduites vers un langage exécutable. C'est le cas par exemple de la vérification de systèmes réactifs où l'analyse est faite à partir de programmes écrits dans les langages synchrones qui sont ensuite traduits vers des automates.
Afin d'assurer la certification des programmes ainsi obtenus, il est nécessaire de justifier la correction du compilateur. Le formalisme de Coq se prête assez bien à ce genre de preuve du fait de la représentation possible des règles sémantiques par des définitions inductives et de la possibilité d'obtenir un compilateur exécutable certifié à partir d'une preuve de correction de la traduction.