02.01.2015 Views

Klasyczne metody szyfrowania

Klasyczne metody szyfrowania

Klasyczne metody szyfrowania

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

WST†P DO KRYPTOGRAFII<br />

Grzegorz Szkibiel<br />

Jesie« 2012/13


Spis tre±ci<br />

1 Kryptograa a steganograa 5<br />

1.1 Steganograa . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

1.2 Szyfry przestawieniowe . . . . . . . . . . . . . . . . . . . . . . 8<br />

1.3 Systemy kryptograczne . . . . . . . . . . . . . . . . . . . . . 9<br />

2 <strong>Klasyczne</strong> <strong>metody</strong> <strong>szyfrowania</strong> 12<br />

2.1 Szyfry cykliczne . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

2.2 Monoalfabetyczny szyfr Beauforta . . . . . . . . . . . . . . . . 13<br />

2.3 Kody aniczne jednowymiarowe . . . . . . . . . . . . . . . . . 14<br />

2.4 Permutacje alfabetu . . . . . . . . . . . . . . . . . . . . . . . 15<br />

2.5 Analiza cz¦sto±ci wyst¦powania liter . . . . . . . . . . . . . . . 16<br />

2.6 Homofony i nulle . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

2.7 Jednostki dwuliterowe czyli digramy . . . . . . . . . . . . . . . 18<br />

2.8 Szyfr Playfaira . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

2.9 Podwójny szyfr Playfaira . . . . . . . . . . . . . . . . . . . . . 21<br />

2.10 szyfr Delastelle'a . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

2.11 Jednostki wieloliterowe . . . . . . . . . . . . . . . . . . . . . . 23<br />

2.12 Szyfry polialfabetyczne . . . . . . . . . . . . . . . . . . . . . . 23<br />

2.13 Ša«cuch szyfrów i DES . . . . . . . . . . . . . . . . . . . . . . 28<br />

3 Maszyny szyfruj¡ce 32<br />

3.1 Zasada dziaªania . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

3.2 Jak zªamano szyfr ENIGMY . . . . . . . . . . . . . . . . . . . 36<br />

4 Macierze szyfruj¡ce 41<br />

4.1 Algebra liniowa modulo N . . . . . . . . . . . . . . . . . . . . 41<br />

4.2 Szyfry Hill'a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

4.3 Aniczne przeksztaªcenia szyfruj¡ce . . . . . . . . . . . . . . . 48<br />

2


5 Pakowanie plecaka 50<br />

5.1 Postawienie problemu . . . . . . . . . . . . . . . . . . . . . . . 50<br />

5.2 Szybko rosn¡ce ci¡gi . . . . . . . . . . . . . . . . . . . . . . . 51<br />

5.3 Kryptosystem<br />

oparty na problemie pakowania plecaka . . . . . . . . . . . . . 53<br />

6 Systemy z publicznym kluczem 56<br />

6.1 Numeryczna funkcja jednokierunkowa . . . . . . . . . . . . . . 57<br />

6.2 Funkcje skrótu . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />

6.3 poufno±¢ i autentyczno±¢. . . . . . . . . . . . . . . . . . . . . . 58<br />

6.4 Wymiana kluczy . . . . . . . . . . . . . . . . . . . . . . . . . 60<br />

6.5 2-1 funkcje jednokierunkowe . . . . . . . . . . . . . . . . . . . 60<br />

7 System RSA 62<br />

7.1 Rozkªad liczb na czynniki . . . . . . . . . . . . . . . . . . . . 62<br />

7.2 Liczby wybrane losowo . . . . . . . . . . . . . . . . . . . . . . 63<br />

7.3 Zasada dziaªania systemu RSA . . . . . . . . . . . . . . . . . 64<br />

7.4 Wpadka systemowa wspólny moduª . . . . . . . . . . . . . . . 65<br />

7.5 Wpadka systemowa niski wykªadnik . . . . . . . . . . . . . . . 65<br />

8 Teorio-liczbowe podstawy RSA 67<br />

8.1 Systemy pozycyjne . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

8.2 Iterowane podnoszenie do kwadratu . . . . . . . . . . . . . . . 69<br />

8.3 Twierdzenie Eulera i<br />

Maªe Twierdzenie Fermata . . . . . . . . . . . . . . . . . . . . 69<br />

8.4 liczby pseudo-pierwsze . . . . . . . . . . . . . . . . . . . . . . 71<br />

8.5 Chi«skie twierdzenie o resztach . . . . . . . . . . . . . . . . . 74<br />

8.6 Kongruencje stopnia 2 . . . . . . . . . . . . . . . . . . . . . . 77<br />

8.7 Gra w orªa i reszk¦ przez telefon . . . . . . . . . . . . . . . . . 80<br />

9 Zastosowania arytmetyki<br />

modulo m do rozkªadu liczb 83<br />

9.1 Wzory skróconego mno»enia . . . . . . . . . . . . . . . . . . . 83<br />

9.2 Metoda ρ rozkªadu na czynniki . . . . . . . . . . . . . . . . . 85<br />

9.3 Metoda faktoryzacji Fermata . . . . . . . . . . . . . . . . . . . 87<br />

9.4 Bazy rozkªadu . . . . . . . . . . . . . . . . . . . . . . . . . . . 88<br />

3


10 Logarytm dyskretny 92<br />

10.1 Poj¦cie logarytm dyskretny . . . . . . . . . . . . . . . . . . . 92<br />

10.2 System DiegoHellmana<br />

uzgadniania klucza . . . . . . . . . . . . . . . . . . . . . . . . 93<br />

10.3 System kryptograczny Masseya-Omury . . . . . . . . . . . . 95<br />

10.4 System ElGamala . . . . . . . . . . . . . . . . . . . . . . . . . 96<br />

11 Protokoªy o zerowej wiedzy i przekazy nierozró»nialne 97<br />

11.1 Kolorowanie mapy . . . . . . . . . . . . . . . . . . . . . . . . 97<br />

11.2 Logarytm dyskretny . . . . . . . . . . . . . . . . . . . . . . . 99<br />

11.3 Przekazy nierozró»nialne . . . . . . . . . . . . . . . . . . . . . 100<br />

11.4 Dowód faktoryzacji . . . . . . . . . . . . . . . . . . . . . . . . 102<br />

4


Rozdziaª 2<br />

<strong>Klasyczne</strong> <strong>metody</strong> <strong>szyfrowania</strong><br />

Korzenie kryptograi si¦gaj¡ czasów staro»ytnego Rzymu. Tam wªa±nie powstaª<br />

i byª u»ywany pierwszy system kryptograczny. Od tego systemu,<br />

zwanego te» szyfrem Cezara lub cyklicznym zaczniemy nasz przegl¡d metod<br />

klasycznych. Nast¦pnie rozwa»ymy budow¦ innych, bardziej skomplikowanych<br />

systemów, które byªy u»ywane w historii lub te» byªy stworzone do<br />

innych celów ni» ochrona tajemnic.<br />

2.1 Szyfry cykliczne<br />

Zostaªy wynalezione, a na pewno u»ywane przez Juliusza Cezara. Maj¡ one<br />

bardzo ªatwy klucz, ale jednocze±nie s¡ ªatwe do zªamania.<br />

Oznaczmy przez p jednostk¦ tekstu jawnego i zaªó»my »e tych jednostek<br />

jest N. Wtedy funkcja szyfruj¡ca E k jest okre±lona wzorem<br />

E k (p) = p + k(mod N).<br />

Kluczem jest tu liczba k, a przestrze« kluczy pokrywa si¦ z alfabetem Z N .<br />

Je±li k jest równe 3, to aby zaszyfrowa¢ sªowo TAK, przeksztaªcamy je w<br />

ci¡g 19 0 12, nast¦pnie dodajemy do ka»dej z tych liczb 3 modulo 26 otrzymuj¡c<br />

24 3 15 i z powrotem przeksztaªcamy liczby na litery by otrzyma¢<br />

wdn. Przeksztaªcenie szyfruj¡ce okre±lone powy»ej nazywamy przesuni¦ciem.<br />

Wygodnie jest tutaj napisa¢ alfabet, a pod nim liczby odpowiadaj¡ce poszczególnym<br />

literom.<br />

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z<br />

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25<br />

12


W celu od<strong>szyfrowania</strong> wiadomo±ci tgyfz kqyz, zaszyfrowanej kluczem 6,<br />

zamieniamy j¡ najpierw w ci¡g liczb 19 6 24 5 25 10 16 24 25. Tym razem,<br />

pd ka»dej z liczb odejmujemy 6 (modulo 26) i otrzymujemy 13 0 18 25 19<br />

4 10 18 19. W nast¦pnym kroku patrzymy jakie litery s¡ na pozycjach z<br />

ostatniego ci¡gu i otrzymujemy wiadomo±¢ jawn¡ NASZ TEKST.<br />

Jest ogólnie przyj¦te, »e tekst zaszyfrowany podajemy w blokach pi¦cio<br />

literowych. Uªatwia to przekazywanie tekstu i zmniejsza ryzyko pomyªki przy<br />

wysyªaniu i deszyfrowaniu.<br />

Zajmiemy si¦ teraz ªamaniem szyfrów cyklicznych. Je±li wiemy na pewno,<br />

»e mamy do czynienia z szyfrem cyklicznym i znamy ilo±¢ liter w alfabecie,<br />

czyli N, ªamanie polega na znalezieniu liczby k. Za k wystarczy podstawi¢<br />

ka»d¡ z N mo»liwo±ci i sprawdza¢ po kolei sens otrzymanych w ten sposób<br />

wiadomo±ci.<br />

Na przykªad, przypu±¢my, »e chcemy zªama¢ szyfr xolfd vhcdp nrzd.<br />

Wiemy przy tym, »e N = 26. Sprawdzamy po kolei wszystkie mo»liwe klucze.<br />

Zauwa»amy przy tym, »e odejmowanie liczby k modulo 26 jest tym samym, co<br />

dodawanie liczby 26−k modulo 26. Dodajemy wi¦c do liczb odpowiadaj¡cych<br />

literom szyfru, tj. 23 14 11 5 3 21 7 2 3 15 13 17 25 3, kolejno k = 1, k =<br />

2, . . . , k = 25. Cz¦sto, aby wyeliminowa¢ przypadek wystarczy wypróbowa¢<br />

kilka pierwszych liter. Przy k = 1 mamy pocz¡tek YPM, co jest nieczytalne.<br />

Podobnie dla k = 2. Tym razem mamy ZQ. Szcz¦±cie u±miecha si¦ do nas<br />

dosy¢ pó¹no, bo dopiero dla k = 23. Otrzymujemy wówczas ci¡g 20 11 8<br />

2 0 18 4 25 0 12 10 14 22 0, co daje fraz¦ ULICA SEZAMKOWA. Ten<br />

sposób ªamania szyfrów nazywa si¦ metod¡ brutalnej siªy, lub wyczerpania<br />

przestrzeni kluczy.<br />

Juliusz Cezar u»ywaª klucza 3, ale i tak dowódcy legionów raczej domy-<br />

±lali si¦ tre±ci przysªanych wiadomo±ci ni» je odszyfrowywali. Jego nast¦pca,<br />

Oktawian August u»ywaª klucza 2, nast¦pnie 1, a potem w ogóle zrezygnowaª<br />

z <strong>szyfrowania</strong> wiadomo±ci.<br />

2.2 Monoalfabetyczny szyfr Beauforta<br />

W zasadzie szyfr ten, wynaleziony przez G. Sestri w 1710 roku, jest cz¦-<br />

±ci¡ bardziej skomplikowanej techniki <strong>szyfrowania</strong>. Tutaj przedstawimy tylko<br />

podstawowy krok tej techniki, który mo»e istnie¢ jako samodzielny system<br />

szyfruj¡cy.<br />

Podobnie jak w przypadku szyfrów Cezara, przestrzeni¡ kluczy jest Z N ,<br />

13


ale przeksztaªcenie szyfruj¡ce jest dane wzorem<br />

E k (p) = −p + k(mod N).<br />

Zauwa»my, »e przeksztaªcenie deszyfruj¡ce ma tak¡ sam¡ posta¢. Zatem szyfrowanie<br />

i deszyfrowanie odbywa si¦ za pomoc¡ tego samego przeksztaªcenia.<br />

Zauwa»my te», »e w przeciwie«stwie do kryptosystemu Cezara, gdzie E 0 byªo<br />

identyczno±ci¡, w kryptosystemie Beauforta, E k nie jest identyczno±ci¡ dla<br />

»adnego k.<br />

Ze wzgl¦du na maª¡ liczb¦ kluczy, równie» i ten szyfr mo»na ªama¢ przez<br />

wyczerpanie przestrzeni kluczy. Podamy jeszcze alfabet jawny i szyfrowy dla<br />

klucza 3. Zauwa»my, »e kolejno±¢ liter w alfabecie szyfrowym jest odwrócona.<br />

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z<br />

D C B A Z Y X W V U T S R Q P O N M L K J I H G F E<br />

2.3 Kody aniczne jednowymiarowe<br />

Je»eli zamiast jednej liczby jeste±my w stanie zapami¦ta¢ dwie, to mo»emy<br />

stosowa¢ nieco bardziej skomplikowany kod aniczny, gdzie przeksztaªcenie<br />

szyfruj¡ce ma posta¢ E(p) = ap + b (mod N). Naszym kluczem jest tu para<br />

(a, b). ›eby rozszyfrowa¢ wiadomo±¢ u»ywamy innego klucza. Dokªadnie,<br />

D(c) = a ′ c + b ′ ( mod N), gdzie a ′ jest liczb¡ odwrotn¡ do a modulo N, a<br />

b ′ = −a ′ b w Z N . Musimy tu uwa»a¢, czy NWD(a, N) jest równy 1, gdy» w<br />

przeciwnym wypadku nasz szyfr nie b¦dzie jednoznaczny. Kiedy a = 1, kod<br />

aniczny staje si¦ kodem cyklicznym. Gdy b = 0, kod aniczny nazywamy<br />

szyfrem liniowym. W przypadku alfabetu 26-literowego, przestrze« kluczy<br />

ma 312 (= 12 · 26) elementów. Nie jest to du»a liczba z kyptoanalitycznego<br />

punktu widzenia, ale rozwa»enie takiej liczby przypadków mo»e stworzy¢<br />

pewne trudno±ci. Zademostrujemy metod¦, która ogranicza istotnie liczb¦<br />

rozwa»anych przypadków.<br />

2.1 Przykªad. Zªamiemy szyfr vqtmx ozdtg hgjqm aqhcx bgkgt ag. W<br />

szyfrze tym najcz¦stsz¡ liter¡ jest g, a nast¦pn¡ jest q. Podejrzewamy, »e<br />

g (pozycja 6) to zaszyfrowane a (pozycja 0), natomiast q (pozycja 16), to e<br />

(pozycja 4). Mamy wi¦c<br />

6a ′ +b ′ ≡0( mod 26)<br />

16a ′ +b ′ ≡4( mod 26)<br />

14


Odejmuj¡c obie kongruencje stronami otrzymujemy 10a ′ ≡ 4 (mod 26), a<br />

st¡d natychmiast a ′ = 3. Chwil¦ potem mamy b ′ = 8 i mamy klucz deszyfruj¡cy.<br />

Zastosowanie tego klucza daje nam tekst jawny Ten szyfr nadaje si¦<br />

do zªamania.<br />

2.4 Permutacje alfabetu<br />

Znacznie trudniejsze od szyfrów cyklicznych oraz anicznych s¡ szyfry, w których<br />

ka»da litera alfabetu jawnego jest zast¡piona liter¡ alfabetu szyfrowego<br />

bez stosowania okre±lonego algorytmu arytmetycznego. Zatem przestrze«<br />

kluczy jest równa zbiorowi wszystkich permutacji alfabetu. W celu uªatwienia<br />

zapami¦tania przeksztaªcenia szyfruj¡cego stosujemy tu innego rodzaju<br />

klucz. Jest to sªowo, którego litery zast¦puj¡ pocz¡tkowe litery alfabetu jawnego.<br />

Dalsze litery dopisujemy tak jak wyst¦puj¡ one w alfabecie jawnym<br />

przy czym pomijamy ju» wykorzystane znaki. Na przykªad stosuj¡c klucz<br />

,,szyfrowanie dostajemy nast¦puj¡ce przeksztaªcenie szyfruj¡ce:<br />

a b c d e f g h i j k l m n o p q r s t u v w x y z<br />

S Z Y F R O W A N I E B C D G H J K L M P Q T U V X<br />

Opisany powy»ej kryptosystem nazywamy permutacyjnym. Jego odmian¡<br />

jest stosowany w pierwszych maszynach szyfruj¡cych kryptosystem transpozycyjny,<br />

tj. taki, którego przestrze« kluczy jest równa zbiorowi wszystkich<br />

permutacji, które mo»na zapisa¢ w postaci iloczynu rozª¡cznych transpozycji.<br />

Przykªadem tu jest nast¦puj¡ce przeksztaªcenie szyfruj¡ce:<br />

a b c d e f g h i j k l m n o p q r s t u v w x y z<br />

Z C B F R D W K N J H M L I O P T E Y Q X V G U S A<br />

Poniewa» szyfry tego rodzaju byªy zaprogramowane w maszynach jako<br />

<strong>metody</strong> standardowe, nikt nie musiaª pami¦ta¢ klucza. Zalet¡ szyfrów transpozycyjnych<br />

jest fakt, »e klucze szyfruj¡cy i rozszyfrowuj¡cy s¡ identyczne.<br />

Zatem ta sama maszyna sªu»yªa zarówno do <strong>szyfrowania</strong> jak i do rozszyfrowywania<br />

wiadomo±ci.<br />

15


2.5 Analiza cz¦sto±ci wyst¦powania liter<br />

Ta metoda ªamania szyfrów opiera si¦ na prawach rachunku prawdopodobie«stwa.<br />

Wiadomo, »e pewne litery wyst¦puj¡ w tek±cie cz¦±ciej ni» inne.<br />

Oto alfabet angielski poukªadany wedªug cz¦sto±ci wyst¦powania liter: E <br />

12.5%, T, A, O, I, N 9.2-7%, S, R 6%, L, D 4%, C, U, M, F, P, G, W,<br />

Y, B 3-1.5%, V, K, X, J, Q, Z 1-0.1%,<br />

Je»eli wi¦c przechwycimy wiadomo±¢ na tyle dªug¡ (lub na tyle du»o<br />

wiadomo±ci), aby wyeliminowa¢ przypadkowo±¢, mo»emy przypuszcza¢, »e<br />

najcz¦±ciej powtarzaj¡ca si¦ litera to zakodowane E, T, A, O, I lub N. Je»eli<br />

mamy do czynienia z kodem cyklicznym, nasze sprawdzanie mo»liwo±ci dla b<br />

ogranicza si¦ do sze±ciu przypadków. Okazuje si¦, »e na podstawie badania<br />

entropii j¦zyka, czyli ilo±ci informacji zawartej w jednym symbolu zaszyfrowanego<br />

tekstu, mo»na zªama¢ ka»dy szyfr, który szyfruje tekst angielski maj¡cy<br />

wi¦cej ni» 25 liter.<br />

Oczywi±cie metoda ta nie dziaªa, je±li przechwytywane wiadomo±ci s¡<br />

krótkie (maj¡ mniej ni» 25 liter) i klucz cz¦sto si¦ zmienia. Na przykªad,<br />

je±li przechwycimy tylko xolfd vhcdpnrzd. jak w rozwa»anym wy»ej szyfrze<br />

cyklicznym, to nie wida¢ tu, która litera pojawia si¦ najcz¦±ciej. Z drugiej<br />

strony jednak, jak si¦ okazuje, klucze s¡ bardzo niech¦tnie zmieniane. Rz¡d<br />

Stanów Zjednoczonych nie zdecydowaª si¦ na zmian¦ kluczy nawet po tym,<br />

jak wszystkie zgin¦ªy w tajemniczej kradzie»y w Zagrzebiu na pocz¡tku drugiej<br />

wojny ±wiatowej.<br />

Kiedy ju» wiemy, które litery pojawiaj¡ si¦ najcz¦±ciej, zwracamy uwag¦<br />

na powtarzaj¡ce si¦ pary. Na przykªad EA jest najcz¦±ciej pojawiaj¡cym<br />

si¦ digramem samogªosek. Dosy¢ cz¦sty jest te» digram IO. Natomiast OI,<br />

IA, AI, OA i AO s¡ ju» znacznie rzadsze. Digram AE nie pojawia si¦ prawie<br />

nigdy. Ogólnie, dziesi¦¢ najcz¦stszych digramów w j¦zyku angielskim, to TH,<br />

HE, AN, IN, ER, RE, ON, ES, TI oraz AT.<br />

Dla przykªadu spróbujmy rozszyfrowa¢ nast¦puj¡cy tekst<br />

wktqr ziqzd xlzwt lsoet rvozi qfqbo<br />

lwktq rziqz olzgg fgxko liofu sqkut<br />

fqatr kqveq kkgzl qktqe ethzq wstql<br />

yggrg fsnzg ziglt vigso cto xzeit<br />

ltqut ksnqv qozof utqlz tk<br />

Aby uªatwi¢ nieco ªamanie, przypu±¢my »e wiemy ju», i» najcz¦±ciej pojawiaj¡c¡<br />

si¦ w tek±cie jawnym liter¡ nie jest e.<br />

16


Z analizy cz¦sto±ci wynika, »e najcz¦stszymi literami w zaszyfrowanym<br />

tek±cie s¡ q, t, z, g, k, l, o, i i f. Tworzymy teraz tak zwan¡ tabel¦ kontaktów:<br />

q t z g k l o i f<br />

q 0 0 2 0 3 2 1 0 1<br />

t 6 0 0 0 2 2 1 0 1<br />

z 2 1 0 2 0 1 2 4 0<br />

g 0 0 2 2 0 1 0 0 2<br />

k 1 3 0 1 1 0 1 0 0<br />

l 1 2 3 0 0 0 0 1 0<br />

o 0 0 2 0 0 3 0 0 3<br />

i 3 1 0 1 0 0 1 0 0<br />

f 2 0 0 1 0 0 0 1 0<br />

Podaje ona jak cz¦sto w zaszyfrowanym tek±cie wyst¦puj¡ digramy zªo»one<br />

z najcz¦±ciej wyst¦puj¡cych liter. Na przykªad digram kq wyst¦puje 3 razy<br />

(szukamy w tabeli miejsca, gdzie krzy»uje si¦ wiersz k z kolumn¡ q.<br />

Wiemy, »e q nie jest zaszyfrowanym E. Zgadujemy zatem, »e to t odpowiada<br />

E. Poniewa» mamy 6 par tq, a t ma by¢ E, wi¦c q odpowiada<br />

zapewne A. Trzeci¡ liter¡ z kolei jest Z. Poniewa» T jest jeszcze ,,wolne,<br />

przyporz¡dkujmy z → T. Poniewa» zi pojawia si¦ 4 razy, a iz w ogóle si¦<br />

nie pojawia, przypuszczamy, »e i → H. Na koniec zauwa»amy jeszcze, »e gg<br />

pojawia si¦ dwa razy. Dobrze jest wi¦c postawi¢, »e g to O. Podstawiamy<br />

teraz odgadni¦te litery do naszego kryptogramu i odgadujemy reszt¦ liter na<br />

zasadzie ,,co pasuje. Tekstem jawnym jest wi¦c: BREAD THAT MUST<br />

BE SLICED WITH AN AX IS A BREAD THAT IS TOO NOURISHING<br />

LARGE NAKED CARROTS ARE ACCEPTABLE AS FOOD ONLY TO<br />

THOSE WHO LIVE IN HUTCHES EAGERLY AWAITING EASTER.<br />

2.6 Homofony i nulle<br />

kiedy przekonano si¦, »e analiza cz¦sto±ci wyst¦powania liter jest pot¦»n¡<br />

broni¡, zacz¦to si¦ zastanawia¢, jak utrudni¢ t¦ analiz¦. Nasuwaj¡ si¦ tutaj<br />

dwie dosy¢ oczywiste <strong>metody</strong>. Jedn¡ z nich jest ,,dokªadanie liter, a drug¡<br />

zmniejszanie ilo±ci najcz¦±ciej powtarzaj¡cych si¦ znaków. Prowadzi to do<br />

17


dwóch denicji. Nullem nazywamy jednostk¦ tekstu zaszyfrowanego, której<br />

nie odpowiada »adna jednostka tekstu jawnego. Oczywi±cie, nasze przeksztaªcenie<br />

szyfruj¡ce musi by¢ w dalszym ci¡gu wzajemnie jednoznaczne.<br />

Zatem, w praktyce, do alfabetu jawnego dorzucamy ,,znak pusty, któremu<br />

odpowiada pewien znak w alfabecie zaszyfrowanym. Na przykªad<br />

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ∅ ∅ ′<br />

s z y f r o w a n i e 3 c d g h j k 4 m p q t u v x b l<br />

W powy»szym szyfrze, wyst¦puj¡ dwa nulle: b i l. Wtajemniczeni wiedz¡, »e<br />

po otrzymaniu zaszyfrowanej wiadomo±ci, nale»y te dwa znaki zignorowa¢.<br />

Na przykªad zaszyfrowane wiadomo±ci esmsbhp13m1s oraz e1sbmsh1pb3ms<br />

oznaczaj¡ to samo, a mianowicie wiadomo±¢ KATAPULTA.<br />

Druga denicja jest nast¦puj¡ca: homofonem nazywamy jednostk¦ tekstu<br />

jawnego, której odpowiada wi¦cej ni» jedna jednostka tekstu zaszyfrowanego.<br />

I tym razem mamy problemy z wieloznaczno±ci¡ funkcji szyfruj¡cej. Problem<br />

ten pokonujemy powtarzaj¡c elementy w alfabecie jawnym. A oto przykªad<br />

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A A T<br />

s z y f r o w a n i e 3 c d g h j k 4 m p q t u v x b 5 l<br />

Trzy homofony powy»szego alfabetu to A, A i T. Dzi¦ki nim wiadomo±¢ KA-<br />

TAPULTA mo»emy zaszyfrowa¢ tak, »e »adna litera alfabetu zaszyfrowanego<br />

nie powtarza si¦: esm5hp31b.<br />

Przy ukªadaniu przeksztaªcenia szyfruj¡cego mo»emy stosowa¢ zarówno<br />

nulle jak i homofony. Šamanie szyfru jest wtedy jeszcze bardziej utrudnione.<br />

Oprócz tych dwóch utrudnie« stosowane s¡ te» i inne bardziej skomplikowane.<br />

Niektóre z nich opiszemy poni»ej.<br />

2.7 Jednostki dwuliterowe czyli digramy<br />

Digramy jako alfabet po raz pierwszy zastosowaª niejaki Giovanni Battista<br />

Porta w 1563 roku. Alfabet taki skªadaª si¦ z czterystu digramów i do ka»dego<br />

z nich Porta z niebywaª¡ inwencj¡ dobraª pewien szczególny znak.<br />

Ogólnie, stosuj¡c digramy jako jednostki tekstu jawnego, mamy alfabet<br />

zªo»ony z N 2 liter. Jego symbole zast¦pujemy b¡d¹ pojedynczymi znakami,<br />

18


Rysunek 2.1: Tablica Porty<br />

jak to zrobiª Porta, b¡d¹ te» (innymi) digramami. Nasze przeksztaªcenie<br />

szyfruj¡ce przedstawiamy w postaci tabeli, jak na przykªad w tabeli Porty.<br />

Dokªadnie, je±li A jest alfabetem, to przeksztaªceniem bazowym jest bijekcja<br />

E∗ k : A 2 → A 2 . W szczególno±ci liczba liter w tek±cie jawnym m musi<br />

by¢ parzysta. Przestrzeni¡ kluczy jest tu oczywi±cie zbiór wszystkich permutacji<br />

zbioru A 2 . Przeksztaªcenie szyfruj¡ce E k jest generowane przez E ∗ k w<br />

naturalny sposób, tj. Je±li m = m 1 m 2 . . . m p , gdzie m i s¡ digramami, to<br />

E k (m) = E ∗ k(m 2 )E ∗ k(m 2 ) . . . E ∗ k(m p ).<br />

Powy»sze przeksztaªcenie nazywamy 2-dzielnym.<br />

Aby zªama¢ kod digramowy mo»emy stosowa¢ analiz¦ cz¦sto±ci wyst¦powania<br />

jednostek dwuliterowych. Aby metoda ta si¦ powiodªa, przechwycony<br />

tekst musi by¢ bardzo dªugi. Je»eli dla tekstu o jednostkach jednoliterowych<br />

potrzebowali±my N znaków, aby ªamanie si¦ powiodªo, to teraz potrzebujemy<br />

okoªo N 2 znaków. Dla j¦zyka angielskiego jest to ju» ponad 525 liter.<br />

19


Gªówn¡ przeszkod¡ przy stosowaniu szyfrów dwudzielnych jest brak efektywnego<br />

algorytmu szyfruj¡cego i deszyfruj¡cego. Próby uproszczenia ogólnej<br />

zasady doprowadziªy do powstania szyfrów opartych na kwadracie oraz<br />

na macierzach. Szyfry oparte na kwadracie omówimy w nast¦pnych trzech<br />

podrozdziaªach.<br />

2.8 Szyfr Playfaira<br />

Problem zapami¦tania du»ej ilo±ci znaków doprowadziª w 1854 roku niejakiego<br />

Charlesa Wheatstone'a do wynalezienia prostej <strong>metody</strong> zast¦powania<br />

jednego bloku liter drugim. Litery alfabetu umieszczone s¡ w kwadracie 5×5,<br />

a blok liter tekstu jawnego tworzy w tym kwadracie przek¡tn¡ prostok¡ta.<br />

Blok dwuliterowy odczytany z drugiej przek¡tnej jest odpowiadaj¡cym blokiem<br />

kryptotekstu. Je±li litery znajduj¡ si¦ w tym samym wierszu lub w tej<br />

samej kolumnie, szyfrowanie jest nieco trudniejsze. Ogólnie po krótkiej praktyce,<br />

ªatwo jest posªugiwa¢ si¦ opisanym szyfrem. Szyfr ten nazwany szyfrem<br />

Playfaira, byª stosowany przez Anglików, prawdopodobnie, od czasów Wojny<br />

Krymskiej (1854), poprzez Wojny Burskie (1880 do 1902) a» do ko«ca pierwszej<br />

wojny ±wiatowej. Wiadomo jednak, »e od poªowy 1915 roku, Niemcy nie<br />

mieli problemów z jego zªamaniem.<br />

Szyfr ten u»ywa digramów jako jednostek tekstu. Kluczem jest macierz<br />

5 × 5 zawieraj¡ca 25 liter (bez j). Do jej uªo»enia u»yjemy sªowa kluczowego<br />

,,szyfrowanie.<br />

s z y f r<br />

o w a n i<br />

e b c d g<br />

h k l m p<br />

q t u v x<br />

Digram xy = k ij k mn , gdzie x ≠ y oraz i, j, m, n ∈ {1, 2, 3, 4, 5} szyfrujemy<br />

jako<br />

⎧<br />

⎪⎨ k in k mj je±li i ≠ m oraz j ≠ n;<br />

k i,j+1 k i,n+1 je±li i = m oraz j ≠ n;<br />

⎪⎩<br />

k i+1,j k m+1,j je±li i ≠ m oraz j = n.<br />

(Dodanie 1 do wska¹nika 5 daje tu wynik 1.) Je»eli x = y, digram rozdzielamy,<br />

tzn. wtykamy pomi¦dzy x i y liter¦ q, która jest ró»na od x i od y.<br />

20


Przeksztaªcenie deszyfruj¡ce w pierwszym przypadku, tj. gdy deszyfrowane<br />

litery znajduj¡ si¦ w innych wierszach oraz kolumnach, pokrywa si¦<br />

z szyfruj¡cym. W pozostaªych przypadkach pozycje liter digramu przesuwamy<br />

w lewo lub w gór¦ stosuj¡c zasad¦ cykliczno±ci. Zauwa»my, »e w<br />

zaszyfrowanym tek±cie nie mo»e si¦ tra¢ digram postaci xx.<br />

Šamanie szyfru Playfaira i pozostaªych dwóch szyfrów opartych na kwadracie,<br />

polega na analizie statystycznej powi¡za« liter kryptotekstu i na tej<br />

podstawie odtworzeniu kwadratu.<br />

2.9 Podwójny szyfr Playfaira<br />

Aby unikn¡¢ niewygody zwi¡zanej z digramami zªo»onymi z takich samych liter,<br />

w latach trzydziestych XX wieku, na potrzeby faszystowskiej organizacji<br />

SD stworzono system oparty na dwóch kwadratach. Tym razem zrezygnowano<br />

z litery y, która byªa zast¦powana przez i. Przeksztaªcenie szyfruj¡ce<br />

tak»e zostaªo zmodykowane, tzn. zostaª dodany dodatkowy krok. Krok<br />

podstawowy algorytmu szyfruj¡cego niewiele ró»niª si¦ od przeksztaªcenia<br />

Playfaira. Dokªadnie, wykorzystano dwa kwadraty:<br />

d o p e l<br />

k a s t n<br />

v r f h b<br />

c g i j m<br />

q u w x z<br />

s i c h e<br />

r t d n a<br />

b f g j k<br />

l m o p q<br />

u v w x z<br />

. (2.1)<br />

Pierwszej litery digramu szukamy w pierwszym kwadracie, a drugiej w drugim.<br />

W rezultacie mamy tylko dwa przypadki. Je±li l ij l mn jest digramem,<br />

przy czym l ij jest w pierwszym kwadracie, a l mn w drugim, i, j, m, n ∈<br />

{1, 2, 3, 4, 5}, to bijekcja zbioru digramów wyglada nast¦puj¡co.<br />

{<br />

E ∗ l mj l in je±li i ≠ m,<br />

(l ij l mn ) =<br />

l i,j+1 l m,n+1 je±li i = m<br />

i znów, pierwsza litera jest w pierwszym kwadracie, a druga w drugim oraz<br />

dodanie 1 rozumiemy jako przesuni¦cie cykliczne w kwadracie.<br />

Jak ju» wspomnieli±my, algorytm <strong>szyfrowania</strong> skªadaª si¦ z dwóch kroków.<br />

W pierwszym tekst jawny dzielony byª na póª lub na bloki 17-literowe w<br />

przypadku, gdy wiadomo±¢ zawieraªa wi¦cej ni» 34 litery. Bloki te byªy<br />

21


umieszczane jeden nad drugim, a digramy do <strong>szyfrowania</strong> zbierano pionowo.<br />

Na przykªad, aby zaszyfrowa¢ tekst ZBIERAMY SIE W PIATEK dzielimy<br />

go na poªowy i odpowiednio umieszczamy:<br />

Z B I E R A M Y S<br />

I E W P I A T E K<br />

Digramy do przeksztaªcenia to ZI, BE, IW, EP, RI, AA, MT, YE, SK. Stosuj¡c<br />

kwadraty z (2.1) otrzymujemy digramy lv, lk, wo, jh, of, sr, nm, pq oraz<br />

fa, które po prostu ª¡czymy w tekst otrzymuj¡c szyfr: lvlkw ojhof srnmp qfa.<br />

Przy deszyfrowaniu, post¦pujemy w odwrotnej kolejno±ci. Zauwa»amy, »e<br />

przeksztaªcenie deszyfruj¡ce digramy jest takie samo jak szyfruj¡ce w pierwszym<br />

przypadku, tj. kiedy litery znajduj¡ si¦ w wierszach o innych numerach.<br />

2.10 szyfr Delastelle'a<br />

Kwadrat zaproponowany przez felixa Delastelle'a w 1902 roku jest typowym<br />

przykªadem szyfru transpozycyjnego (przeksztaªcenie szyfruj¡ce jest równe<br />

deszyfruj¡cemu) i eliminuje wszelkie niedogodno±ci zwi¡zane ze stosowaniem<br />

ró»nych przypadków. W kwadracie Delastelle'a nie ma litery w, któr¡ zast¦pujemy<br />

przez v.<br />

s z y f r<br />

o a n i e<br />

b c d g h<br />

j k l m p<br />

q t u v x<br />

Bazowe przeksztaªcenie szyfruj¡ce polega na zamianie wspóªrz¦dnych: E ∗<br />

(l ij l mn ) = l im l jn . Dla przykªadu zaszyfrujemy fraz¦ SZYFR FRANCUSKI.<br />

Pod ka»d¡ liter¡ piszemy pionowo jej wspóªrz¦dne w kwadracie, i znajdujemy<br />

litery o wspóªrz¦dnych zapisanych poziomo.<br />

S Z Y F R F R A N C U S K I<br />

1 1 s 1 1 s 1 1 s 1 2 z 2 3 n 5 1 q 4 2 k<br />

1 2 z 3 4 g 5 4 v 5 2 t 3 2 c 3 1 b 2 4 i<br />

Otrzymany kryptogram to szsgs vztnc qbki.<br />

22


2.11 Jednostki wieloliterowe<br />

Aby jeszcze bardziej utrudni¢ ªamanie tekstu mo»emy zastosowa¢ trigramy,<br />

czyli jednostki trzyliterowe. Pojawia si¦ tu jednak problem odpowiedniego<br />

zapisania przeksztaªcenia szyfruj¡cego tabelka musi by¢ trzywymiarowa.<br />

Tym gorszy jest ten problem im dªu»sze s¡ jednostki tekstu. Specjalne sze-<br />

±ciany szyfruj¡ce na wzór kwadratów Playfaira byªy proponowane przez Luigi<br />

Gioppi di Tuerkheim w 1897 roku oraz przez Williama Friedmana w latach<br />

dwudziestych XX wieku. Zdecydowanie ch¦tniej przyj¦to popularne podczas<br />

I Wojny ‘wiatowej ksi¡»ki kodowe, gdzie szyfrowano od razu caªe wyrazy<br />

a nawet zdania. Jednostkami tekstu jawnego s¡ tu cz¦sto powtarzaj¡ce si¦<br />

sekwencje liter. W dalszej perspektywie oznacza to tworzenie swego rodzaju<br />

,,sªowników zwanych ksi¡»kami kodowymi. I tu pojawia si¦ kolejny problem.<br />

Nikt nie jest w stanie pami¦ta¢ caªej tre±ci takiej ksi¡»ki. Zatem musi ona<br />

zawsze by¢ pod r¦k¡ zarówno koduj¡cego jak i dekoduj¡cego. Stwarza to<br />

du»e pole manewru dla szpiegów i nie tylko. W sierpniu 1914 roku niemiecki<br />

kr¡»ownik Magdeburg próbowaª uciec od rosyjskiego pancernika i sztuka ta<br />

mu si¦ nie udaªa. Co gorsza, statek zamiast zaton¡¢, osiadª na mieli¹nie i<br />

w zwi¡zku z tym wszystkie ksi¡»ki kodowe niemieckiej marynarki zamiast<br />

zaton¡¢, traªy w r¦ce Rosjan, którzy po przestudiowaniu ich ,,podali dalej.<br />

W rezultacie ksi¡»ki dostaªy si¦ w r¦ce niejakiego Winstona Churchilla, który<br />

wiedziaª jak je wykorzysta¢.<br />

2.12 Szyfry polialfabetyczne<br />

Blaise de Vigenére w wydanej w 1586 roku ksi¡»ce Traicté des Chifres opisaª<br />

kilka ró»nych metod <strong>szyfrowania</strong>. Ostatecznie jego nazwiskiem nazwano<br />

szyfr, który opisany byª wcze±niej przez biskupa J.H. von Trittenheim'a. Idea<br />

szyfrów tego typu polega na u»yciu kilku metod szyfruj¡cych nast¦puj¡cych<br />

po sobie. Na przykªad, rozwa»my ci¡g kluczy k 0 , k 1 , . . . , k r−1 do szyfrów<br />

Cezara. Przeksztaªcenie szyfruj¡ce deniujemy w nast¦puj¡cy sposób.<br />

E k0 k 1 ...k r−1<br />

(m 0 m 1 . . . m n ) = (m 0 + k 0 )(m 1 + k 1 ) . . . (m n + k n mod r ),<br />

przy czy dodawanie wykonujemy modulo liczba liter w alfabecie.<br />

Stosuj¡c uto»samienie liter alfabetu z liczbami modulo 26 mo»emy uto»-<br />

sami¢ ci¡g kluczy i sªowo. Na przykªad zaszyfrujmy FUNKCJA POLIALFA-<br />

BETYCZNA stosuj¡c klucz anulka. W tym celu uªó»my tabel¦ przesuni¦¢:<br />

23


A B C D E F G H I J K L M N O P Q R S T U V W X Y Z<br />

a b c d e f g h i j k l m n o p q r s t u v w x y z<br />

n o p q r s t u v w x y z a b c d e f g h i j k l m<br />

u v w x y z a b c d e f g h i j k l m n o p q r s t<br />

l m n o p q r s t u v w x y z a b c d e f g h i j k<br />

k l m n o p q r s t u v w x y z a b c d e f g h i j<br />

a b c d e f g h i j k l m n o p q r s t u v w x y z<br />

Pierwszy wiersz powy»szej tabeli to alfabet, a ka»dy nast¦pny wiersz, to<br />

alfabet pisany pocz¡wszy od odpowiedniej litery sªowaklucza.<br />

Nast¦pnie nasz tekst dzielimy na bloki dªugo±ci sªowa ,,anulka i szyfrujemy<br />

pierwsz¡ liter¦ ka»dego bloku wedªug pierwszego szyfru, drug¡ wedªug<br />

drugiego itd.<br />

F U N K C J<br />

a n u l k a<br />

f h h v m j<br />

A P O L I A<br />

a n u l k a<br />

a c i w s a<br />

L F A B E T<br />

a n u l k a<br />

l s u m o t<br />

Y C Z N A<br />

a n u l k<br />

y p t y k<br />

Otrzymali±my zatem kryptogram fhhvm jaciw salsu motyp tyk. Deszyfrowanie<br />

odbywa si¦ na podobnej zasadzie, tj.<br />

D k0 k 1 ...k r−1<br />

(m 0 m 1 . . . m n ) = (m 0 − k 0 )(m 1 − k 1 ) . . . (m n − k n mod r ),<br />

gdzie odejmowanie jest wykonywane modulo liczba liter w alfabecie. Aby<br />

uªatwi¢ szyfrowanie i odszyfrowywanie, J.H. von Trittenheim zaproponowaª<br />

poni»sz¡ tabel¦ przesuni¦¢ alfabetu. Nazywa si¦ ona tablic¡ Tryteniusza lub<br />

tabula recta.<br />

24


a b c d e f g h i j k l m n o p q r s t u v w x y z<br />

b c d e f g h i j k l m n o p q r s t u v w x y z a<br />

c d e f g h i j k l m n o p q r s t u v w x y z a b<br />

d e f g h i j k l m n o p q r s t u v w x y z a b c<br />

e f g h i j k l m n o p q r s t u v w x y z a b c d<br />

f g h i j k l m n o p q r s t u v w x y z a b c d e<br />

g h i j k l m n o p q r s t u v w x y z a b c d e f<br />

h i j k l m n o p q r s t u v w x y z a b c d e f g<br />

i j k l m n o p q r s t u v w x y z a b c d e f g h<br />

j k l m n o p q r s t u v w x y z a b c d e f g h i<br />

k l m n o p q r s t u v w x y z a b c d e f g h i j<br />

l m n o p q r s t u v w x y z a b c d e f g h i j k<br />

m n o p q r s t u v w x y z a b c d e f g h i j k l<br />

n o p q r s t u v w x y z a b c d e f g h i j k l m<br />

o p q r s t u v w x y z a b c d e f g h i j k l m n<br />

p q r s t u v w x y z a b c d e f g h i j k l m n o<br />

q r s t u v w x y z a b c d e f g h i j k l m n o p<br />

r s t u v w x y z a b c d e f g h i j k l m n o p q<br />

s t u v w x y z a b c d e f g h i j k l m n o p q r<br />

u v w x y z a b c d e f g h i j k l m n o p q r s t<br />

v w x y z a b c d e f g h i j k l m n o p q r s t u<br />

w x y z a b c d e f g h i j k l m n o p q r s t u v<br />

x y z a b c d e f g h i j k l m n o p q r s t u v w<br />

y z a b c d e f g h i j k l m n o p q r s t u v w x<br />

z a b c d e f g h i j k l m n o p q r s t u v w x y<br />

Šamanie szyfrów Vigenére'a polega na dopasowaniu odpowiedniego alfabetu<br />

do pozycji danej litery. Gªównym problemem jest tutaj jednak znalezienie<br />

okresu r. I to jest zapewne gªówna przyczyna, dla której szyfr Viginére'a<br />

byª ,,nieªamalny przez prawie trzysta lat! Dopiero w 1863 roku, ocer armii<br />

pruskiej, F. W. Kasiski wynalazª metod¦ wypadkowej przypadkowo±ci 1 ,<br />

której nie opiszemy z uwagi na zbyt skomplikowany aparat statystyczny.<br />

Wykorzystuj¡c ci¡g kluczy k 0 k 1 · · · k r−1 do monoalfabetycznych szyfrów<br />

Beauforta tworzymy szyfr Beauforta, w którym przeksztaªcenia szyfruj¡ce i<br />

deszyfruj¡ce pokrywaj¡ si¦.<br />

E k0 k 1 ...k r−1<br />

(m 0 m 1 . . . m n ) = (−m 0 + k 0 )(−m 1 + k 1 ) . . . (−m n + k n mod r ),<br />

1 ang. the incidence of coincidences<br />

25


Dodawanie i odejmowanie, odbywa si¦ na zasadach arytmetyki modularnej z<br />

moduªem, którym jest liczba liter w alfabecie.<br />

Stosuj¡c uto»samienie liter alfabetu z liczbami modulo 26 mo»emy uto»sami¢<br />

ci¡g kluczy i pewien wyraz hasªo. Dla przykªadu zaszyfrujmy FUNK-<br />

CJA POLIALFABETYCZNA stosuj¡c klucz anulka. W tym celu uªó»my<br />

tabel¦ alfabetów szyfruj¡cych:<br />

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z<br />

a z y x w v u t s r q p o n m l k j i h g f e d c b<br />

n m l k j i h g f e d c b a z y x w v u t s r q p o<br />

u t s r q p o n m l k j i h g f e d c b a z y x w v<br />

l k j i h g f e d c b a z y x w v u t s r q p o n m<br />

k j i h g f e d c b a z y x w v u t s r q p o n m l<br />

a z y x w v u t s r q p o n m l k j i h g f e d c b<br />

Nast¦pnie nasz tekst dzielimy na bloki dªugo±ci sªowa anulka i szyfrujemy<br />

pierwsz¡ liter¦ ka»dego bloku wedªug pierwszego szyfru, drug¡ wedªug<br />

drugiego itd.<br />

F U N K C J<br />

a n u l k a<br />

v t h b i r<br />

A P O L I A<br />

a n u l k a<br />

a y g a c a<br />

L F A B E T<br />

a n u l k a<br />

p i u k g h<br />

Y C Z N A<br />

a n u l k<br />

c l v y k<br />

Otrzymali±my zatem kryptogram vthbi rayga capiu kghcl vyk. Podobnie jak<br />

dla szyfru Vigenére'a i w tym przypadku mo»emy utworzy¢ odpowiedni¡<br />

tabel¦ przesuni¦¢ alfabetu.<br />

Uogólnieniem dwóch powy»szych systemów jest wariant aniczny szyfru<br />

Vigenére'a. Do konstrukcji przeksztaªcenia szyfruj¡cego u»ywamy tu ci¡gu<br />

kluczy (n 0 , k 0 ), (n 1 , k 1 ) . . . , (n r−1 , k r−1 ) do szyfrów anicznych. Sama konstrukcja<br />

odbywa si¦ na podobnej zasadzie jak w poprzednich przypadkach:<br />

E(m 0 m 1 . . . m p ) = (n 0 m 0 + k 0 )(n 1 m 1 + k 1 ) . . . (n p mod r m p + k p mod r ).<br />

Wedªug F. Bauera, oryginalny szyfr Vigenére'a skªadaª si¦ z serii przesuni¦tych<br />

alfabetów ustawionych bez okre±lonych reguª arytmetycznych:<br />

26


A B C D E F G H I J K L M N O P Q R S T U V W X Y Z<br />

s z y f r o w a n i e b c d g h j k l m p q t u v x<br />

z y f r o w a n i e b c d g h j k l m p q t u v x s<br />

y f r o w a n i e b c d g h j k l m p q t u v x s z<br />

f r o w a n i e b c d g h j k l m p q t u v x s z y<br />

r o w a n i e b c d g h j k l m p q t u v x s z y f<br />

o w a n i e b c d g h j k l m p q t u v x s z y f r<br />

Generalnie, je±li mamy ci¡g E 0 , E 1 , . . . , E r−1 bijekcji alfabetu, to generowany<br />

przez ten ci¡g szyfr polialfabetyczny jest dany przez przeksztaªcenie<br />

E(m 0 m 1 . . . m p ) = E 0 (m 0 )E 1 (m 1 ) . . . E p mod r (m p ),<br />

gdzie m = m 0 m 1 . . . m p jest wiadomo±ci¡ jawn¡. Dla przykªadu, szyfr frazy<br />

szyfr oryginalny w powy»szym systemie, to lssnq muogk ubusc.<br />

W latach czterdziestych XX wieku C.E. Shannon stworzyª teori¦ entropii,<br />

która zajmuje si¦ badaniem informacji zawartej w tek±cie. Mi¦dzy innymi<br />

zdeniowaª on zasad¦ bezwarunkowego bezpiecze«stwa, czyli szyfru niemo»-<br />

liwego do zªamania. Szyfr polialfabetyczny jest takim, je±li speªnione s¡<br />

nast¦puj¡ce warunki<br />

• Klucz u»yty do <strong>szyfrowania</strong> wiadomo±ci jest dªu»szy lub równy szyfrowanej<br />

wiadomo±ci.<br />

• Klucz musi by¢ wygenerowany w sposób caªkowicie losowy (nie mo»e<br />

istnie¢ sposób na odtworzenie klucza na podstawie znajomo±ci dziaªania<br />

generatorów liczb pseudolosowych).<br />

• Klucz nie mo»e by¢ u»yty do za<strong>szyfrowania</strong> wi¦cej ni» jednej wiadomo-<br />

±ci.<br />

Opublikowany w 1917 roku szyfr G.S. Vernama speªnia te warunki. Kryptosystem<br />

ten jest u»ywany do dzi± w poª¡czeniu gor¡cej linii mi¦dzy Waszyngtonem<br />

a Moskw¡. Idea tego szyfru polega na tym, »e klucz jest generowany<br />

pseudoprzypadkowo i ten sam generator strumienia pseudoprzypadkowego<br />

zamontowany jest na obu ko«cach linii przesyªowej. Klucz szyfruj¡cy i deszyfruj¡cy<br />

jest ten sam. Wiadomo±¢ jest najpierw kodowana na strumie« zer<br />

i jedynek a nast¦pnie dodawany jest do niej modulo dwa pseudoprzypadkowy<br />

strumie« klucza. Dekodowanie odbywa si¦ w oparciu o t¦ sam¡ zasad¦.<br />

27


Zdecydowanie nie jest bezwarunkowo bezpieczny system autoklucz, gdzie<br />

sama szyfrowana wiadomo±¢ jest kluczem (drugi warunek nie jest speªniony).<br />

System autoklucza polega na zastosowaniu pewnego systemu, gdzie litery<br />

alfabetu mo»na uto»sami¢ z kluczem. W ten sposób pami¦tamy jeden klucz<br />

(starter), wedªug którego szyfrujemy pierwsz¡ liter¦ tekstu. Druga litera jest<br />

szyfrowana wg klucza, którym jest pierwsza litera itd. Dla szyfru Cezara,<br />

gdzie starterem jest k, mamy<br />

E(m 0 m 1 m 2 . . . m p ) = (m 0 + k)(m 1 + m 0 )(m 2 + m 1 ) . . . (m p + m p−1 ).<br />

2.13 Ša«cuch szyfrów i DES<br />

Do±¢ istotn¡ wad¡ schematu opisanego w poprzednim paragrae, jest fakt, »e<br />

ten sam tekst szyfruje si¦ tak samo, je±li u»yty jest ten sam klucz. Chodzi o<br />

to, »e potencjalny intruz wcale nie musi zna¢ tekstu jawnego, by wymusi¢ na<br />

odbiorcy szyfru okre±lone dziaªanie wystarczy, »e prze±le mu przechwycony<br />

wcze±niej (zaszyfrowany) tekst. Poniewa» intruz wie jaka reakcja byªa wcze-<br />

±niej, podejrzewa, »e taka sama b¦dzie i tym razem. Jednym ze sposobów<br />

omini¦cia tej niedogodno±ci jest zastosowanie Ša«cuch szyfrów 1 . Pomysª jest<br />

nast¦puj¡cy:<br />

Dzielimy tekst jawny (zakodowany w strumie« bitów) na bloki M i po n<br />

bitów. Potrzebny jest inicjuj¡cy wektor zero-jedynkowy C 0 o n bitach oraz<br />

klucz K tej samej dªugo±ci. Pierwszy blok tekstu jawnego szyfrujemy jako<br />

C 1 = M 1 ⊕ C 0 ⊕ K, drugi jako C 2 = M 2 ⊕ C 1 ⊕ K, i tak dalej. Ogólnie,<br />

C j = M j ⊕ C j−1 ⊕ K. W celu roz<strong>szyfrowania</strong>, dzielimy tekst zaszyfrowany<br />

na n-bitowe kawaªki C i i otrzymujemy kolejno M 1 = C 1 ⊕ C 0 ⊕ K, nast¦pnie,<br />

M 2 = C 2 ⊕ C 1 ⊕ K itd. Je±li który± z C i jest bª¦dny, to otrzymujemy bª¡d<br />

w co najwy»ej dwóch kawaªkach tekstu jawnego, mianowicie M i oraz M i+1 .<br />

Wektor C 0 musi by¢ przesªany innym kanaªem ni» wiadomo±¢ jawna i klucz.<br />

Przy odpowiednio du»ym n istnieje bardzo maªa szansa, »e wiadomo±¢, klucz<br />

i wektor inicjuj¡cy powtórz¡ si¦.<br />

Ša«cuch szyfrów jest wykorzystany w systemie DES 1 , który byª u»ywany<br />

od 1977 roku do ko«ca lat osiemdzisi¡tych. W 1974 roku, National Bureau of<br />

Standards zobowiazaªo rmy ameryka«skie do napisania programu szyfruj¡-<br />

cego, który b¦dzie standardem w kodowaniu wiadomo±ci rz¡dowych. Miaª on<br />

1 ang. cipherblock chaining<br />

1 Data Encryption Standard<br />

28


zastapi¢ niewygodne w u»yciu ksi¡»ki kodowe. Odpowiedzi¡ rmy IBM byª<br />

system LUCIFER, który po uproszczeniu i modykacji staª si¦ standardem.<br />

Program szyfruj¡cy zostaª rozpowszechniony w postaci ko±ci, któr¡ ka»dy<br />

zainteresowany mógª wmontowa¢ w swój komputer. Rozszyfrowywanie polegaªo<br />

na u»yciu tej samej ko±ci.<br />

Opiszemy teraz zasad¦ dziaªania algorytmu DES. Wej±ciowe 64 bity s¡<br />

najpierw pomieszane przez pocz¡tkow¡ permutacj¦ IP. Pierwsze 32 bity<br />

tworz¡ wektor L 0 , a nast¦pne 32 tworz¡ R 0 . Po szesnastu rundach manipulacji,<br />

wektory lewy i prawy ª¡cz¡ si¦ w caªo±¢ i przechodz¡ przez permutacj¦<br />

IP −1 generuj¡c ostateczn¡ wersj¦ szyfru.<br />

Podczas 16 rund <strong>szyfrowania</strong> tworz¡ si¦ kolejno wektory L 1 , L 2 , . . . , L 16<br />

oraz R 1 , R 2 , . . . , R 16 . Dla 1 ≤ i ≤ 16, mamy<br />

L i = R i−1 , R i = L i−1 ⊕ f(R i−1 , K i ),<br />

gdzie f(R i−1 , K i ) jest wektorem dwójkowym o 32 wspóªrz¦dnych, a wektory<br />

K i s¡ 48-bitowymi wektorami generowanymi przez klucz K wedªug procedury,<br />

któr¡ opiszemy pó¹niej.<br />

Dekodowanie odbywa si¦ w odwrotn¡ stron¦, tj. najpierw zaszyfrowany<br />

tekst jest poddawany permutacji IP −1 , tworz¡ si¦ L 16 i R 16 , a nast¦pnie<br />

obliczane s¡ kolejno<br />

R 15 = L 16 , L 15 = R 16 ⊕ f(R 15 , K 16 ) . . . , R 0 = L 1 , L 0 = R 1 ⊕ f(R 0 , K 1 ).<br />

Poª¡czony wektor L 0 R 0 jest poddany permutacji IP i powstaje ci¡g 64 bitów<br />

wiadomo±ci jawnej.<br />

Warto±ci¡ funkcji f jest 32-bitowy ci¡g. Procedura jego powstawania wygl¡da<br />

nast¦puj¡co. Jak ju» wspominali±my, K i ma 48 bitów, a R i−1 - 32 bity.<br />

Aby te wektory doda¢, musimy rozszerzy¢ R i−1 do 48 bitów. Rozszerzenie<br />

R i−1 odbywa si¦ wedªug Tabeli selekcji bitów. Powstaªy 48-bitowy strumie«<br />

jest podzielony na 8 wektorow 6-bitowych, które s¡ przepuszczone przez S-<br />

boksy (Tabela S-boksów). Aby przybli»y¢ metod¦ dziaªania S-boksów, rozwa»my<br />

wektor sze±ciobitowy a 1 a 2 a 3 a 4 a 5 a 6 , na przykªad 010011, który traa<br />

na S 4 . Bity a 1 a 6 to numer wiersza (i), a a 2 a 3 a 4 a 5 to numer kolumny (j) zapisane<br />

w ukªadzie dwójkowym. Strumie« wyj±ciowy (w ukªadzie dziesi¦tnym)<br />

jest na pozycji (i, j) S-boksa. W naszym przypadku, 01 2 = 1 oraz 1001 2 = 9<br />

i w S 4 znajduje si¦ na pozycji (1, 9) liczba 7 = 0111 2 . Zatem strumieniem<br />

wyj±ciowym jest 0111.<br />

29


32 1 2 3 4 5<br />

4 5 6 7 8 9<br />

8 9 10 11 12 13<br />

12 13 14 15 16 17<br />

16 17 18 19 20 21<br />

20 21 22 23 24 25<br />

24 25 26 27 28 29<br />

28 29 30 31 32 1<br />

Rysunek 2.2: Tabela selekcji bitów<br />

Po wyj±ciu z S-boksów, strumienie 4-bitowe ª¡cz¡ si¦ tworz¡c 32-bitowy<br />

wektor, który dodatkowo przechodzi przez permutacj¦ P.<br />

Klucz K ma 64 bity podzielone na 8-bitowe cz¦±ci, z których ka»da ma<br />

7 efektywnych bitów, a ósmy bit sprawdza parzysto±¢. Dokªadnie, jest on<br />

ustalony tak, by w caªej ósemce liczba jedynek byªa parzysta. W przypadku,<br />

gdyby wyst¡piª bª¡d w transmisji klucza, zostaje on wykryty z dokªadnym<br />

wskazaniem ósemki, w której wyst¡piª. Z 64 bitów klucza, po sprawdzeniu<br />

poprawno±ci, 8 bitów sprawdzaj¡cych jest odrzuconych, a pozostaªe 56 bitów<br />

przechodzi przez permutacj¦ pocz¡tkow¡ P C1. Spermutowany strumie« 56<br />

bitów jest podzielony na póª. Pierwsze 28 bitów tworzy wektor C 0 , a nast¦pne<br />

D 0 . Wektory C 1 i D 1 powstaj¡ przez (cykliczne) przesuni¦cie zawarto±ci<br />

C 0 , odpowiednio, D 0 o LS 1 = 1 pozycji w lewo. Ogólnie, C i oraz D i powstaj¡<br />

przez przesuni¦cie zawarto±ci, odpowiednio, C i−1 , D i−1 o LS i pozycji w lewo.<br />

Wektory C i oraz D i s¡ nast¦pnie ª¡czone i po przej±ciu selekcji P C 2 tworz¡<br />

48-bitowy strumie« K i .<br />

Gªówne zarzuty wobec DES, to, po pierwsze, zbyt krótki klucz, co powoduje,<br />

»e mo»e on by¢ znaleziony w miar¦ szybko metod¡ sprawdzenia wszystkich<br />

2 56 mo»liwo±ci. Po drugie, nie wiadomo, jakie kryteria kierowaªy konstruktorami<br />

S-boksów. Testy statystyczne pokazuj¡, »e liczby w S-boksach<br />

nie s¡ przypadkowe. Niewykluczone, »e kryje si¦ tu pewna furtka pozwalaj¡ca<br />

ªatwo rozszyfrowa¢ zakodowan¡ wiadomo±¢.<br />

Mimo swoich wad DES byª do±¢ dªugo u»ywany, a» w ko«cu ust¡piª on<br />

miejsca kryptosystemom o kluczu publicznym. Rozpowszechnienie szybkich,<br />

ªatwo programowalnych komputerów doprowadziªo do sytuacji, w której ko±¢<br />

szyfruj¡ca okazaªa si¦ zb¦dna: Po co montowa¢ do komputera dodatkowe<br />

urz¡dzenie, je±li mo»na napoisa¢ program, który powoduje takie samo dzia-<br />

ªanie, a jeszcze dodatkowo mo»na go w ka»dej chwili ulepszy¢.<br />

30


kolumna<br />

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

wiersz<br />

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

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

S 1 2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0<br />

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

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

1 3 13 4 7 1 2 8 14 12 0 1 10 6 9 11 5<br />

S 2 2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15<br />

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

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

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

S 3 2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7<br />

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

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

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

S 4 2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4<br />

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

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

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

S 5 2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14<br />

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

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

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

S 6 2 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6<br />

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

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

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

S 7 2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2<br />

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

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

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

S 8 2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8<br />

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

Rysunek 2.3: Tabela S-boksów<br />

31

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!