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 ...
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 .