You are on page 1of 243

KRYPTOGRAFIA

TEORIA I PRAKTYKA ZABEZPIECZANIA


SYSTEMÓW KOMPUTEROWYCH
Mirosław Kutyłowski, Willy-B. Strothmann

© Copyright by Oficyna Wydawnicza Read Me, Warszawa 1998

Oficyna Wydawnicza Read Me, 00-987 Warszawa 4, skr. poczt. 144 e-mail:
readme@rm.com.pl WWW: http://www.rm.com.pl
śadna część tej pracy nie moŜe być powielana i rozpowszechniana w jakiejkol' formie i
w jakikolwiek sposób (elektroniczny, mechaniczny) włącznie z fotokc waniem,
nagrywaniem na taśmy lub przy uŜyciu innych systemów bez wcześ szej pisemnej
zgody wydawcy.
Wszystkie nazwy handlowe i towarów, występujące w niniejszej publikacji, są kami
towarowymi zastrzeŜonymi lub nazwami zastrzeŜonymi odpowiednich odnośnych
właścicieli.

Printed in Poland.

Oficyna Wydawnicza Read Me dołoŜyła wszelkich starań, aby zapewnić najwy jakość
tej ksiąŜce. JednakŜe nikomu nie udziela Ŝadnej rękojmi ani gwarancji. O na
Wydawnicza Read Me nie jest w Ŝadnym wypadku odpowiedzialna za jakie wiek
szkody łącznie ze szkodami z tytułu utraty zysków związan z prowadzeniem
przedsiębiorstwa, przerw w działalności przedsiębiorstwa utraty informacji
gospodarczej, będące następstwem korzystania z informacji za\ tych w niniejszej
publikacji Read Me, nawet jeŜeli Read Me została zawiadomi o moŜliwości wystąpienia
szkód.

ISBN 83-7147-087-8

Redaktor prowadzący: Artur Marciniak


Redakcja: Małgorzata Andrychowicz
Skład: Mirosław Kutyłowski
Projekt okładki: GraŜyna Jędrzejec
Druk i oprawa: Oficyna Wydawnicza READ ME Drukarnia w Łodzi

Wydanie I
10 9 8 7 6 5 4 3 2 1
Przedmowa XIII

Wstęp XIX

Pierwszy rzut oka na kryptografię 1


1.0.1. Szyfrowanie danych...................................................... 3
1.0.2. Podstawowe zastosowania szyfrowania ....................... 4
1.0.3. Historia kryptografii ..................................................... 10
1.0.4. Kontrowersje związane z kryptografią ......................... 11
1.0.5. Korzystanie z produktów kryptograficznych ... 13

Podstawowe techniki szyfrowania 15


2.0.6. Podstawienie ................................................................. 17
2.0.7. XOR i one-time pad ................................................... 20
2.0.8. S-boksy ......................................................................... 23

Algorytmy symetryczne 27
3.1. DES - Data Encryption Standard .............................................. 29
3.1.1. Szyfrowanie DES-em................................................... 30
3.1.2. Deszyfrowanie DES-em............................................... 32
3.2. Rozszerzenia algorytmu DES ................................................... 34
3.2.1. DESX............................................................................ 34
3.2.2. Trzykrotny DES ........................................................... 34
3.2.3. S-boksy zaleŜne od klucza ........................................... 36
3.3. Szyfrowanie dowolnych tekstów .............................................. 36
3.3.1. Elektroniczna ksiąŜka kodowa...................................... 36

V
M. Kutyłowski, W.-B. Strothmann

3.3.2. Cipher Błock Chaining................................................ 38


3.3.3. Cipher Feedback.......................................................... 39
3.4. IDEA ........................................................................................ 40
3.5. RC5 .......................................................................................... 47

Algorytmy asymetryczne 49
4.1. Podstawy teoretyczne ............................................................ 51
4.1.1. Teoria złoŜoności obliczeniowej.................................. 51
4.1.2. Szyfry plecakowe......................................................... 53
4.2. RSA........................................................................................... 56
4.2.1. Algorytm RSA .......................................................... 58
4.2.2. Testy pierwszości......................................................... 61
4.2.3. Aspekty bezpieczeństwa RSA ..................................... 64
4.2.4. Trudne bity kryptogramów RSA.................................. 68
4.3. Algorytm EIGamala.................................................................. 70

Funkcje jednokierunkowe 73
5.0.1. Hard-corebit .................................................................. 76
5.0.2. Zastosowania funkcji jednokierunkowych .... 77
5.0.3. Kandydaci na funkcje jednokierunkowe....................... 77

Jednokierunkowe funkcje hashujące 81


6.1. Podstawowe własności i zastosowania ..................................... 83
6.1.1. Bezkonfliktowe funkcje hashujące .............................. 83
6.1.2. Wybrane zastosowania................................................. 85
6.1.3. Ataki przeciw funkcjom hashującym........................... 86
6.2. Hashowanie o dowodliwych własnościach............................... 89
6.2.1. Hashowanie a dyskretny logarytm............................... 89
6.2.2. Rozszerzenie na teksty dowolnej długości................... 91
6.3. Praktyczne algorytmy hashujące .............................................. 92
6.3.1. MD5 ............................................................................. 92
6.3.2. Hashowanie dowolnie długich tekstów........................ 94

VI
Kryptografia

Ciągi pseudolosowe 99
7.1. Konstrukcja ciągów pseudolosowych ........................... 101
7.1.1. Własności ciągów pseudolosowych...................... 102
7.1.2. Generatory ciągów pseudolosowych ..................... 104
7.1.3. Pseudolosowość generatora BBS ........................... 107
7.2. Zastosowania ..................................................................... 108
7.2.1. Szyfrowanie strumieniowe .................................... 108
7.2.2. RC4 ........................................................................ 109
7.2.3. Szyfrowanie probabilistyczne................................ 110

Podpisy cyfrowe 113


8.1. Realizacja podpisów cyfrowych........................................ 115
8.1.1. Podpisy cyfrowe EIGamala.................................... 117
8.1.2. DSA ..................................................................... 118
8.2. Protokoły związane z podpisami....................................... 120
8.2.1. Ślepe podpisy......................................................... 120
8.2.2. Kanał podprogowy ................................................ 121
8.2.3. Podpisy niezaprzeczalne .................................... 123

Uwierzytelnianie 129
9.0.4. Protokół challenge and response ........................... 131
9.0.5. Dowody interakcyjne ......................................... 132
9.0.6. Dowody z wiedzą zerową ..................................... 135
9.0.7. Protokół Fiata-Shamira.......................................... 138
9.0.8. Protokół Schnorra ............................................... 140
9.0.9. Protokół Guillou-Quisquartera.............................. 143
9.0.10. Podpisy cyfrowe poprzez uwierzytelnianie .... 144

Administracja kluczami 145


10.1. Praktyka gospodarki kluczami ....................................... 147
10.1.1. Urządzenie kryptograficzne................................... 147
10.1.2. Generowanie kluczy .............................................. 148
VII
M. Kutyłowski, W.-B. Strothmann

10.1.3. Hierarchia kluczy ......................................................... 150


10.1.4. Przechowywanie kluczy.............................................. 151
10.2. Protokoły uzgadniania kluczy ................................................... 152
10.2.1. Uzgadnianie kluczy poprzez szyfrowanie symetryczne
............................................................................ 153
10.2.2. Uzgadnianie klucza przez szyfrowanie asymetryczne. 155
10.2.3. Atak man in the middle ............................................... 156
10.2.4. Protokół Diffie-Hellmana i jego pochodne.................. 158

Protokoły kryptograficzne 161


11.0.5. Protokół interlock.......................................................... 163
11.0.6. Dzielenie tajemnic......................................................... 165
11.0.7. Zobowiązanie bitowe ................................................. 167
11.0.8. Pieniądze cyfrowe ......................................................... 169
11.0.9. Elektroniczne wybory ................................................... 175

Kryptoanaliza 179
12.1. Podstawowe moŜliwości ataku.................................................. 181
12.2. Algorytmy kryptoanalizy .......................................................... 183
12.2.1. Kryptoanaliza róŜnicowa.............................................. 183
12.2.2. Kryptoanaliza liniowa .................................................. 188
12.2.3. RóŜnicowa kryptoanaliza błędów................................. 190

Wybrane aspekty praktyczne 193


13.1. Plastikowe pieniądze................................................................. 195
13.1.1. Smartcards .................................................................... 195
13.1.2. PIN ............................................................................... 197
13.1.3. Krzywe eliptyczne........................................................ 200
13.2. Zabezpieczanie komunikacji komputerowej ............................. 206
13.2.1. Kerberos ....................................................................... 207
13.2.2. Protokół ssh .................................................................. 213
13.2.3. Bezpieczeństwo w WWW i protokół SSL ................... 216

VIII
Kryptografia

13.2.4. Zabezpieczanie komunikacji telefonicznej ................... 222


13.3. Szyfrowanie systemu plików..................................................... 224
13.4. Metody zabezpieczania się dla pojedynczego uŜytkownika228
13.4.1. PGP............................................................................... 228
13.4.2. Zabezpieczanie poczty elektronicznej - PEM . . . 229
13.5. Protokoły obrotu finansowego ............................................... 230
13.5.1. Telephone banking ....................................................... 230
13.5.2. ProtokółSET .............................................................. 232

Dodatek: wybrane aspekty teorii liczb 235

Dodatek: teoria algorytmów 243

Słowniczek polsko-angielski 248

Słowniczek angielsko-polski 250

Indeks 253

Literatura 263

IX
M. Kutyłowski, W.-B. Strothmann

X
PRZEDMOWA
M. Kutyłowski, W.-B. Strothmann

XII
Do niedawna kryptografia była obiektem zainteresowania w większym
stopniu słuŜb wywiadowczych i wojska niŜ przedmiotów gospodarczych i
prywatnych osób. Postęp w dziedzinie elektroniki, a zwłaszcza gwałtowny
rozwój sieci komputerowych, sytuację tę zmieniły w radykalny sposób.
Dawniej, gdy prywatny uŜytkownik dysponował jedynie komputerem PC nie
włączonym do sieci, ochrona danych była stosunkowo prosta i zapewniona
przez fizyczny dostęp do komputera. Na tej samej zasadzie chronione były
dane przechowywane w postaci elektronicznej przez małe firmy, działy firm,
organizacje polityczne. Nie skomplikowane protokoły kryptograficzne, ale
klucz do pomieszczenia z komputerem czy koperta, w której przesyłana była
dyskietka, stanowiły ochronę przed niepowołanym dostępem. Oczywiście,
zdarzały się kradzieŜe dyskietek, komputerów, włamania do siedzib partii
politycznych ... Większość uŜytkowników nie czuło jednak potrzeby skutecz-
niejszej ochrony swych danych.
Sytuacja zaczęła się radykalnie zmieniać z chwilą gwałtownego rozrostu
sieci komputerowych. Dotyczyło to nie tylko sieci obejmujących wiele
działów pojedynczych firm, ale i sieci globalne, takie jak Internet (w tym
zwłaszcza World Wide Web). Zapewnienie bezpieczeństwa w tych sieciach
stało się jednym z pierwszoplanowych zadań decydujących o ich dalszym
rozwoju. Nowe techniki telekomunikacyjne, takie jak telefonia komórkowa,
telewizja cyfrowa, telebanking itp., nie mogłyby znaleźć swego miejsca w
codziennej praktyce, gdyby nie stosowanie technik kryptograficznych dla
ochrony dostępu.
Najpierw rewolucja objęła komunikację w środowisku naukowym. Po-
jawienie się poczty elektronicznej umoŜliwiło błyskawiczne kontaktowanie
się naukowców z najdalszych krajów. Pozwoliło to na olbrzymi wzrost
wydajności w wielu dziedzinach badań. MoŜna by się spodziewać, Ŝe
konkurencja i ostra walka o przodownictwo doprowadzą w środowisku
naukowym do wielu naduŜyć poczty elektronicznej. Tym

XIII
M. Kutyłowski, W.-B. Strothmann

bardziej Ŝe nie jest trudno, na przykład, przesłać list podszywając się pod
inną osobę. MoŜliwe jest równieŜ przechwytywanie obcej korespondencji.
Zjawiska te stanowiły jednak dotychczas w całym środowisku naukowym
bardzo wąski margines. Powodem było zapewne to, iŜ komunikowały się
osoby, które i tak obdarzały się pełnym zaufaniem. Tak więc metody, które
pozwalałyby na zabezpieczenie przed odczytem, modyfikacją czy teŜ
preparowaniem listów elektronicznych przez osoby trzecie, nie były
stosowane.
Te czasy minęły. Wraz z pojawieniem się World Wide Web Internet stał się
atrakcyjny dla „szarego uŜytkownika". W Internecie pojawiły się
interesujące zasoby informacyjne, dzięki czemu liczba uŜytkowników
zaczęła gwałtownie rosnąć. Co więcej, Internet coraz częściej jest uŜywany
nie jako narzędzie zabawy czy rozwijania zainteresowań, ale do celów
komercyjnych. JuŜ dziś bilety lotnicze kupuję przez Internet, literaturę
naukową wybieram przez World Wide Web, a zamiast kupować gazetę z
lokalnymi ogłoszeniami, sięgam do jej elektronicznego odpowiednika. W
takiej sytuacji będzie coraz więcej osób: hardware tanieje, software staje się
coraz łatwiejszy do obsługi przez laika, w wielu krajach połączenia
telefoniczne wskutek konkurencji na rynku telekomunikacyjnym stają się
tańsze i wyŜszej jakości. Coraz łatwiejsze będzie zatem stanie się kolejnym
uŜytkownikiem Internetu. Za parę lat będziemy mieć zapewne do czynienia z
sytuacją, gdy Internet będzie największym supermarketem, najobszerniejszą
gazetą, największym Hyde Parkiem itp. - przynajmniej w krajach, gdzie
usługi telekomunikacyjne będą wystarczająco tanie.
Jak kaŜdy wynalazek, rozwój globalnych sieci komputerowych przynosi
korzyści, ale i niebezpieczeństwa. Wiele dyskutuje się, na przykład, na temat
moŜliwości wykorzystywania Internetu przez organizacje przestępcze.
Sytuacja przypomina nieco spory po wynalezieniu samochodu. Nie sposób
częściowo nie przyznać racji przeciwnikom automobili, mając przed oczyma
tragiczne statystyki o tysiącach ludzi zabitych na drogach. Nie cofnęło to
jednak rozwoju motoryzacji, tak jak nie do odwrócenia jest juŜ rozwój
globalnej sieci komputerowej na świecie.
PoniewaŜ poprzez Internet będą się komunikować nie dobrzy i ufający sobie
znajomi, lecz często anonimowi czy wrodzy sobie uŜytkownicy, mijają
czasy, gdy niezbyt wiele myślano o bezpieczeństwie danych i komunikacji. Z
jednej strony, podłączenie do sieci komputerowych będzie

XIV
Kryptografia

stanowić warunek wstępny istnienia firm (tak jak posiadanie telefonu,


faksu czy adresu pocztowego), z drugiej strony, podłączenie to stanowi
o moŜliwości włamań, dewastacji danych i innych działań o charakte-
rze przestępczym.
Oczywiście, uŜytkownicy sieci komputerowych będą się bronić przed
niepowołanym dostępem do danych i manipulacjami dokonywanymi
na nich. Pierwszą linią obrony będą oczywiście systemy operacyjne za-
rządzające pracą komputerów i wykonywaniem zleceń na rzecz uŜyt-
kowników. W wielu miejscach przesyłane pakiety będą sprawdzane i
te o niewłaściwej (niedozwolonej) postaci będą usuwane z ruchu. Rów-
nocześnie systemy operacyjne będą przestrzegały, by uŜytkownicy nie
dokonywali niedozwolonych operacji.
Wskutek złoŜoności stawianych zadań systemy operacyjne będą sta-
wać się coraz bardziej skomplikowane. Tym samym coraz trudniej bę-
dzie ich twórcom przewidzieć wszystkie sytuacje tak, aby uniemoŜli-
wić ominięcie zainstalowanych zabezpieczeń. Dotychczasowe donie-
sienia z tego pola walki są raczej pesymistyczne dla systemów operacyj-
nych. Stoją one w obliczu miaŜdŜącej przewagi włamywaczy zwanych
hackerami. Hackerzy nie są, jakby się chciało wierzyć, jedynie grupą
nastoletnich maniaków komputerowych (czy łagodniej mówiąc, miło-
śników elektroniki). Jest to grupa o olbrzymim potencjale intelektual-
nym, nierzadko doskonałym zapleczu sprzętowym i finansowym.
Ostatnią szansą na zagwarantowanie bezpieczeństwa danych jest kryp-
tografia. Nie moŜe ona usunąć wszelkich niebezpieczeństw (takich jak
na przykład zniszczenie danych przez włamywacza komputerowego),
ale w wielu sytuacjach skutecznie pomaga (na przykład uniemoŜliwia
odczyt danych przez niepowołaną osobę). W odróŜnieniu od innych
metod kryptografia dostarcza metod względnie bezpiecznych. Tak bez-
piecznych, Ŝe liniami telekomunikacyjnymi dokonuje się przelewów
sum niewyobraŜalnych dla szarego człowieka. I nikt się nie martwi, Ŝe
ktoś włączy się na linię i tą drogą powiększy stan swego konta.

Paderborn, 1997 Mirosław Kutyłowski

XV
M. Kutytowski, W.-B. Strothmann

XVI
WSTĘP
M. Kutyłowski, W.-B. Strothmann

XVIII
Niniejsza ksiąŜka ma za zadanie w bardzo zwięzły sposób przedstawić
podstawowe metody kryptograficzne z punktu widzenia zastosowań
praktycznych. Wiele interesujących technik zostało w niej pominiętych.
Nacisk został połoŜony na te aspekty, które mają bądź mogą mieć praktyczne
zastosowanie. Wskutek tego wiele teoretycznie ciekawych zagadnień
świadomie nie jest omówionych w tej ksiąŜce. Z drugiej strony, naszym
zamysłem było, na tyle, na ile to jest moŜliwe w tak zwięzłej pozycji,
umoŜliwić czytelnikowi zrozumienie matematycznych mechanizmów
tkwiących w kryptografii. Bardziej szczegółowe informacje moŜe Czytelnik
znaleźć na przykład w pozycji [6] mającej charakter encyklopedii
kryptografii.

KsiąŜka ta przeznaczona jest dla studentów informatyki i pokrewnych


dziedzin. MoŜe być wykorzystana jako podręcznik do semestralnego
wykładu z kryptografii, jak równieŜ jako materiał do samodzielnego
studiowania. Do zrozumienia niektórych części ksiąŜki niezbędna jest
znajomość pewnych faktów z algebry. Czytelnik nie obeznany z tymi
zagadnieniami moŜe znaleźć brakujące informacje w dodatku A. Niekiedy
konieczna jest znajomość standardowych faktów z podstaw informatyki
wykładanych na pierwszych latach studiów informatyki i pokrewnych
dziedzin. Część tych pojęć skrótowo przedstawiamy w dodatku B.
KsiąŜka oparta jest na części skryptu do wykładu Mirosława Kutyłow-
skiego. Wykład ten odbył się na Wydziale Matematyki i Informatyki
Uniwersytetu Paderborn w zimie 1995 roku. Wspomniany skrypt obejmuje
prócz kryptografii zagadnienia kodów samokorygujących błędy i kompresji
danych. Jest on dostępny poprzez World Wide Web pod adresem
http://www.uni-paderborn.de/fachbereich/AG/agmadh/WWVV/german/
LehreKuty/ikk95/skript.ps.gz

XIX
M. Kutyłowski, W.-B. Strothmann

Lista zauwaŜonych błędów, uzupełnienia do ksiąŜki itp. znajdują się w


World Wide Web pod adresem
hUp://www.tcs.uni.wroc.pl/mirekk/krypto/
Informacje o zauwaŜonych błędach prosimy przesyłać na adres:
mirekk@tcs.uni.wroc.pl

Z pewnością ksiąŜka zawiera pewną ilość nieścisłości i błędów. Autorzy nie


gwarantują stuprocentowej prawdziwości zawartych w niej informacji. W
szczególności nie ponoszą odpowiedzialności za ewentualne szkody, jakie
mogą powstać wskutek istnienia luk bezpieczeństwa w przedstawianych
algorytmach i protokołach.

W ksiąŜce nie staraliśmy się wprowadzać zawsze i wszędzie polskich


odpowiedników obcojęzycznych pojęć. Chcieliśmy się ustrzec takich
błędów, jakim byłoby na przykład tłumaczenie nazwy Windows 95 na Okna
95. Szereg pojęć angielskich weszło mocno do Ŝargonu informatycznego.
Nie próbując podejmować dyskusji, czy jest to zjawisko negatywne, staramy
się by język ksiąŜki był jak najbliŜszy temu, czym posługuje się Czytelnik.
Dlatego odrzuciliśmy na przykład termin funkcja skrótu jako tłumaczenie
hashing fanction. Hashing function nie zawsze bowiem skraca, a jej
zasadnicza rolą jest specyficzne mieszanie wartości. Dlatego pozostaliśmy
przy terminie funkcja hashująca uŜywaną przez naszych wrocławskich
studentów.

Pragniemy podziękować licznym osobom za pomoc techniczną i uwagi


merytoryczne. W szczególności wymienić naleŜy Guido Haeselera, którego
notatki do wykładu były podstawą pierwszej wersji skryptu (i wielu
rysunków zawartych w ksiąŜce). Część rysunków została wykonana przez
Franka Beste, Ewę Kutyłowską i Matthiasa Rauera. Nieocenioną pomoc w
zakresie składania tekstu w ETgX-u wniósł ToMasz Wierzbicki.

XX
ROZDZIAL 1

Pierwszy
rzut oka
na kryptografię
M. Kutyłowski, W.-B. Strothmann

2
1.0.1. Szyfrowanie danych
NajwaŜniejsze pole zainteresowań kryptografii (ale obecnie juŜ nie je-
dyne) to szyfrowanie dokumentów. Z oryginalnego dokumentu (moŜe
to być tekst, zakodowany cyfrowo obraz czy sygnał dźwiękowy) zwa-
nego tekstem jawnym moŜna utworzyć zaszyfrowaną wersję, którą na-
zywamy kryptogramem. Do zaszyfrowania i deszyfrowania potrzebny
jest dodatkowo klucz lub klucze. Tekst jawny P zaszyfrowany za po-
mocą klucza K oznaczać będziemy EK(P), tekst jawny uzyskany z kryp-
togramu C za pomocą klucza K' oznaczać będziemy DK,(C). Notacja ta
zakłada, Ŝe wiemy, jaką metodę szyfrowania lub deszyfrowania mamy
na myśli.
Ze względu na własności kluczy rozróŜniamy następujące metody szy-
frowania:
Algorytmy symetryczne: klucz do szyfrowania oraz do deszyfrowania
jest ten sam (lub jeden jest łatwo wyprowadzamy z drugiego).
szyfrowanie kluczem K

tekst jawny zaszyfrowany tekst (kryptogram)

deszyfrowanie kluczem K

Rysunek 1.1. Symetryczna metoda szyfrowania

Algorytmy asymetryczne: (zwane takŜe algorytmami z kluczem jaw-


3
M. Kutyłowski, W.-B. Strothmann

nym lub kluczem publicznym) klucze do szyfrowania i deszy-


frowania są róŜne; praktycznie nie powinno być moŜliwe wypro-
wadzenie z jednego z nich drugiego, pasującego klucza umoŜli-
wiającego operację odwrotną.

Jako podstawową zasadę naleŜy przyjąć, Ŝe deszyfrowanie za pomocą


niewłaściwego klucza nie powinno praktycznie dostarczać Ŝadnych in-
formacji o tekście jawnym.
W ramach kryptografii rozwaŜamy równieŜ metody łamania szyfrów lub
inaczej kryptoanalizy. Chodzi o to by, na przykład, na podstawie
kryptogramu znaleźć odpowiadający mu tekst jawny lub zastosowany do
szyfrowania klucz. Najprostszą formą kryptoanalizy jest metoda, którą
nazywać będziemy systematycznym przeszukiwaniem. Polega ona na
rozwaŜeniu wszystkich moŜliwych kluczy (zwykle jest ich skończenie
wiele). Na przykład, znając tekst jawny P i odpowiadający mu kryptogram C
moŜemy szyfrować P po kolei wszystkimi moŜliwymi kluczami, aŜ
napotkamy taki, który daje w wyniku C.

1.0.2. Podstawowe zastosowania szyfrowania


1.0.2.1. Ochrona danych przed niepowołanym odczytem

Realizacja tego celu następuje poprzez szyfrowanie danych za pomocą


algorytmów symetrycznych.
Pola zastosowań:

>■ Zapis danych na nośnikach (dyski itp.), które nie dają ochrony przed
odczytem przez niepowołane osoby: Dane te zapisywane są jedynie w
postaci kryptogramu; tylko posiadacz odpowie d-niego klucza moŜe z
kryptogramu odtworzyć oryginalny tekst
>■ Zabezpieczenie komunikacji poprzez linie naraŜone na podsłuch: tego
rodzaju zabezpieczenie niezbędne jest, na przykład, w przypadku
elektronicznego dokonywania operacji giełdowych. Istotnie, podsłuch
dokonywanych zamówień dostarczałby informacji pozwalających na
efektywną spekulację giełdową. DuŜo groźniejsze niebezpieczeństwa
mogą się wiązać z moŜliwościami dokonywania zmian w przesyłanych
informacjach, na przykład dla elek-

4
Kryptografia

tronicznego obrotu pieniędzy pomiędzy bankami. Szyfrowanie nie


eliminuje fizycznej moŜliwości zakłócenia komunikacji bądź
dokonywania modyfikacji. Jednak zmiany dokonywane bez zna-
jomości odpowiedniego klucza powodują powstawanie chaotycznych
tekstów po odszyfrowaniu przez odbiorcę uŜywającego prawidłowego
klucza. W ten sposób próba oszustwa zostanie wykryta.

1.0.2.2. Uwierzytelnianie dokumentów

Uwierzytelnianie dokumentów moŜe nastąpić za pomocą algorytmów


asymetrycznych. Alice publikuje (na przykład na swej stronie w World Wide
Web) jeden z dwu pasujących do siebie kluczy, mianowicie ten słuŜący do
deszyfrowania (dlatego klucz ten nazywamy kluczem jawnym lub kluczem
publicznym). Drugi z pary kluczy jest przez Alice pilnie strzeŜony i nie jest
podawany do niczyjej wiadomości. Klucz ten nazywamy kluczem
prywatnym. Alice uwierzytelnia dokumenty poprzez ich szyfrowanie za
pomocą jej prywatnego klucza (patrz rysunek 1.2). Jest to moŜliwe
poniewaŜ:

>- Za pomocą publicznego klucza Alice dowolna osoba moŜe odtworzyć


oryginalny tekst.
>■ Jeśli kryptogram nie był wygenerowany za pomocą prywatnego klucza
Alice, to deszyfrowanie za pomocą klucza Alice daje w wyniku tekst
będący chaotycznym ciągiem znaków. Gwarantuje to, Ŝe jedynie
posiadacz prywatnego klucza Alice moŜe tą drogą uwierzytelniać
dokumenty w imieniu Alice.
>• Na tej samej zasadzie pomylenie klucza publicznego w trakcie de-
szyfrowania równieŜ daje w wyniku tekst będący chaotycznym
ciągiem znaków. Dzięki temu nie jest moŜliwe przypisanie tekstu
niewłaściwemu autorowi.

1.0.2.3. Ochrona prywatności elektronicznej korespondencji

Zalecane jest, aby lektroniczna korespondencja była zabezpieczona za


pomocą asymetrycznych algorytmów szyfrujących. Przesyłanie kore-
spondencji elektronicznej łączy się bowiem z wieloma niebezpieczeń-

5
M. Kutyłowski, W.-B. Strothmann

Tekst oryginalny kryptogram

Szyfrowanie
Deszyfrowanie
kluczem
kluczem
prywatnym
publicznym
K
K’
Alice

Tekst oryginalny

Bob

Rysunek 1.2. Uwierzytelnianie przez szyfrowanie

stwami. Ktoś mający kontrolę nad węzłem Internetu, przez który przesyłany jest list, moŜe list ten zniszczyć,
zmodyfikować albo wreszcie przekazać komuś innemu. Aby zapobiec dwóm ostatnim wspomnianym atakom,
moŜna uŜyć scenariusza opisanego poniŜej. Przed niszczeniem listów kryptografia nie jest nas w stanie
uchronić.
ZałóŜmy, iŜ Alice chce bezpiecznie otrzymywać korespondencję. W tym celu Alice musi dysponować parą
pasujących kluczy dla asymetrycznego algorytmu szyfrującego. Klucz do szyfrowania zostaje przez Alice
opublikowany, na przykład poprzez World Wide Web. Gdy Bob pragnie wysłać list do Alice, wtedy
realizowany jest następujący protokół (patrz rysunek 1.3):

>- Bob zaopatruje się w klucz K, publiczny klucz Alice.

>- Bob szyfruje tekst swego listu do Alice za pomocą klucza K.

>- Bob wysyła zaszyfrowany list pocztą elektroniczną do Alice (w zaleŜności od stosowanego systemu,
konieczna moŜe być konwersja pliku zawierającego kryptogram z postaci binarnej na tekstową, by
uniknąć zmian wprowadzanych w trakcie transmisji).

6
Kryptografia

Listl szyfrowanie
Kryptogram 1
kluczem
Bob publicznym K deszyfrowanie
prywatnym
J kluczem K'
Listl

szyfrowanie <
List 2
Kryptogram 2
kluczem
Mikę
publicznym K
:zx:
List 2

\^ Alice, posiadaczka K1 y

Rysunek 1.3. Ochrona korespondencji przy uŜyciu asymetrycznych al-


gorytmów szyfrujących

>■ Alice deszyfruje otrzymany list za pomocą swego prywatnego


klucza i otrzymuje w ten sposób oryginalny list.

PowyŜszy protokół gwarantuje, Ŝe tylko Alice jest w stanie odkodo-


wać przeznaczone do niej listy. Tak więc przechwycenie korespondencji
przez osoby trzecie przestaje być niebezpieczne. RównieŜ próby wpro-
wadzania zmian w zaszyfrowanym liście (nawet na ślepo) są skazane
na niepowodzenie - wszystkie rozsądne algorytmy szyfrujące mają tę
własność, Ŝe zmiana choćby jednego bitu w kryptogramie powoduje ol-
brzymie zmiany w tekście po deszyfrowaniu, wskutek czego tekst ten
ma postać przypadkowego ciągu znaków.
Oczywiście, Alice i Bob mogą sobie zagwarantować bezpieczeństwo
korespondencji prowadzonej między sobą poprzez stosowanie szyfro-
wania algorytmem symetrycznym z kluczem znanym jedynie Alice i
Bobowi. Zaletą protokołu z uŜyciem asymetrycznego algorytmu jest to,
Ŝe Alice i Bob nie muszą uzgadniać stosowanych kluczy oraz Ŝe Alice
moŜe ograniczyć się do posiadania jednej pary kluczy dla korespon-
dencji prowadzonej z duŜą liczbą osób. Protokół nadaje się więc dobrze
7
M. Kutyłowski, W.-B. Strothmann

do korespondencji pomiędzy osobami sporadycznie kontaktującymi się oraz


gdy Alice otrzymuje listy od duŜej liczby osób.

1.0.2.4. Elektroniczny notariusz

Do notariusza zgłaszamy się w dwóch waŜnych sytuacjach:

1. Gdy chcemy urzędowo potwierdzić istnienie dokumentu. W tym


przypadku moŜemy dodatkowo pragnąć, by proces potwierdzania nie
ujawniał jego treści (bo moŜe być to, na przykład, opis nowej,
wartościowej technologii).
2. Jeśli chcemy zagwarantować, aby w jakimś dokumencie (na przykład
umowie handlowej) nie były dokonywane zmiany przez nieuczciwego
partnera.

W obu przypadkach wystarcza sporządzenie dla wspomnianego dokumentu


czegoś w rodzaju odcisków palców - krótkiego ciągu symboli, który
praktycznie jest dla kaŜdego tekstu inny. Takie „odciski palców" moŜna na
przykład opublikować jako ogłoszenie w codziennej prasie. Zdobywamy w
ten sposób dowód istnienia dokumentu. Aby dowód ten był niezaprzeczalny,
musimy zagwarantować kilka własności. Do sporządzania „odcisków
palców" uŜywamy tak zwanych jednokierunkowych funkcji hashujących.
Mówimy, Ŝe H jest jednokierunkową funkcją hashującą, o ile spełnione są
następujące warunki:

>- Dla kaŜdego X łatwo jest obliczyć H(X).


>■ H(X) ma ustaloną długość dla wszystkich tekstów X (w ten sposób
długość H(X) nie zdradza Ŝadnych informacji o tekście X).
*- Dla zadanego Y znalezienie X takiego, Ŝe H(X) = Y, jest praktycznie
niemoŜliwe. Dotyczy to w szczególności systematycznego
przeszukiwania wszystkich moŜliwych tekstów. Wynika stąd, Ŝe ciągi
H(X) muszą być wystarczająco długie, by takie systematyczne
przeszukiwanie było praktycznie beznadziejne. Gdy wartości funkcji
hashującej składają się z 128 bitów, to mamy do dyspozycji 2128
moŜliwych wartości. Liczba ta jest praktycznie nieskończona (dla
porównania, według niektórych teorii całkowity okres trwania
wszechświata bywa szacowany na 261 sekund!).

8
Kryptografia

W istocie na własności jednokierunkowych funkcji hashujących nakładane


są duŜo bardziej rygorystyczne warunki (patrz rozdział 6).
W celu „notarialnego" potwierdzenia posiadania dokumentu X naleŜy
obliczyć wartość H(X) i opublikować ją lub umieścić u notariusza (rolę
notariusza moŜe przejąć specjalnie zabezpieczony program sieciowy).
Później, gdy pragniemy udowodnić posiadanie dokumentu X, przed-
stawiamy X i wskazujemy na miejsce, gdzie podaliśmy wcześniej wartość
H(X). Sprawdzenie polega na obliczeniu wartości H(X) dla podanego tekstu
X i porównaniu jej z wartością wcześniej opublikowaną lub złoŜoną u
notariusza.
W celu zagwarantowania, iŜ tekst X (na przykład umowa) nie ulegnie
modyfikacjom, równieŜ obliczamy wartość H(X). Wartość tę moŜemy
następnie dołączyć do dokumentu (na przykład dla wykrycia przypad-
kowych błędów powstałych w trakcie transmisji danych) lub opublikować
czy złoŜyć u notariusza (dla ochrony przed postępowaniem nieuczciwego
partnera umowy).
ZauwaŜmy, Ŝe opisana metoda mogłaby, na przykład, pozwalać na proste
sprawdzanie autentyczności programów komputerowych. Jednym z
trudniejszych do wykrycia ataków na system komputerowy jest bowiem
wprowadzanie tzw. koni trojańskich - programów z punktu widzenia
uŜytkownika zachowujących się w sposób dokładnie taki sam, jak programy
oryginalne, jednakŜe wykonujących pewne dodatkowe funkcje (na przykład
samopowielanie w przypadku wirusów czy przekazywanie informacji na
zewnątrz w przypadku szpiegostwa gospodarczego). O ile jednak producent
programu X zamieści wartość H(X) na przykład w World Wide Web, wtedy
osoba posiadająca program X moŜe w kaŜdym momencie obliczyć wartość
funkcji H dla posiadanego programu i porównać ją z wartością H(X)
dostępną publicznie. ZauwaŜmy, Ŝe metoda ta pozwala na wykrycie zmian
dokonywanych w programie przez jakiekolwiek wirusy, te znane, jak i
nieznane lub jeszcze nienapisane. Istotną cechą tej metody jest to, Ŝe
producent nie musi upubliczniać programu X, a mimo wszystko pełna
weryfikacja oryginalności jest moŜliwa. Tym samym producent ma szanse
sprzedaŜy dalszych kopii programu X.
O ile dysponujemy funkcją hashującą generującą krótkie ciągi liter, to
telefonicznie moŜna sprawdzić oryginalność dokumentów przesłanych
elektronicznie (osoby poznające się po głosie mogą sprawdzić, czy war-

9
M. Kutyłowski, W.-B. Strothmann

tości funkcji hashującej dla wysłanego i otrzymanego dokumentu są takie


same). Tą drogą moŜna na przykład telefonicznie sprawdzić oryginalność
kluczy publicznych generowanych przez system PGP.
Przykłady, jakie przedstawiliśmy powyŜej, to tylko niektóre z dzisiejszych
perspektyw zastosowania kryptografii. JuŜ po tych przykładach widać
jednak, Ŝe pole zastosowań kryptografii wykracza daleko poza klasyczne
szyfrowanie danych (choćby do celów militarnych). Niektóre inne
zastosowania będą przedstawione w dalszej części tej ksiąŜki. Inne znajdzie
Czytelnik w bogatej literaturze fachowej dotyczącej kryptografii.

1.0.3. Historia kryptografii


JuŜ w staroŜytności stosowane były pewne metody szyfrowania wiadomości
o charakterze strategicznym. Ciekawe jest, Ŝe stopień wyrafinowania tych
metod był znacząco niŜszy niŜ stan wiedzy matematycznej w kaŜdej
właściwie epoce. Stosowane metody były dawniej zazwyczaj dość
prymitywne i pozwalały na złamanie szyfrów dostatecznie zde-
terminowanemu przeciwnikowi. Sytuacja uległa zmianie juŜ w pierwszej
połowie dwudziestego wieku. Zbudowano wtedy wiele systemów
szyfrowania za pomocą urządzeń mechanicznych i wykorzystywano je
powszechnie podczas drugiej wojny światowej. Część z tych systemów
została skutecznie złamana (na przykład, niemiecki system Enigma).
Prawdziwą rewolucję pod względem projektowania systemów szyfrujących
przyniósł rozwój elektroniki, dający olbrzymie moŜliwości operacji
obliczeniowych niskim kosztem.
Rozwój kryptografii od swych początków był bardzo silnie związany z
celami wojskowymi. W związku z tym wszelkie prace z dziedziny
kryptografii miały charakter tajny i ich rezultaty nie były publikowane lub
wykorzystywane w sektorze cywilnym do lat siedemdziesiątych. Naukowcy
prowadzący badania w kryptografii znajdowali się pod ścisłą kontrolą
organów bezpieczeństwa. Publikowanie prac następowało sporadycznie i
niekiedy jedynie poprzez niedopatrzenie organów kontrolnych.
Prawdziwy przełom pod względem rozwoju kryptografii nastąpił w latach
siedemdziesiątych wraz z odkryciem asymetrycznych algorytmów
szyfrujących. Olbrzymie zainteresowanie w środowiskach nauko-

10
Kryptografia

wych spowodowało lawinowy wzrost ilości prowadzonych badań, juŜ


poza kontrolą aparatów bezpieczeństwa poszczególnych państw. In-
tensywna wymiana informacji, jaka ma miejsce od tego czasu, pozwo-
liła na ogromny rozwój wiedzy w tej dziedzinie.
W wielu krajach stosowanie metod kryptograficznych jest nadal zabro-
nione lub ograniczone. W wielu krajach, skądinąd demokratycznych,
gdzie obywatele cieszą się duŜym zakresem wolności, podejmowane są
próby ustanowienia kontroli państwa nad stosowaniem metod krypto-
graficznych. W szczególności dotyczy to, na prs^ykład, Wspólnoty Eu-
ropejskiej. TakŜe w USA forsowano uŜywanie Clippera, tj. układu elek-
tronicznego słuŜącego do szyfrowania, jednak pozwalającego na łama-
nie kryptogramów przez słuŜby bezpieczeństwa. Doprowadziło to teŜ
do tak spektakularnych kroków, jak zakaz uŜywania technik krypto-
graficznych do celów prywatnych w Rosji.
Ograniczaniu moŜliwości stosowania metod kryptograficznych sprze-
ciwiają się bardzo gwałtownie środowiska gospodarcze. Wskazują na
niezbędność jej stosowania w gospodarce w niereglamentowany spo-
sób. W obecnej chwili wydaje się, Ŝe jednym z niezbędnych warun-
ków rozwoju gospodarczego jest rozbudowa globalnej sieci kompute-
rowej pełniącej funkcję infrastruktury informacyjnej gospodarki. Ponie-
waŜ w sieciach tego typu nie da się raczej zagwarantować bezpieczeń-
stwa przed włamaniami komputerowymi, dane muszą być zabezpie-
czane w inny sposób. Jedyna droga do realizacji tego celu wiedzie po-
przez wykorzystanie technik kryptograficznych. Podnoszone są argu-
menty, mówiące, Ŝe wprowadzenie ograniczeń stosowania kryptografii
nieuchronnie powoduje spadek atrakcyjności danego kraju dla aktyw-
ności gospodarczej.

1.0.4. Kontrowersje związane z kryptografią


Kryptografia potrafi zagwarantować ochronę danych przed dostępem
niepowołanych osób. Jest to moŜliwe nawet wtedy, gdy właściciel da-
nych za takowe uwaŜa organy ścigania. Dopuszczenie stosowania tych
metod uniemoŜliwia zatem dokonywanie „rewizji" policyjnych w sys-
temach komputerowych. Tak więc dokonywanie elektronicznego prze-
twarzania danych w ramach działalności przestępczej nie musi nieść ze
sobą niebezpieczeństwa dostarczenia organom ścigania materiału do-

li
M. Kutyłowski, W.-B. Strothmann

wodowego w przypadku przechwycenia danych. Pozwala to równieŜ na


korzystanie z powszechnie dostępnych sieci, takich jak Internet, do
działalności przestępczej. Z moŜliwości tych korzystają zapewne juŜ teraz
organizacje działające na krawędzi prawa lub teŜ wbrew prawu.
W obliczu powyŜszych zagroŜeń w wielu państwach organy bezpieczeństwa
(czasami demokratycznie wybrane, czasami będące aparatem politycznej
represji) starają się zabronić bądź ograniczyć stosowanie metod
kryptograficznych. Druga z tych opcji polega na dopuszczeniu jedynie takich
metod, które mogą zostać złamane przez organy bezpieczeństwa (wskutek
słabości tych metod, konieczności przekazywania uŜywanych kluczy
organom bezpieczeństwa bądź dzięki wbudowanym do algorytmów
„ukrytym drzwiom" pozwalającym na deszyfrowanie bez znajomości
kluczy).
Przeciwnicy stosowania ograniczeń w stosowaniu kryptografii wskazują, iŜ
środowiska przestępcze byłyby i tak w stanie korzystać z technik
kryptograficznych bez moŜliwości udowodnienia im tego przez organy
ścigania. Problem polega na tym, iŜ kryptogramy mają charakter losowych
ciągów znaków i są od nich nieodróŜnialne. Z drugiej strony, losowy
charakter mają szumy zawarte w kaŜdym kodowanym cyfrowo obrazie czy
dźwięku. Tym samym przestępca działający w ramach zorganizowanych
grup moŜe ukryć przekazywaną wiadomość na przykład w zdjęciu Tatr
umieszczonym na swej stronie WWW. Co więcej, z niektórych form
kryptografii juŜ nie jesteśmy w stanie zrezygnować, choćby w obrocie
bankowym. PoniewaŜ wiele metod uŜywa losowych ciągów znaków jako
niezbędnych parametrów, przestępca moŜe zamiast nich uŜywać
kryptogramów z przestępczymi informacjami. Znów, nie wzbudzi to Ŝadnych
podejrzeń, a tak przekazywane wiadomości będą odróŜnialne od naprawdę
losowych ciągów jedynie dla posiadaczy tajnego klucza (przykład takiej
sytuacji opisujemy dokładniej w rozdziale 8.2.2).
Reasumując, wydaje się, iŜ postulowane ograniczenia są w stanie być
skuteczne jedynie w odniesieniu do osób czy organizacji nie parających się
działalnością przestępczą. Spowodowałoby to zatem skutek odwrotny do
zamierzonego - organizacje przestępcze byłyby w uprzywilejowanej pozycji
wobec reszty społeczeństwa, która nie byłaby w stanie bronić swych danych
wobec działań kryminalnych.

12
Kryptografia

1.0.5. Korzystanie z produktów kryptograficznych


Upublicznienie kryptografii pozwala na bardziej wiarygodną weryfikację
oferowanych programów i sprzętu kryptograficznego. Nie moŜna bowiem w
tym względzie polegać na reklamie samych firm. Wadliwość oferowanego
produktu nie jest bowiem widoczna gołym okiem, a często bez niesłychanie
kosztownego badania produktu nie jest się równieŜ w stanie o tym
przekonać.
MoŜna sformułować następujące zasady dotyczące praktycznego stosowania
produktów kryptograficznych w sytuacjach, gdy rzeczywiście
bezpieczeństwo ma kluczowe znaczenie:

>- Jako względnie bezpieczne mogą być uznane jedynie programy czy teŜ
specjalny hardware oferowany poprzez znane firmy o niezaprzeczalnej
reputacji. Najlepiej, gdy produkty te posiadają certyfikaty
odpowiednich państwowych urzędów kontrolnych (jak na przykład
NIST w USA).

Programy i urządzenia kryptograficzne powinny realizować po-


wszechnie znane, popularne i przetestowane rozwiązania. Proces
testowania powinien mieć następujący przebieg:

1. Propozycja metody, wraz z jej szczegółowym opisem, musi być


podana do wiadomości publicznej. Bezpieczeństwo metody nie
moŜe opierać się na utajnieniu jej sposobu działania. Wiadomo,
Ŝe i tak pewna grupa osób uzyska do takich informacji dostęp
(choćby pracownicy firmy oferującej produkt). Grupa ta moŜe
następnie wykorzystywać je na szkodę uŜytkownika produktu.
2. Propozycja musi wzbudzić powszechne zainteresowanie zarówno
środowisk naukowych, jak i businessu oraz muszą być
prowadzone nad nią intensywne badania.
3. Jeśli po dłuŜszym czasie nie ma znaczących postępów pro-
wadzących do złamania metody, a teoretyczne badania zdają się
potwierdzać jej bezpieczeństwo (na przykład poprzez redukcję
znanych trudnych zagadnień obliczeniowych do zagadnienia
złamania proponowanego szyfru), wtedy metodę tę moŜna uznać
za względnie bezpieczną i dopuścić do uŜytku.

13
M. Kutyłowski, W.-B. Strothmann

Jeśli jakikolwiek z powyŜszych warunków nie jest spełniony, al-


gorytmu nie moŜna uznać za bezpieczny.
>- Niezbędne jest ciągłe śledzenie rozwoju stanu wiedzy kryptograficznej.
Postępy w tej dziedzinie mogą spowodować moŜliwość łamania
algorytmów dawniej uznawanych za bezpieczne. (Tego typu sytuacja
nastąpiła, na przykład, w odniesieniu do długości kluczy dla systemu
RSA wskutek postępów w zakresie algorytmów rozkładających liczby
na czynniki pierwsze.)

Czasami jakość software'u i hardware'u kryptograficznego jest powiązana z


czynnikami politycznymi, takimi jak ograniczenia eksportowe. Na przykład,
tak zwane wersje międzynarodowe produktów firm amerykańskich
gwarantują jedynie bardzo niski poziom bezpieczeństwa. Poziom ten jest tak
niski, Ŝe programy te nie wymagają zezwoleń eksportowych w bardzo
restrykcyjnym ustawodawstwie USA.

14
Rozdział 2
Podstawowe
techniki
szyfrowania
M- Kutyłowski, W.-B. Strothmann

16
W niniejszym rozdziale przedstawiamy kilka klasycznych technik szy-
frowania. Techniki te bywają składnikami wielu bardziej zaawansowanych
algorytmów, dlatego poświęcimy im chwilę uwagi.

2.0.6. Podstawienie
Niech 7r : Z —)■ Z będzie permutacją, Z zaś zbiorem uŜywanych liter.
Tekst jawny aia2. ■ ■ an (gdzie «, 6 Z) jest szyfrowany jako ciąg
7r(fl1)7r(a2) • • • n(an). Kryptogrambi.. .bn deszyfrowywany jest
jako 7r_1(Ł>i).. . 7r_1(frn).

Przykład: szyfry Cezara. Litery alfabetu moŜna utoŜsamiać z liczbami. W


systemie Cezara uŜywanych jest 26 liter odpowiadających liczbom od 0 do
25.7r(i) := i + 3 mod 26 dla i e {0,... , 25}.

2.0.6.1. Analiza częstotliwości

Słabością szyfrów opartych na podstawieniach jest to, Ŝe mogą one być


złamane poprzez analizę częstotliwości występowania poszczególnych liter
alfabetu. Litery alfabetu nie występują bowiem z jednakową częstotliwością
- analiza tych częstotliwości w zaszyfrowanych tekstach pozwala na
zgadnięcie niektórych wartości permutacji 7r. Dla przykładu przyjrzyjmy się
przeciętnej częstotliwości występowania liter w tekstach w języku
angielskim. Najczęściej spotykaną literą jest E i obejmuje około 12,3%
wszystkich wystąpień. Na drugim biegunie leŜą litery takie jak Y, B, G, V,
K, Q, X, J, Z. KaŜda z nich występuje z częstością poniŜej 2%. Ostatnie
cztery podane litery mają nawet częstości nie przekraczające 0,2%! Grupa
liter o częstościach powyŜej 6% teŜ nie jest liczna i zawiera, prócz
wspomnianej juŜ litery E, jedynie T, A, O, N, I, S,R.
17
M. Kutyłowski, W.-B. Strothmann

Kryptoanaliza polega na sporządzeniu tabeli częstotliwości występowania


liter w zaszyfrowanym tekście i porównania go z powyŜszą tabelą- Na tej
podstawie moŜna, na przykład, zlokalizować prawdopo-dobAe wartości dla
7r(E), 7r(T), TT(A). Po przyjęciu hipotetycznych wartości dla tych liter,
szukamy w kryptogramie sekwencji liter odpowiadających typowym
s"łowom, ta'k'im ja~k na przykład „the77.Pozwala to na zweryfikowanie
hipotezy i przyjęcie prawidłowych wartości dla E, T, A. Po ustaleniu tych
wartości moŜemy pokusić się o odgadnięcie 7r(H) tak, by utworzyć
odpowiednio duŜo słów „the" w tekście jawnym. Postępowanie to
kontynuujemy, dysponując coraz to większymi porcjami tekstu jawnego.
Sposobem na utrudnienie analizy częstotliwości jest szyfrowanie poprzez
podstawienie nie pojedynczych liter, ale bloków liter określonej długości (tj.
k
TT : ~L —)• £*). Mamy wtedy bowiem do czynienia z mniejszymi
dysproporcjami w zakresie średniej częstotliwości występowania
poszczególnych konfiguracji liter w bloku; w szczególności praw-
dopodobieństwa te stają się stosunkowo małymi liczbami. Utrudnia to
odgadnięcie wartości podstawienia ix. W szczególności kryptoanaliza
wyrfiaga duŜo dłuŜszych kryptogramów, aby móc skorzystać z jakich-
kolwiek statystycznych prawidłowości.

klucz: kwadrat 5x5 zawiera wszystkie litery z wyjątkiem J,


które w tekście jawnym zastępujemy poprzez I
POS Z L hasło: „POSZŁA MAŁPA DO PIWNICY"
AMD I W pozostałe litery
\T P V
F G H K Q"" w kolejności
alfabetycznej
RTUVX

Rysunek 2.1. System Playfair'a - kwadrat szyfrujący Przykładem

systemu, w którym koduje się bloki długości 2 jest system 18


Kryptografia

szyfrowanie:
K
p OS ZL OH - rogi prostokąta K; OH zastępowany
A M IW jest poprzez litery znajdujące się w
N CY B E pozostałych rogach prostokąta K, tj. przez
SG
F GH KQ
RTUVX
szyfrowanie tekstu jawnego KR|OW|A
I| WE|SZ

TT(KR) = FV, TT(OW) = LM,


TT(AI) = MW, TT(WE) = AN;
TT(SZ) = ZŁ

Rysunek 2.2. System Playfair'a - szyfrowanie

Playfair'a przedstawiony na rysunkach 2.1 i 2.2. Jest to prosty system, w


którym wszelkie operacje szyfrowania i deszyfrowania mogą być z łatwością
dokonane ręcznie. System oczywiście gwarantuje tylko bardzo niewielki
zakres bezpieczeństwa i moŜe być traktowany jako dygresja w stronę metod
historycznych (stosowanych w trakcie pierwszej wojny światowej).
Szyfrowaniu podlegają pary liter, przy czym uŜywamy 25 liter (25 duŜych
liter alfabetu angielskiego, jedna z liter, mianowicie J, jest w tekstach
zastąpiona przez I). Do szyfrowania i deszyfrowania uŜywany jest kwadrat 5
x 5, w który wpisujemy kolejne litery występujące w haśle (na rysunku 2.1
hasłem jest „POSZŁA MAŁPA DO PIWNICY"), przy czym pomijamy
powtarzające się litery. Gdy po wpisaniu tych liter zostały jeszcze wolne
miejsca w kwadracie, to umieszczamy tam jeszcze niewpisane litery w
kolejności alfabetycznej. W ten sposób wypełniamy kwadrat 25 literami.
Szyfrowanie przebiega następująco. ZałóŜmy dla przykładu, Ŝe chcemy
zaszyfrować parę OH według klucza z rysunku 2.1. Litery O oraz H
wyznaczają prostokąt « w kwadracie do szyfrowania, w którego pozostałych
rogach znajdują się S i G (patrz rysunek 2.2). Reguła szyfrowania mówi, Ŝe
OH zastępujemy właśnie tymi literami, tj. SG. Gdy para liter, jaką
zamierzamy zaszyfro-

19
M. Kutyłowski, W.-B. Strothmann

wać, leŜy w jednej kolumnie lub jednym wierszu (i wobec tego nie definiuje
prostokąta), to litery te zastępujemy parą liter leŜącą na prawo od nich, na
przykład SY zastępujemy przez ZB, parę WE zaś przez AN (litery leŜące w
pierwszej kolumnie z prawej strony zastępujemy literami z ostatniej
kolumny).

Ogólnie rzecz biorąc, podstawienie nie oparte o długie bloki lub o prostych
zasadach generowania permutacji z klucza moŜe być podatne na analizę
częstotliwości. Z tego względu podstawienie naleŜy traktować raczej jako
technikę wykorzystywaną jako element pomocniczy bardziej złoŜonych
metod.

2.0.7. XOR i one-time pad


Operacja XOR (eXclusive OR) jest zdefiniowana jak następuje:
0 XOR 0=1 XOR 1 = 0,1 XOR 0 = 0 XOR 1 = 1.
Jeśli mamy do czynienia z dwoma ciągami bitów A = a\... ak, B = b\... bk, to
przez A XOR B rozumiemy ciąg c\... ck powstały z dokonania operacji XOR
na odpowiadających sobie bitach obu ciągów:
ci = fli XOR b\, c2 = a-i XOR b2, ..., ak XOR bk.

Szyfrowanie za pomocą XOR: załóŜmy, Ŝe tekst jawny jest ciągiem bitów


A = <?i,... ,an, zaś klucz ciągiem bitów B = k\,... ,kn. Wtedy kryptogramem
jest ciąg A XOR B. Deszyfrowanie oparte jest na trzech łatwych do
sprawdzenia równościach:

X XOR x = 0, X XOR 0 = X, X XOR (y XOR z) = (x XOR y) XOR z.

Stąd

Ci XOR ki = (a,- XOR ki) XOR k{ = at XOR (ki XOR k{) = a; XOR 0 = a,-.

Operacja XOR ma wielorakie zastosowania. Jednym z nich jest one-time


pad.

20
Kryptografia

One-time pad. Jest to metoda szyfrowania, w której uŜywany jest lo-


sowo wybrany klucz k\,... ,k n . Samo szyfrowanie odbywa się za po-
mocą XOR , tak jak to opisaliśmy powyŜej. Istotne jest, by do kaŜdego
szyfrowania uŜywać innego, wygenerowanego niezaleŜnie klucza. Tej
zasadzie metoda zawdzięcza swą nazwę.
Następujące własności są kluczowe dla metody one-time pad:
>• Kryptogram jest takŜe ciągiem losowym n bitów, tzn. ma ten sam
rozkład prawdopodobieństwa co ciągi bitów wygenerowane przy
pomocy rzucania monetą (wyrzucenie reszki powoduje dopisanie
1, wyrzucenie orła - dopisanie 0).
>- Bez znajomości klucza Ŝadna informacja dotycząca tekstu jaw-
nego nie moŜe być wydedukowana z kryptogramu (bez względu
na zastosowane moce obliczeniowe itp.). Własność ta bywa nazy-
wana bezpieczeństwem doskonałym.
Dla udowodnienia pierwszej własności zauwaŜmy, Ŝe jeśli kj — a„ to
q = 0, oraz Ŝe ci = 1 w przeciwnym przypadku. Zatem prawdopodo-
bieństwo, Ŝe ^ = 0 jest równe \ niezaleŜnie od wartości a;. Zatem i-ty
bit kryptogramu jest losowy. PoniewaŜ bity ki są losowane niezaleŜnie
od siebie, więc i bity kryptogramu są niezaleŜne, tak jak w przypadku
ciągów, jakie otrzymujemy rzucając monetą.
Niech c\.. .cn będzie dowolnym ciągiem bitów. Dla pokazania drugiej
własności zauwaŜmy Ŝe dla kaŜdego tekstu jawnego d\.. .d„ istnieje
dokładnie jeden klucz k\.. .k n taki, Ŝe poprzez szyfrowanie otrzy-
mujemy kryptogram c\... c„. Istotnie, dla i — 1,... , n musi być speł-
niona równość Ci — di XOR A:,-, skąd ki — di XOR C;. PoniewaŜ kryptogram
C\.. .cn odpowiada kaŜdemu moŜliwemu tekstowi jawnemu z takim
samym prawdopodobieństwem, nic nie moŜna orzec o kształcie tekstu
jawnego jedynie na podstawie kryptogramu.

Zastosowania one-time pad. Jedyną dziedziną zastosowań jest szy-


frowanie stosunkowo krótkich, ale bardzo waŜnych informacji, jak roz-
kazy wojskowe o strategicznym znaczeniu (na przykład, o wystrzele-
niu rakiet jądrowych). UŜywanie w tej sytuacji szyfrów moŜliwych do
złamania (choćby olbrzymim nakładem obliczeń) niesie niebezpieczeń-
stwo, Ŝe faktycznie szyfry te zostaną złamane.

21
M. Kutyłowski, W.-B. Strothmann

Problemy ze stosowaniem one-time pad.


Zasady uŜywania one-time pad mówią, Ŝe
• klucz musi być zawczasu uzgodniony przez osoby komunikujące się,
• klucz musi być wybrany naprawdę losowo (co technicznie nie jest łatwe,
patrz rozdział 7),
• klucz musi być przechowywany w bezpieczny sposób,
• klucz musi być co najmniej tak długi jak szyfrowany tekst.
KaŜdy z powyŜszych warunków stwarza niedogodności dla uŜytkow
ników i zawęŜa pole praktycznych zastosowań one-time pad.

Niebezpieczeństwo uŜycia wielokrotnie tego samego klucza.


ZałóŜmy, Ŝe szyfrujemy długi tekst «ofli • ■ • za pomocą n-bitowego klucza
ko... /cn_i. PoniewaŜ brakuje nam bitów klucza, uŜywamy następującej
formuły:
Cj = aiXORkimodn.
Inaczej mówiąc, bloki długości n szyfrujemy kaŜdorazowo za pomocą tego
samego klucza k$.. .kn-\. ZauwaŜmy, Ŝe wtedy
Cj XOR cn+j = (fly XOR kj) XOR (an+j XOR kj) = fl;- XOR an+j.
Zatem z łatwością moŜna bez znajomości klucza, a tylko na podstawie
samego kryptogramu obliczyć dj XOR an+j\
Złamanie tak skonstruowanego kryptogramu moŜe się odbywać według
następującego scenariusza. W kaŜdym prawie tekście znajdują się długie
bloki spacji. Zakładając, Ŝe dj jest spacją, moŜna obliczyć Uj+n. Czyniąc tak
dla kaŜdego;', otrzymujemy pewien tekst. Szukamy w nim zrozumiałych
fragmentów. W miejscach, gdzie n pozycji do tyłu w tekście jawnym
występuje blok spacji, otrzymamy w ten sposób fragmenty tekstu jawnego.
Jeśli potrafimy je rozpoznać, to dysponujemy bitami«,-, c, dla odpowiednich
i. Stąd wyliczamy kjmo^n — a, XOR c,. Znalezione wartości klucza uŜywamy
następnie dla całego kryptogramu w celu odszyfrowania innych fragmentów
tekstu jawnego. Pracę moŜna kontynuować próbując zgadnąć kolejne
wartości kt na granicy odszyfrowanych regionów sprawdzając, czy prowadzi
to do sensownego uzupełnienia odgadniętych fragmentów tekstu jawnego.

22
Kryptografia

2.0.8. S-boksy
S-boksy są nadzwyczaj istotnymi składnikami algorytmu DES (Data
Encryption Standard) najwaŜniejszego w praktyce algorytmu szyfrują-
cego w momencie powstawania tej ksiąŜki. KaŜdy S-boks jest zdefinio-
wany poprzez macierz rozmiaru 4 x 1 6 zawierającą liczby z przedziału
od 0 do 15 (patrz rysunek 2.3).

14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 9 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

wiersz 2, kolumna 13
argument = 111010, wynik = 1010 = 10102

Rysunek 2.3. Szyfrowanie za pomocą S-boksów (rysunek przedstawia


S-boks o nazwie SI)

Sposób działania S-boksów, S-boks definiuje funkcję, jej argumen-


tami są ciągi złoŜone z 6 bitów, a wartościami ciągi złoŜone z 4 bitów.
Obliczenie wartości dla argumentu x ma następujący przebieg:

>• pierwszy i ostatni bit argumentu x tworzą liczbę w systemie dwój-


kowym wyznaczającą numer wiersza (wiersze numerujemy od 0
do 3),
>■ pozostałe 4 bity x wyznaczają numer kolumny (kolumny nume-
rujemy od 0 do 15),
>■ na przecięciu tak wyznaczonych kolumny i wiersza znajduje się
pojedynczy element, liczba ta jest szukaną wartością funkcji.

Wybór liczb znajdujących się w S-boksie ma fundamentalne znacze-


nie dla jakości szyfrowania. Wybór S-boksów stosowanych w praktyce
nie był do końca procesem jawnym, znanych jest jednak kilka reguł,
23
M. Kutyłowski, W.-B. Strothmann

które wzięto pod uwagę. Nie jest znana Ŝadna prosta i elegancka analiza
matematyczna, która prowadziłaby do wyboru takich a nie innych S-boksów.
W praktyce stosowane są S-boksy o nazwach SI, S2,..., S8.

Efekt lawinowy: Jedną z podstawowych zasad szyfrowania jest to, by


zmiana pojedynczego bitu w tekście jawnym powodowała zmianę wielu
bitów w kryptogramie. W idealnej sytuacji powinno to powodować takie
ustawienie bitów, jakie byśmy uzyskali w przypadku ich ustawienia według
rzutów monetą. Tym samym podobne teksty jawne nie mają podobnych
kryptogramów! Własność ta utrudnia w znaczący sposób kryptoanalizę. W
tej sytuacji mówimy o efekcie lawinowym, dla podkreślenia, Ŝe zmiana
pojedynczego bitu w tekście jawnym powoduje lawinę zmian w
kryptogramie.
Za pomocą S-boksów moŜa zrealizować efekt lawinowy. O ile S-boks
stosujemy do bitów (x. y, z , u , v , w), to zmiana x lub w powoduje zmianę
numeru wiersza. Rzut oka na S-boks z rysunku 2.3 pozwala stwierdzić, Ŝe
wiersze nie są do siebie podobne. Dlatego nie ma Ŝadnego powodu, by po
zmianie x lub w nowy wynik przypominał w jakikolwiek sposób ten
poprzedni. Podobne zjawisko odnosi się do kolumn, gdyŜ kolumny S-boksu
równieŜ nie są podobne.
Gdy S-boksy są uŜywane wielokrotnie, wtedy efekt lawinowy ulega
spotęgowaniu i sposób, w jaki zmiana pojedynczego bitu wpływa na zmianę
końcowego wyniku, jest coraz bardziej skomplikowany.

Kryteria wyboru S-boksów: PoniŜej omawiamy niektóre waŜne własności,


jakie powinny być spełnione przez dobre S-boksy. KaŜda z nich została
sformułowana na zasadzie „jeśli własność nie jest spełniona, to
kryptoanaliza moŜe być ułatwiona".

>■ KaŜdy wiersz S-boksu zawiera wszystkie liczby całkowite od 0 do 15.


Własność ta zapewnia, Ŝe sama znajomość wiersza nie daje Ŝadnej
informacji o wartości końcowej.
>* Funkcja obliczana przez S-boks nie jest funkcją afiniczną, tzn. Ŝaden
bit wyniku nie da się przedstawić jako c0 4- X/=i ci" X\, gdzie %,
oznacza z'-ty bit argumentu, operacje arytmetyczne zaś wykonywane
są modulo 2. Gdyby bity wyniku były wyraŜalne za pomocą

24
___________ Kryptografia

funkcji afinicznych, to kryptoanaliza byłaby znacznie ułatwiona.


Istotnie, po pierwsze, składanie S-boksów nie miałoby sensu - dalej
poruszalibyśmy się w obrębie funkcji afinicznych, bo złoŜenie funkcji
afinicznych jest funkcją afiniczną. Po drugie, kryptoanaliza
ograniczałaby się do rozwiązywania układów równań liniowych, co
nie jest trudne.
>- Zmiana jednego bitu argumentu zmienia co najmniej dwa bity wyniku.
Własność ta ma zapewnić efekt lawinowy w przypadku wielokrotnego
zastosowania S-boksów.
>■ Dla kaŜdego argumentu x wartości obliczane przez S-boks dla ar-
gumentów x oraz x XOR 001100 róŜnią się co najmniej na dwóch
pozycjach.
>■ Dla kaŜdego argumentu x oraz e , f € {0,1} wartości obliczane przez
S-boks dla x oraz x XOR lle/00 róŜnią się co najmniej na dwóch
pozycjach.
>- Jeśli ustalimy wartość jednego bitu argumentu oraz jedną pozycję
wyniku, to dla około połowy ustawień pozostałych bitów argumentu
na wybranej pozycji wyniku otrzymamy 0. Własność ta gwarantuje, Ŝe
nawet gdy znamy wartość jednego bitu argumentu, to na dowolnej
pozycji wyniku otrzymujemy 0 w przybliŜeniu z takimi częstościami,
jak w przypadku losowania bitów za pomocą rzutów monetą.

Bardzo wskazany jest równieŜ taki wybór wartości w tablicy S-boksu, by jak
najbardziej utrudnione były znane techniki kryptoanalizy, takie jak
kryptoanaliza róŜnicowa i liniowa (patrz rozdział 12). Pierwsze z tych
kryteriów brano pod uwagę podczas konstrukcji S-boksów SI,...,
S8.

25
M. Kutyłowski, W.-B. Strothmann

26
Rozdział 3
I Algorytmy
symetryczne
M. Kutyłozuski, W.-B. Strothmann

28
3.1. DES - Data Encryption Standard
Zanim przejdziemy do technicznego opisu algorytmu DES, podamy
kilka ogólnych uwag na jego temat:

>■ DES jest symetrycznym algorytmem szyfrującym, ten sam klucz


jest uŜywany do szyfrowania i deszyfrowania.
>~ Szczegółowy opis algorytmu DES został celowo opublikowany.
Chodziło o przekonanie potencjalnych uŜytkowników, Ŝe bezpie-
czeństwo metody nie tkwi w tajności jej budowy, ale w konstruk-
cji odpornej na kryptoanalizę. Jest to istotne, kaŜda metoda bo-
wiem, której szczegóły nie zostały ujawnione, moŜe zawierać w
sobie tzw. ukryte drzwi, czyli miejsce w algorytmie, które moŜe
być wykorzystane przez przeciwnika znającego szczegóły algo-
rytmu na zdobycie informacji niedostępnych w zwykłym trybie
(na przykład dotyczące uŜywanych kluczy).
>■ DES jest znacząco szybszy, gdy jest zaimplementowany jako har-
dware, a nie jako software. Algorytm został celowo tak zaprojek-
towany, aby zniechęcić do implementacji software'owych, uwa-
Ŝanych za bardziej podatne na atak (łatwiej jest się włamać do
systemu i niepostrzeŜenie wymienić software, niŜ dokonać fizycz-
nego włamania, by wymienić hardware). Układy realizujące DES
są bardzo szybkie (na przykład 1 GB/sek.); dla porównania dobry
software na PC moŜe mieć prędkość tysiące razy niŜszą.
>• DES szyfruje bloki złoŜone z 64 bitów, odpowiada to 8 literom
ASCII, kaŜda zaopatrzona w bit parzystości. Klucze składają się
równieŜ z 64 bitów, przy czym 8 bitów jest bitami parzystości. Tak
29
M. Kutyłowski, W.-B. Strothmann

więc w istocie w trakcie wyboru klucza moŜna określić jedynie 56


bitów, reszta jest generowana automatycznie. Postęp w dziedzinie
technologii i związane z tym obniŜenie kosztów krypto-analizy
wyzwoliły dyskusje, czy długość kluczy DES-a nie jest za mała. Przy
dostatecznej liczby par składających się z tekstu jawnego oraz
kryptogramu utworzonego przy pomocy tego samego klucza K, koszt
znalezienia K bywa szacowany jedynie na miliony dolarów USA.

>■ DES został w USA uznany za standard dla celów niemilitarnych.


Został wstępnie zaprojektowany w ośrodku badawczym IBM w
Yorktown Heights, a następnie zmodyfikowany przez NSA (National
Security Agency), rządowy organ w USA zajmujący się problemami
bezpieczeństwa narodowego. Wywołało to wiele podejrzeń, Ŝe NSA
zna ukryte drzwi umoŜliwiające łamanie szyfrów generowanych za
pomocą DES-a. PoniewaŜ DES stał się w międzyczasie standardem w
zastosowaniach komercyjnych na całym świecie, dawałoby to USA
olbrzymie korzyści w zakresie militarnym i gospodarczym.

>■ W odniesieniu do DES-a nie zostały opublikowane Ŝadne prace dające


tej metodzie solidne podstawy matematyczne. JednakŜe ponad 20 lat
badań akademickich potwierdza, Ŝe konstrukcja algorytmu DES jest
bardzo wyrafinowana. Jakkolwiek w zakresie kryptoanalizy DES-a
osiągnięto duŜe postępy, nie zagroziły one znacząco stosowaniu tej
metody w praktyce. Z kolei, uproszczone wersje DES-a mogą być
złamane znacząco mniejszym kosztem. Interesujące jest, Ŝe próby
ulepszeń DES-a dotychczas nie doprowadziły do znaczących postępów
i DES nie doczekał się nowej wersji.

3.1.1. Szyfrowanie DES-em


Szyfrowanie i deszyfrowanie za pomocą DES-a składa się z 16 rund. W
trakcie kaŜdej rundy dokonywane są te same obliczenia, ale na wynikach
obliczeń z poprzedniej rundy i specjalnym podkluczu generowanym z 64-
bitowego klucza. Dodatkowo, przed pierwszą rundą i po ostatniej rundzie
bity są permutowane w ustalony sposób.

30
Kryptografia

3.1.1.1. Generowanie podkluczy

Dla uzyskania podkluczy uŜywanych podczas poszczególnych rund


usuwamy najpierw 8 bitów parzystości zawartych w kluczu. Następnie z
pozostałych 56 bitów tworzonych jest 16 podkluczy, kaŜdy składający się z
48 bitów. Tak utworzony Ŝ-ty klucz będziemy oznaczać przez K,; będzie on
uŜywany w trakcie i-tej rundy. KaŜdy podklucz składa się ze z góry
określonych bitów oryginalnego klucza - dla kaŜdego pod-klucza są to inne
bity i ustawione w innej kolejności. Sposób tworzenia podkluczy jest jawny
i został opublikowany wraz z opisem DES-a. Mając na uwadze koszty
hardware'u, wybrano taki sposób wybierania bitów podkluczy, jaki łatwo
daje się zrealizować hardware'owo. Interesujące jest, iŜ znane metody
kryptoanalizy DES-a w najbardziej istotnym momencie nie wykorzystują
zaleŜności między wartościami bitów podkluczy.

3.1.1.2. Permutacja początkowa i końcowa

Na początku bity tekstu jawnego są permutowane. Nie ma to Ŝadnego celu


kryptograficznego. ZauwaŜmy jednak, Ŝe permutacja ta moŜe być z
łatwością zaimplementowana hardware'owo: poszczególne bity do-
prowadzone są za pomocą „drutów" (dokładniej połączeń w układzie VLSI)
na odpowiednie miejsca. Czas obliczeń permutacji odpowiada tu jedynie
czasowi, w jakim informacje dotrą po „drutach" na miejsca przeznaczenia. Z
drugiej strony, implementacja software'owa wymaga długich obliczeń:
kaŜdy bit oddzielnie musi być przekopiowany na miejsce przeznaczenia.
Pod koniec szyfrowania uzyskane bity są permutowane permutacja od-
wrotną do początkowej. Permutacja ta jest nazywana permutacja końcową.

3.1.1.3. Runda DES-a

Dane wejściowe rundy i + 1 składają się z dwu ciągów 32-bitowych: Lt


(pierwszych 32 bitów będących wynikiem rundy i) oraz i?, (pozostałe

31
M. Kutyłowski, W.-B. Strothmann

32 bity uzyskane w rundzie i). Zachodzą następujące związki:

R,+1 = LiXORf(RhKi+1), (3.1)


gdzie / jest funkcją, która posiada zasadnicze znaczenie dla szyfrowa-
nia. Obliczenie wartości funkcji / jest przedstawione na rysunku 3.2 i
dokonuje się w następujący sposób:

numery bitów
1234 5678 9 1011 32 nawejściu
połączenia realizujące
permutację z
rozszerzeniem
numery bitów na
wyjściu
Rysunek 3.1. Permutacja z rozszerzeniem

1. Poprzez tzw. permutację z rozszerzeniem otrzymuje się ciąg złoŜony


z 48 bitów. Bity te, to 32 bity R, kopiowane na 48 pozycji, niektóre
z nich dwukrotnie, patrz rysunek 3.1.
2. Na otrzymanych 48 bitach jest dokonywana operacja XOR z od-
powiadającymi im bitami podklucza Ki+1.
3. Otrzymane 48 bitów dzielone jest na 8 grup po 6 bitów. KaŜda
grupa poddawana jest działaniu S-boksu. S-boks uŜywany przez
i-tą grupę nazywany jest Si.
4. Otrzymane 32 bity są na koniec permutowane w ustalony sposób.

3.1.2. Deszyfrowanie DES-em


NaleŜałoby oczekiwać, Ŝe aby deszyfrować kryptogram naleŜy całe ob-
liczenie składające się na szyfrowanie odtworzyć w odwrotnej kolejno-
ści, to jest od końca do początku. Ale dla S-boksów nie jest to moŜliwe!
32
Kryptografia

1 Rj 1
(permut. z rozszerz?)
1
I1 Kj.

( XOR " )

Rysunek 3.2. Funkcja / DES-a

Jednemu wynikowi otrzymanemu przez S-boks, odpowiada wiele po-


tencjalnych danych wejściowych. Pomaga tu jednak następujący wy-
bieg: Z równości (3.1) wynika, iŜ:

Vi = Li
L,-_i = Ri XOR f(Ri_u Ki) = RtXORf(Lu K{)
Jeśli więc znamy L„ R; oraz podklucz K,, to na podstawie powyŜszych
równości moŜemy obliczyć L,_! i £,_}. Tak więc nie musimy wcale ob-
liczać funkcji odwrotnej do funkcji obliczanych przez S-boksy.
Łatwo widać, Ŝe podczas deszyfrowania dokonywane są te same ope-
racje, jak podczas szyfrowania (tylko podklucze występują w odwrot-
nej kolejności). Z tego względu ten sam hardware moŜe być uŜyty do
szyfrowania i deszyfrowania.
ZauwaŜyliśmy, Ŝe wzory (3.1) stwarzają dogodne moŜliwości deszyfro-
wania. Interesujące jest, Ŝe szyfrowanie według schematu danego tymi
wzorami zdaje się mieć solidne podstawy teoretyczne (por. [7]).
33
M. Kutyłoiuski, W.-B. Strothmann

3.2. Rozszerzenia algorytmu DES


PoniewaŜ długość kluczy DES-a wydaje się w obecnej chwili niewy-
starczająca, podjęto próby modyfikacji algorytmu tak, aby zwiększyć
ilość moŜliwych kluczy. Nawet jeśli metody te nie przynoszą znaczącej
poprawy bezpieczeństwa wobec znanych metod kryptoanalizy, moŜna
mieć nadzieję, iŜ chronimy się w ten sposób przed atakiem poprzez
ukryte drzwi, jakie, być moŜe, istnieją dla DES-a. Lekka nawet modyfika-
cja moŜe bowiem przynieść w efekcie niemoŜność zastosowania ukry-
tych drzwi być moŜe wbudowanych w algorytmie.

3.2.1. DESX
Prostą metodą utrudniającą atak poprzez systematyczne przeszukiwa-
nie jest zastosowanie metody zwanej Whitening. Dla zaszyfrowania
bloku P złoŜonego z 64 bitów uŜywamy trzech kluczy Kext, Kini, KDES-
Kryptogram dla P jest równy
Kext XOR DESKDES(PXOR Kint)
ZauwaŜmy, iŜ w tym przypadku nawet gdy znamy tekst jawny i kryp-
togram, nie wiemy, jaki ciąg jest szyfrowany DES-em ani jaki jest wynik
tego szyfrowania. Wydaje się to skutecznie utrudniać poprzez systema-
tyczne przeszukiwanie, bo rozwaŜać musimy aŜ 3 klucze jednocześnie!
Stosując jednak ideę kryptoanalizy róŜnicowej (patrz rozdział 12.2.1),
moŜna łatwo ograniczyć ilość prób do około 2120.

3.2.2. Trzykrotny DES


Metodą niekiedy stosowaną w praktyce jest trzykrotny DES. Stosu-
jemy w nim dwa klucze Si, S2, kaŜdy będący zwykłym kluczem DES-a.
Szyfrowanie tekstu jawnego ma następujący przebieg:
1. tekst jawny szyfrowany jest kluczem Si,
2. wynik kroku 1 jest deszyfrowany kluczem S2,
3. wynik kroku 2 jest powtórnie szyfrowany kluczem Si.
34
Kryptografia

Aby z kryptogramu otrzymać z powrotem tekst jawny, wystarczy oczy-


wiście wykonać następujące kroki:

1. kryptogram deszyfrowany jest kluczem S],

2. wynik kroku 1 jest szyfrowany kluczem S?.,

3. wynik kroku 2 jest powtórnie deszyfrowany kluczem Si.

MoŜna się zastanawiać, czemu powyŜsza metoda aŜ trzykrotnie stosuje


szyfrowanie (deszyfrowanie) za pomocą DES-a. RozwaŜmy w tym celu
„dwukrotny DES", dla którego kryptogram obliczany jest wzorem

DESK2(DESKl(P)).

Dla znanej pary tekst jawny P i kryptogram C, atak moŜe przebiegać


następująco (jest to tzw. atak meet in the middle):

1. Dla wszystkich moŜliwych kluczy K obliczamy DESK(P), wyniki


zapisujemy w tabeli.

2. Dla wszystkich moŜliwych kluczy K' obliczamy DESj^C), wyniki


zapisujemy w tabeli.

3. Porównujemy zawartości obu tabel. Ten sam wynik w obu tabelach


wskazuje na parę kluczy K, K', dla których

C = DESK,(DESK(P)).

Czy para taka jest właściwa, moŜna sprawdzić testując ją na innej


parze tekst jawny-kryptogram.

ZauwaŜmy, iŜ powyŜsza metoda wykonuje jedynie 2 • 256 szyfrowań i


deszyfrowań w krokach 1 i 2. Nie jest to znacząco więcej niŜ 256 szyfrowań
w przypadku systematycznego przeszukiwania w odniesieniu do zwykłego
DES-a. Oczywiście, realizacja kroku 3 wymaga operacji przeszukiwania
olbrzymich tabel, co moŜe być praktycznie niewykonalne. Niemniej jednak
lepiej jest stosować trzykrotny DES, dla którego podobny atak wymaga
znacząco więcej operacji.

35
M. Kutyłozuski, W.-B. Strothmann

3.2.3. S-boksy zaleŜne od klucza


Ciekawą metodą utrudnienia kryptoanalizy jest uŜycie w trakcie szy-
frowania DES-em S-boksów zmodyfikowanych w zaleŜności od dodat-
kowego klucza. PoniewaŜ losowe S-boksy mają statystycznie gorsze
własności niŜ S-boksy uŜywane przez DES, modyfikacje są dokony-
wane w ostroŜny sposób. Operacje, jakich dokonuje się, to

^- przestawienie dwóch pierwszych wierszy z ostatnimi dwoma,


^- przestawienie ośmiu pierwszych kolumn z ostatnimi ośmioma
kolumnami,
^ dla kaŜdego elementu w S-boksie wykonanie operacji XOR z za-
danymi 4 bitami klucza (liczby w S-boksie traktujemy przy tym
jako ciągi 4-bitowe).

3.3. Szyfrowanie dowolnych tekstów


DES szyfruje tylko bardzo krótkie teksty (8 liter ASCII!). Aby DES uczy-
nić uŜytecznym, trzeba znaleźć sposób na szyfrowanie tekstów dowol-
nej długości. PoniŜej przedstawiamy trzy takie ogólne metody rozsze-
rzające szyfrowanie tekstów ustalonej długości, powiedzmy k, na do-
wolne teksty.

3.3.1. Elektroniczna ksiąŜka kodowa


Elektroniczna ksiąŜka kodowa (inaczej ECB, czyli Electronic Codebook)
funkcjonuje jak następuje (patrz rysunek 3.3): tekst jawny dzielony jest
na bloki długości k. KaŜdy z tych bloków jest oddzielnie szyfrowany za
pomocą tego samego klucza.
Tryb ECB ma tę zaletę, Ŝe uszkodzenie lub utrata pojedynczych bloków
nie ma wpływu na moŜliwość deszyfrowania pozostałych części kryp-
togramu. Z drugiej strony, moŜliwy jest atak nie wymagający złamania
szyfru. Prześledzimy to na następującym przykładzie:

36
Kryptografia

tekst jawny blok 1

kryptogram

Rysunek 3.3. Schemat trybu ECB

Przykład ataku na ECB: ZałóŜmy, Ŝe komunikacja pomiędzy dwoma


bankami odbywa się w trybie ECB. W ten sposób szyfrowane są przelewy
między kontami obu banków. ZałóŜmy, Ŝe specyfikacja kont, na jakie
naleŜy dokonać przelewów, ma następującą postać:
przelew = kon- | to | odbiór- | ca | kwo- | ta
kryptogram = blok 1 | blok 2 | blok 3 | blok 4 | blok 5 | blok 6
Przestępca Mallet, który jest w stanie modyfikować treść kryptogra-mów
napływających do banku, moŜe przeprowadzić następujący atak:
1. Mallet dokonuje 17 przelewów na swe konto, zawsze tę samą kwotę
pieniędzy. Następnie identyfikuje w przesyłanych krypto-gramach taki
kryptogram konta, na który dokonano dokładnie 17 przelewów i w
dodatku na tę samą kwotę. Mallet moŜe w tym momencie załoŜyć, Ŝe
chodzi tu o jego konto. W ten sposób poznaje kryptogram numeru
swego konta, mimo iŜ nie zna klucza uŜytego do szyfrowania.
2. Mallet zamieniakod numeru konta w pewnej liczbie przepływających
kryptogramów, wstawiając na to miejsce kryptogram numeru swego
konta. Dzięki temu bank dopisuje do konta Malleta kwoty
przeznaczone pierwotnie dla kogo innego.
3. Mallet wybiera pieniądze ze swego konta i znika.
Aby uniknąć sytuacji opisanej powyŜej, trzeba uŜyć bezpieczniejszego trybu
szyfrowania. Dwa takie tryby opisujemy poniŜej.

37
M. Kutyłowski, W.-B. Strothmann

Jako ciekawostkę dodajmy, Ŝe mimo wskazanych powyŜej zagroŜeń in-


stytucje finansowe często lekkomyślnie uŜywają trybu ECB do transmisji
waŜnych danych.

3.3.2. Cipher Błock Chaining


Cipher Błock Chaining (CBC) jest metodą, dzięki której ten sam blok
tekstu jawnego jest szyfrowany w róŜnych miejscach w róŜny sposób.
Osiągane jest to w następujący sposób. RozwaŜmy algorytm szyfrujący bloki
długości k. Niech EK(X) oznacza kryptogram uzyskany z tekstu jawnego X
za pomocą klucza K. Jeśli tekst jawny składa się z bloków P\ > Ąi Ąi • ■ ■
długości k, to kryptogram uzyskany za pomocą klucza K składa się z bloków
Q, C2, C3,... (równieŜ długości k) zdefiniowanych następująco:

Q = E^Pj xORJ), Q =
EK(P,-XORQ_.1).

Ciąg I występujący w powyŜszym wzorze jest generowany losowo i


przesyłany w sposób niezaszyfrowany. ZauwaŜmy, Ŝe tym razem kryp-
togramy poszczególnych bloków są ze sobą powiązane: dla otrzymania Q
wykorzystujemy Q_i, a nie tylko P,. PoniewaŜ Q zaleŜy od C,-_i, a Q+1 od Q,
więc pośrednio Q+i zaleŜy od C,_i. ZaleŜności tego typu przenoszą się dalej i
ostatecznie kaŜdy blok C; jest zaleŜny od wszystkich bloków Ci,... , Cy_i, a
co za tym idzie równieŜ od kaŜdego z ciągów I, P^Pi,..., Py-i.
Deszyfrowanie tak uzyskanych kryptogramów jest stosunkowo proste
(poniŜej D oznacza funkcję deszyfrującą dla bloków długości k):

Px = DK(Ci)XORJ,
Pi = DK(d) XORQ_i. (3.2)

Odnotujmy kilka własności szyfrowania w trybie CBC:


2^ Zaleta: takie same bloki są reprezentowane z reguły przez bloki róŜnej
postaci w kryptogramie. Co więcej, ten sam tekst jawny jest
szyfrowany w inny sposób, o ile wybierzemy inny ciąg początkowy L

38
Kryptografia

>~ Wada: nie moŜna Ŝadnego bloku C, usunąć z kryptogramu. Stwarza to


kłopoty, o ile pragnęlibyśmy za pomocą CBC szyfrować zawartość
baz danych. Podobne problemy napotykamy przy próbie
wprowadzenia dodatkowego bloku w środku tekstu jawnego: od tego
miejsca cały kryptogram musi być utworzony na nowo.

>■ Wada: podział na bloki musi być odporny na zakłócenia (dodatkowy


bit lub utrata pojedynczego bitu prowadzą do desynchro-nizacji
szyfrowania i deszyfrowania).

>■ Zaleta: przekłamania wewnątrz jednego bloku (bez zmiany liczby


bitów) prowadzą do przekłamań po deszyfrowaniu, ale jedynie w
bloku, w którym nastąpiło przekłamanie i bloku następującym po nim.
Własność ta wynika bezpośrednio z wzoru (3.2).

3.3.3. Cipher Feedback


CFB, czyli cipher feedback, jest drugim bezpiecznym trybem szyfrowania
długich tekstów. W odróŜnieniu od CBC szyfrowane są nie całe bloki, ale
fragmenty złoŜone, na przykład, z 8 bitów, czyli w praktyce 1 litera. Tryb
ten moŜe być uŜyty, na przykład, dla zabezpieczenia komunikacji pomiędzy
klawiaturą i serwerem. Oczywiste jest, Ŝe w tej sytuacji niezbędne jest
natychmiastowe przesyłanie pojedynczych znaków bez czekania na
zgromadzenie bloku 8 znaków, jak to miało miejsce w przypadku
korzystania z trybu CBC. MoŜliwe jest równieŜ przesyłanie tą metodą na
przykład pojedynczych bitów.
Schemat działania CFB przedstawiony jest na rysunku 3.4, przy czym uŜyto
DES jako metodę szyfrowania pojedynczych bloków. Jednym z
zasadniczych składników CFB jest rejestr przesuwający. Na początku
zawiera on losowo wygenerowany ciąg, który jest przesyłany w nieza-
szyfrowanej postaci. W trakcie kaŜdego taktu pracy CFB przy uŜyciu klucza
K wykonywane są następujące operacje:

1. Zawartość rejestru przesuwającego jest szyfrowana za pomocą klucza


K.

2. Z wytworzonego kryptogramu pobieranych jest pierwszych 8 bitów,


bity te słuŜą do operacji XOR z 8 bitami kodującymi na-

39
M. Kutyłowski, W.-B. Strothmann

stępną literę P podawaną na wejściu. W wyniku otrzymujemy ciąg


ośmiu bitów Z.
3. Ciąg Z tworzy 8 kolejnych bitów kryptogramu. Ponadto w rejestrze
przesuwającym wykonujemy przesunięcie o opozycji. Przesunięcie to
jest niecykliczne - 8 bitów z lewej strony ulega usunięciu. Z kolei na
ośmiu zwolnionych pozycjach zapisywany jest ciąg Z.

rejestr przesuwający

klucz K

kryptogram

8 bi ów
następna litera f
P XOR>

wyjście

Rysunek 3.4. Schemat trybu CFB

Deszyfrowanie odbywa się za pomocą tego samego układu, jedynie rQle


wejścia i wyjścia są odwrócone (patrz rysunek 3.5).

3.4. IDEA
Wiele prób podejmowanych było nad zaprojektowaniem algorytmu, który
zastąpiłby DES. Jedną z przyczyn było przekonanie, Ŝe wielkość kluczy
DES-a jest za mała. Inna waŜna przyczyna to regulacje prawne w USA
uznające DES za produkt o znaczeniu militarnym i eksportowanie go poza
granice USA bez stosownych licencji za czyn przestępczy. PoniewaŜ
utrudnia to stosowanie kryptografii w kontaktach z USA,
40
Kryptografia

rejestr przesuwający

klucz K

kryptogram

następna litera t8
bitów
tekstu jawnego
ł
-XOR-

wejście Rysunek

3.5. Schemat deszyfrowania w trybie CFB

istnieje potrzeba znalezienia algorytmu, którego stosowanie nie pro-


wadziłoby do konfliktów z amerykańskimi organami bezpieczeństwa. Cele
te przyświecały powstaniu algorytmu zwanego International Data
Encryption Standard, w skrócie IDEA.

Własności IDEA:

>■ IDEA jest algorytmem, z którego moŜna korzystać bezpłatnie do


celów niekomercyjnych. Algorytm jest opatentowany w Europie.
Wykorzystanie komercyjne wymaga opłat.
>• IDEA jest algorytmem nowym, wprowadzonym w latach dzie-
więćdziesiątych. Algorytm spotkał się ze sporym zainteresowaniem, w
tym równieŜ jeśli chodzi o próby jego kryptoanalizy. Wobec
stosunkowo krótkiego okresu od momentu jego opublikowania, naleŜy
z ostroŜnością podchodzić do jego bezpieczeństwa.
>■ IDEA wchodzi jako jeden z komponentów w skład PGP, popularnego
pakietu kryptograficznego (patrz rozdział 13.4.1).
Klucze uŜywane przez IDEA są złoŜone z 128 bitów. W praktyi ce
oznacza to, Ŝe znalezienie pasującego klucza do pary kryptogra: im

41
M. Kutytozuski, W.-B. Strothmann

- tekst jawny poprzez wypróbowywanie wszystkich kluczy po kolei


jest niewykonalne. Mimo dłuŜszych kluczy, programy szyfrujące i
deszyfrujące, według algorytmu IDEA, nie są wolniejsze niŜ
programy realizujące DES.

3.4.0.1. Szyfrowanie poprzez algorytm IDEA

>- Szyfrowanie składa się z 8 rund. Dane wejściowe dla rundy i składają
się z 4 bloków po 16 bitów oznaczonych Xi,... , X4. Rezultat składa
się z bloków 16-bitowych oznaczonych Vi,... , YĄ. Pojedynczą rundę
schematycznie przedstawia rysunek 3.6. Po ostatniej rundzie
dokonywane jest jeszcze przekształcenie końcowe (patrz rysunek 3.9).
Jego znaczenie stanie się jasne, gdy będziemy omawiać
deszyfrowanie.
>■ KaŜda runda wykonuje operacje na 16-bitowych blokach. Trzy typy
operacji występują w algorytmie:
- XOR dokonywany na odpowiadających sobie bitach dwóch
ciągów,
- dodawanie modulo 216 oznaczane dalej symbolem +,
- mnoŜenie modulo (216 + 1) oznaczane dalej symbolem ■ (ciąg
zer jest interpretowany jako 216).
> Klucz zawiera 128 bitów. Z niego generowanych jest wiele pod-kluczy.
W trakcie rundy i uŜywane są podklucze Zj ,... Z^ .
>- W odróŜnieniu do kluczy, tekst jawny zawiera 64 bitów.

42
Kryptografia

X\: 16 bitów X2'. 16 bitów X3: 16 bitów XĄ: 16 bitów

Yj.-16 bitów Y2: 16 bitów Y3: 16 bitów Y4:16 bitów

O mnoŜenie ©
dodawanie ®
XOR
Zj(Ŝ), Z2(Ŝ), ••• - podkłucze rundy i

Rysunek 3.6. Runda i algorytmu IDEA

43
M. Kutyłoiuski, W.-B. Strothmann

3.4.0.2. Generowanie podkluczy dla algorytmu IDEA

Szyfrowanie za pomocą algorytmu IDEA wymaga 6-8 + 4 podkluczy (8 jest


liczbą rund, kaŜda z rund wykorzystuje 6 podkluczy, dodatkowo
przekształcenie końcowe uŜywa 4 kluczy). Podklucze są generowane w
następujący sposób:

1. Klucz jest dzielony na bloki 16-bitowe. Daje to pierwszych 8 pod-


kluczy (6 podkluczy dla pierwszej rundy, 2 dla drugiej rundy).
2. Na kluczu wykonuje się przesunięcie cykliczne o 25 pozycji. Wynik
jest na nowo dzielony na bloki długości 16. Daje to następnych 8
podkluczy (4 brakujące podklucze dla drugiej rundy, 4 dla trzeciej
rundy).
3. Operacje z punktu 2 powtarzamy, aŜ wygenerujemy wszystkie
potrzebne podklucze.

3.4.0.3. Deszyfrowanie przez IDEA

Tak jak w przypadku DES-a potrzebna jest jakaś sprytna metoda, albowiem
byłoby trudno bezpośrednio wyliczyć dane wejściowe dla rundy na
podstawie danych wyjściowych dla rundy (porównaj rysunek 3.6).

Idea deszyfrowania dla jednej rundy:


Wprowadźmy następujące oznaczenia (patrz rysunek 3.7):

A = X1-Z1(i), B = X2 + Z2(i), C = X3 + Z3(i), D = X4*Z4(i).

Niech

E = B XOR Y3, F = C XOR Y2

(porównaj rysunek 3.7). Łatwo zauwaŜyć korzystając z rysunku 3.7, Ŝe

Y3 XOR Y4 = (B XOR E) XOR (E XOR D) = B XOR D.

Zatem moŜemy obliczyć wartość B XOR D. Podobnie moŜna obliczyć A


XOR C. ZauwaŜmy, Ŝe B XOR D i A XOR C są wynikami otrzymywanymi
przez dwa węzły obliczające XOR w środkowej części układu

44
Kryptografia

Rysunek 3.7. Metoda deszyfrowania dla algorytmu IDEA

45
M. Kutyłowski, W.-B. Strothmann

przedstawionego na rysunku 3.7. Tak więc znając klucze Z5 oraz Zf,


moŜna obliczyć E i F. Za ich pomocą otrzymujemy:
A = YlXORF, B = Y3XORE, C = Y2 XOR F, D = Y4 XOR £.

Znając A, B, C, D i podklucze Zj ,... , Źf, moŜna na koniec wyliczyć


Xi,... ,X4.
W opisany powyŜej sposób znając podklucze wyprowadziliśmy dane
wejściowe rundy z jej wyniku. W celu przeprowadzenia deszyfrowa-
nia, czynimy to dla wszystkich rund, poczynając od ostatniej.

Rysunek 3.8. Schemat deszyfrowania w algorytmie IDEA

Realizacja deszyfrowania: jeśli operacje wykonywane w trakcie de-


szyfrowania przedstawimy schematycznie (patrz rysunek 3.8), to za-
46
Kryptografia

uwaŜamy uderzające podobieństwo do operacji wykonywanych pod-


czas szyfrowania. Jedyna róŜnica polega na tym, Ŝe operacje arytme-
tyczne przy uŜyciu 4 podkluczy są wykonywane nie na początku, ale na
końcu rundy deszyfrowania. Dzięki temu ten sam układ elektroniczny
moŜe być uŜyty w celu szyfrowania i deszyfrowania. Jedynie logiczny
podział na rundy jest nieco inny: najpierw przeprowadzamy operację
początkową, odpowiadającą operacji końcowej szyfrowania, a następ-
nie wykonujemy 8 rund, kaŜda z nich zaczynająca się od operacji XOR.
Podklucze uŜywane podczas deszyfrowania odpowiadają podkluczom
szyfrowania wylistowanym w innej kolejności. Ponadto, aby otrzymać
podklucze deszyfrowania, musimy część podkluczy odwrócić (te uŜy-
wane do mnoŜenia) lub zanegować (te uŜywane do dodawania).

16 bitów 16 bitów 16 bitów 16 bitów

Rysunek 3.9. Przekształcenie końcowe w algorytmie IDEA

3.5. RC5
RC5 to stosunkowo nowy algorytm. Został on zaproponowany w 1994
roku przez R. Rivesta. Zgłoszono na niego patent, ale ponoć są zamiary,
by opłaty licencyjne za uŜywanie RC5 były niskie. W pewnym sensie
RC5 jest spokrewniony zarówno z DES-em, jak i algorytmem IDEA.
Inaczej jednak niŜ dla poprzednich algorytmów, moŜliwe jest wybiera-
nie liczby wykonywanych rund (parametr r), wielkości szyfrowanych
bloków (parametr 2w), jak i długości klucza w bajtach (parametr b).
Standardowymi wielkościami są w = 32, r = 12, h = 16. Trzy opera-
cje stanowią podstawę zarówno szyfrowania, jak i deszyfrowania: do-
dawanie modulo 2W, xOR ciągów długości w, wreszcie przesunięcie
47
M. Kutytowski, W.-B. Strothmann

cykliczne w lewo lub w prawo o zadaną ilość pozycji (przez X <« Y


oznaczać będziemy przesunięcie cykliczne w lewo ciągu X o Y pozycji).
Podobnie jak dla algorytmu IDEA, bezpieczeństwo szyfrowania oparte jest
na niekompatybilności stosowanych operacji. Nowością jest korzystanie z
przesunięć cyklicznych. Jako argumenty operacji dodawania
wykorzystywane są ciągi S[0], S[l],... uzyskiwane z klucza. Ciągi te
generowane są najpierw poprzez liniowe kongruencje (z „magicznymi"
stałymi e oraz (f> = (\/5 + l)/2), a potem modyfikowane w trzech prze-
biegach za pomocą przesunięć cyklicznych i dodawania modulo 2W.
Runda i algorytmu RC5: Szyfrowany ciąg jest dzielony na dwie połówki A
i B po w bitów, a następnie wykonuje się operacje:

A := {(A XOR B) <« B) + S[2i] mod 2W, B := ((B


XOR A) <« A) + S[2i + 1] mod 2W

Ciąg złoŜony z A i B jest przekazywany jako dane wejściowe do następnej


rundy lub jako kryptogram, gdy runda i była ostatnią rundą. ZauwaŜmy, iŜ z
powyŜszych wzorów łatwo daje się wyprowadzić wzory na deszyfrowanie.

48
Rozdział 7
Ciągi
pseudolosowe
M. Kutyłowski, W.-B. Strothmann

100
7.1. Konstrukcja ciągów pseudolosowych
Poprzez losowy ciąg moŜemy, na przykład, uwaŜać ciąg bitów gene-
rowanych poprzez rzucanie monetą: wyrzucenie reszki daje 1, orła zaś zero.
Pojedynczy rzut monetą jest niezaleŜny od wyników pozostałych rzutów.
Zakładamy teŜ, Ŝe moneta jest dobrze wywaŜona: otrzymanie orła w jednym
rzucie ma prawdopodobieństwo 0.5.
Losowe ciągi są niezbędnym elementem wielu algorytmów w kryptografii.
Oto niektóre przykłady:

>• generowanie kluczy RSA, szyfrowanie algorytmem EłGamala,

>- generowanie podpisów cyfrowych (patrz rozdział 8),

>- liczne protokoły kryptograficzne (patrz, na przykład, rozdziały 9 i 11),

>■ one-time pad i pokrewne mu szyfrowanie strumieniowe (patrz poniŜej


w tym rozdziale).

Szybkie generowanie losowych ciągów jest technicznie trudne. MoŜna to, na


przykład, zrealizować poprzez mierzenie odstępów czasu pomiędzy
uderzeniami palców w klawiaturę. Ta metoda nie pozwala jednak
wygenerować wielu bitów i jest nieco uciąŜliwa dla uŜytkownika. Do-
tychczas nie ma dostępnych na rynku tanich i efektywnych urządzeń
generujących losowe ciągi. Decydującym powodem jest to, Ŝe tanio i szybko
moŜna uzyskać tzw. ciągi pseudolosowe za pomocą specjalnych algorytmów.
Ciągi pseudolosowe mają wszystkie własności ciągów losowych, jakie
efektywnie moŜna przetestować, ale jednocześnie mogą

101
M. Kutyłowski, W.-B. Strothmann

być wygenerowane w deterministyczny sposób. Jedynym losowym ele-


mentem takiego ciągu jest zarodek. Ciąg pseudolosowy jest tworzony tak, Ŝe
jego z-ty element s, jest wyznaczony przez pewien deterministyczny
algorytm z zarodka x, indeksu i oraz wartości Si,... , s,-_i. Zarodek jest
zwykle stosunkowo krótkim ciągiem, więc moŜna go wygenerować takimi
metodami, jak poprzez mierzenie odstępów czasu pomiędzy uderzeniami
palców w klawiaturę. Z drugiej strony, zarodek musi być na tyle długi, by
wykluczyć moŜliwość odtworzenia zarodka poprzez przeglądanie wszystkich
zarodków i ciągów przez nie generowanych.

7.1.1. Własności ciągów pseudolosowych


Ciągi pseudolosowe moŜna napotkać, na przykład, w dziedzinie algorytmów
zrandomizowanych, symulacjach procesów stochastycznych itp. Metody
generowania ciągów pseudolosowych znane z tych dziedzin zwykle nie
mogą być stosowane do celów kryptograficznych. W kryptografii Ŝądamy od
nich dodatkowych własności: nie powinny one być rozróŜnialne od
prawdziwie losowych ciągów przy uŜyciu Ŝadnych praktycznie dostępnych
metod. PoniŜej staramy się sprecyzować, co to znaczy.

NierozróŜnialność: jeśli ciągi bitów długości / generujemy w sposób


naprawdę losowy, to kaŜdy ciąg jest generowany z tym samym praw-
dopodobieństwem 1/2'. Jeśli z kolei ciągi długości / generujemy za pomocą
zarodków długości k (k < /), to moŜemy otrzymać co najwyŜej 2k róŜnych
ciągów długości /. Wynika stąd, Ŝe niektóre ciągi otrzymujemy z
prawdopodobieństwem 0, a niektóre z prawdopodobieństwem 1/2' (przy
załoŜeniu, Ŝe kaŜdy zarodek jest jednakowo prawdopodobny i Ŝe róŜne
zarodki dają róŜne ciągi pseudolosowe). Tym samym rozkłady
prawdopodobieństwa odpowiadające ciągom losowym i ciągom pseu-
dolosowym długości Z są krańcowo róŜne. Pytanie jednak, czy na podstawie
kilku wygenerowanych ciągów / bitów jesteśmy w stanie stwierdzić, czy
mamy do czynienia z generatorem losowym czy pseudoloso-wym. W
przypadku ciągów przedstawionych przez generator pseudolosowy nie
moŜemy zdobyć stuprocentowej pewności, gdyŜ kaŜdy ciąg moŜe być
wygenerowany przez generator losowy. Dlatego teŜ rozróŜ-

102
Kryptografia

nianie generatorów jest procedurą, w której moŜna mówić jedynie o


prawdopodobieństwie prawidłowej odpowiedzi.
Formalnie, niech g\ i g2 będą dwoma generatorami ciągów długości /. Dla
ciągu x długości 1 ii e {0,1}, niech p,(x) będzie prawdopodobieństwem
wygenerowania x przez gt. Niech A będzie algorytmem (być moŜe
zrandomizowanym). Wtedy definiujemy

EA(pi)= I Pi(x)-Fr(A(x) = l)
x£{0,l}'

Mówimy, Ŝe g\ i g2 są e-rozróŜnialne za pomocą algorytmu A, jeśli \EA(P\)


— EA(P2)\ > e- Inaczej mówiąc, dla danych podawanych przez jeden z
generatorów algorytm A daje odpowiedź 1 częściej o frakcję e.
Własność, jaką chcielibyśmy osiągnąć w przypadku generatora pseu-
dolosowych ciągów g\, to jego nierozróŜnialność od generatora losowego g2-
dla kaŜdego wystarczająco duŜego e i kaŜdego zrandomizo-wanego
algorytmu A pracującego w czasie wielomianowym, g\ i g2 nie są e-
rozróŜnialne. „Wystarczająco duŜe" moŜe oznaczać na przykład e > 1/2100.
ZauwaŜmy, Ŝe wtedy potrzebujemy co najmniej 2100 testów, by oczekiwana
ilość jedynek generowanych przez A dla g\ i g2 róŜniła się o 1. W
rozwaŜaniach teoretycznych za „wystarczająco duŜe" przyjmuje się
wyraŜenia typu e > l/p(l), gdzie p jest wielomianem.

Nieprzewidywalność: jest to własność mówiąca, Ŝe bez znajomości zarodka


x nie da się obliczyć w praktyce s„ Ŝ-tego bitu ciągu pseu-dolosowego, z
bitów S\,... ,s,_i. Dokładniej rzecz biorąc, chodzi o e-nieprzewidywalność:
Ŝaden (zrandomizowany) algorytm pracujący w wielomianowym czasie nie
jest w stanie określić s, z prawdopodobieństwem co najmniej 0.5 + e.
W powyŜszej definicji braliśmy pod uwagę prawdopodobieństwo 0.5 + e,
gdyŜ prawdopodobieństwo 0.5 moŜna uzyskać poprzez losowanie
odpowiedzi przez rzut monetą.
Pojęcia nierozróŜnialności i nieprzewidywalności są ze sobą pozwią-zane:

Twierdzenie 14. Jeśli generator g\ jest e-przewidywalny, to g\ i losowy ge-


nerator są e-rozróŜnialne.

103
M. Kutyłowski, W.-B. Strothmann

PowyŜsze twierdzenie jest intuicyjnie jasne: dla danego ciągu Si,... , s/


sprawdzamy, czy s/, jest równy bitow,i jaki przewidujemy dla generatora g\.
Jeśli tak, to świadczyłoby to o tym, Ŝe ciąg został raczej wygenerowany
przez g\ niŜ przez generator losowy.
Prawdziwe jest równieŜ twierdzenie w pewnym sensie odwrotne:

Twierdzenie 15. Niech generator g\ i losowy generator go ciągów długości l


będą e-rozróŜnialne. Wtedy istnieje i < l takie, Ŝe i-ty bit ciągów generowanych
przez g\ jest ejl-przewidywalny.

Dowód powyŜszego twierdzenia znaleźć moŜna w pozycji [15]. Oba ostatnie


twierdzenia świadczą o tym, Ŝe aby stwierdzić, czy generator pseudolosowy
jest nierozroŜnialny od generatora losowego, wystarczy sprawdzić, czy
poszczególne generowane bity są przewidywalne.
Łatwo zauwaŜyć, Ŝe pseudolosowe ciągi otrzymywane za pomocą kon-
gruencji są przewidywalne (a budowanie ciągów za pomocą kongruen-q'i
jest jedną ze standardowych metod budowania ciągów pseudoloso-wych dla
zastosowań poza kryptografią). Na przykład, jeśli
Si — a- s/_! + b mod m,
to a i b stanowiące zarodek moŜna wyliczyć rozwiązując układ równań
Sj = a • s,-_i + b mod m,
Sj+i — a ■ Si + b mod m
gdzie s,-_i,s,-,s,-+i są znanymi elementami. Znając zarodek moŜna obliczyć
wartości sj- dla k>i + 2.

7.1.2. Generatory ciągów pseudolosowych


Linear Feedback Shift Register (krótko: LFSR) przedstawiamy sche-
matycznie na rysunku 7.1. Składa się on z rejestru przesuwającego mogącego
zapamiętać ciągi bitów określonej długości oraz bramki XOR wykonującej
operację XOR na wybranych bitach znajdujących się w rejestrze
przesuwającym. LSFR pracuje w następujący sposób:
>~ Na początku losowe bity są zapisywane w rejestrze przesuwającym.

104
Kryptografia
s~^ ----- —^s pomiędzy niektórymi reje-
\ __XOR __ ) strami i bramką XOR nie

rejestr przesuwający
generowane bity
ma połączenia

Rysunek 7.1. Generowanie ciągów za pomocą


LSFR

>- Podczas jednego taktu pracy wyliczana jest wartość XOR i obliczony
bit jest przesyłany do rejestru przesuwającego na miejsce pierwsze z
lewej. Aby dla tego bitu zrobić miejsce, wszystkie pozostałe bity są
przesuwane o jedno miejsce na prawo. Bit, który znajdował się
dotychczas na pierwszej z prawej pozycji jest usuwany z rejestru
przesuwającego i staje się kolejnym bitem ciągu generowanego przez
LSFR.

Zarodek ciągu stanowi konfiguracja połączeń pomiędzy rejestrami a węzłem


realizującym XOR oraz początkowy ciąg bitów zapisany w rejestrze
przesuwającym.
LSFR generuje bity bardzo szybko, jeśli jest zaimplementowany poprzez
hardware. Niestety, kryptograficzne własności ciągów generowanych przez
LFSR są bardzo słabe.

Lemat 16. Niech układ LFSR zawiera k rejestróiu. Wtedy znajomość 2k kolej-
nych wartości ciągu generowanego przez LSFR pozwala na zrekonstruowanie
ciągu wartości generowanych od tego miejsca.

Szkic dowodu: Niech s, będzie z-tym generowanym bitem przez układ


LSFR. Niech aj — 1, gdy istnieje połączenie od z-tego z lewej bitu zawar-
tego w rejestrze przesuwającym do węzła XOR. W przeciwnym przypadku
aj = 0. Łatwo zauwaŜyć, Ŝe wtedy

st= XOR*=1(st-i ■ at) (7.1)

dla t > k. Znając wartości Sj,... ,s;+2Jt moŜna zapisać równość (7.1) dla t = j +
k,... ,j + 2k — l. Daje to k równań z niewiadomymi a\, ■ ■ ■ , a*.. O ile
równania te są niezaleŜne, to wyliczamy z nich wartości a\,... ,a^.

105
M. Kutyłowski, W.-B. Strothmann

Znajomość tych współczynników pozwala prześledzić pracę układu od


chwili j + k korzystając z równości (7.1).
MoŜe się czasem zdarzyć, Ŝe rozwaŜane równania są liniowo zaleŜne. Wtedy
moŜna pokazać na podstawie równości wskazującej na liniową zaleŜność, Ŝe
istnieje układ LSFR z mniejszą liczbą rejestrów generujących takie same
ciągi. Dla tego układu rozpoczynamy całe postępowanie od nowa.
Co ciekawe, znajomość k nie jest niezbędna do zrekonstruowania ciągu
generowanego przez LSFR: lemat 16 daje się uogólnić.
Prędkość, z jaką LSFR produkuje bity, czyni tę metodę jednak atrakcyjną.
Aby ulepszyć własności kryptograficzne generowanych ciągów, stosuje się
następujące metody:

>■ Funkcję XOR moŜna zastąpić bardziej skomplikowanymi funkcjami.

>■ Wiele układów LSFR moŜna uŜyć w jednym obwodzie. Wartości


generowane przez poszczególne układy LSFR kombinowane są w
mniej lub bardziej wyszukany sposób. Prostota układu jest poŜądana
ze względu na szybkość generowania bitów i cenę układu. Z drugiej
strony, dla wielu prostych układów pokazano, Ŝe generowane ciągi nie
mają dobrych kryptograficznych własności.

Przykład: Shrinking LSFR. Na układ ten składają się dwa zwykłe układy
LSFR. Niech «i,fl2,•• • i b\, bi, ■ ■ ■ będą ciągami generowanymi przez te
układy. Wtedy i-ty bit generowany przez cały układ jest równy aj., gdzie ]\
oznacza pozycję i-tej jedynki w ciągu b\, &2> • • • • Algorytm ten jest
bardzo szybki, generowane ciągi wydają się mieć dobre własności,
jakkolwiek nie ma teoretycznych wyników potwierdzających to.

Generowanie ciągów pseudolosowych przez szyfrowanie:


ciągi pseudolosowe moŜna uzyskać za pomocą algorytmów szyfrujących. Na
przykład, jeśli jesteśmy w stanie szybko szyfrować DES-em, to moŜemy
postąpić jak następuje: bierzemy dowolny tekst, dorzucamy na początek
stosunkowo krótki ciąg losowy i szyfrujemy cały tekst za pomocą losowego
klucza w trybie CBC. Uzyskany kryptogram ma dość

106
Kryptografia

dobre własności. Zarodkiem jest klucz i losowy ciąg dopisywany na po-


czątek tekstu.

Generator Blum-Micali: jest on oparty na przypuszczeniu, Ŝe dys-


kretne logarytmy są trudne do obliczenia (por. rozdział 4.3). Niech a i
p będą liczbami pierwszymi, przy czym dyskretny logarytm w Zp
powiniem być praktycznie nieobliczalny. Niech XQ < p będzie losowo
wybraną liczbą. Definiujemy x,+1 = ax> mod p dla i = 1,2,... . Wtedy
pseudolosowe bity s,- definiujemy w następujący sposób:
s. f 1 jeśli Xi >(p - l)/2, ' \0 w
przeciwnym przypadku.

Generator RSA: jest on oparty na trudności ostatniego bitu krypto-


gramów RSA. Niech [e, n] będzie kluczem RSA. Niech liczba xo < n bę-
dzie losowo wybrana. Definiujemy x!+1 = x\ mod n. Wtedy pseudolo-
sowy bit s,- zdefiniowany jest jako pierwszy z prawej bit liczby Xj.

Generator Blum-Blum-Shub (BBS): powstaje on poprzez uproszcze-


nie generatora RSA. Niech n = p ■ a, przy czym p, ą są liczbami pierw-
szymi i p = ą — 3 mod 4. Niech XQ będzie względnie pierwsze z n. Tym
razem definiujemy x,-+i = xj mod n. Tak jak w przypadku generatora
RSA, s, jest pierwszym z prawej bitem x,+1. Poprzez zastąpienie pod-
noszenia do potęgi e przez podnoszenie do kwadratu generator BBS
jest duŜo szybszy niŜ generator RSA. Warunek p = ą = 3 mod 4 jest
niezbędny dla pokazania własności kryptograficznych generatora BBS.

7.1.3. Pseudolosowość generatora BBS


Jakkolwiek generator BBS generuje bity pseudolosowe stosunkowo po-
woli w porównaniu z układami pochodnymi od LFSR, jego przewagą
jest to, Ŝe istnieją stosunkowo mocne teoretyczne podstawy pseudolo-
sowości generowanych przez niego ciągów.
W rozwaŜaniach nad pseudolosowością generatora BBS, potrzebne jest
pojęcie reszt kwadratowych. Przypomnijmy, Ŝe k < n jest resztą kwa-
dratową modulo n, jeśli istnieje m < n, takie Ŝe m2 = k mod n. Okazuje
107
M. Kutyłowski, W.-B. Strothmann

się, Ŝe jeśli n jest liczbą pierwszą, to istnieje prosty test na sprawdzenie, czy
m jest resztą kwadratową modulo n. Co więcej, pierwiastki kwadratowe
moŜna łatwo obliczyć (patrz dodatek A, str. 240). Jeśli jednak n jest liczbą
taką jak dla generatora BBS, ale jej czynniki pierwsze nie są znane, to
sytuacja jest krańcowo róŜna: Powszechne jest mniemanie, Ŝe odróŜnienie
reszt kwadratowych w tym przypadku jest praktycznie niewykonalne dla
odpowiedniej wielkości liczb n. Jest to sytuacja analogiczna, jak w
przypadku problemu rozkładu n na czynniki pierwsze. MoŜna pokazać
następującą zaleŜność:

Twierdzenie 17. ZałóŜmy, Ŝe generator BBS z parametrem n i generator cią-


gów losowych długości l są e-rozróŜnialne za pomocą algorytmu A. Wtedy
istnieje zrandomizowany algorytm B rozpoznający reszty kwadratowe modulo
n taki, Ŝe
(i) prawdopodobieństwo prawidłowej odpowiedzi dla kaŜdego k <n jest co naj-
mniej 0.5 + e/l, (ii) czas i pamięć wymagane przez algorytmy A i B są
porównywalne.

7.2. Zastosowania
W rozdziale tym omówimy kilka przykładowych zastosowań ciągów
pseudolosowych. Znaczenie takich ciągów jest jednak daleko szersze, niŜ
wynikałoby z tych przykładów. Szczególnie często korzystamy z
pseudolosowych ciągów w trakcie praktycznej realizacji protokołów, w
trakcie których wybieramy „losowe" elementy.

7.2.1. Szyfrowanie strumieniowe


Dotychczas rozwaŜane metody szyfrowania symetrycznego naleŜały do
kategorii algorytmów blokowych: zawsze szyfrowane były bloki ustalonej
długości. Rozszerzenie na teksty dowolnej długości dokonywane było za
pomocą dodatkowych technik. Tak zwane szyfrowanie strumieniowe
prezentuje inne podejście: nie bloki, ale pojedyncze bity są szyfrowane i
bezpośrednio po zaszyfrowaniu gotowe do wysłania.
Szyfrowanie strumieniowe moŜe być zrealizowane poprzez jednocze-

108
Kryptografia

sne wykorzystanie ciągów pseudolosowych i idei one-time pad. Szyfrowanie


za pomocą klucza x ma następujący przebieg:

1. klucz x traktujemy jako zarodek i generujemy pseudolosowy ciąg


bitów
Sl,S2,S3 . . .,

2. tekst jawny a.\aja-s ... zostaje zaszyfrowany jako ciąg wartości


Si XORUi, S2 XORa2, S3XORfl3, ---------------

Oczywiście, w powyŜszym algorytmie pseudolosowe bity są generowane w


momencie, kiedy są niezbędne do zaszyfrowania kolejnej porcji tekstu
jawnego.

7.2.2. RC4
RC4 jest przykładem szyfrowania strumieniowego szeroko stosowanego w
praktyce. Był on przedstawiony w 1987 roku i od tego czasu uŜywany w
wielu komercjalnych produktach. Poza nazwą i osobą, od której pochodzi
idea algorytmu (R. Rivest), nie ma on nic wspólnego z RC5. W odróŜnieniu
do DES-a, algorytm, na jakim oparty jest RC4, nie był podany do publicznej
wiadomości. Nie był on znany dopóty, dopóki na liście dyskusyjnej sci.crypt
nie pojawił się program w C dający dokładnie takie same rezultaty jak RC4.
Zakończyło to erę utajnienia budowy RC4. Program realizujący szyfrowanie
RC4 zamieszczony był anonimowo, z pewnością ze względu na obawy przed
odwetem właściciela patentu.
Przedstawiony algorytm jest zaskakująco prosty i dobrze nadaje się do
implementacji software'owej. Ciąg pseudolosowy uŜywany do szyfrowania i
deszyfrowania generowany jest jako ciąg bajtów. Opiszmy pokrótce jego
konstruowanie:

>■ W kaŜdej fazie algorytmu generowany jest jeden bajt ciągu pseu-
dolosowego, jednocześnie uaktualniane są parametry i,j < 256 oraz
permutacja n na zbiorze liczb {1,... , 256}. Parametry są nazywane
wewnętrznymi kluczami.

>- Pojedyncza faza algorytmu wykonuje następujące operacje:

109
M. Kutytowski, W.-B. Strothmann

i := i + 1 mod 256
j '•= j + 7r(z) mod 256
zamień wartości TT dla argumentów i oraz j
k := 7r(7r(0 + 7r(;'))
Liczba k jest kolejnym bajtem ciągu pseudolosowego generowanym w
'tej razie.
>- Wewnetrzne klucze i, j, TT są inicjalizowane za pomocą ciągu bajtów SQS\
... sm-\. Najpierw wewnętrzne klucze inicjalizowane są w jiastępujący
sposób:
i := 0,/ := 0 oraz ir(h) := h dla h < 256.
Następnie 256 razy wykonywane są następujące operacje:
;':=;' + ir(i) + s,- mod 256
zamień wartości TT dla argumentów i oraz j
i := / + 1 mod m

Operacje wykonywane na TT W pojedynczej fazie zmierzają do zmiany TT w


pseudolosowy sposób. ZauwaŜmy, iŜ w ciągu kolejnych 256 faz kaŜda
wartość ir(i) ulega zamianie. Sposób dokonywania modyfikacji (zamiano
wartości) znany jest jako skuteczna metoda szybkiej zmiany postaci 7f •
Ponadto, bajty k wybierane są jako wartości permutacji TT W miejscu
dynamicznie wskazywanym poprzez wartości 7r(z') oraz ir(j).

7.2.3. Szyfrowanie probabilistyczne


PoŜyteczną, własnością algorytmu szyfrującego moŜe być jego niedeter-
minizm: ten sam tekst jawny moŜe odpowiadać wielu róŜnym krypto-gramom
Przy zastosowaniu tego samego hasła. Jedną tego typu metodę poznaliśmy
mianowicie algorytm EIGamala. Teraz opiszemy algorytm oparty o
własności generatora BBS.

Algorytrfl szyfrujący Blum-Goldwasser: niech p i q będą dostatecznie


duŜy"mi liczbami pierwszymi, p — q = 3 mod 4. Niech n = p q. Liczby p i <7
stanowią tajny klucz słuŜący do deszyfrowania, szyfrowanie dokonywane
jest za pomocą publicznego klucza n.

110
Kryptografia

Szyfrowanie: w zasadzie dokonujemy szyfrowania strumieniowego za


pomocą generatora BBS.
1. Wybieramy losowo So jako zarodek generatora BBS.
2. Dla /-bitowego tekstu jawnego generujemy s\,... , S/+i, gdzie
s,-+i = s2 mod n dla i — 0,... ,1 Bity z\,... , Z; określamy jak
dla generatora BBS: z, = s,- mod 2.
3. Dla tekstu jawnego a\,... , fl; obliczamy C],... , c/, gdzie
c, = fl,XORz! dla i </.

4. Kryptogramem podanego tekstu jest C\,C2, ■ ■ ■ , ch s/+1.


Deszyfrowanie:
1. Na podstawie s;+1/ p oraz <y obliczamy Si. Nasze doświadczenia z
generatorem BBS zdawałyby się świadczyć, Ŝe jest to niewykonalne.
Teraz jednakŜe znamy czynniki pierwsze n. Sposób obliczania S\
przedstawiamy poniŜej.
2. Na podstawie Si obliczamy S2, ■ ■ ■ , s; a z nich Z\,... , z;.
3. Dla i < l obliczamy «,- := c, XOR z,.

Metoda obliczania Si', oczywiście, wystarczy umieć rozwiązywać na-


stępujące zagadnienie:

Problem 18. Dane: z będące resztą kwadratową modulo n, oraz liczby pierw-
sze p, q, takie Ŝen = p ■ q oraz p — q = 3 mod 4. Szukane: y takie, Ŝe y2 = z
mod n oraz y jest resztą kwadratową modulo n.
PokaŜemy teraz, jak rozwiązać Problem 18. PoniewaŜ p\n, kaŜda równość
zachodząca modulo n zachodzi teŜ modulo p. Stąd y jest pierwiastkiem
kwadratowym z x modulo p i resztą kwadratową modulo p. Na mocy lematu
32 z Dodatku A jesteśmy w stanie jednoznacznie wyznaczyć y mod p
obliczając x'p+1^4 mod p. Podobnie y = x^+1V4 mod q. Reszty z y modulo p i
q pozwalają na jednoznaczne zrekonstruowanie y na mocy chińskiego
twierdzenia o resztach.

111
M. Kutyłowski, W.-B. Sirothmann

112
Rozdział 8
I Podpisy
cyfrowe
M. Kutyłowski, W.-B. Strothmann

114
8.1. Realizacja podpisów cyfrowych
Podpis cyfrowy jest odpowiednikiem tradycyjnego podpisu, jaki skła-
damy na dokumentach. NajwaŜniejsze własności podpisów są nastę-
pujące:

>- jedynie osoba X moŜe utworzyć podpis osoby X;


podrobienie podpisu powinno być niewykonalne;
>■ powinno dać się jednoznacznie stwierdzić, czy podpis został zło-
Ŝony pod danym dokumentem;
kopiowanie podpisu z jednego dokumentu na drugi powinno być
niewykonalne.

Spełnienie powyŜszych warunków wydaje się łatwiejsze w odniesieniu


do podpisów składanych na papierze, niŜ w przypadku podpisów ge-
nerowanych jako specyficzne ciągi bitów. MoŜna się bowiem obawiać,
Ŝe bez ograniczeń moŜna kopiować podpis z jednego dokumentu na
drugi. Tak jednak nie jest: podpisy cyfrowe zdają się gwarantować duŜo
wyŜszy poziom bezpieczeństwa, niŜ podpisy tradycyjne.
Najprostszy sposób realizacji podpisów cyfrowych moŜna sobie wy-
obrazić w następujący sposób:

>■ Alice jest w posiadaniu prywatnego klucza szyfrującego k.£. Jed-


nocześnie pasujący do kg klucz deszyfrujący kp i algorytm asyme-
tryczny, do którego odnoszą się te klucze, są powszechnie znane.
>■ Podpisanie listu M odbywa się w następujący sposób: Alice gene-
ruje kryptogram z M za pomocą klucza Jc£. Kryptogram ten jest
115
M. Kutyłowski, W.-B. Strothmann

publikowany przez Alice jako podpis. Oryginalny dokument jest


prezentowany wraz z podpisem.

>- Osoba pragnąca przekonać się o podpisie Alice deszyfruje kryp-togram


za pomocą klucza kD. W ten sposób otrzymuje ona tekst, który miała
podpisać Alice.

PowyŜszy schemat ma jednak tę wadę, Ŝe podpis jest bardzo długi -co


najmniej tak długi, jak podpisywany dokument. Gwarantowane jest jednak,
Ŝe podpis nie moŜe być przeniesiony na inny dokument.
Poznany przykład pozwala wyodrębnić trzy odrębne czynności związane z
podpisami cyfrowymi:

Czynności wstępne: obejmują wyznaczenie niezbędnych parametrów, za


pomocą których generowane będą podpisy.

Generowanie podpisu: osoba podpisująca dokonuje obliczeń, w trakcie


których powstaje ciąg bitów będący podpisem konkretnego
dokumentu.

Weryfikacja podpisu: czynności dokonywane przez osobę, która pragnie


się przekonać o autentyczności podpisu i jego autorze, jak i
podpisywanym dokumencie. Weryfikacja ma postać testu, który
powinny przechodzić jedynie poprawnie utworzone podpisy.

Generowanie krótkich podpisów: wybiegiem, który pozwala na ge-


nerowanie krótkich podpisów, jest podpisywanie zamiast dokumentu M
wartości H(M), gdzie H jest jednokierunkową funkcją hashującą.
Przy okazji osiągamy dodatkowy efekt: podpis moŜna prezentować nie
zdradzając treści dokumentu.

Podpisy tworzone za pomocą RSA: jedną z popularniejszych metod


tworzenia podpisów cyfrowych jest połączenie wyŜej wspomnianych metod:

1. dla dokumentu M obliczana jest wartość H(M), gdzie H jest ustaloną


funkcją hashującą,

116
Kryptografia

2. Alice szyfruje H{M) za pomocą swego klucza prywatnego uŜywając


algorytmu RSA. Utworzony kryptogram to cyfrowy podpis Alice pod
M.

Sprawdzenie podpisu Alice wymaga deszyfrowania podpisu publicznym


kluczem Alice. Po deszyfrowaniu sprawdzamy, czy w ten sposób
otrzymaliśmy H(M).

8.1.1. Podpisy cyfrowe EIGamala


Algorytm EIGamala, który poznaliśmy w części dotyczącej asymetrycznych
algorytmów szyfrujących, moŜe równieŜ być zastosowany do generowania
podpisów:

Czynności wstępne: Alice wybiera liczbę pierwszą p oraz generator g w Zp.


Następnie Alice wybiera losowo liczbę x < p — 1, oblicza y =■ gx
mod p oraz ujawnia g, p, y jako klucz publiczny.

Podpisywanie: Alice wykonuje następujące czynności w trakcie pod-


pisywania wiadomości M:

1. Alice wybiera liczbę k względnie pierwszą z p — 1.


2. Alice oblicza a = g* mod p.
3. PoniewaŜ k i p — 1 są względnie pierwsze, istnieje ł takie, Ŝe k ■
t = 1 mod p — 1. Alice wyznacza t za pomocą algorytmu
Euklidesa. Następnie oblicza

b = t ■ (M — xa) mod p — l.

Tym samym zachodzi M = kb + xa mod p — 1.


4. Alice przedstawia (a, b) jako podpis dla M.

Weryfikacja podpisu: ZauwaŜmy, Ŝe ya ■ ab = g"x ■ gkh = gM mod p. Bob


sprawdza, czy y° ■ ab = gM mod p.

Podpisy cyfrowe generowane przy uŜyciu algorytmu EIGamala posiadają tę


niedogodność, Ŝe składają się z dwóch liczb tego rozmiaru co p.

117
M. Kutyłowski, W.-B. Strothmann

PoniewaŜ wygenerowane podpisy mają być uŜywane w dłuŜszej per-


spektywie, musimy być przekonani, Ŝe dyskretny logarytm modulo p nie
będzie praktycznie obliczalny jeszcze przez wiele lat. Dlatego konieczne jest
stosowanie stosunkowo duŜych liczb p, na przykład, z 1024 bitami w
rozwinięciu dwójkowym. Dawałoby to podpisy składające się z aŜ 2048
bitów. Znacząco krótsze są podpisy generowane przez modyfikację
algorytmu EIGamala, mianowicie standard DSA przedstawiany w
następnym podrozdziale.

8.1.2. DSA
DSA, czyli Digital Signature Algorithm, jest amerykańskim standardem
podpisów cyfrowych. UŜywany jest takŜe skrót DSS, od Digital Signature
Standard. Przyjęcie DSA jako standardu wywołało w USA kontrowersje;
wiele firm i uŜytkowników w tej roli chętniej widziałoby protokół oparty na
RSA. Tak jak w przypadku DES-a, pojawiały się głosy, iŜ DSA moŜe
zawierać ukryte drzwi znane amerykańskim słuŜbom bezpieczeństwa.
DSA jest algorytmem, który moŜe być uŜywany jedynie do tworzenia
podpisów cyfrowych. W jego strukturze moŜna wyraźnie dostrzec elementy
algorytmu EIGamala. Tak jak w przypadku ostatniego algorytmu,
bezpieczeństwo DSA opiera się na trudności obliczenia dyskretnych
logarytmów. lak więc bezpieczeństwo stosowanych podpisów stoi w ścisłej
zaleŜności z wielkością liczb, dla których obecnie potrafimy obliczać
dyskretne logarytmy.
DSA podpisuje nie dokument, ale jego wartość poprzez funkcję hashu-jącą.
Tym samym autor nie musi od razu zdradzić (przede wszystkim nie
wszystkim), co podpisał. DSA uŜywa jako podprocedurę funkcję hashującą
SHA, która równieŜ jest standardem w USA.

Czynności wstępne: wybierane są następujące liczby:


>■ p, liczba pierwsza z L bitami w rozwinięciu dwójkowym, gdzie 512 <
L<1024i64|L,
>■ q, dzielnik p-lz 160 bitami w rozwinięciu dwójkowym (o ile p takiego
dzielnik nie ma, to szukamy innego p),

118
Kryptografia

>- h takie, Ŝe g = h^ ^^ ^ 1 mod p oraz 0 < h < p - 1, >• x, gdzie


x < q; liczba ta wyznacza teŜ y = gx mod p.

Liczba x jest prywatnym kluczem słuŜącym do tworzenia podpisów. Liczba


y jest kluczem publicznym odpowiadającym x. Parametry p,q, g są podane
do publicznej wiadomości.

Tworzenie podpisu: właściciel klucza x podpisuje dokument M w na-


stępujący sposób:

1. wybiera losowo liczbę k < q,

2. oblicza r := (g* mod p) mod q i s : = ^M±±L mod ^


3. podaje parę (s, r) jako podpis M.

Weryfikacja podpisu: w celu zweryfikowania podpisu, wykonywane są


następujące obliczenia:

1. w := s_1 mod q,
2. ui :— SHA(M) ■ w mod q,
3. U2 := r • w mod g,
4. v := ((gUl ■ y"2) mod p) mod </,
5. jeśli v = r, wtedy podpis jest prawidłowy.

Uzasadnienie poprawności konstrukcji: na mocy twierdzenia Eulera, g"? =


/jP_1 = l mod p i tym samym gz — gzmodi mod p. Zatem prowadząc obliczenia
modulo p otrzymujemy:
a"i . u"2 = oSHA(M)-u) . gc-r-w _ „(SHA(M)+x-r)-w
_ (SHA(Afl+x-r)-fc/(SHA(M)+xT) _ ^ mod p_

Tak więc:
C?"1 ■ y"2 m°d p) mod q — (gk mod p) mod 17 = r.

119
M. Kutyłowski, W.-B. Strołhmann

Komentarze do konstrukcji: dzięki stosowaniu liczby q o długości 160


bitów para liczb tworzących podpis cyfrowy wymaga tylko 320 bitów. Jest
to znacząco mniej niŜ w przypadku podpisów EIGamala.
Bezpośredni atak w celu wyliczenia tajnej wartości x wymaga obliczenia
dyskretnego logarytmu modulo p, gdzie p jest stosunkowo długą liczbą.
Liczymy przy tym, Ŝe znajdowanie dyskretnych logarytmów modulo p przy
podstawie g jest porównywalnie trudne jak znajdywanie dyskretnych
logarytmów, gdy podstawa logarytmu jest generatorem wZp.
Dzięki równości gz = gzmodcl mod p wykładniki potęg g mogą być re-
dukowane modulo ą. Upraszcza to obliczenia i prowadzi do przedstawionego
testu poprawności podpisów.

8.2. Protokoły związane z podpisami


8.2.1. Ślepe podpisy
Pojęcie ślepego podpisu wytłumaczmy na następującym przykładzie. Alice
pragnie, by notariusz poświadczył, Ŝe Alice jest w posiadaniu pewnego listu.
Problem jest w tym, Ŝe Alice nie chce dokumentu pokazać notariuszowi
(cóŜ, być moŜe zawartość listu jest bardzo osobista). By sobie poradzić w tej
sytuacji Alice umieszcza list w kopercie wraz z kalką. Notariusz potwierdza
na kopercie, Ŝe list został mu przedstawiony. W odpowiednim momencie
Alice moŜe otworzyć kopertę i pokazać podpis utworzony przez kalkę na
liście.
Oczywiście, zastosowanie ślepych podpisów wykracza poza opisaną
sytuację. Jedną z nich poznamy w rozdziale dotyczącym protokołów
realizujących cyfrowe pieniądze.
Do generowania ślepych podpisów cyfrowach wyjątkowo dobrze nadaje się
algorytm RSA. PoniŜszy protokół odpowiada sytuacji, w której Alice pragnie
uzyskać ślepy podpis notariusza pod wiadomością m. Notariusz uŜywa klucz
publiczny [e, n] i klucz prywatny [d, n] dla szyfrowania algorytmem RSA
Protokół ma następujący przebieg:

1. Alice zakrywa wiadomość m: w tym celu wybiera losową liczbę

120
Kryptografia

k <n względnie pierwszą z n i oblicza i — m-\ć mod n.


2. Alice przesyła liczbę t notariuszowi.
3. Notariusz szyfruje t za pomocą swego prywatnego klucza:
s = td mod n.

4. Notariusz przesyła Alice liczbę s.


5. PoniewaŜ s = td — (m ■ k?)d = md ■ ¥d = md ■ k mod n, Alice moŜe łatwo
obliczyć md = s/k mod n. Ale md mod n jest podpisaną wiadomością m.
W powyŜszym protokole notariusz nie widzi m: Ŝeby odzyskać m z liczby t,
notariusz musiałby znaleźć k6.
Oczywiście, notariusz musi uŜywać specjalnej pary kluczy do ślepych
podpisów. Gdyby bowiem notariusz uŜywał tych samych kluczy do swych
podpisów i ślepych podpisów, to Alice mogłaby mu podsunąć dokument do
podpisu, w którym zrzeka się on całego mienia na rzecz Alice. Z tego
samego względu fundamentalną regułą jest niepodpisy-wanie dokumentów,
które wydają się być losowymi ciągami bitów. Jest bowiem moŜliwe, Ŝe ciąg
taki został utworzony jak w protokole ślepych podpisów.

8.2.2. Kanał podprogowy


KaŜdy podpis cyfrowy powinien zawierać losowe komponenty. Gwarantuje
to, Ŝe kaŜdy podpis jest inny i umoŜliwia wielokrotne podpisanie tego
samego dokumentu (choćby dla sprawdzenia i tym samym zwiększenia
bezpieczeństwa). Z drugiej strony, te losowe komponenty mogą być uŜyte do
przesyłania wiadomości w taki sposób, Ŝe Ŝaden niezorientowany obserwator
nie jest w stanie tego stwierdzić. Taki sposób przekazywania informacji
nazywamy kanałem podprogo-wym. MoŜliwość realizacji kanału
podprogowego jest związana z tym, Ŝe kryptogramy powinny być
nierozróŜnialne od ciągów losowych. Jedyna trudność tkwi w tym, jak
odzyskać te „losowe" ciągi z podpisów cyfrowych. Istnieją w tym celu
odpowiednie metody, na przykład dla algorytmów DSA i EIGamala.

121
M. Kutyłowski, W.-B. Strothmann

Kanał podprogowy jest ciekawym przykładem techniki, w której świat


kryptografii wymyka się regulacjom ustawowym dotyczącym stosowania
kryptografii. Wszelkie ograniczenia w tym względzie nie mogą zakazywać
stosowania podpisów cyfrowych ze względu na konsekwencje ekonomiczne.
Zarazem podpisy cyfrowe wystarczają do przesyłania informacji w
niewykrywalny sposób! Puszka Pandory została więc juŜ otwarta.

Kanał podprogowy przy uŜyciu podpisów EIGamala: załóŜmy, Ŝe Bob


pragnie przesłać Alice waŜne informacje, ukrywając je w podpisach
cyfrowych. Bob przesyła w tym celu niewinne listy podpisane zgodnie z
metodą EIGamala. Alice i Bob uzgodnili jednakowoŜ uprzednio tajny klucz,
który Alice uŜywa następnie do odzyskiwania tajnych wiadomości ukrytych
w podpisach cyfrowych.
Przebieg protokołu:

1. Jak dla podpisów cyfrowych Bob wybiera liczbę pierwszą p i losowe


liczby g,x < p. Bob oblicza y = gx mod p i publikuje y,g, p.
2. Bob zdradza Alice liczbę x.
3. Aby w podpisie pewnej wiadomości M' ukryć tekst M, Bob postępuje
w następujący sposób (konieczne jest, byO<M<p — 1 oraz M i p — 1
były względnie pierwsze; gdy tak nie jest Bob modyfikuje nieco tekst
M, na przykład poprzez dodawanie spacji między wyrazami itp.):

(a) Bob oblicza A = gM mod p,


(b) Bob znajduje B, takie Ŝe zachodzi

M' = x • A + M • B mod p - 1.

Mianowicie znajduje on T, takie Ŝe M ■ T — 1 mod p — l. Na-


stępnie oblicza

B = (M' -x-A)-T mod p-1.

Konieczne jest, aby B i p — 1 były względnie pierwsze - jeśli tak


nie jest, to Bob zmienia tekst M na nieco inny.

122
Kryptografia

(c) Bob przesyła Alice podpis (A, B) typu EIGamala,


(d) po sprawdzeniu, Ŝe podpis jest autentyczny według schematu
EIGamala, Alice oblicza M:

M = (M'-x- A)/B mod p - 1.

8.2.3. Podpisy niezaprzeczalne


Wymagania w stosunku do podpisu cyfrowego mogą zostać nieco zmo-
dyfikowane. śądamy mianowicie, aby:

>- weryfikacja podpisu była moŜliwa jedynie przy współudziale autora


podpisu,

>- w przypadku sfałszowanego podpisu domniemany autor miał


moŜliwość udowodnienia fałszerstwa.

Podpis cyfrowy spełniający te warunki nazywamy podpisem nieza-


przeczalnym. PoniŜej przedstawiamy algorytm realizujący niezaprzeczalny
podpis oparty na dyskretnych logarytmach.

Czynności wstępne: potrzebna jest liczba pierwsza p, taka Ŝe dyskretny


logarytm modulo p nie jest praktycznie obliczalny. Ponadto, p powinno mieć
postać 2q + 1, gdzie q jest liczbą pierwszą. Niech G będzie zbiorem liczb m
<p, takich Ŝe mq = 1 mod p. Do G naleŜą wszystkie liczby postaci g2' mod p,
gdzie g jest generatorem Zp oraz i < q. Łatwo sprawdzić, Ŝe {gll+l)q = g2qi+cł =
(gP~1)' ■ gq == g? ^ 1 mod p, zatem G zawiera dokładnie q elementów. Niech
a będzie generatorem G (na przykład g2 mod p jest takim generatorem, w
istocie kaŜdy element G poza 1 jest generatorem - patrz dodatek A, lemat
28).
W celu wygenerowania klucza wybieramy losowo x < q i obliczamy (3 = ax
mod p. Wartości p,a,/3 są podawane do wiadomości publicznej. Liczba x
stanowi tajny klucz.
Podpisywane mogą być liczby ze zbioru G.

Tworzenie podpisów: podpis pod m G G jest liczbą y — mx mod p.

123
M. Kutyłowski, W.-B. Strothmann

Weryfikacja podpisu: dla sprawdzenia przez Alice podpisu y utworzonego


przez Boba pod dokumentem m Alice i Bob wykonują następujące kroki:

1. Alice wybiera dwie losowe liczby naturalne 0 < e\, e2 < q,

2. Alice oblicza c = yeifiei mod p i wysyła c Bobowi,

3. Bob oblicza z = x~~l mod q oraz d = cz mod p i wysyła d Alice,

4. Alice sprawdza, czy d = meiaei mod p.

ZauwaŜmy, Ŝe jeśli Bob prawidłowo utworzył podpis, wtedy

d = cz = yevZ ■ perZ = (yzfl ■ ((3z)e* = (w")'1


• (axz)e2 = me' ■ ae* mod p.

MoŜliwości weryfikacji fałszywego podpisu:

Lemat 19. ZałóŜmy, Ŝe Bob pragnie przekonać Alice, Ŝe y jest podpisem dla
m, mimo, Ŝe mx ^ y mod p. Wtedy w trakcie protokołu weryfikacji oszustwo
Boba będzie wykryte z prawdopodobieństwem 1 — |.

Dowód. Po pierwsze zauwaŜmy, Ŝe jeśli Bob zna c, to istnieje q par (e\, e2),
takich Ŝe c — yCx • (3ei mod p. Istotnie, gdy e\ jest ustalone, to (3ei jest
jednoznacznie wyznaczone jako c/yei mod p. PoniewaŜ (5 jest generatorem
G, więc liczba e2 < q jest wyznaczona jednoznacznie. Zatem na podstawie
znajomości c Bob nie jest w stanie wywnioskować, którą z q moŜliwych
wartości dla (e\, ei) uŜyła Alice.
PokaŜemy teraz, Ŝe jeśli. Bob zdecyduje się na konkretną wartość d, to
równość d = mex ■ a6-- zachodzi dla dokładnie jednej z par (e\, eo)
spełniających c = yei ■ f3''2 mod p. Istotnie, załóŜmy, Ŝe c = au mod p, y = av
mod p, d = aw mod p, m = a1 mod p. Wtedy wspomniane warunki na c i d
moŜna przeformułować na

u — v ■ e\ + x ■ ei w
= t ■ ex + e2

124
Kryptografia

PoniewaŜ y ^ mx mod p, więc v ^ t ■ x mod a. Wynika stąd, Ŝe wiersze w


powyŜszym układzie równań z niewiadomymi e\, e^ są liniowo niezaleŜne.
Zatem układ ten ma dokładnie jedno rozwiązanie dla e\, e-i.
Z powyŜszych rozwaŜań wynika, iŜ Bob podając d wybiera pośrednio jedną
z q moŜliwych wartości dla (ei,^). O ile zgadł te wartości niezgodnie z
wyborem Alice, to d nie przejdzie testu weryfikacji podpisu.

ZauwaŜmy na koniec, Ŝe z powyŜszego dowodu wynika, iŜ nawet nie-


ograniczone moce obliczeniowe nie pomogą Bobowi w oszustwie.

Odrzucanie fałszywego podpisu: za pomocą protokołu zaprezentowanego


poniŜej Bob moŜe wykazać Alice, Ŝe prezentowana liczba y nie jest jego
podpisem dla wiadomości m.

1. Alice i Bob wykonują protokół weryfikacji podpisu y dla m: Alice


wybiera losowo e\, e2 i prezentuje c = yei • /3e2 mod p. Bob odpowiada
przedstawiając d — cx mod(? mod p. Alice stwierdza, Ŝe d ^ mei ■ ae2
mod p.

2. Alice i Bob powtórnie wykonują protokół weryfikacji podpisu y dla m:


Alice wybiera /i,/2 i prezentuje c' = yh ■ fif2 mod p. Bob
odpowiada przedstawiając d' = c'x mo q mod p. Alice stwierdza, Ŝe d! ^
m?1 ■ a/2 mod p.

3. Alice stwierdza, Ŝe y nie jest podpisem m, o ile

(d • a-^mod<?)/i = {d! • cr/^d^i mod p.

Lemat 20. O ile y nie jest prawidłowym podpisem Boba dla m oraz Bob po-
stępuje zgodnie z protokołem, to z prawdopodobieństwem co najmniej 1 — 2/ą
Alice stwierdzi, Ŝe y nie jest prawidłowym podpisem dla m.

Dowód. Zgodnie z obserwacjami z dowodu poprzedniego lematu, z


prawdopodobieństwem co najwyŜej 1/ I J W pierwszym kroku protokołu
zostanie stwierdzona równość, mimo Ŝe y nie jest prawidłowym podpisem.
To samo odnosi się do drugiego kroku protokołu. Tak więc

125
M. Kutyłowski, W.-B. Strothmann

z prawdopodobieństwem co najmniej 1 — 2/q w obu krokach stwierdzona


zostanie nierówność. Przeanalizujmy, co się wtedy stanie w trzecim kroku.
ZauwaŜmy, Ŝe

(d ■ a~eimodq)fx — (cArlmod'7/1 • a-e2/imod<?


= (i/1 • /3e2)*~1/im°d<? . 0,-^2/1 modą
-l
_ 1/r* -/imod<; _ Qx-erx-1-flmodq _ a-e1jxmoAą

= yei,I"1'/"ncdłmodp

Analogicznie zachodzi (d! ■ a~f2modc>)ei — \frX~ 'h mod p. Zatem Alice


stwierdzi równość testowanych liczb w ostatnim kroku protokołu i odrzuci
podpis y.

Lemat 21. Jeśli y jest prawidłowym podpisem Boba dla m, wtedy Bob moŜe
przekonać Alice, Ŝe y nie jest prawidłowym podpisem Boba dla m z prawdopo-
dobieństwem co najwyŜej \/ą.

Dowód. ZałóŜmy, Ŝe Bobowi udało się przekonać Alice. Zatem

(d ■ cre2mody] = {d' ■ a-/2mod9)ei mod p.

RównowaŜnie:

d' = df • a/2 mod p, (8.1)

gdzie d0 = dei modq ■ cCere^ modl. ZauwaŜmy, Ŝe do zaleŜy tylko od wartości


wybranych podczas pierwszej fazy protokołu. X&xd.zers\ dla wartości /i, J2
wybranych losowo podczas drugiej fazy protokołu zachodzi równość (8.1)
oraz c' = yA • ph. Na mocy lematu 19 równości te świadczą o tym, Ŝe z
duŜym prawdopodobieństwem y jest podpisem dla do-W tej sytuacji
mielibyśmy mx — d\ mod p. PoniewaŜ m, do G G, istnieją takie i, 7 < g, Ŝe m
= a' mod p, do = a; mod p. Zatem alx — a>x mod p. PoniewaŜ a jest
generatorem G otrzymujemy więc (?|(/x — jx) = (i — j)x. Ale q jest liczbą
pierwszą, więc q\(i — ;') lub ^|x. PoniewaŜ 0 < x < q, otrzymujemy q\(i —
j), a stąd i — j = 0, poniewaŜ — <j < i - j < q. Zatem do = m.

126
Kryptografia

Z drugiej strony, załoŜyliśmy, Ŝe

d ^ mei ■ aei mod p, to

jest

m i- de^modi ■ a-Wmod? mod p.


ZauwaŜmy, Ŝe wyraŜenie po lewej stronie ostatniej równości to dQ. Za-
tem, m ^ da mod p. Wynika z tego, Ŝe aby warunek z trzeciej fazy pro-
tokołu faktycznie zachodził, wartości /i,/2 wybrane podczas drugiej
fazy muszą dawać równości (8.1) oraz c' — y^1 ■ ft2, mimo Ŝe y nie jest
podpisem dla dc,. Zdarzenie to zachodzi z prawdopodobieństwem l/q
na mocy lematu 19.

127
M. Kutytowski, W.-B. Strothmann

128
Rozdział 9
I Uwierzytelnianie
M. Kutyłowski, W.-B. Strothmann

130
Uwierzytelnianie jest jednym z kluczowych zadań w zakresie zapewnienia
bezpieczeństwa w systemach komputerowych. Chodzi o to, by system
komputerowy mógł sprawdzić, czy osoba podająca się za określonego
uŜytkownika jest nim w istocie. Niekiedy to uŜytkownik chce sprawdzić, czy
znalazł się we właściwym systemie. Postać komunikatów podawanych przez
system jeszcze o niczym nie świadczy - mogą pochodzić od programu
zainstalowanego przez przeciwnika w celu zdobycia tajnych informacji.
Najbardziej rozpowszechnionym sposobem uwierzytelniania jest podanie
tajnego hasła. Metoda ta nie jest jednak jedyna i posiada pewne wady.

9.0.4. Protokół challenge and response


Prosta i wiarygodna metoda uwierzytelniania to protokół challenge and
response. W celu przeprowadzenia go naleŜy najpierw ustalić jakąś funkcję
jednokierunkową /. Ponadto, jeśli Alice uwierzytelnia się na przykład wobec
Banku, to Bank musi znać tajny klucz k, którego właścicielem jest Alice.
Protokół ma następujący przebieg:
1. Alice rozpoczyna (elektroniczną) konwersację z Bankiem podając
(niekoniecznie w zaszyfrowanej postaci) swoje dane identyfikacyjne.
2. Bank generuje losowy ciąg r i przesyła go Alice.
3. Alice oblicza f(k, r) i przesyła wynik do Banku.
4. Bank oblicza takŜe f(k, r). Jeśli wynik jest taki sam jak otrzymany od
Alice, to Bank przyjmuje, Ŝe osoba wysyłająca tę wartość zna klucz k,
a tym samym jest to Alice.
Funkcja / stosowana w powyŜszym protokole musi posiadać własność, Ŝe dla
k' ^ k z duŜym prawdopodobieństwem zachodzi f(k, r) ^ f(k', r).

131
M. Kutyłowski, W.-B. Strothmann

Jeśli prawdopodobieństwo jest zbyt małe, to kroki 3-5 w powyŜszym


protokole moŜna kilkakrotnie powtórzyć.
Zaletą protokołu jest to, Ŝe Mallet podsłuchujący komunikację pomiędzy
Bankiem a Alice nie moŜe wykorzystać tych informacji do podszywania się
za Alice. Jedyna jego szansa to to, Ŝe Bank powtórnie wygeneruje ten sam
ciąg r. PoniewaŜ jednak ciąg r jest generowany losowo, to przy jego
odpowiedniej długości powtórzenie jest praktycznie niemoŜliwe.
Wadą protokołu jest to, Ŝe nieuczciwi pracownicy Banku znają tajny klucz
Alice i mogą go uŜywać do podawania się za Alice.
Idealnym rozwiązaniem byłoby zastosowanie szyfrowania asymetrycznego
dla uwierzytelniania: Bank wysyła Alice ciąg r; Alice szyfruje r za pomocą
jej prywatnego klucza i wysyła go do Banku; Bank sprawdza za pomocą
publicznego klucza Alice, czy z powrotem w ten sposób otrzymuje r. Ten
scenariusz ma tę przewagę nad poprzednim, Ŝe Bank nie musi znać tajnego
klucza Alice (a więc Alice nie musi się obawiać nieuczciwości pracowników
Banku). Wadą tego rozwiązania jest to, Ŝe obecnie znane algorytmy
asymetryczne wymagają rozmiaru danych i obliczeń, jakie nie dają się
zrealizować technologicznie na smart cards (patrz rozdział 13.1.1). Alice
musi więc posiłkować się „normalnym komputerem", co ogranicza
stosowalność tej procedury (mało kto chodzi do bankomatu z własnym
laptopem!)

9.0.5. Dowody interakcyjne


KaŜdy protokół uwierzytelniania ma postać tzw. dowodu interakcyjnego.
Osoba, która pragnie dowieść swej toŜsamości, posiada pewien sekret.
Dowiedzenie toŜsamości polega na wykazaniu, iŜ się ten sekret posiada.
Sytuacje taką spotykamy często w Ŝyciu codziennym: aby kogoś przekonać o
znajomości jakiegoś sekretu, przeprowadzamy rozmowę, podczas której nasz
partner ma moŜliwość zadawać podchwytliwe pytania. Jeśli odpowiemy na
wszystkie pytania w oczekiwany sposób, to nasz rozmówca da nam wiarę.
Trudniej byłoby przekonać kogoś, gdy cały dowód musimy spisać na
papierze bez moŜliwości zadawania pytań w trakcie rozmowy. Musimy
wtedy odpowiedzieć na wszelkie potencjalne wątpliwości osoby, którą
pragniemy przekonać.

132
Kryptografia

Dowód interakcyjny: bardziej formalnie opisać moŜna dowód interakcyjny


w następujący sposób: dowód przeprowadzają dwie osoby nazywane
Verifier oraz Prover. Częstym przykładem są tu czarodziej Merlin i król
Artur. Merlin ma za zadanie przekonać o czymś króla Artura. Merlin, jako
czarodziej, ma nieograniczone moŜliwości obliczeniowe (wynikające, na
przykład, ze znajomości magicznych zaklęć), Artur, jako zwykły
śmiertelnik, moŜe dokonywać tylko „normalnych" obliczeń. Mimo całej
przewagi, jaką daje magia, rozmowa między Merli-nem a królem Arturem
ma przekonać Artura. Tak więc król Artur musi mieć gwarancję, iŜ Merlin
nie moŜe go oszukać.
PowyŜszy przykład moŜna skonkretyzować jak następuje: Cały czas Verifier
i Prover mają dostęp do danych wejściowych, które nie są modyfikowalne.
Dowód składa się z wielu rund. Podczas pojedynczej rundy:

1. Verifier czyta wiadomość od Provera (poza pierwszą rundą, gdy takiej


wiadomości jeszcze nie ma). Następnie wykonuje obliczenie
składające się z wielomianowo wielu kroków (patrz dodatek B dla
wyjaśnienia pojęcia wielomianowości). Na koniec przekazuje
komunikat Proverowi. Sposób obliczeń moŜe być zrandomizo-wany,
tj. Verifier moŜe korzystać z losowych bitów otrzymywanych, na
przykład, poprzez rzucanie monetą.

2. Prover czyta wiadomość od Verifiera i wykonuje obliczenia ko-


rzystając z potencjalnie nieograniczonych zasobów. Ukończywszy je
tworzy wiadomość dla Verifiera.

Liczba wykonywanych rund jest wielomianowa. TakŜe długość wiadomości


przesyłanych pomiędzy partnerami jest wielomianowa. Protokół moŜe być w
kaŜdym momencie przerwany przez Verifiera, który albo akceptuje dowód,
albo go odrzuca. Zarówno Verifier jak i Prover postępują według
określonych strategii realizując określony algorytm.
Powracając do naszego przykładu, król Artur nie jest czarodziejem i moŜe
dokonywać tylko obliczeń o wielomianowej liczbie kroków. Tym samym
jego zapytania do Merlina teŜ mogą mieć jedynie wielomianową długość
(inaczej spędziłby zbyt wiele czasu na ich wypowiedzenie). Nie moŜe
równieŜ wysłuchać dłuŜszych odpowiedzi niŜ wielomianowych. Obliczenia
Artura mogą być zrandomizowane, bowiem

133
M. Kutyłowski, W.-B. Strothmann

Artur moŜe przecieŜ rzucać monetą. Z drugiej strony, Merlin moŜe uŜywać
całej swej magicznej mocy, aby móc odpowiedzieć na pytania Artura.

Dowody interakcyjne dla zbiorów: niech L będzie dowolnym zbiorem,


którego elementami są ciągi bitów. Mówimy, Ŝe istnieje interakcyjny dowód
dla L, jeśli istnieje taka strategia V dla Verifiera, Ŝe

1. istnieje taka strategia P* dla Provera, Ŝe jeśli Verifier i Prover stosują


strategie V i P*, to kaŜdy ciąg x G L zostanie zaakceptowany z duŜym
prawdopodobieństwem,
2. dla dowolnej strategii P dla Provera oraz x $ L, jeśli Verifier i Pro-ver
stosują strategie V i P, to ciąg x nie zostanie zaakceptowany z duŜym
prawdopodobieństwem. (Tym samym Merlin nie jest w stanie
przekonać Artura, Ŝe x G L w przypadku gdy x §£ L oraz Artur uŜywa
strategii V.)

Przykłady dowodów interakcyjnych: moŜna pokazać, Ŝe jeśli problem L


naleŜy do klasy NP (patrz dodatek B), to L ma dowód interakcyjny. W celu
zilustrowania tego faktu rozpatrzymy problem izomorfizmu grafów.
Przypomnijmy, iŜ G = (V, E) nazywamy grafem, jeśli E C V x V. Dwa grafy
G = (V, E) i G' = (V, E') są izomorficzne, jeśli istnieje wzajemnie
jednoznaczna funkcja h : V - ¥ V ' , taka Ŝe

(u, v) G E wtedy i tylko wtedy, gdy


(h(u),h(v)) G E' dla dowolnych u,v G V.

Niech L będzie zbiorem par (Gi, G2), gdzie G\ i G2 są grafami izomor-


ficznymi. Wiadomo Ŝe L jest problemem z klasy NP (a nawet jest to problem
NP-zupełny). Dowód interakcyjny dla L ma prostą postać: Verifier prosi o
podanie izomorfizmu pomiędzy Gj i G2, Prover odpowiada, Verifier zaś
sprawdza, czy to w istocie izomorfizm pomiędzy Gi i Gi- ZauwaŜmy, Ŝe
Yerifier nie da się oszukać, gdy G\ i G2 nie są izomorficzne. PoniewaŜ
Prover posiada nieograniczone moŜliwości obliczeniowe, jego strategia moŜe
przewidywać przeszukanie wszystkich wzajemnie jednoznacznych funkcji
między obu grafami i wyszukanie wśród nich izomorfizmu.

134
Kryptografia

9.0.6. Dowody z wiedzą zerową


Powróćmy teraz do zagadnień uwierzytelniania. W tym celu Alice musi
przekonać Boba, Ŝe zna pewien sekret, o którym skądinąd wiadomo, iŜ
znany jest tylko przez Alice. Najprościej byłoby, gdyby Alice tę in-
formację po prostu podała. Wtedy jednak Bob mógłby się podawać za
Alice wobec innych osób. Tak więc Alice musi przekonać Boba, Ŝe zna
odpowiedni sekret bez zdradzania go. Dokładniej, chcemy, by Alice i
Bob przeprowadzili dowód interakcyjny, w trakcie którego Alice prze-
konałaby Boba, Ŝe zna sekret nie zdradzając przy tym Ŝadnych informa-
cji na jego temat. Stąd tego typu argumentację nazywamy dowodem z
wiedzą zerową dla podkreślenia, Ŝe Ŝadne informacje o sekrecie nie są
zdradzane. Wydaje się to na pierwszy rzut oka niemoŜliwe; realizację
dowodu z wiedzą zerową moŜna jednak zilustrować na następującym
przykładzie (patrz rysunek 9.1). Alice i Bob znajdują się przed

wrota do labiryntu

Rysunek 9.1. Idea dowodów z wiedzą zerową

labiryntem, w którym znajdują się drzwi zaopatrzone w zamek szy-


frowy. Alice twierdzi, Ŝe zna kod potrzebny do otwarcia tych drzwi.
Najprościej byłoby, gdyby Alice i Bob podeszli do tych drzwi i Alice
pokazała Bobowi, Ŝe potrafi je otworzyć. Jednak wtedy Bob mógłby
podejrzeć, jaki kod uŜywa Alice do otwarcia drzwi. By tego uniknąć,
Alice i Bob przeprowadzają dowód z wiedzą zerową składający się z k
faz (k jest parametrem, im większe jest k, tym bardziej wiarygodny jest
dowód). Pojedyncza faza przebiega następująco. Alice i Bob stoją
przed wejściem do labiryntu. Alice wchodzi do labiryntu i podchodzi
do drzwi skręcając uprzednio na prawo lub lewo. Dzięki załamaniu ko-
rytarza Bob nie widzi, w którą stronę poszła Alice. Następnie Bob idzie
135
M. Kutyłowski, W.-B. Strothmann

do rozwidlenia korytarza, rzuca monetą i zgodnie z wynikiem rzutu nakazuje


Alice przyjść z prawej albo z lewej strony. Alice słyszy Boba poprzez
korytarze i wykonuje jego polecenie. Być moŜe w celu wypełnienia
polecenia Boba Alice będzie zmuszona przejść na drugą stronę drzwi.
Zdarza się to średnio w co drugim przypadku. MoŜliwość wykonania
polecenia Boba jest więc zagwarantowana, gdy Alice potrafi otworzyć
drzwi. MoŜe się oczywiście zdarzyć, Ŝe Alice nie posiada klucza do drzwi, a
mimo wszystko w trakcie k faz wykona polecenia Boba. Zdarzenie to
posiada jednak prawdopodobieństwo 1/2*, gdyŜ kaŜdorazowo wynik rzutu
monetą musi odpowiadać stronie, w którą poszła Alice. Gdy k jest
wystarczająco duŜe, prawdopodobieństwo to jest praktycznie równe zeru.

9.0.6.1. Dowód z wiedzą zerową dla izomorfizmu grafów

Podany uprzednio dowód interakcyjny izomorfizmu moŜna ulepszyć tak, aby


Prover nie musiał zdradzać Ŝadnych informacji o izomorfizmie. ZałóŜmy, Ŝe
Prover zna izomorfizm g pomiędzy grafami G\ i Cj-Dowód składa się z
szeregu rund (im więcej rund tym bardziej wiarygodny staje się dowód).
Pojedyncza runda dowodu ma następujący przebieg:
1. Prover generuje graf H izomorficzny z G\ poprzez nadanie wierz-
chołkom nowych nazw i przepermutowanie listy krawędzi grafu w
losowy sposób. Niech h będzie izomorfizmem pomiędzy G\ i H
wyznaczonym przez tę procedurę.
2. Prover prezentuje graf H Verifierowi.
3. Verifier rzuca monetą. Wynik podaje Proverowi.
4. Jeśli wyrzucona była reszka, to Prover musi podać izomorfizm
pomiędzy G\ i H. Gdy wyrzucono orła, to Prover musi podać izo-
morfizm pomiędzy Gi i H.
ZauwaŜmy, Ŝe jeśli Prover zna izomorfizm pomiędzy G\ i G2, to moŜe
wyznaczyć izomorfizm pomiędzy G2 i H. Istotnie, h o g_1 jest tym izo-
morfizmem.
ZauwaŜmy, Ŝe jeśli Prover nie zna izomorfizmu między G\ i G2 to z
prawdopodobieństwem 0.5 zostanie to wykryte. Jeśli Prover postępuje

136
Kryptografia

zgodnie z protokołem i wyrzucony zostaje orzeł, to Prover musi zna-


leźć izomorfizm h' pomiędzy G2 i H. Ale poniewaŜ h'~ oh jest izomor-
fizmem pomiędzy G\ i G2, zadanie jakie przed nim stoi jest tak samo
trudne jak znalezienie izomorfizmu pomiędzy G\ i G2.
Oczywiście Prover moŜe postępować niezgodnie z protokołem i utwo-
rzyć graf H poprzez spermutowanie G2. Wtedy po wyrzuceniu orła
moŜe z łatwością odpowiedzieć tak, jak się oczekuje. Jednak gdy wy-
rzucona zostanie reszka, to Verifier znajdzie się w opałach: musiałby
bowiem znaleźć izomorfizm pomiędzy G\ i H, co zarazem dawałoby
izomorfizm pomiędzy Gi i G2.
Poprzez poznanie izomorfizmu między G\ i H albo pomiędzy G2 i H
Verifier nie otrzymuje Ŝadnej dodatkowej wiedzy. Istotnie, grafy izo-
morficzne do Gj (bądź G2) moŜe generować sobie sam tak jak czynił to
Prover.

9.0.6.2. Przykład dowodu dla dyskretnego logarytmu


PoniŜej pokaŜemy, jak Alice moŜe przekonać Boba, Ŝe zna wartość dys-
kretnego logarytmu bez zdradzania jego wartości. Ustalmy najpierw
uŜywane parametry: niech p będzie liczbą pierwszą, x liczbą względ-
nie pierwszą z p, oraz ax — b mod p. Alice i Bob znają p,a, b. Dodat-
kowo Alice zna liczbę x i pragnie przekonać o tym Boba. PoniewaŜ wy-
liczenie dyskretnych logarytmów jest praktycznie niewykonalne, dla-
tego teŜ Alice nie jest w stanie znaleźć x w trakcie dowodu.
W omawianym przykładzie dotykamy kwestii praktycznych dowodów
z wiedzą zerową. WaŜne jest tu, iŜ informacje dostępne podczas uwie-
rzytelniania nie zmieniają praktycznie złoŜoności problemu znalezienia
sekretu, za pomocą którego Alice uwierzytelnia się. Pojęcie to róŜni się
nieco od bardziej rygorystycznego załoŜenia, Ŝe dowód z wiedzą ze-
rową nie dostarcza Ŝadnych informacji na temat sekretu.
Protokół:

1. Alice generuje t losowych liczb r\,... rt ■


2. Alice oblicza h\ = ari mod p,... , h t — ar' mod p i przedstawia te
liczby Bobowi.

137
M. Kutyłozuski, W.-B. Strothmann

3. Alice i Bob wspólnie rzucają t razy monetą i generują w ten sposób t


losowych bitów b\,... ,b t .

4. Niech j :— max{k < t: b^ — 1}. Dla i < t Alice wylicza i wysyła


Bobowi następujące liczby:

_ J r, jeśli bj = 0,
V' ~ \ r, - rj jeśli bt = 1.

5. Bob sprawdza dla kaŜdego i < t, czy otrzymane liczby y, są po


prawnie zbudowane:

y, _ / hj mod p jeśli bj = 0, ~ \
hj/hj mod p jeśli bx — 1.

6. Dla kaŜdego i, dla którego b, = 1, Alice wysyła Bobowi liczbę


Zj = x — Yj mod p — 1.

7. Bob sprawdza, czv az> = b/hj mod p dla tych liczb i, dla których
bi = 1.

Ostatnia równość musi zachodzić, o ile Alice postępowała zgodnie z


protokołem: az< = ax~r< ~ ax/ar> = b/hj mod p. Kroki 4 i 5 gwarantują, Ŝe
Alice musi wygenerować liczby /i, zgodnie z protokołem. Krok 6 moŜe być
wykonany zgodnie ze specyfikacją wtedy, gdy Alice zna x. Zarazem, gdyby
Alice nie znała liczby x, wtedy obliczenie z, byłoby jednocześnie
obliczeniem x, gdyŜ x — z,■ + r,-. Z drugiej strony, Bob zna tylko hi, a
otrzymanie r, z fr,- jest znów obliczeniem dyskretnego logarytmu. W
związku z tym protokół nie zdradza sekretu, jakim jest x.

9.0.7. Protokół Fiata-Shamira


Protokół Fiata-Shamira jest protokołem bazującym na trudności obliczania
pierwiastków kwadratowych modulo n, gdzie n jest produktem dwóch
(nieznanych) liczb pierwszych. Jest to najbardziej klasyczny protokół
uwierzytelniania.

138
Kryptografia

Generowanie kluczy: w procesie generowania kluczy bierze udział


arbiter, którego obdarzamy zaufaniem. Arbiter ten jest zwyczajowo na-
zywany Trusłed Authority, czyli w skrócie TA. Proces, w którym gene-
rowane są klucze dla Alice, ma następujący przebieg:

1. TA wybiera losowo dwie duŜe liczby pierwsze p i q.


2. Alice otrzymuje od TA losowo wybraną tajną liczbę s, względnie
pierwszą z n.
3. TA oblicza n = p ■ ą oraz v — s2 mod n i publikuje liczby n,v jako
informacje słuŜące do identyfikacji Alice.

Dowód toŜsamości Alice polega na udowodnieniu, Ŝe zna ona s bez


ujawniania wartości s.

Uwierzytelnianie: następująca procedura powtarzana jest wiele razy


(im większa ilość powtórzeń, tym większa gwarancja prawidłowości w
ustaleniu toŜsamości Alice):

1. Alice wybiera losowo liczbę r względnie pierwszą z n, oblicza x =


r2 mod n i przesyła x Bobowi.
2. Bob wybiera losowo b € {0,1} i przesyła b Alice.
3. Alice wysyła Bobowi y, gdzie

_ J r • s mod n jeśli b = 1,
y
~\r jeśli b = 0.

4. Bob sprawdza, czy

2 _ / x' v m°d n jeśli b — \, •>


~~ \ x mod n jeśli b = 0.
Stwierdzenie, Ŝe powyŜsza równość nie zachodzi, pozwala wy-
wnioskować Bobowi, Ŝe partner nie odpowiada tak jak oczekuje
się tego od Alice.
139
M. Kutyłowski, W.-B. Strothmann

Oczywiście, jeśli Mallet grający rolę Alice zna s, to moŜe on podać od-
powiednią wartość y i jego toŜsamość jako Alice zostaje potwierdzona. Jeśli
jednak Mallet nie zna s i próbuje podać się za Alice, to dla b = 1 nie moŜe
obliczyć r ■ s mod n w bezpośredni sposób. Liczba ta jest pierwiastkiem z x
■ v. PoniewaŜ obliczenie pierwiastków kwadratowych modulo n jest
praktycznie niewykonalne, r ■ s mod n nie moŜe być znalezione poprzez
pierwiastkowanie. Jednocześnie w ostatnim punkcie protokołu zostaje
sprawdzone, czy liczba y podana w trakcie protokołu przez Malleta jest
istotnie pierwiastkiem z x ■ v mod n. Mallet moŜe jednak podstępnie podać x
korzystając z równości x = y2/v mod n dla wcześniej wybranej wartości y.
Dla b = 1 Mallet podaje y w przedostatnim punkcie protokołu i Bob nie
wykrywa oszustwa w ostatnim kroku. Oszustwo zostaje jednak odkryte dla b
= 0: wtedy Mallet jest zmuszony do podania pierwiastka kwadratowego z x
modulo n, co nie jest praktycznie wykonalne. Tak czy inaczej, jeśli Mallet
nie zna s, to w trakcie powyŜszego testu Alice wykrywa to z
prawdopodobieństwem \. Wystarczy więc ten test powtórzyć powiedzmy 20
razy, by praktycznie zawsze móc odkryć oszustwo.

Przebieg protokołu moŜe być zmodyfikowany, by zmniejszyć liczbę ko-


munikatów przesyłanych pomiędzy Alice i Bobem. Wszystkie testy są
wykonywane jednocześnie i odpowiadające im komunikaty są przesyłane w
jednym pakiecie. Tego typu rozwiązanie znane jest pod nazwą protokołu
Feige-Fiata-Shamira lub krótko FSS.

9.0.8. Protokół Schnorra


Protokół Schnorra jest bardzo interesujący dla zastosowań praktycznych.
Zarówno rozmiar prowadzonych obliczeń, jak i wielkość wymienianych
komunikatów są stosunkowo niewielkie. Szczególnie proste są obliczenia
prowadzone przez osobę, która dowodzi swej toŜsamości. Jest to waŜne ze
względu na zastosowania, gdzie obliczenia te wykonywane są przez smart
card (patrz rozdział 13.1.1).
Bezpieczeństwo protokołu Schnorra opiera się na trudności obliczenia
dyskretnego logarytmu. Tak jak w przypadku algorytmu EIGamala, pa-
rametry wybierane do realizacji protokołu pozwalają powiększyć zakres
bezpieczeństwa kosztem wzrostu rozmiaru obliczeń.

140
Kryptografia

Parametry protokołu: niech p będzie duŜą liczbą pierwszą, dla której


problem dyskretnego logarytmu w Zp jest praktycznie nierozwiązywalny.
Niech a będzie dzielnikiem pierwszym p — l, wymagane jest, by a > 2',
gdzie t jest parametrem bezpieczeństwa (im większe t, tym lepiej, w praktyce
t = 40 jest uznawane za wystarczające). Ponadto wybieramy a < p, takie Ŝe
ofl — 1 mod p oraz a1 ^ 1 mod p dla i < a. (Na przykład warunki te spełnia
g0>-1)/<? mod p, gdzie g jest generatorem Zp.)

Certyfikaty toŜsamości: protokół Schnorra wykorzystuje certyfikaty


toŜsamości wydawane przez specjalny serwer zwany TA (Trusted Au-
thority). Wykonywane są następujące kroki:

1. TA ustala toŜsamość Alice w konwencjonalny sposób i generuje


identyfikator ID(Alice) zawierający podstawowe dane o Alice, to jest
imię, nazwisko, data urodzin itp.

2. Alice wybiera losowo i w tajemnicy liczbę x < q, oblicza

v = a~x mod p, oraz

podaje liczbę v do TA.

3. TA generuje podpis cyfrowy s pod (ID(Alice), v) i wydaje Alice


certyfikat C = (ID(Alice), v, s).

Protokół uwierzytelniania: załóŜmy, Ŝe Alice chce potwierdzić swą


toŜsamość wobec Boba. Wykonywane są następujące kroki:

1. Alice wybiera losowo liczbę k < ą i oblicza 7 = ak mod p.

2. Alice podaje Bobowi swój certyfikat C oraz liczbę 7.

3. Bob sprawdza poprawność certyfikatu (tj. podpis s pod ciągiem


(ID(Alice),o).
4. Bob wybiera losowo liczbę r, gdzie 1 < r < 2' i przekazuje ją Alice.

5. Alice oblicza y — k-\- xr mod ą i przekazuje y Bobowi.

141
M. Kutyłowski, W.-B. Strothmann

6. Bob sprawdza, czy 7 = ay ■ vr mod p. Gdy równość ta jest spełniona, to


Bob uznaje toŜsamość Alice za dowiedzioną.
ZauwaŜmy, Ŝe o ile Alice postępuje zgodnie z protokołem, to
ay ■ vr = ak+xr ■ oTxr = ak = 7 mod p.
Tak więc Bob zaakceptuje toŜsamość Alice podczas ostatniego kroku
protokołu.

Bezpieczeństwo protokołu: zastanowimy się, czy osoba nie znająca tajnej


liczby x ma szansę podać się za Alice.
Lemat 22. ZałóŜmy, Ŝe Mallet potrafi uwierzytelnić się jako Alice przynaj-
mniej dla dwóch ciągów r\, ri wybranych przez Boba w czwartym kroku pro-
tokołu dla tego samego 7 uŜytego w pierwszym kroku protokołu. Wtedy Mallet
potrafi obliczyć tajną liczbę x posiadaną przez Alice.
Dowód. Niech 1/1,1/2 będą ciągami wygenerowanymi przez Malleta w
piątym kroku protokołu w przypadku uŜycia przez Boba odpowiednio
r\, r^. Mamy wtedy ayi ■ vn = 7 = ay2 ■ z/2 mod p. Stąd, ayi ■ axri = ay2 ■
axri mod p. Zatem y\ + xr\ = 1/2 + ^2 niod q, czyli x = (1/1 — y2)/(f2 —
r{) mod q.

D
Lemat 22 moŜna zinterpretować następująco: gdy Mallet potrafi oszukać
Boba co najmniej dla 2 wartości podawanych przez Boba spośród 2'
moŜliwych dla danego 7, to Mallet potrafi obliczyć dyskretny logarytm z v,
co, jak sądzimy, nie jest moŜliwe.
Lemat 22 wskazuje, dlaczego Alice powinna wybierać liczbę 7 losowo. O ile
q jest wystarczająco duŜe gwarantuje to, Ŝe prawdopodobieństwo
powtórzenia tego samego 7 jest praktycznie równe 0. Jest to niezbędne, gdyŜ
powtórzenie tego samego 7 w dwóch róŜnych sytuacjach pozwoliłoby
wyliczyć x osobie znającej przebieg protokołu w obu przypadkach.
Atak na protokół Schnorra moŜe mieć jeszcze inny przebieg. Bob Ŝąda
wielokrotnie zidentyfikowania się Alice i zachowuje informacje o przebiegu
protokołu w kaŜdym przypadku. Na podstawie tych informacji stara się
następnie zidentyfikować tajną liczbę x. Dotychczas nie jest znana taka
metoda, ani nie pokazano, Ŝe tego typu atak nie jest praktycznie moŜliwy.

142
Kryptografia

9.0.9. Protokół Guillou-Quisquartera


Protokół Guillou-Quisquartera, w skrócie GS, w duŜym stopniu przypomina
protokół Schnorra z tym, Ŝe jego podstawą jest algorytm RSA, zamiast
problemu dyskretnych logarytmów. Protokół GS wykorzystuje TA (Trusłed
Authority), tj. server, który obdarzamy zaufaniem. TA wyznacza ogólne
parametry. Są to liczba n będąca iloczynem dwóch liczb pierwszych oraz b,
odpowiednio duŜa liczba pierwsza mniejsza od n. Liczba n powinna być
wybrana jak dla algorytmu RSA, jej rozkład na czynniki pierwsze musi być
utrzymywany w tajemnicy.

Certyfikaty toŜsamości: protokół wykorzystuje certyfikaty toŜsamości


wydawane przez TA. Wykonywane są następujące kroki:

1. TA ustala toŜsamość Alice w konwencjonalny sposób i generuje


identyfikator ID(Alice) zawierający podstawowe dane o Alice (tj. imię,
nazwisko, data urodzin itp.).
2. Alice wybiera losowo i w tajemnicy liczbę u < n względnie pierwszą z
n, oblicza v = u~b mod n oraz podaje liczbę v do TA.
3. TA generuje podpis cyfrowy s pod (ID(Alice),i>) i wydaje Alice
certyfikat C = (ID(Alice), v, s).

Protokół uwierzytelniania: załóŜmy, Ŝe Alice chce potwierdzić swą


toŜsamość wobec Boba. Wykonywane są następujące kroki:

1. Alice wybiera losową liczbę k < n i oblicza 7 = kb mod n.


2. Alice podaje Bobowi swój certyfikat C oraz liczbę 7.
3. Bob sprawdza poprawność certyfikatu (to jest podpis s pod ciągiem
(ID( Alice), v)).
4. Bob wybiera losowo liczbę r, gdzie 1 < r < b i przekazuje ją Alice.
5. Alice oblicza y = k- ur mod n i przekazuje y Bobowi.

6. Bob sprawdza, czy 7 = yb ■ vr mod n. Gdy równość ta jest spełniona, to


Bob uznaje toŜsamość Alice za dowiedzioną.

143
M. Kutyłowski, W.-B. Strothmann

ZauwaŜmy, Ŝe o ile Alice postępuje zgodnie z protokołem, to

yb-vr = (kur)b ■ {irb)r = kb = -ymodn.

Analogicznie jak w przypadku protokołu Schnorra moŜna pokazać, Ŝe


powyŜszy protokół jest w pewnym sensie bezpieczny. MoŜna pokazać, Ŝe
jeśli Mallet moŜe uwiarygodnić swą toŜsamość jako Alice z pewnym
niewielkim prawdopodobieństwem, to moŜe równieŜ obliczyć u.
Protokół Guiłłou-Quisquartera moŜe być zmodyfikowany tak, aby nie były
wykorzystywane certyfikaty wydawane przez TA.

9.0.10. Podpisy cyfrowe poprzez uwierzytelnianie


Istnieje ogólna metoda pozwalająca na wykorzystanie dowolnego protokołu
uwierzytelniania do generowania podpisów cyfrowych. Pomysł polega na
tym, by punkt w protokole odpowiadający losowemu wyborowi liczb przez
Boba zastąpić obliczeniem wartości funkcji hashu-jącej na podpisywanym
dokumencie. Z wartości tej wybieramy odpowiednią ilość bitów do
zastosowania w protokole uwierzytelniania. Dla przykładu tak
zmodyfikowany protokół Schnorra dla podpisania dokumentu m wygląda
następująco:

1. Alice wybiera losową liczbę k < qi oblicza 7 = ak mod p.


2. Alice oblicza H(m), gdzie H jest ustaloną funkcją hashująca.
Pierwszych t bitów H(m) określa liczbę r — 1.
3. Alice oblicza y = k + xr mod ą i przekazuje (y, 7) jako podpis pod m.

Sprawdzenie podpisu polega na zbadaniu, czy 7 = ay ■ vr mod p.

144
Rozdział 10
IAdministracja
kluczami
M. Kutyłowski, W.-B. Strothmann

146
Administracja kluczami jest jednym z kluczowych zagadnień krypto-
grafii stosowanej w praktyce. Problemy, przed jakimi stoimy, to przede
wszystkim:

>■ jak generujemy klucze,


>■ jakich kluczy uŜywamy do jakich celów,
>■ jak przechowujemy klucze W bezpieczny sposób,
>■ jak uzgadniamy klucze z partnerem drogą elektroniczną.

10.1. Praktyka gospodarki kluczami


10.1.1. Urządzenie kryptograficzne
Szczególnie przydatne dla gospodarki kluczami jest korzystanie ze spe-
cjalnego hardware'u zwanego dalej urządzeniem kryptograficznym.
Jest to układ elektroniczny zamknięty w specjalnej obudowie, nazywa-
nej tamper box. Otworzenie tej obudowy powoduje zniszczenie zapi-
sanych wewnątrz informacji. Obudowa tłumi teŜ promieniowanie elek-
tromagnetyczne generowane podczas pracy układu. Tak więc tą drogą
równieŜ nie przedostają się informacje o zawartości pamięci urządze-
nia. Urządzenie posiada zapisany wewnątrz klucz, tzw. master key,
który moŜe być wprowadzony tylko raz, później nie moŜe być zmie-
niony oraz przekazany na zewnątrz urządzenia.
Urządzenie kryptograficzne moŜe być uŜyte do kontrolowania komu-
nikacji pomiędzy procesorem a światem zewnętrznym (porównaj rysu-
nek 10.1). Dzięki niemu wszystkie dane wysyłane na zewnątrz mogą
być szyfrowane, zapewniając uŜytkownikowi prywatność w sytuacji,
147
M. Kutyłowski, W.-B. Strothmann

gdy przeciwnik jest w stanie kontrolować zawartość pamięci zewnętrznej i


samego procesora
Urządzenia kryptograficzne są dostępne nawet dla uŜytkowników PC w
postaci specjalnej karty lub chipu. Bezpieczeństwo osiągnięte w ten sposób
jest bardzo duŜe. Oferta urządzeń tego typu staje się coraz bogatsza, są one
coraz lepiej zintegrowane w istniejący software. Przykładem moŜe być
FORTEZZA współpracująca z Netscape Communicator, a co najwaŜniejsze
z protokołem SSL (patrz rozdział 13.2.3.2).
Ostrzec naleŜy jednak, Ŝe w przypadku, gdy urządzenie kryptograficzne
ulegnie zniszczeniu, to wraz z nim nieczytelne stają się wszystkie dane
zaszyfrowane za jego pomocą. Tak więc lepiej posiadać kopię master key,
mimo niebezpieczeństw, jakie to za sobą pociąga. NaleŜy równieŜ mieć na
uwadze niebezpieczeństwa związane z metodami krypto-analizy
przedstawionymi w rozdziale 12.2.3.

Ethernet
S ------------v
! <

( dysk )~+ procesor ^---- .,.—^^^^


ekran j
----------------------

1
► •~- -------- -^
V_y

urządzenie klawiatura
kryptograficzne

Rysunek 10.1. Zastosowanie urządzenia kryptograficznego

10.1.2. Generowanie kluczy


W przypadku algorytmów symetrycznych generowanie kluczy moŜe w
ostateczności być rozwiązane za pomocą rzucania monetą - w ten sposób
otrzymujemy losowe ciągi, które z duŜym prawdopodobieństwem są
dobrymi kluczami. Inaczej jest w przypadku algorytmów asyme-

148
Kryptografia

trycznych, klucze są tu duŜo dłuŜsze i zazwyczaj wygenerować trzeba duŜo


więcej bitów losowych niŜ się ostatecznie znajdzie w kluczu (por.
generowanie kluczy dla RSA). Ponadto, zwykle potrzebujemy wiele takich
kluczy. Tym samym klucze te muszą być wygenerowane elektronicznie
przez generator ciągów losowych lub pseudolosowych.
PoniewaŜ zawładnięcie kluczami przez przeciwnika miałoby katastrofalne
konsekwencje, klucze muszą powstawać w bezpiecznych miejscach. Istnieje
w tym względzie kilka moŜliwości:

>• na komputerze odciętym od sieci; dodatkowo musimy mieć pełne


zaufanie co do zainstalowanego na nim software'u,
>■ przez specjalnie do tego celu zbudowany hardware (urządzenie
kryptograficzne!),
>~ specjalny serwer sieciowy.

ZauwaŜmy, Ŝe w ostatnim przypadku komunikacja pomiędzy serwerem i


uŜytkownikiem musi być specjalnie zabezpieczona (m.in. przez podpis
cyfrowy serwera i szyfrowanie kluczami publicznymi uŜytkownika i
serwera). Problem ten omawiamy szczegółowo w dalszej części bieŜącego
rozdziału. Aby zmniejszyć niebezpieczeństwo następstw włamania do
serwera generującego klucze, staramy się otrzymać klucze z wielu serwerów
i w jakiś sposób skombinować je ze sobą.
Jedną z prostych metod generowania kluczy jest uŜycie do tego celu
hardware'u przeznaczonego do szyfrowania. Podajmy dwa przykłady:

>• i-ty generowany klucz jest otrzymywany jako ostatnie bity kryp-
togramu utworzonego, na przykład, za pomocą DES-a z tekstu
zawierającego, na przykład, takie informacje, jak tajny klucz uŜyt-
kownika, i, aktualny czas i opis przeznaczenia klucza. Wskazane jest,
by klucz szyfrujący był w przypadku kaŜdego i inny. Utrudnia to
ewentualną kryptoanalizę.
>■ MoŜemy postępować jak powyŜej, jednak zamiast szyfrowania uŜyć
jednokierunkowej funkcji hashującej.

W obu powyŜszych przykładach do wytwarzania kluczy moŜna uŜyć


urządzeń kryptograficznych, gdyŜ zarówno szyfrowanie, jak i hasho-wanie
są zazwyczaj funkcjami realizowanymi przez te urządzenia.

149
M. Kutyłowski, W.-B. Strothmann

10.1.3. Hierarchia kluczy


Istnieją róŜne kategorie kluczy uŜywane do róŜnych celów
master key: klucz ten nigdy nie jest zmieniany i nie moŜe być odczytany.
Ze względu na fundamentalne znaczenie dla bezpieczeństwa jest on
jedynie zapamiętany przez uŜytkownika lub zapisany w urządzeniu
kryptograficznym. Ponadto moŜe on być częściowo zapisany w smart
card a częściowo pamiętany przez uŜytkownika. Master key słuŜy do
zabezpieczania pozostałych kluczy, przechowywanych na nośnikach
elektronicznych.
klucze pierwotne: są to klucze słuŜące do zabezpieczania komunikacji i
przechowywanych danych. Klucze te są często zmieniane, gdyŜ duŜa
ilość szyfrowanych przez nie danych ułatwia kryptoanalizę.
klucze wtórne: są kluczami niezbędnymi ze względów technicznych. Są to
klucze uŜywane w róŜnych protokołach, na przykład dla przesyłania
lub uzgadniania kluczy pomiędzy partnerami przed rozpoczęciem
wymiany danych. Klucze wtórne są rzadko zmieniane, ale i szyfrują
stosunkowo rzadko i do tego krótkie teksty.
W tym miejscu naleŜy równieŜ wyjaśnić pojęcie klucza sesyjnego. Zalecane
jest uŜywanie odrębnych kluczy do szyfrowania komunikacji występującej w
obrębie kaŜdej sesji (sesja moŜe obejmować, na przykład, przesłanie plików
z odległego serwera albo operacje uŜytkownika dokonywane w ramach
pojedynczej rejestracji w systemie wielodostępnym). UŜywanie kluczy
sesyjnych jest wskazane z następujących względów:
>- ogranicza to ilość kryptogramów, jakie są generowane za pomocą
jednego klucza, a tym samym ogranicza ilość kryptogramów, jakie
przeciwnik moŜe analizować.
>- ogranicza skutki odgadnięcia klucza przez przeciwnika: o ile sesja
została juŜ zakończona, przeciwnik nie ma moŜliwości prze-
prowadzenia aktywnego ataku, moŜe jedynie poznać dane prze-
kazywane w trakcie zakończonej juŜ sesji. Gdy sesja jeszcze trwa, to
negatywne skutki będą odczuwane jedynie do końca sesji. Wy-
znaczenie kluczy dla następnej sesji przebiega bowiem przy uŜyciu
kluczy wtórnych, a nie bieŜącego klucza sesyjnego.

150
Kryptografia

10.1.4. Przechowywanie kluczy


Klucze o podstawowym znaczeniu dla bezpieczeństwa (na przykład
master key uŜytkownika) są przechowywane w specjalny sposób. UŜy-
wane są do tego celu urządzenia kryptograficzne, smart cards; inna
moŜliwość to nauczenie się klucza na pamięć. Godny polecenia jest
takŜe podział klucza na części, na przykład według protokołu dzielenia
tajemnic (patrz rozdział 11.0.6), oraz przechowywanie kaŜdej części w
inny sposób.
PoniewaŜ w praktyce zwykle niezbędne jest korzystanie z duŜej liczby
kluczy jednocześnie, nie jest moŜliwe zabezpieczenie ich w wyŜej opi-
sany sposób. Najprościej jest w tej sytuacji wykorzystać master key i za-
szyfrować za jego pomocą pozostałe klucze. W zaszyfrowanej postaci
klucze te mogą być bez obaw przechowywane na dysku. OstroŜność
jest wskazana jedynie w przypadku korzystania z takich kluczy. Naj-
bezpieczniej jest wtedy skorzystać z urządzenia kryptograficznego. Dla
zaszyfrowania tekstu za pomocą tak zabezpieczonego klucza K postę-
pujemy następująco:

1. Kryptogram klucza K zostaje przesłany do urządzenia kryptogra-


ficznego.
2. Za pomocą master key klucz K zostaje odczytany z jego krypto-
gramu.
3. Tekst jawny, który ma być zaszyfrowany za pomocą K, zostaje
wczytany porcjami do urządzenia kryptograficznego, jest szyfro-
wany wewnątrz urządzenia za pomocą klucza K i znów porcjami
wysłany na zewnątrz.
4. Na koniec K zostaje wymazany z wewnętrznej pamięci urządze-
nia kryptograficznego.

Ciekawy sposób przechowywania kluczy jawnych wykorzystuje się w


pakiecie PGP (patrz rozdział 13.4.1). UŜytkownicy przechowują klu-
cze jawne swych partnerów i mogą potwierdzić ich autentyczność na
potrzeby innych zainteresowanych osób. O autentyczności klucza jaw-
nego moŜna się przekonać w zadowalający sposób poprzez potwier-
dzenie jego autentyczności w wielu miejscach. Liczymy w tym momen-
151
M. Kutyłowski, W.-B. Strothmann

cie, Ŝe ewentualny przeciwnik nie jest w stanie włamać się do wszystkich


systemów, w jakich sprawdzamy dany klucz jawny.

10.1.4.1. Utrata kluczy

Utrata klucza jest powaŜnym problemem, gdyŜ w takim przypadku


niedostępne stają się dane zaszyfrowane tym kluczem. Do pomyślenia jest
równieŜ sytuacja, w której pracownik mający wyłączny dostęp do klucza z
waŜnymi dla firmy danymi szantaŜuje firmę, groŜąc nieodszy-frowaniem
danych.
Rozwiązaniem w tej sytuacji jest przechowywanie klucza poprzez protokół
dzielenia tajemnic. Informacje o kluczu dzieli się pomiędzy n osób w firmie
(na przykład kierownictwo firmy). Protokół zapewnia, Ŝe dowolna grupa k
osób jest w stanie odtworzyć klucz (fc jest parametrem protokołu).
Jednocześnie mniej niŜ k osób nie jest w stanie otrzymać Ŝadnych informacji
o kluczu (patrz rozdział 11.0.6).

10.2. Protokoły uzgadniania kluczy


Podstawowym problemem w momencie nawiązywania komunikacji poprzez
linie komunikacyjne podatne na atak przeciwnika jest ustalenie klucza, który
będzie uŜyty do szyfrowania przesyłanych wiadomości. O ile taki klucz
został w jakiś sposób uzgodniony wcześniej między partnerami, to
oczywiście nie ma problemu. Zazwyczaj jednak klucz takowy musi być na
bieŜąco ustalony. Zadanie to wydaje się niemoŜliwe do zrealizowania, gdyŜ
przesyłane wiadomości o kluczu mogą być przechwycone przez przeciwnika.
W niniejszym rozdziale przedstawimy rozwiązanie wyŜej wymienionego
zagadnienia.
ZauwaŜmy, Ŝe moŜliwość bezpiecznego przesyłania wiadomości daje prostą
metodę uzgadniania kluczy:

Prosty protokół uzgadniania kluczy:


1. Alice wybiera losowy ciąg YĄ i dostarcza go Bobowi bezpieczną drogą.

152
Kryptografia

2. Bob wybiera losowy ciąg rg i dostarcza go Alice bezpieczną drogą.


3. NiezaleŜnie, Bob i Alice wyliczają /(TĄ , rg) jako uzgodniony klucz
sesyjny. Funkcja / jest dowolną funkcją jednokierunkową.
W powyŜszym protokole moŜna by wyeliminować zarówno uŜycie rg, jak i
funkcji jednokierunkowej. Nie jest to wskazane, gdyŜ wtedy cała
odpowiedzialność za wybór klucza sesyjnego spadłaby na Alice. Ewentualne
złamanie tego klucza przez przeciwnika moŜe wzbudzić podejrzenie u Boba,
Ŝe Alice jest winna, bo wybrała jeden ze słabych kluczy. W powyŜszej sesji
zarówno Alice, jak i Bob wpływają na wartość klucza. UŜycie funkcji
jednokierunkowej pozwala na komfort psychiczny: jest mało
prawdopodobne, Ŝe w ten sposób zostanie wygenerowany słaby klucz, nawet
spośród tych, o których słabości Alice i Bob nie są świadomi.

10.2.1. Uzgadnianie kluczy poprzez szyfrowanie


symetryczne
Nawet w przypadku posiadania przez partnerów wspólnego klucza dla
algorytmu symetrycznego wskazane jest, jak juŜ widzieliśmy, ustalenie
innego klucza jako klucza sesyjnego.

Protokół 1: niech k będzie wspólnym kluczem algorytmu symetrycznego


posiadanym przez Alice i Boba.
1. Niech t będzie momentem generacji klucza, n zaś jego numerem
kolejnym. Alice wybiera losowy ciąg rA, szyfruje ciąg złoŜony z
ł , n , r Ą i identyfikatora Boba za pomocą k i wysyła Bobowi.
2. Bob deszyfruje otrzymaną wiadomość i odzyskuje z niej TĄ . Ciąg YĄ
jest ustalonym wspólnym kluczem.
W powyŜszym protokole t oraz n były uŜyte, aby Bob mógł sprawdzić, Ŝe
nadsyłany klucz został wygenerowany niedawno. Chroni to przed tzw.
atakiem przez powtórzenie:
1. Mallet przechwytuje komunikaty protokołu ustalania klucza s po-
między Alice a Bobem.

153
M. Kutylowski, W.-B. Strothmann

2. Mallet przechwytuje komunikaty wymieniane w trakcie sesji szy-


frowanej kluczem s i na podstawie tego materiału dokonuje kryp-
toanalizy s.

3. Mallet podaje się za Alice i ustala z Bobem klucz s na podstawie


pakietów przechwyconych w kroku 1 (zauwaŜmy, Ŝe Mallet nie musi
wcale odszyfrowywać tych pakietów).

O ile H n nie byłyby zawarte w szyfrowanym pakiecie, to 3 punkt ataku


byłby moŜliwy do przeprowadzenia. W szyfrowanej wiadomości zawieramy
informacje o Bobie, by uniemoŜliwić Malletowi nawiązanie z Alice
komunikacji za pomocą tego samego klucza.

Protokół 2:

1. Bob wysyła Alice ciąg N. Ciąg ten nie mógł być wcześniej uŜyty do
tego celu. N nie musi być zaszyfrowany.

2. Alice wybiera losowo klucz YĄ, szyfruje wiadomość złoŜoną z TĄ,N i


identyfikatora Boba za pomocą klucza k i otrzymany kryp-togram
przesyła Alice.

3. Bob deszyfruje YĄ.

W powyŜszym protokole Mallet nie moŜe zastosować ataku przez po-


wtórzenie, Bob za kaŜdym razem generuje inny ciąg N.

Protokół 3:

1. Alice wybiera losowy ciąg YĄ (albo ciąg określający bieŜący czas) i


przesyła go Bobowi w niezaszyfrowanej postaci.

2. Zarówno Alice, jak i Bob obliczają wartość funkcji hashującej dla


ciągu złoŜonego z r A i wspólnego klucza k. Wartość ta jest ustalonym
wspólnym kluczem.

154
Kryptografia

Ustalenie klucza za pomocą pośredniczącego serwera: w praktyce


niewiele par uŜytkowników dysponuje wspólnym, wcześniej ustalonym
kluczem. Klucze takie łatwiej ustalić pomiędzy kaŜdym z uŜytkowników
lokalnego systemu a specjalnie chronionym serwerem. W takim przypadku
moŜna przerobić protokoły 1 i 2 w następujący sposób: jeśli Alice chce
przesłać bezpiecznie wiadomość do Boba, to wysyła ją do serwera
zaszyfrowaną za pomocą klucza słuŜącego do komunikacji z serwerem.
Serwer deszyfruje tę wiadomość i zaszyfrowuje ją ponownie za pomocą
klucza słuŜącego do komunikacji z Bobem. Bob otrzymuje ten kryptogram i
odzyskuje wiadomość wysłaną przez Alice.

10.2.2. Uzgadnianie klucza przez szyfrowanie


asymetryczne
Jednym z najwaŜniejszych w praktyce zastosowań algorytmów asyme-
trycznych jest uzgadnianie kluczy. Protokoły są w tym przypadku bardzo
proste, zakładają jedynie dostępność kluczy publicznych (i ewentualnie
informacji potrzebnych do sprawdzenia podpisów cyfrowych).

Protokół bez podpisywania:

1. Alice ustala klucz k i szyfruje za pomocą publicznego klucza Boba


wiadomość

(Jfc,ID(Alice)),

gdzie ID(Alice) jest identyfikatorem Alice.


2. Bob deszyfruje wiadomość od Alice.

Gdyby w powyŜszym protokole nie był zawarty identyfikator Alice, to


Mallet mógłby wysłać zaszyfrowany klucz k do Boba (jakkolwiek sam go
nie zna). Na tej podstawie mógłby otrzymać od Boba plik zaszyfrowany
kluczem k, który mógłby posłuŜyć do kryptoanalizy i złamania klucza k.

155
M. Kutyłowski, W.-B. Strothmann

Protokół z podpisem:
1. Alice ustala klucz k i szyfruje za pomocą publicznego klucza Boba
wiadomość
(M,sigAlice(ID(Alice),U)),
gdzie t jest aktualnym czasem, ID(Alice) oznacza identyfikator Alice,
sig jest podpisem cyfrowym.
2. Bob deszyfruje wiadomość od Alice, sprawdza podpis i o ile wia
domość ma postać taką, jaka wynika z protokołu, to akceptuje k
jako klucz.
W powyŜszym protokole dodaliśmy informacje o momencie wysłania
klucza, dla zapewnienia jego „świeŜości". Podpis cyfrowy Alice pod
informacjami o k i t gwarantuje, Ŝe wiadomość istotnie pochodzi od Alice.
Ostatni protokół moŜna zmodyfikować w ten sposób, Ŝe podpis cyfrowy nie
jest szyfrowany wraz z kluczem k. Jest to, oczywiście, tylko wtedy moŜliwe,
gdy podpis nie zdradza treści podpisywanego tekstu.

10.2.3. Atak man in the middle


Protokoły uzgadniania kluczy nie korzystające z uprzednio znanych se-
kretów napotykają niebezpieczeństwo ataku typu man in the middle. Dla
opisania jego mechanizmu rozpatrzmy następującą sytuację. Alice i Bob
pragną wymienić tajne informacje. Wykorzystują do tego następujący,
zdawałoby się, bezpieczny protokół:
1. Bob przesyła Alice swój klucz publiczny.
2. Alice wybiera losowo x, klucz sesyjny.
3. Alice szyfruje x za pomocą klucza publicznego Boba i przesyła
otrzymany kryptogram Bobowi.
4. Bob deszyfruje x za pomocą swego klucza prywatnego.
5. Alice i Bob uŜywają klucza sesyjnego x do dalszego komunikowania
się.

156
Kryptografia

Jest to pierwszy opisany przez nas protokół z tą róŜnicą, Ŝe Alice przed


rozpoczęciem procedury nie posiada klucza Boba. ZałóŜmy Ŝe Mallet jest
złowrogim przeciwnikiem kontrolującym linię komunikacyjną, poprzez
którą Bob i Alice przesyłają sobie pakiety. Mallet bywa teŜ nazywany man
in the middle, gdyŜ znajduje się między Alice i Bobem i kontroluje
komunikaty, jakie między sobą wymieniają.
Mallet moŜe niepostrzeŜenie wpłynąć na przebieg powyŜszego protokołu:

1. Bob przesyła Alice swój klucz publiczny.


Mallet przechwytuje list od Boba i przesyła Alice klucz publiczny y, do
którego zna odpowiadający klucz prywatny.
2. Alice wybiera losowo klucz sesyjny x.
3. Alice szyfruje x za pomocą y myśląc, Ŝe to klucz publiczny Boba i
wysyła Bobowi zaszyfrowany klucz x.
Mallet przechwytuje ten list, deszyfruje list za pomocą znanego mu klu-
cza prywatnego. Następnie Mallet szyfruje x za pomocą publicznego
klucza Boba i wysyła Bobowi otrzymany kryptogram.

4. Bob deszyfruje x za pomocą swego klucza prywatnego.


5. Alice i Bob uŜywają klucz sesyjny x do dalszego komunikowania się.
Mallet podsłuchuje komunikację pomiędzy Alice i Bobem, dzięki
znajomości x moŜe deszyfrować kaŜdą przesyłaną wiadomość. Mallet
moŜe nawet przechwytywać wiadomości, deszyfrować, dowolnie mody-
fikować, szyfrować z powrotem za pomocą x i wysyłać dalej.

Interesującym aspektem powyŜszego protokołu jest to, Ŝe o ile Mallet nie


modyfikuje listów szyfrowanych za pomocą x, to Alice i Bob nie mają szans
zorientować się, Ŝe ktoś ich podsłuchuje;.
Obrona przed atakiem man in the middle jest bardzo trudna. Jedna z
moŜliwych strategii obrony polega na podpisywaniu wiadomości tak, jak w
drugim prezentowanym protokole. W tym przypadku jednak musi istnieć
moŜliwość weryfikacji podpisów. Wiarygodny sposób polega na korzystaniu
z certyfikatów (patrz rozdział 13.2.3.1).
Bezpieczny mechanizm weryfikacji podpisów moŜna zorganizować w
następujący sposób: specjalnie zabezpieczony serwer wydaje certyfikat

157
M. Kutyłowski, W.-B. Strothmann

kaŜdemu uŜytkownikowi. Certyfikat zawiera dane uŜytkownika i parametry


konieczne do weryfikacji jego podpisu. Certyfikat jest podpisany przez
serwer. Gdy Alice pragnie podpisać tekst Z, wtedy oprócz samego podpisu
pod Z przesyła takŜe (w jawny sposób) swój certyfikat. Odbiorca sprawdza
certyfikat (metoda potwierdzania podpisu serwera jest bowiem powszechnie
znana), a następnie sprawdza podpis pod listem od Alice za pomocą
parametrów zawartych w certyfikacie.

10.2.4. Protokół Diffie-Hellmana i jego pochodne


Dotychczas omówione metody uzgadniania klucza wymagają, by klucze
przeznaczone do bezpiecznej komunikacji istniały przed rozpoczęciem
protokołu. Zadziwiające jest to, Ŝe nie jest to wcale konieczne:

Protokół Diffie-Hellmana: publicznie znane są p, która jest wystarczająco


duŜą liczbą pierwszą, oraz generator a dla Zp . Protokół ma następującą
postać:

1. Alice wybiera zA , Bob wybiera zB , gdzie zA, zB < p — 2. Liczby ZA i


ZB są trzymane w tajemnicy.

2. Alice przesyła Bobowi liczbę cA = aZA mod p, Bob przesyła Alice


liczbę cg = aZB mod p.

3. Jako uzgodniony klucz przyjmowana jest liczba k = aZĄ'ZB mod p.


Alice oblicza k jako (CB)ZA mod p, Bob korzysta z równości k = (CA)ZB
mod p.

ZauwaŜmy, Ŝe powyŜszy protokół nie korzysta z Ŝadnego szyfrowania.


Mimo wszystko, metoda jest względnie bezpieczna. Mallet podsłuchujący
komunikaty przesyłane między Alice i Bobem nie jest w stanie obliczyć
klucza k (przynajmniej w bezpośredni sposób): dla wyliczenia k musi on
wyznaczyć zA z cA lub zB z cB. Ale jest to zadanie wyliczania dyskretnego
logarytmu i nie ma tu Ŝadnego znanego efektywnego algorytmu.
PokaŜemy teraz w bardziej ścisły sposób, Ŝe wyŜej opisany protokół Diffie-
Hellmana jest odporny na pasywny atak:

158
Kryptografia

Twierdzenie 23. Problem znalezienia klucza k przy danych cA i cB z proto-


kołu Diffie-Hellmana jest równowaŜny złamaniu szyfru EIGamala.

Dowód. Przypomnijmy, Ŝe algorytm EIGamala uŜywa parametrów p, a, t,


(3, gdzie /3 = ał mod p, liczby p, a, j3 są jawne, t zaś tajne. Kryp-togram
wiadomości x składa się z liczb y\ = ah oraz y2 = x ■ flh, gdzie h jest losowo
wybraną liczbą. Deszyfrowanie jest moŜliwe dzięki równości x = t/2/3/i m°d
V-
ZałóŜmy, Ŝe potrafimy złamać protokół Diffie-Hellmana. Zastosujmy go do
liczb CĄ = (3 = ał oraz c^ = y\ — ah. Znajdujemy wtedy k = ath = [3h.
Następnie moŜemy wyliczyć x — ytl flh-
Z kolei, gdy potrafimy złamać szyfry EIGamala, to stosujemy tę metodę do
y\ = aZĄ (h = z A) ^yi = ^-, Przy P — aZB- Znajdujemy wtedy x, takie Ŝe 1 = x •
j3h = x ■ aZA'z» mod p. Stąd k = x~x mod p.
Protokół Diffie-Hellmana nie jest, niestety, odporny na atak typu man in the
middle. Mallet moŜe ustalić wspólny klucz z Alice i wspólny klucz z
Bobem. Następnie w przypadku wiadomości m przesyłanej od Alice do
Boba Mallet przechwytuje m, deszyfruje, ewentualnie modyfikuje, szyfruje
kluczem ustalonym z Bobem i wysyła tak zmodyfikowaną wiadomość m
Bobowi.
Protokół Diffie-Hellmana moŜe być udoskonalony, aby uodpornić go na
aktywny atak:

Protokół STS (Station-to-Station): protokół STS tym róŜni się od pro-


tokołu Diffie-Hellmana, Ŝe zarówno Alice, jak i Bob podpisują (CĄ,CB)
swoimi podpisami cyfrowymi i przekazują sobie nawzajem te podpisy. O ile
podpisy mogą być zweryfikowane, to uniemoŜliwia to poprzedni atak typu
man in the middle: aby zrealizować atak, Mallet musi Bobowi przekazać
liczbę Cp^ CĄ, gdyŜ nie zna loga CĄ. Z drugiej strony, Mallet musi podpisać
cP w imieniu Alice, co nie powinno być moŜliwe.

Protokół MTI: Matsumoto, Takashima i Imai zaproponowali modyfikację


protokołu Diffie-Hellmana nie korzystającą z podpisów. Za to niezbędne jest
korzystanie z certyfikatów podpisanych przez specjalny, godny zaufania
serwer. Na certyfikat osoby X składają się identyfikator X, bx — cntx mod p
oraz podpis serwera pod identyfikatorem X i bx-

159
M. Kutyłowski, W.-B. Strothmann

Liczba tx jest sekretem znanym tylko osobie X.


Przebieg protokołu:

1. Alice wybiera losowo r& < p — 1 i oblicza SĄ = arA mod p.


2. Alice przesyła Bobowi s^ oraz swój certyfikat.
3. Bob wybiera losowo rg < p — 1 i oblicza Sg = arB mod p.
4. Bob przesyła Alice; liczbę SĄ oraz swój certyfikat.
5. Alice i Bob wyznaczają wartość klucza k: Bob
oblicza k — słJ- brJ mod p,
Alice oblicza k = s*£ ■ br£ mod p
(bA and b$ są otrzymywane z certyfikatów).

ZauwaŜmy, Ŝe Bob i Alice otrzymają tę samą wartość klucza:

s'A • brBA = ar3'tA ■ atB'rA = arB'tA+tB'rA mod p. Podobnie

s'A ■ VA = arBtA+iB'rA mod p.

160
Rozdział 11
Protokoły
kryptograficzne
M. Kutyłowski, W.-B. Strothmann

162
Jedna z fundamentalnych zasad dotyczących stosowania kryptografii mówi,
Ŝe dobre algorytmy szyfrujące nie zawsze wystarczają do zapewnienia
bezpieczeństwa. Konieczne jest ich wbudowanie w specjalnie
zaprojektowane protokoły, gdzie kaŜdy krok uŜytkownika jest ściśle
określony (a odstępstwa od protokołu mogą mieć powaŜne konsekwencje dla
bezpieczeństwa).
Pośrednio z protokołami mieliśmy do czynienia w ostatnich trzech roz-
działach. Teraz omówimy kilka protokołów wybranych ze względu na
znaczenie praktyczne zagadnień, jakie one rozwiązują.

11.0.5. Protokół interlock


Protokół interlock ma za zadanie obronić przed atakiem man in the middle.
Nawiązanie komunikacji odbywa się w następujący sposób:

1. Bob przesyła Alice swój klucz publiczny.

2. Alice przesyła Bobowi swój klucz publiczny.

3. Bob szyfruje swą pierwszą wiadomość za pomocą klucza publicznego


Alice, a następnie przesyła pierwszą połowę kryptogramu do Alice.

4. Alice po otrzymaniu pierwszej połowy kryptogramu szyfruje swą


wiadomość za pomocą klucza publicznego Boba a następnie przesyła
pierwszą połowę swego kryptogramu Bobowi.
5. Bob otrzymuje pierwszą połowę kryptogramu od Alice i przesyła swą
drugą połowę.

6. Alice otrzymuje drugą połowę wiadomości od Boba, deszyfruje ją i


sprawdza, czy wiadomość ta ma Ŝądaną postać (tak więc nie

163
M. Kutyłowski, W.-B. Strothmann

powinien to być chaotyczny ciąg bitów). Jeśli wszystko jest w po-


rządku, to Alice przesyła drugą połowę swego kryptogramu Bobowi.
7. Bob deszyfruje otrzymany od Alice krytogram i sprawdza, czy
otrzymany tekst ma Ŝądaną postać; jeśli tak, to wtedy Bob kontynuuje
wysyłanie wiadomości w ten sam sposób.
Zbadajmy, dlaczego Mallet nie ma teraz szans niepostrzeŜenie wkraść się
pomiędzy Alice i Boba. Tak jak poprzednio, Mallet moŜe podać Bobowi i
Alice swój klucz publiczny. Mallet znajdzie się jednak w opałach, gdy
dostanie połowę kryptogramu od Boba w trzecim punkcie protokołu.
Jakkolwiek Mallet zna klucz, za pomocą którego kryptogram moŜe być
odszyfrowany, znajomość tylko połowy kryptogramu nie pozwala mu
zrekonstruować Ŝadnej jego części. Mallet nie moŜe czekać na otrzymanie
drugiej połowy, gdyŜ przerwałoby to protokół. Jedynym wyjściem w tym
momencie jest wybranie jakiejś wiadomości, zaszyfrowanie kluczem
publicznym Alice i przesłanie połowy kryptogramu Alice. Analogicznie
musi postąpić Mallet w przypadku przechwycenia pierwszej połowy
wiadomości wysłanej przez Alice. W punkcie 5 protokołu Mallet poznaje
całość wiadomości Boba, ale nie ma JUś szans zmiany wiadomości
wysyłanej Alice i w konsekwencji musi wysłać drugą połowę uprzednio
spreparowanej wiadomości. Alice moŜe w tym momencie zorientować się,
Ŝe wiadomość, jaką otrzymała nie odpowiada temu, czego by oczekiwała od
Boba. Podobna sytuacja następuje w kaŜdym późniejszym punkcie wymiany
wiadomości - Mallet musi generować odpowiedzi w imieniu Boba i Alice,
znając jedynie ich wcześniejsze wiadomości. W klasycznym ataku man in
the middle Mallet znał bieŜące odpowiedzi i musiał je jedynie przekodować.
W trakcie protokołu interlock Alice powinna się zorientować, Ŝe partner nie
zachowuje się jak Bob. Tak samo Bob ma szansę odkryć, Ŝe jego rozmówcą
nie jest Alice.
Protokół interlock moŜe być, na przykład, uŜywany do łączności uŜyt-
kownika ze swym biurowym komputerem podczas podróŜy słuŜbowej. W
takiej sytuacji jesteśmy bowiem skazani na korzystanie z linii
komunikacyjnych podatnych na podsłuch i manipulacje. Tak jak zawsze,
zalecana jest jednak ostroŜność: w punkcie 6 protokołu Mallet moŜe
zasymulować zerwanie łączności przez modem. NieostroŜny Bob moŜe
próbować połączyć się jeszcze raz, teraz Mallet zna juŜ pierws/ą

164
Kryptografia

wiadomość przesyłaną przez Boba i moŜe nieco dłuŜej naśladować protokół


(by, na przykład, poznać hasło Boba).

11.0.6. Dzielenie tajemnic


Dzielenie tajemnic jest sposobem dzielenia waŜnych informacji (na
przykład tajnych kluczy). Przydatność tego typu technik łatwo prześledzić na
następującym przykładzie:
Pewna firma jest w posiadaniu waŜnych informacji, na przykład decy-
dujących o jej przewadze technologicznej nad konkurencją. Informacje te
muszą być chronione i dlatego znajdują się w sejfie. Aby dodatkowo
zwiększyć bezpieczeństwo, sejf moŜe zostać otwarty tylko wtedy, gdy
wszystkie osoby z zarządu firmy uŜyją swych kluczy. Wygodniejsza wersja
powyŜszego scenariusza zakłada, Ŝe do otworzenia sejfu wystarcza,
powiedzmy, 2/3 kluczy (tak aby sejf nie został zablokowany, na przykład,
absencją chorobową pojedynczych członków zarządu). Oczywiście,
najlepiej, gdy sejf ma postać protokołu kryptograficznego - eliminuje to
konieczność zakupu drogich szaf pancernych.

11.0.6.1. Dzielenie tajemnic za pomocą XOR

ZałoŜenia: tekst M musi być zaszyfrowany w taki sposób, Ŝe osoby A\,... ,


Ajt wspólnie mogą odszyfrować M, podczas gdy mniej niŜ k spośród nich
nie jest w stanie zrekonstruować M.

Protokół:

1. Wybieramy fc — 1 losowych ciągów bitów R\,... , Rjt_i, kaŜdy tej


samej długości co M,
2. Niech R = M XOR Ri XOR ... XOR Rk^x (operacja XOR przepro-
wadzona jest oddzielnie na poszczególnych bitach ciągów).
3. Dla i = l,... , k — 1 osoba A,- otrzymuje ciąg K,; osoba Ak otrzymuje R.

Wszystkie osoby współpracując mogą obliczyć M:


M = R XOR Ri XOR .. . XOR Rk_{.

165
M. Kutyłowski, W.-B. Strothmann

Z drugiej strony, mniej niŜ k osób nie jest w stanie odtworzyć M. Na


przykład osoby A2,.. ■ ,Ak mogą jedynie obliczyć
M XOR Ra = R XOR R2 XOR .. . XOR Rfc_2.
PoniewaŜ jednak Ri jest losowym ciągiem bitów, ciąg M XOR R\ jest
równieŜ losowy.

Zalety i wady powyŜszego protokołu:


>- pełne bezpieczeństwo: mniej niŜ k osób nie moŜe wspólnie uzyskać
jakichkolwiek informacji o M;
>• utrata choćby jednej części R, jest równoznaczna z utratą M.

11.0.6.2. Dzielenie tajemnic z progiem

Poprzednie załoŜenia zmieniamy w ten sposób, Ŝe sekret M rozdzielamy


pomiędzy m osób, jednakŜe obecnie kaŜda grupa złoŜona z k osób moŜe
odtworzyć sekret M. Liczba k nazywana jest wartością progową, przy czym
k < m.Z drugiej strony, Ŝadna grupa złoŜona z mniej niŜ k osób nie jest w
stanie zrekonstruować M. Tak więc, by uniemoŜliwić odtworzenie M,
„zastrajkować" musi co najmniej m — k — 1 osób. Protokół, który
gwarantuje te własności, nazywamy dzieleniem tajemnic z progiem k.

Protokół dla dzielenia tajemnic z progiem:


1. Wybieramy wystarczająco duŜą liczbę pierwszą p (p musi być większe
niŜ sekret M i liczba osób m).
2. Wybieramy losowo m - 1 liczb wk^\,wk_2, ■ ■ ■ > wi < P-
3. Niech w{x) będzie wielomianem zdefiniowanym jako
Jt-i w(x) =
M+^Wi- x\

gdzie M jest sekretem, który pragniemy rozdzielić. 166


Kryptografia

4. Obliczamy wartości w(l), <x>(2),... , w(m) modulo p.

5. i-ta osoba otrzymuje w(i).

Wiadomo z algebry, Ŝe kaŜdy wielomian stopnia k — l jest jednoznacznie


wyznaczony poprzez swe wartości w dowolnych k punktach. Mianowicie,
jeśli znane są wartości <x\,... . a ^ w punktach c\,... , ck, wtedy

PowyŜszy wzór pozwala na rekonstrukcję wielomianu w{x) dowolnej grupie


k osób. Z w(x) łatwo otrzymać M, gdyŜ M = w(0). ZauwaŜmy jeszcze, Ŝe
jeśli znanych jest tylko k — l wartości wielomianu w(x), to Ŝadne wnioski co
do wartości M nie mogą być wyciągnięte. Istotnie, wartości w punktach c\,...
, cjt_i (ci,... , ck_l ^ 0) mogą być uzupełnione przez dowolną wartość N w
punkcie 0. Tych k wartości pozwala jednoznacznie zrekonstruować
wielomian w(x) zgodny z informacjami osób c\,... , Cfc_i i taki, Ŝe w(0) = N.
JednakŜe N było dowolne, czyli informacje od osób C\,... , Cjt_i nie
pozwalają powiedzieć niczego o w(0).

Inne schematy dla dzielenia tajemnic: niech S\,... ,St C {1,...m}. MoŜna
zaŜądać, by rekonstrukcja sekretu M była moŜliwa przez grupę osób S wtedy
i tylko wtedy, gdy istnieje i < t, takie Ŝe S, C S. Znana jest ogólna
konstrukcja umoŜliwiająca tego typu dzielenie tajemnic dla dowolnej
rodziny zbiorów S\,... , S t . Opis takiej konstrukcji znajduje się między
innymi w ksiąŜce [15].

11.0.7. Zobowiązanie bitowe


W wielu sytuacjach dwie osoby muszą wspólnie wybrać losowy bit.
Najprościej zrealizować to poprzez rzut monetą w obecności obu zain-
teresowanych. Osoba rzucająca, mimo Ŝe pełni aktywną rolę, nie jest w
stanie wpłynąć na wynik. MoŜna się równieŜ obejść bez monety: kaŜda
osoba wybiera w ukryciu swój bit; potem obie jednocześnie oznajmiają swój
wybór; XOR obu bitów jest losowo wybranym bitem.

167
M. Kutyłowski, W.-B. Strothmann

Bezpośrednie, elektroniczne wdroŜenie tego protokołu nie jest realizowalne,


bo dwie osoby nie mogą jednocześnie oznajmić swych wyborów. Bez
zapewnienia jednoczesności, osoba, która później oznajmia swój wybór,
moŜe dowolnie manipulować wynikiem.
Zobowiązanie bitowe to protokół zapewniający wybór losowego bitu przez
Alice tak, Ŝe:
>• Alice wybiera losowo swój bit,
>• Alice nie moŜe zmienić swego wyboru,
>■ Bob moŜe się dowiedzieć o wyborze dokonanym przez Alice jedynie
za jej zgodą.
Zobowiązanie bitowe moŜe być uŜyte do wspólnego wyboru losowego bitu:
1. Alice wybiera bit za pomocą protokołu zobowiązania bitowego.
2. Bob publicznie wybiera swój bit.
3. Alice i Bob odczytują wspólnie bit wybrany przez Alice.
4. XOR obu wybranych bitów jest wyliczane jako wynik.

Zobowiązanie bitowe moŜe być zrealizowane przez następujący (nie-


elektroniczny) protokół:
1. Alice wybiera bit, zapisuje go na kartce i umieszcza w kopercie.
2. Alice zakleja kopertę i umieszcza ją pod kontrolą swoją i Boba.
Protokół ten ma swą elektroniczną wersję.

Zobowiązanie bitowe za pomocą szyfrowania symetrycznego.

Wybór bitu:
1. Bob generuje losowy ciąg bitów R i przesyła go Alice.
2. Alice wybiera bit b i losowy klucz K. Następnie szyfruje R i b za
pomocą klucza K i przesyła zaszyfrowaną wiadomość Ez(R,b)
Bobowi.

168
Kryptografia

Odkrycie bitu:
1. Alice przesyła K Bobowi.
2. Bob wylicza E^(R, b) i sprawdza, czy w ten sposób otrzymuje z
powrotem R. Jednocześnie Bob poznaje wartość b.
Bezpieczeństwo protokołu zaleŜy od tego, czy jest praktycznie moŜliwe
znaleźć taki klucz K', by EK(R, b) = EK,{R, \-b).

Zobowiązanie bitowe poprzez jednokierunkowe funkcje hashujące:


niech H będzie ustaloną funkcją hashująca.

Wybór bitu:
1. Bob generuje ciąg losowy R\ i przesyła go Alice.
2. Alice generuje losowo ciąg bitów R2 i pojedynczy bit b.
3. Alice przesyła Bobowi wartość H(R\, R2, b).

Odkrycie bitu:
1. Alice przesyła R2 i b Bobowi.
2. Bob oblicza H(Ri , R 2 , b ) i sprawdza, czy wartość ta jest identyczna z
wartością wcześniej otrzymaną od Alice.

Bezpieczeństwo tej metody opiera się na fakcie, Ŝe dla danych R\ i b nie jest
praktycznie moŜliwe znaleźć ciągi R i R', takie Ŝe H(R\, R,b) = H{RuR',l-b).

11.0.8. Pieniądze cyfrowe


Jedną z pasjonujących moŜliwości stwarzanych przez sieci komputerowe jest
elektroniczne dokonywanie transakcji i płatności. O ile dokonywanie
transakcji moŜe być zrealizowane za pomocą podpisów cyfrowych, to
realizacja płatności jest bardziej skomplikowana. MoŜliwe są dwa
scenariusze:

169
M. Kutyłowski, W.-B. Strothmann

>~ z udziałem elektronicznego banku,

>- jedynie z udziałem partnerów transakcji.

Komunikacja pomiędzy partnerami protokołu odbywa się poprzez linie


komunikacyjne naraŜone na pasywne (tylko podsłuch) i aktywne
(manipulacje wiadomościami) ataki przeciwnika. Ze względu na obrót
pieniędzmi, stopień gwarantowanego przez protokół bezpieczeństwa musi
być bardzo wysoki.

Elektroniczne banki: komunikacja między klientem a bankiem (czy firmą


wydającą karty kredytowe) obejmuje typowe bankowe operacje: odczyt
stanu konta, zlecenie przelewu na inne konto. Płatności realizowane są
poprzez przelew z konta kupującego na konto sprzedającego (być moŜe w
innym banku).
Typowa sesja pomiędzy klientem a bankiem składa się z następujących
części:

1. uzgodnienie klucza sesyjnego,

2. uwierzytelnianie klienta wobec banku i banku wobec klienta, ko-


munikacja szyfrowana jest kluczem sesyjnym,

3. konwersacja związana z dokonywanymi operacjami bankowymi,


równieŜ szyfrowana kluczem sesyjnym.

KaŜda część powyŜszej sesji moŜe być zaprojektowana z uŜyciem znanych i


bezpiecznych protokołów. Nie gwarantuje to jednak zawsze pełnego
bezpieczeństwa. O ile serwer bankowy moŜe być w Internecie wyjątkowo
dobrze zabezpieczony przed włamaniem z zewnątrz, o tyle w praktyce
naleŜy przyjąć, Ŝe komputerem klienta moŜe zawładnąć włamywacz. MoŜe
on wymienić software stosowany do komunikacji z bankiem na taki, który
wiernie naśladuje software oryginalny, ale dodatkowo wysyła
włamywaczowi informacje o kluczach i hasłach stosowanych przez klienta.
Tego typu zagroŜenie moŜe być teŜ wynikiem nie tylko włamań przez
Internet, ale i efektem działania wirusów. W tym przypadku zagroŜone są
osoby korzystające z usług bankowych przez telefon (telephone banking) za
pomocą PC (patrz rozdział 13.5.1).

170
Kryptografia

Skuteczną ochroną przed wspomnianymi zagroŜeniami jest wykorzystanie


urządzenia kryptograficznego pomiędzy klawiaturą a komputerem.
Urządzenie to ze względu na swą budowę nie akceptuje rozkazów czytania i
pisania wydawanych przez procesor komputera, jest więc odporne na ataki.
Całość procesów szyfrowania, deszyfrowania itp. odbywa się za pomocą
urządzenia kryptograficznego oraz komputer klienta nie otrzymuje Ŝadnych
informacji o stosowanych hasłach i kluczach. Jedyne informacje dostępne
włamywaczowi, to wiadomości wyświetlane na ekranie klienta: na przykład,
odszyfrowane informacje o stanie jego konta, dokonywanych przelewach
itp.
Opisany scenariusz jest stosowany w praktyce.

Pieniądze cyfrowe: papierowe banknoty pełnią swą rolę dzięki nastę-


pującym kluczowym własnościom:

1. tylko upowaŜniona instytucja (tj. drukarnia papierów wartościowych)


jest w stanie wytworzyć banknot,

2. banknotu nie da się powielić,

3. banknot jest łatwo przekazywalny między uczestnikami transakcji/


4. płatność banknotami zapewnia anonimowość transakcji (w od-
róŜnieniu do przelewów).

Niestety, własności te nie są w pełni prawdziwe: Banknoty moŜna fał-


szować; niektóre urządzenia kserograficzne wytwarzają prawie idealne
kopie banknotów; przekazanie banknotu jest kłopotliwe, jeśli transakcja
dokonywana jest na odległość.
By przezwycięŜyć wyŜej wspomniane trudności, moŜna posłuŜyć się
banknotami cyfrowymi: banknot taki jest specjalnie utworzonym ciągiem
bitów. Kryptografia dostarcza narzędzi pozwalających na zachowanie
własności, jakich oczekujemy od banknotów:

1. Banknot cyfrowy moŜe zawierać podpis cyfrowy wydającej go


instytucji. Dzięki temu niebezpieczeństwo podrobienia banknotu jest
praktycznie zerowe.
171
M. Kutyłowski, W.-B. Strothmann

2. Banknot cyfrowy, niestety, łatwo jest powielić. Prowadzi to do


moŜliwości wielokrotnego uŜycia tego samego banknotu, co na-
zywane jest double spending. Aby uniknąć tego zjawiska, konieczne
jest uŜycie specjalnych protokołów obrotu banknotami cyfrowymi,
jakie poznamy poniŜej. Ich celem jest zapewnienie wykrycia osoby,
która wielokrotnie uŜyła tego samego banknotu.
3. Banknoty cyfrowe stosunkowo łatwo jest przesyłać drogą elek-
troniczną (nawet gdy ma to postać protokołu z wymianą wielu
wiadomości).
4. Protokoły obrotu banknotami cyfrowymi zapewniają idealną ano-
nimowość uczestnikowi obrotu, który postępuje zgodnie z proto-
kołem.

Część protokołów (bardziej skomplikowanych) umoŜliwia rozmienianie


banknotu na mniejsze nominały lub posługiwanie się nim jak ksiąŜeczką
czekową o określonej maksymalnej łącznej wartości wydanych czeków.
UmoŜliwiają takŜe wielokrotne przekazywanie banknotów z rąk do rąk.

Protokół realizujący cyfrowe banknoty: opiszemy prosty pojęciowo


protokół, w którym bank wydaje Alice banknot cyfrowy. Banknot ten moŜe
być uŜyty przez Alice do dokonania pojedynczego zakupu, bowiem
sprzedawca musi otrzymany banknot zdeponować w banku.
WYDANIE BANKNOTU PRZEZ BANK:

1. Alice ustala kwotę y, na jaką chce otrzymać cyfrowy banknot.


2. Alice przygotowuje 100 wiadomości, kaŜda z nich składa się z
następujących składników:
>• kwoty y,
>- losowego identyfikatora x (kaŜda ze stu wiadomości posiada inny
identyfikator),
>- 100 ciągów Ij identyfikujących Alice. śadne Ij nie jest zapisane
bezpośrednio. Alice wybiera bowiem losowy ciąg iloraz Lj — Ij
XOR Rj (tak więc Ij = Rj XOR Ly) i umieszcza w przesyłanym
tekście zobowiązania bitowe dla ciągów Rj i L,-.
172
Kryptografia

KaŜda z tworzonych 100 wiadomości jest zakryta jak do ślepego


podpisu przed wysłaniem do banku.

3. Alice przekazuje 100 tak utworzonych wiadomości do banku.

4. Bank wybiera losowo s < 100 i Ŝąda odkrycia wszystkich wiadomości


poza s-tą oraz ujawnienia zobowiązań bitowych zawartych w nich.

5. Alice wykonuje polecenia banku, a bank sprawdza, czy wiadomości


były utworzone zgodnie z protokołem. Jeśli nie, to składa doniesienie
na policji o dokonywanej przez Alice próbie oszustwa i przerywa
protokół.

6. Bank podpisuje (na ślepo) wybraną s-tą wiadomość i przekazuje ją


Alice. Jednocześnie pomniejsza stan konta Alice o y.

7. Alice usuwa z otrzymanej wiadomości zakrywający czynnik. W ten


sposób otrzymuje podpis banku pod wiadomością składającą się z x, y i
zobowiązań bitowych 100 par ciągów identyfikujących Alice.

Podpisana wiadomość otrzymana w kroku 7 jest cyfrowym banknotem na


kwotę y. ZauwaŜmy, Ŝe jakkolwiek bank nie widział treści podpisywanej
przez siebie wiadomości, to jednak prawdopodobieństwo, Ŝe Alice udało się
oszukać i zapisać w tej wiadomości coś niezgodnego z protokołem jest co
najwyŜej 0.01. Sens tworzenia ciągów identyfikacyjnych poznamy później.

ZAKUP ZA POMOCĄ CYFROWEGO BANKNOTU:

1. Alice przekazuje Sprzedawcy banknot cyfrowy.

2. Sprzedawca generuje losowo i niezaleŜnie 100 bitów r\,... , rjoo (ale


moŜe to być teŜ pierwszych 100 bitów wartości funkcji hashu-jącej dla
ciągu złoŜonego z daty transakcji, przedmiotu transakcji,
identyfikatorów Alice i Sprzedawcy).

3. Dla j — l,... , 100, Alice ujawnia zobowiązania bitowe dla Rj, jeśli rj —
0, oraz Lj, jeśli rj = 1.
173
M. Kutyłowski, W.-B. Stroihmann

ZŁOśENIE BANKNOTU W BANKU:

1. Sprzedawca przedstawia w Banku cyfrowy banknot wraz z ujaw-


nionymi przez Alice ciągami identyfikacyjnymi.
2. Bank sprawdza, czy nie został juŜ zdeponowany banknot z takim
samym identyfikatorem x. Jeśli tak, to odmawia uznania bank-
notu i wszczyna śledztwo dotyczące oszustwa. W przeciwnym
przypadku dopisuje kwotę y do konta Sprzedawcy i zanotowuje,
Ŝe wykorzystano juŜ banknot z identyfikatorem x.

ODPORNOŚĆ PROTOKOŁU NA OSZUSTWA:

Sprzedawca wykorzystuje banknot dwukrotnie: Banknot został pod-


pisany przez Bank, więc Sprzedawca nie moŜe go zmodyfikować.
MoŜe tylko ten sam banknot dwukrotnie wysłać do banku, załą-
czając te same ciągi zdeterminowane przez zobowiązania bitowe.
Bank po otrzymaniu dwóch identycznych banknotów ma pod-
stawę oskarŜyć Sprzedawcę o próbę oszustwa. Dlaczego w tej sy-
tuacji podejrzewanie Alice nie ma sensu, zobaczymy poniŜej.
Alice wykorzystuje banknot dwukrotnie: W czasie, gdy banknot jest
przekazywany Sprzedawcy B, Alice musi odkryć pewne zobo-
wiązania bitowe. PoniewaŜ ciągi rj,... , rioo generowane podczas
transakcji Alicji ze Sprzedawcą i ze Sprzedawcą B są z bardzo du-
Ŝym prawdopodobieństwem róŜne, istnieje takie /, dla którego
zarówno Rj jak i Lj zostaną odkryte. Rj i Lj zostaną przekazane
Bankowi, więc Bank będzie w stanie zrekonstruować identyfika-
tor Alice i oskarŜyć ją na tej podstawie o oszustwo.

ZauwaŜmy, Ŝe o ile Alice nie oszukuje, to Bank nie ma moŜliwości wy-


krycia od kogo Sprzedawca otrzymał banknot (tym samym zagwaran-
towana jest tajemnica transakcji). Istotnie, ciągi identyfikacyjne przeka-
zane przez Sprzedawcę są losowymi ciągami i nie umoŜliwiają ziden-
tyfikowania Alice, o ile Bank nie jest w posiadaniu pasujących drugich
połówek. RównieŜ na podstawie ciągu identyfikacyjnego x Bank nie
moŜe zidentyfikować Alice, bo na ślepo podpisywał wiadomość zawie-
rającą x.

174
Kryptografia

Aspekty społeczne: stosowanie cyfrowych banknotów niesie ze sobą


ułatwienia, ale i niebezpieczeństwa. Po pierwsze, realizacja protokołów
za pomocą software'u nie jest bezpieczna choćby ze względu na moŜ-
liwość modyfikacji protokołów przez wirusy. Jako taka nadaje się więc
jedynie do realizacji drobnych płatności. Implementacja za pomocą har-
dware^ jest bezpieczna, ale kosztowniejsza. W tym przypadku naleŜy
zastanowić się, czy nie jest korzystniejsze skorzystanie z usług elektro-
nicznego banku.
PowaŜniejszym problemem jest pełna anonimowość w przypadku ob-
rotu elektronicznymi banknotami. Stwarza to następujące moŜliwości:

>- ułatwiona płatność za usługi oferowane w Internecie, a będące w


sprzeczności z obowiązującym prawem,
>• moŜliwość transferu pieniędzy z pominięciem ograniczeń praw-
nych (po zaszyfrowaniu cyfrowy banknot nie jest rozróŜnialny od
ciągu losowego; Ŝadna kontrola przepływających w Internecie pa-
kietów nie jest w stanie takich transferów zidentyfikować),
*- bezpieczne dla porywaczy przekazywanie okupu: protokół prze-
kazywania cyfrowego banknotu nie wymaga, by wiadomości z
banku wystawiającego banknot były przekazywane bezpośrednio
porywaczom. Mogą one być, na przykład, publikowane w prasie;
eliminuje to całkowicie newralgiczny dla porywaczy moment
przekazywania okupu. Protokół nie daje równieŜ moŜliwości
znaczenia banknotów wchodzących w skład okupu.

11.0.9. Elektroniczne wybory


Rozwój sieci komputerowych stwarza moŜliwość powstawania organi-
zacji, w których całe Ŝycie organizacyjne odbywa się za pomocą sieci
komputerowej. Przesyłanie informacji jest tu bardzo ułatwione, skom-
plikowaniu ulegają jedynie procedury wyborcze. Istnieje wiele proto-
kołów realizujących elektroniczne wybory. Im bardziej są skompliko-
wane, tym lepsze jest zabezpieczenie przed ewentualnymi oszustwami
wyborczymi i tym lepiej chronią anonimowość oddawania głosów. Z
drugiej strony, skomplikowane procedury są mało atrakcyjne dla za-
stosowań praktycznych.
175
M. Kutyłowski, W.-B. Strothmann

Jeśli dysponujemy komisjami wyborczymi godnymi zaufania, to reali-


zacja elektronicznych wyborów nie jest trudna. (W tradycyjnych wy-
borach zawsze obdarzamy komisje wyborcze pełnym zaufaniem.) W
następnym protokole udział biorą dwie komisje wyborcze: jedna przy-
dzielająca identyfikatory (Komisja Uwierzytelniająca), inna zaś licząca
głosy (Komisja Skrutacyjna).

Protokół wyborczy:

1. KaŜdy z wyborców pragnący wziąć udział w głosowaniu zgłasza


się w Komisji Uwierzytelniającej po numer rejestracyjny. Numer
ten, losowo wygenerowany, jest zaopatrzony w podpis Komisji
Uwierzytelniającej i przekazywany wyborcy bezpieczną drogą.
2. KaŜdy wyborca tworzy głos składający się z:
1) numeru rejestracyjnego,
2) losowego numeru identyfikacyjnego,
3) nazwiska osoby, na którą oddaje głos
i przekazuje go Komisji Skrutacyjnej anonimowym kanałem ko-
munikacyjnym.
3. Komisja Uwierzytelniająca przekazuje listę numerów rejestracyj-
nych do Komisji Skrutacyjnej.
4. Komisja Skrutacyjna uznaje głos, o ile nadszedł tylko jeden głos
o podanym numerze rejestracyjnym i o ile numer ten znajduje
się na liście przekazanej przez Komisję Uwierzytelniającą. Numer
identyfikacyjny głosującego jest nanoszony na listę głosów kan-
dydata, na którego oddano głos.
5. Komisja Skrutacyjna publikuje listę kandydatów wraz z nume-
rami identyfikacyjnymi osób, które oddały głosy na poszczegól-
nych kandydatów.

PowyŜszy protokół zapewnia pewien minimalny zakres bezpieczeń-


stwa. śaden wyborca nie otrzyma dwóch numerów rejestracyjnych i
nie moŜe zatem zagłosować dwa razy. Komisja Skrutacyjna musi po-
liczyć kaŜdy głos, bo pominięty głos spowoduje brak identyfikatora
wyborcy na liście określonego kandydata. Komisja Skrutacyjna nie jest
176
Kryptografia

w stanie określić, kto oddał jaki głos, bo nie wie, jaki numer rejestra-
cyjny odpowiada jakiemu głosującemu. Komisja Uwierzytelniająca nie
jest w stanie powiedzieć, kto oddał jaki głos, bo nie zna przyporządko-
wania między numerami rejestracyjnymi a identyfikacyjnymi. Komisja
Skrutacyjna nie jest w stanie dorzucić niepostrzeŜenie własnych gło-
sów, bo zwiększyłoby to ogólną liczbę oddanych głosów (przyjmujemy,
Ŝe kaŜdy wyborca, który się zarejestrował, faktycznie zagłosuje - najle-
piej, by kroki 1 i 2 wykonywał łącznie). ZauwaŜmy jednak, iŜ Komisja
Skrutacyjna moŜe dowolnie zmieniać oddane głosy. Aby temu zapo-
biec, anonimowy kanał, jakim nadchodzą głosy, musi być zaopatrzony
w mechanizm potwierdzania otrzymanych listów.
Oczywiście, w przypadku jednoczesnego włamania do Komisji Uwie-
rzytelniającej i Komisji Skrutacyjnej - obie są realizowane jako procesy
elektroniczne - moŜna wynik wyborów niepostrzeŜenie sfałszować po-
przez dorzucenie głosów lub poznać, kto na kogo głosował. Dlatego
niezbędne jest, by były procesami działającymi na odrębnych maszy-
nach.

177
M. Kutyłowski, W.-B. Strothmann

178
Rozdział 12
I Kryptoanaliza
M. Kutyłowski, W.-B. Strothmann

180
12.1. Podstawowe moŜliwości ataku
12.1.0.1. Klasyfikacja ataków kryptoanalitycznych

W zaleŜności od rodzaju informacji dostępnych w trakcie kryptoana-lizy,


rozróŜniamy następujące rodzaje ataków mających na celu złamanie
szyfrów:

Atak typu ciphertext-only: Pewne kryptogramy są znane (na przykład


poprzez podsłuchiwanie kryptogramów przesyłanych drogą radiową),
ale brak jest informacji na temat odpowiadających im tekstów
jawnych. Celem ataku jest znalezienie klucza albo co najmniej tekstów
jawnych.

Atak typu known plaintext: Pewne pary (tekst jawny, kryptogram) są


znane (na przykład, gdy w jakiś sposób atakujący zdobędzie teksty
jawne pewnych kryptogramów), ale pary te nie mogą być wybrane
przez atakującego.

Atak typu chosen plaintext: Atakujący dysponuje kiyptogramem dla


dowolnie wybranego tekstu jawnego (tego typu atak jest moŜliwy, gdy
staramy się znaleźć klucz zapisany w urządzeniu kryptograficznym w
sytuacji, gdy moŜemy szyfrować za pomocą tego urządzenia).

Atak typu chosen ciphertext: Atakujący moŜe uzyskać tekst jawny dla
dowolnie wybranego kryptogramu (sytuacja taka zachodzi, gdy
atakujący moŜe deszyfrować za pomocą urządzenia kryptogra-
ficznego).

181
M. Kutyłowski, W.-B. Strothmann

NaleŜy mieć świadomość, Ŝe nawet gdy atak wymaga bardzo duŜo czasu i
mocy obliczeniowej, moŜe on być realizowalny w określonych
okolicznościach:

Wirusy: Aby móc korzystać z obcych komputerów do łamania szyfrów,


projektuje się specjalny wirus i wbudowuje w system operacyjny.
Wirus ten współŜyje z zaraŜonymi programami, pozwalając im
normalnie działać, jedynie co pewien czas przejmuje kontrolę nad
procesorem i wykorzystuje drobną chwilę na losowe poszukiwania
klucza pasującego do określonej pary klucz jawny-Kryptogram.
PoniewaŜ powoduje to jedynie nieznaczne spowolnienie pracy
oryginalnego programu, uŜytkownik nie zauwaŜa niczego. W
momencie gdy wirus znalazł poszukiwany klucz, blokuje on komputer
i wyświetla na ekranie komunikat
Hardware error xyz; cali our toll-free
niaintenance service
Kod błędu xyz zawiera informacje o znalezionym kluczu. Właściciel
komputera dzwoni w tej sytuacji pod podany bezpłatny numer i podaje
(nieświadomie) informacje o znalezionym kluczu. Firma odpowiada,
w jaki sposób odblokować komputer. Scenariusz ten moŜe być
zrealizowany przy uŜyciu robaków sieciowych (tzw. worms)
rozprzestrzeniających się poprzez Internet. W tym przypadku odpada
konieczność uŜywania telefonu: informacje o znalezionym kluczu
wysyłane są pocztą elektroniczną, poniewaŜ statystycznie duŜa część
mocy obliczeniowych w Internecie jest niewykorzystana w kaŜdym
momencie, inteligentny robak moŜe z nich skorzystać bez
spowolnienia serwisu dla prawowitych uŜytkowników.

„Chińska ruletka": Wyobraźmy sobie, Ŝe kaŜdy telewizor w Chinach rnoŜe


zostać zaopatrzony w niewielki układ elektroniczny, który próbuje
złamać szyfry przesyłane jako telegazeta. KaŜdy odbiornik
telewizyjny jest odpowiedzialny za grupę określonych kluczy i
wypróbowuje je dla podanej pary kryptogram-tekst jawny. W
przypadku znalezienia właściwego klucza, ukazuje się komuni-Kat na
ekranie telewizora z informacją o kluczu. Wtedy moŜna z;głosić się w
firmie prowadzącej grę i po podaniu klucza odebrać nagrodę.
PoniewaŜ gry losowe zawsze były pociągające, wiele

182
Kryptografia

osób wyda drobną sumę na kupno dodatkowego układu łamią-


cego szyfry. Pewnie i stacja telewizyjna emitująca kryptogramy
dorzuci coś do nagrody, gdyŜ próby złamania szyfru odbywają
się jedynie, gdy telewizor nastawiony jest na odbiór jej programu.

W obu opisanych przypadkach do łamania szyfrów uŜywana jest ol-


brzymia moc obliczeniowa, za którą płacą inni.

12.2. Algorytmy kryptoanalizy


12.2.1. Kryptoanaliza róŜnicowa
Kryptoanaliza róŜnicowa jest znana publicznie od 1990 roku, jakkol-
wiek była juŜ brana pod uwagę przy projektowaniu DES-a. Stosuje się
do DES-a i niektórych innych metod złoŜonych z wykonywanych wie-
lokrotnie identycznych rund. Wiele metod proponowanych jako alter-
natywa dla DES-a zostało skutecznie złamanych przy uŜyciu krypto-
analizy róŜnicowej i przez to wykluczonych z zastosowania w prak-
tyce. Ciekawe jest, Ŝe DES z mniejszą liczbą rund (na przykład 8) moŜe
być w praktyce złamany przy uŜyciu kryptoanalizy róŜnicowej. Dla
DES-a z 16 rundami metoda ta wymaga około 247 par tekst jawny-
kryptogram przy ataku typu chosen plaintext oraz 2^ par przy ataku
typu known plaintext. Dla DES-a z 8 rundami potrzebujemy odpowied-
nio tylko 214 i 238 takich par.

Kryptoanaliza róŜnicowa pojedynczej rundy: w czasie pojedynczej


rundy DES-a bity ciągu wejściowego są permutowane, kopiowane (per-
mutacja z rozszerzeniem), następnie wykonywana jest operacja XOR z
wybranymi bitami klucza i rezultat jest przepuszczany przez S-boksy.
Z kryptograficznego punktu widzenia, waŜne są następujące fazy:
1) operacja XOR z bitami klucza,
2) obliczenia wykonywane przez S-boksy.
W związku z tym będziemy rozwaŜali część układu złoŜoną z bramek
XOR oraz S-boksów. Dane wejściowe dla tego układu daje się łatwo
otrzymać z oryginalnego ciągu wejściowego.
183
M. Kutyłowski, W.-B. Strothmann

Naszym zadaniem będzie przeprowadzenie ataku typu chosen plain-text, tzn.


będziemy mogli szyfrować dowolnie wybrane teksty jawne i starali się na tej
podstawie uzyskać informacje o bitach klucza. PoniewaŜ S-boksy działają
niezaleŜnie od siebie, będziemy rozwaŜali tylko te bity ciągu wejściowego,
które po wykonaniu operacji XOR z odpowiednimi bitami klucza wędrują do
określonego, wybranego S-boksa. W ten sposób będziemy starali się
wyznaczyć bity klucza uŜyte w tym miejscu.

Główny trick kryptoanalizy róŜnicowej: poniewaŜ nie znamy wartości


bitów klucza, nie jesteśmy w stanie określić, jakie są dane wejściowe dla S-
boksów. MoŜemy jednak rozwaŜać nie pojedyncze dane wejściowe, lecz ich
pary. Niech X, Y będzie parą takich danych. Poprzez róŜnicę ciągów X, Y
rozumiemy X XOR Y, gdzie operacja XOR jest wykonywana oddzielnie na
poszczególnych bitach. Kluczowa obserwacja: stosując operację XOR z
bitami klucza K otrzymujemy z ciągów X i Y ciągi X XOR K, Y XOR K będące
danymi wejściowymi dla S-boksów. ZauwaŜmy, Ŝe

(X XOR K) XOR (Y XOR K) = X XOR Y.

Tak więc róŜnica między danymi wejściowymi S-boksów jest taka sama, jak
róŜnica między inputami X i Y. Zatem nie znając danych wejściowych dla S-
boksów, jakie pozostają w przypadku X i Y, moŜemy jednak z łatwością obliczyć
ich róŜnicę.
RóŜnica między X XOR K i Y XOR K ulega zazwyczaj zmianie poprzez
zastosowanie S-boksu. Nowa róŜnica jest nie tylko zaleŜna od X XOR Y ale
takŜe od konkretnych wartości X XOR K i Y XOR K. Na tym polega cały
trick: okaŜe się, Ŝe tylko niektóre wartości dla X XOR K i Y XOR K są
moŜliwe, a tym samym tylko niektóre wartości dla K. Dokładniej
prześledzimy to na konkretnym przykładzie.

Przykład: rozwaŜymy S-boks SI. PoniŜej będziemy zapisywać ciągi bitów w


postaci szestnastkowej (tj. grupy 4 bitów będziemy zapisywać jako cyfrę od
1 do 15, czyli do F). Dla odróŜnienia postać taką będziemy zapisywać z
indeksem x. RozwaŜać będziemy dane wejściowe X i Y,

184
Kryptografia

takie Ŝe X XOR Y = 34*. Tym samym róŜnica pomiędzy danymi wej-


ściowymi S-boksu dla X i Y jest równieŜ 34*. 2. drugiej strony, jeśli róŜnica
pomiędzy danymi wejściowymi U, V S-boksu SI wynosi 34*, to moŜliwe są
następujące róŜnice pomiędzy danymi wyjściowymi tego S-boksu:
1* dla 8 par U, V, 2* dla 16 par U, V,
3* dla 6 par U, V, 4* dla 2 par U, V.
7X dla 12 par U, V, 8X dla 6 par U, V,
Dxd\a 8 par U, V, Fx dla 6 par U, V,
Informacje te moŜna uzyskać poprzez prześledzenie działania S-boksu dla
wszelkich moŜliwych danych wejściowych. Odpowiednie tabele są tworzone
tylko raz i następnie wielokrotnie wykorzystywane.
Jeśli więc, na przykład, stwierdzimy, Ŝe po zastosowaniu S-boksu Si róŜnica
wynosi Dx, wtedy moŜemy wywnioskować, Ŝe dane wejściowe dla SI były
jedną z 8 moŜliwych par. W tym przypadku pierwszy element tych par to
jeden z ciągów

07*, 33*, 11*, 25*, 17*, 23*, n>*, 29*,

drugi element tej pary róŜni się od pierwszego o 34*. KaŜda z tych hi-
potetycznych wartości dla X XOR K wyznacza jedną z moŜliwych wartości
wyprowadzaną z równości K = X XOR (X XOR K). Na przykład, jeśli
przyjmiemy, Ŝe danymi wejściowymi dla SI był ciąg 07*, wtedy X XOR K =
07*, a co za tym idzie K = X XOR 07*. W ten sposób jakkolwiek nie
wyznaczyliśmy wartości K jednoznacznie, to potrafimy ograniczyć zbiór
moŜliwych wartości K do ośmiu ciągów.
Podobne postępowanie powtarzamy dla innej pary danych wejściowych X',
Y' rozpatrując róŜnicę X' XOR Y'. W ten sposób otrzymujemy nowy zbiór
moŜliwych kluczy. Prawdziwy klucz naleŜy, oczywiście, do obu
znalezionych zbiorów. W ten sposób moŜna zbiór hipotetycznych kluczy
ograniczyć do przekroju obu zbiorów. Kontynuując powyŜsze postępowanie
moŜna w krótkim czasie ograniczyć zbiór moŜliwych kluczy do zbioru
jednoelementowego.
Kryptoanaliza róŜnicowa dla DES-a jest uogólnieniem powyŜej przed-
stawionego postępowania dla pojedynczej rundy. Bezpośrednie uogólnienie
jest moŜliwe dla DES-a złoŜonego z trzech rund. Dla większej liczby rund
niezbędne jest rozpatrywanie tzw. charakterystyk opisanych poniŜej.

185
M. Kutyłowski, W.-B. Strothmann

Charakterystyki: sposób konstruowania i wykorzystania charaktery-


styk prześledzimy na przykładzie DES-a złoŜonego z 4 rund. Naszym
strategicznym celem jest przeprowadzenie kryptoanalizy róŜnicowej
dla S-boksów ostatniej rundy. Aby było to moŜliwe, musimy dyspo-
nować następującymi danymi: (i) ciągi przed zastosowaniem operacji
XOR w ostatniej rundzie, tj. ciągi
R3,
(ii) róŜnice pomiędzy wynikami S-boksów w ostatniej rundzie, tj. róŜ-
nice między ciągami /(R3, K4).,
Wartości R3 są łatwe do znalezienia, gdyŜ zgodnie z definicją R3 = L4.
Znalezienie róŜnicy pomiędzy wynikami S-boksów jest trudniejsze, bo-
wiem dostępne są jedynie dane wyjściowe całego algorytmu, tj. ciągi
R4 — L3 XOR /(R3, K4). Niech L], R] oraz Lf, R} oznaczają ciągi powsta-
jące podczas szyfrowania dla, odpowiednio, pierwszych i drugich da-
nych wejściowych. Wtedy /(R^K^) = R'4 XOR L'3 dla ;' = 1,2. Zatem
róŜnicę pomiędzy wynikami S-boksów w ostatniej rundzie moŜna wy-
liczyć jako

(R\ XOR L\) XOR (R\ XOR Lj) = (R\ XOR R\) XOR (L\ XOR LQ.
Problem jest w tym, Ŝe wartość L3 XOR lĄ nie jest znana. Gdybyśmy byli
w stanie ją jakoś wyznaczyć, to tym samym moglibyśmy przeprowa-
dzić kryptoanalizę róŜnicową S-boksów ostatniej rundy, a tym samym
bity klucza wykorzystywane w ostatniej rundzie. Brakujące bity moŜna
szybko znaleźć metodą prób i błędów.
Jakkolwiek róŜnicę L\ XOR L3 nie da się obliczyć bezpośrednio, moŜna
to uczynić z pewnym prawdopodobieństwem. ZałóŜmy, Ŝe Lj XOR L§ =
00808200* oraz R\ XOR R2Q = 60000000*. Wybór takich róŜnic jest po-
dyktowany faktem, Ŝe jeśli róŜnica pomiędzy danymi wejściowymi dla
S-boksów rundy wynosi 60000000*, to z prawdopodobieństem 14/64
róŜnica pomiędzy wynikami wynosi 00808200*. ZałóŜmy na chwilę, Ŝe
róŜnica pomiędzy wynikami S-boksów pierwszej rundy faktycznie wy-
nosi 00808200*. Wtedy

R{xORRf = (LlxORf(Rl,Kx)) XOR (L§XOR/(R§,iCi)) =


(Li XOR Li) XOR (f(RlK1)XORf(RlK1)) =
00808200* XOR 00808200* = 00000000*
186
Kryptografia

Zatem

R\X0RRl = (L\X0Rf(R\,K2)) XOR (lĄxORf(R\,Kz)) =


(L\XORL\) XOR (f(R\)K2)XORf(RlK3))
= (Rl XOR Rl) XOR 00000000* = 60000000*

Dla trzeciej rundy przyjmijmy to samo załoŜenie, Ŝe jeśli róŜnica pomiędzy


danymi wejściowymi S-boksów wynosi 60000000*, to z praw-
dopodobieństwem 14/64 róŜnica wyników wynosi 00808200*. Wtedy

R^XORR^ = (L\xORf(R\,K3)) XOR {h\ XOR f{R\,K3))


= (L\X0RL\) XOR {f(R\,Ki)XORf(R22,K3))
= (R\ XOR R\) XOR 00808200*
= 00000000* XOR 00808200* = 00808200*.

Wtedy

L\ XOR L\ = R\ XOR R\ - 00808200*.

Jeśli przyjmiemy, Ŝe załoŜenia dla pierwszej i trzeciej rundy są niezaleŜne, to


oba będą spełnione równocześnie z prawdopodobieństwem (14/64)2 « 0.048.
Poprzez charakterystykę rozumiemy

>■ zestaw wartości dla L] XOR Lj, R] XOR R? (i przebiega od 0 do k,


gdzie k jest ostatnią rundą braną pod uwagę przez charakterystykę)
oraz
>■ prawdopodobieństwo, Ŝe dla losowej pary danych wejściowych o
podanej przez charakterystykę róŜnicy po kaŜdej rundzie róŜnice są
zgodne z róŜnicami podanymi przez charakterystykę.

Dla przykładu, nasze powyŜsze rozwaŜania wyznaczają charakterystykę dla


3 rund z prawdopodobieństwem około 0.048. Wiele tego typu charakterystyk
moŜna znaleźć, zadanie to jest tym trudniejsze, im większe ma być
prawdopodobieństwo i liczba rozwaŜanych rund.
Powróćmy teraz do prób złamania DES-a złoŜonego z 4 rund. W tym celu
wielokrotnie powtarzamy następujące kroki:

187
M. Kutyłowski, W.-B. Strothmann

1. losowo wybieramy parę danych wejściowych o róŜnicy równej


0080820060000000* i szyfrujemy oba ciągi,

2. zakładając, Ŝe róŜnica lĄ XOR lĄ wynosi 00808200, przeprowa-


dzamy kryptoanalizę róŜnicową dla ostatniej rundy.

Dla wszystkich prób prowadzimy statystykę otrzymanych „moŜliwych


kluczy". Dla kaŜdego klucza prowadzimy statystykę, ile razy wystąpił
jako „moŜliwy klucz". W przypadkach, gdy załoŜenie co do róŜnicy
L3 XOR L3 jest fałszywe, wszystkie klucze są podawane z podobnymi
prawdopodobieństwami. Gdy jednak załoŜenie to jest spełnione (a
zachodzi to dla około 4,8% przypadków), to prawdziwy klucz zostanie
z pewnością wskazany jako jeden z „moŜliwych kluczy". Wynika z
tego, Ŝe w naszych statystykach prawdziwy klucz powinien występo-
wać wyraźnie częściej niŜ inne klucze. Oczywiście, by tę statystyczną
prawidłowość odkryć, trzeba dysponować odpowiednio duŜą liczbą
eksperymentów. PoniewaŜ dla charakterystyk opisujących duŜą ilość
rund prawdopodobieństwo jest bardzo małe, moŜemy być zmuszeni do
przeprowadzenia statystyki dla olbrzymiej liczby par danych wej-
ściowych.

12.2.2. Kryptoanaliza liniowa


Liniowa kryptoanaliza jest dziś najbardziej efektywną metodą kryp-
toanalizy DES-a. Wymaga średnio 243 par tekst jawny-kryptogram dla
znalezienia klucza (atak typu known plaintext). Metoda ta została od-
kryta i opublikowana stosunkowo niedawno i, jak się okazało, nie była
brana pod uwagę podczas projektowania DES-a. Tak jak kryptoanaliza
róŜnicowa okazała się bardzo efektywnym narzędziem do wykazy-
wania, iŜ wiele nowo projektowanych metod szyfrowania nie jest bez-
piecznych.

Liniowa aproksymacja S-boksów: chociaŜ S-boksy nie obliczają ła-


twych do przedstawienia funkcji (na przykład funkcji liniowych), nie
znaczy to, Ŝe funkcji tych nie da się przedstawić w przybliŜeniu przez
proste formuły.
188
Kryptografia

Dla pojedynczego S-boksu S rozwaŜamy formuły postaci


ijx XOR ij2 XOR • • • XOR ije = ohl XOR 0hl XOR • • • XOR 0h ,

gdzie odpowiednio is oraz os oznaczają s-ty bit danych wejściowych i danych


wyjściowych. Ze względu na zasady konstrukcji S-boksów równość taka nie
moŜe zachodzić dla wszystkich danych wejściowych. Nam wystarcza jednak,
gdy jest stosunkowo często albo stosunkowo rzadko spełniona. Jeśli tak
jest, to mówimy Ŝe formuła ta liniowo aprok-symuje S-boks S.
Na przykład, S-boks S5 moŜe być scharakteryzowany przez formułę
z4 = o0 XOR Oi XOR 02 XOR 03.

Równość ta zachodzi dla ok. 19% danych wejściowych. MoŜna więc


załoŜyć, Ŝe
Z4 = -n(o0 XOR Oi XOR 02 XOR 03)

i będzie to prawdą dla ok. 100% -19% = 81% przypadków (waŜne jest więc,
by udział procentowy przypadków, dla których dana równość zachodzi,
odbiegał jak najbardziej od 50%). W powyŜszej formule moŜna następnie
zastąpić z'4 poprzez XOR odpowiedniego bitu klucza i bitu danych
wejściowych rundy.
Z formuł aproksymujących liniowo pojedyncze S-boksy moŜna zbudować
formuły opisujące związki pomiędzy danymi wejściowymi rundy, bitami
klucza oraz wynikami rundy. Oczywiście, związki te zachodzą tylko
statystycznie dla stosunkowo duŜej lub stosunkowo małej liczby danych
wejściowych. Formuły dla poszczególnych rund moŜna powiązać ze sobą.

Przykład: dla DES-a z trzema rundami moŜna wyprowadzić następujące


formuły aproksymujące zachowanie algorytmu:
XOR (p7, pw, p24, P29, P47, C7, Cis, C24, C29, C47) = k\2 XOR ^2 (12.1)

gdzie pi oznacza i-ty bit tekstu jawnego, Cj oznacza /-ty bit krypto-gramu, k"
zaś oznacza u-ty bit klucza w-tej rundy. Równość (12.1) zachodzi z
prawdopodobieństwem q dla losowo wybranego tekstu jawnego (q jest
znane, ale nie będziemy q podawać).

189
M. Kutyłowski, W.-B. Strothmann

Dla grupy m losowo wybranych tekstów jawnych wyliczamy wartość stojącą


po prawej stronie równości (12.1). Niech r będzie liczbą przypadków, w
których otrzymaliśmy 1 (tym samym 0 otrzymujemy w m — r
przypadkach). Na podstawie wartości r/m oraz ą przyjmujemy teraz
następującą wartość dla k -■ k\2 XOR k\2'-
Przypadek 1: q > 0.5
wtedy k := 0, jeśli r/m < 0.5, oraz k := 1, jeśli r/m > 0.5,
Przypadek 2: q < 0.5
wtedy k :— 0, jeśli r/m > 0.5, oraz k := 1, jeśli r/m < 0.5.
Prawdopodobieństwo, Ŝe w ten sposób właściwie określamy wartość k zaleŜy
od \q — 0.5|, liczby tekstów jawnych m oraz od tego, jak dobrze liczba ą jest
aproksymowana przez r/m lub 1 — r/m. Oczywiście, im większe m, tym
większe jest prawdopodobieństwo, Ŝe przyjęta wartość k jest poprawna.
UŜywając standardowych narzędzi statystyki matematycznej moŜna
wyznaczyć minimalną wartość m, tak aby wartość k wyznaczona powyŜej
była prawidłowa z prawdopodobieństwem, na przykład, ponad 99%.
PoniewaŜ dla równości aproksymujących zachowanie DES-a z 16 rundami
prawdopodobieństwa są bliskie 0.5, powoduje to konieczność wykonania
obliczeń dla duŜej liczby par tekst jawny-kryptogram, aby móc skorzystać ze
statystycznych prawidłowości.

12.2.3. RóŜnicowa kryptoanaliza błędów


RóŜnicowa kryptoanaliza błędów jest skutecznym narzędziem stosowanym
do wyznaczenia hasła zapisanego wewnątrz urządzenia kryptograficznego
czy smart card. PoniewaŜ bezpośredni odczyt nie jest moŜliwy, stosuje się
dość perfidną metodę ataku polegającą na zaburzaniu pracy układu poprzez
poddawanie go zakłóceniom zewnętrznym i analizie powstających
kryptogramów (zakłócenia te mają postać, na przykład, promieniowania
mikrofalowego). Szczególnie podatne na tego typu atak są metody
szyfrowania składające się z wielu rund, w trakcie których uŜywane są
poszczególne bity klucza. Do tej kategorii naleŜą, na przykład, DES oraz
IDEA. W trakcie takiego ataku urządzenie kryptograficzne (lub karta) moŜe
ulec zniszczeniu, kiedy indziej jednak moŜna w ten sposób wyznaczyć tajny
klucz w nim zawarty. RóŜ-

190
Kryptografia

nicowa kryptoanaliza błędów kaŜe więc na nowo rozwaŜyć problem ochrony


danych: urządzenie kryptograficzne nie gwarantuje juŜ nienaruszalności
zawartego w nim hasła.

Idea ataku: dla wyjaśnienia idei ataku rozpatrzymy układ szyfrujący


algorytmem DES przy uŜyciu nieznanego klucza K. Jeśli urządzenie
kryptograficzne jest poddawane zaburzeniom, to pojedyncze bity w
urządzeniu ulegają przekłamaniu. Ilość przekłamań zaleŜy statystycznie od
natęŜenia zaburzeń. Metodą prób i błędów moŜna wyznaczyć takie natęŜenie
zaburzeń, Ŝe ze stosunkowo duŜym prawdopodobieństwem co najwyŜej
jeden bit ulega przekłamaniu. NatęŜenie to wyznaczamy szyfrując
wielokrotnie ten sam tekst jawny. Jest to takie natęŜenie pola, Ŝe często
Ŝadne przekłamania nie występują, ale jednocześnie moŜna uzyskać
wystarczającą ilość szyfrowań z przekłamaniami.
Spośród przekłamanych kryptogramów chcemy następnie wyodrębnić te,
które odpowiadają przekłamaniom bitów będących danymi wejściowymi S-
boksów w ostatniej rundzie. Szyfrowania, w ramach których przekłamany
został jakiś bit we wcześniejszej rundzie, moŜna rozpoznać wskutek
działania efektu lawinowego: ilość zaburzonych bitów kryptogramu jest duŜa
i nie ograniczona do wyniku pojedynczego S-boksu i odpowiedniego bitu w
drugiej połowie kryptogramu.
Dla wyodrębnionych zaburzonych obliczeń i szyfrowania niezaburzo-nego
prowadzimy kryptoanalizę róŜnicową S-boksów ostatniej rundy. Jest to
moŜliwe, gdyŜ (stosując oznaczenia z rozdziału 12.2.1) róŜnica między
wynikami S-boksów ostatniej rundy daje się wyliczyć jako

(R\6 XOR L\5) XOR (R2U XOR Lis)


= (R\6 XOR R\6) XOR (L\5 XOR l\5) = R\6 XOR R216.

Ostatnia równość zachodzi, gdyŜ, jak załoŜyliśmy, nie zostaje przekłamany


Ŝaden bit poza danymi wejściowymi S-boksów ostatniej rundy.
Przyjęte załoŜenia nie muszą zawsze być prawidłowe, ale są często
spełnione. Dzięki temu szukany klucz wystąpi stosunkowo często na liście
„moŜliwych kluczy".

191
M. R.utyłowski, W.-B. Strothmann

192
Dodatek A
I
Wybrane
aspekty teorii
liczb
M. Kiityłowski, W.-B. Strothmann

236
A.0.2.1. Arytmetyka modularna

Niech n będzie dowolną liczbą naturalną. Dla x € N przez x mod n


oznaczamy resztę z dzielenia x przez n. Zbiór reszt modulo n, czyli {0,1,... , n
— 1} oznaczamy przez Zn. W zbiorze tym moŜna wykonywać dwie operacje:
x jest sumą y, z moduło n, jeśli y + z = x mod n; x jest iloczynem (lub
produktem) y, z modulo n, jeśli y -z = x mod n. Operacje te mają szereg
naturalnych własności (takich jak łączność, prze-mienność, rozdzielność
dodawania względem mnoŜenia). Pewne własności są jednak specyficzne:
jeśli n jest liczbą złoŜoną, powiedzmy n = p ■ q dla p,q < n, wtedy iloczyn p
i q jest równy zero w Z„ , bowiem p ■ q = n = 0 mod n.

A.0.2.2. Chińskie twierdzenie o resztach

Przypomnijmy chińskie twierdzenie o resztach:

Twierdzenie 24. Niech q\,... ,q s będą względnie pierwsze, a\,... ,as będą
dowolnymi liczbami. Wtedy istnieje dokładnie jedna liczba x < q\ • ... • qs,
taka Ŝe dla kaŜdego i < s

x = aj mod qv

Inaczej mówiąc, wybierając dowolne «, < q-{ dla i < s wyznaczamy jed-
noznacznie liczbę x £ Zqy....qs, taką Ŝe x — «, mod q1 dla / < s.
Z chińskiego twierdzenia o resztach wynika natychmiast następujący
wniosek:

Wniosek 25. Niech q\,... ,qs będą względnie pierwsze, q — q\ ■ ... ■ qs oraz x,
y £ Zq . Wtedy x = y, jeśli dla kaŜdego i < s zachodzi x — y mod qj.

237
M. Kutyłowski, W.-B. Strothmann

A.0.2.3. Algorytm Euklidesa

Algorytm Euklidesa jest klasyczną metodą słuŜącą do obliczania naj-


większego wspólnego dzielnika. Dla danych a, b wyznacza on ciąg liczb
naturalnych ro, r\, ... , rm, taki Ŝe

r0 = a, rx-b
ri = ąi+i ■ ri+i + ri+2, gdzie ri+2 < r,-+1, dla i < m - 2

(to znaczy kolejne r!+2 jest otrzymywane poprzez dzielenie z resztą r, przez
ri+x). Wtedy NWD(a, b), największy wspólny dzielnik a i b, jest równy rm.
W trakcie działania algorytmu Euklidesa moŜna wyznaczyć liczby całkowite
u, v, takie Ŝe

u-a + vb = NWD(a,b).

Definiujemy mianowicie liczby to,... ,t m :

to = 0, fi = 1,
ti+2 = U ~ tfi+\ ' U+\ dla i < m — 2.

Łatwo sprawdzić, Ŝe wtedy r; — iyb mod a. Stąd

NWD(«, b) — rm = tm ■ b mod a.

Zatem v = tm oraz u = (NWD(a, b) — v ■ b)/a.

A.0.2.4. Elementy odwrotne modulo n

Mówimy, Ŝe x jest elementem odwrotnym do y modulo n, jeśli x ■ y = 1


rnod n. W tej sytuacji piszemy teŜ x = l/y mod n lub x = y~l mod n,
jakkolwiek operacja dzielenia modulo n nie była dotychczas definiowana.
Algorytm Euklidesa moŜna zastosować do znajdywania elementów od-
wrotnych w Z„ . Istotnie, jeśli x < n oraz x, n są względnie pierwsze, to na
mocy przedstawionej powyŜej konstrukcji zastosowanej dla YQ = n, r\ = x
znajdujemy tm , takie Ŝe tm ■ x = 1 mod n.

238
Kryptografia

Jeśli NWD(x, n) = p > 1, wtedy x nie ma elementu odwrotnego modulo n.


Istotnie, ax mod n jest liczbą postaci ax — kn, a więc podzielną przez p. W
związku z tym nie moŜe to być 1.

A.0.2.5. Twierdzenie Eulera

Niech (p(n) będzie liczbą liczb naturalnych, mniejszych od n, które są


względnie pierwsze z n. Oczywiście <p{p) = p — 1, jeśli p jest liczbą
pierwszą. Łatwo sprawdzić, Ŝe jeśli p, ą, p ■£ ą są liczbami pierwszymi, to
<p(p ■q) = (p — l)(q — 1) (bo liczby mające wspólne z pa dzielniki większe
od 1 to p, 2p, ..., p{ą - 1), q,2q,. . . , q(p - 1)).

Twierdzenie 26. (twierdzenie Eulera)


Niech x < n oraz x, n będą względnie pierwsze. Wtedy
xv{n) - 1 mod n. W szczególności, jeśli n
jest liczbą pierwszą, to

xn~l = 1 mod n.

Ostatnia równość jest nazywana twierdzeniem Fermata.

A.0.2.6. Generatory

Niech Z* będzie zbiorem {x < n : NWD(x. n) = 1}. Jest to więc zbiór


elementów odwracalnych modulo n.

Twierdzenie 27. Niech p będzie liczbą pierwszą. Wtedy istnieje generator


Z*, to znaczy taki element g e Z*p, Ŝe
dla kaŜdego x e Z* istnieje i dla którego x = g' mod p.

Niech p będzie liczbą pierwszą oraz g będzie generatorem Z* . Z twierdzenia


Eulera wynika, Ŝe g1 = g'mod(p-'1) mod p. Stąd, dla x G Z* istnieje i, takie Ŝe
g* = x mod p oraz 0 < i < p — 1. PoniewaŜ jest p — l elementów w Z*, więc
elementy g°, g1,... , g?~l są
parami róŜne. W szczególności gl ^ 1 mod p dla i < p — 1.
Istnieje wiele generatorów w Z* . Jeśli g jest generatorem, to gl jest teŜ
generatorem, o ile NWD(i, p — 1) = 1.

239
M. Kutyłowski, W.-B. Strothmann

Lemat 28. Niech a będzie liczbą pierwszą. Niech G będzie zbiorem takich ele-
mentów g E Z*p, dla których g? == 1 mod p. Wtedy kaŜdy element G oprócz 1
jest generatorem G.

Dowód. Niech g e G, g ^ 1. Wystarczy pokazać, Ŝe dla i = 0,... , ą — 1


elementy g' są parami róŜne. Istotnie, wtedy g generuje ą róŜnych ele
mentów, zatem cały zbiór G. ZałóŜmy więc, Ŝe g' — g' mod p dla j <
i < q. Wtedy g'~> — 1 mod p. PoniewaŜ i- j <q oraz ą jest liczbą pierw
szą, więc istnieją liczby u,v, takie Ŝe u(i — j) + vc\ = 1. Stąd g"('-/)+z"? =
g mod p. Ale g«('W>+w? = (^"-;)» ■ (gfl)P = 1 mod p. Zatem g = 1 mod p,
sprzeczność. □

A.0.2.7. Pierwiastki modulo n

Mówimy, Ŝe y jest resztą kwadratową modulo n, jeśli istnieje x, takie Ŝe xz —


y mod n. W takim przypadku mówimy teŜ, Ŝe x jest pierwiastkiem z y
modulo n. Zacznijmy od wyznaczenia pierwiastków modulo liczba pierwsza.

Lemat 29. Jeśli p jest liczbą pierwszą i x2 = 1 mod p, to x — 1 mod p lub x — —


1 mod p.

Dowód. Jeśli x2 — 1 mod /?, to x2 — 1 = 0 mod p, a zatem p dzieli x2 -


1 = (x + l)(x — 1). PoniewaŜ p jest liczbą pierwszą, więc p dzieli x + l
albo x — 1. Inaczej mówiąc, x — — 1 mod p lub x — 1 mod p.

Lemat 30. Mec/t p będzie liczbą pierwszą, g generatorem Z* , 0 < x < p ,


oraz x = g' mod p. Wtedy

>~ x nie jest resztą kwadratową, jeśli i jest nieparzyste, >~

xma dokładnie dwa pierwiastki, jeśli i jest parzyste.

W ostatnim przypadku, jeśli y2 = x mod p t o p — yjest drugim pierwiastkiem


z x modulo p.

Dowód. Jeśli i jest parzyste, powiedzmy i = 2/, to g> mod p jest pier-
wiastkiem z x modulo p. Jeśli \ jest nieparzyste, powiedzmy i = 2t + 1,

240
Kryptografia

to x nie ma pierwiastka modulo n. Istotnie, gdyby g* mod p było pier-


wiastkiem z x, to (g1)2 = g2'"1"1 mod p. Stąd 2s = 2t + 1 mod (p — 1). Zatem
(p — l)|2(f — s) + 1. Sprzeczność, gdyŜ p — 1 jest liczbą parzystą, a 2(t —
s) +1 liczbą nieparzystą.
Jeśli y2 = x mod p, to (p - y)2 = p2 - 2py + y2 = y2 mod p. Zatem p — y jest
równieŜ pierwiastkiem z *.
PokaŜemy teraz, Ŝe jeśli y\, y2 s3 róŜnymi pierwiastkami z x, to wtedy
y\ = -yi mod p. Istotnie, y\ - y\ - 0 mod p, czyli (yx - y2) • (yi + y2) =
0 mod p. Zatem p dzieli yi — y2 lub yi + y2. Pierwszy przypadek ozna
czałby, Ŝe y\ = y2 mod p, zachodzi więc drugi przypadek, czyli yx +
y2 = 0 mod p. Zatem y\ — —y2 niod p. □

Lemat 31. Mec/z p bedzze Ziczfr^ pierwszą, p = 3 mod 4 oraz x < p. Wtedy x
albo —x mod p/es£ reszto kwadratową (ale nie obie te liczby).

Dowód. Niech g będzie generatorem Z* . Po pierwsze zauwaŜmy, Ŝe g(v-i)/2


2 2 l -1 2
= _x mod v 1^0^ (^(P-D/ ) = gP~ = l mod p. Widzimy zatem g(P )/ mod p jest
pierwiastkiem z 1 modulo p. Nie moŜe to być 1, gdyŜ 1= g° mod w, a dla i €
[0, p - 1] liczby g°, g1,... , g?~2 są parami róŜne. Zatem musi to być drugi
pierwiastek z 1, tj. -1 mod p.
Niech x = gl mod n. Wtedy —x = ^'+(P~1V2 mod p. PoniewaŜ (p — l)/2
jest nieparzyste, więc i albo i + (p - l)/2 jest parzyste. Tym samym x
albo —x mod p jest resztą kwadratową modulo p. □

Lemat 32. Medi p będzie liczbą pierwszą, taką Ŝe p = 3 mod 4. Jeśli x jest
resztą kwadratową modulo p, to x(P+1V4 mod pjest pierwiastkiem z x modulo p
będącym resztą kwadratową modulo p.

Dowód. Niech z i —z mod p będą pierwiastkami kwadratowymi z x modulo


p. Jeden z nich, powiedzmy z, jest resztą kwadratową. Niech y2 = z mod p.
Wtedy x^+1^ą = (y4)<P+1)/4 = yP+1 = yv~l -y2 = z mod p. □
Przypomnijmy teraz nieco zaskakujący rezultat związany z pierwiastkami
modulo n, gdy «jest liczbą złoŜoną.

Lemat 33. Niech p, ą będą liczbami pierwszymi, n — p-ą oraz x < n. Jeśli x
ma pierwiastek, to istnieją dokładnie 4 pierwiastki z x modulo n.

241
M. Kutyłowski, W.-B. Słrothmann

Dowód. Niech y2 = x mod n. Na tej podstawie wskaŜemy 4 pierwiastki z x


modulo n. Niech yp — y mod p, yq = y mod ą, yp < p, yq < q, oraz sp,sq G { —
1,1}. Na podstawie chińskiego twierdzenia o resztach istnieje dokładnie
jedna liczba z < n, taka Ŝe z = sp- yp mod p oraz z = sq-yq mod <f. Poprzez
podniesienie do kwadratu otrzymujemy z tych równości z2 = y2, = y2 = x
mod p, z2 = y2 = y2 = x mod ą. Zatem na podstawie chińskiego twierdzenia o
resztach otrzymujemy z2 = x mod n. PoniewaŜ sp,sq było dowolną
kombinacją liczb 1, —1, otrzymujemy w ten sposób cztery pierwiastki z x
modulo n.
PokaŜemy teraz, Ŝe znalezione liczby są wszystkimi pierwiastkami /. x.
Niech mianowicie s2 = x mod n. Wtedy s2 = x mod p oraz s2 = x mod CJ.
Zatem s = ±y mod p oraz s = ±y mod rj na podstawie lematu 30. Stąd s jest
jednym z wyznaczonych wcześniej pierwiastków.

242
Dodatek
Teoria
algorytmów
M. Kiityłowski, W.-B. Strothmann

244
B.0.2.8. ZłoŜoność obliczeniowa
Aby mówić konkretnie o złoŜoności obliczeniowej algorytmu, naleŜy
ustalić dokładnie załoŜenia o komputerze, na którym dokonywane są
obliczenia. Jedno z wielu moŜliwych podejść to zdefiniowanie maszyny
RAM: składa się ona z procesora i szeregu rejestrów. KaŜdy z rejestrów
moŜe przechowywać liczby całkowite w postaci binarnej o dowolnej
długości (lub inaczej: ciągi bitowe dowolnej długości). Operacje wyko-
nywane przez procesor to: kopiowanie, proste operacje arytmetyczne
(dodawanie, odejmowanie, dzielenie przez 2 itp.) oraz operacja GOTO.
Czas wykonywania operacji jest proporcjonalny do długości liczb za-
wartych w rejestrach, na których dokonywane są operacje. Maszyna
RAM korzysta z programu zapisanego w rejestrach. Pojedynczy krok
polega na wykonaniu operacji wskazanej w bieŜącym rejestrze. Po wy-
konaniu tej operacji wskaźnik do bieŜącego rejestru jest powiększany o
1, z wyjątkiem operacji GOTO, gdy wskaźnik ten jest uaktualniany
zgodnie z podanym argumentem (jest to podana stała lub zawartość
podanego rejestru).
Mówimy, Ŝe algorytm A ma złoŜoność czasową /, jeśli dla dowolnego
n i dowolnego argumentu x składającego się z n bitów łączny czas wy-
konywania A jest co najwyŜej f(n). Jeśli funkcja / jest wielomianem, to
mówimy o czasie wielomianowym.
Niech g będzie funkcją o wartościach 0,1, taką Ŝe pewien algorytm A
oblicza g(x) dla kaŜdego argumentu x oraz A ma wielomianową zło-
Ŝoność czasową. Wtedy mówimy, Ŝe g naleŜy do klasy P. Mówi się, Ŝe
P jest klasą „efektywnie obliczalnych" funkcji o wartościach 0,1 (przy-
najmniej w sensie teoretycznym). Interesujące jest, Ŝe jeśli przyjmiemy
inny rozsądny model obliczeń, na przykład maszynę Turinga, to otrzy-
mamy tę samą klasę P.
Niech \x\ oznacza długość ciągu bitowego x. Klasa NP składa się z ta-
245
M. Kutyłowski, W.-B. Strothmann

kich funkcji h o wartościach 0,1, dla których istnieje algorytm B o wie-


lomianowej złoŜoności czasowej i wielomian w, takie Ŝe dla dowolnego
x:

h(x) = 1 wtedy i tylko wtedy, gdy istnieje y taki, Ŝe


B(x, y) = 1 oraz \y\ <w{\x\).

Oczywiście klasa P jest podzbiorem klasy NP. Dla szeregu waŜnych


dla zastosowań praktycznych funkcji h pokazano, Ŝe h € NP, natomiast
pytanie, czy h G P, pozostało otwarte. Problem, czy P =£ NP, jest jednym
z waŜniejszych, nierozwiązanych problemów informatyki teoretycznej.
Powszechnie jednak uwaŜa się, iŜ klasy te są róŜne.
NajwaŜniejszą podklasę klasy NP tworzą funkcje NP-zupełne. Są to w
pewnym sensie najtrudniejsze funkcje w klasie NP. Mianowicie, jeśli
dla jakiejkolwiek NP-zupełnej funkcji / pokaŜemy, Ŝe leŜy ona w klasie
P, to tym samym udowodnimy równość P = NP. Wobec przekonania,
Ŝe P ^ NP, naleŜy oczekiwać, Ŝe nie istnieje algorytm wielomianowy
obliczający wartości funkcji /.
Dla wielu funkcji pokazano równieŜ, Ŝe nie naleŜą one nawet do NP, a
tym samym nie są efektywnie obliczalne.

B.0.2.9. Algorytmy randomizacyjne


W wielu przypadkach wygodnie jest wyposaŜyć maszynę, na której
wykonujemy obliczenia, w generator losowych liczb lub bitów. W naj-
prostszym przypadku (i najczęściej stosowanym) na kaŜde Ŝądanie ge-
nerator ten losuje bit w sposób niezaleŜny od reszty obliczeń i tak, Ŝe
prawdopodobieństwo otrzymania jedynki wynosi 0.5. Algorytm wy-
konywany na takiej maszynie nazywamy algorytmem randomizacyj-
nym. Oczywiście dla zadanego argumentu algorytm randomizacyjny
moŜe dać róŜne odpowiedzi w zaleŜności od wyników generowania
losowych bitów, a czasem nie daje ich wcale. Dla podkreślenia, Ŝe algo-
rytm nie korzysta z Ŝadnego generatora bitów losowych nazywa się go
algorytmem deterministycznym.
Mówimy, Ŝe prawdopodobieństwo błędu dla algorytmu randomiza-
cyjnego jest ograniczone przez e, jeśli dla kaŜdego moŜliwego argumentu
prawdopodobieństwo uzyskania błędnej odpowiedzi lub nieuzyskania
Ŝadnego wyniku jest co najwyŜej e. Jeśli prawdopodobieństwo błędu
246
Kryptografia

jest znikome, na przykład w porównaniu do moŜliwości wystąpienia


błędu sprzętowego, to taki algorytm randomizacyjny jest w praktyce
równie niezawodny, jak te, które nie mylą się w ogóle.
Okazuje się, Ŝe wiele jest problemów, dla których znaleziono dobre
algorytmy randomizacyjne, a zarazem Ŝadne deterministyczne algo-
rytmy o porównywalnej jakości nie są znane.

247
Słowniczek polsko-angielski

algorytm randomizacyjny- DES, permutacja z


randomized algorithm rozszerzeniem-
algorytm deterministyczny- extension permutation
deterministic algorithm dowód interakcyjny- interactive
analiza częstotliwości- proof dowód z wiedzą
freąuency analysis zerową- zero
asymetryczne szyfrowanie- knowledge proof
public-key encryption dyskretny logarytm- discrete
atak przez powtórzenie- repeat logarithm dzielenie
attack atak słownikowy- tajemnic- secret
dictionary sharing dzielenie
attack atak urodzinowy- tajemnic z progiem-
birthday secret sharing with
attack bezpieczeństwo threshold efekt
doskonałe- lawinowy- avalanche effect
perfect security elektroniczna ksiąŜka kodowa-
certyfikat- certificate electronic codebook
chińskie twierdzenie o funkcja hashująca, silnie
resztach- Chinese bezkonfliktowa- strong
remainder theorem collision-free hash
szyfr- cipher DES, function funkcja
charakterystyka- hashująca, słabo
characteristic DES, bezkonfliktowa- weak
collision-free hash
permutacja końcowa-
function funkcja
final permutation DES,
jednokierunkowa-
permutacja początkowa-
one-way function
initial permutation DES,
jednokierunkowa funkcja
permutacja z kompresją-
hashująca- one-way
compression permutation
248
Kryptografia

hash function kanał reszta kwadratowa- ąuadraiic


podprogowy- subliminal residue rozkład na
channel czynniki pierwsze-
klucz- key factonzation S-
klucz pierwotny- yrimary key boks- S-box superrosnący
klucz prywatny- prruate key klucz wektor-
superincreasing vector
publiczny- public key klucz
symetryczne szyfrowanie-
sesyjny- session key klucz
symmetric encryption
wtórny- secondary key szyfrowanie- encryption
kryptoanaliza- cryptanalysis szyfrowanie blokowe- błock
kryptoanalizy problem- encryption szyfrowanie
cryptanalysis problem strumieniowe-
kryptogram- ciphertext krzywa stream encryption
eliptyczna- elliptic szyfrowanie z kluczem
cuwe liniowa jawnym- public-key
kryptoanaliza- linear cryptosystem
cryptanalysis maszyna z szyfrowanie- encryption ślepy
wyrocznią- oracie podpis- blind signature świadek-
machinę witness tekst jawny- plaintext
niezaprzeczalny podpis teoria złoŜoności
cyfrowy- undeniable obliczeniowej-
signature paradoks complexity theory test
urodzinowy- birthday pierwszości- pńmality test trudny
bit- hard bit ukryte drzwi- trap
paradox pieniądze
door urządzenie kryptograficzne-
cyfrowe- digital cash plecakowe
cryptographic facility
szyfrowanie- uwierzytelnia nie-
knapsack cryptosystem authentication
podklucz rundy- round key podpis uzgadnianie kluczy- key
cyfrowy- digital agreement
signature zarodek ciągu
pseudolosowy ciąg- pseudolosowego- seed
pseudo-random string of pseudo-random string
róŜnicowa kryptoanaliza zobowiązanie bitowe- bit
błędów- differential commitment
fault cryptanalysis
róŜnicowa kryptoanaliza-
differential cryptanalysis
249
Słowniczek angielsko-polski

authentication- uwierzytelnianie permutacja z kompresją


avalanche effect- efekt lawinowy DES, extension permutation-
birthday attack- atak permutacja z
urodzinowy birthday rozszerzeniem DES,
paradox- paradoks finał permutation-
urodzinowy bit permutacja końcowa
commitment- zobowiązanie DES, initial permutation-
bitowe blind signature- permutacja początkowa
ślepy podpis błock encryption- deterministic algorithm-
szyfrowanie algorytm
blokowe Chinese
deterministyczny
remainder theorem-
dictionary attack- atak
chińskie twierdzenie o
resztach słownikowy
certificate- certyfikat differential cryptanalysis-
ciphertext- kryptogram róŜnicowa kryptoanaliza
cipher- szyfr complexity differential fault crypranalysis-
theory- teoria róŜnicowa kryptoanaliza
złoŜoności obliczeniowej błędów digital cash-
cryptanalysis problem- pieniądze cyfrowe digital
kryptoanalizy problem signature- podpis cyfrowy
cryptanalysis- kryptoanaliza discrete logarithm- dyskretny
cryptographic facility- logarytm
urządzenie electronic codebook-
kryptograficzne elektroniczna ksiąŜka
DES, characteristic-
charakterystyka kodowa elliptic curve-
DES, compression krzywa eliptyczna encryption-
permutation- szyfrowanie encryption-
szyfrowanie

250
M. Kutyłowski, W.-B. Strothmann

witness- świadek zero knowledge


proof- dowód z wiedzą zerową

252
Indeks
A5, 224 certyfikat, 217
algorytm CFB, 39
deterministyczny, 246 CFS, 226
randomizacyjny, 246 challenge and response, 131
analiza częstotliwości, 17 charakterystyka, 187
asymetryczne szyfrowanie, 4, 51 chińskie twierdzenie o resztach,
atak 237 chosen ciphertext,
chosen ciphertext, 181 atak, 181 chosen plaintext, atak,
chosen plaintext, 181 181 cipher feedback (CFB), 39
ciphertext only, 181 known ciphertext only atak, 181 Clipper,
plaintext, 181 liniowa 11
kryptoanaliza, 188 man in cryptographic file system, 226
the middle, 156 meet in the częstotliwości analiza, 17
middle, 35, 95 przeciw ECB,
37 przez powtórzenie, 153 Data Encryption Standard,
róŜnicowa kryptoanaliza, patrz DES, 29
183 róŜnicowa Daviesa schemat, 96
kryptoanaliza DES, 23, 29-10
błędów, 190 DESX, 34
słownikowy, 86 deszyfrowanie, 32
urodzinowy, 88 funkcja /, 32
permutacja końcowa, 31
bezpieczeństwo doskonałe, 21 permutacja początkowa, 31
Blum-Blum-Shub, generator permutacja z
(BBS), 107 Blum- rozszerzeniem, 32
Micali, generator, 107 podklucze rund, 31
runda, 31
Certificate Authority, 217 S-boks, 23
trzykrotny, 34
253
M. Kutyłowski, W.-B. Strothmann

Whitening, 34 FORTEZZA, 148, 222 FSS,


DESX, 34 protokół, 140 funkcja
Diffie-Hellmana protokół, 219 jednokierunkowa, 75 dyskretny
Diffie-Hellmana, protokół, 158 łogarytm, 79 plecakowa, 78
Digital Signature Algorithm, Rabina, 78 RSA, 78 funkcje
patrz DSA, 118 double hashujące, 83 słabo
spending, 172 dowód bezkonfliktowe, 83 silnie
interakcyjny, 132 dowód z wiedzą bezkonfliktowe, 83
zerową, 135 DSA, 118, 200 DSS jednokierunkowe, 83
(Digital Signature jednokierunkowe hashujące, 8
Standard), patrz DSA, 118
dyskretny łogarytm, 71, 79,107 GS, 143
dzielenie tajemnic, 151,152,165 Guillou-Quisquartera,
wartość progowa, 166 protokół, 143
XOR, 165
z progiem, 166 hard-core bit, 76
hashujące jednokierunkowe
ECB, 36 funkcje, patrz
efekt lawinowy, 24 Electronic jednokierunkowe funkcje
Codebook, 36 elektroniczna hashujące, 8
ksiąŜka kodowa
(ECB), 36 IDEA, 40-47
elektroniczne wybory, 175 algorytm, 42
EIGamala deszyfrowanie, 44
podpis cyfrowy, 117 podklucze, 44
protokół dla kanału przekształcenie końcowe, 47
podprogowego, 122 runda, 43
szyfrowanie, 70 Eulera szyfrowanie, 42
twierdzenie, 239 interlock, protokół, 163
ISDN, 222
Fairplay'a szyfrowanie, 19 Feige-
Fiata-Shamira protokół, Java, 216 jednokierunkowa
140 funkcja,
Fermata patrz funkcja
test pierwszości, 61 jednokierunkowa, 75
twierdzenie, 239 Fiata-
Shamira, protokół, 138

254
Kryptografia

jednokierunkowe funkcje kryptoanaliza, 4,181


hashujące, 8, 83 atak chosen ciphertext, atak, 181
meet in the middle, 95 chosen plaintext, atak, 181
słownikowy, 86 urodzinowy, ciphertext only, atak, 181
88 Daviesa schemat, 96 known plaintext, atak, 181
hashowanie długich liniowa, 188 róŜnicowa, 183
tekstów, 94 MAC, 86 charakterystyka, 187 rodzaje
Matyas-Meyer-Oseasa ataków, 181 róŜnicowa
schemat, 96 błędów, 190 RSA a rozkład na
MD5, 92 czynniki
Rabina schemat, 95 Secure pierwsze, 66
Hash Algorithm, 92 z systematyczne
hasłem, 86 zobowiązanie przeszukiwanie, 4
bitowe, 169 kryptoanalizy problem, 52
kryptograficzne protokoły,
kanał podprogowy, 121 patrz protokół, 163
Kerberos, 206, 207 kryptograficzny system plików,
Serwer, 208 226 kryptogram, 3
serwer klientów, 208 krzywa eliptyczna, 64,197, 200
Serwer Przyznawania
Biletów, 208 lawinowy efekt, 24
Ticket Granting Server, 208 LFSR (linear feedback shift
key ring, 229 klucz, 3 register), 104
generowanie, 148 shrinking, 106 liniowa
hierarchia kluczy, 150 aproksymacja
jawny, 5 S-boksów, 189 liniowa
pierwotny, 150 kryptoanaliza, 188
prywatny, 5,51
przechowywanie, 151 MAC, 86
publiczny, 5, 51 man in the middle, 156
sesyjny, 150 master key, 150
utrata, 152 urządzenia
wtórny, 150 known plaintext, kryptograficznego, 147
atak, 181 maszyna
RAM, 245
z wyrocznią, 68

255
M. Kutyłowski, W.-B. Strothmann

Matyas-Meyer-Oseasa schemat, EIGamala, 117 kanał


96 podprogowy, 121
MD5, 92,221 niezaprzeczalny, 123 protokół
meet in the middle, atak, 35, 95 uwierzytelniania,
Message Authentification Codę 144 ślepy, 120,173
(MAC), 86 podprogowy kanał, 121
Millera-Rabina test problem plecakowy, 53
pierwszości, 63 protokół
MTI, protokół, 159 challenge and response, 131
Diffie-Hellmana, 158, 219
notariusz elektroniczny, 8
dowód z wiedzą zerową,
NP, 245
135 dzielenie
Number Field Sieve, 60
tajemnic, 165 dzielenie
ochrona korespondencji, 6 tajemnic
Netscape Communicator, z progiem, 166
148 elektroniczne wybory, 175
PEM, 229 EIGamala dla kanału
PGP, 228 podprogowego, 122
one-time pad, 21 Feige-Fiata-Shamira, 140
Fiata-Shamira, 138 Guillou-
P,245 Quisquartera, 143 interlock,
Pakiet PGP, 228 163 Kerberos, 206, 207
paradoks urodzinowy, 88 kryptograficzny, 163 MTI,
PEM, 229 159
PGP, 10, 41, 63, 93, 228 pieniądze cyfrowe, 169
administracja kluczami, 229 podpisów cyfrowych
fingerprint, 228 EIGamala, 117
key ring, 229 pieniądze Schnorra, 140 SET, 232
cyfrowe, 169 pierwiastki z ssh, 206
jedności, 66 PIN, 196,197 STS (Station-to-Station), 159
plecakowa funkcja ślepy podpis (RSA), 120
jednokierunkowa, 78 uzgadniania kluczy, 152
plecakowe zobowiązanie bitowe, 167
deszyfrowanie, 55 pseudolosowe ciągi, 101
szyfrowanie, 53 generator, 104
podpis cyfrowy, 115
DSA, 118, 200

256
Kryptografia

Blum-Blum-Shub (BBS), bity dla S-boksów DES-a, 32


107 CFB, 40, 41 Daviesa schemat,
Blum-Micali, 107 97 dowód z wiedzą zerową,
LFSR, 104 135
RSA, 107 ECB, 37
shrinking LFSR, 106 Fairplay'a szyfr, 18,19 funkcja
poprzez szyfrowanie, 106 / DES-a, 33 IDEA,
własności, 102 zarodek, 102 deszyfrowanie, 45, 46 IDEA,
przekształcenie
Rabina końcowe, 47 IDEA,
funkcja jednokierunkowa, runda algorytmu, 43 Kerberos,
78 209, 211, 212 krzywa
schemat, 95 eliptyczna, 201-205 LSFR,
RC4,109 RC5,47 105 Matyas-Meyer-Oseasa
reszta kwadratowa, 107 schemat, 97 ochrona
RIPEM, 229 robak, 182 korespondencji, 7 Rabina
róŜnicowa kryptoanaliza, 183 schemat, 95 RSA wyrocznia
róŜnicowa kryptoanaliza dla ostatniego
błędów, 190 bitu, 68 symetryczne
RSA, 56 szyfrowanie, 3 szyfrowanie za
algorytm, 58 pomocą
deszyfrowanie, 58 S-boksów, 23 urządzenie
funkcja jednokierunkowa, kryptograficzne,
78 148
generator ciągów uwierzytelnianie, 6
pseudolosowych, 107
przemienność, 56 S-boks, 23
rozkład na czynniki kryteria konstrukcji, 24
pierwsze, 66 liniowa aproksymacja, 189
szyfrowanie, 58 schemat
ślepy podpis, 120 Daviesa, 96
test pierwszości, 61 Matyas-Meyer-Oseasa, 96
trudny bit, 69 Rabina, 95 Schnorra
zastosowania, 57 protokół, 140 Secure Hash
rysunek Algorithm, 92

257
M. Kutyłowski, W.-B. Strothmann

SET, 232 symetryczne, 3, 29


certyfikat, 232 z kluczem jawnym, 4, 51
message digest, 233
SHA, 221 ślepy podpis, 120
shrinking LFSR, 106 świadek, 61
słownikowy atak, 86
tekst jawny, 3
smart card, 195 Solovay-
telephone banking, 170, 224
Strassena test
teoria złoŜoności obliczeniowej,
pierwszości, 63 ssh, 206
51
cookie, 214
test pierwszości, 61 Fermata,
host key, 214
61 Millera-Rabina, 63
server key, 214
Solovay'a-Strassena, 63
SSL, 218 trzykrotny DES, 34
certyfikat, 217
handshake, 219 ukryte drzwi, 12, 29 urodzinowy
master secret, 221 paradoks, 88 urządzenie
pre-master-secret, 219 kryptograficzne, 147,149
STS, protokół, 159 FORTEZZA, 148,222
superrosnący wektor, 54 uwierzytelnianie, 131
symetryczne szyfrowanie, 3 challenge and response, 131
szyfrowanie, 17 Feige-Fiata-Shamira, 140
A5,224 protokół challenge and
asymetryczne, 4, 51 response,
blokowe, 108 131 dowodu z wiedzą
Cezara, 17 zerową,
długich tekstów, 36 135 Fiata-Shamira, 138 Guillou-
EIGamala, 70 Quisquartera, 143 Schnorra, 140
Fairplay'a, 19 smart card, 195 szyfrowanie
hardware, 147 algorytmem asymetrycznym, 6
IDEA, 42 uzgadnianie kluczy
plecakowe, 53 Diffie-Hellmana, 158, 219
Rabina, 66 MTI, 159 STS, 159
RC4,109
RC5,47
RSA, 56
S-boksy, 23
strumieniowe, 108
258
Kryptografia

szyfrowaniem
asymetrycznym, 155
wektor plecakowy, 54 wektor
superrosnący, 54 Whitening, 34
worm, patrz robak, 182 WWW,
bezpieczeństwo, 216
zarodek ciągu
pseudolosowego, 102
złoŜoność czasowa, 245
złoŜoności obliczeniowej teoria,
51 zobowiązanie bitowe,
167 jednokierunkowa funkcja
hashująca, 169
poprzez szyfrowanie
symetryczne, 168

259
M. Kutyłowski, W.-B. Strothmann

260
Literatura
[1] Certicom, strona WWW firmy z tutorialem na temat krzywych eliptycznych:
http://www.certicom.ca.
[2] D.E.R. Denning, Kryptografia i ochrona danych, Wydawnictwa Naukowo-
Techniczne, Warszawa 1992, ISBN 83-204-1480-6, (oryginał angielski: Cryptography
and Data Security, Addison Wesley, Reading 1983).
[3] O. Goldreich, Foundations of Cryptography (Fragments of a Book), strona WWW:
http://www.eccc.uni-trier.de/eccc-local/ ECCC-
Books/oded_book_readme.html.
[4] N. Koblitz, Wykład z teorii liczb i kryptografii, Wydawnictwa Naukowo-Techniczne,
Warszawa 1995, ISBN 83-204-1836-4, (oryginał angielski: A Course in Number
Theory and Cryptography, Springer-Verlag, Berlin 1987).
[5] E. Kranakis, Primality and Cryptography, Wiley-Teubner, Stuttgart 1986, ISBN 3-
519-02104-8, 0-471-90934-3.
[6] A.J.Menezes, RC van Oorschot, S.A.Vanstone, Handbook of Applied Cryptography,
CRC Press, Boca Raton 1996, ISBN 0-
8493-8523-7, strony WWW: http: / /www. dms. auburn. edu/hac/ oraz
http://www.crcpress.com/PRODS/852 3.HTM.
[7] J. Pieprzyk, B. Sadeghiyan, Design of Hashing Algorithms,
Springer-Verlag, Berlin 1993, ISBN 3-540-57500-6, 0-387-57500-6.
[8] A. Salomaa, Public-key Cryptography, Springer-Verlag, Berlin 1990, ISBN 3-540-
52831-8, 0-387-52831-8.
[9] B. Schneier, Kryptografia dla praktyków, Wydawnictwa Naukowo-Techniczne,
Warszawa 1995, ISBN 204-1867-4 (oryginał angielski: M. Kutyłowski, W.-B.
StrothmannApplied Cryptography, John Wiley & Sons, New York 1994, ISBN 0-
471-59756-2).
[10] B. Schneier, Applied Cryptography, 2nd addition, John Wiley & Sons, New
York 1996, ISBN 0-471-12845-7, 0-471-11709-9.
[11] B. Schneier, Ochrona poczty elektronicznej. Jak chronić prywatność
korespondencji w sieci Internet?, Wydawnictwa Naukowo-Techniczne,
Warszawa 1996, ISBN 83-204-1979-4 (oryginał angielski: E-mail Security,
John Wiley & Sons, New York, 1995, ISBN 0-471-05318-X).
[12] G.J. Simmons (edytor), Contemporary Cryptology, IEEE Computer Society
Press, Los Alamitos, 1992, ISBN 0-87942-277-7.
[13] W. Stallings, Ochrona danych w sieci i intersieci, Wydawnictwa Naukowo-
Techniczne, Warszawa 1997, ISBN 83-204-2184-5 (oryginał angielski:
Network and Internetwork Security, Prentice Hall, Englewood Cliffs, 1995,
ISBN 0-13-180050-7).
[14] W. Stallings, Practical Cryptography for Data Internetworks, IEEE
Computer Society Press, Los Alamitos, 1996, ISBN 0-8186-7140-8.
[15] D.R. Stinson, Cryptography. Theory and Practice, CRC Press, Boca
Raton 1995, ISBN 0-8493-8521-0, strona WWW:
http://bibd.unl.edu/~s tinson/CTAP.html.
Jeśli cenisz swój czas,
wstąp do Klubu KsiąŜki Komputerowej,
a publikacje i akcesoria same trafią do Ciebie

© Klub KsiąŜki Komputerowej proponuje:


dogodną formę sprzedaŜy
bogaty wybór literatury fachowej
konkursy z nagrodami
upominki firmowe
udział w promocjach i imprezach komputerowych
WEBMASTER ZASADY KKK
1. Członkiem Klubu KsiąŜki Komputerowej zostaje kaŜdy, kto wypełni
kupon i prześle go pod adres Klubu.

Microsoft ______
li. 2. KaŜdy członek KKK otrzymuje Kartę Klubową (która uprawnia do
zakupów na zasadach określonych przez regulamin) a takŜe swój
indywidualny numer klubowy (prosimy o posługiwanie się nim przy
HŁcel97 składaniu zamówień).
3. Raz na dwa miesiące wszyscy Klubowicze otrzymują bezpłatnie
informator z aktualnymi cenami i podaną datą waŜności (dwa razy w roku
wysyłamy pełny katalog).
4. Przy jednorazowym złoŜeniu zamówienia powyŜej kwoty 29.00 zł -
koszty wysyłki pokrywa KKK. Koszty pobrania pokrywa członek Klubu.
Zamówienia poniŜej tej kwoty realizowane są wyłącznie za zaliczeniem
pocztowym z doliczeniem kosztów wysyłki i pobrania.
5. Przy jednorazowych zamówieniach powyŜej kwoty 29.00 zt moŜna
dokonywać przedpłaty na konto bankowe PKO BP XV O/Warszawa
10201156-194060-270-1-111. Kopię dowodu wpłaty naleŜy dołączyć
do kuponu zamówienia. MoŜecie Państwo w ten sposób uniknąć kosztów
pobrania.
PUMIE 1
WIRUSÓW / 6. KaŜdy zamówiony produkt premiowany jest odpowiednią ilością
I ANTYWIRUSÓW >■'
punktów. Po zsumowaniu punktów uzyskanych w pierwszym zamówieniu
członek KKK otrzyma zniŜkę od wartości zamówionych produktów.
7. MoŜna zamówić dowolną ilość produktów, ale nie mniej niŜ jeden na pół
roku. JeŜeli w ciągu pół roku od złoŜenia ostatniego zamówienia nie
nadejdzie nowe zamówienie uzyskane dotychczas punkty zostaną
wyzerowane i członek KKK utraci uzyskany zakres zniŜki.
8. Przyjmujemy zgłoszenia listowne, telefoniczne, faksem lub pocztą
elektroniczną.
9. KsiąŜki moŜna zwrócić, jeŜeli nie posiadają śladów uŜywania (na własny
koszt) w ciągu siedmiu dni od daty otrzymania razem z rachunkiem. Klub
gwarantuje zwrot równowartości w ciągu czternastu dni od daty otrzymania
przesyłki zwrotnej. Dotyczy to równieŜ pozostałych produktów.
10. Klub nie przyjmuje reklamacji gier i programów wynikających z
niespełnienia oczekiwań zamawiającego co do zawartości merytorycznej.
Więcej informacji na temat działalności
Klubu, regulamin oraz oferta tytułowa w 11. Członkostwo ustaje po pisemnej rezygnacji na miesiąc przed upływem
bezpłatnym katalogu kaŜdego półrocza.

KLUB KSIĄśKI KOMPUTEROWEJ 00-987 Warszawa 4, skr.


poczt. 144, tel. (0-22) 813 41 45, fax (0-22) 677 14 25
kkk@rm.com.pl www.rm.com.pl
ABACUS

ADDISON WESLEY

ADOBE PRESS

ARTECH HOUSE

BORLAND PRESS

CORIOLIS

DIGITAL PRESS IMPORT KSIĄśEK I


JAMSA PRESS CZASOPISM
J. WILEY & SONS Publikacje z całego świata
McGRAW-HILL Literatura komputerowa
MICROSOFT PRESS
Czasopisma specjalistyczne

NEW (WERS PUBLISHERS

NOVELL PRESS

TOMIK
0'RElLLY & ASSOCIATES

OSBORNE

PRENTICE HALL Sp. z o.o.


ul. Mińska 25, pok 316 03-
808 Warszawa tel. (22) 870-
60-24 fax (22) 810-25-83
R&D BOOKS

SAMS

SYBEX

VENTANA PRESS e-mail: tomik@ikp.atm.com.pl


www: http://www.tomik.com.pl
WAITE GROUP PRESS
Prezentujemy ksiąŜki, które ukazały się ostatnio:
Arkana: Delphi 3
Arkana: Corel Draw 7
Microsoft Access 97 Vlsual Basic krok po kroku
Komputer dla Opornych piata wydania
Arkana: Adoba Photoshop 4 Wirusy.
Pisania wirusów I antywirusów

readme@rm.com.pl
www.rm.com.pl
IIMC mmmmmam^mg-
DRUKARNIAREADME
______________sanHaiB
* * 92-403 Łódź, ul. Olechowska 83, tel. (0-42) 49-14-88 w.43, kom. 0-601-21-72-53

RZETELNOŚĆ* WYSOKA JAKOŚĆ • PRZYSTĘPNE CENY

Specjalizujemy się w druku wydawnictw ksiązkowych-niskonakładowych

Polecamy swoje usługi:


• druk offsetowy jedno- i wielokolorowy do
formatu B-1
• druk akcydensów, folderów, ulotek itp
• wykonujemy oprawy zeszytowe,
• broszurowe i twarde - szyte i klejone
• foliowanie lub lakierowanie wszelkiego
rodzaju druków

Gwarantujemy:
• wysoką jakość
• terminowe wykonanie usług
• przystępne ceny
• atrakcyjne warunki płatności

You might also like