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.

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] mod q, 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] mod q

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=X·Ac.

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.

Lista nr 1 — wprowadzenie

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.

Lista nr 1 — 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](modq).
4
Weryfikator akceptuje wtedy i tylko wtedy, gdy gs=X·A·gc.
  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.

Lista nr 1 — 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)](modq).
4
Weryfikator sprawdza, czy gs=(A·X)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ę.

Lista nr 1 — 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](modq) 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.

Lista nr 1 — 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](modq) oraz W=gax.
4
Weryfikator sprawdza, czy gs=gc·W.
  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?

Lista nr 1 — 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)](modq)W=gax2Z=gxa2
4
Weryfikator akceptuje, gdy
gs=(A·Xc·W)c·Z
  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.

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

Lista nr 1 — punkt odniesienia: klasyczny Schnorr

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=X·Ac.
  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=R·Ah.
  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=R·Ah 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=R·Ah.
  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=R·Ah.
  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=R·Ah.
  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=R·Ah.
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=gh·X.
  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=gh·X.
  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. Publiczny klucz i-tego uczestnika oznaczamy przez Ai=gxi(modp), gdzie xi jest jego kluczem prywatnym. Indeks rzeczywistego Podpisującego oznaczamy przez j. Małą literą s 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 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 Aj będzie publicznym kluczem rzeczywistego Podpisującego. Dla każdego ij losuje on pomocniczy skalar tiq i wyznacza Ri=gti(modp).
2
Losuje niezależny skalar uq i oblicza Rj=gu/ijAiH(m,Ri)(modp).
3
Dla wszystkich i definiuje hi=H(m,Ri) i oblicza s=[u+ijti+xjhj](modq), a następnie zwraca podpis σ=(R1,,Rn,s).
4
Weryfikator sprawdza dla wszystkich i, że hi=H(m,Ri), oraz weryfikuje równanie gs=iRi·iAihi(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 σ=(R1,,Rn,s) wygenerowany zgodnie z powyższym algorytmem dla wiadomości m.
2
Załóż, że pierścień składa się z publicznych kluczy A1,,An 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 ij nie losujemy pomocniczych skalarów ti, lecz definiujemy je deterministycznie jako ti=F(m,A1,,An,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 ij otrzymujemy zatem publicznie przewidywalne wartości Ri=gti, a jedynie Rj 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 ti i Ri dla ij.
  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 ij wartości ti są generowane pseudolosowo z ziarna ρ znanego wyłącznie rzeczywistemu Podpisującemu, na przykład ti=PRG(ρ,i)q.
2
Dla ij mamy więc Ri=gti, natomiast Rj 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 ti dla ij.
  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 ij.
  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ć gs=iRi·(iAi)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 s, losowe R1,,Rn-1 i wyznacza ostatnią wartość Rn z równania weryfikacyjnego, otrzymując cały podpis σ.
  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 ij generator losuje pomocnicze skalary ti nie z całego q, lecz z małego publicznego przedziału {0,1,,2t-1}, gdzie 2tq.
2
Dla ij publikujemy więc wartości Ri=gti, w których logarytm dyskretny względem g leży w bardzo małym zakresie. Składnik Rj 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 ij 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 ij generator odrzuca próbki tak długo, aż otrzyma wartość Ri=gti spełniającą publicznie sprawdzalny warunek, na przykład: pierwsze 16 bitów kodowania Ri jest równe zeru.
2
Składnik Rj 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 ij zachodzi P(Ri)=true, natomiast dla Rj 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 Rj, 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 j.
  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.

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 p i q takie, że q|(p-1), generator g podgrupy rzędu q oraz zbiór kluczy publicznych A1,,An, gdzie Ai=gai. Rzeczywisty Dowodzący ma własny klucz prywatny aj oraz zna cały zbiór kluczy publicznych {A1,,An}, 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 j. Wartości ci są lokalnymi udziałami wyzwania, natomiast c 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-n anonimowy protokół Schnorra
1
Niech Aj będzie rzeczywistym Dowodzącym. Dla każdego ij losuje on si,ciq i wyznacza Xi=gsi/Aici(modp).
2
Losuje xq i oblicza Xj=gx. Następnie wyznacza sumaryczne zobowiązanie X=iXi(modp) i wysyła X do Weryfikatora.
3
Weryfikator losuje globalne wyzwanie cq i odsyła je Dowodzącemu.
4
Dowodzący oblicza cj=[c-ijci](modq), następnie sj=[x+ajcj](modq) oraz s=[isi](modq). Odsyła s oraz wszystkie wartości c1,,cn.
5
Weryfikator akceptuje wtedy i tylko wtedy, gdy zachodzą równania gs=X·iAici(modp) oraz c=[ici](modq).
  1. Wykaż poprawność algebraiczną protokołu.
  2. Wyjaśnij, dlaczego transkrypt (X,c,s,c1,,cn) nie powinien ujawniać indeksu j rzeczywistego Dowodzącego. Zwróć uwagę na rolę sumarycznego zobowiązania X oraz warunku c=ici.
  3. 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ą.
  4. 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 idI i idR oznaczamy identyfikatory stron, przez CertI i CertR ich certyfikaty, a przez PKI=ga i PKR=gb długoterminowe klucze publiczne zawarte w tych certyfikatach. Wartości X=gx i Y=gy oznaczają wartości efemeryczne. Jeżeli w zadaniu pojawia się symbol K, oznacza on kandydata na klucz sesyjny. W zadaniu o SIGMA dodatkowo używamy oznaczenia KDH na wspólny sekret Diffiego-Hellmana, z którego wyprowadzane są klucze Ks i Km.

Lista nr 7 — zadanie 1: klasyczny Diffie-Hellman bez uwierzytelnienia

Schemat AKE 1
1
Inicjator losuje xq*, oblicza X=gx i wysyła X.
2
Strona odpowiadająca losuje yq*, oblicza Y=gy i odsyła Y.
3
Inicjator oblicza K=H(Yx), a strona odpowiadająca oblicza K=H(Xy).
  1. Wykaż, że w uczciwym wykonaniu obie strony uzyskują ten sam klucz sesyjny.
  2. Wyjaśnij, dlaczego mimo poprawności algebraicznej ten wariant nie zapewnia uwierzytelnienia partnera sesji.
  3. 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.
  4. 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 idI i idR, ich certyfikaty przez CertI i CertR, a klucze publiczne odczytywane z tych certyfikatów przez PKI i PKR. Podpisy są tworzone przy użyciu odpowiednich kluczy prywatnych skI i skR, a następnie weryfikowane za pomocą kluczy publicznych z certyfikatów. W poprawnym wariancie SIGMA obie strony najpierw wyznaczają wspólny sekret Diffiego-Hellmana KDH=gxy=Yx=Xy. Następnie wyprowadzają z niego klucz sesyjny Ks=H(KDH,0) oraz klucz do MAC Km=H(KDH,1). W takim uproszczeniu funkcja H 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 MAC można rozumieć jako krótki znacznik uwierzytelniający liczony z identyfikatora strony przy użyciu klucza Km, 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 xq*, oblicza X=gx i wysyła X.
2
Strona odpowiadająca losuje yq*, oblicza Y=gy, wyznacza wspólny sekret KDH=Xy, a następnie oblicza Ks=H(KDH,0) oraz Km=H(KDH,1). Następnie tworzy podpis przy użyciu swojego klucza prywatnego skR pod parą (X,Y) i odsyła Y,CertR,SigskR(X,Y),MACKm(idR).
3
Inicjator weryfikuje certyfikat CertR, odczytuje z niego klucz publiczny PKR, sprawdza podpis SigskR(X,Y) za pomocą PKR, następnie wyznacza wspólny sekret KDH=Yx, oblicza Ks=H(KDH,0) oraz Km=H(KDH,1), po czym sprawdza MACKm(idR). Następnie tworzy podpis przy użyciu swojego klucza prywatnego skI pod parą (Y,X) i odsyła CertI,SigskI(Y,X),MACKm(idI).
4
Strona odpowiadająca weryfikuje certyfikat CertI, odczytuje z niego klucz publiczny PKI, sprawdza podpis SigskI(Y,X) za pomocą PKI oraz sprawdza MACKm(idI). Klucz sesyjny obu stron ma postać Ks.
Wariant osłabiony: same podpisy
1
Inicjator losuje xq*, oblicza X=gx i wysyła X.
2
Strona odpowiadająca losuje yq*, oblicza Y=gy, a następnie tworzy podpis przy użyciu swojego klucza prywatnego skR pod parą (X,Y) i odsyła Y,CertR,SigskR(X,Y).
3
Inicjator weryfikuje certyfikat CertR, odczytuje z niego klucz publiczny PKR, sprawdza podpis SigskR(X,Y) za pomocą PKR, oblicza K=H(Yx) i odsyła CertI,SigskI(Y,X), gdzie podpis jest utworzony przy użyciu klucza prywatnego inicjatora skI.
4
Strona odpowiadająca weryfikuje certyfikat CertI, odczytuje z niego klucz publiczny PKI, sprawdza podpis SigskI(Y,X) za pomocą PKI i oblicza K=H(Xy).
  1. 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 idI i idR.
  2. 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ą.
  3. Porównaj poprawny SIGMA z wariantem osłabionym bez MAC i wskaż dokładnie, jaki składnik został usunięty.
  4. 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.
  5. Wyjaśnij, dlaczego usunięcie MAC nad identyfikatorami idI i idR niszczy własność poprawnego związania klucza sesyjnego z tożsamościami stron.

Lista nr 7 — zadanie 3: liniowe domknięcie z wyzwaniami c i d

Schemat AKE 3
1
Inicjator losuje xq*, oblicza X=gx i wysyła X.
2
Strona odpowiadająca losuje y,cq*, oblicza Y=gy i odsyła Y,c.
3
Inicjator losuje dq*, oblicza s=[x+a+c](modq) i wysyła d,s.
4
Strona odpowiadająca sprawdza, czy gs=X·PKI·gc. Jeżeli tak, oblicza K=H(Xy), następnie wyznacza w=[y+b+d](modq) i wysyła w.
5
Inicjator sprawdza, czy gw=Y·PKR·gd. Jeżeli tak, oblicza K=H(Yx).
  1. Sprawdź poprawność algebraiczną testów wykonywanych przez obie strony.
  2. Oceń, czy równania weryfikacyjne rzeczywiście wiążą wartości efemeryczne z sekretami długoterminowymi a i b.
  3. 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.
  4. 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 c i d

Schemat AKE 4
1
Inicjator losuje xq*, oblicza X=gx i wysyła X.
2
Strona odpowiadająca losuje y,cq*, oblicza Y=gy i odsyła Y,c.
3
Inicjator losuje dq*, oblicza s=[c(x+a)](modq) i wysyła d,s.
4
Strona odpowiadająca sprawdza, czy gs=(PKI·X)c. Jeżeli tak, oblicza K=H(Xy), następnie wyznacza w=[d(y+b)](modq) i wysyła w.
5
Inicjator sprawdza, czy gw=(PKR·Y)d. Jeżeli tak, oblicza K=H(Yx).
  1. Sprawdź, czy obie strony zaakceptują sesję w uczciwym wykonaniu protokołu.
  2. Porównaj ten wariant z zadaniem 3 i oceń, czy zastąpienie sum przez iloczyny rzeczywiście wzmacnia bezpieczeństwo.
  3. Zbadaj, czy atakujący może dobrać komunikaty tak, aby przejść testy weryfikacyjne bez znajomości sekretu długoterminowego jednej ze stron.
  4. 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 xq*, oblicza X=g[x+a] i wysyła X.
2
Strona odpowiadająca losuje yq*, oblicza Y=g[y+b] i odsyła Y.
3
Inicjator oblicza K=H(Y[x+a]), a strona odpowiadająca oblicza K=H(X[y+b]), gdzie długoterminowe sekrety a i b odpowiadają odpowiednio kluczom publicznym PKI i PKR.
  1. Wykaż, że obie strony uzyskują ten sam klucz sesyjny w uczciwym wykonaniu protokołu.
  2. Zastanów się, jakie informacje o sekretach długoterminowych są ukryte w komunikatach X i Y.
  3. Oceń, czy taki schemat chroni przed atakiem pośrednika (man-in-the-middle) oraz czy zapewnia uwierzytelnienie partnera sesji.
  4. 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 xq*, oblicza X=gx i wysyła X.
2
Strona odpowiadająca losuje yq*, oblicza Y=gy i odsyła Y.
3
Inicjator oblicza K=H(PKRx·Yx·(g2)a).
4
Strona odpowiadająca oblicza K=H(Xy·Xb·PKI2).
  1. Najpierw uprość oba wyrażenia na klucz sesyjny i sprawdź, czy w uczciwym wykonaniu dają ten sam wynik.
  2. Oceń, czy sam fakt zgodności algebraicznej wystarcza tutaj do bezpieczeństwa AKE.
  3. Zbadaj, czy atakujący może manipulować wartościami X i Y tak, aby doprowadzić strony do uzgodnienia klucza bez rzeczywistego uwierzytelnienia partnera.
  4. 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 schematuCzy jest poprawny?Czy jest bezpieczny?Typ ataku / obserwacjaGłówny błąd konstrukcyjny
1
2
3
4
5
6
  1. Odróżnij poprawność algebraiczną od bezpieczeństwa AKE: zgodność klucza po obu stronach nie oznacza jeszcze odporności na atak.
  2. Wskaż, które schematy zawodzą przez brak właściwego uwierzytelnienia partnera, a które przez zbyt prostą strukturę algebraiczną komunikatów.
  3. 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ń |G|, |G1|, |G2|, |GT| i |q| 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.
  1. Oszacuj liczbę potęgowań, mnożeń grupowych, dodawań w q oraz wywołań funkcji haszującej po stronie Dowodzącego i Weryfikatora.
  2. Oszacuj, ile skalarów i ile elementów grupy musi równocześnie przechowywać każda ze stron.
  3. Policz liczbę wiadomości, liczbę rund oraz łączny rozmiar komunikacji w bitach.
  4. Porównaj koszty z wersją demonstracyjną w grupie multiplikatywnej modulo p 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-n

Punkt odniesienia
1
Weź jako punkt odniesienia poprawny anonimowy interaktywny protokół z listy nr 6.
2
Traktuj n jako parametr wejściowy opisujący rozmiar zbioru możliwych tożsamości.
3
Interesuje nas, jak cena anonimowości rośnie wraz z n.
  1. Oszacuj koszt obliczeniowy Dowodzącego i Weryfikatora jako funkcję n.
  2. Wskaż, które operacje wykonywane są dla każdego indeksu i, a które tylko dla rzeczywistego indeksu j.
  3. Oszacuj pamięć potrzebną do przechowywania wartości Xi, ci i ewentualnych pomocniczych sum lub iloczynów.
  4. Policz złożoność komunikacyjną: liczbę rund, liczbę wiadomości oraz rozmiar każdej wiadomości w zależności od n.
  5. 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.
  1. Oszacuj koszt obliczenia podpisu oraz koszt weryfikacji, oddzielając potęgowania lub mnożenia skalarne od pozostałych operacji.
  2. Oszacuj pamięć potrzebną przy generowaniu podpisu i przy jego weryfikacji.
  3. Podaj rozmiar podpisu w bitach jako funkcję rozmiaru skalaru i elementu grupowego.
  4. 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 G1 i G2 oraz operacji parowania.
3
W wariantach wielostronnych oznacz przez n 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 m1,,mn. Dla podpisu pierścieniowego BLS przyjmij, że anonimowość uzyskujemy kosztem zależnym od rozmiaru pierścienia n.
4
W podpisie RSA-FDH uwzględnij osobno koszt potęgowania przy podpisywaniu i przy weryfikacji.
  1. Oszacuj koszt obliczeniowy Podpisującego i Weryfikującego dla pojedynczego podpisu BLS oraz dla RSA-FDH.
  2. Oszacuj koszt obliczeniowy tworzenia i weryfikacji multi-podpisu BLS jako funkcję liczby podpisujących n. Wyraźnie wskaż koszt po stronie każdego podpisującego, koszt agregacji oraz koszt weryfikacji końcowej.
  3. Oszacuj koszt obliczeniowy tworzenia i weryfikacji podpisu agregowanego BLS dla n podpisów. Wyjaśnij, jak zmienia się liczba wywołań funkcji hash-to-curve, mnożeń grupowych i operacji parowania.
  4. Oszacuj koszt obliczeniowy i pamięciowy podpisu pierścieniowego BLS jako funkcję rozmiaru pierścienia n. Wskaż, które elementy kosztu rosną liniowo z n, a które pozostają stałe.
  5. 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.
  6. Wskaż, która operacja dominuje w weryfikacji podpisu BLS i jego wariantów, a która w weryfikacji podpisu RSA-FDH.
  7. 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 n jako parametr wejściowy.
3
Interesuje nas zarówno koszt obliczeń, jak i długość samego podpisu.
  1. Oszacuj koszt obliczeniowy Podpisującego i Weryfikującego jako funkcję n.
  2. Podaj rozmiar podpisu σ=(R1,,Rn,s) w bitach i porównaj go z rozmiarem zwykłego podpisu Schnorra.
  3. Oszacuj pamięć potrzebną do przechowywania wszystkich składników Ri i pomocniczych wartości hi.
  4. 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 Ks i Km, podpisy oraz MAC.
  1. 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.
  2. Oszacuj pamięć roboczą potrzebną do przechowywania wartości efemerycznych, wspólnego sekretu, kluczy Ks i Km, podpisów oraz znaczników MAC.
  3. Policz liczbę rund i wiadomości oraz oszacuj ich łączny rozmiar, zakładając że przesyłane są wartości X, Y, klucze publiczne, podpisy i MAC.
  4. 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ść obliczeniowaZłożoność pamięciowaZłożoność komunikacyjnaDominująca operacja
Identyfikacja Schnorra
Anonimowy interaktywny Schnorr 1-z-n
Podpis Schnorrabrak interakcji; tylko rozmiar podpisu
Podpis BLSbrak interakcji; tylko rozmiar podpisu
Multi-podpis BLSbrak interakcji; tylko rozmiar podpisu
Podpis agregowany BLSbrak interakcji; tylko rozmiar podpisu
Podpis pierścieniowy BLSbrak interakcji; rozmiar podpisu zależny od n
Podpis RSA-FDHbrak interakcji; tylko rozmiar podpisu
Podpis pierścieniowy Herranza-Sáezabrak interakcji; rozmiar podpisu zależny od n
SIGMA
  1. Uzupełnij tabelę zarówno w postaci asymptotycznej, jak i w postaci bardziej konkretnej, podając liczbę najdroższych operacji.
  2. Wskaż, które protokoły są najtańsze obliczeniowo, które najtańsze komunikacyjnie, a które najdroższe pamięciowo.
  3. Wyjaśnij, w jaki sposób anonimowość, publiczna weryfikowalność oraz uwierzytelnione uzgadnianie klucza wpływają na koszt protokołu.