Kryptografia: listy zadań
Schematy identyfikacji, podpisy cyfrowe, anonimowość, uzgadnianie kluczy i szyfrowanie asymetryczne.
Jak zacząć i jak czytać schematy
W tym kursie badamy, co odbiorca może sprawdzić bez poznania sekretu drugiej strony. Najpierw poznajesz działającą konstrukcję, następnie zmieniasz jeden jej element i szukasz konsekwencji. Wariant oznaczony jako zadanie do analizy nie jest rekomendacją do użycia w systemie.
- Identyfikacja, lista 1. Dowodzący przekonuje weryfikatora w bieżącej rozmowie, że zna sekret związany z ustalonym kluczem publicznym.
- Podpisy, listy 2–4. Dowód wiążemy z wiadomością. Podpis może sprawdzić także ktoś, kto nie uczestniczył w jego tworzeniu.
- Anonimowość, listy 5–6. Sprawdzamy uprawnienie jednego członka zbioru, lecz nie ujawniamy, którego. Podpis i interaktywny dowód to nadal różne obiekty.
- Uzgadnianie klucza, listy 7 i 9. Łączymy zgodność klucza z uwierzytelnieniem partnera i analizujemy ujawnienie sekretów. Lista 8 pozwala osobno policzyć koszt tych mechanizmów.
- Szyfrowanie, lista 10. Badamy poufność wiadomości oraz różnicę między ukryciem treści a ochroną przed jej modyfikacją.
Uczestnicy i widoczne informacje
Dowodzący zna sekret; weryfikator sprawdza komunikaty; przeciwnik działa z uprawnieniami podanymi w zadaniu. Transkrypt jest zapisem publicznej wymiany, nie zrzutem wszystkich zmiennych programu. Sekret długoterminowy służy wielu wykonaniom. Losowość efemeryczna jest świeża dla konkretnego wykonania i nie powinna być ponownie używana.
Klucz publiczny sam nie potwierdza nazwiska. Gdy mówimy o identyfikacji Alicji, zakładamy, że weryfikator ma wiarygodne powiązanie jej tożsamości z kluczem. Certyfikat jest jednym ze sposobów ustanowienia takiego powiązania.
Dwa rodzaje wartości, dwa różne moduły
W listach opartych na logarytmie dyskretnym zakładamy grupy rzędu pierwszego i niezerowe skalarne klucze prywatne. Parametry RSA definiujemy osobno w liście 4. Te założenia określają, gdzie wolno obliczać odwrotności i z jakiej dziedziny pochodzą klucze.
W zapisie generator pozwala uzyskać wszystkie elementów grupy. Skalary są liczbami z ; dodajemy je i mnożymy modulo . Gwiazdka w wyklucza zero. Dla pierwszego każda niezerowa wartość ma odwrotność modularną.
Jeśli grupę realizujemy jako podgrupę modulo liczby pierwszej , elementy grupy mnożymy modulo , a wykładniki liczymy modulo . Dzielenie w grupie oznacza mnożenie przez odwrotność, nie dzielenie zmiennoprzecinkowe. Na krzywej eliptycznej tę samą abstrakcyjną operację zapisujemy addytywnie: . Nie potęgujemy współrzędnych punktu.
Przykład do sprawdzenia ręcznie: jeden przebieg Schnorra
Tylko do rachunku, bez bezpieczeństwa: . Sekret daje . Dla losowości zobowiązanie wynosi . Po wyzwaniu odpowiedź to .
To przykład poprawności: obie strony testu dają 12. Nie jest to dowód bezpieczeństwa. Tak mały sekret można znaleźć przez wypróbowanie wszystkich możliwości.
Funkcja haszująca: najpierw sprawdź typ wyniku
- Hasz do skalaru: . Wynik służy jako wyzwanie lub wykładnik, np. w podpisie Schnorra.
- Hasz do punktu: . Indeks wskazuje grupę wyniku. W poprawnym BLS liczymy i . To nie jest skalar, przez który można podzielić podpis.
- Inne typy wyjść: wyprowadza klucze bitowe; zwraca maskę długości bitów; w liście RSA mapuje do . Żadna z tych funkcji nie oznacza hasza do .
- Wadliwy zamiennik: oznacza funkcję celowo zdefiniowaną źle w danym zadaniu. Jej definicja jest lokalna. Nie nadajemy jej nazwy , nawet jeśli formalnie zwraca punkt tej grupy.
Punkt w poprawnej grupie to za mało. Bezpieczne haszowanie do grupy nie udostępnia łatwo obliczalnego logarytmu wyniku względem generatora. Funkcja jest publiczna i deterministyczna; nie oznacza to publicznej znajomości takiego logarytmu. Kontrprzykłady z listy 3 badają właśnie różnicę między poprawnym typem a wymaganymi własnościami bezpieczeństwa.
Argumenty haszy zapisujemy skrótowo jako wiadomości, punkty lub krotki. Rzeczywiste wejścia to ich jednoznaczne kodowania bajtowe, z rozdzieleniem domen dla protokołów i ról. W demonstratorze BLS za haszowanie do odpowiada mcl.hashAndMapToG1; mcl.hashToFr ma wynik skalarny. Nie są zamienne. Notacja nie stanowi deklaracji zgodności bajtowej demonstratora ze standardowym profilem BLS ani konkretnym zestawem RFC 9380.
Gdy angielski wykład rozpatruje ogólną grupę , zapis wskazuje tę właśnie grupę. Analogicznie zwraca punkt . Zachowujemy typy grup, nie zmieniamy ich tylko dla ujednolicenia liter. Źródła: RFC 9380: hash-to-curve; MCL WebAssembly.
Jak napisać rozwiązanie
- Wypisz dane. Kto zna sekret, kto wybiera losowość, kiedy przychodzi wyzwanie i jakie zapytania może wykonać przeciwnik?
- Sprawdź typy i poprawność. Podstaw uczciwe obliczenia do testu. Przy każdej odwrotności wyklucz zero; przy XOR uzgodnij długości ciągów bitów.
- Zapisz atak jako algorytm. Wyprowadź jego wynik wyłącznie z dostępnych informacji, a potem sprawdź go tym samym równaniem co uczciwy odbiorca.
- Podaj zakres wniosku. Jeden udany przykład nie dowodzi bezpieczeństwa, a brak znalezionego ataku nie jest dowodem jego braku. Osobno oceniaj poprawność, podszycie, fałszerstwo, anonimowość i poufność.
Wzory opisują modele dydaktyczne. Demonstratory pokazują ich rachunek; ujawniają sekrety na ekranie, aby można było go prześledzić. Nie służą do przechowywania rzeczywistych kluczy ani zabezpieczania danych.
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 , liczona zgodnie ze wzorem , gdzie oznacza średnią punktów z przydzielonych zadań, a oznacza średnią punktów ze sprawdzianów.
- Średnia 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ą 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 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.
Lista nr 1 — wprowadzenie
W zadaniach tej listy zakładamy, że jest grupą cykliczną rzędu pierwszego , a sekret Dowodzącego ma postać . Klucz publiczny ma postać:
Cel analizy każdego schematu
- Sprawdzić poprawność schematu dla uczciwego Dowodzącego.
- Ocenić, czy schemat jest bezpieczny jako schemat identyfikacji.
- Jeśli nie jest bezpieczny, podać atak podszycia się.
- Oddzielić pojęcia: poprawność, rzetelność i odporność na fałszerstwo.
Lista nr 1 — punkt odniesienia: klasyczny Schnorr
Najpierw ustalamy publiczne parametry grupy i klucz publiczny. Sekret jest niezerowy. W tym punkcie odniesienia i obu demonstratorach Schnorra losujemy niezależnie wartość jednorazową oraz wyzwanie z całego ciała skalarów, z dopuszczeniem zera. Niektóre warianty zadań poniżej celowo zawężają ten zbiór; uwzględnij to, gdy liczysz dokładne prawdopodobieństwa.
Trzy wiadomości mają różne role: zobowiązanie utrwala wybór dowodzącego, nieprzewidywalne wyzwanie uniemożliwia przygotowanie odpowiedzi z góry, a odpowiedź łączy to wyzwanie z sekretem. Weryfikator zna klucz publiczny, lecz nie otrzymuje ani sekretu, ani wartości jednorazowej. Sam zapis równania nie wystarczy, jeżeli zmienimy tę kolejność.
Punkt odniesienia dla całej listy: klasyczny schemat identyfikacji Schnorra.
- Wyjaśnij, czym strukturalnie Schnorr różni się od analizowanych konstrukcji.
- Pokaż, dlaczego odpowiedź w Schnorrze nie daje się łatwo sfałszować po poznaniu wyzwania.
- Wskaż, które z analizowanych schematów przypominają Schnorra tylko powierzchownie.
- Zaproponuj poprawkę do jednego z błędnych schematów tak, aby zbliżyć go do poprawnego protokołu identyfikacji.
Losowość protokołu: wyciek, ustawianie i reset
Wartość z poprzedniego schematu jest sekretem efemerycznym: służy jednemu wykonaniu. Sekret jest długoterminowy. Przejęcie tej pierwszej wartości może jednak ujawnić także tę drugą. Nazwy ephemeral leakage i randomness leakage odnoszą się tutaj do wycieku losowości wykonania; setting i injection opisują możliwość jej narzucenia. W katalogu publikacji grupujemy te scenariusze pod hasłem randomness leakage and setup.
- Wyciek: urządzenie losuje , a przeciwnik poznaje tę wartość przez dopuszczony w modelu interfejs ujawnienia.
- Ustawianie lub wstrzyknięcie: przeciwnik dostarcza do urządzenia wybraną przez siebie, dozwoloną wartość przed jej użyciem. Chodzi o losowość wewnętrzną, nie o wybór publicznej wiadomości do podpisania.
- Reset lub ponowne użycie: przywrócenie stanu może spowodować powtórzenie tej samej losowości. Przeciwnik nie musi znać jej wartości. Reset nie oznacza automatycznie ustawienia zera ani żadnej znanej stałej.
Najpierw sprawdź, czy losowość rzeczywiście się powtarza. Na przykład deterministyczne wyprowadzanie jej z klucza i wiadomości może po resecie dać różne wartości dla różnych wiadomości. Samo ponowne uruchomienie urządzenia nie dowodzi ponownego użycia tego samego zobowiązania.
Znana losowość: wystarcza jedna odpowiedź
Klasyczny Schnorr zwraca skalar . Wszystkie poniższe rachunki na skalarach wykonujemy modulo . Jeśli przeciwnik zna i otrzymał odpowiedź na niezerowe wyzwanie, oblicza:
Nie ma znaczenia dla tego rachunku, czy przeciwnik poznał losowość, czy wcześniej sam ją ustawił. Dla odpowiedź nie zawiera składnika z kluczem, więc ten wzór nie ma zastosowania.
Powtórzona, nieznana losowość: odejmujemy odpowiedzi
Dwa akceptowane przebiegi z tym samym kluczem i zobowiązaniem, lecz różnymi wyzwaniami, dają:
Odejmując, usuwamy nieznane . Dopiero niezerowa różnica wyzwań pozwala wykonać odwrócenie:
Przykład: użyjmy wcześniejszych parametrów , i . Wyzwania oraz dają odpowiedzi 10 i 3. Przy znanej losowości liczymy . Przy samej wiedzy o powtórzeniu liczymy . Oba wyniki są liczone modulo 11, ale w drugim rachunku nie używamy wartości 4.
W podpisie Schnorra wyzwanie wynika z haszowania. Inna wiadomość zwykle daje inne wyzwanie, lecz warunkiem jest różnica wyzwań modulo , a nie sama różnica wiadomości. Jeśli losowość nie jest wspólna, po odjęciu pozostaje dodatkowa niewiadoma i powyższy wzór nie odzyskuje klucza.
Ta sama algebra w ataku i w dowodzie
W dowodzie wiedzy lub redukcji bezpieczeństwa parę akceptowanych przebiegów może uzyskać ekstraktor, cofając wykonanie przeciwnika (rewinding) albo stosując lemat o rozwidleniu (forking lemma). W ataku parę może dostarczyć reset urządzenia. Wspólne jest rugowanie niewiadomej; uprawnienia do uzyskania tej pary i prawdopodobieństwo sukcesu trzeba uzasadnić osobno.
Niech będzie ustaloną podstawą w grupie rzędu . Jeżeli zamiast skalaru protokół ujawnia tylko element grupy , analogiczne działania mogą dać , nie skalar . Pairing umożliwia sprawdzanie relacji między elementami grup, lecz nie odczytuje wykładników. Szczegółowe wyprowadzenie znajduje się w System Security II.
Model pozwalający narzucać losowość może również odtworzyć jej uczciwe losowanie i ujawnienie, jeżeli zgadzają się faza protokołu, dziedzina wartości i moment ujawnienia. Nie utożsamiamy jednak automatycznie wszystkich modeli wycieku ze wszystkimi modelami ustawiania. Przykłady konkretnych interfejsów podają modyfikacja Schnorra (2016), jej wersja czasopismowa (2020) oraz anonimowa identyfikacja, §2 (2019).
Ćwiczenie kontrolne. Sprawdź oba rachunki z przykładu. Następnie ustaw jednakowe wyzwania i wskaż, dlaczego nie wolno obliczyć odwrotności. Na końcu zmień losowość drugiego przebiegu: wypisz niewiadome, które pozostają po odjęciu odpowiedzi. Oddziel możliwość odzyskania klucza od samej poprawności transkryptów.
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.
Przebieg poprawnego protokołu: klucz publiczny , zobowiązanie , odpowiedź , weryfikacja .
1. Parametry
Krzywa i generator grupy.
2. Klucze
Losowanie sekretu i klucza publicznego.
3. Zobowiązanie
Losowanie wartości efemerycznej.
4. Wyzwanie
Losowe wyzwanie od Weryfikatora.
5. Odpowiedź
Obliczenie odpowiedzi protokołu.
6. Weryfikacja
Sprawdzenie warunku akceptacji.
Demonstrator BigInt - klasyczny Schnorr w grupie multiplikatywnej modulo
Ten sam punkt odniesienia w grupie multiplikatywnej modulo . Tu również obowiązuje wzór , , i test .
Możesz ustawić bardzo małe parametry, np. 23 / 11 / 2, albo większe. Wymagamy liczb pierwszych i , warunku oraz zależności oraz .
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 i , użyj przycisku wyznaczania .
2. Klucze
Losowanie sekretu i klucza publicznego.
3. Zobowiązanie
Losowanie wartości efemerycznej.
4. Wyzwanie
Wyzwanie w zbiorze Zq.
5. Odpowiedź
Obliczenie odpowiedzi modulo q.
6. Weryfikacja
Porównanie obu stron równania.
Lista nr 1 — zadanie 1: analiza pierwszego schematu
- Sprawdź, czy uczciwy Dowodzący, znający , zawsze przechodzi weryfikację.
- Oceń, czy atakujący nieznający może się skutecznie podszyć.
- Jeśli schemat jest niebezpieczny, podaj jawny sposób skonstruowania transkryptu akceptowanego przez weryfikatora.
- Wyjaśnij, czy atakujący musi znać logarytm dyskretny klucza publicznego .
Lista nr 1 — zadanie 2: analiza drugiego schematu
- Udowodnij poprawność działania dla uczciwego Dowodzącego.
- Zbadaj, czy odpowiedź ma właściwą postać z punktu widzenia bezpieczeństwa identyfikacji.
- Zaprojektuj atakującego, który wybiera i wysyła przed otrzymaniem wyzwania , a następnie konstruuje odpowiedź pozwalającą przejść weryfikację.
- Oceń, czy wyzwanie rzeczywiście utrudnia podszycie się.
Lista nr 1 — zadanie 3: analiza trzeciego schematu
- Wykaż poprawność dla uczciwego Dowodzącego.
- Zauważ, że w warunku akceptacji nie występuje bezpośrednio ani , ani . Czy to jest sygnał ostrzegawczy? Uzasadnij.
- Sprawdź, czy osoba nieznająca może dobrać i tak, by przejść test.
- Jeśli tak, zapisz pełny atak krok po kroku.
- Wyjaśnij, czy pełni tu rolę dowodu wiedzy, czy raczej dodatkowej zmiennej łatwej do sfałszowania.
Lista nr 1 — zadanie 4: analiza czwartego schematu
- Udowodnij poprawność schematu dla uczciwego Dowodzącego.
- Zastanów się, czy równanie weryfikacyjne można spełnić bez znajomości .
- Czy atakujący może najpierw wybrać dowolne , a potem wyznaczyć tak, aby przejść weryfikację?
- Jeśli tak, pokaż pełny atak i oceń, czy schemat rzeczywiście wiąże odpowiedź z sekretem.
- Porównaj ten schemat z poprzednim — czy problem jest podobny, czy inny?
Lista nr 1 — zadanie 5: analiza piątego schematu
- Rozwiń algebraicznie obie strony warunku akceptacji i sprawdź poprawność.
- Ustal, czy zależność weryfikacyjna naprawdę wymusza znajomość sekretu .
- Sprawdź, czy atakujący może dowolnie wybrać część odpowiedzi, a resztę dopasować.
- Oceń, czy większa złożoność wzorów poprawia bezpieczeństwo, czy tylko zaciemnia obraz.
- Sformułuj ogólną intuicję: dlaczego bardziej skomplikowane równanie nie musi oznaczać bezpieczniejszego protokołu.
Lista nr 1 — zadanie porównawcze
Dla wszystkich pięciu schematów sporządź tabelę porównawczą i uzupełnij ją po przeprowadzeniu analizy.
| Nr schematu | Czy jest poprawny? | Czy jest bezpieczny? | Typ ataku / obserwacja | Główny błąd konstrukcyjny |
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 | ||||
| 4 | ||||
| 5 |
- Wskaż, które schematy są trywialnie fałszowalne.
- Wskaż, w których przypadkach odpowiedź można skonstruować bez znajomości sekretu.
- Sformułuj jedną wspólną zasadę projektowania poprawnych schematów identyfikacji typu sigma.
Lista nr 2 — podpisy
Druga lista dotyczy schematów podpisu inspirowanych konstrukcją Schnorra. W każdym zadaniu należy ocenić poprawność algebraiczną, poziom bezpieczeństwa oraz wskazać możliwie najsilniejszy atak, jeżeli schemat nie jest bezpieczny.
Co oznacza fałszerstwo?
W modelu EUF-CMA przeciwnik zna klucz publiczny i może otrzymywać podpisy wybranych wiadomości. Wygrywa, gdy poda akceptowany podpis pod nową wiadomością, której nie przekazał do podpisania. Nie musi odzyskać klucza. Przy każdym ataku zapisz, ile podpisów uzyskał i dlaczego wynik dotyczy nowej wiadomości.
oznacza hasz jednoznacznego kodowania wiadomości i zobowiązania, z wynikiem w dziedzinie wyzwań. Samo połączenie napisów bez określenia granic pól może być niejednoznaczne. Warianty z , mnożeniem lub XOR wymagają zadeklarowania reprezentacji; tekst wiadomości i element grupy nie są automatycznie liczbami tego samego typu.
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 .
- Traktuj ten wariant jako kryptograficzny punkt odniesienia dla całej listy nr 2.
- Przy analizie kolejnych zadań zawsze sprawdzaj, czy zachowano poprawne związanie wiadomości z przez .
- Zwracaj uwagę, czy równanie weryfikacyjne rzeczywiście wiąże podpis z kluczem publicznym .
Demonstrator WASM — poprawny podpis Schnorra
Demonstrator podpisu Schnorra na krzywej eliptycznej w zapisie addytywnym. Punkt odniesienia ma postać , , , oraz warunek .
1. Parametry
Krzywa i generator grupy.
2. Klucze
Losowanie sekretu i klucza publicznego.
3. Wiadomość
Treść podpisywanej wiadomości.
4. Losowanie r
Wartość efemeryczna i zobowiązanie.
5. Skrót i podpis
Obliczenie i .
6. Weryfikacja
Sprawdzenie podpisu.
Demonstrator BigInt — poprawny podpis Schnorra w
Ta wersja działa w grupie multiplikatywnej modulo . Podpis ma postać , , , i test .
1. Parametry
Możesz użyć małych lub większych parametrów podgrupy Schnorra.
2. Klucze
Losowanie sekretu i klucza publicznego.
3. Wiadomość
Treść podpisywanej wiadomości.
4. Losowanie r
Wartość efemeryczna i zobowiązanie.
5. Skrót i podpis
Obliczenie i .
6. Weryfikacja
Sprawdzenie podpisu.
Lista nr 2 — zadanie 1: wariant z
- Wykaż poprawność schematu dla uczciwego Podpisującego.
- Porównaj ten wariant z poprawnym podpisem Schnorra z punktu odniesienia i oceń, co zmienia pominięcie w wejściu funkcji skrótu.
- Zbadaj, czy ten wariant zachowuje bezpieczeństwo podpisu Schnorra, czy też otwiera drogę do fałszerstwa.
- Wskaż rolę losowej wartości i wyjaśnij, dlaczego nie wolno jej powtarzać.
Lista nr 2 — zadanie 2:
- Najpierw oceń, czy zapis jest dobrze określony bez dodatkowego kodowania.
- Jeśli przyjmiesz naturalne kodowanie do , zbadaj poprawność i bezpieczeństwo schematu.
- Sprawdź, czy podpis można sfałszować przez dobranie lub po ustaleniu wiadomości.
- Porównaj ten pomysł z poprawnym użyciem w podpisie Schnorra.
Lista nr 2 — zadanie 3:
- Wyjaśnij, w jakiej domenie iloczyn miałby być liczony.
- Sprawdź, czy takie związanie wiadomości z daje odporność na fałszerstwo, czy tylko pozór związania.
- Zbadaj, czy można dobrać podpis dla wybranej wiadomości bez znajomości sekretu .
- Porównaj ten schemat z zadaniem 2: czy problem jest zasadniczo ten sam, czy inny?
Lista nr 2 — zadanie 4: (XOR)
- Załóż, że oznacza bitowy XOR. Oceń, jakie kodowanie wiadomości i zobowiązania byłoby potrzebne, aby taki zapis był w ogóle dobrze określony.
- Wyjaśnij, czy wynik XOR można potraktować jako sensowny odpowiednik wyzwania używanego w podpisie Schnorra.
- Zbadaj, czy przy naturalnych interpretacjach XOR i mapowania do możliwe jest skuteczne fałszerstwo podpisu.
- Sformułuj ogólny wniosek: dlaczego prosta operacja XOR na i nie zastępuje bezpiecznej funkcji skrótu .
Lista nr 2 — zadanie 5: podpis z dodatkową wartością
- Wykaż poprawność równania weryfikacyjnego dla uczciwego Podpisującego.
- Zauważ, że weryfikacja nie korzysta bezpośrednio z klucza publicznego . Oceń znaczenie tego faktu.
- Sprawdź, czy atakujący może dobrać i tak, by przejść weryfikację bez znajomości .
- Wyjaśnij, czy wartość ma tu realny wpływ na bezpieczeństwo podpisu, czy tylko wpływa na obliczenie .
Lista nr 2 — zadanie 6: podpis ze skrótem zależnym od
- Sprawdź poprawność schematu dla uczciwego Podpisującego.
- Oceń, czy dodanie do wejścia funkcji skrótu naprawia zasadniczy problem z poprzedniego schematu.
- Zbadaj, czy atakujący może dobrać podpis po wyborze , i bez znajomości sekretu.
- Porównaj ten schemat z zadaniem 5 i wskaż, czy zmiana jest tylko kosmetyczna, czy rzeczywiście istotna.
Lista nr 2 — tabela porównawcza
Po przeanalizowaniu wszystkich schematów uzupełnij tabelę porównawczą dla listy nr 2.
| Nr schematu | Czy jest poprawny? | Czy jest bezpieczny? | Typ ataku / obserwacja | Główny błąd konstrukcyjny |
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 | ||||
| 4 | ||||
| 5 | ||||
| 6 |
- Wskaż, które schematy zachowują zasadniczą strukturę podpisu Schnorra, a które jedynie powierzchownie go przypominają.
- Wskaż, w których przypadkach problemem jest zły sposób definiowania , a w których brak związania podpisu z kluczem publicznym.
- Sformułuj jedną wspólną zasadę projektowania poprawnych podpisów Schnorra i schematów opartych na tej konstrukcji.
Lista nr 3 — podpisy BLS
Trzecia lista dotyczy podpisów BLS. Celem jest zrozumienie, dlaczego w tym schemacie poprawna definicja funkcji jako bezpiecznej funkcji hash-to-curve jest kluczowa.
Lista nr 3 — jeden sekret, klucze w dwóch grupach
Ten sam sekret może mieć dwie publiczne reprezentacje: oraz . Nie losujemy dwóch niezależnych sekretów. Pary i współdzielą ten sam skalar.
| Profil | Klucz sekretny | Dane publiczne użytkownika |
|---|---|---|
| Minimalny | ||
| Rozszerzony |
Standardowy BLS nie wymaga obu kluczy. Gdy podpis jest w , do jego weryfikacji wystarcza w . Taką orientację opisuje projekt specyfikacji CFRG BLS, §2.1 (Internet-Draft, dokument roboczy). Profil rozszerzony wprowadzamy tu jako dodatkowy model do ćwiczeń, nie jako wymóg standardu. W dalszych równaniach .
W zapisie potęgowym te same klucze to i . Są to elementy różnych grup. Przy parowaniu typu 3, jak w tym demo, nie zakładamy efektywnego przekształcenia klucza z jednej grupy źródłowej do drugiej. Znając sekret, użytkownik oblicza oba klucze bez takiego przekształcenia.
Publiczny test zgodności
Najpierw sprawdzamy, czy oba klucze są poprawnymi, niezerowymi punktami odpowiednich podgrup rzędu . Następnie, bez znajomości , sprawdzamy:
Pierwszy argument każdego parowania należy do , drugi do , a porównujemy elementy . Dla kluczy utworzonych z tego samego sekretu obie strony wynoszą , co wynika z dwuliniowości.
Dlaczego działa też implikacja odwrotna? Zapiszmy oraz , gdzie . Test daje . Element ma rząd , więc w . Klucze reprezentują zatem ten sam skalar.
Zgodność nie jest dowodem znajomości sekretu. Skopiowanie cudzej pary kluczy również przechodzi ten test. Nie potwierdza on tożsamości użytkownika ani posiadania sekretu. Nie jest też dowodem niepodrabialności podpisu.
Poprawność a dowód bezpieczeństwa
Równanie weryfikacji podpisu pozostaje takie samo w obu profilach. W dowodzie bezpieczeństwa trzeba jednak jawnie podać, co otrzymuje przeciwnik. Dla profilu rozszerzonego otrzymuje również . Redukcja musi umieć przygotować tę dodatkową, zgodną reprezentację z danych swojego wyzwania. Nie wolno pomijać tego kroku ani uzasadniać bezpieczeństwa samym testem zgodności kluczy.
Lista nr 3 — punkt odniesienia: poprawny podpis BLS
W poprawnym BLS haszujemy wiadomość do punktu grupy, a następnie mnożymy ten punkt przez klucz sekretny. Wynikiem haszowania jest punkt, nie znany skalar służący do przemnożenia stałego generatora.
Funkcja jest funkcją hash-to-curve (hash-to-point). W analizie BLS modelujemy ją jako wyrocznię losową do grupy. Dla ustalonej wiadomości i parametrów każdy oblicza ten sam punkt . Mapowanie nie ujawnia jednak logarytmu dyskretnego tego punktu względem stałego generatora .
Nieprzewidywalność nie oznacza tajności ani ponownego losowania. Punkt jest publicznie obliczalny. W modelu wyroczni losowej wynik dla nowej wiadomości jest nieprzewidywalny przed zapytaniem o nią; znajomość wcześniejszych wyników nie pozwala go przewidzieć. Niezerowy punkt grupy rzędu pierwszego sam jest generatorem, ale nie zastępuje stałych parametrów i nowymi parametrami przy każdym podpisie.
Równanie poniżej zakłada poprawne punkty wejściowe. Przy przyjmowaniu danych z zewnątrz weryfikator najpierw sprawdza kodowanie, przynależność klucza i podpisu do właściwych podgrup oraz odrzuca zerowy klucz publiczny. Samo porównanie wyników parowania nie zastępuje tej walidacji.
- Traktuj ten wariant jako kryptograficzny punkt odniesienia dla całej listy nr 3.
- Zwracaj uwagę, czy funkcja naprawdę zachowuje się jak bezpieczne mapowanie wiadomości do punktu grupy.
- W każdym kolejnym zadaniu sprawdzaj, czy z podpisu na jednej wiadomości można wyprowadzić podpis na innej wiadomości bez znajomości sekretu .
Lista nr 3 — jedna konstrukcja, dwie notacje
Na tablicy często używam zapisu potęgowego, ponieważ jest krótszy. W opisie grup punktów krzywej oznacza wtedy dokładnie tę samą operację co : mnożenie punktu przez skalar. Nie potęgujemy jego współrzędnych.
W poniższym zestawieniu i są punktami tej samej grupy źródłowej, albo . Litery oznaczają te same obiekty w obu kolumnach; zmienia się wyłącznie konwencja zapisu działania grupowego.
| Znaczenie | Zapis addytywny | Zapis potęgowy |
|---|---|---|
| Dodawanie punktów | ||
| Mnożenie punktu przez skalar | ||
| Przykład: trzy kopie punktu | ||
| Klucz publiczny BLS | ||
| Punkt wiadomości | ||
| Podpis BLS |
Jeżeli generator oznaczamy literą , zapis ma na krzywej tę samą interpretację co . Zapis nie oznacza więc przeniesienia punktu do innej grupy ani potęgowania liczby modulo . W demonstratorach BigInt modulo pracujemy natomiast rzeczywiście w grupie multiplikatywnej liczb.
To samo równanie weryfikacji
W obu notacjach weryfikator sprawdza . Dwuliniowość wyjaśnia, dlaczego test akceptuje podpis utworzony przez właściciela sekretu:
| Addytywnie | |
|---|---|
| Potęgowo |
Wyniki parowania należą do ; potęgowanie wykonujemy w tej grupie docelowej. Zmiana notacji w i nie zamienia miejscami argumentów parowania: pierwszy nadal należy do , drugi do .
BLS a Schnorr. W BLS jest punktem, a podpis to . W podpisie Schnorra skrót wyznaczający wyzwanie jest skalarem; w wariancie z listy nr 2 jest to , gdzie jest zobowiązaniem. Są to różne typy wyników i różne role funkcji haszującej.
Źródła: Boneh, Drijvers, Neven: definicja BLS w zapisie potęgowym; RFC 9380: haszowanie do punktów krzywej.
Demonstrator WASM — poprawny podpis BLS
Demonstrator pokazuje klasyczny wariant BLS z haszowaniem wiadomości do i kluczem publicznym w . Obliczamy , , , a weryfikacja sprawdza warunek .
Punkt wiadomości wyznacza mcl.hashAndMapToG1, a podpis oblicza mcl.mul. Wejściem haszowania jest jednoznaczny zapis JSON.stringify(['bls', m]), zawierający etykietę domeny i wiadomość. Nie jest to kodowanie wiadomości do wykładnika. Demo pokazuje algebraiczny rdzeń BLS; nie deklaruje zgodności bajtowej z określonym standardowym zestawem parametrów BLS.
Dodatkowo obliczamy , aby pokazać profil rozszerzony. Przycisk „Sprawdź klucze” porównuje dwa parowania bez używania sekretu; nie sprawdza podpisu wiadomości. Demo pracuje wyłącznie na punktach wygenerowanych lokalnie w odpowiednich podgrupach, nie przyjmuje kluczy z zewnątrz. Sekret pokazujemy tylko dydaktycznie. Test wydajności obejmuje haszowanie, podpis i jego weryfikację, bez generowania i testu zgodności kluczy.
1. Parametry
Krzywa i generatory grup.
2. Klucze
Jeden sekret i dwie publiczne reprezentacje.
3. Wiadomość
Treść podpisywanej wiadomości.
4. Hash-to-Curve
MCL mapuje wiadomość do punktu ; nie mnożymy stałego generatora przez publiczny skalar wyznaczony z wiadomości.
5. Podpis
Obliczenie .
6. Weryfikacja
Porównanie obu stron równania parowań.
Lista nr 3 — zadanie 1: stała funkcja
Celowo wadliwy wariant. Funkcja jest zdefiniowanym poniżej zamiennikiem, a nie poprawną funkcją .
- Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
- Wyjaśnij, dlaczego podpis na jednej wiadomości staje się automatycznie podpisem na każdej innej wiadomości.
- Opisz możliwie najsilniejszy atak fałszerstwa na ten schemat.
- Porównaj ten błąd z sytuacją, w której funkcja skrótu w podpisie Schnorra nie zależy w istotny sposób od wiadomości.
- Profil rozszerzony. Rozpatrz dodatkowo przypadek, gdy znany jest skalar taki, że . Czy publiczny pozwala wtedy fałszować bez zapytania o podpis? Wyjaśnij, dlaczego nie należy automatycznie zakładać znajomości takiego dla dowolnego punktu .
Lista nr 3 — zadanie 2: liniowa funkcja
Celowo wadliwy wariant. Funkcja jest zdefiniowanym poniżej zamiennikiem, a nie poprawną funkcją .
Celowo błędny wariant do analizy. W tym zadaniu zastępujemy hash-to-curve publicznym kodowaniem wiadomości do skalaru i mnożeniem stałego generatora przez ten skalar. Funkcja oznacza tu jawne publiczne kodowanie. Nie jest to definicja poprawnego BLS ani mapowanie używane w demonstratorze powyżej.
- Wykaż poprawność schematu dla uczciwego Podpisującego.
- Załóż, że atakujący ma podpis na wiadomość z . Pokaż, jak skonstruować podpis na wiadomość przez odpowiednie przeskalowanie .
- Wyjaśnij, dlaczego publiczna liniowość funkcji jest tu wadą.
- Profil rozszerzony. Pokaż, jak obliczyć podpis z samego publicznego skalaru i klucza , bez znajomości sekretu i bez żadnego zapytania o podpis. Sprawdź wynik równaniem parowania. Porównaj z atakiem po jednym podpisie w profilu minimalnym.
- Oceń, co dzieje się w przypadku i czy to dodatkowo pogarsza bezpieczeństwo.
Lista nr 3 — zadanie 3: zbyt krótki skrót
Celowo wadliwy wariant. Funkcja jest zdefiniowanym poniżej zamiennikiem, a nie poprawną funkcją .
- Wyjaśnij, dlaczego tak zdefiniowana funkcja prowadzi do łatwych kolizji wiadomości.
- Pokaż, jak wykorzystać znalezienie dwóch wiadomości z do sfałszowania podpisu.
- Oceń, jak rośnie skuteczność ataku wraz ze skracaniem wartości .
- Porównaj ten błąd z poprawnym wymaganiem, aby zachowywała się jak bezpieczna funkcja hash-to-curve o dużej odporności na kolizje.
- Atak niezależny od kolizji. W profilu minimalnym wykorzystaj jeden podpis dla niezerowego skrótu i przeskalowanie jak w zadaniu 2. W profilu rozszerzonym wykorzystaj bezpośrednio . Wyjaśnij, dlaczego samo wydłużenie skrótu nie usuwa tej wady.
Lista nr 3 — zadanie 4: homomorficzna funkcja
Celowo wadliwy wariant. Funkcja jest zdefiniowanym poniżej zamiennikiem, a nie poprawną funkcją .
Dziedzina tego zadania. ma publicznie obliczalne działanie zamknięte w zbiorze wiadomości, a ma własność podaną poniżej. Ten iloczyn oznacza działanie na wiadomościach, nie mnożenie punktów krzywej. W ataku wybierz wiadomości tak, aby wynik działania nie był żadną z wcześniej podpisanych wiadomości.
- Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
- Załóż, że atakujący zna podpisy pod oraz pod . Pokaż, że suma jest poprawnym podpisem pod wiadomością .
- Wyjaśnij, dlaczego publiczna homomorficzność funkcji umożliwia składanie podpisów bez znajomości sekretu .
- Porównaj ten atak z zadaniem 2: wskaż, co jest wspólnym źródłem słabości obu konstrukcji.
- Silniejszy atak. Czy w profilu minimalnym wystarczy jeden podpis z niezerowym kodowaniem, zamiast dwóch? W profilu rozszerzonym skonstruuj podpis bez jakiegokolwiek zapytania, korzystając z . Wskaż, dlaczego te ataki nie wymagają homomorficzności kodowania.
Lista nr 3 — zadanie 5: łatwy logarytm dyskretny w obrazie
Celowo wadliwy wariant. Funkcja jest zdefiniowanym poniżej zamiennikiem, a nie poprawną funkcją .
- Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
- Załóż, że atakujący zna jeden poprawny podpis pod wiadomością i potrafi obliczyć takie, że , przy czym . Pokaż, jak odzyskać punkt .
- Dla dowolnej nowej wiadomości oblicz z warunku i skonstruuj poprawny podpis pod bez znajomości sekretu .
- Wyjaśnij, dlaczego nie trzeba rozwiązywać problemu logarytmu dyskretnego dla dowolnego punktu grupy . Wystarcza możliwość wyznaczenia logarytmu punktu zwróconego przez tę wadliwą funkcję dla znanej wiadomości.
- Profil rozszerzony. Punkt odzyskiwany w poprzednich krokach jest teraz publicznym kluczem . Pokaż atak bez zapytania o podpis. Wyjaśnij, dlaczego nie można go przenieść na poprawne hash-to-curve, które nie ujawnia logarytmu punktu względem .
Lista nr 3 — tabela porównawcza
Po przeanalizowaniu wszystkich schematów BLS uzupełnij tabelę osobno dla profilu minimalnego i rozszerzonego. Przy każdym ataku podaj liczbę potrzebnych podpisów, warunki jego wykonania i nową wiadomość będącą celem fałszerstwa.
| Nr schematu | Czy jest poprawny? | Czy jest bezpieczny? | Typ ataku / obserwacja | Główny błąd konstrukcyjny |
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 | ||||
| 4 | ||||
| 5 |
- Wskaż, które schematy są poprawne algebraicznie, ale całkowicie nieodporne na fałszerstwo.
- Odróżnij cztery typy błędów: funkcję stałą, publiczną liniowość lub homomorficzność funkcji , zbyt małą odporność na kolizje oraz łatwy logarytm dyskretny w obrazie funkcji .
- Sformułuj jedną wspólną zasadę: jakie własności musi mieć funkcja hash-to-curve, aby podpis BLS mógł być bezpieczny.
Lista nr 4 — podpisy RSA Full Domain Hash
Czwarta lista dotyczy podpisów RSA-FDH. Celem jest zrozumienie, że w tym schemacie funkcja nie może zachowywać prostych zależności algebraicznych między wiadomościami, ponieważ prowadzi to do fałszerstw.
Parametry RSA i dziedzina wiadomości
Tu oznacza iloczyn dwóch różnych liczb pierwszych. Litera jest w tej liście czynnikiem modułu RSA, nie rzędem grupy z poprzednich list. liczy elementy . Wybieramy i . Publiczne są ; sekretne pozostają i czynniki modułu.
W zadaniach 1–2 wiadomości są kanonicznymi zapisami liczb z , a zwraca tę liczbę. Dzięki temu dla obliczonego reprezentanta potrafimy zapisać odpowiadającą wiadomość. Nie zakładamy umiejętności odwracania dowolnej funkcji haszującej. W zadaniu 3 wiadomości kodujemy jako liczby całkowite z jawnie określonego zakresu; suma użyta w ataku musi należeć do tego zakresu i opisywać nową wiadomość.
Lista nr 4 — punkt odniesienia: poprawny podpis RSA-FDH
W poprawnym podpisie RSA-FDH najpierw haszujemy wiadomość do pełnej dziedziny modulo , a dopiero potem wykonujemy operację RSA. To właśnie funkcja ma zniszczyć proste zależności algebraiczne między wiadomościami.
- Traktuj ten wariant jako punkt odniesienia dla całej listy nr 4.
- Zwracaj uwagę, czy funkcja rzeczywiście usuwa przewidywalne zależności algebraiczne między wiadomościami.
- W kolejnych zadaniach sprawdzaj, czy z jednego lub z dwóch podpisów można skonstruować podpis pod nową wiadomością bez znajomości .
Lista nr 4 — zadanie 1: brak funkcji haszującej
- Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
- Załóż, że atakujący zna podpisy pod wiadomością oraz pod wiadomością . Pokaż, że iloczyn jest poprawnym podpisem pod wiadomością spełniającą .
- Wyjaśnij, dlaczego brak funkcji pozostawia publiczną strukturę multiplikatywną wiadomości i umożliwia fałszerstwo.
- Porównaj ten błąd z poprawnym podpisem RSA-FDH.
Lista nr 4 — zadanie 2: słaba funkcja
Celowo wadliwy wariant. Funkcja zastępuje właściwy pełnodziedzinowy hasz RSA ; nie oznacza funkcji hash-to-curve.
- Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
- Załóż, że atakujący zna podpisy pod wiadomościami i . Pokaż, że iloczyn tych podpisów jest poprawnym podpisem pod wiadomością taką, że .
- Wyjaśnij, dlaczego publiczna transformacja nie usuwa struktury multiplikatywnej, tylko ją zachowuje.
- Porównaj ten błąd z zadaniem 1: wskaż, dlaczego taka funkcja nadal nie spełnia roli bezpiecznego haszowania.
Lista nr 4 — zadanie 3: słaba funkcja
Celowo wadliwy wariant. Funkcja zastępuje właściwy pełnodziedzinowy hasz RSA ; nie oznacza funkcji hash-to-curve.
- Wykaż poprawność algebraiczną schematu dla uczciwego Podpisującego.
- Przyjmij, że przestrzeń wiadomości jest utożsamiona z liczbami całkowitymi z ustalonego zakresu. Pokaż, że z podpisów pod wiadomościami oraz można skonstruować podpis pod wiadomością spełniającą .
- Wyjaśnij, dlaczego homomorfizm w wykładniku, czyli zależność modulo , wystarcza do fałszerstwa.
- Porównaj to zadanie z zadaniem 2: wskaż, że w obu przypadkach funkcja zachowuje publiczną zależność algebraiczną między wiadomościami.
Lista nr 4 — tabela porównawcza
Po przeanalizowaniu wszystkich schematów RSA uzupełnij tabelę porównawczą dla listy nr 4.
| Nr schematu | Czy jest poprawny? | Czy jest bezpieczny? | Typ ataku / obserwacja | Główny błąd konstrukcyjny |
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 |
- Wskaż, które konstrukcje są poprawne algebraicznie, ale nieodporne na fałszerstwo.
- Odróżnij trzy źródła słabości: całkowity brak haszowania, zachowanie struktury multiplikatywnej oraz zachowanie struktury addytywnej w wykładniku.
- Sformułuj jedną wspólną zasadę: jakie własności powinna mieć funkcja w podpisie RSA-FDH, aby nie dało się z podpisów wyprowadzać kolejnych podpisów metodą czysto algebraiczną.
Lista nr 5 — anonimowość i podpisy pierścieniowe Herranza-Sáeza
Piąta lista dotyczy anonimowości w podpisach pierścieniowych. Punktem odniesienia jest tu schemat Javiera Herranza i Germána Sáeza oparty na podpisie Schnorra.
Lista nr 5 — punkt odniesienia: podpis pierścieniowy Herranza-Sáeza
Dziedzina akceptacji. Klucze i zobowiązania należą do ustalonej podgrupy. W wariancie z pracy zobowiązania muszą być parami różne i różne od jedynki. Podpisujący losuje składniki niepodpisujących bez powtórzeń i bez jedynki, a następnie ponawia losowanie , jeśli domknięcie narusza te warunki. Weryfikator odrzuca niedopuszczalne składniki przed sprawdzeniem równania. Analiza anonimowości uwzględnia ten sam rozkład z odrzucaniem dla każdego możliwego podpisującego.
Cały podpis tworzy jedna osoba. Samodzielnie wyznacza wszystkie zobowiązania , korzystając z kluczy publicznych pozostałych członków i tylko własnego klucza prywatnego. Inni członkowie nie muszą być online. Nie jest to wspólne podpisywanie przez cały pierścień.
- Traktuj ten wariant jako punkt odniesienia dla całej listy nr 5.
- Zwracaj uwagę, które elementy podpisu są losowane przez rzeczywistego Podpisującego, a które są wyznaczane tak, aby zamknąć równanie weryfikacyjne.
- W kolejnych zadaniach odróżniaj poprawność, anonimowość i odporność na fałszerstwo: są to trzy różne własności.
Warunki wykonania. Klucze pierścienia są różne i nieidentycznościowe, . W kroku 2 powtarzamy losowanie , dopóki nie jest różne od jedynki i wszystkich pozostałych zobowiązań. Nie losujemy przy tym ponownie pozostałych . W kroku 4 wyzwania obliczamy z wiadomości i zobowiązań; nie są dodatkowymi niezależnymi danymi podpisu. Herranz–Sáez, § 4.2–4.3.
Lista nr 5 — zadanie 1: poprawność i anonimowość bezwarunkowa
- Wykaż poprawność algebraiczną schematu.
- Pokaż, że dla ustalonego poprawnego podpisu każdy członek pierścienia mógł go wygenerować z takim samym prawdopodobieństwem.
- Wyjaśnij, dlaczego z tego wynika anonimowość bezwarunkowa w sensie pracy Herranza i Sáeza.
- Porównaj tę własność z klasycznym podpisem Schnorra, który w ogóle nie ukrywa tożsamości Podpisującego.
Lista nr 5 — zadanie 2: deterministyczne składniki dla niepodpisujących
- Wyjaśnij, dlaczego poprawność algebraiczna podpisu nadal może być zachowana.
- Pokaż, że Weryfikator może samodzielnie odtworzyć wszystkie wartości i dla .
- Oblicz przewidywania dla wszystkich indeksów, nie znając wcześniej . Jeśli dokładnie jedno zobowiązanie różni się od przewidywanego, wskaż jego znaczenie. Uwzględnij przypadek, gdy domknięcie przypadkowo zgadza się z przewidywaniem i test nie wyróżnia żadnego indeksu.
- Oszacuj skuteczność tego rozróżniania przy zadanym rozkładzie domknięcia. Nie utożsamiaj wysokiej skuteczności z gwarancją sukcesu w każdym wykonaniu.
Przyjmij publiczną regułę uzyskania różnych niezerowych wartości z (np. jawny licznik prób przy danym indeksie). Reguła musi pozwalać odtworzyć kandydaturę dla każdego indeksu i nie może sama kodować numeru podpisującego.
Lista nr 5 — zadanie 3: pseudolosowość sterowana ziarnem znanym podpisującemu
- Wyjaśnij, dlaczego przed ujawnieniem ziarna wariant może wyglądać na anonimowy dla obserwatora zewnętrznego.
- Pokaż, że po ujawnieniu każdy może sprawdzić równania dla wszystkich .
- Odróżnij ujawnienie ziarna od listy oznaczonych indeksami losowości: brak jednego indeksu na takiej liście już sam wskazuje deklarowanego podpisującego. Przy ziarnie sprawdź wszystkie indeksy i przypadek przypadkowej zgodności domknięcia.
- Oceń, czy taki wariant zachowuje zaprzeczalność i anonimowość w sensie praktycznym.
Rozpoznanie gałęzi przy założeniu, że ujawniono rzeczywiście użyte ziarno, nie jest automatycznie dowodem autorstwa dla osoby trzeciej. Samo algebraiczne otwarcie zobowiązań nie dowodzi pochodzenia ujawnionych danych ani tożsamości ich twórcy.
Lista nr 5 — zadanie 4: niebezpieczne uproszczenie z jednym globalnym wyzwaniem
- Pokaż, że atakujący może sfałszować podpis bez znajomości żadnego klucza prywatnego: wybiera losowe , losowe i wyznacza ostatnią wartość z równania weryfikacyjnego, otrzymując cały podpis .
- Wyprowadź jawny wzór na .
- Wyjaśnij, dlaczego lokalne wyzwania są istotne dla bezpieczeństwa konstrukcji.
- Porównaj tę słabość z zadaniami z listy nr 2 i listy nr 4, w których błędnie zdefiniowana funkcja haszująca również otwierała drogę do czysto algebraicznych fałszerstw.
Lista nr 5 — zadanie 5: małe wykładniki dla niepodpisujących
- Wyjaśnij, dlaczego poprawność równania weryfikacyjnego nadal jest zachowana.
- Pokaż, że Weryfikator może dla każdego sprawdzić, czy istnieje mały wykładnik taki, że .
- Wyjaśnij, dlaczego z dużym prawdopodobieństwem wszystkie indeksy zostaną rozpoznane jako „niepodpisujący”, a rzeczywisty Podpisujący pozostanie jedynym indeksem bez małego logarytmu.
- Oceń, jak zmienia się skuteczność ataku wraz ze wzrostem parametru .
Spójność z dziedziną akceptacji. Z małego przedziału odrzucamy zero i losujemy bez powtórzeń; potrzebujemy co najmniej dopuszczalnych wartości. Jeżeli dopuszczalny podzbiór ma punktów, domknięcie trafia do niego z prawdopodobieństwem po ustaleniu pozostałych punktów. Dopiero mała wartość tego ilorazu uzasadnia dużą skuteczność rozpoznawania.
Lista nr 5 — zadanie 6: publicznie rozpoznawalne obciążenie rozkładu generatora
Ustal kodowanie i udział dopuszczalnych elementów grupy spełniających predykat. Prefiks kodowania punktu może zawierać stałe bity lub znaczniki. Predykat musi być osiągalny; inaczej generator nigdy nie zakończy losowania.
- Wyjaśnij, dlaczego poprawność podpisu nadal może być zachowana mimo tego błędu implementacyjnego.
- Pokaż, że dla wszystkich zachodzi , natomiast dla prawdopodobieństwo wyznacza udział elementów spełniających predykat w dopuszczalnym zbiorze domknięć. Wartość około wymaga dodatkowo w przybliżeniu jednostajnego rozkładu tych 16 bitów.
- Pod warunkiem, że predykat jest rzadki w dopuszczalnym zbiorze domknięć, wyjaśnij, dlaczego Weryfikator może z dużym prawdopodobieństwem wskazać rzeczywistego Podpisującego jako jedyny indeks niespełniający predykatu .
- Porównaj ten błąd z zadaniem 5: wskaż różnicę między wyciekiem przez mały logarytm dyskretny a wyciekiem przez jawnie obserwowalny wzorzec w zakodowaniu punktu.
Lista nr 5 — zadanie 7: dlaczego składniki muszą być nierozróżnialne
- Wyjaśnij, dlaczego dla zachowania anonimowości rozkłady wszystkich wartości muszą być nierozróżnialne z punktu widzenia Weryfikatora.
- Pokaż, że jeśli dla niepodpisujących wartości są odtwarzalne z krótkiego opisu , a dla rzeczywistego Podpisującego nie są, to sam fakt tej odróżnialności ujawnia indeks .
- Wyjaśnij, dlaczego opisana próba kompresji narusza anonimowość tej konstrukcji. Odróżnij ten wniosek od ogólnego ograniczenia długości podpisów pierścieniowych: przedstawiony argument nie dowodzi takiego ograniczenia dla wszystkich schematów.
- Porównaj tę obserwację z zadaniami 2, 3, 5 i 6: wskaż, że we wszystkich tych przypadkach anonimowość przegrywa dokładnie wtedy, gdy składnik rzeczywistego Podpisującego przestaje być nierozróżnialny od pozostałych.
Lista nr 5 — tabela porównawcza
Po przeanalizowaniu listy nr 5 uzupełnij tabelę porównawczą dla podpisu pierścieniowego Herranza-Sáeza i opisanych wariantów.
| Nr schematu | Czy jest poprawny? | Czy jest anonimowy? | Czy jest bezpieczny? | Typ obserwacji / ataku |
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 | ||||
| 4 | ||||
| 5 | ||||
| 6 | ||||
| 7 |
- Odróżnij trzy poziomy analizy: poprawność algebraiczną, anonimowość oraz odporność na fałszerstwo.
- Wyjaśnij, dlaczego w podpisach pierścieniowych sam fakt poprawności równania weryfikacyjnego nie wystarcza ani do anonimowości, ani do bezpieczeństwa.
- Sformułuj jedną wspólną zasadę: jakie elementy konstrukcji Schnorra trzeba zachować, aby uzyskać poprawny i anonimowy podpis pierścieniowy.
Lista nr 6 — anonimowe interaktywne systemy identyfikacji
Szósta lista dotyczy anonimowych interaktywnych systemów identyfikacji. Najpierw analizujemy standardowy wektorowy dowód OR, a następnie osobno sprawdzamy wariant z agregacją.
Lista nr 6 — punkt odniesienia: wektorowy dowód OR Schnorra
Dowód OR dotyczy alternatywy: „znam sekret co najmniej jednego z tych kluczy”. Ustalamy uporządkowaną listę różnych kluczy należących do ustalonej podgrupy i różnych od jej elementu neutralnego . Tylko dowodzący zna indeks i sekret . Poniżej wyzwania łączymy dodawaniem w ; nie operacją XOR na napisach.
- Przygotuj symulowane gałęzie. Dla losuj niezależnie i oblicz . Te równania można przygotować bez sekretów innych osób.
- Ustal prawdziwą gałąź. Wylosuj , oblicz i wyślij cały wektor .
- Odbierz wyzwanie. Weryfikator dopiero teraz losuje niezależne . Dowodzący oblicza i .
- Sprawdź każdą gałąź. Dowodzący wysyła wszystkie pary . Po walidacji typów weryfikator akceptuje tylko wtedy, gdy zachodzi warunek sumy i każde równanie osobno:
W gałęziach symulowanych równości wynikają z definicji zobowiązań. W gałęzi rzeczywistej wynikają ze znajomości sekretu. Dwa akceptowane transkrypty z tym samym wektorem zobowiązań i różnymi wyzwaniami globalnymi muszą różnić się w co najmniej jednym . Dla takiego indeksu wydobywamy . Możliwość wydobycia sekretu z takich dwóch transkryptów nazywamy szczególną rzetelnością (special soundness). Nie jest to metoda ustalania autora pojedynczego publicznego transkryptu.
Dla uczciwego, jednostajnego wyzwania pary mają jednakowy rozkład dla każdej rzeczywistej gałęzi, z jedynym ograniczeniem sumy wyzwań. Zobowiązania są wtedy odtwarzalne z równań. Ten argument dotyczy transkryptu; wycieki losowości zmieniają obserwację. Podstawa: I. Damgård, On Σ-protocols, kompozycja OR; Cramer, Damgård i Schoenmakers, CRYPTO 1994.
Lista nr 6 — zadanie 1: wariant z agregacją do analizy
Wariant do analizy, nie ogólny zamiennik dowodu OR. Poniższa kompresja zachowuje równanie dla uczciwego uczestnika, lecz odrzuca indywidualne testy gałęzi. Zbadaj, czy nadal dowodzi znajomości sekretu przy kluczach wybieranych przez przeciwnika.
- Wykaż poprawność algebraiczną protokołu.
- Wyjaśnij, dlaczego transkrypt nie powinien ujawniać indeksu rzeczywistego Dowodzącego. Zwróć uwagę na rolę sumarycznego zobowiązania oraz warunku .
- Porównaj ten protokół z podpisem pierścieniowym Herranza-Sáeza z listy nr 5. Wskaż różnice w interaktywności, w roli Weryfikatora, w sposobie wyznaczania wyzwań oraz w tym, że tutaj chodzi o anonimową identyfikację, a nie o publicznie weryfikowalny podpis pod wiadomością.
- Wyjaśnij, dlaczego taki protokół jest bliższy schematowi identyfikacji Schnorra niż podpisowi pierścieniowemu Schnorra, mimo podobieństwa algebraicznego.
Sprawdzenie na powiązanych kluczach
Przyjmij , nieznany przeciwnikowi logarytm i zarejestrowany przez niego drugi klucz . Klucze są różne i nie są jedynką. Przeciwnik zna tylko , wysyła , a po otrzymaniu podaje , i , modulo .
Oba agregowane testy przechodzą bez użycia sekretu któregokolwiek klucza. Nie jest to atak na wektorowy dowód OR powyżej. Wyjaśnij, jaką rolę ma rejestracja kluczy i dlaczego samą poprawność agregacji trzeba oddzielić od dowodu wiedzy. Zakaz powiązanych kluczy wyklucza ten przykład, ale sam nie stanowi pełnego dowodu bezpieczeństwa wariantu.
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.
Najpierw nazwij oczekiwaną własność
- Zgodność: uczciwe pasujące sesje wyliczają ten sam klucz.
- Uwierzytelnienie: akceptacja jest związana z właściwym partnerem i bieżącą wymianą, a nie tylko z dowolnym poprawnym podpisem.
- Tajność: przeciwnik nie odróżnia klucza chronionej sesji od niezależnego ciągu o tej samej długości, przy jawnie dozwolonych ujawnieniach.
DH, KDF i MAC. Wynik Diffiego–Hellmana jest elementem grupy. KDF wyprowadza z jego jednoznacznego kodowania i kontekstu klucze bitowe właściwej długości. MAC to kod uwierzytelniający wiadomość pod kluczem symetrycznym, nie adres karty sieciowej. Dla różnych ról stosujemy odrębne klucze lub domeny. Podpis i MAC w SIGMA pełnią różne zadania; ważne są oba sprawdzenia przed akceptacją. Krawczyk, SIGMA.
W każdym zadaniu określ aktywność przeciwnika: może tylko obserwować, czy także podmieniać, powtarzać i opóźniać komunikaty? Zweryfikuj parametry i przynależność odebranych elementów do grupy. Nie przenoś twierdzenia o opublikowanym protokole na skrót dydaktyczny bez sprawdzenia jego kodowań, walidacji i modelu.
Lista nr 7 — zadanie 1: klasyczny Diffie-Hellman bez uwierzytelnienia
- Wykaż, że w uczciwym wykonaniu obie strony uzyskują ten sam klucz sesyjny.
- Wyjaśnij, dlaczego mimo poprawności algebraicznej ten wariant nie zapewnia uwierzytelnienia partnera sesji.
- Zademonstruj pełny atak pośrednika (man-in-the-middle): pokaż, jak przeciwnik podstawia własne wartości efemeryczne i uzgadnia dwa różne klucze, po jednym z każdą ze stron.
- Wskaż, dlaczego sam klasyczny Diffie-Hellman nie jest jeszcze protokołem AKE w sensie kryptograficznym.
Lista nr 7 — zadanie 2: SIGMA jako punkt odniesienia oraz wariant osłabiony bez MAC
Najpierw potraktuj poprawny SIGMA jako punkt odniesienia. Następnie przejdź do wariantu osłabionego, w którym usunięto MAC nad tożsamością.
- Wyjaśnij, jak działa poprawny SIGMA i wskaż, które elementy odpowiadają za uwierzytelnienie wartości efemerycznych, a które za związanie klucza sesyjnego z identyfikatorami i .
- Podaj intuicję bezpieczeństwa poprawnego SIGMA: wyjaśnij, dlaczego podpisy nie wystarczają same z siebie oraz po co potrzebny jest osobny MAC nad tożsamością.
- Porównaj poprawny SIGMA z wariantem osłabionym bez MAC i wskaż dokładnie, jaki składnik został usunięty.
- Przedstaw przykład ataku na wariant osłabiony: pokaż atak błędnego związania tożsamości (identity misbinding / unknown key-share), w którym przeciwnik doprowadza jedną ze stron do błędnego przekonania, z kim współdzieli klucz.
- Wyjaśnij, dlaczego usunięcie MAC nad identyfikatorami i niszczy własność poprawnego związania klucza sesyjnego z tożsamościami stron.
Lista nr 7 — zadanie 3: liniowe domknięcie z wyzwaniami i
- Sprawdź poprawność algebraiczną testów wykonywanych przez obie strony.
- Oceń, czy równania weryfikacyjne rzeczywiście wiążą wartości efemeryczne z sekretami długoterminowymi i .
- Zdecyduj, czy atakujący może doprowadzić do zaakceptowania sesji bez znajomości jednego z sekretów długoterminowych. Jeżeli tak, opisz atak krok po kroku.
- Jeżeli uznasz schemat za niebezpieczny, wskaż dokładnie, która zależność liniowa otwiera drogę do ataku.
Lista nr 7 — zadanie 4: mnożnikowe wiązanie przez i
- Sprawdź, czy obie strony zaakceptują sesję w uczciwym wykonaniu protokołu.
- Porównaj ten wariant z zadaniem 3 i oceń, czy zastąpienie sum przez iloczyny rzeczywiście wzmacnia bezpieczeństwo.
- Zbadaj, czy atakujący może dobrać komunikaty tak, aby przejść testy weryfikacyjne bez znajomości sekretu długoterminowego jednej ze stron.
- Jeżeli znajdziesz atak, opisz, które zależności algebraiczne są tu publicznie sprawdzalne i jak są wykorzystywane przez przeciwnika.
Lista nr 7 — zadanie 5: bezpośrednie mieszanie sekretu długoterminowego z efemerycznym
- Wykaż, że obie strony uzyskują ten sam klucz sesyjny w uczciwym wykonaniu protokołu.
- Zastanów się, jakie informacje o sekretach długoterminowych są ukryte w komunikatach i .
- Oceń, czy taki schemat chroni przed atakiem pośrednika (man-in-the-middle) oraz czy zapewnia uwierzytelnienie partnera sesji.
- Jeżeli uznasz konstrukcję za niebezpieczną, wskaż, czy problem wynika z braku jawnej weryfikacji partnera, z ujawniania zbyt silnej struktury algebraicznej, czy z obu tych powodów jednocześnie.
Lista nr 7 — zadanie 6: klucz sesyjny z prostego wyrażenia symetrycznego
- Najpierw uprość oba wyrażenia na klucz sesyjny i sprawdź, czy w uczciwym wykonaniu dają ten sam wynik.
- Oceń, czy sam fakt zgodności algebraicznej wystarcza tutaj do bezpieczeństwa AKE.
- Zbadaj, czy atakujący może manipulować wartościami i tak, aby doprowadzić strony do uzgodnienia klucza bez rzeczywistego uwierzytelnienia partnera.
- Porównaj ten wariant z klasycznym pomysłem Diffiego-Hellmana: wskaż, czego brakuje, aby uzyskać pełnoprawny i bezpieczny protokół AKE.
Lista nr 7 — tabela porównawcza
Po przeanalizowaniu wszystkich sześciu schematów AKE uzupełnij tabelę porównawczą.
| Nr schematu | Czy jest poprawny? | Czy jest bezpieczny? | Typ ataku / obserwacja | Główny błąd konstrukcyjny |
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 | ||||
| 4 | ||||
| 5 | ||||
| 6 |
- Odróżnij poprawność algebraiczną od bezpieczeństwa AKE: zgodność klucza po obu stronach nie oznacza jeszcze odporności na atak.
- Wskaż, które schematy zawodzą przez brak właściwego uwierzytelnienia partnera, a które przez zbyt prostą strukturę algebraiczną komunikatów.
- Sformułuj jedną wspólną zasadę: co musi wiązać klucz sesyjny z tożsamościami stron i ich wartościami efemerycznymi, aby nie dało się przeprowadzić ataku przez podstawienie komunikatów.
Lista nr 8 — analiza złożoności poprawnych protokołów
Ósma lista dotyczy analizy złożoności. Celem jest oszacowanie kosztu działania poprawnych protokołów i odróżnienie złożoności obliczeniowej, pamięciowej oraz komunikacyjnej.
Konwencja liczenia. Najpierw policz pojedyncze komunikaty i ich kierunek; podaj, co nazywasz rundą. Trzy komunikaty Schnorra to nie trzy pełne obiegi tam i z powrotem. Porównuj liczbę operacji tego samego typu, a nie uznawaj parowania, haszowania i mnożenia skalarnego za jednakowo kosztowne.
Lista nr 8 — zadanie 1: klasyczny schemat identyfikacji Schnorra
- Oszacuj liczbę potęgowań, mnożeń grupowych, dodawań w oraz wywołań funkcji haszującej po stronie Dowodzącego i Weryfikatora.
- Oszacuj, ile skalarów i ile elementów grupy musi równocześnie przechowywać każda ze stron.
- Policz liczbę wiadomości, liczbę rund oraz łączny rozmiar komunikacji w bitach.
- Porównaj koszty z wersją demonstracyjną w grupie multiplikatywnej modulo oraz z wersją na krzywej eliptycznej: wskaż, które operacje pozostają strukturalnie tym samym kosztem, a które zmieniają interpretację.
Lista nr 8 — zadanie 2: anonimowy interaktywny Schnorr 1-z-
- Oszacuj koszt obliczeniowy Dowodzącego i Weryfikatora jako funkcję .
- Wskaż, które operacje wykonywane są dla każdego indeksu , a które tylko dla rzeczywistego indeksu .
- Oszacuj pamięć potrzebną do przechowywania odpowiedzi poszczególnych gałęzi oraz wartości , i ewentualnych pomocniczych sum lub iloczynów.
- Policz złożoność komunikacyjną: liczbę rund, liczbę wiadomości oraz rozmiar każdej wiadomości w zależności od .
- Porównaj wynik z klasycznym Schnorrem z zadania 1 i opisz, który składnik złożoności jest ceną za anonimowość.
Lista nr 8 — zadanie 3: poprawny podpis Schnorra
- Oszacuj koszt obliczenia podpisu oraz koszt weryfikacji, oddzielając potęgowania lub mnożenia skalarne od pozostałych operacji.
- Oszacuj pamięć potrzebną przy generowaniu podpisu i przy jego weryfikacji.
- Podaj rozmiar podpisu w bitach jako funkcję rozmiaru skalaru i elementu grupowego.
- Porównaj koszt podpisu Schnorra z interaktywnym schematem identyfikacji Schnorra: wskaż, co zyskujemy, a co tracimy przechodząc od protokołu interaktywnego do podpisu.
Lista nr 8 — zadanie 4: poprawny podpis BLS, jego warianty oraz poprawny podpis RSA-FDH
Najpierw wskaż konstrukcję. Dla wariantów BLS podaj algorytmy i źródło omawiane na wykładzie. Uwzględnij zabezpieczenie przed podstawieniem kluczy, np. dowód posiadania klucza prywatnego (proof of possession) w odpowiednim profilu agregacji. Sama nazwa „podpis pierścieniowy BLS” nie wyznacza jednego schematu ani jednego kosztu. Nie przenoś kosztów klasycznego BLS na konstrukcję pierścieniową bez analizy jej algorytmów.
- Oszacuj koszt obliczeniowy Podpisującego i Weryfikującego dla pojedynczego podpisu BLS oraz dla RSA-FDH.
- Oszacuj koszt obliczeniowy tworzenia i weryfikacji multi-podpisu BLS jako funkcję liczby podpisujących . Wyraźnie wskaż koszt po stronie każdego podpisującego, koszt agregacji oraz koszt weryfikacji końcowej.
- Oszacuj koszt obliczeniowy tworzenia i weryfikacji podpisu agregowanego BLS dla podpisów. Wyjaśnij, jak zmienia się liczba wywołań funkcji hash-to-curve, mnożeń grupowych i operacji parowania.
- Oszacuj koszt obliczeniowy i pamięciowy podpisu pierścieniowego BLS jako funkcję rozmiaru pierścienia . Ustal dla wybranej konstrukcji, które elementy kosztu rosną liniowo z , a które pozostają stałe.
- Porównaj rozmiar podpisu, rozmiar klucza publicznego oraz pamięć roboczą potrzebną przy podpisywaniu i weryfikacji w podpisie BLS, jego trzech wariantach oraz w RSA-FDH.
- Wskaż, która operacja dominuje w weryfikacji podpisu BLS i jego wariantów, a która w weryfikacji podpisu RSA-FDH.
- Wyjaśnij, dlaczego w protokołach opartych o parowania sama liczba mnożeń grupowych nie wystarcza do uczciwego oszacowania kosztu.
Wybór konkretnej konstrukcji. Dla agregacji BLS podaj profil oraz ochronę przed nieuczciwie dobieranymi kluczami (np. wymagany dowód posiadania klucza prywatnego). Nie weryfikuj naiwnego iloczynu kluczy jako dowodu wspólnego podpisania. Dla pierścieniowego wariantu BLS wskaż konkretną opublikowaną konstrukcję i jej format; nazwa „pierścieniowy BLS” nie wyznacza jednego algorytmu ani kosztu. Jeśli konstrukcja nie została wskazana, tej pozycji nie da się jednoznacznie policzyć.
Lista nr 8 — zadanie 5: podpis pierścieniowy Herranza-Sáeza
- Oszacuj koszt obliczeniowy Podpisującego i Weryfikującego jako funkcję .
- Podaj rozmiar podpisu w bitach i porównaj go z rozmiarem zwykłego podpisu Schnorra.
- Oszacuj pamięć potrzebną do przechowywania wszystkich składników i pomocniczych wartości .
- Wyjaśnij, dlaczego długość podpisu i koszt weryfikacji rosną liniowo z rozmiarem pierścienia oraz jak ten fakt łączy się z analizą anonimowości z listy nr 5.
Lista nr 8 — zadanie 6: poprawny SIGMA
- Oszacuj liczbę najdroższych operacji po stronie obu stron: potęgowań lub mnożeń skalarnych, operacji podpisu, operacji weryfikacji podpisu, wywołań funkcji haszującej i obliczeń MAC.
- Oszacuj pamięć roboczą potrzebną do przechowywania wartości efemerycznych, wspólnego sekretu, kluczy i , podpisów oraz znaczników MAC.
- Policz liczbę rund i wiadomości oraz oszacuj ich łączny rozmiar, zakładając że przesyłane są wartości , , klucze publiczne, podpisy i MAC.
- Porównaj koszt poprawnego SIGMA z kosztem klasycznego nieuwierzytelnionego Diffiego-Hellmana z listy nr 7 i wskaż, za które własności bezpieczeństwa płacimy dodatkowymi operacjami i komunikacją.
Lista nr 8 — tabela porównawcza
Po przeanalizowaniu wszystkich poprawnych protokołów uzupełnij tabelę porównawczą złożoności.
| Protokół | Złożoność obliczeniowa | Złożoność pamięciowa | Złożoność komunikacyjna | Dominująca operacja |
|---|---|---|---|---|
| Identyfikacja Schnorra | ||||
| Anonimowy interaktywny Schnorr 1-z- | ||||
| Podpis Schnorra | brak interakcji; tylko rozmiar podpisu | |||
| Podpis BLS | brak interakcji; tylko rozmiar podpisu | |||
| Multi-podpis BLS | przekazanie podpisów częściowych do agregatora oraz podpis końcowy | |||
| Podpis agregowany BLS | zebranie podpisów wejściowych oraz agregat | |||
| Podpis pierścieniowy BLS | brak interakcji; rozmiar podpisu zależny od | |||
| Podpis RSA-FDH | brak interakcji; tylko rozmiar podpisu | |||
| Podpis pierścieniowy Herranza-Sáeza | brak interakcji; rozmiar podpisu zależny od | |||
| SIGMA |
- Uzupełnij tabelę zarówno w postaci asymptotycznej, jak i w postaci bardziej konkretnej, podając liczbę najdroższych operacji.
- Wskaż, które protokoły są najtańsze obliczeniowo, które najtańsze komunikacyjnie, a które najdroższe pamięciowo.
- Wyjaśnij, w jaki sposób anonimowość, publiczna weryfikowalność oraz uwierzytelnione uzgadnianie klucza wpływają na koszt protokołu.
Lista nr 9 — AKE w modelu wyroczni ujawnień
Dziewiąta lista dotyczy protokołów Authenticated Key Exchange analizowanych w modelu, w którym przeciwnik może korzystać z wyroczni ujawniających informacje z urządzenia Alicji i urządzenia Boba.
Jak zdefiniować eksperyment z wyroczniami
Wyrocznia jest kontrolowanym interfejsem modelu: przeciwnik pyta o wskazaną sesję lub sekret i otrzymuje dokładnie określone dane. To nie założenie, że w rzeczywistym systemie istnieje taka publiczna usługa.
- Oznacz sesję testową, jej rolę, partnera i moment akceptacji. Sesja pasująca po drugiej stronie to druga połowa tej samej wymiany.
- Wyrocznia klucza „innej sesji” nie może ujawniać klucza sesji testowej ani jej sesji pasującej. Inaczej test tajności jest trywialny.
- Dla ujawnienia stanu podaj chwilę i pełną listę zwracanych zmiennych. Jeśli stan obejmuje już klucz sesyjny, oznacz bezpośrednie ujawnienie klucza, zamiast nazywać je nietrywialnym atakiem.
- W NAXOS odróżnij ziarno efemeryczne od wykładnika wyprowadzonego z tego ziarna i sekretu długoterminowego. Ich ujawnienie daje różne informacje.
- Najpierw ustal, czy sesja pozostaje świeża według wybranego modelu. „Świeża” oznacza tu sesję, której bezpieczeństwo nadal podlega ocenie mimo dozwolonych ujawnień, a nie sesję niedawno rozpoczętą. Dopiero potem oceniaj przewagę przeciwnika. CK, eCK i dowolny eksperyment ujawnienia stanu nie są tym samym modelem.
Przebiegi poniżej są skrótami do analizy wybranych przypadków ujawnień, nie kompletnymi specyfikacjami wdrożeniowymi. W szczególności należy ustalić kodowanie, funkcje wyprowadzania kluczy, szyfr dla i reguły przerwania. Materiał źródłowy: HMQV, wraz z uwagami do walidacji; LaMacchia, Lauter i Mityagin: NAXOS i KEA+.
Lista nr 9 — zadanie 1: 3-pass HMQV
jest funkcją haszującą o skróconym wyjściu interpretowanym jako skalar, a nie odwrotnością funkcji haszującej. W oryginalnym HMQV długość tego wyjścia wynosi około połowy długości bitowej . Funkcję wyprowadzającą klucz oznaczamy : ma odrębny typ wyjścia i domenę. Przy implementacji wybierz pełny profil z publikacji, w tym długości, kodowania i walidację, zamiast obcinać dowolne bajty.
; sprawdza
- Pokaż, że w uczciwym wykonaniu zachodzi .
- Przeanalizuj profile oraz .
- Zbadaj, które elementy ujawnione przez albo wystarczają do odtworzenia klucza.
- Jeżeli protokół jest nieodporny na któryś profil, opisz konkretny atak; jeżeli jest odporny, podaj intuicję bezpieczeństwa.
Lista nr 9 — zadanie 2: AMA
Trzy różne role. wyprowadza wykładniki . wyprowadza klucze szyfrowania i pomocnicze ciągi bitowe. daje skróty potwierdzające o ustalonej długości bitów. Jej wejście obejmuje zakodowany punkt i wskazany sekret pomocniczy. To osobna domena haszowania, nie hasz do skalaru ani automatycznie gotowy standard MAC.
Bob sprawdza oraz
- Pokaż, że obie strony wyznaczają ten sam klucz główny .
- Przeanalizuj, co ujawniają wyrocznie , , i .
- Oceń, czy ujawnienia mogą naruszyć tajność klucza, anonimowość certyfikatów albo obie własności jednocześnie.
Lista nr 9 — zadanie 3: NAXOS
Skalarny hasz pełni tu rolę funkcji oznaczanej w NAXOS jako . Funkcja odpowiada odrębnej wyroczni klucza sesyjnego , z wynikiem bitowym wymaganej długości. Ich domeny są rozdzielone; nie utożsamiamy tych wyroczni.
- Wyjaśnij rolę wartości i w tzw. triku NAXOS.
- Przeanalizuj profile oraz .
- Oceń, czy ujawnienie przez albo jest równoważne ujawnieniu sekretu efemerycznego.
Lista nr 9 — zadanie 4: MRI
Bob odrzuca, gdy albo certyfikat jest błędny.
- Pokaż poprawność równania na po obu stronach.
- Przeanalizuj, co dokładnie ujawniają wyrocznie i .
- Oceń profile mieszane oraz .
Lista nr 9 — zadanie 5: podpisany Diffie-Hellman
tworzy podpis
Bob sprawdza podpis względem .
- Wyjaśnij, co w tym protokole jest chronione podpisem, a co pozostaje zwykłym sekretem Diffiego-Hellmana.
- Przeanalizuj profile i .
- Oceń, czy ujawnienie może pomóc w sesji testowej.
Lista nr 9 — zadanie 6: KEA+
czyli
czyli
- Porównaj KEA+ z poprzednim protokołem i wskaż, gdzie pojawiają się sekrety długoterminowe.
- Zbadaj profile oraz .
- Porównaj profile ujawnień dla KEA+ i podpisanego Diffiego-Hellmana. Nie zakładaj, że jeden jest prostym rozszerzeniem drugiego.
Lista nr 9 — zadanie 7: zależności między DL, CDH i DDH
- Wyjaśnij zależność: jeśli umiemy rozwiązać DL, to umiemy rozwiązać CDH i DDH.
- Wyjaśnij zależność: jeśli umiemy rozwiązać CDH, to umiemy rozwiązać DDH przez obliczenie kandydata i porównanie go z czwartym elementem krotki decyzyjnej.
- Wyjaśnij, dlaczego umiejętność rozwiązywania CDH nie musi automatycznie dawać algorytmu na DL.
- Wyjaśnij, dlaczego DDH dotyczy odróżniania poprawnej krotki Diffiego-Hellmana od losowej, a CDH dotyczy obliczenia konkretnej wartości grupowej.
- Wskaż, jak wybór grupy, w szczególności grupy z parowaniem, może zmieniać trudność DDH i wpływać na projektowanie AKE.
Lista nr 9 — zadanie 8: kompromitacja jednej sesji a bezpieczeństwo pozostałych sesji
Załóżmy, że przeciwnik nagrał pełne transkrypty kolejnych wykonań protokołu AKE: . Następnie w wybranej sesji poznaje klucz sesyjny albo uzyskuje dodatkowy wyciek z urządzenia jednej ze stron. Celem zadania jest precyzyjne odróżnienie, które informacje dotyczą wyłącznie sesji , a które mogą wpływać na sesje wcześniejsze i późniejsze.
- Czy poznanie samego klucza sesyjnego powinno pozwalać na obliczenie kluczy , , albo ? Nazwij własność bezpieczeństwa, której oczekujemy w takim scenariuszu.
- Czy odpowiedź zmienia się, jeżeli przeciwnik oprócz zna również transkrypt wszystkich sesji ? Wyjaśnij, dlaczego samo nagranie komunikacji publicznej nie powinno wystarczać do odtworzenia innych kluczy.
- Rozważ silniejszy wyciek w sesji : ujawnienie sekretu efemerycznego Alicji, sekretu efemerycznego Boba albo lokalnego stanu jednej ze stron. Które z tych wycieków dotyczą wyłącznie sesji , a które mogą wskazywać na problem systemowy, na przykład z generatorem losowości?
- Jeżeli w sesji wyciekł stan generatora losowości, zapytaj, czy przeciwnik może odtworzyć losowość użytą w sesjach wcześniejszych lub przewidzieć losowość sesji późniejszych. Od czego zależy odpowiedź?
- Porównaj ten scenariusz z ujawnieniem sekretu długoterminowego jednej ze stron. Czy złamanie klucza długoterminowego po zakończeniu sesji powinno pozwalać na odszyfrowanie sesji wcześniejszych? Jak tę własność wiążemy z tajnością w przód?
- Dla każdego protokołu z zadań 1-6 wskaż, czy kompromitacja jest tylko lokalnym incydentem dotyczącym sesji , czy może daje równania lub informacje pomocnicze przydatne w analizie innych sesji.
- Sformułuj końcowy wniosek: jakie projektowe mechanizmy sprawiają, że sesje AKE są od siebie odseparowane mimo tego, że przeciwnik może nagrywać wszystkie transkrypty i później uzyskać wiedzę o jednej wybranej sesji?
Lista nr 9 — zadanie 9: tabela porównawcza
Po przeanalizowaniu wszystkich protokołów i pytań z listy nr 9 uzupełnij tabelę dla modelu wyroczni ujawnień.
| Protokół | Werdykt | Atak / intuicja | ||||
|---|---|---|---|---|---|---|
| 3-pass HMQV | ||||||
| AMA | ||||||
| NAXOS | ||||||
| MRI | ||||||
| Podpisany DH | ||||||
| KEA+ |
- W każdej komórce wpisz werdykt: „odporny”, „nieodporny” albo „wymaga doprecyzowania modelu”.
- Oddziel ataki wynikające z ujawnienia sekretów efemerycznych od ataków wynikających z ujawnienia stanu lokalnego.
- Sformułuj jedną wspólną obserwację o tym, jak projektować AKE odporne na realistyczne ujawnienia z urządzeń końcowych.
Lista nr 10 — szyfrowanie asymetryczne i warianty ElGamala
Dziesiąta lista dotyczy szyfrowania asymetrycznego. Analizujemy zwykłe szyfrowanie ElGamala oraz kilka jego wariantów, w których maska szyfrująca jest modyfikowana w sposób pozornie niewielki, ale wymagający precyzyjnej analizy poprawności i bezpieczeństwa.
- Zdefiniuj semantyczne bezpieczeństwo szyfrowania asymetrycznego, czyli bezpieczeństwo typu IND-CPA.
- Wyjaśnij różnicę między atakiem ze znanym kluczem publicznym, atakiem z wybranymi tekstami jawnymi, atakiem CCA oraz adaptacyjnym atakiem CCA2.
- W każdym zadaniu osobno sprawdzaj poprawność deszyfrowania, dobrze określoną dziedzinę wszystkich operacji oraz podatność na modyfikowanie szyfrogramów.
Co sprawdzamy w modelach CPA i CCA?
Przeciwnik wybiera dwie dopuszczalne wiadomości tej samej długości. Otrzymuje szyfrogram jednej z nich, wybranej tajnym losowym bitem, i próbuje odgadnąć ten bit. IND-CPA wymaga znikomej przewagi ponad zgadywanie. Szyfrowanie kluczem publicznym przeciwnik może wykonywać sam. CCA1 dodaje zapytania o deszyfrowanie przed szyfrogramem testowym; CCA2 także po nim, z zakazem zapytania o sam szyfrogram testowy. Zmodyfikowany szyfrogram może być legalnym zapytaniem, co trzeba uwzględnić w ataku.
Haszowany ElGamal. Dla ustalonej długości tekstu maska musi mieć dokładnie tyle samo bitów. W dowodzie można przyjąć wyraźnie określony model wyroczni losowej i założenie CDH; sama odporność funkcji haszującej na kolizje nie wystarcza. Praktyczny mechanizm szyfrowania hybrydowego wymaga określonej KDF i ochrony integralności, np. odpowiedniego schematu KEM–DEM z AEAD. Samo dopisanie XOR nie zapewnia CCA2. Rozpisane eksperymenty i redukcje.
Lista nr 10 — przypomnienie: zwykły ElGamal
Zwykły ElGamal szyfruje element grupy. Dlatego wiadomość w tym schemacie jest elementem , a nie dowolnym ciągiem bajtów, np. tekstem zakodowanym w UTF-8.
Demonstrator WASM — implementacja zwykłego ElGamala
Ta implementacja pokazuje zwykły ElGamal na krzywej BLS12-381 w zapisie addytywnym. Wiadomość jest elementem grupowym w wybranej grupie albo . Domyślnie demonstrator wyznacza losowy punkt w MCL/WASM i szyfruje właśnie ten punkt. Opcjonalny panel z krótkim tekstem jest tylko demonstracyjnym, odwracalnym kodowaniem: bajty bardzo krótkiej wiadomości są zamieniane na mały skalar, a dopiero punkt jest tworzony i szyfrowany w MCL/WASM. To kodowanie nie jest częścią definicji zwykłego ElGamala.
Panel wyboru grupy /
To jest miejsce, w którym wybierasz grupę obliczeń dla obu implementacji poniżej: zwykłego ElGamala i haszowanego ElGamala. Po zmianie wyboru generator , klucz publiczny , wiadomość grupowa , składowe szyfrogramu i działania są liczone w tej samej wybranej grupie.
Klucze
Klucze są generowane w grupie wybranej w panelu wyboru grupy. Klucz publiczny to punkt .
Krótki tekst jako punkt w wybranej grupie
Ten panel jest tylko opcjonalnym dodatkiem do klasycznego ElGamala. Dla bardzo krótkiej wiadomości, na przykład A albo OK, bajty UTF-8 są kodowane odwracalnie jako mały skalar , a następnie w MCL/WASM tworzony jest punkt w aktualnie wybranej grupie. To jest mała demonstracja odwracalnego kodowania, a nie element standardowego schematu.
Losowa wiadomość w grupie
Możesz też wyznaczyć losową wiadomość będącą elementem aktualnie wybranej grupy. Jeśli wybrano , to ; jeśli wybrano , to . Nie mieszamy grup: wiadomość, klucz publiczny i szyfrogram muszą leżeć w tej samej grupie. Ten tryb nie pozwala odzyskać tekstu, bo wiadomość jest samym punktem.
Szyfrowanie zwykłe
Ten panel liczy w grupie wskazanej w panelu wyboru grupy. Jeśli wybierzesz , to , , , i należą do ; jeśli wybierzesz , należą do . Liczymy oraz .
Deszyfrowanie zwykłe
Deszyfrowanie odbywa się w tej samej grupie, którą wskazano w panelu wyboru grupy. Odzyskujemy .
Test wydajności zwykłego ElGamala
Domyślnie test mierzy tylko rdzeń MCL zwykłego ElGamala dla losowej wiadomości będącej punktem wybranej grupy: losowanie , , , dodanie punktu przy szyfrowaniu i odjęcie punktu przy deszyfrowaniu. Jeżeli zaznaczysz pole wyboru, pomiar obejmie także demonstracyjne, odwracalne kodowanie aktywnego krótkiego tekstu do punktu oraz jego odkodowanie.
Lista nr 10 — przypomnienie: haszowany ElGamal
Haszowany ElGamal oddziela wartość Diffiego-Hellmana od reprezentacji wiadomości. Wartość grupowa jest podawana na wejście bezpiecznej funkcji haszującej , która zwraca maskę bitową odpowiedniej długości, a wiadomość jest ciągiem bitów tej samej długości.
W praktycznych implementacjach taką rolę często pełni funkcja wyprowadzania klucza, ale w tej liście opisujemy ją po prostu jako bezpieczną funkcję haszującą o wyjściu długości dopasowanej do wiadomości.
Demonstrator WASM — implementacja haszowanego ElGamala
Ta implementacja korzysta z tej samej grupy i tych samych kluczy co demonstrator zwykłego ElGamala. Grupę albo wybierasz w panelu „Panel wyboru grupy” powyżej. Różnica polega na tym, że wiadomość jest ciągiem bajtów, a maska jest wynikiem funkcji haszującej zastosowanej do punktu Diffiego-Hellmana. Długość maski jest dopasowana do długości wiadomości.
Tekst wiadomości
W haszowanym ElGamalu wiadomość jest ciągiem bajtów. Tekst zostanie zaszyfrowany przez XOR z maską otrzymaną przez haszowanie punktu Diffiego-Hellmana.
Szyfrowanie z haszowaniem
Ten panel także liczy w grupie wybranej w panelu wyboru grupy. W tej grupie powstają oraz wspólny punkt ; dopiero z tego punktu funkcja haszująca tworzy maskę o długości wiadomości.
Deszyfrowanie z haszowaniem
Odtwarzamy tę samą maskę z punktu Diffiego-Hellmana policzonego w wybranej grupie: . Następnie liczymy .
Pomiar czasu dotyczy rdzenia kryptograficznego wykonywanego lokalnie w tej przeglądarce. Nie obejmuje skracania punktów do wyświetlenia, wpisywania wyników do HTML, obsługi kliknięcia, przewijania strony ani rysowania interfejsu w przeglądarce. W zwykłym ElGamalu domyślnie mierzony rdzeń obejmuje wyłącznie operacje MCL/WASM dla losowego punktu : losowanie , obliczenie , obliczenie wspólnego punktu oraz dodanie albo odjęcie punktów. Pole wyboru w teście zwykłego ElGamala pozwala jawnie doliczyć koszt krótkiego, odwracalnego kodowania tekstu do punktu i odkodowania. W haszowanym ElGamalu dochodzi jeszcze wyznaczenie maski przez funkcję haszującą i operacja XOR.
Test wydajności haszowanego ElGamala
Ten test mierzy osobno rdzeń haszowanego ElGamala w aktualnie wybranej grupie: losowanie , operacje MCL i , wyznaczenie maski przez funkcję haszującą oraz XOR na bajtach wiadomości. Test nie korzysta ze stanu zwykłego ElGamala ani z kodowania tekstu do punktu.
Aby porównać grupy, wróć do panelu wyboru grupy, wybierz , uruchom odpowiedni test, a potem wybierz i uruchom ten sam test ponownie. Testy wydajności są rozdzielone: test zwykłego ElGamala nie korzysta ze stanu haszowanego ElGamala, a test haszowanego ElGamala nie korzysta ze stanu zwykłego demonstratora.
Lista nr 10 — zadanie 1: analiza zwykłego i haszowanego ElGamala
Po przypomnieniu obu punktów odniesienia przeanalizuj ich poprawność, założenia bezpieczeństwa i podatność na modyfikowanie szyfrogramów.
- Udowodnij poprawność obu wersji schematu, rozpisując równość używaną przy deszyfrowaniu.
- Wyjaśnij, dlaczego bezpieczeństwo IND-CPA zwykłego ElGamala wiążemy z założeniem DDH w grupie .
- Wyjaśnij, jaką rolę pełni funkcja w haszowanym ElGamalu: oddziela reprezentację elementu grupy od wiadomości bitowej i zamienia wartość Diffiego-Hellmana na maskę bitową odpowiedniej długości.
- Wskaż, że w haszowanym ElGamalu wyjście musi być dla przeciwnika nierozróżnialne od losowej maski bitowej przy znanym ; sama odporność na kolizje tego nie gwarantuje. Jedna wystarczająca ścieżka dowodowa polega na modelowaniu jako losowej wyroczni oraz korzystaniu z założenia DDH.
- Pokaż, że zwykły ElGamal jest modyfikowalny: z szyfrogramu można utworzyć szyfrogram wiadomości , mnożąc drugą składową przez publicznie wybrane .
- Pokaż analogiczną modyfikowalność haszowanej wersji: zmiana na zmienia odszyfrowaną wiadomość na .
- Wyjaśnij, dlaczego sama poprawność i bezpieczeństwo IND-CPA nie wystarczają do bezpieczeństwa CCA lub CCA2.
Lista nr 10 — zadanie 2: wariant z dwiema losowościami
Rozważ wariant, w którym jedna maska ElGamala jest zastąpiona iloczynem dwóch masek opartych na tym samym kluczu publicznym.
- Udowodnij poprawność deszyfrowania.
- Porównaj maskę z maską zwykłego ElGamala dla wykładnika .
- Sprawdź, czy losowanie z zamiast z całego ma znaczenie dla dokładnego rozkładu sumy wykładników modulo .
- Oceń, czy ten wariant usuwa modyfikowalność szyfrogramów znaną ze zwykłego ElGamala.
Lista nr 10 — zadanie 3: maska z odwróceniem bitów
Teraz wiadomość jest traktowana jako ciąg bitów ustalonej długości, a element grupy używany jako maska jest najpierw kodowany bitowo.
- Najpierw doprecyzuj, jaka jest dziedzina wiadomości i jak kodujemy elementy grupy do bitów. Bez tego schemat nie jest kompletną definicją szyfrowania.
- Udowodnij poprawność deszyfrowania, korzystając z własności operacji XOR.
- Oceń najpierw, czy ustalone kodowanie wartości Diffiego-Hellmana daje maskę nierozróżnialną od jednostajnego ciągu bitów. Następnie zbadaj, czy publiczna permutacja zmienia tę własność. Uwzględnij ewentualne przewidywalne bity kodowania.
- Pokaż modyfikowalność: jeżeli przeciwnik zmieni na , to po deszyfrowaniu wiadomość zmieni się na .
- Wyjaśnij, dlaczego taki wariant wymagałby dodatkowego uwierzytelnienia szyfrogramu, jeżeli chcielibyśmy mówić o bezpieczeństwie CCA.
Lista nr 10 — zadanie 4: publiczny czynnik w masce
Rozważ wariant, w którym maska zależy od wartości Diffiego-Hellmana oraz od publicznej składowej szyfrogramu.
- Wyjaśnij, w jakiej strukturze algebraicznej operacja „dzielenia przez 2” jest dobrze zdefiniowana. Jeżeli pracujemy w abstrakcyjnej grupie, wskaż, czego brakuje w definicji schematu.
- Przy założeniu, że oznacza dobrze zdefiniowaną operację w reprezentacji, udowodnij poprawność deszyfrowania.
- Wskaż, że czynnik jest publiczny i może zostać odseparowany od maski zależnej od klucza publicznego.
- Oceń, czy dodanie publicznego czynnika usuwa modyfikowalność ElGamala, czy tylko zmienia zapis szyfrogramu.
Lista nr 10 — zadanie 5: nieliniowa funkcja wartości Diffiego-Hellmana
Ostatni wariant buduje maskę z tej samej wartości Diffiego-Hellmana, ale przepuszcza ją przez dodatkową funkcję algebraiczną.
- Zdefiniuj funkcję maskującą i ustal, czy jest dobrze określona w wybranej reprezentacji grupy.
- Udowodnij poprawność, korzystając z równości .
- Przeanalizuj, czy zastosowanie publicznie znanej funkcji do wartości Diffiego-Hellmana zachowuje intuicję bezpieczeństwa IND-CPA, czy może wprowadza dodatkową strukturę możliwą do wykorzystania.
- Sprawdź, czy szyfrogram nadal jest modyfikowalny przez przemnożenie przez wybrany element grupy.
- Porównaj ten wariant ze zwykłym ElGamalem: co naprawdę zmieniło się kryptograficznie, a co jest tylko inną postacią tej samej idei maskowania wiadomości?
Konkretny model dla zadań 4–5. Możesz przyjąć podgrupę dla nieparzystej liczby pierwszej . Wtedy oznacza . Druga składowa szyfrogramu może należeć do kosetu , a nie do samego ; zadeklaruj jej dziedzinę. W zadaniu 5 zbadaj osobno oraz : potęgowanie do trzeciej potęgi nie zawsze jest permutacją grupy. Nie wykonuj tych działań na współrzędnych krzywej eliptycznej.
Lista nr 10 — zadanie 6: tabela porównawcza
Uzupełnij tabelę po przeanalizowaniu wszystkich wariantów. W każdej komórce wpisz krótki, precyzyjny werdykt oraz jedno zdanie uzasadnienia.
| Schemat | Poprawność | Model wiadomości | Intuicja IND-CPA | CCA / CCA2 | Najważniejsza obserwacja |
|---|---|---|---|---|---|
| Klasyczny ElGamal | |||||
| Haszowany ElGamal z XOR | |||||
| Wariant z dwiema losowościami | |||||
| Wariant z i XOR | |||||
| Wariant z czynnikiem | |||||
| Wariant z funkcją |
- W kolumnie „Poprawność” oddziel błędy algebraiczne od błędów wynikających z niejasnego kodowania bitowego.
- W kolumnie „Model wiadomości” wskaż, czy wiadomość jest elementem grupy, czy ciągiem bitów ustalonej długości.
- W kolumnie „CCA / CCA2” odnotuj, czy schemat jest modyfikowalny i jak można wykorzystać wyrocznię deszyfrującą.
- Na końcu sformułuj ogólny wniosek: dlaczego w szyfrowaniu asymetrycznym sama algebraiczna poprawność nie wystarcza do bezpieczeństwa w silniejszych modelach ataku?