Kryptografia II stopień
Od definicji bezpieczeństwa do konstrukcji, redukcji i publikacji naukowych.
Od zagrożenia do mechanizmu ochrony
Wyobraź sobie usługę podpisującą dokumenty. Użytkownik przesyła dokument, urządzenie używa tajnego klucza, a odbiorca sprawdza podpis. Poprawny podpis powinien przejść weryfikację. To jednak dopiero początek. Czy ktoś, kto dostał podpis pod jednym dokumentem, może przenieść go na inny? Czy podpis wiąże kwotę, odbiorcę i rodzaj operacji? Co się stanie, gdy urządzenie po restarcie powtórzy losowość?
Kryptografia odpowiada na precyzyjne pytanie, nie na ogólne życzenie „ma być bezpiecznie”. Najpierw ustalamy, co chronimy, kto może zaszkodzić i jakie ma możliwości. Potem projektujemy mechanizm. Na końcu sprawdzamy, czy mechanizm spełnia cel mimo tych możliwości. Ten sposób myślenia będzie wracał przy szyfrach, identyfikacji, podpisach i obliczeniach na cudzych urządzeniach.
Nie zakładamy wcześniejszego kursu kryptografii. Zaczynamy od scenariuszy i małych obliczeń. Pojęcia algebraiczne wprowadzamy wtedy, gdy stają się potrzebne. Formalne definicje nie mają zastępować intuicji. Pozwalają sprawdzić, czy intuicja uwzględniła wszystkie dozwolone zachowania.
Od potrzeby do kryptosystemu
Każda z poniższych konstrukcji odpowiada na inne pytanie. Najpierw określamy funkcjonalność i interfejs algorytmów. Ustalamy, co ma się udać uczciwym uczestnikom i czego nie powinien osiągnąć przeciwnik. Dopiero potem dobieramy konkretne obliczenia i dowodzimy, że spełniają te wymagania. Nazwa algorytmu będzie oznaczała zamkniętą procedurę, nie luźną sugestię „teraz coś zaszyfruj”.
| Potrzeba | Konstrukcja i wynik | Co trzeba znać wcześniej |
|---|---|---|
| Przygotować narzędzia | Losowość i PRF, szyfrowanie symetryczne, AES i AEAD, hasze i MAC, grupy | Bity, losowanie, model przeciwnika |
| Przekonać rozmówcę teraz | Identyfikacja: Schnorr, następnie Okamoto. Wynikiem jest decyzja weryfikatora w bieżącej sesji. | Grupa, klucze, świeże wyzwanie |
| Pozostawić coś do sprawdzenia później | Podpis cyfrowy. Wynikiem jest podpis związany z wiadomością. | Identyfikacja, funkcja haszująca, publiczna weryfikacja |
| Utworzyć wspólny tajny klucz z właściwą osobą | Uwierzytelnione uzgadnianie klucza. Wynikiem jest klucz zaakceptowanej sesji i ustalony partner. | Diffie–Hellman, podpis, MAC, wyprowadzanie kluczy |
| Zostawić poufną wiadomość dla odbiorcy | Szyfrowanie asymetryczne: ElGamal, Cramer–Shoup, następnie RSA. Wynikiem jest szyfrogram. | Klucz publiczny, mechanizm DH, definicje poufności |
- PRF
- pseudorandom function. Funkcja pseudolosowa.
- AES
- Advanced Encryption Standard. Standard szyfrowania blokowego. Liczby 128, 192 i 256 oznaczają długości klucza w bitach.
- AEAD
- Authenticated Encryption with Associated Data. Uwierzytelnione szyfrowanie z danymi dodatkowymi.
- MAC
- Message Authentication Code. Kod uwierzytelnienia wiadomości, sprawdzany przy użyciu klucza.
- RSA
- Rivest–Shamir–Adleman. Nazwiska autorów kryptosystemu z kluczem publicznym.
To kolejność uczenia się, nie twierdzenie, że każdy schemat szyfrowania zawiera protokół AKE albo że każdy podpis powstaje z identyfikacji. Wspólne narzędzia pozwalają porównać konstrukcje, ale ich cele pozostają różne. Na przykład podpis nie ukrywa wiadomości, a szyfrowanie do odbiorcy samo nie potwierdza nadawcy.
- AKE
- Authenticated Key Exchange. Uwierzytelniona wymiana klucza.
Pięć pytań przed wyborem algorytmu
- Zasób i właściciel. Czy chronimy treść dokumentu, prawo do jego podpisania, tożsamość, klucz sesji czy wynik obliczenia?
- Cel naruszenia. Czy porażką jest odczyt, zmiana treści, podszycie się, wskazanie autora czy akceptacja błędnego wyniku?
- Dostęp przeciwnika. Czy tylko obserwuje? Czy wybiera dokumenty, zmienia wiadomości, uruchamia sesje albo odczytuje stan urządzenia?
- Granica zaufania. Gdzie znajdują się klucze? Które obliczenia wykonuje niezaufany program, a które chroniony komponent?
- Wniosek i warunki. Jakie dokładnie zdarzenie ma być rzadkie i przy jakich założeniach?
Bezpieczeństwo systemu jest szersze niż kryptografia
Podpis może wykryć zmianę dokumentu, ale nie zapobiega usunięciu całej bazy. Szyfrowanie może ukryć treść, lecz pozostawić widoczną długość i porę wysłania. Uwierzytelniony kanał może kończyć się w przejętej aplikacji. Żaden z tych przykładów nie przeczy poprawnemu twierdzeniu kryptograficznemu. Pokazuje cel, którego to twierdzenie nie obejmowało.
Polityka mówi, co ma być dozwolone. Protokół określa komunikaty i sprawdzenia. Implementacja realizuje protokół. Wdrożenie dostarcza klucze, uprawnienia, urządzenia i procedury odtwarzania po awarii. Błąd na dowolnym z tych poziomów może zniszczyć ochronę. Dlatego nie zaczynamy od pytania, czy użyto AES, ale od pytania, czy cała operacja odpowiada właściwej polityce.
Przykład: podpis pod tekstem „100” jest poprawny matematycznie. Aplikacja interpretuje go jako zgodę na przelew 100 zł do dowolnego odbiorcy. Podpisujący zamierzał zatwierdzić wpłatę na własne konto. Nie doszło do złamania podpisu. Nie określono jednoznacznie, co podpis oznacza. Naprawa dotyczy formatu wiadomości: rodzaju operacji, kwoty, waluty, odbiorcy i identyfikatora zlecenia.
Model nie jest całą rzeczywistością
Model wybiera z rzeczywistości te właściwości, które są istotne dla badanego celu. Nie opisuje każdego tranzystora. Musi jednak obejmować zdarzenia, przed którymi naprawdę chcemy się chronić. Gdy pozwolimy przeciwnikowi na nową czynność, poprzedni dowód może przestać mieć zastosowanie. To nie oznacza automatycznie istnienia ataku. Oznacza obowiązek nowej analizy.
Model urządzenia jest równie ważny jak model sieci. HSM (hardware security module) to sprzętowy moduł wykonujący określone operacje kryptograficzne w chronionym środowisku. „Klucz nie opuszcza HSM” nie wystarczy, jeśli niezaufany program może żądać podpisania dowolnej operacji bez autoryzacji. Z drugiej strony chroniony, odpowiednio ograniczony interfejs może zachować użyteczną gwarancję mimo częściowego przejęcia hosta. W rozdziale o identyfikacji zobaczymy, jak zmienia się rachunek, gdy ujawniona zostaje losowość jednego wykonania.
Zapis, losowanie i rachunek na bitach
Zanim opiszemy przeciwnika i jego szanse, ustalmy język przykładów. Nie trzeba znać żadnego protokołu. Potrzebujemy ciągów bitów, kilku działań i sposobu zapisywania losowania.
Bity i operacje na ciągach
Bit ma wartość 0 albo 1. Zbiór zawiera wszystkie ciągi dokładnie bitów. Jest ich . Zapis dopuszcza dowolną skończoną długość. Symbol oznacza długość ciągu, a liczbę elementów zbioru, gdy jest zbiorem.
XOR, zapisywany , daje 1 wtedy i tylko wtedy, gdy bity są różne. Dla ciągów tej samej długości działa osobno na każdej pozycji. Konkatenacja dokleja drugi ciąg do pierwszego. Nie jest działaniem XOR.
- XOR
- exclusive OR. Alternatywa wykluczająca. Wynik to 1 dokładnie wtedy, gdy dwa bity są różne.
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Na przykład , natomiast . Zawsze i . Symbol oznacza ciąg zer, nie potęgę liczby zero. Ta odwracalność wyjaśni działanie pierwszego szyfru.
Losowa zmienna i konkretna wartość
oznacza jednostajne losowanie elementu skończonego zbioru . Znak dolara przy strzałce wskazuje losowanie. Każdy element ma prawdopodobieństwo . Na przykład wybiera jedną z reszt , każdą z prawdopodobieństwem . Dla pierwszego zapis wyklucza zero i daje każdej z pozostałych reszt prawdopodobieństwo . W protokołach te reszty będą skalarami. Gdy losujemy kilka wartości, są to niezależne losowania, chyba że jawnie podano inny związek.
Zwykła strzałka oznacza przypisanie, np. , albo odebranie wyniku algorytmu, np. . Algorytm może wewnętrznie korzystać z losowości. Sam zapis jego wywołania nie stwierdza jednak, że wynik jest jednostajny. Nie utożsamiamy też losowania z warunkiem przynależności , który jedynie określa, gdzie leży dana wartość.
Wielka litera często oznacza zmienną losową, a mała jej konkretną wartość. to prawdopodobieństwo otrzymania właśnie .
czytamy „prawdopodobieństwo zdarzenia , pod warunkiem ”. Zakładamy . Dwa niezależne losowania nie wpływają na swoje rozkłady. Powtórne odczytanie zapamiętanej wartości nie jest niezależnym losowaniem.
Mały rachunek. Losujemy niezależne bity . Pary 00, 01, 10, 11 są równie prawdopodobne. Stąd , ale liczymy już tylko wśród par 00 i 11. Jeśli zamiast losować przypiszemy , te same wartości brzegowe nadal mają szansę , lecz zmienne nie są niezależne.
Funkcje, sumy i arytmetyka
określa zbiór wejść i zbiór wyników funkcji. Złożenie wykonuje najpierw . Odwrotna funkcja odwraca bijekcję, czyli przyporządkowanie jeden do jednego. Zapis dla permutacji oznacza dwukrotne złożenie. Kontekst odróżnia go od kwadratu liczby.
, a . Silnia jest iloczynem liczb od 1 do i liczy permutacje różnych obiektów. Rachunek modulo zachowuje resztę z dzielenia. Na przykład . Odwrotność modulo nie jest zwykłym ułamkiem. Warunki jej istnienia wprowadzimy przed protokołami grupowymi w W6.
Jak czytać oznaczenia eksperymentu
będzie algorytmem przeciwnika, algorytmem redukcji, a parametrem bezpieczeństwa. Zapis oznacza dostęp do usługi podpisującej. Nie jest potęgą algorytmu. Wynik oznacza odrzucenie, nie pustą wiadomość.
Parametr wybiera rodzinę rozmiarów instancji. Algorytm wydajny w sensie asymptotycznym działa w czasie wielomianowym w . W ocenie konkretnego systemu podajemy też czas, pamięć, liczbę zapytań i prawdopodobieństwo powodzenia. Samo słowo „wielomianowy” nie dobiera kluczy dla rzeczywistego urządzenia.
Prawdopodobieństwo zaniedbywalne maleje szybciej niż odwrotność dowolnego wielomianu. Precyzyjnie, funkcja jest zaniedbywalna, jeśli dla każdego dodatniego wielomianu od pewnego parametru zachodzi . Przykładem jest . Funkcja nie jest zaniedbywalna, choć dla dużych parametrów ma małe wartości. PPT, od probabilistic polynomial time, oznacza probabilistyczny czas wielomianowy. Algorytm PPT może korzystać z losowości, a jego czas pracy jest ograniczony wielomianem parametru bezpieczeństwa. „Bezpieczny przeciw wydajnym przeciwnikom” oznacza więc wymaganie dla każdego takiego algorytmu, nie tylko dla testów, które wykonaliśmy. To język definicji asymptotycznych. Dla ustalonego rozmiaru klucza nadal potrzebujemy konkretnej granicy kosztu i szans ataku.
Sprawdź rozumienie: policz . Czy trzykrotne odczytanie jednej wylosowanej wartości daje trzy niezależne próbki? Te dwa pytania wrócą przy szyfrowaniu i wyroczni losowej.