I sistemi informatici distribuiti soffrono di una miriade di errori e il fallimento bizantino è uno dei più comuni. Questi tipi di errori sono molto difficili da risolvere, perché il sistema di rilevamento trova difficile decidere se l'errore è presente o meno.

UUna faglia bizantina è una condizione di un sistema computazionale, in particolare dei sistemi informatici distribuiti. Questa condizione si verifica quando uno o più componenti si sono guastati e non sono disponibili informazioni precise sull'eventuale guasto di un componente o se le informazioni di sistema sono corrette.

Per colpa bizantina, può apparire un componente come un server incoerenti come guasti e funzionamento nei sistemi di rilevamento dei guasti. Ciò si verifica perché il sistema mostra sintomi diversi a diversi osservatori. A questo punto, è difficile per gli altri componenti prendere la decisione di dichiararlo fallito ed escluderlo dalla rete. Bene, per questo è necessario raggiungere un consenso su quale componente ha fallito in primo luogo.

La colpa bizantina come problema di consenso

Il termine prende il nome dalla conoscenza "Problema dei generali bizantini". Questo è stato sviluppato per descrivere una circostanza in cui le parti interessate devono concordare una strategia o consenso per evitare guasti catastrofici del sistema. E devono anche raggiungere questo obiettivo sapendo che tra loro potrebbero esserci attori inaffidabili.

Il problema dei generali bizantini è stato descritto da Robert Shostak nel 1978, nell'ambito di un progetto del laboratorio di Informatica del SRI International. Questo progetto è stato chiamato SIFT, e ha avuto il supporto della stessa agenzia aerospaziale NASA. Il caso descritto rappresenta in sostanza, a problema di comunicazione distribuita tra computer. In esso, i computer focalizzati su scopi diversi devono essere in grado di stabilire una comunicazione a coppie ed essere in grado di raggiungere un consenso. E dovrebbero essere in grado di farlo anche se alcuni di loro sono rotti. Per capirlo meglio, vediamo il suo approccio:

Il problema dei generali bizantini (PGB)

  • Diversi generali della stessa parte e le loro armate si trovano alle estremità diverse di una città con l'intenzione di assediarla.
  • Per avere successo, devono attaccare la città in modo coordinato per sconfiggere le difese o ritirarsi in modo coordinato. In caso di mancata sincronizzazione delle loro azioni, cadranno davanti alle forti forze nemiche.
  • Per ottenere ciò, i generali attaccanti comunicano tra loro tramite messaggeri.
  • Sebbene la città sia piena di nemici, i messaggeri devono attraversare la città per passare da un accampamento all'altro con gli ordini di attacco.
  • L'assunto indica che il messaggero di un esercito informerà un altro dell'intenzione di attaccare o meno, e quando farlo.
  • Non appena le proposte vengono ricevute, i generali le confermeranno o le respingeranno per stabilire un accordo di voto su quale passo fare.

Come si può osservare, il problema è quello all'interno della città i nemici potrebbero catturare i messaggeri. Se intercettato, il messaggio potrebbe essere modificato e di conseguenza, l'attacco non sarebbe stato condotto in modo coordinato. Non essendo effettuato in modo coordinato, gli eserciti attaccanti verrebbero sconfitti, fallendo così la loro missione.

Ad esempio, se un messaggio dei generali fosse "Attacca domani", Il testo può essere modificato aggiungendo" solo se piove "dietro. In questo modo l'altro esercito potrebbe pensare di accettare di attaccare solo in caso di pioggia e confermare il messaggio. Quindi il primo esercito attaccherebbe e il secondo non potrebbe ritirarsi se non piove.

In uno insieme di sistemi informatici distribuiti con un obiettivo comune, ogni computer sarebbe equivalente a un generale e al suo Ejército. E quindi la rete dati sarebbe analoga ai messaggeri che devono attraversare la città informando i generali.

Che effetto hanno le colpe bizantine?

I difetti bizantini sono considerati i classe di guasti più generale e più complessa da risolvere. Questo è così perché il nodo che fallisce sulla rete, potrebbe generare dati arbitrari e fingere di essere corretto. I guasti bizantini sono in grado di confondere i sistemi di rilevamento dei guasti. Nonostante l'analogia, un guasto bizantino non è necessariamente un problema di sicurezza che coinvolge interferenze umane ostili: può sorgere casualmente a causa dell'accumulo di guasti elettrici.

Per spiegare un po 'di più gli effetti e la portata di questi fallimenti, spiegheremo alcuni casi noti di essi:

Caso n. 1: Space Shuttle Discovery - Volo STS-124

La NASA scoperto che uno dei fallimenti della missione STS-124, è stato coinvolto il sistema di controllo del carburante. Dei suoi quattro sistemi di controllo, tutti e quattro hanno fornito informazioni errate e completamente diverse dal sistema di controllo. Tuttavia, il fallimento non era di programmazione, ma fisico. Questo ha avuto origine in a scheda di controllo che comunicava ai quattro computer. Una crepa in un diodo, era ciò che ha originato questa faglia bizantina. La rottura del diodo, era colpevole di una trasmogrificazione convertendo un diodo in un condensatore. Questa situazione ha ritardato il lancio della navetta fino a quando il guasto non è stato risolto.

Se il sistema Shuttle non avesse tollerato i fallimenti bizantini, questo fallimento sarebbe stato disastroso. Senza il controllo del sistema di alimentazione, la navetta sarebbe esplosa. Questo difetto è un chiaro esempio di quanto possano essere pericolosi i difetti bizantini e di quanto possa essere difficile individuarli o prevenirli.

Colpa bizantina sulla navetta spaziale Discovery

Quanto sai, Cryptonuta?

La colpa bizantina è un problema causato da terzi?

FALSO!

Il fallimento bizantino non deve essere un problema derivato dall'azione di terzi, può essere un errore derivato dai sistemi di rilevamento dei guasti. Ricorda, che i difetti bizantini sono quelli in cui non c'è consenso sulla loro dichiarazione come colpa.

Caso n. 2: tecnologia Blockchain

Nel caso del blockchain I difetti bizantini possono verificarsi nelle prestazioni di nodi non autorizzati o dannosi. Se un membro della comunità invia informazioni incoerenti ad altri sulle transazioni, l'affidabilità della blockchain viene interrotta. Per risolvere questo problema, PoW offre meccanismi Byzantine Fault Tolerance (BFT) per evitare questo problema.

Un altro problema che si verifica nella blockchain relativo ai fallimenti bizantini sono i casi di doppia spesa. El la doppia spesa:, è un attacco in cui un attore utilizza le stesse criptovalute in due diverse occasioni. In questo caso, la rete blockchain deve resistere al fatto che la stessa criptovaluta viene utilizzata in questo modo. Fare questo è abbastanza complesso. Per ottenere ciò, devono essere progettati meccanismi che tollerino i fallimenti bizantini parziali o completi.