Matematica
Matematica
Curs 1
Complexitate
Congruent e
Cuprins
1
Tematica si bibliograe
2
Complexitatea algoritmilor
Timpi de execut ie
Notat ia O
Clase de complexitate
3
Algoritmul lui Euclid
4
Congruent e
Congruent e modulo n
Teorema chineza a restului
Funct ia lui Euler
Exponent iere modulara
Tematica cursului
1
Aritmetica modulara
2
Criptograe cu chei private
3
Criptograe cu chei publice
4
Aplicat ii
Bibliograe
S. Crivei, A. Marcus, C. Sacarea, C. Szanto, Computational algebra with
applications to coding theory and cryptography, Ed. EFES, Cluj-Napoca, 2006.
J. Daemen, V. Rijmen, The Design of Rijndael: AES - The Advanced
Encryption Standard, Springer-Verlag, 2002.
D.E. Denning, Cryptography and data security, Addison-Wesley, 1982.
N. Ferguson, B. Schneier, Practical Cryptography, Wiley, 2003.
M. Gardner, Codes, Ciphers, and Secret Writing, Simon and Schuster, 1972.
C. Gherghe, D. Popescu, Criptograe. Coduri. Algoritmi, Univ. Bucuresti, 2005.
M. Hayward, Quantum computing and Shors algoritm,
[http://alumni.imsa.edu/ matth/quant/299/paper/]
D. Kahn, The Codebreakers, Macmillan, 1967.
N. Koblitz, A Course in Number Theory and Cryptography, Springer, 1994.
R. Lidl, G. Pilz, Applied Abstract Algebra, Springer-Verlag, 1998.
Bibliograe (cont.)
A.J. Menezes, P.C. van Oorschot, S.A. Vanstone, Handbook of Applied
Cryptography, CRC Press, 1997. [http://www.cacr.math.uwaterloo.ca/hac]
B. Schneier, Applied Cryptography, John Wiley and Sons, 1996.
S. Singh, The Code Book on CD-ROM [http://www.simonsingh.net]
S. Singh, Cartea codurilor, Humanitas, 2005.
W. Stallings, Cryptography and Network Security, Prentice-Hall, 1999.
D.R. Stinson, Cryptography: Theory and Practice, CRC Press, 1995.
http://world.std.com/ cme (Carl Ellisons Cryptography Timeline)
http://www.rsasecurity.com/rsalabs
http://fredhenle.net/bb84/demo.php etc.
Timpi de execut ie
Teoria Complexitat ii:
Obiectiv: oferirea de metode pentru clasicarea problemelor
computat ionale n funct ie de resursele necesare rezolvarii lor.
Clasicarea nu trebuie sa depinda de modelul computat ional,
ci doar de dicultatea intrinseca a problemei.
Prin resurse necesare se nt elege memoria, numarul de
procesare etc., si n special timpul.
Conform Teoriei Informat iei, aproape orice algoritm
criptograc poate spart. Teoria Complexitat ii ne spune
timpul necesar pentru aceasta.
Denit ie
Algoritm: o metoda computat ionala bine denita, care preia un
input variabil si ofera un output dupa un numar nit de pasi
(program de calculator).
Denit ie
Marimea unui input: numarul total de bit i necesar pentru
reprezentarea sa n binar.
Exemple. (a) Fie n N si sa presupunem ca n are k cifre binare.
Atunci
2
k1
n < 2
k
,
k 1 log
2
n < k,
[log
2
n] = k 1,
k = 1 + [log
2
n] log n.
Aceasta nseamna logaritm n baza 2, daca nu se precizeaza altfel.
(b) Daca f = a
0
+ a
1
X + + a
k
X
k
Z[X], grad(f ) = k si
0 a
i
n, i = 0, . . . , k, atunci marimea lui f este de
(k + 1) log n bit i.
Denit ie
Operat ie pe bit i: operat ia de adunare (sau scadere) a 2 bit i
mpreuna cu tot ceea ce aceasta implica.
Timp de execut ie a unui algoritm cu un input dat: numarul
de operat ii primitive sau pasi executat i.
< n
< n
log n
<
n
< n
n
<
(
n
)
.
Funct ia f (n) = log n este mai mica decat orice funct ie
exponent iala g(n) = n
.
(c) Fie a, b N cu a, b n.
Algoritmul care face adunarea (scaderea) lui a si b are
complexitate O(log n). Mai precis, O(log a + log b).
Algoritmul care face nmult irea (mpart irea) lui a si b are
complexitate O(log
2
n). Mai precis, O((log a) (log b)).
Clase de complexitate
Denit ie
Algoritm de timp polinomial: un algoritm de complexitate
O(N
k
), unde N este marimea input-ului (adica log n daca n
este input-ul) si k este o constanta.
Algoritm de timp exponent ial: un algoritm care nu este de
timp polinomial.
Algoritm Complexitate No. operat ii Timp necesar la
pentru N = 10
6
10
6
operat ii / sec.
constant O(1) 1 1 sec.
liniar O(N) 10
6
1 sec.
patratic O(N
2
) 10
12
1,6 zile
cubic O(N
3
) 10
18
32000 ani
exponent ial O(2
N
) 10
301030
10
301006
varsta universului
Algoritmi de timp polinomial ecient i.
Algoritmi de timp exponent ial inecient i.
Pentru simplitate, putem considera ca Teoria Complexitat ii
Computat ionale se reduce la probleme de decizie (DA sau NU).
Denit ie
Denim urmatoarele clase de complexitate:
P: toate problemele de decizie care pot rezolvate n timp
polinomial.
NP: toate problemele de decizie pentru care raspunsul DA
poate vericat n timp polinomial folosind o informat ie
suplimentara, numita certicat.
NPC: cele mai dicile probleme din NP (probleme
NP-complete).
Daca o problema apart ine clasei NP, aceasta nu nseamna
neaparat ca un certicat pentru raspunsul DA poate obt inut
usor, ci doar ca acesta exista si, daca e cunoscut, poate utilizat
pentru a verica raspunsul DA.
Exemple. (a) Consideram urmatoarea problema: ind dat n N,
sa se decida daca n este compus, adica, a, b N, a, b 2, astfel
ncat n = ab.
Aceasta problema apart ine clasei NP, deoarece daca n este
compus, atunci acest lucru poate vericat n timp polinomial
daca se cunoaste un divizor 1 < a < n al lui n.
In acest caz
certicatul este divizorul a al lui n.
(b) Problema sumei submult imilor
Fiind data o mult ime A = {a
1
, . . . , a
n
} de numere naturale si
s N, sa se determine daca exista sau nu elemente ale lui A a
caror suma este s.
Aceasta este o problema NP-completa.
(c) Problema comis-voiajorului
Un comis-voiajor trebuie sa viziteze n orase diferite folosind doar
un rezervor de benzina (exista o distant a maxima pe care poate
calatori). Exista o ruta care i permite sa viziteze ecare oras exact
o data?
Aceasta este o problema NP-completa.
Algoritmul lui Euclid
Teorema mpart irii cu rest
a, b N, b = 0, !q, r N astfel ncat a = bq + r , unde r < b.
Unul dintre cele mai eciente moduri de calcul al cmmdc(a, b),
notat si cu (a, b), este Algoritmul lui Euclid.
Exemplu. Avem (1547, 560) = 7, deoarece:
1547 = 2 560 + 427
560 = 1 427 + 133
427 = 3 133 + 28
133 = 4 28 + 21
28 = 1 21 + 7
21 = 3 7
Algoritmul lui Euclid
Input: a, b N, a, b n, a b.
Output: (a, b).
Algoritm:
while b > 0 do
r := a mod b; a := b; b := r ;
return(a).
Timp: O(log
2
n) (...).
Teorema
Fie a, b N si d = (a, b). Atunci u, v Z astfel ncat
d = au + bv.
Corolar
Fie a, b N. Atunci (a, b) = 1 u, v Z : 1 = au + bv.
Exemplu. Stim deja ca (1547, 560) = 7. Atunci:
7 = 281 21 = 281 (1334 28) = 5 281 133 = 5 (427
3 133) 1 133 = 5 42716 133 = 5 42716 (5601 427) =
2142716560 = 21(15472560)16560 = 21154758560.
Algoritmul extins al lui Euclid
Input: a, b N, a, b n, a b.
Output: d = (a, b) si u, v Z astfel ncat au + bv = d.
Algoritm:
u
2
:= 1; u
1
:= 0; v
2
:= 0; v
1
:= 1;
while b > 0 do
q := [a/b]; r := a qb; u := u
2
qu
1
; v := v
2
qv
1
;
a := b; b := r ; u
2
:= u
1
; u
1
:= u; v
2
:= v
1
; v
1
:= v;
d := a; u := u
2
; v := v
2
;
write(d, u, v).
Timp: O(log
2
n).
Congruent e modulo n
Denit ie
Fie n N, a, b Z. Avem a b (mod n) n|a b.
Teorema
este o relat ie de echivalent a pe Z (reexiva, tranzitiva si
simetrica) si partit ia corespunzatoare este
Z
n
= {x + nZ | x Z} = {
0,
1, . . . ,
n 1} (pentru n 2).
Teorema
(i) (Z
n
, +, ) este un inel, unde a +
b =
a + b si a
b =
a b.
(ii) 0 = a este inversabil n Z
n
(a, n) = 1 u, v Z astfel
ncat au + nv = 1.
In acest caz a
1
= u.
(iii) (Z
n
, +, ) este un corp n este numar prim.
Propozit ie
Complexitatea calcularii inversului modulo n este O(log
2
n).
Teorema
Consideram
ax b (mod n) (1)
unde 0 a, b < n.
(i) Daca (a, n) = 1, atunci (1) are solut ie, si anume x
g
a
1
b
(mod n).
(ii) Daca (a, n) = d > 1, atunci (1) are solut ie d|b.
In acest
caz, (1) are aceeasi solut ie ca si
a
d
x
b
d
(mod
n
d
).
(iii) Complexitatea este O(log
2
n).
Exemplu. Consideram congruent ele:
(a) 3x 4 (mod 12).
(b) 8x 48 (mod 18).
Deoarece (3, 12) = 3 si 3 4, (a) nu are solut ie.
(b) este echivalenta cu 8x 12 (mod 18). Deoarece (8, 18) = 2 si
2|12, (b) are aceeasi solut ie ca si 4x 6 (mod 9), adica,
x
g
4
1
6 (mod 9), unde 4
1
= 7 este inversul modulo 9 al lui 4.
Atunci solut ia generala a lui (b) este x
g
6 (mod 9).
Teorema chineza a restului
Teorema chineza a restului
Consideram sistemul de congruent e
_
_
x a
1
(mod n
1
)
x a
2
(mod n
2
)
. . . . . . . .
x a
r
(mod n
r
)
unde a
i
< n
i
, n
i
N
, si (n
i
, n
j
) = 1, i , j {1, . . . , r }, i = j .
(i) Sistemul are o solut ie unica modulo N = n
1
n
2
. . . n
r
, si anume
x =
r
i =1
a
i
N
i
K
i
,
unde N
i
= N/n
i
, K
i
= N
1
i
mod n
i
.
(ii) Complexitatea este O(log
2
N).
Exemplu. Consideram sistemul:
_
_
_
x 2 (mod 5)
x 4 (mod 7)
x 5 (mod 11)
Avem
N = n
1
n
2
n
3
= 5 7 11 = 385,
N
1
= 77, N
2
= 55 si N
3
= 35.
Calculam
K
1
= N
1
1
mod n
1
= 77
1
mod 5
si rezolvam 77y 1 (mod 5), adica, 2y 1 (mod 5). Atunci
K
1
= y = 3.
Similar, K
2
= 55
1
mod 7 = 6 si K
3
= 35
1
mod 11 = 6.
Atunci
x 2 77 3 + 4 55 6 + 5 35 6 137 (mod 385).
Funct ia lui Euler
Denit ie
Funct ia : N
t
i =0
k
i
2
i
. Avem
b
k
=
t
i =0
b
k
i
2
i
= (b
2
0
)
k
0
(b
2
1
)
k
1
. . . (b
2
t
)
k
t
.
Exemplu. Sa calculam 42
51
mod 73.
Avem 51 = 2
0
+ 2
1
+ 2
4
+ 2
5
. Calculam 42
2
= 12,
42
(2
2
)
= 42
2
42
2
= 12 12 = 71,
42
(2
3
)
= 42
(2
2
)
42
(2
2
)
= 71 71 = 4, 42
(2
4
)
= 16, 42
(2
5
)
= 37,
unde = nseamna congruent a modulo 73. Atunci
42
51
= 42
2
0
+2
1
+2
4
+2
5
= 42 12 16 37 = 17 (mod 73).
Reducem modulo 73 dupa ecare nmult ire, deci la ecare pas
lucram doar cu numere mai mici decat 73
2
.
Exponent iere modulara
Input: b, k, n N cu b < n si k =
t
i =0
k
i
2
i
.
Output: a = b
k
mod n.
Algoritm:
a := 1;
if k = 0 then write(a);
c := b;
if k
0
= 1 then a := b;
for i = 1 to t do
c := c
2
mod n;
if k
i
:= 1 then a := c a mod n;
write(a).
Timp: O((log k)(log
2
n)).
Aritmetica modulara si criptograe
Curs 2
Primalitate si factorizare
Cuprins
1
Primalitate
Numere prime record
Teste elementare de primalitate
Teste moderne de primalitate
2
Factorizare
Metoda (Pollard)
Metoda fract iilor continue
Numere prime record
http://primes.utm.edu
Cel mai mare numar prim cunoscut:
2
43112609
1, anunt at n 23 august 2008.
Are 12978189 cifre.
Este (probabil) al 46-lea numar prim Mersenne.
Numar Mersenne: un numar de forma 2
n
1.
Pentru ca 2
n
1 sa e prim, n trebuie sa e prim.
Proiectul GIMPS (The Great Internet Mersenne Prime
Search) (http://www.mersenne.org/).
Electronic Frontier Foundation: premiu de $ 100,000 pentru
descoperirea primului numar prim cu cel put in 10 milioane de
cifre.
Top 10
Top 10 al numerelor prime record:
Numarul prim Nr. cifre Anul
2
43112609
1 12978189 2008
2
42643801
1 12837064 2009
2
37156667
1 11185272 2008
2
32582657
1 9808358 2006
2
30402457
1 9152052 2005
2
25964951
1 7816230 2005
2
24036583
1 7235733 2004
2
20996011
1 6320430 2003
2
13466917
1 4053946 2001
19249 2
13018586
+ 1 3918990 2007
Problema
Problema
Sa se decida daca un numar dat (foarte mare) este prim.
Denit ie
Prin test de primalitate nt elegem un criteriu pentru a decide
daca un numar este prim (sau compus).
Filosoa generala:
Daca n trece un test de primalitate, atunci el este posibil sa
e prim.
Daca n trece mai multe teste de primalitate, atunci este foarte
probabil sa e prim.
Daca n nu verica un singur test de primalitate, atunci el este
sigur compus.
O scurta istorie a testelor de primalitate
Teorema (Euclid)
Exista o innitate de numere prime.
Teste elementare de primalitate:
gasirea prin ncercare a unui divizor, ciurul lui Eratostene
Testul lui Fermat: foloseste Mica Teorema a lui Fermat si a
devenit baza multor teste eciente de primalitate.
Algoritmi aleatori de timp polinomial (anii 1970 si 1980):
testele Solovay-Strassen si Miller-Rabin.
Algoritm deterministic necondit ionat de timp polinomial:
Agrawal, Kayal, Saxena (2003), Lenstra
Teste elementare de primalitate
Gasirea prin ncercare a unui divizor
Luam un numar impar m = 1 si vericam daca m|n.
Daca n trece astfel de teste pentru tot mai multe valori ale lui
m, devine din ce n ce mai probabil ca n sa e prim.
Daca n trece aceste teste pentru orice m
n, atunci n este
sigur prim.
Daca n nu verica un singur astfel de test pentru un anumit
m, atunci n este sigur compus.
Punct slab: complexitatea O(n
1
2
).
Ciurul lui Eratostene
Acesta genereaza toate numerele prime mai mici decat n.
Este cea mai buna metoda pentru numere prime mici (de
exemplu pana la 1000000).
Punct slab: spat iul mare de memorare.
Testul lui Fermat
Fie n un numar impar mare.
Conform Micii Teoreme a lui Fermat, daca n este prim, atunci
b Z cu (b, n) = 1 avem
b
n1
= 1 (mod n) (1)
Daca n nu este prim, este totusi posibil (chiar daca nu foarte
probabil) ca (1) sa aiba loc.
Denit ie
Un numar compus impar se numeste pseudoprim relativ la baza b
daca b Z astfel ncat (b, n) = 1 si are loc (1).
Observat ii. (a) Un numar pseudoprim este un numar care
pretinde ca este prim vericand testul (1).
(b) Numerele pseudoprime sunt rare n comparat ie cu cele prime.
(c) b Z cu |b| 2, exista o innitate de numere pseudoprime
relativ la baza b.
Exemplu. n = 91 este pseudoprim relativ la baza b = 3, deoarece
3
90
= 1 (mod 91). Dar 91 nu este pseudoprim relativ la baza
b = 2, deoarece 2
90
= 64 (mod 91).
Daca nu am stiut ca 91 este numar compus, am putut deduce
acest lucru din faptul ca 2
90
= 1 (mod 91).
Teorema
Fie n un numar impar compus. Daca n nu verica (1) pentru o
baza b < n, atunci n nu verica (1) pentru cel put in jumatate
dintre bazele posibile b < n.
Daca n nu verica testul (1) pentru orice b cu (b, n) = 1,
exista sanse de cel put in 50% ca n sa nu verice (1) pentru o
baza b aleatoare.
Daca n este compus, atunci testul Fermat descopera acest
lucru cu o probabilitate de 100% iar daca n este prim, atunci
testul Fermat descopera acest lucru cu o mare probabilitate.
Sa presupunem ca am considerat k valori diferite pentru b si n
este pseudoprim relativ la toate aceste baze. Atunci
probabilitatea ca n sa e totusi compus chiar daca a trecut
cele k teste este de cel mult
1
2
k
, cu except ia cazului cand n
are proprietatea speciala ca (1) are loc pentru orice b Z.
O astfel de metoda se numeste probabilistica. O metoda
deterministica ne spune cu sigurant a de 100% daca n este
compus sau prim.
Punct slab: existent a unui numar innit de numere
Carmichael.
Denit ie
Un numar compus n se numeste numar Carmichael daca are loc
(1) pentru b Z.
Testul Miller-Rabin
Fie n un numar impar si b Z.
Daca n este pseudoprim relativ la baza b, atunci
b
n1
= 1 (mod n).
Ideea testului Miller-Rabin:
Se extrage succesiv radacina patrata din congruent a
anterioara, deci se ridica b la
n1
2
,
n1
4
, . . . ,
n1
2
s
, unde
t =
n1
2
s
este impar. Atunci primul rezultat diferit de 1 trebuie
sa e 1 daca n este prim, deoarece 1 sunt singurele
radacini patrate modulo un numar prim ale lui 1.
In practica, scriem n 1 = 2
s
t, unde t este impar. Apoi
calculam b
t
mod n. Daca este diferit de 1, atunci calculam
patratele succesive b
2t
mod n, b
2
2
t
mod n etc. pana cand
obt inem 1 si atunci algoritmul se opreste.
Denit ie
Fie n un numar compus impar si b Z. Scriem n 1 = 2
s
t,
unde t este impar. Daca n si b satisfac condit ia
b
t
= 1 (mod n) sau 0 j < s : b
2
j
t
= 1 (mod n) (3)
atunci n se numeste pseudoprim tare relativ la baza b.
Aceasta are loc pentru n prim si n b. Orice numar pseudoprim
tare relativ la baza b este pseudoprim relativ la baza b.
Teorema
Fie n un numar compus impar. Atunci n este pseudoprim tare
relativ la baza b pentru cel mult 25% dintre valorile 0 < b < n.
Exemplu. Consideram n = 65. Numarul bazelor posibile este
N = (n) = 4 12 = 48. Atunci n este:
(i) pseudoprim relativ la bazele
1, 8, 12, 14, 18, 21, 27, 31. (N/3)
(ii) pseudoprim tare relativ la bazele 1, 8, 18. (N/8)
Testul Miller-Rabin
Miller-Rabin(n,k)
Input: n N, n 3 impar si k N
.
Output: n este sau compus sau, cu o mare probabilitate (1
1
4
k
), prim.
Algoritm:
Scriem n 1 = 2
s
t, unde t este impar;
For i=1 to k do
Alegem aleator 1 < b < n 1;
r := b
t
mod n;
If (r = 1 and r = n 1) then
j := 1;
While j s 1 and r = n 1 do
r := r
2
mod n;
If r = 1 then output COMPUS;
j := j + 1;
If r = n 1 then output COMPUS;
Output PRIM.
Exemplu. Vericam daca n = 409 este prim.
Avem 408 = 2
3
51, deci s = 3 si t = 51.
Vericam
b
t
= 1 (mod n) sau 0 j < s : b
2
j
t
= 1 (mod n)
pentru cateva baze b. Avem:
2
51
= 143 (mod 409), 2
51
= 143 (mod 409) (pentru j = 0),
2
251
= 143
2
= 1 (mod 409) (pentru j = 1).
3
51
= 266 (mod 409), 3
251
= 266
2
= 1
4
51
= 1 (mod 409)
5
51
= 1 (mod 409)
6
51
= 1 (mod 409)
Deci 409 este probabil prim.
Probabilitatea de eroare este mai mica decat 1/4
5
= 0.00097%.
Problema
Teorema fundamentala a aritmeticii
Orice numar natural are o descompunere n factori primi, unica
abstract ie facand de ordinea factorilor.
Problema
Sa se gaseasca un factor prim al unui numar dat (foarte mare).
n log
2
n)
operat ii pe bit i cu probabilitate mare.
Exemplu. Sa factorizam n = 4087 folosind f (x) = x
2
+ x + 1 si
x
0
= 2. Avem modulo n:
x
1
= f (x
0
) = 7; x
2
= f (x
1
) = 57;
(x
2
x
1
, n) = (50, 4087) = 1;
x
3
= f (x
2
) = 3307; x
4
= f (x
3
) = 2745;
(x
4
x
2
, n) = (2688, 4087) = 1;
x
5
= f (x
4
) = 1343; x
6
= f (x
5
) = 2626;
(x
6
x
3
, n) = (681, 4087) = 1;
x
7
= f (x
6
) = 3734; x
8
= f (x
7
) = 1647;
(x
8
x
4
, n) = (1098, 4087) = 61.
Deci un factor al lui n = 4087 este 61 si astfel 4087 = 61 67.
Metoda fract iilor continue
Ideea: Daca obt inem o congruent a
t
2
= s
2
(mod n) cu t = s (mod n) ,
atunci n|t
2
s
2
= (t + s)(t s), si deci a = (t + s, n) sau
a = (t s, n) este un factor netrivial al lui n.
Denit ie
Cel mai mic rest absolut al unui numar a modulo n este un
ntreg a
[
n
2
,
n
2
] cu care a a
(mod n).
O baza de factori este o mult ime B = {p
1
, p
2
, . . . , p
h
} de
numere prime, unde p
1
poate si 1.
Pentru b Z, b
2
este un B-numar daca cel mai mic rest
absolut b
2
mod n poate scris ca produs de numere din B.
Consideram spat iul vectorial Z
h
2
peste Z
2
. Fiecarui B-numar
b
2
mod n = p
1
1
. . . p
h
h
i asociem vectorul
v = (
1
mod 2, . . . ,
h
mod 2) Z
h
2
.
Presupunem ca avem k B-numere b
2
i
mod n cu
v
1
+ v
2
+ + v
k
= 0 Z
h
2
.
Notam cu a
i
cel mai mic rest absolut al lui b
2
i
mod n. Daca scriem
a
i
= p
i 1
1
. . . p
ih
h
(i = 1, . . . , k), atunci
a
1
. . . a
k
= p
11
++
k1
1
. . . p
1h
++
kh
h
,
unde puterea ecarui p
j
este para.
Fie b si c cel mai mic rest absolut al lui b
1
. . . b
k
mod n si respectiv
p
1
2
(
11
++
k1
)
1
. . . p
1
2
(
1h
++
kh
)
h
mod n.
Atunci avem b
2
= c
2
mod n.
Fract ii continue
Problema
Gasirea ecienta a unor numere b cu proprietatea ca cel mai mic
rest absolut b
2
mod n este un produs de numere prime mici.
Am vazut ca aceasta se ntampla n general cand valoarea absoluta
a lui b
2
mod n este mica. Prezentam o metoda folosind fract ii
continue pentru a gasi valori b astfel ncat |b
2
mod n| < 2
n.
Denit ie
Fie x R. Denim
a
0
= [x], x
0
= x a
0
,
a
i
=
1
x
i 1
, x
i
=
1
x
i 1
a
i
,
pentru orice i 1.
Observat ii. (i) Procesul se termina cand si daca x
i
= 0.
(ii) Procesul se termina x Q (n acest caz valorile x
i
sunt
numere rat ionale cu numitori descrescatori).
Putem scrie pentru ecare i
x = a
0
+
1
a
1
+
1
a
2
+ . . .
1
a
i
+ x
i
care se noteaza mai simplu prin
x = a
0
+
1
a
1
+
1
a
2
+
. . .
1
a
i
+ x
i
.
Presupunem ca x R este irat ional. Atunci numarul rat ional
b
i
c
i
= a
0
+
1
a
1
+
1
a
2
+
. . .
1
a
i
se numeste a i -a valoare convergenta a fract iei continue x.
Teorema
(i)
b
0
c
0
=
a
0
1
,
b
1
c
1
=
a
0
a
1
+1
a
1
,
b
i
c
i
=
a
i
b
i 1
+b
i 2
a
i
c
i 1
+c
i 2
, i 2.
(ii) Fie x R. Atunci sirul valorilor convergente ale lui x este
convergent si are limita x.
Teorema
Fie n un numar care nu e patrat perfect. Fie
b
i
c
i
a i -a valoare
convergenta din scrierea lui
n ca si fract ie continua. Atunci cel
mai mic rest absolut al lui b
2
i
mod n este mai mic decat 2
n.
Algoritmul fract iilor continue
Toate calculele se fac modulo n, suma si produsul ind reduse
modulo n la cel mai mic rest pozitiv (sau absolut la Pasul 5.).
Algoritmul fract iilor continue
Input: un numar compus n.
Output: un factor netrivial al lui n.
Algoritm:
1. Fie b
1
= 1, b
0
= a
0
= [
n] si x
0
=
n a
0
.
2. Calculam b
2
0
mod n (adica b
2
0
n).
3. Fie a
i
= [
1
x
i 1
]. Atunci x
i
=
1
x
i 1
a
i
.
4. Fie b
i
= a
i
b
i 1
+ b
i 2
(redus modulo n).
5. Calculam b
2
i
mod n pentru cateva valori i .
6. Alegem dintre ele acele numere care se factorizeaza n
valoare absoluta n numere prime mici.
Algoritmul fract iilor continue (cont.)
7. Alegem baza de factori B ca ind fomrata din 1 si numerele
prime care apar n mai mult decat un element b
2
i
mod n (sau care
apar cu o putere para ntr-un singur element).
8. Scriem toate numerele b
2
i
mod n care sunt B-numere si vectorii
lor asociat i v
i
Z
h
2
.
9. Gasim o submult ime de vectori v
i
cu suma zero.
10. Fie b =
b
i
, unde calculul se face modulo n si produsul se ia
pentru acei b
i
pentru care
v
i
= 0. Fie c =
j
j
, unde valorile
p
j
sunt elementele lui B diferite de 1 si
j
=
1
2
ij
, unde suma
se ia dupa aceiasi indici i .
11. Daca b = c (mod n), atunci (b + c, n) este un factor
netrivial al lui n. Daca b = c (mod n), atunci cautam alta
submult ime de indici i cu proprietat ile de mai sus. Daca aceasta
nu este posibil, calculam mai multe valori a
i
, b
i
si b
2
i
mod n,
marind baza de factori B.
Exemplu. Sa factorizam n = 9073. Facem un tabel cu valori a
i
,
b
i
, b
2
i
mod n:
i 0 1 2 3 4
a
i
95 3 1 26 2
b
i
95 286 381 1119 2619
b
2
i
mod n -48 139 -7 87 -27
Analizam factorizarile numerelor din ultimul rand:
48 = (1) 2
4
3, 139 = 139, 7 = (1) 7, 87 = 3 29,
27 = (1) 3
3
. Alegem B = {1, 2, 3, 7}. Atunci b
2
i
mod n
este un B-numar pentru i = 0, 2, 4. Vectorii
i
asociat i sunt:
0
= (1, 4, 1, 0),
2
= (1, 0, 0, 1),
4
= (1, 0, 3, 0).
Atunci
0
+
4
= 0 (mod 2). Deci
b = b
0
b
4
= 95 2619 = 3834 (mod n), c = 2
4+0
2
3
1+3
2
= 36.
Deoarece b = c (mod n), un factor al lui n este
(3834 + 36, 9073) = 43. Astfel n = 43 211.
Exemplu. Sa factorizam n = 17873. Facem un tabel cu valori a
i
,
b
i
, b
2
i
mod n:
i 0 1 2 3 4 5
a
i
133 1 2 4 2 3
b
i
133 134 401 1738 3877 13369
b
2
i
mod n -184 83 -56 107 -64 161
Analizam factorizarile numerelor din ultimul rand:
184 = (1) 2
3
23, 56 = (1) 2
3
7, 64 = (1) 2
6
,
161 = 7 23. Alegem B = {1, 2, 7, 23}. Atunci b
2
i
mod n este
un B-numar pentru i = 0, 2, 4, 5. Vectorii
i
asociat i sunt:
0
= (1, 3, 0, 1),
2
= (1, 3, 1, 0),
4
= (1, 6, 0, 0),
5
= (0, 0, 1, 1).
Atunci
0
+
2
+
5
= 0 (mod 2). Urmeaza ca
b = b
0
b
2
b
5
= 133 401 13369 = 1288 (mod n)
c = 2
3+3+0
2
7
0+1+1
2
23
1+0+1
2
= 1288.
Deoarece b = c (mod n), trebuie sa generam mai multe valori.
i 6 7 8
a
i
1 2 1
b
i
17246 12115 11488
b
2
i
mod n -77 149 -88
Alegem B = {1, 2, 7, 11, 23}. Atunci b
2
i
mod n este un
B-numar pentru i = 0, 2, 4, 5, 6, 8. Vectorii
i
asociat i sunt:
0
= (1, 3, 0, 0, 1),
2
= (1, 3, 1, 0, 0),
4
= (1, 6, 0, 0, 0),
5
= (0, 0, 1, 0, 1),
6
= (1, 0, 1, 1, 0),
8
= (1, 3, 0, 1, 0)
Atunci
2
+
4
+
6
+
8
= 0 (mod 2), de unde
b = b
2
b
4
b
6
b
8
= 7272 (mod n), c = 2
6
7 11 = 4928.
Deoarece b = c (mod n), un factor netrivial al lui n este
(7272 + 4928, 17873) = 61. Astfel n = 61 293.
Aritmetica modulara si criptograe
Curs 3
Radacini patrate
Cuprins
1
Resturi patratice
Simbolul lui Legendre
Simbolul lui Jacobi
2
Radacina patrata modulara
Radacina patrata modulo p
Radacina patrata modulo p
k
Radacina patrata modulo n
3
Radacina patrata
Resturi patratice
Fie p > 2 un numar prim. Scriem x n loc de x.
Teorema
(Z
p
, +, ) este un corp comutativ si (Z
p
, ) este un grup ciclic, adica
x Z
p
(numit generator) astfel ca Z
p
= {1, x, x
2
, . . . , x
p2
}.
Denit ie
Un element a Z
p
se numeste rest patratic modulo p daca
b Z
p
astfel ca b
2
= a.
Teorema
Daca b
2
= a n Z
p
, atunci a are 2 radacini patrate, si anume b.
Deci Z
p
are exact
p1
2
resturi patratice.
Exemplu. Obt inem resturile patratice din Z
11
calculand 1
2
= 1,
2
2
= 4, 3
2
= 9, 4
2
= 5 si 5
2
= 3. Se observa ca 6 = 5, 7 = 4,
8 = 3, 9 = 2 si 10 = 1 modulo 11.
Simbolul lui Legendre
Daca x este un generator al grupului ciclic Z
p
, atunci
Z
p
= {1, x, . . . , x
p1
}. Deci patratul ecarui element este de
forma x
i
cu i par.
Reciproc, orice element de forma x
i
cu i par este patratul unui
element, si anume x
i
2
.
Denit ie
Fie a Z si e p > 2 un numar prim. Denim simbolul lui
Legendre, notat (
a
p
), astfel:
a
p
0 daca p|a
1 daca a este rest patratic mod p
1 daca a nu este rest patratic mod p
Teorema
Fie a, b Z si p, q numere prime impare.
(i)
a
p
= a
(p1)/2
(mod p).
(ii) (
ab
p
) = (
a
p
)(
b
p
), deci (
b
2
p
) = 1.
(iii) (
1
p
) = 1 si (
1
p
) = (1)
(p1)/2
.
(iv)
2
p
= (1)
(p
2
1)/8
=
1 daca p = 1 (mod 8)
1 daca p = 3 (mod 8)
(v) (Legea reciprocitat ii patratice)
q
p
= (1)
(p1)(q1)/4
p
q
p
q
daca p = q = 3 (mod 4)
p
q
altfel
Pentru a verica daca un ntreg a este rest patratic modulo p,
evaluam simbolul lui Legendre pentru factori.
Scriem a = 2
k
q, unde q este impar si aplicam (ii ), (iv) si (v).
Putem presupune ca a < p, deci q < p.
Proprietatea (v) ofera legatura dintre (
q
p
) si (
p
q
), ultima
putand redusa.
Exemplu. Sa vericam daca n = 7411 este rest patratic modulo
p = 9283.
Deoarece n este prim si 7411 = 9283 = 3 (mod 4), avem
n
p
p
n
1872
7411
13
7411
7411
13
1
13
a
n
a
p
1
k
1
. . .
a
p
r
k
r
.
Exemplu. Daca (
a
n
) = 1 pentru un numar compus n, n general nu
rezulta ca a este rest patratic modulo n.
De exemplu, (
2
15
) = (
2
3
)(
2
5
) = (1)(1) = 1, dar nu exista x Z
astfel ca x
2
= 2 (mod 15).
Teorema
Fie a, b Z si e m, n 3 impare.
(i) (
a
mn
) = (
a
m
)(
a
n
).
(ii) (
ab
n
) = (
a
n
)(
b
n
), deci (
b
2
n
) = 1.
(iii) (
1
n
) = 1 si (
1
n
) = (1)
(n1)/2
.
(iv)
2
n
= (1)
(n
2
1)/8
=
1 daca n = 1 (mod 8)
1 daca n = 3 (mod 8)
(v) (Legea reciprocitat ii patratice)
m
n
= (1)
(m1)(n1)/4
n
m
n
m
daca n = m = 3 (mod 4)
n
m
altfel
Exemplu. Sa vericam daca n = 7411 este rest patratic modulo
p = 9283.
Deoarece n este prim si 7411 = 9283 = 3 (mod 4), avem
n
p
p
n
1872
7411
n
p
1872
7411
2
4
7411
117
7411
7411
117
40
117
2
3
117
5
117
2
117
5
117
5
117
117
5
2
5
= 1 .
Teorema
Complexitatea algoritmului de calcul al simbolului lui Jacobi este
O(log
2
n).
Radacina patrata modulara
Problema
Fiind date a Z si un numar natural impar n 3, sa se determine
x astfel ncat
x
2
= a (mod n).
Rezolvare n 3 pasi
I. Radacina patrata modulo p (p prim).
II. Radacina patrata modulo p
k
(p prim, k N
).
III. Radacina patrata modulo n (n N, n 3 impar).
I. Radacina patrata modulo p
Observat ii.
(i) Folosind Legea reciprocitat ii patratice, putem determina rapid
daca a Z este un rest patratic modulo p. Daca da, atunci stim ca
x
2
= a (mod p) (1)
are o solut ie, nsa nu stim care este acea solut ie.
(ii) (1) are exact 2 solut ii n corpul comutativ Z
p
, adica modulo p.
Daca x este o solut ie, atunci si x este solut ie.
(iii) Deoarece suntem interesat i de numere prime mari, vom
discuta doar cazul cand p este impar.
Cazuri
p = 1 (mod 8)
p = 3 (mod 4) (adica, p = 3 (mod 8) sau p = 7 (mod 8))
p = 5 (mod 8)
Cazul p = 1 (mod 8).
1. Scriem p 1 = 2
s
t cu t impar.
2. Gasim aleator un numar d care nu este rest patratic
modulo p astfel ncat 2 d p 1.
3. Calculam A := a
t
mod p.
4. Calculam D := d
t
mod p.
5. Determinam D
1
mod p.
6. Calculam puteri pare 2k ale lui D
1
, pentru 0 k < 2
s1
,
pana cand obt inem D
2k
= A (mod p).
7. O solut ie este x = a
t+1
2
D
k
(mod p).
Cazul p = 3 (mod 4).
O solut ie este x = a
p+1
4
(mod p).
Cazul p = 5 (mod 8).
O solut ie este
x = a
p+3
8
(mod p) daca a
p1
4
= 1 (mod p)
x = 2a (4a)
p5
8
(mod p) altfel
Exemplu. Sa se determine o radacina patrata modulo p = 2081 a
lui a = 302.
Pasul 0. Vericam daca a este rest patratic modulo p.
Avem
302
2081
2
2081
151
2081
151
2081
2081
151
118
151
2
151
59
151
59
151
151
59
33
59
3
59
11
59
= (1)(1)
59
3
(1)
59
11
2
3
4
11
= (1) (1) 1 = 1
Sa observam ca p = 1 (mod 8).
Pasul 1. Scriem p 1 = 2
s
t cu t impar.
Avem 2080 = 2
5
65, deci s = 5 si t = 65.
Pasul 2. Cautam un numar d care nu este rest patratic modulo p.
2
2081
= 1,
3
2081
2081
3
2
3
= 1,
deci d = 3 nu este rest patratic modulo p.
Pasul 3. Calculam A = a
t
mod p.
A = 302
65
mod 2081 = = 102
(prin ridicare succesiva la patrat si reducere modulara).
Pasul 4. Calculam D = d
t
mod p.
D = 3
65
mod 2081 = = 888 (mod 2081)
(prin ridicare succesiva la patrat si reducere modulara).
Pasul 5. Determinam D
1
mod p.
888
1
mod 2081 = = 1310 (mod 2081)
(cu algoritmul extins al lui Euclid).
Pasul 6. Calculam puteri pare 2k ale lui D
1
, pentru
0 k < 2
s1
= 2
4
= 16, pana cand D
2k
= A (mod p).
Avem
D
2
= 1310 1310 = 1356 (mod 2081)
D
4
= 1356 1356 = 1213 (mod 2081)
D
6
= 1356 1213 = 838 (mod 2081)
D
8
= 1213 1213 = 102 (mod 2081)
Astfel D
8
= A, deci k = 4.
Pasul 7. O solut ie este:
x = a
t+1
2
D
k
= 302
33
888
4
= = 1292.
(prin ridicare succesiva la patrat si reducere modulara)
Prin urmare, o radacina patrata modulo p = 2081 a lui a = 302
este x = 1292.
Cealalta solut ie ntre 0 si p 1 = 2080 este x = 789.
Se verica usor ca x
2
= a (mod p).
Nu exista algoritmi deterministici de timp polinomial pentru a
gasi un numar d care nu este rest patratic modulo p.
O valoare aleatoare pentru d are 50% sanse sa nu e rest
patratic si aceasta se poate verica n timp polinomial.
Algoritmul precedent (Tonelli si Shanks) este probabilistic,
desi singura sa parte nedeterministica este gasirea unui numar
care nu este rest patratic modulo p.
Acesta se poate face complet deterministic prin cautare
succesiva cu d = 2, 3, . . . n Pasul 2 pana cand este gasit un
numar care nu este rest patratic.
Insa se poate arata ca cel
mai mic numar care nu este rest patratic este de ordin O(p
)
unde = 0, deci se obt ine un algoritm de timp exponent ial.
Teorema
Avand un numar care nu este rest patratic modulo un numar prim
p, complexitatea algoritmului de obt inere a radacinii patrate
modulo p este O(log
4
p).
II. Radacina patrata modulo p
k
Pentru un numar prim p, am vazut cum obt inem o solut ie a
congruent ei
x
2
= a (mod p) (1)
Acum consideram
x
2
= a (mod p
k
) (2)
unde p este un numar prim impar si k N
.
Teorema
Daca avem o solut ie pentru (1), atunci putem obt ine o solut ie
v = x
0
+ x
1
p + + x
k1
p
k1
pentru (2).
Demonstrat ie. Induct ie dupa k.
III. Radacina patrata modulo n
Acum rezolvam problema generala
x
2
= a (mod n) (3)
pentru orice numar natural impar n 3.
Daca n = p
k
1
1
p
k
2
2
. . . p
k
r
r
este factorizarea lui n, atunci (3) se poate
rezolva astfel:
Rezolvam x
2
= a (mod p
i
) pentru ecare numar prim p
i
din
factorizarea lui n.
Obt inem o solut ie pentru ecare congruent a x
2
= a
(mod p
k
i
i
).
Folosim Teorema Chineza a Restului pentru a obt ine o solut ie
modulo n.
Observat ie. Problema (3) are solut ie daca si numai daca a este
rest patratic modulo ecare numar prim din factorizarea lui n.
Teorema
Problema radacinii patrate modulare este practic computat ional
echivalenta cu problema factorizarii ntregilor.
Demonstrat ie. Fiind data factorizarea, putem calcula radacini
patrate modulare cu metoda prezentata.
Reciproc, sa presupunem ca avem un algoritm de calculare a
radacinii patrate modulare.
Alegem un numar aleator x si aplicam algoritmul pentru cel
mai mic rest pozitiv al lui x
2
mod n. Deci avem x
2
x
2
(mod n) pentru un numar natural x
.
Avem 50% sanse ca x
+ x, n).
Repetand acest proces de k ori, avem o probabilitate de
1
1
2
k
sa factorizam n.
Radacina patrata
Algoritm 1
Input: un numar natural n.
Output: partea ntreaga a radacinii patrate a lui n.
Algoritm:
1. Fie x := n.
2. Fie y :=
x+[
n
x
]
2
(de fapt, y :=
x+
n
x
2
).
3. Daca y < x, atunci x := y si se merge la Pasul 2. Altfel,
output x.
Teorema
Algoritmul de mai sus este corect si are complexitate O(log
2
n).
n] cu Algoritmul 1.
Daca n = q
2
, atunci n nu este patrat perfect. Altfel, n este
patrat perfect si output q.
Algoritmul este corect, deoarece daca n este patrat perfect, atunci
trebuie sa e patrat perfect modulo k pentru orice k.
Observat ie. Sa explicam alegerea modulelor 64, 63, 65, 11.
Numarul patratelor perfecte modulo 64, 63, 65, 11 sunt 12, 16, 21,
respectiv 6. Astfel, daca n nu este patrat perfect, probabilitatea ca
acest lucru sa nu fost detectat n cele 4 cautari precalculate este
egal cu:
12
64
16
63
21
65
6
11
=
6
715
.
Deci calcularea part ii ntregi a radacinii patrate din Pasul 5 se face
rar cand n nu este patrat perfect. De aceea se aleg modulele astfel.
Ordinea n care sunt efectuate testele este data de inegalitat ile:
12
64
<
16
63
<
21
65
<
6
11
.
Daca exista destula memorie, se pot stoca si patratele perfecte
modulo 45045 = 63 65 11 si atunci doar un singur test este
necesar n loc de 3, n plus fat a de testul modulo 64.
Aritmetica modulara si criptograe
Curs 4
Corpuri nite si logaritmi discret i
Cuprins
1
Polinoame
Denit ii si rezultate de baza
Similaritat i ntre inelele Z si K[X]
Ireductibilitate si factorizare
2
Corpuri nite
Grupuri ciclice
Corpuri Galois
Construct ia unui corp nit
Polinoame
In acest caz, f
1
mod g = u.
Denit ie
f K[X] cu grad(f ) 1 se numeste ireductibil daca nu poate
scris ca f = g h, unde g, h K[X] cu grad(g) 1 si
grad(h) 1.
Exemplu.
f C[X] este ireductibil grad(f ) = 1;
f R[X] este ireductibil grad(f ) = 1 sau grad(f ) = 2 cu
discriminant negativ.
Teorema (Factorizare unica)
f K[X] are o factorizare unica (abstract ie facand de ordinea
factorilor) de forma f = a f
1
f
2
. . . f
r
, unde a K si
f
1
, . . . , f
r
K[X] sunt ireductibile monice.
Denit ie
Fie f K[X]. Denim pe K[X] o relat ie:
g h (mod f ) f |g h .
Teorema
(i) Daca f = 0, atunci g h (mod f ) g, h dau acelasi rest la
mpart irea cu f .
(ii) este o relat ie de echivalent a pe K[X] si K[X]/ este
o partit ie a lui K[X].
Notam aceasta partit ie cu K[X]/(f ) si elementele sale cu g,
h sau
cu g mod f , h mod f etc.
Denim g,
h K[X]/(f ),
_
g +
h =
g + h
g
h =
g h.
Teorema
(i) (K[X]/(f ), +, ) este un inel comutativ cu unitate.
(ii) Daca grad(f ) = n, atunci
K[X]/(f ) = {a
0
+ a
1
x + + a
n1
x
n1
| a
0
, . . . , a
n1
K} ,
unde x =
X. Deci este un spat iu vectorial de dimensiune n peste
K, cu baza (1, x, . . . , x
n1
).
(iii) f K[X] este ireductibil (K[X]/(f ), +, ) este un corp
comutativ.
Teorema chineza a restului
Consideram sistemul
_
_
h g
1
(mod f
1
)
. . . . . . . .
h g
r
(mod f
r
)
unde f
1
, . . . , f
r
K[X] sunt polinoame ireductibile monice distincte
si g
1
, . . . , g
r
K[X]. Atunci sistemul are o solut ie unica modulo
f = f
1
f
2
. . . f
r
, si anume
h =
r
i =1
g
i
F
i
K
i
,
unde F
i
=
f
f
i
si K
i
= F
1
i
mod f
i
, i = 1, . . . , r .
Similaritat i ntre inelele Z si K[X]
Ambele sunt domenii de integritate.
Orice ntreg poate reprezentat sub forma
a
0
+ a
1
10 + + a
n
10
n
, iar orice polinom poate
reprezentat sub forma a
0
+ a
1
X + + a
n
X
n
.
Teorema mpart irii cu rest, algoritmul (extins) lui Euclid,
Teorema chineza a restului si Teorema de factorizare unica au
loc pentru ambele.
Folosind congruent e, putem construi
Z
n
= Z/(n) = {x mod n | x Z} (n Z)
K[X]/(f ) = {g mod f | g K[X]} (f K[X]).
Z
n
= Z/(n) este corp comutativ n este prim;
K[X]/(f ) este corp comutativ f este ireductibil.
Ireductibilitate si factorizare
Teorema
Fie p un numar prim si m N
. Daca f Z
p
[X] are grad m,
atunci
f este ireductibil (f , X
p
i
X) = 1, i
_
1, . . . ,
_
m
2
__
.
Propozit ie
Complexitatea algoritmului de testare a ireductibilitat ii unui
polinom f Z
p
[X] de grad m este O(m
2
log p) Z
p
-operat ii.
Algoritm de factorizare: algoritmul lui Berlekamp (...).
Propozit ie
Complexitatea algoritmului lui Berlekamp de factorizare a unui
polinom f Z
p
[X] de grad m este O(m
3
+ rpm
2
) Z
p
-operat ii,
unde r este numarul factorilor ireductibili monici distinct i ai lui f .
Grupuri ciclice
Denit ie
Un grup (G, ) se numeste ciclic daca exista x G astfel ca
G =< x >= {x
k
| k Z}. Aici x se numeste generator al lui G.
Exemple.
(a) (Z, +) este ciclic, deoarece Z =< 1 >.
(b) (Z
n
, +) este ciclic, deoarece Z
n
=<
1 >.
(c) Grupul (U
n
, ) al radacinilor de ordinul n ale unitat ii este ciclic.
U
n
= {z C | z
n
= 1} are n elemente, si anume:
k
= cos
2k
n
+ i sin
2k
n
=
_
cos
2
n
+ i sin
2
n
_
k
=
k
1
,
pentru k = 0, 1, . . . , n 1. Atunci U
n
=<
1
>.
Un generator al lui U
n
se numeste radacina primitiva de ordinul n a
unitat ii.
Denit ie
Fie (G, ) un grup si x G. Spunem ca x are ordin nit daca
m N
: x
m
= 1.
In acest caz,
ord x = min{k N
| x
k
= 1}
se numeste ordinul lui x.
Teorema
Fie (G, ) un grup ciclic cu n elemente, generat de un element x.
Atunci ord x = n si
G =< x >= {1, x, x
2
, . . . , x
n1
}.
Teorema (Lagrange)
Fie (G, ) un grup nit. Atunci x G, ord x divide |G|.
Teorema
Fie (G, ) un grup ciclic, G =< x >, |G| = n si k N
. Atunci:
G =< x
k
> (n, k) = 1 .
Exemple.
(a) Consideram grupul (U
8
, ) al radacinilor de ordinul 8 ale
unitat ii. Atunci U
8
= {
0
,
1
, . . . ,
7
}, unde
k
= (
1
)
k
=
_
cos
2
7
+ i sin
2
7
_
k
, k = 0, 1, . . . , 7.
Generatorii sai sunt
1
,
3
=
3
1
,
5
=
5
1
si
7
=
7
1
. Acestea sunt
radacinile primitive de ordinul 8 ale unitat ii.
(b) Consideram grupul (Z
12
, +). Generatorii sai sunt
1,
5,
7,
11.
Corpuri Galois
Teorema (Wedderburn)
Orice corp nit K este comutativ.
Denit ie
Ordinul lui 1 n grupul (K, +) se numeste caracteristica lui K si
se noteaza cu car (K).
Exemplu. car (Z
p
) = p (p prim).
Teorema
car (K) este numar prim.
Teorema
(i) |K| = p
n
, unde p este prim si n N
.
(ii) Pentru orice numar prim p si orice n N
, exista un corp cu p
n
elemente, unic pana la un izomorsm.
Unicul corp cu p
n
elemente se noteaza cu F
p
n
si se numeste corpul
Galois cu p
n
elemente.
Exemplu. Corpurile cu cel mult 20 de elemente sunt: F
2
, F
3
, F
4
,
F
5
, F
7
, F
8
, F
9
, F
11
, F
13
, F
16
, F
17
, F
19
.
Teorema
Fie corpul F
q
, unde q = p
n
cu p prim. Atunci car (F
q
) = p si
a, b F
q
, (a + b)
p
= a
p
+ b
p
.
Teorema
Fie corpul F
q
. Atunci:
(i) (F
q
, ) este un grup ciclic si a F
q
, a
q
= a.
(ii) Daca g este un generator al lui F
q
, atunci
g
k
este generator al lui F
q
(k, q 1) = 1.
Construct ia unui corp nit
Daca f Z
p
[X] (p prim) este ireductibil si grad(f ) = n,
atunci
Z
p
[X]/(f ) = {a
0
+ a
1
x + + a
n1
x
n1
| a
0
, . . . , a
n1
Z
p
}
este un corp cu p
n
elemente (unde x =
X).
Adunarea si nmult irea se fac modulo f , iar inversul unui
element se calculeaza cu algoritmul extins al lui Euclid sau
folosind egalitatea a
q
= a, a F
q
.
Teorema
n N
, p prim, f Z
p
[X] ireductibil de grad n.
Deci orice corp nit F
p
n
este izomorf cu Z
p
[X]/(f ), unde
f Z
p
[X] este ireductibil de grad n.
Exemplu. Construim F
8
= F
2
3 .
Aici p = 2 si n = 3, deci avem nevoie de f Z
2
[X] ireductibil
de grad 3.
De exemplu, X
3
+ 1 este reductibil, deoarece are radacina 1.
Incercam
f = X
3
+ X + 1 Z
2
[X] .
Daca f ar reductibil, atunci f ar un produs de un polinom
de grad 2 si unul de gradul 1, deci ar avea o radacina n Z
2
.
Dar f (0) = 1 si f (1) = 1. Deci f este ireductibil.
Avem:
F
8
= Z
2
[X]/(f ) = {a
2
x
2
+ a
1
x + a
0
| a
0
, a
1
, a
2
Z
2
}(1)
= {0, 1, x, x + 1, x
2
, x
2
+ 1, x
2
+ x, x
2
+ x + 1}. (2)
Aceasta se numeste reprezentarea polinomiala a unui corp
nit si este foarte utila pentru operat iile de adunare si scadere.
Aritmetica modulara si criptograe
Curs 5
O scurta istorie a criptograei
Cuprins
1
Terminologie
2
O scurta istorie a criptograei
3
Un discurs al lui John Gordon
Terminologie
text clar (plaintext): mesajul original
cifrare (criptare): procesul de ascundere a int elesului mesajului
text cifrat (ciphertext): mesajul cifrat
descifrare (decriptare): procesul de obt inere a textului clar din
textul cifrat
cifru (algoritm criptograc): funct iile de cifrare si descifrare
cheie: informat ia necesara cifrarii si descifrarii
criptograe: arta si stiint a de a pastra securitatea mesajelor
criptanaliza: arta si stiint a de a descoperi (sparge) textul cifrat
criptologie: ramura care cuprinde criptograa si criptanaliza
steganograe: ascunderea mesajului n alte mesaje astfel ncat
chiar existent a secretului este ascunsa
O scurta istorie a criptograei
cca 1900 .e.n.
Un scrib egiptean foloseste hieroglife nestandard ntr-o
inscript ie.
1500 .e.n.
O tabla din Mesopotamia cont ine o formula cifrata pentru
emailul oalelor.
500-600 .e.n.
Scribi ebraici care scriu cartea lui Ieremia folosesc un cifru de
substitut ie simpla, si anume un alfabet inversat cunoscut sub
numele de ATBASH.
487 .e.n.
Grecii folosesc un dipozitiv numit skytale.
50-60 .e.n.
Iulius Cezar (100-44 .e.n.) foloseste un cifru de substitut ie
simpla cu alfabetul obisnuit (prin decalarea literelor cu un
anumit numar de pozit ii) n comunicat iile guvernamentale.
0-400?
Cartea Kama Sutra scrisa de Vatsayana ment ioneaza
criptograa ca si cea de-a 44-a si a 45-a dintre cele 64 de arte
(yoga) pe care barbat ii si femeile ar trebui sa o cunoasca si sa
o foloseasca.
anii 200
Asa-numitul papirus de la Leiden (un poem egiptean) foloseste
cifrarea pentru a ascunde part ile importante din ret ete magice.
725-790?
Abu Abd al-Rahman al-Khalil ibn Ahmad ibn Amr ibn
Tammam al Farahidi al-Zadi al Yahmadi scrie o carte despre
criptograe (disparuta).
855
Abu Bakr Ahmad ben Ali ben Wahshiyya an-Nabati publica
mai multe alfabete cifrate folosite n mod tradit ional pentru
magie.
1000
Probabil analiza textuala a Coran-ului inspira analiza
frecvent ei literelor, care conduce la tehnici pentru spargerea
cifrurilor de substitut ie monoalfabetica.
(x) = (x),
d
(y) =
1
(y)
Exemplu. n = 27, funct ia de cifrare e
:
a b c d e f g h i j k l m n o p q r s t u v w x y z
P Y N W L Z T X R V U O S M Q F J D H B K I C G A E
Text cifrat: BZWFQLPZGYMJSZ
Funct ia de descifrare d
:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
u y s w q z o x r v p t d m b k n h l f j i c g a e
Text clar: second example
Cifru an
P = C = Z
n
K = {(a, b) Z
n
Z
n
| cmmdc(a, n) = 1}
K = (a, b) K, x, y Z
n
,
e
K
(x) = ax + b (mod n),
d
K
(y) = a
1
(y b) (mod n)
Se observa ca e
K
este injectiva cmmdc(a, n) = 1.
Exemplu. n = 27, K = (7, 5). Deci e
K
(x) = 7x + 5.
Deoarece 7
1
(mod 27) = 4, avem d
K
(y) = 4(y 5) = 4y + 7.
Text clar: hey
Numeric: 8 5 25
Cifrare: 7 13 18
(7 8 + 5 (mod 27), 7 5 + 5 (mod 27), 7 25 + 5 (mod 27))
Text cifrat: GMR
Cifru Porta
cifru pe digrafe, care foloseste o tabla 26 26 cu 676
caractere (numere aleatoare) distincte
se nlocuieste ecare digraf cu caracterul corespunzator din
tabla
P = (Z
n
)
2
, C = Z
n
2 , K = (k
ij
) M
2
(Z
n
) este o matrice
avand ca si elemente valorile din Z
n
2
K = (k
ij
) K, (x
i
, x
j
), y Z
n
2 ,
e
K
(x
i
, x
j
) = k
ij
,
d
K
(y) = (x
i
, x
j
), unde i si j sunt linia, respectiv coloana din
matricea Kn care se gaseste y
Cifru Belaso (Vigen`ere)
P = C = K = (Z
n
)
m
K = (k
1
, . . . , k
m
) K, (x
1
, . . . , x
m
), (y
1
, . . . , y
m
) (Z
n
)
m
,
e
K
(x
1
, . . . , x
m
) = (x
1
+ k
1
, . . . , x
m
+ k
m
),
d
K
(y
1
, . . . , y
m
) = (y
1
k
1
, . . . , y
m
k
m
)
(totul mod n)
Exemplu. n = 27, m = 6, cuvant cheie CIPHER, deci
K = (3, 9, 16, 8, 5, 18).
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Text clar: computational
(comput / ationa / l)
Numeric: 3 15 13 16 21 20 /1 20 9 15 14 1 /12
Cifrare: 6 24 2 24 26 11 /4 2 25 23 19 19 /15
Text cifrat: FXBXZKDBYWSSO
Cifru Vernam (one-time pad)
se foloseste o cheie aleatoare de aceeasi lungime ca si textul
clar (o singura data!)
P = C = K = (Z
n
)
m
K = (k
1
, . . . , k
m
) K, (x
1
, . . . , x
m
), (y
1
, . . . , y
m
) (Z
n
)
m
,
e
K
(x
1
, . . . , x
m
) = (x
1
+ k
1
, . . . , x
m
+ k
m
),
d
K
(y
1
, . . . , y
m
) = (y
1
k
1
, . . . , y
m
k
m
)
(totul mod n)
Exemplu. n = 27, m = 17.
Text clar: themostformidable
Numeric: 20 8 5 13 15 19 20 6 15 18 13 9 4 1 2 12 5
Cheie: LRPFYALEPSBWQMSLA
Numeric: 12 18 17 6 25 1 12 5 16 19 2 23 17 13 19 12 1
Cifrare: 5 26 22 19 13 20 5 11 4 10 15 5 21 14 21 24 6
Text cifrat: EZVSMTEKDJOEUNUXF
Cifru Hill
P = C = (Z
n
)
m
K = {K M
m
(Z
n
) | K inversabila si cmmdc(det K, n) = 1}
K K, x, y (Z
n
)
m
,
e
K
(x) = xK,
d
K
(y) = yK
1
(totul mod n)
Se oberva ca e
K
este injectiva cmmdc(det K, n) = 1.
Exemplu. n = 27, m = 2, K =
11 8
3 7
, deci K
1
=
7 18
23 11
.
Text clar: four
Numeric: 6 15 /21 18
Cifrare: 3 18 /15 24
[ (6 15)
11 8
3 7
3
18
, (21 18)
11 8
3 7
15
24
]
Text cifrat: CROX
Cifru de permutare
P = C = (Z
n
)
m
K = { : {1, . . . , m} {1, . . . , m} | este bijectiva }
(permutari)
K, (x
1
, . . . , x
m
), (y
1
, . . . , y
m
) (Z
n
)
m
,
e
(x
1
, . . . , x
m
) = (x
(1)
, . . . , x
(m)
),
d
(y
1
, . . . , y
m
) = (x
1
(1)
, . . . , x
1
(m)
)
Exemplu. n = 27, m = 5, =
1 2 3 4 5
2 4 5 3 1
.
Text clar: computational
(compu /tatio /nal )
Cifrare: OPUMC /AIOTT /A LN
Text cifrat: OPUMCAIOTTA LN
Clasicare
Denit ie
Cifru pe blocuri: ecare element (bloc) de text clar este cifrat
folosind aceeasi cheie.
Cifru pe siruri: cifru care nu este cifru pe blocuri.
Toate exemplele anterioare sunt cifruri pe blocuri.
Denit ie
Cifru monoalfabetic: ecare caracter este cifrat ntr-un unic
caracter.
Cifru polialfabetic: cifru care nu este monoalfabetic.
Monoalfabetice: cifru Cezar, cifru de substitut ie, cifru an.
Polialfabetice: cifru Porta, cifru Belaso (Vigen`ere), cifru Hill, cifru
de permutare, cifru one-time pad.
Generalitat i despre criptanaliza
Caracteristica necesara a unui criptosistem
Un oponent (Oscar), vazand un sir de text cifrat, sa nu poata
determina cheia K sau sirul de text clar.
Denit ie
Criptanaliza: procesul de a ncerca determinarea cheii K, dandu-se
un sir de text cifrat.
Presupunere generala
Oponentul (Oscar) cunoaste criptosistemul folosit.
Un tip elementar de atac este cautarea exhaustiva a cheii, prin care
Oscar ncearca toate cheile posibile pana cand obt ine un text
inteligibil.
Cele mai comune tipuri de atacuri (n ordine crescatoare a puterii):
Doar text cifrat
Oponentul are un text cifrat.
Text clar cunoscut
Oponentul are un text clar si textul cifrat corespunzator.
Text clar ales
Oponentul are acces temporar la masina de cifrat. Astfel
poate sa aleaga un text clar si sa obt ina textul cifrat
corespunzator.
Text cifrat ales
Oponentul are acces temporar la masina de descifrat. Astfel
poate sa aleaga un text cifrat si sa obt ina textul clar
corespunzator.
Numarul de chei pentru un alfabet cu n = 27:
cifru Cezar: 27
cifru de substitut ie: 27!
cifru an: (27) 27 = 18 27 = 486
( este funct ia lui Euler)
cifru Porta: 27
2
!
cifru Belaso (Vigen`ere): 27
m
cifru one-time pad:
cifru de permutare: m!
i +1
= f (
i
, k), z
i
= g(
i
, k), c
i
= h(z
i
, m
i
),
unde
0
este starea init iala, care poate determinata din cheia k,
f este funct ia pentru starea urmatoare, g este funct ia care produce
sirul cheie z
i
, h este funct ia output care combina sirul cheie si
textul clar m
i
pentru a produce textul cifrat c
i
.
Modul OFB a unui cifru pe blocuri este un exemplu de cifru
sincron pe siruri. Cele mai multe sunt cifruri aditive pe siruri.
Model general
Cifru sincron pe siruri
Cifru aditiv pe siruri
Cifruri auto-sincronizante pe siruri
Denit ie
Un cifru auto-sincronizant pe siruri este unul n care sirul cheie
este generat ca funct ie de cheie si de un numar xat de cifre
anterioare din textul cifrat.
Criptare (folosind notat iile anterioare):
i
= (c
i t
, c
i t+1
, . . . , c
i 1
), z
i
= g(
i
, k), c
i
= h(z
i
, m
i
),
unde
0
= (c
t
, c
t+1
, . . . , c
1
) este starea init iala (nesecreta).
Model general:
Linear feedback shift registers (LFSR)
LFSR-urile sunt componente de baza pentru multe generatoare de
siruri cheie, deoarece sunt foarte potrivite la implementari hard,
pot produce siruri cu perioada lunga si proprietat i statistice bune,
si pot analizate imediat folosind tehnici algebrice.
Denit ie
Un LFSR de lungime L consta din L etape (sau elemente de
ntarziere) numerotate 0, 1, . . . , L 1, ecare capabila sa
stocheze un bit si avand un input si un output; de asemenea,
are un ceas care controleaza miscarea datelor.
In timpul ecarei
unitat i de timp sunt efectuate urmatoarele operat ii:
1
cont inutul etapei 0 face parte din sirul de output;
2
cont inutul etapei i este mutat n etapa i 1 (1 i L 1);
3
noul cont inut al etapei L 1 este bitul de feedback s
j
, care
se calculeaza adunand modulo 2 cont inuturile anterioare
ale unei submult imi xate de etape 0, 1, . . . , L 1.
LFSR de lungime L
Denit ie
Un LFSR se noteaza cu L, C(D), iar
C(D) = 1 + c
1
D + c
2
D
2
+ + c
L
D
L
Z
2
[D]
se numeste polinomul de conectare.
Daca s
i
{0, 1} (0 i L 1) este cont inutul init ial al etapei
i , atunci [s
L1
, . . . , s
0
] se numeste starea init ial a a LFSR-ului.
Daca starea init iala a LFSR-ului este [s
L1
, . . . , s
0
], atunci sirul de
output s = s
0
, s
1
, s
2
, . . . este unic determinat de recursivitatea:
s
j
= (c
1
s
j 1
+ c
2
s
j 2
+ + c
L
s
j L
) mod 2 pentru j L.
Exemplu. Fie LFSR-ul 4, 1 + D + D
4
, gurat astfel:
Daca starea init iala este [0, 0, 0, 0], sirul de output este sirul zero.
Daca starea init iala este [0, 1, 1, 0], cont inuturile etapelor
D
3
, D
2
, D
1
, D
0
la sfarsitul ecarei unitat i de timp t sunt:
t D
3
D
2
D
1
D
0
0 0 1 1 0
1 0 0 1 1
2 1 0 0 1
3 0 1 0 0
4 0 0 1 0
5 0 0 0 1
6 1 0 0 0
7 1 1 0 0
t D
3
D
2
D
1
D
0
8 1 1 1 0
9 1 1 1 1
10 0 1 1 1
11 1 0 1 1
12 0 1 0 1
13 1 0 1 0
14 1 1 0 1
15 0 1 1 0
Sirul de output este s = 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, . . . si
este periodic cu perioada 15.
Cifruri pe siruri bazate pe LFSR
Sirurile de output pentru LFSR sunt previzibile (si n nal
periodice).
Deoarece un sistem bine pus la punct trebuie sa e sigur
mpotriva atacurilor cu text clar cunoscut, un LFSR nu trebuie
folosit singur ca si generator de sir cheie.
Totusi, LFSR-urile sunt dezirabile datorita costurilor foarte
reduse de implementare.
Vom discuta 3 metodologii generale pentru distrugerea
liniaritat ii unui LFSR.
generatoare de combinat ii neliniare
generatoare de ltre neliniare
generatoare controlate de ceas
Generatoare de combinat ii neliniare
Idee: folosirea mai multor LFSR n paralel.
Sirul cheie este generat ca funct ie neliniara f de output-urile
componentelor LFSR-urilor.
Astfel de generatoare de siruri cheie se numesc generatoare de
combinat ii neliniare, iar f se numeste funct ia de combinat ie.
Funct ia f trebuie sa satisfaca mai multe criterii pentru a
rezista unor tipuri particulare de atacuri criptograce.
Generatoare de ltre neliniare
Idee: generarea sirurilor cheie ca funct ii neliniare de etapele
unui singur LFSR.
Astfel de generatoare de siruri cheie se numesc generatoare de
ltre neliniare, iar f se numeste funct ia de ltrare.
Generatoare controlate de ceas
(1) Algoritmul generatorului cu pas alternativ
Sumar: un LFSR R
1
de control este folosit pentru a selecta alte
doua LFSR-uri R
2
si R
3
.
Output: un sir care se obt ine prin XOR a sirurilor de output pentru
R
2
si R
3
.
Urmatorii pasi sunt repetat i pana cand se produce un sir cheie de
lungimea dorita.
1. Este pornit ceasul pentru R
1
.
2. Daca output-ul lui R
1
este 1, atunci este pornit ceasul lui R
2
;
ceasul lui R
3
nu este pornit dar bitul anterior de output este repetat.
(Pentru primul ciclu de ceasuri, bitul anterior de output al lui R
3
se ia 0.)
3. Daca output-ul lui R
1
este 0, atunci este pornit ceasul lui R
3
;
ceasul lui R
2
nu este pornit dar bitul anterior de output este repetat.
(Pentru primul ciclu de ceasuri, bitul anterior de output al lui R
2
se ia 0.)
4. Bit ilor de output ai lui R
2
si R
3
li se aplica XOR; bitul rezultat va
face parte din sirul cheie.
Mai formal, consideram sirurile de output pentru LFSR-urile R
1
,
R
2
si R
3
: a
0
, a
1
, a
2
, . . . , b
0
, b
1
, b
2
, . . . si respectiv c
0
, c
1
, c
2
, . . . .
Denim b
1
= c
1
= 0.
Atunci sirul cheie produs de catre generatorul cu pas alternativ este
x
0
, x
1
, x
2
, . . . , unde
x
j
= b
t(j )
c
j t(j )1
t(j ) = (
j
i =0
a
i
) 1
pentru orice j 0.
Exemplu. (cu parametrii articiali de mici)
Fie un generator cu pas alternativ si cu LFSR-urile:
R
1
= 3, 1 + D
2
+ D
3
,
R
2
= 4, 1 + D
3
+ D
4
,
R
3
= 5, 1 + D + D
3
+ D
4
+ D
5
.
Presupunem ca starile init iale ale lui R
1
, R
2
si R
3
sunt [0, 0, 1], [1, 0, 1, 1]
si respectiv [0, 1, 0, 0, 1].
Sirul de output al lui R
1
este sirul periodic cu ciclul
a
7
= 1, 0, 0, 1, 0, 1, 1.
Sirul de output al lui R
2
este sirul periodic cu ciclul
b
15
= 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0.
Sirul de output al lui R
3
este sirul periodic cu ciclul
c
31
= 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0.
Sirul cheie generat este
x = 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, . . . .
(2) Algoritmul generatorului de micsorare
Sumar: un LFSR R
1
este folosit pentru a controla output-ul unui al
doilea LFSR R
2
.
Output: un sir care se obt ine din R
1
si R
2
.
Urmatorii pasi sunt repetat i pana cand se produce un sir cheie de
lungimea dorita.
1. Sunt pornite ceasurile pentru R
1
si R
2
.
2. Daca output-ul lui R
1
este 1, bitul de output al lui R
2
va face
parte din sirul cheie.
3. Daca output-ul lui R
1
este 0, bitul de output al lui R
2
este
eliminat.
Mai formal, consideram sirurile de output pentru LFSR-urile R
1
si
R
2
: a
0
, a
1
, a
2
, . . . si respectiv b
0
, b
1
, b
2
, . . . . Atunci sirul cheie
produs de generatorul de micsorare este x
0
, x
1
, x
2
, . . . , unde
x
j
= b
i
j
, si pentru orice j 0, i
j
este pozit ia celui de-al j -lea 1 din
sirul a
0
, a
1
, a
2
, . . . .
Exemplu. (cu parametrii articiali de mici)
Fie un generator de micsorare cu LFSR-urile:
R
1
= 3, 1 + D + D
3
,
R
2
= 5, 1 + D
3
+ D
5
.
Presupunem ca starile init iale ale lui R
1
si R
2
sunt [1, 0, 0] si respectiv
[0, 0, 1, 0, 1].
Sirul de output al lui R
1
este sirul periodic cu ciclul
a
7
= 0, 0, 1, 1, 1, 0, 1.
Sirul de output al lui R
2
este sirul periodic cu ciclul
b
31
= 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0.
Sirul cheie generat este
x = 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, . . . .
Aritmetica modulara si criptograe
Curs 8
Criptograe cu cheie publica
Index
1
Generalitat i
Funct ii one-way si trapdoor
2
Criptosistemul RSA
3
Criptosistemul Rabin
4
Criptosistemul ElGamal
5
Alte criptosisteme cu cheie publica
Generalitat i
Criptosistem cu cheie privata
caracteristic pentru criptograa clasica
daca cheia de cifrare este cunoscuta, cheia de descifrare poate
determinata usor si astfel mesajul poate descifrat
Criptosistem cu cheie publica
neocial: James Ellis, Cliord Cocks, Malcolm Williamson,
1969-1975 (UKs General Communications Head Quarters)
ocial: Whiteld Die si Martin Hellman, 1976
Idee: ind data cheia de cifrare, cheia de descifrare nu poate
determinata ntr-un timp rezonabil.
17
Z
17
, f (x) = 3
x
mod 17.
Explicit, avem urmatoarea corespondent a x f (x):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
3 9 10 13 5 15 11 16 14 8 7 4 12 2 6 1
Fiind dat x Z
17
, este relativ usor sa se ae f (x).
Totusi, ind dat un numar ca 7, fara a avea tabla n fat a, este
mult mai dicil de aat x stiind f (x) = 7.
Chiar si pentru numere mari, f (x) poate calculata ecient,
n timp ce procesul de aare a lui x din valoarea f (x) este
mult mai greu.
Acest exemplu este sugestiv pentru conceptul de funct ie one-way.
Exemplu. Consideram numerele prime p = 48611, q = 53993 si
e n = pq = 2624653723. Denim f : Z
n
Z
n
, f (x) = x
3
mod n.
Calcularea lui f (x) este relativ simpla.
Inversarea procedurii este mult mai dicila, n special cand
factorii lui n sunt necunoscut i si mari.
Totusi, daca factorii p si q ai lui n se cunosc, atunci exista un
algoritm ecient pentru calcularea acestor radacini cubice
modulare.
Acest exemplu ilustreaza conceptul de funct ie trapdoor.
Daca p si q sunt numere prime distincte foarte mari (ecare de
peste 100 de cifre zecimale), atunci deducerea lui p si q stiindu-se
n este o problema foarte dicila. Aceasta este Problema
Factorizarii
Intregilor si este o sursa pentru multe funct ii trapdoor.
Criptosistemul RSA
Ron Rivest, Adi Shamir, Leonard Adleman MIT (1977)
bazat pe Problema Factorizarii
Intregilor, pentru care nu se
cunoaste vreun algoritm de timp polinomial
1. Generarea cheii. Alice creeaza o cheie publica si una privata.
1.1. Genereaza aleator 2 numere prime disctincte mari p, q de
aproximativ aceeasi marime.
1.2. Calculeaza n = pq si (n) = (p 1)(q 1) (funct ia lui Euler).
1.3. Selecteaza aleator 1 < e < (n) cu cmmdc(e, (n)) = 1.
1.4. Calculeaza d = e
1
mod (n).
1.5. Cheia publica a lui Alice este K
E
= (n, e); cheia sa privata
este K
D
= d.
e si d se numesc exponentul de cifrare si respectiv exponentul de
descifrare, iar n se numeste modulul.
2. Cifrare. Bob i trimite un mesaj cifrat lui Alice.
2.1. Obt ine cheia publica a lui Alice K
E
= (n, e).
2.2. Reprezinta mesajul ca si un numar m ntre 0 si n 1.
2.3. Calculeaza c = m
e
mod n.
2.4. Trimite textul cifrat c lui Alice.
3. Descifrare. Alice descifreaza mesajul de la Bob.
3.1 Alice foloseste cheia privata K
D
= d pentru a obt ine mesajul
m = c
d
mod n.
Metode folosite
pentru testarea primalitat ii: testul Miller-Rabin
pentru calcularea inversului modular: algoritmul extins al lui
Euclid
pentru cifrare si descifrare: exponent iere prin ridicare
succesiva la patrat si reducere modulara
Utilitatea criptosistemelor cu cheie publica
utilizate des n viat a de zi cu zi
de obicei, se folosesc pentru a transmite cantitat i mici de
informat ie (chei), ind mai ncet decat criptosistemele clasice
cu cheie privata
RSA este folosit des n comert ul electronic
Exemplu. Cadru general:
Folosim RSA.
Folosim un alfabet de 27 de litere pentru text clar si text
cifrat: (spat iu) cu echivalent numeric 0 si literele A Z
(alfabetul englezesc) cu echivalentele numerice 1-26.
AB C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 910111213141516171819202122 23 242526
Unitat ile de mesaj de text clar sunt blocuri de k litere, iar
unitat ile de mesaj de text cifrat sunt blocuri de l litere. Textul
clar este completat cu spat ii daca este necesar.
Trebuie sa avem 27
k
< n < 27
l
.
Fie k = 2, l = 3 si K
E
= (n, e) = (1643, 67).
Text clar: algebra
Intregilor
1. Generarea cheii. Alice creeaza o cheie publica si una privata.
1.1. Genereaza aleator 2 numere prime distincte mari p, q de
aproximativ aceeasi marime.
1.2. Calculeaza n = p q.
1.3. Cheia publica a lui Alice este n, iar cheia sa privata este (p, q).
2. Cifrare. Bob i trimite un mesaj cifrat lui Alice.
2.1. Obt ine cheia publica a lui Alice n.
2.2. Reprezinta mesajul ca si un numar m ntre 0 si n 1.
2.3. Calculeaza c = m
2
mod n.
2.4. Trimite textul cifrat c lui Alice.
3. Descifrare. Alice descifreaza mesajul de la Bob.
3.1. Foloseste cheia privata (p, q) pentru a determina cele 4
radacini m
1
, m
2
, m
3
, m
4
ale lui c modulo n.
3.2 Decide care dintre cele 4 mesaje m
1
, m
2
, m
3
, m
4
este cel trimis
de Bob.
(Aceasta se poate evita prin folosirea unor bit i de redundant a.)
Metode folosite
determinarea radacinii patrate modulare
teorema chineza a restului
Exemplu. Cadru general:
Folosim criptosistemul Rabin.
Folosim un alfabet de 27 de litere pentru text clar si text
cifrat: (spat iu) cu echivalent numeric 0 si literele A Z
(alfabetul englezesc) cu echivalentele numerice 1-26.
AB C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 910111213141516171819202122 23 242526
Unitat ile de mesaj de text clar sunt blocuri de k litere, iar
unitat ile de mesaj de text cifrat sunt blocuri de l litere. Textul
clar este completat cu spat ii daca este necesar.
Trebuie sa avem 27
k
< n < 27
l
.
Fie k = 2, l = 3 si K
D
= (p, q) = (31, 53).
Text cifrat: BED HI
x = 4 (mod 31)
x = 22 (mod 53)
Teorema chineza a restului
Consideram sistemul
x = a
1
(mod n
1
)
. . . . . . . .
x = a
r
(mod n
r
)
unde ecare a
i
, n
i
N, n
i
= 0 si (n
i
, n
j
) = 1, i , j {1, . . . , r },
i = j . Atunci sistemul are solut ie unica modulo N = n
1
n
2
. . . n
r
, si
anume x =
r
i =1
a
i
N
i
K
i
, unde N
i
= N/n
i
si K
i
= N
1
i
mod n
i
,
i = 1, . . . , r .
Aici N = n = 31 53 = 1643, N
1
= 53, N
2
= 31,
K
1
= N
1
1
mod 31 = ... = 24, K
2
= N
1
2
mod 53 = ... = 12.
Cele 4 solut ii modulo N = 1643 ale sistemelor sunt date de
a
1
N
1
K
1
+ a
2
N
2
K
2
= 4 53 24 + (22) 31 12
= 5088 8184,
deci x
1
= 128, x
2
= 1453, x
3
= 1515, x
4
= 190.
Deoarece x
2
, x
3
27
2
, acestea nu sunt bune.
Scriem echivalentele literale:
x
1
= 128 = 4 27 + 20 DT
x
4
= 190 = 7 27 + 1 GA
Cea de-a doua este o solut ie acceptabila.
Similar, se descifreaza al doilea trigraf si se obt ine ME.
Text clar: GAME
Exemplu. Fie K
D
= (p, q) = (277, 331), deci n = p q = 91687.
Sa repetam acum ultimii 6 bit i ai ecarui bloc din mesajul original.
Cifrare. Fie m
0
= 633, adica m
0
= (1001111001)
2
. Repetand
ultimii 6 bit i obt inem m = (1001111001111001)
2
, adica
m = 40569.
Calculam c = m
2
mod n = 40569
2
mod 91687 = 62111.
Descifrare. Pentru descifrare folosim metoda de mai sus si
obt inem radacinile m
1
= 69654, m
2
= 22033, m
3
= 40569,
m
4
= 51118 ale lui c modulo n, adica
m
1
= (10001000000010110)
2
,
m
2
= (101011000010001)
2
,
m
3
= (1001111001111001)
2
,
m
4
= (1100011110101110)
2
.
Deoarece doar m
3
are redundant a ceruta, obt inem mesajul
original m
0
= (1001111001)
2
, adica m
0
= 633.
Criptosistemul ElGamal
Taher ElGamal (1984)
bazat pe Problema Logaritmului Discret sau pe Problema
Die-Hellman, pentru care nu se cunoaste vreun algoritm de
timp polinomial
Problema Logaritmului Discret (PLD)
Fie (G, ) un grup ciclic cu n elemente, avand un generator g si e
y G. Sa se determine o putere x (0 x n 1) astfel ca
y = g
x
(formal scriem x = log
g
y).
Problema Die-Hellman (PDH)
Fie (G, ) un grup ciclic cu n elemente, avand un generator g si e
g
a
, g
b
G cu a, b {0, . . . , n 1}. Sa se determine g
ab
.
Conjectura
PLD si PDH sunt computat ional echivalente.
ElGamal (versiunea de baza)
1. Generarea cheii. Alice creeaza o cheie publica si una privata.
1.1. Genereaza un numar prim mare p si a un generator g al lui
(Z
p
, ).
1.2. Selecteaza aleator un numar a (1 a p 2).
1.3. Calculeaza g
a
mod p.
1.4. Cheia publica a lui Alice este (p, g, g
a
); cheia sa privata este a.
2. Cifrare. Bob i trimite un mesaj cifrat lui Alice.
2.1. Obt ine cheia publica a lui Alice (p, g, g
a
).
2.2. Reprezinta mesajul ca si un numar m ntre 0 si p 1.
2.3. Selecteaza aleator un numar k (1 k p 2).
2.4. Calculeaza = g
k
mod p si = m (g
a
)
k
mod p.
2.5. Trimite textul cifrat c = (, ) lui Alice.
3. Descifrare. Alice descifreaza mesajul de la Bob.
3.1. Foloseste cheia privata a pentru a obt ine mesajul
m =
a
mod p.
ElGamal (versiunea generalizata)
1. Generarea cheii. Alice creeaza o cheie publica si una privata.
1.1. Selecteaza un grup ciclic potrivit (G, ) cu n elemente si un
generator g al sau.
1.2. Selecteaza aleator un numar a (1 a n 1).
1.3. Calculeaza g
a
n grupul G.
1.4. Cheia publica a lui Alice este (g, g
a
) mpreuna cu o descriere
a modului de nmult ire a elementelor din grup; cheia sa privata
este a.
2. Cifrare. Bob i trimite un mesaj cifrat lui Alice.
2.1. Obt ine cheia publica a lui Alice (g, g
a
).
2.2. Reprezinta mesajul ca si un element m al grupului G.
2.3. Selecteaza aleator un numar k (1 k n 1).
2.4. Calculeaza = g
k
si = m (g
a
)
k
n grupul G.
2.5. Trimite textul cifrat c = (, ) lui Alice.
3. Descifrare. Alice descifreaza mesajul de la Bob.
3.1. Foloseste cheia privata a pentru a obt ine mesajul m =
a
n grupul G.
Dicultatea Problemei Logaritmului Discret nu depinde de
generator.
Grupuri interesante pentru criptograe: G = F
q
, unde F
q
este
un corp cu q elemente (q = p
m
si p prim).
Utilitate
software GNU Privacy Guard
versiuni recente de PGP
Exemplu.
Generarea cheii.
Alice selecteaza numarul prim p = 2357 si generatorul g = 2
al grupului (Z
2357
, ).
Apoi alege a = 1751 p 2 si calculeaza
g
a
mod p = 2
1751
mod 2357 = 1185.
Cheia privata a lui Alice este 1751; cheia sa publica este
(2357, 2, 1185).
Cifrare.
Pentru a cifra mesajul m = 2035, Bob selecteaza aleator
k = 1520 p 2 si calculeaza
= g
k
mod p = 2
1520
mod 2357 = 1430 si
= m (g
a
)
k
mod p = 2035 1185
1520
mod 2357 = 697.
Apoi trimite mesajul (, ) = (1430, 697) lui Alice.
Descifrare.
Pentru descifrare Alice calculeaza m =
a
mod p =
p1a
mod p = 1430
605
697 mod 2357 = 2035.
Alte criptosisteme cu cheie publica
criptosistemul McEliece
bazat pe coduri corectoare de erori
criptosistemul rucsacului
bazat pe problema sumei submult imilor
cifrare Merkle-Hellman
cifrare Chor-Rivest
criptosisteme probabilistice
Goldwasser-Micali
Blum-Goldwasser
Aritmetica modulara si criptograe
Curs 9
Funct ii hash si semnaturi digitale
Index
1
Funct ii hash
Generalitat i
Construct ii de baza
Atacuri asupra funct iilor hash
Aplicat ii
2
Semnaturi digitale
Generalitat i
O schema generala de semnatura digitala
Cateva scheme de semnatura digitala
Generalitat i
Denit ie
O funct ie hash (criptograca) este o funct ie care transforma
siruri de lungime arbitrara n siruri de lungime xa.
daca h : D R si |D| > |R|, atunci funct ia este surjectiva,
ceea ce implica existent a de coliziuni
o valoare hash serveste ca o imagine reprezentativa compacta
(amprenta digitala sau rezumat al mesajului) a unui sir de
input, si poate folosita ca ind identicabila n mod unic cu
sirul
funct iile hash sunt folosite pentru integritatea datelor
mpreuna cu schemele de semnatura digitala
Este de dorit sa aiba efect de avalansa: daca input-ul este put in
schimbat, atunci output-ul se schimba semnicativ.
Clasicare
Clase de funct ii hash:
fara cheie, a caror specicat ie are un singur parametru ca
input, si anume un mesaj
Exemple: MD5, SHA-1, RIPEMD-160;
cu cheie, a caror specicat ie are 2 parametri ca input, si
anume un mesaj si o cheie secreta
Denit ie
O funct ie hash (fara cheie) este o funct ie h care are cel put in
urmatoarele proprietat i:
compresie: h transforma un input x de lungime arbitrara
ntr-un output h(x) de lungime xa n.
usurint a de calculare: ind data h si un input x, h(x) este
usor de calculat.
Clasicare funct ionala:
MDC (manipulation detection codes)
scopul unui MDC este de a oferi o imagine reprezentativa
(hash) a unui mesaj, satisfacand anumite proprietat i adit ionale
MDC-urile sunt o subclasa de funct ii hash fara cheie
are 2 subclase: funct ii hash one-way si funct ii hash rezistente
la coliziune
MAC (message authentication codes)
scopul unui MAC este de a facilita, fara a utiliza mecanisme
adit ionale, asigurarea provenient ei si integritat ii unui mesaj
MAC-urile au 2 parametri funct ionali: un mesaj de input si o
cheie secreta
MAC-urile sunt o subclasa de funct ii hash cu cheie
= x
astfel ca h(x) = h(x
).
rezistent a la coliziune (coliziune tare):
este nerealizabila computat ional gasirea oricaror doua
input-uri diferite x si x
).
Motivat ii:
Sa consideram o schema de semnatura digitala (...) n care
semnatura este aplicata une valori hash h(x) si nu mesajului x.
h ar trebui sa e un MDC cu rezistent a la a 2-a preimagine,
deoarece altfel un adversar Oscar ar putea observa semnatura
lui Alice asupra lui h(x) si ar putea gasi x
astfel ca
h(x) = h(x
.
Daca Oscar poate alege mesajul pe care Alice sa l semneze,
atunci Oscar are nevoie doar de gasirea unei perechi de
coliziune (x, x
) = f
1
B
(f
A
(s)).
Daca este adevarata, atunci semnatura este autentica. Altfel,
mesajul sau semnatura a fost alterat sau falsicat.
Notat ii n scheme de semnatura digitala
M: o mult ime numita spat iul mesajului.
S: o mult ime numita spat iul semnaturii.
M
S
: o mult ime numita spat iul de semnare.
R: o funct ie bijectiva de la M la M
S
numita funct ia de
redundant a.
M
R
: imaginea lui R.
h: o funct ie one-way cu domeniu M.
Schema de semnatura digitala RSA
securitatea: Problema Factorizarii
Intregilor
spat iul mesajului M si spat iul textului cifrat sunt Z
n
spat iul de semnare M
S
si spat iul de semnatura S sunt Z
n
o funct ie de redundant a R : Z
n
Z
n
este aleasa si facuta
publica
Generarea cheii. Alice creeaza o cheie publica si o cheie privata.
1. Genereaza 2 numere prime mari distincte p si q de aproximativ
aceeasi marime.
2. Calculeaza n = pq si (n) = (p 1)(q 1) (funct ia lui Euler).
3. Selecteaza aleator 1 < e < (n) cu cmmdc(e, (n)) = 1.
4. Calculeaza d = e
1
(mod (n)).
5. Cheia publica a lui Alice este (n, e); cheia sa privata este d.
Generarea semnaturii si vericare.
1
Generarea semnaturii. Alice semneaza un mesaj m.
1. Calculeaza m = R(m) Z
n
.
2. Calculeaza s = m
d
(mod n).
3. Semnatura lui Alice pentru m este s.
2
Vericare. Bob verica semnatura lui Alice si recupereaza
mesajul m din semnatura.
1. Obt ine cheia publica a lui Alice (n, e).
2. Calculeaza m = s
e
(mod n).
3. Verica daca m M
R
; daca nu, respinge semnatura.
4. Recupereaza m = R
1
( m).
Demonstrarea corectitudinii. Daca s este semnatura pentru
mesajul m, atunci avem s = m
d
(mod n), unde m = R(m).
Deoarece ed = 1 (mod (n)), s
e
= ( m)
ed
= m (mod n).
De asemenea, R
1
( m) = R
1
(R(m)) = m.
Exemplu.
Generarea cheii. Alice:
1. Selecteaza numerele prime p = 7927, q = 6997.
2. Calculeaza
n = pq = 55465219
(n) = (p 1)(q 1) = 55450296
3. Alege e = 5 (se observa ca cmmdc(5, 55450296) = 1).
4. Calculeaza
d = e
1
(mod (n)) = 44360237.
5. Cheia publica a lui Alice este (n = 55465219, e = 5); cheia
sa privata este d = 44360237.
Generarea semnaturii.
Presupunem ca M = Z
n
, R : Z
n
Z
n
, R(m) = m, m Z
n
.
Alice semneaza mesajul m = 31229978:
1. Calculeaza m = R(m) = 31229978.
2. Calculeaza semnatura
s = m
d
(mod n)
= 31229978
44360237
(mod 55465219) = 30729435.
Vericarea semnaturii. Bob:
1. Obt ine cheia publica a lui Alice (n = 55465219, e = 5).
2. Calculeaza
m = s
e
(mod n)
= 30729435
5
(mod 55465219) = 31229978.
3. Accepta semnatura deoarece m are redundant a ceruta (adica
m M
R
).
4. Recupereaza mesajul m = R
1
( m) = 31229978.
Schema de semnatura digitala Rabin
securitatea: Problema Radacinii Patrate Modulare
spat iul mesajului M si spat iul textului cifrat sunt Z
n
spat iul de semnare M
S
este mult imea Q
n
a resturilor patrate
modulo n, iar spat iul de semnatura S consta din radacinile
patrate ale acestora
o funct ie de redundant a R : Z
n
Q
n
este aleasa si facuta
publica
Generarea cheii. Alice creeaza o cheie publica si o cheie privata.
1. Genereaza 2 numere prime mari distincte p si q de aproximativ
aceeasi marime.
2. Calculeaza n = pq.
3. Cheia publica a lui Alice este n; cheia sa privata este perechea
(p, q).
Generarea semnaturii si vericare.
1
Generarea semnaturii. Alice semneaza un mesaj m.
1. Calculeaza m = R(m) Q
n
.
2. Calculeaza o radacina patrata s a lui m modulo n.
3. Semnatura lui Alice pentru m este s.
2
Vericare. Bob verica semnatura lui Alice si recupereaza
mesajul m din semnatura.
1. Obt ine cheia publica a lui Alice (n, e).
2. Calculeaza m = s
2
(mod n).
3. Verica daca m M
R
; daca nu, respinge semnatura.
4. Recupereaza m = R
1
( m).
Exemplu.
Generarea cheii. Alice:
1. Selecteaza numerele prime p = 7, q = 11.
2. Calculeaza n = pq = 77.
3. Cheia sa publica este n = 77; cheia sa privata este
(p = 7, q = 11).
Generarea semnaturii.
Spat iul de semnare este
M
S
= Q
77
= {1, 4, 9, 15, 16, 23, 25, 36, 37, 53, 58, 60, 64, 67, 71}.
Presupunem ca M = M
S
, R : Z
77
Q
77
, R(m) = m,
m Q
77
.
Alice semneaza mesajul m = 23:
1. Calculeaza m = R(m) = 23.
2. Calculeaza o radacina patrata s a lui m modulo 77.
Solut iile sunt 10, 32, 45, 67 (...). Sa presupunem ca Alice alege
s = 45 ca semnatura pentru mesajul m = 23.
Vericarea semnaturii. Bob:
1. Obt ine cheia publica a lui Alice (p = 7, q = 11).
2. Calculeaza m = s
2
(mod n) = 45
2
(mod 77) = 23.
3. Accepta semnatura deoarece m M
R
.
4. Recupereaza mesajul m = R
1
( m) = 23.
Schema de semnatura digitala DSA
DSA (Digital Signature Algorithm) DSS (Digital Signature
Standard) standard n SUA din 1993
securitatea: Problema Logaritmului Discret, Problema
Die-Hellman
DSA necesita o funct ie hash h : {0, 1}
Z
q
unde q este un
numar prim mare (SHA-1 pentru DSS)
Generarea cheii. Alice creeaza o cheie publica si o cheie privata.
1. Selecteaza un numar prim q astfel ca 2
159
< q < 2
160
.
2. Alege t astfel ca 0 t 8 si selecteaza un numar prim p astfel ca
2
511+64t
< p < 2
512+64t
si q divide p 1.
3. Selecteaza un generator al unicului grup ciclic cu q elemente n Z
p
.
3.1. Selecteaza g Z
p
si calculeaza = g
(p1)/q
(mod p).
3.2. Daca = 1, revine la Pasul 3.1.
4. Selecteaza un numar aleator a astfel ca 1 a q 1.
5. Calculeaza y =
a
(mod p).
5. Cheia publica a lui Alice este (p, q, , y); cheia sa privata este a.
Generarea semnaturii si vericare.
1
Generarea semnaturii. Alice semneaza un mesaj binar m.
1. Selecteaza un numar aleator k astfel ca 1 k q 1.
2. Calculeaza r = (
k
mod p) mod q.
3. Calculeaza k
1
mod q.
4. Calculeaza s = k
1
(h(m) + ar ) mod q.
5. Semnatura lui Alice pentru m este perechea (r , s).
2
Vericare. Bob verica semnatura lui Alice.
1. Obt ine cheia publica a lui Alice (p, q, , y).
2. Verica daca 0 < r < q si 0 < s < q; daca nu, respinge
semnatura.
3. Calculeaza w = s
1
mod q si h(m).
4. Calculeaza u
1
= w h(m) mod q si u
2
= rw mod q.
5. Calculeaza v = (
u
1
y
u
2
mod p) mod q.
6. Accepta semnatura daca si numai daca v = r .
Demonstrarea corectitudinii. Daca (r , s) este semnatura pentru
mesajul m, atunci avem
h(m) = ar + ks (mod q).
p
.
3.1. Selecteaza g = 110217528 Z
p
si calculeaza
= g
(p1)/q
(mod p) = = 10083255.
3.2. Deoarece = 1, este generatorul cerut.
4. Selecteaza un numar aleator a = 12496 astfel ca
1 a q 1.
5. Calculeaza y =
a
(mod p) = = 119946265.
5. Cheia publica a lui Alice este (p, q, , y); cheia sa privata
este a.
Generarea semnaturii. Alice:
1. Selecteaza un numar aleator k = 9557 astfel ca
1 k q 1.
2. Calculeaza r = (
k
mod p) mod q = = 34.
3. Calculeaza k
1
mod q = 7631.
4. Calculeaza s = k
1
(h(m) + ar ) mod q = = 13049
(sa zicem h(m) = 5246).
5. Semnatura lui Alice pentru m este perechea (r , s).
Vericare. Bob:
1. Obt ine cheia publica a lui Alice (p, q, , y).
2. Verica daca 0 < r < q si 0 < s < q.
3. Calculeaza w = s
1
mod q = = 1799 si h(m) = 5246.
4. Calculeaza u
1
= w h(m) mod q = = 12716 si
u
2
= rw mod q = = 8999.
5. Calculeaza v = (
u
1
y
u
2
mod p) mod q = = 34.
6. Accepta semnatura, deoarece v = r .
Schema de semnatura digitala ElGamal
DSA este de fapt o varianta a schemei de semnatura digitala
ElGamal
securitatea: Problema Logaritmului Discret, Problema
Die-Hellman
ElGamal necesita o funct ie hash h : {0, 1}
Z
p
unde p este
un numar prim mare
Generarea cheii. Alice creeaza o cheie publica si o cheie privata.
1. Genereaza un numar prim mare aleator p si un generator al
grupului ciclic multiplicativ Z
p
.
2. Selecteaza un numar aleator a astfel ca 1 a p 2.
3. Calculeaza y =
a
mod p.
4. Cheia publica a lui Alice este (p, , y); cheia sa privata este a.
Generarea semnaturii si vericare.
1
Generarea semnaturii. Alice semneaza un mesaj m.
1. Selecteaza un numar aleator k astfel ca 1 k p 2 cu
cmmdc(k, p 1) = 1.
2. Calculeaza r =
k
mod p.
3. Calculeaza k
1
mod (p 1).
4. Calculeaza s = k
1
(h(m) ar ) mod (p 1).
5. Semnatura lui Alice pentru m este perechea (r , s).
2
Vericare. Bob verica semnatura lui Alice.
1. Obt ine cheia publica a lui Alice (p, , y).
2. Verica daca 1 r p 2; daca nu, respinge semnatura.
3. Calculeaza v
1
= y
r
r
s
mod p.
4. Calculeaza h(m) si v
2
=
h(m)
mod p.
5. Accepta semnatura daca si numai daca v
1
= v
2
.
Demonstrarea corectitudinii. Daca (r , s) este semnatura pentru
mesajul m, atunci
s = k
1
(h(m) ar ) (mod p 1).
h(m)
=
ar +ks
= (
a
)
r
r
s
(mod p).
Deci v
1
= v
2
, asa cum se cere.
Exemplu.
Generarea cheii. Alice:
1. Selecteaza numarul prim p = 2357 si un generator = 2 al grupului ciclic
multiplicativ Z
p
.
2. Selecteaza un numar aleator a = 1751 astfel ca 1 a p 2.
3. Calculeaza y =
a
mod p = = 1185.
4. Cheia publica a lui Alice este (p, , y); cheia sa privata este a.
Generarea semnaturii. Alice semneaza mesajul m = 1463:
Presupunem ca h este funct ia identica.
1. Selecteaza un numar aleator k = 1529 astfel ca 1 k p 2 cu
cmmdc(k, p 1) = 1.
2. Calculeaza r =
k
mod p = = 1490.
3. Calculeaza k
1
mod (p 1) = = 245.
4. Calculeaza s = k
1
(h(m) ar ) mod (p 1) = = 1777.
5. Semnatura lui Alice pentru m este perechea (r , s).
Vericare. Bob:
1. Obt ine cheia publica a lui Alice (p, , y).
2. Verica daca 1 r p 2.
3. Calculeaza v
1
= y
r
r
s
mod p = = 1072.
4. Calculeaza h(m) = 1463 si v
2
=
h(m)
mod p = = 1072.
5. Accepta semnatura, deoarece v
1
= v
2
.
Aritmetica modulara si criptograe
Curs 10
Protocoale de stabilire a cheilor
Index
1
Generalitat i
2
Transport de chei bazat pe criptare simetrica
3
Acord de chei bazat pe tehnici simetrice
4
Transport de chei bazat pe criptare cu cheie publica
5
Acord de chei bazat pe tehnici asimetrice
Generalitat i
Distribut ia cheilor: problema fundamentala care a motivat
criptograa cu cheie publica.
Vocabular
Un protocol este un algoritm denit printr-un sir de pasi care specic a
act iunile necesare a efectuate de c atre dou a sau mai multe p art i
implicate pentru a atinge un obiectiv xat.
Stabilirea cheii este un protocol n urma c aruia o cheie secreta devine
disponibil a pentru dou a sau mai multe p art i, pentru utilizare
ulterioar a n scop criptograc.
Un protocol de acord de cheie (key agreement) este o tehnic a de
stabilire a cheii n care este derivat a o cheie secret a de c atre doua sau
mai multe part i ca o funct ie de o informat ie asociata cu ecare dintre
acestea, astfel ca (ideal) nici o alt a parte s a nu poata predetermina
valoarea rezultat a.
Un protocol de transport de chei este o tehnic a de stabilire a cheii n
care o parte creeaza sau obt ine o valoare secret a si o transfer a n
sigurant a celorlalte p art i implicate.
Protocoalele de transport si de acord de cheie pot bazate pe:
criptare simetrica
criptare asimetrica
Protocoale
autenticare
stabilirea cheii
stabilirea cheii autenticate
Protocoalele de stabilire a cheii au ca rezultat chei secrete comune,
care sunt folosite de obicei pentru a deriva chei de sesiune.
Motivat ii pentru folosirea cheilor de sesiune
limitarea textului cifrat disponibil (pentru o cheie xata)
pentru un atac criptanalitic
limitarea expunerii (timp si cantitate de date) n
eventualitatea unei chei (de sesiune) compromise
evitarea stocarii pentru mai mult timp a unui numar mare de
chei secrete distincte prin crearea acestora atunci cand este
nevoie
asigurarea independent ei ntre sesiuni de comunicat ie sau
aplicat ii
Transport de chei bazat pe criptare simetrica
Exemple de astfel de protocoale
actualizare de cheie point-to-point
protocolul fara cheie al lui Shamir
Kerberos
Actualizare de cheie point-to-point folosind criptare
simetrica
Utilizeaza o cheie simetrica pe termen lung K cunoscuta a
priori de catre doua part i Alice si Bob.
Cheia, distribuita init ial pe un canal sigur sau rezultata dintr-o
schema de predistribut ie de cheie, este folosita repetat pentru
a stabili noi chei de sesiune W.
Notat ie:
r
A
: un numar aleator
t
A
: marca de timp
n
A
: sir de numere generat de Alice
E: un algoritm de criptare simetrica
Campurile opt ionale din mesaje se vor nota cu un asterisc (*).
1. Transport de chei cu un pas
A B : E
K
(r
A
) (1)
Cheia de sesiune folosita este W = r
A
si atat Alice cat si Bob obt in
autenticare implicita de cheie.
Campuri opt ionale adit ionale includ: o marca de timp, un camp
cont inand redundant a, un identicator t inta. Astfel:
A B : E
K
(r
A
, t
A
, B) (2)
Daca se doreste ca ambele part i sa contribuie la cheia de sesiune,
Bob i poate trimite lui Alice un mesaj analog, iar cheia de sesiune
se calculeaza ca f (r
A
, r
B
).
2. Transport de chei cu provocare-raspuns
A B : n
B
(1)
A B : E
K
(r
A
, n
B
, B) (2)
Cheia de sesiune folosita este W = r
A
.
Daca se doreste ca ambele part i sa contribuie la cheia de sesiune,
Alice poate insera un nonce (number used once) n
A
care precede
n
B
si un al 3-lea mesaj este adaugat ca mai jos.
A B : n
B
(1)
A B : E
K
(r
A
, n
A
, n
B
, B) (2)
A B : E
K
(r
B
, n
B
, n
A
, A) (3)
Transport de chei fara o cheie secreta comuna a priori
Protocolul fara cheie al lui Shamir
Sumar: Alice si Bob schimba 3 mesaje pe un canal public.
Rezultat: cheia secreta K este transferata privat (dar neautenticata) de
la Alice la Bob.
1. Pregatire (denire si publicare).
(a) Selecteaza si publica pentru uz comun un numar prim p astfel ca
logaritmii discret i modulo p sa nu poata ecient calculat i.
(b) Alice si Bob aleg cate un numar aleator secret a si b, cu
1 a, b p 2, ecare relativ prim cu p 1. Apoi calculeaza a
1
si
respectiv b
1
mod p 1.
2. Mesajele protocolului.
A B : K
a
mod p (1)
A B : (K
a
)
b
mod p (2)
A B : (K
ab
)
a
1
mod p (3)
Protocolul fara cheie al lui Shamir (cont.)
3. Act iunile protocolului. Efectueaza urmatorii pasi pentru ecare cheie
comuna necesara.
(a) Alice alege o cheie aleatoare K pentru a o transfera lui Bob, cu
1 K p 1. Alice calculeaza K
a
mod p si i trimite rezultatul lui Bob.
(b) Bob ridica la puterea b valoarea primita (modp) si i trimite
rezultatul lui Alice.
(c) Alice ridica la puterea a
1
mod p 1 valoarea primita (modp),
obt inand K
b
mod p. Alice i trimite rezultatul lui Bob.
(d) Bob ridica la puterea b
1
mod p 1 valoarea primita (modp),
obt inand noua cheie comuna K mod p.
Protocolul Kerberos de baza
3 part i: Alice (clientul), Bob (serverul si vericatorul) si un server de
ncredere T (serverul de autenticare Kerberos).
La nceput Alice si Bob nu au nici un secret comun, iar T are cate un
secret cu ecare.
Obiectivul principal al lui Bob este sa verice identitatea lui Alice;
stabilirea unei chei comune este secundara.
Opt iunile includ un mesaj nal care furnizeaza autenticare reciproca si
stabilirea unui secret adit ional comun lui Alice si Bob (o cheie de
subsesiune care nu este aleasa de T).
Protocolul funct ioneaza astfel.
Alice i cere lui T informat ia necesara pentru a se autentica lui Bob.
T i returneaza lui Alice o cheie de sesiune criptata pentru Alice si un
bilet criptat pentru Bob.
Biletul este transmis de catre Alice lui Bob si cont ine cheia de sesiune si
identitatea lui Alice; aceasta permite autenticarea lui Alice pentru Bob,
daca este acompaniata de un mesaj de la Alice si care cont ine o marca de
timp recent criptata cu acea cheie de sesiune.
Protocolul Kerberos de baza
Sumar: Alice comunica cu un server de ncredere T si cu Bob.
Rezultat: autenticarea lui Alice catre Bob (opt ional si invers), cu
stabilirea cheii.
1. Notat ie. Campurile opt ionale sunt notate cu un asterisc (*).
E este un algoritm de criptare simetrica.
N
A
este un nonce ales de catre Alice.
T
A
este o marca de timp de la ceasul local al lui Alice.
k este o cheie de sesiune aleasa de catre T, comuna pentru Alice si Bob.
L indica o perioada de validitate.
2. Pregatire.
Alice si T, Bob si T au cate o cheie comuna K
AT
si respectiv K
BT
.
Se deneste bilet
B
= E
K
BT
(k, A, L); autenticator = E
k
(A, T
A
, A
subcheie
).
3. Mesajele protocolului.
A T : A, B, N
A
(1)
A T : bilet
B
, E
K
AT
(k, N
A
, L, B) (2)
A B : bilet
B
, autenticator (3)
A B : E
k
(T
A
, B
subcheie
) (4)
Protocolul Kerberos de baza (cont.)
4. Act iunile protocolului. Algoritmul E include un mecanism de
integritate nglobat, iar protocolul esueaza daca decriptarea indica un esec
de vercare a integritat ii.
(a) Alice genereaza un nonce N
A
si i trimite lui T mesajul (1).
(b) T genereaza o noua cheie de sesiune k, si deneste o perioada de
validitate L pentru bilet.
T cripteaza k, numarul nonce primit, perioada de validitate si
identicatorul primit (Bob) folosind cheia lui Alice.
T creeaza un bilet securizat folosind cheia lui Bob, care cont ine k,
identicatorul primit (Alice) si perioada de validitate.
T i trimite lui Alice mesajul (2).
(c) Folosind K
AT
, Alice decripteaza partea din mesajul (2) cu except ia
biletului si obt ine: k, N
A
, L si identicatorul lui Bob.
Alice verica daca identicatorul si N
A
corespund cu cele trimise n
mesajul (1), si salveaza L.
Alice ia identicatorul propriu si rennoieste marca de timp T
A
, iar
opt ional genereaza o subcheie secreta A
subcheie
si le cripteaza folosind k
pentru a forma autenticatorul.
Alice i trimite lui Bob mesajul (3).
Protocolul Kerberos de baza (cont.)
4. Act iunile protocolului.
(d) Bob primeste mesajul (3), decripteaza biletul folosind K
BT
si obt ine
k, care permite decriptarea autenticatorului.
Bob verica daca: campul identicator (Alice) din bilet si autenticatorul
corespund, marca de timp T
A
este valida, timpul local al lui Bob este n
perioada de validitate L specicata n bilet.
Daca da, Bob declara validitatea autenticarii lui Alice si salveaza
A
subcheie
(daca e cazul).
(e) (Opt ional pentru autenticare reciproca)
Bob construieste si i trimite lui Alice mesajul (4), care cont ine marca de
timp a lui Alice de la autenticator (excluzand identicatorul Alice,
pentru a-l distinge de autenticator), criptat folosind k.
Opt ional Bob include o subcheie care sa permita negocierea unei subchei
de sesiune.
(f) (Opt ional pentru autenticare reciproca)
Alice decripteaza mesajul (4).
Daca marca de timp din interior corespunde cu cea trimisa n mesajul (3),
Alice declara validitatea autenticarii lui Bob si salveaza B
subcheie
(daca e
cazul).
Acord de chei bazat pe tehnici simetrice
Denit ie
Un sistem de distribut ie a cheilor (KDS) este o metoda prin
care, n timpul unei etape de init ializare, un server de ncredere
genereaza si distribuie valori de date secrete unor utilizatori,
astfel ca orice pereche de utilizatori sa poata calcula ulterior
chei comune necunoscute celorlalt i cu except ia serverului.
Exemplu. Un KDS trivial este urmatorul:
Un server de ncredere alege chei distincte pentru ecare
pereche dintre n utilizatori si distribuie securizat ecarui
utilizator cate n 1 chei etichetate corespunzator.
Aceasta asigura securitate perfecta, dar necesita un spat iu
mare de stocare.
Exista metode alternative, dar mai complicate.
Transport de chei bazat pe criptare cu cheie publica
Protocoale fara semnatura:
Needham-Schroeder
Protocoale cu semnatura:
X.509
Protocoale fara semnatura
Sunt potrivite pentru comunicat ii ntr-un singur sens si aplicat ii ca
posta electronica sau fax (store-and-forward).
Protocolul Needham-Schroeder cu cheie publica
Sumar: Alice si Bob schimba 3 mesaje.
Rezultat: autenticarea entitat ii, autenticarea cheii si transport de chei
(toate reciproce).
1. Notat ie.
P
X
(Y) noteaza criptarea cu cheie publica a datelor Y folosind cheia
publica a part ii X;
P
X
(Y
1
, Y
2
) noteaza criptarea concatenarii lui Y
1
si Y
2
;
k
1
, k
2
sunt chei de sesiune simetrice secrete alese de catre Alice si
respectiv Bob.
2. Pregatire. Se presupune ca Alice si Bob au cheia publica autentica a
celuilalt.
Protocolul Needham-Schroeder cu cheie publica (cont.)
3. Mesajele protocolului.
A B : P
B
(k
1
, A) (1)
A B : P
A
(k
1
, k
2
) (2)
A B : P
B
(k
2
) (3)
4. Act iunile protocolului.
(a) Alice i trimite lui Bob mesajul (1).
(b) Bob recupereaza k
1
dupa primirea mesajului (1) si i returneaza lui
Alice mesajul (2).
(c) Dupa decriptarea mesajului (2), Alice verica daca cheia recuperata
k
1
corespunde celei trimise n mesajul (1). Alice i trimite lui Bob mesajul
(3).
(d) Dupa decriptarea mesajului (3), Bob verica daca cheia recuperata k
2
corespunde celei trimise n mesajul (2). Cheia de sesiune poate
calculata ca f (k
1
, k
2
) folosind o funct ie one-way potrivita f .
Protocoale cu semnatura
Tipuri:
semneaza cheia, apoi cripteaza cu cheie publica cheia semnata
semneaza cheia si separat cripteaza cu cheie publica cheia
nesemnata
cripteaza cu cheie publica cheia, apoi semneaza cheia criptata
Exemple de ultimul tip sunt protocoalele de autenticare tare
X.509. Ambele au fost create pentru a furniza urmatoarele
respondentului Bob.
identitatea lui Alice si faptul ca token-ul (date protejate
criptograc) primit de catre Bob a fost construit de catre
Alice (si nu a fost alterat ulterior)
token-ul primit de catre Bob a fost direct ionat specic catre el
token-ul primit de catre Bob este recent
secretul reciproc al cheii transferate
Autenticare tare X.509 (2 pasi)
Sumar: Alice i trimite lui Bob un mesaj, iar Bob raspunde cu un mesaj.
Rezultat: Autenticarea reciproca a entitat ii si transport de cheie cu
autenticare de cheie.
1. Notat ie.
P
X
(y) este rezultatul aplicarii cheii publice a lui X datei y.
S
X
(y) este rezultatul aplicarii semnaturii cu cheie privata a lui X datei y.
r
A
, r
B
sunt numere utilizate o singura data.
cert
X
este un certicat care leaga o parte X de o cheie publica potrivita
pentru criptare si pentru vericarea semnaturii.
2. Pregatirea sistemului.
(a) Fiecare parte are perechea sa de chei publice/private pentru
semnatura si criptare.
(b) Alice obt ine (si autentica) cheia publica de criptare a lui Bob.
3. Mesajele protocolului. (Campurile opt ionale sunt notate cu (*).)
Fie D
A
= (t
A
, r
A
, B, data
1
, P
B
(k
1
)
), D
B
= (t
B
, r
B
, A, r
A
, data
2
, P
A
(k
2
)
).
A B : cert
A
, D
A
, S
A
(D
A
) (1)
A B : cert
B
, D
B
, S
B
(D
B
) (2)
Autenticare tare X.509 (2 pasi) (cont.)
4. Act iunile protocolului.
(a) Alice obt ine o marca de timp t
A
care indica ora de expirare, genereaza
r
A
, opt ional obt ine o cheie simetrica k
1
si i trimite lui Bob mesajul (1).
(data
1
este opt ionala pentru autenticarea originii datelor.)
(b) Bob verica autenticitatea cert
A
, extrage semnatura cu cheie publica
a lui Alice si verica semnatura lui Alice pentru blocul de date D
A
.
Apoi Bob verica daca identicatorul din mesajul (1) este destinatarul
vizat, marca de timp este valida si r
A
nu a fost refolosit.
(c) Daca toate acestea se verica, Bob declara valida autenticarea lui
Alice, decripteaza k
1
folosind cheia sa provata si salveaza cheia comuna
obt inuta. (Aceasta ncheie protocolul daca se doreste doar autenticare
unilaterala.)
Apoi Bob obt ine marca de timp t
B
, genereaza r
B
si i trimite lui Alice
mesajul (2). (data
2
este opt ionala, iar k
2
este o cheie simetrica opt ionala
pentru Alice.)
(d) Alice efectueaza act iuni similare celor ale lui Bob.
Daca toate acestea se verica, Alice declara valida autenticarea lui Bob
si salveaza cheia comuna k
2
obt inuta.
Acum Alice si Bob au dou a chei secrete comune k
1
si k
2
.
Autenticare tare X.509 (3 pasi)
Sumar: Alice si Bob schimba 3 mesaje.
Rezultat: acelasi ca la protocolul anterior, fara a cere marci de timp.
Protocolul difera de cel anterior astfel:
1. Marcile de timp t
A
si t
B
pot xate la zero si nu trebuie vericate.
2. Dupa primirea mesajului (2), Alice verica daca valoarea primita r
A
corespunde celei din mesajul (1).
3. Un al treilea mesaj este trimis de la Alice la Bob:
A B : (r
B
, B), S
A
(r
B
, B) (3)
4. Dupa primirea mesajului (3), Bob verica daca semnatura corespunde
textului clar primit, daca identicatorul lui Bob de text clar este corect si
daca textul clar primit r
B
corespunde celui din mesajul (2).
Acord de chei bazat pe tehnici asimetrice
Exemple de astfel de protocoale
Die-Hellman
ElGamal
Acord de chei Die-Hellman (versiunea de baza)
Sumar: Alice si Bob si trimit cate un mesaj pe un canal deschis.
Rezultat: cheie secreta comuna K cunoscuta lui Alice si Bob.
1. Pregatire. Se selecteaza si se publica un numar prim potrivit p si un
generator al lui Z
p
(2 p 2).
2. Mesajele protocolului.
A B :
x
mod p (1)
A B :
y
mod p (2)
3. Act iunile protocolului. Se efectueaza urmatorii pasi de ecare data
cand este necesara o cheie comuna.
(a) Alice alege un numar secret aleator x, 1 x p 2, si i trimite lui
Bob mesajul (1).
(b) Bob alege un numar secret aleator y, 1 y p 2, si i trimite lui
Alice mesajul (2).
(c) Bob primeste
x
si calculeaza cheia comuna K = (
x
)
y
mod p.
(d) Alice primeste
y
si calculeaza cheia comuna K = (
y
)
x
mod p.
Acord de chei ElGamal (Die-Hellman part ial certicat)
Sumar: Alice i trimite lui Bob un singur mesaj.
Rezultat: cheie secreta comuna K cunoscuta lui Alice si Bob.
1. Pregatire. Bob efectueaza urmatoarele:
Alege un numar prim potrivit p si un generator al lui Z
p
.
Alege un numar ntreg aleator b, 1 b p 2, si calculeaza
b
mod p.
Bob publica cheia sa publica (p, ,
b
) si o t ine secreta pe cea privata b.
2. Mesajele protocolului.
A B :
x
mod p (1)
3. Act iunile protocolului. Se efectueaza urmatorii pasi de ecare data
cand este necesara o cheie comuna.
(a) Alice obt ine o copie autentica a cheii publice a lui Bob (p, ,
b
).
Alice alege un numar ntreg aleator x, 1 x p 2, si i trimite lui Bob
mesajul (1).
Alice calculeaza cheia K = (
b
)
x
mod p.
(b) Dupa primirea mesajului (1), Bob calculeaza aceeasi cheie
K = (
x
)
b
mod p.