10.03.2015 Views

Odporność na błędy bizantyjskie w systemach peer-to-peer - Instytut ...

Odporność na błędy bizantyjskie w systemach peer-to-peer - Instytut ...

Odporność na błędy bizantyjskie w systemach peer-to-peer - Instytut ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3.2 Replikacja z uwzględnieniem błędów bizantyjskich 39<br />

Dowód twierdzenia 1 jest niezmiernie ważny i ma podstawowe z<strong>na</strong>czenie<br />

praktyczne, dlatego został zamieszczony w Dodatku B. Wniosek, który płynie z<br />

tego twierdzenia, jest <strong>na</strong>stępujący: nie możemy projek<strong>to</strong>wać algorytmu uzgadniania,<br />

który byłby pozbawiony, <strong>na</strong>wet w <strong>na</strong>jmniejszym s<strong>to</strong>pniu, komunikacji<br />

synchronicznej między uczestnikami, gdyż dopuszczałby możliwość zaistnienia<br />

sytuacji, w której nie zakończyłby on swojego działania.<br />

Twierdzenie 2 Istnieje częściowo poprawny pro<strong>to</strong>kół uzgadniania, w którym<br />

wszystkie poprawnie działające procesy podejmą decyzję, jeżeli tylko stanowią<br />

większość i podczas operacji uzgadniania pozostaną sprawne.<br />

BFT oraz SC-ABC rozwiązują problem uzgadniania w przypadku błędów bizantyjskich<br />

s<strong>to</strong>sując słabsze założenia niż w twierdzeniu 2, dzięki temu możliwe<br />

jest poprawne zakończenie pro<strong>to</strong>kołu <strong>na</strong>wet gdy część uczestników przestanie<br />

odpowiadać w trakcie jego realizacji. Na szczególną uwagę zasługuje algorytm<br />

SC-ABC, który jest prawie całkowicie asynchroniczny, ale może nie zakończyć<br />

poprawnie swojego działania. Przejścia między sta<strong>na</strong>mi w SC-ABC dokonują<br />

się częściowo w losowy sposób, co w z<strong>na</strong>cznej mierze utrudnia atakującemu<br />

złamanie pro<strong>to</strong>kołu jed<strong>na</strong>k teoretycznie zezwala <strong>na</strong> niepoprawne zakończenie<br />

działania.<br />

3.2 Replikacja z uwzględnieniem błędów bizantyjskich<br />

Załóżmy, że grupa replik składa się z n uczestników i dostarcza deterministyczną<br />

usługę u z wewnętrznym stanem s, która zwraca war<strong>to</strong>ść v w zależności od<br />

zlecenia i, v = u(i, s), s oz<strong>na</strong>cza aktualny stan usługi. Usługa działająca w sposób<br />

niedeterministyczny, np. optymalizacja przy użyciu me<strong>to</strong>d heurystycznych<br />

wymagałaby określenia progu zgodności zwracanych odpowiedzi. Ta praca rozpatruje<br />

jedynie usługi deterministyczne. Rozpatrzenie przypadków gdy repliki<br />

zwracają niedeterministyczne odpowiedzi mogłoby stanowić odrębne opracowanie<br />

i nie będzie dalej poruszane. Klient c wysyła zlecenie do wszystkich replik<br />

używając i c , jako parametru wywołania. Klient zbiera odpowiedzi v k od każdego<br />

k-tego uczestnika grupy.<br />

Twierdzenie 3 Jeżeli pośród n replik f jest działających w sposób bizantyjski,<br />

<strong>to</strong> klient c potrzebuje f +1 takich samych odpowiedzi od różnych replik, by<br />

ustalić poprawną zwracaną war<strong>to</strong>ść v dla wywołania usługi u z parametrem i c .

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!