Os sistemas distribuídos de computadores sofrem incontáveis erros e a falha bizantina é uma das mais comuns. Esses tipos de erros são muito difíceis de resolver, porque o sistema de detecção acha difícil decidir se o erro existe ou não.
UUma falha bizantina é uma condição de um sistema computacional, especificamente de sistemas de computação distribuída. Essa condição ocorre quando um ou mais componentes falham e não há informações precisas sobre se um componente falhou ou se as informações do sistema estão corretas.
Em uma falha bizantina, um componente como um servidor pode aparecer inconsistentemente, como falhar e trabalhar em sistemas de detecção de falhas. Isso ocorre porque o sistema apresenta sintomas diferentes em comparação com diferentes observadores. Nesse momento, é difícil para os outros componentes tomar a decisão de declarar que houve falha e excluí-la da rede. Bem, para isso, é necessário chegar a um consenso sobre qual componente falhou em primeiro lugar.
A Falla bizantina como um problema de consenso
O termo leva o nome do nome conhecido "Problema dos generais bizantinos". Isso foi desenvolvido para descrever uma circunstância em que os atores devem concordar com uma estratégia ou consentimento para evitar falhas catastróficas do sistema. E eles também devem atingir esse objetivo, sabendo que, entre eles, pode haver atores não confiáveis.
O problema dos generais bizantinos foi descrito por robert shostack em 1978, no âmbito de um projeto do laboratório de Ciência da Computação da SRI International. Este projeto foi chamado SIFT, e teve o apoio da mesma agência aeroespacial NASA. O caso descrito representa em essência um problema de comunicação distribuída entre computadores. Nele, computadores focados em diferentes propósitos devem ser capazes de estabelecer comunicação em pares e chegar a um consenso. E eles devem ser capazes de fazê-lo, mesmo que alguns deles estejam danificados. Para entender melhor, vamos ver sua abordagem:
Comece no Bit2Me e entre no mundo das criptomoedas com vantagem. Cadastre-se facilmente e ganhe 5€ GRÁTIS na sua primeira compra com este link. Não espere mais para se juntar à revolução criptográfica! Cadastre-se
O problema dos generais bizantinos (PGB)
- Vários generais do mesmo lado e seus exércitos estão localizados em diferentes extremos de uma cidade com a intenção de cercá-la.
- Para ter sucesso, eles precisam atacar a cidade de maneira coordenada para derrotar as defesas ou recuar de forma coordenada. No caso de não sincronizar suas ações, eles cairão diante das fortes forças inimigas.
- Para conseguir isso, os generais atacantes se comunicam através de mensageiros.
- Embora a cidade esteja cheia de inimigos, os mensageiros devem atravessar a cidade para ir de um acampamento para outro com ordens de ataque.
- A suposição indica que um mensageiro do exército informará outro da intenção de atacar ou não, e quando fazê-lo.
- À medida que recebem propostas, os generais os confirmam ou os rejeitam para estabelecer um acordo de votação sobre qual passo dar.
Como você pode ver, o problema é que dentro da cidade inimigos poderiam capturar mensageiros. Se eles puderem ser interceptados, a mensagem pode ser modificado e, conseqüentemente, o ataque não seria realizado de maneira coordenada. Se não fossem executados de maneira coordenada, os exércitos atacantes seriam derrotados, fracassando em sua missão.
Por exemplo, se uma mensagem dos generais fosse "Ataque amanhã”, o texto poderia ser alterado acrescentando “só se chover” depois dele. Dessa forma, o outro exército pode pensar que você concorda em atacar apenas em caso de chuva e confirmar a mensagem. Com o que o primeiro exército atacaria e o segundo não poderia fazê-lo e retirar-se se não chovesse.
Num conjunto de sistemas de computadores distribuídos com um objetivo comum, cada computador seria equivalente a um general e seu exército. E, portanto, a rede de dados seria análoga aos mensageiros que devem atravessar a cidade informando os generais.
Que efeito as falhas bizantinas têm?
As falhas bizantinas são consideradas as classe mais geral e mais complexa de falhas a serem resolvidas. Isto é assim porque o nó que falha na rede, pode estar gerando dados arbitrários e finge estar correto. As falhas bizantinas são capazes de confundir os sistemas de detecção de falhas. Apesar da analogia, uma falha bizantina não é necessariamente um problema de segurança que envolve interferência humana hostil: pode surgir aleatoriamente devido ao acúmulo de falhas elétricas.
Para explicar um pouco mais os efeitos e o escopo dessas falhas, explicaremos alguns casos conhecidos deles:
Caso # 1: descoberta do ônibus espacial - voo STS-124
La NASA descobriu que uma das falhas da missão STS-124, estava envolvido o sistema de controle de combustível. Dos quatro sistemas de controle, os quatro forneceram informações erradas e completamente diferentes do sistema de controle. Porém, a falha não foi de programação, mas física. Isso se originou em um placa de controle que se comunicava com todos os quatro computadores. Uma rachadura em um diodo foi o que causou essa falha bizantina. A ruptura do diodo era culpada de transmogificação pela conversão de um diodo em um capacitor. Essa situação atrasou o lançamento do vaivém até que a falha fosse resolvida.
Se o sistema Shuttle não fosse tolerante a falhas bizantinas, essa falha teria sido desastrosa. Sem o controle do sistema de combustível, isso significaria que o ônibus explodiu. Essa falha é um exemplo claro de quão perigosas as falhas bizantinas podem ser e de quão difícil pode ser detectá-las ou evitá-las.
Caso # 2: tecnologia Blockchain
No caso de o blockchain Falhas bizantinas podem se apresentar no desempenho de nós não confiáveis ou maliciosos. Se algum membro da comunidade enviar informações inconsistentes a outros sobre transações, a confiabilidade do blockchain será quebrada. Para resolver isso, PoW oferece mecanismos de tolerância a falhas bizantinas (BFT) para evitar esse problema.
Outro problema que surge no blockchain relacionado a falhas bizantinas são os casos de gastos duplos. El gasto duplo, é um ataque no qual um ator faz uso em duas ocasiões diferentes das mesmas criptomoedas. Nesse caso, a rede blockchain deve resistir ao fato de que a mesma criptomoeda é usada dessa maneira. Fazer isso é bastante complexo. Para conseguir isso, devem ser projetados mecanismos tolerantes a falhas bizantinas parciais ou completas.
Clique aqui para abrir sua conta de usuário em espanhol GRATUITAMENTE e com segurança e receber um presente de 5€.