¿Cuáles son algunos ejemplos de fallas bizantinas en sistemas distribuidos?

Una falla bizantina es literalmente un comportamiento “arbitrario”.

En los sistemas distribuidos, a menudo razonamos sobre un comportamiento defectuoso al pensar en un adversario invisible que está tratando de romper el protocolo. Diferentes tipos de fallas confieren diferentes poderes al adversario. Las fallas bizantinas están en el extremo más alejado del espectro, donde el adversario tiene el poder de:

  • Hacer que los nodos defectuosos se bloqueen.
  • Obtenga nodos defectuosos para enviar mensajes arbitrarios a sus pares e incluso salga del protocolo (como ejemplo, anunciando diferentes propuestas a diferentes pares en un protocolo de consenso).
  • Y además de todo esto, también controle el horario de llegada de mensajes a diferentes nodos.

Como puede ver, esta es una cantidad extrema de poder para un adversario. La configuración de la vida real donde se garantiza este nivel de precaución incluye:

  • Sistemas críticos de seguridad, en los que una falla de hardware o un hardware defectuoso no deberían desencadenar una serie de eventos desafortunados que podrían causar la falla de un sistema grande. Piense en sistemas de control en tiempo real como los que se usan en los aviones.
  • A menudo se espera que los sistemas de control para las sondas enviadas al espacio funcionen durante décadas, y es inevitable que su hardware experimente un comportamiento defectuoso con el tiempo.
  • Comportamiento malicioso en el que un atacante controla partes de un sistema distribuido. Blockchain y los libros de contabilidad distribuidos son una vía en este sentido que puede querer tolerar fallas bizantinas.