Kryptografia II stopień
Od definicji bezpieczeństwa do konstrukcji, redukcji i publikacji naukowych.
W10b. RSA: od arytmetyki do szyfrowania i podpisu
Jedna para odwrotnych operacji nie jest jeszcze dwoma bezpiecznymi schematami. RSA daje publiczne potęgowanie, które łatwo odwrócić posiadaczowi sekretu. Szyfrowanie musi dodatkowo ukrywać wiadomość. Podpis musi wiązać wynik z dokumentem tak, aby przeciwnik nie potrafił stworzyć nowej akceptowanej pary. Dlatego obie funkcjonalności potrzebują innych kodowań.
Setup i KeyGen: wspólna podstawa RSA
Setup przyjmuje i ustala profil : rozmiar modułu, reguły generowania kluczy, kodowania oraz parametry konkretnego szyfrowania albo podpisu. KeyGen przyjmuje i zwraca parę . W zapisie podstawowym , a . Implementacja może dodatkowo zachować tajne czynniki i współczynniki CRT. Zaraz wyjaśnimy, skąd biorą się te liczby.
- CRT
- Chinese Remainder Theorem. Chińskie twierdzenie o resztach.
Dwie kompletne konstrukcje mają odrębne krotki: oraz . Wspólna arytmetyka nie oznacza zalecenia ponownego użycia tego samego klucza w różnych protokołach.
Dlaczego można odwrócić potęgowanie
Zaczynamy od największego wspólnego dzielnika, oznaczanego . Na przykład . Gdy , rozszerzony algorytm Euklidesa znajduje całkowite spełniające . Zatem jest odwrotnością modulo .
Funkcja Eulera liczy, ile liczb ze zbioru jest względnie pierwszych z , czyli ma z największy wspólny dzielnik równy 1. Na przykład , bo warunek ten spełniają dokładnie . Te klasy reszt tworzą grupę , więc .
Chińskie twierdzenie o resztach, CRT, mówi tutaj, że para reszt modulo różne liczby pierwsze wyznacza dokładnie jedną resztę modulo . Przykładowo liczba równa 2 modulo 3 i 3 modulo 5 to 8 modulo 15. Dlatego późniejsze wykazanie równości modulo oba czynniki wystarczy do równości modulo ich iloczyn.
Wybieramy dwie różne duże nieparzyste liczby pierwsze . Litera oznacza tu drugi czynnik modułu, nie losowość protokołu. Dla ich iloczynu mamy:
Skąd ten iloczyn? Odwracalna reszta modulo musi być niezerowa zarówno modulo , jak i modulo . Mamy odpowiednio i możliwości. CRT przyporządkowuje każdej takiej parze dokładnie jeden element .
Wykładnik publiczny wybieramy tak, aby i . Następnie obliczamy wykładnik prywatny jako dodatnią odwrotność modulo :
Zapis oznacza tutaj odwrotność modularną, nie ułamek . Równoważnie dla pewnej liczby całkowitej . Klucz publiczny to , a prywatny to . Czynniki i wartość również pozostają tajne. Implementacja może zachować dodatkowe współczynniki CRT. Tutaj nie oznacza pairingu.
Dlaczego odzyskujemy wejście? Dla twierdzenie Eulera daje . Stąd:
RSA działa także dla reprezentantów , które nie należą do . Nie wolno wtedy bezpośrednio użyć twierdzenia Eulera. Aby uzasadnić odzyskanie z , rozpatrujemy osobno dwa przypadki modulo :
- Jeżeli , również .
- W przeciwnym przypadku małe twierdzenie Fermata daje . Ponieważ dzieli , otrzymujemy .
Ten sam argument działa modulo . CRT daje zatem
To wyjaśnia poprawność także wtedy, gdy nie jest odwracalne modulo . Natomiast założenie RSA, użyte później w dowodzie FDH, dotyczy znalezienia pierwiastka losowego elementu grupy . Faktoryzacja wystarcza do odwracania RSA. Ogólnej równoważności tych problemów nie znamy.
Mały rachunek do sprawdzenia: , , , , , . Mamy . Dla otrzymujemy , a . To liczby do nauki, nie parametry ochrony danych.
Związek z zapisem w standardzie. LCM (least common multiple) to najmniejsza wspólna wielokrotność. W PKCS #1, RFC 8017, §3.2 wystarcza słabszy warunek , gdzie funkcja Carmichaela dla naszego modułu spełnia:
- PKCS
- Public-Key Cryptography Standards. Seria standardów kryptografii z kluczem publicznym.
Ostatni symbol oznacza, że dzieli . Dlatego wybór według funkcji Eulera spełnia także warunek standardu. To nie są jednak te same funkcje ani identyczne warunki na . W naszym przykładzie , a . Wartość spełnia warunek modulo , lecz nie modulo . Mimo to wykonuje tę samą prywatną operację RSA co , ponieważ wykładniki różnią się o . Funkcji nie należy też mylić z parametrem bezpieczeństwa w Setup.
Wprowadzenie używa funkcji Eulera, aby bezpośrednio powiązać wybór kluczy z liczbą elementów grupy i twierdzeniem o potęgowaniu. Tę podstawę przedstawia także oryginalna praca Rivesta, Shamira i Adlemana, §§V–VI. Przy korzystaniu z biblioteki obowiązuje jej profil generowania kluczy, nie mały przykład dydaktyczny.
Dlaczego „surowe RSA” nie wystarcza
Szyfrowanie deterministyczne zdradza porównanie. Przeciwnik wybiera dwie wiadomości, sam liczy ich potęgi publicznym kluczem i porównuje wynik z wyzwaniem. Nie musi odwracać żadnej potęgi.
Algebra pozwala zmieniać szyfrogram. Dla i wybranego :
To podobna lekcja jak przy ElGamalu: odwracalność rachunku nie oznacza odporności na aktywną modyfikację. „Podpis” bez kodowania również zawodzi. Przeciwnik wybiera , oblicza i ma akceptowaną parę bez pytania o podpis. Nie wybrał wcześniej treści , ale już to łamie podstawowy cel egzystencjalnej niepodrabialności w tak zdefiniowanej domenie wiadomości.
RSA-OAEP
- RSA-OAEP
- RSA Encryption Scheme with Optimal Asymmetric Encryption Padding. Schemat szyfrowania RSA z kodowaniem OAEP.
Cel: szyfrować krótką wiadomość kluczem publicznym RSA, stosując losowe kodowanie OAEP przed potęgowaniem. Parametry RSA i konwersje bajtów z poprzedniej części pozostają bez zmian. Teraz określamy pełny interfejs szyfrowania, a następnie rozpisujemy wnętrze kodowania i jego kontroli.
- OAEP
- Optimal Asymmetric Encryption Padding. Kodowanie wiadomości przed szyfrowaniem asymetrycznym.
RSA-OAEP: algorytmy i przepływ
OAEPEncode i OAEPDecode oznaczają procedury kodowania, które rozpisujemy po diagramie. Nie są dodatkowymi założonymi wyroczniami. OS2IP zamienia bajty na liczbę, a I2OSP liczbę na bajty o ustalonej długości k.
Rozmiar modułu i parametry wybranej konstrukcji jak w tym rozdziale.
Wylosuj różne nieparzyste liczby pierwsze p,r według profilu. Wybierz 3 ≤ e < N. Ten wariant z funkcją Eulera zapewnia poprawność. Związek z warunkiem PKCS #1 wyjaśniamy przy kluczach RSA.
Kodowanie losuje seed. Sprawdź limit długości M.
Sprawdź długość, c<N i całe kodowanie. Każdy błąd daje ⊥.
RSA-OAEP
Nadawca:
Odbiorca:
- Nadawca, Enc: kodowanie losowe:
- Nadawca, Enc: publiczna operacja RSA:
- Nadawca → Odbiorca: Szyfrogram bajtowy
- Odbiorca, Dec: prywatna operacja RSA:
- Odbiorca, Dec: kontrola i odczyt: Niepoprawne kodowanie: ⊥.
Enc: kodowanie i publiczna potęga
Wejście: profil , klucz publiczny i wiadomość bajtowa dopuszczalnej długości. Etykieta jest uzgodnionym jawnym parametrem kontekstu, a nie sekretem. Wyjście: szyfrogram długości modułu w bajtach. Przekroczenie limitu wejścia oznacza błąd szyfrowania.
RSAES-OAEP szyfruje ciąg bajtów , nie dowolnie duży plik jedną potęgą. Niech oznacza długość modułu w bajtach, długość skrótu, a uzgodnioną etykietę kontekstu. Funkcja poniżej zwraca bajty, nie skalar ani punkt krzywej. rozwija zalążek do bajtów przez haszowanie zalążka z kolejnymi czterobajtowymi licznikami i obcięcie wyniku do zadanej długości.
- MGF1
- Mask Generation Function. Funkcja generowania maski. MGF1 oznacza konkretną konstrukcję tej funkcji.
- Tworzymy . jest odpowiednio długim ciągiem zer.
- Losujemy niezależny zalążek długości bajtów.
- Maskujemy blok: .
- Maskujemy zalążek: .
- Łączymy . Zamieniamy bajty na liczbę, podnosimy do modulo i zapisujemy wynik w dokładnie bajtach.
Dec: prywatna potęga i kontrola kodowania
Wejście: profil , klucz tajny , szyfrogram i ta sama uzgodniona etykieta . Wyjście: odzyskana wiadomość albo . Sprawdzamy długość i zakres reprezentanta szyfrogramu. Następnie wykonujemy operację prywatną. Zdejmujemy maski w odwrotnej kolejności i kontrolujemy całe kodowanie, w tym skrót etykiety. Błędne kodowanie oznacza odrzucenie. Różne szczegóły błędów i czasy ich obsługi nie powinny tworzyć wyroczni dla napastnika.
Schemat funkcjonalny OAEP i PSS. Szczegóły masek i kontroli formatu są opisane w tekście.
Gotowe do rozpoczęcia.
- PSS
- Probabilistic Signature Scheme. Probabilistyczny schemat podpisu.
- RSASSA-PSS
- RSA Signature Scheme with Appendix, with Probabilistic Signature Scheme encoding. Podpis RSA z kodowaniem PSS. Wiadomość towarzyszy podpisowi, a nie jest z niego odzyskiwana.
- EMSA-PSS
- Encoding Method for Signature with Appendix, Probabilistic Signature Scheme. Metoda kodowania wiadomości dla podpisu PSS.
Ograniczenie długości wynosi . Dla modułu 2048-bitowego i SHA-256 to bajtów. Praktyczna ochrona większych danych używa konstrukcji hybrydowej, np. szyfruje losowy klucz danych, a sam plik chroni AEAD. Dokładny format i kompozycję wybiera się z konkretnego protokołu.
RSA-PSS
Cel: podpisać wiadomość za pomocą RSA i umożliwić publiczne sprawdzenie podpisu. PSS określa kodowanie podpisywanego skrótu z losową solą oraz jego kontrolę. Nie jest szyfrowaniem wiadomości kluczem prywatnym.
RSA-PSS: algorytmy i przepływ
PSSEncode i PSSCheck oznaczają pełne EMSA-PSS z tego rozdziału. eLen to liczba bajtów kodowania, emBits=bitlen(N)−1. Podpis ma k bajtów, gdzie k jest długością modułu.
Rozmiar modułu i parametry wybranej konstrukcji jak w tym rozdziale.
Wylosuj różne nieparzyste liczby pierwsze p,r według profilu. Wybierz 3 ≤ e < N. Ten wariant z funkcją Eulera zapewnia poprawność. Związek z warunkiem PKCS #1 wyjaśniamy przy kluczach RSA.
Profil określa hasz, MGF1 i długość soli.
Błędna długość, zakres lub kodowanie daje 0, także gdy konwersja do eLen bajtów jest niemożliwa.
RSA-PSS
Podpisujący:
Weryfikator:
- Podpisujący, Sign: kodowanie z solą:
- Podpisujący, Sign: prywatna operacja RSA:
- Podpisujący → Weryfikator: Wiadomość i podpis
- Weryfikator, Verify: publiczna operacja RSA:
- Weryfikator, Verify: zgodność z wiadomością:
Sign: kodowanie i prywatna potęga
Wejście: profil , klucz tajny i wiadomość . Profil określa hasz, MGF1 i długość soli. Wyjście: podpis , zapisany w dokładnie tylu bajtach co moduł. Wiadomości nie szyfrujemy.
W RSASSA-PSS wiadomość pozostaje dostępna weryfikatorowi. Celem jest jej uwierzytelnienie, nie ukrycie. Najpierw liczymy skrót i losujemy sól. Następnie:
Zapis oznacza osiem zerowych bajtów. Budujemy blok zer, separator i sól. Maskujemy ten blok przez MGF1 wywołaną na . Zerujemy wymagane najwyższe bity i dołączamy oraz końcowy bajt . Kodowanie używa bitów. Jego reprezentanta podnosimy do modulo .
Verify: kontrola zgodności z wiadomością
Wejście: profil , klucz publiczny , wiadomość i podpis . Wyjście: 1 albo 0. Weryfikator sprawdza długość i zakres podpisu, podnosi jego reprezentanta do , sprawdza format, odzyskuje sól i przelicza zależność z wiadomością. Zwraca 1 wyłącznie po przejściu wszystkich kontroli. Nie „odszyfrowuje podpisanego dokumentu”. Dwa podpisy tej samej wiadomości zwykle się różnią dzięki soli. Różne wyniki nie oznaczają różnych kluczy.
Rzeczywiste WebCrypto. Osobne klucze RSA 2048 do OAEP i PSS, e = 65537, SHA-256, sól PSS 32 bajty. Klucze testowe pozostają lokalne.
RSA-OAEP · szyfrogramy
RSA-PSS · podpisy
Gotowe do rozpoczęcia.
Pełne wartości przebiegu
Jeszcze nie wykonano obliczeń.
Co należy do standardu, a co do implementacji
| Element | Rola | Czego nie wolno utożsamiać |
|---|---|---|
| RSAEP / RSADP | Publiczna i prywatna operacja potęgowania | Z kompletnym szyfrowaniem |
| RSAES-OAEP | Losowe kodowanie i szyfrowanie | Z podpisem PSS |
| RSASSA-PSS | Kodowanie wiadomości i podpis | Z szyfrowaniem dokumentu |
| PKCS #1 v1.5 | Osobne starsze kodowania szyfrowania i podpisu | Słabość jednego nie jest automatycznie atakiem na drugie |
| RSA-FDH | Schemat podpisu i przejrzysta redukcja w ROM | Ze standardowym formatem PSS |
- RSAEP
- RSA Encryption Primitive. Podstawowa operacja szyfrująca RSA.
- RSADP
- RSA Decryption Primitive. Podstawowa operacja deszyfrująca RSA.
Podstawowym dokumentem mechanizmów jest PKCS #1 v2.2, RFC 8017, §§3–9. Jest to uzgodniona specyfikacja opublikowana jako RFC kategorii Informational. Dobór parametrów, kodowania kluczy i dozwolonych algorytmów należy dodatkowo do profilu wdrożenia. Nie przenosimy dawnych domyślnych parametrów dokumentu do nowej aplikacji bez sprawdzenia.
Obliczenia prywatne zwykle przyspiesza CRT. Dla wejścia liczymy i , a potem składamy wynik. Implementacja musi chronić się przed kanałami bocznymi i błędami obliczeń. Blinding losowo przekształca wejście przed tajną operacją i usuwa maskę po niej. Samo użycie CRT nie daje tych zabezpieczeń.
RSA może podpisywać transkrypt w TLS 1.3, ale TLS 1.3 nie stosuje starej wymiany klucza przez szyfrowanie RSA. To przykład, dlaczego nazwa algorytmu nie określa jeszcze jego roli. Zobacz RFC 8446, §§1.2 i 4.2.3. Wymagania dla generowania kluczy i podpisów RSA oraz ECDSA opisuje także FIPS 186-5. RSA nie jest postkwantowe. Zwiększenie modułu nie zastępuje migracji do innej rodziny problemów, omawianej w W15.
- TLS
- Transport Layer Security. Protokół ochrony komunikacji, zapewniający m.in. poufność i integralność.
- ECDSA
- Elliptic Curve Digital Signature Algorithm. Algorytm podpisu cyfrowego na krzywych eliptycznych.
Powiązania: dowód RSA-FDH, C17, L12.
W10c. RSA-FDH: sfałszowany podpis rozwiązuje trudne zadanie
W dowodzie Schnorra potrzebujemy dwóch odpowiedzi i odejmowania równań. W RSA-FDH jeden właściwie umieszczony podpis może już być rozwiązaniem instancji RSA. Trudność polega na przygotowaniu symulacji, która nie zna klucza prywatnego, a mimo to odpowiada na legalne żądania podpisów.
RSA-FDH: algorytmy i cel przeciwnika
Jest to schemat . Setup ustala profil RSA oraz regułę haszowania do pełnej domeny właściwego modułu. KeyGen tworzy oraz zgodnie z opisem kluczy RSA. Dopiero dla tego określona jest docelowa grupa hasza. Sign przyjmuje , i wiadomość , a zwraca . Verify przyjmuje , , i , a zwraca 1 albo 0. Szczegóły haszowania odróżniają ten schemat od PSS.
RSA-FDH: algorytmy i przepływ
Dla danego N funkcja ℋ_FDH ma pełną domenę wyjściową ℤ*_N. Setup ustala sposób jej definiowania dla modułu powstałego w KeyGen.
Rozmiar modułu i parametry wybranej konstrukcji jak w tym rozdziale.
Wylosuj różne nieparzyste liczby pierwsze p,r według profilu. Wybierz 3 ≤ e < N. Ten wariant z funkcją Eulera zapewnia poprawność. Związek z warunkiem PKCS #1 wyjaśniamy przy kluczach RSA.
Sprawdź zakres i przynależność podpisu do grupy RSA.
RSA-FDH
Podpisujący:
Weryfikator:
- Podpisujący, Sign: pełna domena RSA:
- Podpisujący → Weryfikator: Podpis FDH
- Weryfikator, Verify:
Używamy klucza RSA z poprzedniego rozdziału. Oznaczenie dotyczy osobnej wyroczni o pełnej domenie wyjściowej RSA:
Weryfikacja wymaga reprezentanta i równości . Indeks FDH odróżnia tę funkcję od do i do grupy krzywej. Sam krótki SHA-256 zamieniony na liczbę nie jest losowaniem z pełnej grupy .
W eksperymencie EUF-CMA przeciwnik dostaje klucz publiczny. Może adaptacyjnie pytać wyrocznię losową i wyrocznię podpisującą. Wygrywa, jeżeli zwróci akceptowaną parę , przy czym nigdy nie było pytaniem do wyroczni podpisującej. Samo wcześniejsze zapytanie o hasz jest dozwolone. Nie wymagamy, aby przeciwnik odzyskał .
Symulator wybiera miejsce trudności przed uruchomieniem ataku
Algorytm redukcji dostaje , gdzie jest losowe w . Jego celem jest znaleźć takie, że . Nie zna , ani .
Niech ogranicza liczbę zapytań przeciwnika o hasz, a liczbę żądań podpisu. Ustawiamy . Dodatkowa jedynka pozwala utworzyć wpis podczas końcowej weryfikacji, nawet jeśli przeciwnik nie pytał wcześniej o hasz sfałszowanej wiadomości. Redukcja losuje jednostajnie z przed uruchomieniem . Pozycje liczą różne wiadomości w tabeli, a nie powtórzenia zapytań.
| Zapytanie | Co robi redukcja | Dlaczego odpowiedź pasuje |
|---|---|---|
| Ponowny hasz wiadomości | Zwraca zapisany wynik | Jedna funkcja daje ten sam wynik |
| Nowy wpis poza pozycją | Losuje i zapisuje | Potęgowanie przez jest permutacją grupy |
| Nowy wpis na pozycji | Zapisuje | ma właściwy rozkład, ale jego pierwiastek jest nieznany |
| Podpis poza pozycją | Tworzy wpis, jeśli potrzeba, i zwraca | |
| Podpis na pozycji | Przerywa symulację | Uczciwa odpowiedź rozwiązywałaby instancję RSA |
Symbol oznacza brak znanego pierwiastka. Programowanie wyroczni nie daje przeciwnikowi prawa do zmiany hasza. Jest narzędziem redukcji w idealizowanym modelu. Zwykła implementacja nie może przestawiać SHA-256 na życzenie.
Jedna prywatna tabela, dwa publiczne interfejsy
Redukcja przechowuje dla każdej wiadomości parę . Pierwsza składowa jest odpowiedzią na zapytanie o hasz. Druga jest znanym podpisem, jeżeli redukcja potrafi go przygotować. Obie wyrocznie najpierw sprawdzają tę samą tabelę. Nie prowadzą niezależnych losowań dla tej samej wiadomości.
Przy zwykłym nowym wpisie redukcja zaczyna od jednostajnego . To będzie podpis. Następnie wylicza i zapisuje obie wartości. Jeżeli przyszło zapytanie o hasz, zwraca tylko . Jeżeli przyszło żądanie podpisu, zwraca tylko . Kolejne zapytanie drugiego rodzaju korzysta z już gotowej pary. Nie modyfikuje wcześniej ujawnionego hasza.
- Najpierw Hash: powstaje para , ale przeciwnik otrzymuje tylko hasz. Potencjalny podpis pozostaje prywatny do żądania Sign.
- Najpierw Sign: powstaje ta sama para, przeciwnik otrzymuje podpis, a przyszła odpowiedź Hash jest już ustalona. Przeciwnik może również sam obliczyć publiczne .
- Powtórzone pytanie: odczyt z tabeli bez ponownego losowania. FDH jest tutaj deterministycznym schematem podpisu, inaczej niż PSS ze świeżą solą.
- Wyjątkowy wpis : zamiast znanego podpisu zapisujemy . Hash może zwrócić , ale Sign tego wpisu musi przerwać symulację.
Tabela oraz informacja o pozycji są wewnętrznym stanem redukcji, nie komunikatem protokołu. Nie dostaje ich ani przeciwnik, ani rzeczywisty podpisujący. W symulacji redukcja zastępuje usługę podpisującą, zamiast prosić ją o użycie nieznanego klucza. Podgląd całej tabeli na rysunku służy wyłącznie studentowi. Wyciekanie tego stanu nie jest dozwolonym zapytaniem w rozpatrywanym eksperymencie.
Model dydaktyczny RSA: . Drugi różny wpis osadza wyzwanie. Hash i Sign korzystają z tej samej tabeli. Nie jest to implementacja produkcyjnego podpisu.
- Sprawdzenie
- Losowanie
- Publiczne potęgowanie
- Zapis
- Odczyt
- Odpowiedź
Tabela jest pusta. Żadne zapytanie nie zostało wysłane.
Prywatna tabela redukcji
Widoczna tylko w objaśnieniu. Uczciwy podpisujący w rzeczywistym schemacie jej nie otrzymuje. Redukcja zastępuje jego interfejs.
Widok przeciwnika
Historia dostarczonych odpowiedzi. Wewnętrzne losowanie i tworzenie wpisu nie są osobnymi komunikatami.
| Zapytanie | Odpowiedź |
|---|
Odwrócona kolejność obliczeń, identyczny rozkład pary
Dla zwykłego wpisu porównajmy dwa sposoby przygotowania pary hasz–podpis. Uczciwy schemat wybiera losowy hasz i oblicza jego prywatny pierwiastek. Symulator losuje pierwiastek i stosuje publiczne potęgowanie. Zmienił się kierunek przygotowania pary, nie jej rozkład.
Niech . Dla dowolnych oba sposoby dają
Wynika to z bijektywności potęgowania RSA. Każdy hasz ma dokładnie jeden pierwiastek w tej grupie. Nie wystarczyłaby jednostajność samych haszy, gdyby podpisy nie były z nimi odpowiednio skorelowane. Tutaj zgadza się cały rozkład pary. Tabela zachowuje go także przy obu kolejnościach zapytań i ich powtórzeniach.
Przeciwnik nie obserwuje kolejności wewnętrznych obliczeń ani prywatnych losowań. W tym modelu nie dostaje też ich pomiarów czasowych. Z samych dostarczanych wartości nie może wykryć zamiany dla zwykłych wpisów. Jest to równość rozkładów, mocniejsza niż jedynie obliczeniowa nierozróżnialność. Cała redukcja może jednak przerwać na Sign wpisu . Nie twierdzimy, że symulator zawsze odpowie na wszystko. Do przerwania zachowuje zgodny widok, a zdarzenie trafienia świeżej fałszywej wiadomości opisujemy osobno poniżej.
Mały moduł 3233. Symulator zna tylko N, e, Y. Poprawne fałszerstwo dostarcza scenariusz dydaktyczny, nie rzeczywisty atak na RSA. Cel J = 2 jest tu ustalony do ilustracji.
| Nr | Wiadomość | Hasz | Znany pierwiastek |
|---|---|---|---|
| Tabela oczekuje na zapytania. | |||
Gotowe do rozpoczęcia.
Pełne wartości przebiegu
Jeszcze nie wykonano obliczeń.
Rozkład odpowiedzi, świeżość i sukces
- Zgodność rozkładu. Dla zwykłego wpisu jest jednostajne, a potęgowanie jest bijekcją. Wynik jest więc jednostajny w tej samej grupie co . Tabela zachowuje spójność odpowiedzi i podpisów.
- Właściwe trafienie. Rozpatrzmy zdarzenie, że tworzy poprawne fałszerstwo i jest pozycją . Świeżość oznacza, że redukcja nigdy nie musiała podpisywać tego wpisu. Nie przerwała więc symulacji z tego powodu.
- Ekstrakcja bez cofania. Poprawność fałszerstwa daje . Redukcja zwraca po prostu .
Jeżeli prawdopodobieństwo udanego fałszerstwa wynosi , ten prosty argument daje
Można formalnie sprzęgnąć prawdziwy eksperyment z symulacją dla każdego wyboru . Do chwili ewentualnego przerwania widoki mają ten sam rozkład. Dla każdego udanego świeżego fałszerstwa dokładnie jeden z wyborów wskazuje jego wpis i nie wymusza przerwania. Nieużyte pozycje oznaczają nietrafione losowania, nie pozwalają wybierać po zobaczeniu wyniku.
Czas redukcji obejmuje czas przeciwnika, obsługę tabeli, losowanie odwracalnych reszt i najwyżej publicznych potęgowań. Wyraźny czynnik jest stratą redukcji. Nie jest atakiem o koszcie ani optymalną granicą dla FDH. Ważny jest tu kompletny argument bazowy, nie deklaracja ciasności.
Algorytm redukcji: jeden wybór celu, jedna wspólna tabela
Poniższy zapis zbiera cały dowód w jeden wykonywalny logicznie algorytm. Redukcja zna wyłącznie i swoje losowania. Nie wylicza pierwiastka przed otrzymaniem fałszerstwa. Wiersze tabeli numerujemy w chwili pierwszego pojawienia się nowej wiadomości, niezależnie od rodzaju zapytania.
Inicjalizacja:
Q = q_H + q_S + 1
J = jednostajna pozycja od 1 do Q
T = pusta tabela, Signed = pusty zbiór
Ensure(m):
jeżeli m jest w T, zwróć T[m]
i = liczba wierszy T + 1
jeżeli i = J, wpisz T[m] = (i, Y, brak pierwiastka)
w przeciwnym razie:
wylosuj jednostajne u z odwracalnych reszt modulo N
wpisz T[m] = (i, u^e mod N, u)
zwróć T[m]
Hash(m):
(i, h, u) = Ensure(m)
zwróć h
Sign(m):
(i, h, u) = Ensure(m)
dodaj m do Signed
jeżeli i = J, przerwij całą próbę redukcji
zwróć u
Po otrzymaniu (m*, sigma*):
odrzuć, jeśli m* jest w Signed lub sigma* ma zły zakres
(i, h, u) = Ensure(m*)
odrzuć, jeśli (sigma*)^e mod N != h lub i != J
zwróć sigma* jako pierwiastek RSA dla Y
Dlaczego zgadywanie ma koszt dokładnie Q, a nie jeszcze jeden iloczyn strat?
Wyobraźmy sobie pomocniczy uczciwy eksperyment, w którym znamy także prywatny klucz RSA. Możemy w nim obsłużyć wszystkie zapytania i dopiero do analizy dołożyć niezależny losowy indeks . Każdy wiersz ma ten sam jednostajny rozkład hasza. W wybranym wierszu można ten hasz utożsamić z jednostajnym wyzwaniem . To sprzężenie rozkładów, nie polecenie wyboru przez rzeczywistą redukcję.
Niech będzie indeksem wiadomości poprawnego świeżego fałszerstwa w tym eksperymencie. Dla każdego udanego przebiegu jest dokładnie jedna dobra pozycja spośród . Nieużyte pozycje nadal są możliwymi nietrafionymi wyborami. Z niezależności pomocniczego :
Na tym zdarzeniu wiadomość celu nie wystąpiła w Sign, bo fałszerstwo jest świeże. Rzeczywista redukcja nie potrzebuje więc nieznanego pierwiastka do żadnej wcześniejszej odpowiedzi. Może wykonać cały ten przebieg. Otrzymany podpis spełnia i jest rozwiązaniem zadania.
Nie mnożymy dodatkowo przez prawdopodobieństwo „nie było przerwania”. Na dobrym zdarzeniu brak takiego przerwania już wynika ze świeżości. To najważniejsze powiązanie definicji EUF-CMA z rachunkiem redukcji. Na pozostałych zdarzeniach redukcja może przerwać albo nie trafić celu.
Różnica względem forking lemma
RSA-FDH nie potrzebuje dwóch transkryptów. Trudna instancja znajduje się w jednym wyniku hasza. Przeciwnik zwraca jej pierwiastek jako podpis. W Schnorrze trudna instancja jest w kluczu publicznym, a rozwiązanie wydobywamy dopiero z dwóch zgodnych równań z różnymi wyzwaniami.
| Schemat | Co redukcja umieszcza i gdzie | Co musi uzyskać |
|---|---|---|
| RSA-FDH | w jednym odgadniętym wierszu Hash | Jeden świeży podpis tej wiadomości |
| Schnorr | w kluczu publicznym | Dwa podpisy ze wspólnym zobowiązaniem i różnym wyzwaniem |
| Okamoto | w relacji generatorów | Reprezentację klucza inną od zapamiętanej |
| Herranz–Sáez | we wszystkich kluczach pierścienia | Dwa podpisy z tym samym wektorem zobowiązań i jedną zmienioną odpowiedzią Hash |
W ostatnim wierszu „odpowiedź Hash” oznacza wyzwanie , a nie skalarną odpowiedź podpisu . Szczegóły tych trzech redukcji rozwijamy w części o pełnych dowodach.
Co dokładnie cytujemy
Bellare i Rogaway, The Exact Security of Digital Signatures: How to Sign with RSA and Rabin, EUROCRYPT 1996, analizują FDH oraz konstruują PSS. Powyżej pokazaliśmy dydaktyczny wariant zgadywania wpisu, z jawnym doliczeniem zapytania końcowego. Nie jest to dowód bezpieczeństwa całego PKCS #1 ani powód, by zastępować PSS własnym kodowaniem. Późniejsze ulepszenia redukcji FDH nie zmieniają tej różnicy między schematem, modelem i konkretną granicą.
Sprawdź rozumienie: dlaczego zwrócenie losowego elementu grupy zamiast utrudniłoby podpisywanie? Dlaczego trafienie wpisu podpisanej wiadomości nie daje dozwolonego fałszerstwa? Dlaczego nie używamy tu forking lemma? Zadania i warianty przerwania: C17 i L12.