Infrastructure
BFT : Byzantine Fault Tolerance, en français tolérance aux pannes byzantines. « La capacité d'un groupe de machines à rester d'accord alors que certaines d'entre elles mentent », par analogie avec les généraux de Byzance assiégeant une ville, qui doivent décider ensemble d'attaquer en sachant que quelques-uns sont des traîtres, situation que l'on retrouve dans tout conseil d'administration.
Origine : Le problème est formalisé en 1982 par Leslie Lamport, Robert Shostak et Marshall Pease dans « The Byzantine Generals Problem ». Une panne byzantine désigne un comportement arbitraire : répondre différemment à chacun, rejouer un ancien message, se taire au mauvais moment, ou coopérer avec un attaquant.
Le seuil 3f + 1 : Pour tolérer f participants byzantins, il faut au moins 3f + 1 participants et des quorums de 2f + 1 votes : deux quorums se recoupent alors toujours en au moins un participant honnête. Avec quatre nœuds, on tolère un menteur ; avec trois, on tolère seulement de se croire en sécurité.
Byzantin ou simple panne : Les protocoles courants comme Raft ou Paxos, utilisés par exemple par etcd sous Kubernetes, ne tolèrent que les pannes franches (un nœud qui s'arrête) avec 2f + 1 nœuds, et supposent que personne ne ment. Les protocoles BFT, comme PBFT (Practical Byzantine Fault Tolerance, Castro et Liskov, 1999), coûtent plus de messages mais résistent à un nœud compromis.
Ce qui arrive si on s'en passe
Un système de consensus conçu pour les seules pannes franches fait confiance à chaque nœud : un seul nœud compromis peut alors voter deux fois, annoncer des résultats différents à chaque voisin et faire valider des écritures contradictoires. Dimensionner un groupe BFT sous le seuil de 3f + 1, ou placer plusieurs validateurs chez le même hébergeur avec les mêmes clés d'administration, ramène la tolérance réelle à zéro tout en conservant le vocabulaire rassurant. La découverte se fait le jour où deux parties du système affirment, chacune avec un quorum, deux vérités incompatibles.
Explication de la marmotte
Imaginez plusieurs ordinateurs qui doivent se mettre d'accord sur une même liste, par exemple l'ordre des transactions. Si l'un d'eux tombe en panne, c'est gênant ; s'il ment volontairement en disant des choses différentes à chacun, c'est bien pire. Un système tolérant aux pannes byzantines continue à fonctionner correctement même si quelques participants mentent. Pour cela, il faut assez de participants honnêtes : au moins trois fois le nombre de menteurs, plus un.
Où ce terme est utilisé
- Consensus distribué et tolérance aux pannes byzantines (15 occurrences)
- Partager un secret et distribuer la confiance (2 occurrences)
