Uogólnione struktury uprawnień z hierarchią

Transkrypt

Uogólnione struktury uprawnień z hierarchią
Uniwersytet Warszawski
Wydział Matematyki, Informatyki i Mechaniki
Andrzej Pragacz
Nr albumu: 248382
Uogólnione struktury uprawnień z
hierarchią
Praca magisterska
na kierunku MATEMATYKA
Praca wykonana pod kierunkiem
dr hab. Jacka Pomykały
Instytut Matematyki
Kwiecień 2014
Oświadczenie kierującego pracą
Potwierdzam, że niniejsza praca została przygotowana pod moim kierunkiem i kwalifikuje się do przedstawienia jej w postępowaniu o nadanie tytułu zawodowego.
Data
Podpis kierującego pracą
Oświadczenie autora (autorów) pracy
Świadom odpowiedzialności prawnej oświadczam, że niniejsza praca dyplomowa została
napisana przeze mnie samodzielnie i nie zawiera treści uzyskanych w sposób niezgodny
z obowiązującymi przepisami.
Oświadczam również, że przedstawiona praca nie była wcześniej przedmiotem procedur
związanych z uzyskaniem tytułu zawodowego w wyższej uczelni.
Oświadczam ponadto, że niniejsza wersja pracy jest identyczna z załączoną wersją
elektroniczną.
Data
Podpis autora (autorów) pracy
Streszczenie
W niniejszej pracy została opisana ogólna struktura dostępu. Zostały ponadto zaprezentowane różne jej warianty, takie jak: struktury progowe, struktury hierarchiczne. Ponadto w pracy
został zaprezentowany hierarchiczny system przydzielania kluczy, opierający swoje działanie
na tzw. iloczynie dwuliniowym, działającym na grupie punktów n-torsyjnych krzywej eliptycznej nad ciałem skończonym.
Słowa kluczowe
struktury dostępu, uprawnienia, dzielenie sekretu, schemat progowy, hierarchia, iloczyn Weila, iloczyn dwulinowy, grupy, krzywe eliptyczne, struktury monotoniczne, drzewa, skierowane
grafy acykliczne
Dziedzina pracy (kody wg programu Socrates-Erasmus)
11.1 Matematyka
Klasyfikacja tematyczna
94-XX Information and communication, circuits
94Axx Communication, information
94A60 Cryptography
94A62 Authentication and secret sharing
Tytuł pracy w języku angielskim
Generalized access structures with hierarchy
Spis treści
Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1. Podstawowe pojęcia . . . . . . . . . . . . . . . . . .
1.1. Porządki . . . . . . . . . . . . . . . . . . . . . . .
1.2. Grafy . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Wprowadzenie do rachunku prawdopodobieństwa
1.4. Pojęcia kryptograficzne . . . . . . . . . . . . . .
1.5. Grupy . . . . . . . . . . . . . . . . . . . . . . . .
1.6. Iloczyny dwuliniowe . . . . . . . . . . . . . . . .
1.7. Problem Diffiego-Hellmana i jego warianty . . . .
1.7.1. Zależności między problemami . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
7
10
11
12
13
13
16
2. Struktura uprawnień . . . . . . .
2.1. Ogólna struktura uprawnień . .
2.2. Przykłady struktur uprawnień .
2.2.1. Schemat progowy . . . .
2.2.2. Schemat hierarchiczny .
2.2.3. Schemat mieszany . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
19
21
21
21
23
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3. Hierarchiczny system dostępu . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1. Inicjalizacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1. Podstawowa inicjalizacja . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.2. Generowanie informacji prywatnej korzenia . . . . . . . . . . . . . . .
3.1.3. Generowanie informacji prywatnej pozostałych wierzchołków . . . . .
3.1.4. Pełna inicjalizacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Obliczanie kluczy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Przykład . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Bezpieczeństwo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1. Bezpieczeństwo w przypadku dostępu wyłącznie do publicznej informacji
3.4.2. Bezpieczeństwo w przypadku istnienia skorumpowanych podmiotów .
3.5. Zastosowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6. Porównanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.1. Schemat trywialny . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.2. Schemat z pracy Atallah et al. . . . . . . . . . . . . . . . . . . . . . .
3.6.3. Schemat z pracy Liu et al. . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.4. Schemat z pracy Mackinnon et al. . . . . . . . . . . . . . . . . . . . .
3.6.5. Porównanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
25
25
25
26
26
26
27
28
32
32
33
39
39
39
40
40
41
41
Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
A. Konstrukcja iloczynu Weila . . . . .
A.1. Krzywe eliptyczne . . . . . . . . .
A.2. Dodawane punktów na krzywej . .
A.3. Funkcje na krzywej eliptycznej . .
A.4. Dywizory . . . . . . . . . . . . . .
A.5. Punkty torsyjne . . . . . . . . . . .
A.6. Iloczyn Weila . . . . . . . . . . . .
A.7. Konstrukcja iloczynu dwuliniowego
.
.
.
.
.
.
.
.
47
47
47
48
48
50
50
51
Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
.
.
.
.
.
.
.
.
4
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Wprowadzenie
Kryptografia to nauka zajmująca się m.in. kontrolą dostępu do informacji. Szczególnym przykładem jest tu np. dzielenie sekretu, czyli podzielenie pewnej informacji (sekretu) między
pewne podmioty w ten sposób, że tylko niektóre grupy podmiotów mogą w pewien sposób
“poznać” sekret.
Innym przykładem może być przydzielanie pewnej informacji (tzw. klucza) każdemu podmiotowi, i umożliwienie określonym grupom podmiotów “poznanie” tego klucza. Przedstawiana
praca dotyczy właśnie tego typu zagadnień.
To prowadzi do naturalnej definicji struktury dostępu. W odróżnieniu od definicji standardowej w pracy zaproponujemy pojęcie uogólnionej struktury uprawnień, która obejmuje progowe, hierarchiczne i mieszane struktury dostępu. Zbadamy metody projektowania uogólnionych struktur dostępu bazujących na iloczynie dwuliniowym definiowanym w grupie punktów n-torsyjnych krzywej eliptycznej nad ciałem skończonym. W ramach pracy omówimy
i porównamy kilka możliwych realizacji odpowiednich protokołów. Kluczowym zastosowaniem pokazującym wykorzystanie struktury dwuliniowej oraz protokołu współdzielenia sekretu jest system przydzielania kluczy kryptograficznych w strukturze hierarchicznej oparty
na tzw. decyzyjnym dwuliniowym założeniu Diffiego-Hellmana. Temu problemowi przyjrzymy się dokładniej, definiując i analizując problem bezpieczeństwa odpowiedniego systemu
kryptograficznego.
Niniejsza praca rozpocznie się od zdefiniowania podstawowych pojęć używanych w tejże pracy.
Zostaną one przedstawione w pierwszym rozdziale.
W następnym, drugim rozdziale, przedstawione zostanie pojęcie struktury uprawnień, będącej uogólnieniem tzw. struktury monotonicznej. Przedstawione zostaną także przykłady
ilustrujące to pojęcie, ze szczególnym uwzględnieniem struktury hierarchicznej.
W ostatnim rozdziale zostanie przedstawiony system, który pozwala na przydzielenie grupie
podmiotów uporządkowanej w hierarchię “drzewiastą” (tj. taką, gdzie każdy podmiot może
mieć co najwyżej jednego bezpośredniego zwierzchnika) kluczy prywatnych z zachowaniem
tejże hierarchii. W skrócie, będzie to oznaczało, że klucz prywatny podmiotu może być efektywnie obliczony przez każdego zwierzchnika (niekoniecznie bezpośredniego).
Opiszemy szczegółowo proces generowania kluczy i ich obliczania. Pokażemy też, że bezpieczeństwo opisanego systemu jest zależne od tzw. decyzyjnego dwuliniowego założenia DiffiegoHellmana. Na końcu porównamy ten system z innym systemami przydzielającymi klucze
podmiotom w hierarchii.
5
Rozdział 1
Podstawowe pojęcia
1.1. Porządki
Definicja 1.1.1. Przez porządek częściowy na zbiorze X będziemy definiować relację dwuargumentową na tym zbiorze (czyli ⊆ X ×X, przyjmujemy oznaczenie a b ⇔ ha, bi ∈)
o następujących własnościach:
• zwrotność: dla każdego a ∈ X zachodzi a a
• antysymetryczność: dla każdego a, b ∈ X jeśli a b i b a to a = b
• przechodniość: dla każdego a, b, c ∈ X jeśli a b i b c to a c
1.2. Grafy
Definicja 1.2.1. Przez graf skierowany będziemy definiować parę G = hV, Ei, gdzie V
będzie pewnym skończonym zbiorem elementów zwanych wierzchołkami, zaś E będzie pewną
relacją dwuargumentową na zbiorze wierzchołków (czyli E ⊆ V × V ).
Definicja 1.2.2. Będziemy mówić, że wierzchołek v grafu G = hV, Ei posiada pętlę jeśli
hv, vi ∈ E
Definicja 1.2.3. Przez ścieżkę w grafie skierowanym będziemy definiować ciąg
hv1 , v2 , . . . , vn i
o własności hvi , vi+1 i ∈ E dla i = 1, 2, . . . , n − 1. Będziemy mówić, że ścieżka ma długość n.
Definicja 1.2.4. Będziemy mówić, że graf skierowany jest spójny, jeśli dla każdej pary
wierzchołków v, u ∈ V istnieje ścieżka skierowana z u do v lub z v do u.
7
Definicja 1.2.5. Cykl skierowany będziemy definiować jako ścieżkę w grafie skierowanym,
która ma długość co najmniej 3, gdzie pierwszy wierzchołek na ścieżce będzie równy ostatniemu, (czyli v1 = vn , gdzie n to długość ścieżki).
Definicja 1.2.6. Skierowany graf acykliczny (ang Directed acyclic graph, DAG) to taki
graf skierowany bez pętli, w którym nie istnieje cykl skierowany.
Łatwo zauważyć, że każdemu porządkowi częściowemu ¬ zdefiniowanemu na zbiorze wierzchołków V odpowiada dokładnie jeden i tylko jeden DAG.
Fakt 1.2.7. Każdej relacji porządku częściowego ¬ zdefiniowanej na skończonym zbiorze
wierzchołków V odpowiada dokładnie jeden i tylko jeden DAG.
Dowód. Dla uproszczenia przyjmiemy, że v ¬ w i w ¬ v wtedy i tylko wtedy gdy v = w.
• Dana jest relacja porządku ¬. Niech E będzie taką relacją, że:
hv, wi ∈ E
⇔
v ¬ w ∧ v 6= w ∧ ¬∃u
v 6= u 6= w ∧ v ¬ u ¬ w
Wówczas DAG hV, Ei odpowiada relacji porządku częściowego ¬.
• Niech będzie dany DAG hV, Ei. Wówczas relacja porządku ¬ powstaje poprzez:
1. dodanie do ¬ wszystkich par z E
2. dodanie do ¬ wszystkich par hv, vi takich, że v ∈ V
3. dodanie do ¬ wszystkich par hv, wi, jeśli istnieją w aktualnej ¬ pary hv, ui i hu, wi
dla pewnego u ∈ V . Tę operację należy powtarzać tak długo, dopóki można dodać
nowe pary.
Innymi słowy, “usuwamy” / “dodajemy” zwrotność i przechodniość relacji ¬, które odpowiadają pętlom i redundantnym połączeniom w DAGu hV, Ei.
Definicja 1.2.8. Dla DAGu G = hV, Ei i odpowiadającej jemu relacji częściowego porządku ¬ definiujemy funkcję Desc : V → P(V ) (gdzie P(V ) to zbiór potęgowy V , tj. zbiór
zawierający wszystkie podzbiory zbioru V ) w następujący sposób:
Desc(v) = {w ∈ V : w ¬ v}
Zbiór Desc(v) będziemy nazywać potomkami wierzchołka v. Zauważmy, że v ∈ Desc(v)
Definicja 1.2.9. Analogicznie, dla DAGu G = hV, Ei i odpowiadającej jemu relacji częściowego porządku ¬ definiujemy funkcję Anc : V → P(V ) w następujący sposób:
Anc(v) = {w ∈ V : v ¬ w}
8
Zbiór Anc(v) będziemy nazywać przodkami wierzchołka v. Zauważmy, że v ∈ Anc(v).
Definicja 1.2.10. Las ukorzeniony F = hV, Ei to taki DAG, w którym zachodzi dodatkowa
własność: dla każdego v ∈ V istnieje co najwyżej jedno takie u ∈ V , że hv, ui ∈ E. Drzewem
ukorzenionym T = hV, Ei nazywamy las ukorzeniony, który jest także spójny.
Definicja 1.2.11. Dla lasu (bądź drzewa) ukorzenionego F = hV, Ei istnieje funkcja częściowa (funkcja, która nie musi być zdefiniowana na wszystkich elementach dziedziny) P arent :
V → V taka, że P arent(v) = u, gdzie hv, ui ∈ E.
Element P arent(v) będziemy nazywać rodzicem wierzchołka v.
Fakt 1.2.12. W przypadku drzewa ukorzenionego T = hV, Ei, istnieje jeden i tylko jeden
wierzchołek v taki że nie istnieje żadna krawędź z u do żadnego innego wierzchołka z V . Taki
wierzchołek będziemy nazywać korzeniem drzewa i oznaczać przez r.
Dowód. Wystarczy zauważyć, że jeśli założymy przeciwnie, tj. że istnieją co najmniej dwa
różne wierzchołki v, w będące korzeniami, to przy założeniu spójności i acykliczności istnieje
wierzchołek u będący ich wspólnym potomkiem. Dla tego wierzchołka istnieją dwie różne
krawędzie wychodzące, tj. hu, v 0 i, hu, w0 i ∈ E i v 0 6= w0 , co prowadzi do sprzeczności z definicją
1.2.10
Rysunek 1.1: Drzewo reprezentowane przez elementy będące w relacjach
v < u, x < w, y < w, w < u (a także wynikających z nich relacjach x < u, y < u)
u jest korzeniem drzewa. Przyjmujemy, że strzałka między wierzchołkami np. u i v odpowiada hu, vi ∈ E. W dalszej części pracy będziemy pomijać strzałki na krawędziach DAGów,
przyjmując, że krawędzie są zawsze skierowane “w górę”.
9
Definicja 1.2.13. Podobnie, dla drzewa ukorzenionego T = hV, Ei definiujemy funkcję
Children : V → P(V ) w następujący sposób:
Children(v) = {w ∈ V : P arent(w) = v}
Definicja 1.2.14. Przez P athSet(v, w) będziemy definiować zbiór wierzchołków na ścieżce od wierzchołka v do wierzchołka w. Taka ścieżka będzie jednoznacznie wyznaczona, jeśli
rozważany graf będzie drzewem.
1.3. Wprowadzenie do rachunku prawdopodobieństwa
Przytoczymy za [Sztencel04] potrzebne nam definicje pojęć z rachunku prawdopodobieństwa:
Definicja 1.3.1. Sigma-ciało zbioru X to takie F ⊆ P(X) o własnościach:
• ∅∈F
• jeśli A ∈ F to X\A ∈ F
• jeśli A1 , A2 , . . . ∈ F to
S
n∈N An
∈ F.
Przez σ(H) będziemy oznaczać domknięcie rodziny zbiorów H, tak aby σ(H) spełniało powyższe warunki.
Definicja 1.3.2. Przestrzeń probabilistyczna to trójka (Ω, F, P), gdzie Ω to zbiór zdarzeń
elementarnych, F ⊆ P(Ω) to rodzina zdarzeń, będąca σ-ciałem, a P : F → [0, 1] to miara
unormowana, czyli funkcja spełniająca zależności:
• P(∅) = 0
• P(Ω) = 1
• P(
S∞
i=1 Ai )
=
P∞
i=1 P(Ai )
dla Ai ∈ F takich, że ∀i6=j
Ai ∩ Aj = ∅
Definicja 1.3.3. Prawdopodobieństwo warunkowe zdarzenia A pod warunkiem zajścia
zdarzenia B definiujemy następująco:
P(A|B) =
P(A ∩ B)
P(B)
(1.1)
Przy naturalnym założeniu, że P(B) > 0. Prawdopodobieństwo warunkowe indukuje warunkową przestrzeń probabilistyczną (Ω ∩ B, σ({A ∩ B : A ∈ F}), P(·|B))
Ponieważ w dalszej części będziemy rozważać przestrzenie probabilistyczne dyskretne, a w
szczególności Ω będzie skończonym zbiorem, to będziemy przyjmować F = P(Ω)
10
Jeśli będziemy mówić, że losujemy coś ze zbioru X, to będziemy zakładać że losowanie odbywa
się z rozkładem dyskretnym jednostajnym, chyba że będzie napisane inaczej. Prawdopodobieństwo wylosowania x ∈ X dla takiego rozkładu prawdopodobieństwa wynosi zawsze
1
#X gdzie #X oznacza moc (liczbę elementów) zbioru X.
1.4. Pojęcia kryptograficzne
Definicja 1.4.1. Nazwiemy algorytm A efektywnie obliczalnym (albo wielomianowym),
jeśli czas wykonywania t(n) algorytmu A (wyrażony jako funkcja od rozmiaru danych wejściowych, n) spełnia zależność:
t(n) ¬ Cnk
dla
n ­ n0
Inaczej mówiąc, czas wykonywania jest “prawie wszędzie” ograniczony przez pewną funkcję
potęgową pomnożoną przez stałą.
Definicja 1.4.2. Funkcja (k) jest zaniedbywalnie mała (bądź zaniedbywalna, ang. negligible), jeśli dla każdej dodatniej liczby naturalniej c istnieje takie kc , że zachodzi:
|(k)| <
1
kc
dla
k ­ kc
Będziemy dalej rozważać funkcje zaniedbywalne przyjmujące tylko nieujemne wartości.
Definicja 1.4.3. Problem obliczeniowy będzie nazywany trudnym, jeśli nie istnieje żaden
algorytm wielomianowy który rozwiązuje ten problem z niezaniedbywalnym prawdopodobieństwem.
Definicja 1.4.4. Niech I ∈ X będą danymy wejściowymi, a R(x) będzie pewnym predykatem.
Problem decyzyjny będzie dotyczył decyzji, czy zachodzi R(I). Problem ten będzie nazywany
trudnym, jeśli nie istnieje żaden algorytm wielomianowy A dla którego wartość
|P(A(I) = 1|R(I)) − P(A(I) = 1|¬R(I))| jest niezaniedbywalna.
Definicja 1.4.5. Kryptograficzna funkcja haszująca (ang. Cryptographic hash function), zwana dalej funkcją haszującą, to funkcja H : M → {0, 1}k o własnościach:
• Obliczenie H(m) jest efektywne.
• Obliczenie m = H −1 (h) (gdzie h = H(m) dla pewnego m) jest trudne.
• Niech będzie dane m i H(m) = h. Wówczas trudne jest znalezienie m0 6= m o własności
H(m0 ) = h.
• Trudne jest znalezienie m1 , m2 takich, że H(m1 ) = H(m2 )
11
Definicja 1.4.6. Relacja redukcji wielomianowej:
Będziemy mówić, że algorytm A jest łatwiejszy niż algorytm B (i równoważnie że algorytm B jest trudniejszy niż algorytm A) i oznaczać jako A ¬P B wtedy i tylko wtedy, gdy
można zredukować wielomianowo algorytm A do algorytmu B. Inaczej mówiąc, korzystając z
algorytmu B można skonstruować funkcję emulującą algorytm A w czasie wielomianowym.
Definicja 1.4.7. Obliczeniowa równoważność:
Będziemy mówić że dwa algorytmy A i B są obliczeniowo równoważne, i oznaczać jako
A =P B wtedy i tylko wtedy gdy A ¬P B i B ¬P A.
1.5. Grupy
Definicja 1.5.1. Parę hG, ◦i, gdzie G jest pewnym zbiorem, a ◦ jest funkcją G × G → G,
nazywamy grupą, jeśli zachodzą następujące warunki:
1. ∀a, b ∈ G
a◦b∈G
2. ∀a, b, c ∈ G
(domkniętość)
(a ◦ b) ◦ c = a ◦ (b ◦ c)
(łączność)
3. ∃e ∈ G
∀a ∈ G
e◦a=a◦e=a
(istnienie elementu neutralnego)
4. ∀a ∈ G
∃b ∈ G
a◦b=b◦a=e
(istnienie elementu odwrotnego do a)
Definicja 1.5.2. Rzędem grupy G nazywamy moc zbioru G. Rząd grupy G będziemy oznaczać przez |G|.
Niech P ∈ G. Będziemy stosować oznaczenie:
Pn = P
| ◦P ◦
{z. . . ◦ P}
n
Definicja 1.5.3. Będziemy mówić, że grupa G jest cykliczna, gdy:
G = {P n : n = 0, 1, . . . , |G|}
Element P 6= e będziemy nazywać generatorem grupy G.
Będziemy ponadto w niektórych przypadkach stosować notację addytywną zamiast multiplikatywnej, czyli stosować symbol + zamiast ◦ oraz stosować oznaczenie:
nP = P
+P +
. . . + P}
|
{z
n
Aby uniknąć niepotrzebnych nieporozumień, grupy, gdzie będziemy stosować notację multiplikatywną, będą nazywane grupami multiplikatywnymi. Podobnie grupy, gdzie będziemy
stosować notację addytywną będą nazywane grupami addytywnymi.
12
Często używanym przykładem będzie grupa multiplikatywna Z∗n , gdzie a ◦ b = ab (mod n)
oraz Z∗n = {k : 0 ¬ k < n i k⊥n}. Notacja k⊥n oznacza, że k i n są względnie pierwsze, czyli
ich największy wspólny dzielnik to 1. Możemy zauważyć, że jeśli n jest liczbą pierwszą, to
|Z∗n | = n − 1
1.6. Iloczyny dwuliniowe
Poniższą definicję przytaczamy za [Bon03], [Wash03].
Definicja 1.6.1. Niech będzie dana addytywna grupa cykliczna G1 oraz multiplikatywna grupa
cykliczna G2 , obie tego samego rzędu q. Iloczyn dwuliniowy na grupie G1 o wartościach w
grupie G2 definiujemy jako funkcję G1 × G1 → G2 o następujących własnościach:
1. ∀a, b ∈ Z
∀P, Q ∈ G1
ê(aP, bQ) = ê(P, Q)ab
2. dla każdego P będącego generatorem ê(P, P ) 6= 1
(dwuliniowość)
(niezdegenerowalność)
3. ê jest efektywnie obliczalna
Konstrukcja takiego iloczynu z użyciem tzw. iloczynu Weila została przedstawiona w dodatku
A.
Jednym z najbardziej znanych przykładów użycia jest schemat Boneha-Franklina ([Bon03]),
będący schematem asymetrycznego szyfrowania. Inne zastosowanie można znaleźć w pracy
[Liu11]. Zostanie ono pokrótce opisane w jednym z następnych rozdziałów.
1.7. Problem Diffiego-Hellmana i jego warianty
Definicja 1.7.1. Problem Logarytmu Dyskretnego (DLP ):
Dla zadanego generatora g grupy multiplikatywnej G, gdzie |G| = q, i losowego a ∈ Z∗q oblicz
a na podstawie wyłącznie wartości g, i g a . Będziemy powyższe zapisywać formalnie jako:
DLPG (g, g a ) = a
Definicja 1.7.2. Obliczeniowy problem Diffiego-Hellmana (CDH):
Dla zadanego generatora g grupy multiplikatywnej G, gdzie |G| = q, i losowych a, b ∈ Z∗q
oblicz g ab na podstawie wyłącznie g, g a i g b . Formalnie:
CDHG (g, g a , g b ) = g ab
Definicja 1.7.3. Decyzyjny problem Diffiego-Hellmana (DDH):
Dla zadanego generatora g grupy multiplikatywnej G, gdzie |G| = q, i losowych a, b, c ∈ Z∗q
zadecyduj czy g c = g ab na podstawie wyłącznie g, g a , g b i g c . Formalnie:
13
(
a
b
c
DDHG (g, g , g , g ) =
1
0
gdy g c = g ab
w p.p.
Definicja 1.7.4. Generator parametrów BDH:
Niech k będzie parametrem bezpieczeństwa. Wówczas niech G będzie taką funkcją, że:
G(1k ) = hq, G1 , G2 , êi
gdzie G1 jest addytywną grupą cykliczną, G2 jest multiplikatywną grupą cykliczną, obie są
rzędu q, natomiast ê : G1 × G1 → G2 jest iloczynem dwuliniowym zdefiniowanym na tych
grupach.
Należy rozumieć tutaj, że G(1k ) generuje nam “opis” grup G1 , G2 oraz iloczynu dwuliniowego
ê, który ma rozmiar wielomianowy względem k (czyli nie są np. generowane wszystkie elementy grupy G1 ). “Opis” grup pozwala na wyznaczenie w czasie wielomianowym przykładowych
generatorów, zaś “opis” iloczynu ê pozwala na obliczenie ê w czasie wielomianowym. k jest
przekazywane do G jako ciąg k jedynek. dzięki tej sztuczce notacyjnej można powiedzieć, że
G jest wielomianowy względem k, gdyż rozmiar danych wejściowych to właśnie k.
Definicja 1.7.5. Obliczeniowy dwuliniowy problem Diffiego-Hellmana (BCDH):
Niech będzie dana cykliczna grupa addytywna G1 oraz cykliczna grupa multiplikatywna G2 ,
obie rzędu q. Ponadto niech będzie zdefiniowany iloczyn dwuliniowy ê na G1 i G2 . Dla zadanego generatora P ∈ G1 i losowych a, b, c ∈ Z∗q oblicz ê(P, P )abc na podstawie wyłącznie P ,
aP , bP i cP . Innymi słowami:
BCDHG1 ,G2 ,ê (P, aP, bP, cP ) = ê(P, P )abc
Definicja 1.7.6. Obliczeniowy dwuliniowy kwadratowy problem Diffiego-Hellmana
(BSCDH):
Niech będzie dana cykliczna grupa addytywna G1 oraz cykliczna grupa multiplikatywna G2 ,
obie rzędu q. Ponadto niech będzie zdefiniowany iloczyn dwuliniowy ê na G1 i G2 . Dla zada2
nego generatora P ∈ G1 i losowych a, b ∈ Z∗q oblicz ê(P, P )a b na podstawie wyłącznie P , aP
i bP . Innymi słowami:
2b
BCDHG1 ,G2 ,ê (P, aP, bP ) = ê(P, P )a
Definicja 1.7.7. Obliczeniowy dwuliniowy odwrócony problem Diffiego-Hellmana
(BICDH):
Niech będzie dana cykliczna grupa addytywna G1 oraz cykliczna grupa multiplikatywna G2 ,
obie rzędu q. Ponadto niech będzie zdefiniowany iloczyn dwuliniowy ê na G1 i G2 . Dla zada−1
nego generatora P ∈ G1 i losowych a, b ∈ Z∗q oblicz ê(P, P )a b na podstawie wyłącznie P ,
aP i bP Innymi słowami:
14
−1 b
BCDHG1 ,G2 ,ê (P, aP, bP ) = ê(P, P )a
Definicja 1.7.8. Decyzyjny dwuliniowy problem Diffiego-Hellmana (DBDH):
Niech będzie dana cykliczna grupa addytywna G1 oraz cykliczna grupa multiplikatywna G2 ,
obie rzędu q. Ponadto niech będzie zdefiniowany iloczyn dwuliniowy ê na G1 i G2 . Dla zadanego generatora P ∈ G1 i losowych a, b, c, d ∈ Z∗q zadecyduj, czy ê(P, P )d = ê(P, P )abc , na
podstawie wyłącznie P , aP , bP , cP i ê(P, P )d . Innymi słowami:
(
d
DBDHG1 ,G2 ,ê (P, aP, bP, cP, ê(P, P ) ) =
1 gdy ê(P, P )abc = ê(P, P )d
0 w p.p.
Definicja 1.7.9. Dwuliniowe założenie Diffiego-Hellmana (ang. Bilinear Diffie-Hellman,
BDH):
Dwuliniowy problem Diffiego-Hellmana (obliczenie ê(P, P )abc na podstawie wyłącznie P , aP ,
bP i cP ) jest trudny.
Formalnie mówiąc, zdefiniujmy przewagę (ang. advantage) dla algorytmu A rozwiązującego
problem BCDH.
BCDH
AdvA
(k)
hq, G , G , êi ← G(1k )
1
2
= P AG1 ,G2 ,ê (P, aP, bP, cP )
∗
!
a, b, c ← Zq , P ← G1
Wówczas przewaga
BCDH
BCDH = Adv BCDH (k) = max AdvA
(k)
A
(1.2)
jest zaniedbywalna.
Definicja 1.7.10. Decyzyjne dwuliniowe założenie Diffiego-Hellmana (ang. Decisional Bilinear Diffie-Hellman, DBDH):
Decyzyjny dwuliniowy problem Diffiego-Hellmana (rozstrzygnięcie ê(P, P )d = ê(P, P )abc na
podstawie wyłącznie P , aP , bP , cP i ê(P, P )d ) jest trudny.
Formalnie mówiąc, zdefiniujmy przewagę (ang. advantage) dla algorytmu A rozwiązującego
problem DBDH.
!
hq, G , G , êi ← G(1k )
1
2
ρ1 = P AG1 ,G2 ,ê (P, aP, bP, cP, ê(P, P ) ) = 1
a, b, c ←R Z∗q , d = abc, P ← G1
d
!
hq, G , G , êi ← G(1k )
1
2
ρ0 = P AG1 ,G2 ,ê (P, aP, bP, cP, ê(P, P ) ) = 1
a, b, c, d ←R Z∗q , P ← G1
d
15
DBDH
AdvA
(k) = |ρ0 − ρ1 |
Wówczas przewaga
DBDH
DBDH = Adv DBDH (k) = max AdvA
(k)
A
(1.3)
jest zaniedbywalna.
1.7.1. Zależności między problemami
Przystąpimy teraz do pokazania zależności między wyżej opisanymi problemami:
Twierdzenie 1.7.11. CDHG ¬P DLPG
Dowód. Redukcja problemu CDH do DLP jest następująca: Przyjmijmy że dany jest generator g i g a , g b . Wówczas:
a0 = DLPG (g, g a ) b0 = DLPG (g, g b )
Stąd bardzo łatwo obliczyć:
0
0
CDHG (g, g a , g b ) = g ab = (g a )b
Gdyż a = a0 i b = b0
Twierdzenie 1.7.12. DDHG ¬P CDHG
Dowód. Wynika natychmiast z definicji.
Twierdzenie 1.7.13. Niech hq, G1 , G2 , êi = G(1k ). Wówczas:
CDHG1 ¬P CDHG2
(Ta redukcja jest znana jako redukcja MOV, za [Bon03])
Dowód. Niech P ∈ G1 będzie generatorem. Wówczas połóżmy g = ê(P, P ), a następnie:
CDHG1 (P, aP, bP ) = CDHG2 (g, ê(P, aP ), ê(P, bP )) = CDHG2 (g, g a , g b )
16
Twierdzenie 1.7.14. Niech będą dane dwie grup cykliczne G1 , G2 rzędu q oraz zdefiniowany
na nich iloczyn dwuliniowy ê : G1 × G1 → G2 . Wówczas DDHG1 jest łatwy (efektywnie
obliczalny).
Dowód. Przyjmijmy, że P , aP , bP , cP są parametrami wejściowymi DDHG1 . Wystarczy
zauważyć, że:
cP = abP ⇔ ê(cP, P ) = ê(aP, bP )
Należy pamiętać, że mimo tego że problem DDH jest łatwy na grupie G1 , to CDH wciąż
może być trudny (patrz [Bon03]).
Twierdzenie 1.7.15. BCDHG1 ,G2 ,ê ¬P CDHG1 , BCDHG1 ,G2 ,ê ¬P CDHG2
Dowód. Rzeczywiście, dla danych wejściowych P , aP , bP i cP :
ê(P, P )abc = ê(CDHG1 (aP, bP ), cP ) = CDHG2 (ê(aP, bP ), ê(cP, P ))
Twierdzenie 1.7.16. BSCDHG1 ,G2 ,ê =P BCDHG1 ,G2 ,ê
Dowód. Pokażemy, że powyższe problemy są równoważne poprzez wielomianowe redukcje.
• BSCDHG1 ,G2 ,ê ¬P BCDHG1 ,G2 ,ê
2
BCDHG1 ,G2 ,ê (P, aP, aP, bP ) = ê(P, P )a b
= BSCDHG1 ,G2 ,ê (P, aP, bP )
• BCDHG1 ,G2 ,ê ¬P BSCDHG1 ,G2 ,ê
Niech:
x = BSCDHG1 ,G2 ,ê (2P, aP, cP )
= BSCDHG1 ,G2 ,ê (2P, a2 (2P ), 2c (2P ))
a2 c
= ê(2P, 2P ) 4 · 2
1 2
= ê(P, P ) 2 a c
y = BSCDHG1 ,G2 ,ê (2P, bP, cP )
1 2
= ê(P, P ) 2 b c
z = BSCDHG1 ,G2 ,ê (2P, aP + bP, cP )
1
2
= ê(P, P ) 2 (a+b) c
1 2
1 2
= ê(P, P ) 2 a c+abc+ 2 b c
wówczas:
17
BCDHG1 ,G2 ,ê = z(xy)−1
Twierdzenie 1.7.17. BICDHG1 ,G2 ,ê =P BSCDHG1 ,G2 ,ê
Dowód. Pokażemy, że powyższe problemy są równoważne poprzez wielomianowe redukcje.
• BICDHG1 ,G2 ,ê ¬P BSCDHG1 ,G2 ,ê
BSCDHG1 ,G2 ,ê (aP, P, bP ) = BSCDHG1 ,G2 ,ê (aP, a1 (aP ), ab (aP ))
1 b
= ê(aP, aP ) a2 a
1
= ê(P, P ) a b
= BICDHG1 ,G2 ,ê (P, aP, bP )
• BSCDHG1 ,G2 ,ê ¬P BICDHG1 ,G2 ,ê
BICDHG1 ,G2 ,ê (aP, P, bP ) = BICDHG1 ,G2 ,ê (aP, a1 (aP ), ab (aP ))
b
= ê(aP, aP )a a
= ê(aP, aP )b
2
= ê(P, P )a b
= BSCDHG1 ,G2 ,ê (P, aP, bP )
Wniosek 1.7.18. BCDHG1 ,G2 ,ê =P BICDHG1 ,G2 ,ê
Dowód. Wynika natychmiastowo z 1.7.17, 1.7.16 i przechodniości relacji =P
18
Rozdział 2
Struktura uprawnień
2.1. Ogólna struktura uprawnień
Definicja 2.1.1. Niech dany będzie porządek zdefiniowany na elementach zbioru X. Wówczas struktura monotoniczna A względem porządku to podzbiór X o własności:
∀x, y ∈ X
x∈A∧xy ⇒y ∈A
(2.1)
W szczególności będziemy rozważać struktury monotoniczne będące rodzinami zbiorów, a
porządek będzie definiowany przez zawieranie się zbiorów (tj. x y ⇔ x ⊆ y).
Definicja 2.1.2. Niech X będzie pewnym zbiorem, a A ⊆ X jego podzbiorem. Wówczas cl(A)
zwane domknięciem monotonicznym A będzie najmniejszym takim zbiorem, że A ⊆ cl(A)
i cl(A) będzie strukturą monotoniczną.
Definicja 2.1.3. Jeśli A ⊆ X jest strukturą monotoniczną, to zbiór B ⊆ A będzie zwany
dalej zbiorem baz lub rodziną zbiorów bazowych A.
Zdefiniujmy podstawowe pojęcie, które będzie szeroko wykorzystywane w niniejszej pracy:
Definicja 2.1.4. Ogólna struktura dostępu to trójka postaci (U, S, (Bs )s∈S ), gdzie U to
zbiór podmiotów, S to zbiór sekretów, a Bs ⊆ P(U) to rodziną takich zbiorów podmiotów,
które mogą odtworzyć sekret s. Ponadto, dla każdego s ∈ S rodzina Bs zwana dalej rodziną
zbiorów dostępu jest strukturą monotoniczną względem relacji ⊆ (relacji zawierania).
Będziemy dodatkowo oznaczać przez B0s najmniejszą rodzinę zbiorów bazowych Bs , tj. cl(B0s ) =
Bs .
Zdefiniujmy przydatne pojęcie:
Definicja 2.1.5. Zbiór sekretów, które może uzyskać zbiór podmiotów U ⊆ U, to
funkcja S : P(U) → P(S) zdefiniowana jako
S(U ) = {s ∈ S : U ∈ Bs }
19
(2.2)
Zauważmy, że możemy równoważnie zapisać powyższą definicję jako:
S(U ) = {s ∈ S : ∃B ∈ B0s
B ⊆ U}
(2.3)
Inaczej mówiąc, S(U ) to zbiór takich sekretów, gdzie dla każdego sekretu można znaleźć w
rodzinie zbiorów dostępu Bs taki zbiór, który będzie podzbiorem U
Dla pojedynczego podmiotu u ∈ U będziemy stosować skrót notacyjny S(u) := S({u})
Fakt 2.1.6. Funkcja S(U ) ma następujące własności:
1. Jeśli dla każdego s ∈ S zachodzi ∅ 6∈ Bs to wówczas S(∅) = ∅
2. Jeśli U, V ∈ P(U) i U ⊆ V to S(U ) ⊆ S(V )
3. Dla każdego X ⊆ P(U) zachodzi:
[
S(U ) ⊆ S(
U ∈X
Dowód.
[
U)
(2.4)
U ∈X
1. Wynika wprost z definicji (∅ nie należy do Bs ).
2. Wynika z monotoniczności Bs . Jeśli zachodzi U ∈ Bs to V ∈ Bs .
3. Prawdziwość wynika z poprzedniego punktu (dla każdego U ∈ X
S
zachodzi S(U ) ⊆ S( U ∈X U )).
Definicja 2.1.7. S(u) definiuje nam w sposób naturalny relację częściowego porządku
¬S , <S oraz relację równoważności ∼S na podmiotach u, u0 ∈ U:
u ¬S u0 ⇔ S(u) ⊆ S(u0 )
(2.5)
u <S u0 ⇔ S(u) ( S(u0 )
(2.6)
u ∼S u0 ⇔ S(u) = S(u0 )
(2.7)
Definicja 2.1.8. Relację częściowego porządku ¬S , <S można rozszerzyć na podzbiory
U w sposób następujący:
U ¬S U 0 ⇔ S(U ) ⊆ S(U 0 )
(2.8)
U <S U 0 ⇔ S(U ) ( S(U 0 )
(2.9)
20
2.2. Przykłady struktur uprawnień
2.2.1. Schemat progowy
Schemat progowy (k, n) dzielenia sekretu opiera się na dzieleniu pojedynczego sekretu s
między n podmiotów w taki sposób, że tylko k lub więcej podmiotów może uzyskać sekret
s. Znanym przykładem implementacji jest klasyczny już schemat dzielenia sekretu Shamira
opisany w w pracy [Sha79]
Struktura uprawnień dla takiego schematu opisuje się następująco:
• U = {u1 , u2 , . . . , un }
• S = {s}
• Bs = {U ∈ P(U) : #U ­ k}
Łatwo zauważyć, że S(U ) = {s} wtedy i tylko wtedy, gdy #U ­ k
2.2.2. Schemat hierarchiczny
Rozważmy teraz przypadek, który omówimy dokładniej ze względu na to, że będziemy się
nim później szczegółowo zajmować.
Każdy podmiot dysponuje swoim własnym sekretem. Ponadto podmioty spełniają pewną
częściową relację porządku , która ustala na nich hierarchię. Zachodzi ui uj wtw. gdy uj
jest przodkiem ui w DAGu (lub w drzewie).
• U = {u1 , u2 , . . . , un }
• S = {s1 , s1 , . . . , sn }
• Przyjmujemy że:
Bsi = {U ∈ P(U) : ∃u ∈ U
ui u}
(2.10)
Pokażemy teraz, że relacja (definiująca) jest równoważna relacji ¬S (indukowanej przez
wcześniej zdefiniowaną funkcję S).
Niech G = hV, Ei będzie DAGiem odpowiadającym relacji . Oznaczymy dalej Zbiór przodków:
A
u = Anc(u) = {v ∈ U : u v}
Będziemy dalej pomijać w zapisie (tj. Au = A
u)
Lemat 2.2.1. Zachodzi równoważność: Ay ⊆ Ax ⇔ y ∈ Ax
Dowód. (⇒) wynika natychmiast z definicji.
(⇐) Dowód przez sprzeczność. Niech Ay 6⊆ Ax . Wówczas zachodzi jeden z wymienionych
przypadków:
• Ax ( Ay . Jest to równoważne y ≺ x, skąd mamy że y 6∈ Ax , co daje pożądaną sprzeczność.
21
• x i y są względem siebie nieporównywalne (x 6 y i y 6 x). Wówczas mamy dwa
przypadki:
– Istnieje takie w będące najmniejszym wspólnym przodkiem (x ≺ w oraz y ≺ w)
i zachodzi Aw = Ax ∩ Ay . Z poprzedniego podpunktu wiemy, że y 6∈ Aw , co w
konsekwencji daje nam że y 6∈ Ax .
– Nie istnieje żaden wspólny przodek x i y, stąd Ax i Ay są rozłączne, co dowodzi
y 6∈ Ax .
Lemat 2.2.2. Niech Bsi będzie zdefiniowana jak w równaniu (2.10). Wówczas dla każdego
ui , uj ∈ U:
ui uj ⇔ Bsj ⊆ Bsi
Dowód. Możemy zdefiniować Bsi jako:
Bsi = {U ⊆ U : U ∩ A
ui 6= ∅}
Wówczas łatwo zauważyć, że:
ui uj ⇔ Auj ⊆ Aui ⇔ Bsj ⊆ Bsi
Lemat 2.2.3. Niech Bsi będzie zdefiniowana jak w równaniu (2.10). Wówczas dla każdego
ui , uj ∈ U:
Bsj ⊆ Bsi ⇔ ∀uk ∈ U
{ui } ∈ Bsk ⇒ {uj } ∈ Bsk
Dowód. (⇒) niech {ui } ∈ Bsk . Wówczas Bsi ⊆ Bsk , czyli Bsj ⊆ Bsi ⊆ Bsk , co daje nam
ostatecznie {uj } ∈ Bsk
(⇐) Dowód przez sprzeczność. Załóżmy, że Bsj 6⊆ Bsi . Jest to równoważne Auj 6⊆ Aui i w
konsekwencji również uj 6∈ Aui (korzystamy tutaj z lematu 2.2.1). W konsekwencji {uj } 6∈
Bsi . Jednak ponieważ {ui } ∈ Bsi , stąd z prawej strony równoważności (tezy) mamy, że
{uj } ∈ Bsi , co prowadzi nas do pożądanej sprzeczności.
Fakt 2.2.4. Relacja (definiująca) jest równoważna relacji ¬S (indukowanej przez wcześniej
zdefiniowaną funkcję S), tj.
ui uj ⇔ ui ¬S uj
22
Dowód.
ui uj
⇔ (korzystamy z lematu 2.2.2)
⇔ Buj ⊆ Bui
⇔ (korzystamy z lematu 2.2.3)
⇔ ∀uk ∈ U {ui } ∈ Bsk ⇒ {uj } ∈ Bsk
⇔ {s ∈ S : {ui } ∈ Bs } ⊆ {s ∈ S : {uj } ∈ Bs }
⇔ S({ui }) ⊆ S({uj })
⇔ ui ¬S uj
2.2.3. Schemat mieszany
Na koniec możemy omówić bardziej skomplikowany przypadek. Sekret s1 jest dzielony na
udziały między podmioty u1 , u2 , zaś s2 jest dzielony na udziały między podmioty u2 , u3 .
Ponadto podmiot u4 ma dostęp do obu sekretów, a podmiot u5 , który jest przodkiem u4 , ma
także dostęp do sekretu s3 .
Struktura uprawnień dla takiego przypadku wygląda następująco:
• U = {u1 , u2 , u3 , u4 , u5 }
• S = {s1 , s2 , s3 }
• Bs1 = {{u5 }, {u4 }, {u1 , u2 }, {u4 , u1 , u2 }, {u5 , u4 }, {u5 , u1 , u2 }, {u5 , u4 , u1 , u2 }}
• Bs2 = {{u5 }, {u4 }, {u2 , u3 }, {u4 , u2 , u3 }, {u5 , u4 }, {u5 , u2 , u3 }, {u5 , u4 , u2 , u3 }}
• Bs3 = {{u5 }}
23
Rozdział 3
Hierarchiczny system dostępu
Zakładamy, że mamy dane drzewo ukorzenione T = hV, Ei, które reprezentuje hierarchię
podmiotów.
Będziemy wyróżniać następujące komponenty:
• Zaufane centrum obliczeniowe
• Zbiór podmiotów, zwanych też wierzchołkami drzewa
• Repozytorium kluczy publicznych
Dla każdego wierzchołka v ∈ V (od tej pory utożsamianego z podmiotem) wygenerujemy
informację ukrytą Sec(v), dostępną jedynie dla wierzchołka v, która będzie wykorzystywana
do wyprowadzenia klucza prywatnego P r(v).
Ponadto wygenerujemy zbiór kluczy publicznych, które będą dostępne dla wszystkich podmiotów. Zbiór ten pozwoli przodkom v na odtworzenie klucza P r(v).
Zaufane centrum obliczeniowe będzie wykonywać operację generowania potrzebnych kluczy
publicznych i informacji ukrytych dla wierzchołków drzewa T .
Zaufane centrum obliczeniowe jako jedyne ma prawo zapisu do repozytorium kluczy publicznych. Poza tym wszystkie klucze publiczne dostępne są do odczytu.
3.1. Inicjalizacja
3.1.1. Podstawowa inicjalizacja
Niech 1k będzie parametrem bezpieczeństwa. Procedura M asterSetup(1k ), wykonywana przez
centrum obliczeniowe:
1. oblicza G(1k ) = hq, G1 , G2 , êi
2. wyznacza dwa losowe generatory Q, P ∈R G1 o tej własności, że ê(Q, P ) nie jest elementem neutralnym G2 .
3. upublicznia informację: S = hq, G1 , G2 , ê, Q, P i
25
3.1.2. Generowanie informacji prywatnej korzenia
Generowanie klucza dla podmiotu nadrzędnego (utożsamianego z korzeniem drzewa r) przedstawia się następująco, poprzez procedurę RootSetupS (r):
Centrum obliczeniowe:
1. wybiera losowo sr ∈R Z∗q
2. wylicza ukrytą informację Sec(r) = sr Q dla wierzchołka r
3. przekazuje ukrytą informację do wierzchołka r przez zaufany kanał.
3.1.3. Generowanie informacji prywatnej pozostałych wierzchołków
Generowanie kluczy dla podmiotu (utożsamianego z wierzchołkiem drzewa) v odbywa się
przy założeniu, że operacja generowania kluczy dla P arent(v) została wcześniej wykonana.
Operacja DescSetupS (v, u) przebiega w następujących krokach:
Przyjmujemy, że u będzie rodzicem v, tj. P arent(v) = u
1. Wierzchołek v przysyła prośbę o przydzielenie klucza do centrum obliczeniowego
2. Centrum obliczeniowe następnie:
(a) Pobiera ukrytą informację Sec(u) przez zaufany kanał od u
(b) Opcjonalnie dokonuje weryfikacji Sec(u)
(c) Wybiera losowo sv ∈ Z∗q
(d) Oblicza Sec(v) = sv Sec(u)
(e) Wysyła do v jego informację ukrytą Sec(v) poprzez zaufany kanał
(f) Upublicznia P ub(v, u) = sv P jako klucz publiczny v dla u (czyli zapisuje go do
repozytorium kluczy publicznych)
(g) Dla każdego klucza publicznego P ub(u, w) upublicznia klucz publiczny P ub(v, w) =
sv P ub(u, w)
3.1.4. Pełna inicjalizacja
Powyższy opis pozwala na dynamiczne dodawanie nowych wierzchołków podczas działania
systemu.
Jeśli jednak struktura podmiotów jest zadana odgórnie poprzez drzewo T = hV, Ei, to procedura inicjalizacji T reeSetupS (T ) dla tego drzewa przedstawia się następująco:
1. Wykonaj RootSetupS (r)
2. Dla każdego wierzchołka v, dla którego rodzica u została wykonana procedura DescSetupS (u, P arent(u))
bądź RootSetupS (u), wykonaj DescSetupS (v, u)
3. Jeśli istnieją niezainicjowane wierzchołki (nie posiadające informacji prywatnej), to powtórz punkt 2.
26
Cała procedura inicjalizacji Setup(1k , T ) dla zadanego parametru bezpieczeństwa 1k i powyższego drzewa przedstawiała się następująco:
1. Wykonaj M asterSetup(1k ) i uzyskaj S
2. Wykonaj T reeSetupS (T )
Ostatecznie informacja publiczna systemu jest opisana w pełni poprzez:
hq, G1 , G2 , ê, Q, P, P ubi
3.2. Obliczanie kluczy
W powyższym schemacie klucz prywatny efektywnie może obliczyć jedynie wierzchołek v
bądź wierzchołek u będący przodkiem v.
Klucz prywatny dla v to
P r(v) = DeriveKey(v, v) = ê(Sec(v), P )
(3.1)
W przypadku, jeśli u będący przodkiem v chce obliczyć klucz prywatny v:
P r(v) = DeriveKey(v, u) = ê(Sec(u), P ub(v, u))
(3.2)
Lemat 3.2.1. Informacja ukryta wierzchołka v jest postaci:

Sec(v) = 

Y
sw  Q
(3.3)
w∈P athSet(v,r)
gdzie r jest korzeniem drzewa.
Dowód. Dowód jest indukcyjny i wynika wprost ze sposobu generowania kluczy:
1. Baza indukcji: informacja ukryta korzenia to Sec(r) = sr Q.
2. Krok indukcyjny: klucz prywatny dla w będącego dzieckiem v jest postaci sw Sec(v).
Podstawiając pod Sec(v) wzór (3.3), otrzymujemy pożądany wynik dla w.
Lemat 3.2.2. Klucz publiczny wierzchołka v dla u jest postaci:


Y
P ub(v, u) = 
w∈P athSet(v,u)\{u}
gdzie r jest korzeniem drzewa.
27
sw  P
(3.4)
Dowód. Dowód jest indukcyjny i wynika wprost ze sposobu generowania kluczy:
1. Baza indukcji: Klucz publiczny wierzchołka v dla u = P arent(v) to P ub(v, P arent(v)) =
sv P .
2. Krok indukcyjny: klucz publiczny dla w będącego dzieckiem v jest postaci sw P ub(v, u).
Podstawiając pod P ub(v, u) wzór (3.4), otrzymujemy pożądany wynik dla wierzchołków
w i u.
Wniosek 3.2.3. Klucz prywatny wierzchołka v jest postaci:
P r(v) = ê(Q, P )c
gdzie
Y
c=
sw
(3.5)
w∈P athSet(v,r)
I tym samym jest jednoznacznie wyznaczany zarówno przez (3.1) jak i (3.2)
Dowód. W przypadku (3.1), gdy u = v wynika to bezpośrednio z lematu 3.2.1. W przypadku
(3.2), kiedy u jest przodkiem v, korzystamy z faktu, że
P athSet(v, r) = P athSet(u, r) ∪ (P athSet(v, u)\{u})
stąd, przy korzystaniu z własności, że:
ê(aQ, bP ) = ê(Q, P )ab
oraz z lematów 3.2.1 i 3.2.2, uzyskujemy, że:
P r(v) = ê(Sec(u), P ub(v, u)) = ê(Q, P )c
3.3. Przykład
Aby uczynić powyższą definicję schematu przydzielania kluczy czytelniejszą, zaprezentujmy
ją na przykładowym drzewie. Rozważmy więc następujące drzewo T = hV, Ei reprezentujące
pewną hierarchię podmiotów. Drzewo posiada 11 wierzchołków reprezentujących poszczególne
podmioty i jest zaprezentowane na rysunku 3.1.
28
v0
v2
v1
v3
v8
v4
v9
v5
v6
v7
v10
Rysunek 3.1: Przykładowe drzewo T . Każdy z wierzchołków vi odpowiada pewnemu podmiotowi
Na tym drzewie wykonujemy opisaną wcześniej procedurę Setup(1k , T ), gdzie 1k będzie parametrem bezpieczeństwa. W wyniku jej każdy z wierzchołków otrzymuje swoją informację
ukrytą, co zostało zaprezentowane na rysunku 3.2.
29
s0 Q
v0
s1 s0 Q
s2 s0 Q
v2
v1
s4 s1 s0 Q
s3 s1 s0 Q
v3
v4
v5
s5 s2 s0 Q
v8
s8 s3 s1 s0 Q
v9
v6
s6 s2 s0 Q
v7
s7 s2 s0 Q
v10
s10 s3 s1 s0 Q
s9 s3 s1 s0 Q
Rysunek 3.2: Drzewo T z przypisaną do każdego wierzchołka jego informacją ukrytą. Dla
uproszczenia przyjęto, że si = svi . Należy zwrócić uwagę, że dana informacja ukryta jest
znana tylko danemu wierzchołkowi.
Ponadto w repozytorium kluczy publicznych zostają umieszczone klucze publiczne, ukazane
na rysunku 3.3. Każdy z tych kluczy jest dostępny dla każdego podmiotu.
30
v0
v1
s1 P
v2
s4 s1 P
s4 P
s3 s1 P
s3 P
v3
v4
v5
s5 s2 P
s5 P
v8
s8 s3 s1 P
s8 s3 P
s8 P
s2 P
v9
s9 s3 s1 P
s9 s3 P
s9 P
v10
v6
s6 s2 P
s6 P
v7
s7 s2 P
s7 P
s10 s3 s1 P
s10 s3 P
s10 P
Rysunek 3.3: Drzewo T z kluczami publicznymi wierzchołków. Klucze publiczne, które są
używane do obliczania klucza prywatnego danego wierzchołka zostały umieszczone obok tego
wierzchołka. Przykładowo, P ub(v9 , v1 ) = s9 s3 P . Dla uproszczenia przyjęto że si = svi .
Informacja ukryta oraz klucze publiczne umożliwiają obliczenie kluczy prywatnych, zaprezentowanych na rysunku 3.4:
31
ê(Q, P )s0 Q
v0
ê(Q, P )s1 s0 Q
ê(Q, P )s2 s0 Q
v2
v1
ê(Q, P )s3 s1 s0 Q
ê(Q, P )s4 s1 s0 Q
v3
v4
v6
v5
v7
ê(Q, P )s7 s2 s0 Q
ê(Q, P )s5 s2 s0 Q
ê(Q, P )s6 s2 s0 Q
v8
v9
ê(Q, P )s8 s3 s1 s0 Q
ê(Q, P )s9 s3 s1 s0 Q
v10
ê(Q, P )s10 s3 s1 s0 Q
Rysunek 3.4: Drzewo T z kluczami prywatnymi wierzchołków. Dla uproszczenia przyjęto, że
si = svi .
Zobrazujmy obliczanie kluczy na przykładzie. Przyjmijmy, że wierzchołek v1 chce obliczyć
klucz prywatny wierzchołka v9 . Wówczas bierze swoją informacje ukrytą Sec(v1 ) = s1 s0 Q
oraz klucz publiczny P ub(v9 , v1 ) = s9 s3 P i oblicza:
ê(Sec(v1 ), P ub(v9 , v1 )) = ê(s1 s0 Q, s9 s3 P ) = ê(Q, P )s9 s3 s1 s0 = P r(v9 )
3.4. Bezpieczeństwo
3.4.1. Bezpieczeństwo w przypadku dostępu wyłącznie do publicznej informacji
Fakt 3.4.1.
P(Sec(w) = xQ) = P(Sec(w) = xQ|P ub(v, u) = yv,u P )
32
∀w ∈ V
Innymi słowy rozkłady prawdopodobieństw nie różnią się, więc potencjalny atakujący nie uzyskuje żadnej informacji na temat Sec(w) na podstawie publicznie udostępnionych kluczy.
Dowód. Jest to wniosek z lematu 3.2.2. Na jego mocy żaden z kluczy publicznych nie zawiera
informacji na temat sr . Stąd nie zawiera też żadnej informacji o Sec(w), która na mocy
lematu 3.2.1 jest zależna od sr , przykładowo sr Q = Sec(r).
Fakt 3.4.2.
P(P r(w) = xQ) = P(P r(w) = xQ|P ub(v, u) = yv,u P )
∀w ∈ V
Innymi słowy rozkłady prawdopodobieństw nie różnią się, więc potencjalny atakujący nie uzyskuje żadnej informacji na temat P r(w) na podstawie publicznie udostępnionych kluczy.
Dowód. Stosujemy rozumowanie tak jak w 3.4.1, gdyż P r(w) = ê(Sec(w), P ).
3.4.2. Bezpieczeństwo w przypadku istnienia skorumpowanych podmiotów
Definicja 3.4.3. Schemat przydzielania kluczy jest bezpieczny względem odzyskiwania klucza (ang. Key Recovery, za [Ata09]), jeśli nie istnieje działający w czasie wielomianowym
atakujący (ang. Adversary) A, który ma niezaniedbywalną przewagę (ang. Advantage) w grze
o następujących fazach:
1. Setup: Wyzywający (ang. Challenger) wykonuje Setup(1k , G), gdzie G = hV, Ei jest
skierowanym grafem acyklicznym i przekazuje całą informację publiczną P ub atakującemu.
2. Attack: Atakujący dokonuje zapytania Corrupt(vi ) do wyzywającego, na które tenże
odpowiada atakującemu, zwracając sekretną informację wierzchołka vi czyli Sec(vi ).
3. Break: Atakujący zwraca wierzchołek v ∗ wraz z odgadniętym kluczem prywatnym P r(v ∗ )0 .
Wierzchołek v ∗ musi spełniać warunek: dla każdego vi zachodzi v ∗ 6∈ Desc(vi )
Przewagę w tej grze, dalej zwaną grą KR, definiujemy jako:
KR
AdvA
= P(P r(v ∗ )0 = P r(v ∗ ))
Definicja 3.4.4. Schemat przydzielania kluczy jest bezpieczny względem odzyskiwania klucza ustalonego wierzchołka v, jeśli nie istnieje działający w czasie wielomianowym atakujący A, który ma niezaniedbywalną przewagę w grze opisanej wyżej z następującą modyfikacją,
że atakujący zwraca w fazie Break wierzchołek v ∗ = v. Grę tę będziemy nazywać dalej grą
SKRv .
Innymi słowy, wierzchołek v ∗ zwrócony w fazie Break jest już znany w fazie Setup i wyzywający może wykorzystać tę informację.
33
Definicja 3.4.5. Schemat przydzielania kluczy jest bezpieczny względem odzyskiwania klucza korzenia, jeśli jest bezpieczny względem odzyskiwania klucza ustalonego wierzchołka i
ten wierzchołek jest korzeniem. Grę tę będziemy nazywać dalej grą RKR (RKR = SKRr )
Pokażmy wpierw, w jaki sposób możemy użyć wariantu KR do obliczenia ê(P, P )abc przy
danych P, aP, bP ∈ G1 .
Fakt 3.4.6. Schemat zaproponowany w niniejsze pracy jest bezpieczny względem odzyskiwania
klucza korzenia, jeśli dwuliniowe założenie Diffiego-Hellmana jest prawdziwe.
RKR = .
Dowód. Załóżmy przeciwnie: niech istnieje wielomianowy algorytm A, taki że AdvA
Wówczas można skonstruować algorytm B taki, że:
−1 b
AdvBBICDH = P(B(P, aP, bP ) = ê(P, P )a
)=
Konstrukcja B przebiega następująco. Przy ustalonych G1 , G2 , ê algorytm ten otrzymuje na
wejściu trzy parametry x, y, z ∈ G1 (odpowiadają one P, aP, bP ∈ G1 ). Na początku wybiera
dowolne drzewo T = hV, Ei, takie że istnieje wierzchołek v będący dzieckiem korzenia.
Następnie B symuluje kolejne fazy gry RKR w sposób opisany poniżej:
1. Setup:
Wyzywający:
(a) zwraca podstawową informację publiczną, symulując M asterSetup:
hq, G1 , G2 , ê, x, xi
jednak nie generuje informacji ukrytej dla korzenia.
(b) dla każdego wierzchołka v będącego dzieckiem korzenia (tj. P arent(v) = r) oblicza
Sec(v) = z oraz P ub(v) = y.
Należy zauważyć, że jeśli x = P , y = aP i z = bP to stąd wniosek, że Sec(r), który
w tej fazie nie jest znany, powinien być postaci a−1 bP , gdyż ê(Sec(r), P ub(v, r)) =
ê(Sec(v), P ) = ê(P, P )b
(c) dla pozostałych wierzchołków (różnych od korzenia) wykonuje procedurę
DescSetup(v, P arent(v))
(d) przekazuje atakującemu informację publiczną:
hq, G1 , G2 , ê, x, x, P ubi
2. Attack:
Algorytm A jako atakujący wykonuje zapytania Corrupt(vi ). Wyzywający odpowiada,
zwracając mu informacją ukrytą Sec(vi ). Zauważmy, że A nie może pytać o vi = r.
3. Break:
Algorytm A zwraca hr, P r(r)0 i
34
Ostatecznie, jeśli algorytm B zwrócił poprawny wynik, tj. P r(r)0 = P r(r) to wnosimy stąd,
−1
że P r(r)0 = ê(P, P )a b . Wynika to stąd, że Sec(r) = a−1 bP , a w konsekwencji z (3.1)
−1
P r(r) = ê(P, P )a b .
Ponieważ znaleźliśmy efektywny algorytm rozwiązujący problem BICDH z niezaniedbywalnym prawdopodobieństwem, więc na mocy równoważności 1.7.17 i 1.7.16 tak samo możemy
rozwiązać problem BCDH, co doprowadza nas do sprzeczności z założeniem.
Należy zauważyć, że nie jest to pełen dowód bezpieczeństwa, ponieważ arbitralnie ustaliliśmy,
że wierzchołkiem zwróconym przez przeciwnika w fazie Break będzie korzeń drzewa.
Warianty procedury Setup
Aby udowodnić bezpieczeństwo z użyciem schematu KR, będą nam potrzebne dodatkowe
pojęcia.
Zdefiniujemy dwa warianty procedury DescSetup:
Procedura RandomDescSetupS (v, u) przedstawia się następująco:
Centrum obliczeniowe:
1. znajduje losowe sv ∈R Z∗q
2. znajduje losowe sv,u ∈R Z∗q
3. oblicza Sec(v) = sv Q
4. przekazuje zaufanym kanałem Sec(v) do wierzchołka v
5. oblicza i upublicznia P ub(v, u) = sv,u P
6. dla każdego klucza publicznego P ub(u, w):
(a) znajduje losowe sv,w ∈R Z∗q
(b) upublicznia klucz publiczny P ub(v, w) = sv,w P ub(u, w)
Innymi słowy, klucze publiczne nie posiadają żadnej informacji na temat sv , a także na temat
informacji ukrytej wierzchołka u.
Procedura BDHDescSetupS (v, u, aP, bP ) przedstawia się następująco:
Centrum obliczeniowe:
1. znajduje losowe sv ∈R Z∗q
2. oblicza Sec(v) = sv bP
3. przekazuje zaufanym kanałem Sec(v) do wierzchołka v
4. oblicza i upublicznia P ub(v, u) = sv aP
5. dla każdego klucza publicznego P ub(u, w):
(a) znajduje losowe sv,w ∈R Z∗q
35
(b) upublicznia klucz publiczny P ub(v, w) = sv,w P ub(u, w)
Można łatwo zauważyć, że jeśli a, b zostały wybrane losowo z Z∗q , to procedura RandomDescSetupS (v, u)
działa tak samo jak BDHDescSetupS (v, u, aP, bP ).
Niech będzie zadane drzewo T = hV, Ei. Niech v 0 ∈ V będzie pewnym ustalonym wierzchołkiem. Wówczas niech E 0 ⊆ E będzie następującym podzbiorem:
E 0 = E\{hv, ui ∈ E : u ∈ Anc(v 0 )}
a F = hV, E 0 i będzie indukowanym lasem.
Zdefiniujmy procedurę RandomT reeSetupS (T, v 0 ) w sposób następujący:
1. Wykonaj RootSetupS (r)
2. Dla każdego wierzchołka v, dla którego rodzica u została obliczona informacja ukryta,
wykonaj
• DescSetupS (v, u), jeśli hv, ui ∈ E 0
• RandomDescSetupS (v, u) w przeciwnym przypadku.
3. Jeśli istnieją niezainicjowane wierzchołki (nie posiadające informacji prywatnej), to powtórz punkt 2.
Zdefiniujmy procedurę BDHT reeSetupS (T, v 0 , aP, bP ) w sposób następujący:
1. Wykonaj RootSetupS (r) jeśli r 6= v 0
2. Dla każdego wierzchołka v ∈ Children(v 0 ) wykonaj BDHDescSetupS (v, v 0 , aP, bP )
3. Dla każdego pozostałego wierzchołka v, dla którego rodzica u została obliczona informacja ukryta, wykonaj
• DescSetupS (v, u), jeśli hv, ui ∈ E 0
• RandomDescSetupS (v, u) w przeciwnym przypadku.
4. Jeśli istnieją niezainicjowane wierzchołki (nie posiadające informacji prywatnej, za wyjątkiem v 0 ), to powtórz punkt 3.
Można zauważyć, że jeśli a, b ∈ Z∗q zostały wybrane z losowym prawdopodobieństwem, to
BDHT reeSetupS (T, v 0 , aP, bP ) zachowuje się identycznie jak RandomT reeSetupS (T, v 0 ), z
tą różnicą, że nie generowana jest informacja ukryta Sec(v 0 ).
Rozróżnianie gier
Przyjmijmy że podstawowa informacja publiczna (np. wygenerowana przez procedurę M asterSetup):
S = hq, G1 , G2 , ê, Q, P i
tj. q = |G1 | = |G2 | to rząd grup G1 , G2 , ê : G1 × G1 → G2 jest iloczynem dwuliniowym, a
Q, P ∈ G1 to dwa generatory takie że ê(Q, P ) nie jest elementem neutralnym G2 . Zdefiniujemy dwie gry, Ĝ oraz Ĝ0 w następujący sposób:
36
• Gra Ĝ0 : Gra KR, gdzie w fazie Setup jest wykonywana procedura T reeSetupS (T )
• Gra Ĝ1 Gra KR, gdzie w fazie Setup jest wykonywana procedura RandomT reeSetupS (T, r)
To co odróżnia obie gry to fakt, że w grze Ĝ1 informacja ukryta nie jest przekazywana do
wierzchołków z Children(r), więc w konsekwencji potomkowie r (wyłączając sam korzeń) nie
mogą obliczyć klucza prywatnego r w żaden sposób (tj. mogą to zrobić z prawdopodobieństwem co najwyżej 1/q — nie ma lepszego algorytmu niż odgadnięcie klucza).
Będziemy oznaczać przez Tj zdarzenie takie że P r(v ∗ ) = P r(v ∗ )0 w grze Ĝj .
Lemat 3.4.7. Niech DBDH będzie zdefiniowany tak jak w (1.3). Wówczas:
|P(T0 ) − P(T1 )| ¬ DBDH
Dowód. Niech będzie dany algorytm A, który jest w stanie rozróżnić między grą Ĝ0 i Ĝ1 .
Wówczas skonstruujemy algorytm B taki, że jest w stanie rozróżnić, czy dla zadanych para−1
metrów P , aP , bP, ê(P, P )c będzie potrafił zadecydować czy ê(P, P )c = ê(P, P )a b . W konsekwencji, korzystając z faktu 1.7.18, możemy zbudować algorytm B 0 taki że dla zadanych pa0
0
0 0 0
rametrów P , a0 P , b0 P, c0 P, ê(P, P )d będzie potrafił zadecydować, czy ê(P, P )d = ê(P, P )a b c .
Przeprowadźmy zatem konstrukcję B. Algorytm otrzymuje na wejściu parametry “środowiskowe”’ G1 , G2 , ê oraz właściwe parametry x, y, z ∈ G1 , w ∈ G2 (w domyśle x = P , y = aP ,
z = bP , w = ê(P, P )c ). Algorytm ten będzie “interpolować” zachowanie między grą Ĝ0 i grą
Ĝ1 w następujący sposób:
1. Setup:
Wyzywający:
(a) zwraca podstawową informację publiczną, symulując M asterSetup:
S = h|G1 |, G1 , G2 , ê, x, xi
(b) wykonuje procedurę BDHT reeSetupS (T, r, y, z)
(c) ustala P r(r) = w
(d) przekazuje atakującemu informację publiczną:
hq, G1 , G2 , ê, x, x, P ubi
2. Attack:
Algorytm A jako atakujący wykonuje zapytania Corrupt(vi ). Wyzywający odpowiada,
zwracając mu informacją ukrytą Sec(vi ). Zauważmy, że A nie może pytać o v ∈ Anc(v ∗ ),
w szczególności o r.
3. Break:
Algorytm A zwraca hv ∗ , P r(v ∗ )0 i
37
Po zakończeniu fazy Break algorytm B oblicza P r(v ∗ ) (np. na podstawie wcześniej wyznaczonego Sec(v ∗ ), lub jeśli v ∗ = r, to P r(v ∗ ) = w).
Następnie B zwraca 1 jeśli P r(v ∗ )0 = P r(v ∗ ) a 0 w przeciwnym przypadku. Stąd:
DBDH
­ AdvBDBDH
0
= |P(B 0 zwrócił 1|d0 jest losowe) − P(B 0 zwrócił 1|d0 = a0 b0 c0 ))|
= |P(B zwrócił 1|c jest losowe) − P(B zwrócił 1|c = a−1 b))|
= |P(T1 ) − P(T0 )|
Ostateczny dowód
Twierdzenie 3.4.8. Schemat zaproponowany w niniejsze pracy jest bezpieczny względem
odzyskiwania klucza (KR), jeśli decyzyjne dwuliniowe założenie Diffiego-Hellmana jest prawdziwe.
Dowód. Wykorzystamy schemat dowodowy z pracy [Ata09]. Trudność w dowodzeniu tego
twierdzenia polega na tym, że nie wiemy, jaki wierzchołek v ∗ zostanie zwrócony w fazie Break.
Przyjmujemy więc, że “odgadujemy” ten wierzchołek. Ponieważ “odgadnięcie” dokonuje się
1
z prawdopodobieństwem #V
, więc bezpieczeństwo redukuje się o czynnik #V .
Następnie uporządkujmy wszystkie wierzchołki z Anc(v ∗ ) w następujący sposób:
r = v1 > v2 > . . . > vh = v ∗
{v1 , v2 , . . . , vh } = Anc(v ∗ )
• Gra Ĝ0 : Gra KR, gdzie w fazie Setup jest wykonywana procedura T reeSetupS (T )
• Gra Ĝj ( dla j = 1, 2, . . . , h) Gra KR, gdzie w fazie Setup jest wykonywana procedura
RandomT reeSetupS (T, vj )
Widać, że jest to uogólnienie dla wcześniej wymienionej pary gier Ĝ0 Ĝ1 , których rozróżnianiem zajmował się algorytm B z lematu 3.4.7.
Podobnie jak wcześniej będziemy oznaczać przez Tj zdarzenie takie, że P r(v ∗ ) = P r(v ∗ )0 w
grze Ĝj .
Zauważmy, że lemat 3.4.7 można uogólnić do nierówności:
|P(Tj ) − P(Tj−1 )| ¬ DBDH
Aby to zauważyć, możemy inaczej sformułować gry Ĝj :
• Gra Ĝj ( dla j = 1, 2, . . . , h) Gra KR, która różni się do Ĝj−1 jedynie tym, że dla w ∈
Children(vj ) zamiast wykonać procedurę DescSetupS (w, vj ) wykonujemy procedurę
RandomDescSetupS (w, vj )
Dalej możemy zauważyć, że w grze Ĝh wierzchołki nie będące przodkami vh = v ∗ nie mają
żadnej informacji o s∗v , więc P(Th ) = 1q . Stąd zaś:
38
P(T0 ) ¬
h
X
|P(Tj−1 ) − P(Tj )| + P(Th ) ¬ hDBDH +
j=1
1
q
(3.6)
Przy założeniu, że q zostało wygenerowane z G(1k ), możemy przyjąć, że 1q jest funkcją zaniedbywalną. Wiedząc, że h ¬ #V oraz przyjmując, że #V jest rzędu k, wnosimy, że 3.6 jest
również zaniedbywalne względem k.
3.5. Zastosowania
Zastosowania wyżej opisanego schematu mogą być następujące:
• Przyjmijmy, że mamy funkcję haszującą H : G1 → {0, 1}m . Niech Mv ∈ {0, 1}m będzie
pewną sekretną informacją każdego podmiotu v. Wówczas można opublikować informację publiczną:
Pv = Mv ⊕ H(P r(v))
dzięki której każdy upoważniony podmiot u może obliczyć sekretną informację, wyliczając:
Pv ⊕ H(DeriveKey(v, u)) = Mv
• Niech u i v będą takimi podmiotami, że v ¬ u.
Przyjmując, że mamy funkcję haszującą H : G1 → {0, 1}m , możemy użyć klucza
H(P r(v)) przy szyfrowaniu wiadomości z użyciem pewnego symetrycznego schematu szyfrowania (np. AES, patrz [FIPS01]), gdyż zarówno podmiot u jak i podmiot v
mogą obliczyć P r(v).
3.6. Porównanie
3.6.1. Schemat trywialny
System trywialny odpowiada następującej konstrukcji: każdemu wierzchołkowi (podmiotowi)
ui przypisujemy pewien sekret si . Następnie konstruujemy zbiory sekretów, do których ma
dostęp wierzchołek (użytkownik) ui . Zbiór ten jest tożsamy z S({ui }) (przy założeniu, że
Bs jest zdefiniowana tak jak w (2.10)). Przykładowo, dla wierzchołka będącego korzeniem w
drzewie S({ui }) = S, zaś dla wierzchołka będącego liściem w drzewie S({ui }) = {si }
Zaletą tej konstrukcji jest jej prostota i niezależność od problemów obliczeniowych, takich jak
np problem Diffiego-Hellmana czy RSA. Wadą jest trudność wykorzystania zbioru sekretów
np. jako klucza przy szyfrowaniu/deszyfrowaniu wiadomości.
39
3.6.2. Schemat z pracy Atallah et al.
W tym systemie [Ata09] zakładamy, że każdy podmiot jest wierzchołkiem DAGu. Każdy
podmiot vi ma swój klucz prywatny ki ∈ {0, 1}ρ i klucz publiczny li ∈ {0, 1}ρ .
Ponadto każda krawędź między vi i vj ma swój klucz publiczny yij = kj ⊕ F (ki , lj ).
Jeśli vj będzie dzieckiem vi , to obliczenie klucza kj przez vi będzie się odbywać w następujący
sposób:
kj = yij ⊕ F (ki , lj )
W ten sposób każdy przodek vj może w iteracyjny sposób obliczyć klucz kj . Bezpieczeństwo
tego systemu opiera się na założeniu PRF, czyli na pseudolosowości funkcji F , tj. że rozróżnienie funkcji F (ki , ·) a funkcji losowo wybranej ze zbioru funkcji X X , gdzie X = {0, 1}ρ jest
trudne.
3.6.3. Schemat z pracy Liu et al.
W tym systemie [Liu11] zakładamy, że każdy podmiot jest wierzchołkiem DAGu. Ten system
opiera się na użyciu iloczynu dwuliniowego ê : G1 × G1 → G2 , ale wykorzystuje go w inny
sposób (można odnaleźć pewne podobieństwo do schematu Boneha-Franklina [Bon03]).
Każdy “zasób” t (w naszej terminologii sekret) ma swój klucz prywatny DKt .
Dostęp do niego mogą uzyskać podmioty Si . Każdy podmiot jest identyfikowany przez publiczne QSi = H1 (IDSi )
Niech będą dane funkcje haszujące H1 : {0, 1}∗ → G1 , H2 : G2 → {0, 1}∗ . Podczas tworzenia
kluczy wybierane jest α ∈ Z∗q , r ∈R Zq∗ , gdzie q = |G1 |. Następnie upubliczniane jest P0 ∈ G1 ,
U = rP0 , Ppub = αP0 . Dla każdego podmiotu obliczany jest jego prywatny klucz DSi = αQSi .
Dla każdego zasobu jest generowana publiczna funkcja:
FDKt = DKt ⊕


Y

Sj ma dostęp do t


(x ⊕ H2 (gSr j ))
gSj = ê(QSj , Ppub )

Obliczenie klucza DKt odbywa się następująco:
DKt = FDKt (H2 (ê(DSi , U )))
Wystarczy bowiem, że tylko jedno z wyrażeń x ⊕ H2 (gSr j ) się wyzeruje, co spowoduje wyzerowanie całego iloczynu a w konsekwencji:
FDKt (H2 (ê(DSi , U ))) = DKt ⊕ 0 = DKt
40
3.6.4. Schemat z pracy Mackinnon et al.
W tym systemie [McKin85] zakładamy, że każdy podmiot jest elementem DAGu, który posiada element największy (czyli istnieje pewien u0 taki, że dla każdego ui zachodzi ui ¬ u0 )
Na początku, nadrzędny podmiot u0 wyznacza każdemu podmiotowi ui unikalną liczbę pierwszą pi (znaną tylko u0 ). Następnie upublicznia dla każdego podmiotu liczbę ti ∈ N o własności
tj |ti wtw gdy ui ¬ uj . Dokładniej:
Y
ti =
pj
uj 6¬ui
Ostatecznie, u0 generuje pewne K0 oraz duże liczby pierwsze p, q. Następnie upublicznia
M = pq oraz przydziela odgórnie każdemu ui z pozostałych podmiotów odgórnie klucze
prywatne postaci
Ki = K0ti
(mod M )
Załóżmy że ui ¬ uj . Podmiot uj może obliczyć klucz ui w następujący sposób:
t /tj
Ki = Kj i
(mod M )
Jak wynika z opisu, system ten opiera się na założeniu RSA (że nie istnieje wielomianowy
algorytm który rozłoży M na liczby pierwsze).
3.6.5. Porównanie
Dokonamy teraz porównania systemu zdefiniowanego w niniejszej pracy z wymienionymi
wcześniej systemami
Schemat trywialny
Zalety:
• Nie opiera się na żadnym założeniu typu RSA, DH
• Przy pomocy podziału sekretów można opisać dowolną strukturę hierarchiczną
Wady:
• Sumarycznie przechowywana liczba sekretów jest duża
• W praktyce wymaga zdefiniowania funkcji P(S) → {0, 1}∗ , która generowałaby użyteczne klucze
41
Schemat z pracy Atallah et al.
Zalety:
• Może definiować klucze dla dowolnego DAGu
• Jest dynamiczny: dodanie nowego wierzchołka nie wymaga przeliczenia istniejących
kluczy publicznych
• Jest modularny: dodanie nowego podmiotu jako dziecka innego podmiotu/podmiotów
nie wymaga interakcji z pozostałymi wierzchołkami
Wady:
• Przechowuje dodatkową informację publiczną dla krawędzi
• Obliczenie klucza potomka odbywa się w sposób iteracyjny
• Opiera się na założeniu PRF użytej funkcji
Schemat z pracy Liu et al.
Zalety:
• Może definiować klucze dla dowolnego DAGu
• Ma dużą elastyczność ze względu na widoczny podział na zasoby i podmioty.
Wady:
• Schemat jest częściowo dynamiczny: dodanie nowego podmiotu do istniejącego zasobu
wymaga stworzenia nowej funkcji FDKt .
• Schemat nie jest modularny.
• Obliczenie funkcji FDKt jest proporcjonalne do liczby podmiotów, które mają dostęp
do zasobu t.
• Opiera się na dwuliniowym założeniu Diffiego-Hellmana.
Schemat z pracy [McKin85]
Zalety:
• Na każdy podmiot przypada średnio 1 klucz prywatny (stałej długości) i publiczny
klucz, którego długość rośnie wraz z liczbą podmiotów
• Może definiować klucze dla dowolnego DAGu, który posiada (unikalny) element największy.
Wady:
• Schemat ten opiera się na założeniu RSA.
• Schemat nie jest dynamiczny: dodanie lub usunięcie podmiotu wymusza przeliczenie
wszystkich kluczy w systemie.
42
• Schemat nie jest modularny: wymagany jest centralny nadzorca, który przydziela klucze.
Schemat opisany w niniejszej pracy
Zalety:
• Chociaż sumaryczna liczba kluczy jest duża, to na każdy podmiot przypada jeden klucz
ukryty(informacja ukryta).
• Klucz prywatny może zostać obliczony w czasie stałym względem odległości między
przodkiem obliczającym ten klucz a docelowym wierzchołkiem.
• Schemat jest dynamiczny: dodanie nowego podmiotu nie wymusza przeliczenia istniejących kluczy prywatnych i publicznych.
• Schemat jest modularny: podmiot, który chce dodać bezpośredniego podwładnego (“dziecko”), musi komunikować się jedynie z centrum obliczeniowym. Ilość centrów obliczeniowych może być dowolna.
Wady:
• Może definiować klucze jedynie dla drzew ukorzenionych
• Wymaga wygenerowania dużej ilości kluczy publicznych
• Opiera się na decyzyjnym dwuliniowym założeniu Diffiego-Hellmana
Podsumowując, ze względu na dużą liczbę kluczy publicznych system opisany w niniejszej
pracy nie nadaje się do zarządzania dużymi hierarchiami o strukturze innej niż drzewo. Jednak
jego modularność i dynamiczność może sprawić, że będzie w pewnych przypadkach uznany
za użyteczny.
43
Podsumowanie
Podsumujmy pracę, która została dokonana.
W niniejszej pracy wprowadziliśmy wpierw definicje i twierdzenia potrzebne do zrozumienia pracy. Zdefiniowaliśmy porządki, pojęcia związane z kryptografią, teorią grafów i teorią
grup. Szczegółowo opisaliśmy problem Diffiego-Hellmana oraz pokrewne problemy, oraz pokazaliśmy zależności między nimi. Opisaliśmy własności Iloczynu Weila i przypomnieliśmy
asymetryczny schemat szyfrowania Boneha-Franklina, który opiera się na tymże działaniu.
Następnie zdefiniowaliśmy ogólną strukturę uprawnień oraz opisaliśmy przykładowe rodzaje
takich struktur: progowe, hierarchiczne i mieszane.
Najważniejszy rozdział został przeznaczony na opis systemu generowania kluczy w hierarchii
opisanej przez drzewo. Został opisany proces generowania kluczy oraz sposób odzyskiwania
kluczy potomka. Udowodniliśmy także, że nie można obliczyć klucza prywatnego pewnego podmiotu z informacji będącej w posiadaniu podmiotów nie będących jego przodkami
bądź dowolnego klucza publicznego, przy uwzględnieniu, że dwuliniowe decyzyjne założenie
Diffiego-Hellmana jest spełnione.
W ostatnim rozdziale porównaliśmy ze sobą zaproponowany w pracy schemat z innymi, zwracając szczególną uwagę na aspekt ich funkcjonalności i wydajności obliczeniowej.
45
Dodatek A
Konstrukcja iloczynu Weila
W niniejszym dodatku przedstawimy szkic konstrukcji iloczynu Weila. Będziemy więc unikać
dowodów i zbędnych definicji. Przedstawione informacje powinny wystarczyć do zbudowania
intuicji na temat tego iloczynu.
W szczególności przyjmujemy, za znane podstawowe pojęcia takie jak:
• ciała skończone, oznaczane dalej przez Fq , gdzie q = pk dla pewnej liczby pierwszej p,
• ciała funkcji wymiernych, oznaczane dalej przez K(x, y),
• algebraiczne domknięcie ciała K, oznaczane dalej przez K.
A.1. Krzywe eliptyczne
Definicja A.1.1. Niech będzie dane ciało K o charakterystyce różniej od 2 i 3. Przez punkty
krzywej eliptycznej E nad ciałem K rozumiemy następujący zbiór:
E(K) = {O} ∪ {hx, yi : y 2 = x3 + Ax + B}
Formalnie, punkty krzywej eliptycznej definiuje się na przestrzeni rzutowej, ale wygodniej jest
dokonać dekompozycję tej przestrzeni na odpowiadającą jej przestrzeń afiniczną i “punkt w
nieskończoności” O.
Będziemy dalej zakładać, że krzywa będzie niezdegenerowalna co będzie się wyrażało warunkiem 4A3 + 27B 2 6= 0. Jest to równoważne temu, że wielomian x3 + Ax + B nie ma
wielokrotnych pierwiastków.
A.2. Dodawane punktów na krzywej
Definicja A.2.1. Dla każdych punktów P, Q ∈ E(K) na krzywej istnieje dokładnie jeden taki
punkt R ∈ E(K) o własnościach:
• Istnieje punkt S ∈ E(K) taki, że S, P , Q są współliniowe (leżą na pewnej prostej l)
47
• Wyżej wymieniony punkt S jest współliniowy wraz z punktami O oraz R.
Powyższe będziemy oznaczać jako P + Q = R.
Inaczej mówiąc, punkty na krzywej eliptycznej można “dodawać”
Rysunek A.1: Dodawanie punktów P i Q na krzywej eliptycznej.
Specjalnym przypadkiem jest P = Q. Wówczas przyjmujemy, że wcześniej wspomniana prosta
l jest styczna do P i przechodzi przez punkt S (który z kolei jest współliniowy z O i P + P =
2P = R). Styczność prostej l można wyrazić w sposób algebraiczny, dzięki czemu można
przenieść tę definicję na krzywe eliptyczne zdefiniowane na ciałach skończonych.
Twierdzenie A.2.2. hE(K), +i z punktem O jako elementem neutralnym jest grupą przemienną.
Dowód tego twierdzenia można znaleźć w [Wash03] na stronach 15, 20-32
A.3. Funkcje na krzywej eliptycznej
Definicja A.3.1. Mówimy że f jest funkcją na krzywej E(K), jeśli f ∈ K(x, y) (f jest
funkcją wymierną dwóch zmiennych x, y na ciele K) oraz f jest zdefiniowana przynajmniej
na jednym punkcie krzywej E(K).
A.4. Dywizory
Definicja A.4.1. Przez dywizor (ang. divisor) będziemy rozumieć sumę formalną postaci :
D=
X
aj [Pj ]
j∈J
gdzie Pj ∈ E(K), aj ∈ Z a J jest pewnym skończonym zbiorem.
Inaczej mówiąc można myśleć o D jako o funkcji fD : E(K) → Z o własności że fD (P ) 6= 0
dla skończonej liczby punktów P ∈ E(K). w ten sposób można powiedzieć, że dywizory
stanowią grupę z operacją D1 + D2 = D3 równoważną konstrukcji funkcji fD3 o własności
fD3 (P ) = fD1 (P ) + fD2 (P ).
48
Definicja A.4.2. Definiujemy stopień dywizora jako:
deg(D) =
X
aj
j∈J
oraz sumę dywizora jako:
sum(D) =
X
aj Pj
j∈J
Definicja A.4.3. Niech będzie dana funkcja f na krzywej E(K) i niech P będzie takim
punktem że f (P ) = 0 lub f (P ) = ∞. Wówczas istnieją takie funkcje uP i g że zachodzi
f = urP · g, uP (P ) = 0 i g(P ) 6= 0, ∞. Wówczas r nazywamy rzędem f w punkcie P i
oznaczamy
ordP (f ) = r
funkcję uP nazywamy unifikatorem. Rząd f w punkcie P nie jest zależny od wyboru unifikatora.
Przykładowym unifikatorem:
• dla P = O może być uP (x, y) =
x
y
• dla 2P = O może być uP (x, y) = y
• dla P = ha, bi nie spełniającego powyższych warunków może być uP (x, y) = x − a
Definicja A.4.4. Niech będzie dana funkcja wymierna f ∈ K(x, y). Wówczas dywizor funkcji
f definiujemy jako:
X
ordP (f )[P ]
div(f ) =
P ∈E(K)
Łatwo z tej definicji wysnuć następujacy wniosek:
Wniosek A.4.5. Niech będą dane funkcje wymierne f, g ∈ K(x, y). Wówczas div(f g) =
div(f ) + div(g).
i szczególne przypadki tegoż:
Wniosek A.4.6. Niech będzie dana funkcja wymierna f ∈ K(x, y) i stała c ∈ K. Wówczas
div(cf ) = div(f ).
Wniosek A.4.7. Niech będzie dana funkcja wymierna f ∈ K(x, y) i n ∈ N. Wówczas
div(f n ) = div(f · f · . . . · f ) = n · div(f ).
Twierdzenie A.4.8. Niech E(K) będzie krzywą eliptyczną, Niech D będzie dywizorem na
E(K) takim że deg(D) = 0. Wówczas istnieje funkcja f na E(K) taka że
div(f ) = D
wtedy i tylko wtedy gdy
sum(D) = O
49
Dowód powyższego twierdzenia można znaleźć w [Wash03] na stronach 326-328.
A.5. Punkty torsyjne
Definicja A.5.1. Niech będzie dana krzywa eliptyczna E nad ciałem K. Wówczas dla pewnego n, zbiór punktów torsyjnych definiowany jest jako:
E[n] = {P ∈ E(K) : nP = O}
Twierdzenie A.5.2. Niech będzie dana krzywa eliptyczna E nad ciałem K i niech n będzie
liczbą naturalną. Jeśli charakterystyka ciała K nie dzieli n, to:
E[n] ≡ Zn ⊕ Zn
Jeśli charakterystyka p dzieli n to mamy n = n0 pr i wówczas:
E[n] ≡ Zn0 ⊕ Zn0 lub E[n] ≡ Zn0 ⊕ Zn
Dowód tego twierdzenia można znaleźć w [Wash03] na stronach 75-82.
A.6. Iloczyn Weila
Zdefiniujemy teraz dwie pomocnicze funkcje f i g na krzywej eliptycznej E(K). Będziemy
przyjmować jeśli charakterystyka ciała K nie dzieli n, a więc na mocy A.5.2 zachodzi E[n] ≡
Zn ⊕ Zn .
Niech T ∈ E[n] i T 0 takie że nT 0 = T . Wówczas f jest taką funkcją, że
div(f ) = n[T ] − n[O]
Zaś g taką funkcją, że
div(g) =
([T 0 + R] − [R])
X
R∈E[n]
Obie funkcje istnieją na mocy twierdzenia A.4.8 i faktu że sum(div(f )) = sum(div(g)) = O
(ta druga równość wynika z faktu, że wyrażenia R się anihilują, zaś n2 T 0 = nT = O)
Zdefiniujmy funkcję f ◦ n jako (f ◦ n)(P ) = f (nP ). Wówczas:
div(f ◦ n) = n(
X
[T 0 + R]) − n(
R∈E[n]
X
[R]) = div(g n )
R∈E[n]
Korzystając z tego faktu, mamy że c · (f ◦ n) = g n , gdzie c jest pewną stałą. Możemy ustalić
takie f i g, że c = 1.
Przyjmijmy dalej, że P = T + R gdzie R ∈ E[n]. Połóżmy także S ∈ E[n]:
g(P + S)n = f (n(P + S)) = f (nP ) = g(P )n
50
Iloczyn Weila to funkcja E[n] × E[n] → µn , gdzie µn to pierwiastki n-tego stopnia z 1, tj.
µn = {x ∈ K : xn = 1}.
Iloczyn ten definiujemy jako:
en (S, T ) =
g(P + S)
g(P )
Definicja ta nie zależy od wyboru P (czyli wyboru R ∈ E[n]).
A.7. Konstrukcja iloczynu dwuliniowego
Należy zwrócić uwagę że z powyższej definicji iloczynu Weila wynika, że
∀T ∈ E[n]
en (T, T ) = 1
Co niestety uniemożliwia zastosowanie tego iloczynu wprost jako iloczynu dwuliniowego.
Rozważmy więc krzywą eliptyczną E(Fp ) nad ciałem skończonym Fp , gdzie p jest liczbą
pierwszą o własności p ≡ 2 (mod 3):
E : y 2 = x3 + 1
(A.1)
Niech ω ∈ Fp2 będzie nietrywialnym pierwiastkiem trzeciego stopnia z 1, tj. ω 3 = 1, ω 6= 1.
ω 6∈ Fp , gdyż |F∗p | = p − 1 ≡ 1 (mod 3)
Wówczas niech β : E(Fp2 ) → E(Fp2 ) będzie taką funkcją, że:
β(x, y) = hωx, yi
β(O) = O
Można zauważyć, że dla krzywej zdefiniowanej w A.1 funkcja β jest automorfizmem tej krzywej (przekształca krzywą na samą siebie).
Ostatecznie iloczyn dwuliniowy zadany jest dla 3 - n następującym wzorem:
ê(P1 , P2 ) = en (P1 , β(P2 ))
51
Bibliografia
[Ata09] Mikhail J. Atallah, Marina Blanton, Nelly Fazio, Keith B. Frikken Dynamic and
Efficient Key Management for Access Hierarchies, ACM Transactions on Information
and System Security, Vol. 12, No. 3, Article 18, Pub. date: January 2009.
[Bon03] Dan Boneh, Matthew Franklin Identity-Based Encryption from the Weil Pairing,
SIAM J. of Computing, Vol. 32, No. 3, pp. 586-615, 2003
[FIPS01] Announcing the Advanced Encryption Standard (AES) Federal Information Processing Standards Publication 197. United States National Institute of Standards and
Technology (NIST). November 26, 2001.
[Liu11] Chia-Hui Liu, Yu-Fang Chung, Tzer-Shyong Chen, Sheng-De Wang, An Id-based Access Control In A Hierarchical Key management For Mobile Agent, International Journal
of Innovative Computing, Information and Control Volume 7, Number 3, March 2011
[McKin85] Stephen J. MacKinnon, Peter D. Taylor, Henk Meijer, Selim G. Akl An Optimal Algorithm for assigning cryptographic keys to control access in a Hierarchy, IEEE
Transactions on Computers, vol C-34, no. 9 (1985)
[Sha79] Adi Shamir How to share a secret, Communications of the ACM, Volume 22 Issue
11, Nov. 1979, 612 - 613
[Sil09] Joseph H Silverman The Arithmetic of Elliptic Curves, 2nd Edition, Springer (2009)
[Sztencel04] Jacek Jakubowski, Rafal Sztencel, Wstep do teorii prawdopodobienstwa,
SCRIPT, Warszawa 2004
[Wash03] Lawrence C. Washington Elliptic curves. Number theory and Cryptography, Chapman & Hall/CRC(2003)
53

Podobne dokumenty