Problème des généraux byzantins
En informatique, le problème des généraux byzantins est une métaphore qui traite de la remise en cause de la fiabilité des transmissions et de l'intégrité des interlocuteurs. La question est donc de savoir comment, et dans quelle mesure, il est possible de prendre en compte une information dont la source ou le canal de transmission est suspect. La solution implique l'établissement d'un algorithme (d'une stratégie) adapté. Ce problème a été traité en profondeur pour la première fois dans l'article The Byzantine Generals Problem publié en 1982[1].
Le problème des généraux byzantins est une généralisation du problème des deux généraux.
Énoncé du problème
La métaphore
Des généraux de l'armée byzantine campent autour d'une cité ennemie. Ils ne peuvent communiquer qu'à l'aide de messagers et doivent établir un plan de bataille commun, faute de quoi la défaite sera inévitable. Cependant un certain nombre de ces généraux peuvent s'avérer être des traîtres, qui essayeront donc de semer la confusion parmi les autres. Le problème est donc de trouver un algorithme pour s'assurer que les généraux loyaux arrivent tout de même à se mettre d'accord sur un plan de bataille.
Il a été démontré qu'en utilisant uniquement des messages oraux, ce problème des généraux byzantins peut être résolu, si et seulement si plus des deux tiers des généraux sont loyaux. Ainsi un seul traître peut confondre deux généraux loyaux. De plus, le problème peut être résolu pour un nombre quelconque de généraux renégats si les messages sont écrits (et non falsifiables).
L'analogie avec les systèmes informatiques
Un ensemble de composants informatiques fonctionnant de concert doit gérer d'éventuelles défaillances parmi ceux-ci. Ces défaillances consisteront alors en la présentation d'informations erronées ou incohérentes. On s'intéresse ici à des problèmes de défaillances, aussi bien matérielles que logicielles, d'origines accidentelle ou malveillante, intervenant pendant l'établissement des informations ou pendant leur transport d'un composant à l'autre. La gestion de ces composants défectueux est aussi appelée tolérance aux pannes.
Le problème des composants défectueux dans un système informatique (ou ailleurs) peut être exprimé de façon abstraite en termes de généraux de l'armée byzantine.
Étude algorithmique
La preuve de travail, et la preuve d'enjeu sont deux types d'algorithme de consensus visant à résoudre les problèmes des généraux byzantin.
Références
- (en) Leslie Lamport, Robert Shostak et Marshall Pease, « The Byzantine Generals Problem », ACM Transactions on Programming Languages and Systems, vol. 4, no 3, (lire en ligne).