Distributed computer systems suffer countless errors, and Byzantine failure is one of the most common. These types of errors are very difficult to solve, because the detection system finds it difficult to decide if the error is there or not.
UA Byzantine fault is a condition of a computational system, specifically of distributed computing systems. This condition occurs when one or more components have failed and there is no precise information on whether a component has failed, or if the system information is correct.
On a Byzantine fault, a component like a server may appear inconsistently like failing and working in fault detection systems. This occurs because the system presents different symptoms compared to different observers. At this point, it is difficult for the other components to make the decision to declare it failed and exclude it from the network. Well, for this you need to reach a consensus on which component has failed in the first place.
The Byzantine Falla as a problem of consensus
The term takes its name from the known "Problem of the Byzantine Generals". This was developed to describe a circumstance where actors must agree on a strategy or consent to avoid catastrophic failure of the system. And they must also achieve this goal knowing that among them, there may be unreliable actors.
The Byzantine Generals Problem was described by robert shostack in 1978, within the framework of a project of the Computer Science laboratory of SRI International. This project was called SIFT, and had the support of the same aerospace agency NASA. He case described represents in essence a distributed communication problem between computers. In it, computers focused on different purposes must be able to establish communication in pairs and be able to reach a consensus. And they must be able to do it even if some of them are damaged. To understand it better, let's see his approach:
Get started on Bit2Me and jump into the world of cryptocurrencies with a head start. Sign up easily and get €5 FREE on your first purchase with this link. Don't wait any longer to join the crypto revolution! Register
The Problem of the Byzantine Generals (PGB)
- Several generals from the same side and their armies are located at different ends of a city with the intention of besieging it.
- To succeed, they need to attack the city in a coordinated fashion to defeat defenses or to retreat in a coordinated fashion. In case of not synchronizing their actions, they will fall before the strong enemy forces.
- To achieve this, the attacking generals communicate with each other through messengers.
- Although the city is full of enemies, the messengers must cross the city to go from one camp to another with attack orders.
- The assumption indicates that an army messenger will inform another of the intention to attack or not, and when to do so.
- As they receive proposals, the generals will confirm or reject them to establish a voting agreement on what step to take.
As you can see, the problem is that within the city enemies could capture messengers. If they can be intercepted, the message could be modified and consequently, the attack would not be carried out in a coordinated manner. If not carried out in a coordinated way, the attacking armies would fall defeated, thus failing their mission.
For example, if a message from the generals were "Attack tomorrow”, the text could be altered by adding “only if it rains” after it. This way the other army might think that you are agreeing to attack only in case of rain, and confirm the message. With what the first army would attack and the second could not do it and withdraw if it did not rain.
With a set of distributed computer systems with a common goal, each computer would be equivalent to a general and its army. And therefore, the data network would be analogous to the messengers who must cross the city informing the generals.
What effect do Byzantine failures have?
Byzantine faults are considered the more general and more complex class of faults to solve. This is so because the node that it fails on the network, it may be generating arbitrary data, and it pretends to be correct. Byzantine faults are capable of confusing fault detection systems. Despite the analogy, a Byzantine failure is not necessarily a security problem involving hostile human interference: it can arise randomly due to accumulating electrical failures.
To explain a little more the effects and scope of these failures we will explain some known cases of them:
Case # 1: Space Shuttle Discovery - Flight STS-124
La NASA found that one of the mission failures STS-124, was involved the fuel control system. Of his four control systems, all four gave wrong and completely different information from the control system. Nevertheless, the failure was not programming, but physical. This originated in a control card that communicated to all four computers. A crack in a diode was what caused this Byzantine failure. The diode rupture was guilty of transmogification by converting a diode into a capacitor. This situation delayed the launch of the shuttle until the fault was resolved.
If the Shuttle system were not tolerant to Byzantine failures, this failure would have been disastrous. Without control of the fuel system, it would have meant the shuttle exploded. This failure is a clear example of how dangerous Byzantine failures can be, and how difficult it can be to detect or prevent them.
Case # 2: Blockchain technology
In the case of the blockchain Byzantine failures can present themselves in the performance of unreliable or malicious nodes. If any member of the community sends inconsistent information to others about transactions, the reliability of the blockchain is broken. To solve this, PoW offers Byzantine fault tolerance (BFT) mechanisms to avoid this problem.
Another problem that arises in blockchain related to Byzantine failures are cases of double spending. El double-spending, is an attack in which an actor makes use on two different occasions of the same cryptocurrencies. In this case, the blockchain network must resist the fact that the same cryptocurrency is used in this way. Doing this is quite complex. To achieve this, mechanisms must be designed that are tolerant to partial or complete Byzantine failures.
Click here to open your user account in Spanish for FREE and securely and receive a €5 gift.