¿Qué es una Falla Bizantina?

Los sistemas informáticos distribuidos padecen infinidad de fallos, y la falla bizantina es uno de los más frecuentes. Esta clase de fallos son muy difíciles de solucionar, pues el sistema de detección halla contrariedades para decidir si el fallo está ahí o bien no.

Una falla bizantina, es una condición de un sistema computacional, en concreto de sistemas de computación distribuidos. Esta condición ocurre cuando uno o bien más componentes han fallado y no hay información precisa sobre si un componente ha fallado, o bien si la información del sistema es adecuada.

En una falla bizantina, un componente como un servidor puede aparecer inconsistentemente como fallando y marchando en los sistemas de detección de fallas. Esto ocurre pues el sistema presenta síntomas diferentes en frente de diferentes observadores. En este punto, es bastante difícil para los otros componentes tomar la resolución de declararlo errado y excluirlo de la red. Puesto que para esto se precisa llegar a un acuerdo sobre qué componente ha fallado primeramente.

La Falla Bizantina como inconveniente de consenso

El término toma su nombre del conocido “Problema de los Generales Bizantinos”. Este fue desarrollado para describir una circunstancia donde los actores deben convenir una estrategia o bien consenso para eludir el descalabro aciago del sistema. Y además de esto deben lograr esta meta a sabiendas de que entre ellos, pueden existir actores poco fiables.

El Inconveniente de los Generales Bizantinos fue descrito por Robert Shostak en mil novecientos setenta y ocho, en el marco de un proyecto del laboratorio de Ciencias de la Computación de SRI International. Este proyecto se llamó SIFT, y contaba con respaldo de exactamente la misma agencia aeroespacial NASA. El caso descrito representa en esencia, un inconveniente de comunicación distribuida entre computadores. En él, computadores enfocados a diferentes propósitos, deben ser capaces de establecer una comunicación por pares y poder llegar a un acuerdo. Y deben poder hacerlo si bien ciertos de ellos estén estropeados. Para comprenderlo mejor, veamos su planteamiento:

El Inconveniente de los Generales Bizantinos (PGB)

  • Varios generales del mismo bando y sus ejércitos están ubicados en diferentes extremos de una urbe con pretensión de sitiarla.
  • Para lograr el éxito, precisan agredir a la urbe de manera coordinada para derrotar a las defensas o bien retirarse de manera coordinada. En el caso de no acompasar sus acciones, van a caer frente a las fuertes fuerzas contrincantes.
  • Para conseguirlo, los generales atacantes se comunican entre ellos por medio de mensajeros.
  • Aunque la urbe está repleta de oponentes, los mensajeros deben cruzar la urbe para ir de un campamento a otro con las órdenes de ataque.
  • El supuesto señala que el mensajero de un ejército notificará a otro de la pretensión de agredir o bien no, y cuando hacerlo.
  • Conforme reciban propuestas los generales van a ir confirmando o bien rechazando las misma para establecer un pacto de votación sobre qué paso dar.

Cómo se puede observar, el inconveniente es que en la urbe los oponentes podrían atrapar a los mensajeros. De lograr interceptarlos, el mensaje podría ser modificado y en consecuencia, el ataque no se efectuaría coordinadamente. Al no efectuarse de manera coordinada, los ejércitos atacantes caerían derrotados, fracasando de esta forma su misión.

Por ejemplo, si un mensaje de los generales fuera “Atacar mañana”, se podría trastocar el texto agregando detrás “sólo si llueve”. De esta manera el otro ejército podría meditar que acuerda agredir solo en el caso de lluvia, y confirmar el mensaje. Con lo que el primer ejército atacaría y el segundo podría no hacerlo y retirarse si no lloviera.

En un conjunto de sistemas informáticos distribuidos con un fin común, cada ordenador equivaldría a un general y su ejército. Y en consecuencia, la red de datos sería equivalente a los mensajeros que deben cruzar la urbe notificando a los generales.

¿Qué efecto tienen las fallas bizantinas?

Las fallas bizantinas son consideradas la clase de fallas más general y más compleja de solucionar. Esto es de este modo pues el nodo que falla en internet, puede estar produciendo datos arbitrarios, y pretender estar adecuadamente. Las fallas bizantinas, son capaces de confundir los sistemas de detección de fallas. Pese a la analogía, una falla bizantina no necesariamente es un inconveniente de seguridad que involucre interferencia humana hostil: puede surgir de forma azarosa debido a fallos eléctricos que se marchan amontonando.

Para explicar un tanto más los efectos y alcances de estas fallas vamos a explicar ciertos casos conocidos de las mismas:

Caso #1: Transbordador Espacial Discovery – Vuelo STS-124

La NASA encontró que una de las fallas de la misión STS-ciento veinticuatro, se vio involucrado el sistema de control de comburente. De sus 4 sistema de control, los 4 daban información errada y totalmente diferente del sistema de control. No obstante, la falla no era de programación, sino más bien física. Esta se produjo en una tarjeta de control que comunicaba a los cuatros computadores. Una grieta en un diodo, fue lo que produjo esta falla bizantina. La rotura del diodo, fue culpable de una transmogrificación al transformar un diodo en un condensador. Esta situación retrasó el lanzamiento del transbordador hasta el momento en que la falla fue solucionada.

Si el sistema del Transbordador no fuese tolerantes a fallos bizantinos, esta falla hubiese sido catastrófica. Sin control del sistema de comburente, hubiese significado que el transbordador explotase. Este fallo es un claro ejemplo de lo peligrosas que pueden ser las fallas bizantinas, y de lo bastante difícil que puede ser advertirlas o bien prevenirlas.

falla bizantina en el trasnbordador espacial Discovery

¿Cuánto sabes, criptonauta?

¿La falla bizantina es un inconveniente causado por terceros?

Caso #2: Tecnología blockchain

En el caso de la blockchain las fallas bizantinas se pueden presentar en la actuación de nodos no fiables o bien aviesos. Si algún miembro de la comunidad manda información inconsistente a otros sobre transacciones, la fiabilidad de la blockchain se rompe. Para solucionar esto, PoW ofrece mecanismos de tolerancia a fallas bizantinas (BFT) para eludir este inconveniente.

Otro inconveniente que se presenta en blockchain relacionado con las fallas bizantinas son los casos de doble gasto. El doble gasto, es un ataque en el que un actor hace empleo en un par de ocasiones diferentes de exactamente las mismas criptomonedas. En un caso así, la red blockchain debe resistir el hecho de que una misma criptomoneda se utilice de esta manera. Hacer esto es bastante complejo. Para conseguirlo se debe diseñar mecanismos que sean tolerantes a fallas bizantinas parciales o bien completas.

bitcoin
Bitcoin (BTC) $ 64,043.00
ethereum
Ethereum (ETH) $ 3,872.77
binance-coin
Binance Coin (BNB) $ 487.10
tether
Tether (USDT) $ 1.00
cardano
Cardano (ADA) $ 2.11
xrp
XRP (XRP) $ 1.09
solana
Solana (SOL) $ 156.82
polkadot
Polkadot (DOT) $ 41.51
dogecoin
Dogecoin (DOGE) $ 0.245819
usd-coin
USD Coin (USDC) $ 1.00