Parsifal: une solution pour écrire rapidement des parsers binaires robustes et efficaces

Entrée en langue française / French entry Catégorie: Séminaire
Auteur: Olivier Levillain
Date: 6 décembre 2018
Série: Parsifal

L'implémentation de protocoles réseau passe par une étape souvent négligée : le parsing (ou dissection) des messages. Cette étape, qui consiste à interpréter une structure plus ou moins complexe à partir d'une chaîne d'octets, est également essentielle dans le traitement de fichiers. De nombreuses failles sont régulièrement mises au jour dans le code responsable de cette étape.

Pour répondre à ce problème de manière efficace et robuste, j'avais écrit il y a quelques années Parsifal, un langage dédié à la description des formats binaires, permettant la génération du plus gros du code lié aux parsers. Parsifal s'est montré efficace pour traiter des protocoles réseau (TLS, DNS, BGP, etc.) mais aussi des formats de fichiers (X.509, UEFI, OpenPGP, etc.).

Malgré ses bons et loyaux services, Parsifal mériterait une mise à jour. Tout d'abord, les outils utilisés pour la génération de code (le préprocesseur camlp4) ne sont peut-être plus les plus adaptés. Ensuite, le langage lui-même gagnerait à être nettoyé et rendu plus expressif. Enfin, il serait intéressant, au-delà des messages échangés, de décrire, au moins partiellement, les automates des protocoles réseau d'une manière similaire.

Cette présentation traitera donc du parsing, de la solution apportée par Parsifal, et des objectifs à court et moyen termes autour de l'outil.

Présenté lors de la Journée Langages, Types et Preuves à Évry, France le 6 décembre 2018

BibTeX Présentation