0% found this document useful (1 vote)
187 views275 pages

Matematica

This document provides an introduction to modular arithmetic and cryptography. It discusses complexity theory, algorithms like Euclid's algorithm, congruences, and Euler's function. The document includes a bibliography of references on topics like number theory, cryptography, coding theory, and quantum computing. It also discusses asymptotic time complexity using big O notation and defines classes like P, NP, and NP-complete problems.

Uploaded by

gocull
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (1 vote)
187 views275 pages

Matematica

This document provides an introduction to modular arithmetic and cryptography. It discusses complexity theory, algorithms like Euclid's algorithm, congruences, and Euler's function. The document includes a bibliography of references on topics like number theory, cryptography, coding theory, and quantum computing. It also discusses asymptotic time complexity using big O notation and defines classes like P, NP, and NP-complete problems.

Uploaded by

gocull
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 275

Aritmetica modulara si criptograe

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.

In general, prin pas vom nt elege o operat ie pe bit i.


Estimarea timpului necesar realizarii unei operat ii: numarul
de operat ii pe bit i necesare, neglijand memorarea, testele
logice etc., care n general sunt mai put in consumatoare de
timp decat operat iile pe bit i.

In general este dicil de determinat timpul exact de execut ie a unui


algoritm. E necesara gasirea unor aproximari, cum ar timpul de
execut ie asimptotic, care nseamna modul n care timpul de
execut ie creste atunci cand marimea input-ului creste nemarginit.
Notat ia O
Vom considera funct ii f : N R cu f (n) 0, n n
0
(suntem
interesat i de valori mari ale lui n).
Denit ie
Scriem f (n) = O(g(n)) daca c R
+
si n
0
N astfel ncat
0 f (n) cg(n) n n
0
.
De fapt, notat ia O ne spune ca f nu creste mai repede decat g,
abstract ie facand de o constanta.
Daca lim
n
f (n)
g(n)
este nita, atunci f (n) = O(g(n)). Daca limita este
nenula, atunci avem atat f (n) = O(g(n)) cat si g(n) = O(f (n)).
Teorema
(i) f (n) = O(f (n)).
(ii) f (n) = O(g(n)), g(n) = O(h(n)) f (n) = O(h(n)).
(iii) f (n) = O(h(n)), g(n) = O(h(n)) (f + g)(n) = O(h(n)).
(iv) f (n) = O(h(n)), g(n) = O(l (n)) (f g)(n) = O(h(n)l (n)).
Exemple. (a) Daca f (n) = a
0
+ a
1
n + + a
k
n
k
este un polinom
n n de grad k cu tot i a
k
> 0, atunci f (n) = O(n
k
).
(b) Fie 0 < < 1 < . Atunci:
1 < log log n < log n < e

log n log log n


< n

< 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

, (n) = |{k N | k < n si (k, n) = 1}| se


numeste funct ia lui Euler.
Teorema
(i) Daca (m, n) = 1, atunci (mn) = (m)(n).
(ii) Daca p este numar prim, atunci (p) = p 1.
(iii) Daca n = p
k
si p este prim, atunci (n) = n
_
1
1
p
_
.
(iv) Daca n = p
k
1
1
. . . p
k
j
j
si p
1
, . . . , p
j
sunt numere prime, atunci
(n) = n
_
1
1
p
1
_
. . .
_
1
1
p
j
_
.
(n) poate usor calculata daca se cunoaste factorizarea lui n.
Exemplu.
(98) = (2 7
2
) = (2) (7
2
) = (2 1) 7
2
(1
1
7
) = 42.
Exponent iere modulara prin ridicare succesiva la patrat
Sa calculam b
k
mod n, unde b, k N sunt numere mari. Se
observa ca este sucient sa consideram b < n, altfel putand face
mai ntai o reducere modulo n.
Scriem k n binar: k =

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).

In general, testele de primalitate nu ofera un factor prim al lui


n, ci doar informat ia daca n este compus.
Dintre testele de primalitate, doar cel mai lent ofera un factor
prim al lui n.
O scurta istorie a metodelor de factorizare
Gasirea prin ncercare a unui divizor (folosita pentru a
determina factori primi mici)
Metoda lui Pollard (1975; folosita pentru a determina factori
primi relativ mici)
Metoda fract iilor continue (1975; ideea de baza de factori este
ecientizata)
Metoda sitei patratice (Pomerance 1981; cea mai ecienta
pentru numere cu cel mult 100 de cifre)
Metoda sitei corpului numeric (anii 1990; cea mai ecienta
pentru numere cu mai mult de 100 de cifre)
Metoda curbelor eliptice (Lenstra 1987; cea mai ecienta
pentru gasirea de divizori cu 20-25 cifre))
Observat ie. Toate sunt de timp exponent ial!
Metoda (Pollard)
Problema auxiliara
Fie S o mult ime nita cu n elemente, f : S S o funct ie
aleatoare si x
0
S. Consideram sirul denit prin
x
j +1
= f (x
j
), j N.
Deoarece S este nita, sirul are un ciclu, pe care vrem sa-l gasim.
Reducere: problema revine la a gasi 2 indici j si k (j < k) astfel
ncat x
j
= x
k
.
Metoda lui Floyd: pornim cu perechea (x
1
, x
2
) si calculam
succesiv (x
j
, x
2j
) din perechea (x
j 1
, x
2(j 1)
) pana cand gasim m
astfel ca x
m
= x
2m
.
Exista un astfel de m, de exemplu e m cel mai mic multiplu al lui
l mai mare sau egal cu j , sa zicem m = ls. Atunci
x
m
= x
ls
= x
ls+l
= x
l (s+1)
= x
l (s+2)
= = x
l 2s
= x
2m
.
Ideea metodei lui Pollard:
Fie p un factor prim al lui n. Algoritmul al lui Pollard ncearca sa
gaseasca repetit ii n sirul denit prin x
0
= 1 si
x
j +1
= f (x
j
) mod p, j N,
unde f : Z
p
Z
p
este o funct ie aleatoare usor de evaluat.
Pentru a gasi un indice m astfel ncat x
m
= x
2m
(mod p) se
foloseste metoda lui Floyd. Deoarece p nu este cunoscut, se
calculeaza termeni x
j
modulo n si apoi se testeaza daca
d = (x
m
x
2m
, n) > 1.
Daca 1 < d < n, atunci d este un factor netrivial al lui n.
Observat ii.
(a) Situat ia d = n apare cu o probabilitate neglijabila.
(b)

In general f este o funct ie polinomiala (dar nu liniara, bijectiva,
f (x) = x
2
sau f (x) = x
2
2 ...), de obicei f (x) = x
2
+ 1.
Algoritmul al lui Pollard
Input: un numar compus impar n si opt ional f (implicit f (x) = x
2
+ 1).
Output: un factor netrivial d al lui n.
Algoritm:
a := 2; b := 2;
While d=1 do
a := f (a) mod n;
b := f (b) mod n;
b := f (b) mod n;
d := Euclid(a b, n);
If 1 < d < n then output d;
else output ESEC.
Daca algoritmul se ncheie cu un esec, atunci se repeta pentru alta
funct ie polinomiala.
Teorema
Cu anumite condit ii tehnice rezonabile asupra lui f si x
0
, metoda
a lui Pollard gaseste un factor netrivial al lui n n O(
4

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

. Dar deoarece 1872 = 2


4
3
2
13,
folosind (iii) obt inem (
n
p
) = (
13
7411
). Deoarece 13 = 1 (mod 4),
avem

13
7411

7411
13

1
13

= 1. Deci n nu este rest


patratic modulo p.
Dezavantaj: factorizarea.
Simbolul lui Jacobi
Se poate evita factorizarea numerelor impare folosind o
generalizare a legii reciprocitat ii patratice care are loc pentru orice
numar ntreg impar n 3.
Denit ie
Fie a Z si e n 3 impar. Daca n = p
k
1
1
. . . p
k
r
r
, denim
simbolul lui Jacobi ca produsul simbolurilor lui Legendre pentru
factorii primi ai lui n la puterile corespunzatoare, adica

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

ca n exemplul anterior. Acum nu


factorizam complet 1872, ci doar puterea lui 2.

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.

In practica, d este ales aleator. Aici ncercam d = 2, 3, . . . .


Avem

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 (mod n), caz n care obt inem un


factor netrivial, si anume (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).

In mult i algoritmi de factorizare se exclude situat ia cand


numarul n este patrat perfect.
Problema
Sa se decida daca un numar natural n este patrat perfect.
Precalculam anumite siruri q11, q63, q64 si q65.
Precalculare
1. Pentru k := 0, 10 e q11[k] := 0;
Pentru k := 0, 5 e q11[k
2
mod 11] := 1.
2. Pentru k := 0, 62 e q63[k] := 0;
Pentru k := 0, 31 e q63[k
2
mod 63] := 1.
3. Pentru k := 0, 63 e q64[k] := 0;
Pentru k := 0, 31 e q64[k
2
mod 64] := 1.
4. Pentru k := 0, 64 e q65[k] := 0;
Pentru k := 0, 32 e q65[k
2
mod 11] := 1.
Testul radacinii patrate
Input: un numar natural n.
Output: n este patrat perfect sau nu, iar n caz armativ
radacina patrata a lui n.
Algoritm:
1. Fie t := n mod 64. Daca q64[t] = 0, atunci n nu este
patrat perfect. Altfel, e
r := n mod 63 65 11 = n mod 45045.
2. Daca q63[r mod 63] = 0, atunci n nu este patrat perfect.
3. Daca q65[r mod 65] = 0, atunci n nu este patrat perfect.
4. Daca q11[r mod 11] = 0, atunci n nu este patrat perfect.
5. Calculam q = [

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 continuare K este un corp comutativ si K[X] este inelul de


polinoame peste K.
Inelele Z si K[X] au proprietat i similare.
Teorema mpart irii cu rest
Fie f , g K[X] cu g = 0. Atunci !q, r K[X] astfel ncat
f = gq + r , unde grad(r ) < grad(g).
Denit ie
Fie f , g K[X], f = 0, g = 0. Un polinom d K[X] se numeste
un c.m.m.d.c. al lui f si g daca:
(1) d|f si d|g;
(2) d
1
K[X], d
1
|f si d
1
|g = d
1
|d;
(3) d este monic (coecientul termenului de grad maxim este 1).
Notat ie: (f , g). Fara (3), c.m.m.d.c. nu este unic.
Teorema
Fie f , g K[X].
(i) (f , g) se calculeaza cu algoritmul lui Euclid.
(ii) Daca d = (f , g), atunci u, v K[X]: d = fu + gv.
(iii) (f , g) = 1 u, v K[X]: 1 = fu + gv f
1
mod g.

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.

Cateva documente cu texte cifrate se pastreaza din timpul


guvernului Ghaznavid al Persiei cucerite, si un cronicar
povesteste ca nalt ilor ociali li se dadea cate un cifru personal
nainte de a trimisi la noile posturi.
1226
O falsa criptograe politica apare n arhivele Venet iei, unde
vocalele din anumite cuvinte sunt nlocuite cu puncte sau
cruci.
cca 1250
Roger Bacon (calugar franciscan) nu numai ca descrie mai
multe cifruri, dar si scrie: Un om este nebun daca scrie un
secret n orice fel pe care nu-l ascunde.
1379
Gabrieli di Lavinde, la cererea papei Clement VII, compileaza
o combinat ie dintre un alfabet de substitut ie si un cod
probabil primul exemplu de nomenclator.
anii 1300
Abd al-Rahman Ibn Khaldun scrie The Muqaddimah, o
carte de istorie care ment ioneaza folosirea de nume de
parfumuri, fructe, pasari, sau ori pentru a indica literele, sau
forme ale literelor diferite de cele obisnuite ca si cifru al
colectorilor de taxe si al armatei.
1392
The Equatorie of the Planetis, probabil scrisa de Georey
Chaucer, cont ine pasaje cifrate. Cifrul este o substitut ie
simpla, cu un alfabet cifrat constand din litere, cifre si
simboluri.
1412
Shihab al-Din abu l-Abbas Ahmad ben Ali ben Ahmad Abd
Allah al-Qalqashandi scrie Subh al-a sha, o enciclopedie
araba n 14 volume, care include un capitol despre criptologie,
ment ionand cifrurile de substitut ie si transpozit ie si, pentru
prima data, un cifru cu substitut ii multiple pentru ecare
litera a textului clar.
1466-7
Leon Battista Alberti inventeaza si publica primul cifru
polialfabetic, creand un disc de cifrare pentru a simplica
procesul.
14501520 ?
Este scris manuscrisul Voynich, un exemplu de carte ilustrata
probabil codata.
1518
Johannes Trithemius scrie prima carte tiparita despre
criptologie (Polygraphiae). El inventeaza un cifru
steganograc, unde ecare litera este reprezentata de un
cuvant luat dintr-o succesiune de coloane.
1553
Giovan Batista Belaso foloseste o parola ca si cheie pentru un
cifru polialfabetic repetat. Acesta este cifrul Vigen`ere.
1563
Giovanni Battista Porta publica o carte despre coduri, unde
include primul cifru folosind digrafe.
1564
Belaso publica un cifru cu autocheie (cont ine mesajul n
cheie) mbunatat indu-l pe cel al lui Cardano.
1585
Blaise de Vigen`ere scrie o carte despre cifruri, care include
primele sisteme autentice de text clar si cifrat cu autocheie.
1586
Criptanaliza e folosita de catre spionul Sir Francis Walsingham
pentru a o implica pe regina Maria a Scot iei n complotul
Babington pentru a o ucide pe regina Elisabeta I a Angliei.
1623
Sir Francis Bacon descrie un cifru biliteral, cunoscut azi ca si
codare binara pe 5 bit i.
anii 1790
Thomas Jeerson inventeaza roata de cifrare. Aceasta este
reinventata ulterior n diverse forme si folosita n al 2-lea
Razboi Mondial de catre US Navy sub numele de cifru Strip,
M-138-A.
18091814
George Scovell mbunatat este cifrurile napoleonice n timpul
Razboiului Peninsular.
1854
Charles Wheatstone inventeaza cifrul Playfair, o tehnica
manuala de criptare simetrica, un cifru de substitut ie pe
digrafe.
1854
Charles Babbage gaseste o metoda de a sparge cifruri
polialfabetice.
1863
Friedrich W. Kasiski publica o carte n care da solut ia generala
pentru spargerea unui cifru polialfabetic cu parola care se
repeta (vezi si C. Babbage), acesta ind nalul catorva sute
de ani n care cifrul polialfabetic a fost considerat invincibil.
18611865

In timpul Razboiului civil, probabil printre alte cifruri, Uniunea


foloseste substitut ia anumitor cuvinte urmata de o transpozit ie
a cuvintelor pe coloane, iar Confederat ia foloseste cifrul
Vigen`ere (a carui solut ie tocmai fusese publicata de Kasiski...).
1883
Este publicata cartea La Cryptographie militaire de Auguste
Kerckhos, carte care cont ine celebrele sale legi ale
criptograei. De exemplu: un criptosistem trebuie sa e sigur
chiar daca se cunoaste totul despre el, cu except ia cheii.
1885
Sunt publicate cifrurile Beale.
1891
Maiorul Etienne Bazeries creeaza versiunea sa a rot ii de cifrare
si publica designul n 1901 dupa ce armata franceza i l-a
respins.
1894
Afacerea Dreyfus din Frant a implica folosirea criptograei, dar
si utilizarea ei gresita, n ceea ce priveste documente false.
1917
William Frederick Friedman, care va ulterior considerat
parintele criptanalizei n SUA, este angajat ca si criptanalist
civil la Riverbank Laboratories si foloseste statistica pentru a
face criptanaliza pentru guvernul SUA.
1917
Gilbert S. Vernam, care lucra pentru AT&T, inventeaza o
masina de cifrare polialfabetica care este capabila sa
foloseasca o cheie aleatoare care nu se repeta one-time-tape.
Acesta pare sa e singurul cifru despre care se poate
demonstra ca este sigur.
1918
Sistemul ADFGVX ncepe sa e folosit de catre germani catre
sfarsitul Primului Razboi Mondial. Acesta era un cifru care
facea o substitut ie (print-un sir depinzand de o cheie),
fract ionare si apoi transpozit ie a literelor fract ionate.
1919
Hugo Alexander Koch nregistreaza n Olanda un patent
pentru o masina de cifrare bazata pe un rotor. El cedeaza
drepturile acestui patent n 1927 lui Arthur Scherbius, care
inventeaza si vinde masina Enigma dupa 1923.
1919
Arvid Gerhard Dammnregistreaza n Suedia un patent pentru
o masina de cifrare bazata pe un rotor mecanic.
1921
Edward Hugh Hebern nint eaza Hebern Electric Code,
fabricand masini de cifrare electro-mecanice bazate pe rotoare
care se rotesc ca si contoarele si cifreaza ecare caracter.
1923
Arthur Scherbius nint eaza Chiriermaschinen
Aktiengesellschaft pentru a fabrica si vinde masina sa
Enigma.
1924
Alexander von Kryha produce masina de codare care este
folosita n anii 1950, inclusiv de catre corpul diplomatic
german. Totusi, aceasta era slaba din punct de vedere
criptograc, avand o perioada mica.
1927-33
Cea mai mare era de contrabanda internat ionala Prohibit ia
creeaza cea mai mare era a criptologiei criminale.
1929
Lester S. Hill publica Cryptography in an Algebraic
Alphabet n care un bloc de text clar se cifreaza printr-o
operat ie cu matrice.
1931
Se publica The American Black Chamber de Herbert O.
Yardley, care dezvaluie multe despre criptograa americana.
1933-45
Masina Enigma nu a fost un succes comercial, dar a fost
preluata si mbunatat ita, urmand sa devina calul de bataie
al Germaniei naziste. A fost sparta de catre matematicianul
polonez Marian Rejewski. Spargeri ulterioare s-au bazat pe
dezvoltari ale lui Alan Turing, Gordon Welchman si alt ii, la
Bletchley Park n Anglia.
1937
Masina japoneza Purple foloseste relee telefonice n loc de
rotoare si deci are o permutare complet diferita la ecare pas
n loc de permutari relat ionate ale unui rotor n diferite pozit ii.
A fost sparta de catre serviciul SIS din Marea Britanie.
anii 1930
Masina americana SIGABA (M-134-C) este creata de catre
William F. Friedman (probabil dupa o idee a lui Frank
Rowlett). Aceasta mbunatat ea rotoarele lui Hebern si
Scherbius, folosind pasi pseudoaleatori pentru rotoare multiple
la ecare pas de cifrare. Folosea 15 rotoare, si nu doar 3 sau 4
ca Enigma.
Masina britanica TYPEX este o urmasa al masinii comerciale
Enigma, cumparate pentru studiu n anii 1920 de catre
britanici. Aceasta era o masina cu 5 rotoare, avand 2 rotoare
init iale ca si statori.
1943
Este construit calculatorul Colossus de catre Thomas Flowers
la The Post Oce Research Laboratories din London, pentru
a sparge cifrul german Lorenz (SZ42).
1951 - Se nint eaza U.S. National Security Agency (NSA).
Masina cu rotoare KL-7 este introdusa n urmatorii ani.
1970

In anii 1960, Dr. Horst Feistel conduce un proiect de cercetare


la IBM Watson Research Lab, din care s-a dezvoltat cifrul
Lucifer. Acesta va inspira ulterior US Data Encryption
Standard (DES) si alte aplicat ii de cifrare, creand familia
denumita cifruri Feistel.
19691975
James Ellis, Cliord Cocks si Malcolm Williamson descopera
fundamentele criptograei cu cheie publica pentru General
Communications Head Quarters din Marea Britanie, dar
acestea raman secrete.
1976
Un design al IBM, bazat pe un cifru Lucifer schimbat
(incluzand mbunatat iri pentru S-box si reducerea marimii
cheii) al NSA, este ales ca si Data Encryption Standard
(folosit pana spre sfarsitul anilor 1990).
Whiteld Die si Martin Hellman publica New Directions in
Cryptography, introducand ocial ideea de criptograe cu
cheie publica. Ei introduc si ideea de autenticare cu ajutorul
unei funct ii one way.
1977
Ronald L. Rivest, Adi Shamir si Leonard M. Adleman creeaza
algoritmul RSA, care este un cifru practic cu cheie publica
folosit pentru condent ialitate si pentru semnaturi digitale,
bazat pe dicultatea factorizarii numerelor mari.
1978
Este publicat algoritmul RSA.
1981
Richard Feynman propune calculatorul cuantic.
1982 sau mai devreme
Cifrul rot13 este introdus n software-ul USENET News.
Acesta este unul dintre primele exemple n care un cifru cu o
cheie cunoscuta poate folosit la ceva.
1984 - Bazandu-se pe ideea lui Stephen Wiesner din anii 1970,
Charles Bennett si Gilles Brassard descriu primul protocol
pentru criptograe cuantica (BB84).
1989
Criptograa cuantica este demonstrata experimental printr-un
experiment de catre Charles Bennett et al.
1990
Xuejia Lai si James Massey din Elvet ia publica A Proposal
for a New Block Encryption Standard, propunand IDEA
(International Data Encryption Algorithm) pentru a nlocui
DES. IDEA utilizeaza o cheie pe 128 de bit i si foloseste
operat ii care sunt convenabile pentru calculatoare generale.
1991
Phil Zimmermann lanseaza prima sa versiune a PGP (Pretty
Good Privacy) ca raspuns la intent ia FBI de a cere aces la
textul clar al comunicat iilor dintre cetat eni. PGP oferea o
securitate ridicata pentru publicul larg, era freeware si a
devenit un standard raspandit n ntreaga lume.
1994
Protocolul de criptare Secure Sockets Layer (SSL) este lansat
de catre Netscape.
Profesorul Ron Rivest publica algoritmul RC4 pe Internet.
Acest algoritm foloseste rotat ii depinzand de date ca operat ie
neliniara, parametrizat astfel ca utilizatorul sa poata varia
dimensiunea blocului, numarul de runde si lungimea cheii.
1995
NSA publica algoritmul hash SHA1 ca si parte a Digital
Signature Standard.
2001
Algoritmul belgian Rijndael este selectat ca si Advanced
Encryption Standard (AES) dupa un proces de cautare de 5
ani desfasurat de catre National Institute for Standards and
Technology.
2000-2003
Proiectul de cercetare european NESSIE (New European
Schemes for Signatures, Integrity and Encryption) este
nant at pentru a identica algoritmi criptograci siguri.
2004
Algoritmul hash MD5 (lansat n 1991) se dovedeste vulnerabil
la atac prin coliziune.
2005
Este demonstrata posibilitatea de atac asupra algoritmului
hash SHA1.
Algoritmul WEP (Wired Equivalent Privacy) pentru
securizarea ret elelor wireless (introdus n 1999) este spart
folosind instrumente care pot accesate public.
Un discurs al lui John Gordon
Din discursul The Alice and Bob After Dinner Speech prezentat
la un seminar din Zurich, n aprilie 1984, de catre John Gordon:
... So lets talk about coding theory. There are perhaps some of you here
tonight who are not experts in coding theory, but rather have been dragged
here kicking and screaming. So I thought it would be a good idea if I gave you
a sort of instant, ve minute graduate course in coding theory.
Coding theorists are concerned with two things. Firstly and most
importantly they are concerned with the private lives of two people called Alice
and Bob. In theory papers, whenever a coding theorist wants to describe a
transaction between two parties he doesnt call them A and B. No. For some
longstanding traditional reason he calls them Alice and Bob.
Now there are hundreds of papers written about Alice and Bob. Over the
years Alice and Bob have tried to defraud insurance companies, theyve played
poker for high stakes by mail, and theyve exchanged secret messages over
tapped telephones.
If we put together all the little details from here and there, snippets from
lots of papers, we get a fascinating picture of their lives. This may be the rst
time a denitive biography of Alice and Bob has been given.
In papers written by American authors Bob is frequently selling stock to
speculators. From the number of stock market deals Bob is involved in we infer
that he is probably a stockbroker. However from his concern about
eavesdropping he is probably active in some subversive enterprise as well. And
from the number of times Alice tries to buy stock from him we infer she is
probably a speculator. Alice is also concerned that her nancial dealings with
Bob are not brought to the attention of her husband. So Bob is a subversive
stockbroker and Alice is a two-timing speculator.
But Alice has a number of serious problems. She and Bob only get to talk
by telephone or by electronic mail. In the country where they live the telephone
service is very expensive. And Alice and Bob are cheapskates. So the rst thing
Alice must do is minimize the cost of the phone call.
The telephone is also very noisy. Often the interference is so bad that Alice
and Bob can hardly hear each other. On top of that Alice and Bob have very
powerful enemies. One of their enemies is the Tax Authority. Another is the
Secret Police. This is a pity, since their favorite topics of discussion are tax
frauds and overthrowing the government.These enemies have almost unlimited
resources. They always listen in to telephone conversations between Alice and
Bob. And these enemies are very sneaky. One of their favorite tricks is to
telephone Alice and pretend to be Bob.
Well, you think, so all Alice has to do is listen very carefully to be sure she
recognizes Bobs voice. But no. You see Alice has never met Bob. She has no
idea what his voice sounds like.
So you see Alice has a whole bunch of problems to face. Oh yes, and there
is one more thing I forgot so say - Alice doesnt trust Bob. We dont know why
she doesnt trust him, but at some time in the past there has been an incident.
Now most people in Alices position would give up. Not Alice. She has
courage which can only be described as awesome.
Against all odds, over a noisy telephone line, tapped by the tax authorities
and the secret police, Alice will happily attempt, with someone she doesnt
trust, whom she cannot hear clearly, and who is probably someone else, to
ddle her tax returns and to organize a coup detat, while at the same time
minimizing the cost of the phone call.
A coding theorist is someone who doesnt think Alice is crazy...
Information
The other thing coding theorists are concerned with is information.
Nothing else is like information. Information is very peculiar stu. It can both
be created and destroyed. You can steal it without removing it. You can often
get some just by guessing. Yet it can have great value. It can be bought and
sold.
One type of information is called Money.
There are people who refuse to concede that money can be created and
destroyed. They spend their entire lives altering records and making
adjustments to ensure that every time a bit of money leaves some place, an
equal bit seems to appear somewhere else. These people are called accountants.
Source, channel and secrecy coding
Coding theory, like Gaul, is divided into three parts, called source coding,
channel coding and secrecy coding.
First Ill tell you about source coding. Source coding is what Alice uses to
save money on her telephone bills. It is usually used for data compression, in
other words, to make messages shorter.
There is a story about a student of information theory on his rst day at
college. He had entered a strange, bizarre world. The only sounds were the
occasional calling out of a number by one of the professors, followed by
laughter. One professor would say 52, there would be a short pause then peals
of laughter. Someone else says 713, same thing, everyone falls down laughing.
Whats going on here? he asked his tutor. Were telling jokes, said his
tutor. Telling jokes? Yes, you see, weve all worked here so long we know
each others jokes. There are a thousand of them. So, being information
theorists we applied data compression. We just assigned them all numbers, 0
through 999. It saves a lot of time and eort. Would you like to try? Just say
any number 0 to 999...
He wasnt fully convinced. But he tried. Very quietly he whispered 477.
Hardly a murmur. He looked at his tutor. Whats wrong? he said. Try
again, says the tutor. So he does. 318 - same again, not a thing, hardly a
murmur. Somethings wrong, he says. Well, says the tutor, its like this -
its not so much the joke as the way you tell it!
There is a curious sequel to this story. This student eventually succeeded
by accident in the most dramatic and unexpected way. He called out a number
outside the range 0 to 999. Minus 105, he said. At rst there was stunned
amazement, then rst one professor laughed, then another then another, till
they were all rolling about holding their sides. None of them had heard that
one before.
Channel coding
Next we come to channel coding. Channel coding is what Alice uses to
overcome the noise and interference on the line. Most people have a natural
instinct for channel coding. What they do is to spell out important words. This
adds redundancy and enables the listener to cross check. If part of the message
is lost the missing bit can be reconstructed from the remaining part.
Many organizations such as the military, the aviation community, the Police
and so on use a standard phonetic alphabet specially designed for this purpose.
It goes Alpha, Bravo, Charlie, Delta, Echo, Foxtrot, etc. So one says Mike
and November, which is much clearer than saying M and N which are
easily confused otherwise.
Alice uses this to explain to Bob that her husband Michael is getting
suspicious of her stock option dealing. I have to tell you about Mike, she
says. But Bob hears I XXve to tell u XXt Xxike. Whats that again? says
Bob. I have to tell you about Mike, says Alice. Didnt get the last word
Alice, says Bob, can you spell it out? Mike India Kilo Echo says Alice.
Got India Kilo Echo, what was the rst word? says Bob. Mike Can you
spell that? Mike India Kilo Echo etc. ...
Secrecy coding
Finally we come to Secrecy Coding, or Cryptography. Secrecy Coding is
what Alice uses to try to stop the tax authorities and the secret police
understanding her telephone conversations.
Now cryptographers are very peculiar people. They have very devious
minds. Sometimes they encrypt jokes. Security agencies call these Covert
Jokes. People who make them are CryptoLaers. An intelligible joke in its raw
form is called the Plainjoke, and after encryption is called the Cipherjoke or
Cryptojoke. Cipherjokes are intelligible of course only after Decryption, or as
some people call it, after explanation.
There are three kinds of attack on an unintelligible cryptojoke according to
the Jokeanalysts resources. Firstly there is the Cipherjoke-only attack in which
the Jokeanalyst is assumed to have unlimited amounts of material which is
alleged to be funny. Secondly and more powerfully there is the Known
Plainjoke Attack in which he is given examples of jokes together with their
explanations. But most powerful of all is the Chosen Plainjoke Attack where he
gets to ask the Cryptolaer to explain WHY the joke is funny.
Feeble jokes are usually encrypted using only a very simple cipher, like
changing the punch line. This is called the DEFLECTED ENDING SYSTEM or
DES. Very good jokes, the comprehension of which by outsiders could
constitute a threat to national security, are encrypted much more securely,
usually by completely changing the scenario, the plot and the conclusion. This
is the PARTICULARLY KLEVER COVERUP or PKC. The best known PKC
RESISTS SERIOUS ATTACK and is therefore called the RSA. As a corollary of
course, it follows that only very gifted, intelligent people can truly appreciate a
funny speech.
Standardisation
Since it is dicult to design a good cipher, and since the apparatus is very
expensive, a lot of work has been done recently to try to standardize on them.
Even as I speak the International Standards Organization is meeting to decide
on this very issue. Since there is a lot of confusion on this point I have been
asked to make the position clear. The purpose of language is to convey
information. This only works if both sender and receiver of information both
use the same system. In other words language only works precisely because it is
standardized.
The purpose of cryptography on the other hand is to make the message
unintelligible except to one person. In other words cryptography only works
precisely because it is NOT standardized.So what they do is to make most of
the cipher standardized, and to concentrate the non-standardization into one
part called the key.
So far so good. But of course the key, the non-standardized part, must be
nonstandard in only standardized ways. And also key management must
conform to certain standards. In other words standards are being formulated
whereby the nonstandard parts, which must conform to certain standards of
non-standardization, are also to be handled only in a standardized nonstandard
way in order to standardize on the overall non-standardization. I hope this
makes the position clear.
Weak keys
Many ciphers have certain bad keys. If you use one of them the cipher is
easily broken. For instance all-zeros is a weak key for the DES. There has been
a lot of research done into searching for weak keys. Over the years more and
more weak keys have been found till now one has to be quite careful to avoid
them.
Perhaps it would be a better idea if we looked for strong keys. In fact, why
not look for THE STRONGEST POSSIBLE KEY. Then we could all
standardize on it.
Processing delay
Coding theory is not without its problems. The introduction of source
coding, channel coding and secrecy coding often introduces something called
PROCESSING DELAY. This is the delay caused by the time it takes to do all
this coding and decoding. These delays can be enormous.
History gives us instances when this delay has changed the course of world
events. There is a recorded case of a two-word military signal which suered a
processing delay of 150 years. The message, deciphered at the Pentagon in
1972, simply read Send Reinforcements. It was sent on 1830 from Little
Bighorn by General Custer.
Consider the message: Return home at once, trip cancelled. and think of
the eect on world events if it had been decoded in time. It was sent in 1492
by Isobella of Spain to Christopher Columbus.
But these delays are nothing in comparison with the next example. We are
told by Suetonius that Julius Caesar communicated with the Orator Cicero in a
cipher in which A was sent as B, B as C and so on. If you apply this
cipher to HAL - the computer in the Stanley Kubrick movie: 2001 - you get
IBM. Some correspondence from Julius Caesar to Cicero in this complex cipher
have nally been deciphered by GCHQ and will be published in the June edition
of Cryptologia. Their contents paint a disturbingly dierent picture of the
world from Caesars ocial dispatches to Rome in De Bello Gallico.
I am privileged to have an advance copy, from which I will read you an extract.
Alexandria, April 14th 48 BC (think about it)
Dear Marcus Tullius,
Thank the Gods you and I have a secure cipher. I would not care to have our
messages read by my enemies. Frankly I dont trust most of the Senate. Take Mark
Anthony. Would you trust him? Hes so incompetent he couldnt organize a libation
at an orgy. Take Gaius Brutus. Would you buy a used chariot from this man? I think
hes plotting behind my back. Sometimes he scares the toga o me.
And as for the Gauls. What a bunch of morons. I thought all their problems
would be solved when we formed the GEC -the Gallic Economic Community. But what
happens? We guarantee minimum prices on food exports, the so called Green
Denarius. We provide subsidies on cheap labor saving gadgets - like slaves. Then
what happens? We get a run on the Denarius. Ination runs at record levels. And
they squander our subsidies on gross overproduction of wine. We have to sell it o
cheap to the Barbarians to maintain the price level within the GEC.
Im fed up with the whole business. When I get back to Rome Ill retire. I have it
all planned. I lied about the size of Gaul in my ocial dispatches. Ive found the most
divine little spot for my retirement which Im keeping quiet about. Im not having
those Senators getting their grubby hands on it. And Ive taken steps to make sure
they never can. So for your ears alone Marcus Tullius, I have my special, secret
retirement place all organized. It doesnt appear on any map because I authorize the
maps.
Ocially it doesnt exist. So it cant be found or taxed. Ive managed to conceal
a whole extra part of Gaul! So forget De Bello Gallico. The reality is Gaul is divided
into FOUR parts.
Aritmetica modulara si criptograe
Curs 6
Criptograe cu cheie privata
Cuprins
1
Cateva criptosisteme simple
Cifru Cezar
Cifru de substitut ie
Cifru an
Cifru Porta
Cifru Belaso (Vigen`ere)
Cifru Vernam (one-time pad)
Cifru Hill
Cifru de permutare
Clasicare
2
Un exemplu de criptanaliza
3
Masini de cifrat
Scop fundamental al criptograei
Sa permita pentru doua persoane (Alice si Bob) sa comunice pe un
canal nesigur astfel ca un oponent (Oscar sau Eve) sa nu poata
nt elege mesajul.
Denit ie
Criptosistem: (P, C, K, E, D) astfel ca:
P este o mult ime nita de texte clare posibile.
C este o mult ime nita de texte cifrate posibile.
K este o mult ime nita de chei posibile.
K K, exista o regula de cifrare e
K
E si o regula de
descifrare d
K
D. Fiecare e
K
: P C si d
K
: C P sunt
funct ii astfel ca d
K
(e
K
(x)) = x pentru orice x P.
Fiecare funct ie de cifrare e
K
trebuie sa e injectiva.
Daca P = C, atunci ecare e
K
este o permutare.
Fiecare e
K
si d
K
trebuie sa poata calculata ecient (ind dat K).
Cifru Cezar
P = C = K = Z
n
(alfabet)
K Z
n
= {0, 1, . . . , n 1}, x, y Z
n
,
e
K
(x) = x + K (mod n),
d
K
(y) = y K (mod n)
Exemplu. n = 27, K = 10.
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: rst example
Numeric: 6 9 18 19 20 0 5 24 1 13 16 12 5
Cifrare: 16 19 1 2 3 10 15 7 11 23 26 22 15
Text cifrat: PSABCJOGKWZVO
Cifru de substitut ie
P = C = Z
n
K = { : Z
n
Z
n
| este bijectiva } (permutari)
K, x, y Z
n
,
e

(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!

In continuare consideram un exemplu de atac de tip doar text


cifrat.
Presupunem ca textul clar este un text n limba engleza, fara
punctuat ie sau spat ii (aceasta face descifrarea mai dicila).
Folosim proprietat i statistice ale limbii engleze.
Criptanaliza unui cifru de substitut ie
Probabilitat ile de aparit ie ale celor 26 litere (Beker si Piper):
A B C D E F G H I J K L M
.082 .015 .028 .043 .127 .022 .020 .061 .070 .002 .008 .040 .024
N O P Q R S T U V W X Y Z
.067 .075 .019 .001 .060 .063 .091 .028 .010 .023 .001 .020 .001
Grupuri de litere:
1. E, cu probabilitate 0.127
2. T, A, O, I, N, S, H, R, cu probabilitat i 0.060-0.091
3. D, L, cu probabilitat i n jur de 0.040
4. C, U, M, W, F, G, Y, P, B, cu probabilitat i 0.015-0.023
5. V, K, J, X, Q, Z, cu probabilitat i mai mici decat 0.010.
Cele mai comune 30 de digrafe sunt (n ordine descrescatoare):
TH, HE, IN, ER, AN, RE, ED, ON, ES, ST, EN, AT, TO, NT, HA,
ND, OU, EA, NG, AS, OR, TI, IS, ET, IT, AR, TE, SE, HI, OF.
Cele mai comune 12 trigrafe sunt (n ordine descrescatoare):
THE, ING, AND, HER, ERE, ENT, THA, NTH, WAS, ETH,
FOR, DTH.
Text cifrat:
YIFQFMZRWQFYVECFMDZPCVMRZWNMDZVEJBTXCDDUMJ
NDIFEFMDZCDMQZKCEYFCJMYRNCWJCSZREXCHZUNMXZ
NZUCDRJXYYSMRTMEYIFZWDYVZVYFZUMRZCRWNZDZJJ
XZWGCHSMRNMDHNCMFQCHZJMXJZWIEJYUCFWDJNZDIR
Tabelul frecvent elor:
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 15 13 7 11 1 4 5 11 1 0 16 9 0 1 4 10 3 2 5 5 8 6 10 20
Grupuri de litere:
Z: 20 ori e
C,D,F,J,M,R,Y,N: cel put in 9 ori t,a,o,i,n,s,h,r
E,H,I,Q,S,T,U,V,W,X: 2-8 ori d,l sau c,u,m,w,f,g,y,p,b
B,G,K,P: 1 data c,u,m,w,f,g,y,p,b sau k,v
A,L,O: 0 ori j,q,x,z
Cautam digrafe de forma *Z si Z*:
DZ, ZW : 4 ori.
NZ, ZU : 3 ori.
RZ, HZ, XZ, FZ, ZR, ZV, ZC, ZD, ZJ : 2 ori.
Digrafe comune de forma *E, E*:
HE, RE, TE, SE, ER, ED, ES, EN, EA, ET.
Deoarece ZW apare de 4 ori si WZ deloc, si W apare mai
put in des decat multe alte caractere, se poate banui ca
d
K
(W) = d. Deoarece DZ apare de 4 ori si ZD apare de 2 ori,
putem banui ca d
K
(D) {r , s, t}.
Deci d
K
(Z) = e si d
K
(W) = d.

Intorcandu-ne la textul cifrat,
observam ca ZRW si RZW apar la nceputul textului cifrat, si
RW apare din nou mai tarziu. Deoarece R apare frecvent n
textul cifrat si nd este un digraf comun, putem ncerca
d
K
(R) = n ca cea mai probabila varianta.
Pana acum avem:
YIFQFMendQFYVECFMDePCVMnedNMDeVEJBTXCDDUMJ
NDIFEFMDeCDMQeKCEYFCJMYnNCdJCSenEXCHeUNMXe
NeUCDnJXYYSMnTMEYIFedDYVeVYFeUMneCndNeDeJJ
XedGCHSMnNMDHNCMFQCHeJMXJedIEJYUCFdDJNeDIn
Acum ncercam d
K
(N) = h, deoarece NZ este un digraf
comun si ZN nu. Daca acest lucru este corect, atunci
segmentul neCndhe sugereaza ca d
K
(C) = a. Deci:
YIFQFMendQFYVEaFMDePaVMnedhMDeVEJBTXaDDUMJ
hDIFEFMDeaDMQeKaEYFaJMYnhadJaSenEXaHeUhMXe
heUaDnJXYYSMnTMEYIFedDYVeVYFeUMneandheDeJJ
XedGaHSMnhMDHhaMFQaHeJMXJedIEJYUaFdDJheDIn
Acum consideram M, care apare de 16 ori. Segmentul de text
cifrat RNM (descifrat ca si nh), sugereaza ca h ncepe un
cuvant, si ca M este probabil o vocala, deci d
K
(M) {i , o}.
Deoarece ai este un digraf mult mai probabil decat ao,
digraful de text cifrat CM sugereaza ca d
K
(M) = i .
Atunci avem:
YIFQFiendQFYVEaFiDePaVinedhiDeVEJBTXaDDUiJ
hDIFEFiDeaDiQeKaEYFaJiYnhadJaSenEXaHeUhiXe
heUaDnJXYYSinTiEYIFedDYVeVYFeUineandheDeJJ
XedGaHSinhiDHhaiFQaHeJiXJedIEJYUaFdDJheDIn
Apoi ncercam sa determinam ce litera este cifrata n o.
Deoarece o este o litera comuna, putem banui ca litera
corespunzatoare de text cifrat este una dintre literele D,F,J,Y.
Litera Y pare sa e cea mai probabila, deoarece altfel am
obt ine sirul de vocale aoi din CFM (aFi ) sau CJM (aJi ). Deci
presupunem ca d
K
(Y) = o.
Urmatoarele 3 cele mai frecvente litere de text cifrat sunt
D,F,J, care s-ar putea descifra ca r , s, t ntr-o anumita ordine.
2 aparit ii ale trigrafului NMD (hiD) sugereaza ca d
K
(D) = s,
obt inand trigraful his. Segmentul HNCMF (HhaiF) ar putea
o cifrare a cuvantului chair, deci d
K
(F) = r (si d
K
(H) = c),
de unde d
K
(J) = t prin eliminare.
Acum avem:
oIrQriendQroVEarisePaVinedhiseVEtBTXassUit
hsIrEriseasiQeKaEorationhadtaSenEXaceUhiXe
heUasntXooSinTiEoIredsoVeVoreUineandhesett
XedGacSinhischairQacetiXtedIEtoUardsthesIn
Descifrarea nala este:
Our friend from Paris examined his empty glass with surprise,
as if evaporation had taken place while he wasnt looking. I
poured some more wine and he settled back in his chair, face
tilted up towards the sun.
Discul Alberti
furnizeaza 26 de alfabete pentru cifruri monoalfabetice de
substitut ie
literele sunt n ordine alfabetica doar pe discul interior
pentru versiunea monoalfabetica: se xeaza o pozit ie pe disc
pentru versiunea polialfabetica: se roteste discul dupa ecare
litera din textul clar, folosind numarul de pozit ii dat de un
cuvant cheie
Text clar: hello
Text cifrat: BAZZJ
(monoalfabetic)
Text cifrat: EFUIP
(polialfabetic cu cuvantul cheie FRIDAY, i.e. 354216)
Roata lui Jeerson
varianta originala folosea 36 de rot i de lemn de aceasi marime
ecare roata are un alfabet amestecat; literele sunt n ordine
alfabetica doar pe roata interioara
lucram pe o versiune plata simplicata
Text clar: remember
Cifrare:
mpart im textul clar n grupuri de 6 litere
rotim discurile astfel ca primele 6 litere sa e n ordinea din
textul clar
scriem oricare dintre celelalte 25 de linii, de exemplu LLFBHF
repetam procedeul cu urmatoarele grupuri de cate 6 litere
Text cifrat: LLFBHF ...
Masini cu rotor si masini Hagelin
Acestea implementeaza cifruri polialfabetice de substitut ie cu
perioada lunga.
Ele genereaza siruri de chei lungi, nu atat de aleatoare pe cat
ar parea, si deci sunt vulnerabile.
Masinile cu rotor folosesc rotoare sau rot i cuplate, n timp ce
masinile Hagelin folosesc rot i cu ace.
Aritmetica modulara si criptograe
Curs 7
Cifrare pe blocuri si pe siruri
Cuprins
1
Cifrare pe blocuri
Moduri de operare
DES (Data Encryption Standard)
2
Cifrare pe siruri
Generalitat i
Cifruri sincrone pe siruri
Cifruri auto-sincronizante pe siruri
Linear feedback shift registers (LFSR)
Cifruri pe siruri bazate pe LFSR
Cifruri pe blocuri
Denit ie
Un cifru pe blocuri este o funct ie care transforma blocuri de
text clar de n bit i n blocuri de text cifrat de n bit i. Numarul n
se numeste lungimea blocului.
prezentam cifruri pe blocuri simetrice
nici un cifru pe blocuri nu este potrivit pentru toate aplicat iile
funct ia este parametrizata de o cheie de k bit i, despre care se
presupune n general ca este aleatoare
folosirea aceleiasi lungimi pentru blocurile de text clar si cifrat
evita extinderea cantitat ii de date
cele mai comune moduri de operare sunt: ECB, CBC, CFB,
OFB
E
K
(E
1
K
) noteaza funct ia de criptare (decriptare) a cifrului pe
blocuri E parametrizat de cheia K
Modul ECB (electronic codebook)
Input: cheie K de k bit i; blocuri x
1
, . . . , x
t
de text clar de n
bit i.
Sumar: produce blocuri c
1
, . . . , c
t
de text cifrat; decripteaza
pentru a obt ine text clar.
1. Criptare: pentru 1 j t, c
j
:= E
K
(x
j
).
2. Decriptare: pentru 1 j t, x
j
:= E
1
K
(c
j
).
Modul CBC (cipher-block chaining)
Input: cheie K de k bit i; vector de init ializare IV de n bit i;
blocuri x
1
, . . . , x
t
de text clar de n bit i.
Sumar: produce blocuri c
1
, . . . , c
t
de text cifrat; decripteaza
pentru a obt ine text clar.
1. Criptare: c
0
:= IV; pentru 1 j t, c
j
:= E
K
(c
j 1
x
j
)
(SAU-exclusiv).
2. Decriptare: c
0
:= IV; pentru 1 j t,
x
j
:= c
j 1
E
1
K
(c
j
).
Modul CFB (cipher feedback)
Input: cheie K de k bit i; vector de init ializare IV de n bit i;
blocuri x
1
, . . . , x
u
de text clar de r bit i (1 r u).
Sumar: produce blocuri c
1
, . . . , c
u
de text cifrat de r bit i;
decripteaza pentru a obt ine text clar.
1. Criptare: I
1
:= IV (I
j
este valoarea de intrare ntr-un
registru de shiftare); pentru 1 j u:
(a) O
j
:= E
K
(I
j
) (calculeaza output-ul cifrului pe blocuri)
(b) t
j
:= cei r bit i din stanga ai lui O
j
(presupunem ca cel mai din stanga este identicat ca 1)
(c) c
j
:= x
j
t
j
(transmite cei r bit i de text cifrat ai lui c
j
)
(d) I
j +1
:= 2
r
I
j
+ c
j
mod 2
n
(shifteaza c
j
catre partea dreapta a registrului de shiftare)
2. Decriptare: I
1
:= IV; pentru 1 j u, la primirea lui c
j
:
x
j
:= c
j
t
j
, unde t
j
, O
j
si I
j
sunt calculate ca mai sus.
Modul OFB (output feedback)
Input: cheie K de k bit i; vector de init ializare IV de n bit i;
blocuri x
1
, . . . , x
u
de text clar de r bit i (1 r u).
Sumar: produce blocuri c
1
, . . . , c
u
de text cifrat de r bit i;
decripteaza pentru a obt ine text clar.
1. Criptare: I
1
:= IV; pentru 1 j u, ind date blocurile x
j
de text clar:
(a) O
j
:= E
K
(I
j
) (calculeaza output-ul cifrului pe blocuri)
(b) t
j
:= cei r bit i din stanga ai lui O
j
(presupunem ca cel mai din stanga este identicat ca 1)
(c) c
j
:= x
j
t
j
(transmite cei r bit i de text cifrat ai lui c
j
)
(d) I
j +1
:= O
j
(se actualizeaza input-ul cifrului pe blocuri
pentru urmatorul bloc)
2. Decriptare: I
1
:= IV; pentru 1 j u, la primirea lui c
j
:
x
j
:= c
j
t
j
, unde t
j
, O
j
si I
j
sunt calculate ca mai sus.
Cifruri moderne pe blocuri
cifrul Lucifer, cifruri Feistel: anii 1970
DES (Data Encryption Standard):
standard adoptat n 1977;
cripteaza un bloc de text clar de 64 de bit i ntr-un bloc de text
cifrat de 64 de bit i folosind o cheie de 56 de bit i
triplu DES
IDEA (International Data Encryption Algorithm): 1991
RC5: 1994
AES (Advanced Encryption Standard): 2002
etc.
DES
Etapele DES
1
Fiind dat un bloc x de text clar, se construieste un bloc
x
0
= IP(x) = L
0
R
0
, unde IP este o permutare init iala (xata)
si L
0
, R
0
constau din primii, respectiv ultimii 32 de bit i ai lui
x
0
.
2
Se calculeaza 16 iterat ii a unei anumite funct ii. Se calculeaza
L
i
R
i
(1 i 16) astfel:
L
i
= R
i 1
, R
i
= L
i 1
f (R
i 1
, K
i
)
unde nseamna SAU-exclusiv a doua blocuri si K
1
, . . . , K
16
(programul cheii) sunt blocuri de lungime 48 calculate n
funct ie de cheia K.
3
Se obt ine textul cifrat y = IP
1
(R
16
L
16
). A se observa
ordinea inversata pentru L
16
si R
16
.
Decriptarea foloseste acelasi algoritm ca si criptarea, avand y ca
si input, dar folosind ca si program al cheii K
16
, . . . , K
1
, si obt inand
output-ul x.
O runda DES:
Funct ia DES f : f are ca si input un bloc A de 32 de bit i si un
bloc J de 48 de bit i, si produce ca si output un bloc de 32 de bit i.
1
A este extins la un bloc de 48 de bit i folosind o funct ie xata
de extindere E: E(A) consta din 32 de bit i din A, permutat i
ntr-un anumit mod, cu 16 bit i aparand de doua ori.
2
Se calculeaza E(A) J si se scrie rezultatul ca si concatenarea
a opt blocuri de cate 6 bit i B = B
1
B
2
B
3
B
4
B
5
B
6
B
7
B
8
.
3
Se folosesc 8 S-cutii S
1
, . . . , S
8
M
4,16
(Z
16
). Fiind dat un
bloc de 6 bit i B
j
= b
1
b
2
b
3
b
4
b
5
b
6
, se calculeaza S
j
(B
j
) astfel:
b
1
b
6
determina reprezentarea binara a unei linii r a lui S
j
(0 r 3), iar b
2
b
3
b
4
b
5
determina reprezentarea binara a
unei coloane c a lui S
j
(0 c 15); atunci C
j
= S
j
(B
j
) se
deneste ca ind S
j
(r , c) scris n binar ca bloc de 4 bit i.
4
Blocul de 32 de bit i C = C
1
C
2
C
3
C
4
C
5
C
6
C
7
C
8
se permuta
conform unei permutari xate P. Blocul rezultat P(C) se
deneste ca ind f (A, J).
Funct ia DES f : f consta dintr-o substitut ie (folosind o S-cutie)
urmata de o permutare xata P.
Permutarea init iala IP si inversa ei:
(primul bit din IP(x) este al 58-lea bit din x etc.)
Funct ia de extindere E si permutarea P:
Cele 8 S-cutii:
Permutarile PC-1 si PC-2:
Calcularea programului cheii DES:
Cheia K este un bloc de 64 de bit i, dintre care 8 sunt bit i de
paritate pentru detectarea erorilor.
Bit ii 8, 16, . . . , 64 sunt denit i astfel ca ecare byte sa cont ina un
numar impar de cifre 1.
Bit ii de paritate sunt ignorat i la calcularea programului cheii.
1
Fiind data o cheie de 64 de bit i, se elimina bit ii de paritate si
se permuta ceilalt i bit i ai lui K conform unei permutari xate
PC-1: PC-1(K) = C
0
D
0
, unde C
0
si D
0
constau din primii 28
de bit i si din ultimii 28 de bit i ai lui PC-1(K).
2
Pentru i = 1, . . . , 16, se calculeaza C
i
= LS
i
(C
i 1
),
D
i
= LS
i
(D
i 1
) si K
i
= PC-2(C
i
D
i
), unde PC-2 este o alta
permutare xata si LS
i
reprezinta o shiftare ciclica spre stanga
de una sau doua pozit ii, depinzand de valoarea lui i : o pozit ie
daca i {1, 2, 9, 16} si doua pozit ii altfel.
Calcularea programului cheii DES:
Rundele programului cheii:
Observat ii asupra DES
toate calculele sunt liniare, cu except ia celor din S-cutii,
acestea asigurand securitatea
designul S-cutiilor nu este cunoscut complet
marimea de 2
56
a spat iului pentru chei este destul de mica,
deci DES a devenit vulnerabil la cautari exhaustive de chei
poate implementat foarte ecient, deoarece singurele
operat ii aritmetice sunt SAU-exclusiv ntre blocuri, iar celelalte
operat ii pot efectuate n timp constant prin cautare ntr-o
tabla n software sau prin implementare n hard printr-un
circuit
implementarile hard au rate de criptare foarte rapide
aplicat ii: de exemplu, tranzact ii bancare - criptare de PIN-uri
si tranzact ii ntre conturi efectuate prin ATM-uri
Cifruri pe siruri
Un cifru pe siruri cripteaza pe rand caractere individuale (de obicei
cifre binare) ale unui mesaj de text clar, folosind o transformare de
criptare care variaza cu timpul.
prezentam cifruri simetrice pe siruri
n general sunt mai rapide decat cifrurile pe blocuri n hard
sunt mai potrivite cand zona buer este limitata sau cand
caracterele trebuie procesate individual pe masura ce sunt
recept ionate
au propagare de erori limitata sau nula, deci sunt avantajoase
cand erorile de transmisie sunt foarte probabile
Exemple
one-time pad
cifruri sincrone pe siruri: Vigen`ere, masini cu rotor, masini
Hagelin, LFSR (toate acestea cu perioade lungi)
cifruri auto-sincronizante pe siruri
Cifruri sincrone pe siruri
Denit ie
Un cifru sincron pe siruri este unul n care sirul cheie este
generat independent de textul clar si de cel cifrat.
Un cifru (binar) aditiv pe siruri este un cifru sincron pe siruri
n care caracterele din sirul cheie, textul clar si textul cifrat
sunt cifre binare, iar funct ia output este XOR.
Criptare:

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.

Incepe povestea lui Alice, Bob si a prietenilor lor...


Funct ii one-way si trapdoor
Apar not iuni noi: funct ie one-way si funct ie trapdoor.
Denition
O funct ie f : X Y se numeste funct ie one-way daca f (x) este
usor de calculat x X, dar pentru cele mai multe
elemente y Im(f ) este practic imposibil computat ional sa se
ae z X astfel ca f (z) = y.
Denition
O funct ie trapdoor este o funct ie one-way f : X Y cu
proprietatea ca, ind data o informat ie suplimentara,
y Im(f ), se poate aa un element z X astfel ca f (z) = y.
Exista astfel de funct ii? Nimeni nu a demonstrat nca existent a lor
precisa n ipoteza unor denit ii rezonabile si riguroase pentru
usor si imposibil computat ional. Dar exista mult i candidat i
buni. Statutul acestora poate sa nu e permanent!
Exemplu. Fie f : Z

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

Impart im textul clar pe blocuri: al /ge /br /a


Scriem echivalentele numerice: 39 194 72 27
(al 1 27 + 12 = 39, ge 7 27 + 5 = 194,
br 2 27 + 18 = 72, a 1 27 + 0 = 27)
Cifrare (m
e
mod n): 1428 498 919 1503
(39
67
mod 1643 = = 1428, 194
67
mod 1643 = = 498,
72
67
mod 1643 = = 919, 27
67
mod 1643 = = 1503)
Scriem echivalentele literale: AYX RL AGA BAR
(1428 = 1 27
2
+ 25 27 + 24 AYX,
498 = 18 27 + 12 RL,
919 = 1 27
2
+ 7 27 + 1 AGA,
1503 = 2 27
2
+ 1 27 + 18 BAR)
Text cifrat: AYX RLAGABAR
Criptosistemul Rabin
Michael O. Rabin (1979)
bazat pe Problema Radacinii Patrate Modulare, pentru care
nu se cunoaste vreun algoritm (deterministic) de timp
polinomial
este primul exemplu de criptosistem cu cheie publica a carui
securitate se poate demonstra
este computat ional echivalent cu Problema Factorizarii

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

Impart im textul cifrat pe blocuri: BED / HI


Consideram primul trigraf.
Scriem echivalentele numerice:
BED 2 27
2
+ 5 27 + 4 = 1597
Rezolvam x
2
= 1597 (mod 31) si x
2
= 1597 (mod 53), adica
(i) x
2
= 16 (mod 31),
(ii) x
2
= 7 (mod 53).
Solut iile sunt 4 modulo p = 31 si respectiv 22 modulo 53.
Rezolvam x
2
= 1597 (mod n), unde n = p q.
Trebuie sa rezolvam sistemele

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

In general se presupune ca specicat ia algoritmica a unei funct ii


hash este publica.
Alte proprietat i ale funct iilor hash fara cheie (MDC)
Denit ie
rezistent a la preimagine:
pentru practic toate output-urile pre-specicate, este
nerealizabila computat ional gasirea unui input care se
transforma n acel output, adica gasirea unei preimagini x
astfel ca h(x) = y, dandu-se orice y pentru care nu este
cunoscut input-ul corespunzator.
rezistent a la a 2-a preimagine (coliziune slaba):
este nerealizabila computat ional gasirea unui al doilea
input care sa aiba acelasi output ca orice input specicat,
adica dandu-se x, gasirea unei a 2-a preimagini x

= 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

care se transforma n acelasi


output h(x) = h(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

), pretinzand ca Alice a semnat 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

) si nu de procesul mult mai dicil de gasire a


unei a 2-a preimagini a lui x; n acest caz, este necesara si
rezistent a la coliziune.
Pentru rezistent a la preimagine, sa consideram RSA, unde
Alice are cheia publica (n, e). Oscar poate sa aleaga o valoare
aleatoare y, sa calculeze z = y
e
mod n, si sa pretinda ca y
este semnatura lui Alice pentru x. Aceasta poate o
problema daca Oscar poate gasi o preimagine z astfel ca
h(x) = z, si pentru care x poate folosit.
Denit ie
O funct ie hash one-way este o funct ie hash cu rezistent a la
preimagine si la a 2-a preimagine.
O funct ie hash rezistenta la coliziune este o funct ie hash cu
rezistent a la preimagine, la a 2-a preimagine si la coliziune.
Exemple.
(i) Calcularea sumei ecarui sir de 32 de bit i din sirul de date este
o funct ie usor de calculat care asigura compresie, dar nu
rezistent a la preimagine.
(ii) Funct ia g(x) = x
2
mod n este rezistenta la preimagine, dar nu
asigura compresie sau rezistent a la a 2-a preimagine.
(iii) Funct ia f (x) = E
k
(x) x, unde E este un cifru pe blocuri,
este SAU exclusiv si k este o cheie cunoscuta xata, asigura
rezistent a la preimagine si la a 2-a preimagine, dar nu
compresie.
Proprietat i ale funct iilor hash cu cheie (MAC)
Denit ie
Un algoritm MAC este o familie de funct ii h
k
parametrizate de
o cheie secreta k, cu urmatoarele proprietat i:
usurint a de calculare: pentru o funct ie cunoscuta h
k
, ind
data o valoare k si un input x, h
k
(x) este usor de calculat.
Rezultatul se numeste valoare MAC sau simplu MAC.
compresie: h
k
transforma un input x de lungime arbitrara
ntr-un output h
k
(x) de lungime xa n.
Mai mult, ind data o descriere a familiei de funct ii h, pentru
ecare valoare permisa xata a lui k (necunoscuta adversarului):
rezistent a la calculare: ind date zero sau mai multe
perechi (x
i
, h
k
(x
i
)) de text MAC, este nerealizabila
computat ional calcularea oricarei perechi (x, h
k
(x)) de text
MAC pentru orice input nou x = x
i
(inclusiv pentru
h
k
(x) = h
k
(x
i
) pentru un i ).
Construct ii generale
Extinderea funct iilor de compresie la funct ii hash
Fapt
Orice funct ie de compresie f care este rezistenta la coliziune poate
extinsa la o funct ie hash h rezistenta la coliziune (luand input-uri
de lungime arbitrara).
Exista un algoritm, si anume meta-metoda lui Merkle (sau
construct ia Merkle-Damgard).
Funct ii hash n cascada
Fapt
Daca h
1
sau h
2
este o funct ie hash rezistenta la coliziune, atunci
h(x) = h
1
(x)||h
2
(x) este o funct ie hash rezistenta la coliziune.
(unde prin || notam concatenarea)
Meta-metoda hash Merkle-Damgard
Atacuri asupra funct iilor hash - protocolul Yuval
Daca cerint ele anterioare nu sunt asigurate pentru funct iile hash,
atunci Alice ar putea folosi urmatorul atac (birthday attack)
pentru a-l nsela pe Bob.
(Paradoxul zilei de nastere: ntr-un grup aleator de 23 de persoane,
cel put in doua vor avea aceeasi zi de nastere cu o probabilitate de
cel put in 1/2.)
(1) Alice pregateste doua versiuni ale unui contract: una este
favorabila lui Bob, iar cealalta l falimenteaza.
(2) Alice face cateva schimbari subtile n ecare document si
calculeaza valoarea hash a ecaruia.
(Aceste schimbari ar putea de genul: nlocuieste SPACE cu
SPACE-BACKSPACE-SPACE, punand un spat iu sau doua
nainte de trecerea la o linie noua etc. Astfel Alice poate
genera usor un numar mare de documente diferite.)
(3) Alice compara valoarea hash dupa ecare versiune schimbata
a celor doua documente, cautand o pereche care se potriveste.
Apoi reconstruieste cele doua documente care au aceeasi
valoare hash.
(4) Alice l face pe Bob sa semneze versiunea de contract care i
este favorabila lui, folosind un protocol n care Bob semneaza
doar valoarea hash.
(5) Candva n viitor, Alice substituie contractul pe care l-a semnat
Bob cu celalalt.
Acum ea poate convinge o tert a parte ca Bob a semnat
celalalt contract.
Aplicat ii
Utilizare tipica: Alice i da o problema grea de matematica lui
Bob si pretinde ca ea a rezolvat-o. Bob vrea sa ncerce si el sa
orezolve, dar vrea sa e sigur ca Alice nu l minte. Pentru
aceasta, Alice scrie solut ia ei, adauga niste caractere oarecare
(nonce), calculeaza hash-ul si i spune lui Bob valoarea
hash, dar pastreaza solut ia si valoarea nonce. Astfel, dupa ce
Bob gaseste si el o solut ie, Alice poate dovedi ca ea a obt inut
solut ia mai devreme decat Bob, dezvaluindu-i valoarea nonce.
Vericarea integritat ii mesajului: se compara rezumate ale
mesajului (message digest) calculate nainte si dupa
transmitere (sau dupa alt eveniment).
Un rezumat al mesajului poate folosit si ca si mijloc de
identicare sigura a unui sier; diverse sisteme de
management de coduri sursa folosesc anumite hash-uri pentru
cont inutul unui sier, arbori de directoare sau diverse alte
informat ii, pentru a le identica n mod unic.
Vericarea parolelor: n general parolele nu se stocheaza n
text clar, ci n rezumat. Pentru a autentica un utilizator se
aplica un hash la parola prezentata de catre acesta, iar
valoarea se compara cu cea stocata.
Din motive de securitate si performant a, cei mai mult i
algoritmi de semnatura digitala specica doar un rezumat al
mesajului care trebuie semnat si nu mesajul ntreg. Funct iile
hash pot folosite si la generarea de bit i pseudoaleatori.
Funct iile hash se folosesc pentru a identica siere n ret ele.
De exemplu, un hash este combinat cu marimea sierului,
asigurand sucienta informat ie pentru a localiza sursa
sierului, a descarca sierul si a verica cuprinsul.
Generalitat i
Denit ie
O semnatura digitala este un sir de date care asociaza un mesaj
(n forma digitala) cu o entitate care a trimis mesajul.
Un algoritm de generare de semnatura digitala este o metoda de
a produce o semnatura digitala.
Un algoritm de vericare de semnatur a digitala este o metoda de
a verica faptul ca o semnatura digitala este autentica.
O schema de semnatura digitala consta dintr-un algoritm de
generare de semnatura si un algoritm de vericare asociat.
Un proces de semnare cu semn atura digitala consta dintr-un
algoritm de generare de semnatura digitala si o metoda de a
formata datele ntr-un mesaj care sa poata semnat.
Un proces de vericare de semnatura digitala consta dintr-un
algoritm de vericare si o metoda de a recupera datele din mesaj.
O schema generala de semnatura digitala
Consideram un criptosistem arbitrar cu cheie publica.
Notam:
U: un utilizator
f
U
: transformarea (publica) de criptare a lui U
f
1
U
: transformarea (privata) de decriptare a lui U
h: o funct ie hash h, care este publica pentru ecare utilizator
1
Alice semneaza si trimite un mesaj lui Bob
Daca Alice vrea sa semneze un mesaj m catre Bob, atunci
trimite:
c = f
B
(m||f
1
A
(f
B
(h(m)))),
unde || este concatenarea si f
1
A
(f
B
(h(m))) este semnatura ei.
Semnatura lui Alice nu poate obt inuta de catre alt utilizator,
deoarece depinde de f
1
A
(cunoscuta doar lui Alice).
Semnatura depinde de mesajul semnat m si este scurta,
datorita amprentei h(m). Deci nimeni nu poate altera m si este
imposibil de utilizat aceasta semnatura pentru alte mesaje.
Semnatura depinde de Bob (din cauza lui f
B
), deci Bob nu
poate trimite mesajul m cu semnatura lui Alice unei tert e
persoane. Alice a semnat m numai pentru Bob.
2
Bob verica autenticitatea semnaturii lui Alice
Bob obt ine c si calculeaza (folosind cheia lui privata) f
1
B
(c),
care este un text m

cu o parte neinteligibila s la sfarsit.


Verica egalitatea h(m

) = 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).

Inmult ind ambii membri cu w obt inem


w h(m) + arw = k (mod q),
adica
u
1
+ au
2
= k (mod q).
Ridicand la ambii membri ai acestei egalitat i obt inem
(
u
1
y
u
2
mod p) mod q = (
k
mod p) mod q.
Deci v = r , asa cum se cere.
Exemplu.
Generarea cheii. Alice:
1. Selecteaza un numar prim q = 17389.
2. Selecteaza un numar prim p = 124540019 astfel ca q
divide p 1.
3. Selecteaza un generator al unicului grup ciclic cu q
elemente n Z

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).

Inmult ind ambii membri cu k obt inem


ks = h(m) ar (mod p 1),
adica
h(m) = ar + ks (mod p 1).
Aceasta implica

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.

You might also like