Kryptografia — listy nr 1, nr 2, nr 3, nr 4 i nr 5
Na tej stronie znajduje się pięć 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 oraz lista nr 5 poświęcona anonimowości i podpisom pierścieniowym Herranza-Sáeza opartym na podpisie Schnorra.
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.
1. Wprowadzenie do listy
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.
2. 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 .
3. 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ę.
4. 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.
5. 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?
6. 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.
7. Zadanie porównawcze — lista nr 1 jako całość
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.
8. Odniesienie do schematu Schnorra
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ę . Każdy uczestnik ma klucz prywatny oraz klucz publiczny .
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 rzeczywistym Podpisującym. Dla każdego losuje on i wyznacza .
2
Losuje i oblicza .
3
Dla wszystkich definiuje i oblicza .
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.
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 , 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.
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 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.