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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

5.1 Projekt systemu 93<br />

wydajność, jed<strong>na</strong>k przemawia za tym wiele aspektów.<br />

Użytkownik wprowadzając obiekt o do systemu generuje parę kluczy: K p ,K s .<br />

K p jest kluczem publicznym, <strong>na</strong><strong>to</strong>miast K s jest kluczem prywatnym. Klucz publiczny<br />

zostaje dołączony do obiektu i wprowadzony do systemu, tak że każda<br />

replika obiektu będzie również posiadała jego klucz publiczny. Klucz prywatny<br />

posłuży do wygenerowania uprawnień (ang. credentials). Uprawnienia mogą<br />

być przyz<strong>na</strong>wane <strong>na</strong> rzecz wszystkich (publiczne), grupy oraz indywidualnego<br />

użytkownika, podobnie jak ma <strong>to</strong> miejsce w systemie Linux.<br />

Uprawnienia publiczne dołączane są do wprowadzanego obiektu. Poniżej<br />

umieszczono opis tworzenia i weryfikacji uprawnień:<br />

1. s u = K s (H(o), u,c,Kp u ) - użytkownik wystawia uprawnienie c <strong>na</strong> rzecz<br />

obiektu o dla użytkownika u, Kp<br />

u jest kluczem publicznym użytkownika<br />

u. Należy zauważyć, że uprawnienie c może mieć dowolną postać, może<br />

być <strong>na</strong>daniem praw do wyko<strong>na</strong>nia tylko jednej konkretnej operacji, lub<br />

całego ich zestawu. Warunek jest tylko taki, aby postać c była zrozumiała<br />

dla usługi.<br />

2. insert(H(o), o,K p ) - wprowadzenie obiektu o do systemu musi odbywać<br />

się wraz z wprowadzeniem klucza weryfikacyjnego K p .<br />

3. Pro<strong>to</strong>kół używa me<strong>to</strong>dy typu challenge-response do zapewnienia jednorazowego<br />

użycia uprawnień. Niech r oz<strong>na</strong>cza losowo wygenerowaną liczbę,<br />

którą replika wysyła do użytkownika, gdy ten chce wyko<strong>na</strong>ć operację <strong>na</strong><br />

usłudze. Użytkownik generuje bilet (ang. ticket) t = Ks u (r, s c ) iwysyła<br />

operację zawierającą bilet do repliki (H(o), c, u, r, s c , t, Kp u ). Bilet<br />

będzie honorowany przez replikę, tak długo jak będzie <strong>to</strong> ustalone (np.<br />

przez określoną ilość operacji lub czasu).<br />

4. W celu ustalenia uprawnień użytkownika, replika weryfikuje s c używając<br />

K p , a <strong>na</strong>stępnie weryfikuje bilet t używając K u p .<br />

W przypadku weryfikacji uprawnień dla grupy, proces przebiega prawie tak<br />

samo z tym wyjątkiem, że u staje się identyfika<strong>to</strong>rem grupy g, a klucz użyty do<br />

wyz<strong>na</strong>czenia w uprawnienia w punkcie 1. staje się Kp<br />

g i przestaje <strong>na</strong>leżeć do<br />

jednego uczestnika, tylko do wszystkich uczestników w grupie. Głów<strong>na</strong> różnica<br />

polega <strong>na</strong> obsłudze jednorazowych biletów. Bilet <strong>na</strong>dal musi być wystawiony <strong>na</strong><br />

rzecz konkretnego użytkownika, dlatego bilet wyz<strong>na</strong>czany jest przy użyciu Kp u .<br />

Podany schemat weryfikacji dostępu działa tak długo, jak klucz prywatny<br />

K s wstawiającego obiekt nie zostanie złamany lub przechwycony, oraz gdy któryś<br />

z kluczy prywatnych uczestników nie zostanie złamany lub przechwycony.

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

Saved successfully!

Ooh no, something went wrong!