Kongruencje
Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków
UTP Bydgoszcz
10
KONGRUENCJE
Definicja.
Niech a, b ∈ Z, m ∈ N+. Mówimy, że a przystaje do b modulo m, jeśli m|(a − b). Oznaczamy: a ≡ b (mod m) lub a ≡m b.
Relację przystawania modulo m nazywamy kongruencją.
Przykład.
7 ≡ 2 (mod 5), 11111113 ≡ −11111117 (mod 10),
a kongruencję x ≡ 1 (mod 2) spełniają wszystkie liczby nieparzyste x . Przykład. [budzik]
(23 + 8) ≡ 7 (mod 24), (11 + 8) ≡ 7 (mod 12).
Definicja (równoważna).
Mówimy, że liczby a i b przystają modulo m, gdy mają taką samą resztę z dzielenia przez m, czyli a%m = b%m
KONGRUENCJE
Uzasadnienie równoważności.
Jeśli m|(a − b), to (a − b) = km (czyli a − b jest wielokrotnością m).
Niech a = k1m + a%m oraz b = k2m + b%m. Wtedy a%m − b%m = (a − b) + (k2− k1)m = (k + k2− k1)m.
Różnica tych reszt jest wielokrotnością m.
Zarówno a%m jak i b%m są liczbami ze zbioru {0, 1, . . . , m − 1}, więc wartość bezwzględna z ich różnicy też jest liczbą z tego zbioru.
Zatem a%m − b%m = 0, czyli a%m = b%m.
Jeśli natomiasta%m = b%m (oznaczmy, tę liczbę przez r ), to a = k1m + r , b = k2m + r , więc a − b = (k1− k2)m, zatem m|(a − b).
KONGRUENCJE
Fakt. Relacja przystawania modulo m jest relacją równoważności.
Uzasadnienie. Relacja ta jest:
zwrotna, gdyż a ≡ a (mod m) (czyli a%m = a%m);
symetryczna, gdyż jeśli a ≡ b (mod m), to b ≡ a (mod m) (czyli jeśli a%m = b%m, to b%m = a%m);
przechodnia, gdyż jeśli a ≡ b (mod m) (czyli a%m = b%m) i b ≡ c (mod m) (czyli b%m = c%m), to
a ≡ c (mod m) (czyli a%m = c%m).
⊕
m,
mDefinicja. Dla a, b ∈ Z oraz m ∈ N+ definiujemy operacje:
a ⊕mb = (a + b)%m a mb = (a · b)%m Przykład.
15 ⊕1017 = (15 + 17)%10 = 32%10 = 2 15 ⊕1025 = (15 + 25)%10 = 40%10 = 0 5 107 = (5 · 7)%10 = 35%10 = 5 5 1020 = (5 · 20)%10 = 100%10 = 0
Przykład.
⊕2 0 1
0 0 1
2 0 1
0 0 0
Grupa
Grupą (G , ⊗) nazywamy zbiór G z określonym w nim działaniem ⊗ (czyli funkcją ⊗ : G × G → G ) spełniającym warunki:
∀a,b,c∈G (a ⊗ b) ⊗ c = a ⊗ (b ⊗ c) (łączność),
∃e∀a∈G a ⊗ e = e ⊗ a = a (istnieje element neutralny)
∀a∈G∃z∈G a ⊗ z = z ⊗ a = e (istnieje element odwrotny) Jeśli dodatkowo:
∀a,b∈G a ⊗ b = b ⊗ a (przemienność), to grupę nazywamy przemienną.
Grupa
Fakt. W każdej grupie G istnieje tylko jeden element neutralny.
Uzasadnienie.
Jeśli istnieją dwa elementy neutralne e1 oraz e2, to e1 = e1⊗ e2 = e2. Fakt. W każdej grupie G dla dowolnego elementu a istnieje tylko jeden element odwrotny.
Uzasadnienie.
Jeśli istnieją dwa elementy odwrotne a1 oraz a2, to
a1 = a1⊗ e = a1⊗ (a ⊗ a2) = (a1⊗ a) ⊗ a2 = e ⊗ a2= a2.
Oznaczenie. Skoro element odwrotny do elementu a jest tylko jeden, możemy go oznaczyć. Stosujemy symbol
a−1 (dla działania zapisywanego w sposób multiplikatywny), albo
Grupa
Przykład.
Zbiór macierzy kwadratowych (tego samego stopnia) o niezerowym wyznaczniku z działaniem mnożenia tworzy grupę (nieprzemienną).
Przykład.
Grupa czwórkowa Kleina to zbiór K4= {a, b, c, d } z działaniem określonym następująco:
a b c d
a a b c d
b b a d c
c c d a b
d d c b a
Elementem neutralnym jest a.
Zbiór Z
m= {0, 1, . . . , m − 1} (dla m ∈ N
+) wraz z działaniem ⊕
mtworzy grupę
Przykład. Tabela dodawania modulo 8 w zbiorze Z8.
⊕8 0 1 2 3 4 5 6 7
0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 0
2 2 3 4 5 6 7 0 1
3 3 4 5 6 7 0 1 2
4 4 5 6 7 0 1 2 3
5 5 6 7 0 1 2 3 4
6 6 7 0 1 2 3 4 5
7 7 0 1 2 3 4 5 6
Elementem neutralnym jest 0. Elementy przeciwne, zaznaczane −a to,
Grupa
Przykład.
Grupą jest {0, 2, 4, 6} z działaniem ⊕8. Tabela dodawania:
⊕8 0 2 4 6
0 0 2 4 6
2 2 4 6 0
4 4 6 0 2
6 6 0 2 4
Elementem neutralnym jest 0.
Elementy przeciwne, zaznaczane −a to, kolejno:
−0 = 0, −2 = 6,−4 = 4, −6 − 2.
Grupa z działaniem
mZbiór Zm wraz z działaniem m nie tworzy grupy; elementem neutralnym powinna być jedynka, ale 0 nie ma elementu odwrotnego.
Przykład. Grupą jest G0 = {1, 3, 5, 7} z działaniem 8.
8 1 3 5 7
1 1 3 5 7
3 3 1 7 5
5 5 7 1 3
7 7 5 3 1
Elementem neutralnym jest 1. Elementy odwrotne (zaznaczane a−1) to,
Własności kongruencji
Fakt. Jeśli a ≡ b (mod m) i c ≡ d (mod m), to
1 a + c ≡ b + d (mod m);
2 ac ≡ bd (mod m).
Dowód.
m|(a − b) oraz m|(c − d ), więc istnieją k1 i k2, że mk1=a− b oraz mk2 =c − d . Zatem
1 (a+c) − (b + d ) = b + mk1+ d + mk2− (b + d ) = (k1+ k2)m, czyli m dzieli tę różnicę;
2 ac − bd = ac − bc + bc − bd = c(a − b) + b(c − d ) = cmk1+ bmk2 = m(ck1+ bk2),
czyli m dzieli tę różnicę.
Własności kongruencji
Wniosek.
Do kongruencji możemy dodać stronami tę samą liczbę
(czyli możemy, jak w przypadku równości, przenosić wyrazy na drugą stronę kongruencji zmieniając znak). Możemy też mnożyć kongruencję obustronnie przez tę samą liczbę całkowitą oraz podnosić obie strony kongruencji do tej samej (naturalnej) potęgi.
Wniosek.
Niech f (x ) = a0+ a1x + ... + anxn, gdzie n ∈ N+, a0, a1, . . . , an∈ Z oraz niech m ∈ Z.
Jeśli a ≡ b (mod m), to f (a) ≡ f (b) (mod m).
Reguła skracania
Fakt.
Niech m ∈ N+. Jeśli ad ≡mbd oraz NWD(d , m) = 1, to a≡mb.
Dowód. NWD(d , m) = 1, więc (zobacz rozszerzony algorytm Euklidesa) istnieją x oraz y , że dx + my = 1, zatem dx ≡m1. Mnożąc przez x obie strony równania ad ≡mbd otrzymamyadx ≡mbdx. Stąd
a = a ·1≡madx =bdx≡mb ·1= b.
Przykład.
NWD(5, 7) = 1, więc równanie 45≡710 możemy skrócić przez 5 otrzymując 9≡72.
Przykład.
Równania 10≡46 nie możemy skrócić przez 2;
tu NWD(2, 4) = 2 6= 1.
Rozwiązywanie modularnych równań liniowych (rozwiązywanie kongruencji)
Zagadnienie.
Dane są liczby a, k ∈ Z oraz d ∈ N+. Znajdź wszystkie liczby x ∈ Zm
takie, że
ax ≡mk.
Uwaga. To nie jest „zwykłe” równanie (to jest kongruencja),
≡m jest relacją równoważności. Możemy zapisać (równoważnie) (ax )%m = k%m.
Przykłady
Przykład. Wyznacz wszystkie liczby x ∈ Z9 takie, że 6x ≡93.
Wypiszemy reszty z dzielenia 6x przez 9.
x 0 1 2 3 4 5 6 7 8
(6x )%9 0 6 3 0 6 3 0 6 3
Odpowiedź. Są trzy rozwiązania: x = 2, x = 5, x = 8.
Przykład. Wyznacz wszystkie liczby x ∈ Z9 takie, że 6x ≡96.
Odpowiedź. Są trzy rozwiązania: x = 1, x = 4, x = 7.
Przykład. Wyznacz wszystkie liczby x ∈ Z9 takie, że 6x ≡92.
Odpowiedź. Nie ma rozwiązań.
Przykłady
Przykład.
Wyznacz wszystkie liczby całkowite x takie, że 6x ≡93 (inaczej mówiąc: rozwiąż tę kongruencję).
Odpowiedź. Są trzy rozwiązania: x = 2, x = 5, x = 8 należące do Z9. Wszystkie rozwiązania to 2 + 9k1, 5 + 9k2, 8 + 9k3 dla dowolnych liczb całkowitych k1, k2, k3.
Mówimy wtedy, że są trzy rozwiązania 2, 5, 8 modulo 9.
Przykład.
Wyznacz wszystkie liczby całkowite x takie, że x ∈ Z9 takie, że 6x ≡92.
Odpowiedź. Nie ma rozwiązań.
Kongruencje
Twierdzenie.
Kongruencja ax ≡ b (mod m) ma rozwiązanie wtedy i tylko wtedy, gdy NWD(a, m)|b.
Istnieje wtedy NWD(a, m) rozwiązań modulo m tej kongruencji.
Wniosek.
Jeśli NWD(a, m) = 1, to istnieje jedno rozwiązanie modulo m tej kongruencji, czyli wszystkie rozwiązania są postaci
x = x0+ km,
gdzie k ∈ Z, a x0 jest rozwiązaniem należącym do zbioru {0, 1, . . . , m − 1}.
Algorytm rozwiązywania
Algorytm rozwiązywania kongruencji ax ≡ b (mod m):
oblicz NWD(a, m) = d oraz znajdź y i z takie, że ya + zm = d (rozszerzony algorytm Euklidesa);
jeśli d = 1, to rozwiązaniami jest (są) x0= yb (mod m);
jeśli d > 1 i d - b, to równanie nie ma rozwiązań;
jeśli d > 1 i d |b, to rozwiązaniami są ybd +md · k dla dowolnej liczby całkowitej k;
inaczej mówiąc:
kongruencje ax ≡ b (mod m) oraz dax ≡ db (mod md) są równoważne (mają te same rozwiązania w zbiorze Z).
Uzasadnienie, ax ≡ b (mod m)
Zauważmy, że a ≡m (a%m) oraz b ≡m(b%m), więc rozwiązania równań ax ≡mb oraz (a%m)x ≡m (b%m) są takie same. Możemy zatem zakładać, że a, b ∈ Zm.
Jeśli d = 1, to istnieją y i z takie, że 1 = ya + zm. Zatem 1 ≡m(ya + zm) ≡mya, czyli ya − 1 jest krotnością m. Jednym z rozwiązań kongruencji jest x0 = yb, gdyż
ax0 = ayb = yab = [(ya − 1)b + b] ≡mb.
Pozostałe dostaniemy dodając do x0= yb krotności m.
Załóżmy, że d > 1.
Pokażemy, że jeśli kongruencja ma rozwiązanie, to d |b. Oznaczać to będzie, że jeśli d - b, to kongruencja nie ma rozwiązania.
Wiemy, że d |a oraz d |m (bo d = NWD(a, m)). Jeśli x0 jest rozwiązaniem, to ax0 ≡m b, więc m|(ax0− b), także d |(ax0− b).
Skoro d |a, zatem d |b.
Uzasadnienie, ax ≡ b (mod m)
Załóżmy, że d > 1 i d |b.
Pokażemy, że kongruencje ax ≡ b (mod m) oraz dax ≡ db (mod md) są równoważne.
ax ≡ b (mod m)
wtedy i tylko wtedy, gdy istnieje k, że ax − b = km, czyli
a
dx − db = kmd, czyli wtedy i tylko wtedy, gdy a
dx ≡ b
d (mod m d ).
Przykłady rozwiązywania kongruencji
Przykład.
Znajdź wszystkie liczby całkowite x spełniające równanie (modularne równanie liniowe) 6x ≡133.
NWD(6, 13) = 1. Z rozkładu: 1 = 1 · 13−2· 6 wiemy, że y =−2.
Rozwiązaniami są: x0 =−2·3 modulo 13, czyli zbiór rozwiązań to:
{. . . , −6 − 2 · 13, −6 − 13, −6, −6 + 13, −6 + 2 · 13, . . . } = {. . . , −32, −19, −6, 7, 20, . . . }.
Przykład.
Znajdź wszystkie liczby całkowite x spełniające równanie (modularne równanie liniowe) 6x ≡9 2.
NWD(6, 9) = 3, ale3 - 2, równanie nie ma rozwiązania.
Przykłady rozwiązywania kongruencji
Przykład.
Znajdź wszystkie liczby całkowite x spełniające równanie 6x ≡93.
NWD(6, 9) =3oraz 3|3. Istnieją trzy rozwiązania modulo 9 tej kongruencji; jak wiemy są to x1= 2, x2 = 5, x3 = 8.
Możemy je uzyskać ze wzoru:
y · b d +m
d · k.
Z rozkładu 3= 2 ·6− 1 ·9 wiemy, że y = −1, ponadto a =6, b =3, d =3, m =9. Rozwiązania są postaci
−1 · 3 3+ 9
3· k = −1 + 3k
Przykłady rozwiązywania kongruencji
Inny sposób.
Jeśli NWD(a, m) = 1, to, jak wiemy, istnieje dokładnie jedno rozwiązanie w grupie Zm kongruencji ax ≡m b. Mnożąc obie strony przez a−1 otrzymamy a−1max = a−1mb, czyli x = a−1mb.
Przykład.
Znajdź wszystkie liczby całkowite x spełniające równanie 6x ≡133.
NWD(6, 13) = 1, zatem szukamy w Z13 elementu odwrotnego do szóstki.
Jest nim 6−1 = 11, gdyż 6 1311 = 1 (tu: 6 · 11 = 66 = 5 · 13 + 1).
Zatem
x = 6−1133 = 11 133 = 7 (tu: 11 · 3 = 33 = 2 · 13 + 7).
Rozwiązania są postaci 7 + 13k dla liczb całkowitych k.
Przykłady rozwiązywania kongruencji
Inny sposób.
Jeśli NWD(a, m) = d > 1, to, jak wiemy, możemy utworzyć kongruencję równoważną („dzieląc” przez d ).
Przykład.
Znajdź wszystkie liczby całkowite x spełniające równanie 6x ≡93.
NWD(6, 9) = 3, „dzielimy” przez 3 otrzymując 2x ≡3 1.
W Z3 elementem odwrotnym do 2 jest 2−1 = 2, gdyż 2 32 = 1 (tu: 2 · 2 = 4 = 1 · 3 + 1).
Rozwiązaniem jest x = 2−131 = 2 31 = 2 (tu: 2 · 1 = 2 = 0 · 3 + 2).
Rozwiązania są postaci 2 + 3k dla k będących liczbami całkowitymi
Chińskie Twierdzenie o Resztach
Twierdzenie.
Jeśli NWD(m, n) = 1, to układ kongruencji ( x ≡ma
x ≡nb ma dokładnie jedno rozwiązanie modulo mn.
Dowód.
Liczby m i n są względnie pierwsze. Z rozszerzonego algorytmu Euklidesa wiemy, że istnieją y oraz z, że ym + zn = 1. Zauważmy, że
(ym) ≡m 0, (ym) ≡n1, (zn) ≡m 1, (zn) ≡n0.
Dlatego też liczba x =bym+azn jest rozwiązaniem układu.
Chińskie Twierdzenie o Resztach
Dowód, ciąg dalszy.
Pokażemy jeszcze, że każde dwa rozwiązania x+ oraz x∗ naszego układu różnią się o krotność mn.
Ponieważ x+ ≡m a oraz x∗ ≡ma, otrzymamy (x+− x∗) ≡m 0, czyli m|(x+− x∗).
Podobnie n|(x+− x∗).
Liczby m i n są względnie pierwsze, zatem także mn|(x+− x∗).
Przykład
Przykład. Rozwiąż układ kongruencji ( x ≡51
x ≡62
NWD(5, 6) =1, więc ten układ kongruencji ma dokładnie jedno
rozwiązanie modulo 5 · 6 = 30. W Z30pierwsze równanie spełniają liczby 1, 6, 11, 16, 21, 26, a drugie 2, 8, 14, 20, 26.
Odpowiedź: x = 26 (mod 30).
Inny sposób. Zamiast podawać wszystkie rozwiązania poszczególnych kongruencji mogliśmy rozłożyć
1= 5 ·5− 4 ·6 Rozwiązaniem (w Z30) jest
x =2· 5 ·5+1· (−4 ·6) = 26.
Przykład
Przykład. Rozwiąż układ kongruencji ( x ≡51
x ≡62
Jeszcze inny sposób rozwiązania (NWD(5, 6) = 1):
z pierwszej kongruencji: x = 1 + 5t.
Po podstawieniu do drugiej:
1 + 5t ≡62, czyli 5t ≡61.
Ogólna postać
Powyższe twierdzenie można uogólnić na większą liczbę kongruencji o parami względnie pierwszych modułach.
Twierdzenie (Chińskie Twierdzenie o Resztach). Jeśli m1, . . . , mk są parami względnie pierwsze, to układ kongruencji
x ≡m1 a1 ...
x ≡mk ak
ma dokładnie jedno rozwiązanie modulo m1· . . . · mk.
Przykład
Po bitwie, w której brało udział 5000 żołnierzy dowódca ustawia wojsko.
Po ustawieniu w szeregi po 13 oraz po 15 żołnierzy, w ostatnim szeregu było pięciu. Przy ustawieniu po 14 żołnierzy, w ostatnim szeregu było siedmiu. Ilu żołnierzy pozostało po walce?
Przykład
Rozwiązujemy układ kongruencji
x ≡135 x ≡147 x ≡155
x ≡
135, x ≡
147, x ≡
155
NWD(13, 14) = 1, NWD(13, 15) = 1, NWD(14, 15) = 1, więc ten układ kongruencji ma dokładnie jedno rozwiązanie modulo 13 · 14 · 15 = 2730.
Z pierwszej kongruencji: x = 5 + 13t.
Po podstawieniu do trzeciej:
5 + 13t ≡155, czyli 13t ≡150.
Stąd t = 15k oraz
x = 5 + 13 · 15k = 5 + 195k, k ∈ Z.
Po podstawieniu do drugiej kongruencji 5 + 195k ≡147, czyli 195k ≡142.
Stąd k = 12 + 14m (mamy 195 · 12 − 2 = 2338 = 167 · 14), więc
x = 5 + 195 · (12 + 14m) = 2345 + 2730m, m ∈ Z.
Po bitwie pozostało 2345 żołnierzy.
Elementy kryptografii:
antyczny szyfr Cezara
Bardzo prostym szyfrem jest, przypisywany Juliuszowi Cezarowi, szyfr Cezara. Zastępujemy w nim każdą literę przesyłanej wiadomości literą znajdującą się o 3 miejsca dalej w alfabecie, przy czym trzem ostatnim literom alfabetu odpowiadają trzy pierwsze litery.
tekst jawny a b c d e f g h i j k l m
tekst zaszyfrowany d e f g h i j k l m n o p
tekst jawny n o p q r s t u v w x y z
tekst zaszyfrowany q r s t u v w x y z a b c
Elementy kryptografii:
antyczny szyfr Cezara
Uwaga. Oczywiście możemy każdą literę zastąpić inną oddaloną nie o trzy, ale o, na przykład, 5 albo 8.
System kryptograficzny, w którym każdemu znakowi tekstu jawnego odpowiada jednoznacznie wyznaczony znak tekstu zaszyfrowanego nazywa się monoalfabetycznym.
Przykład.
Zaszyfrowana za pomocą szyfru Cezara wiadomość urpd to roma.
tekst jawny a b c d e f g h i j k l m
tekst zaszyfrowany d e f g h i j k l m n o p
tekst jawny n o p q r s t u v w x y z
tekst zaszyfrowany q r s t u v w x y z a b c
Elementy kryptografii:
prosty szyfr liczbowy
Taki szyfr możemy utworzyć zastępując kolejne litery alfabetu nie literami, ale liczbami, np. od 0 do 25 (dla alfabetu łacińskiego):
a b c d e f g h i j k l m
0 1 2 3 4 5 6 7 8 9 10 11 12
n o p q r s t u v w x y z
13 14 15 16 17 18 19 20 21 22 23 24 25 i szyfrując tekst jawny P zgodnie z kongruencją C ≡ αP + β (mod 26) (α, β ∈ Z26, gdzie α to element odwracalny). Otrzymamy w ten sposób tekst zaszyfrowany C , który należy przekształcić za pomocą kongruencji P ≡ α−1C − α−1β (mod 26), żeby odszyfrować wiadomość.
Przykład
C ≡ αP + β (mod 26), P ≡ α−1C − α−1β (mod 26)
Przykład. Niech α = 5, β = 4.
Zaszyfrujemy wiadomość ”nie”, czyli ciąg liczb 13, 8, 4. Mamy:
5 ·13+ 4 = 69 = 2 · 26 + 17 ≡17 (mod 26), 5 ·8+ 4 = 44 = 1 · 26 + 18 ≡18 (mod 26) 5 ·4+ 4 = 24 ≡24 (mod 26).
Zaszyfrowana wiadomość ma więc postać ”rsy”.
Odszyfrowujemy ją: α−1= 5−1= 21, gdyż
α−1· α = 21 · 5 = 105 = 4 · 26 + 1 ≡261 oraz α−1β = 21 · 4 = 84.
Obliczamy zatem
21 ·17− 84 = 273 = 10 · 26 + 13 ≡13 (mod 26), 21 ·18− 84 = 294 = 11 · 26 + 8 ≡8 (mod 26),
Obserwacja.
Taki szyfr jest prosty do złamania – wystarczy sprawdzić wszystkie możliwości na α i β, żeby sprawdzić, przy jakich parametrach odczytana wiadomość coś oznacza (metoda wyczerpującego przeszukiwania kluczy ).
Inną metodą jest analiza częstościowa, polegająca na badaniu jakie litery pojawiają się najczęściej w zaszyfrowanej wiadomości i porównaniu ich z najczęściej występującymi literami w danym języku.
Elementy kryptografii:
analiza częściowa, przykład
Przykład. Odszyfrujemy wiadomośćqda. Wiemy, że tekst został napisany w języku angielskim (oczywiście był dłuższy niż te trzy litery).
Sprawdziliśmy, że najczęściej pojawiającymi się literami w zaszyfrowanym tekście były d(przypisaliśmy jej liczbę 3) oraz w(liczba 22).
W języku angielskim najczęściej pojawiającą się literą jest e (częstotliwość 0,127, liczba4), a następniet(częstotliwość 0,09, liczba19).
I sposób: znajdziemy α oraz β i będziemy postępować jak w poprzednim przykładzie. Przyjmujemy, że zaszyfrowana liczba 3(litera d) to 4(e) oraz 22 (w) to19 (t). Rozwiązujemy układ kongruencji
( 3 ≡ α ·4+ β (mod 26) 22 ≡ α ·19+ β (mod 26)
Odejmując kongruencje stronami otrzymamy 15α ≡ 19 (mod 26), czyli
Przykład, α = 3, β = 17, α
−1= 9, −α
−1β = −9 · 17.
Zaszyfrowanemu tekstowiqda odpowiadają liczby16,3, 0. Obliczamy:
9 ·16− 9 · 17 = −9 = −26 + 17 ≡17 (mod 26), 9 ·3− 9 · 17 = −126 = −5 · 26 + 4 ≡4 (mod 26), 9 ·0− 9 · 17 = −152 = −6 · 26 + 3 ≡3 (mod 26) Odszyfrowana wiadomość to red.
II sposób: Także przyjmujemy, że zaszyfrowana liczba 3(literad) to4 (e) oraz 22 (w) to 19 (t), ale od razu rozwiązujemy układ kongruencji
( 4 ≡ 3α0+ β0 (mod 26) 19 ≡ 22α0+ β0 (mod 26) ,
gdzie α0 i β0 spełniają kongruencję P ≡ α0C + β0 (mod 26). Odejmując kongruencje stronami otrzymamy 19α0≡ 15 (mod 26), czyli α0= 9, więc β0 = 3. Obliczamy16· 9 + 3 = 147 = 5 · 26 + 17 =17 (mod 26),
3· 9 + 3 = 30 = 26 + 4 =4 (mod 26),0· 9 + 3 =3 (mod 26), więc
Elementy kryptografii:
bloki, polski alfabet
a ą b c ć d e ę f g h i j k l ł
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
m n o ó p r s ś t u w x y z ź ż
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Każdej literze polskiego alfabetu przyporządkowujemy liczbę (jak w tabeli). Ponadto spacja ma przyporządkowaną liczbę 32.
Przykład. Szyfrujemy wiadomość “w piątek”, ale podzieloną na
bloki dwuliterowe. Możemy użyć następującego sposobu: jeśli literom l1, l2 przyporządkowaliśmy liczby λ(l1), λ(l2), to blokowi l1l2 przypiszemy liczbę 33 · λ(l1) + λ(l2). Blokom “w ”, “pi”, “ąt”, “ek” przypisujemy liczby:
“w “ 7→ 33 · 26 + 32 = 890; “pi” 7→ 33 · 20 + 11 = 671;
“ąt” 7→ 33 · 1 + 24 = 57; “ek” 7→ 33 · 6 + 13 = 211.
Elementy kryptografii:
bloki, polski alfabet
a ą b c ć d e ę f g h i j k l ł
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
m n o ó p r s ś t u w x y z ź ż
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Przykład. Szyfrujemy wiadomość “w piątek”, ale podzieloną na bloki trzyliterowe. Możemy użyć następującego sposobu: jeśli literom l1, l2, l3 przyporządkowaliśmy liczby λ(l1), λ(l2), λ(l3) to blokowi l1l2l3
przypiszemy liczbę 332· λ(l1) + 33 · λ(l2) + λ(l3).
Blokom “w p”“,iąt”, “ek ” przypisujemy liczby:
“w p“ 7→ 332· 26 + 33 · 32 + 20 = 29390;
“iąt” 7→ 332· 11 + 33 · 1 + 24 = 12036;
“ek ” 7→ 332· 6 + 33 · 13 + 32 = 6995.
Teraz możemy otrzymane liczby zaszyfrować korzystając z kongruencji.
Szybkie potęgowanie modulo
Jak wiemy, każdą liczbę możemy zapisać (w systemie dwójkowym) jako sumę odpowiednich potęg dwójki.
Przykład 1.
Oblicz 36611 (mod 2491).
Wykładnik 11 możemy zapisać jako 11 = 8 + 2 + 1.
Obliczamy, kolejno,
3662 = 133956 = 53 · 2491 + 1933 ≡ 1933 (mod 2491),
3664 = 36622 ≡ (1933)2= 3736489 = 1499 · 2491 + 2480 ≡ 2480 (mod 2491),
3668 = 36642 ≡ (2480)2= 6150400 = 2469 · 2491 + 121 ≡ 121 (mod 2491).
Zatem 36611= 3668+2+1= 3668· 3662· 3661≡ 121 · 1933 · 366
Przykład 2. Oblicz 1623
435(mod 2491).
Wykładnik 435 możemy zapisać jako
435 = 256 + 128 + 32 + 16 + 2 + 1.
Podstawmy A = 1623. Obliczamy, kolejno,
A2= (1623)2= 2634129 = 1057 · 2491 + 1142 ≡ 1142 (mod 2491), A4= A22
≡ (1142)2= 1304164 = 523 · 2491 + 1371 ≡ 1371 (mod 2491), A8= A42
≡ (1371)2= 1879641 = 754 · 2491 + 1427 ≡ 1427 (mod 2491), A16= A82
≡ (1427)2= 2036329 = 817 · 2491 + 1182 ≡ 1182 (mod 2491), A32= A162
≡ (1182)2= 1397124 = 560 · 2491 + 2164 ≡ 2164 (mod 2491), A64= A322
≡ (2164)2= 4282896 = 1879 · 2491 + 2307 ≡ 2307 (mod 2491), A128= A642
≡ (2307)2= 5322249 = 2136 · 2491 + 1473 ≡ 1473 (mod 2491), A256= A1282
≡ (1473)2= 2169729 = 871 · 2491 + 68 ≡ 68 (mod 2491).
A435= A256+128+32+16+2+1= A256· A128· A32· A16· A2· A1.
Przykład 2. Oblicz 1623
435(mod 2491)
Szybkie potęgowanie, szybkie mnożenie
.
1623435≡ (68 · 1473 · 2164) · (1182 · 1142 · 1623) (mod 2491) 1623435≡ (216754896) · (2190796812) (mod 2491)
1623435 ≡ (87015 · 2491 + 531) · (879484 · 2491 + 2168) (mod 2491) 1623435≡ (531) · (2168) (mod 2491)
1623435 ≡ 1151208 (mod 2491) 1623435 ≡ 462 · 2491 + 366 (mod 2491)
1623435≡ 366 (mod 2491)
Funkcja ϕ Eulera.
Definicja.
Funkcja Eulera
ϕ(n) = k{a : 1 ¬ a ¬ n ∧ NWD(a, n) = 1}k.
Fakt.
Gdy n jest liczbą pierwszą, to ϕ(n) = n − 1.
Uzasadnienie.
Liczby 1, 2, . . . , n − 1 są względnie pierwsze z liczbą (pierwszą) n.
Funkcja ϕ Eulera.
Funkcja Eulera ϕ(n) = k{a : 1 ¬ a ¬ n ∧ NWD(a, n) = 1}k.
Fakt.
Jeśli liczby dodatnie m oraz n są względnie pierwsze (NWD(m, n) = 1), to ϕ(mn) = ϕ(m)ϕ(n).
Uzasadnienie.
Niech k ∈ {0, 1, 2, . . . , mn − 1}. Wtedy
NWD(k, mn) = 1 wtedy i tylko wtedy, gdy NWD(k, m) = 1 i NWD(k, n) = 1.
Z Chińskiego Twierdzenia o Resztach wiemy, że każdemu k odpowiada dokładnie jedna para reszt i na odwrót, czyli każda liczba jest
jednoznacznie wyznaczona przez jej reszty z dzielenia modulo m i n.
Liczb względnie pierwszych z mn jest tyle, ile par (k1, k2), gdzie
Twierdzenie Eulera.
Twierdzenie Eulera. Jeśli NWD(a, n) = 1, to aϕ(n)≡n1.
Dowód. Wszystkie liczby względnie pierwsze z n i niewiększe od n (jest ich ϕ(n)) oznaczmy przez m1< m2< · · · < mϕ(n).
Rozważmy reszty z dzielenia:
a1 = m1· a mod n, a2 = m2· a mod n, . . . , aϕ(n)= mϕ(n)· a mod n.
Gdyby jakieś dwie liczby ai oraz aj, dla 0 ¬ i < j ¬ ϕ(n)się powtarzały, to mia ≡ mja (mod n), czyli n by dzieliło (mj− mi)a.
Co oznacza, że n dzieli mj − mi, co jestniemożliwe.
Zatem wszystkie liczby a1, a2, . . . , aϕ(n) są różne.
Pokażemy jeszcze, że są względnie pierwsze z n (będzie to oznaczać, że wśród liczb a1, . . . , aϕ(n) są wszystkie liczby m1, . . . , mϕ(n) i odwrotnie).
Chcemy pokazać, że NWD(ai, n) = 1. Jeśli d |ai oraz d |n (chcemy pokazać, że d = 1), to d |mia (tu: ai = mi · a mod n). Jeśli jednak d |n, NWD(n, mi) = 1, NWD(n, a) = 1, to d = 1.
Twierdzenie Eulera.
Twierdzenie Eulera.
Jeśli NWD(a, n) = 1, to aϕ(n)≡n1.
Dowód, ciąg dalszy.
Wśród liczba1, . . . , aϕ(n) są wszystkie liczbym1, . . . , mϕ(n) i odwrotnie.
Zauważmy, że
m1a · m2a · . . . · mϕ(n)a ≡na1· a2· · · aϕ(n)=m1· m2· . . . · mϕ(n). Z reguły skracania otrzymamy
aϕ(n)≡n1.
Elementy kryptografii:
klucz tajny, klucz publiczny
W (klasycznych) szyfrach z kluczem tajnym znajomość reguły szyfrowania pozwala łatwo i szybko wyprowadzić regułę deszyfrowania.
Pomysł na systemy z kluczem publicznym pochodzi od Diffiego
i Hellmana (1976r). W takich systemach wyznaczenie reguły deszyfrowania na podstawie znajomości reguły szyfrowania jest obliczeniowo niewykonalne.
Klucz szyfrujący (zwany kluczem publicznym) może być wszystkim znany, a tylko klucz deszyfrujący jest trzymany w tajemnicy.
Najbardziej znane szyfry tego typu to kryptosystem RSA, EIGamal oraz szyfr Rabina. Omówimy tylko ten pierwszy.
Elementy kryptografii:
szyfr RSA (Rivest, Shamir, Adleman, 1978)
Bezpieczeństo kryptosystemu opiera się na trudności rozkładu dużych liczb na czynniki.
Oczywiście, wraz ze wzrostem mocy obliczeniowej komputerów rosną długości kluczy.
Algorytm generowania kluczy.
Użytkownik systemu:
1 losuje dwie duże różne liczby pierwsze p i q,
2 oblicza n = pq oraz∗ ϕ(n) = (p − 1)(q − 1),
3 losuje liczbę e, 1 < e < ϕ(n) względnie pierwszą z ϕ(n),
4 oblicza d , 1 < d < ϕ(n), takie że ed ≡ 1 (mod ϕ(n)),
5 kluczem publicznym jest para (n, e), kluczem prywatnym (n, d ) (albo samo d , jeśli n jest znane odbiorcy).
∗ Funkcja ϕ(n) to funkcja Eulera. Jak wiemy, jeśli m oraz k są względnie pierwsze, to
Elementy kryptografii:
szyfry RSA, algorytm
Algorytm szyfrowania i deszyfrowania
Bob, chcąc przesłać wiadomość x Alicji (x < n, NWD(x , n) = 1):
1 pobiera klucz publiczny (n, e) Alicji,
2 przedstawia wiadomość x jako element zbioru Zn,
3 oblicza c = xe mod n,
4 wysyła Alicji szyfrogram c.
Alicja po otrzymaniu zaszyfrowanej wiadomości c:
1 używa klucza prywatnego (n, d ) do obliczenia x = cd mod n.
Elementy kryptografii:
szyfr RSA
Wykażemy, że ta metoda “działa”, czyli pokażemy, że jeśli NWD(x , n) = 1 (oraz x < n) to
dla c = xe mod n zawsze x = cd mod n.
Skoro ed ≡ 1 (mod ϕ(n)), więc znajdziemy takie j , że ed = 1 + j ϕ(n).
Stąd
cd ≡n xed = xed = x1+j ϕ(n)= x · xj ϕ(n). Z Twierdzenia Eulera wiemy, że xϕ(n)≡n1, a więc także xj ϕ(n) = xϕ(n)j ≡n1. Zatem
cd ≡nx · xj ϕ(n) ≡nx · 1 = x .
Szyfr RSA, sposób działania algorytmu,
przykładNiech p = 3, q = 11.
Wtedy n = pq = 3 · 11 = 33 oraz ϕ(n) = (p − 1)(q − 1) = 2 · 10 = 20.
Wybieramy e = 7
(jest to liczba względnie pierwsza z ϕ(n) = 20).
Znajdujemy d = 3 będące rozwiązaniem kongruencji 7d ≡ 1 (mod 20).
Kluczem publicznym jest (n, e) = (33, 7), prywatnym (n, d ) = (33, 3).
Bob szyfruje wiadomość x = 4 przy pomocy jawnego klucza (n, e) = (33, 7) w następujący sposób
c = c(x ) = xe = 47 = 16384 = 496 · 33 + 16 ≡ 16 (mod 33) i przesyła Alicji zaszyfrowaną wiadomość c = 16.
Alicja używa prywatnego klucza (33, 3) do obliczenia x = cd = 163 = 4096 = 124 · 33 + 4 ≡ 4 (mod 33).
Elementy kryptografii:
szyfry RSA, przykład
Przykład.
Niech p = 47, q = 53.
Wtedy n = pq = 47 · 53 = 2491 oraz ϕ(n) = (p − 1)(q − 1) = 46 · 52 = 2392.
Wybieramy e = 11 (sprawdzamy, że NWD(11, 2392) = 1).
Znajdujemy d = 435 będące rozwiązaniem kongruencji 11d ≡2392 1 (tu: 11 · 435 = 4785 = 2 · 2392 + 1).
Kluczem publicznym jest (n, e) = (2491, 11), kluczem prywatnym (2491, 435).
Bob chce przesłać wiadomość “o świcie”
w zakodowanej wersji literowej.
Elementy kryptografii:
bloki, polski alfabet
a ą b c ć d e ę f g h i j k l ł
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
m n o ó p r s ś t u w x y z ź ż
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Bob szyfruje wiadomość “o świcie” podzieloną na bloki dwuliterowe.
Blokom przypisuje liczby:
“o “ 7→ 33 · 18 + 32 = 626;
“św” 7→ 33 · 23 + 26 = 785;
“ic” 7→ 33 · 11 + 3 = 366;
“ie” 7→ 33 · 11 + 6 = 369.
Elementy kryptografii:
szyfry RSA, przykład
Kluczem publicznym jest (2491, 11), prywatnym d = 435.
Przy podziale na bloki dwuliterowe, wiadomości
“o świcie”odpowiada 626 785 366 369.
Bob szyfruje korzystając z klucza jawnego:
62611≡ 804 (mod 2491), 78511≡ 62 (mod 2491), 36611≡ 1623 (mod 2491), 36911= 1609 (mod 2491).
Niestety 1623 > 33 · 32 + 32 = 1088, Bob nie może więc użyć bloków dwuliterowych. Skorzysta z bloków trzyliterowych:
804 = 332· 0 + 33 · 24 + 12 7→ atj 62 = 332· 0 + 33 · 1 + 29 7→ aąz 1623 = 332· 1 + 33 · 16 + 6 7→ąme 1609 = 332· 1 + 33 · 15 + 25 7→ ąłu
Elementy kryptografii:
szyfry RSA, przykład
Alicja najpierw zastępuje blok liter “atj” liczbą 804 (“atj” odpowiada 332· 0 + 33 · 24 + 12 = 804), zastępuje blok “aąz” liczbą 62,
blok “ąme” liczbą 1623 oraz blok “ąłu” liczbą 1609.
Następnie, korzystając z prywatnego klucza (2491, 435) oblicza 804435≡ 626 (mod 2491), 62435≡ 785 (mod 2491),
1623435≡ 366 (mod 2491) 1609435≡ 369 (mod 2491).
W końcu zastępuje te liczby blokami dwuliterowymi:
626 = 33 · 18 + 32 7→ o , 785 = 33 · 23 + 26 7→ św, 366 = 33 · 11 + 3 7→ ic, 369 = 33 · 11 + 6 7→ ie i odczytuje hasło “o świcie”.