Kryptografia II stopień
Od definicji bezpieczeństwa do konstrukcji, redukcji i publikacji naukowych.
W10a. Szyfrowanie asymetryczne: ElGamal i Cramer–Shoup
Nowa potrzeba: odbiorca udostępnił klucz publiczny i może być nieobecny. Nadawca chce zostawić mu poufną wiadomość bez wcześniejszego uzgodnienia wspólnego sekretu. To nie jest identyfikacja ani pełna wymiana AKE. Nadawca sam wykonuje Enc, a odbiorca później wykonuje Dec.
Z DH znamy już równość . ElGamal wykorzysta ją do utworzenia i odtworzenia maski wiadomości. W tym zastosowaniu jest długoterminowym kluczem odbiorcy, a jednorazową częścią szyfrogramu. Najpierw zapiszmy interfejs. Dopiero potem podstawimy do niego ten rachunek.
Szyfrowanie publiczne: Setup, KeyGen, Enc, Dec
Schemat szyfrowania z kluczem publicznym zapisujemy jako krotkę:
| Algorytm i jego wynik | Wejście | Co wykonuje i komu służy |
|---|---|---|
| Parametr bezpieczeństwa | Ustala jawne parametry całego schematu. | |
| Parametry publiczne | Odbiorca tworzy powiązaną parę kluczy. Udostępnia , zachowuje . | |
| Parametry, klucz publiczny odbiorcy i wiadomość | Nadawca szyfruje. Wynik należy do określonej przez schemat przestrzeni szyfrogramów . | |
| Parametry, klucz tajny odbiorcy i szyfrogram | Odbiorca zwraca wiadomość z albo , czyli odrzucenie. |
Enc jest skrótem od encrypt, czyli szyfruj. Dec pochodzi od decrypt, czyli odszyfruj. Losowość jest wewnętrznym wejściem algorytmu probabilistycznego. Nie trzeba przekazywać sekretu odbiorcy ani losowych monet szyfrującego jako osobnego pola szyfrogramu. Kiedy analizujemy konkretny przebieg, jawnie nazwiemy jego losowość.
Poprawność wymaga, żeby odszyfrowanie uczciwie utworzonego szyfrogramu dawało wejściową wiadomość. Dla dopuszczalnych parametrów i pary kluczy wytworzonej przez KeyGen:
Prawdopodobieństwo uwzględnia losowania algorytmów. To wersja z doskonałą poprawnością, wystarczająca dla omawianych tu ElGamala i Cramera–Shoupa. Inne rodziny mogą dopuszczać jawnie ograniczone prawdopodobieństwo błędu. Poprawność nie mówi jeszcze nic o tym, czy przeciwnik potrafi odczytać wiadomość. To osobne wymaganie bezpieczeństwa.
Granica uprawnień: klucz publiczny pozwala każdemu zaszyfrować wiadomość do tego odbiorcy. Dlatego samo poprawne odszyfrowanie nie ustala nadawcy. Klucz tajny jest argumentem lokalnej procedury Dec i nie jest częścią przesyłanych danych. Wiarygodne pozyskanie odbiorcy jest konieczne, aby nie zaszyfrować wiadomości do klucza podstawionego przez przeciwnika.
ElGamal
ElGamal szyfruje element grupy za pomocą wspólnej maski, którą nadawca wylicza z klucza publicznego odbiorcy i własnej losowości. Odbiorca odtwarza tę maskę za pomocą klucza tajnego. Zapiszmy cały schemat , zgodnie z definicją szyfrowania.
| Symbol | Typ i rola | Kto go zna |
|---|---|---|
| Opis grupy pierwszego rzędu , generatora, działań i kodowania | Wszyscy | |
| Klucz tajny odbiorcy, skalar | Odbiorca | |
| Klucz publiczny odbiorcy, element grupy | Wszyscy, także przeciwnik | |
| Świeża losowość pojedynczego szyfrowania, nie klucz długoterminowy | Szyfrujący | |
| Wiadomość w wersji grupowej | Nadawca, po odszyfrowaniu także odbiorca | |
| Przesyłany szyfrogram | Może być jawny |
Małe jest sekretem. Duże jest publiczne. Litery nie są zamienne. Element grupy nie jest tym samym co jego wykładnik .
Szyfrowanie ElGamala: algorytmy i przepływ
Klucz A należy do odbiorcy. Wiadomość m jest elementem G. Szyfrowanie dowolnych bajtów wymaga osobnego kodowania lub konstrukcji hybrydowej.
Rząd q jest liczbą pierwszą. Ustal kodowania i działania grupy. Dodatkowe funkcje wskazano przy konstrukcji.
Profil z całym ciałem, zgodnie z opisem konstrukcji. Sekret a pozostaje u właściciela. Odbiorca uwierzytelnia publiczny A.
Odrzuć błędny format i elementy poza grupą. Sama zmiana poprawnego elementu nie musi powodować błędu.
Szyfrowanie ElGamala
Nadawca:
Odbiorca:
- Nadawca, Enc: świeża maska:
- Nadawca → Odbiorca: Dwa elementy grupy
- Odbiorca, Dec: usuń maskę: Tylko ta strona zna a.
Setup: parametry ElGamala
Wejście: . Wyjście: publiczne z opisem kodowania i działań. Algorytm dobiera grupę cykliczną pierwszego rzędu oraz generator . Do poniższego argumentu poufności potrzebujemy rodziny grup, w której DDH jest trudne. Sama możliwość wykonania potęgowania nie zapewnia tego założenia.
KeyGen: klucze odbiorcy
Wejście: . Odbiorca losuje , oblicza i zwraca . Klucz publiczny udostępnia w sposób, który pozwala przypisać go właściwemu odbiorcy. Klucz tajny zachowuje. Parametry są dostępne przy obu kluczach.
Enc: szyfrowanie ElGamala
Wejście: , publiczny klucz i wiadomość . Algorytm losuje świeże i oblicza:
Wyjście: . Nadawca przesyła dwa elementy grupy. Nie przesyła osobno ani maski . Nie potrzebuje . Wiadomość jest tu elementem grupy, a nie dowolnym plikiem. Kodowanie lub konstrukcję hybrydową trzeba określić osobno.
Dec: odszyfrowanie ElGamala
Wejście: , tajny klucz i szyfrogram . Jeśli nie można odczytać kanonicznie zakodowanej pary , zwracamy . W przeciwnym razie obliczamy:
Wyjście: odzyskany element . Potęga odtwarza maskę. Odwrotność w grupie ją usuwa. Kontrola typu nie jest kontrolą autentyczności. W podstawowym ElGamalu każda poprawnie zakodowana para elementów grupy daje jakąś wiadomość.
Poprawność i przykład liczbowy
Podstawiamy wyniki Enc do wejścia Dec:
Do małego rachunku wybierzmy podgrupę rzędu modulo , z generatorem . Dla klucz publiczny to . Szyfrujemy z . Otrzymujemy , maskę i . Odbiorca oblicza oraz . Stąd . Liczby są celowo małe, więc nie zapewniają bezpieczeństwa.
W tej wersji definicji skalary losujemy z całego , także z możliwością wyniku 0. Zdarzenia lub są degeneracjami, każda o prawdopodobieństwie . Profile wykluczające zero powinny określać to jawnie. Równanie poprawności działa również dla zera.
Bezpieczeństwo: od CPA do ataku CCA
Redukcja DDH dostaje i odpowiada na wyzwanie przez . Prawdziwe DH daje właściwy szyfrogram. Losowe ukrywa doskonale. Inne szyfrowania wykonujemy kluczem publicznym. To argument IND-CPA.
Nie jest to IND-CCA2. Zmieniamy wyzwanie na dla . Wyrocznia deszyfrowania nowego szyfrogramu zwraca , skąd odzyskujemy . Potrzebna jest konstrukcja z dowodem dla silniejszego modelu, nie samodzielnie dopisana suma kontrolna.
Ten sam szyfr, silniejszy przeciwnik
Rozpiszmy tę zmianę modelu. W CPA przeciwnik może uzyskiwać szyfrowania wybranych wiadomości. W szyfrowaniu publicznym i tak może je obliczać. W CCA otrzymuje dodatkowo dostęp do deszyfrowania innych szyfrogramów. W wersji adaptacyjnej CCA2 może pytać również po otrzymaniu wyzwania. Jedyny zakaz bezpośredni dotyczy jego deszyfrowania. Bez niego gra byłaby trywialna.
- Przeciwnik wybiera różne wiadomości .
- Otrzymuje wyzwanie , będące szyfrowaniem jednej z nich.
- Wybiera i pyta o . To inny szyfrogram, więc zakaz go nie obejmuje.
- Dostaje , mnoży przez i porównuje z wiadomościami.
- Zgadnięty bit jest poprawny. Nie obliczył ani , ani .
Demonstrator ataku na ElGamala
Demonstrator losuje niezerowe i , aby nie zaczynać od degeneracji. Rysunek przedstawia szyfrogram . Dla niejednostkowego przeciwnik przesyła , otrzymuje i odzyskuje przez pomnożenie przez . Małą wiadomość liczbową kodujemy jako . Wielkie oznaczają elementy grupy, a nie skalary.
Realizacja na krzywej. W zapisie addytywnym szyfrogram to . Przeciwnik dodaje niezerowy punkt do drugiego składnika. Wyrocznia zwraca , więc odjęcie znanego punktu odzyskuje . Tylko wyrocznia ma dostęp do sekretu . Obliczenie odzyskujące korzysta z jej odpowiedzi i publicznego .
MCL WebAssembly. Wiadomość jest elementem grupy. Mały indeks m służy do jej odwracalnego kodowania, nie jest haszem do grupy ani formatem szyfrowania plików.
Zapis i obliczenia. Wzory schematu są multiplikatywne. MCL realizuje je na krzywej. Generator odpowiada punktowi . W grupach punktów iloczyn oznacza dodawanie, potęga oznacza mnożenie punktu przez skalar, a odwrotność oznacza punkt przeciwny. Nie potęgujemy współrzędnych. Ten rachunek nie używa pairingu.
Gotowe.
Obliczenia MCL na krzywej. Poniżej pokazujemy konkretne operacje biblioteki. Grupy punktów zapisujemy addytywnie.
Wyzwanie
Oczekuje.
Inny szyfrogram
Oczekuje.
Zapytanie o deszyfrowanie
Oczekuje.
Odzyskanie bez sekretnego klucza
Oczekuje.
Sprawdź: Przełącz dostęp do wyroczni. Wskaż pierwszy krok, którego przeciwnik nie może już wykonać.
Atak nie przeczy argumentowi DDH dla CPA. Używa usługi, której tamten argument nie obsługuje. W prawdziwym systemie taki dostęp może wynikać z interfejsu odszyfrowywania, przetwarzania zmodyfikowanych rekordów albo ujawniających informacji błędów. Nie każda aplikacja daje pełną wyrocznię deszyfrującą, ale model CCA celowo bada mocną gwarancję.
Rerandomizacja daje pokrewny przykład: szyfruje tę samą wiadomość. Jeżeli wynik jest inny niż wyzwanie, samo zakazanie identycznego szyfrogramu nie zamyka ataku. Poufność wobec aktywnego przetwarzania wymaga kontroli takich przekształceń.
Naprawa wymaga zmiany kontraktu, np. użycia sprawdzonej konstrukcji szyfrowania uwierzytelnionego lub hybrydowego z odpowiednim twierdzeniem. Zwykły publiczny hasz dołączony do szyfrogramu nie pomaga, bo przeciwnik przeliczy go po modyfikacji.
Cramer–Shoup
Nie każda przekształcalność jest błędem. W ElGamalu publiczna rerandomizacja pozwala zmienić wygląd szyfrogramu bez poznania wiadomości. Jest użyteczna np. w odpowiednio zabezpieczonych sieciach miksujących. Mnożenie dwóch szyfrogramów daje z kolei szyfrogram iloczynu ich wiadomości. Takie własności projektuje się świadomie wraz z ograniczeniami dostępu do deszyfrowania. Nie są zgodne z obietnicą IND-CCA2 dla tego samego, swobodnie przekształcalnego formatu.
Cramer–Shoup zmienia tę obietnicę. Nadal każdy może szyfrować kluczem publicznym, ale odbiorca najpierw sprawdza algebraiczne powiązanie wszystkich składników. Nie wydaje częściowo odszyfrowanej wiadomości po nieudanej kontroli. Opiszemy wersję CS1 z pracy Cramera i Shoupa Design and Analysis of Practical Public-Key Encryption Schemes Secure against Adaptive Chosen Ciphertext Attack, §6.1. Używa ona dwóch skalarów maskujących. To wariant tej samej rodziny co pierwotny schemat z CRYPTO 1998. Publikacja i algorytmy.
- CS1
- Cramer–Shoup, construction 1. Oznaczenie pierwszej konstrukcji Cramera–Shoupa w omawianym źródle.
Formalnie . Rozdzielamy przygotowanie publicznych parametrów od generowania sekretu. W źródle obie czynności znajdują się w algorytmie generowania kluczy. Ten podział służy opisowi i nie zmienia poniższych równań.
Cramer–Shoup CS1: algorytmy i przepływ
Wersja CS1 z sześcioma skalarami klucza. Wiadomość należy do G. Nie mieszamy jej z wariantem o pięciu skalarach.
G ma pierwszy rząd q. Ustal dwa generatory i rodzinę haszy TCR. Publiczny κ wybiera funkcję z tej rodziny. Jej wymaganie bezpieczeństwa rozwijamy po diagramie.
- TCR
- target collision resistance. Odporność na kolizję z zadanym celem.
Najpierw format i podgrupa. Niezgodny test oznacza ⊥ bez obliczania wiadomości.
Cramer–Shoup CS1
Nadawca:
Odbiorca:
- Nadawca, Enc: wkłady i maskowanie:
- Nadawca, Enc: zwiąż wszystkie składniki:
- Nadawca → Odbiorca: Cztery elementy grupy
- Odbiorca, Dec: kontrola przed odczytem: Błąd: zwróć ⊥.
- Odbiorca, Dec: odczyt po akceptacji:
Setup: parametry Cramera–Shoupa
Wejście: . Wyjście: wraz z rodziną haszy, kodowaniem i działaniami grupy. Wszystkie te parametry są jawne.
Pracujemy w grupie pierwszego rzędu , w której zakładamy trudność DDH. Wybieramy niezależne generatory , różne od elementu neutralnego. Ich indeksy numerują bazy tej samej grupy, nie dwie grupy pairingu. Przeciwnik nie dostaje logarytmu jednej bazy względem drugiej.
Publiczny parametr wybiera funkcję haszującą . Haszowanie obejmuje jednoznaczne kodowanie uporządkowanej trójki. To hash do skalaru, a nie mapujący do punktu. W twierdzeniu potrzebna jest odporność na kolizję z zadanym celem, określona w źródle jako TCR (target collision resistance). W definicji z §5 źródła cel jest jednostajną trójką z , losowaną niezależnie od parametru . Przeciwnik dostaje cel i parametr. Ma znaleźć inną trójkę z tym samym haszem. Nie wybiera obu wejść. To konkretny wariant definicji, a nie wymóg dla każdego dowolnie wybranego celu. Pełna odporność na kolizje jest silniejszym wystarczającym wymaganiem. Nie zastępujemy tych własności samym stwierdzeniem „użyto funkcji hashującej”.
Parametr jest losowany zgodnie z opisem rodziny haszy, niezależnie od skalarów klucza. Nie jest tajnym kluczem MAC. Zestaw parametrów dobieramy uczciwie, zgodnie z modelem konstrukcji.
KeyGen: sześć sekretów i klucz publiczny
Wejście: . Odbiorca losuje niezależnie sześć skalarów i oblicza:
Wyjście: para , gdzie i . Oba klucze są używane razem z . Pełny publiczny opis zawiera więc również grupę oraz . Składnik służy maskowaniu wiadomości. Składniki służą kontroli spójności. Klucz publiczny odbiorcy musi pochodzić z zaufanego źródła, podobnie jak w innych systemach szyfrowania publicznego.
Enc: szyfrowanie Cramera–Shoupa
Wejście: , klucz publiczny i wiadomość . Nadawca losuje świeże . Kolejność jest istotna:
- Losowość w dwóch bazach: , . Oba elementy powstają z tego samego .
- Ukrycie wiadomości: .
- Związanie zawartości: .
- Znacznik kontroli: .
Wyjście: szyfrogram . Zauważmy, że nadawca oblicza z klucza publicznego i własnego . Nie potrzebuje sześciu sekretów odbiorcy.
Dec: kontrola i odszyfrowanie
Wejście: , klucz tajny i szyfrogram . Wyjście: element albo .
Odbiorca sprawdza format, kanoniczne kodowanie i przynależność elementów do właściwej grupy. Następnie sam oblicza z odebranej trójki. Nie ufa haszowi dołączonemu przez nadawcę. Sprawdza:
Niezgodność oznacza , czyli odrzucenie bez wiadomości. Dopiero po zgodności wolno obliczyć:
Poprawność i demonstrator
Dlaczego uczciwe szyfrowanie przechodzi kontrolę? Rozpiszmy prawą stronę, korzystając wyłącznie z praw działań w grupie:
Usuwamy więc dokładnie tę maskę, którą dodał nadawca. Jest to dowód poprawności, jeszcze nie dowód bezpieczeństwa.
Obliczenia w BLS12-381, MCL WebAssembly i SHA-256. W obu kolumnach odbiorca wykonuje tę samą kontrolę. Oryginalny przebieg pozostaje widoczny.
Zmieniamy tylko składnik ukrywający wiadomość. Znacznik pozostaje oryginalny.
Szyfrogram oryginalny
- Hash, początek zapisu hex
- Oczekuje
- Równanie kontrolne
- Oczekuje
- Odczytana liczba
- Oczekuje
Szyfrogram po operacji
- Hash, początek zapisu hex
- Oczekuje
- Równanie kontrolne
- Oczekuje
- Odczytana liczba
- Oczekuje
Przygotowanie MCL WebAssembly…
Porównanie z ElGamalem pojawi się po obliczeniu wyniku.
Pełne wartości obliczeń
Kanoniczne kodowania punktów i skalary w zapisie szesnastkowym. To klucze testowe. Porównywane są całe punkty, nie skróty etykiet.
- Stan
- Brak obliczeń.
Dlaczego modyfikacja z ataku na ElGamala już nie wystarcza
Zamieńmy tylko na , gdzie . Odbiorca wyznaczy nowy . Stary znacznik był związany z , więc z reguły nie spełni nowego równania. Samo przeliczenie publicznego hasza nie daje przeciwnikowi nowego znacznika.
Można próbować subtelniej: przemnożyć odpowiednio przez i obliczyć dla nowej trójki. Prosta aktualizacja znacznika do nadal pomija czynnik:
Przeciwnik zna własne , lecz nie zna losowości zaatakowanego szyfrogramu. To pomaga zrozumieć rolę hasza, ale nie jest samodzielnym dowodem odporności na wszystkie ataki. Szczególne przypadki i prawdopodobieństwa obsługuje redukcja.
Nowe, poprawne szyfrowanie innej wiadomości powinno natomiast przejść kontrolę. Akceptacja nie oznacza uwierzytelnienia nadawcy. Każdy zna klucz publiczny. Schemat nie wykrywa też samodzielnie ponownego przesłania identycznego szyfrogramu. To osobne cele protokołu.
Bezpieczeństwo: od DDH do IND-CCA2
W grze przeciwnik wybiera dwie wiadomości i dostaje szyfrogram jednej z nich. Może adaptacyjnie pytać o deszyfrowanie innych szyfrogramów, także po otrzymaniu wyzwania. Jego celem jest wskazanie zaszyfrowanej wiadomości z przewagą nad losowaniem. Dowód musi symulować również tę wyrocznię, nie tylko zamienić maskę na losowy element, jak w prostym argumencie CPA dla ElGamala.
- Zgodne wykładniki. W uczciwym szyfrogramie i . To relacja DH. W analizie zastępujemy ją parą o niezależnych wykładnikach. Wykrycie takiej zmiany prowadzi do rozróżniacza DDH.
- Niespójne zapytania. Dwie ukryte współrzędne każdego składnika klucza pozostawiają swobodę algebraiczną, mimo znajomości klucza publicznego. Dla zapytań bez wspólnego wykładnika trafienie poprawnego znacznika wymaga spełnienia dodatkowego ukrytego warunku liniowego. Analiza ogranicza prawdopodobieństwo takiego zdarzenia także przy wielu zapytaniach.
- Próba zachowania hasza. Inna trójka z haszem trójki wyzwania stanowiłaby kolizję z zadanym celem. To miejsce użycia TCR. Nie zakładamy, że każdy zmieniony ciąg zawsze ma inny hasz.
- Ukryty bit. Po kontrolowanych zmianach reguł pozostały widok nie zależy od wybranej wiadomości. Różnice między grami rozliczamy przez DDH, TCR i małe prawdopodobieństwo wyjątków.
To mapa dowodu, nie jego pełny zapis. Dla wersji CS1 twierdzenie 1 źródła daje poniższe konkretne ograniczenie. Niech oznacza maksymalną liczbę zapytań deszyfrujących, a przewaga CCA będzie zdefiniowana jako . Istnieją odpowiednie redukcje takie, że:
Przewaga DDH jest różnicą prawdopodobieństw odpowiedzi rozróżniacza w dwóch rozkładach, a składnik TCR jest prawdopodobieństwem znalezienia wymaganej kolizji. Wyraz pochodzi z oszacowania zdarzeń wyjątkowych w dowodzie. Nie jest „siłą hasza” ani empirycznym wynikiem demonstracji. Zmiana definicji przewagi może zmienić stałe. Pełną kolejność gier i rachunek zawiera §6.2, twierdzenie 1.
Model standardowy: powyższe twierdzenie nie zastępuje hasza wyrocznią losową. Korzysta z jego konkretnej własności TCR oraz założenia DDH. Nie przenosi się automatycznie do każdej grupy z pairingiem. W demonstratorze wykorzystujemy działania w BLS12-381, ale nie pairing. Interpretacja bezpieczeństwa wymagałaby trudności DDH właśnie w tej grupie oraz odpowiedniego hasza. Nie publikujemy obrazów tych samych sekretów w .
Granice demonstracji. Obliczenia punktów wykonuje MCL WebAssembly. Zapis potęgowy na rysunku oznacza w kodzie dodawanie punktów i mnożenie przez skalar, zgodnie z wcześniejszym słownikiem. Punkty odpowiadają bazom . Hasz skalarny to SHA-256 z separatorem domeny, publicznym parametrem i kodowaniami trzech punktów, następnie redukcja modulo . Nie jest to certyfikowana implementacja rodziny TCR ani gotowa ciphersuite. Wiadomości liczbowe są kodowane jako , a odczyt przeszukuje mały, jawny zakres. Dodanie oznacza w tym kodowaniu zmianę liczby o . To odwracalne kodowanie demonstracyjne, nie hash-to-curve i nie szyfrowanie dowolnych plików. Demo przetwarza lokalnie utworzone punkty, nie pakiety odbierane z sieci. Klucze testowe i oba stany są dostępne na jednej stronie. Wyniki testów poprawności nie dowodzą IND-CCA2.
Gwarancja jest probabilistyczna. Na przykład losowanie z ma prawdopodobieństwo . Wtedy , a maska jest neutralna. Takie wyjątkowe wykonanie nie ukrywa wiadomości. Właśnie dlatego twierdzenie mówi o zaniedbywalnej przewadze w całym eksperymencie, a nie o bezwarunkowym odrzuceniu każdej modyfikacji w każdym możliwym wykonaniu.
Sprawdź rozumienie: co stałoby się, gdyby hasz pomijał ? Dlaczego tag nie jest podpisem nadawcy? Dlaczego nie wolno wydać przed sprawdzeniem równania? W wariancie bez wiązania atak znów przechodziłby kontrolę. Właśnie dlatego zestaw argumentów funkcji haszującej jest częścią schematu.
Dalszy krok: rerandomizacja i zmiana odbiorcy, sieci miksujące, C8. Źródła: Cramer–Shoup, CRYPTO 1998, rozszerzona analiza CS1.
Szyfrowanie hybrydowe: od elementu grupy do pliku
ElGamal powyżej przyjmuje element grupy, a nie dowolnie długi plik. Możemy rozdzielić zadanie: mechanizm asymetryczny dostarcza krótki sekret, a mechanizm symetryczny chroni właściwe dane. Interfejs całości nadal musi określać, co szyfrujemy i co przesyłamy.
Hybrydowe szyfrowanie pliku: KEM (key encapsulation mechanism) to mechanizm enkapsulacji klucza. Korzystając z klucza publicznego odbiorcy, nadawca uzyskuje tajny materiał kluczowy i kapsułkę do przesłania. Odbiorca dekapsułkuje ją swoim sekretem i odzyskuje ten sam materiał. Wyprowadzamy z niego klucz i szyfrujemy dane mechanizmem AEAD. Muszą zgadzać się długości, kodowania, identyfikator algorytmu i uwierzytelniany kontekst. Samo umieszczenie dwóch dobrych mechanizmów obok siebie nie zastępuje twierdzenia o kompozycji.
W formalnym interfejsie wywołanie zwraca publiczną kapsułkę oraz tajny materiał . Nie przyjmuje wiadomości użytkownika. Wywołanie odtwarza zgodny materiał dla uczciwej kapsułki. Obsługę nieprawidłowych kapsułek określa konkretny KEM, z jawnym odrzuceniem albo mechanizmem odrzucenia niejawnego. Następnie obie strony wyprowadzają klucz AEAD. Wiadomość użytkownika jest wejściem dopiero do tego symetrycznego szyfrowania.
Szyfrowanie hybrydowe KEM–AEAD: algorytmy i przepływ
Jest to kompozycja interfejsów, nie nowa nazwana konstrukcja z automatycznym dowodem. Setup ustala zgodne KEM, KDF, AEAD, kodowania i kontekst. KeyGen jest algorytmem wybranego KEM. Osobny standard określa bezpieczeństwo tej kompozycji.
Ustal nonce zgodnie z profilem. Kontekst wiąże algorytmy i kapsułkę.
Przerwij przy jawnym błędzie KEM. Przy odrzuceniu niejawnym sprawdzenie AEAD nie może być pominięte.
Szyfrowanie hybrydowe KEM–AEAD
Nadawca:
Odbiorca:
- Nadawca, Encaps i KDF:
- Nadawca, Enc: dane użytkownika:
- Nadawca → Odbiorca: Kapsułka i zaszyfrowane dane
- Odbiorca, Decaps i KDF:
- Odbiorca, Dec: kontrola tagu i odczyt:
Dalej: RSA zmieni rodzinę problemu matematycznego. Nadal będziemy jednak sprawdzać te same interfejsy Enc/Dec i Sign/Verify, zamiast nazywać pojedyncze potęgowanie gotowym systemem szyfrowania.
Powiązania: C8, Boneh–Shoup.
Needham–Schroeder: zaszyfrowane, lecz przypisane złej rozmowie
Niech oznacza szyfrowanie do Boba. W historycznym protokole publicznym Alicja wysyła , Bob odpowiada , a Alicja odsyła . Nonce mają wykazać świeżość. Ewa może jednak być legalnym uczestnikiem z własnym kluczem.
Needham–Schroeder: historyczny przepływ: algorytmy i przepływ
Schemat uwierzytelnienia, w którym wykryto atak opisany poniżej. Setup wybiera szyfrowanie publiczne, długość nonce i zaufany rejestr kluczy. KeyGen jest algorytmem wybranego szyfrowania. A i B w komunikatach są tu tożsamościami, a Enc_A i Enc_B szyfrują do ich zaufanych kluczy. Każdy odbiorca lokalnie odszyfrowuje komunikat przed kontrolą.
Stan pamięta N_A i zamierzonego partnera B.
Błędne kodowanie lub deszyfrowanie przerywa sesję.
Odpowiedz tylko po zgodności N_A.
Needham–Schroeder: historyczny przepływ
Alicja:
Bob:
- Alicja, Start:
- Alicja → Bob: Pierwszy nonce i tożsamość
- Bob, Next: odszyfruj i przygotuj nonce:
- Bob → Alicja: Brakuje tożsamości odpowiadającego
- Alicja, Next: sprawdź własny nonce:
- Alicja → Bob: Odpowiedź na nonce Boba
- Bob, Next: sprawdź własny nonce:
| Krok | Komunikat | Znaczenie dla ataku |
|---|---|---|
| 1 | Alicja → Ewa: | Alicja świadomie zaczyna rozmowę z Ewą |
| 2 | Ewa → Bob: | Ewa podszywa się pod Alicję |
| 3 | Bob → Alicja: | Ewa przechwytuje, lecz nie odszyfrowuje |
| 4 | Ewa → Alicja: ten sam szyfrogram | Alicja traktuje go jako odpowiedź Ewy |
| 5 | Alicja → Ewa: | Ewa poznaje nonce Boba |
| 6 | Ewa → Bob: | Bob błędnie uwierzytelnia Alicję |
Szyfrowanie działało zgodnie z przeznaczeniem. Alicja nie potrafiła powiązać drugiej wiadomości z tożsamością odpowiadającego. Poprawka Lowe'a dodaje tę tożsamość: . Lokalna sesja Alicji oczekuje Ewy, więc Alicja odrzuca odpowiedź oznaczoną jako pochodzącą od Boba. Jest to naprawa konkretnego przeplotu, nie uniwersalna zasada, że dopisanie nazwiska zawsze zabezpiecza protokół.
Źródło: Gavin Lowe, An Attack on the Needham–Schroeder Public-Key Authentication Protocol. Atak podkreśla, że uwierzytelnianie dotyczy relacji pomiędzy sesjami i uczestnikami, a nie tylko tajności pojedynczych szyfrogramów.