Sunteți pe pagina 1din 27

Bazele Criptologiei

Modul I

Elemente de algebra
superioara
Topicuri
Fundamentul matematic pentru algoritmi criptografici:
AES, IDEA, CE, algorimi cu chei publice
Elementele fundamentale din algebra abstracta:
Grupuri, grupuri ciclice
Inele ierarhie axiomatica 
Campuri
concentrate pe multimi de elemente “numere” ce pot fi operate algebric
Aritmetica modulara
Algorimul lui Euclid
Campuri Galois
Aritmetica polinomiala
Consideratii computationale
Exemple
Elemente de algebra superioara
Grup (S, ) : S x S  S
 a,bS ab S
 a,b,cS (ab)c=a(bc)
 aS, eS ae=ea=a
 aS, !bS ab=ba=e
Grup abelian finit – inchidere, asociat., element neutru, element simetrizabil
– comutativitate, cardinal finit
Ex: Zn Zp* GF(q)*
Operatie aditiva a+b 0 -a a-b n*a

Operatie multipl ab 1 1/a a/b an

Ordinul grupului – cardinalul grupului finit |S|

Grup ciclic -  aS, fixat, a.i.  bS  kZ a.i. b=ak a-generatorul grupului ciclic
Exponentul grupului – cel mai mic n, a.i. xn = 1,  xS
Grup cat - Cum se construieste?
Elemente de algebra superioara
Aritmetica modulara

n - intreg pozitiv - operatiile de suma si produs (mod n)  grupuri bazate pe


clase de echivalenta
(Zn , +n) - grup aditiv modulo n - grup abelian finit
(Zn *, *n) - grup multiplicativ modulo n – grup abelian finit

Zn * = {[a]n  Zn | gcd(a,n) = 1} Zn * = {1, 2, 4, 7, 8, 11, 13, 14}

a-1 ( mod n) 7-1  13 (mod 15)  7*13 = 91  1 (mod 15)


a/b  a*b-1 (mod n) 4/7  4*13  7 (mod 15)

| Zn *| =  (n) functia lui Euler

Aplicatii
Elemente de algebra superioara
Aritmetica modulara

(Z6, +6) (Z15, *15)


+6 *15
1 2 3 4 5 0 1 2 4 7 8 11 13 14
2 3 4 5 0 1 2 4 8 14 1 7 11 13
0 1 2 3 4 5 4 8 1 13 2 14 7 11
3 4 5 0 1 2 7 14 13 4 11 2 1 8
4 5 0 1 2 3 8 1 2 11 4 13 14 7
5 0 1 2 3 4 11 7 14 2 13 1 8 4
13 11 7 1 14 8 4 2
14 13 11 8 7 4 2 1

Ex:
* Determinati tabelele de operatii din grupurile (Z4, +4) si (Z5, *5)

** Aratati ca aceste grupuri sunt izomorfe


Elemente de algebra superioara
Aritmetica modulara

(S, ) grup finit


S’ S, S’ - subgrup pentru S daca (S’, ) structura de grup
S’ S, S’   atunci a,b S’  a  b  S’
(S’, ) subgrup (S, )

Teorema lui Lagrange


(S’, ) subgrup al lui (S, ) atunci |S’|/|S|
(ordinul subgrupului divide ordinul grupului)

! (S’, ) subgrup propriu pentru (S, )  |S’| |S| /2

Aplicatii
Elemente de algebra superioara
Notatii Aritmetica modulara
Zn a(k)= ka (mod n)
Zn* a(k)= ak (mod n)
a - subgrupul generat de elementul a (a, ) unde a={a(k) | k 1}
Ordinul lui a (in grupul S) - cel mai mic intreg pozitiv , t, a.i. at = e

Teorema
Pentru (S, ) grup finit si aS  ord(a)=|a|

! (S, ) grup finit, eS  a  S avem a|S|= e

Ex: subgrup generator ordin


{1} 1 1
{1,18} 18 2
{1, 7, 11} 7,11 3
{1, 7, 8, 11, 12, 18} 8, 12 6
{1, 4, 5, 6, 7, 9, 11, 16, 17} 4, 5, 6, 7, 9, 16, 17 9
Elemente de algebra superioara
Aritmetica modulara

Ecuatii liniare
a*x  b (mod n), a, n>0 (1)

Aplicabilitate - construirea cheilor din sisteme de tip RSA


- a, b, n - cunoscute - x necunoscut - numarul solutiilor?

Subgrupul generat de a, a = {a(x)| x>0} = { ax (mod n ) | x>0 }


 solutii pt (1)  [b] a

|a|/n - conform teoremei lui Lagrange

! (1) are solutie  d/b, unde d = gcd (a, n)


! (1) are d solutii sau nu are nici o solutie
Elemente de algebra superioara
Aritmetica modulara

Teorema
Fie d = gcd (a,n)
Daca b/d  a*x = b (mod n) are o solutie de forma

x0 = x’ (b/d) mod n  xi = x0 + i (b/d) mod n, 0 i  d-1

! gcd (a , n) =1  (1) are solutie unica

! d = gcd (a,n)   x’, y’ (cf algoritmului lui Euclid) a.i.


d = ax’ + by’
Ex.
* Gasiti radacinile ecuatiei: 35 x  10 (mod 50)
** Gasiti toate solutiile sist. de ec. x  4 (mod 5) si x  5 (mod 11)
Elemente de algebra superioara
Inele

{R,+,.}

• O multime de “numere”, cu doua operatii


(aditiva si multiplicativa), astfel:
• Grup abelian cu operatia aditiva [a – b = a + (–b)]
• Multiplicarea verifica:
– inchisa
– asociativa
– distributiva fata de operatia aditiva:
a(b+c) = ab + ac

• Daca multiplicarea este si comutativa – inel comutativ


• Daca multiplicarea are element identitate si nu are divizori ai
lui zero, atunci formeaza un inel integru
Elemente de algebra superioara
Campuri

{F,+,.}
• O multime de “numere”, cu 2 operatii, astfel:
– Grup abelian cu operatia aditiva
– Grup abelian cu operatia multiplicativa (exceptand pe 0), unde a/b = a
* (b–1).
– Structura de inel

! Campul - structura in care se pot realiza adunarea, scaderea,


multiplicarea si impartirea fara a iesi din multimea de baza

Ex: Q, R, C Z?
Elemente de algebra superioara
Campuri Galois

GF(pn)
• Camp finit cu aplicabilitate in criptografie
• Ordinul campului (finit) - putere a unui numar prim pn

• Des utilizate in practica:


– GF(p)
– GF(2n)

! Campuri infinite – restrictii ?!


Elemente de algebra superioara
Campuri Galois GF(p)

GF(p) = {0,1, … , p-1} - operatia aritmetica: mod p, p=prim

• structura de camp finit


– Exista invers la operatia de multiplicare

• Comportament aritmetic potrivit pentru aplicatiile cripto


permite:
– Adunare
– Scadere in cadrul GF(p)
– Inmultire
– Impartire

Ex: GF(7) – operatia de inmultire, calcul invers - tema


GF(7) Multiplicarea

 0 1 2 3 4 5 6
0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6
2 0 2 4 6 1 3 5
3 0 3 6 2 5 1 4
4 0 4 1 5 2 6 3
5 0 5 3 1 6 4 2
6 0 6 5 4 3 2 1
Calcul invers in GF
Aflarea inversului elementului b, modulo m

Algorimul lui Euclid, AE(m, b)

1. (A1, A2, A3)=(1, 0, m);


(B1, B2, B3)=(0, 1, b)
2. if B3 = 0
return A3 = gcd(m, b); no inverse
3. if B3 = 1
return B3 = gcd(m, b); B2 = b–1 mod m
4. Q = A3 div B3
5. (T1, T2, T3)=(A1 – Q B1, A2 – Q B2, A3 – Q B3)
6. (A1, A2, A3)=(B1, B2, B3)
7. (B1, B2, B3)=(T1, T2, T3)
8. goto 2
Calcul valori inverse in GF(1759)***
ex 550

Q A1 A2 A3 B1 B2 B3

— 1 0 1759 0 1 550

3 0 1 550 1 –3 109

5 1 –3 109 –5 16 5

21 –5 16 5 106 –339 4

1 106 –339 4 –111 355 1


Elemente de algebra superioara
Aritmetica polinomiala
f(x) = anxn + an-1xn-1 + … + a1x + a0 = ∑ aixi
– nu este de interes aflarea valorii lui f in fiecare valoare x
– x se considera nedeterminat

• Alternative
– aritmetica polinoamelor ordinare
– polinoame cu coeficienti mod p
– polinoame cu coeficienti mod p si modulo m(x)

• Operatiile de adunare si scadere – la nivel coeficienti


• Multiplicarea se realizeaza la nivel de temen, fiecare cu fiecare

Ex:
f(x) = x3 + x2 + 2 si g(x) = x2 – x + 1
f(x) + g(x) = x3 + 2x2 – x + 3
f(x) – g(x) = x3 + x + 1
f(x) x g(x) = x5 + 3x2 – 2x + 2
Elemente de algebra superioara
Aritmetica polinomiala

Operatii polinomiale - modulo coeficienti


• La calculul valorilor coeficientilor se fac operarii modulo un parametru
– formeaza o structura de inel de polinoame

• Se pot face operatiile modulo p, p - prim


• Aplicabilitate crescuta - mod 2
– coeficientii - doar 0 si 1

Ex: f(x) = x3 + x2 si g(x) = x2 + x + 1

f(x) + g(x) = x3 + x + 1
f(x) x g(x) = x5 + x2
Elemente de algebra superioara
Aritmetica polinomiala

Impartirea polinoamelor
– f(x) = q(x) g(x) + r(x), unde r(x) are rol de rest
– r(x) = f(x) mod g(x)

• In cazul in care nu exista vreun rest, atunci spunem ca polinomul


g(x) divide polinomul f(x)

• Daca un polinom g(x) nu are alti divizori in afara de el insusi si 1,


atunci polinomul se numeste ireductibil sau prim

• Aritmetica polinomiala modulo un polinom ireductibil formeaza o


structura de camp

• Ex. GF(2n) – polinoame de grad maxim n, coef. modulo 2, se


realizeaza reducerea modulo un polinom ireductibil doar la operatia
de multiplicare
– se poate extinde algoritmul lui Euclid pentru aflarea inversului oricarui pol.
Elemente de algebra superioara
Aritmetica polinomiala
Tipuri de polinoame:
Polinoame reductibile
Polinoame ireductibile
Polinoame primitive

Element primitiv in campul finit GF(p) – generatorul grupului multiplicativ


- altfel spus, elementul primitv  este radacina de ordin (p-1) a unitatii in campul
GF(p) – toate elementele nenule din GF(p) pot fi scrise ca puteri ale lui  .

Ex. 2 este element primitiv in GF(3) si GF(5) . Este si in GF(7) ?

Polinomul minimal la unui element primitiv - polinomul primitiv – in campul finit,


extins GF(pm)
! Numarul elementelor primitive din campul GF(p) este φ(p - 1) – functia lui Euler

Un polinom q(x) cu coeficienti in GF(p) = Z/pZ spunem ca este polinom primitiv daca
are gradul m si are o radacina  in GF(pm) astfel incat puterile succesive ale acestei
radacini genereaza tot campul GF(pm). ( si anume, {0, 1, , ^2,…, ^(p^m-2)}
Examplu GF(?)
Exemplu: Care este inversul elementului 31 (reprezentat in format hexa) in GF(28) ?
Unde campul este definit de polinomul f(X) = 1 + X + X3 + X4 + X8

31 corespunde polinomului X5 + X4 + 1
Pentru a afla inversul acestui polinom, se foloseste algoritmul lui Euclid:

X8 + X4+ X3+ X + 1 = X3 (X5 + X4 + 1) + X7 + X4 + X + 1


= X3 (X5 + X4 + 1) + X2 (X5 + X4 + 1) + X6 + X4 + X2 + X + 1
= X3 (X5 + X4 + 1) + X2 (X5 + X4 + 1) + X (X5 + X4 + 1) + X5 + X4 + 1 + X2
X8 + X4+ X3+ X + 1 = (X3 + X2 + X + 1) (X5 + X4 + 1) + X2
X5 + X4 + 1 = X2 (X3 + X2) + 1

succesiv, pornind invers, avem:

1 = X2 (X3 + X2) + (X5 + X4 + 1)


1 = [X8 + X4+ X3+ X + 1 + (X3 + X2 + X + 1)(X5 + X4 + 1)](X3 + X2) + X5 + X4 + 1
1 = (X8 + X4+ X3+ X + 1)(X3 + X2) + (X6 + X2 + 1)(X5 + X4 + 1)

deci inversul polinomului X5 + X4 + 1 este X6 + X2 + 1, adica 31-1 = 45


Ex. Suma a doua numere in GF(28),
definit de polinomul f(X) = 1 + X + X3 + X4 + X8

57  83 = D4

57 – 01010111
83 – 10000011
 11010100

Ex. Inmultirea a doua numere in acelasi camp

57  83 = (X6 + X4 + X2 + X + 1)(X7 + X + 1) =
= X13 + X11 + X9 + X8 + X6 + X5 + X4 + X3 + 1
mod (X8 + X4 + X3 + X + 1)
= X7 + X6 + 1

11000001 = C1
Operatii modulo in campuri Galoise *
101 x 98 mod 17 = 1772 mod 73 =
75 mod 15 = 773 mod 71 =
128 mod 7 = 1310 mod 167 =
7559 mod 63 = 232 mod 5 =
-7559 mod 63 = 864 mod 9 =
755911 mod 63 = 1242 mod 25 =
17150 mod 151 = 163 x 255 mod 23 =
1410 mod 197 = 415 mod 17 =
68133 mod 323 =
Exercitii

1. *Gasiti subgrupurile lui Z9 si Z13*

2. **Gasiti toti intregii x care dau resturile 1,2,3 la impartirea cu 9, 8, 7.


Aplicatie
Testul Rabin de verificare ireductibilitatii unui pol.

Input polinomul fFq[x], grad f = n


p1, …, pk – divizorii primi ai lui n
Output decizie: f reductibil sau f ireductibil

for j=1 to k do
nj = n/pj
for i=1 to k do
g = gcd (f, X q ni  X mod f)
if g  1 then f – reductibil – STOP
endfor
n
g = X q  X mod f
If g = 0, then - f ireductibil
else - f reductibil
Bibliografie
http://www.math.clemson.edu/~sgao/papers/GP97a.pdf

http://www.tau.ac.il/~jarden/Courses/finite.pdf

http://www-groups.mcs.st-and.ac.uk/~neunhoef/Teaching/ff/ffchap3.pdf

http://mathworld.wolfram.com/FiniteField.html

An Introduction to Binary Finite Fields GF(2m), by Francisco Rodríguez


Henríquez.

S-ar putea să vă placă și