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.

Schemat odniesienia dla klasycznego Schnorra
Schemat odniesienia: klasyczny Schnorr.

Przebieg poprawnego protokołu: klucz publiczny A=aQ, zobowiązanie X=xQ, odpowiedź s=x+ac, weryfikacja sQ=X+cA.

Ładowanie biblioteki WASM MCL...

1. Parametry

Krzywa i generator grupy.

Krzywa BLS12_381
Generator Q

2. Klucze

Losowanie sekretu i klucza publicznego.

sk = a
pk = A = aQ

3. Zobowiązanie

Losowanie wartości efemerycznej.

x
X = xQ

4. Wyzwanie

Losowe wyzwanie od Weryfikatora.

c

5. Odpowiedź

Obliczenie odpowiedzi protokołu.

s = x + ac

6. Weryfikacja

Sprawdzenie warunku akceptacji.

L = sQ
R = X + cA
Wynik
Test wydajności nie został jeszcze uruchomiony.

Demonstrator BigInt - klasyczny Schnorr w Zp*

Ten sam punkt odniesienia w grupie multiplikatywnej modulo p. Tu również obowiązuje wzór A=ga, X=gx, s=[x+ac] mod q i test gs=XAc.

Możesz ustawić bardzo małe parametry, np. 23 / 11 / 2, albo większe. Aktywuj tylko takie, dla których q|(p-1) oraz gq1(modp).

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, g 1019, 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 G=g jest grupą cykliczną rzędu q, a sekret Dowodzącego ma postać aq*. Klucz publiczny ma postać:

A=ga

Cel analizy każdego schematu

  1. Sprawdzić poprawność schematu dla uczciwego Dowodzącego.
  2. Ocenić, czy schemat jest bezpieczny jako schemat identyfikacji.
  3. Jeśli nie jest bezpieczny, podać atak podszycia się.
  4. 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 xq*, oblicza X=gx i wysyła X.
2
Weryfikator losuje cq* i wysyła c.
3
Dowodzący odsyła s=x+a+c.
4
Weryfikator akceptuje wtedy i tylko wtedy, gdy gs=XAgc.
  1. Sprawdź, czy uczciwy Dowodzący, znający a, zawsze przechodzi weryfikację.
  2. Oceń, czy atakujący nieznający a może się skutecznie podszyć.
  3. Jeśli schemat jest niebezpieczny, podaj jawny sposób skonstruowania akceptowalnej transkrypcji.
  4. Wyjaśnij, czy atakujący musi znać logarytm dyskretny klucza publicznego A.

3. Zadanie 2 — analiza drugiego schematu

Schemat 2
1
Dowodzący losuje x, oblicza X=gx i wysyła X.
2
Weryfikator wysyła wyzwanie c.
3
Dowodzący odsyła s=c(x+a).
4
Weryfikator sprawdza, czy gs=(AX)c.
  1. Udowodnij poprawność działania dla uczciwego Dowodzącego.
  2. Zbadaj, czy odpowiedź ma właściwą postać z punktu widzenia bezpieczeństwa identyfikacji.
  3. Spróbuj zaprojektować atakującego, który po poznaniu c dobiera X lub s tak, aby przejść weryfikację.
  4. Oceń, czy wyzwanie c rzeczywiście utrudnia podszycie się.

4. Zadanie 3 — analiza trzeciego schematu

Schemat 3
1
Dowodzący losuje x, oblicza X=gx i wysyła X.
2
Weryfikator wysyła wyzwanie c.
3
Dowodzący odsyła s=xac oraz W=gax.
4
Weryfikator akceptuje, gdy gs=Wc.
  1. Wykaż poprawność dla uczciwego Dowodzącego.
  2. Zauważ, że w warunku akceptacji nie występuje bezpośrednio ani A, ani X. Czy to jest sygnał ostrzegawczy? Uzasadnij.
  3. Sprawdź, czy osoba nieznająca a może dobrać s i W tak, by przejść test.
  4. Jeśli tak, zapisz pełny atak krok po kroku.
  5. Wyjaśnij, czy W 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 X=gx.
2
Weryfikator wysyła c.
3
Dowodzący odsyła s=c+xa oraz W=gax.
4
Weryfikator sprawdza, czy gs=gcW.
  1. Udowodnij poprawność schematu dla uczciwego Dowodzącego.
  2. Zastanów się, czy równanie weryfikacyjne można spełnić bez znajomości a.
  3. Czy atakujący może najpierw wybrać dowolne s, a potem wyznaczyć W tak, aby przejść weryfikację?
  4. Jeśli tak, pokaż pełny atak i oceń, czy schemat rzeczywiście wiąże odpowiedź z sekretem.
  5. 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 X=gx.
2
Weryfikator wysyła c.
3
Dowodzący odsyła
s=(a+cx)(c+ax)W=gax2Z=gxa2
4
Weryfikator akceptuje, gdy
gs=(AXcW)cZ
  1. Rozwiń algebraicznie obie strony warunku akceptacji i sprawdź poprawność.
  2. Ustal, czy zależność weryfikacyjna naprawdę wymusza znajomość sekretu a.
  3. Sprawdź, czy atakujący może arbitralnie wybrać część odpowiedzi, a resztę dopasować.
  4. Oceń, czy większa złożoność wzorów poprawia bezpieczeństwo, czy tylko zaciemnia obraz.
  5. 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 schematuCzy jest poprawny?Czy jest bezpieczny?Typ ataku / obserwacjaGłówny błąd konstrukcyjny
1
2
3
4
5
  1. Wskaż, które schematy są trywialnie fałszowalne.
  2. Wskaż, w których przypadkach odpowiedź można skonstruować bez znajomości sekretu.
  3. 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 X=gx.
2
Weryfikator wysyła c.
3
Dowodzący odsyła s=[x+ca] mod q.
4
Weryfikator sprawdza, czy gs=XAc.
  1. Wyjaśnij, czym strukturalnie Schnorr różni się od analizowanych konstrukcji.
  2. Pokaż, dlaczego odpowiedź w Schnorrze nie daje się łatwo sfałszować po poznaniu wyzwania.
  3. Wskaż, które z analizowanych schematów przypominają Schnorra tylko powierzchownie.
  4. 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ą G=g rzędu q, sekret a, klucz publiczny A=ga, wiadomość m oraz podpis σ. Wszystkie działania skalarne traktujemy jako wykonywane w q. W zadaniu 4 zapis mR interpretujemy jako operację XOR po wcześniejszym zakodowaniu m i R do bitstringów tej samej długości. Następnie trzeba ocenić, czy wynik takiej operacji da się sensownie odwzorować do q i użyć jako skalaru h.

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

Poprawny podpis Schnorra
1
Podpisujący losuje rq i oblicza R=gr.
2
Wyznacza h=H(m,R).
3
Oblicza s=[r+ah] mod q i zwraca σ=(R,s).
4
Weryfikator wyznacza h=H(m,R) i akceptuje wtedy i tylko wtedy, gdy gs=RAh.
  1. Traktuj ten wariant jako kryptograficzny punkt odniesienia dla całej listy nr 2.
  2. Przy analizie kolejnych zadań zawsze sprawdzaj, czy zachowano poprawne związanie wiadomości z R przez H(m,R).
  3. Zwracaj uwagę, czy równanie weryfikacyjne rzeczywiście wiąże podpis z kluczem publicznym A.

Demonstrator WASM — poprawny podpis Schnorra

Demonstrator podpisu Schnorra na krzywej eliptycznej w zapisie addytywnym. Punkt odniesienia ma postać A=aQ, R=rQ, h=H(m,R), s=[r+ah] mod q oraz warunek sQ=R+hA.

Ładowanie biblioteki WASM MCL...

1. Parametry

Krzywa i generator grupy.

Krzywa BLS12_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 h i s.

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 p*

Ta wersja działa w grupie multiplikatywnej modulo p. Podpis ma postać A=ga, R=gr, h=H(m,R) mod q, s=[r+ah] mod q i test gs=RAh mod p.

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, g p=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 h i s.

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 h=H(m)

Schemat podpisu 1
1
Podpisujący losuje rq*, oblicza R=gr.
2
Wyznacza h=H(m).
3
Oblicza s=[r+ah] mod q i zwraca podpis σ=(R,s).
4
Weryfikator wyznacza h=H(m) i akceptuje wtedy i tylko wtedy, gdy gs=RAh.
  1. Wykaż poprawność schematu dla uczciwego Podpisującego.
  2. Porównaj ten wariant z poprawnym podpisem Schnorra z punktu odniesienia i oceń, co zmienia pominięcie R w wejściu funkcji skrótu.
  3. Zbadaj, czy ten wariant zachowuje bezpieczeństwo podpisu Schnorra, czy też otwiera drogę do fałszerstwa.
  4. Wskaż rolę losowej wartości r i wyjaśnij, dlaczego nie wolno jej powtarzać.

Lista nr 2 — zadanie 2: h=m+R

Schemat podpisu 2
1
Podpisujący losuje r, oblicza R=gr.
2
Wyznacza h=m+R.
3
Oblicza s=[r+ah] mod q i zwraca σ=(R,s).
4
Weryfikator wyznacza h=m+R i sprawdza, czy gs=RAh.
  1. Najpierw oceń, czy zapis m+R jest dobrze określony bez dodatkowego kodowania.
  2. Jeśli przyjmiesz naturalne kodowanie do q, zbadaj poprawność i bezpieczeństwo schematu.
  3. Sprawdź, czy podpis można sfałszować przez dobranie R lub s po ustaleniu wiadomości.
  4. Porównaj ten pomysł z poprawnym użyciem H(m,R) w podpisie Schnorra.

Lista nr 2 — zadanie 3: h=mR

Schemat podpisu 3
1
Podpisujący losuje r, oblicza R=gr.
2
Wyznacza h=mR.
3
Oblicza s=[r+ah] mod q i zwraca σ=(R,s).
4
Weryfikator wyznacza h=mR i sprawdza warunek gs=RAh.
  1. Wyjaśnij, w jakiej domenie iloczyn mR miałby być liczony.
  2. Sprawdź, czy takie związanie wiadomości z R daje odporność na fałszerstwo, czy tylko pozór związania.
  3. Zbadaj, czy można dobrać podpis dla wybranej wiadomości bez znajomości sekretu a.
  4. Porównaj ten schemat z zadaniem 2: czy problem jest zasadniczo ten sam, czy inny?

Lista nr 2 — zadanie 4: h=mR (XOR)

Schemat podpisu 4
1
Podpisujący losuje r, oblicza R=gr.
2
Wyznacza h=mR, gdzie oznacza bitowy XOR po odpowiednim zakodowaniu danych.
3
Oblicza s=[r+ah] mod q i zwraca σ=(R,s).
4
Weryfikator wyznacza h=mR w tej samej interpretacji i akceptuje, gdy gs=RAh.
Podpowiedź interpretacyjna: można przyjąć, że najpierw kodujemy m i R jako bitstringi tej samej długości, następnie liczymy ich bitowy XOR, a otrzymany wynik interpretujemy jako liczbę całkowitą i redukujemy modulo q, aby dostać skalar hq. To jest wygodna formalizacja do analizy, a nie standardowa konstrukcja podpisu Schnorra.
  1. Załóż, że oznacza bitowy XOR. Oceń, jakie kodowanie wiadomości m i zobowiązania R byłoby potrzebne, aby taki zapis był w ogóle dobrze określony.
  2. Wyjaśnij, czy wynik XOR można potraktować jako sensowny odpowiednik wyzwania h używanego w podpisie Schnorra.
  3. Zbadaj, czy przy naturalnych interpretacjach XOR i mapowania do q możliwe jest skuteczne fałszerstwo podpisu.
  4. Sformułuj ogólny wniosek: dlaczego prosta operacja XOR na m i R nie zastępuje bezpiecznej funkcji skrótu H(m,R).

Lista nr 2 — zadanie 5: podpis z dodatkową wartością X

Schemat podpisu 5
1
Podpisujący losuje r, oblicza R=gr oraz X=gar.
2
Wyznacza h=H(m,R).
3
Oblicza s=[h+ra] mod q i zwraca podpis σ=(R,s,X).
4
Weryfikator wyznacza h=H(m,R) i akceptuje, gdy gs=ghX.
  1. Wykaż poprawność równania weryfikacyjnego dla uczciwego Podpisującego.
  2. Zauważ, że weryfikacja nie korzysta bezpośrednio z klucza publicznego A. Oceń znaczenie tego faktu.
  3. Sprawdź, czy atakujący może dobrać s i X tak, by przejść weryfikację bez znajomości a.
  4. Wyjaśnij, czy wartość R ma tu realny wpływ na bezpieczeństwo podpisu, czy tylko wpływa na obliczenie h.

Lista nr 2 — zadanie 6: podpis z hashem zależnym od X

Schemat podpisu 6
1
Podpisujący losuje r, oblicza R=gr oraz X=gar.
2
Wyznacza h=H(m,R,X).
3
Oblicza s=[h+ra] mod q i zwraca σ=(R,s,X).
4
Weryfikator wyznacza h=H(m,R,X) i akceptuje, gdy gs=ghX.
  1. Sprawdź poprawność schematu dla uczciwego Podpisującego.
  2. Oceń, czy dodanie X do wejścia funkcji skrótu naprawia zasadniczy problem z poprzedniego schematu.
  3. Zbadaj, czy atakujący może dobrać podpis po wyborze R, X i s bez znajomości sekretu.
  4. 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 schematuCzy jest poprawny?Czy jest bezpieczny?Typ ataku / obserwacjaGłówny błąd konstrukcyjny
1
2
3
4
5
6
  1. Wskaż, które schematy zachowują zasadniczą strukturę podpisu Schnorra, a które jedynie powierzchownie go przypominają.
  2. Wskaż, w których przypadkach problemem jest zły sposób definiowania h, a w których brak związania podpisu z kluczem publicznym.
  3. 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 H jako bezpiecznej funkcji hash-to-curve jest absolutnie kluczowa.

Zakładamy grupy cykliczne G1, G2 i GT rzędu pierwszego q oraz parowanie dwuliniowe e:G1×G2GT. Niech PG1 i QG2 będą publicznymi generatorami, aq sekretem, a A=aQ kluczem publicznym. Jeżeli w zadaniu pojawiają się zapisy typu μP, rozumiemy przez to μ=enc(m)q, gdzie enc 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 M=H(m)G1, gdzie H jest poprawną funkcją hash-to-curve.
2
Oblicza podpis σ=aMG1.
3
Weryfikator akceptuje wtedy i tylko wtedy, gdy e(σ,Q)=e(H(m),A).
  1. Traktuj ten wariant jako kryptograficzny punkt odniesienia dla całej listy nr 3.
  2. Zwracaj uwagę, czy funkcja H naprawdę zachowuje się jak bezpieczne mapowanie wiadomości do punktu grupy.
  3. 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 a.

Demonstrator WASM — poprawny podpis BLS

Demonstrator pokazuje klasyczny wariant BLS z hashowaniem wiadomości do G1 i kluczem publicznym w G2. Podpis ma postać M=H(m), A=aQ, σ=aM, a weryfikacja sprawdza warunek e(σ,Q)=e(M,A).

Ładowanie biblioteki WASM MCL...

1. Parametry

Krzywa i generatory grup.

Krzywa BLS12_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 σ=aH(m).

σ

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 H(m)=P0

Schemat BLS 1
1
Dla każdej wiadomości przyjmujemy H(m)=P0G1, gdzie P0 jest stałym publicznym punktem.
2
Podpisujący oblicza σ=aP0.
3
Weryfikator sprawdza, czy e(σ,Q)=e(P0,A).
  1. Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
  2. Wyjaśnij, dlaczego podpis na jednej wiadomości staje się automatycznie podpisem na każdej innej wiadomości.
  3. Opisz możliwie najsilniejszy atak fałszerstwa na ten schemat.
  4. 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 H(m)=enc(m)P

Schemat BLS 2
1
Dla wiadomości m wyznaczamy publiczny skalar μ=enc(m)q i przyjmujemy H(m)=μP.
2
Podpisujący oblicza σ=aμP.
3
Weryfikator sprawdza, czy e(σ,Q)=e(μP,A).
  1. Wykaż poprawność schematu dla uczciwego Podpisującego.
  2. Załóż, że atakujący ma podpis σ1 na wiadomość m1 z μ10. Pokaż, jak skonstruować podpis na wiadomość m2 przez odpowiednie przeskalowanie σ1.
  3. Wyjaśnij, dlaczego publiczna liniowość funkcji H jest tu wadą.
  4. Oceń, co dzieje się w przypadku enc(m)=0 i czy to dodatkowo pogarsza bezpieczeństwo.

Lista nr 3 — zadanie 3: zbyt krótki skrót H(m)=τ(m)P

Schemat BLS 3
1
Niech τ(m) oznacza bardzo krótki publiczny skrót wiadomości, na przykład 16-bitową wartość uzyskaną z obcięcia SHA-256.
2
Przyjmujemy H(m)=τ(m)PG1.
3
Podpisujący oblicza podpis σ=aτ(m)P, a Weryfikator sprawdza e(σ,Q)=e(τ(m)P,A).
  1. Wyjaśnij, dlaczego tak zdefiniowana funkcja H prowadzi do łatwych kolizji wiadomości.
  2. Pokaż, jak wykorzystać znalezienie dwóch wiadomości m1m2 z τ(m1)=τ(m2) do sfałszowania podpisu.
  3. Oceń, jak rośnie skuteczność ataku wraz ze skracaniem wartości τ.
  4. Porównaj ten błąd z poprawnym wymaganiem, aby H zachowywała się jak bezpieczna funkcja hash-to-curve o dużej odporności na kolizje.

Lista nr 3 — zadanie 4: homomorficzna funkcja H

Schemat BLS 4
1
Niech enc:𝕄q będzie publicznym kodowaniem wiadomości do skalarów, spełniającym własność enc(m1·m2)=enc(m1)+enc(m2) modulo q.
2
Definiujemy H(m)=enc(m)PG1.
3
Podpisujący oblicza podpis σ=aH(m)=aenc(m)P.
4
Weryfikator sprawdza, czy e(σ,Q)=e(enc(m)P,A).
  1. Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
  2. Załóż, że atakujący zna podpisy σ1 pod m1 oraz σ2 pod m2. Pokaż, że suma σ1+σ2 jest poprawnym podpisem pod wiadomością m1·m2.
  3. Wyjaśnij, dlaczego publiczna homomorficzność funkcji H umożliwia składanie podpisów bez znajomości sekretu a.
  4. 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 H

Schemat BLS 5
1
Zakładamy, że dla każdej wiadomości m funkcja H(m) zwraca punkt MG1, dla którego można efektywnie wyznaczyć skalar bq spełniający M=bP.
2
Podpisujący oblicza podpis σ=aM=abP.
3
Weryfikator sprawdza standardowy warunek BLS: e(σ,Q)=e(H(m),A).
  1. Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
  2. Załóż, że atakujący zna jeden poprawny podpis σ1 pod wiadomością m1 i potrafi obliczyć b1 takie, że H(m1)=b1P, przy czym b10. Pokaż, jak odzyskać punkt aP.
  3. Dla dowolnej nowej wiadomości m2 oblicz b2 z warunku H(m2)=b2P i skonstruuj poprawny podpis pod m2 bez znajomości sekretu a.
  4. Wyjaśnij, dlaczego nie trzeba łamać problemu logarytmu dyskretnego w całej grupie G1; wystarczy, że obraz funkcji H 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 schematuCzy jest poprawny?Czy jest bezpieczny?Typ ataku / obserwacjaGłówny błąd konstrukcyjny
1
2
3
4
5
  1. Wskaż, które schematy są poprawne algebraicznie, ale całkowicie nieodporne na fałszerstwo.
  2. Odróżnij cztery typy błędów: funkcję stałą, publiczną liniowość lub homomorficzność funkcji H, zbyt małą odporność na kolizje oraz łatwy logarytm dyskretny w obrazie funkcji H.
  3. 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 H nie może zachowywać prostych zależności algebraicznych między wiadomościami, ponieważ prowadzi to do fałszerstw.

Zakładamy moduł RSA N=pq, wykładnik publiczny e oraz wykładnik prywatny d spełniające ed1(modφ(N)). Dla czytelności przyjmujemy, że funkcja H mapuje wiadomości do zbioru odwracalnych reszt modulo N* i że weryfikacja sprawdza warunek σeH(m)(modN). Jeżeli w zadaniu pojawia się zapis μ=enc(m), rozumiemy przez to jawne publiczne kodowanie wiadomości do elementu odwracalnego modulo N.

Lista nr 4 — punkt odniesienia: poprawny podpis RSA-FDH

W poprawnym podpisie RSA-FDH najpierw haszujemy wiadomość do pełnej dziedziny modulo N, a dopiero potem wykonujemy operację RSA. To właśnie funkcja H ma zniszczyć proste zależności algebraiczne między wiadomościami.

Poprawny podpis RSA-FDH
1
Podpisujący oblicza wartość y=H(m)N*.
2
Wyznacza podpis σ=yd(modN).
3
Weryfikator akceptuje wtedy i tylko wtedy, gdy σeH(m)(modN).
  1. Traktuj ten wariant jako punkt odniesienia dla całej listy nr 4.
  2. Zwracaj uwagę, czy funkcja H rzeczywiście usuwa przewidywalne zależności algebraiczne między wiadomościami.
  3. W kolejnych zadaniach sprawdzaj, czy z jednego lub z dwóch podpisów można skonstruować podpis pod nową wiadomością bez znajomości d.

Lista nr 4 — zadanie 1: brak funkcji haszującej

Schemat RSA 1
1
Dla wiadomości m obliczamy jej reprezentanta μ=enc(m)N*.
2
Podpisujący wyznacza podpis σ=μd(modN).
3
Weryfikator sprawdza, czy σeμ(modN).
  1. Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
  2. Załóż, że atakujący zna podpisy σ1 pod wiadomością m1 oraz σ2 pod wiadomością m2. Pokaż, że iloczyn σ1σ2 jest poprawnym podpisem pod wiadomością m3 spełniającą enc(m3)enc(m1)enc(m2)(modN).
  3. Wyjaśnij, dlaczego brak funkcji H pozostawia publiczną strukturę multiplikatywną wiadomości i umożliwia fałszerstwo.
  4. Porównaj ten błąd z poprawnym podpisem RSA-FDH.

Lista nr 4 — zadanie 2: słaba funkcja H(m)=μ2

Schemat RSA 2
1
Dla wiadomości m obliczamy μ=enc(m)N* i definiujemy H(m)=μ2(modN).
2
Podpisujący oblicza podpis σ=(μ2)d(modN).
3
Weryfikator sprawdza, czy σeμ2(modN).
  1. Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
  2. Załóż, że atakujący zna podpisy pod wiadomościami m1 i m2. Pokaż, że iloczyn tych podpisów jest poprawnym podpisem pod wiadomością m3 taką, że enc(m3)enc(m1)enc(m2)(modN).
  3. Wyjaśnij, dlaczego publiczna transformacja μμ2 nie usuwa struktury multiplikatywnej, tylko ją zachowuje.
  4. 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 H(m)=gμ

Schemat RSA 3
1
Ustalamy publiczny element gN*. Dla wiadomości m obliczamy μ=enc(m) i definiujemy H(m)=gμ(modN).
2
Podpisujący oblicza podpis σ=(gμ)d(modN).
3
Weryfikator sprawdza, czy σegμ(modN).
  1. Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
  2. Przyjmij, że przestrzeń wiadomości jest utożsamiona z liczbami całkowitymi z ustalonego zakresu. Pokaż, że z podpisów pod wiadomościami m1 oraz m2 można skonstruować podpis pod wiadomością m3 spełniającą enc(m3)=enc(m1)+enc(m2).
  3. Wyjaśnij, dlaczego homomorfizm w wykładniku, czyli zależność gμ+ν=gμ·gν modulo N, wystarcza do fałszerstwa.
  4. Porównaj to zadanie z zadaniem 2: wskaż, że w obu przypadkach funkcja H 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 schematuCzy jest poprawny?Czy jest bezpieczny?Typ ataku / obserwacjaGłówny błąd konstrukcyjny
1
2
3
  1. Wskaż, które konstrukcje są poprawne algebraicznie, ale nieodporne na fałszerstwo.
  2. Odróżnij trzy źródła słabości: całkowity brak haszowania, zachowanie struktury multiplikatywnej oraz zachowanie struktury addytywnej w wykładniku.
  3. Sformułuj jedną wspólną zasadę: jakie własności powinna mieć funkcja H 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 p i q takie, że q|(p-1), generator g podgrupy rzędu q oraz funkcję H(m,R)q. Każdy uczestnik Ai ma klucz prywatny xi oraz klucz publiczny yi=gxi(modp).

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 R, a lokalne wyzwania mają postać h=H(m,R). 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 As będzie rzeczywistym Podpisującym. Dla każdego is losuje on aiq i wyznacza Ri=gai(modp).
2
Losuje aq i oblicza Rs=ga/isyiH(m,Ri)(modp).
3
Dla wszystkich i definiuje hi=H(m,Ri) i oblicza σ=a+isai+xshs(modq).
4
Weryfikator sprawdza dla wszystkich i, że hi=H(m,Ri), oraz weryfikuje równanie gσ=iRi·iyihi(modp).
  1. Traktuj ten wariant jako punkt odniesienia dla całej listy nr 5.
  2. Zwracaj uwagę, które elementy podpisu są losowane przez rzeczywistego Podpisującego, a które są wyznaczane tak, aby zamknąć równanie weryfikacyjne.
  3. 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 (m,R1,,Rn,h1,,hn,σ) wygenerowany zgodnie z powyższym algorytmem.
2
Załóż, że pierścień składa się z publicznych kluczy y1,,yn oraz że wszystkie wartości Ri są różne i różne od 1.
3
Interesuje nas prawdopodobieństwo, z jakim ten sam podpis mógł zostać wygenerowany przez dowolnego członka pierścienia.
  1. Wykaż poprawność algebraiczną schematu.
  2. Pokaż, że dla ustalonego poprawnego podpisu każdy członek pierścienia mógł go wygenerować z takim samym prawdopodobieństwem.
  3. Wyjaśnij, dlaczego z tego wynika anonimowość bezwarunkowa w sensie pracy Herranza i Sáeza.
  4. 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 is nie losujemy ai, lecz definiujemy je deterministycznie jako ai=F(m,y1,,yn,i)q, gdzie F jest publiczną funkcją deterministyczną, na przykład funkcją haszującą mapującą dane wejście do wykładnika modulo q.
2
Dla is otrzymujemy zatem publicznie przewidywalne wartości Ri=gai, a jedynie Rs jest nadal wyznaczane przez domknięcie równania weryfikacyjnego.
3
Interesuje nas to, czy taki wariant nadal chroni anonimowość rzeczywistego Podpisującego.
  1. Wyjaśnij, dlaczego poprawność algebraiczna podpisu nadal może być zachowana.
  2. Pokaż, że Weryfikator może samodzielnie odtworzyć wszystkie wartości ai i Ri dla is.
  3. Wyjaśnij, dlaczego jedyny indeks, dla którego publikowane Ri nie zgadza się z wartością przewidzianą przez funkcję F, wskazuje rzeczywistego Podpisującego.
  4. 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 is wartości ai są generowane pseudolosowo z ziarna ρ znanego wyłącznie rzeczywistemu Podpisującemu, na przykład ai=PRG(ρ,i)q.
2
Dla is mamy więc Ri=gai, natomiast Rs jest nadal wyznaczane algebraicznie przez domknięcie równania i nie pochodzi z generatora PRG.
3
Załóż, że po opublikowaniu podpisu rzeczywisty Podpisujący ujawnia ziarno ρ albo wszystkie wygenerowane wartości ai dla is.
  1. Wyjaśnij, dlaczego przed ujawnieniem ziarna wariant może wyglądać na anonimowy dla obserwatora zewnętrznego.
  2. Pokaż, że po ujawnieniu ρ każdy może sprawdzić równania Ri=gPRG(ρ,i) dla wszystkich is.
  3. Wyjaśnij, dlaczego brak takiego świadectwa dla jednego indeksu pozwala rzeczywistemu Podpisującemu przekonująco ujawnić własną tożsamość.
  4. 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 hi=H(m,Ri) używamy jednej wspólnej wartości h=H(m).
2
Weryfikacja ma wtedy postać gσ=iRi·(iyi)h(modp).
3
Sprawdź, czy takie uproszczenie zachowuje bezpieczeństwo schematu.
  1. Pokaż, że atakujący może sfałszować podpis bez znajomości żadnego klucza prywatnego: wybiera losowe σ, losowe R1,,Rn-1 i wyznacza ostatnią wartość Rn z równania weryfikacyjnego.
  2. Wyprowadź jawny wzór na Rn.
  3. Wyjaśnij, dlaczego lokalne wyzwania hi=H(m,Ri) są istotne dla bezpieczeństwa konstrukcji.
  4. 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 is generator losuje ai nie z całego q, lecz z małego publicznego przedziału {0,1,,2t-1}, gdzie 2tq.
2
Dla is publikujemy więc wartości Ri=gai, w których logarytm dyskretny względem g leży w bardzo małym zakresie. Składnik Rs jest nadal wyznaczany przez domknięcie równania weryfikacyjnego.
3
Interesuje nas wyłącznie anonimowość schematu, a nie jego poprawność algebraiczna.
  1. Wyjaśnij, dlaczego poprawność równania weryfikacyjnego nadal jest zachowana.
  2. Pokaż, że Weryfikator może dla każdego Ri sprawdzić, czy istnieje mały wykładnik u<2t taki, że Ri=gu.
  3. Wyjaśnij, dlaczego z dużym prawdopodobieństwem wszystkie indeksy is zostaną rozpoznane jako „niepodpisujący”, a rzeczywisty Podpisujący pozostanie jedynym indeksem bez małego logarytmu.
  4. Oceń, jak zmienia się skuteczność ataku wraz ze wzrostem parametru t.

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 is generator odrzuca próbki tak długo, aż otrzyma wartość Ri=gai spełniającą publicznie sprawdzalny warunek, na przykład: pierwsze 16 bitów kodowania Ri jest równe zeru.
2
Składnik Rs rzeczywistego Podpisującego jest nadal wyznaczany algebraicznie przez domknięcie równania i nie przechodzi takiego filtrowania.
3
Niech P(R) oznacza publiczny predykat „zakodowana wartość R zaczyna się od 16 zer”.
  1. Wyjaśnij, dlaczego poprawność podpisu nadal może być zachowana mimo tego błędu implementacyjnego.
  2. Pokaż, że dla wszystkich is zachodzi P(Ri)=true, natomiast dla Rs prawdopodobieństwo spełnienia tego warunku wynosi w przybliżeniu 2-16.
  3. Wyjaśnij, dlaczego Weryfikator może z bardzo dużym prawdopodobieństwem wskazać rzeczywistego Podpisującego jako jedyny indeks niespełniający predykatu P.
  4. 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 Ri muszą być nierozróżnialne

Schemat pierścieniowy 7
1
Ktoś proponuje skrócenie podpisu pierścieniowego. Zamiast publikować wszystkie pełne wartości Ri 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 Rs, 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.
  1. Wyjaśnij, dlaczego dla zachowania anonimowości rozkłady wszystkich wartości Ri muszą być nierozróżnialne z punktu widzenia Weryfikatora.
  2. Pokaż, że jeśli dla niepodpisujących wartości Ri są odtwarzalne z krótkiego opisu τ, a dla rzeczywistego Podpisującego nie są, to sam fakt tej odróżnialności ujawnia indeks s.
  3. 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.
  4. 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 schematuCzy jest poprawny?Czy jest anonimowy?Czy jest bezpieczny?Typ obserwacji / ataku
1
2
3
4
5
6
7
  1. Odróżnij trzy poziomy analizy: poprawność algebraiczną, anonimowość oraz odporność na fałszerstwo.
  2. Wyjaśnij, dlaczego w podpisach pierścieniowych sam fakt poprawności równania weryfikacyjnego nie wystarcza ani do anonimowości, ani do bezpieczeństwa.
  3. Sformułuj jedną wspólną zasadę: jakie elementy konstrukcji Schnorra trzeba zachować, aby uzyskać poprawny i anonimowy podpis pierścieniowy.