Wykład VIII: Pakowanie plecaka

Transkrypt

Wykład VIII: Pakowanie plecaka
WST†P 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