Kryptografia — listy nr 1, nr 2, nr 3, nr 4, nr 5, nr 6, nr 7 i nr 8
Na tej stronie znajduje się osiem list zadań: lista nr 1 poświęcona schematom identyfikacji, lista nr 2 poświęcona podpisom inspirowanym podpisem Schnorra, lista nr 3 poświęcona podpisom BLS i błędnym definicjom funkcji haszujących, lista nr 4 poświęcona podpisom RSA Full Domain Hash i roli funkcji haszującej, lista nr 5 poświęcona anonimowości i podpisom pierścieniowym Herranza-Sáeza opartym na podpisie Schnorra, lista nr 6 poświęcona anonimowym interaktywnym systemom identyfikacji, lista nr 7 poświęcona protokołom AKE oraz lista nr 8 poświęcona analizie złożoności poprawnych protokołów kryptograficznych.
Zasady zaliczenia ćwiczeń
Poniższe zasady określają sposób pracy na ćwiczeniach oraz sposób wyliczania oceny z ćwiczeń.
Na ćwiczeniach będą rozwiązywane i omawiane zadania z list opublikowanych na stronie wykładowcy.
Po zakończeniu omawiania na ćwiczeniach danej listy zadań prowadząca ćwiczenia będzie przydzielała wybrane zadania konkretnym osobom do realizacji pisemnej i oddania w formacie PDF poprzez moduł zadań w MS Teams. Na realizację studenci będą mieli tydzień.
Za każde z przydzielonych zadań można otrzymać od 0 do 5 punktów. Nadesłanie rozwiązania po terminie będzie skutkowało obniżeniem liczby uzyskanych punktów o 1 za każdy rozpoczęty tydzień spóźnienia.
W trakcie semestru zostaną ponadto przeprowadzone dwa zapowiedziane sprawdziany. Za każdy z nich można otrzymać od 0 do 5 punktów. Jeżeli studentka lub student nie może uczestniczyć w sprawdzianie, może nadrobić punktację aktywnością w trakcie zajęć.
Podstawą do obliczenia oceny z ćwiczeń jest średnia punktów C, liczona zgodnie ze wzorem C = 0,4 · Z + 0,6 · S, gdzie Z oznacza średnią punktów z przydzielonych zadań, a S oznacza średnią punktów ze sprawdzianów.
Średnia C może zostać podwyższona przez prowadzącą ćwiczenia w zależności od aktywności studentki lub studenta na ćwiczeniach. Każde poprawnie rozwiązane przy tablicy zadanie podnosi średnią C o 0,2. Z własnych notatek dotyczących rozwiązań zadań z listy można korzystać przy tablicy tylko w wyjątkowych sytuacjach i za zgodą prowadzącej ćwiczenia.
Średnia C po uwzględnieniu aktywności jest zaokrąglana do najbliższej oceny, z wyjątkiem wartości 2,5, którą zaokrągla się do 2.
Demonstrator WASM - klasyczny Schnorr
Punkt odniesienia: klasyczny Schnorr w zapisie addytywnym na krzywych eliptycznych. Ta karta pokazuje przebieg poprawnego protokołu, z którym należy porównywać kolejne konstrukcje.
Ten sam punkt odniesienia w grupie multiplikatywnej modulo . Tu również obowiązuje wzór , , i test .
Możesz ustawić bardzo małe parametry, np. 23 / 11 / 2, albo większe. Aktywuj tylko takie, dla których oraz .
Demonstrator BigInt jest gotowy.
1. Parametry
Generator i rząd podgrupy. Parametry możesz wpisać ręcznie i zatwierdzić przyciskiem albo klawiszem Enter. Jeżeli nie znasz poprawnego generatora dla wpisanych p i q, użyj przycisku wyznaczania g.
p (moduł)
q (rząd podgrupy)
g (generator)
Aktywne p, q, g1019, 509, 3
2. Klucze
Losowanie sekretu i klucza publicznego.
sk = a—
pk = A = g^a mod p—
3. Zobowiązanie
Losowanie wartości efemerycznej.
x—
X = g^x mod p—
4. Wyzwanie
Wyzwanie w zbiorze Zq.
c—
5. Odpowiedź
Obliczenie odpowiedzi modulo q.
s = [x + ac] mod q—
6. Weryfikacja
Porównanie obu stron równania.
L = g^s mod p—
R = X · A^c mod p—
Wynik—
Test wydajności nie został jeszcze uruchomiony.
Lista nr 1 — wprowadzenie
We wszystkich zadaniach zakładamy, że jest grupą cykliczną rzędu , a sekret Dowodzącego ma postać . Klucz publiczny ma postać:
Cel analizy każdego schematu
Sprawdzić poprawność schematu dla uczciwego Dowodzącego.
Ocenić, czy schemat jest bezpieczny jako schemat identyfikacji.
Jeśli nie jest bezpieczny, podać atak podszycia się.
Oddzielić pojęcia: poprawność, rzetelność i odporność na fałszerstwo.
Sam fakt, że równanie weryfikacyjne jest algebraicznie poprawne, nie oznacza jeszcze bezpieczeństwa. Kluczowym sygnałem błędu jest możliwość dopasowania odpowiedzi po poznaniu wyzwania.
Lista nr 1 — zadanie 1: analiza pierwszego schematu
Schemat 1
1
Dowodzący losuje , oblicza i wysyła .
2
Weryfikator losuje i wysyła .
3
Dowodzący odsyła .
4
Weryfikator akceptuje wtedy i tylko wtedy, gdy .
Sprawdź, czy uczciwy Dowodzący, znający , zawsze przechodzi weryfikację.
Oceń, czy atakujący nieznający może się skutecznie podszyć.
Jeśli schemat jest niebezpieczny, podaj jawny sposób skonstruowania akceptowalnej transkrypcji.
Wyjaśnij, czy atakujący musi znać logarytm dyskretny klucza publicznego .
Lista nr 1 — zadanie 2: analiza drugiego schematu
Schemat 2
1
Dowodzący losuje , oblicza i wysyła .
2
Weryfikator wysyła wyzwanie .
3
Dowodzący odsyła .
4
Weryfikator sprawdza, czy .
Udowodnij poprawność działania dla uczciwego Dowodzącego.
Zbadaj, czy odpowiedź ma właściwą postać z punktu widzenia bezpieczeństwa identyfikacji.
Spróbuj zaprojektować atakującego, który po poznaniu dobiera lub tak, aby przejść weryfikację.
Oceń, czy wyzwanie rzeczywiście utrudnia podszycie się.
Lista nr 1 — zadanie 3: analiza trzeciego schematu
Schemat 3
1
Dowodzący losuje , oblicza i wysyła .
2
Weryfikator wysyła wyzwanie .
3
Dowodzący odsyła oraz .
4
Weryfikator akceptuje, gdy .
Wykaż poprawność dla uczciwego Dowodzącego.
Zauważ, że w warunku akceptacji nie występuje bezpośrednio ani , ani . Czy to jest sygnał ostrzegawczy? Uzasadnij.
Sprawdź, czy osoba nieznająca może dobrać i tak, by przejść test.
Jeśli tak, zapisz pełny atak krok po kroku.
Wyjaśnij, czy pełni tu rolę dowodu wiedzy, czy raczej dodatkowej zmiennej łatwej do sfałszowania.
Lista nr 1 — zadanie 4: analiza czwartego schematu
Schemat 4
1
Dowodzący wysyła .
2
Weryfikator wysyła .
3
Dowodzący odsyła oraz .
4
Weryfikator sprawdza, czy .
Udowodnij poprawność schematu dla uczciwego Dowodzącego.
Zastanów się, czy równanie weryfikacyjne można spełnić bez znajomości .
Czy atakujący może najpierw wybrać dowolne , a potem wyznaczyć tak, aby przejść weryfikację?
Jeśli tak, pokaż pełny atak i oceń, czy schemat rzeczywiście wiąże odpowiedź z sekretem.
Porównaj ten schemat z poprzednim — czy problem jest podobny, czy inny?
Lista nr 1 — zadanie 5: analiza piątego schematu
Schemat 5
1
Dowodzący wysyła .
2
Weryfikator wysyła .
3
Dowodzący odsyła
4
Weryfikator akceptuje, gdy
Rozwiń algebraicznie obie strony warunku akceptacji i sprawdź poprawność.
Ustal, czy zależność weryfikacyjna naprawdę wymusza znajomość sekretu .
Sprawdź, czy atakujący może arbitralnie wybrać część odpowiedzi, a resztę dopasować.
Oceń, czy większa złożoność wzorów poprawia bezpieczeństwo, czy tylko zaciemnia obraz.
Sformułuj ogólną intuicję: dlaczego bardziej skomplikowane równanie nie musi oznaczać bezpieczniejszego protokołu.
Lista nr 1 — zadanie porównawcze
Dla wszystkich pięciu schematów sporządź tabelę porównawczą i uzupełnij ją po przeprowadzeniu analizy.
Nr schematu
Czy jest poprawny?
Czy jest bezpieczny?
Typ ataku / obserwacja
Główny błąd konstrukcyjny
1
2
3
4
5
Wskaż, które schematy są trywialnie fałszowalne.
Wskaż, w których przypadkach odpowiedź można skonstruować bez znajomości sekretu.
Sformułuj jedną wspólną zasadę projektowania poprawnych schematów identyfikacji typu sigma.
Lista nr 1 — punkt odniesienia: klasyczny Schnorr
Punkt odniesienia dla całej listy: klasyczny schemat identyfikacji Schnorra.
Schemat Schnorra
1
Dowodzący wysyła .
2
Weryfikator wysyła .
3
Dowodzący odsyła .
4
Weryfikator sprawdza, czy .
Wyjaśnij, czym strukturalnie Schnorr różni się od analizowanych konstrukcji.
Pokaż, dlaczego odpowiedź w Schnorrze nie daje się łatwo sfałszować po poznaniu wyzwania.
Wskaż, które z analizowanych schematów przypominają Schnorra tylko powierzchownie.
Zaproponuj poprawkę do jednego z błędnych schematów tak, aby zbliżyć go do poprawnego protokołu identyfikacji.
Lista nr 2 — podpisy
Druga lista dotyczy schematów podpisu inspirowanych konstrukcjami schnorrowymi. W każdym zadaniu należy ocenić poprawność algebraiczną, poziom bezpieczeństwa oraz wskazać możliwie najsilniejszy atak, jeżeli schemat nie jest bezpieczny.
Zakładamy grupę cykliczną rzędu , sekret , klucz publiczny , wiadomość oraz podpis . Wszystkie działania skalarne traktujemy jako wykonywane w . W zadaniu 4 zapis interpretujemy jako operację XOR po wcześniejszym zakodowaniu i do bitstringów tej samej długości. Następnie trzeba ocenić, czy wynik takiej operacji da się sensownie odwzorować do i użyć jako skalaru .
Lista nr 2 — punkt odniesienia: poprawny podpis Schnorra
Gdy w tej liście odwołujemy się do standardowego podpisu Schnorra, mamy na myśli wariant, w którym wyzwanie jest związane zarówno z wiadomością, jak i z zobowiązaniem .
Poprawny podpis Schnorra
1
Podpisujący losuje i oblicza .
2
Wyznacza .
3
Oblicza i zwraca .
4
Weryfikator wyznacza i akceptuje wtedy i tylko wtedy, gdy .
Traktuj ten wariant jako kryptograficzny punkt odniesienia dla całej listy nr 2.
Przy analizie kolejnych zadań zawsze sprawdzaj, czy zachowano poprawne związanie wiadomości z przez .
Zwracaj uwagę, czy równanie weryfikacyjne rzeczywiście wiąże podpis z kluczem publicznym .
Demonstrator WASM — poprawny podpis Schnorra
Demonstrator podpisu Schnorra na krzywej eliptycznej w zapisie addytywnym. Punkt odniesienia ma postać , , , oraz warunek .
Ładowanie biblioteki WASM MCL...
1. Parametry
Krzywa i generator grupy.
KrzywaBLS12_381
Generator Q—
2. Klucze
Losowanie sekretu i klucza publicznego.
sk = a—
pk = A = aQ—
3. Wiadomość
Treść podpisywanej wiadomości.
m
Aktywna wiadomośćTo jest wiadomość testowa.
4. Losowanie r
Wartość efemeryczna i zobowiązanie.
r—
R = rQ—
5. Skrót i podpis
Obliczenie i .
h = H(m, R)—
s = [r + ah] mod q—
6. Weryfikacja
Sprawdzenie podpisu.
L = sQ—
P = R + hA—
Wynik—
Test wydajności nie został jeszcze uruchomiony.
Demonstrator BigInt — poprawny podpis Schnorra w
Ta wersja działa w grupie multiplikatywnej modulo . Podpis ma postać , , , i test .
Demonstrator podpisu BigInt jest gotowy.
1. Parametry
Możesz użyć małych lub większych parametrów podgrupy Schnorra.
p (moduł)
q (rząd podgrupy)
g (generator)
Aktywne p, q, gp=1019, q=509, g=3
2. Klucze
Losowanie sekretu i klucza publicznego.
sk = a—
pk = A = g^a mod p—
3. Wiadomość
Treść podpisywanej wiadomości.
m
Aktywna wiadomośćTo jest wiadomość testowa.
4. Losowanie r
Wartość efemeryczna i zobowiązanie.
r—
R = g^r mod p—
5. Skrót i podpis
Obliczenie i .
h = H(m, R) mod q—
s = [r + ah] mod q—
6. Weryfikacja
Sprawdzenie podpisu.
L = g^s mod p—
P = R · A^h mod p—
Wynik—
Test wydajności nie został jeszcze uruchomiony.
Lista nr 2 — zadanie 1: wariant z
Schemat podpisu 1
1
Podpisujący losuje , oblicza .
2
Wyznacza .
3
Oblicza i zwraca podpis .
4
Weryfikator wyznacza i akceptuje wtedy i tylko wtedy, gdy .
Wykaż poprawność schematu dla uczciwego Podpisującego.
Porównaj ten wariant z poprawnym podpisem Schnorra z punktu odniesienia i oceń, co zmienia pominięcie w wejściu funkcji skrótu.
Zbadaj, czy ten wariant zachowuje bezpieczeństwo podpisu Schnorra, czy też otwiera drogę do fałszerstwa.
Wskaż rolę losowej wartości i wyjaśnij, dlaczego nie wolno jej powtarzać.
Lista nr 2 — zadanie 2:
Schemat podpisu 2
1
Podpisujący losuje , oblicza .
2
Wyznacza .
3
Oblicza i zwraca .
4
Weryfikator wyznacza i sprawdza, czy .
Najpierw oceń, czy zapis jest dobrze określony bez dodatkowego kodowania.
Jeśli przyjmiesz naturalne kodowanie do , zbadaj poprawność i bezpieczeństwo schematu.
Sprawdź, czy podpis można sfałszować przez dobranie lub po ustaleniu wiadomości.
Porównaj ten pomysł z poprawnym użyciem w podpisie Schnorra.
Lista nr 2 — zadanie 3:
Schemat podpisu 3
1
Podpisujący losuje , oblicza .
2
Wyznacza .
3
Oblicza i zwraca .
4
Weryfikator wyznacza i sprawdza warunek .
Wyjaśnij, w jakiej domenie iloczyn miałby być liczony.
Sprawdź, czy takie związanie wiadomości z daje odporność na fałszerstwo, czy tylko pozór związania.
Zbadaj, czy można dobrać podpis dla wybranej wiadomości bez znajomości sekretu .
Porównaj ten schemat z zadaniem 2: czy problem jest zasadniczo ten sam, czy inny?
Lista nr 2 — zadanie 4: (XOR)
Schemat podpisu 4
1
Podpisujący losuje , oblicza .
2
Wyznacza , gdzie oznacza bitowy XOR po odpowiednim zakodowaniu danych.
3
Oblicza i zwraca .
4
Weryfikator wyznacza w tej samej interpretacji i akceptuje, gdy .
Podpowiedź interpretacyjna: można przyjąć, że najpierw kodujemy i jako bitstringi tej samej długości, następnie liczymy ich bitowy XOR, a otrzymany wynik interpretujemy jako liczbę całkowitą i redukujemy modulo , aby dostać skalar . To jest wygodna formalizacja do analizy, a nie standardowa konstrukcja podpisu Schnorra.
Załóż, że oznacza bitowy XOR. Oceń, jakie kodowanie wiadomości i zobowiązania byłoby potrzebne, aby taki zapis był w ogóle dobrze określony.
Wyjaśnij, czy wynik XOR można potraktować jako sensowny odpowiednik wyzwania używanego w podpisie Schnorra.
Zbadaj, czy przy naturalnych interpretacjach XOR i mapowania do możliwe jest skuteczne fałszerstwo podpisu.
Sformułuj ogólny wniosek: dlaczego prosta operacja XOR na i nie zastępuje bezpiecznej funkcji skrótu .
Lista nr 2 — zadanie 5: podpis z dodatkową wartością
Schemat podpisu 5
1
Podpisujący losuje , oblicza oraz .
2
Wyznacza .
3
Oblicza i zwraca podpis .
4
Weryfikator wyznacza i akceptuje, gdy .
Wykaż poprawność równania weryfikacyjnego dla uczciwego Podpisującego.
Zauważ, że weryfikacja nie korzysta bezpośrednio z klucza publicznego . Oceń znaczenie tego faktu.
Sprawdź, czy atakujący może dobrać i tak, by przejść weryfikację bez znajomości .
Wyjaśnij, czy wartość ma tu realny wpływ na bezpieczeństwo podpisu, czy tylko wpływa na obliczenie .
Lista nr 2 — zadanie 6: podpis z hashem zależnym od
Schemat podpisu 6
1
Podpisujący losuje , oblicza oraz .
2
Wyznacza .
3
Oblicza i zwraca .
4
Weryfikator wyznacza i akceptuje, gdy .
Sprawdź poprawność schematu dla uczciwego Podpisującego.
Oceń, czy dodanie do wejścia funkcji skrótu naprawia zasadniczy problem z poprzedniego schematu.
Zbadaj, czy atakujący może dobrać podpis po wyborze , i bez znajomości sekretu.
Porównaj ten schemat z zadaniem 5 i wskaż, czy zmiana jest tylko kosmetyczna, czy rzeczywiście istotna.
Lista nr 2 — tabela porównawcza
Po przeanalizowaniu wszystkich schematów uzupełnij tabelę porównawczą dla listy nr 2.
Nr schematu
Czy jest poprawny?
Czy jest bezpieczny?
Typ ataku / obserwacja
Główny błąd konstrukcyjny
1
2
3
4
5
6
Wskaż, które schematy zachowują zasadniczą strukturę podpisu Schnorra, a które jedynie powierzchownie go przypominają.
Wskaż, w których przypadkach problemem jest zły sposób definiowania , a w których brak związania podpisu z kluczem publicznym.
Sformułuj jedną wspólną zasadę projektowania poprawnych podpisów Schnorra i schematów schnorrowych.
Lista nr 3 — podpisy BLS
Trzecia lista dotyczy podpisów BLS. Celem jest zrozumienie, dlaczego w tym schemacie poprawna definicja funkcji jako bezpiecznej funkcji hash-to-curve jest absolutnie kluczowa.
Zakładamy grupy cykliczne , i rzędu pierwszego oraz parowanie dwuliniowe . Niech i będą publicznymi generatorami, sekretem, a kluczem publicznym. Jeżeli w zadaniu pojawiają się zapisy typu , rozumiemy przez to , gdzie jest jawnym publicznym kodowaniem wiadomości do skalaru.
Lista nr 3 — punkt odniesienia: poprawny podpis BLS
W poprawnym podpisie BLS wiadomość jest mapowana do punktu grupy przez bezpieczną funkcję hash-to-curve, a nie przez prostą publiczną formułę algebraiczną.
Poprawny podpis BLS
1
Podpisujący wyznacza , gdzie jest poprawną funkcją hash-to-curve.
2
Oblicza podpis .
3
Weryfikator akceptuje wtedy i tylko wtedy, gdy .
Traktuj ten wariant jako kryptograficzny punkt odniesienia dla całej listy nr 3.
Zwracaj uwagę, czy funkcja naprawdę zachowuje się jak bezpieczne mapowanie wiadomości do punktu grupy.
W każdym kolejnym zadaniu sprawdzaj, czy z podpisu na jednej wiadomości można wyprowadzić podpis na innej wiadomości bez znajomości sekretu .
Demonstrator WASM — poprawny podpis BLS
Demonstrator pokazuje klasyczny wariant BLS z hashowaniem wiadomości do i kluczem publicznym w . Podpis ma postać , , , a weryfikacja sprawdza warunek .
Ładowanie biblioteki WASM MCL...
1. Parametry
Krzywa i generatory grup.
KrzywaBLS12_381
Generator P w G1—
Generator Q w G2—
2. Klucze
Losowanie sekretu i klucza publicznego.
sk = a—
pk = A = aQ—
3. Wiadomość
Treść podpisywanej wiadomości.
m
Aktywna wiadomośćTo jest wiadomość BLS.
4. Hash-to-Curve
Mapowanie wiadomości do punktu grupy.
M = H(m)—
5. Podpis
Obliczenie .
σ—
6. Weryfikacja
Porównanie obu stron równania parowań.
L = e(σ, Q)—
P = e(H(m), A)—
Wynik—
Test wydajności nie został jeszcze uruchomiony.
Lista nr 3 — zadanie 1: stała funkcja
Schemat BLS 1
1
Dla każdej wiadomości przyjmujemy , gdzie jest stałym publicznym punktem.
2
Podpisujący oblicza .
3
Weryfikator sprawdza, czy .
Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
Wyjaśnij, dlaczego podpis na jednej wiadomości staje się automatycznie podpisem na każdej innej wiadomości.
Opisz możliwie najsilniejszy atak fałszerstwa na ten schemat.
Porównaj ten błąd z sytuacją, w której funkcja skrótu w podpisie Schnorra nie zależy w istotny sposób od wiadomości.
Lista nr 3 — zadanie 2: liniowa funkcja
Schemat BLS 2
1
Dla wiadomości wyznaczamy publiczny skalar i przyjmujemy .
2
Podpisujący oblicza .
3
Weryfikator sprawdza, czy .
Wykaż poprawność schematu dla uczciwego Podpisującego.
Załóż, że atakujący ma podpis na wiadomość z . Pokaż, jak skonstruować podpis na wiadomość przez odpowiednie przeskalowanie .
Wyjaśnij, dlaczego publiczna liniowość funkcji jest tu wadą.
Oceń, co dzieje się w przypadku i czy to dodatkowo pogarsza bezpieczeństwo.
Lista nr 3 — zadanie 3: zbyt krótki skrót
Schemat BLS 3
1
Niech oznacza bardzo krótki publiczny skrót wiadomości, na przykład 16-bitową wartość uzyskaną z obcięcia SHA-256.
2
Przyjmujemy .
3
Podpisujący oblicza podpis , a Weryfikator sprawdza .
Wyjaśnij, dlaczego tak zdefiniowana funkcja prowadzi do łatwych kolizji wiadomości.
Pokaż, jak wykorzystać znalezienie dwóch wiadomości z do sfałszowania podpisu.
Oceń, jak rośnie skuteczność ataku wraz ze skracaniem wartości .
Porównaj ten błąd z poprawnym wymaganiem, aby zachowywała się jak bezpieczna funkcja hash-to-curve o dużej odporności na kolizje.
Lista nr 3 — zadanie 4: homomorficzna funkcja
Schemat BLS 4
1
Niech będzie publicznym kodowaniem wiadomości do skalarów, spełniającym własność modulo .
2
Definiujemy .
3
Podpisujący oblicza podpis .
4
Weryfikator sprawdza, czy .
Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
Załóż, że atakujący zna podpisy pod oraz pod . Pokaż, że suma jest poprawnym podpisem pod wiadomością .
Wyjaśnij, dlaczego publiczna homomorficzność funkcji umożliwia składanie podpisów bez znajomości sekretu .
Porównaj ten atak z zadaniem 2: wskaż, co jest wspólnym źródłem słabości obu konstrukcji.
Lista nr 3 — zadanie 5: łatwy logarytm dyskretny w obrazie
Schemat BLS 5
1
Zakładamy, że dla każdej wiadomości funkcja zwraca punkt , dla którego można efektywnie wyznaczyć skalar spełniający .
2
Podpisujący oblicza podpis .
3
Weryfikator sprawdza standardowy warunek BLS: .
Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
Załóż, że atakujący zna jeden poprawny podpis pod wiadomością i potrafi obliczyć takie, że , przy czym . Pokaż, jak odzyskać punkt .
Dla dowolnej nowej wiadomości oblicz z warunku i skonstruuj poprawny podpis pod bez znajomości sekretu .
Wyjaśnij, dlaczego nie trzeba łamać problemu logarytmu dyskretnego w całej grupie ; wystarczy, że obraz funkcji wpada w słaby podzbiór punktów.
Lista nr 3 — tabela porównawcza
Po przeanalizowaniu wszystkich schematów BLS uzupełnij tabelę porównawczą dla listy nr 3.
Nr schematu
Czy jest poprawny?
Czy jest bezpieczny?
Typ ataku / obserwacja
Główny błąd konstrukcyjny
1
2
3
4
5
Wskaż, które schematy są poprawne algebraicznie, ale całkowicie nieodporne na fałszerstwo.
Odróżnij cztery typy błędów: funkcję stałą, publiczną liniowość lub homomorficzność funkcji , zbyt małą odporność na kolizje oraz łatwy logarytm dyskretny w obrazie funkcji .
Sformułuj jedną wspólną zasadę: jakie własności musi mieć funkcja hash-to-curve, aby podpis BLS mógł być bezpieczny.
Lista nr 4 — podpisy RSA Full Domain Hash
Czwarta lista dotyczy podpisów RSA-FDH. Celem jest zrozumienie, że w tym schemacie funkcja nie może zachowywać prostych zależności algebraicznych między wiadomościami, ponieważ prowadzi to do fałszerstw.
Zakładamy moduł RSA , wykładnik publiczny oraz wykładnik prywatny spełniające . Dla czytelności przyjmujemy, że funkcja mapuje wiadomości do zbioru odwracalnych reszt modulo i że weryfikacja sprawdza warunek . Jeżeli w zadaniu pojawia się zapis , rozumiemy przez to jawne publiczne kodowanie wiadomości do elementu odwracalnego modulo .
Lista nr 4 — punkt odniesienia: poprawny podpis RSA-FDH
W poprawnym podpisie RSA-FDH najpierw haszujemy wiadomość do pełnej dziedziny modulo , a dopiero potem wykonujemy operację RSA. To właśnie funkcja ma zniszczyć proste zależności algebraiczne między wiadomościami.
Poprawny podpis RSA-FDH
1
Podpisujący oblicza wartość .
2
Wyznacza podpis .
3
Weryfikator akceptuje wtedy i tylko wtedy, gdy .
Traktuj ten wariant jako punkt odniesienia dla całej listy nr 4.
Zwracaj uwagę, czy funkcja rzeczywiście usuwa przewidywalne zależności algebraiczne między wiadomościami.
W kolejnych zadaniach sprawdzaj, czy z jednego lub z dwóch podpisów można skonstruować podpis pod nową wiadomością bez znajomości .
Lista nr 4 — zadanie 1: brak funkcji haszującej
Schemat RSA 1
1
Dla wiadomości obliczamy jej reprezentanta .
2
Podpisujący wyznacza podpis .
3
Weryfikator sprawdza, czy .
Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
Załóż, że atakujący zna podpisy pod wiadomością oraz pod wiadomością . Pokaż, że iloczyn jest poprawnym podpisem pod wiadomością spełniającą .
Wyjaśnij, dlaczego brak funkcji pozostawia publiczną strukturę multiplikatywną wiadomości i umożliwia fałszerstwo.
Porównaj ten błąd z poprawnym podpisem RSA-FDH.
Lista nr 4 — zadanie 2: słaba funkcja
Schemat RSA 2
1
Dla wiadomości obliczamy i definiujemy .
2
Podpisujący oblicza podpis .
3
Weryfikator sprawdza, czy .
Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
Załóż, że atakujący zna podpisy pod wiadomościami i . Pokaż, że iloczyn tych podpisów jest poprawnym podpisem pod wiadomością taką, że .
Wyjaśnij, dlaczego publiczna transformacja nie usuwa struktury multiplikatywnej, tylko ją zachowuje.
Porównaj ten błąd z zadaniem 1: wskaż, dlaczego taka funkcja nadal nie spełnia roli bezpiecznego haszowania.
Lista nr 4 — zadanie 3: słaba funkcja
Schemat RSA 3
1
Ustalamy publiczny element . Dla wiadomości obliczamy i definiujemy .
2
Podpisujący oblicza podpis .
3
Weryfikator sprawdza, czy .
Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
Przyjmij, że przestrzeń wiadomości jest utożsamiona z liczbami całkowitymi z ustalonego zakresu. Pokaż, że z podpisów pod wiadomościami oraz można skonstruować podpis pod wiadomością spełniającą .
Wyjaśnij, dlaczego homomorfizm w wykładniku, czyli zależność modulo , wystarcza do fałszerstwa.
Porównaj to zadanie z zadaniem 2: wskaż, że w obu przypadkach funkcja zachowuje publiczną zależność algebraiczną między wiadomościami.
Lista nr 4 — tabela porównawcza
Po przeanalizowaniu wszystkich schematów RSA uzupełnij tabelę porównawczą dla listy nr 4.
Nr schematu
Czy jest poprawny?
Czy jest bezpieczny?
Typ ataku / obserwacja
Główny błąd konstrukcyjny
1
2
3
Wskaż, które konstrukcje są poprawne algebraicznie, ale nieodporne na fałszerstwo.
Odróżnij trzy źródła słabości: całkowity brak haszowania, zachowanie struktury multiplikatywnej oraz zachowanie struktury addytywnej w wykładniku.
Sformułuj jedną wspólną zasadę: jakie własności powinna mieć funkcja w podpisie RSA-FDH, aby nie dało się z podpisów wyprowadzać kolejnych podpisów metodą czysto algebraiczną.
Lista nr 5 — anonimowość i podpisy pierścieniowe Herranza-Sáeza
Piąta lista dotyczy anonimowości w podpisach pierścieniowych. Punktem odniesienia jest tu schemat Javiera Herranza i Germána Sáeza oparty na podpisie Schnorra.
Lista opiera się na pracy Forking Lemmas in the Ring Signatures' Scenario, J. Herranz, G. Sáez, IACR ePrint 2003/067, opublikowanej także na konferencji INDOCRYPT 2003. Punkt odniesienia poniżej odpowiada poprawnej konstrukcji, natomiast dalsze zadania analizują celowo zmienione warianty dydaktyczne, które mają pokazać, co narusza anonimowość. Zakładamy liczby pierwsze i takie, że , generator podgrupy rzędu oraz funkcję . Publiczny klucz i-tego uczestnika oznaczamy przez , gdzie jest jego kluczem prywatnym. Indeks rzeczywistego Podpisującego oznaczamy przez . Małą literą oznaczamy końcowy skalar podpisu w równaniu weryfikacyjnym, natomiast symbolem oznaczamy cały podpis jako krotkę.
Lista nr 5 — punkt odniesienia: podpis pierścieniowy Herranza-Sáeza
W poprawnym wariancie każdy członek pierścienia wnosi własny składnik , a lokalne wyzwania mają postać . To właśnie ta struktura pozwala połączyć poprawność, anonimowość i bezpieczeństwo w modelu losowej wyroczni.
Podpis pierścieniowy Herranza-Sáeza
1
Niech będzie publicznym kluczem rzeczywistego Podpisującego. Dla każdego losuje on pomocniczy skalar i wyznacza .
2
Losuje niezależny skalar i oblicza .
3
Dla wszystkich definiuje i oblicza , a następnie zwraca podpis .
4
Weryfikator sprawdza dla wszystkich , że , oraz weryfikuje równanie .
Traktuj ten wariant jako punkt odniesienia dla całej listy nr 5.
Zwracaj uwagę, które elementy podpisu są losowane przez rzeczywistego Podpisującego, a które są wyznaczane tak, aby zamknąć równanie weryfikacyjne.
W kolejnych zadaniach odróżniaj poprawność, anonimowość i odporność na fałszerstwo: są to trzy różne własności.
Lista nr 5 — zadanie 1: poprawność i anonimowość bezwarunkowa
Schemat pierścieniowy 1
1
Rozważ poprawny podpis pierścieniowy wygenerowany zgodnie z powyższym algorytmem dla wiadomości .
2
Załóż, że pierścień składa się z publicznych kluczy oraz że wszystkie wartości są różne i różne od .
3
Interesuje nas prawdopodobieństwo, z jakim ten sam podpis mógł zostać wygenerowany przez dowolnego członka pierścienia.
Wykaż poprawność algebraiczną schematu.
Pokaż, że dla ustalonego poprawnego podpisu każdy członek pierścienia mógł go wygenerować z takim samym prawdopodobieństwem.
Wyjaśnij, dlaczego z tego wynika anonimowość bezwarunkowa w sensie pracy Herranza i Sáeza.
Porównaj tę własność z klasycznym podpisem Schnorra, który w ogóle nie ukrywa tożsamości Podpisującego.
Lista nr 5 — zadanie 2: deterministyczne składniki dla niepodpisujących
Schemat pierścieniowy 2
1
Rozważ modyfikację schematu, w której dla wszystkich nie losujemy pomocniczych skalarów , lecz definiujemy je deterministycznie jako , gdzie jest publiczną funkcją deterministyczną, na przykład funkcją haszującą mapującą dane wejście do wykładnika modulo .
2
Dla otrzymujemy zatem publicznie przewidywalne wartości , a jedynie jest nadal wyznaczane przez domknięcie równania weryfikacyjnego.
3
Interesuje nas to, czy taki wariant nadal chroni anonimowość rzeczywistego Podpisującego.
Wyjaśnij, dlaczego poprawność algebraiczna podpisu nadal może być zachowana.
Pokaż, że Weryfikator może samodzielnie odtworzyć wszystkie wartości i dla .
Wyjaśnij, dlaczego jedyny indeks, dla którego publikowane nie zgadza się z wartością przewidzianą przez funkcję , wskazuje rzeczywistego Podpisującego.
Wskaż, dlaczego publiczna deterministyczność składników niepodpisujących całkowicie niszczy anonimowość pierścienia.
Lista nr 5 — zadanie 3: pseudolosowość sterowana ziarnem znanym podpisującemu
Schemat pierścieniowy 3
1
Rozważ wariant, w którym dla wszystkich wartości są generowane pseudolosowo z ziarna znanego wyłącznie rzeczywistemu Podpisującemu, na przykład .
2
Dla mamy więc , natomiast jest nadal wyznaczane algebraicznie przez domknięcie równania i nie pochodzi z generatora .
3
Załóż, że po opublikowaniu podpisu rzeczywisty Podpisujący ujawnia ziarno albo wszystkie wygenerowane wartości dla .
Wyjaśnij, dlaczego przed ujawnieniem ziarna wariant może wyglądać na anonimowy dla obserwatora zewnętrznego.
Pokaż, że po ujawnieniu każdy może sprawdzić równania dla wszystkich .
Wyjaśnij, dlaczego brak takiego świadectwa dla jednego indeksu pozwala rzeczywistemu Podpisującemu przekonująco ujawnić własną tożsamość.
Oceń, czy taki wariant zachowuje zaprzeczalność i anonimowość w sensie praktycznym.
Lista nr 5 — zadanie 4: niebezpieczne uproszczenie z jednym globalnym wyzwaniem
Schemat pierścieniowy 4
1
Ktoś proponuje uproszczenie: zamiast lokalnych wartości używamy jednej wspólnej wartości .
2
Weryfikacja ma wtedy postać .
3
Sprawdź, czy takie uproszczenie zachowuje bezpieczeństwo schematu.
Pokaż, że atakujący może sfałszować podpis bez znajomości żadnego klucza prywatnego: wybiera losowe , losowe i wyznacza ostatnią wartość z równania weryfikacyjnego, otrzymując cały podpis .
Wyprowadź jawny wzór na .
Wyjaśnij, dlaczego lokalne wyzwania są istotne dla bezpieczeństwa konstrukcji.
Porównaj tę słabość z zadaniami z listy nr 2 i listy nr 4, w których błędnie zdefiniowana funkcja haszująca również otwierała drogę do czysto algebraicznych fałszerstw.
Lista nr 5 — zadanie 5: małe wykładniki dla niepodpisujących
Schemat pierścieniowy 5
1
Rozważ poprawny schemat Herranza-Sáeza, ale załóż, że dla wszystkich generator losuje pomocnicze skalary nie z całego , lecz z małego publicznego przedziału , gdzie .
2
Dla publikujemy więc wartości , w których logarytm dyskretny względem leży w bardzo małym zakresie. Składnik jest nadal wyznaczany przez domknięcie równania weryfikacyjnego.
3
Interesuje nas wyłącznie anonimowość schematu, a nie jego poprawność algebraiczna.
Wyjaśnij, dlaczego poprawność równania weryfikacyjnego nadal jest zachowana.
Pokaż, że Weryfikator może dla każdego sprawdzić, czy istnieje mały wykładnik taki, że .
Wyjaśnij, dlaczego z dużym prawdopodobieństwem wszystkie indeksy zostaną rozpoznane jako „niepodpisujący”, a rzeczywisty Podpisujący pozostanie jedynym indeksem bez małego logarytmu.
Oceń, jak zmienia się skuteczność ataku wraz ze wzrostem parametru .
Lista nr 5 — zadanie 6: publicznie rozpoznawalny bias generatora
Schemat pierścieniowy 6
1
Rozważ poprawny schemat Herranza-Sáeza, ale załóż, że dla wszystkich generator odrzuca próbki tak długo, aż otrzyma wartość spełniającą publicznie sprawdzalny warunek, na przykład: pierwsze 16 bitów kodowania jest równe zeru.
2
Składnik rzeczywistego Podpisującego jest nadal wyznaczany algebraicznie przez domknięcie równania i nie przechodzi takiego filtrowania.
3
Niech oznacza publiczny predykat „zakodowana wartość zaczyna się od 16 zer”.
Wyjaśnij, dlaczego poprawność podpisu nadal może być zachowana mimo tego błędu implementacyjnego.
Pokaż, że dla wszystkich zachodzi , natomiast dla prawdopodobieństwo spełnienia tego warunku wynosi w przybliżeniu .
Wyjaśnij, dlaczego Weryfikator może z bardzo dużym prawdopodobieństwem wskazać rzeczywistego Podpisującego jako jedyny indeks niespełniający predykatu .
Porównaj ten błąd z zadaniem 5: wskaż różnicę między wyciekiem przez mały logarytm dyskretny a wyciekiem przez jawnie obserwowalny wzorzec w zakodowaniu punktu.
Lista nr 5 — zadanie 7: dlaczego składniki muszą być nierozróżnialne
Schemat pierścieniowy 7
1
Ktoś proponuje skrócenie podpisu pierścieniowego. Zamiast publikować wszystkie pełne wartości dla członków pierścienia, chce dla niepodpisujących wyznaczać je z krótkiego opisu , na przykład z hasza albo ziarna generatora, tak aby Weryfikator mógł je sobie odtworzyć.
2
Jedynie składnik rzeczywistego Podpisującego, czyli , pozostaje „prawdziwym” elementem grupy wyznaczanym przez domknięcie równania weryfikacyjnego i nie daje się odtworzyć z tego samego krótkiego opisu.
3
Zbadaj, czy taka kompresja może zachować anonimowość schematu.
Wyjaśnij, dlaczego dla zachowania anonimowości rozkłady wszystkich wartości muszą być nierozróżnialne z punktu widzenia Weryfikatora.
Pokaż, że jeśli dla niepodpisujących wartości są odtwarzalne z krótkiego opisu , a dla rzeczywistego Podpisującego nie są, to sam fakt tej odróżnialności ujawnia indeks .
Wyjaśnij, dlaczego z tego wynika, że podpis musi zawierać po jednym pełnym, losowo wyglądającym składniku dla każdego członka pierścienia, a więc jego długość jest proporcjonalna do liczby wszystkich członków pierścienia.
Porównaj tę obserwację z zadaniami 2, 3, 5 i 6: wskaż, że we wszystkich tych przypadkach anonimowość przegrywa dokładnie wtedy, gdy składnik rzeczywistego Podpisującego przestaje być nierozróżnialny od pozostałych.
Lista nr 5 — tabela porównawcza
Po przeanalizowaniu listy nr 5 uzupełnij tabelę porównawczą dla podpisu pierścieniowego Herranza-Sáeza i opisanych wariantów.
Nr schematu
Czy jest poprawny?
Czy jest anonimowy?
Czy jest bezpieczny?
Typ obserwacji / ataku
1
2
3
4
5
6
7
Odróżnij trzy poziomy analizy: poprawność algebraiczną, anonimowość oraz odporność na fałszerstwo.
Wyjaśnij, dlaczego w podpisach pierścieniowych sam fakt poprawności równania weryfikacyjnego nie wystarcza ani do anonimowości, ani do bezpieczeństwa.
Sformułuj jedną wspólną zasadę: jakie elementy konstrukcji Schnorra trzeba zachować, aby uzyskać poprawny i anonimowy podpis pierścieniowy.
Lista nr 6 — anonimowe interaktywne systemy identyfikacji
Szósta lista dotyczy anonimowych interaktywnych systemów identyfikacji. Niech będzie dany następujący interaktywny anonimowy protokół identyfikacji Schnorra.
W tej liście zakładamy liczby pierwsze i takie, że , generator podgrupy rzędu oraz zbiór kluczy publicznych , gdzie . Rzeczywisty Dowodzący ma własny klucz prywatny oraz zna cały zbiór kluczy publicznych , z którego wybiera anonimowy zbiór odniesienia. Weryfikator również zna wszystkie te klucze publiczne i właśnie względem tego pełnego zbioru sprawdza poprawność transkryptu. Indeks rzeczywistego Dowodzącego oznaczamy przez . Wartości są lokalnymi udziałami wyzwania, natomiast jest globalnym wyzwaniem wybranym przez Weryfikatora.
Lista nr 6 — zadanie 1: anonimowy interaktywny Schnorr
W tym wariancie jeden z użytkowników, znający własny sekret długoterminowy oraz publiczne klucze wszystkich członków rozważanego zbioru, udowadnia swoją przynależność do tego zbioru. Transkrypt protokołu nie powinien ujawniać, który dokładnie indeks jest rzeczywisty.
1-z- anonimowy protokół Schnorra
1
Niech będzie rzeczywistym Dowodzącym. Dla każdego losuje on i wyznacza .
2
Losuje i oblicza . Następnie wyznacza sumaryczne zobowiązanie i wysyła do Weryfikatora.
3
Weryfikator losuje globalne wyzwanie i odsyła je Dowodzącemu.
4
Dowodzący oblicza , następnie oraz . Odsyła oraz wszystkie wartości .
5
Weryfikator akceptuje wtedy i tylko wtedy, gdy zachodzą równania oraz .
Wykaż poprawność algebraiczną protokołu.
Wyjaśnij, dlaczego transkrypt nie powinien ujawniać indeksu rzeczywistego Dowodzącego. Zwróć uwagę na rolę sumarycznego zobowiązania oraz warunku .
Porównaj ten protokół z podpisem pierścieniowym Herranza-Sáeza z listy nr 5. Wskaż różnice w interaktywności, w roli Weryfikatora, w sposobie wyznaczania wyzwań oraz w tym, że tutaj chodzi o anonimową identyfikację, a nie o publicznie weryfikowalny podpis pod wiadomością.
Wyjaśnij, dlaczego taki protokół jest bliższy schematowi identyfikacji Schnorra niż podpisowi pierścieniowemu Schnorra, mimo podobieństwa algebraicznego.
Lista nr 7 — AKE
Siódma lista dotyczy protokołów uwierzytelnionego uzgadniania klucza, czyli AKE. Dla każdego z poniższych schematów należy odpowiedzieć, czy jest bezpieczny. Jeżeli nie, trzeba wskazać atak. Jeżeli tak, trzeba wyjaśnić intuicję bezpieczeństwa.
W tej liście przez i oznaczamy identyfikatory stron, przez i ich certyfikaty, a przez i długoterminowe klucze publiczne zawarte w tych certyfikatach. Wartości i oznaczają wartości efemeryczne. Jeżeli w zadaniu pojawia się symbol , oznacza on kandydata na klucz sesyjny. W zadaniu o SIGMA dodatkowo używamy oznaczenia na wspólny sekret Diffiego-Hellmana, z którego wyprowadzane są klucze i .
Lista nr 7 — zadanie 1: klasyczny Diffie-Hellman bez uwierzytelnienia
Schemat AKE 1
1
Inicjator losuje , oblicza i wysyła .
2
Strona odpowiadająca losuje , oblicza i odsyła .
3
Inicjator oblicza , a strona odpowiadająca oblicza .
Wykaż, że w uczciwym wykonaniu obie strony uzyskują ten sam klucz sesyjny.
Wyjaśnij, dlaczego mimo poprawności algebraicznej ten wariant nie zapewnia uwierzytelnienia partnera sesji.
Zademonstruj pełny atak pośrednika (man-in-the-middle): pokaż, jak przeciwnik podstawia własne wartości efemeryczne i uzgadnia dwa różne klucze, po jednym z każdą ze stron.
Wskaż, dlaczego sam klasyczny Diffie-Hellman nie jest jeszcze protokołem AKE w sensie kryptograficznym.
Lista nr 7 — zadanie 2: SIGMA jako punkt odniesienia oraz wariant osłabiony bez MAC
To zadanie odwołuje się do klasycznej rodziny protokołów SIGMA opisanej przez Hugona Krawczyka w pracy SIGMA: the ‘SIGn-and-MAc’ Approach to Authenticated Diffie-Hellman and Its Use in the IKE Protocols, CRYPTO 2003. W opisie poniżej identyfikatory stron oznaczamy przez i , ich certyfikaty przez i , a klucze publiczne odczytywane z tych certyfikatów przez i . Podpisy są tworzone przy użyciu odpowiednich kluczy prywatnych i , a następnie weryfikowane za pomocą kluczy publicznych z certyfikatów. W poprawnym wariancie SIGMA obie strony najpierw wyznaczają wspólny sekret Diffiego-Hellmana . Następnie wyprowadzają z niego klucz sesyjny oraz klucz do MAC . W takim uproszczeniu funkcja pełni rolę prostej funkcji wyprowadzania kluczy: ten sam wspólny sekret jest haszowany z różnymi znacznikami domeny, aby otrzymać dwa rozdzielone kryptograficznie klucze o różnych zastosowaniach. Sam można rozumieć jako krótki znacznik uwierzytelniający liczony z identyfikatora strony przy użyciu klucza , na przykład w stylu HMAC. To właśnie MAC nad tożsamością wiąże wspólny sekret z identyfikatorem partnera; usunięcie tego składnika prowadzi do wariantu podatnego na ataki typu identity misbinding / unknown key-share. Zob. IACR PDF oraz stronę materiałów CRYPTO 2003.
Najpierw potraktuj poprawny SIGMA jako punkt odniesienia. Następnie przejdź do wariantu osłabionego, w którym usunięto MAC nad tożsamością.
Poprawny SIGMA
1
Inicjator losuje , oblicza i wysyła .
2
Strona odpowiadająca losuje , oblicza , wyznacza wspólny sekret , a następnie oblicza oraz . Następnie tworzy podpis przy użyciu swojego klucza prywatnego pod parą i odsyła .
3
Inicjator weryfikuje certyfikat , odczytuje z niego klucz publiczny , sprawdza podpis za pomocą , następnie wyznacza wspólny sekret , oblicza oraz , po czym sprawdza . Następnie tworzy podpis przy użyciu swojego klucza prywatnego pod parą i odsyła .
4
Strona odpowiadająca weryfikuje certyfikat , odczytuje z niego klucz publiczny , sprawdza podpis za pomocą oraz sprawdza . Klucz sesyjny obu stron ma postać .
Wariant osłabiony: same podpisy
1
Inicjator losuje , oblicza i wysyła .
2
Strona odpowiadająca losuje , oblicza , a następnie tworzy podpis przy użyciu swojego klucza prywatnego pod parą i odsyła .
3
Inicjator weryfikuje certyfikat , odczytuje z niego klucz publiczny , sprawdza podpis za pomocą , oblicza i odsyła , gdzie podpis jest utworzony przy użyciu klucza prywatnego inicjatora .
4
Strona odpowiadająca weryfikuje certyfikat , odczytuje z niego klucz publiczny , sprawdza podpis za pomocą i oblicza .
Wyjaśnij, jak działa poprawny SIGMA i wskaż, które elementy odpowiadają za uwierzytelnienie wartości efemerycznych, a które za związanie klucza sesyjnego z identyfikatorami i .
Podaj intuicję bezpieczeństwa poprawnego SIGMA: wyjaśnij, dlaczego podpisy nie wystarczają same z siebie oraz po co potrzebny jest osobny MAC nad tożsamością.
Porównaj poprawny SIGMA z wariantem osłabionym bez MAC i wskaż dokładnie, jaki składnik został usunięty.
Przedstaw przykład ataku na wariant osłabiony: pokaż atak błędnego związania tożsamości (identity misbinding / unknown key-share), w którym przeciwnik doprowadza jedną ze stron do błędnego przekonania, z kim współdzieli klucz.
Wyjaśnij, dlaczego usunięcie MAC nad identyfikatorami i niszczy własność poprawnego związania klucza sesyjnego z tożsamościami stron.
Lista nr 7 — zadanie 3: liniowe domknięcie z wyzwaniami i
Schemat AKE 3
1
Inicjator losuje , oblicza i wysyła .
2
Strona odpowiadająca losuje , oblicza i odsyła .
3
Inicjator losuje , oblicza i wysyła .
4
Strona odpowiadająca sprawdza, czy . Jeżeli tak, oblicza , następnie wyznacza i wysyła .
5
Inicjator sprawdza, czy . Jeżeli tak, oblicza .
Sprawdź poprawność algebraiczną testów wykonywanych przez obie strony.
Oceń, czy równania weryfikacyjne rzeczywiście wiążą wartości efemeryczne z sekretami długoterminowymi i .
Zdecyduj, czy atakujący może doprowadzić do zaakceptowania sesji bez znajomości jednego z sekretów długoterminowych. Jeżeli tak, opisz atak krok po kroku.
Jeżeli uznasz schemat za niebezpieczny, wskaż dokładnie, która zależność liniowa otwiera drogę do ataku.
Lista nr 7 — zadanie 4: mnożnikowe wiązanie przez i
Schemat AKE 4
1
Inicjator losuje , oblicza i wysyła .
2
Strona odpowiadająca losuje , oblicza i odsyła .
3
Inicjator losuje , oblicza i wysyła .
4
Strona odpowiadająca sprawdza, czy . Jeżeli tak, oblicza , następnie wyznacza i wysyła .
5
Inicjator sprawdza, czy . Jeżeli tak, oblicza .
Sprawdź, czy obie strony zaakceptują sesję w uczciwym wykonaniu protokołu.
Porównaj ten wariant z zadaniem 3 i oceń, czy zastąpienie sum przez iloczyny rzeczywiście wzmacnia bezpieczeństwo.
Zbadaj, czy atakujący może dobrać komunikaty tak, aby przejść testy weryfikacyjne bez znajomości sekretu długoterminowego jednej ze stron.
Jeżeli znajdziesz atak, opisz, które zależności algebraiczne są tu publicznie sprawdzalne i jak są wykorzystywane przez przeciwnika.
Lista nr 7 — zadanie 5: bezpośrednie mieszanie sekretu długoterminowego z efemerycznym
Schemat AKE 5
1
Inicjator losuje , oblicza i wysyła .
2
Strona odpowiadająca losuje , oblicza i odsyła .
3
Inicjator oblicza , a strona odpowiadająca oblicza , gdzie długoterminowe sekrety i odpowiadają odpowiednio kluczom publicznym i .
Wykaż, że obie strony uzyskują ten sam klucz sesyjny w uczciwym wykonaniu protokołu.
Zastanów się, jakie informacje o sekretach długoterminowych są ukryte w komunikatach i .
Oceń, czy taki schemat chroni przed atakiem pośrednika (man-in-the-middle) oraz czy zapewnia uwierzytelnienie partnera sesji.
Jeżeli uznasz konstrukcję za niebezpieczną, wskaż, czy problem wynika z braku jawnej weryfikacji partnera, z ujawniania zbyt silnej struktury algebraicznej, czy z obu tych powodów jednocześnie.
Lista nr 7 — zadanie 6: klucz sesyjny z prostego wyrażenia symetrycznego
Schemat AKE 6
1
Inicjator losuje , oblicza i wysyła .
2
Strona odpowiadająca losuje , oblicza i odsyła .
3
Inicjator oblicza .
4
Strona odpowiadająca oblicza .
Najpierw uprość oba wyrażenia na klucz sesyjny i sprawdź, czy w uczciwym wykonaniu dają ten sam wynik.
Oceń, czy sam fakt zgodności algebraicznej wystarcza tutaj do bezpieczeństwa AKE.
Zbadaj, czy atakujący może manipulować wartościami i tak, aby doprowadzić strony do uzgodnienia klucza bez rzeczywistego uwierzytelnienia partnera.
Porównaj ten wariant z klasycznym pomysłem Diffiego-Hellmana: wskaż, czego brakuje, aby uzyskać pełnoprawny i bezpieczny protokół AKE.
Lista nr 7 — tabela porównawcza
Po przeanalizowaniu wszystkich sześciu schematów AKE uzupełnij tabelę porównawczą.
Nr schematu
Czy jest poprawny?
Czy jest bezpieczny?
Typ ataku / obserwacja
Główny błąd konstrukcyjny
1
2
3
4
5
6
Odróżnij poprawność algebraiczną od bezpieczeństwa AKE: zgodność klucza po obu stronach nie oznacza jeszcze odporności na atak.
Wskaż, które schematy zawodzą przez brak właściwego uwierzytelnienia partnera, a które przez zbyt prostą strukturę algebraiczną komunikatów.
Sformułuj jedną wspólną zasadę: co musi wiązać klucz sesyjny z tożsamościami stron i ich wartościami efemerycznymi, aby nie dało się przeprowadzić ataku przez podstawienie komunikatów.
Lista nr 8 — analiza złożoności poprawnych protokołów
Ósma lista dotyczy analizy złożoności. Celem jest oszacowanie kosztu działania poprawnych protokołów i odróżnienie złożoności obliczeniowej, pamięciowej oraz komunikacyjnej.
W tej liście nie analizujemy bezpieczeństwa błędnych wariantów, tylko koszt poprawnych konstrukcji będących punktami odniesienia na tej stronie. Dotyczy to również omawianych na wykładzie wariantów podpisu BLS: multi-podpisu, podpisu agregowanego i podpisu pierścieniowego. Złożoność obliczeniową opisuj za pomocą najbardziej kosztownych operacji właściwych dla danego modelu: potęgowań i mnożeń w grupach multiplikatywnych, mnożeń skalarnych i dodawań punktów na krzywych eliptycznych, operacji parowania w protokołach opartych o parowania, a także wywołań funkcji haszujących i funkcji hash-to-curve. Złożoność pamięciową opisuj przez liczbę przechowywanych skalarów i elementów grupowych po stronie każdej ze stron protokołu. W protokołach interaktywnych dodatkowo oszacuj liczbę rund, liczbę wiadomości oraz łączny rozmiar komunikacji, używając oznaczeń , , , i na rozmiary zakodowanych elementów.
Lista nr 8 — zadanie 1: klasyczny schemat identyfikacji Schnorra
Punkt odniesienia
1
Weź jako punkt odniesienia poprawny, klasyczny interaktywny schemat identyfikacji Schnorra z listy nr 1.
2
Policz osobno koszt Dowodzącego i Weryfikatora.
3
Uwzględnij koszt obliczeniowy, pamięciowy i komunikacyjny.
Oszacuj liczbę potęgowań, mnożeń grupowych, dodawań w oraz wywołań funkcji haszującej po stronie Dowodzącego i Weryfikatora.
Oszacuj, ile skalarów i ile elementów grupy musi równocześnie przechowywać każda ze stron.
Policz liczbę wiadomości, liczbę rund oraz łączny rozmiar komunikacji w bitach.
Porównaj koszty z wersją demonstracyjną w grupie multiplikatywnej modulo oraz z wersją na krzywej eliptycznej: wskaż, które operacje pozostają strukturalnie tym samym kosztem, a które zmieniają interpretację.
Lista nr 8 — zadanie 2: anonimowy interaktywny Schnorr 1-z-
Punkt odniesienia
1
Weź jako punkt odniesienia poprawny anonimowy interaktywny protokół z listy nr 6.
2
Traktuj jako parametr wejściowy opisujący rozmiar zbioru możliwych tożsamości.
3
Interesuje nas, jak cena anonimowości rośnie wraz z .
Oszacuj koszt obliczeniowy Dowodzącego i Weryfikatora jako funkcję .
Wskaż, które operacje wykonywane są dla każdego indeksu , a które tylko dla rzeczywistego indeksu .
Oszacuj pamięć potrzebną do przechowywania wartości , i ewentualnych pomocniczych sum lub iloczynów.
Policz złożoność komunikacyjną: liczbę rund, liczbę wiadomości oraz rozmiar każdej wiadomości w zależności od .
Porównaj wynik z klasycznym Schnorrem z zadania 1 i opisz, który składnik złożoności jest ceną za anonimowość.
Lista nr 8 — zadanie 3: poprawny podpis Schnorra
Punkt odniesienia
1
Weź jako punkt odniesienia poprawny podpis Schnorra z listy nr 2.
2
Policz koszt Podpisującego i Weryfikującego.
3
Ponieważ schemat nie jest interaktywny, uwzględnij tylko rozmiar podpisu i kluczy, a nie liczbę rund protokołu.
Oszacuj koszt obliczenia podpisu oraz koszt weryfikacji, oddzielając potęgowania lub mnożenia skalarne od pozostałych operacji.
Oszacuj pamięć potrzebną przy generowaniu podpisu i przy jego weryfikacji.
Podaj rozmiar podpisu w bitach jako funkcję rozmiaru skalaru i elementu grupowego.
Porównaj koszt podpisu Schnorra z interaktywnym schematem identyfikacji Schnorra: wskaż, co zyskujemy, a co tracimy przechodząc od protokołu interaktywnego do podpisu.
Lista nr 8 — zadanie 4: poprawny podpis BLS, jego warianty oraz poprawny podpis RSA-FDH
Punkt odniesienia
1
Weź jako punkty odniesienia poprawny podpis BLS z listy nr 3, omawiane na wykładzie warianty BLS: multi-podpis, podpis agregowany i podpis pierścieniowy, a także poprawny podpis RSA-FDH z listy nr 4.
2
Dla wszystkich wariantów BLS uwzględnij osobno koszt funkcji hash-to-curve, operacji w i oraz operacji parowania.
3
W wariantach wielostronnych oznacz przez liczbę uczestników agregacji lub rozmiar pierścienia. Dla multi-podpisu BLS przyjmij, że wielu podpisujących podpisuje tę samą wiadomość. Dla podpisu agregowanego BLS przyjmij, że agregowane są podpisy pod wiadomości . Dla podpisu pierścieniowego BLS przyjmij, że anonimowość uzyskujemy kosztem zależnym od rozmiaru pierścienia .
4
W podpisie RSA-FDH uwzględnij osobno koszt potęgowania przy podpisywaniu i przy weryfikacji.
Oszacuj koszt obliczeniowy Podpisującego i Weryfikującego dla pojedynczego podpisu BLS oraz dla RSA-FDH.
Oszacuj koszt obliczeniowy tworzenia i weryfikacji multi-podpisu BLS jako funkcję liczby podpisujących . Wyraźnie wskaż koszt po stronie każdego podpisującego, koszt agregacji oraz koszt weryfikacji końcowej.
Oszacuj koszt obliczeniowy tworzenia i weryfikacji podpisu agregowanego BLS dla podpisów. Wyjaśnij, jak zmienia się liczba wywołań funkcji hash-to-curve, mnożeń grupowych i operacji parowania.
Oszacuj koszt obliczeniowy i pamięciowy podpisu pierścieniowego BLS jako funkcję rozmiaru pierścienia . Wskaż, które elementy kosztu rosną liniowo z , a które pozostają stałe.
Porównaj rozmiar podpisu, rozmiar klucza publicznego oraz pamięć roboczą potrzebną przy podpisywaniu i weryfikacji w podpisie BLS, jego trzech wariantach oraz w RSA-FDH.
Wskaż, która operacja dominuje w weryfikacji podpisu BLS i jego wariantów, a która w weryfikacji podpisu RSA-FDH.
Wyjaśnij, dlaczego w protokołach opartych o parowania sama liczba mnożeń grupowych nie wystarcza do uczciwego oszacowania kosztu.
Lista nr 8 — zadanie 5: podpis pierścieniowy Herranza-Sáeza
Punkt odniesienia
1
Weź jako punkt odniesienia poprawny podpis pierścieniowy Herranza-Sáeza z listy nr 5.
2
Traktuj rozmiar pierścienia jako parametr wejściowy.
3
Interesuje nas zarówno koszt obliczeń, jak i długość samego podpisu.
Oszacuj koszt obliczeniowy Podpisującego i Weryfikującego jako funkcję .
Podaj rozmiar podpisu w bitach i porównaj go z rozmiarem zwykłego podpisu Schnorra.
Oszacuj pamięć potrzebną do przechowywania wszystkich składników i pomocniczych wartości .
Wyjaśnij, dlaczego długość podpisu i koszt weryfikacji rosną liniowo z rozmiarem pierścienia oraz jak ten fakt łączy się z analizą anonimowości z listy nr 5.
Lista nr 8 — zadanie 6: poprawny SIGMA
Punkt odniesienia
1
Weź jako punkt odniesienia poprawny protokół SIGMA z listy nr 7.
2
Policz osobno koszt Inicjatora i strony odpowiadającej.
3
Uwzględnij wyznaczenie wspólnego sekretu Diffiego-Hellmana, wyprowadzenie i , podpisy oraz MAC.
Oszacuj liczbę najdroższych operacji po stronie obu stron: potęgowań lub mnożeń skalarnych, operacji podpisu, operacji weryfikacji podpisu, wywołań funkcji haszującej i obliczeń MAC.
Oszacuj pamięć roboczą potrzebną do przechowywania wartości efemerycznych, wspólnego sekretu, kluczy i , podpisów oraz znaczników MAC.
Policz liczbę rund i wiadomości oraz oszacuj ich łączny rozmiar, zakładając że przesyłane są wartości , , klucze publiczne, podpisy i MAC.
Porównaj koszt poprawnego SIGMA z kosztem klasycznego nieuwierzytelnionego Diffiego-Hellmana z listy nr 7 i wskaż, za które własności bezpieczeństwa płacimy dodatkowymi operacjami i komunikacją.
Lista nr 8 — tabela porównawcza
Po przeanalizowaniu wszystkich poprawnych protokołów uzupełnij tabelę porównawczą złożoności.
Protokół
Złożoność obliczeniowa
Złożoność pamięciowa
Złożoność komunikacyjna
Dominująca operacja
Identyfikacja Schnorra
Anonimowy interaktywny Schnorr 1-z-
Podpis Schnorra
brak interakcji; tylko rozmiar podpisu
Podpis BLS
brak interakcji; tylko rozmiar podpisu
Multi-podpis BLS
brak interakcji; tylko rozmiar podpisu
Podpis agregowany BLS
brak interakcji; tylko rozmiar podpisu
Podpis pierścieniowy BLS
brak interakcji; rozmiar podpisu zależny od
Podpis RSA-FDH
brak interakcji; tylko rozmiar podpisu
Podpis pierścieniowy Herranza-Sáeza
brak interakcji; rozmiar podpisu zależny od
SIGMA
Uzupełnij tabelę zarówno w postaci asymptotycznej, jak i w postaci bardziej konkretnej, podając liczbę najdroższych operacji.
Wskaż, które protokoły są najtańsze obliczeniowo, które najtańsze komunikacyjnie, a które najdroższe pamięciowo.
Wyjaśnij, w jaki sposób anonimowość, publiczna weryfikowalność oraz uwierzytelnione uzgadnianie klucza wpływają na koszt protokołu.