Inzynieria bezpieczenstwa

advertisement
IN YNIERIA BEZPIECZE STWA
LABORATORIUM NR 6
WYBRANE ZAGADNIENIA
Z TEORII LICZB
1. Wybrane zagadnienia z teorii liczb
Do konstruowania systemów kryptograficznych u ywa si cz sto wyrafinowanego aparatu
matematycznego, którego opis mo na znale z zaawansowanych podr cznikach teorii liczb i
algebry. Dla zrozumienia opisywanych tutaj algorytmów wystarczy znajomo podanych
ni ej niektórych problemów teorii liczb.
Du e znaczenie w kryptografii maj liczby pierwsze, czyli takie liczby, które dziel si bez
reszty tylko przez 1 i przez siebie. Wa ne jest te poj cie liczb wzgl dnie pierwszych: dwie
liczby a, b s wzgl dnie pierwsze, je li nie maj wspólnych dzielników >1, co zapisuje si
jako
nwd(a, b) = 1,
gdzie nwd jest skrótem słów najwi kszy wspólny dzielnik.
Ŝ
ę
ę
Ŝ
ź
ć
ę
ś
ć
Ŝ
Ŝ
ą
ą
Ŝ
ę
ą
ę
ę
Ŝ
ś
ę
ą
ę
ę
1.1. Arytmetyka modularna
Wyniki działa przy zastosowaniu tzw. arytmetyki modularnej mieszcz si zwykle w
sko czonym zbiorze liczb, dlatego te ten sposób wykonywania oblicze nazywa si w USA
w szkołach rednich arytmetyk zegarow , poniewa na tarczy zegara analogowego istnieje
tylko 12 liczb.
Notacja
ń
ą
ń
Ŝ
ś
ę
ń
ą
ą
ę
Ŝ
a≡b
(mod n)
(1.1)
oznacza, e
Ŝ
a=b+k×n
(1.2)
dla pewnej liczby całkowitej k. Przykładowo, 7 ≡ 1 (mod 3); 6 ≡ 0 (mod 3).
Zakłada si zwykle, e liczby a i b s dodatnie, oraz e b < n. Przy tych zało eniach liczba b
jest reszt z dzielenia liczby a przez liczb n. Znak ≡ jest symbolem kongruencji, wobec tego,
interpretuj c równanie (1.1) mówi si , e a jest kongruentne do b modulo n. Zbiór liczb
całkowitych
ę
Ŝ
ą
Ŝ
ą
Ŝ
ę
ą
ę
Ŝ
{0, 1, . . . , n-1}
tworzy tzw. zupełny zbiór reszt modulo n, za operacja
(1.3)
ś
a (mod n)
(1.4)
nazywa si redukcj modularn , w wyniku której otrzymuje si tak reszt z dzielenia a przez
n, która jest mniejsza od n.
ę
ą
ą
ę
-1-
ą
ę
Do kongruencji odnosi si małe twierdzenie Fermata, które mówi, e je li p jest liczb
pierwsz , to dla a całkowitych niepodzielnych przez p
a p −1 (mod p ) ≡ 1
Z twierdzenia tego wynika, i
a p (mod p ) ≡ a
ę
Ŝ
ś
ą
ą
Ŝ
Podany tu opis arytmetyki modularnej mo e nie zgadza si z definicjami operacji modulo,
przyj tymi w niektórych j zykach programowania. Np Pascal dopuszcza wykonywanie
operacji modulo na liczbach dodatnich i ujemnych, z modułem równie dodatnim lub
ujemnym, wobec czego wynik tych operacji mo e si zawiera w przedziale [–n + l, n – 1], a
w j zyku C wyra enie a % b oznacza reszt z dzielenia a przez b.
Działania arytmetyki modularnej spełniaj prawa przemienno ci, ł czno ci i rozdzielno ci
mno enia wzgl dem dodawania:
Ŝ
ę
ć
ę
ę
Ŝ
Ŝ
ę
Ŝ
ę
ć
ę
ą
Ŝ
ś
ą
ś
ś
ę
a + b (mod n) = b + a (mod n),
(1-5)
a × b (mod n) = b × a (mod n),
(1-6)
a × (b + c) (mod n) = a × b + a × c (mod n).
(1-7)
Powa nym uproszczeniem arytmetyki modularnej jest mo liwo redukowania po rednich
wyników oblicze modulo n. Zamiast wi c wykonywa najpierw wszystkie obliczenia w
zwykły sposób, a wynik ostateczny zredukowa modulo n, ten sam wynik uzyskuje si
łatwiej, stosuj c zale no ci:
Ŝ
Ŝ
ń
ę
ś
ć
ś
ć
ć
ą
Ŝ
ę
ś
a + b (mod n) = (a (mod n)) + (b (mod n)) (mod n),
a × b (mod n) = (a (mod n)) × (b (mod n)) (mod n),
a × (b + c) (mod n) = ((a (mod n)) × (b (mod n)) (mod n)+
+ (a (mod n)) × (c (mod n)) (mod n))) (mod n).
(1.8)
(1.9)
(1.10)
Gdy moduł arytmetyki modularnej n jest liczb k-cyfrow , to stosuj c powy sze zasady
redukcji, wyniki po rednie nie przekrocz liczby 2k-cyfrowej. Trzeba pami ta , e moduł ten
w kryptografii jest przewa nie liczb ogromn , o kilkuset cyfrach dziesi tnych, co stwarza
zapotrzebowanie na specjalne układy scalone dla arytmetyki modularnej i na specjalizowane
systemy oprogramowania, pozwalaj ce na dowoln dokładno wykonywania działa w
arytmetyce całkowitoliczbowej.
ą
ś
ą
ą
Ŝ
ą
Ŝ
ą
ę
ą
ć
Ŝ
ę
ą
ą
ś
ć
ń
1.2. Algorytm Euklidesa
Bardzo wa n rol w kryptografii spełnia znany od ponad 2300 lat algorytm Euklidesa,
pozwalaj cy w sko czonej liczbie kroków znale najwi kszy wspólny dzielnik dwóch liczb.
Algorytm poszukiwania najwi kszego wspólnego dzielnika dwóch liczb naturalnych a0 i a1,
spełniaj cych warunek a0 > a1, polega na wykonaniu serii operacji dzielenia
całkowitoliczbowego zgodnie ze schematem:
Ŝ
ą
ą
ę
ń
ź
ć
ę
ę
ą
a0
a1
=
=
ak-1
ak
=
=
q1 × a1 + a2,
q2 × a2 + a3,
…
qk × ak+1,
qk+1 × ak+1
-2-
a2 < a1
a3 < a2
ak+1 < ak
Proces dzielenia ko czy si z chwil otrzymania reszty równej zeru. Ostatnia ró na od zera
reszta jest poszukiwanym najwi kszym wspólnym dzielnikiem liczb a0 i a1.
ń
ę
ą
Ŝ
ę
Algorytm Euklidesa mo na opisa za pomoc bardzo prostej zale no ci rekurencyjnej:
dla x = 0
y
nwd ( x, y ) = 
nwd ( y (mod x ), x ) dla x ≠ 0
Ŝ
ć
ą
Ŝ
ś
1.3. Teorioliczbowa funkcja Eulera
Ka da liczba naturalna n da si
dodatnich liczb pierwszych:
Ŝ
przedstawi
ę
w postaci nast puj cego iloczynu pot g
ć
k
n = ∏ pi
ę
ą
ę
di
(1.12)
i =1
Jest to tzw. rozkład kanoniczny liczby n.
Funkcj Eulera φ(n) definiuje si dla ka dej liczby naturalnej (całkowitej dodatniej) n w
sposób nast puj cy:
φ (n) = {s : (1 ≤ s ≤ n ) ∧ (nwd (s, n )) = 1}
Inaczej mówi c jest to moc zbioru liczb nie wi kszych od n i wzgl dnie pierwszych z n.
Funkcja Eulera φ(n) okre la liczb liczb naturalnych w zbiorze {1, 2, …, n-1} wzgl dnie
pierwszych z n. Na przykład, φ(8)= 4, poniewa w zbiorze liczb mniejszych od 8 tylko 1, 3, 5
i 7 s wzgl dnie pierwsze z 8. Liczby wzgl dnie pierwsze nie maj adnego wspólnego
podzielnika wi kszego od 1. Funkcja Eulera dla liczby pierwszej p jest oczywi cie równa p-1.
Aby znale warto funkcji Eulera dla liczby zło onej, rozkłada si j na iloczyn liczb
pierwszych (1.12). Przykładowo, dla n = 2646 mo na napisa : n = 2646 = 2×33×72; zatem
φ(2646) = 1×32×2×7×6 = 756.
ę
ę
ę
Ŝ
ą
ą
ę
ś
ę
ę
ę
Ŝ
ą
ę
ę
ą
Ŝ
ę
ź
ś
ć
ś
ć
Ŝ
ę
Ŝ
ą
ć
Niektóre własno ci funkcji Eulera podane s ni ej:
(a)
φ(p) =p-l,
(b)
φ(pr) = pr-1(p-1),
(c)
φ(a, b) = φ(a)φ(b), gdy nwd(a, b) = 1,
k
(d)
φ(n) = n ∏i =1 (1 − 1 / pi )
ś
gdzie n, pi oraz
pierwszych.
ą
k
Ŝ
jak we wzorze na rozkład liczby naturalnej na iloczyn pot g liczb
ę
1.4. Pot gowanie modularne
ę
Redukcja modularna pozwala unikać duŜych wyników pośrednich przy operacji potęgowania
modularnego, składającego się z wykonywania sekwencji moŜeń i dzieleń. Np. operację:
a 8 (mod n ) = a × a × a × a × a × a × a × a (mod n )
moŜna wykonać następująco:
((
)
)
a 8 (mod n) = a 2 (mod n ) (mod n ) (mod n )
2
-3-
2
czyli zamiast mnoŜyć przez siebie 8 razy liczbę a i zredukować wynik modulo n wykonuje się
3 mnoŜenia i 3 redukcje modularne.
Z powyŜszego przykładu wynika, Ŝe obliczenie xa (mod n) jest bardzo proste, jeśli wykładnik
a jest potęgą dwójki. Jeśli wykładnik nie jest potęgą liczby 2, wówczas stosuje się
następujący algorytm do obliczenia wyraŜenia xa (mod n), zwany szybkim algorytmem
potęgowania modularnego:
Algorytm wyznaczania wyra enia w = xa (mod n)
1.
Zapisać wykładnik a w systemie dwójkowym: a = amam-1…a1a0, ai∈{0,1}
2.
w := 1, i := m
3.
w := w2 (mod n)
4.
jeśli ai = 1, to w := w × x (mod n)
5.
i := i-l
6.
jeśli i > 0, to przejść do kroku 3, w przypadku przeciwnym otrzymuje się Ŝądany
wynik w = xa (mod n)
Ŝ
ś
1.5. Odwrotno
ć
multyplikatywna modulo n
Obliczenie odwrotności multyplikatywnej x = a-l modulo n liczby a polega na rozwiązaniu
równania:
(1.14)
ax ≡ 1 (mod n)
które odpowiada równaniu
ax + nk = 1
(1.15)
-1
gdzie k jest pewną liczbą całkowitą. Oczywiście zachodzi a×a (mod n) ≡ 1.
W teorii liczb znany jest algorytm rozwiązania liniowego równania diofantycznego
ax + by = nwd(a, b)
(1.16)
w dziedzinie liczb całkowitych. Jest to jedno równanie (juŜ w III wieku potrafił je
rozwiązywać matematyk grecki Diofantos) z dwiema niewiadomymi x i y, które ma
nieskończenie wiele rozwiązań. Jeśli liczby x0 i y0 spełniają to równanie, to wszystkie liczby
x = x0 + b× k, y = y0 – a×k, gdzie k = 0, ±1, ±2, ... są równieŜ rozwiązaniami równania (1.16).
Algorytm rozwiązania równania diofantycznego polega na wyznaczaniu elementów trzech
sekwencji:
q0 = 1
r0 = 0
s0 = a
q1 = 0
r1 = 1
s1 = b
Dla i > 1 elementy sekwencji oblicza się z wzorów:
ni = si −2 div si −1
qi = qi −2 − ni qi −1
ri = ri −2 − ni ri −1
si = si −2 mod si −1
Dla pewnego m, takiego, Ŝe sm = 0, otrzyma się:
x = q m−1
y = rm−1
nwd (a, b) = s m−1
-4-
Odwrotność multyplikatywna liczby a modulo n istnieje tylko wówczas, gdy nwd(a,n) = 1.
Jeśli więc liczby a i n są względnie pierwsze, to istnieje tylko jedna odwrotność
multyplikatywna x = a-1 (mod n) mniejsza od modułu n, spełniająca warunek xa (mod n) ≡ 1.
Uogólnione małe twierdzenie Fermata głosi, Ŝe jeśli nwd(a, n) = 1, to
(1.17)
a ϕ (n ) ≡ 1(mod n )
skąd, po podzieleniu obu stron równania (1.17) przez a otrzyma się
(2.18)
a ϕ (n )−1 ≡ a −1 (mod n )
co jest inną metodą obliczania odwrotności multyplikatywnej modulo n. ϕ(n) oznacza funkcję
Eulera.
Przykładowo, jeśli a = 4 i n = 11, to 4-1 = 49 (mod 11) = 3.
2. Szyfr Hilla
Szyfr ten dokonuje przekształcenia liniowego d znaków tekstu jawnego m1, m2,…, md w d
znaków kryptogramu c1, c2,…,cd. Kluczem jest macierz współczynników. Dla d = 2,
wyraŜenie szyfrujące ma postać:
 c1   k11
c  = k
 2   21
k12   m1 
mod n
k 22  m2 
Deszyfrowania dokonujemy, uŜywając macierzy odwrotnej K-1, przy czym K −1 K mod n = I ,
gdzie I jest macierzą jednostkową.
Przykład.
Niech klucz algorytmu Hilla będzie następującą macierzą:
3 7 
5 12


Wtedy tekst jawny i kryptogram mają postać:
m=
c=
K
T
R
U
Y
V
P
O
Np dla m1 = K (jest to 10. litera alfabetu licząc od 0), m2 = R (17. litera alfabetu licząc od 0):
3 7  10
19 
5 12 17 mod 26 = 20

 
 
A zatem kryptogram ma postać: TU. Powtarzamy tę operację dla wszystkich par liter,
otrzymując pełen kryptogram.
-5-
Obliczanie macierzy odwrotnej.
Aby dokonać operacji deszyfrowania, naleŜy znaleźć macierz odwrotną, co oznacza
rozwiązanie następującego równania:
−1
a b   a b 
1 0
 c d   c d  mod 26 ≡ 0 1





−1
3 7 
3 7 
Szukamy odwrotności macierzy 
,
co
mo
Ŝ
na
zapisa
ć
:
5 12 i dalej:

5 12


d
−
b


−1
 ad − bc ad − bc 
a b 
.
c d  =  − c
a 




 ad − bc ad − bc 
Stąd
−b 
 d
−1
 ad − bc ad − bc  a b  1 0
a b  a b 
=
c d  c d  =  − c
a   c d  0 1





 ad − bc ad − bc 
Z zaleŜności tych wynika, Ŝe musi być moŜliwość dzielenia modulo przez ad-bc – zatem
wynik tego działania musi być jedną z liczb 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 lub 25.
Wartość ad-bc jest nazywana wyznacznikiem macierzy.
Uogólniając, wyznacznik macierzy klucza musi być względnie pierwszy z n (w naszym
przypadku równym 26).
3 7 
Wyznacznik macierzy 
 wynosi 3 × 12 − 5 × 7 = 1 ≡ 1 mod 26 . A zatem macierz
5 12
−1
3 7 
 12 − 7 12 19
odwrotna będzie miała postać 
=

≡
 mod 26
5 12
− 5 3  21 3 
Dla c1 = 19, c2 = 20:
12 19 19 
10
21 3  20 mod 26 = 17

 
 
Inny przykład wyznaczenia macierzy odwrotnej.
3 7 
Niech macierzą klucza będzie 
.
9 10
Najpierw obliczamy wyznacznik macierzy klucza:
 3 7  
det  
  = (3 × 10 − 9 × 7 ) mod 26 = (30 − 63) mod 26 = (− 33 + 2 * 26) mod 26 = 19
9
10



-6-
Wyznacznik macierzy jest względnie pierwszy z liczbą n (równą 26), a zatem istnieje macierz
odwrotna.
Korzystając ze wzorów podanych w materiałach, otrzymujemy:
 10 − 7 
−1
 19 19 
3 7 
9 10 =  − 9 3  mod 26




 19 19 
W arytmetyce modularnej operacja dzielenia oznacza mnoŜenie przez odwrotność, a zatem
naleŜy znaleźć odwrotność multyplikatywną liczby 19, czyli liczbę spełniającą warunek:
(19 × a )mod 26 = 1
gdzie a jest odwrotnością multyplikatywną liczby 19.
UŜywając wzorów, podanych w pkt. 1.5, otrzymujemy szukaną liczbę – jest nią liczba 11,
a zatem:
−1
3 7 
 10 ×11
9 10 = (− 9 + 26) ×11



(− 7 + 26)×11
3 ×11
6 1 
 mod 26 = 5 7



6 1 
MoŜna sprawdzić, Ŝe macierz 
 jest macierzą odwrotną dla
5 7 
3. Zadania
3.1.
Zapoznać się z materiałami
3.2.
Zaimplementować szyfr Hilla dla macierzy n×n.
-7-
3 7 
9 10 .


Download