Wykład VIII: Pakowanie plecaka
Transkrypt
Wykład VIII: Pakowanie plecaka
WSTP DO KRYPTOGRAFII Grzegorz Szkibiel Jesie« 2012/13 Spis tre±ci 1 Kryptograa a steganograa 5 1.1 Steganograa . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2 Szyfry przestawieniowe . . . . . . . . . . . . . . . . . . . . . . 8 1.3 Systemy kryptograczne 9 . . . . . . . . . . . . . . . . . . . . . 2 Klasyczne metody szyfrowania 12 2.1 Szyfry cykliczne . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2 Monoalfabetyczny szyfr Beauforta . . . . . . . . . . . . . . . . 13 2.3 Kody aniczne jednowymiarowe . . . . . . . . . . . . . . . . . 14 2.4 Permutacje alfabetu . . . . . . . . . . . . . . . . . . . . . . . 15 2.5 Analiza cz¦sto±ci wyst¦powania liter . . . . . . . . . . . . . . . 16 2.6 Homofony i nulle . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.7 Jednostki dwuliterowe czyli digramy . . . . . . . . . . . . . . . 18 2.8 Szyfr Playfaira . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.9 Podwójny szyfr Playfaira . . . . . . . . . . . . . . . . . . . . . 20 2.10 szyfr Delastelle'a . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.11 Jednostki wieloliterowe . . . . . . . . . . . . . . . . . . . . . . 22 2.12 Szyfry polialfabetyczne . . . . . . . . . . . . . . . . . . . . . . 22 2.13 a«cuch szyfrów i DES . . . . . . . . . . . . . . . . . . . . . . 27 3 Maszyny szyfruj¡ce 33 3.1 Zasada dziaªania . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.2 Jak zªamano szyfr ENIGMY . . . . . . . . . . . . . . . . . . . 37 4 Macierze szyfruj¡ce 42 N 4.1 Algebra liniowa modulo . . . . . . . . . . . . . . . . . . . . 42 4.2 Szyfry Hill'a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.3 Aniczne przeksztaªcenia szyfruj¡ce . . . . . . . . . . . . . . . 49 2 5 Pakowanie plecaka 51 5.1 Postawienie problemu . . . . . . . . . . . . . . . . . . . . . . . 51 5.2 Szybko rosn¡ce ci¡gi . . . . . . . . . . . . . . . . . . . . . . . 52 oparty na problemie pakowania plecaka . . . . . . . . . . . . . 54 5.3 Kryptosystem 6 Systemy z publicznym kluczem 57 6.1 Numeryczna funkcja jednokierunkowa . . . . . . . . . . . . . . 58 6.2 Funkcje skrótu . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.3 poufno±¢ i autentyczno±¢. . . . . . . . . . . . . . . . . . . . . . 59 6.4 Wymiana kluczy 61 6.5 2-1 funkcje jednokierunkowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 System RSA 61 63 7.1 Rozkªad liczb na czynniki . . . . . . . . . . . . . . . . . . . . 63 7.2 Liczby wybrane losowo . . . . . . . . . . . . . . . . . . . . . . 64 7.3 Zasada dziaªania systemu RSA . . . . . . . . . . . . . . . . . 65 7.4 Wpadka systemowa wspólny moduª . . . . . . . . . . . . . . . 66 7.5 Wpadka systemowa niski wykªadnik . . . . . . . . . . . . . . . 66 8 Teorio-liczbowe podstawy RSA 68 8.1 Systemy pozycyjne . . . . . . . . . . . . . . . . . . . . . . . . 68 8.2 Iterowane podnoszenie do kwadratu . . . . . . . . . . . . . . . 70 8.3 Twierdzenie Eulera i Maªe Twierdzenie Fermata . . . . . . . . . . . . . . . . . . . . 70 8.4 liczby pseudo-pierwsze 72 8.5 Chi«skie twierdzenie o resztach 8.6 Kongruencje stopnia 2 8.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 . . . . . . . . . . . . . . . . . . . . . . 78 Gra w orªa i reszk¦ przez telefon . . . . . . . . . . . . . . . . . 81 9 Zastosowania arytmetyki modulo m do rozkªadu liczb 84 9.1 Wzory skróconego mno»enia . . . . . . . . . . . . . . . . . . . 9.2 Metoda . . . . . . . . . . . . . . . . . 86 9.3 Metoda faktoryzacji Fermata . . . . . . . . . . . . . . . . . . . 88 9.4 Bazy rozkªadu . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 ρ rozkªadu na czynniki 3 84 10 Logarytm dyskretny 93 10.1 Poj¦cie logarytm dyskretny . . . . . . . . . . . . . . . . . . . 93 10.2 System DiegoHellmana uzgadniania klucza . . . . . . . . . . . . . . . . . . . . . . . . 10.3 System kryptograczny Masseya-Omury 94 . . . . . . . . . . . . 96 10.4 System ElGamala . . . . . . . . . . . . . . . . . . . . . . . . . 97 11 Protokoªy o zerowej wiedzy i przekazy nierozró»nialne 11.1 Kolorowanie mapy 11.2 Logarytm dyskretny . . . . . . . . . . . . . . . . . . . . . . . . 98 98 . . . . . . . . . . . . . . . . . . . . . . . 100 11.3 Przekazy nierozró»nialne . . . . . . . . . . . . . . . . . . . . . 101 11.4 Dowód faktoryzacji . . . . . . . . . . . . . . . . . . . . . . . . 103 4 Rozdziaª 5 Pakowanie plecaka 5.1 Postawienie problemu Jak zauwa»yli±my, szyfry oparte na rachunku macierzowym nie s¡ przera»aj¡co trudne do zªamania. Zdecydowanie trudniejszy jest kryptosystem oparty na nast¦puj¡cym problemie pakowania plecaka: Zaªó»my, »e musimy zabra¢ ze sob¡ na wycieczk¦ w góry wiele ,,potrzebnych przedmiotów. Jednak»e do dyspozycji mamy jedynie plecak o ograniczonej pojemno±ci S. Przedmioty maj¡ obj¦to±ci zsumowaniu daj¡ obj¦to±¢ wi¦ksz¡ od gnowa¢. S. a1 , a2 , . . . , an , które po Musimy zatem z czego± zrezy- Jedynym kryterium jest tu tylko to, by plecak byª zapakowany optymalnie, tj. bierzemy tylko te przedmioty, których obj¦to±ci daj¡ sum¦ S. Co zatem wªo»y¢ do plecaka? 5.1 Przykªad. Wówczas mamy (a1 , a2 , a3 , a4 , a5 ) = (2, 7, 8, 11, 12) oraz niech S = 21. a1 + a3 + a4 = S oraz a1 + a2 + a5 = S . Zatem zabieramy Niech ze sob¡ przedmioty pierwszy, trzeci i pi¡ty, lub pierwszy, drugi i szósty. Powy»szy problem mo»na sformuªowa¢ nast¦puj¡co: Dla danych liczb naturalnych x2 , . . . , xn a1 , a2 , . . . , an oraz S, znale¹¢ taki ci¡g x1 , zªo»ony z zer i jedynek, »eby zachodziªa równo±¢ a1 x1 + a2 x2 + · · · + an xn = S. Rozwa»aj¡c ci¡g z przykªadu 5.1 dostajemy dwa rozwi¡zania: x1 = x3 = x4 = 1, x2 = x5 = 0 oraz 51 x1 = x2 = x5 = 1, x3 = x4 = 0. (5.1) x1 , x2 , . . . , xn , Aby znale¹¢ ci¡g kona¢ co najwy»ej dla którego (5.1) zachodzi musimy wy- n dodawa«, jednak »eby rozwi¡za¢ problem pakowania 2n mo»liwo±ci. n Oznacza to, »e rozwi¡zanie powy»szego problemu zajmuje O(2 ) czasu. Naj- plecaka metod¡ prób i bª¦dów, musimy sprawdzi¢ wszystkie n szybszy znany algorytm dziaªa w czasie O(2 2 ). Je±li n = 100, to komputer 20 wykonuj¡cy 2 (procesor 1MHz) operacji na sekund¦ potrzebuje na rozwi¡30 zanie problemu pakowania plecaka czas rz¦du 2 , czyli okoªo miliard sekund albo ponad 30 lat! Pewne warto±ci liczb a1 , a2 , . . . , an zdecydowanie przy±pieszaj¡ rozwi¡- zanie problemu pakowania plecaka. Na przykªad, je±li s¡ to pot¦gi dwójki, to rozwi¡zanie sprowadza si¦ do znalezienia rozwini¦cia liczby S w systemie dwójkowym. Rozwini¦cie to znajdujemy w czasie logarytmicznym stosuj¡c tzw. ,,chciwy algorytm, który opiszemy poni»ej. 5.2 Szybko rosn¡ce ci¡gi Ci¡g liczb naturalnych a1 , a2 , . . . , an j−1 X ai < aj nazywamy szybko rosn¡cym, je±li dla j ∈ {2, 3, . . . , n}. i=1 Przykªadem szybko rosn¡cego ci¡gu jest 2, 3, 7, 14, 27. Niech S = 37. Wówczas ,,chciwy algorytm dziaªa nast¦puj¡co: Zawsze bierzemy najwi¦k- x5 = 1, ale x4 = 0 poniewa» 27 + 14 > 37. x3 = 1 gdy» 27 + 7 < 37. Podobnie, x2 = 1 oraz x1 = 0. Ogólnie, je±li mamy szybko rosn¡cy ci¡g a1 , a2 , . . . , an , to wyznaczamy xn , xn−1 , . . . , x1 korzystaj¡c ze wzorów ( 1, je±li S ≥ an xn = 0, je±li S < an szy przedmiot jaki si¦ mie±ci. Tak wi¦c oraz xj dla ( 1, = 0, je±li je±li P S − ni=j+1 xi ai ≥ aj P S − ni=j+1 xi ai < aj j ∈ {n − 1, n − 2, . . . , 1}. Problem pakowania plecaka dla ci¡gów szybko rosn¡cych mo»e by¢ wi¦c rozwi¡zany bardzo szybko. Poni»szy system kryptograczny MerklegoHell- 52 mana, który do roku 1982 byª uwa»any za najlepszy system o tzw. kluczu publicznym opiera si¦ na ,,zamianie problemu trudnego na problem ªatwy. Zaªó»my, »e nych. Niech m a1 , a2 , . . . , an jest szybko rosn¡cym ci¡giem liczb natural- b¦dzie liczb¡ naturaln¡ wi¦ksz¡ od 2an . We¹my dowoln¡ m i utwórzmy ci¡g b1 , w wzgl¦dnie pierwsz¡ z b2 , . . . , bn bior¡c wa1 , wa2 , . . . , wan modulo m. Je»eli b1 , b2 , . . . , bn nie jest ci¡giem szybko rosn¡cym, to »eby rozwi¡za¢ Pn problem pakowania plecaka i=1 xi bi = S , nie mo»emy u»y¢ chciwego algo−1 rytmu. Jednak»e, je±li znamy w , to mo»emy rozwi¡za¢ problem pakowania liczb¦ caªkowit¡ nieujemn¡ plecaka n X xi ai = S0 , (5.2) i=1 gdzie S0 ≡ Sw−1 (mod m). Kiedy mamy ju» rozwi¡zany problem (5.2), to wiemy, »e −1 w S= n X −1 w x i bi ≡ i=1 n X x i ai (mod m). i=1 Powy»sz¡ procedur¦ opiszemy na przykªadzie. 5.2 Przykªad. Rozwa»my szybko rosn¡cy ci¡g (a1 , a2 , a3 , a4 , a5 ) = (3, 5, 9, 20, 44), Zauwa»my, »e w−1 = 4. Wówczas m = 89 oraz w = 67. (b1 , b2 , b3 , b4 , b5 ) = (23, 68, 69, 5, 11). eby rozwi¡za¢ problem pakowania plecaka 23x1 + 68x2 + 69x3 + 5x4 + 11x5 = 84, mno»ymy obie strony powy»szego równania przez 4 i redukujemy modulo 89 otrzymuj¡c 3x1 + 5x2 + 9x3 + 20x4 + 44x5 = 69. Teraz rozwi¡zujemy ªatwo powy»szy problem pakowania plecaka otrzymuj¡c x1 = x3 = 0; x2 = x4 = x5 = 1. rozwi¡zanie 68 + 5 + 11 = 84. 53 Zatem nasz pierwotny problem ma 5.3 Kryptosystem oparty na problemie pakowania plecaka System kryptograczny oparty na problemie pakowania plecaka dziaªa na- a1 , a2 , . . . , an , liczb¦ m > 2an w wzgl¦dnie pierwsz¡ z m. Nast¦pnie obliczamy wyrazy ci¡gu . . . , bn , który jest kluczem szyfruj¡cym. W celu zaszyfrowania wia- st¦puj¡co. Wybieramy szybko rosn¡cy ci¡g oraz liczb¦ b1 , b2 , domo±ci, zamieniamy j¡ najpierw na ci¡g bitów, zgodnie z poni»sz¡ tabelk¡. Nast¦pnie otrzymany ci¡g zer i jedynek dzielimy na bloki dªugo±ci n. Dla Pn ka»dego bloku x1 , x2 , . . . , xn , obliczamy sum¦ i=1 xi bi i otrzymany ci¡g sum wysyªamy jako tekst zaszyfrowany, lub w omówiony wcze±niej z adresatem sposób, zamieniamy liczby na bloki liter i nast¦pnie wysyªamy. litera odpowiednik litera odpowiednik A 00000 N 01101 B 00001 O 01110 C 00010 P 01111 D 00011 Q 10000 E 00100 R 10001 F 00101 S 10010 G 00110 T 10011 H 00111 U 10100 I 01000 V 10101 J 01001 W 10110 K 01010 X 10111 L 01011 Y 11000 M 01100 Z 11001 Dla przykªadu zaszyfrujemy wiadomo±¢ REPLY IMMEDIATELY u»ywaj¡c ci¡gu C = (2002, 3337, 2503, 2170, 503, 172, 3347, 855). Najpierw zamie- niamy litery na bity i otrzymany ci¡g dzielimy na bloki 8-bitowe. Jak zwykle, ostatni blok uzupeªniamy dowolnie, aby tak jak pozostaªe miaª 8 bitów. 10001001 00011110 10111100 00100001 10001100 00100000 11010000 00001001 10010001 01111000 54 W kolejnym kroku obliczamy odpowiednie sumy wyrazów ci¡gu C otrzy- muj¡c kryptogram (3360, 3192, 7350, 3358, 2677, 7509, 1358, 5027, 8513). Na przykªad dodajemy 2002, 503 i 855 »eby otrzyma¢ 3360. (5.3) Je±li chcemy otrzyma¢ kryptogram zapisany alfabetycznie, mo»emy zamieni¢ liczby z systemu dziesi¦tnego na pozycyjny o podstawie 26. Wtedy cyframi s¡ pozycje liter, wi¦c zamiast liczb dziesi¦tnych mamy bloki liter. Zauwa»my, »e suma 3 wszystkich elementów ci¡gu C , to 14889 i jest to liczba mniejsza od 26 . Mo»emy wi¦c ka»d¡ liczb¦ kryptogramu (5.3) zast¡pi¢ blokiem trzech liter. Na 2 przykªad, 7350 = 10 · 26 + 22 · 26 + 18, wi¦c zast¦pujemy j¡ blokiem KWS. Ostatecznie otrzymujemy EZGJEE KWSEZE DYZDSH LCVCAG HLJMPL. Zauwa»my teraz, »e klucz szyfruj¡cy mo»e by¢ podany do publicznej wiadomo±ci: Mamy tekst jawny oraz kryptogram wªa±nie otrzymany, ale czy jeste±my w stanie odczyta¢ inny kryptogram, np. NCZKQL KENNCO LWMKEN lub w postaci numerycznej, (8865, 7187, 6877, 8854, 8020, 6877), (5.4) zaszyfrowany tym samym kluczem? W sumie, to nawet nie wiemy od razu, ile liter jest w tek±cie jawnym. Powy»sza idea prowadzi do powstania sieci korespondentów. Ka»dy u»ytkownik sieci ma swój prywatny klucz rozszyfrowuj¡cy, a klucze szyfruj¡ce mog¡ by¢ umieszczone w swoistej ,,ksi¡»ce telefonicznej, która jest dostarczona ka»demu u»ytkownikowi sieci. Ide¦ t¦ omówimy w nast¦pnym rozdziale, a teraz poka»emy jak mo»na ªatwo rozszyfrowa¢ szyfr (5.4). Do rozszyfrowania potrzebujemy oryginalnego ci¡gu szybko rosn¡cego, jakim jest (2, 11, 14, 29, 58, 119, 241, 480), liczby m = 3837 oraz w−1 = 23. Znajdujemy kolejno: 8865 · 23 ≡ 534 7187 · 23 ≡ 310 6877 · 23 ≡ 854 8854 · 23 ≡ 281 8020 · 23 ≡ 284 55 (mod (mod (mod (mod (mod 3837) 3837) 3837) 3837) 3837), a nast¦pnie 534 = 0 · 2 + 1 · 11 + 1 · 14 + 1 · 29 + 0 · 58 + 0 · 119 + 0 · 241 + 1 · 480 310 = 0 · 2 + 1 · 11 + 0 · 14 + 0 · 29 + 1 · 58 + 0 · 119 + 1 · 241 + 0 · 480 854 = 0 · 2 + 0 · 11 + 1 · 14 + 0 · 29 + 0 · 58 + 1 · 119 + 1 · 241 + 1 · 480 281 = 0 · 2 + 1 · 11 + 0 · 14 + 1 · 29 + 0 · 58 + 0 · 119 + 1 · 241 + 0 · 480 284 = 0 · 2 + 0 · 11 + 1 · 14 + 1 · 29 + 0 · 58 + 0 · 119 + 1 · 241 + 0 · 480. Zatem wiadomo±¢ (5.4) w wersji binarnej, to 01110 00101 00101 00010 01110 10100 10001 10010 00100 111, co daje wiadomo±¢ jawn¡ OFF COURSE. Trzy ostatnie bity zostaªy dodane przy szyfrowaniu, aby dopeªni¢ blok. Zauwa»my, »e je»eli dªugo±¢ ci¡gu jest równa 5, to opisany szyfr jest bardziej skomplikowan¡ wersj¡ klasycznego szyfru permutacyjnego - litera alfabetu jest zast¡piona liczb¡ w sposób wzajemnie jednoznaczny. W opi- sanym przykªadzie liczb¡, lub blokiem trzech liter zast¦pujemy osiem bitów tekstu jawnego, co jest niepeªnym digramem. W ten sposób istotnie zmieniamy dotychczas poznane reguªy szyfrowania, gdzie dªugo±¢ szyfrowanego bloku liter byªa zawsze liczb¡ naturaln¡. W roku 1983 A. Shamir opublikowaª prac¦, która zdyskwalikowaªa system kryptograczny oparty na problemie pakowania plecaka jako system bezpieczny. Otó» okazaªo si¦, »e szyfr ten mo»na zªama¢ w czasie wielo- mianowym. Po roku 1983 starano si¦ utrudni¢ szyfr, ale poniewa» ka»da próba ko«czyªa si¦ szybko podobn¡ publikacj¡, szyfry oparte na problemie pakowania plecaka nie maj¡ dzi± du»ego powodzenia, mimo »e niektóre z nich w dalszym ci¡gu s¡ nie zªamane. 56