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.

4.4 Pro<strong>to</strong>kół zachłanny 71<br />

G(j) wyraził chęć przyłączenia się do grupy J(j) =0, w przypadku odmowy,<br />

oraz J(j) =−1, gdy węzeł odpowiedzi nie otrzymał. Rozpoczęcie<br />

składania wek<strong>to</strong>ra J powinno <strong>na</strong>stąpić w momencie otrzymania:<br />

⌊ ⌋ 2n +1<br />

k> ,<br />

3<br />

gdzie n oz<strong>na</strong>cza liczbę węzłów w G. Wek<strong>to</strong>rJ rozgłaszany jest do wszystkich<br />

węzłów w G, < group-prelist, J> σj . War<strong>to</strong>ść k w tym przypadku<br />

oz<strong>na</strong>cza większość 2 węzłów w G, które odpowiedziały. Jeżeli dalej<br />

3<br />

wszystkie węzły włączą się do grupy <strong>to</strong> zakładamy, że jed<strong>na</strong> trzecia z<br />

nich może <strong>na</strong>dal być nieuczciwa. Wniosek jest taki, że węzeł chcąc osiągnąć<br />

grupę, w której f węzłów może być podejrzanych o nieuczciwość,<br />

musi rozesłać propozycję przyłączenia się do grupy, do co <strong>na</strong>jmniej<br />

n ≥ 9 2 f +1<br />

Ostatnia zależność wynika z warunku <strong>na</strong> k oraz warunku <strong>na</strong> liczbę replik<br />

jaka musi istnieć w grupie, by uzgodnienie było możliwe n ≥ 3f +1.<br />

Dla przykładu, gdy f =1,<strong>to</strong>n musi być większe bądź równe 6. Pojawia<br />

się pytanie, co zrobić gdy nie uda się spełnić tego warunku. Pozostaje<br />

stworzyć grupę z tylu replik, z ilu jest <strong>to</strong> możliwe.<br />

4. Kolejną fazą jest wymia<strong>na</strong> kluczy szyfrujących. Każda z replik powin<strong>na</strong><br />

posiadać klucze sesyjne współdzielone z innymi replikami <strong>na</strong>leżącymi do<br />

grupy, w celu weryfikacji i szyfrowania wysyłanych komunikatów. Węzeł<br />

j wybiera kolejno węzeł G(l), l =(j + i) mod n, i ∈{1,...,n},<br />

dla którego J(k) =1i rozpoczy<strong>na</strong> z nim proces uzgadniania klucza, np.<br />

używając algorytmu Diffie-Hellman’a [MVO96]. Gdyby wybrany węzeł<br />

nie odpowiedział lub gdy klucz został już ustalony, wybiera się kolejny<br />

węzeł. Przejście po elementach G(l) powinno odbyć się więcej niż jeden<br />

raz, by ponowić próbę ustalenia klucza dla tych węzłów, z którymi<br />

nie udało się tego przeprowadzić w uprzedniej iteracji. Technika przechodzenia<br />

po wek<strong>to</strong>rze G począwszy od kolejnej repliki za inicjującym<br />

negocjację, jest bardzo prostą techniką równoważenia obciążenia podobną<br />

do algorytmu karuzelowego (ang. round robin). Po określonej liczbie prób<br />

węzeł dysponuje kluczami dla grupy replik. Zakończenie tej fazy powinno<br />

być rozgłoszone < group-postlist, Ĵ > σj , gdzie Ĵ jest wek<strong>to</strong>rem o tych<br />

samych elementach co J z <strong>na</strong>niesioną informacją o tym, z kim udało się<br />

wynegocjować klucz.<br />

5. Odebranie przy<strong>na</strong>jmniej k wiadomości group-postlist, w których przy<strong>na</strong>jmniej<br />

k elementów jest równych 1 kończy fazę tworzenia grupy.

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

Saved successfully!

Ooh no, something went wrong!