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