• Nie Znaleziono Wyników

Dr inż. Robert Wójcik,

N/A
N/A
Protected

Academic year: 2021

Share "Dr inż. Robert Wójcik,"

Copied!
32
0
0

Pełen tekst

(1)

Dr inż. Robert Wójcik, p. 313, C-3, tel. 320-27-40

Katedra Informatyki Technicznej (K30W04ND03) Wydział Informatyki i Telekomunikacji (W04N) Politechnika Wrocławska

E-mail: robert.wojcik@pwr.edu.pl Strona internetowa:

google: Wójcik Robert

Ochrona danych

Wykład 5.

5. Systemy algebraiczne i wielomiany nad ciałami – zastosowania 5.1. Rodzaje systemów algebraicznych – ciała, grupy, pierścienie 5.2. Wielomiany nad ciałami skończonymi

5.3. Przestrzeń wektorowa nad ciałem binarnym 5.4. Generowanie sekwencji okresowych

5.5. Sekwencje pseudolosowe i ich własności

5.6. Generatory sekwencji okresowych i pseudolosowych

(2)

2

Zródła:

Mochnacki W., Kody korekcyjne i kryptografia, Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław, 2000.

Pojęcie ciała skończonego wprowadzone zostało do matematyki w XIX wieku przez matematyka francuskiego Evariste Galois (1811-1832), który zajmował się teorią równań algebraicznych.

Systemy algebraiczne

Zbiór z określonymi działaniami nazywamy systemem algebraicznym.

Do najczęściej stosowanych klas systemów algebraicznych należą:

 grupy,

 pierścienie,

 ciała.

Definicja ciała algebraicznego

Ciałem nazywamy zbiór A, zawierający więcej niż jeden element, dla którego zdefiniowano operacje dodawania i mnożenia w określonym sensie, oraz spełniający następujące aksjomaty:

A1. ∀a,b ∈ A ∃c ∈ A a + b = c zamkniętość dodawania, A2. ∀a,b ∈ A a + b = b + a przemienność dodawania, A3. ∀a,b,c ∈ A a + (b + c) = (a + b) + c łączność dodawania, A4. ∀a ∈A a + 0 = 0 + a = a istnienie zera,

A5. ∀a ∈ A ∃b ∈ A a + b = b + a = 0 istnienie elementu przeciwnego b=-a, M1. ∀a,b ∈ A ∃c ∈ A a ⋅b = c zamkniętość mnożenia,

M2. ∀a,b ∈ A a ⋅b = b ⋅ a przemienność mnożenia, M3. ∀a,b,c ∈ A a ⋅ (b ⋅ c) = (a⋅b) ⋅ c łączność mnożenia, M4. ∀a ∈ A a ⋅1 = 1⋅ a = a istnienie jedynki,

M5. ∀a ∈ A (a≠0) ∃b ∈ A a⋅b = b ⋅ a = 1 istnienie elementu odwrotnego b=a-1, D. ∀a,b,c ∈ A a ⋅ (b + c) = (b + c) ⋅ a = a ⋅b + a ⋅ c rozdzielność mnożenia względem dodawania.

(3)

3

Aksjomaty A1÷A5 gwarantują, że zbiór A stanowi grupę przemienną względem dodawania - grupę addytywną ciała A.

Aksjomaty M1÷M5 orzekają, że zbiór elementów A różnych od zera stanowi grupę przemienną względem mnożenia - grupę multyplikatywną ciała A.

Definicja pierścienia algebraicznego

Pierścień jest systemem algebraicznym, który spełnia aksjomaty ciała, oprócz warunku elementu odwrotnego M5 (np. liczby całkowite mod m razem z operacjami dodawania i mnożenia tworzą pierścień przemienny).

Definicje grupy przemiennej dodawania (aksjomaty A1 do A5) oraz grupy przemiennej mnożenia (aksjomaty M1 do M5) podano w ramach definicji ciała.

W tabelce zebrano podsumowanie własności przedstawionych systemów algebraicznych wykorzystywanych w kryptografii i teorii kodów.

Klasyfikacja ciał algebraicznych

Ciało może być skończone (skończona liczba elementów) lub nieskończone (np. ciało liczb rzeczywistych) w zależności od zbioru elementów ciała.

Ciała skończone zwane są też ciałami Galois i oznacza się je przez GF(q), co jest skrótem od Galois Field (np. można je utożsamiać ze skończonymi alfabetami z określonymi działaniami).

Rozróżnia się ciała skończone proste (prime fields) i rozszerzenia ciał skończonych (extension fields).

Tego typu ciała znajdują zastosowania w kryptografii i teorii kodów.

(4)

4

Podobnie można mówić o rozszerzeniach ciał nieskończonych, np.

rozszerzeniem ciała liczb rzeczywistych jest ciało liczb zespolonych – dodajemy wirtualny (zespolony) element i, będący pierwiastkiem równania kwadratowego x2 + 1 = 0, które nie ma rozwiązań w ciele liczb rzeczywistych, tj. i2 = -1).

Rozszerzenia ciał skończonych w literaturze technicznej nazywane są ciałami rozszerzonymi.

Ciała skończone proste

Ciała skończone proste mają liczbę elementów równą liczbom pierwszym p, a oznaczamy je przez GF(p).

Elementy takiego ciała są liczbami ze zbioru {0,1,2, … , p−1}.

Skończone ciało proste jest zatem skończonym zbiorem elementów z dwoma działaniami: dodawaniem i mnożeniem modulo p

<{0,1,2,…, p−1}, +, ⋅ > .

Ciało takie jest zbiorem reszt modulo p, gdzie p jest liczbą pierwszą.

Zbiór wszystkich elementów GF( p) wraz z dodawaniem modulo p stanowi przemienną skończoną grupę addytywną postaci:

<{0,1,2,…, p−1}, +> .

Podobnie, zbiór wszystkich niezerowych elementów GF(p) tworzy przemienną skończoną grupę multyplikatywną:

<{0,1,2,…, p−1}, ⋅ > . Ciała skończone rozszerzone

Ciała rozszerzone zawierają elementy, które można skonstruować w oparciu o różne modele matematyczne np. wektory, macierze, wielomiany. Ciało rozszerzone jest tworzone na bazie ciała prostego lub innego ciała rozszerzonego poprzez uzupełnienie o dodatkowe elementy.

(5)

5

Liczba elementów rozszerzonych ciał skończonych jest równa potędze liczby pierwszej p, gdzie p jest liczbą elementów ciała prostego, jeśli tworzymy rozszerzenie ciała prostego lub p jest liczbą elementów ciała rozszerzonego, jeśli generujemy rozszerzenie ciała rozszerzonego.

Ciało rozszerzone oznaczamy przez GF(q), gdzie q = pm, a m jest liczbą naturalną (nazywaną stopniem rozszerzenia ciała).

W ciałach rozszerzonych elementy ciała a, b i c nie są liczbami, a symbole działań + i ⋅ nie mają nic wspólnego z dodawaniem i mnożeniem liczb znanym z arytmetyki.

W szczególności, niezerowe elementy ciał rozszerzonych można wyrazić za pomocą potęg tzw. elementu pierwotnego (generatora ciała) oznaczanego jako α i definiowanego jako wektor, macierz lub wielomian.

Wówczas elementy ciała rozszerzonego GF(q) = GF(pm), gdzie q=pm, zapisujemy w postaci: { 0, 1, α, α2, …, αq−2 }. Zbiór ten zawiera q elementów.

Konstrukcja ciała prostego

Skończone ciała proste można skonstruować dla zbiorów liczbowych o liczbie elementów równej liczbie pierwszej p.

Ciała takie oznaczamy symbolem GF(p).

Elementami ciała prostego są liczby: 0, 1, 2, ..., p−1. Działania w ciałach prostych są takie same jak działania arytmetyczne z operacją modulo p.

Ciało proste jest więc ciałem reszt modulo p. Sumę S i iloczyn P dwóch elementów ciała prostego a i b określają zależności:

S ≡ a + b (mod p)

P ≡ a ⋅ b (mod p).

Konstrukcja ciała polega na utworzeniu zbioru elementów ciała i wyznaczeniu tabliczek dodawania i mnożenia.

(6)

6

W praktyce najczęściej nie korzystamy z tabliczek działań, lecz na bieżąco obliczamy sumy i iloczyny elementów ciała prostego.

W szczególności tabliczka dodawania ciała skończonego jest kwadratem łacińskim.

W kwadracie łacińskim we wszystkich kolumnach i wierszach każdy element ciała pojawia się tylko raz. Ta właściwość tabliczki dodawania wynika z aksjomatu zamkniętości dodawania A1.

Podobną właściwość ma tabliczka mnożenia w części zawierającej elementy grupy multyplikatywnej.

Przykłady ciał prostych Ciało GF(2)

Najprostszym ciałem skończonym jest ciało binarne GF(2). Działania w ciele GF(2) i struktury tworzone nad tym ciałem są używane do opisu pracy komputerów i transmisji danych.

Ciało GF(2) jest ciałem prostym, a jego elementami są 0 i 1. Operacje dodawania i mnożenia elementów wykonywane są modulo p=2.

Tabliczki dodawania i mnożenia elementów w ciele GF(2) mają następującą postać.

Dodawanie w ciele GF(2) nazywa się dodawaniem modulo dwa. Wówczas, 1+1=0, zatem 1=−1. Oznacza to, że w ciele GF(2) dodawanie jest równoważne odejmowaniu, a w wielomianach utworzonych nad ciałem GF(2) znak odejmowania można zastąpić znakiem dodawania. Operację dodawania modulo dwa można zastąpić znakiem dodawania.

W układach cyfrowych operację dodawania modulo dwa realizuje się za pomocą bramki logicznej Ex-OR.

(7)

7

Nad ciałem GF(2) można utworzyć wielomiany i skonstruować kody korekcyjne. Współczynnikami wielomianu utworzonego nad ciałem GF(2) są elementy tego ciała, np. dla x3 + x + 1 = 1x3 + 0x2 + 1x1 + 1 są to współczynniki

1 0 1 1.

Ciało GF(7)

Jako przykład wieloelementowego skończonego ciała prostego rozpatrzmy ciało GF(7). Elementami ciała GF(7) są liczby: 0, 1, 2, 3, 4, 5, 6.

Tabliczki działań ciała GF(7) pokazano poniżej.

Element przeciwny ciała obliczamy za pomocą aksjomatu A5, np.

2+5 = 0, czyli 2 = −5.

Element odwrotny ciała obliczamy za pomocą aksjomatu M5, np.

3⋅5 = 1, czyli 3 = 1/5.

Rzędy multyplikatywne elementów ciała i elementy pierwotne

Niezerowe elementy ciała charakteryzuje rząd multyplikatywny.

Rzędem multyplikatywnym dowolnego elementu ciała a jest najmniejsza liczba naturalna e (e > 0) taka, że

ae = 1.

W przypadku ciał prostych GF(p), p – liczba pierwsza, obliczenia wykonujemy modulo p.

(8)

8

Na przykład rzędem multyplikatywnym elementu 5 ciała GF(7) jest 6, ponieważ 56 = 1 (mod 7).

Rząd mutyplikatywny elementu ciała GF(p) jest dzielnikiem p − 1.

Elementy ciała GF(7) mają następujące rzędy multyplikatywne:

• element 1 − rząd multyplikatywny 1,

• elementy 2 i 4 − rząd multyplikatywny 3,

• elementy 3 i 5 − rząd multyplikatywny 6,

• element 6 − rząd multyplikatywny 2.

Np.

21 mod 7 = 2 22 mod 7 = 4

23 mod 7 = 1 (e = 3; najmniejsza potęga, dla której jest 1) 24 mod 7 = 2

25 mod 7 = 4 26 mod 7 = 1 Podobnie:

31 mod 7 = 3 32 mod 7 = 2 33 mod 7 = 6 34 mod 7 = 4 35 mod 7 = 5

36 mod 7 = 1 (e = 6; najmniejsza potęga, dla której jest 1) 37 mod 7 = 3

38 mod 7 = 2

Elementy ciała GF(p) mające rząd multyplikatywny równy p−1 nazywamy elementami pierwotnymi ciała lub inaczej generatorami ciała, tj. zbioru reszt mod p.

Każdy niezerowy element ciała można wyrazić w postaci cyklicznej jako potęgę dowolnego elementu pierwotnego ciała.

(9)

9

Np. w ciele GF(7) elementami pierwotnymi (generatorami) ciała są liczby 3 i 5; wówczas,

1 = 36 mod 7 = 56 mod 7;

2 = 32 mod 7 = 54 mod 7;

3 = 31 mod 7 = 55 mod 7;

4 = 34 mod 7 = 52 mod 7;

5 = 35 mod 7 = 51 mod 7;

6 = 33 mod 7 = 53 mod 7;

W ciele może być więcej niż jeden element pierwotny. Liczbę elementów pierwotnych n ciała GF(p) można określić z zależności:

n = ϕ (p − 1), gdzie ϕ jest funkcją Eulera.

Każdy element niezerowy ciała generuje grupę cykliczną.

Z kolei każdy element pierwotny ciała generuje grupę multyplikatywną ciała.

W tak utworzonej grupie będą wszystkie niezerowe elementy ciała.

Elementy grupy multyplikatywnej o rzędzie multyplikatywnym większym od 1 i mniejszym od p − 1 generują podgrupy multyplikatywne. Taka podgrupa zachowuje działania grupy.

Grupę cykliczną generowaną przez dowolny element ciała skończonego otrzymamy, biorąc kolejne potęgi tego elementu. Na przykład element 5 ciała GF(7) generuje grupę multyplikatywną: 5, 4, 6, 2, 3, 1, gdyż kolejne potęgi elementu 5 wynoszą: 5, 5⋅5=4, 4⋅5=6, 6⋅5=2, 2⋅5=3, 3⋅5=1.

Podobnie element 2 generuje podgrupę trzyelementową: 2, 4, 1.

Charakterystyka ciała

Charakterystyką ciała skończonego jest najmniejsza liczba naturalna n, dla której suma n dowolnych, tych samych elementów ciała wynosi 0, tj.

𝑛𝑖=1

𝑥

𝑖

= 0

gdzie xi jest dowolnym niezerowym elementem ciała.

Ciało GF(2) ma charakterystykę 2, ponieważ 1+1 = 0.

Ciało GF(7) ma charakterystykę 7, ponieważ np. 3+3+3+3+3+3+3=0.

(10)

10

Jeśli liczba n nie istnieje, to charakterystyka ciała jest z definicji równa zero, np. ciała liczb wymiernych, rzeczywistych i zespolonych mają charakterystykę zero.

W przypadku ciał skończonych prostych charakterystyka ciała n = p jest liczbą pierwszą, a ciało rozszerzone zachowuje charakterystykę ciała prostego, nad którym zostało skonstruowane rozszerzenie.

Wielomiany nad ciałami skończonymi

W teorii kodowania są szeroko wykorzystywane wielomiany nad ciałami skończonymi. Wielomian stopnia m nad ciałem GF(q) może być w ogólnej postaci przedstawiony jako:

Wielomian jest unormowany, gdy

a

m = 1.

Wielomian można zapisać również w postaci ciągu współczynników:

a

m

, a

m−1

, a

m−2

, … , a

1

, a

0

.

Wtedy potęga zmiennej określa miejsce współczynnika w ciągu.

Pokazano to na poniższych przykładach.

Wielomian nad GF(2): x3 + x + 1, zapis w postaci 1 0 1 1.

Wielomian nad GF(7): x3 + 5x + 3, zapis w postaci 1 0 5 3.

Wielomian nad GF(8): x4 + α6 x2 + x + α2 , zapis w postaci 1 0 α6 1 α2. Operacje na wielomianach

Na wielomianach nad ciałami skończonymi można wykonywać operacje algebraiczne (dodawanie, odejmowanie, mnożenie i dzielenie), stosując wielomiany lub ciągi ich współczynników.

(11)

11

W teorii informacji wykorzystywane są głównie wielomiany nad ciałami binarnymi, dla których odejmowanie można zastąpić dodawaniem współczynników wielomianów modulo 2. Dzięki temu dzielenie wielomianów nad GF(2) ma postać:

Inny przykład: x3 + x + 1 = (x+1)(x2 + x) + 1, tj. 1011 = 11 * 110 + 1 110

--- 11 | 1011 + 11 --- =11 11 ---

=01 - reszta 0x1 + 1 = 1

Wielomian odwrotny

Każdy wielomian nad ciałem skończonym ma wielomian odwrotny.

Dla wielomianu zapisanego w postaci ogólnej za pomocą sumy potęg wielomian odwrotny p*(x) oblicza się następująco:

𝑝

(𝑥) =

𝑥𝑚

𝑎0

∗ 𝑝(

1

𝑥

) .

(12)

12

Dla wielomianów nad GF(2), podanych w postaci ciągu współczynników, wielomian odwrotny można uzyskać, zapisując ciąg współczynników w odwrotnej kolejności.

Ponieważ wielomian x6 + x + 1 możemy zapisać, jako 1000011, więc wielomianem odwrotnym będzie 1100001 = x6 + x5 + 1.

W dowolnym ciele pierwiastki wielomianu odwrotnego p*(x) do wielomianu p(x) są odwrotnościami pierwiastków wielomianu p(x).

Przykład obliczania wielomianu odwrotnego do wielomianu p(x) = x6 + x + 1 w oparciu o wzór:

𝑝

(𝑥) = 𝑥

6

(

1

𝑥6

+

1

𝑥

+ 1) = 𝑥

6

+ 𝑥

5

+ 1 .

Niektóre wielomiany odwrotne mają taką samą postać jak wielomiany oryginalne. Wielomiany takie nazywamy samo-odwrotnymi.

Na przykład wielomianami samo-odwrotnymi są wielomiany:

x2 + x + 1 oraz x6 + x3 + 1.

Wielomiany nierozkładalne i pierwotne

Każdy wielomian stopnia dodatniego o współczynnikach z ciała skończonego GF(q) jest albo nierozkładalny, albo jest iloczynem wielomianów nierozkładalnych nad ciałem GF(q).

Wielomian p(x) stopnia m jest nierozkładalny nad GF(q), jeśli nie dzieli się przez dowolny wielomian stopnia większego od zera i mniejszego od m (najmniejszym dzielnikiem wielomianu jest jednomian ax + b).

W przeciwnym przypadku wielomian jest rozkładalny.

(13)

13

Rodzaje wielomianów pokazano na kolejnym rysunku.

Przykłady wielomianów nierozkładalnych nad GF(2):

x + 1, x2 + x + 1, x4 + x + 1.

Przykłady wielomianów rozkładalnych nad GF(2):

x4 + x3 + x2 + 1 = (x3 + x + 1)(x + 1), x2 + 1 = (x+1)(x+1).

Nie istnieją ogólne kryteria pozwalające w łatwy sposób odróżnić wielomiany rozkładalne od nierozkładalnych nad danym ciałem. Kryteria takie można podać tylko dla niektórych ciał, np. ciał liczb rzeczywistych, wymiernych i zespolonych.

Wielomiany nierozkładalne nad ciałami skończonymi odgrywają ważną rolę w teorii ciał skończonych, kryptografii i teorii kodów korekcyjnych. Służą one, między innymi, do:

- konstruowania ciał rozszerzonych;

- wyznaczania sekwencji pseudolosowych;

- konstruowania niektórych kodów korekcyjnych.

(14)

14

Metody znajdowania wielomianów nierozkładalnych

Jedną z metod wyznaczania wielomianów nierozkładalnych jest metoda obliczania wielomianów minimalnych elementów ciała skończonego, tj.

wielomianów minimalnego stopnia, których pierwiastkami są elementy ciała rozszerzonego.

W tym celu należy skonstruować ciało rozszerzone w oparciu o wybrany wielomian pierwotny, przy czym jeden z wielomianów pierwotnych, potrzebny do konstrukcji tego ciała, znaleźć metodą prób i błędów.

Inny sposób polega na wykorzystaniu tablic wielomianów nierozkładalnych, które są dołączane do podręczników dotyczących ciał skończonych lub kodów korekcyjnych.

Wielomiany pierwotne i niepierwotne

Wielomiany nierozkładalne dzielą się na pierwotne i niepierwotne.

Wielomian nierozkładalny stopnia m jest wielomianem pierwotnym nad GF(q), jeśli wszystkie jego pierwiastki są elementami pierwotnymi ciała rozszerzonego stopnia m, tj. ciała GF(qm), skonstruowanego w oparciu o ten wielomian.

Znajdowanie pierwiastków wielomianów jest jednak operacją złożoną.

Można łatwo sprawdzić, czy wielomian nierozkładalny jest pierwotny, czy też nie, korzystając z metody polegającej na wygenerowaniu sekwencji okresowej stowarzyszonej z wielomianem i wyznaczeniu okresu tej sekwencji.

Jeśli okres T sekwencji okresowej, wygenerowanej za pomocą danego wielomianu stopnia m, osiąga wartość maksymalną, która wynosi:

T = qm – 1,

to możemy stwierdzić, że wielomian jest pierwotny.

(15)

15

Wielomiany pierwotne stopnia m istnieją dla każdej dodatniej liczby całkowitej m. Liczbę wielomianów pierwotnych stopnia m nad ciałem GF(q) można obliczyć z zależności:

gdzie ϕ(x) jest funkcją Eulera.

Przykładowe liczby wielomianów pierwotnych stopnia m nad ciałem GF(2).

W kolejnych tabelach podano wielomiany nierozkładalne nad ciałami prostymi GF(2), GF(3), GF(5) i GF(7). Tabele zawierają ciągi współczynników wielomianów:

a

m

, a

m−1

, a

m−2

, … , a

1

, a

0 oraz okresy generowanych sekwencji.

Wielomiany nierozkładalne, które generują sekwencje o okresie pm − 1, są wielomianami pierwotnymi, a pozostałe – wielomianami niepierwotnymi.

W tabelach pominięto wielomiany odwrotne.

(16)

16

Wielomiany nierozkładalne nad GF(2)

Wielomiany nierozkładalne nad GF(3)

Wielomiany nierozkładalne nad GF(5)

(17)

17

Wielomiany nierozkładalne nad GF(7)

Przestrzeń wektorowa nad ciałem binarnym

Uporządkowany zbiór n elementów vi zapisanych w postaci wierszowej lub kolumnowej nazywamy wektorem n-wymiarowym.

Jeśli współrzędnymi wektorów są elementy binarne, 1 lub 0, to możliwe jest wygenerowanie 2n wektorów n-wymiarowych, które tworzą przestrzeń wektorową Vn nad GF(2). Przestrzeń taka odgrywa ważną rolę w teorii kodowania.

W teorii kodowania stosuje się najczęściej dodawanie wektorów i mnożenie przez skalar. Sumę dwóch wektorów v i u oblicza się w następujący sposób:

Iloczyn liczby a i wektora v jest wektorem o postaci:

Podane działania na wektorach są działaniami przemiennymi i łącznymi.

(18)

18

Wektory liniowo niezależne i liniowo zależne

Układ wektorów v1, v2 , … , vk , należących do przestrzeni wektorowej Vn, nazywamy liniowo zależnym, jeśli istnieją takie liczby a1, a2, …, ak, nie wszystkie jednocześnie równe zeru, dla których zachodzi:

a1v1 + a2v2 + … + akvk = 0 .

Na to, aby układ wektorów v1, v2 , … , vk był liniowo zależny, potrzeba i wystarczy, aby jeden wektor tego układu był liniową kombinacją pozostałych wektorów.

Układ wektorów v1, v2 , … , vk , gdzie vi ∈Vn , nazywamy liniowo niezależnym, jeśli powyższa równość zachodzi tylko wówczas, gdy a1 = a2 = … = ak = 0.

Zbiór n-wymiarowych wektorów v1, v2 , … , vk , tworzy bazę n-wymiarowej przestrzeni, jeśli:

 Liczba wektorów vi w danym układzie wektorów jest identyczna z wymiarem przestrzeni, z której pochodzą te wektory.

 Układ wektorów jest liniowo niezależny.

Wektory należące do przestrzeni wektorowej Vn można przedstawić, jako kombinację liniową wektorów bazy.

Przykład przestrzeni wektorowej nad GF(2)

Przestrzeń wektorowa. Niech n = 3.

Przestrzeń wektorowa V3 zawiera następujące wektory:

[0 0 0], [0 0 1], [0 1 0], [0 1 1], [1 0 0], [1 0 1], [1 1 0], [1 1 1].

Wektorami liniowo niezależnymi są np. wektory: [0 0 1], [0 1 0], [1 0 0 ].

Wektory te tworzą bazę przestrzeni wektorowej.

Np. wektor [1 0 1] wyraża się jako kombinacja liniowa wektorów bazowych:

1*[0 0 1] + 0*[0 1 0] + 1*[1 0 0] .

(19)

19

Sekwencje okresowe nad ciałami skończonymi

Każdy wielomian nad ciałem skończonym może być użyty do generowania nieskończonej sekwencji okresowej. Aby wygenerować sekwencję okresową, należy napisać zależność rekurencyjną stowarzyszoną z wybranym wielomianem.

Rozważmy wielomian unormowany nad ciałem skończonym GF(q) zapisany w postaci ogólnej:

p(x) = x

m

+ a

m-1

x

m-1

+ a

m-2

x

m-2

+ … + a

1

x + a

0

,

gdzie

a

i

 GF(q)

Przyrównując ten wielomian do zera, otrzymamy:

p(x) = 0 ,

xm + am-1xm-1 + am-2xm-2 + … + a1x + a0 = 0, tj.

xm = - am-1xm-1 - am-2xm-2 - … - a1x - a0,

Zależność rekurencyjna stowarzyszona z tym wielomianem będzie postaci (za

x

m wstawiamy

s

j+m):

(*) sj+m = - am-1sj+m-1 - am-2sj+m-2 - … - a1sj+1 - a0sj , gdzie j=0, 1, 2, 3, …, ∞ .

Działania należy tu wykonywać zgodnie z zasadami rachowania w ciele GF(q).

W przypadku wielomianów nad ciałami prostymi można zastąpić współczynniki z minusami –ai, wartościami (q - ai), co wynika z zależności modularnej:

-ai = -ai (mod q), 0 = q (mod q),

czyli dodając stronami:

-ai = q - ai (mod q).

(20)

20

Jeśli założymy ciąg początkowy o długości m elementów, tj

.

s0, s1, s2, …, sm-1 ,

( są to dowolne elementy ciała GF(q), ale nie same 0; najwygodniej,

jeśli jest to ciąg postaci 1, 0, 0, …, 0, gdyż w każdym ciele są te elementy).

to wówczas dla kolejnych wartości j = 0, 1, 2, …, można obliczyć z podanej zależności rekurencyjnej (*) elementy sekwencji okresowej:

sm, sm+1, sm+2, …, itd., gdzie: s0, s1, s2, …, sm-1 , są dane, np.

dla j=0 zachodzi: sm = - am-1sm-1 - am-2sm-2 - … - a1s1 - a0s0 ; dla j=1 zachodzi: sm+1 = - am-1sm - am-1sm-1 - … - a1s2 - a0s1 ; dla j=2 zachodzi: sm+2 = - am-1sm+1 - am-1sm - … - a1s3 - a0s2 ; itd.

Okres sekwencji

Okres wygenerowanej sekwencji okresowej zależy od typu wielomianu.

W przypadku, gdy wielomian jest pierwotny wyznaczona sekwencja osiąga okres maksymalny z możliwych dla wielomianów stopnia m nad ciałem GF(q).

Okres maksymalny T dla wielomianu stopnia m nad ciałem GF(q) wynosi T = qm – 1.

Okres taki posiadają tylko sekwencje okresowe skonstruowane w oparciu o wielomiany pierwotne.

Sekwencje wygenerowane w oparciu o wielomiany niepierwotne mają okres mniejszy.

(21)

21

Test sprawdzający czy wielomian jest pierwotny

W celu sprawdzenia czy dany wielomian stopnia m nad GF(q) jest pierwotny wystarczy wygenerować dla tego wielomianu sekwencję okresową i wyznaczyć jej okres. Jeśli jest on równy T = qm – 1, to wielomian jest pierwotny.

Przykład. Generowanie sekwencji okresowej dla wielomianu nad ciałem binarnym GF(2).

Niech wielomianem generującym sekwencję okresową będzie wielomian stopnia trzeciego (m=3) nad ciałem GF(2) postaci: p(x) = x3 + x +1.

Z zależności x3 + x +1 = 0

otrzymujemy: x3 = - x - 1 = 1x + 1 (w ciele GF(2) zachodzi -1 = 1 (mod 2) ).

Zależność rekurencyjna (*) stowarzyszona z tym wielomianem ma postać:

Sj+3 = Sj+1 + Sj, gdzie j=0, 1, 2, 3, … .

W zależności rekurencyjnej operacje dodawania i mnożenia są wykonywane zgodne z zasadami obowiązującymi w ciele GF(2).

Przyjmując trzy, dowolne (ale nie same 0) elementy początkowe: s0, s1 i s2

należące do ciała GF(2), za pomocą powyższej zależności można wygenerować nieskończoną sekwencję okresową.

Pierwszymi elementami takiej sekwencji będą elementy ciągu początkowego, s0, s1 i s2, a dalsze elementy sekwencji oblicza się z zależności rekurencyjnej, podstawiając kolejne wartości j = 0, 1, 2, 3, …, itd.

Proces generowania sekwencji pokazano w tabeli.

(22)

22

W pierwszym wierszu tabeli podano wartości parametru j. Drugi wiersz zawiera symbole elementów ciągu si , a ostatni wiersz – wygenerowaną sekwencję.

Okres wygenerowanej sekwencji, pokazanej w tabeli, wynosi T = 7. Okres ten spełnia zależność T = qm – 1 = 23 – 1 = 7. Jest to, więc okres maksymalny dla wielomianów stopnia 3 nad GF(2).

Zatem możemy wnioskować, że zastosowany wielomian jest wielomianem pierwotnym.

Inne wielomiany pierwotne stopnia m= 4 i m=5 nad GF(2) i stowarzyszone z nimi sekwencje:

x4 + x + 1, 000100110101111, 0001... (m=4); T = 24 – 1 =15 x5 + x2 + 1, 0000100101100111110001101110101, 00001... (m=5);

T = 25 – 1 = 31.

Wielomiany niepierwotne nie generują sekwencji o maksymalnym okresie.

Przykładem takiego wielomianu jest wielomian stopnia czwartego nad GF(2) x4 + x3 + x2 + x + 1. Wielomian ten, dla ciągu początkowego 1 0 0 0, generuje sekwencję o okresie pięć:

1 0 0 0 1, 1 0 0 0 ...

(23)

23

Sekwencje pseudolosowe

Sekwencje okresowe, generowane przez wielomiany pierwotne stopnia m nad GF(q), mają maksymalny okres definiowany wzorem T = qm – 1 i nazywają się sekwencjami pseudolosowymi.

Sekwencje pseudolosowe mają właściwości zbliżone do ciągów losowych, chociaż nie są w pełni ciągami losowymi.

Mogą one jednak być generowane w komputerach i znajdują liczne zastosowania w kryptografii i kodach korekcyjnych.

Własności sekwencji pseudolosowych

Ciąg początkowy generowanej sekwencji pseudolosowej może być dowolny.

Każda z 2m − 1 możliwych kombinacji początkowych, bez kombinacji złożonej z samych zer, umożliwia wygenerowanie sekwencji okresowej o tym samym okresie i kolejności elementów. Będą one tylko przesunięte względem siebie.

Jeżeli ciąg początkowy będzie zawierał same zera, to zostanie wygenerowana sekwencja zawierająca same zera.

Zakładamy, że wielomian pierwotny p(x) stopnia m generuje zbiór δ(m) sekwencji okresowych, zawierający 2m − 1 sekwencji o okresie 2m − 1 oraz sekwencję zerową.

Będziemy się posługiwać przykładami sekwencji generowanymi przez wielomiany pierwotne czwartego (m=4) i piątego (m=5) stopnia nad GF(2):

x4 + x + 1, 000100110101111, 0001... T = 24 – 1 =15

x5 + x2 + 1, 0000100101100111110001101110101, 00001...

T = 25 – 1 = 32.

(24)

24

Na przykład wielomian x4 + x + 1 generuje następujący zbiór sekwencji okresowych (okres T = 15) liczba sekwencji 16.

Definicje własności sekwencji pseudolosowych

(25)

25

Na kolejnym rysunku pokazano funkcję autokorelacji sekwencji pseudolosowej o okresie T =15.

(26)

26

Ponadto najdłuższy ciąg zer ma długość m − 1 znaków, a najdłuższy ciąg jedynek ma długość m znaków. W każdym przypadku liczba ciągów zer jest równa liczbie ciągów jedynek.

Liczbę ciągów zer lub jedynek można obliczyć z zależności: 2m−k −2 , gdzie k jest długością sekwencji i spełnia zależność: 0 < k < m − 2.

Rozkład ciągów jednakowych znaków dla podanej sekwencji pseudolosowej o okresie T = 31

pokazano w kolejnej tabeli:

(27)

27

Generatory sekwencji okresowych i pseudolosowych

Generowanie sekwencji okresowych oraz realizacja różnych algorytmów z zakresu kodów korekcyjnych i kryptografii może się odbywać programowo lub sprzętowo.

W realizacji sprzętowej stosujemy standardowe układy logiczne, jak: bramki, przerzutniki i rejestry. W realizacji programowej wykorzystujemy odpowiednie podprogramy realizujące określone operacje.

Działanie generatorów sekwencji okresowych można przedstawić a pomocą schematów blokowych, opisujących połączenia odpowiednich bloków funkcjonalnych.

Na schematach blokowych przyjęto następujące oznaczenia bloków funkcjonalnych, które mogą być realizowane sprzętowo lub programowo.

Oznaczenia te są uniwersalne i mogą być stosowane w generatorach, realizujących algorytmy zarówno nad ciałami binarnymi, jak i ciałami rozszerzonymi.

Jeśli urządzenie realizuje algorytm nad ciałem binarnym, to sumator odpowiada bramce Ex-OR, a element pamięciowy jest przerzutnikiem bistabilnym.

(28)

28

Generator liniowy LFSR

Do generowania sekwencji okresowej nad ciałem skończonym, w oparciu o zależność rekurencyjną, może być wykorzystany rejestr przesuwny ze sprzężeniem zwrotnym (Linear Feedback Shift Register − LFSR) pokazany na kolejnym rysunku lub jego wariant programowy.

Otrzymujemy w ten sposób generator linowy ze sprzężeniem zwrotnym LFSR.

Konfiguracja sprzężenia zwrotnego będzie określona zależnością rekurencyjną wykorzystywaną do generowania sekwencji.

Ciąg początkowy jest wpisywany do przerzutników rejestru w chwili startu układu.

W takt impulsów zegarowych jest generowana sekwencja okresowa, której kolejne elementy będą pojawiły się na wyjściu generatora.

W kolejnym przykładzie pokazano generator LFSR umożliwiający generowanie sekwencji okresowej za pomocą zależności rekurencyjnej otrzymanej z wielomianu x3 + x + 1 nad GF(2).

http://zon8.physd.amu.edu.pl/˜tanas

(29)

29

Własności generatora LFSR:

 Generator LFSR ma słabą wartość kryptograficzną gdyż znajomość 2n kolejnych bitów ciągu pozwala na znalezienie wartości generowanych od tego miejsca.

 LFSR działa jednak bardzo szybko zwłaszcza, jeśli jest to układ sprzętowy, i stąd jest on bardzo atrakcyjny w praktycznych zastosowaniach.

Można konstruować bardziej skomplikowane układy zawierające kilka LFSR i nieliniową funkcję f przekształcającą bity generowane przez poszczególne LFSR. W ten sposób otrzymamy generatory nieliniowe.

(30)

30

Generator Geffe

Jako przykład generatora tej klasy można podać generator Geffe, w którym realizowana funkcja ma postać:

f(x1, x2, x3) = (x1 ∧ x2) ⊕ (¬x2 ∧ x3)

Generator Geffe ma słabe własności kryptograficzne ze względu na korelacje pomiędzy generowanymi bitami i bitami LFSR 1 lub LFSR 2.

(31)

31

Generatory sterowane zegarem

Generator o zmiennym kroku

Rejestr LFSR 1 jest przesuwany w każdym takcie zegara.

 Jeśli na wyjściu LFSR1 jest 1, to LFSR2 jest przesuwany, natomiast LFSR3 nie jest przesuwany (poprzedni bit jest powtarzany).

 Jeśli na wyjściu LFSR1 jest 0, to LFSR3 jest przesuwany, natomiast LFSR2 nie jest przesuwany (poprzedni bit jest powtarzany).

 Wyjściowe bity LFSR2 i LFSR3 są dodawane modulo 2 (⊕), dając kolejny bit generowanego ciągu.

Shrinking generator

W zależności od wartości bitu ai wysyłamy lub pomijamy bit bi.

(32)

32

Generatory oparte o algorytmy trudne obliczeniowo

Generator Blum-Micali

W generatorze tym wykorzystuje się trudność w obliczaniu logarytmu dyskretnego. Wybieramy dwie liczby pierwsze a i p oraz liczbę x0 (zarodek), a następnie obliczamy:

𝑥

𝑖+1

= 𝑎

𝑥𝑖

𝑚𝑜𝑑 𝑝

dla i = 0, 1, 2, 3, … .

Pseudolosowy ciąg bitów tworzymy w następujący sposób:

𝑘

𝑖

= { 1 𝑗𝑒ż𝑒𝑙𝑖 𝑥

𝑖

< (𝑝 − 1)/2 0 𝑤 𝑝𝑟𝑧𝑒𝑐𝑖𝑤𝑛𝑦𝑚 𝑝𝑟𝑧𝑦𝑝𝑎𝑑𝑘𝑢

Generator RSA

Generator oparty na trudności problemu faktoryzacji liczb.

Wybieramy dwie liczby pierwsze p i q (N = pq) oraz liczbę e względnie pierwszą z (p − 1)(q − 1). Wybieramy losową liczbę (zarodek) x0 mniejszą od N, a następnie obliczamy

𝑥𝑖+1 = 𝑥𝑖𝑒 𝑚𝑜𝑑 𝑁 . Generowanym bitem jest najmłodszy bit liczby xi+1.

Generator Blum-Blum-Shub — BBS

Znajdujemy dwie duże liczby pierwsze p i q, takie, że p ≡ 3 (mod 4) oraz q ≡ 3 (mod 4); N = pq.

Wybieramy losową liczbę x względnie pierwszą z N, a następnie obliczamy:

𝑥0 = 𝑥2 𝑚𝑜𝑑 𝑁 .

Liczba x0 stanowi zarodek dla generatora. Teraz liczymy:

𝑥𝑖+1 = 𝑥𝑖2 𝑚𝑜𝑑 𝑁 . Generowanym bitem jest najmłodszy bit liczby xi+1.

Cytaty

Powiązane dokumenty

Jeżeli na bryłę sztywną działa niezrównoważony moment siły to bryła porusza się ruchem obrotowym zmiennym, z przyśpieszeniem kątowym wprost proporcjonalnym do

Osoby, które otrzymały z laboratorium 3.5 mogą pomylić się tylko raz natomiast osoby, które otrzymały tylko 3.0 muszą odpowiedzieć prawidłowo na oba pytania.. W przypadku

Kod źródłowy programu - zakodowana postać algorytmów stanowiących rozwiązanie problemu; tworzony pod dowolnym edytorem; jest najczęściej zapisywany za pomocą

Każdy ciąg jest tablicą znaków zawierającą wszystkie znaki łańcucha oraz znak specjalny o kodzie 0 (’\0’ null). Podział programu odbywa się od lewej do prawej i od góry

Odczyt danych z plików tekstowych i binarnych Funkcje odczytu danych w postaci tekstowej (pliki tekstowe):.. Odczyt pojedynczego znaku ze

Pętla jest powtarzana dopóki wartość zmiennej sterującej zm_ster &lt;= wyr2.... Jeśli na końcu pętli zachodzi zm_ster = wyr2, to następuje

Argumenty przekazywane przez zmienne mogą być modyfikowane wewnątrz procedur i funkcji, gdyż wszelkie operacje są wykonywane bezpośrednio na nich. Ten sposób przekazywania

Pierwszy sposób polega na opracowaniu nowej procedury sortowania, która realizuje algorytm sortowania bąbelkowego dla każdego wiersza tablicy dwuwymiarowej. Parametrem