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