Sunteți pe pagina 1din 710

Denitii de baza

Sisteme de criptare simetrice


Criptograe si securitate
Luciana Morogan
Facultatea de Matematica-Informatica
Universitatea Spiru Haret
Laboratoare
Laborator
Denitii de baza
Sisteme de criptare simetrice
Outline
1
Denitii de baza
2
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Sisteme monoalfabetice
Sisteme polialfabetice
Laborator
Denitii de baza
Sisteme de criptare simetrice
Denitie generica
Criptograa = studiul metodelor matematice legate de
securitatea informatiei, capabile sa asigure
condentialitatea
autenticarea
non-repudierea mesajelor
integritatea datelor vehiculate
Termenul criptograe = scriere secreta: format din
cuvintele grecesti cryptos ascuns si grae scriere.
Domeniul cuprinde
operatia de criptare (cifrare) a unui text
eventualele incercari de descifrare si de aare a cheii de
criptare
Procesul de determinare a unei chei folosind un text criptat
se numeste criptanaliza.
Laborator
Denitii de baza
Sisteme de criptare simetrice
Schema generala
Fig.1
Figure: Fig.1
Laborator
Denitii de baza
Sisteme de criptare simetrice
Denitie formala(1)
Un sistem de criptare este o structura (P, C, K, E, D)
P = {w|w V

} este multimea textelor clare, scrise peste


un alfabet nevid V (uzual V = {0, 1}).
C = {| W

} este multimea textelor criptate, scrise


peste un alfabet nevid W (uzual W = V ).
K este o multime de elemente numite chei.
Fiecare cheie K determina o metoda de criptare
e

E si o metoda de decriptare d

D
functiile e

: P C si d

: C P au proprietatea
d

(e

(w)) = w, w P
C = {|w P, K, = e

(w)}
Functia e

este evident injectiva; daca e

este bijectiva (si deci


d

= e
1

) atunci sistemul de criptare se numeste simetric.


Laborator
Denitii de baza
Sisteme de criptare simetrice
Denitie formala(2)
Pentru ca un sistem de criptare sa e considerat bun, trebuie
indeplinite patru criterii (enuntate de Francis Bacon in sec.
XVII):
Fiind date e

si w P, este usor de determinat e

(w)
Fiind date d

si C, este usor de determinat d

()
w este imposibil de determinat din , fara a cunoaste d

(deneste vag ideea de securitate a sistemului)


Textul criptat trebuie sa e un text banal, fara suspiciuni
(Aceasta conditie este utilizata astazi doar de un
subdomeniu strict al criptograei, numit steganograe)
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Sisteme clasice
Sistemele de criptare clasice sisteme simetrice
odata cu aarea cheii de criptare cheia de decriptare se
obtine imediat, ind functia inversa
Clasicare
Sistemele de criptare simetrice se impart in doua clase mari
cifruri de permutare
cifruri cu substitutie
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Cifru de permutare: denitie formala
Fie n un numar natural nenul. Un cifru de permutare este un
sistem (P, C, K, E, D) unde P = C = (Z
26
)
n
, K = P
n
(multimea
permutarilor de n elemente). Pentru o cheie (permutare) ,
e

(a
1
a
2
...a
n
) = a
(1)
a
(2)
...a
(n)
= b
1
b
2
...b
n
d

(b
1
b
2
...b
n
) = b

1
(1)
b

1
(2)
...b

1
(n)
Criptarea
Textul clar se imparte in blocuri de n, n 2 caractere, si
ecaruia i se va aplica o permutare prexata.
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Exemplul 1 (1)
Fie cheia de criptare permutarea

1 2 3
2 1 3

Criptarea
Textul clar GRUPELE ANULUI III se imparte in grupuri de
cate trei caractere (consideram si caracterul spatiu, notat
)
GRU PEL EA NUL UI III
Textul criptat va ....?
si eliminand gruparile...?
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Exemplul 1 (2)
Solutia
Textul criptat va ... RGU EPL EA UNL IU III
si eliminand gruparile... RGUEPLEAUNLIUIII
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Exemplul 2: sistemul de criptare Hill (1929) (1)
Fie d 2 un numar intreg xat. Denim
P = C = (Z
26
)
d
K = {M|M M
d
(Z
26
) , det (M) = 0}
O cheie de criptare este o matrice M patrata nesingulara de
dimensiune d, cu elemente din (Z
26
), iar M
1
formeaza
cheia de criptare.
Criptarea.Textul clar w se imparte in blocuri de lungime
d : w =
1

2
. . .
n
, |
i
| = d
(ultimul bloc se completeaza - eventual - pana se ajunge la
dimensiunea d).
Textul criptat va
x =
1

2
. . .
n
,
i
= e
M
(
i
) =
i
M(mod26), (1 i n).
Decriptarea. Se foloseste relatia d
M
(
i
) =
i
M
1
(mod26).
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Exemplul 2: sistemul de criptare Hill (1929) (2)
Consideram exemplul in care d = 2 si cheia M =

3 3
2 5

a
carei inversa este matricea M =

15 17
20 9

.
Daca w = FRAC, avem

1
=

F R

=

5 17

si
2
=

A C

=

0 2

Din urmatoarele doua relatii

1
= e
M
(
1
) =
1
M(mod26) =

5 17

3 3
2 5

23 22

=

X W

2
= e
M
(
2
) =
2
M(mod26) =

0 2

3 3
2 5

4 10

=

E K

Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Exemplul 2: sistemul de criptare Hill (1929) (3)
Se obtine textul criptat x = XWEK.
Oscar criptanalistul varianta 1 (1)
Daca presupunem ca Oscar a gasit dimensiunea d = 2 si
incearca sa ae matricea M (M
1
) cunoscand perechea (text
clar, text criptat) = (FRAC, XWEK), Oscar se aa in fata
urmatoarei probleme:
M =?, M =

a b
c d

, a, b, c, d 0, 1, ..., 25 astfel incat

5 17
0 2

a b
c d

23 22
4 10

Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Exemplul 2: sistemul de criptare Hill (1929) (4)
Oscar criptanalistul varianta 1 (2)
Pentru aarea lui M, Oscar trebuie sa ae inversa lui

5 17
0 2

.
Cum determinantul matricii

5 17
0 2

este 10 si
cmmdc(10, 26) > 1
10
1
(mod26) nu exista matricea nu este inversabila.
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Exemplul 2: sistemul de criptare Hill (1929) (5)
Oscar criptanalistul varianta 2: ipoteza atacului cu text clar
ales (1)
Oscar alege un text clar a carui matrice este inversabila si ii aa
criptarea.
Fie BRAD acest text clar. Matricea asociata acestuia este
A =

1 17
0 3

.
Oscar solicita criptarea lui BRAD si primeste LKGP cu matricea
B =

11 10
6 15

Oscar dispune acum de perechea (BRAD,


LKGP).
Determinand pe A
1
=

1 3
0 9

si apoi ecuatia A M = B, va
gasi solutia M = A
1
B =

1 3
0 9

11 10
6 15

3 3
2 5

Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Exemplul 2: sistemul de criptare Hill (1929) (6)
Oscar criptanalistul varianta 2: ipoteza atacului cu text clar
ales (2)
Permutarii

1 2 3
2 1 3

ii corespunde matricea de permutare

0 1 0
1 0 0
0 0 1

Opertatia de criptare este imediata si criptarea textului FLO


este

5 11 14

0 1 0
1 0 0
0 0 1

11 5 14

adica LFO.
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Exercitiul 1
Determinati inversele matricilor (modulo 26)
1

2 5
3 1

7 3 5
1 8 2
2 2 4

Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Exercitiul 2
Criptati un text clar la alegere folosind sistemul de criptare
Hill cu matricea
1

17 17 5
21 18 21
2 2 19

sau
2

5 11 5
2 14 1
2 4 9

Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Exercitiul 3
Fie cifrul de permutare: Se xeaza numerele naturale p, q.
Textul clar se imparte in blocuri de cate p q caractere.
Fiecare astfel de bloc se scrie pe liniile unei matrici de p
linii si q coloane. Criptarea blocului se realizeaza scriind
aceste matrici pe coloane.
Exemplu: pentru p = 3, q = 4, textul clar
MAINI CURATE se scrie
M A I N
I C U R
A T E X
(spatiile se completeaza cu litera X). Textul
criptat va MIAACTIUENRX.
Decriptati textul DTREAECRURESIAIPAT
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Cifruri cu substitutie
sisteme monoalfabetice: substituie ecare caracter cu alt
caracter, totdeauna acelasi indiferent de pozitie
sistemul de criptare Polybios
sistemul cavalerilor de Malta
sistemul de criptare an
criptanaliza
sisteme polialfabetice: substitutia unui caracter variaza in
text in functie de diversi parametrii
sistemul de criptare Vigenere
criptanaliza
exercitii
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Sistemul de criptare Polybios (1)
Consideram alfabetul latin, din care eliminam o litera de frecventa cat mai
redusa; e aceasta W. Cele 25 litere ramase le asezam intr-un patrat 5 x 5
(numit careu Polybios) ca mai jos.
In operatia de criptare, ecare caracter a va reprezentat printr-o pereche
(x, y) (x, y {A, B, C, D, E}) care dau linia respectiv coloana pe care se aa
a.
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Sistemul de criptare Polybios (2)
Exemplu
Textul clar UNIVERSITATE este criptat in
EACDBDEBAEDCDDBDDEAADEAE.
Deci sistemul de criptare Polybios este o substitutie
monoalfabetica cu alfabetul W = {AA, AB, AC, ..., EE} de 25
caractere.
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Sistemul de criptare an (1)
P = C = (Z
26
)
K = (a, b)|a, b Z
26
, cmmdc(a, 26) = 1
pentru k K, k = (a, b) denim
functia de criptare: e
k
(x) = ax +b(mod26) = y
functia de decriptare: d
k
(y) = a
1
y +a
1
(26 b)(mod26)
(cum (a, 26) = 1, a
1
Z
26
)
Stim ca literelor alfabetului le corespund cifrele de la 0 la 25:
A B C D E F G H I J K L M N
0 1 2 3 4 5 6 7 8 9 10 11 12 13
O P Q R S T U V W X Y Z
14 15 16 17 18 19 20 21 22 23 24 25
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Sistemul de criptare an (2)
Exemplu
Pentru a = 3, b = 5 avem
e
(3,5)
(x) = 3x + 5
d
(3,5)
(y) = 9y +9(265)(mod26) = 9y +7 deoarece 3
1
= 9(mod26)
Sa luam textul clar GRUPA. Codicarea acestuia este reprezentata de

6 17 20 15 0

. Avem:
e
(3,5)
(6) = 23(mod26) = 23
e
(3,5)
(17) = 56(mod26) = 4
e
(3,5)
(20) = 65(mod26) = 13
e
(3,5)
(15) = 50(mod26) = 24
e
(3,5)
(0) = 5(mod26) = 5
deci textul criptat este reprezentat de

23 4 13 24 5

=

X E N Y F

(Decriptarea se
realizeaza analog.)
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Sistemul de criptare Vigenere (1)
Consideram, ca la sistemele anterioare, cele 26 litere ale
alfabetului, numerotate de la 0 (pentru A) pana la 25 (pentru Z).
Denim
P = C = Z
26
K = Z
+
26
unde o cheie k K este un cuvant avand
codicarea numerica k
0
k
1
. . . k
p1
Fie a = a
0
a
1
. . . a
n
codicarea textului clar care trebuie
transmis. Textul criptat va e
k
(a) = x = x
0
x
1
. . . x
n
, unde
x
i
= a
i
+k
i (modp)
(mod26)
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Sistemul de criptare Vigenere - exemplu (2)
Criptare (1)
Sa consideram cuvantul cheie GRUPA; deci p = 5 si
k =

23 4 13 24 5

. Daca vrem sa criptam cu aceasta
cheie textul clar CRIPTOGRAFIE, vom proceda astfel:
Codicarea textului este a = 2 17 8 15 19 14 6 17 0 5 8 4.
Sub ecare numar din a se aseaza cate un numar din k;
cand cheia se termina, ea se reia ciclic, pana se termina a
Linia a treia va contine suma modulo 26 a numerelor de pe
primele doua linii, iar pe ultima linie s-a scris textul criptat
rezultat
Laborator
Denitii de baza
Sisteme de criptare simetrice
Cifruri de permutare
Exercitii
Cifruri cu substitutie
Sistemul de criptare Vigenere - exemplu (3)
Criptare (2)

2 17 8 15 19 14 6 17 0 5 8 4
23 4 13 24 5 23 4 13 24 5 23 4
25 21 21 13 24 11 10 4 24 10 5 8
Z V V N Y L K E Y K F I

Decriptare
Decriptarea se realizeaza similar, scazand (modulo 26) din
codul caracterului criptat, codul caracterului corespunzator din
cheie.
Laborator

GENERATORI DE
NUMERE PSEUDO-
ALEATOARE
Asist. Drd. Morogan Maria Luciana

Ideal ar fi ca secretele cerute in algoritmii criptografici si
protocoale sa fie generate cu un generator de numere pur aleatoare.
Un asemenea generator necesita un mediu capabil sa ofere
numere aleatoare.
Creearea unui dispozitiv hardware sau a unui program
software in vederea exploatarii acestui mediu si producerii unei
secvente de biti in care anumite valori sa nu apara mai des decat altele
(ne vom referi la secventa in care anumite valori apar mai des decat
altele folosind termenul de bias) este o sarcina dificila.

Cuprins
1. Background teoretic
2. Generatori de numere pseudo aleatoare
1. Generatori simplii de numere pseudo-aleatoare
2. Generatori bazati pe LFSR
3. Alti generatori de numere pseudo-aleatoare
3. Modelul teoretic de verificare a securitatii unui
generator
4. Teste statistice de validare
1. Distributia normala si distributia
2. Postulatele lui Golomb
3. Teste statistice de baza
4. Testul statistic universal al lui Maurer
2


Background teoretic
Un generator de biti aleatori este un dispozitiv sau un algoritm prin a carui iesire rezulta o
secventa de cifre binare independente din punct de vedere statistic, secventa in care probabilitatea de emitere
a valorii 1 este de exact ( Termenul folosit in limba engleza pentru o secventa de acest tip este cel de
unbiased ).
Deci, un generator de biti pseudo-aleatori este un algoritm determinist[1] (in sensul ca fiind dat
acelasi sir de valori, generatorul va produce intotdeauna la iesire aceeasi secventa) prin care, fiind data o
secventa pur aleatoare binara de lungime k la intrare, la iesire va genera o secventa binara de lungime l, unde l
este mult mai mare decat k, secventa care pare a fi aleatoare.
Definitie formala : fie intregii strict pozitivi k si l, l k+1, ( unde l este obtinut din k prin
aplicatii polinomiale). Un (k, l)-generator de numere pseudo-aleatoare (pe scurt un (k, l)-PRBG), este o
functie calculabila in timp polinomial[2] (in functie de k). Intrarea se numeste secventa initiala
de intrare, in timp ce iesirea este numita secventa pseudo-aleatoare.
[1] Din punct de vedere informatic, un algoritm determinist este un algoritm a carui comportare este
previzibila. Fiind date aceleasi date particulare de intrare, algoritmul va produce la iesire acelasi rezultat
corect, iar masina pe care ruleaza acesta, va trece intotdeauna prin aceeasi secventa de stari.
[2] Timpul polinomial este timpul de calcul al functiei, timp marginit de un polinom de lungime l al secventei
de iesire.
1
2
2 2
:
k l
f Z Z
0 2
k
s Z
0 2
( )
l
f s Z



In studiul securitatii unui sistem criptografic exista doua abordari fundamentale:

Securitatea calculabila[1] care masoara cantitatea de calcul


necesar pentru spargerea unui sistem. Vom spune ca un sistem
este sigur in sensul teoriei complexitatii[2] daca cel mai bun
algoritm pentru spargerea sistemului necesita N operatii, unde N
este un numar foarte mare.

Securitatea neconditionata masoara securitatea sistemului fara


limita a cantitatii de calcule pe care un adversar este capabil sa
le faca. Un procedeu este neconditionat sigur daca nu poate fi
spart, nici cu o putere de calcul infinita.
[1] Computational security
[2] Computationally secure

Este important de studiat informatia care poate
avea relevanta pentru un adversar in realizarea unui
atac cu text cunoscut si intr-un timp arbitrar de
calcul. Instrumentul de baza in studierea acestei
probleme il reprezinta notiunea de entropie
( Shannon, 1948, teoria informatiei).
In general, pentru un sir binar, avem:
entropia = log (numarul sirurilor posibile)
(log se refera la un logaritm in baza 2)

Generatori de numere pseudo aleatoare
Din punctul de vedere
al securitatii:

Generatori siguri

ANSI X9.17

FISP 186

Generatori nesiguri:

Generatorul RSA

Micali-Schnorr

Blum-Blum-Schub
Alta clasificare:

generatori simplii

Generatorul liniar congruential

Generatori Ranrot

Generatorul Blum Blum Shub

generatori bazati pe LFSR

Generatorul Geffe

Generatori de tip Stop-and-go

Generatorul Stop-and-go alternativ

clasa separata

Generatorul Mother-of-all

Generatorul Blum Micali

Generatorul1/p

Generatori simplii de
numere pseudo-aleatoare

Generatorul liniar congruential
Face parte din clasa generatorilor nesiguri.
Un exemplu ilustrativ :
Luam M=31, a=3 si b=5. Obtinem un (5, 10) - PRBG cu un
generator liniar congruential.
Daca consideram aplicatia , avem , iar
celelate 30 de resturi sunt permutari dupa un ciclu de lungime 30 in
ordinea urmatoare: 0, 5, 20, 3, 14, 16, 22, 9, 1, 8, 29, 30, 2, 11, 7, 26,
21, 6, 23, 12, 10, 4, 17, 25, 18, 28, 27, 24, 15, 19.
Daca valoarea initiala este diferita de 13, aceasta defineste un
punct de plecare in acest ciclu, si urmatoarele 10 elemente reduse
modulo 2 formeaza sirul de numere pseudo-aleatoare.
Urmarind acest procedeu, cele 31 de siruri de numere pseudo-
aleatoare posibile sunt reprezentate in urmatorul tabel:
13 13
(3 5) mod31 s s +


Generatori Ranrot
Definiti de Agner Fog[1], acestia se bazeaza pe
generatoare de numere Fibonacci[2], impreuna cu
operatia de rotatie pe biti. Se cunosc trei tipuri de
astfel de generatoare, iar relatiile dupa care se
definesc sunt urmatoarele:
[1] Agner Fog a definit in 1977 generatorii Ranrot, initial pentru algoritmi de tip Monte Carlo.
Mai multe informatii se gasesc pe internet la adresa http://www.agner.org/random/theory
[2] Sirul numerelor lui Fibonacci este dat de relatia de recurenta:
0
1
1 1
f 0
1
n n n
f
f f f
+
=

= +



Generatorul Blum Blum Shub
Unul dintre cele mai des utilizate generatoare de
numere pseudo-aleatoare,este acest generator.

Generatorul Blum Blum Shub se bazeaza pe
problema resturilor patratice, al carei enunt este urmatorul:
Fie un intreg n = pq, unde p si q sunt numere prime
necunoscute si fie

Intrebare: este x un rest patratic modulo n?
*
astfel incat 1
n
x
x Z
n
| |
=
|
\

Definitie. Fie p si q doua numere prime. Daca

atunci numarul n = pq se numeste intreg
Blum.
3(mod 4) p q

Algoritmul BBS prezentat ca un (k, l)-
PRBG este urmatorul:
Fie p si q doua numere prime, intregi Blum de
k/2 biti si fie n = pq. QR(n) reprezinta
ansamblul de resturi patratice modulo n.
Fie valoarea initiala:
unde
0
( ), pentru i 0 s QR n
2
1
mod
i i
s s n
+
=
0 1 2
( ) ( , ,..., )
l
f s z z z =
mod 2, pentru 1 .
i i
z s i l =

Generatorul Blum Blum Shub este considerat un
generator sigur din punct de vedere criptografic, in acest
moment, fiind dealtfel considerat drept cel mai bun generator de
numere pseudo-aleatoare pentru protocoale de generare si
distributie a cheii.
Securitatea acestuia se bazeaza pe dificultate factorizarii
lui n.
n poate fi facut public (oricine poate genera o secventa
pseudo-aleatoare pe baza lui). Iar daca n nu se descompune in
factori, nimeni nu poate prezice iesirea.
Mai mult, fiind data o parte a secventei, nu exista nici o
modalitate de a prezice bitul anterior sau pe cel ulterior
secventei.

Generatori bazati pe LFSR

Un LFSR( Linear Feedback Shift Register ) este un
circuit liniar[1] format dintr-un registru serial si o functie de
intoarcere ( feedback ). Daca registrul este compus din n flip-
flopuri, vom avea un n LFSR.
Sa consideram m registrii seriali al caror
continut este fie 0 fie 1, care pot fi considerati dispozitive de
memorare cum ar fi flip-flopuile.
Consideram valorile initiale
Un ceas electronic controleaza procesul.
1 0
, ,...,
m m
R R R

0 1 1
, ,...,
m
x x x


La primul puls al ceasului, intrarea este impinsa
spre dreapta pentru a ocupa registrul .
Simultan, devine noua intrare in , si asa mai departe,
pana la elementul cel mai din dreapta care va fi transferat
secventei de iesire.
1 m
x

2 m
R

2 m
x

3 m
R


De exemplu, pentru m=5 si configuratia initiala

in care reprezentarea este urmatoarea:
iar dupa primul puls al ceasului vom avea urmatoarea
configuratie:
Secventa de iesire in acest moment consta in valoarea 1.
Simbolic: Aceasta secventa de elemente este numita satare
a vectorului.
4 3 2 1 0
1, 0, 0, 1, 1 x x x x x = = = = =
1 1 0 0 1
4
R
3
R
2
R
1
R
0
R
1 1 0 0
4
R
3
R
2
R
1
R
0
R
( ) ( )
4 3 2 1 0 4 3 2 1
, , , , , , , , x x x x x x x x x

In general, o relatie de recurenta (binara)
de lungime m (corespunzatoare a m registrii),
este o relatie de forma:
este un intreg pozitiv fixat egal cu
numarul registrilor, toate variabilele sunt
binare si = 1. Pentru i = 0 avem:
Cele m numere binare se numesc
coeficientii recurentei.
1
0
m
i m j i j
j
x c x

+ +
=
=

0 m
i
x
0
c
1 1 2 2 1 1 0 0
...
m m m m m
x c x c x c x c x

= + + + +
1 2 0
, ,..,
m m
c c c


Relatia de recurenta de mai sus poate fi
generata de un LFSR de lungime m si este
usor de implementat atat in software cat si in
hardware si poate fi reprezentata prin
schema de mai jos:

Generatorul Geffe
Generatorul Geffe combina, neliniar, trei LFSR, cel de al
treilea fiind folosit pentru a alege daca bitul rezultat provine din
primul registru sau din al doilea.
Sa consideram schema urmatoare a unui generator Geffe:
LFSR2
LFSR3
LFSR1
0
EMUX
1

Aici, LFSR1 formeaza functia de selectie a multiplexorului[1] elementar,
intrarile fiind asigurate de celelalte doua LFSR-uri.
Daca sunt iesirile corespunzatoare celor trei LFSR-uri,
iesirea generatorului Geffe este data de relatia
Perioada generatorului este cel mai mic multiplu comun al perioadelor
celor trei LFSR-uri. Deci, daca cele trei polinoame care definesc circuitele au
grade prime intre ele, perioada generatorului Geffe este produsul celor trei
perioade.
[1] Multiplexorul este un disozitiv logic care selecteaza o intrare dintr-un sir de intrari
in conformitate cu valoarea unei alte intrari a indexului. Secventele bazate pe
folosirea multiplexoarelor sunt destul de populare datorita faptului ca sunt relativ
rapide. Generatorul de chei este descris, conventional, ca folosind doua
secvente si multiplexorul este folosit pentru a combina cele doua secvente intr-
un mod neliniar.
1 2 3
, , a a a
1 2 1 3
( ) ( ) b a a a a =

Generatori de tip Stop-and-go
Generatorul Beth-Piper (dupa numele
autorilor) care controleaza ceasurile celor trei
circuite. Structura sa este urmatoarea:
Ceasul de intrare in LFSR2 este
controlat de iesirea din LFSR1 si, astfel, LFSR2
isi schimba starea la momentul t daca iesirea
din LFSR1 era 1 la momentul t-1.
Generatorul Stop-and-go alternativ
foloseste tot trei LFSR-uri de lungimi diferite
legate intr-un circuit de forma:
Daca iesirea din LFSR1 este 1, atunci
se activeaza LFSR2; altfel se activeaza LFSR3.
Iesirea finala din generator este reprezentata de
un XOR intre cele doua iesiri.

Alti generatori de numere
pseudo-aleatoare

Generatorul Mother-of-all
Este un generator propus de George Marsaglia,
si consta in alegerea initiala a cinci numere intregi, nu
toate nule, memorate pe 32 de biti fiecare.

Generatorul Blum Micali
Fie g un numar prim si p un numar prim
impar si fie o valoare initiala.
Se genereaza numerele
Iesirea din generator este

1,daca

0, altfel.
0
x
1
(mod )
i
x
i
x g p
+
=
1
2
i
p
x

<

Generatorul RSA
Fie n = pq, unde p si q reprezinta doua
numere prime mari.
Fie e un numar astfel incat
(e, (p - 1)(q - 1) ) = 1 si o valoare initiala
astfel incat < n. Se defineste relatia
Iesirea generatorului este
0
x
0
x
1
(mod )
e
i i
x x n
+
=
(mod 2)
i i
z x =

Generatorul1/p
Secventa de numere pseudo-aleatoare este generata prin
extinderea fractiei 1/p la o baza b unde p si b sunt relativ prime
[1].
[1] Fie a si b doua numere intregi, acestea sunt relativ prime
daca si numai daca (a, b) = 1.

MODELUL TEORETIC DE
VERIFICARE A SECURITATII
UNUI GENERATOR

Exista doua cerinte generale legate de securitatea unui
generator de numere pseudo-aleatoare:

secventa rezultat a unui PRBG ar trebui sa


fie inseparabila, din punct de vedere
statistic, de o secventa de numere pur
aleatoare

bitii rezultat ar trebui sa fie imprevizibili pentru


un adversar care dispune de resurse de
calcul limitate

Definitie. Fie doua distributii de probabilitate[1] pe
Prin intelegem ca t este ales astfel incat
Spunem ca este inseparabil in timp polinomial de
daca pentru orice algoritm probabilist A si orice polinom Q
exista astfel incat avem:
Adica, conditia de inseparabilitate spune ca pentru siruri
suficient de lungi nu exista un algoritm probabilist care sa
decida daca sirul a fost selectat dupa distributia sau
[1] O distributie de probabilitate pe o multime S este o
functie astfel incat
,
n n
X Y {0,1}
n
n
t X
{0,1} , Pr[ ] ( )
n
n
z x z X z = =
{ }
n
X { }
n
Y
0
n
0
, , n n n >
1
| Pr ( ( ) 1) Pr ( ( ) 1) |
( )
n n
t X t Y
A t A t
Q n

= = <
n
X
n
Y
: [0,1] D S R
( ) 1
s S
D s


Notam distributia aleatoare uniforma cu si deci, pentru
orice
avem
Definitie. Spunem ca sirul este pseudo-aleator daca este
inseparabil in timp polinomial de , si deci pentru orice
algoritm probabilist A si orice polinom Q exista astfel incat
avem:
n
U
{0,1}
n

1
Pr ( )
2
n
x U
n
x

= =
n
X
n
U
0
n
0
, , n n n >
1
| Pr ( ( ) 1) Pr ( ( ) 1) |
( )
n n
t X t U
A t A t
Q n

= = <

Definitie. Algoritmul A din cele doua definitii anterioare este numit test
statistic. Exemple de astfel de teste se vor gasi in continuarea lucrarii de
fata.
Observatie. Daca exista A si Q astfel incat conditiile definitiei de mai
sus sunt incalcate, spunem ca pica, sau esueaza testul A.
Putem acum da urmatoarea definitie:
Definitie. Spunem ca un generator de biti pseudo-aleatoare trece toate
testele statistice in timp polinomial[1], teste ce vor fi detaliate mai tarziu,
daca nici un algoritm nu reuseste, in timp polinomial, sa faca distinctia
intre o secventa de iesire a generatorului si o secventa pur aleatoare de
aceeasi lungime cu o probabilitate semnificativ mai mare de .
[1] Timpul de rulare al testului este limitat de un polinom de lungime l al
secventei de iesire.
n
X

Definitie. Un program determinist in timp polinomial
este un generator de numere pseudo-aleatoare
daca sunt indeplinite
urmatoarele conditii
1. p > k ;
2. este pseudo-aleator, unde este distributia pe
obtinuta astfel:
pentru a obtine :
a. se alege
b. se defineste t = G(x).
Adica, pentru orice algoritm probabilist A, orice polinom Q si
orice k suficient de mare, avem:
:{0,1} {0,1}
k p
G
{ }
p p
G
p
G {0,1}
p
p
t G
k
x G
1
| Pr ( ( ) 1) Pr ( ( ) 1) |
( )
p p
t G t U
A t A t
Q p

= = <

Testul bitului urmator
Definitie. Testul bitului urmator este acel test
statistic care ia ca intrare prefixul unei secvente si in
urma caruia rezulta o predictie a urmatorului bit.
Definitie. Spunem ca un generator de numere
pseudo-aleatoare trece testul urmatorulu bit daca
nu exista algoritm in timp exponential care, la
intrarea primilor l biti ai unei secvente de iesire s, sa
poata prezice cei (l+1) biti ai lui s cu probabilitatea
semnificativ mai mare decat .

Formal, notam cu k probabilitatea de distributie pe .
Definitie. Spunem ca un generator de numere pseudo-
aleatoare trece testul urmatorulu bit daca pentru orice polinom
Q, exista un intreg astfel incat pentru orice
avem
Fapt (universalitatea testului bitului urmator). Un generator de
numere pseudo-aleatoare trece testul urmatorului bit daca si
numai daca trece toate testele statistice in timp polinomial.
Definitie. Un PRBG care trece testul urmatorului bit este
numit un generator criprografic sigur de biti pseudaleatori[1].
[1] Cryptographically secure pseudorandom bit
generator(CSPRBG).
{0,1}
k
0
k
0
si m p k p > <
1 2 1
1 1
| Pr [ ( ... ) ] |
2 ( )
p
t G m m
A t t t t
Q k
+
= < +

TESTE STATISTICE DE
VALIDARE

Distributia normala si distributia
Distributia normala
Definitie. O variabila aleatoare (continua) X
are o distributie normala de medie si
varianta , daca densitatea sa de
probablitate este definita astfel:
Notatam X cu
Daca X este N(0,1), atunci spunem ca X
are o distributie normala standard.
Fapt. Daca variabila aleatoare X este
, atunci variabila aleatoare
este N(0,1).
Distributia
Definitie. Fie un intreg. O variabila
aleatoare (continua) X are o distributie cu
v grade de libertate daca functia sa de
densitate probablistica este definita astfel:
unde reprezinta functia gamma[1].
Media si varianta acestei distributii sunt
si .
Fapt. Daca variabila aleatoare X este
, atunci variabila aleatoare
are o distributie cu 1 grad de libertate.
In particular, daca X este N(0,1), atunci Z =
are o distributie cu 1 grad de libertate.
[1] Functia gamma este definita prin
unde t > 0.
2

2
2
1 ( )
( ) exp ,
2
2
x
f x x



= < <
`
)
2
( , ) N
2
( , ) N
( ) / Z X =
2

1 v
2

( / 2) 1 / 2
/ 2
1
e , 0
( / 2)2 ( )
0, 0
v x
v
x x
v f x
x

<

<

v =
2
2v =
2
( , ) N
2
0 >
2 2
( ) / Z X =
2

2
X
1
0
( )
t x
t x e dx


Postulatele lui Golomb
Una din primele incercari in a stabili
cateva conditii necesare unor secvente
periodice pseudoaleatoare sa para intr-
adevar aleatoare, o reprezinta postulatele lui
Golomb. Aceste conditii sunt insa departe de
a fi suficiente pentru ca aceste secvente sa
para aleatoare, cu o singura exceptie: toate
secventele sunt binare.

Teste statistice de baza
Fie o secventa binara de lungime n:
Urmatoarele teste statistice determina daca
secventa binara s poseda sau nu anumite
caracteristici cum ar fi cele pe care ar trebui
sa le detina o secventa binara de numere pur
aleatoare.
0 1 2 1
, , ,...,
n
s s s s s

=

Testul de frecventa (testul monobit)
Scopul acestui test este de a determina daca
numarul de 1 si, respectiv de 0, este acelasi
care ar trebui sa fie in cazul in care secventa
in cauza este aleatoare.

Testul serial (testul doi - biti)
Scopul acestui test este de a determina daca
numerele aparitiilor subsirurilor 00, 01, 10 si
11 ca subsiruri ale lui s sunt aproximativ
aceleasi, ceea ce se asteapta dealtfel de la o
secventa aleatoare.

Testul poker
Fie m un intreg pozitiv astfel incat
si fie . Se imparte secventa s in k
subsecvente, fiecare de lungime m si se
considera numarul aparitiilor celui de-al i-
lea tip de astfel de secventa, unde .
Testul poker determina daca fiecare secventa
de lungime m apare de un aproximativ
acelasi numar de ori in s, asa cum se
asteapta dealtfel de la o secventa aleatoare
de biti.
5 2
m
n
m
(

(

n
k
m
(
=
(

i
n
1 2
m
i

Testul de tip run
Determina daca numarul sirurilor de tip run
(numarul de zerouri sau de unu) de lungimi
diferite ale sirului s este acelasi cu cel al unui
sir aleator.

Testul de autocorelare
Scopul acestui test este de a verifica
eventualele corelatii dintre secventa s si
versiunea shiftata (versiunea lui s in care
aceasta secventa a fost modificata prin
aplicarea unor operatii de deplasare la
stanga sau la dreapta pe biti) eventual
neciclica, a acestuia.

Testul statistic universal al lui Maurer
Ideea de baza ce sta la baza testului statistic al lui Maurer
consta in aceea ca nu ar trebui sa se poata compresa
semnificativ si fara pierderi de informatie o secventa s de iesire a
unui generator de numere aleatoare.
In acest sens, daca o anumita secventa de iesire a unui
generator poate fi comprimata semnificativ, acesta din urma ar
trebui sa fie respins ca nefiind un bun generator.
In schimbul compresiei unei secvente s, testul statistic
universal calculeaza o cantitate care sa fie compatibila cu
lungimea secventei comprimate.

Universalitatea testului
statistic universal al lui Maurer
apare deoarece acest test este
capabil sa detecteze, orice defect
apartinand unei clase vaste de
posibile defecte pe care le poate
avea un generator.

Bibliografie

Douglas Stinson, Cryptographie Theorie et pratique, International Thompson Publishing France, Paris
1996.

Aiden A. Bruen, Mario A. Forcinito, Cryptography, Information Theory, and Error-Correction: a handbook
for the 21st century, Wiley-Interscience, John Wiley&Sons, Inc., Hoboken, New Jersey.

A. Menezes, P. van Oorschot, S. Vanstone, Handbook of Applied Cryptography, CRC Press, 1996, pentru
mai multe informatii: www.cacr.math.uwaterloo.ca/hac

A. Atanasiu, Crptografie, Note de Curs, disponibil la adresa de internet: http://


www.galaxyng.com/adrian_atanasiu/cript.htm

S. Goldwasser, M. Bellare, Lecture Notes on Cryptography, Cambridge, Massachusetts, August 2001.

M. J. Robshaw, Stream Ciphers, RSA Laboratories Tehnical Report TR-701, Version 2.0-July 25, 1995

R. Davies, Hardware random number generators, articol prezentat lacea de a 15-a Australian Statistics
Conference in Julie, 2000 si la cea de-a 51-a Conference of the NZ Statistical Association in Septembrie,
2000, disponibil la adresa de internet http://www.robertnz.net/hwrng.htm

J. Viega, Practical Random Number Generation in Software, in Proc. 19th Annual Computer Security
Applications Conference, Decembrie, 2003.

www.agner.org/random/theory

http://www.cs.utk.edu/~langston/projects/papers/ssst03.pdf

http://www.crypto.wpi.edu/Research/truerandom.shtml

http://www.cs.berkeley.edu/~daw/rnd/
Preview Sisteme sincrone Sisteme asincrone
Sisteme de criptare uide
Luciana Morogan
Facultatea de Matematica-Informatica
Universitatea Spiru Haret
Laborator
Preview Sisteme sincrone Sisteme asincrone
Outline
1
Preview
2
Sisteme sincrone
3
Sisteme asincrone
Preview Sisteme sincrone Sisteme asincrone
Sisteme de criptare
Sistemele de criptare:
bloc(block cyphers)
elemente succesive ale textului clar sunt criptate folosind
aceeasi cheie de criptare
daca x = x
1
x
2
x
3
. . . atunci
y = y
1
y
2
y
3
. . . = e
k
(x
1
)e
k
(x
2
)e
k
(x
3
) . . .
uide(stream cyphers)
sincrone
asincrone
Preview Sisteme sincrone Sisteme asincrone
Denitii formale (1)
Fie M= (P, C, K, E, D) un sistem de criptare. Secventa de
simboluri k
1
k
2
k
3
K
+
se numeste cheie uida.
M= (P, C, K, E, D) este un sistem de criptare uid daca
cipteaza textul clar x = x
1
x
2
x
3
. . . in
y = y
1
y
2
y
3
. . . = e
k
1
(x
1
)e
k
2
(x
2
)e
k
3
(x
3
) . . ., unde k
1
k
2
k
3
. . .
este o cheie uida din K
+
Preview Sisteme sincrone Sisteme asincrone
Denitii formale (2)
Problema generala: generarea cheii uide cu ajutorul unui
generator numit generator de chei uide
Obs! Daca
cheia uida este aleasa aleator si nu mai este foloita
ulterior
lungimea cheii = lungimea textului clar
Atunci sistemul de criptare se numeste one-time-pad
Preview Sisteme sincrone Sisteme asincrone
Denitie formala
Un sistem de criptare uid sincron este o structura
(P, C, K, L, E, D) unde
Fie P, C, K sunt multimi nite, nevide, ale caror elemente
se numesc texte clare, texte criptate si, respectiv, chei
L este o multime nita, nevida numita alfabetul sirului de
chei
se deneste g : K L
+
generatorul de chei uide astfel
incat k K avem g(k) = k
1
k
2
k
3
K
+
cheia uida
(teoretic innita)
z L,
exista regula de criptare e
z
E
exista regula de decriptare d
z
D
astfel incat x P, d
z
(e
z
(x)) = x
Preview Sisteme sincrone Sisteme asincrone
Exemplu: Sistemul de criptare Vigenere
Descrierea sistemului
m lungimea cuvantului cheie
P, C, K=Z
26
, K= (Z
26
)
m
e
z
(x) = x +z(mod26), d
z
(y) = y z(mod26)
cheia z
1
z
2
. . . denita prin
z
i
=

k
i
dc 1 i m
z
i m
dc i m +1
va genera din cheia xa K = (k
1
, k
2
, . . . , k
m
), cheia uida
k
1
, k
2
, . . . , k
m
k
1
, k
2
, . . . , k
m
k
1
, k
2
, . . .
Preview Sisteme sincrone Sisteme asincrone
Criptarea si decriptarea
Se realizeaza ca un automat descris de
q
i +1
= (q
i
, k), z
i
= g(q
i
, k), y
i
= h(z
i
, x
i
) unde:
q
0
- starea initiala determinata din cheia k
- functia de tranzitie a starilor
g - functia ce produce cheia uida z
i
h - functia iesire care produce textul criptat y
i
pe baza
textului clar x
i
si a cheii uide z
i
Preview Sisteme sincrone Sisteme asincrone
Criptarea si decriptarea: schematic
Criptarea
Preview Sisteme sincrone Sisteme asincrone
Decriptarea: schematic
Decriptarea
Preview Sisteme sincrone Sisteme asincrone
Observatii
Sistemul de criptare bloc este un caz particular de sistem
de criptare uid: i 1, z
i
= k
(Sincronizare.) Cel care trimite mesajele si cel ce urmeaza
a le primi trebuie sa isi sincronizeze cheia uida pentru a
obtine o criptare/decriptare corecta. Daca in timpul
transmisiei sunt inserati sau eliminati biti in textul criptat,
atunci decriptarea esueaza si poate reluata pe baza unor
tehnici de resincronizare (de exp. reinitializarea)
Modicarea unui bit din textul criptat (fara a se elimina sau
adauga nimic) nu afecteaza decriptarea altor caractere
(nepropagarea erorii)
Adversarul activ care elimina, insereaza sau retrimite
componente ale mesajului provoaca desincronizari si va
detectat la receptie
Preview Sisteme sincrone Sisteme asincrone
Sistemul aditiv uid binar de criptare
Un sistem aditiv uid binar de criptare este un sistem uid
sincron in care P = C = L= Z
2
iar h reprezinta functia XOR
Criptare Decriptare
Preview Sisteme sincrone Sisteme asincrone
Sistemul aditiv uid binar de criptare - exemplu
Sa considerm exemplul in care dorim criptarea/decriptarea secventei de text
clar x = 101101 si presupunem ca iesirea generatorului de chei uide ofera
cheia z = 1101. Vom avea: x
1
= 1, x
2
= 0, x
3
= 1, x
4
= 1, x
5
= 0, x
6
= 1 si
z
1
= 1, z
2
= 1, z
3
= 0, z
4
= 1, z
5
= z
1
= 1, z
6
= z
2
= 1
Criptarea
y
1
= e
z
1
(x
1
) = x
1
z
1
= 1 1 = 0
y
2
= e
z
2
(x
2
) = x
2
z
2
= 0 1 = 1
y
3
= e
z
3
(x
3
) = x
3
z
3
= 1 0 = 1
y
4
= e
z
4
(x
4
) = x
4
z
4
= 1 1 = 0
y
5
= e
z
1
(x
5
) = x
5
z
1
= 0 1 = 1
y
6
= e
z
2
(x
6
) = x
6
z
2
= 1 1 = 0
Se obtine astfel secventa de text cript
y = 011010
Decriptarea
x
1
= d
z
1
(y
1
) = y
1
z
1
= 1 0 = 1
x
2
= d
z
2
(y
2
) = y
2
z
2
= 1 1 = 0
x
3
= d
z
3
(y
3
) = y
3
z
3
= 0 1 = 1
x
4
= d
z
4
(y
4
) = y
4
z
4
= 1 0 = 1
x
5
= d
z
1
(y
5
) = y
5
z
1
= 1 1 = 0
x
6
= d
z
2
(y
6
) = y
6
z
2
= 1 0 = 1
Se obtine astfel secventa de text clar
x = 101101
Preview Sisteme sincrone Sisteme asincrone
Denitie formala
Un sistem de criptare uid se numeste asincron
(auto-sincronizabil) daca functia de generare a cheii uide
depinde de un numar de caractere criptate anterior:
q
i
= (y
i t
, y
i t +1
, . . . , y
i 1
), z
i
= g(q
i
, k), y
i
= h(z
i
, x
i
) unde:
q
0
= (y
t
, y
t +1
, . . . , y
1
) - starea initiala
k - cheia
g - functia ce produce cheia uida
h - functia iesire care produce care cripteaza textului clar x
i
Preview Sisteme sincrone Sisteme asincrone
Sisteme asincrone - Exemple
LFSR
- registrii lineari cu feedback
Criptarea cu auto-cheie
P = C = L= Z
26
cheia uida este data de z
1
= k, z
i
= y
i 1
, i 2
pentru z Z
26
, denim
e
z
(x) = x +z(mod26)
d
z
(y) = y z(mod26)
Exercitiu
Pentru k = 11
codicati/decodicati textul clar
SPIRU HARET
Solutia
Se va obtine textul criptatat
DSARLSSJNG.
Preview Sisteme sincrone Sisteme asincrone
Solutia detaliata a exercitiului anterior
Codicarea textului clar SPIRU HARET este x =18 15 8 17 20 7 0 17 4 19,
iar k = z
1
= 11
Modul criptare
y
1
= e
z
1
(x
1
) = x
1
+ z
1
(mod26) = 18 + 11(mod26) = 3 si z
2
= y
1
= 3
y
2
= e
z
2
(x
2
) = x
2
+ z
2
(mod26) = 15 + 3(mod26) = 18 si z
3
= y
2
= 18
y
3
= e
z
3
(x
3
) = x
3
+ z
3
(mod26) = 8 + 18(mod26) = 0 si z
4
= y
3
= 0
y
4
= e
z
4
(x
4
) = x
4
+ z
4
(mod26) = 17 + 0(mod26) = 17 si z
5
= y
4
= 17
y
5
= e
z
5
(x
5
) = x
5
+ z
5
(mod26) = 20 + 17(mod26) = 11 si z
6
= y
5
= 11
y
6
= e
z
6
(x
6
) = x
6
+ z
6
(mod26) = 7 + 11(mod26) = 18 si z
7
= y
6
= 18
y
7
= e
z
7
(x
7
) = x
7
+ z
7
(mod26) = 0 + 18(mod26) = 18 si z
8
= y
7
= 18
y
8
= e
z
8
(x
8
) = x
8
+ z
8
(mod26) = 17 + 18(mod26) = 9 si z
9
= y
8
= 9
y
9
= e
z
9
(x
9
) = x
9
+ z
9
(mod26) = 4 + 9(mod26) = 13 si z
10
= y
9
= 13
y
10
= e
z
10
(x
10
) = x
10
+ z
10
(mod26) = 19 + 13(mod26) = 6
Se obtine astfel textul criptat y = 3 18 0 17 11 18 18 9 13 6 si deci
codicarea DSARLSSJNG.
Decripatrea se va realiza in mod similar.
Preview Sisteme sincrone Sisteme asincrone
Observatii
Auto-sincronizare: cum h
1
depinde de un numar xat de
caractere criptate anterior, desincronizarea rezulta din
inserarea sau stergerea de caractere criptate (se poate
evita)
Daca starea unui sistem uid auto-sincronizabil depinde de
t caractere anterioare, atunci modicarea
(stergerea,inserarea) unui caracter va duce la decriptarea
incorecta a maxim t caractere, dupa care decriptarea
redevine corecta.
Preview Sisteme sincrone Sisteme asincrone
Alte exemple de sisteme uide de criptare
SEAL - sistem de criptare aditiv binar
RC4 (Rist Code 4) - creat pentru RSA Data Security Inc.
(astazi RSA Security), este un sistem aditiv uid de
criptare destinat scopurilor comerciale
Laborator
Sisteme de criptare bloc
- Moduri de utilizare -
Luciana Morogan
Facultatea de Matematica-Informatica
Universitatea Spiru Haret
Laborator
Laborator
Outline
Sisteme de criptare bloc
Modul de utilizare ECB
Modul de utilizare CBC
Modul de utilizare OFB
Modul de utilizare CFB
Laborator
Sisteme de criptare bloc
Sisteme de criptare - denitie
Sistemele de criptare bloc (block cyphers):

elemente succesive ale textului clar sunt criptate folosind


aceeasi cheie de criptare

daca x = x
1
x
2
x
3
. . . atunci
y = y
1
y
2
y
3
. . . = e
k
(x
1
)e
k
(x
2
)e
k
(x
3
) . . .
Laborator
Sisteme de criptare bloc
Moduri de utilizare

ECB (Electonic Codebook Mode)

CBC (Cypher Block Chaining Mode)

OFB (Output Feedback Mode)

CFB (Cypher Feedback Mode)


Laborator
Modul de utilizare ECB
Descrierea modului de utilizare ECB

textul clar se descompune in blocuri de lungime n; daca


este necesar, aceasta se suplimenteaza a. i. lungimea sa
e divizibila cu n (suplimentarea poate consta din simboluri
alese aleator)

daca este folosita cheia de criptare k, atunci ecare bloc


de lungime n se cripteaza folosind functia e
k

textul criptat este decriptat prin aplicarea functiei d


k
, unde
k reprezinta cheia de decriptare corespunzatoare lui k
Laborator
Modul de utilizare ECB
Descrierea formala a modului de utilizare ECB

Fie x =
1

3
. . . texul clar unde ecare bloc de text

i
, i 1 este de lungime n

Formula de criptare cu cheia k:


i
= e
k
(
i
), i 1

Textul criptat este y =


1

3
. . .
Laborator
Modul de utilizare ECB
Exercitiu

Consideram cifrul bloc care aplica permutari bitilor unui


vector de biti de lungime 4.

Daca K =S
4
, atunci pentru S
4
, avem
e

: [0, 1]
4
[0, 1]
4
, b
1
b
2
b
3
b
4
b
(1)
b
(2)
b
(3)
b
(4)
In particular
Criptati textul clar x = 1011000101001010 folosind cheia
=

1 2 3 4
2 3 4 1

Laborator
Modul de utilizare CBC
Descrierea modului de utilizare CBC

codicarea unui boc nu mai depinde doar de cheie (a se


vedea ECB) ci si de blocurile anterioare

aceleasi blocuri in contexte diferite, vor codicate diferit

receptorul poate spune daca textul criptat a fost modicat,


deoarece decriptarea acestuia esueaza
Laborator
Modul de utilizare CBC
Descrierea formala a modului de utilizare CBC

se deneste blocul initial IV =


0

Formula de criptare cu cheia k:


i
= e
k
(
i 1

i
), i 1,
unde reprezinta operatia XOR pe biti
Laborator
Modul de utilizare CBC
Schematic - CBC
Criptare Decriptare
Laborator
Modul de utilizare CBC
Exercitiu

Consideram cifrul bloc care aplica permutari bitilor unui


vector de biti de lungime 4.

Daca K =S
4
, atunci pentru S
4
, avem
e

: [0, 1]
4
[0, 1]
4
, b
1
b
2
b
3
b
4
b
(1)
b
(2)
b
(3)
b
(4)
In particular
Criptati textul clar x = 1011000101001010 folosind cheia
=

1 2 3 4
2 3 4 1

Blocul initial este IV = 1010


Laborator
Modul de utilizare OFB
Descrierea modului de utilizare OFB

construit conform sistemelor de criptare uide

se genereaza intai cheia uida, care apoi se va combina


cu textul clar

este o criptare sincronizabila aditiva: componentele cheii


uide sunt obtinute prin criptarea iterativa a unui bloc initial
Laborator
Modul de utilizare OFB
Descrierea formala a modului de utilizare OFB

Obtinerea cheii uide

se deneste blocul initial


0
= IV, IV {0, 1}
n
si un numar
intreg pozitiv r , 1 r n

textul clar se va descompune in blocuri de dimensiune r

se calculeaza recursiv cheia uida


1

3
. . . dupa formula

i
= e
k
(
i 1
), i 1

Secventa de text clar x =


1

3
. . . se codica cu
formula de criptare
i
= e
k
(
i

i
), i 1

Textul criptat este y =


1

3
. . .
X
Laborator
Modul de utilizare OFB
Exercitiu

Consideram acelasi cifru bloc, text clar si cheie ca la


exercitiile anterioare

Blocul initial este IV = 1010


Sa se realizeze criptarea/decriptarea secventei de text clar.
Laborator
Modul de utilizare CFB
Descrierea modului de utilizare CFB

construit conform sistemelor de criptare uide, este potrivit


pentru codicarea mesajelor mari

in cadrul aplicatiilor in timp real, poate avea totusi


probleme de ecienta

se genereaza intai cheia uida, care apoi se va combina


cu textul clar

este necesar un vector de initializare


Laborator
Modul de utilizare CFB
Descrierea formala a modului de utilizare CFB

se deneste blocul initial IV =


0
, IV {0, 1}
n
si un numar
intreg pozitiv r , 1 r n

textul clar se va descompune in blocuri de dimensiune r

se calculeaza cheia uida


1

3
. . . criptand blocul de text
criptat anterior dupa formula
i
= e
k
(
i 1
), i 1

Secventa de text clar x =


1

3
. . . se codica cu
formula de criptare
i
= e
k
(
i

i
), i 1

Textul criptat este y =


1

3
. . .
X
Laborator
Modul de utilizare CFB
Schematic - CFB
Criptare Decriptare
Laborator
Modul de utilizare CFB
Exercitiu

Consideram acelasi cifru bloc, text clar si cheie ca la


exercitiile anterioare

Lungimea blocurilor in care se imparte textul clar este tot 4

Blocul initial este IV = 1010


Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Sisteme de criptare cu cheie publica
Luciana Morogan
Facultatea de Matematica-Informatica
Universitatea Spiru Haret
Laborator
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Outline
1
Sisteme de criptare cu cheie publica
Generalitati
Securitatea
2
Sistemul RSA
RSA
3
Sistemul El-Gamal
El-Gamal
4
Exercitii propuse
Exercitii propuse
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Generalitati
Idei de baza
Regula de criptare e
k
poate pulicata intr-un registru public.
Alice (sau orice alta persoana) poate trimite lui Bob un mesaj
criptat cu e
k
, fara a intra in prealabil in contact, iar Bob este
singurul capabil sa descifreze textul, utilizand cheia sa secreta
de decriptare d
k
.
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Generalitati
Cele mai cunoscute sisteme cu cheie publica
Sistemul RSA - bazat pe dicultatea descompunerii in
factori primi a numerelor mari (de sute de cifre); cel mai
larg utilizat in acest moment
Sistemul El-Gamal - bazat pe dicultatea calculului
logarimului discret intr-un corp nit
Sistemul Merkle-Hellman - primul sistem denit cu cheie
publica, bazat pe problema {0, 1} a rucsacului (problema
NP-completa
1
)
Sistemul McEliece - bazat pe teoria algebrica a codurilor
(decodicarea unui cod linear este o problema
NP-completa)
Curbe eliptice - sistem ce isi desfasoara calculele pe
multimea punctelor unei curbe eliptice
1
Daca problema se reduce la o problema nepolinomiala elementara
(NP-tare). De exemplu: 2
n
, e
n
, a
a
n
s.a.
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Generalitati
Functii neinversabile (1)
Exemple
Strazile cu sens unic dintr-un oras
A B
B A imposibil
desi este usor sa parcurgi drumul A B, este imposibil sa te intorci
B A (decriptarea)
Cartea de telefon a unui oras mare
Este usor de gasit numarul de telefon al unei persoane si foarte greu
(imposibil) de aat persoana care are un anumit numar de telefon.
Criptarea. Pentru ecare litera a textului clar se alege un nume care
incepe cu acelasi caracter, iar numarul de telefon al persoanei
reprezinta criptarea (doua aparitii ale aceleiasi litere pot codicate
diferit)
Decriptarea. Bob detine cartea de teleon scrisa in ordine
crescatoare/descrescatoare a numerelor de telefon
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Generalitati
Functii neinversabile (2)
O functie neinversabila trebuie sa verice conditiile:
ind dat x, f (x) este usor de calculat
calculul lui x din f (x) este imposibil
D. p. d. v. matematic nu se cunosc astfel de functii si deci o
problema este:
usoara - daca se poate rezolva cu un algoritm polinomial
cel mult linear
grea - daca se poate rezolva cu un algoritm polinomial
nelinear
imposibila - daca este NP-completa
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Generalitati
Trapa secreta
Bob trebuie sa dispuna de un procedeu care sa-i permita sa
transforme o problema NP-completa in una usoara.
procedeu numit trapa secreta
Exemplu
In exemplul cu cartea de telefon, trapa secreta este
reprezentata de cartea de telefon ordonata dupa numere si nu
dupa abonati.
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Generalitati
Principii generale de constructie a unui sistem de criptare cu cheie
publica
Se incepe cu o problema P dicila a carei rezolvare, in
termeni de complexitate, este imposibila (nu exista nici un
algoritm de complitate polinomiala care sa rezolve P)
Se alege P
1
o subproblema a lui P rezolvabila in timp
polinomial (preferabil linear)
Lui P
1
i se aplica o transformare si se obtine P
2
care sa nu
semene cu P
1
, dar sa e apropiata P
Se face publica P
2
si se descrie algoritmul de criptare
bazat pe aceasta. Trapa secreta: modul in care se obtine
P
1
din P
2
Se construiesc detaliile de criptare a.i. destinatarul sa
poata folosi trapa secreta si sa rezolve P
1
, iar criptanalistul
sa trebuiasca sa rezolve P
2
, imposibila datorita asemanarii
acesteia cu P
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Securitatea
Atacuri (1)
Daca criptanalistul Oscar dispune de un text criptat y,
atunci el poate cauta un text clar x a.i. e
k
(x) = y
Raspundeti la intrebarea ce modalitate de aparare
considerati a posibila in acest caz?
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Securitatea
Atacuri (1) - raspuns
Raspuns: gradul de complexitate al sistemului
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Securitatea
Atacuri (2)
Meet - in - the middle
Presupunem ipoteza in care Alice si Bob vor sa stabileasca
intre ei o legatura (un contact)
cei doi vor face publice cheile lor de criptare e
A
si e
B
daca contactul este nepersonalizat, aunci Oscar poate
controla mesajele schimbate intre cei doi:
Oscar opacizaza cele doua chei de criptare si trimite lui
Alice ceia e
1
B
ca venind dpartea lui Bob. La fel procedeaza
de cealalta parte substituind e
A
cu e
1
A
daca consideram m mesajul pe care Alice doreste sa-l
trimita lui Bob, atunci aceasta codica pe m si trimite
y
1
= e
1
B
(m)
Oscar intercepteaza mesajul si aa m = d
1
B
(y
1
)
Oscar recripteaza y = e
B
(m) si trmite y lui Bob (Oscar
poate intarzia sau modica mesajul)
CE CONCLUZII TRAGETI DE AICI?
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Securitatea
Atacuri (2) - raspuns
Apare necesitatea:
autenticarii mesajului sau expeditorului - autenticarea::
procesul princare un calculator (program sau alt uilizator)
incearca sa conrme destinatarului ca mesajul primit de
acesta provine sau nu din partea sa
condentialtatea:: asigura accesul la informatie doar
partilor autorizate
integritatea:: siguranta ca datele la care se refera un
utilizator pot accesate si modicate doar de catre cei
autorizati
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
RSA
Algoritm
RSA:: Rivest-Shamir-Adleman
p, q numere prime impare, p = q si n = pq
(n) = (p 1)(q 1) indicatorul lui Euler
e P = C =Z
n
, denim
K= {(n, p, q, a, b)|n = pq, ab 1(mod(n))}
pentru k = (n, p, q, a, b), x, y Z
n
avem
e
k
(x) = x
b
(mod n)
d
k
(y) = y
a
(mod n)
valorile n, b sunt publice; p, q, a sunt secrete
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
RSA
Securitatea si trapa secreta
Securitatea
Se bazeaza pe ipoteza ca e
k
(x) = x
b
(mod n) este
neinversabila d.p.d.v al complexitatii.
Pentru ca sistemul sa e sigur, trebuie ca n sa e sucient
de mare pentru ca factorizarea acestuia sa e imposibila
( (n) imposibil a imposibil)
Trapa secreta
Descompunerea lui n = pq
se calculeaza (n) = (p 1)(q 1)
se determina exponentul de decriptare a folosind
algoritmul lui Euclid extins (pentru aarea cmmdc-ului si a
inversului intr-un inel Z
n
)
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
RSA
Implementarea
Decriptare
Bob trebuie sa urmareasca pasii:
genereaza numerele prime mari p si q
calculeaza n = pq si (n) = (p 1)(q 1)
alege aleator un b, 1 < b < (n) a.i. (b, (n)) = 1
calculeaza a = b
1
(mod(n)) folosind algoritmul lui Euclid
face publice n si b
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
El-Gamal
Problema logaritmului discret
p - prim, , Z
p
, = 0
a =?, a Z
p1
a.i.
a
(mod p)
a, dc exista, este unic si a = log

Obs! Pentru problema logaritmilor discreti nu este obligatoriu ca p sa e


numar prim, important este ca sa e radacina primitiva de ordinul p 1 a
unitatii (i , 0 < i < p 1,
i
1 (mod p))
Teorma lui Fermat.
p1
1 (mod p)
Obs! Cum logritmul discret este dicil de calculat iar operatia inversa
(exponentierea) este simpla, trebuie utilizata problema logaritmului discret
dicila in Z
p
:
p - minim 512 biti (1024 pt securitate pe termen lung)
p 1 - are cel putin un divizor prim mare
Pentru alegerea convenabila a lui p, problema este NP-completa.
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
El-Gamal
El-Gamal
Algoritm
p - prim a.i. problema logaritmilor discreti sa e dicila in
Z
p
si Z

p
primitiv
P= Z

p
, C= Z

p
Z

p
K= {(p, , a, )|
a
(modp)}
valorile p, , - publice, iar a - secreta
pt K = (p, , a, ) si k Z
p1
aleator(secret) denim:
e
K
(x, k) = (y
1
, y
2
) unde
y
1
=
k
(mod p)
y
2
= x
k
(mod p)
pt y
1
, y
2
Z

p
denim d
K
(y
1
, y
2
) = y
2
(y
a
1
)
1
(mod p)
Sistemul este nedeterminist: criptarea depinde de x si o
variabila aleatoare k aleasa de Alice exista mai multe texte
criptate corespunzatoare unui anumit text clar.
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
El-Gamal
Observatii
Dezavantaj: dublarea lungimii textului criptat comparativ cu
lungimea textului clar
Daca (y
1
, y
2
), (z
1
, z
2
) sunt textele criptare ale mesajelor
m
1
, respectiv m
2
, atunci se deduce textul criptat pentru
m
1
m
2
ca ind (y
1
z
1
, y
2
z
2
)
criptarea pentru 2m
1
(respectiv 2m
2
) conduce la concluzia
ca sistemul El-Gamal este sensibil la atacul cu text clar ales
ESENTIAL: doua texte diferite ce vor criptate trebuie sa
foloseasca valori diferite pentru k
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Exercitii propuse
Sistemul RSA
Ex. 1
Fie d exponentul de decriptare al
sistemului de criptare RSA construit
cu numerele prime p = 3, q = 5. Daca
exponentul de criptare este e = 7,
determinati d.
Ex. 2
Fie d = 11 exponentul de decriptare al
sistemului de criptare RSA construit
cu numerele prime p = 7, q = 11.
Determinati exponentul de criptare e.
Ex. 3
Consideram sistemul de criptare RSA
construit cu numerele prime
p = 3, q = 5. Daca exponentul de
criptare este e = 4 si se doreste
codicarea textului clar m = 11,
determinati textul criptat c.
Ex. 4
Un utilizator al sistemului de criptare
RSA are ca cheie publica
(n, e) = (35, 5) si cheia secreta d = 5.
Daca primeste textul criptat c = 3,
atunci textul clar decodicat de
utilizator este ...
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Exercitii propuse
Sistemul El-Gamal
Ex. 1
Fie cifrul El-Gamal asociat numarului prim p = 7 si radacinii
primitive = 5. Cheia secreta a lui Alice este 3, iar cea a lui
Bob este 4. Daca Bob codica textul clar x = 11 si il transmite
lui Alice, atunci aceasta primeste codicarea...
Ex. 2
Fie cifrul El-Gamal asociat numarului prim p = 11 si radacinii
primitive = 5. Cheia secreta a lui Alice este 4, iar cea a lui
Bob este 7. Alice primeste de la Bob textul criptat (3,7) pe care
il decodica si gaseste mesajul clar ...
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Semnaturi electronice si functii de
dispersie
Luciana Morogan
Facultatea de Matematica-Informatica
Universitatea Spiru Haret
Laborator
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Outline
1
Preview: Semnaturi electronice
2
Protocoale de semnatura
Protocoale de semnatura
Procedee de criptare vs. procedee de semnatura
Semnatura El-Gamal
3
Functii de dispersie
Semnaturi si functii de dispersie
Functii de dispersie cu coliziuni
Exemplu de exercitiu
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Semnaturi electronice
O semnatura electronica trebuie sa e:
1
unica - o anumita semnatura trebuie sa poata generata
de catre o singura persoana
2
neimitabila - nici o alta persoana nu va putea genera
semnatura utilizatorului indicat
3
usor de autenticat - orice destinatar legal si, eventual,
orice arbitru sa poata stabilii autenticitatea semnaturii
4
imposibil de negat - nici un utilizator legal sa nu-si poata
nega propria semnatura
5
usor de generat
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Protocoale de semnatura
Protocoale
Protocolul este format din:
algoritmul de semnatura - secret: sig(x), unde x este
mesajul transmis
algoritmul de vericare - public: daca y este o semnatura
autentica a lui x, atunci (x, y) algoritmul ver (x, y) ofera un
raspuns dicotomic (adevarat sau fals)
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Protocoale de semnatura
Denitie formala
Un protocol de semnatura este un cvintuplu (P, A, K, S, V)
unde:
P, A, K - multimi nite, nevide ale caror elemente se
numesc mesaje, semnaturi si, respectiv, chei
exista o aplicatie biunivoca K S V astfel incat
k K, !(sig
k
, ver
k
) unde
sig
k
: P A, ver
k
: P A {T, F} au proprietatea ca
x P, y A,
ver
k
(x, y) = T y = sig
k
(x)
Obs! Pentru ecare k K, functiile sig
k
si ver
k
trebuie sa e
calculabile in timp polinomial.
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Procedee de criptare vs. procedee de semnatura
Procedee de criptare vs. procedee de semnatura (1)
Consideram cazul in care Alice ii trimite lui Bob un mesaj
semnat si criptat. Fie x textul in clar.
Alice:
determina semnatura y = sig
Alice
(x)
codica x si y cu cheia publica a lui Bob obtinand textul
criptat z cu z = e
Bob
((x, y))
trimite pe z lui Bob
Bob:
foloseste cheia sa secreta d
Bob
si obtine perechea (x, y)
verica semnatura lui Alice cu cheia publica ver
Alice
(x, y)
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Procedee de criptare vs. procedee de semnatura
Procedee de criptare vs. procedee de semnatura (2)
Ce se poate intampla daca Alice cripteaza inainte de a semna?
Alice:
calculeaza z = e
Bob
(x)
calculeaza y = sig
Alice
(e
Bob
(x))
trimite lui Bob mesajul (z, y)
Bob:
decripteaza z si obtine x
verica y ca semnatura lui z cu cheia publica ver
Alice
(x, z)
Pericolul: Oscar poate intercepta (z, y), inlocuieste y cu propria
sa semnatura y
1
= sig
Oscar
(z) si trimite lui Bob mesajul (z, y
1
)
se recomanda folosirea semnaturii inante de criptare
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Semnatura El-Gamal
Semnatura El-Gamal
p - prim a.i. problema logaritmilor discreti sa e dicila in
Z
p
si Z

p
element primitiv
P= Z

p
, A= Z

p
Z
p1
K= {(p, , a, )|
a
(modp)}
valorile p, , - publice, iar a - secreta
pt K = (p, , a, ) si k Z
p1
aleator(secret) denim:
sig
K
(x, k) = (, ) unde
=
k
(mod p)
= (x a)k
1
(mod (p 1))
pt x, Z

p
, Z
p1
denim
ver
K
(x, , ) =T


x
(mod p)
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Semnatura El-Gamal
Observatii
1
Daca semnatura este corecta, vericarea autentica
semnatura:

k

a+k

a
k
+k(xa)k
1

a
k
+xa

a
k
+xa
k

x
(mod p)
2
Protocolul este nedeterminist: pentru un mesaj dat, pot
exista mai multe semnaturi posibile.
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Semnaturi si functii de dispersie
Trasatura generala a protocoalelor de semnatura digitala
Mesajele ce pot semnate sunt de dimensiune mica, insa, in
practica, documentele ce trebuiesc a semnate ajung la
dimensiuni mult mai mari.
Solutia: functia de dispersie ce trebuie calculata rapid. Aceasta
transforma un mesaj de lungime arbitrara intr-o amprenta
numerica de dimensiune xata care ulterior va semnata:
daca se doreste semnarea unui mesaj x
1
se calculeaza amprenta numerica z = h(x)
2
aceasta se semneaza cu y = sig
k
(z)
3
perechea (x, y) este transmisa prin canalul de comunicatie
oricine poate efectua vericarea calculand z = h(x) si
utilizand ver
k
(z, y)
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Functii de dispersie cu coliziuni
Functii de dispersie cu coliziuni (1)
Cum semnatura foloseste doar amprenta numerica, h trebuie
sa satisfaca cateva conditii (pt a evita falsicarea)
atacul cel mai simplu al unui mesaj (x, y) semnat cu
y = sig
k
(h(x)) este urmatorul:
1
se calculeaza z = h(x)
2
se cauta x
1
= x a.i h(x
1
) = h(x)
Daca exista x
1
(x
1
, y) este un mesaj valid
= h trebuie sa e cu coliziuni slabe
1
1
Denitie. Functia de dispersie h este cu coliziuni slabe daca ind dat un
mesaj x, este calculabil dicil sa se gaseasca un mesaj x
1
= x a.i.
h(x
1
) = h(x)
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Functii de dispersie cu coliziuni
Functii de dispersie cu coliziuni (2)
atac: Oscar cauta doua mesaje x
1
, x
2
a.i. x
1
= x
2
si
h(x
1
) = h(x
2
). Il convinge pe Bob sa semneze x
1
cu
amprenta sa numerica h(x
1
) si obtine y (x
1
, y)
semnatura autentica
= h trebuie sa e cu coliziuni tari
2
Obs! O functie cu coliziuni tari este si cu coliziuni slabe.
2
Denitie. Functia de dispersie h este cu coliziuni tari daca este calculabil
dicil sa se obtina doua mesaje x
1
, x
2
, x
1
= x
2
a.i. h(x
1
) = h(x
2
)
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Functii de dispersie cu coliziuni
Functii de dispersie cu coliziuni (2)
atac bazat pe observatia ca este posibil sa se obtina
aleator falsicari ale amprentelor numerice. Daca Oscar
obtine o semnatura valida a amprentei z, el cauta x a.i.
h(x) = z
= h neinversabila
3
Lema. Daca o functie de dispersie este cu coliziuni tari,
atunci ea este neinversabila.
3
Denitie. h este neinversabila daca ind data o amprenta numerica z,
este calculabil dicil sa se gaseasca mesajul x a.i. h(x) = z.
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Exemplu de exercitiu
Exercitiu
Fie numarul prim p = 15 si radacina primitiva modulo 15 g = 3.
Alice doreste sa ii trimita lui Bob un document printr-un canal
de comunicatie. Pentru ca aceasta sa poata semna
documentul x {0, 1}

, ea alege cheia secreta a = 5 si k = 3.


Se considera publica o functie de dispersie (hash function) a.i.
h(x) = 11.
Cunoscand protocolul de semnatura El-Gamal folosit, cu
r = g
k
modp
s = (x ar )k
1
mod (p 1)
determinati (r , s).
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Exemplu de exercitiu
Solutie
(r , s) =?
r = 3
3
mod 15 12 mod 15
s = (11 5 12)3
1
mod 14 7 mod 14
= (r , s) = (12, 7)
Probleme
Criptograe si securitate
Ion D. Ion, Luciana Morogan
Facultatea de Matematica-Informatica
Universitatea Spiru Haret
Exemple de probleme pentru testare
Exemple de probleme pntru testare
Probleme
Outline
1
Probleme
Exemple de probleme pntru testare
Probleme
Exercitiul 1
Determinati inversa matricei (modulo 26)

3 2
3 5

Exemple de probleme pntru testare


Probleme
Exercitiul 2
Criptati un text clar la alegere folosind sistemul de criptare Hill
cu matricea

3 2
3 5

Exemple de probleme pntru testare


Probleme
Exercitiul 3
Folosind sistemul de criptare Polybios codicati textul clar
UNIVERSITATE.
Exemple de probleme pntru testare
Probleme
Exercitiul 4
Pentru a = 3, b = 5 se denesc functiile de criptare, respectiv
decriptare, ale unui sistem de criptare an:
e
(3,5)
(x) = 3x +5
d
(3,5)
(y) = 9y +9(26 5)(mod26) = 9y +7
Sa luam textul clar GRUPA. Codicarea acestuia este ...
Exemple de probleme pntru testare
Probleme
Exercitiul 5
In sistemul de criptare Vigenere, sa consideram cuvantul cheie
GRUPA. Criptam cu aceasta cheie textul clar CRIPTOGRAFIE
si se obtine textul criptat...
Exemple de probleme pntru testare
Probleme
Exercitiul 6
Folosind un sistem aditiv uid binar de criptare se cere
criptarea/decriptarea secventei de text clar x = 101101,
cunoscand chea uida z = 1101.
Exemple de probleme pntru testare
Probleme
Exercitiul 7
Folosind un sistem de criptre asincron cu auto-cheie, pentru
k = 11, codicati/decodicati textul clar SPIRU HARET.
Exemple de probleme pntru testare
Probleme
Exercitiul 8
Consideram modul de utilizare ECB al cifrului bloc DES care
aplica permutari bitilor unui vector de biti de lungime 4.
Criptati textul clar x = 1011000101001010 folosind cheia
=

1 2 3 4
2 3 4 1

Exemple de probleme pntru testare


Probleme
Exercitiul 9
Consideram modul de utilizare CBC al cifrului bloc DES care
aplica permutari bitilor unui vector de biti de lungime 4.
Criptati textul clar x = 1011000101001010 folosind cheia
=

1 2 3 4
2 3 4 1

si blocul initial IV = 1010


Exemple de probleme pntru testare
Probleme
Exercitiul 10
Consideram modul de utilizare OFB al cifrului bloc DES care
aplica permutari bitilor unui vector de biti de lungime 4.
Criptati textul clar x = 1011000101001010 folosind cheia
=

1 2 3 4
2 3 4 1

si blocul initial IV = 1010


Exemple de probleme pntru testare
Probleme
Exercitiul 11
Consideram modul de utilizare CFB al cifrului bloc DES care
aplica permutari bitilor unui vector de biti de lungime 4.
Criptati textul clar x = 1011000101001010 folosind cheia
=

1 2 3 4
2 3 4 1

si blocul initial IV = 1010


Exemple de probleme pntru testare
Probleme
Exercitiul 12: Sistemul RSA
Problema A
Fie d exponentul de decriptare al
sistemului de criptare RSA construit
cu numerele prime p = 3, q = 5. Daca
exponentul de criptare este e = 7,
determinati d.
Problema B
Fie d = 11 exponentul de decriptare al
sistemului de criptare RSA construit
cu numerele prime p = 7, q = 11.
Determinati exponentul de criptare e.
Problema C
Consideram sistemul de criptare RSA
construit cu numerele prime
p = 3, q = 5. Daca exponentul de
criptare este e = 4 si se doreste
codicarea textului clar m = 11,
determinati textul criptat c.
Problema D
Un utilizator al sistemului de criptare
RSA are ca cheie publica
(n, e) = (35, 5) si cheia secreta d = 5.
Daca primeste textul criptat c = 3,
atunci textul clar decodicat de
utilizator este ...
Exemple de probleme pntru testare
Probleme
Exercitiul 12: Sistemul El-Gamal
Problema A
Fie cifrul El-Gamal asociat numarului prim p = 7 si radacinii
primitive, modulo 7, 5. Cheia secreta a lui Alice este 3, iar cea
a lui Bob este 4. Daca Bob codica textul clar x = 11 si il
transmite lui Alice, atunci aceasta primeste codicarea...
Problema B
Fie cifrul El-Gamal asociat numarului prim p = 11 si radacinii
primitive, modulo 7, 5. Cheia secreta a lui Alice este 4, iar cea
a lui Bob este 7. Alice primeste de la Bob textul criptat (3,7) pe
care il decodica si gaseste mesajul clar ...
Exemple de probleme pntru testare
RSA
Reguli generale RSA:
n = p*q
f = (p-1)*(q-1)
1<e<n astfel incat c.m.m.d.c(e,f)=1
d=e
-1
(mod f) || se calculeaza folosind algoritmul lui Euclid extins
Criptare: c=m
e
(mod n)
Decriptare: m = c
d
(mod n)
m text clar, c text criptat, e exponentul de criptare, d exponentul de decriptare.
Algoritmul lui Euclid extins pentru aflarea inversului unui numar intr-un mod n.
Vom nota pasii algoritmului lui Euclid pornind de la pasul 0. Coeficientul obtinut la pasul i va fi notat q
i
. In timp ce efectuam
fiecare pas al algoritmului, vom calcula si un numar auxiliar, p
i
. Pentru primii 2 pasi stim deja valorile : p
0
= 0 and p
1
= 1. Pentru
restul pasilor vom calcula recursiv p
i
= p
i-2
- p
i-1
q
i-2
(mod n). Continuam calculul numarului auxiliar inca un pas dupa terminarea
algoritmului.
Algoritmul incepe prin impartirea lui n la x, apoi continua prin impartirea impartitorului la rest. Cand ultimul rest diferit de 0 se
afla la pasul k, daca acest rest e 1 , x admite un invers care va fi p
k+2
. (Daca restul nu e 1, atunci x nu admite un invers.)
EXEMPLU:
Calculam inversul lui 15 mod 26.
PAS 0: 26 /15= 1 rest 11 p
0
= 0
PAS 1: 15/11 = 1 rest 4 p
1
= 1
PAS 2: 11/4 = 2 rest 3 p
2
= 0 - 1( 1) mod 26 = 25
PAS 3: 4/3 = 1 rest 1 => x admite invers p
3
= 1 - 25( 1) mod 26 = -24 mod 26 = 2
PAS 4: 3/1 = 3 rest 0 p
4
= 25 - 2( 2) mod 26 = 21
p
5
= 2 - 21( 1) mod 26 = -19 mod 26 = 7
Observati ca 15*7 = 105 = 1 + 4*26 1 (mod 26).
EL-GAMAL
Reguli generale EL-GAMAL:
A cheia privata a lui Alice
B cheia privata a lui Bob
p numar prim mare
primitiv
(p,,
A
) Cheia publica a lui Alice
(p,,
B
) Cheia publica a lui Bob
Criptare : Bob obtine cheia publica a lui Alice, calculeaza textul criptat c
1
folosind cheia lui privata si c
2
folosind
A
a
lui Alice pe care-l obtine din cheia ei publica.
c
1
=
B
mod p ; c
2
= m(
A
)
k
mod p ; c = (c
1
,c
2
) - Trimite textul cifrat c = (c
1
,c
2
) la utilizatorul Alice.
Decriptare : Pentru a determina textul clar m din textul cifrat c, utilizatorul Alice execut urmtoarele:
1. Utilizeaz cheia sa privat a pentru a calcula: f = c
1
p-1-A
(mod p).
2. Determin textul clar m astfel: m = f*c
2
(mod p).



RSA 1) : p=3 ; q=5 ; e=7 , d=?
f=(p-1)*(q-1) = 2*4 = 8
d = e
-1
(mod f) = 7
-1
(mod 8)
8/7 = 1 rest 1 p
0
=0
7/1 = 7 rest 0 p
1
=1
p
2
=0 1*1 (mod 8) = -1 (mod 8) = 7
d = 7

RSA 2) : p=7; q=5; d=11 ; e=?
f=(p-1)*(q-1) = 6*4 = 24
e= d
-1
(mod f) = 11
-1
( mod 24 )
24/11 = 2 rest 2 p
0
=0
11/2 = 5 rest 1 p
1
=1
2/1 = 2 rest 0 p
2
=0 1*2 (mod 24) = 22
P
3
= 1 22*5 (mod 24) = -109 mod 24 = 11
e = 11

RSA 3) : n=15; e=4; m=11, c=?
c = m
e
(mod n) = 11
4
(mod 15) = 14641 mod 15 = 1

RSA 4) : (n,e) = (35,5) ; d=5, c=3 , m=?
m = c
d
(mod n) = 3
5
(mod 35) = 243 mod 35 = 33


El-Gamal 1): p=11; =2; csA=3; csB=4; m=9; c=?
c
1
=
B
(mod p) = 2
4
mod 11 = 16 mod 11 = 5
c
2
= m(
A
)
B
(mod p) = 9(2
3
)
4
mod 11 = 9*4096 (mod 11) = 3
c = (c
1
,c
2
) = (5,3)

El-Gamal 2): p=7; =5; csA=3; csB=4; m=11; c=?
c
1
=
B
(mod p) = 5
4
mod 7 = 625 mod 7 = 2
c
2
= m(
A
)
B
(mod p) = 11(5
3
)
4
mod 7 = 11*244140625 (mod 7) = 4
c = (c
1
,c
2
) = (2,4)

El-Gamal 3): p=11; =2; csA=3; csB=4; A primeste de la B (y
1
,y
2
)=(5,3); txt. Clar x =?
z = y
1
p-1-A
(mod p) = 5
11-1-3
(mod 11) = 5
7
(mod 11) = 3
x = z * y
2
(mod p) = 3 * 3 (mod 11) = 9

El-Gamal 4): p=11; =2; csA=4; csB=7; (y
1
,y
2
) = (3,7); txt clar x=?
Daca (y
1
,y
2
) = (3,7) este primit de B de la A, atunci:
f = y
1
p-1-B
(mod p) = 3
11-1-7
(mod 11) = 3
3
(mod 11) = 5
x = f * y
2
(mod p) = 5 * 7 (mod 11) = 2
Daca (y
1
,y
2
) = (3,7) este primit de A de la B, atunci:
f = y
1
p-1-A
(mod p) = 3
11-1-4
(mod 11) = 3
6
(mod 11) = 3
x = f * y
2
(mod p) = 3 * 7 (mod 11) = 10


Prelegerea 1
Not iuni de baza ale criptograei
1.1 Denit ii si notat ii preliminare
Criptograa este o componenta a unui domeniu mult mai larg, numit securitatea informat iei.
Obiectivele urmarite de acesta pot sumarizate n:
1. Condent ialitate (privacy): proprietatea de a pastra secretul informat iei, pentru ca
aceasta sa e folosita numai de persoanele autorizate.
2. Integritatea datelor: proprietatea de a evita orice modicare (inserare, stergere,
substitut ie) neautorizata a informat iei.
3. Autenticare: Proprietatea de a identica o entitate conform anumitor standarde.
Este compusa din
(a) Autenticarea unei entitat i;
(b) Autenticarea sursei informat iei;
4. Non - repudierea: Proprietatea care previne negarea unor evenimente anterioare.
Celelalte obiective legate de securitatea informat iei (autenticarea mesajelor, semnaturi,
autorizare, validare, controlul accesului, certicare, timestamping, conrmarea recept iei,
anonimitate, revocare) pot derivate din acestea.
Denit ia 1.1 Criptograa este studiul metodelor matematice legate de securitatea infor-
mat iei, capabile sa asigure condent ialitatea, autenticarea si non-repudierea mesajelor,
precum si integritatea datelor vehiculate ([1].
Termenul criptograe nseamna scriere secreta
1
. Domeniul cuprinde atat operat ia de
criptare (cifrare) a unui text, cat si eventualele ncercari de descifrare si de aare a cheii
1
Cuvantul este format din cuvintele grecesti cryptos ascuns si grae scriere
1
2 PRELEGEREA 1. NOT IUNI DE BAZ

A ALE CRIPTOGRAFIEI
de criptare.

In unele lucrari, cadrul general de lucru este numit criptologie, termenul de
criptograe desemnand numai operat ia de cifrare si descifrare legala.
Situat ia generala de care se ocupa criptograa este urmatoarea:
Criptanalist
Expeditor
Destinatar
6
-
Expeditorul (personalizat n majoritatea lucrarilor cu apelativul Alice) doreste sa trimita
destinatarului (numit Bob) un mesaj printr-un canal de comunicat ie, canal cu un grad
ridicat de nesigurant a
2
. Aceasta insecuritate o prezinta un adversar criptanalist (Oscar)
care doreste din diverse motive sa cunoasca si eventual sa modice cont inutul
mesajului, desi acesta nu i este destinat.
Aceasta condent ialitate solicitata de Alice si Bob se rezolva de obicei prin transfor-
marea mesajului n asa fel ncat el sa nu poata nt eles de nici o persoana care l-ar putea
intercepta. Transformarea respectiva se numeste criptare.

In general, hackerul Oscar poate avea doua tipuri de comportament:


Pasiv: el se mult umeste sa intercepteze mesajele si sa le citeasca, folosindu-le n
scop personal;
Activ: doreste sa modice mesajele, sa le schimbe ordinea sau sa introduca propriile
sale mesaje, n intent ia de a acceptat de Bob drept Alice.

In acest caz, mesajul va
trebui sa verice nafara de condit ia de condent ialitate si pe cea de autenticitate:
Bob trebuie sa e sigur ca mesajul primit a fost de la Alice.

In unele cazuri, problema se poate complica prin faptul ca exista anumite mesaje pe
care Alice neaga cai apart in, desi le-a trimis chiar ea.

In acest caz trebuie prevazute
anumite protocoale care sa ntareasca proprietat ile de autenticare; proprietat i care
sa o sileasca pe Alice sa si recunoasca propriile mesaje (non-repudiere).

In toate aceste scenarii nu exista personaje pozitive sau negative. Orice serviciu de
criptare/decriptare are si o sect ie de criptanaliza. Se pot da numeroase exemple din
istorie care sa arate rolul pozitiv al lui Oscar n anumite situat ii.

In general, ntr-un
triplet (expeditor, destinatar, criptanalist) nimeni nu are ncredere n nimeni. Variantele
studiate n care Alice are ncredere n Bob sau invers, sunt mult mai simple si de aceea
extrem de rare.
2
Canalul de comunicat ie poate suferi si perturbari de ordin zic: zgomote, stergeri, demodulari etc;
studiul detectarii si corectarii erorilor de de transmitere a informat iei constituie tema altui domeniu,
numit Teoria Codurilor.
1.1. DEFINIT II SI NOTAT II PRELIMINARE 3
Pentru a ncepe un studiu sistematic al domeniului, sa stabilim ntai terminologia
folosita uzual:
Un mesaj n forma sa originara este numit text clar. Expeditorul rescrie acest mesaj
folosind o metoda cunoscuta numai de el (eventual si de destinatar); spunem ca el cripteaza
(sau cifreaza) mesajul, obt inand un text criptat. Destinatarul primeste textul cifrat si l
decripteaza stiind metoda folosita pentru criptare; deci Alice si Bob trebuie sa stabileasca
ntr-o etap a preliminara detaliile modalitat ii de criptare si de decriptare.
Algoritmul care realizeaza operat iile descrise se numeste sistem de criptare. Formal,
Denit ia 1.2 Un sistem de criptare este o structura (P, C, K, E, D), unde:
P= {w | w V

} este mult imea textelor clare, scrise peste un alfabet nevid V


(uzual V = {0, 1}).
C= {w | w W

} este mult imea textelor criptate, scrise peste un alfabet nevid


W (uzual W = V ).
K este o mult ime de elemente numite chei.
Fiecare cheie K K determina o metoda de criptare e
K
E si o metoda de
decriptare d
K
D. e
K
: P C si d
K
: C P sunt funct ii cu proprietatea
d
K
(e
K
(w)) = w, w P.

In general se considera C= { | a P, k K, = e
K
(a)}.
Funct ia e
K
este evident injectiva
3
; daca e
K
este bijectiva (si deci d
K
= e
1
K
), sistemul
de criptare se numeste simetric.
Pentru ca un sistem de criptare sa e considerat bun, trebuie ndeplinite trei criterii
(enunt ate de Francis Bacon n sec. XV II):
1. Fiind date e
K
si P, este usor de determinat e
K
();
2. Fiind date d
K
si w C, este usor de determinat d
K
(w);
3. este imposibil de determinat din w, fara a cunoaste d
K
.
Ultimul criteriu deneste sub o forma vaga ideea de securitate a sistemului.
La aceste criterii, Bacon adauga si o a patra regula:
4 Textul criptat trebuie sa e un text banal, fara suspiciuni.
Aceasta condit ie este utilizata astazi doar de un subdomeniu strict al criptograei, numit
steganograe.

In termeni de complexitate, prin usor se nt elege folosirea unui algoritm polinomial


de grad mic preferabil algoritm liniar; o problema se considera imposibila daca pentru
rezolvarea ei nu se cunosc decat algoritmi de complexitate exponent iala.
3
Condit ia de injectivitate nu este obligatorie pentru funct ia de decriptare d
K
.
4 PRELEGEREA 1. NOT IUNI DE BAZ

A ALE CRIPTOGRAFIEI
Observat ia 1.1

Intreaga disciplina numita criptograe se bazeaza pe o conjectura no-
tata prescurtat P = NP
4
(pentru detalii a se vedea [5]). P reprezinta clasa problemelor
rezolvabile prin algoritmi a caror complexitate este marginita superior de o funct ie poli-
nomiala n lungimea datelor de intrare. Modelul standard de calculabilitate este masina
Turing. NP este clasa problemelor rezolvabile prin algoritmi nedeterministic polinomiali
(care sunt inclusi n algoritmii de complexitate cel put in exponent iala). Evident, P NP,
dar se pare ca problema egalitat ii este nedecidabila (n termeni matematici). Oricum,
pentru cei interesat i, site-ul [4] este dedicat unei informari actualizate permanent a rezul-
tatelor si ncercarilor de rezolvare a acestei probleme.
Exemplul 1.1 Unul din primele sisteme de criptare cunoscute este sistemul de criptare
Cezar. Conform istoricului Suetoniu, el a fost folosit de Cezar n corespondent a sa.
Sa consideram alfabetul latin scris, n ordine
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
Fie k un numar ntreg din intervalul [0, 25]. El se va numi cheie de criptare. Re-
scriem alfabetul latin permutat ciclic, ncepand nsa cu litera avand numarul de ordine
k (litera A are numarul de ordine 0). Aceasta noua scriere o asezam sub prima scriere,
astfel (am presupus k = 2):
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
C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
Daca Alice are un text clar pe care vrea sa-l cripteze cu sistemul Cezar, ea va proceda
astfel:
Sa presupunem ca acest text clar este NIMIC NOU. Alice va aseza sub ecare liter a a
acestui text, litera aata pe linia a doua din tabelul de sus, astfel:
N I M I C N O U
P K O K E P Q W
Textul criptat obt inut este PKOKEPQW (din motive suplimentare de securitate,
spat iile dintre cuvinte se ignora de obicei).
La primirea textului, Bob care stie ca este vorba de sistemul de criptare Cezar
va proceda astfel: el cunoaste (ind destinatar legal) cheia de criptare e
k
. Cheia sa de
decriptare este e
26k
. Pe baza ei Bob va putea construi cele doua linii ale tabelului, dupa
care va proceda ca Alice: scrie textul criptat pe prima linie, iar pe a doua linie determina
literele corespunzatoare, conform tabelului.

In cazul k = 2, Bob va folosi drept cheie numarul e


262
= e
24
, iar tabelul (litera 24
corespunde lui Y) este
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
Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Literele PKOKEPQW determina pe a doua linie textul NIMICNOU.
4
Aceasta este prima din cele cinci probleme ale mileniului, pentru rezolvarea carora se acorda premii
de cate un milion dolari.
1.1. DEFINIT II SI NOTAT II PRELIMINARE 5
Sa rescriem sistemul Cezar n termenii Denit iei 1.2. Deoarece textele clare si cele
criptate folosesc alfabetul latin, vom efectua n prima etapa o operat ie de codicare:
asociem literelor numere ntregi din intervalul [0, 25]:
A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25

In acest fel putem opera matematic pe un inel nit foarte simplu: Z


26
. Vom avea
P = C = K= Z
26
. Pentru un K K ales arbitrar,
e
K
(m) = m+K (mod 26)
si
d
K
() = K (mod 26)
Denit ia 1.3 Procesul de determinare a unei chei K folosind un text criptat (asociat
eventual cu alte informat ii auxiliare) se numeste criptanaliza.
Deci decriptarea si criptanaliza au n nal acelasi scop: aarea textului clar. Diferent a
consta n faptul ca n criptanaliza el trebuie aat fara a sti cheia de decriptare. Exista o
regula de aur a creatorilor de sisteme de criptare:
Nu subestimat i niciodata pe criptanalist.
care s-a vericat din punct de vedere istoric pentru toate sistemele create pana n
prezent: acestea sau au fost sparte sau trebuie sa se revizuiasca periodic pentru a rezista
atacurilor permanente ale intrusilor.
Sa studiem put in pozit ia unui criptanalist (Oscar). Se presupune ntotdeauna ca el
are la dispozit ie facilitat i de calcul excelente, adesea superioare celor de care dispun cei
doi parteneri Alice si Bob.
Mai mult, se poate considera ca Oscar cunoaste sistemul de criptare. S-a constatat
ca practic acest lucru se ntampla totdeauna. Ce nu cunoaste nsa criptanalistul este
cheia K K.
Cel mai simplu atac constan parcurgerea tuturor cheilor posibile si vericarea textului
criptat, pana se gaseste cheia corecta. Este atacul prin fort a bruta si el reuseste totdeauna,
pentru ca exista ntotdeauna o cheie n K, care a folosit la criptare. Deci, n cazul cand
numarul cheilor posibile este mic (n Exemplul 1.1 sunt numai 26 chei), aceasta cheie se
poate aa foarte usor dupa un numar nit de ncercari. De aceea sunt folosite obligatoriu
sisteme de criptare cu card(K) foarte mare. Pentru o cheie care ocupa n bit i sunt necesare
n general 2
n
cautari (daca nu exista nici o informat ie suplimentara). O extindere a
lungimii cheii la n+1 bit i dubleaza deci spat iul de cautare.

In momentul de fat a, tehnica
de calcul ofera atacuri prin fort a bruta eciente pentru cheile de lungimi mai mici de 128
6 PRELEGEREA 1. NOT IUNI DE BAZ

A ALE CRIPTOGRAFIEI
bit i; asa ca sistemele de criptare actuale folosesc n general chei de 1024 bit i sau chiar mai
mult
5
.

In general, un criptanalist este pus n fat a urmatoarelor situat ii, carei solicita strategii
diverse de urmat:
1. Stie numai textul criptat w; n acest caz atacurile sunt direct legate de lungimea
textului.

In sisteme simple cum este Cezar sunt suciente texte scurte, pentru c a o
singura potrivire produce textul - clar. Pentru sistemele mai evoluate, este necesara
o lungime mai mare a textului criptat. Metodele de criptanaliza folosesc diverse
conjecturi si informat ii statistice relative la alfabetul textului - clar, la frecvent a
aparit iei caracterelor etc.
2. Stie cel put in o pereche de caractere (text clar, text criptat); din cunoasterea catorva
perechi (x, e
K
(x)) cu x V criptanalistul va ncearca sa decripteze ntregul text
criptat interceptat.
Exemplul 1.2 La sistemul de criptare Cezar, o singura pereche (a, e
K
(a)), dezvaluie
imediat cheia si implicit duce la decriptare.
Exemplul 1.3 Aceasta a fost situat ia n care s-a aat orientalistul francez Cham-
pollion cand a descifrat hieroglifele,folosind piatra de la Rosetta (vezi [6]).
3. Criptanalistul cunoaste criptarea unor texte clare selectate de el; este atacul cu text
clar ales, considerat n majoritatea studiilor de criptanaliza. Aceasta situat ie este
adesea superioara celei din cazul precedent; sa exemplicam acest lucru.
Exemplul 1.4 Fie sistemul de criptare Hill, creat n 1929 de Lester Hill. Fie d 2
un numar ntreg xat. Se denesc
P= C= (Z
26
)
d
, K= {M | M M
d
(Z
26
), det(M) = 0}.
Deci o cheie de criptare este o matrice M patrata nesingulara de dimensiune d, cu
elemente din Z
26
, iar M
1
formeaza cheia de decriptare.
Textul clar w se mparte n blocuri de lungime d : w =
1

2
. . .
n
, |
i
| = d
(ultimul bloc se completeaza eventual pana ajunge la lungimea d). Textul criptat va
x =
1

2
. . .
n
unde
i
= e
M
(
i
) =
i
M (mod 26), (1 i n).
Pentru decriptare se foloseste relat ia d
M
(
i
) =
i
M
1
(mod 26).
Sa luam de exemplu d = 2 si cheia M =

3 3
2 5

, cu inversa M
1
=

15 17
20 9

.
5
O except ie o constituie sistemele bazate pe curbe eliptice, datorita aparatului matematic special.
1.1. DEFINIT II SI NOTAT II PRELIMINARE 7
Daca textul clar este w = FRAC, vom avea

1
= (F R) = (5 17),
2
= (A C) = (0 2)
Din relat iile

1
=
1
M (mod 26) = (5 17)

3 3
2 5

= (23 22) = (X W)

2
=
2
M (mod 26) = (0 2)

3 3
2 5

= (4 10) = (E K)
se obt ine textul criptat x = XWEK.
Sa ne situam acum pe pozit ia lui Oscar: presupunem ca am gasit dimensiunea d = 2
si ncercam sa aam matricea M (sau echivalent M
1
), stiind perechea (text
clar, text criptat)= (FRAC, XWEG).
Deci Oscar se aa acum n fat a urmatoarei probleme: care este matricea M =

a b
c d

cu a, b, c, d {0, 1, . . . , 25}, astfel ca

5 17
0 2

a b
c d

23 22
4 10

.
Pentru a putea aa aceasta matrice, Oscar trebuie sa ae inversa lui A =

5 17
0 2

.
Cum det(A) = 10 si cmmdc(10, 26) > 1 = 10
1
(mod 26) nu exista; deci A nu
este inversabila.
Sa presupunem acum ca Oscar lucreaza n ipoteza (3); alege un text clar a carui ma-
trice este inversabila si i aa criptarea. Fie BRAD acest text clar, a carui matrice
asociata este A =

1 17
0 3

. Oscar solicita criptarea lui BRAD si primeste LKGP


de matrice B =

11 10
6 15

. Deci el dispune de perechea (BRAD, LKGP).


Oscar detemina ntai A
1
=

1 3
0 9

. Apoi, din ecuat ia A M = B, va gasi solut ia


M = A
1
B =

1 3
0 9

11 10
6 15

3 3
2 5

4. Stie cheia de criptare; acum Oscar va cunoaste cheia e


K
si ncearca sa determine d
K
nainte de interceptarea mesajelor criptate.
Aceasta este situat ia tipica sistemelor de criptare cu cheie publica: cheia de criptare
e
K
este cunoscuta public cu mult nainte de a folosita pentru criptare. Deci
criptanalistul are la dispozit ie destul de mult timp pentru prelucrarea ei si orice
claricare n perioada cand timpul este ieftin are o valoare deosebita; dupa ce se
primesc mesaje criptate, timpul devine scump, si el trebuie sa e scurtat cat mai
mult.
8 PRELEGEREA 1. NOT IUNI DE BAZ

A ALE CRIPTOGRAFIEI
1.2 Sisteme simetrice de criptare

In general, sistemele de criptare clasice se numesc si sisteme simetrice. Motivul este acela
ca odata cu aarea cheii de criptare e
K
, cheia de decriptare d
K
se obt ine imediat, ind
funct ia inversa.
Exemplul 1.5

In Exemplul 1.1, la sistemul Cezar d
K
= e
26K
este cheia de decriptare
pentru cheia de criptare e
K
.
Sistemele de criptare simetrice se mpart n doua clase mari: cifruri de permutare si cifruri
cu substitut ie.
1.2.1 Cifruri de permutare
La aceste sisteme de criptare, textul clar se mparte n blocuri de n (n 2) caractere,
dupa care ecarui bloc i se aplica o permutare xata.
Exemplul 1.6 Sa presupunem ca vom lua drept cheie de criptare permutarea

1 2 3
2 1 3

.
Atunci un text clar, de exemplu FLOARE ALBASTRA se mparte n grupuri de cate trei
caractere (s-a considerat si caracterul spat iu, notat )
FLO ARE AL BAS TRA
Textul criptat va
LFO RAE A L ABS RTA
sau eliminand gruparile, LFORAEA LABSRTA.
Exemplul 1.7 Un sistem celebru de criptare cu permutari este sistemul Richelieu, prezen-
tat si n literatura de Jules Verne, n romanul Mathias Sandorf. Dam un exemplu de
utilizare a unui astfel de sistem.
Fie cartonul 6 6, n care zonele hasurate constituie gauri.
Vrem sa criptam textul
EMINESCU A FOST UN MARE POET NATIONAL
Vom scrie acest text sub forma unui tabel cu sase linii si sase coloane, astfel:
1.2. SISTEME SIMETRICE DE CRIPTARE 9
E M I N E S
C U A F
O S T U N
M A R E P
O E T N A
T I O N A L
Aplicand cartonul peste acest text, vor ramane vizibile 9 caractere: MNS TA AN (citite
de la stanga la dreapta si de sus n jos).
Vom roti acum cartonul cu 90
o
n sensul acelor de ceasornic. El va arata
Asezand acum peste text, raman vizibile caracterele F MPTNIL (primul caracter a fost
un spat iu si l-am marcat cu pentru a-l face vizibil).
La a treia rotire a cartonului se obt ine similar textul ICSUEETOA, iar la a patra
EEUAOURO
Deci textul criptat este
MNS TA AN F MPTNILICSUEETOAEEUAOURO
Operat ia de decriptare se realizeaza similar.
Sa formalizam aceste informat ii.
Denit ia 1.4 Fie n un numar natural nenul. Un cifru de permutare este un sistem
(P, C, K, E, D) unde P= C= (Z
26
)
n
, K= P
n
(mult imea permutarilor de n elemente).
Pentru o cheie (permutare)
e

(a
1
a
2
. . . a
n
) = a
(1)
a
(2)
. . . a
(n)
d

(b
1
b
2
. . . b
n
) = b

1
(1)
b

1
(2)
. . . b

1
(n)
Lema 1.1 Un cifru de permutare este un sistem de criptare Hill.
Demonstrat ie: Pentru ecare permutare P
n
putem construi o matrice de permutare
M

= (m
i,j
) denita
m
i,j
= 1 i = (j)
Se verica usor faptul ca sistemul de criptare Hill cu matricea M

este echivalent cu un
cifru de permutare bazat pe cheia . Mai mult, M
1

= M

1.
10 PRELEGEREA 1. NOT IUNI DE BAZ

A ALE CRIPTOGRAFIEI
Exemplul 1.8 Sa reluam Exemplul 1.6. Permutarii

1 2 3
2 1 3

i corespunde matricea
de permutare

0 1 0
1 0 0
0 0 1

.
Operat ia de criptare este imediata. De exemplu, criptarea textului FLO este
(5 11 14)

0 1 0
1 0 0
0 0 1

= (11 5 14)
adica LFO.
1.3 Exercit ii
1.1 Textul clar NUMAR este criptat n Orice vant nu bate seara. Sa se descrie sistemul
de criptare.
1.2 Folosind atacul prin fort a bruta, decriptat i mesajul WYPTBSJBYZ criptat cu un
sistem Cezar.
1.3 O cheie K este auto-cheie daca d
K
= e
K
. Gasit i toate auto-cheile sistemului de
criptare Cezar.
1.4 Fie p un numar prim. Aratat i ca numarul matricilor 2 2 inversabile peste Z
p
este
(p
2
1)(p
2
p).
1.5 Cate matrici 2 2 sunt inversabile peste Z
n
pentru n = 6, 9, 26 ?
1.6 Sa se cripteze textul clar INAINTE SI LA DREAPTA folosind sistemul de xriptare
Hill cu matricea
M =

17 17 5
21 18 21
2 2 19

sau M =

11 2 19
5 23 25
20 7 1

1.7 Cate auto-chei sunt ntr-un sistem de criptare Hill cu d = 2 ?


1.8 Determinat i inversele matricilor (modulo 26):

2 5
9 5

11 8
3 7

10 5 12
3 14 21
8 9 11

1 11 12
4 23 2
17 15 9

1.3. EXERCIT II 11
1.9 Demonstrat i ca ntr-un cifru de permutare, este o auto-cheie daca si numai daca
(i, j) [(i) = j = (j) = i]
Gasit i toate auto-cheile unui cifru de permutare cu n = 2, 3, 4, 5, 6.
1.10 Consideram urmatorul cifru de permutare: Se xeaza numerele naturale p, q. Tex-
tul clar se mparte n blocuri de cate p q caractere. Fiecare astfel de bloc se scrie pe liniile
unei matrici de p linii si q coloane. Criptarea blocului se realizeaza scriind aceste matrici
pe coloane.
De exemplu, pentru p = 3, q = 4, textul clar MAINI CURATE se scrie
M A I N
I C U R
A T E X
(textul s-a completat cu litera X). Textul criptat va MIAACTIUENRX.
Decriptat i urmatorul text DJNOUDNAINPAPANONZ criptat ntr-un mod similar.
1.11 Sa se decripteze mesajul
N T I N I I I D D N R I R T E E A D
U M I I G R A D V O B E M C I I I E
Z S R U A U C M L T A I T U I T N I
D A A L E A R A C R I A S Z T E E E
I G P S A D E A P R E Z S T C A O
A E R I D R E D D E I E S E E P E L
stiind c a a fost criptat cu matricea Richelieu denita n Exemplul 1.7.
12 PRELEGEREA 1. NOT IUNI DE BAZ

A ALE CRIPTOGRAFIEI
Bibliograe
[1] A. Menezes, P. Oorschot, S. Vanstome, Handbook of Applied Cryptography
[2] D. Stinton, Cryptography, Theory and Practice, Chapman & Hall/CRC, 2002
[3] A. Salomaa, Criptograe cu chei publice, Ed. Militara, 1996
[4] http://www.win.tue.nl/ gwoegi/P-versus-NP.htm
[5] S. Cook, http : //www.claymath.org/millennium/P vs NP/Official Problem Description.pdf
[6] http://en.wikipedia.org/wiki/Rosetta stone
13
Prelegerea 2
Cifruri de substitut ie
Cifrurile de substitut ie sunt cele mai utilizate sisteme de criptare simetrice; ele se ntalnesc
si azi, exemple ind sistemele DES si AES.
Un astfel de cifru consta n nlocuirea ecarui caracter din V cu alt caracter (din W).
Exista doua clase mari de cifruri de substitut ie: sisteme monoalfabetice si polialfabetice.
2.1 Sisteme de criptare monoalfabetice
Un astfel de sistem substituie ecare caracter cu alt caracter totdeauna acelasi, indiferent
de pozit ie. Atunci cand cele doua alfabete coincid (V = W), sistemele monoalfabetice
sunt cazuri particulare de cifruri de permutare.
Vom trece n revista cateva astfel de sisteme.
2.1.1 Sistemul de criptare Cezar
Sistemul de criptare Cezar este un sistem monoalfabetic: odata stabilita cheia de criptare
e
K
, ecare caracter cod x se nlocuieste prin caracterul cod x + k (mod 26) (a se vedea
Prelegerea I). Decriptarea se realizeaza dupa formula d
K
(x) = x k (mod 26).
Observat ia 2.1

In cartea sa De bello gallico, Cezar aminteste de un sistem de criptare,
fara sa dea detalii. Mai tarziu, Suetoniu n Viata lui Iuliu Cezar descrie sistemul.
Cezar folosea sistemul nlocuind literele romane cu cele grecesti si folosea deplasarea k = 3.
Nepotul lui Cezar, mparatul Augustus a utlizat acelasi sistem, cu k = 1. Sistemul Cezar
a fost utilizat mult timp. Armata rusa apela frecvent la el n 1915, ca nlocuitor pentru
sistemele sale proprii de criptare, prea sosticate la nivelul trupelor de camp. Un sistem
Cezar cu k = 13 este inclus n ROT13, implementat pe sistemele UNIX ([5],[3])
Evident, Cezar este un sistem generat de permutarile ciclice din P
26
. Fiind numai 26 chei
posibile, el este extrem de vulnerabil la atacul prin fort a bruta. Pentru a-i mari rezistent a,
s-a utilizat si o varianta, numita sistem Cezar cu cheie, denita astfel:
1
2 PRELEGEREA 2. CIFRURI DE SUBSTITUT IE
Se considera un cuvant (cheie), preferabil cu toate caracterele distincte (n caz contrar,
literele identice se folosesc doar la prima aparit ie). Acest cuvant se aseaza la nceputul al-
fabetului. Dupa ce se termina, sirul de completeaza cu literele care nu existau n cuvantul
cheie, n ordine alfabetica.
De exemplu, sa presupunem ca s-a ales cuvantul cheie MARTOR. Scriem
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
M A R T O B C D E F G H I J K L N P Q S U V W X Y Z
Pentru textul clar se vor folosi caracterele de pe primul rand, iar pentru criptare
caracterele corespondente de pe randul al doilea. Astfel, STUDENT se cripteaza n
QSUTOJS, ARGINT n MPCEJS etc.
Sistemul Cezar cu cheie rezista mai bine la atacul cu fort a bruta, numarul cheilor ind
acum card(P
26
= 26!.
2.1.2 Sistemul de criptare an
Sistemul de criptare an este o generalizare a sistemului Cezar. Vom avea T = (= Z
26
,
/= (a, b) [ a, b Z
26
, cmmdc(a, 26) = 1, iar funct iile de criptare si decriptare (pentru
o cheie K = (a, b)) sunt
e
K
(x) = ax +b (mod 26), d
K
(y) = a
1
y +a
1
(26 b) (mod 26)
Condit ia ca a sa e prim cu 26 asigura existent a lui a
1
n Z
26
.
De exemplu, pentru a = 3, b = 5 funct ia de criptare este e
K
(x) = 3x + 5, care poate
reprezentata prin tabelul:
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
5 8 11 14 17 20 23 0 3 6 9 12 15 18 21 24 1 4 7 10 13 16 19 22 25 2
sau scris direct pentru caractere
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
F I L O R U X A D G J M P S V Y B E H K N Q T W Z C
Astfel, textul clar PRIMAVARA TARZIE se cripteaza n YEDPFQFEF KDECDR.
Deoarece 3
1
= 9 (mod 26), decriptarea se realizeaza matematic folosind funct ia
d
K
(x) = 9x + 7 (sau practic inversand cele doua linii ale tabelului de mai sus).
Condit ia cmmdc(a, 26) = 1 asigura de asemenea injectivitatea aplicat iei e
K
.
De exemplu, pentru e
K
(x) = 10x + 1, A si N se transforma ambele n B, iar O nu apare
ca imagine n alfabetul substitut iei.
Sa studiem spat iul cheilor /. Orice cheie K / este determinata complet de valorile
ntregi (a, b) cu (a, 26) = 1. Sunt posibile 12 valori
1
pentru a : 1, 3, 5, 7, 9, 11, 15, 19, 21, 23,
25. Pentru b sunt posibile 26 valori, care se iau independent de a, cu singura except ie
a = 1, b = 0 (care se exclude deoarece nu conduce la nici o criptare). Deci card(/) = 311,
numar sucient de mic pentru reusita unui atac prin fort a bruta.
1
Pentru un numar dat n exista (n) numere mai mici decat n si prime cu n, unde phi este funct ia
Euler.

In particular (26) = 12.
2.1. SISTEME DE CRIPTARE MONOALFABETICE 3
2.1.3 Alte sisteme de criptare monoalfabetice
Sistemul de criptare Polybios
Sistemul Cezar nu este cel mai vechi de criptare. Se pare ca primul astfel de sistem a fost
Polybios (istoric grec mort cu 30 ani naintea nasterii lui Cezar). Init ial acesta a fost doar
un sistem maritim de semnalizare cu tort e; ulterior i s-a dat o semnicat ie criptograca.
Sa consideram alfabetul latin, din care eliminam o litera de frecvent a cat mai redusa
2
;
e aceasta W. Cele 25 litere ramase le asezamntr-un patrat 55 (numit careu Polybios)
n felul urmator:
A B C D E
A A B C D E
B F G H I J
C K L M N O
D P Q R S T
E U V X Y Z

In operat ia de criptare, ecare caracter a va reprezentat printr-o pereche (x, y) (x, y


A, B, C, D, E) care dau linia respectiv coloana pe care se aa a.
Astfel, textul clar MERGEM ACASA este criptat n
CCAEDCBBAECCAAACAADDAA.
Deci sistemul de criptare Polybios este o substitut ie monoalfabetica cu alfabetul W =
AA, AB, AC, . . . , EE de 25 caractere.
Sunt diverse variante ale sistemului Polybios. Astfel, daca se folosesc drept coordonate
cifrele 1, 2, 3, 4, 5 n loc de A, B, C, D, E, sistemul a fost folosit n penitenciarele rusesti
3
si de catre prizonierii americani din Vietnam. Este foarte simplu de nvat at si poate
aplicat folosind diverse semne drept coordonate (cifre, puncte, guri, batai de toba etc).
A fost utilizat de asemenea n cadrul altor sisteme de criptare, cum ar sistemul nihilist,
cifrul ADFGVX (utilizat de armata germanan primul razboi mondial) sau sistemul Bid,
inventat de Dellastell n 1901 (pentru detalii, se vedea [6]).
Sistemul cavalerilor de Malta
Ordinul cavalerilor de Malta folosea un sistem de criptare monoalfabetic bazat pe stilizarea
unei cruci. Astfel, sa consideram careurile:
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
2

In limba engleza litera eliminata este de obicei J.


3
Alfabetul cirilic are 33 litere, deci n acest caz s-a utilizat un careu 6 6.
4 PRELEGEREA 2. CIFRURI DE SUBSTITUT IE
Liniile carencadreaza ecare caracter (inclusiv spat iul), mpreuna cu punctele (doua, unul
sau zero) indica substitut ia caracterului respectiv. Astfel, textul clar DUPA DOUAZECI
DE ANI se cripteaza n
:
.
: :
.
: : : : : : :
.
:
2.1.4 Criptanaliza sistemelor de criptare monoalfabetice
Punctul slab al sistemelor de criptare monoalfabetice consta n frecvent a de aparit ie a
caracterelor n text. Daca un text criptat este sucient de lung si se cunoaste limba
n care este scris textul clar, sistemul poate spart printr-un atac bazat pe frecvent a
aparit iei literelor ntr-o limba.
Sunt construite diverse structuri de ordine relative la frecvent a aparit iei literelor n
ecare limba europeana. De obicei, cu cat un text criptat este mai lung, cu atat frecvent a
literelor folosite se apropie de aceasta ordonare generala. O comparare ntre cele doua
relat ii de ordine (cea a caracterelor din textul criptat si cea a lterelor din alfabetul limbii
curente) conduce la realizarea catorva corespondent e (litera text clar litera text criptat),
ceea ce stabileste n mod univoc cheia de criptare. Pentru sistemul Cezar este sucienta
stabilirea unei singure perechi; pentru sistemul an trebuiesc doua perechi etc.
Pentru limba romana, un tabel al literelor cele mai frecvent ntalnite este
Litera Frecvent a
A 13, 04 %
I 12, 89 %
E 11, 75 %
R 7, 39 %
T 6, 62 %
N 6, 44 %
U 6, 44 %
S 5, 50 %
C 5, 47 %
Litera Frecvent a
L 4, 58 %
O 3, 85 %
D 3, 68 %
M 3, 33 %
P 2, 91 %
F 1, 50 %
V 1, 26%
(restul caracterelor au o n mod normal o frecvent a de aparit ie sub 1 %).
Exemplul 2.1 Sa consideram ca s-a interceptat urmatorul text, criptat cu un sistem
monoalfabetic (nu se stie exact ce sistem a fost utilizat).
lqakc sp gcxk aca pcmgqb kq kxc pkersmpqsb vk vsmgxkbc mkacpc tcacpbqlqs
vk cgele cmtxq ms nocxgsb mbxcsp vk exsgk oxcbqsbcbk texbslk spclbk gcxk
cmgqpvkcq bxkgcbexslk gqxbslk xktxknkpbcq tkpbxq mbxcsps qp cfkxbsmakpb
mqtcxcbex vcx lsatkvk pq bxkrqscq mc zsk txkc gqxsems psgs mc mk cmbktbk
mc czlk acxk lqgxq vk lc gkl gq gcxk fkpkcq sp gepbcgb
2.1. SISTEME DE CRIPTARE MONOALFABETICE 5

In prima etapa, vom numara de cate ori apare n text ecare caracter. se obt ine tabelul
Caracter c k x b s q g p m l e p a v b n o f z
Frecvent a 39 38 27 25 23 20 19 18 18 11 9 8 7 7 2 2 2 2 2
Deci caracterele cele mai frecvente sunt c si k. Pe de-alta parte, cele mai frecvente
caractere din limba romana sunt a, i si e (textul nu este destul de mare pentru a putea
face o distinct ie neta).

In mod cert, a c, k. Sunt patru opt iuni posibile, din care trei
se elimina rapid. Ramane de abordat c a, k e.
Vom nota cu litere mari caracterele din textul clar; prin nlocuirea lui c cu A, a lui k
cu E, textul devine
lqaEA sp gAxE aAa pAmgqb Eq ExA pEersmpqsb vE vsmgxEbA mEaApA tAaApbqlqs
vE Agele Amtxq ms noAxgsb mbxAsp vE exsgE oxAbqsbAbE texbslE spAlbE gAxE
AmgqpvEAq bxEgAbexslk gqxbslE xEtxEnEpbAq tEpbxq mbxAsps qp AfExbsmaEpb
mqtAxAbex vAx lsatEvE pq bxErqsAq mA zsE txEA gqxsems psgs mA mE AmbEtbE
mA AzlE aAxE lqgxq vE lA gEs gq gAxE fEpEAq sp gepbAgb
Cuvantul ExA de pe primul rand are caracterul din mijloc (x) de frecvent a ridicata (27
aparit ii); deci el trebuie sa corespunda unei litere frecvente din limba romana si n plus
sa aiba semnicat ie semantica. Concluzie: acest cuvant este ERA. Deci x R. Facem
substitut ia s se obt ine textul
lqaEA sp gARE aAa pAmgqb Eq ERA pEersmpqsb vE vsmgREbA mEaApA tAaApbqlqs
vE Agele AmtRq ms noARgsb mbRAsp vE eRsgE oRAbqsbAbE teRbslE spAlbE gARE
AmgqpvEAq bREgAbeRsleR gqRbslE REtREnEpbAq tEpbRq mbRAsps qp AfERbsmaEpb
mqtARAbeR vAR lsatEvE pq bRErqsAq mA zsE tREA gqRsems psgs mA mE AmbEtbE
mA AzlE aARE lqgRq vE lA gEs gq gARE fEpEAq sp gepbAgb

In acest text, cuvantul REtREnEpbAq are corespondent n limba romana numai pe


REPREZENTAI, M, U. De aici se obt in decriptarile t P, n Z, p N si
b T (pentru ultimul caracter - q, nu facem deocamdata nici o opt iune). Noul text va

lqaEA sp gARE aAa NAmgqT Eq ERA NEersmNqsT vE vsmgRETA mEaANA PAaANTqlqs


vE Agele AmPRq ms ZoARgsT mTRAsN vE eRsgE oRATqsTATE PeRTslE sNAlTE gARE
AmgqNvEAq TREgATeRsleR gqRTslE REPREZENTAq PENTRq mTRAsNs qN AfERTsmaENT
mqPARATeR vAR lsaPEvE Nq bRErqsAq mA zsE PREA gqRsems Nsgs mA mE AmTEPTE
mA AzlE aARE lqgRq vE lA gEs gq gARE fENEAq sN geNTAgT
Lucrurile ncep acum sa se simplice: PENTRq este corect numai pentru q U,
AmTEPTE pentru m S. Apoi NASgUT da g C, SUPARATeR da e O,
iar din fENEAU deducem f V . Facand aceste nlcuiri, se obt ine textul
6 PRELEGEREA 2. CIFRURI DE SUBSTITUT IE
lUaEA sp CARE MAM NASCUT EU ERA NEOrsSNUsT DE vsSCRETA SEaANA PAaANTUlUs
DE ACOlO ASPRU Ss ZoARCsT STRAsN vE ORsCE oRATUsTATE PORTslE sNAlTE CARE
ASCUNvEAU TRECATORslOR CURTslE REPREZENTAU PENTRU STRAsNs UN AfERTsSaENT
SUPARATOR vAR lsaPEvE NU bRErqsAU SA zsE PREA CURsOms NsCs SA SE ASTEPTE
mA AzlE aARE lUCRU vE lA CEs CU CARE VENEAU sN CONTACT
Ultimele caractere se deduc imediat: l L, a M, r B, s I, v D.
Textul clar nal este:
LUMEA IN CARE MAM NASCUT EU ERA NEOBISNUIT DE DISCRETA SEMANA PAMANTULUI
DE ACOLO ASPRU SI ZGARCIT STRAIN DE ORICE GRATUITATE PORTILE INALTE CARE
ASCUNDEAU TRECATORILOR CURTILE REPREZENTAU PENTRU STRAINI UN AVERTISMENT
SUPARATOR DAR LIMPEDE NU TREBUIAU SA FIE PREA CURIOSI NICI SA SE ASTEPTE
SA AFLE MARE lUCRU DE LA CEI CU CARE VENEAU IN CONTACT
(textul provine din romanul Viata ca o corida de Octavian Paler).
Evident, daca se stia sistemul de criptare (an, Cezar etc) criptanaliza se simplica
mult.
Pentru alte aplicat ii, oferim tabelele de frecvent a a literelor pentru principalele limbi
europene
4
(am ret inut din ecare limba numai cele mai frecvente noua litere):
Engleza Frecvent a
E 12, 31 %
T 9, 59 %
A 8, 05 %
O 7, 94 %
N 7, 19 %
I 7, 18 %
S 6, 59 %
R 6, 03 %
H 5, 14 %
Germana Frecvent a
E 18, 46 %
N 11, 42 %
I 8, 02 %
R 7, 14 %
S 7, 04 %
A 5, 38 %
T 5, 22%
U 5, 01%
D 4, 94%
Franceza Frecvent a
E 15, 87 %
A 9, 42 %
I 8, 41 %
S 7, 90 %
T 7, 26 %
N 7, 15 %
R 6, 46 %
U 6, 24 %
L 5, 34 %
Spaniola Frecvent a
E 13, 15 %
A 12, 69 %
O 9, 49 %
S 7, 60 %
N 6, 95 %
R 6, 25 %
I 6, 25 %
L 5, 94 %
D 5, 58 %
Exista o situat ie ipotetica n care criptanaliza unui sistem monoalfabetic este imposibila:
atunci cand T= V

si nu dispunem de nici o alta informat ie (decat eventual sistemul de


criptare). Acest caz corespunde nsa unei codicari; adevarata criptare a avut loc atunci
cand mesajele inteligibile au fost translatate n cuvinte din V

.
4
Datele statistice pentru toate tabelele inclusiv limba romana sunt din anul 1994.
2.2. SISTEME DE CRIPTARE POLIALFABETICE 7
2.2 Sisteme de criptare polialfabetice
Diferent a dintre aceste sisteme de criptare si cele monoalfabetice consta n faptul ca
substitut ia unui caracter variaza n text, n funct ie de diversi parametri (pozit ie, context
etc.). Aceasta conduce binent eles la un numar mult mai mare de chei posibile. Se
considera c a primul sistem de criptare polialfabetic a fost creat de Leon Battista n 1568
([3]). Unele aplicat ii actuale folosesc nca pentru anumite sect iuni asyfel de sisteme de
criptare.
2.2.1 Sistemul homofonic
Sistemul de criptare homofonic este un sistem intermediar ntre sistemele mono si cele
polialfabetice. Principalul lui scop este de a evita atacul prin frecvent a de aparit ie a
caracterelor. Se pare ca a fost utilizat prima oara n 1401 de catre ducele de Mantua.
Fiecarui caracter a T i se asociaza o mult ime H(a) ( astfel ncat:
1. H(a) H(b) = a ,= b;
2. Daca a apare mai frecvent n textele clare, atunci card((H(a)) card(H(b)).
Criptarea unui caracter a T se face cu un element ales aleator din H(a). Pentru
decriptarea lui y ( se cauta o mult ime H(a) astfel ca y H(a).
Exemplul 2.2 Sa consideram T= a, b si H(a) = 001, 010, H(b) = 000, 011, 101,
111. Pentru criptarea textului ab se poate folosi oricare din secvent ele
001000, 001011, 001101, 001111, 010000, 010011, 010101, 010111.
Sistemul homofonic este mult mai rezistent la un atac doar pe baza textului criptat, dar
cedeaza usor la un atac cu text clar ales.
2.2.2 Sistemul de criptare Playfair
Sistemul a fost inventat 1854 de Sir Charles Wheatstone. Cel care l promoveaza si l
sust ine pentru a adoptat ca cifru ocial al Marii Britanii este baronul Lyon Palyfayr de
St. Andrews. Guvernul prefera alta varianta, dar acest sistem de criptare capata numele
baronului.
Ideea de baza este urmatoarea:
Din cele 26 litere ale alfabetului se elimina una de frecvent a minima; sa spunem Q.
Restul literelor se aranjeaza arbitrar sub forma unui patrat 55. Sa exemplicam sistemul
pentru tabloul
8 PRELEGEREA 2. CIFRURI DE SUBSTITUT IE
S Y D W Z
R I P U L
H C A X F
T N O G E
B K M J V
Acest tabel va forma atat cheia de criptare cat si cea de decriptare.
Regulile de criptare/de-criptare sunt:
Textul clar este separat n blocuri de cate doua caractere (ignorand spat iile). Condi-
t ia este ca nici un bloc sa nu cont ina aceiasi litera, iar textul sa e de lungime para.
Aceste deziderate se realizeaza usor modicand put in textul clar (se introduce o
litera de frecvent a mica ntre cele doua litere egale, respectiv ca ultim caracter).
Fiecare bloc se cripteaza astfel: daca cele doua litere nu sunt plasate n tabel pe
aceiasi linie sau coloana (de exemplu A si E), se cerceteaza colt urile dreptunghiului
determinat de cele doua litere (n cazul nostru A, F, O, E). Perechea AE este crip-
tata n FO. Ordinea este determinata de ordinea liniilor pe care se aa literele din
textul clar. Astfel, EA se cripteaza n OF, SF n ZB etc.
Daca cele doua litere se gasesc pe aceasi linie (coloana), se merge ciclic cu o pozit ie
la dreapta (respectiv jos). Deci CA se cripteaza n AX, WX n UG, CA n AX
etc.
De exemplu, textul clar AFARA PLOUA se cripteaza n XHHPPDPEPX. Se observa ca
cele patru aparit ii ale caracterului A au fost criptate cu X, H, P si din nou X.
O permutare ciclica a liniilor si coloanelor tabloului nu modica criptarea. De exemplu,
patratul
P U L R I
A X F H C
O G E T N
M J V B K
D W Z S Y
obt inut prin deplasarea cu doua pozit ii spre stanga si o pozit ie n sus, este echivalent cu
cel init ial (ambele asigura aceeasi cheie de criptare).
Regulile de baza pot modicate sau completate dupa necesitat i. Astfel, se poate
adauga din loc n loc cate o litera falsa (cu frecvent a foarte redusa, cum ar X, Y ) care
sa modice textul criptat. Patratul 5 5 poate nlocuit cu un dreptunghi 4 6 sau
3 8, cu schimbarile corespunzatoare n alegerea literelor care se elimina.
Pentru a pastra cheia n sigurant a, se recomanda memorarea acesteia. Cum o astfel
de cheie este extrem de greu de memorat, se foloseste un cuvant cheie sau o propozit ie cu
toate literele distincte. Acesta cuvant este scris la nceputul tabloului. Spat iile ramase
sunt completate cu restul literelor alfabetului, scrise n ordinea aparit iei lor
5
.
5

In denit ia init iala a sistemului, Wheatstone pleca de la cuvantul Holmes.


2.2. SISTEME DE CRIPTARE POLIALFABETICE 9
Astfel, n preajma primului razboi mondial, armata romana folosea un dreptunghi
3 8 din care lipseau literele Q si K. Cuvantul cheie era ROMANESC. Un astfel de
tablou putea avea de exemplu forma
R O M A N E S C
B D F G H I J L
P T U V W X Y Z
Ca si sistemul anterior, Palyfair rezista la atacuri bazate pe frecvent a aparit iei, dar
nu si la cele prin text clar ales.
Implementari actuale folosesc reprezentarea binara a literelor si fac un pas suplimentar:
dupa ce s-a obt inut o pereche criptata, aceasta se combina printr-un XOR (adunare
modulo 2) cu perechea criptata anterior.
2.2.3 Sistemul de criptare Vigenere
Numele sistemului
6
vine de la baronul francez Blaise de Vigenere (1523 1596) diplomat
la curtea regelui Henry III. A fost considerat mult timp unul din cele mai bune sisteme
de criptare.
Prezentarea sistemului
Consideram ca si la sistemele anterioare cele 26 litere ale alfabetului, numerotate de
la 0 (pentru A) pana la 25 (pentru Z), conform tabelului:
A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25
Denim T = (= Z
26
, /= Z
+
26
.
O cheie K / este un cuvant avand codicarea numerica k
0
k
1
. . . k
p1
.
Fie a = a
0
a
1
. . . a
n
codicarea textului clar care trebuie transmis. Textul criptat va
e
K
(a) = x = x
0
x
1
. . . x
n
, unde
x
i
= a
i
+k
i (mod p)
(mod 26) ()
Exemplul 2.3 Sa consideram cuvantul cheie FOCAR; deci p = 5 si K = 5 14 2 0 17.
Daca vrem sa criptam cu aceasta cheie textul clar NU POT VENI AZI, vom proceda
astfel:
Codicarea textului este a = 13 20 15 14 19 21 4 13 8 0 25 8.
Sub ecare numar din a se aseaza cate un numar din K; cand cheia se termina, ea
se reia ciclic, pana se termina a. Deci vom avea
6
Sursa [7] indica drept real inventator al sistemului pe Giovan Batista Belaso n 1553.
10 PRELEGEREA 2. CIFRURI DE SUBSTITUT IE
13 20 15 14 19 21 4 13 8 0 25 8
5 14 2 0 17 5 14 2 0 17 5 14
18 8 17 14 10 0 18 15 8 17 4 22
S I R O K A S P I R E W
Linia a treia cont ine suma modulo 26 a numerelor de pe primele doua linii, iar pe ultima
linie s-a scris textul criptat rezultat.
Decriptarea se realizeaza similar, scazand (modulo 26) din codul caracterului criptat,
codul caracterului corespunzator din cheie.
O varianta a sistemul Vigenere este sistemul Beaufort (amiral englez, autorul si a unei
scale a vanturilor care i poarta numele); aici relat ia de criptare () este nlocuita cu
x
i
= k
i (mod p)
a
i
(mod 26), (i 0)
Avantajul sistemului Beaufort consta n faptul ca ecuat ia de criptare se aplica si la
decriptare (a
i
= k
i (mod p)
x
i
).
Alta varianta este sistemul Autoclave, atribuit matematicianului Cardano (autorul
formulelor de rezolvare pentru ecuat iile de gradul 3 si 4). Aici cheia se foloseste o singura
data, la nceput, dupa care este utilizat drept cheie textul clar.
Exemplul 2.4 Sa luam cuvantul cheie COV OR si textul clar A VENIT TOAMNA.
Putem aranja sistemul de criptare sub forma unui tabel (s-au trecut doar caracterele, nu
si codicarile lor):
Text clar: A V E N I T T O A M N A
Cheie: C O V O R A V E N I T T
Text criptat C J Z B Z T O S N U G T
Sistemul Vigenere a fost utilizat secole de-a randul, ind considerat ca ind unul din
cele mai sigure sisteme de criptare.

In 1917 de exemplu, prestigioasa revista Scientic
American l considera imposibil de atacat. Numai ca acest sistem a fost spart de Kasiski
nca din 1863 (si independent de Babbage n 1854).
Criptanaliza sistemului Vigenere
Fie x = x
0
x
1
. . . x
n1
textul criptat cu cheia K = k
0
k
1
. . . k
p1
. Putem aranja acest text
sub forma unei matrici cu p linii si n/p| coloane, astfel
x
0
x
p
x
2p
. . .
x
1
x
p+1
x
2p+1
. . .
.
.
.
x
p1
x
2p1
x
3p1
. . .
Elementele de pe prima linie au fost criptate dupa formula
x
pr
= a
pr
+k
0
(mod 26), (k 0)
2.2. SISTEME DE CRIPTARE POLIALFABETICE 11
adica cu un sistem Cezar (k
0
ind o valoare xata din Z
26
).

In mod similar si celelalte
linii.
Deci, daca s-ar cunoaste lungimea p a cheii, problema s-ar reduce la criptanaliza a p
texte criptate cu Cezar sistem de criptare monoalfabetic.
Sunt cunoscute doua metode pentru aarea lungimii cheii: testul lui Kasiski si indexul
de coincident e.
Prima metoda consta n studiul textului criptat si aarea de perechi de segmente de
cel put in 3 caractere (aceasta lungime este propusa de Kasiski) identice. Pentru ecare
astfel de pereche, se determina distant a dintre segmente.
Dupa ce s-au gasit mai multe astfel de distant e, valoarea lui p va cel mai mare divizor
comun al lor (sau eventual un divizor al acestuia).
Exemplul 2.5 Oscar intercepteaza urmatorul text criptat, despre care banuie ca s-a
folosit Vigenere:
D V L O E G O G L C G I W W A F R S C K A R V S S R A A K R S T U H D A
Q L N C J T S R U J V C W E A W K O H Z T I E U A R I Q L N C J C I K A
Q V A G K A S J T S G R W D A G K R C W A O L N S Z P C V Z W Z C S C E
P I E R V M W Y A W V M W E E G T U
Textul este destul de scurt (146 litere) si nu se mai stie nici un text trimis anterior.
Folosind metoda Kasiski, Oscar gaseste secvent a QLNCJ care apare pe randul al doilea.
Distant a dintre cele doua aparit ii este 27. De asemenea, apar doua cuvinte foarte asema-
natoare: AQLN si AOLN, avand ntre ele distant a 57.
Deci putem banui ca avem de-a face cu un cuvant cheie de lungime cmmdc(27, 57) = 3.
Rescriem textul pe coloane, ecare coloana avand trei elemente. Anume:
D O O C W F C R S A S H Q C S J W W H I A Q C I Q G S S W G C O S C W S P R W W W G
V E G G W R K V R K T D L J R V E K Z E R L J K V K J G D K W L Z V Z C I V Y V E T
L G L I A S A S A R U A N T U C A O T U I N C A A A T R A R A N P Z C E E M A M E U
Numarand frecvent a aparit iei literelor pe ecare linie, obt inem tabelul
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
Linia 1 2 0 6 1 0 1 3 2 2 1 0 0 0 0 3 1 3 2 7 0 0 1 8 0 0 0
Linia 2 0 0 1 2 4 0 3 0 1 3 6 3 0 0 0 0 0 4 0 2 0 6 2 0 1 3
Linia 3 11 0 3 0 3 0 1 0 2 0 0 2 2 3 1 1 0 3 2 3 4 0 0 0 0 1

In limba romana, primele litere ca frecvent a sunt AEI, aate la distant a egala una
de alta. Deci vom cauta pe ecare linie tripletele de litere situate pe pozit iile (k, k+4, k+8)
avand frecvent a semnicativ de mare (maxima n cazul unui text lung). Pentru linia 3,
alegerea este simpla: ea este chiar AEI (16 aparit ii din 49 posibile), deci o deplasare
0 n codul Cezar.
Pentru prima linie, sunt doua posibilitat i: O S W (deplasare 14) sau S W A
(deplasare 18), ambele cu cate 18 aparit ii.
12 PRELEGEREA 2. CIFRURI DE SUBSTITUT IE
Tot doua variante apar si pentru a doua linie: CGK (deplasare 2) cu 10 aparit ii,
sau R V Z (deplasare 14) cu 13 aparit ii.
Deplas arile dau exact codicarile cheii. Deci trebuie luate n considerare patru vari-
ante de cuvant cheie: OCA, ORA, SCA sau SRA. Cum de obicei cuvantul cheie are
o semnicat ie semantica (pentru a putea ret inut mental usor), putem presupune ca el
este OCA sau ORA.
O simpl a vericare ret ine drept cuvant cheie ORA, care conduce la decriptarea corecta
a textului (spat iile si semnele de punctuat ie se pun corespunzator):
PELANGAPLOPIIFARASOTADESEAAMTRECUTMACUNOSTEAUVECINIITOTITUNUMAICUNOSCUT
ACEASTAESTEPRIMASTROFAAUNEINPOEZIICELEBREDEMIHAIEMINESCU
A doua metoda de aare a lungimii cheii de criptare ntr-un sistem Vigenere se bazeaza
pe un concept denit n 1920 de Wolfe Friedman n 1920: indexul de coincident e ([4]).
Denit ia 2.1 Daca x = x
1
x
2
. . . x
n
este o secvent ae n caractere alfabetice, se numeste
index de coincident e al lui x probabilitatea ca doua caractere din x, alese aleator, sa e
identice. Aceasta valoare se noteaza I
c
(x).
Sa notam cu f
i
frecvent a de aparit ie n x a caracterului literal codicat i (0 i 25).
Doua litere din x pot alese n C
2
n
moduri. Din acestea, sunt C
2
f
i
moduri ca ambele sa
aiba aceiasi codicare i (0 i 25). De aici se poate deduce formula
I
c
(x) =
25

i=0
C
2
f
i
C
2
n
=
25

i=0
f
i
(f
i
1)
n(n 1)
Sa presupunem ca x este un text n limba romana. Din tabelul frecvent elor de aparit ie ale
literelor, notand p
i
probabilitatea de aparit ie a caracterului codicat cu i (0 i 25),
valoarea pe care o putem estima pentru indxul de coincident e este
I
c
(x)
25

i=0
p
2
i
= 0, 0788
Motivat ie: Probabilitatea ca doua elemente aleatoare sa e ambele egale cu caracterul de
cod i este p
2
i
(0 i 25). Armat ia este valabila pentru orice criptare cu un sistem
monoalfabetic.
Sa presupunem acum ca am aranjat textul criptat x = x
0
x
1
. . . x
n1
ntr-o matrice cu
p linii si n/p| coloane (unde p este un numar ntreg pozitiv arbitrar), astfel
x
0
= x
0
x
p
x
2p
. . .
x
1
= x
1
x
p+1
x
2p+1
. . .
.
.
.
x
p1
= x
p1
x
2p1
x
3p1
. . .
2.3. EXERCIT II 13
Daca p este chiar lungimea cheii, atunci ecare valoare I
c
(x
i
) trebuie sa e apropiata de
0, 0788.

In caz contrar, sirul x
i
va arata mult mai aleator, ind obt inut prin amestecul
unei secvent e de caractere criptate cu chei diferite. Pentru o secvent a complet aleatoare,
valoarea indexului de coincident e este
I
c
26

1
26

2
=
1
26
= 0, 0384
Valorile 0, 0788 si 0, 0384 vor constitui punctele de extrem pe care le poate lua I
c
. Vom lua
deci diverse valori pentru p, pana vom gasi una care sa se apropie cat mai mult de 0, 788
si nu de 0, 384. Aceea poate considerata cu sucienta sigurant a ca este lungimea
cheii.

In etapa a doua, vom ncerca sa aam efectiv cheia K = k


0
k
1
. . . k
p1
.
Daca notam n
1
= n/p| lungimea secvent ei x
i
, atunci distribut ia de probabilitate ale
celor 26 litere n x
i
este
f
0
n
1
,
f
1
n
1
, . . . ,
f
25
n
1
Secvent a x
i
a fost obt inuta printr-o criptare Cezar cu o deplasare k
i
. Deci, situat ia ideala
este cand distribut ia de probabilitate a deplasarii
f
k
i
n
1
,
f
k
i
+1 (mod 26)
n
1
, . . . ,
f
k
i
+25 (mod 26)
n
1
este cat mai apropiata de distribut ia de probabilitate p
0
, p
1
, . . . , p
25
a limbii romane.
Fie un ntreg m (0 m 25); denim expresia
F
m
=
25

i=0
p
i
f
i+m
n
1
Daca m = k
j
(0 j p 1), ne putem astepta ca F
m

25

i=0
p
2
i
= 0, 0788.
Daca m ,= k
j
, atunci F
m
va semnicativ mai mic decat aceasta valoare. Deci, dupa
cel mult 25 ncercari, se poate aa deplasarea k
j
si deci a j-a litera din cheie.
2.3 Exercit ii
2.1 Demonstrat i ca funct ia de criptare ana e
K
(x) = ax+b (mod 26) este injectiva daca
si numai daca cmmdc(a, 26) = 1.
2.2 Textul clar este scris peste alfabetul V = a, b, c, d. Se foloseste un sistem de
criptare monoalfabetic dat de regulile a bb, b aab, c bab, d a. Sa se
arate ca funct ia de criptare este injectiva.
Dar pentru: a ab, b ba, c a, d c ?
14 PRELEGEREA 2. CIFRURI DE SUBSTITUT IE
2.3 Se denesc doua sisteme de criptare cu T= a, b, (= c, d si regulile
a ccd, b c pentru primul sistem,
a c, b dcc la al doilea sistem.
Ce cuvinte sunt criptate la fel n cele doua sisteme ?
2.4 S-a recept ionat mesajul
ARAU RIRU ITAA URIR EESU URAP IUTE IRI
Despre el, criptanalistul are urmatoarele informat ii: s-a folosit un careu de criptare
tip Polybios, precum si cuvantul cheie STROP.
Sa se decripteze mesajul.
2.5

In sistemele de criptare simple, orice cheie de criptare poate reprezentata ca o
compunere de cateva chei generatoare. La sistemul Cezar, o astfel de cheie este e
1
. Aratat i
ca la sistemul an sunt necesare cel putn doua chei generatoare.
2.6 Decriptat i urmatorul mesaj
TKLCP OCTLE TSSZC XCMEB CVKMK CCSBX KGQBA CGQPE MBKCQ FKGSP
SSBEB SBQPQ ACSGQ PEMGQ BLCOK CAQLB CQGKM BXCLQ GKCTX SFKCA
CBCBV KVKME LQAKP BXXCO CPBKL KOKCB QPQAC SSPBK LKM
criptat cu un sistem an.
2.7 O varianta a sistemului AUTOCLAVE este utilizarea textului criptat (n loc de text
clar) dupa prima aplicare a cheii. La care din cele doua variante de AUTOCLAVE este
criptanaliza mai usoara ?
2.8 Cate chei are un sistem de criptare an n care card(V ) = 30, 100 sau 1225 ?
2.9 Sa presupunem ca K = (5, 21) este o cheie ntr-un sistem de criptare an peste Z
29
.
(a) Exprimat i funct ia de decriptare sub forma d
K
(y) = ay +b unde a, b Z
29
;
(b) Aratat i ca e
K
(d
K
(x)) = x, x Z
29
.
2.10 Fie K = (a, b) o cheie ntr-un sistem an peste Z
n
. Aratat i ca K este auto-cheie
daca si numai daca a
1
a (mod n) si b (a + 1) 0 (mod n).
Aat i toate auto-cheile dintr-un sistem an peste Z
15
.
Sa presupunem ca n = pq unde p si q sunt numere prime distincte. Aratat i ca numarul
auto-cheilor din sistemul an peste Z
n
este n +p +q + 1.
Bibliograe
[1] A. Menezes, P. Oorschot, S. Vanstome, Handbook pf Applied Cryptography
[2] A. Salomaa, Criptograe cu chei publice, Ed. Militara, Bucuresti 1994
[3] B. Schneier, Applied Cryptography, John Wiley and Sons, 1995
[4] D. Stinton, Cryptography, Theory and Practice, Chapman& Hall/CRC, 2002
[5] http://en.wikipedia.org/wiki/Caesar cipher# History and usage
[6] http://psychcentral.com/psypsych/Polybius square
[7] http://www.answers.com/topic/vigen-re-cipher
15
Prelegerea 3
Sisteme mecanice de criptare
Sistemele de criptare pot aduse la un grad mai mare de complexitate si securitate daca
se folosesc mijloace mecanice de criptare. Astfel de mecanisme special construite vor usura
pe de-o parte operat iile de criptare/decriptare, iar pe de-alta parte vor capabile sa
creeze un numar mult mai mare de chei posibile.
3.1 Sistemul antic Skitala
Skitala (baston n greceste) este o unealta folosita pentru realizarea unui sistem de
criptare cu permutari. El este sub forma aproximativ cilindrica, n jurul lui indnfasurata
o banda de hartie. Mesajul se scrie n mod normal pe aceasta banda, dupa care hartia este
desfacuta. La primire se foloseste un bat asemanator pe care se nfasoara sulul de hartie,
mesajul devenind din nou inteligibil (pentru detalii, a se vedea [6], [3]). Conform istoricilor
greci, spartanii foloseau acest mod de comunicare n timpul campaniilor militare.
1
El
avea avantajul de a rapid si nu comporta erori de transmitere. Dezavantajul este acela
ca este usor de spart.
Exemplul 3.1 Sa presupunem ca dimensiunile bat ului permit scrierea a 4 randuri, cu
5 caractere pe ecare rand. Fie VINO MAINE LA INTALNIRE textul care trebuie
criptat. Ignorand spat iile, mesajul va apare scris sub forma
1
Skitala a fost ment ionata prima oara de poetul grec Archilochus (sec. VII .H). Desi apare ulterior
si n alte texte, abia la mijlocul secolului III .H. Apollonius din Rhodos specica limpede utilizarea lui
ca mijloc de criptare. De remarcat ca pentru perioada respectiva, sistemele de criptare folosite de greci
erau de tip steganograc. O descriere a modului de operare este data apoi de Plutarh (50-120 A.D.).
1
2 PRELEGEREA 3. SISTEME MECANICE DE CRIPTARE
________________________
| | V | I | N | O | M |
|__| A | I | N | E | L |__
| A | I | N | T | A | |
| L | N | I | R | E | |
|___|___|___|___|___|__|
Dupa derularea de pe skitala, mesajul scris pe banda de hartie este:
VAALIIINNNNIOETRMLAE.
La decriptare, banda va rulata din nou si ecare a patra litera va pe aceeasi linie.
Criptanaliza este foarte simpla. Se iau pe rand valorile n = 2, 3, 4, . . .. Pentru o astfel
de valoare xata, se formeaza n randuri de tipul
n +i, 2n +i, 3n +i, . . . (i = 1, 2, . . . , n)
care ulterior se concateneaza. Exista o valoare a lui n pentru care textul astfel format este
inteligibil.
3.2 Cilindrul Jeerson
Ideea de masina de criptare apare clar prima data la Thomas Jeerson, primul secretar
de Stat al Statelor Unite; acesta a inventat un aparat de criptat numit roata de criptare,
folosit pentru securitatea corespondent ei cu aliat ii n special cei francezi.
2
Un cilindru Jeerson este format din n discuri de dimensiuni egale (init ial n = 26
sau n = 36, dar valoarea este nerelevanta pentru descrierea sistemului) asezate pe un ax.
Discurile se pot roti independent pe ax, iar pe muchea ecaruia sunt inscrise cele 26 litere
ale alfabetului, ntr-o ordine aleatoare (dar diferita pentru ecare disc).
La criptare, textul clar se mparte n blocuri de n caractere. Fiecare astfel de bloc
se scrie pe o linie (generatoare) a cilindrului, rotind corespunzator ecare disc pentru a
aduce pe linie caracterul cautat. Oricare din celelalte 25 linii va constitui blocul de text
criptat.
Pentru decriptare este necesar un cilindru identic, n care se scrie pe o linie textul
criptat (de n caractere) si apoi se cauta printre celelalte 25 linii un text cu semnicat ie
semantica. Probabilitatea de a avea un singur astfel de text creste cu numarul de discuri
din cilindru.
O mica diferent a apare daca textul clar nu are nici o semnicat ie semantica (s-a
folosit o dubla criptare). Atunci trebuie convenita dinainte o anumita distant a de criptare
s (1 s 25).
2
Thomas Jeerson a folosit acest aparat n perioada 1790 1802, dupa care se pare ca ideea s-a
pierdut. Devenit presedinte, Jeerson a fost atras de sistemul Vigenere, pe care l considera mai sigur
si-l recomanda secretarului sau de stat James Madison ca nlocuitor al sistemului pe care l inventase
anterior.
3.2. CILINDRUL JEFFERSON 3
Ordinea discurilor poate de asemenea schimbata. De exemplu, un cilindru cu n = 10
discuri poate realiza 10! = 3.628.800 texte criptate diferite pentru acelasi text clar.
Cilindrul Jeerson realizeaza o substitut ie polialfabetica de perioada n. Daca ar
privit ca un sistem de criptare Vigenere, lungimea cheii este enorma (de multe ori n
n
, n
funct ie de modalitat ile de aranjare a alfabetelor pe discuri), si deci metoda de atac a lui
Kasiski este inaplicabila.
Exemplul 3.2 Sa consideram n = 10 si e cilindrul, n care am desfasurat literele de pe
cele 10 discuri:
1 2 3 4 5 6 7 8 9 10
1 A A A A A A A A A A
2 R R P N V S P E I I
3 I O S I O O U S R H
4 E S Y M T R H U E E
5 K U L O Y P I P S T
6 O V U C L M S B L O
7 B I K U E U E L B M
8 C J B L B B N C C U
9 U L R T C D R D D C
10 D B C Y D Y Y H F D
11 J V D B G E D I N F
12 T C T F F C B J Y G
13 L G F G K V F F T J
14 N K G S N H G O G P
15 P N O H H F V G H Q
16 W P N J U K J K J B
17 Q Q E D P L K M K N
18 M T H E Q Q M N M V
19 S H M K R I T Q P W
20 V E Q P S J O R Q X
21 X D V Q W N L V V L
22 Z Y W V X G W W W Y
23 G W X X M T Q Y O K
24 H X Z R I W X X U R
25 Y Z I Z J X Z T X S
26 F M J W Z Z C Z Z Z
Cu ajutorul lui, textul clar TREI CULORI construit pe una din liniile generatoare ale
cilindrului va genera urmatoarele linii (oricare din ele putand folosit drept text criptat):
4 PRELEGEREA 3. SISTEME MECANICE DE CRIPTARE
T R E I C U L O R I
L O H M D B W G E H
N S M O G D Q K S E
P U Q C F Y X M L T
W V V U K E Z N B O
Q I W L N C C Q C M
M J X T H V A R D U
S L Z Y U H P V F C
V B I B P F U W N D
X F J F Q K H Y Y F
Z C A G R L I X T G
G G P S S Q S T G J
H K S H W I E Z H P
Y N Y J X J N A J Q
F P L D M N R E K B
A Q U E I G Y S M N
R T K K J T D U P V
I H B P Z W B P Q W
E E R Q A X F B V X
K D C V V Z G L W L
O Y D X O A V C O Y
B W T R T S J D U K
C XX F Z Y O K H X R
U Z G W L R M I Z S
D M O A E P T J A Z
J A N N B M O F I A
Daca se considera o dubla criptare cu distant a s = 3, atunci textul clar AAAAAAAAAA
va criptat cu cilindrul anterior n ESYMTRHUEE.
Cilindrul Jeerson a fost reinventat ulterior de mai multe ori, cea mai notabila ind
se pare masina de criptat M 94, care a fost n serviciu pana pana n al doilea razboi
mondial.
3.3 Masini de criptat
Prima jumatate a sec. XX este dominata de masinile de criptat, o combinat ie ntre
masinile de scris si sisteme de criptare mecanice bazate pe discuri.
3.3.1 C 36 (M 209 C)
Masina C 36 este conceputa de inginerul suedez Boris Hagelin, la solicitarea armatei
americane de a avea o masina de criptat portabila, usor de manuit, care sa poata folosita
3.3. MASINI DE CRIPTAT 5
dupa un instructaj sumar. Este cunoscuta si sub numele de M 209 C, la baza ind
un model creat de Hagelin n Suedia la sfarsitul anilor

30. Ea ncepe sa e produs a
dupa cateva modicari legate de design n 1940 si nlocuieste treptat masina de criptat
M 94. Se apreciaza ca n timpul razboiului au fost produse circa 140.000 masini de
criptat C 36.
Nu au fost specicate masuri speciale de securitate; C 36 nu a fost realizata pentru
a criptograc sigura, ea ind destinata zonelor militare tactice, unde era nevoie doar de
o sigurant a de cateva ore fat a de o eventuala criptanaliza.
Vom da o prezentare matematica a principiilor sale de construct ie; pentru alte detalii,
a se vedea [1] si [5].
Denit ia 3.1 Se numeste matrice lug o matrice binara M
627
n care ecare din cele 27
coloane cont ine cel mult doi de 1.
Exemplul 3.3 ([4]). Toate exemplicarile referitoare la M 209 vor facute pentru
matricea
M =

0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1
1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 1 1
0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0

Fie v un vector binar de dimensiune 6. Atunci c M este un vector cu 27 componente


avand elemente din mult imea {0, 1, 2}. Numarul de elemente nenule din v M se numeste
ponderea lui v n raport cu M.
O congurat ie de nceput se obt ine prin asezarea unul sub altul (aliniat i la stanga) a
sase vectori binari de lungimi 17, 19, 21, 23, 25, 26.
Exemplul 3.4 Structura
0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0
0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1
formeaza o posibila congurat ie de nceput.
Spre deosebire de matricea lug, la congurat ia de nceput nu exista restrict ii privind
numarul de 1.
Plecand de la o congurat ie de nceput se pot genera o innitate de vectori de dimensiune
6 n felul urmator:
6 PRELEGEREA 3. SISTEME MECANICE DE CRIPTARE
1. Primii 17 vectori sunt coloanele complete ale congurat iei de nceput.
2. Fiecare vector linie se repeta ciclic din momentul cand s-a terminat.
Pe baza acestor elemente se poate descrie sistemul de criptare al masinii C 36. Ream-
intim, codicarea numerica a literelor este de la A 0 pana la Z 25; toate calculele se
vor face modulo 26.
Fie x codul celui de-al i-lea caracter din textul clar si h ponderea celui de-al i-lea
vector generat de congurat ia de nceput n raport cu matrica lug. Atunci
y = h x 1.
Exemplul 3.5 Sa consideram textul clar
NU PUTEM REUSI DECAT IMPREUNA
mpreuna cu matricea lug si congurat ia de nceput din exemplele anterioare. Codi-
carea numerica a textului este
13 20 15 20 19 4 12 17 4 20 18 8 3 4 2 0 19 8 12 15 17 4 20 13 0.
Dupa ignorarea spat iilor libere
3
, lungimea textului clar este 25.
Vom calcula ponderile primilor 25 vectori si vom aranja totul sub forma unui tablou:
h 10 17 16 9 9 9 7 0 0 0 0 12 0
x 13 20 15 20 19 4 12 17 4 20 18 8 3
h x 1 22 20 0 14 15 4 20 8 21 5 7 3 22
W W A O P E U I V F H D W
h 0 18 7 0 0 18 7 9 9 19 14 9
x 4 2 0 19 8 12 15 17 4 20 13 0
h x 1 21 15 6 6 17 5 17 17 4 24 0 8
V P G G R F R R E Y A I
Deci textul criptat este
WWAOPEUIVFHDWVPGGRFRREYAI
Matricea lug si congurat ia de nceput formeaza cheia pentru masina C 36. De fapt,
masina nsasi este o realizare zica a acestui sistem: ea opereaza conform cu o cheie
stabilita anterior prin xarea unor rot i dint ate si a unui disc (pentru detalii vezi [5]).
Observat ia 3.1 Ecuat ia de decriptare este identica cu cea de criptare:
x = h y 1.
Deci din acest punct de vedere sistemul de criptare este de tip Beaufort si masina C 36
poate folosita atat pentru criptare cat si pentru decriptare.
3

In aplicat iile practice, spat iul se nlocuieste uneori cu o litera de frecvent a redusa.
3.3. MASINI DE CRIPTAT 7
Deoarece liniile din congurat ia de nceput au lungimi numere prime ntre ele, vectorii
generat i ncep sa se repete sigur dupa 171921232526 = 101.405.850 pasi; deci cuvantul
cheie poate considerat mai lung decat orice text clar. Sunt nsa cazuri cand aceasta
perioada poate mai scurta. De exemplu, daca congurat ia de nceput cont ine numai 1,
se va genera un singur vector, deci perioada este 1. De asemenea se obt in perioade scurte
pentru matrici lug cu foarte put ini 1 sau congurat ii de nceput n care raportul dintre
numarul de 0 si 1 este disproport ionat.
Nu exista o condit ie matematica pentru existent a a exact 6 linii n congurat ia de
nceput. Acest numar a fost ales ca un compromis ntre securitatea criptograca si
usurint a de a cripta.

In general perioada creste cu numarul de linii.
Masina de criptat M 209 avea si ea o serie de slabiciuni (un atac cu texte clare alese
care au anumite componente comune poate duce la informat ii asupra matricii lug), astfel
ca n 1943 criptanalistii germani puteau decripta mesajele. Totusi din punct de vedere
militar tactic ea a fost considerata perfect adaptata necesitat ilor si a fost folosita de
armata americana pana dupa razboiul din Coreea (1953 1956).
Ulterior, Hagelin a elaborat un model mbunatat it: masina C 52. Aceasta avea o
perioada de 2.756.205.443; discurile puteau si scoase si reinserate n alta ordine; exista
un disc al carui alfabet putea permutat. C 52 a facut parte din ultima generat ie
de masini de criptat clasice, noua tehnologie (cea a computerelor) permit and dezvoltarea
altor mecanisme cu o putere de calcul mult mai mare.
3.3.2 Enigma
Poate cea mai celebra masina de criptat a fost masina germana Enigma. Sub acest nume
se aa o varietate larga de modele de masini de criptat electro-mecanice, care asigura o
criptare polialfabetica de tip Vigenere sau Beaufort.
Ea a fost proiectata la Berlin n 1918, de inginerul german Arthur Scherbius. Primul
model (A) este prezentat la Congresele Uniunii Postale Internat ionale din 1923 si 1924.
Modele ulterioare sunt folosite n mai multe t ari europene si asiatice (Suedia, Olanda,
Marea Britanie, Japonia, Italia, Spania, SUA, Polonia, Elvet ia) n scopuri comerciale,
militare sau diplomatice. Din 1926 ncepe sa e preluata si de armata germana, care
dupa 1928 si deneste propriile modele (G, I, K).

In total au fost construite circa 100.000 masini Enigma, din care 40.000 n timpul
razboiului. Dupa 1945 aliat ii au capturat toate masinile de pe teritoriul german, acestea
ind nca mult timp considerate sigure. Abia n 1970 au aparut primele informat ii despre
decriptarea de catre aliat i (Biuro Szyfrow - Polonia si Bletchley Park - Anglia) a unui
mare num ar de mesaje criptate prin modelul militar Enigma si transmise prin radio n
timpul razboiului.
O descriere completa a masinii este destul de lunga; recomand pentru detalii [2], [3].

In linii mari, ea are urmatoarele componente:


Tastatura: Este o componenta mecanica formata din:
8 PRELEGEREA 3. SISTEME MECANICE DE CRIPTARE
Un pupitru de taste (similar unei masini de scris);
n discuri adiacente, care se rotesc n jurul unui ax. La marea majoritate a
modelelor Enigma n = 3; sunt nsa si versiuni cu n = 5, 6 sau n = 7 discuri.
Pe ecare disc sunt scrise cele 26 caractere alfabetice (la care uneori se mai
adauga trei caractere speciale);
Un mecanism de avans (similar ceasurilor mecanice) care permite la apasarea
unei taste rotirea unuia sau mai multor discuri cu un numar de pozit ii. Sunt
folosite mai multe variante; cea mai frecventa consta n rotirea cu o pozit ie a
discului din dreapta, la ecare apasare a unei taste, acompaniata n anumite
situat ii de rotirea discurilor vecine.
Circuite electrice: Criptarea unui caracter se realizeaza electric. Componenta meca-
nica este conceputa n asa fel ncat sa formeze un circuit electric. La apasarea unei
taste circuitul se nchide si lumineaza una sau mai multe lampi, indicand litera de
iesire.
Reector (Umkehrwalze): Este o componenta specica masinilor de criptat Enigma
(introdusa n 1926 la sugestia lui Willy Korn). Scopul ei este de a realiza o criptare
Beaufort (masina sa poata cripta sau decripta mesajele n acelasi timp).

In ma-
joritatea variantelor, reectorul este asezat pe ax dupa ultimul disc (din stanga); el
realizeaza o substitut ie (xata), dupa care reintroduce noul caracter prin discuri n
sens invers, dar pe alt drum. Deci o masina Enigma cu n discuri va realiza criptarea
unui caracter prin 2n + 1 substitut ii.
O consecint a a acestei proprietat i este aceea ca un caracter nu va niciodata criptat
n el nsusi, lucru exploatat cu succes de criptanalisti.
Tabela de conexiuni (Steckerbrett)
4
: Este o componenta (pozit ionata n fat a, sub
tastele literelor) n care se pot face conexiuni ntre perechi de litere, prin intermediul
unor cabluri (similar centralelor telefonice vechi). Deci la un mesaj sunt posibile
maxim 13 conexiuni. De exemplu, daca printr-un cablu sunt conectate literele S
si W, de cate ori este tastat S, semnalul este comutat pe W nainte de a intra pe
discuri.
Introdusa n 1930, aceasta componenta asigura un plus de securitate si a fost prin-
cipalul obstacol n criptanaliza.
Starea init iala a unei masini Enigma se refera la:
Ordinea discurilor (Walzenlage): alegerea numarului de discuri si ordinea lor de
utilizare;
4
plugboard n engleza.
3.3. MASINI DE CRIPTAT 9
Pozit ia init iala a discurilor: pozit ionarean mod independent a ecarui disc, diferita
pentru ecare mesaj;
Init ializarea inelului de caractere (Ringstellung): pozit ionarea alfabetului relativ la
primul disc.
Init ializarea conexiunilor (Steckerverbindungen): conexiunile dintre litere n cadrul
tabelei de conexiuni.
Matematic, Enigma cripteaza ecare litera dupa o procedura care poate exprimata prin
produs de permutari. Sa presupunem ca avem o masina Enigma cu 3 discuri si e P
transformarea tabelei de conexiuni, U reectorul, S, M, D act iunile celor 3 discuri
(din stanga, mijloc si respectiv dreapta). Atunci criptarea e poate scrisa sub forma:
e = PDMSUS
1
M
1
D
1
P
1
Dupa ecare apasare a unei taste, discurile se rotesc schimband transformarea. De exem-
plu, daca discul din dreapta se roteste cu i pozit ii, atunci transformarea devine
i
R
i
,
where este permutarea ciclica stanga a vectorului (A, B, C, . . . , Z). Similar, discurile
din mijloc si stanga pot reprezentate prin j respectiv k rotiri ale lui M respectiv S.
Atunci funct ia de criptare poate descrisa astfel:
e = P(
i
D
i
)(
j
M
j
)(
j
S
k
)U(
j
S
1

k
)(
j
M
1

j
)(
i
D
1

i
)P
1
Sa calculam numarul de variante posibile pentru criptarea unui mesaj. Vom considera
o masina Enigma cu 3 discuri. Atunci numarul de situat ii init iale posibile este 262626 =
17.576. Cum cele 3 discuri pot permutate n 6 moduri, numarul variantelor se ridica la
6 17.576 = 105.456.
Pentru ecare din acestea, o tabela de conexiuni cu 10 perechi de litere conectate
ridica numarul variantelor la 150.738.274.937.250.
La acestea se adauga si modul de pozit ionare al inelului de caractere la mecanismul
discurilor, care mai ridica ordinul de marime al variantelor cu aproximativ 10
5
. Aceste
estimari arata ca Enigma era cea mai sigura masina de criptat a momentului respectiv.
10 PRELEGEREA 3. SISTEME MECANICE DE CRIPTARE
Bibliograe
[1] Kahn, David - The Codebreakers, MacMillan Publishing Co, New York, 1967
[2] http : //en.wikipedia.org/wiki/Enigma machine
[3] Thomas Kelly - The myth of the skytale, Cryptologia, Iulie 1998, pp. 244 - 260.
[4] Salomaa, Aarto - Criptograe cu chei publice, Ed. Militara, 1994
[5] http : //en.wikipedia.org/wiki/M 209
[6] Collard Brigitte - Secret Language in Graeco-Roman antiquity (teza de doctorat)
http : //bcs.fltr.ucl.ac.be/FE/07/CRY PT/Intro.html
11
Prelegerea 4
Sisteme de criptare uide
4.1 Sisteme sincronizabile si auto-sincronizabile

In sistemele de criptare prezentate pana acum, elementele succesive ale textului clar erau
criptate folosind aceeasi cheie K. Deci, daca
x = x
1
x
2
x
3
. . .
este textul clar, textul criptat este
y = y
1
y
2
y
3
. . . = e
K
(x
1
)e
K
(x
2
)e
K
(x
3
) . . .
Sistemele de criptare de acest tip se numesc sisteme de criptare bloc (block cyphers).
Alta maniera utilizata este aceea a sistemelor de criptare uide (stream cyphers).
Denit ia 4.1 Fie /= (T, (, /, c, T) un sistem de criptare. O secvent a de simboluri
k
1
k
2
k
3
. . . /
+
se numeste cheie uida.
Denit ia 4.2 /= (T, (, /, c, T) este un sistem uid daca cripteaza un text clar
x = x
1
x
2
x
3
. . .
n
y = y
1
y
2
y
3
. . . = e
k
1
(x
1
)e
k
2
(x
2
)e
k
3
(x
3
) . . .
unde
k = k
1
k
2
k
3
. . .
este o cheie uida din /
+
.
Problema principala este aceea de a genera o astfel de cheie de criptare (teoretic innit).
Aceasta se poate realiza e aleator, e pe baza unui algoritm care pleaca de la o secvent a
mica de chei de criptare. Un astfel de algoritm se numeste generator de chei uide.
Mai multe detalii vor prezentate n cadrul prelegerii dedicate generatorilor de numere
pseudo-aleatoare.
1
2 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE
Exemplul 4.1 (sistemul de criptare Vernam):

In acest sistem x
i
, k
i
, y
i
0, 1. Criptarea se realizeaza conform formulei
y
i
= x
i
k
i
, (i 1)
Daca cheia uida este aleasa aleator si nu mai este folosita ulterior, sistemul de
criptare Vernam se numeste one - time pad.
Un sistem de criptare one-time pad este teoretic imposibil de spart.
1

Intr-adevar,
ind dat un text criptat cu un astfel de sistem, Oscar nu are nici o informat ie privind
cheia uid a sau textul clar. Dicultatea consta nsa atat n lungimea cheii (egala cu cea
a textului clar), cat si n modalitatea de transmitere a ei ntre Alice si Bob.
Pentru sistemul Vernam exista o modalitate de atac cunoscuta sub numele de crip-
tanaliza diferent iala (prezentata mai tarziu, n cadrul sistemului de criptare DES).
Anume:
Daca y
1
y
2
. . . y
n
si y

1
y

2
. . . y

n
sunt doua texte criptate cu aceiasi chee uida k
1
k
2
. . . k
n
,
atunci
y
i
= x
i
k
i
, y

i
= x

i
k
i
(1 i n)
deci y
i
y

i
== x
i
x

i
, si cheia nu mai este necesara, ci doar informat ia privind lungimea
sa; redundant a ultimei relat ii va permite criptanaliza.
Sistemele de criptare uide sunt clasicate n sisteme sincrone si auto-sincronizabile.
Denit ia 4.3 Un sistem de criptare uid sincron este o structura (T, (, /, L, c, T),
unde:
T, (, / sunt mult imi nite nevide ale caror elemente se numesc texte clare, texte
criptate si respectiv chei;
L este o mult ime nita nevida numita alfabet sir de chei;
g : / L
+
este un generator de chei uide: pentru
k /, g(k) = k
1
k
2
k
3
. . . L
+
este o cheie uida (teoretic innita);
z L exista o regula de criptare e
z
c si o regula de decriptare d
z
T astfel ca
x T, d
k
(e
k
(x)) = x
Exemplul 4.2 Sistemul de criptare Vigenere poate denit ca un sistem de criptare
uid sincron. Fie m lungimea cuvantului cheie din sistemul Vigenere. Denim
1

In anii

90 comunicarea ntre Moscova si Washington era securizata n acest mod, transportul cheii
de criptare ind asigurat de curieri.
4.1. SISTEME SINCRONIZABILE SI AUTO-SINCRONIZABILE 3
T = ( = L =Z
26
, / =(Z
26
)
m
,
e
z
(x) = x +z (mod 26), d
z
(y) = y z (mod 26)
Cheia z
1
z
2
z
3
. . . este denita
z
i
=

k
i
daca 1 i m
z
im
daca i m+ 1
Ea va genera din cheia xa K = (k
1
, k
2
, . . . , k
m
), cheia uida k
1
k
2
. . . k
m
k
1
k
2
. . . k
m
k
1
k
2
. . .
Procesul de criptare cu un sistem uid sincron poate reprezentat ca un automat
descris de relat iile
q
i+1
= (q
i
, k), z
i
= g(q
i
, k), y
i
= h(z
i
, x
i
)
unde q
0
este starea init iala care poate determinata din cheia k, este funct ia de
tranzit ie a starilor, g este funct ia care produce cheia uida z
i
, iar h este funct ia de iesire
care produce textul criptat y
i
pe baza textului clar x
i
si a cheii uide z
i
.

q
i
-
666
- -
6
6
-
?

g
h k
q
i+1
z
i
x
i
y
i

q
i
-
666
- -
6
6
-
?

g
h
1
k
q
i+1
z
i
y
i
x
i
(a) Criptare (b) Decriptare
Observat ia 4.1
Un sistem de criptare bloc poate privit ca un caz particular de sistem de criptare
uid, n care i 1, z
i
= K.
(sincronizare):

In sistemele de criptare uide sincrone, Alice si Bob trebuie sa-si
sincronizeze cheia uida pentru a putea obt ine o criptare/decriptare corecta. Daca n
timpul transmisiei sunt inserat i sau eliminat i bit i n textul criptat, atunci decriptarea
esueaza si ea poate reluata numai pe baza unor tehnici de resincronizare (cum ar
de exemplu reinit ializarea sau plasarea unor marcatori speciali la intervale regulate
n textul transmis).
Modicarea unui bit din textul criptat (faa a se elimina sau adauga nimic) nu va
afecta decriptarea altor caractere (nepropagarea erorii).
4 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE
Un adversar activ care elimina, insereaza sau retrimite componente ale mesajului
criptat, va provoca desincronizari si va deci detectat la recept ie. De asemenea, el
poate face modicari n textul criptat si sa observe cum vor afecta ele textul clar.
Deci un text criptat cu un sistem uid sincron necesita meca-nisme separate de
autenticare si de garantare a integritat ii datelor.
Denit ia 4.4 Un sistem aditiv uid binar de criptare este un sistem uid sincron n care
T = ( = L =Z
2
iar h este funct ia (XOR).
Un astfel de sistem este reprezentat mai jos:
Generator
chei uide

- -
?
-
k
z
i
x
i
y
i
Generator
chei uide

- -
?
-
k
z
i
y
i
x
i
(a) Criptare (b) Decriptare
Denit ia 4.5 Un sistem de criptare uid este auto-sincronizabil (sau asincron) daca
funct ia de generare a cheii uide depinde de un numar xat de caractere criptate anterior.
Deci comportamentul unui astfel de sistem poate descris de ecuat iile
q
i
= (y
it
, y
it+1
, . . . , y
i1
), z
i
= g(q
i
, k), y
i
= h(z
i
, x
i
)
unde q
0
= (y
t
, y
t+1
, . . . , y
1
) este starea init iala (cunoscuta), k este cheia, g este funct ia
de generare a cheii uide, iar h este functia de iesire care cripteaza textul clar x
i
. Cele
mai cunoscute sisteme auto-sincronizabile sunt registrii liniari cu feedback, utilizat i la
generarea secvent elor de numere pseudo-aleatoare (n criptograe) si la generarea codurilor
ciclice (n teoria codurilor).
Exemplul 4.3 (Criptare cu auto-cheie)
2
:
Fie T = ( = L =Z
26
. Se deneste cheia uida astfel:
z
1
= K, z
i
= y
i1
, (i 2)
Pentru un element oarecare al cheii z Z
26
, se deneste
e
z
(x) = x +z (mod 26)
d
z
(y) = y z (mod 26)
Sa consideram K = 13 si sa criptam textul clar BUCURESTI.
2
Se pare ca sistemul este atribuit lui Vigenere.
4.1. SISTEME SINCRONIZABILE SI AUTO-SINCRONIZABILE 5
Transformat n secvent a numerica vom avea
(x
1
, x
2
, x
3
, x
4
, x
5
, x
6
, x
7
, x
8
, x
9
) = (1, 20, 2, 20, 17, 4, 18, 19, 8)

In faza de criptare, vom calcula pe rand:


y
1
= e
13
(x
1
) = 1 + 13 (mod 26) = 14; y
2
= e
14
(x
2
) = 20 + 14 (mod 26) = 8;
y
3
= e
8
(x
3
) = 2 + 8 (mod 26) = 10; y
4
= e
10
(x
4
) = 20 + 10 (mod 26) = 4;
y
5
= e
4
(x
5
) = 17 + 4 (mod 26) = 21; y
6
= e
21
(x
6
) = 4 + 21 (mod 26) = 25;
y
7
= e
25
(x
7
) = 18 + 25 (mod 26) = 17; y
8
= e
17
(x
8
) = 19 + 17 (mod 26) = 10;
y
9
= e
10
(x
9
) = 8 + 10 (mod 26) = 18;
Deci textul criptat este (14, 8, 10, 4, 21, 25, 17, 10, 18) sau n litere: OIKEV ZRKS.
Pentru decriptare, vom avea:
x
1
= d
13
(y
1
) = 14 13 (mod 26) = 1; x
2
= d
14
(y
2
) = 8 14 (mod 26) = 20; s.a.m.d.
Se observa ca textul decriptat poate obt inut de oricine, aproape n totalitate, fara a
cunoaste nici o cheie (aceasta ind necesara doar pentru decriptarea primului caracter).
Deci gradul sau de securitate este nul.
Ceva mai dicil este sistemul n care generarea cheii uide se realizeaza cu ecuat ia
z
i
= x
i1
(i 2).

In acest caz, BUCURESTI se cripteaza n OV WWLV WLB (pentru K = 13).


Nici acest sistem de criptare cu auto-cheie nu este sigur, deoarece evident sunt
posibile doar 26 chei.
Proprietat i:
1. Auto-sincronizare: Deoarece funct ia de decriptare h
1
depinde numai de un numar
xat de caractere criptate anterior, desincronizarea rezultata eventual prin in-
serarea sau stergerea de caractere criptate se poate evita. Astfel de sisteme de
criptare pot restabili proprietatea de sincronizare afectand doar un numar nit de
caractere din textul clar.
2. Propagarea limitata a erorii: Daca starea unui sistem uid auto-sincronizabil de-
pinde de t caractere anterioare, atunci modicarea (eventual stergerea sau inser-
area) unui caracter din textul criptat poate duce la decriptarea incorecta a maxim
t caractere; dupa aceea decriptarea redevine corecta.
3. Rasp andirea textelor clare: Deoarece ecare caracter din textul clar inuent eaza
ntregul text criptat care urmeaza, eventualele proprietat i statistice ale textului clar
sunt dispersate prin textul criptat. Deci, din acest punct de vedere, sistemele de
criptare auto-sincronizabile sunt mai rezistente decat cele sincronizabile la atacurile
bazate pe redondant a textului clar.
4. Rezistent a la criptanaliza activa: Din proprietat ile de mai sus rezulta ca este destul
de dicil de depistat un atac venit din partea unui adversar activ (care poate mod-
ica, insera sau sterge caractere) auto-sincronizarea readucand decriptarea n faza
6 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE
normala. De aceea sunt necesare mecanisme suplimentare pentru a asigura auten-
ticarea si integritatea datelor.
4.2 Exemple de sisteme uide de criptare
4.2.1 SEAL
SEAL (Software - optimized Encryption ALgorithm) este un sistem de criptare aditiv
binar (Denit ia 4.4), denit n 1993 de Coppersmith si Rogaway. Este unul din cele mai
eciente sisteme implementabile pe procesoare de 32 bit i.
La un astfel de sistem este importanta descrierea generatorului de chei uide (care se
aduna modulo 2 cu textul clar). SEAL este o funct ie pseudo-aleatoare care scoate o cheie
uida de L bit i folosind un numar n de 32 bit i si o cheie secreta a de 160 bit i.
Fie A, B, C, D, X
i
, Y
j
cuvinte de 32 bit i. Vom folosi urmatoarele notat ii:
1. A: complementul lui A (pe bit i);
2. A B, A B, A B: operat iile OR, AND si XOR (pe bit i);
3. A << s: rotirea ciclica a lui A spre stanga cu s pozit ii;
4. A >> s: rotirea ciclica a lui A spre dreapta cu s pozit ii;
5. A +B (mod 2
32
): suma lui A si B (considerate ca numere ntregi fara semn);
6. f(B, C, D) = (B C) (B D);
g(B, C, D) = (B C) (B D) (C D); h(B, C, D) = B C D.
7. A[[B: concatenarea lui A cu B;
8. (X
1
, X
2
, . . . , X
n
) (Y
1
, , , , , Y
2
, . . . , Y
n
): atribuire simultana.
4.2. EXEMPLE DE SISTEME FLUIDE DE CRIPTARE 7
Algoritmul de generare a tabelei G pentru SEAL 2.0:
3
Intrare: Un sir a de 160 bit i si un ntreg i (0 i < 2
32
).
Iesire: G
a
(i) sir de 160 bit i.
Algoritm 1:
1. Se denesc constantele (de 32 bit i):
y
1
= 0x5a827999, y
2
= 0x6ed9eba1,
y
3
= 0x8f1bbcdc, y
4
= 0xca62c1d6
2. a. X
0
i;
b. for j 1 to 15 do X
j
0x00000000;
c. for j 16 to 79 do X
j
((X
j3
X
j8
X
j14
X
j16
) << 1);
d. (A, B, C, D, E) (H
0
, H
1
, H
2
, H
3
, H
4
) where a = H
0
H
1
H
2
H
3
H
4
;
e. (Runda 1): for j 0 to 19 do
t ((A << 5) +f(B, C, D) +E +X
j
+y
1
);
(A, B, C, D, E) (t, A, B << 30, C, D);
f. (Runda 2): for j 20 to 39 do
t ((A << 5) +h(B, C, D) +E +X
j
+y
2
);
(A, B, C, D, E) (t, A, B << 30, C, D);
g. (Runda 3): for j 40 to 59 do
t ((A << 5) +g(B, C, D) +E +X
j
+y
3
);
(A, B, C, D, E) (t, A, B << 30, C, D);
h. (Runda 4): for j 60 to 79 do
t ((A << 5) +h(B, C, D) +E +X
j
+y
4
);
(A, B, C, D, E) (t, A, B << 30, C, D);
i. (H
0
, H
1
, H
2
, H
3
, H
4
) (H
0
+A, H
1
+B, H
2
+C, H
3
+D, H
4
+E);
G
a
(i) = H
0
[[H
1
[[H
2
[[H
3
[[H
4
.
SEAL(a, n) (Generatorul de chei uide pentru SEAL 2.0):
3
Algoritmul SEAL 1.0 este bazat pe funct ia de dispersie SHA, iar SEAL 2.0 pe funct ia SHA1.
8 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE
Intrare: a cheia secreta (160 bit i), n [0, 2
32
) ntreg, L - lungimea solicitata pentru
cheia uida.
Iesire: cheia uida y, [y[ = L

, unde L

este primul multiplu de 128 din [L, ).


1. Se genereaza tabelele T, S, R avand ca elemente cuvinte de 32 bit i.
Fie funct ia F
a
(i) = H
i
i (mod 5)
unde H
i
0
H
i
1
H
i
2
H
i
3
H
i
4
= G
a
(i/5|).
a. for i 0 to 511 do T[i] F
a
(i);
b. for j 0 to 255 do S[j] F
a
(0x00001000 +j);
c. for k 0 to 4 (L 1)/8192| 1 do R[k] F
a
(0x00002000 +k);
2. Descrierea procedurii Initialize(n, l, A, B, C, D, n
1
, n
2
, n
3
, n
4
) cu intrarile n (cuvant)
si l (ntreg). Iesirile sunt A, B, C, D, n
1
, n
2
, n
3
, n
4
(cuvinte).
a.
A n R[4 l], B (n >> 8) R[4 l + 1],
C (n >> 16) R[4 l + 2], D (n >> 24) R[4 l + 3].
b. for j 1 to 2 do
P A 0x000007fc, B B +T[P/4], A (A >> 9),
P B 0x000007fc, C C +T[P/4], B (B >> 9),
P C 0x000007fc, D D +T[P/4], C (C >> 9),
P D 0x000007fc, A A +T[P/4], D (D >> 9),
(n
1
, n
2
, n
3
, n
4
) (D, A, B, C);
P A 0x000007fc, B B +T[P/4], A (A >> 9),
P B 0x000007fc, C C +T[P/4], B (B >> 9),
P C 0x000007fc, D D +T[P/4], C (C >> 9),
P D 0x000007fc, A A +T[P/4], D (D >> 9),
3. l 0, y (sirul vid);
4. repeat
a. Initialize(n, l, A, B, C, D, n
1
, n
2
, n
3
, n
4
);
b. for i 1 to 64 do
P A 0x000007fc, B B +T[P/4], A (A >> 9), B B A;
Q B 0x000007fc, C C +T[Q/4], B (B >> 9), C C B;
P (P +C) 0x000007fc, D D+T[P/4], C (C >> 9), D DC;
Q (Q+D) 0x000007fc, A A+T[Q/4], D (D >> 9), A AD;
P (P +A) 0x000007fc, B B +T[P/4], A (A >> 9);
Q (Q+B) 0x000007fc, C C +T[Q/4], B (B >> 9);
4.2. EXEMPLE DE SISTEME FLUIDE DE CRIPTARE 9
P (P +C) 0x000007fc, D D +T[P/4], C (C >> 9);
Q (Q+D) 0x000007fc, A A +T[Q/4], D (D >> 9);
y y[[(B +S[4 i 4])[[(C S[4 i 3])[[(D +S[4 i 2])[[(A S[i 1]).
if [y[ L then return(y) STOP
else if i (mod 2) = 1 then (A, C) (A +n
1
, C +n
2
)
else (A, C) (A +n
3
, C +n
4
)
c. l l + 1.
Observat ia 4.2 ([1])

In majoritatea aplicat iilor pentru SEAL 2.0 se foloseste L 2
19
.
Algoritmul funct ioneaza si pentru valori mai mari, dar devine inecient deoarece creste
mult dimensiunea tabelei R. O varianta este concatenarea cheilor uide SEAL(a, 0)[[
SEAL(a, 1)[[SEAL(a, 2)[[ . . . Deoarece n < 2
32
, se pot obt ine astfel chei uide de lungimi
pana la 2
51
, pastrand L = 2
19
.
4.2.2 RC4
Sistemul RC4 (Rivest Code #4) a fost creat n 1987 de Ron Rivest pentru societatea RSA
Data Security Inc (astazi RSA Security). Destinat scopurilor comerciale, el a fost secret,
ind accesibil numai dupa semnarea unui protocol de condent ialitate.

In septembrie 1994
nsa, un anonim publica codul sau sursa pe o lista de discut ii, dupa care se raspandeste
rapid starnind o serie de polemici referitor la drepturile intelectuale. Se considera ca astazi
exista mai multe implementari ilegale.
RC4 este un sistem aditiv uid de criptare.
Printre sistemele care folosesc RC4 se pot aminti SQL (Oracle), Lotus Notes, AOCE
(Apple Computer), WEP WPA CipherSaber Secure Sockets Layer (opt ional) sau Secure
shell (opt ional)
4
RC4 este utilizat pentru criptarea sierelor n protocoale cum ar RSA
SecurPC saun standarde de comunicat ii (WEP, WPA pentru carduri, criptarea tracului
de date sau a site-urilor de web bazate pe protocolul SSL). De asemenea, el face parte
din Cellular Digital Packet Data specication.
La acest sistem, pentru generarea cheii uide se foloseste o stare interna (secreta)
formata din doua componente:
Un tablou de 256 octet i: S[0], S[1], . . . S[255], numit S box.
Doi pointeri de cate 8-bit i (notat i i respectiv j).
S boxul este init ializat cu o cheie de lungime variabila de obicei ntre 40 si 256
bit i, folosind un algoritm numit KSA (key-sheduling algorithm).

In faza a doua, cheia uida este generata folosind algoritmul PRGA (pseudo-random
generation algorithm).
4
Cand un sistem de criptare este marcat opt ional, nsemna ca el este una din variantele oferite pentru
implementare.
10 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE
Algoritmul PRGA de generare a cheii uide
i
j
+
? ?
?
666
?-
?
6

?
S
0 1 2 S[i]+S[j] 254 255
K
. . . . . . . . . . . .
Cont inuturile S[i] si S[j] (unde i, j sunt date de cei doi pointeri) se aduna modulo 256,
iar octetul K de la adresa S[i] + S[j] este introdus n cheia uida.

In plus cei doi octet i
sunt interschimbat i.
Procedeul este reluat atat timp cat este nevoie. La ecare reluare starea celor doi
pointeri se modica (i este incrementat cu 1 iar j este incrementat cu S[i]).

In acest fel,
orice locat ie din S box este modicata cel put in odata ;a 256 iterat ii.
Formal:
i := 0
j := 0
while GeneratingOutput:
i := (i + 1) mod 256
j := (j + S[i]) mod 256
swap(S[i],S[j])
output S[(S[i] + S[j]) mod 256]
Algoritmul KSA de init ializare
KSA este utilizat pentru init ializarea S boxului. Fie n (1 n 255) numarul de
octet i din cheie
5
. Init ial n S se introduce permutarea identica. Ulterior se realizeaza 256
transpozit ii. Formal
for i from 0 to 255 do S[i] := i
j := 0
for i from 0 to 255 do
j := (j + S[i] + key[i mod n]) mod 256
swap(S[i],S[j])
Implementarea sistemului RC4 este foarte simpla: ea lucreaza cu octet i si necesita
256 pentru S box, n octet i de memorie pentru cheie, plus trei variabile ntregi i, j, k.
Operat iile folosite sunt XOR si AND (sau pe unele platforme simpla adunare pe bit i,
fara transport).
5

In majoritatea implementarilor n este n intervalul [5, 16].


4.3. EXERCIT II 11
Securitatea RC4
Conform cu Bruce Schneier ([2]), sistemul are circa 256! 256
2
= 2
1700
stari posibile; el
este rezistent la criptanaliza diferent iala si liniara, iar ciclurile sunt mai mari de 10.100.
Totusi, securitatea RC4 este slaba din mai multe puncte de vedere si criptograi nu
recomanda sistemul pentru aplicat iile actuale.
Cheia uida generata are o usoara preferint a pentru anumite secvent e de octet i.
Aceasta a permis construirea unui atac (Fluhrer si McGrew), care separa cheia uida
dintr-o secvent a aleatoare de maxim 1 GB.

In 2001, Fluhrer, Mantin si Shamir descopera ca din toate cheile RC4 posibile, primii
octet i de iesire nu sunt aleatori, oferind informat ii importante despre cheie.
La majoritatea sistemelor de criptare, o masura de securitate ncesara este alegerea
unui numar aleator nou
6
care sa e folosit pentru criptarea ecarui mesaj.

In acest fel,
criptarea de doua ori a aceluiasi mesaj va genera texte diferite. O solute sigura (care
funct ioneaza pentru orice sistem de criptare) este de a folosi o cheie pe termen lung din
care, prin amestec cu un nonce (dupa un algoritm prestabilit) se obt ine cheia necesara
unei criptari. Multe aplicat ii nsa care folosesc RC4 fac o simpla concatenare a cheii cu
nonce. Aceasta slabiciune este exploatata de Fluhrer, Mantin si Shamir pentru a sparge
ulterior sistemul de criptare WEP (wired equivalent pruvacy) folosit pe ret elele fara r
802.11.
Ulterior implementarile sistemului RC4 s-au aparat eliminand primii octet i (uzual
1024) din cheia uida, nainte de a o folosi.
4.3 Exercit ii
1. Construit i coduri de autenticare a mesajelor (MAC) capabile sa autentice mesajele
primite printr-un sistem uid de criptare. (Indicat ie: a se vedea [1], paragraf 9.5.4)
2. Presupunem ca denim o cheie uida ntr-un sistem sincronizabil n felul urmator:
Fie K /, L un alfabet al cheilor si o mult ime nita de stari. Se deneste o
stare init iala q
0
. Apoi, pentru i 1, se deneste recursiv
q
i
= f(q
i1
, K)
unde f : / . De asemenea, i 1, elementul z
i
din cheia uida este denit
prin
z
i
= g(q
i
, K)
unde g : / L. Aratat i ca orice cheie uida rezultata n acest mod are o
perioada de lungime maxim [[.
6
Un astfel de numar poarta numele de nonce (new number)
12 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE
Bibliograe
[1] Menezes, Oorschot, Vanstome - Handbook of applied cryptography, 1997
[2] Schneier, B. - Applied Cryptography, John Wiley & Sons, second edition, 1997
[3] Stinton, D. Cryptography, Theory and Practice, Chaptan & Hall/CRC, second edi-
tion 2002
13
Prelegerea 5
Sistemul de criptare DES
5.1 Considerat ii generale

In mai 1973, Biroul Nat ional de Standarde din SUA a lansat n Registrul Federal (jurnalul
ocial al guvernului) un apel la construirea unui sistem de criptare ocial care sa se
numeasca Data Encryption Standard (DES). Firma IBM a construit acest sistem
publicat n Registrul Federal la 17 martie 1975, modicand un sistem de criptare mai
vechi, numit Lucifer. Dupa dezbateri publice, DES a fost adoptat ocial la 17 ianuarie
1977 ca standard de criptare. De atunci, el a fost re-evaluat la ecare 5 ani, ind n acest
moment cel mai popular sistem de criptare cu cheie simetrica. Spargerea sa n iulie 1998
a coincis (ntamplator ?) cu durata sa ociala de utilizare.
5.2 Descrierea sistemului DES
Sistemul DES cripteaza un bloc de text clar de 64 bit i ntr-un text criptat tot de 64 bit i,
utilizand o cheie de 56 bit i. Algoritmul cuprinde 3 etape:
1. Fie textul clar init ial, de 64 bit i. Lui i se aplica o permutare IP init iala xata,
obt in andu-se
0
= IP() = L
0
R
0
. L
0
este format din primii 32 bit i ai lui
0
, iar
R
0
din ultimii 32 bit i.
2. Se efectueaza 16 iterat ii (tururi) ale unei funct ii care se va preciza. La ecare tur
se calculeaza L
i
R
i
(1 i 16) dupa regula
L
i
= R
i1
R
i
= L
i1
f(R
i1
, K
i
)
unde este sau - exclusiv (XOR) a doua secvent e binare. f este o funct ie care se
va preciza, iar K
1
, K
2
, . . . , K
16
sunt secvent e de 48 bit i calculat i din cheia K. Se
spune ca K
1
, K
2
, . . . , K
16
sunt obt inut i prin diversicarea cheii (key shedule).
1
2 PRELEGEREA 5. SISTEMUL DE CRIPTARE DES
3. Blocului R
16
L
16
i se aplica inversa permutarii init iale pentru a obt ine textul criptat
= IP
1
(R
16
L
16
).
Observat ia 5.1 Sistemul de ecuat ii care denesc criptarea la ecare tur poate inversat
imediat pentru a obt ine ecuat iile tururilor de decriptare. Acestea sunt:
R
i1
= L
i
, L
i1
= R
i
f(L
i
, K
i
)
Funct ia de criptare f(A, J) are ca argumente doua secvent e binare: una de 32 bit i,
iar a doua de 48 bit i. Rezultatul este o secvent a de 32 bit i. Etapele de calcul ale funct iei
sunt:
1. Argumentul A este extins la 48 bit i folosind o funct ie de expansiune E. E(A)
cuprinde bit ii lui A asezat i ntr-o anumita ordine, unii bit ii ind scrisi de doua ori.
2. Se calculeaza B = E(A) J; rezultatul se descompune n 8 subsecvent e de cate 6
bit i ecare: 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
2
, . . . , S
8
, ecare din ele ind un tablou de dimensiuni
4 16 cu elemente numere ntregi din intervalul [0, 15]. Pentru o secvent a B
j
=
b
1
b
2
b
3
b
4
b
5
b
6
se calculeaza un sir de 4 bit i S
j
(B
j
) astfel: bit ii b
1
b
6
dau reprezentarea bi-
nara a indicelui unei linii r (0 r 3) din S
j
; ceilalt i bit i b
2
b
3
b
4
b
5
dau reprezentarea
binara a indicelui unei coloane c (0 c 15) din tablou. Atunci C
j
= S
j
(B
j
) =
[S
j
(r, c)]
2
(1 j 8). ([x]
2
este reprezentarea n baza 2 a numarului ntreg x).
4. Secvent a C = C
1
C
2
C
3
C
4
C
5
C
6
C
7
C
8
de lungime 32 se rearanjeaza folosind o
permutare xata P. Rezultatul nal este f(A, J) = P(C).
Mai ramane sa specicam funct iile particulare folosite de sistemul DES:
Permutarea init iala IP este:
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
Permutarea inversa IP
1
este:
5.2. DESCRIEREA SISTEMULUI DES 3
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
Funct ia de expansiune E este denita de tabloul:
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
Cele opt cutii S (S-boxes) sunt:
S
1
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
S
2
15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
S
3
10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
S
4
7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
4 PRELEGEREA 5. SISTEMUL DE CRIPTARE DES
S
5
2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
S
6
12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
S
7
4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
S
8
13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
Permutarea xata P este:
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
Mai ramane de prezentat procesul de diversicare al cheii K. De fapt, K este o secvent a
de 64 bit i, din care 56 denesc cheia, iar 8 (bit ii de pe pozit iile 8, 16, 24, . . . , 64) sunt bit i
de paritate, aranjat i n asa fel ncat ecare octet sa cont ina un numar impar de 1. Acesti
8 bit i sunt ignorat i n procesul de diversicare.
1. Din cheie se elimina bit ii de paritate, iar asupra celorlalt i se aplica o permutare
PC
1
, obt inandu-se PC
1
(K) = C
0
D
0
(C
0
sunt primii 28 bit i din secvent a, iar D
0

ceilalt i 28 bit i). Permutarea PC
1
este
5.3. CONTROVERSE LEGATE DE DES 5
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
2. Pentru i = 1, 2, . . . , 16 se calculeaza
C
i
= LS
i
(C
i1
)
D
i
= LS
i
(D
i1
)
si K
i
= PC
2
(C
i
D
i
). LS
i
este o rotat ie circulara la stanga cu una sau doua pozit ii,
n funct ie de valoarea lui i: o pozit ie daca i = 1, 2, 9, 16, altfel rotirea este de doua
pozit ii. Permutarea PC
2
este:
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
Decriptarea se realizeaza plecand de la textul criptat si utilizand acelasi algoritm, n
ordine inversa; se vor folosi n ordine cheile K
16
, . . . , K
1
.
5.3 Controverse legate de DES

Inca de la lansarea sa, DES a fost supus la numeroase critici. O prima obiect ie a fost
folosirea cutiilor S. Toate calculele din DES sunt liniare, cu except ia cutiilor. Deci, de
fapt toata securitatea sistemului se bazeaza pe acestea. Dar, nimeni (cu except ia autorilor)
nu stie cum sunt concepute cutiile. Multe persoane sunt convinse ca ele ascund diverse
trape secrete care permit celor de la Agent ia nat ionala de securitate (NSA - serviciul
american care raspunde de chestiunile legate de criptograe) sa decripteze orice mesaj.
Ca urmare, NSA arma n 1976 ca S - cutiile au fost construite pe baza urmatoarelor
criterii:
1. Fiecare linie este o permutare a numerelor 0, . . . , 15;
6 PRELEGEREA 5. SISTEMUL DE CRIPTARE DES
2. Nici o cutie nu este o funct ie liniara sau ana;
3. Modicarea unui bit din operand, o S - cutie provoaca modicarea cel put in a doi
bit i din rezultat;
4. Pentru ecare cutie S si (secvent a de lungime 6), S() si S( 001100) difera
prin cel put in doi bit i.
Alte doua proprietat i au fost ment ionate ca ind consecint e ale criteriilor de construct ie:
5. Pentru orice cutie S si orice , S() = S( 11ab00), oricare ar a, b {0, 1};
6. Pentru orice cutie S, daca un bit din operand este ment inut constant si se urmarste
un bit al rezultatului, numarul de valori care produc 0 este apropiat de numarul
de valori care produc 1.

Intr-adevar, daca bitul xat este unul din cei doi bit i care
determina linia cutiei S, exista conform criteriului 1. 16 valori care produc 0 si
16 valori care produc 1; pentru ceilalt i bit i, aceasta nu este adevarat, dar numarul
de valori care produc 0 (sau 1) este cuprins totdeauna ntre 13 si 19.
Nici un alt criteriu referitor la S - cutii nu a mai fost recunoscut public.
Cea mai pertinenta critica referitoare la DES se refera la marimea prea mica (numai
2
56
) a spat iului cheilor. Ca urmare s-au conceput numeroase masini dedicate atacurilor
cu text clar cunoscut, care sa caute cheia. Fiind dat un text clar de 64 bit i si textul
sau criptat , se verica toate cheile posibile K pana se obt ine e
K
() = (de remarcat
ca solut ia exista totdeauna, dar nu este unica).
5.4 Moduri de utilizare ale DES -ului

In istoria sa, sistemul de criptare DES a cunoscut patru moduri de utilizare, moduri
extinse ulterior si la alte sisteme:
Modul ECB (Electronic Codebook Mode) corespunde metodei descrise anterior: ind
dat un text clar x =
1

2
. . ., ecare bloc
i
de 64 bit i este criptat cu cheia K dupa
formula

i
= e
K
(
i
), (i 1)
procedeul conducand la textul criptat y =
1

2
. . .


In modul CBC (Cypher Block Chaining Mode), ecare bloc de text criptat
i
este
combinat printr-un XOR () cu textul clar urmator
i+1
, nainte de criptarea
acestuia. Operat ia decurge conform schemei:
5.4. MODURI DE UTILIZARE ALE DES -ULUI 7

1
e
K
e
K

2
j j

1

2
V I =
0
+ +
Criptare
-
?
?
?
-
6
-
?
?
?
-
6
-. . .

1

2
j j
d
K
d
K

1

2
V I =
0
-
?
?
?
-
?-
?
?
?
-
?-
+ +
. . .
Decriptare
Se deneste un bloc cu valoarea init iala V I =
0
, dupa care blocurile se cripteaza
dupa formula

i
= e
K
(
i1

i
), (i 1)
Modurile OFB si CFB sunt construite conform sistemelor de criptare uide: se
genereaza ntai cheia uida, care se combina apoi cu textul clar. OFB (Output
Feedback Mode) este o criptare sincronizabila aditiva: componentele cheii uide
sunt obt inute prin criptarea iterativa a unui bloc init ial V I de 64 bit i; se deneste

0
= V I si se calculeaza
1
,
2
, . . . dupa formula

i
= e
K
(
i1
), (i 1)
Secvent a blocurilor de text clar x =
1
,
2
, . . . este criptata apoi aditiv conform
relat iei

i
=
i

i
, (i 1)


In modul CFB (Cypher Feedback Mode) se ncepe cu
0
= V I (bloc init ial de 64
bit i) si se calculeaza cheia uida
i
criptand din nou blocul de text criptat obt inut
anterior:

i
= e
K
(
i1
), (i 1)
. Ca si la modul OFB, n etapa a doua avem

i
=
i

i
, (i 1)
De remarcat ca funct ia de criptare e
K
este folosita aici atat la procesul de criptare
cat si la cel de decriptare.

e
K V I =
0

1
e
K

2
- -
?
?
-
6
- -
?
?
-
6
-
+ +
Criptare
. . .

e
K V I =
0

1
e
K

al
2

2
- -
?
?
-
? - -
?
?
-
? -
+ +
Decriptare
. . .
Desi metoda prezentata a fost descrisa pentru blocuri de marime 64, modurile OFB
si CFB pot extinse la blocuri de k bit i (1 k 64).
8 PRELEGEREA 5. SISTEMUL DE CRIPTARE DES
Cele patru moduri de utilizare prezinta diverse avantaje si dezavantaje. Astfel, la
ECB si OFB, modicarea unui bloc de text clar
i
provoaca modicarea unui singur
bloc de text criptat,
i
.

In anumite situat ii, acest fapt constituie un defect. Modul OFB
este utilizat adesea pentru transmisiile prin satelit.

In modurile CBC si CFB dimpotriva, modicarea unui bloc


i
de text clar antreneaza
modicari n toate blocurile de texte criptate, ncepand cu
i
. De aceea, aceste moduri
sunt adaptate n particular problemelor de autenticare a mesajelor (MAC - Message
Authentication Code). Un MAC este adaugat la un text clar cu scopul de a-l convinge
pe Bob ca textul primit a fost scris de Alice si nu a fost alterat de Oscar. El garanteaza
astfel integritatea (sau autenticitatea) mesajului, dar nu si condent ialitatea sa.
Sa descriem cum este utilizat modul CBC la construct ia unui MAC. Se pleaca de la
blocul init ial V I n care tot i bit ii sunt 0. Se construieste textul criptat
1
,
2
, . . . ,
n
cu cheia K, n modul CBC, iar MAC este blocul
n
. Alice va transmite mesajul

1
,
2
, . . . ,
n
, asociat cu MAC-ul
n
. Cand Bob primeste mesajul
1
,
2
, . . . ,
n
, el
genereaza
1
, . . . ,
n
folosind cheia (secreta) K si verica daca
n
este identic cu mesajul
MAC primit.
De remarcat ca Oscar nu poate construi un MAC deoarece nu cunoaste cheia K
utilizata de Alice si Bob; orice modicare a mesajelor clare este depistata astfel usor.
Se poate realiza si o combinare a integritat ii cu condent ialitatea, n felul urmator:
Alice utilizeaza cheia K
1
pentru a calcula un MAC bazat pe
1
, . . . ,
n
; e
n+1
acest
MAC. Apoi, ea cripteaza mesajul
1
, . . . ,
n+1
n
1
, . . . ,
n+1
folosind o a doua cheie
K
2
. Cand Bob primeste mesajul, el decripteaza n prima faza (cu cheia K
2
), apoi verica
cu cheia K
1
daca
n+1
este MAC-ul lui
1
, . . . ,
n
.
Sau ca alta varianta Alice poate utiliza K
1
pentru criptarea mesajului
1
, . . . ,
n
;
apoi, pentru
1
, . . . ,
n
determina MAC-ul
n+1
folosind cheia K
2
. Bob va face ntai ver-
icarea corectitudinii data de MAC si daca totul este n ordine va trece la decriptare.
5.5 Sisteme de criptare nrudite cu DES
5.5.1 Triplu DES (3DES)
Triplu DES (cunoscut si sub numele 3DES sau mai rar DES ede) este un sistem
derivat din DES, propus de Walter Tuchman (seful echipei IBM care a construit DES).
Numele ocial este FIPS Pub 46 3.
Formal, 3DES este denit prin formula
c = DES
k
3
(DES
1
k
2
(DES
k
1
(m))).
unde:
m este un bloc de text clar (64 bit i),
5.5. SISTEME DE CRIPTARE

INRUDITE CU DES 9
e este blocul de text criptat rezultat,
k
1
, k
2
, k
3
sunt chei DES (de 56 bit i),
DES
k
: criptarea DES cu cheia k,
DES
1
k
: decriptarea DES cu cheia k.
Introducerea la pasul 2 a decriptarii nu afecteaza securitatea algoritmului. Avantajul
consta n utilizarea pentru 3DES a unei implementari de DES (astfel, cele doua sisteme
pot inter-opera).
Uneori dar destul de rar se foloseste pentru Triplu DES o criptare n lant de trei
criptari DES (numita si DES eee):
c = DES
k
3
(DES
k
2
(DES
k
1
(m))).
Utilizarea a trei pasi (ede sau eee) este esent iala pentru protejarea contra unui atac de
tipul meet-in-the-middle.

In cazul unei duble criptari, acest atac este destul de ecient.

Intr-adevar, sa consideram un sistem de criptare bloc unde marimea cheii este n. O


criptare dubla cu doua chei diferite va folosi de fapt o cheie de lungime 2n. Pentru un
text clar dat m, sa presupunem ca putem stoca e
K
(m), pentru toate cheile K posibile.
Fie x un text criptat dupa formula x = e
k
2
(e
k
1
(m)), unde cheile k
1
si k
2
sunt secrete.
Pentru ecare cheie p exista o cheie unica q astfel ca d
p
(x) = e
q
(m).

In particular exista
exact 2
n
chei posibile determinate de perechea (m, x), chei care pot gasiten aproximativ
O(2
n
) pasi.
Daca numarul cheilor care pot stocate este de ordinul 2
p
< 2
n
, algoritmul poate
modicat pentru a aa toate cheile posibile n circa O(2
2np
) pasi.
Observat ia 5.2 Pentru oricare din situat iile
k
1
= k
2
, k
2
= k
3
, k
1
= k
2
= k
3
,
DES ede se reduce la un simplu DES, lucru utilizat frecvent pentru a verica
compatibilitatea.
Cheia pentru Triplu DES are 3 56 = 168 bit i, la care se adauga 3 8 = 24 bit i de
paritate; n total sunt 192 bit i.
O varianta, numita 3DES cu doua chei foloseste k
1
= k
3
; aici marimea de stocare
a cheii va de numai 128 bit i (din care 16 bit i de paritate). Acest mod este nsa sensibil
la anumite atacuri cu text clar ales, propuse de Merkle si Hellman (1981) si mai tarziu
de Van Oorschot si Wiener (1991).
Sistemul de criptare 3DES nu este nca spart, dar utilizarea sa este ngreunata din
cauza vitezei mici de criptare. Totusi multe sisteme continua sa foloseasca 3DES; ca
exemple mai recente sunt cardurile bancare (Mastercard si part ial Visa) care din 2002
sunt congurate pe baza acestui sistem de criptare. De asemenea, sistemul de telefonie
mobila Zapp are ca sistem de criptare 3DES.
10 PRELEGEREA 5. SISTEMUL DE CRIPTARE DES
5.5.2 DES X
DES X (sau mai simplu DESX) este o varianta a sistemului de criptare DES,
dezvoltata pentru a rezista mai bine unui atac prin fort a bruta.
Dupa cum am vazut, sistemul DES opereaza cu o cheie de 56 bit i; deci sunt numai
2
56
chei posibile, unele din acestea ind chei slabe
1
Pentru a evita un atac direct, in mai
1984 Rivest propune cresterea marimii cheii K fara a modica substantal algoritmul.
DESX foloseste doua chei suplimentare K
1
, K
2
de cate 64 bit i si efectueaza criptarea
unui bloc de text clar x dupa formula
DESX
K,K
1
,K
2
(x) = K
2
DES
K
(x K
1
)
Marimea cheii creste deci la 56 + 2 64 = 184 bit i.
5.5.3 IDEA
Prima aparit ie a sistemului IDEA are loc n 1990, sub denumirea PES (Proposed En-
cryption Standard). Deoarece n acelasi an, Biham si Shamir publica sistemul de atac
al DES-ului prin criptanaliza diferent iala, n 1991 autorii (Xuejia Lai si James Massey)
modica sistemul de criptare pentru a rezista acestui gen de atac. Noul sistem este numit
IPES (Improved Proposed Encryption Standard), nume care n 1992 se schimba n IDEA
(International Data Encryption Standard Algorithm).

In opinia lui Bruce Schneider, n 1996 IDEA constituia cel mai sigur sistem de criptare
utilizabil fara restrict ii. Este o componenta a sistemului de securitate prin posta elec-
tronica PGP, unde asigura criptarea datelor.
Sistemul este foarte asemanator cu DES. Astfel, el este un sistem simetric care
opereaza cu blocuri de texte clare de 64 bit i, folosind o cheie de 128 bit i.
Textul clar de 64 bit i este despart it n 4 sublocuri X
1
, X
2
, X
3
, X
4
, de cate 16 bit i
ecare. Aceste patru componente formeaza intrarea la prima runda a algoritmului.

In
total sunt 8 runde, care folosesc operat iile de adunare, nmult ire (modulo 2
16
) si XOR;
toate pe 16 bit i. De asemenea sunt implicate si 16 subchei a cate 16 bit i ecare.

Intre
runde, subblocurile 2 si 3 sunt schimbate ntre ele. Dupa runda 8, cele patru subblocuri
sunt combinate cu 4 subchei, formand iesirea.
O runda cont ine 14 operat ii, anume:
1
DES are 4 chei slabe K pentru care e
K
(e
K
(x)) = x. Mai exista 12 chei semi-slabe asociate n
perechi (K
1
, K
1
) pentru care e
K
1
(e
K
2
(m)) = m. Posibilitatea ca printr-o alegere aleatoare a cheii sa
se obt ina o cheie slaba sau semi-slaba este deci 2
52
. Mult i utilizatori solicita un test pentru depistarea
chilor slabe, test care nu afecteaza semnicativ timpul de criptare.
5.5. SISTEME DE CRIPTARE

INRUDITE CU DES 11
1. Se nmult este X
1
cu prima subcheie;
2. Se aduna X
2
cu a doua subcheie;
3. Se aduna X
3
cu a treia subcheie;
4. Se nmult este X
4
cu a patra subcheie;
5. Ce s-a obt inut la pasii 1 si 3 se combina prin XOR;
6. Ce s-a obt inut la pasii 2 si 4 se combina prin XOR;
7. Se nmult este rezultatul pasului 5 cu subcheia 5;
8. Se aduna rezultatele pasilor 6 si 7;
9. Se nmult este rezultatul pasului 8 cu subcheia 6;
10. Se aduna rezultatele pasilor 7 si 9;
11. Ce s-a obt inut la pasii 1 si 9 se combina prin XOR;
12. Ce s-a obt inut la pasii 3 si 9 se combina prin XOR;
13. Ce s-a obt inut la pasii 2 si 10 se combina prin XOR;
14. Ce s-a obt inut la pasii 4 si 10 se combina prin XOR.
Rezultatele pasilor 11, . . . , 14 formeaza iesirea dintr-o runda; cele patru subblocuri (dupa
ce subblocurile doi si trei sunt interschimbate) formeaza intrarea n runda urmatoare.
Dupa ultima runda, are loc o transformare nala:
1. Se nmult este X
1
cu prima subcheie;
2. Se aduna X
2
cu a doua subcheie;
3. Se aduna X
3
cu a treia subcheie;
4. Se nmult este X
4
cu a patra subcheie.
Cela patru subblocuri obt inute n nal formeaza textul criptat.
Prelucrarea subcheilor se face dupa urmatorul algoritm:
1. Cheia de 128 bit i este desfacuta n 8 subchei a cate 16 bit i ecare;
2. Primele 6 subchei sunt folosite la prima runda, iar urmatoarele doua, la runda
a doua;
3. Cheia este rotita spre stanga cu 25 bit i si se desface din noun 8 subchei, folosite
la rundele 2 si 3 (cate patru subchei);
4. Se repeta pasul 3 cat timp este necesar.
Operat ia de decriptare se realizeaza urmand aceeiasi pasi, cu singura diferent a ca subcheile
se introduc n ordine inversa.
Comparativ cu DES, IDEA prezinta unele avantaje. Astfel, implementarile realizate
permit o viteza dubla de criptare n IDEA fat a de DES.
Lungimea cheii (128) bit i, asigura o securitate sporita la atacurile brute: pentru a
gasi cheia prin ncercari, ar necesare cam 2
128
teste; deci cu un chip care testeaza un
miliard de chei pe secunda, ar trebui cam 10
13
ani o perioada mai lunga decat varsta
Pamantului.
12 PRELEGEREA 5. SISTEMUL DE CRIPTARE DES
Autorii au armat (fara sa demonstreze) ca IDEA rezista atacurilor prin criptanaliza
diferent iala. Un studiu al subcheilor a aratat ca exista unele chei slabe, care permit sparg-
erea sistemului de criptare ntr-un timp mai scurt. O asigurare contra alegerii (aleatoare)
a acestor chei slabe ar completarea algoritmului de generare a subcheilor prin operarea
ecarei subchei generate printr-un XOR cu 0x0D, unde x este o cifra hexazecimala
aleasa aleator.
5.5.4 NEW DES
NEWDES a fost creat n 1985 de Robert Scott, ca un posibil nlocuitor al sistemului
DES. Algoritmul nu este o varianta a DES-ului (cum s-ar putea nt elege din numele
sau, ales destul de nefericit). El opereaza cu texte clare grupate n blocuri de 64 bit i, dar
cheia are lungimea 120 bit i. Ca o simplicare, aici nu vom avea permutare init iala si nici
nala.
Blocul unui text clar este spart n 8 subblocuri de cate 8 bit i: B
0
, B
1
, . . . , B
7
. Aceste
subblocuri trec prin 17 runde, ecare runda avand 8 pasi.
Cheia este mpart ita n 15 subchei K
0
, K
1
, . . . , K
14
. Procedeul de criptare este descris
destul de clar de schema urmatoare:
f
f
f
f
f
f
f
f
j j
j j
j j
j j
j j
j j
j j
j j

?
-
-
-
- -
-
?
-
-
?
- -
-
?
- -
-
?
- -

?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

B
0
B
1
B
2
B
3
B
4
B
5
B
6
B
7
K
0
K
1
K
2
K
3
K
4
K
5
K
6
Runda 1
Runda 2
Rundele 3 15
5.6. EXERCIT II 13
f
f
f
f
f
f
f
f
j
j
j
j
j
j
j
j j
j
j
j
j
j
j
j -
-
?
- -
6666
-
-
?
- -
-
-
?
- -
-
-
?
- -

?

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
K
8
K
9
K
10
B
7
B
6
B
5
B
4
B
3
B
2
B
1
B
0
K
14
K
13
K
12
K
11
Runda 16
Runda 17
5.6 Exercit ii
5.1 Sa se arate ca procesul de decriptare folosind DES se realizeaza folosind tot sistemul
de criptare, dar inversand ordinea de aplicare a subcheilor.
5.2 Sa notam DES(, K) textul criptat cu cheia K. Daca = DES(, K) si

=
DES(c(), c(K)), unde c(i
1
i
2
. . . i
n
) = i
n
i
n1
. . . i
1
, sa se arate ca

= c().
5.3 O modalitate de a ntari sistemul de criptare DES consta n dubla-rea criptarii:
ind date doua chei K, K

, se deneste = e
K
2
(e
K
1
()). Daca e
K
2
= d
K
1
, cheile K
1
si K
2
se numesc duale (si atunci = ). O cheie este auto-duala daca este propria sa
duala.
1. Sa se arate ca daca C
0
are tot i bit ii identici si la fel D
0
, atunci K este auto-duala.
2. Sa se arate ca urmatoarele chei (scrise n hexazecimal) sunt auto-duale:
0101010101010101; FEFEFEFEFEFEFEFE;
1F1F1F1F1F1F1F1F; E0E0E0E0E0E0E0E0.
3. Sa se arate ca daca C
0
= 0101 . . . 01 sau C
0
= 1010 . . . 10, atunci
C
i
XOR C
17i
= 1 . . . 1; D
i
XOR D
17i
= 1 . . . 1 (1 i 16).
4. Sa se arate ca urmatoarele perechi de chei sunt duale:
E001E001F101F101, 01E001E001F101F1;
FE1FFE1FFE0EFE0E, 1FFE1FFE0EFE0EFE;
E01FE01FFF10FF10, 1FE01FE00EF10EF1.
14 PRELEGEREA 5. SISTEMUL DE CRIPTARE DES
5.4 Se poate deni un cod de autenticare al mesajului (MAC) utilizand un mod CFB
sau CBC. Fiind data o secvent a de blocuri
1
,
2
, . . . ,
m
de texte clare, de deneste val-
oarea init iala IV =
1
. Criptarea lui
2
, . . . ,
n
cu cheia K n modul CFB da
1
, . . . ,
n1
(sunt numai n 1 blocuri de text criptat). Se deneste MAC ca ind e
K
(
n1
). Sa se
arate ca el coincide cu rezultatul MAC dat n prelegere, cu modul CBC.
5.5 Daca o secvent a de texte clare
1
,
2
, . . . ,
n
produce prin criptare
1
,
2
, . . . ,
n
, iar
blocul
i
este transmis gresit (apar erori de canal), sa se arate ca numarul de blocuri care
vor decriptate gresit este 1 n modul ECB sau OFB si 2 n modul CBC sau CFB.
Prelegerea 6
Modalitat i de atac asupra DES

In aceasta prelegere trecem n revista principalele modalitat i de criptanaliza dezvoltate


cu scopul de a sparge sistemul DES. Ele si-au largit ulterior aria de aplicabilitate, ind
considerate astazi mijloace de atac standard, carora trebuie sa le reziste orice sistem nou
de criptare, pentru a putea luat n considerare.
6.1 Compromisul spat iu - timp al unui atac
Vom studia aici un compromis ntre spat iu si timp ntr-un atac cu text clar ales. Aici
Oscar va dispune de o pereche (, ) cu = e
K
(), si cauta sa determine cheia K.
Nu vom folosi o structura particulara de implementare a sistemului DES; stim numai
ca textele clare si cele criptate sunt de 64 bit i, iar cheia are 56 bit i.
O cautare exhaustiva consta n a ncerca toate cele 2
56
chei posibile. Aceasta operat ie
nu necesita memorie, dar sunt necesare n medie 2
55
chei pentru a o gasi pe cea buna. Sau,
ind dat un text clar , Oscar poate forma anterior un tabel cu 2
56
perechi (
k
, K), astfel
ca
K
= e
K
(), trierea urmand a facuta dupa
K
. Cand Oscar obt ine textul criptat
din textul clar , el va cauta n tabela si va aa imediat cheia K. Astfel, aarea cheii va
necesita un timp de calcul neglijabil (complexitate logaritmica), dar un spat iu de memorie
gigantic si un timp de precalcul important. Aceasta varianta nu aduce nici un avantaj
din punct de vedere al timpului total, pentru aarea unei singure chei. Avantajul apare
atunci cand este necesara cautarea mai multor chei, deoarece atunci tabela precalculata
a fost construita o singura data.
Compromisul spat iu - timp permite obt inerea unui timp de calcul (precalculul nu se
include) inferior celui unei cautari exhaustive, cu un spat iu de memorie inferior celui
necesar ret inerii tuturor cheilor. Algoritmul foloseste o funct ie de reducere R, care reduce
o secvent a de 64 bit i la una de 56 bit i (de exemplu, R poate sterge pur si simplu 8 bit i
din secvent a init iala).
Fie un text clar de 64 bit i; se deneste g(K
0
) = R(e
K
0
()) pentru orice secvent a K
0
1
2 PRELEGEREA 6. MODALIT

AT I DE ATAC ASUPRA DES


de 56 bit i (rezultatul g(K
0
) este de asemenea de lungime 56).
Algoritmul mai foloseste doi parametri ntregi pozitivi m, t.

In faza de precalcul, Oscar
deneste m secvent e arbitrare de 56 bit i ecare, notate X(i, 0), 1 i m. Apoi, folosind
relat ia de recurent a
X(i, j) = g(X(i, j 1)), 1 i m, 1 j t
Oscar determina valorile X(i, j), 1 j t, formand cu ele o matrice X
m

timest
. Din
aceste valori, Oscar pastreaza ntr-o tabela T numai 2m perechi (X(i, 0), X(i, t)) 1 i
m (deci sunt memorate numai prima si ultima coloana a matricii X).

In momentul atacului, Oscar obt ine textul criptat al textului clar ales de el. El
va cauta cheia K n cele t coloane ale matricii X, consultand tabloul T. Sa presupunem
K = X(i, t j) pentru un j (1 j t) dat (K este n una din cele t coloane ale lui X).
Vom avea g
j
(K) = X(i, t), si
g
j
(K) = g
j1
(g(K)) = g
j1
(R(e
K
())) = g
j1
(R()).
Sa calculam sirul
j
(1 j t) denit de relat ia de recurent a

j
=
_
R() daca j = 1
g(
j1
) daca 2 j t
Daca K = X(i, tj), vom avea
j
= X(i, t). De remarcat ca reciproca nu este adevarata:
nu este sucient ca
j
= X(i, t) pentru a avea K = X(i, tj), deoarece funct ia de reducere
R nu este injectiva (R reduce un spat iu de 2
64
n unul de 2
56
valori, deci ecare valoare
provine n general din 2
8
= 256 valori). Trebuie deci vericat ca = e
X(i,tj)
() pentru
a decide ca X(i, t j) este ntr-adevar cheia. Valoarea X(i, t j) nu este disponibila n
memorie, dar ea se poate recalcula n t j pasi, plecand de la X(i, 0).
Oscar va folosi deci urmatorul algoritm:
1.
1
R()
2. for j := 1 to t do
2.1. if i cu
j
= X(i, t) then
2.1.1. calculeaza X(i, t j) = g
tj
(X(i, 0))
2.1.2. if = e
X(i,tj)
() then K X(i, t j), STOP
2.2.
j+1
g(
j
)
Analizand probabilitatea de succes a algoritmului, se poate arata ca daca mt
2
N =
2
56
, atunci probabilitatea ca sa avem cheia K n cele t coloane ale matricii X este de circa
0, 8mt/N. Coecientul 0, 8 provine din faptul ca valorile X(i, t) pot sa nu e distincte. O
sugestie este de a alege m t N
1/3
si de a construi N
1/3
tabele, ecare cu alta funct ie
de reducere R. Astfel, spat iul de memorie necesar este de 112 N
2/3
bit i (trebuie pastrat i
2N
2/3
valori de 56 bit i). Timpul de precalcul este liniar O(N).
6.2. ATACUL MEET-IN-THE-MIDDLE 3
Timpul de calcul al atacului este mai dicil de evaluat. De remarcat ca pasul 2.1
poate implementat n cel mai rau caz ntr-un timp O(log m), utilizand arbori binari de
cautare. Daca acest pas esueaza (deci nu se gaseste nici o valoare), timpul de calcul este
O(N
2/3
). Ceilalt i pasi care urmeaza cresc acest timp doar cu un factor constant.
6.2 Atacul meet-in-the-middle
Este un atac cu text clar ales, dezvoltat n 1981 de Merkle si Hellman ca raspuns la ideea
unei duble criptari cu doua chei diferite, conform schemei
e e
- - -
? ?
m
x
y
K
1
K
2
Lema 6.1 Pentru un sistem de criptare bloc, o dubla criptare poate atacata folosind
O(2
n
) operat ii si O(2
n
) spat iu de memorie, unde n este lungimea cheii.
Demonstrat ie: Fie (m, y) o pereche (text clar, text criptat) obt inuta pe baza schemei de
mai sus.
1. Pentru ecare din cele 2
n
chei posibile se calculeaza x
i
= e
K
i
(m);
2. Se stocheaza (x
i
, K
i
) sortate (sau indexate) dupa x
i
.
3. Pentru ecare din cele 2
n
chei posibile:
(a) Se calculeaza x
j
= d
K
j
(y);
(b) Se cauta in lista creata la pasul anterior o pereche (x
i
, K
i
) cu x
i
= x
j
;
4. O pereche de chei posibile este (K
i
, K
j
);
(deoarece e
K
i
(m) = d
K
j
(y), deci e
K
j
(e
K
i
(m)) = y).
Algoritmul se reia cu alte perechi (m, y), pana ce perechea de chei folosite este determinata
n mod unic.
Exemplul 6.1 Un atac direct asupra unei duble criptari cu DES ar necesita un timp de
ordin 2
112
si un spat iu neglijabil. Daca se foloseste un atac meet-in-the-middle, timpul va
2
56
iar spat iul 2
56
. Strategii complementare de genul compromisului spat iu - timp pot
duce la variante de genul: 2
p
spat iu, 2
q
timp, unde p + q = 112 ([1]).
Vom mai ntalni frecvent acest atac la protocoalele de stabilire a cheilor de sesiune.
4 PRELEGEREA 6. MODALIT

AT I DE ATAC ASUPRA DES


6.3 Criptanaliza diferent iala
Unul din atacurile cele mai cunoscute ale DES-ului este criptanaliza diferent iala, intro-
dusa de Biham si Shamir n 1991. Este un atac cu text clar cunoscut. Cu toate ca nu
da o modalitate practica de spargere a funct iei DES n 16 tururi, ea furnizeaza atacuri
ecace pentru variantele de DES cu un numar redus de runde. De exemplu, un DES cu
8 runde poate spart n cateva minute cu un PC obisnuit.

Intr-un astfel de atac se ignora permutarea init iala IP si inversa sa (ele nu joaca nici
un rol n criptanaliza). Ne vom margini la un DES restrans pe n (n 16) runde. Deci
textul clar este L
0
R
0
si L
n
R
n
textul criptat (vom ignora de asemenea inversarea nala
dintre L
n
si R
n
).
Criptanaliza diferent iala considera doua texte clare L
0
R
0
, L

0
R

0
si textele criptate
corespunzatoare L
n
R
n
respectiv L

n
R

n
. Ea va efectua studii asupra mesajelor L
0

R
0

=
L
0
R
0
L

0
R

0
si L
n

R
n

= L
n
R
n
L

n
R

n
.
Denit ia 6.1 Fie S
j
(1 j 8) o S - cutie din sistemul DES. Pentru orice pereche
(B
j
, B

j
) de siruri de 6 bit i, vom deni XOR-ul de intrare pentru S
j
prin B
j

= B
j
B

j
,
iar XOR-ul de iesire prin S
j
(B
j
) S
j
(B

j
).
De remarcat ca un XOR de intrare este o secvent a de 6 bit i, iar un XOR de iesire este
o secvent a de 4 bit i.
Denit ia 6.2 Pentru orice B
j

Z
6
2
se noteaza (B
j

) mult imea perechilor (B


j
, B

j
) care
prin XOR dau B

j
.
Observat ia 6.1
O mult ime (B
j

) cont ine 2
6
= 64 elemente;
(B
j

) = {(B
j
, B
j
B
j

)| B
j
Z
6
2
}.
Pentru ecare pereche din (B
j

) vom calcula XOR-ul de iesire al lui S


j
si construim
o tabela de distribut ii ale valorilor obt inute (sunt 64 iesiri pe un spat iu de 2
4
= 16 valori
posibile). Pe aceasta tabela se va baza atacul de criptanaliza diferent iala.
Exemplul 6.2 Sa consideram prima S - cutie S
1
si XOR-ul de intrare 110100. Vom
avea:
(110100) = {(000000, 110100), (000001, 110101), . . . , (111111, 001011)}.
Pentru ecare pereche din (110100) vom calcula XOR-ul de iesire al lui S
1
. De exemplu,
S
1
(000000) = E
16
= 1110, S
1
(110100) = 9
16
= 1001 deci XOR-ul de iesire S
1
al perechii
(000000, 110100) este 0111.
Efectuand acest calcul pentru toate cele 64 perechi din (110100), vom obt ine distribu-
t ia urmatoare a XOR-urilor de iesire pentru S
1
:
6.3. CRIPTANALIZA DIFERENT IAL

A 5
0000 0001 0010 0011 0100 0101 0110 0111
0 8 16 6 2 0 0 12
1000 1001 1010 1011 1100 1101 1110 1111
6 0 0 0 0 8 0 6

In Exemplul 6.2 au aparut numai 8 din cele 16 valori de iesire posibile.



In general, daca
se xeaza o S-cutie S
j
si un XOR de intrare diferit de 000000, se constata ca vor apare
numai 75 80 % din valorile posibile de iesire.
Denit ia 6.3 Pentru 1 j 8 si secvent ele B
j

, C
j

de 6 respectiv 4 bit i, denim


IN
j
(B
j

, C
j

) = {B
j
Z
6
2
| S
j
(B
j
) S
j
(B
j
B
j

) = C
j

,
N
j
(B
j

, C
j

) = card(IN
j
(B
j

, C
j

)).
Distribut ia data n Exemplul 6.2 da valorile N
1
(110100, C
1

), C
1

Z
4
2
. Toate aceste
valori se g asesc n Tabelul urmator:
XOR de iesire intrari posibile
0000
0001 000011, 001111, 011110, 011111, 101010, 101011, 110111, 111011
0010 000100, 000101, 001110, 010001, 010010, 010100, 011010, 011011
100000, 100101, 010110, 101110, 101111, 110000, 110001, 111010
0011 000001, 000010, 010101, 100001, 110101, 110110
0100 010011, 100111
0101
0110
0111 000000, 001000, 001101, 010111, 011000, 011101, 100011, 101001
101100, 110100, 111001, 111100
1000 001001, 001100, 011001, 101101, 111000, 111101
1001
1010
1011
1100
1101 000110, 010000, 010110, 011100, 100010, 100100, 101000, 110010
1110
1111 000111, 001010, 001011, 110011, 111110, 111111
Pentru ecare din cele 8 S-cutii exista 64 XOR-uri de intrare posibile; deci n total vor
512 date de distribuit, lucru usor de realizat cu un calculator.
Reamintim ca intrarea ntr-o S-cutie la turul i este B = EJ, unde E = E(R
i1
) este
rezultatul expandarii lui R
i1
, iar J = K
i
este un subsir reordonat al cheii K. XOR-ul
de intrare (al celor 8 cutii) este deci
B B

= (E J) (E

J) = E E

.
6 PRELEGEREA 6. MODALIT

AT I DE ATAC ASUPRA DES


De remarcat ca XOR-urile de intrare nu depind de sub-cheia J, pe cand XOR-urile de
iesire depind.
Sa detaliem pe grupuri de cate 6 bit i, cuvintele cu care se lucreaza;
B = B
1
B
2
B
3
B
4
B
5
B
6
B
7
B
8
, E = E
1
E
2
E
3
E
4
E
5
E
6
E
7
E
8
, J = J
1
J
2
J
3
J
4
J
5
J
6
J
7
J
8

In mod similar se scriu B

si E

. Sa presupunem acum ca se stiu valorile E


j
si E

j
pentru
un j (1 j 8) dat, precum si valoarea XOR de iesire C
j

= S
j
(B
j
) S
j
(B

j
) a lui S
j
.
Vom avea
E
j
J
j
IN
j
(E
j

, C
j

)
unde E
j

= E
j
E

j
.
Sa presupunem ca se deneste mult imea test
j
astfel:
test
j
(E
j
, E

j
, C
j

) = {B
j
E
j
| B
j
IN
j
(E
j

, C
j

)}
(s-au luat toate XOR-urile lui E
j
cu elemente din IN
j
(E
j

, C
j

)). Din aceste considerat ii


rezulta imediat teorema:
Teorema 6.1 Daca E
j
, E

j
sunt subsecvent e construite pentru intrarea n S-cutia S
j
, iar
C
j

este XOR-ul de iesire al lui S


j
, atunci bit ii cheii J
j
apar n mult imea test
j
(E
j
, E

j
, C
j

).
Cum se poate remarca, exista exact N
j
(E
j

, C
j

) secvent e de 6 bit i n test


j
(E
j
, E

j
, C
j

);
valoarea corecta J
j
este una din acestea.
Exemplul 6.3 Sa consideram E1 = 000001, E

1
= 110101, C
1

= 1101. Deoarece
N
1
(110100, 1101) = {000110, 010000, 010110, 011100, 100010, 101000, 110010} are 8 ele-
mente, exista 8 secvent e posibile pentru J
1
, cumulate n test
1
(000001, 110101, 1101) =
{000111, 010001, 010111, 011101, 100011, 100101, 101001, 110011}.
Daca se ia un alt triplet (E
1
, E

1
, C
1

), vom obt ine alt test


1
cu valori pentru J
1
, deci
valoarea corecta se va gasi n intersect ia lor.
6.3.1 Atac pe trei runde
Sa vedem cum se aplica aceste idei pentru un DES construit pe 3 runde. Vom ncepe cu
o pereche de texte clare L
0
R
0
si L

0
R

0
, criptate n L
3
R
3
respectiv L

3
R

3
. Vom avea
R
3
= L
2
f(R
2
, K
3
) = R
1
f(R
2
, K
3
) = L
0
f(R
0
, K
1
) f(R
2
, K
3
).
Construct ia pentru R

3
este similara. Deci
R
3

= L
0

f(R
0
, K
1
) f(R

0
, K
1
) f(R
2
, K
3
) f(R

2
, K
3
).
Sa presupunem ca s-a ales R
0
= R

0
, deci R
0

= 00 . . . 0. Atunci f(R
0
, K
1
) = f(R

0
, K
1
)
si deci R
3

= L
0

f(R
2
, K
3
) f(R

2
, K
3
).
R
3

se poate calcula pe baza textelor criptate, iar L


0

pe baza textelor clare; deci se


poate determina f(R
2
, K
3
) f(R

2
, K
3
) = R
3

L
0

.
6.3. CRIPTANALIZA DIFERENT IAL

A 7
Avem f(R
2
, K
3
) = P(C), f(R

2
, K
3
) = P(C

) unde C respectiv C

sunt iesirile core-


spunzatoare din cele 8 S-cutii (reamintim, P este o permutare xata din descrierea sis-
temului DES). Deci P(C) P(C

) = R
3

L
0
, de unde
C

= C C

= P
1
(R
3

L
0

)
Acesta este XOR-ul de iesire din cele opt S-cutii dupa a treia runda.
R
2
= L
3
si R

2
= L

3
sunt cunoscute (componente ale textelor criptate); deci se poate
calcula
E = E(L
3
), E

= E(L

3
)
folosind funct ia de expansiune E. Aceste valori sunt intrarile n S-cutii la runda a treia.
Se cunosc deci E, E

, C

la a treia runda si se poate trece asa cum am vazut la


construct ia mult imilor test
1
, test
2
, . . . , test
8
de valori posibile pentru J
1
, J
2
, . . . , J
8
.
Un algoritm pentru aceasta metoda este formalizat mai jos. Atacul foloseste mai multe
triplete E, E

, C

. Se utilizeaza opt tabele de valori si se determina astfel cei 48 bit i ai


subcheii K
3
de la a treia runda. Cheia de 56 bit i se calculeaza apoi printr-o cautare
exhaustiva a celor 2
8
= 256 posibilitat i a celor 8 bit i necunoscut i.
Intrare: L
0
R
0
, L

0
R

0
, L
3
R
3
, L

3
R

3
cu R
0
= R

0
.
1. C

P
1
(R
3

L
0

)
2. E E(L
3
), E

E(L

3
)
3. for j := 1 to 8 do test
j
(E
j
, E

j
, C
j
).
6.3.2 Atacul pe sase runde
Sa extindem ideile precedente n cazul unui atac probabilist asupra unui sistem de criptare
DES de 6 runde. Ideea este de a alege o pereche de texte clare cu un XOR bine ales si de
studia comportamentul probabilist al evolut iei acestui XOR de-alungul ntregii operat ii
de criptare. Pentru aceasta este necesar sa introducem o noua not iune.
Denit ia 6.4 Fie n 1 un numar ntreg. O caracteristica de n runde este un sir de
forma
L
0

, R
0

, L
1

, R
1

, p
1
, . . . , L
n

, R
n

, p
n
care verica condit iile:
1. L
i

= R
i1

pentru 1 i n;
2. Pentru 1 i n se aleg L
i1
R
i1
si L

i1
R

i1
astfel ca L
i1
L

i1
= L
i1

si
R
i1
R

i1
= R
i1

; daca L
i
R
i
si L

i
R

i
sunt calculate la a i-a runda DES cunoscand
L
i1

R
i1

, probabilitatea de a obt ine relat iile L


i
L

i
= L
i

, R
i
R

i
= R
i

este p
i
(probabilitatea se extinde pentru toate subcheile posibile J
1
, J
2
, . . . , J
8
).
Probabilitatea caracteristicii este produsul p = p
1
p
2
. . . p
n
.
8 PRELEGEREA 6. MODALIT

AT I DE ATAC ASUPRA DES


Observat ia 6.2
Daca L
0
R
0
si L

0
R

0
sunt alese astfel ca L
0
L

0
= L
0

, R
0
R

0
= R
0

, nu se
poate arma ca probabilitatea ca pentru orice i = 1, 2, . . . , n sa avem L
i
L

i
=
L
i

, R
i
R

i
= R
i

este p
1
p
2
. . . p
n
.

Intr-adevar, procesul de diversicare
a cheilor nu genereaza distribut ia independenta a sub-cheilor K
1
, . . . , K
n
. Totusi,
probabilitatea p
1
p
2
. . . p
n
furnizeaza o estimare destul de precisa a probabilitat ii
reale.
Probabilitat ile p
i
sunt inserate n caracteristica pentru o pereche de texte clare oare-
care, avand un XOR dat, pentru o distibut ie de 48 bit i ai sub-cheii. Criptanalistul
cauta o cheie xata necunoscuta. De aceea el va utiliza texte clare aleatoare (cu
XOR-ul cerut), sperand ca distribut ia obt inuta de XOR-urile de la a n-a runda sa
coincida cu cea descrisa de o cheie aleatoare, deci cu p
1
, p
2
, . . . , p
n
.
Exemplul 6.4 O caracteristica pe o runda care forma baza atacului pe 3 runde este
(n notat ie hexazecimala):
L
0

= oarecare R
0

= 00000000
16
L
1

= 00000000
16
R
1

= L
0

p = 1
O alta caracteristica poate de exemplu:
L
0

= 00000000
16
R
0

= 60000000
16
L
1

= 60000000
16
R
1

= 00808200
16
p = 16/64

Intr-adevar, n calculul lui f(R


0
, K
1
) si f(R

0
, K
1
), funct ia de expansiune opereaza ntai
asupra lui R
0
si R

0
; XOR-ul rezultatelor este 001100 . . . 0. Deci XOR-ul de intrare al lui
S
1
este 001100, iar pentru celelalte S - cutii este 000000. La iesire XOR - ul este 0000
la aceste cutii si 1110 pentru S
1
; deoarece N
(
001100, 1110) = 14 (se poate verica), vom
avea probabilitatea 14/64.
Se obt ine deci C

= 11100000000000000000000000000000 cu probabilitate 14/64.


Aplicand P, vom avea
P(C) P(C

) = 00000000 10000000 10000010 00000000,


ceea ce da 00808200 n hexazecimal. Dupa calculul XOR-ului cu L
0

se obt ine valoarea


lui R
1

cu probabilitate 14/64. Vom avea binent eles L


1

= R
0

.
Atacul asupra DES-ului n 6 runde este bazat pe caracteristica celui pe 3 runde n modul
urmator:
L
0

= 40080000
16
R
0

= 04000000
16
L
1

= 04000000
16
R
1

= 00000000
16
p = 1/4
L
2

= 00000000
16
R
2

= 04000000
16
p = 1
L
3

= 04000000
16
R
3

= 40080000
16
p = 1/4
6.3. CRIPTANALIZA DIFERENT IAL

A 9
Se ncepe cu o pereche de texte clare (L
0
R
0
, L

0
R

0
) cu proprietatea L
0

= 40080000
16
,
R
0

= 04000000
16
si cu perechea de texte criptate corespunzatoare (L
6
R
6
, L

6
R

6
). Vom
avea
R
6
= L
5
f(R
5
, K
6
) = R
4
f(R
5
, K
6
) = L
3
f(R
3
, K
4
) f(R
5
, K
6
).

In mod similar se exprima R

6
. Atunci
R
6

= L
3

f(R
3
, K
4
) f(R

3
, K
4
) f(R
5
, K
6
) f(R

5
, K
6
) ()
R
6

este cunoscut. Dupa caracteristica, avem L


3

= 04000000
16
si R
3

= 40080000
16
cu probabilitate 1/16. Daca s-a obt inut ntr-adevar asa, se poate calcula XOR - ul de
intrare al S - cutiilor la a patra runda, dupa expansiune:
00100000 00000000 01010000 0000.
XOR - urile de intrare pentru S
2
, S
5
, S
6
, S
7
, S
8
sunt deci 000000, de unde rezulta ca
XOR - ul de iesire este n toate aceste cazuri 0000. Rezulta ca se poate calcula XOR -
ul de iesire al acestor cinci S - cutii la runda a sasea, pe baza relat iei (). Deci se poate
calcula
C
1

C
2

C
3

C
4

C
5

C
6

C
7

C
8

= P
1
(R
6

04000000
16
)
unde ecare C
i

are lungimea 4. C
2

, C
5

, C
6

, C
7

si C
8

sunt respectiv XOR - urile de


iesire ale cutiilor S
2
, S
5
, S
6
, S
7
, S
8
cu probabilitate 1/16. Intrarile E
2
, E
5
, E
6
, E
7
, E
8
si
E

2
, E

5
, E

6
, E

7
, E

8
n aceste cutii se pot calcula cu relat iile
E
1
E
2
E
3
E
4
E
5
E
6
E
7
E
8
= E(R
5
) = E(L
6
)
E

1
E

2
E

3
E

4
E

5
E

6
E

7
E

8
= E(R

5
) = E(L

6
)
plecand de la textele criptate, conform algoritmului:
Intrare: L
0
R
0
, L

0
R

0
, L
6
R
6
, L

6
R

6
cu L
0

= 40080000
16
, R
0

= 04000000
16
.
1. C

P
1
(R
6

40080000
16
)
2. E E(L
6
), E

E(L

6
)
3. for j = 2, 5, 6, 7, 8 do test
j
(E
j
, E

j
, C
j

)
Ar ideal de determinat cei 30 bit i din J
2
, J
5
, J
6
, J
7
, J
8
ca la atacul asupra DES -
ului n 3 runde. Problema este ca aici valorile XOR - ului de iesire la a 6 - a runda sunt
adevarate cu probabilitate 1/16. Deci n circa 15/16 din cazuri se obt in valori aleatoare
fara interes pentru criptanaliza, valori are trebuiesc eliminate. Ce este interesant este
faptul ca acest lucru este deseori posibil.
Denit ia 6.5 Fie L
0
E

0
= E
0

, R
0
R

0
= R
0

. Spunem ca perechea de texte clare


(L
0
R
0
, L

0
R

0
) este o pereche buna pentru caracteristica data, daca pentru orice i (1 i
n) avem L
i
L

i
= L
i

, R
i
R

i
= R
i

. Altfel, avem o perechea rea.


Strategiile de calcul pentru E
j
, E

j
, C
j

si test
j
pentru j = 2, 5, 6, 7, 8 a fost descrisa ante-
rior. Daca avem o pereche buna, valoarea ei apare n test
j
. Pentru o pereche rea, valoarea
lui C
j

este incorecta si se poate presupune ca toate mult imile test


j
au un cont inut aleator.
O pereche rea se poate recunoaste astfel: daca pentru un j avem card(test
j
) = 0,
perechea este sigur rea. Fiind data o pereche rea, probabilitatea de a avea card(test
j
) = 0
10 PRELEGEREA 6. MODALIT

AT I DE ATAC ASUPRA DES


pentru un anumit j, este cam 1/5 (card(test
j
) = N
j
(E
j

, C
j

) si N
j
(E
j

, C
j

) = 0 ntr-o
cincime din cazuri). Probabilitatea ca cinci mult imi test
j
sa e nevide este 0, 8
5
0, 33,
deci probabilitatea ca cel put in un test
j
sa e vid este 0, 67. Se pot elimina astfel cam 2/3
din perechile rele prin acest test simplu, numit operat ie de ltrare. Proport ia perechilor
rele care r aman dupa ltrare este ce circa (15/16) (1/3) = 5/16. Rezulta ca proport ia
perechilor bune ramse dupa ltrare este de 1/6.
Exemplul 6.5 Sa presupunem ca dispunem de urmatoarele perechi:
text clar text criptat
86FA1C2B1F51D3BE 1E23ED7F2F553971
C6F21C2B1B51D3BE 296DE2B687AC6340
Se verica imediat ca L
0

= 40080000
16
, R
0

= 04000000
16
. Intrarile si iesirile din S -
cutii la turul 6 se determina astfel:
j E
j
E

j
C

j
2 111100 010010 1101
5 111101 111100 0001
6 011010 000101 0010
7 101111 010110 1100
8 111110 101100 1101
Cele cinci mult imi test
j
vor atunci:
j test
j
2 14, 15, 26, 30, 32, 33, 48, 52
5
6 7, 24, 36, 41, 54, 59
7
8 34, 35, 48, 49
Deoarece test
5
= test
7
= , perechea este rea si va eliminata prin operat ia de ltrare.
Sa presupunem acum ca avem o pereche cu proprietatea test
j
= pentru j = 2, 5, 6, 7, 8,
deci care va ramane dupa operat ia de ltrare. Spunem ca secvent a de 30 bit i J
2
J
5
J
6
J
7
J
8
este sugerata de pereche, daca j {2, 5, 6, 7, 8}, J
j
test
j
. Numarul de secvent e
sugerate este

j{2,5,6,7}
card(test
j
).
Adesea, numarul de lant uri sugerate este destul de mare (de ordinul miilor).
6.4. CRIPTANALIZA LINIAR

A 11
Sa presupunem ca se construieste tabela tuturor secvent elor sugerate de N perechi
ramase dupa ltrare. Pentru ecare pereche buna, secvent a corecta J
2
J
5
J
6
J
7
J
8
este sug-
erata; deci ea va sugerata de n/6 ori. O secvent a incorecta va sugerata de un numar
aleator de ori, deci adesea mai put in, comparabil cu numarul lant urilor (2
30
).
Este extrem de dicil de pastrat ca spat iu tabela celor 2
30
numere; de aceea se va
folosi un algoritm care sa foloseasca un spat iu mai mic. Astfel, se codica ecare mult ime
test
j
ntr-un vector T
j
de lungime 64, n care a i - a coordonata (0 i 63) este 1 daca
secvent a de 6 bit i care reprezinta pe i n binar este n test
j
, 0 n caz contrar.
Pentru ecare pereche numarul i (1 i N) ramasa, se construiesc vectorii T
i
j
(j =
2, 5, 6, 7, 8). Daca I {1, . . . , N}, spunem ca I este admisibila, daca pentru orice j
{2, 5, 6, 7, 8} exista o coordonata egala cu card(I) n vectorul

iI
T
i
j
Daca perechea i este buna pentru orice i I, atunci I este admisibila. Deci, speram sa
avem o mult ime admisibila de marime aproximatic N/6, ceea ce sugereaza sigur o valoare
unica de 30 bit i pentru cheie. Mult imile admisibile I pot generate cu un simplu algoritm
recursiv.
6.4 Criptanaliza liniara
Criptanaliza liniara este un atac cu text clar cunoscut care seamana destul de mult cu
criptanaliza diferent iala; principala diferent a consta n faptul ca aici comparat ia se face
ntre bit ii de intrare si cei de iesire ai aceluiasi mesaj, nu ntre diferent ele a doua mesaje
la intrare respectiv iesire.
Pe scurt, principiul este urmatorul ([2]): sa presupunem ca putem aa o relat ie liniara
statistica ntre o submult ime de bit i din textul clar si o submult ime de bit i de stare
care preced imediat substitut iile din ultimul rund de criptare. Altfel spus, exista un set
de bit i al c aror XOR se determina aproape determinist (de exemplu ia valoarea 1 cu o
probabilitate mult peste 1/2). Sa consideram acum ca Oscar det ine un numar relativ
mare de perechi (text clar, text criptat) pentru care s-a folosit aceeasi cheie de criptare
K. Pentru ecare astfel de pereche se ncearca decriptarea folosind toate cheile posibile la
ultimul rund de criptare.

In acest calcul se determina valorile bit ilor implicat i n relat ia
liniara presupusa, vericand veridicitatea ei. Daca relat ia se verica, se incrementeaza
un contor corespunzator acestei chei. La sfarsitul procesului, cheia al carui contor este
(mult) peste 50% din numarul perechilor vericate, va cont ine valorile bit ilor determinate
de relat ia data.
Sa formalizam aceasta idee.
Fie X
1
, X
2
, . . . variabile aleatoare independente care iau valori din mult imea {0, 1} si
p
1
, p
2
, . . . [0, 1] numere reale denite prin
Pr[X
i
= 0] = p
i
, i = 1, 2, . . .
12 PRELEGEREA 6. MODALIT

AT I DE ATAC ASUPRA DES


Evident,
Pr[X
i
= 1] = 1 p
i
, i = 1, 2 . . .
Daca i = j, independent a variabilelor X
i
, X
j
conduce la relat iile
Pr[X
i
= 0, X
j
= 0] = p
i
p
j
, Pr[X
i
= 0, X
j
= 1] = p
i
(1 p
j
),
Pr[X
i
= 1, X
j
= 0] = (1 p
i
)p
j
, Pr[X
i
= 1, X
j
= 1] = (1 p
i
)(1 p
j
).
Fie acum variabila aleatoare discreta X
i
X
j
; se verica usor faptul ca probabilitatea ei
de distribut ie este
Pr[X
i
X
j
= 0] = p
i
p
j
+ (1 p
i
)(1 p
j
)
Pr[X
i
X
j
= 1] = p
i
(1 p
j
) + (1 p
i
)p
j
Pentru a simetriza formulele, introducem o noua variabila numita tendint a
1
denita

i
= p
i

1
2
,
i

_

1
2
,
1
2
_
Atunci
Pr[X
i
= 0] =
1
2
+
i
, Pr[X
i
= 1] =
1
2

i
Lema 6.2 Fie X
1
, X
2
, . . . X
n
variabile aleatoare independente si pentru 1 i
1
< i
2
<
. . . < i
k
n, e
i
1
,i
2
,...i
k
tendint a variabilei aleatoare X
i
1
X
i
2
. . . X
i
k
. Atunci

i
1
,i
2
,...i
k
= 2
k1
k

j=1

i
j
.
Demonstrat ie: Prin induct ie dupa k. Pentru k = 1 egalitatea este banala. Pentru k = 2
se verica usor relat ia
i
1
,i
2
= 2
i
1

i
2
.
Presupunem egalitatea adevarata pentru k = p si sa o aratam pentru k = p + 1. Din
faptul ca tendint a lui X
i
1
. . . X
i
p
este 2
p1
p

j=1

i
j
rezulta
Pr[X
i
1
. . . X
i
p
= 0] =
1
2
+ 2
p1
p

j=1

i
j
si
Pr[X
i
1
. . . X
i
p
= 1] =
1
2
2
p1
p

j=1

i
j
De aici putem calcula
Pr[X
i
1
. . . X
i
p
X
i
p+1
= 0] =
_
_
1
2
+ 2
p1
p

j=1

i
j
_
_
_
1
2
+
i
p+1
_
+
_
_
1
2
2
p1
p

j=1

i
j
_
_
_
1
2

i
p+1
_
=
1
2
+ 2
p
p+1

j=1

i
j
.
Corolarul 6.1 Fie
i
1
,i
2
,...,i
k
tendint a variabilei aleatoare X
i
1
. . . X
i
k
. Daca j cu
i
j
= 0
atunci
i
1
,i
2
,...,i
k
= 0.
1
bias n engleza
6.4. CRIPTANALIZA LINIAR

A 13
6.4.1 Aproximari liniare ale S-cutiilor
Fie S-cutia
S
: {0, 1}
m
{0, 1}
n
si X = (x
1
, x
2
, . . . , x
m
) un m-tuplu de intrare,
ales arbitrar: matematic, aceasta nseamna ca ecare coordonata x
i
deneste o variabila
aleatoare X
i
cu valori 0 sau 1, avand tendint a
i
= 0. Cele m variabile aleatoare sunt
independente.
Iesirea se poate reprezenta ca un n-tuplu Y = (y
1
, y
2
, . . . , y
n
) unde ecare y
i
deneste
o variabila aleatoare Y
i
de valori 0, 1.

In general, aceste n variabile aleatoare sunt depen-
dente de intrari sau ntre ele. Are loc formula
Pr[X
1
= x
1
, . . . , X
m
= x
m
, Y
1
= y
1
, . . . , Y
n
= y
n
] =
_
0 daca (y
1
, . . . , y
n
) =
S
(x
1
, . . . , x
m
)
2
m
daca (y
1
, . . . , y
n
) =
S
(x
1
, . . . , x
m
)
Observat ia 6.3 Ultima parte a relat iei se bazeaza pe faptul ca
Pr[X
1
= x
1
, . . . , X
m
= x
m
] = 2
m
si
Pr[Y
1
= y
1
, . . . , Y
n
= y
n
|X
1
= x
1
, . . . , X
m
= x
m
] = 1 daca (y
1
, . . . , y
n
) =
S
(x
1
, . . . , x
m
)
Cu aceasta formula se poate calcula tendint a unei variabile aleatoare de tipul
X
i
1
. . . X
i
k
Y
j
1
. . . Y
j
p
.
Exemplul 6.6 Sa consideram o S-cutie
S
: {0, 1}
4
{0, 1}
4
denita
x 0 1 2 3 4 5 6 7 8 9 A B C D E F

S
(x) E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7
unde toate valorile au fost exprimate n hexazecimal. Sunt deci opt variabile aleatoare
X
1
, . . . , X
4
, Y
1
, . . . , Y
4
care pot lua valorile reprezentate pe liniile tabelului de pe pagina
urmatoare.
Sa consideram acum variabila aleatoare X
1
X
4
Y
2
. Probabilitatea ca ea sa ia
valoarea 0 poate determinata numarand liniile din tabel unde X
1
X
4
Y
2
= 0 si apoi
mpart ind la 16 (numarul total de linii).
Se obt ine Pr[X
1
X
4
Y
2
= 0] =
1
2
, de unde rezulta Pr[X
1
X
4
Y
2
= 1] =
1
2
.
Tendint a acestei variabile aleatoare este deci 0.
14 PRELEGEREA 6. MODALIT

AT I DE ATAC ASUPRA DES


X
1
X
2
X
3
X
4
Y
1
Y
2
Y
3
Y
4
0 0 0 0 1 1 1 0
0 0 0 1 0 1 0 0
0 0 1 0 1 1 0 1
0 0 1 1 0 0 0 1
0 1 0 0 0 0 1 0
0 1 0 1 1 1 1 1
0 1 1 0 1 0 1 1
0 1 1 1 1 0 0 0
1 0 0 0 0 0 1 1
1 0 0 1 1 0 1 0
1 0 1 0 0 1 1 0
1 0 1 1 1 1 0 0
1 1 0 0 0 1 0 1
1 1 0 1 1 0 0 1
1 1 1 0 0 0 0 0
1 1 1 1 0 1 1 1

In general n Exemplul 6.6 sunt 2


8
= 256 variabile aleatoare de acest gen. Pentru
ecare din ele se poate da o reprezentare uniforma de tipul:
_
4

i=1
a
i
X
i
_

_
4

i=1
b
i
Y
i
_
unde a
i
, b
i
{0, 1}, (1 i 4). Vectorii binari (a
1
, a
2
, a
3
, a
4
) numit i sume de intrare si
(b
1
, b
2
, b
3
, b
4
) (sume de iesire) vor codicat i prin cifre hexazecimale. Astfel, ecare din
cele 256 variabile aleatoare se va scrie n mod unic ca o pereche de doua cifre hexazecimale.
Exemplul 6.7 Variabila X
1
X
4
Y
2
va avea suma de intrare (1, 0, 1, 0) care este 9 n
hexazecimal, iar suma de iesire este (0, 1, 0, 0), care este 4 n hexazecimal. Deci perechea
atasata variabilei este (9, 4).
Pentru o variabila aleatoare de suma de intrare a = (a
1
, a
2
, a
3
, a
4
) si suma de iesire
b = (b
1
, b
2
, b
3
, b
4
), e N
L
(a, b) numarul octet ilor binari (x
1
, x
2
, x
3
, x
4
, y
1
, y
2
, y
3
, y
4
) cu pro-
prietat ile
1. (y
1
, y
2
, y
3
, y
4
) =
S
(x
1
, x
2
, x
3
, x
4
)
2.
_
4

i=1
a
i
X
i
_

_
4

i=1
b
i
Y
i
_
= 0
Tendint a unei astfel de variabile aleatoare este
(a, b) =
N
L
(a, b) 8
16
.
6.5. EXERCIT II 15
Exemplul 6.8 Variabila din Exemplul 6.7 are N
L
(9, 4) = 8, deci (9, 4) = 0. Se poate
cosntrui o tabela cu toate valorile N
L
numita tabela de aproximare liniara:
a/b 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 16 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1 8 8 6 6 8 8 6 14 10 10 8 8 10 10 8 8
2 8 8 6 6 8 8 6 6 8 8 10 10 8 8 2 10
3 8 8 8 8 8 8 8 8 10 2 6 6 10 10 6 6
4 8 10 8 6 6 4 6 8 8 6 8 10 10 4 10 8
5 8 6 6 8 6 8 12 10 6 8 4 10 8 6 6 8
6 8 10 6 12 10 8 8 10 8 6 10 12 6 8 8 6
7 8 6 8 10 10 4 10 8 6 8 10 8 12 10 8 10
8 8 8 8 8 8 8 8 8 6 10 10 6 10 6 6 2
9 8 8 6 6 8 8 6 6 4 8 6 10 8 12 10 6
A 8 12 6 10 4 8 10 6 10 10 8 8 10 10 8 8
B 8 12 8 4 12 8 12 8 8 8 8 8 8 8 8 8
C 8 6 12 6 6 8 10 8 10 8 10 12 9 10 8 6
D 8 10 10 8 6 12 8 10 4 6 10 8 10 8 8 10
E 8 10 10 8 6 4 8 10 6 8 8 6 4 10 6 8
F 8 6 4 6 6 8 10 8 8 6 12 6 6 8 10 8
Pe baza unei astfel de tabele se construieste strategia de criptanaliza liniara prezentata
la nceputul sect iunii.
6.5 Exercit ii
6.1 Fie X
1
, X
2
, X
3
variabile aleatoare independente cu valori n {0, 1} de tendint e
1
,
2
respectiv
3
. Demonstrat i ca X
1
X
2
si X
2
X
3
sunt indepedente daca si numai daca

1
= 0,
3
= 0 sau
2
= 1/2.
6.2 Pentru ecare din cele opt S-cutii DES calculat i tendint a variabilei aleatoare X
2

Y
1
Y
2
Y
3
Y
4
.
6.3 S-boxul DES S
4
are cateva proprietat i specice:
a) Aratat i ca a doua linie din S
4
poate obt inuta din prima linie folosind operat ia
(y
1
, y
2
, y
3
, y
4
) (y
2
, y
1
, y
4
, y
3
) (0, 1, 1, 0)
b) Aratat i ca orice linie din S
4
poate transformata n orice alta linie printr-o operat ie
similara.
16 PRELEGEREA 6. MODALIT

AT I DE ATAC ASUPRA DES


6.4 Fie
S
: {0, 1}
m
{0, 1}
n
o S-cutie. Demonstrat i ca:
a) N
L
(0, 0) = 2
m
;
b) N
L
(a, 0) = 2
m
1, a [0, 2
m
1];
c) b [0, 2
n
1],
2
m
1

a=0
N
L
(a, b) = 2
2m1
2
m1
; ???????????
d)
2
m
1

a=0
2
n
1

b=0
N
L
(a, b) {2
n+2m1
, 2
n+2m1
+ 2
n+m1
}.
6.5 O S-cutie
S
: {0, 1}
m
{0, 1}
n
este balansata daca
|
s
1(y)| = 2
nm
pentru orice y {0, 1}
n
. Demonstrat i urmatoarele armat ii despre N
L
pentru o S-cutie
balansata:
a) N
L
(0, b) = 2
m
1, b [0, 2
n
1];
b) a [0, 2
m
1],
2
n
1

b=0
N
L
(a, b) = 2
m+n1
2
n1
+ i2
n
unde i este un numar ntreg din intervalul [0, 2
mn
].
6.6 Fie S-cutia denita:
x 0 1 2 3 4 5 6 7 8 9 A B C D E F

S
(x) 8 4 2 1 C 6 3 D A 5 E 7 F B 9 0
Determinat i tabela ei de aproximat ie liniara;
6.7 Fie un sistem de criptare P = C = K care asigura condent ialitate perfecta; deci,
din e
K
() = e
K
1
() rezulta K = K
1
. Notam P= Y = {
1
,
2
, . . . ,
N
}. Fie un bloc de
text clar xat. Denim funct ia g : Y Y prin g() = e

(). Denim un graf orientat


avand a noduri Y si ca arce (
i
, g(
i
)) (1 i N).
1. Aratat i ca este o reuniune de cicluri orientate disjuncte.
2. Fie T un parametru de timp xat. Consideram o mult ime Z = {
1
, . . . ,
m
} Y ,
astfel ca pentru orice
i
Y,
i
este ntr-un ciclu de lungime cel mult T, sau
exist a un element
j
=
i
astfel ca distant a de la
i
la
j
(n ) este cel mult T.
Demonstrat i ca exista o astfel de mult ime cu card(Z) 2N/T (deci card(Z) este
de complexitate O(N/T).
3. Pentru ecare j Z, denim g
1
(
j
) ca ind acel element
i
astfel ca g
T
(
i) =
j
, unde g
T
este funct ia g aplicata de T ori. Cosntruit i tabela X a perechilor
(
j
, g
1
(
j
)), ordonate dupa prima coordonata.
Un algoritm care gaseste K astfel ca = e
K
() este urmatorul:
6.5. EXERCIT II 17
1.
0
;
2. flag True;
3. while g() =
0
do
3.1. if j =
j
and flag then
3.1.1. g
1
(
j
)
3.1.2. flag False
else
3.1.3. g();
3.2. K = .
Aratat i ca el determina K n maxim T etape (compromisul spat iu - timp este deci
O(N)).
4. Dat i un algoritm care construieste o mult ime Z n timp O(NT), fara a folosi tablouri
de marine N.
18 PRELEGEREA 6. MODALIT

AT I DE ATAC ASUPRA DES


Bibliograe
[1] Menezes, A, Oorschot, P, Vanstome, S - Handbook of Applied cryptography
[2] Stinton, D - Cryptography, Theory and Practicce, Chapman & Hall/CRC, 2002
19
Prelegerea 7
Sistemul de criptare AES
7.1 Istoric
La sfarsitul anilor

90 se decide nlocuirea sistemului de criptare DES. Motivele sunt
multiple, dar ment ionam numai doua:


In iulie 1998 sistemul DES pe 56 bit i este spart de catre organizat ia Electronic
Frontier Foundation; s-a folosit un calculator construit special n acest scop, iar
timpul necesar spargerii a fost de 3 zile.


In luna septembrie a aceluiasi an, administrat ia americana acorda companiilor pro-
ducatoare de soft de securitate permisiunea de a exporta implementari ale algorit-
mului DES bazate pe chei de criptare de 56 bit i.

In legatura cu aceste evenimente, pe 20 august 1998 NIST (National Institute of Stan-


dards and Technology) anunt a (n cadrul unei conferint e speciale) un set de 15 algoritmi
candidat i sa nlocuiasca DES
1
. Este ales si numele noului sistem de criptare: AES
(Advanced Encryption Standard). Cei 15 algoritmi au fost trimisi de membri din co-
munitatea criptograca mondiala. Criteriile stabilite de NIST pentru noul sistem au
fost:
Sa e un sistem de criptare simetric pe blocuri de 128 bit i.
Sa accepte chei de lungime 128, 192 si 256 bit i;
Sa nu aiba chei slabe;
Sa e ecient atat pe platforme Intel Pentium Pro cat si pe alte platforme software
sau hardware;
1
Acestia sunt (n ordine alfabetica) CAST 256, CRY PTON, DEAL, DFC, E2, FROG, HPC,
LOKI97, MAGENTA, MARS, RC6, Rijndael, SAFER+, Serpent, Twofish.
1
2 PRELEGEREA 7. SISTEMUL DE CRIPTARE AES
Sa poate implementat atat pe procesoare de 32 bit i cat si pe smart- carduri
(procesoare de 8 bit i);
Sa e cat mai simplu.
Sa e mai rapid decat DES si sa ofere o securitate mai mare decat 3DES.
A doua conferint a AES are loc n martie 1999; dupa analiza rezultatelor algoritmilor
propusi, NIST selecteaza 5 algoritmi: Mars, RC6, Rijndael, Serpent si Twofish. Acestia
sunt supusi testelor si discut iilor publice, folosind drept criterii de evaluare au fost: secu-
ritate, cost, implementare.

In mai 2000 NIST anunt a drept sistem castigator sistemul de criptare Rijndael,
care devine ocial AES.
7.2 Scurta prezentare a sistemelor de criptare nale
7.2.1 Mars
Sistemul MARS este propus de rma IBM, autorii sai ind un grup condus de Don
Coppersmith. Cateva detalii de construct ie:
Algoritmul este format din trei componente, ecare din ele asigurand protect ie pen-
tru anumite tipuri de atac.
Lucreaza pe procesoare de 32 bit i, putand implementat atat n format big-endian,
cat si n little endian
2
.
La intrare textul clar este spart n grupuri de 128 bit i (4 numere ntregi de cate 32
bit i). Prima si a treia parte a algoritmului amesteca acesti bit i folosind o cheie de
dimensiune variabila (ntre 128 si 448 bit i) si o S-cutie de 512 elemente. Componenta
din mijloc este formata din 16 runde si foloseste n plus o o funct ie de expandare E.
Operat iile folosite sunt: adunari, scaderi, XOR, rotat ii (xe sau dependente de date)
si nmult iri; toate calculele se fac modulo 32. Construct ia S-cutiei s-a facut pe baza
unui algoritm public, plecand de la o serie de condit ii init iale clare.
Notat iile folosite n algoritm:
2
Fie a
1
a
2
a
3
a
4
un cuvant pe 4 octet i, unde a
i
este un numar ntreg din intervalul [0, 255].
1.

In arhitectura big-endian (o stat ie SPARK de exemplu), un cuvant reprezinta ntregul a
1
2
24
+
a
2
2
16
+a
3
2
8
+a
4
.
2.

In arhitctura little-endian (cum este familia Intel 80xxx) un cuvant reprezinta ntregul a
4
2
24
+
a
3
2
16
+a
2
2
8
+a
1
.
7.2. SCURT

A PREZENTARE A SISTEMELOR DE CRIPTARE FINALE 3


D[0], D[1], D[2], D[3] cuvinte (de 32 bit i), init ializate cu textul clar; n nal aici
va blocul de text criptat; se noteaza D[i : j] octetul j din D[i] (j = 0, 1, 2, 3).
K[] cheia expandata; secvent a de 40 cuvinte;
S[] S - cutia de 512 cuvinte; S0[] va cont ine primele 256 elemente, iar S1[]
ultimele 256 cuvinte.
Faza I (Mixare preliminara):
1. for i 0 to 3 do D[i] D[i] +K[i];
2. for i 0 to 7 do
2.1. D[1] D[1] S0[D[0, 0]];
2.2. D[1] D[1] +S1[D[0, 1]];
2.3. D[2] D[2] +S0[D[0, 2]];
2.4. D[3] D[3] S1[D[0, 3]];
2.5. D[0] D[0] >>> 24;
2.6. if i {0, 4} then D[0] D[0] +D[3];
2.6. if i {1, 5} then D[0] D[0] +D[1];
2.7. (D[0], D[1], D[2], D[3]) (D[3], D[0], D[1], D[2]).
Faza II (Transformari bazate pe cheie):
1. for i 0 to 15 do
1.1. (o1, o2, o3) E(D[0], K[2i + 4], K[2i + 5]);
1.2. D[0] <<< 13;
1.3. D[2] D[2] +o2;
1.4. if i < 8 then
1.4.1. D[1] D[1] +o1;
1.4.2. D[3] D[3] o3;
else
1.4.3. D[3] D[3] +o1;
1.4.4. D[1] D[1] o3;
1..5. (D[0], D[1], D[2], D[3]) (D[3], D[0], D[1], D[2]).
Faza III (Mixare nala):
1. for i 0 to 7 do
1.1. if i {2, 6} then D[0] D[0] D[3];
1.2. if i {3, 7} then D[0] D[0] D[1];
1.3. D[1] D[1] S1[D[0, 0]];
1.4. D[2] D[2] S0[D[0, 3]];
1.5. D[3] D[3] S1[D[0, 2]];
1.6. D[3] D[3] S0[D[0, 1]];
2.5. D[0] D[0] <<< 24;
2.7. (D[0], D[1], D[2], D[3]) (D[3], D[0], D[1], D[2]).
4 PRELEGEREA 7. SISTEMUL DE CRIPTARE AES
2. for i 0 to 3 do D[i] D[i] K[36 +i];
3. Output(D[0], D[1], D[2], D[3]).
Mai trebuie precizate funct ia E si modalitatea de expandare a cheii K.
E(inp, cheie1, cheie2);
1. M inp +cheie1; (M este variabila auxiliara)
2. R (inp <<< 13) cheie2; (R este variabila auxiliara)
3. i cei mai mici noua bit i din M;
4. L S[i]; (L este variabila auxiliara)
5. R (R <<< 5);
6. r cei mai mici cinci bit i din R;
7. M (M <<< r);
8. L L R;
9. R (R <<< 5);
10. L L R;
11. r cei mai mici cinci bit i din R;
12. L (L <<< r);
13. output(L, M, R).
Expandarea cheii:
Aceast a procedura expandeaza o cheie k[0, . . . , n1] de n cuvinte (4 n 14) ntr-o
cheie K de 40 cuvinte, folosind un vector temporar T de 15 cuvinte si un vector xat Z
de 4 cuvinte.
1. Z 0xA4A8D57B 0x5B5D193B 0xC8A8309B 0x73F9A978;
2. T[0, . . . , n 1] k[0, . . . , n 1], T[n] n, T[n + 1, . . . , 14] 0;
3. for j 0 to 3 do
3.1. for i 0 to 14 do
T[i] T[i] ((T[(i 7) mod 15] T[(i 2) mod 15] <<< 3) (4 i +j);
3.2. for m 1 to 4 to
for i 0 to 14 to
T[i] (T[i] +S[cei mai mici noua bit i dinT[(i 10) mod 15]]) <<< 9;
3.3. for i 0 to 9 do K[10 j +i] T[4 i mod 15];
4. for i 5, 7, . . . , 33, 35 do
4.1. j cei mai din dreapta doi bit i din K[i];
4.2. w K[i] cu cei mai din dreapta doi bit i setat i pe 1;
4.3. for p 2 to 30 to
if (w[p 1] = w[p] = w[p + 1]) (w[p] e ntr-o secvent a de 10 bit i consecutivi egali)
then M[p] 1;
4.4. r cei mai din dreapta cinci bit i din K[i 1];
4.5. X (Z[j] <<< r);
7.2. SCURT

A PREZENTARE A SISTEMELOR DE CRIPTARE FINALE 5


4.6. K[i] w (X M).
5. output(K[]).
Cele 512 cuvinte ale S-cutiei au fost generate n asa fel ncat sa verice condit iile:
- Nu are valorile 0x00000000 si 0xFFFFFFFF;
- Orice doua valori difera prin cel put in 4 bit i;
- Nu exista doua valori a, b astfel ca a = b sau a = b;
- Diferent ele de scadere sau XOR ntre orice doua valori sunt maxime.
Pentru alte detalii privind securitatea sistemului MARS, algoritmul de decriptare,
moduri de implementare, componentele S-cutiei etc, a se vedea [3].
7.2.2 RC6
Sistemul de criptare RC6 este o versiune a lui RC5, elaborata de laboratoarele RSA
(sub coordonarea lui Ron Rivest) cu scopul de a ndeplini criteriile AES. Este un sistem
simplu, fara atacuri practice cunoscute (sunt elaborate doar cateva atacuri teoretice),
complet parametrizat: versiunea generala este RC6w/r/b unde marimea cuvintelor este
w, numarul de runde este r, iar b este marimea (n octet i) a cheii de criptare. Versiunea
pentru AES are w = 32, r = 20. Algoritmul lucreaza pe blocuri de lungime w folosind
sase operat ii: +, , (toate modulo 2
w
), , a <<< b (rotirea lui a spre stanga cu un
numar de poziti dat cei mai put in semnicativi log
2
w bit i din b) si a >>> b (operat ie
similara spre dreapta).
Algoritmul de criptare
Intrare:
- Textul clar stocat n cuvintele A, B, C, D;
- Numarul r de runde;
- Cheia [0, . . . 2r + 3];
Iesire: Textul criptat stocat n A, B, C, D.
Algoritm:
1. B B +S[0];
2. D D +S[1];
3. for i 1 to r do
3.1. t (B (2B + 1)) <<< log
2
w;
3.2. u (D (2D + 1)) <<< log
2
w;
3.3 A ((A t) <<< u) +S[2i];
3.3 C ((C u) <<< t) +S[2i + 1];
3.4. (A, B, C, D) (B, C, D, A);
4. A A +S[2r + 2];
5. C C +S[2r + 3].
Detalii privind securitatea si modalitat i de implementare pot gasite n [4].
Algoritmul de diversicare a cheii S este identic cu cel de la RC5.

In [5] acesta este
prezentat mpreuna cu un cod pentru RC5, scris n C + +.
6 PRELEGEREA 7. SISTEMUL DE CRIPTARE AES
Cheia init iala are b octet i (0 b 255) si este stocata ntr-un tablou L cu c = b/4
cuvinte (completand ultimul cuvant cu 0 daca este necesar).

In prima faza tabloul S este init ializat folosind un generator liniar congruent ial:
1. S[0] P;
2. for i 1 to 2(r + 1) 1 do S[i] (S[i 1] +Q) mod 2
32
P = 0xB7E15163 si Q = 0x9E3779B9 sunt constante bazate pe reprezentarea binara
a lui e si .

In etapa a doua se efectueaza un amestec ntre L si S:


3. i 0, j 0;
4. A 0, B 0;
5. for s 1 to 3 max{c, 2(r + 1)} do
5.1. S[i] (S[i] +A +B) <<< 3, A S[i];
5.2. L[i] (L[i] +A +B) <<< (A +B), B L[i];
5.3. i (i + 1) (mod 2(r + 1));
5.4. j (j + 1) mod c
7.2.3 Serpent
Sistemul de criptare Serpent a fost propus de Ross Anderson (Universitatea Cambridge),
Eli Biham (Institutul Tehnion, Haifa) si Lars Knudsen (Universitea Bergen). El cripteaza
texte clare de 128 bit i n blocuri de aceeasi lungime, n 32 runde, folosind 33 chei de
criptare de runda, de lungime 128 bit i
3
. Ea se extinde la 256 bit i punand n fat a 1 pentru
primul bit, apoi 0 pentru ceilalt i bit i atat cat este necesar.
Algoritmul de criptare cuprinde 3 pasi:
Intrare: P (textul clar)
Iesire: C (Textul criptat)
Algoritm:
1.

B
0
= IP(P): (IP - permutare init iala);
2. for i 0 to 31 do

B
i+1
R
i
(

B
i
);
where R
i
(X) = L(

S
i
(X
i


K
i
)), 0 i 30,
R
31
(X) =

S
7
(X
31


K
31
) K
32
.
Se aplica 32 runde formate din: combinarea cu cheia de runda K
i
, o trecere printr-
o S-cutie si o transformare liniara L; n ultima runda, transformarea liniara este
nlocuita cu nca o combinare cu o a doua cheie de runda;

S reprezinta aplicarea n
paralel a 32 copii ale S-cutiei S
i mod 8
.
3. C FP(

B
32
) (FP- permutare nala).
3
Lungimea cheii date de utilizator este variabila, nsa algoritmul descris foloseste chei de lungime
128, 192 sau 256 bit i.
7.2. SCURT

A PREZENTARE A SISTEMELOR DE CRIPTARE FINALE 7


Observat ia 7.1 S-cutiile lucreaza pe 4 bit i, ca si la DES
4
. Fiecare runda foloseste o
singura S-cutie n 32 copii. De exemplu, runda R
0
foloseste cutia S
0
n 32 exemplare; o
copie pentru bit ii 03 din B
0
K
0
ntorcand primii patru bit i dintr-un tablou intermediar,
a doua copie pentru bit ii 4 7 din B
0
K
0
ntoarce bit ii 4 7 din vectorul intermediar
s.a.m.d. Apoi vectorul intermediar obt inut trece prin transformarea liniara, producand
B
1
. Analog, R
1
foloseste 32 S- cutii identice S
1
pentru bit ii din B
1
K
1
produand un
vector intermediar care dupa trecerea prin L da B
2
etc.
Detalii asupra IP, FP, cont inutul si modul de generare a S-cutiilor, precum si o crip-
tanaliza amanunt ita pot gasite n [2], [7]. De remarcat ca la ecare etapa IP(B
i
) =

B
i
, IP(K
i
) =

K
i
.
Transformarea liniara L:
Blocul de 128 bit i dintr-o runda este spart n patru cuvinte (X
0
, X
1
, X
2
, X
3
) = S
i
(B
i
K
i
).
Se aplica apoi urmatorii pasi:
1. X
0
(X
0
<<< 13); 2. X
2
(X
2
<<< 13);
3. X
1
X
1
X
0
X
2
; 4. X
3
X
3
X
2
(X
0
<< 3);
5. X
1
(X
1
<<< 1); 6. X
3
(X
3
<<< 7)
7. X
0
X
0
X
1
X
3
; 8. X
2
X
2
X
3
(X
1
<< 7);
9. X
0
(X
0
<<< 5); 10. B
i+1
(X
0
, X
1
, X
2
, X
3
).
unde <<< nseamna rotire spre stanga, iar << este deplasare spre stanga.

In ultima
runda, L este nlocuita cu B
32
S
7
(B
31
K
31
) K
32
.
Generarea cheilor de runda:
Fiecare runda necesita 132 fragmente de cate 32 bit i.

In prima faza se completeaza cheia
furnizata de utilizator pana la 256 bit i. Apoi ea se extinde pana la 33 subchei de cate 128
bit i K
0
, K
1
, . . . , K
32
n modul urmator:
Cheia K se descompune n opt cuvinte w
8
, . . . , w
1
care se extind la o cheie interme-
diara w
0
, . . . , w
131
prin formula
w
i
(w
i8
w
i5
w
i3
w
i1
i) <<< 11
unde este partea fract ionara a raportului de aur (0x9E3779B9).
Cheile de runda sunt calculate din cheia intermediara folosind S-cutiile:
(k
0
, k
1
, k
2
, k
3
) S
3
(w
0
, w
1
, w
2
, w
3
)
(k
4
, k
5
, k
6
, k
7
) S
2
(w
4
, w
5
, w
6
, w
7
)
(k
8
, k
9
, k
10
, k
11
) S
1
(w
8
, w
9
, w
10
, w
11
)
4
O varianta init iala, Serpent0 folosea aceleasi S-cutii ca DES.
8 PRELEGEREA 7. SISTEMUL DE CRIPTARE AES
(k
12
, k
13
, k
14
, k
15
) S
0
(w
12
, w
13
, w
14
, w
15
)
(k
16
, k
17
, k
18
, k
19
) S
7
(w
16
, w
17
, w
18
, w
19
)
. . . . . .
(k
124
, k
125
, k
126
, k
127
) S
4
(w
124
, w
125
, w
126
, w
127
)
(k
128
, k
129
, k
130
, k
131
) S
3
(w
128
, w
129
, w
130
, w
131
)
Cheile de runda se regrupeaza n
K
i
(k
4i
, k
4i+1
, k
4i+2
, k
4i+3
)
7.2.4 Twosh
Sistemul Twosh este propus de un colectiv condus de Bruce Schneier, ind unul din
put inele sisteme free (implementarea este disponibila la adresa [6]). Algoritmul cripteaza
blocuri de 128 bit i, folosind o cheie de lungime variabila.
Algoritmul de criptare
Intrare: P = p
0
p
1
. . . p
15
un bloc de text clar de 128 bit i (p
i
- octet i)
Iesire: C - bloc text criptat, de 128 bit i.
Algoritm:
1. P se sparge n patru cuvinte P
0
, P
1
, P
2
, P
3
dupa sistemul little-endian:
P
i

3

j=0
p
4i+j
2
8j
, (0 j 3)
2. R
0,i
P
i
K
i
, (0 i 3)
5
3. for r 0 to 15 do
3.1. (F
r,0
, F
r,1
) F(R
r,0
, R
r,1
, r);
3.2. R
r+1,0
(R
r,2
F
r,0
) >>> 1;
3.3. R
r+1,1
(R
r,3
<<< 1) F
r,1
;
3.4. R
r+1,2
R
r,0
3.5. R
r+1,3
R
r,1
4. C
i
R
16,(i+2) mod 4
K
i+4
, (0 i 3)
5. c
i

i
4

2
8(i mod 4)

mod 2
8
, (0 i 15)
(cele patru cuvinte din textul criptat sunt scrise ca o secvent a de opt octet i n sistemul
little-endian).
5
Operat ia este numita whitening si a fost introdusa n mod independent de Merkle pentru
Khufu/Khafre, respectiv Rivest pentru DES X.
7.2. SCURT

A PREZENTARE A SISTEMELOR DE CRIPTARE FINALE 9


Funct ia F
F(R
0
, R
1
, r) este o funct ie ternara care ntoarce doua valori (F
0
, F
1
). Varianta propusa
este bazat a la rdul ei pe o alta funct ie g.
1. T
0
g(R
0
) 2. T
1
g(R
1
<<< 8)
3. F
0
(T
0
+T
1
+K
2r+8
) mod 2
32
4. F
1
(T
0
+ 2 T
1
+K
2r+9
) mod 2
32
Funct ia unara g constituie esent a sistemului de criptare Twosh:
1. x
i
X/2
8i
mod 2
8
(0 i 3)
Cuvantul de intrare X este spart n patru octet i.
2. y
i
s
i
[x
i
], (0 i 3)
Octet ii sunt trecut i prin patru S-cutii, dependente de cheie.
3.

z
0
z
1
z
2
z
3

01 EF 5B 5B
5B EF EF 01
EF 5B 01 EF
EF 01 EF 5B

y
0
y
1
y
2
y
3

4. Z
3

i=0
z
i
2
8i
. (Z este valoarea rezultata).
Observat ia 7.2 La pasul 3 se face o corespondent a ntre octet i si elementele corpului
GF(2
8
). Deoarece GF(2
8
) GF(2)[X]/v(X) unde v(X) = X
8
+X
6
+X
5
+X
3
+ 1 este
un polinom primitiv peste Z
2
. Elementul a =
7

i=0
a
i
X
i
GF(2
8
) se identica cu octetul
7

i=0
a
i
2
i
. Elementele matricii 4 4 au fost scrise ca valori hexazecimale ale octet ilor,
folosind aceasta corespondent a.
Diversicarea cheii
Sistemul Twosh este denit pentru chei de lungime N unde standardul este N = 128, 192
sau 256. Se pot folosi nsa chei de orice lungime mai mica de 256; daca se da o astfel de
cheie, ea este extinsa prin completare cu 0 la cea mai apropiata lungime standard. Din
cheia M a utilizatorului, prin diversicare se obt in 40 cuvinte K
0
, K
1
, . . . , K
39
si patru
S-cutii folosite la funct ia g.
Fie k N/64. Cheia M consta din 8k octet i m
0
, m
1
, . . . , m
8k1
. Se calculeaza
vectorii M
e
, M
o
, S astfel:
1. M
i

3

j=0
m
4i+j
2
8j
, (0 j 2k 1)
2. M
e
(M
0
, M
2
, . . . , M
2k2
), M
o
= (M
1
, M
3
, . . . , M
2k1
);
3. S = (S
k1
, S
k2
, . . . , S
0
) unde S
i

3

j=0
s
i,j
2
8j
, (0 i k 1)
10 PRELEGEREA 7. SISTEMUL DE CRIPTARE AES
Octet ii s
i,j
se obt in printr-o codicare cu un cod Reed-Solomon, pe baza formulei

s
i,0
s
i,1
s
i,2
s
i,3

01 A4 55 87 5A 58 DB 9E
A4 56 82 F3 1E C6 68 E5
02 A1 FC C1 47 AE 3D 19
A4 55 87 5A 58 DB 9E 03

m
8i
m
8i+1
m
8i+2
m
8i+3
m
8i+4
m
8i+5
m
8i+6
m
8i+7

Pentru generarea S-cutiilor si a cuvintelor cheii expandate se foloseste funct ia h,


denita astfel:
Drept argumente sunt X (cuvant) si L = (L
0
, L
1
, . . . , L
k1
) o lista de k cuvinte.
Rezultatul va un cuvant Z.
1. l
i,j
L
i
/2
8j
mod 2
8
, (0 i k 1)
x
j
X/2
8j
mod 2
8
, (0 j 3) (cuvintele sunt sparte n octet i)
2. y
k,j
x
j
, (0 j 3)
3. if k = 4 then
y
3,0
q
1
[y
4,0
] l
3,0
, y
3,1
q
1
[y
4,1
] l
3,1
, y
3,2
q
1
[y
4,2
] l
3,2
, y
3,3
q
1
[y
4,3
] l
3,3
4. if k 3 then
y
2,0
q
1
[y
3,0
] l
2,0
, y
2,1
q
1
[y
3,1
] l
2,1
, y
2,2
q
1
[y
3,2
] l
2,2
, y
2,3
q
1
[y
3,3
] l
2,3
5.
y
0
q
1
[q
0
[q
0
[y
2,0
] l
1,0
] l
0,0
, y
1
q
0
[q
0
[q
1
[y
2,1
] l
1,1
] l
0,1
,
y
2
q
1
[q
1
[q
0
[y
2,2
] l
1,2
] l
0,2
, y
3
q
0
[q
1
[q
1
[y
2,3
] l
1,3
] l
0,3
unde q
0
si q
1
sunt permutari pe 8 bit i, denite detaliat n [6].
6. Z se obt ine aplicand pasii 3 si 4 din denit ia funct iei g.

In acest moment putem deni:


S-cutiile din funct ia g sub forma
g(X) = h(X, S)
Pentru i = 0, 1, 2, 3, S-cutia s
i
dependenta de cheie se formeaza prin aplicarea lui h
de la x
i
la y
i
, n care lista L este vectorul S derivat din cheie.
Cuvintele cheii expandate:
Fie 2
24
+ 2
16
+ 2
8
+ 2
0
, A
i
h(2i , M
e
), B
i
(h((2i + 1)
, M
o
) <<< 8
Atunci
K
2i
(A +i +B
i
) mod 2
32
, K
2i+1
((A
i
+ 2B
i
) mod 2
32
) <<< 9
7.3. DETALII ALE SISTEMULUI DE CRIPTARE AES 11
7.3 Detalii ale sistemului de criptare AES
Din 2000, sistemul de criptare Rijndael creat de olandezii Joan Daemen si Vincent Rijman
devine ocial sistemul AES.
6
Similar sistemulelor anterioare (inclusiv DES), si acest
sistem cripteaza blocuri de text clar de lungime xa, folosind subchei ale unei chei generate
aleator. Lungimile folosite sunt de 128, 192 sau 256 bit i.
Denit ia 7.1 Un rezultat intermediar al sistemului de criptare se numeste stare.
Vom reprezenta starea unui bloc sub forma unui tablou cu 4 linii si N
b
coloane, ale carui
elemente sunt octet i; deci valoarea lui N
b
se determina usor: N
b
= N/32, unde N este
lungimea blocului text care se cripteaza.
Similar, o cheie de criptare se va reprezenta printr-un tablou 4N
k
, unde N
k
= K/32
(K ind lungimea cheii).
Exemplul 7.1 O stare cu N
b
= 6 si o cheie cu N
k
= 4 au forma urmatoare:
a
0,0
a
0,1
a
0,2
a
0,3
a
0,4
a
0,5
a
1,0
a
1,1
a
1,2
a
1,3
a
1,4
a
1,5
a
2,0
a
2,1
a
2,2
a
2,3
a
2,4
a
2,5
a
3,0
a
3,1
a
3,2
a
3,3
a
3,4
a
3,5
k
0,0
k
0,1
k
0,2
k
0,3
k
1,0
k
1,1
k
1,2
k
1,3
k
2,0
k
2,1
k
2,2
k
2,3
k
3,0
k
3,1
k
3,2
k
3,3
Uneori, aceste blocuri se reprezinta ca un vector n care ecare element este coloana unei
stari (deci, avand o lungime de 4 octet i).

In funct ie de marimea N a blocului de criptare
(respectiv K a cheii), un astfel de vector are 4, 6 sau 8 componente, numite cuvinte.
Octet ii unui cuvant se noteaza cu a, b, c si respectiv d; astfel, octetul 0 este a, octetul 1
este b s.a.m.d.
Intrarea si iesirea din sistemul AES sunt denite sub forma unor vectori avand drept
componente octet i, numerotate de la 0 la 4N
b
1. Un vector de intrare/iesire are deci
16, 24 sau respectiv 32 componente, numerotate 0 . . . 15, 0 . . . 23 sau 0 . . . 31.
Similar, cheia de criptare este denita ca un vector de 16, 24 sau 32 octet i, numerotat i
de la 0 la 4N
k
1 (unde N
k
= 128, 192 si respectiv 256).
Octet ii care formeaza intrarean sistem (textul clar, daca se foloseste modul de criptare
ECB) completeaza pe coloane un tablou ca n exemplu, numit starea init iala. Similar se
procedeaza cu cheia de criptare.
Procedeul este identic la sfarsit, cand se obt ine blocul criptat prin liniarizarea pe
coloane a starii nale rezultate dupa criptare.
Relat iile dintre indexul n al unui element (octet) din reprezentarea liniara si coordo-
natele (i, j) ale aceluiasi octet din reprezentarea matriciala sunt
i = n (mod 4); j = n/4; n = i + 4 j.
6
Rijndael a castigat obt inand 86 voturi, contra Serpent cu 59, Twosh cu 31, RC6 cu 23 si Mars cu
13 voturi. Principalul atu: desi Serpent este considerat mai sigur, Rijndael are mai put ine transformari
si este mai rapid.
12 PRELEGEREA 7. SISTEMUL DE CRIPTARE AES

In plus, i este indicele octetului n cadrul unui cuvant care cont ine acel octet, iar j
este indicele cuvantului n cadrul blocului care l cont ine.
Criptarea se realizeaza n N
r
runde, unde N
r
depinde de N
b
si N
k
. Valorile lui N
r
sunt
date n tabelul:
N
r
N
b
= 4 N
b
= 6 N
b
= 8
N
k
= 4 10 12 14
N
k
= 6 12 12 14
N
k
= 8 14 14 14
Fiecare runda are la intrare o stare si foloseste o cheie de runda. Cu except ia rundei
nale, o runda este formata din patru transformari, notate pe scurt:
ByteSub(Stare);
ShiftRow(Stare);
MixColumn(Stare);
AddRoundKey(Stare, Cheie).
Ultima runda cont ine numai trei transformari, ind eliminata MixColumn(Stare). Sa
vedem cum sunt denite aceste transformari:
ByteSub(Stare): Este o substitut ie neliniara care opereaza pe octet i. Tabela de
substitut ie (S - box, daca folosim termenul consacrat din DES) este o matrice
inversabila formata din compunerea a doua transformari:
1. Fiecare octet nenul este nlocuit cu inversul sau
1
GF(2
8
); octetul 00
este lasat nemodicat.
2. Rezultatul este modicat printr-o transformare ana peste Z
2
:

y
0
y
1
y
2
y
3
y
4
y
5
y
6
y
7

1 0 0 0 1 1 1 1
1 1 0 0 0 1 1 1
1 1 1 0 0 0 1 1
1 1 1 1 0 0 0 1
1 1 1 1 1 0 0 0
0 1 1 1 1 1 0 0
0 0 1 1 1 1 1 0
0 0 0 1 1 1 1 1

x
0
x
1
x
2
x
3
x
4
x
5
x
6
x
7

1
1
0
0
0
1
1
0

7.3. DETALII ALE SISTEMULUI DE CRIPTARE AES 13


Transformarea ByteSub se aplica tuturor octet ilor starii de intrare n runda, rezul-
tatul ind o alta stare de iesire din runda.
Inversa transformarii se obt ine aplicand ecarui octet transforma-rea ana inversa,
dupa care se ia inversul multiplicativ din GF(2
8
) (daca octetul nu este nul).
ShiftRow(Stare): La acest pas, liniile starii sunt permutate ciclic spre stanga. Numa-
rul de octet i cu care se face ciclarea sunt: 0 pentru linia 0, C
i
pentru linia i (1
i 3). Valorile C
i
depind de lungimea N
b
a blocului si sunt date de tabelul
N
b
C
1
C
2
C
3
4 1 2 3
6 1 2 3
8 1 3 4
Exemplul 7.2 Aplicand transformarea ShiftRow starii din Exemplul 7.1 (unde
N
b
= 6), vom obt ine starea
a
0,0
a
0,1
a
0,2
a
0,3
a
0,4
a
0,5
a
1,1
a
1,2
a
1,3
a
1,4
a
1,5
a
1,0
a
2,2
a
2,3
a
2,4
a
2,5
a
2,0
a
2,1
a
3,3
a
3,4
a
3,5
a
3,0
a
3,1
a
3,2
Inversa transformarii ShiftRow consta n permutarea ciclica spre stanga cu N
b
C
i
octet i pentru linia i (1 i 3); n acest fel, ecare octet aat pe pozit ia j n linia
i se deplaseaza pe pozit ia j +N
b
C
i
(mod N
b
).
MixColumn(Stare):

In aceasta transformare, ecare coloana a starii este privita ca
un polinom de gradul 3 cu coecient i n GF(2
8
). Fiecare astfel de polinom este
nmult it cu
c(X) =

03

X
3
+

01

X
2
+

01

X +

02

n algebra polinoamelor modulo X


4
+ 1; polinomul c(X) este prim cu X
4
+ 1, deci
va inversabil.
Aceasta transformare poate reprezentata si sub forma unei nmul-t iri matriciale,
care transforma starea coloana cu coloana; anume:

b
0
b
1
b
2
b
3

02 03 01 01
01 02 03 01
01 01 02 03
03 01 01 02

a
0
a
1
a
2
a
3

14 PRELEGEREA 7. SISTEMUL DE CRIPTARE AES


Operat ia inversa este similara. Fiecare coloana este transformata prin nmult ire cu
polinomul invers lui c(X) modulo X
4
+ 1; acesta este
d(X) =

0B

X
3
+

0D

X
2
+

09

X +

0E

AddRoundKey(Stare, Cheie): Aceasta transformare consta n aplicarea unui XOR


() ntre starea curenta si cheia de runda. Cheia de runda are lungimea N
b
si este
dedusa din cheia de criptare pe baza unui procedeu pe care l descriem mai jos.
Formal, transformarea are loc conform gurii (pentru N
b
= 6):
a
0,0
a
0,1
a
0,2
a
0,3
a
0,4
a
0,5
a
1,0
a
1,1
a
1,2
a
1,3
a
1,4
a
1,5
a
2,0
a
2,1
a
2,2
a
2,3
a
2,4
a
2,5
a
3,0
a
3,1
a
3,2
a
3,3
a
3,4
a
3,5

k
0,0
k
0,1
k
0,2
k
0,3
k
0,4
k
0,5
k
1,0
k
1,1
k
1,2
k
1,3
k
1,4
k
1,5
k
2,0
k
2,1
k
2,2
k
2,3
k
2,4
k
2,5
k
3,0
k
3,1
k
3,2
k
3,3
k
3,4
k
3,5
=
b
0,0
b
0,1
b
0,2
b
0,3
b
0,4
b
0,5
b
1,0
b
1,1
b
1,2
b
1,3
b
1,4
b
1,5
b
2,0
b
2,1
b
2,2
b
2,3
b
2,4
b
2,5
b
3,0
b
3,1
b
3,2
b
3,3
b
3,4
b
3,5
unde b
i,j
= a
i,j
k
i,j
(0 i 3, 0 j 5).
Transformarea AddRoundKey si inversa ei sunt identice.
Algoritmul de criptare AES este format din:
1. O transformare AddRoundKey init iala;
2. N
r
1 runde;
3. O runda nala.

Inainte de aplicarea acestui algoritm (sau eventual n paralel) se foloseste un algoritm


de obt inere a cheilor de runda.
7.3.1 Prelucrarea cheii de criptare
Toate cheile de runda se obt in din cheia de criptare printr-o prelucrare separata, formata
din doua componente: extinderea cheii si alegerea cheii de runda. Principiile de baza ale
prelucrarii sunt:
Num arul total al bit ilor din toate cheile de runda este N
b
(N
r
+ 1).
Cheia de criptare este extinsa ntr-o Cheie Expandata.
7.3. DETALII ALE SISTEMULUI DE CRIPTARE AES 15
Cheia de runda se obt ine luand primii N
b
octet i din Cheia Expandata, care nu au
fost folosit i pentru alte chei.
Extinderea cheii
Cheia expandata (notata W[N
b
(N
r
+1)]) este un tablou liniar ale carui elemente sunt
cuvinte. Primele N
k
cuvinte sunt cheia de criptare; celelalte cuvinte se obt in recursiv din
cuvintele denite anterior. Funct ia de extindere a cheii depinde de valoarea lui N
k
; exista
o versiune pentru N
k
6 si o alta pentru N
k
> 6.
Pentru N
k
6 avem:
KeyExpansion(byte Key[4 N
k
] word W[N
b
(N
r
+ 1)])
{
for (i = 0; i < N
k
; i + +)
W[i] = (Key[4 i], Key[4 i + 1], Key[4 i + 2], Key[4 i + 3]);
for (i = N
k
; i < N
b
(N
r
+ 1); i + +)
{
temp = W[i 1];
if (i % N
k
== 0)
temp = SubByte(RotByte(temp)) Rcon(i/N
k
);
W[i] = W[i N
k
] temp;
}
}

In acest algoritm (scris n C ++), SubByte(W) este o funct ie care ntoarce un cuv ant
n care ecare octet este rezultatul aplicarii S - boxului denit la transformarea ByteSub
ecarui octet din cuvantul de intrare. RotByte(w) ntoarce un cuvant n care octet ii sunt
rotit i ciclic la stanga (pentru intrarea (a, b, c, d) iesirea este (b, c, d, a)).
Esent a algoritmului este urmatoarea: primele N
k
cuvinte sunt completate cu cheia de
criptare.

In continuare, ecare cuvant W[i] este egal cu W[i 1] W[i N
k
]. Pentru
cuvintele care sunt pe pozit ii multipli de N
k
, nainte de aceasta operat ie, lui W[i 1] i se
aplica o permutare ciclica spre stanga a octet ilor, urmata de aplicarea unui S - box.

In
plus, rezultatul este XOR - at nca odata, cu o constanta de runda.
Pentru N
k
> 6, algoritmul este:
KeyExpansion(byte Key[4 N
k
] word W[N
b
(N
r
+ 1)])
{
for (i = 0; i < N
k
; i + +)
W[i] = (Key[4 i], Key[4 i + 1], Key[4 i + 2], Key[4 i + 3]);
for (i = N
k
; i < N
b
(N
r
+ 1); i + +)
{
temp = W[i 1];
if (i % N
k
== 0)
16 PRELEGEREA 7. SISTEMUL DE CRIPTARE AES
temp = SubByte(RotByte(temp)) Rcon(i/N
k
);
else if (i % N
k
== 4)
temp = SubByte(temp)
W[i] = W[i N
k
] temp;
}
}
La aceasta schema apare condit ia suplimentara ca pentru situat ia cand i 4 este
multiplu de N
k
, procedura SubByte este aplicata lui W[i 1] nainte de XOR.
Constantele de runda sunt independente de N
k
si sunt denite prin
Rcon[i] = (RC[i],

00

00

00

)
unde RC[i] =
i1
unde este un element generator al lui GF(2
8
).
Selectarea cheii de runda
Cheia rundei i este formata din secvent a de cuvinte
W[N
b
i] . . . W[N
b
(i + 1) 1].
Ca o remarca, aceasta cheie poate calculata treptat, pe masura ce se ajunge la runda
respectiva.
Pentru alte detalii privind securitatea sistemului, a se vedea [1], [8]
Bibliograe
[1] Joan Daemen, Vincent Rijmen - The Rijndael Block Cipher Proposal,
http://csrc.nist.gov/CryptoToolkit/aes/
[2] Ross Anderson s.a. - Serpent: A proposal for the Advanced Encryption Standard,
http://www.ftp.cl.cam.ac.uk/ftp/users/rja14/serpent.pdf
[3] Don Coppersmith s.a. - MARS - a candidate cypher for AES,
http://www.research.ibm.com/security/mars.pdf
[4] Ronald Rivest s.a - The RC6
TM
Block Cipher,
ftp://ftp.rsasecurity.com/pub/rsalabs/rc6/rc6v11.pdf
[5] Bruce Schneier - Applied Cryptography, Second Edition, John Wiley & Sons, 1996
[6] Bruce Schneier s.a. - Twosh, http://www.counterpane.com/twosh.html
[7] Serpent homepage, http://www.cl.cam.ac.uk/ rja14/serpent.html
[8] Douglas Stinton - Cryptography, Theroy and Practice, Ed. II (2002)
17
Prelegerea 8
Criptare cu cheie publica
8.1 Considerat ii generale

In sistemele de criptare clasice, Alice si Bob si aleg o cheie secreta K care deneste
regulile de criptare (e
K
) si decriptare (d
K
).

In aproape toate cazurile d
K
si e
K
coincideau
sau se puteau deduce imediat una din alta. Astfel de sisteme sunt numite sisteme cu
cheie privata (sau sisteme simetrice) deoarece publicarea lui e
K
face sistemul extrem de
vulnerabil.
Un punct slab al sistemelor cu cheie privata este acela ca necesita o comunicare pre-
alabila a cheii ntre Alice si Bob printr-un canal sigur, nainte de transmiterea mesajului
criptat. Practic, n condit iile cererii tot mai mari de securizare a comunicat iilor, acest
lucru este din ce n ce mai dicil de realizat.
Obiectivul sistemelor de criptare cu cheie publica este acela de a face imposibilasupra
acestui termen vom reveni) de obt inut cheia d
K
plecand de la e
K
. Astfel, regula de criptare
e
K
poate publicata ntr-un registru public (de unde si numele sistemelor). Avantajul
constan faptul ca Alice (sau oricare alta persoana) poate trimite lui Bob un mesaj criptat
cu e
K
fara a intran prealabil n contact. Bob este singura persoana capabila sa decripteze
textul, utilizand cheia sa secreta d
K
.
Ideea de sistem de criptare cu cheie publica apare n 1976 si este prezentata de Die
si Hellman (vezi [1])
1
. De atunci au aparut diverse astfel de sisteme, a caror securitate
este bazat a pe probleme calculatorii. Cele mai cunoscute n acest moment sunt:
Sistemul RSA: se bazeaza pe dicultatea descompunerii n factori primi a numerelor
mari (de sute de cifre). Este sistemul cel mai larg utilizat n acest moment.
1
Se pare ca prima idee de cheie publica este schit ata n ianuarie 1970 de catre britanicul James
Ellis membru n Communication-Electronic Security Group n articolul The possibility of non-secret
encryption. Informat ia este facuta publica de catre British Government Communications Headquarters
abia in 1997.
1
2 PRELEGEREA 8. CRIPTARE CU CHEIE PUBLIC

A
Sistemul El Gamal: se bazeaza pe dicultatea calculului logaritmului discret ntr-un
corp nit.
Sistemul Merkle - Hellman: primul sistem denit cu cheie publica, bazat pe problema
{0, 1} a rucsacului, problema NP - completa.
Sistemul McEliece: este bazat pe teoria algebrica a codurilor, decodicarea unui cod
liniar ind de asemenea o problema NP - completa.
Curbe eliptice: Sunt sisteme de criptare care si desfasara calculele pe mult imea
punctelor unei curbe eliptice (n locul unui inel nit Z
n
).
8.2 Funct ii neinversabile
O observat ie importanta este aceea ca un sistem cu cheie publica nu este sigur necondit ionat;
oricine - putand sa efectueze criptari, nu este exclus sa gaseasca anumite puncte slabe care
sa i permita sa si decripteze mesajele. Ideea de baza folosita este aceea de funct ie nein-
versabila. Sa claricam put in acest aspect.
Exemplul 8.1 Ne putem imagina usor strazile cu sens unic dintr-un oras. Astfel, este
usor ca mergand pe astfel de strazi sa ajungi de la punctul A la punctul B, dar este
imposibil s a ajungi de la B la A.

In acest mod, criptarea este privita ca direct ia A B;
desi este foarte usor de parcurs drumul n aceasta direct ie, nu te pot i ntoarce napoi spre
A (adica s a decriptezi mesajul).
Exemplul 8.2 Sa consideram cartea de telefon a unui oras mare
2
; cu ajutorul ei este
foarte usor sa gasim numarul de telefon al unei anumite persoane.

In schimb, este extrem
de greu - practic imposibil - sa ai persoana care are un anumit numar de telefon. Te
ai n situat ia parcurgerii secvent iale a (cel put in) unui volum gros, ceea ce conduce la o
crestere exagerata a timpului.
Aceasta da o sugestie de construct ie a unui sistem de criptare cu cheie publica. Criptarea
se face independent de context, litera cu litera. Pentru ecare litera a textului clar se alege
un nume care ncepe cu acest caracter si numarul de telefon al persoanei respective va con-
stitui criptarea. Sistemul este homofonic; douaaparit ii diferite ale aceleiasi litere vor
codicate foarte probabil cu numere diferite.
De exemplu, textul clar SOLIST se poate cripta astfel:
2
O carte de telefon expirata va duce la cresterea dicultat ii decriptarii ilegale.
8.2. FUNCT II NEINVERSABILE 3
S Simion Pavel 6394502
O Olaru Stefan 7781594
L Lambru Stelian 6300037
I Ilie Romeo 3134971
S Solovean Raluca 6281142
T Tecuceanu Paul 3359962
Deci, textul criptat va
639450 277815 946300 037313 497162 811423 359962.
De remarcat ca metoda este nedeterminista; din acelasi text clar se pot obt ine enorm
de multe texte criptate. Pe de-alta parte, orice text criptat conduce la un text clar unic.
Bob va avea la dispozit ie pentru decriptare o carte de telefon scrisa n ordinea crescatoare
a numerelor. Aceasta i va permite sa decripteze mesajele cu un algoritm de complexitate
O(log n).
Deci, o funct ie neinversabila f trebuie sa verice doua condit ii:
Fiind dat x, f(x) este usor de calculat;
Calculul lui x din f(x) este imposibil.
De remarcat ca, din punct de vedere strict matematic, nu se cunosc astfel de funct ii. A
demonstra ca exista funct ii neinversabile este echivalent cu a demonstra relat ia P = NP,
conjectura care sta la baza ntregii teorii criptograce (a se vedea [4],[5]). De aceea,
termenii folosit i sunt relativi la complexitatea calculatorie. Astfel, o problema este:
1. usoara daca se poate rezolva cu un algoritm cel mult liniar;
2. grea daca se poate rezolva cu un algoritm polinomial neliniar;
3. imposibila daca este NP - completa.
Am listat la nceput o serie de probleme NP - complete care stau la baza principaleor
sisteme de criptare cu cheie publica.
Exemplul 8.3 Sa consideram problema rucsacului Ea consta dintr-un vector de di-
mensiune n A = (a
1
, a
2
, . . . , a
n
) cu elemente numere ntregi pozitive distincte, si un
numantreg pozitiv k. Trebuiesc aat i acei a
i
din A (daca exista) a caror suma este
k. Numele intuitiv dat problemei este evident. De exemplu, e
A = (43, 129, 215, 473, 903, 302, 561, 1165, 696, 1523) si k = 3231.
Se determina 3231 = 129 + 473 + 903 + 561 + 1165, care este o astfel de solut ie (vom
da mai tarziu o denit ie formala riguroasa a problemei).

In principiu o solut ie se poate gasi parcurgand sistematic toate submult imile lui A si
vericand daca suma elementelor lor este k.

In cazul de sus, aceasta nseamna 2
10
1 =
1023 submult imi (fara mult imea vida), dimensiune acceptabila ca timp de lucru.
Ce se ntampla nsa daca A are cateva sute de componente ?

In acest caz se cunoaste
faptul ca problema rucsacului este NP - completa.
4 PRELEGEREA 8. CRIPTARE CU CHEIE PUBLIC

A
Cu ajutorul lui A se poate deni o funct ie f astfel:
Fie x [0, 2
n
1]; x poate reprezentat n binar ca un cuvant de lungime n (adaugand
eventual 0 - uri n faaf(x)vafinum arul obt inut din A prin nsumarea tuturor nu-
merelor a
i
aate pe pozit iile marcate cu 1 n reprezentarea binara a lui x. Formal,
f(x) = A B
T
x
unde B
x
este reprezentarea binara a lui x, scrisa ca un vector coloana.
Sa denim acum un sistem de criptare bazat pe problema rucsacului. Textul clar
este codicat init ial n binar si segmentat apoi n blocuri de cate n bit i (eventual ultimul
bloc este completat la sfarsit cu zerouri). Fiecare bloc rezultat este apoi criptat calculand
valoarea corespunzatoare a funct iei f.
Pentru alfabetul latin sunt sucient i 5 bit i pentru codicarea binara a literelor si a
spat iului. Mai exact, daca asociem literelor A - Z reprezentarile binare ale numerelor
1 26, vom avea:
00000 A 00001 B 00010
C 00010 D 00011 E 00101
F 00110 G 00111 H 01000
I 01001 J 01010 K 01011
L 01100 M 01101 N 01110
O 01111 P 10000 Q 10001
R 10010 S 10011 T 10100
U 10101 V 10110 W 10111
X 11000 Y 11001 Z 11010
Sa consideram un text clar, FLOARE DE COLT de exemplu. Cum ecare caracter
se codica n 5 bit i, n ecare bloc intra doua caractere: FL OA RE D E CO LT.
Codicand,se obt in sapte blocuri de cate 10 bit i:
0011001100 0111100001 1001000101 0000000100 0000000101 0001101111 0110010100
care conduc la textul criptat: (1814, 3243, 3204, 1165, 1118, 5321, 1811).
Sa consideram sistemul de criptare denit n Exemplul 8.3. Daca l privim ca un
sistem clasic, (cu cheie privata) criptanalistul trebuie sa ae vectorul de baza A si apoi sa
rezolve problema rucsacului.
Daca el foloseste metoda textelor clare alese, l va aa usor pe A: este sucient sa
trimita n texte clare cu cte un singur 1 iar restul 0. Problema apare n momentul
rezolvarii problemei rucsacului; aici atat Bob cat si Oscar sunt pusi n fat a acelaiasi
probleme NP - complete. Ori, practic, doar Oscar trebuie sa rezolve o problema dicila,
nu si Bob.
O alta problema ridicata de acest sistem de criptare: este obligatoriu ca un text criptat
sa determine n mod unic un text clar. Aceasta nseamna ca nu trebuie sa existe doua
submult imi ale lui A care sa aiba aceeasi suma. Astfel, daca se ia A = (17, 103, 50, 81, 33),
textul criptat (131, 33, 100, 234, 33) poate decriptat n doua moduri: SAUNA si FAUNA.
8.3. TRAPA SECRET

A 5
8.3 Trapa secreta
Pentru ca Bob sa nu e pus n aceasi situat ie ca si Oscar, el trebuie sa dispuna de
un procedeu care sa i permita sa transforme problema NP - completa publica, ntr-o
problema usoara. Acest procedeu este numit trapa secreta.

In primul exemplu, trapa
secreta era cartea de telefon ordonata dupa numerele de telefon, nu dupa abonat i. Sa
vedem care este trapa secreta n sistemul de criptare din Exemplul 8.3:
Exemplul 8.4 Sunt clase de probleme ale rucsacului usor de rezolvat; una din ele o
formeaza vectorii cu crestere mare.
Spunem ca vectorul rucsac A = (a
1
, a
2
, . . . , a
n
) este cu crestere mare daca
j 2, a
j

j1

i=1
a
i
.

In acest caz, pentru a rezolva problema rucsacului este sucient sa parcurgem vectorul
A de la dreapta spre stanga. Cunoscand valoarea k, cercetam ntai valoarea de adevar
a relat iei k a
n
. Daca raspunsul este FALSE, a
n
nu poate apart ine sumei pe care o
cautam. Daca nsa se obt ine TRUE, a
n
trebuie sa e n suma, deoarece toate elementele
a
i
ramase nu pot depasi n suma pe k. Vom deni
k
1
=

k daca a
n
> k
k a
n
daca a
n
k
si repetam procedeul pentru k si a
1
. Algoritmul se va opri la valoarea a
1
.
Sa presupunem ca avem vectorul rucsac cu crestere mare
A = (1, 3, 5, 11, 21, 44, 87, 175, 349, 701)
si vrem sa decodicam mesajul 278. Vom parcurge 10 pasi, sumarizat i n tabelul:
Numar Componenta lui A Bit rezultat
278 701 0
278 349 0
278 175 1
103 87 1
16 44 0
16 21 0
16 11 1
5 5 1
0 3 0
0 1 0
Deci se obt ine secvent a binara 00110 01100 care - conform codicarii din Exemplul 8.3
corespunde perechii de litere FL.
Daca se foloseste nsa public o astfel de informat ie, orice utilizator inclusiv Oscar
poate decripta mesajele folosind un algoritm liniar. Ori s-a presupus (n prima prelegere)
6 PRELEGEREA 8. CRIPTARE CU CHEIE PUBLIC

A
ca pentru orice intrus aarea mesajului clar trebuie sa se reduca la rezolvarea unei prob-
leme NP - complete.
Exemplul 8.5 Pentru sistemul bazat pe problema rucsacului, Bob va proceda astfel: va
alege un numar m (m >
m

i+1
a
i
) numit modul si un numar t, (m, t) = 1 numit multipli-
cator. Exista atunci un numar s astfel ca m s 1 (mod m).
Plecand de la vectorul cu crestere mare A = (a
1
, a
2
, . . . , a
n
) Bob genereaza vectorul
B = (b
1
, b
2
, . . . , b
n
) unde b
i
= t a
i
(mod m).
Vectorul B este declarat public pentru criptare, iar m, t si s vor forma trapa secreta a
lui Bob.
Astfel, daca luam m = 1590 si t = 43, vectorul cu crestere mare
A = (1, 3, 5, 11, 21, 44, 87, 175, 349, 701)
devine
B = (43, 129, 215, 473, 903, 302, 561, 1165, 697, 1523),
adica cel prezentat n exemplul 8.3.

In plus, s = t
1
= 37.
3
Cum se va proceda: Cel care doreste sa trimita lui Bob un mesaj criptat va folosi
vectorul rucsac B si va cripta mesajul x n y = B B
T
x
, conform Exemplului 8.3.
La recept ie, Bob va calcula ntai z = s y (mod m), dupa care va decripta mesajul z
folosind vectorul cu crestere mare A. Se poate arata usor ca solut ia este chiar x.
Astfel, de exemplu Alice poate cripta mesajul FL n 2414 (cf. Exemplului 8.3). La
primirea acestui numar, Bob va determina ntai s 2414 = 37 2414 (mod 1590) = 278.

In
Exemplul 8.4 s-a vazut ca decriptarea mesajului 278 cu vectorul A conduce la textul clar
FL.
Putem trasa acum cateva principii generale de construire a unui sistem de criptare cu
cheie publica:
1. Se ncepe cu o problema dicila P; rezolvarea lui P este imposibila n conformitate
cu teoria complexitat ii (nu se cunoaste nici un algoritm de complexitate polinomiala
care sa rezolve P).
2. Se selecteaza o subproblema P
1
a lui P, rezolvabila n timp polinomial (preferabil
liniar).
3. Se aplica o transformare problemei P
1
astfel ncat sa se obt ina o problema P
2
care
sa nu semene cu P

dar sa e foarte apropiata de problema P.


3
Pentru calculul inversului unui numar se poate folosi algoritmul lui Euclid. Vom dezvolta mai tarziu
aceasta idee.
8.4. SECURITATEA SISTEMELOR DE CRIPTARE CU CHEIE PU-BLIC

A 7
4. Se face publica problema P
2
si se descrie algoritmul de criptare bazat pe aceasta.
Informat ia referitoare la modul n care se obt ine P
1
din P
2
este o trapa secreta.
5. Se construiesc detaliile sistemului de criptare, astfel ncat principiile de lucru sa
difere esent ial pentru destinatar fat a de criptanalist; astfel, n timp ce primul va
folosi trapa secreta si va rezolva problema P
1
, al doilea va trebui sa rezolve problema
P
2
, imposibila datorita asemanarii ei cu problema P.

In funct ie de aceste principii generale, aparn detalii de construct ie multe alte probleme
pe care constructorii sistemelor de criptare trebuie sa le rezolve.
8.4 Securitatea sistemelor de criptare cu cheie pu-
blica

In majoritatea sistemelor de criptare, aparatul matematic folosit este bazat pe teoria nu-
merelor, teoria funct iilor recursive si teoria probabilitat ilor. Pe o scara mult mai restransa
apar funct iile eliptice, teoria automatelor, calcul neconvent ional (cuantic, molecular etc).
Sistemele de criptare cu cheie publica un avantaj major fat a de sistemele clasice: aici
nu mai este necesar efortul transmiterii cheii. Un contact prealabil ntre Alice si Bob
pentru a pune la punct detaliile sistemului de criptare este inutil.
Un sistem de criptare cu cheie publica nu ofera nsa o securitate absoluta. Aceasta
se datoreaza faptului ca Oscar poate oricand sa dispuna de atacuri pasive sau active.
Anume:
Daca criptanalistul dispune de un text criptat y, el poate cauta exhaustiv un text
clar x astfel ca e
K
(x) = y. Singura aparare contra unui astfel de atac consta n
gradul de complexitate al sistemului.
Un criptanalist activ poate efectua cu succes un atac de tipul meet in the middle. Sa
presupunem ca Alice si Bob doresc sa stabileasca un contact. Ei fac publice cheile de
criptare e
A
respectiv e
B
. Daca contactul este nepersonalizat, Oscar poate controla
mesajele schimbate ntre cei doi, n felul urmator:
Alice
Oscar
Bob
? - -
6
6

6
-
?
(e
A
, e
B
)
e
1
B
e
1
A
y
1
= e
1
B
(m) y = e
B
(m)
1. Oscar opacizeaza printr-un mijloc oarecare aceste chei, si trimite lui Alice
cheia e
1
B
ca din partea lui Bob; substituie similar pentru Bob cheia e
A
cu
e
1
A
.
8 PRELEGEREA 8. CRIPTARE CU CHEIE PUBLIC

A
2. Fie m mesajul pe care Alice vrea sa l trimita lui Bob. Ea va cripta si va trimite
y
1
= e
1
B
(m).
3. Oscar intercepteaza mesajul (reamintim, toate canalele sunt nesigure) si aa
m = d
1
B
(y
1
).
4. Oscar recripteaza y = e
B
(m) si trimite y lui Bob.
Binent eles, Oscar poate modica sau ntarzia mesajul m daca doreste.
Din aceasta cauza, aproape n toate sistemele de criptare cu cheie publica apare nece-
sitatea autenticarii mesajului sau a expeditorului, precum si aceea a condent ialitat ii.
Denit ia 8.1 Condent ialitatea
4
asigura accesul la informat ie doar part ilor autorizate
de a avea acest acces.
Denit ia 8.2 Autenticarea
5
este procesul prin care un calculator (program de calculator
sau alt utilizator) ncearca sa conrme unui destinatar ca mesajul primit de acesta vine
(sau nu vine) din partea sa.
Metodele prin care un expeditor uman se poate autentica sunt clasicate n:
1. ceva ce utilizatorul este (de exemplu amprente digitale, de retina, de voce, secvent a
DNA, recunoasterea semnaturii, identicatori biometrici).
2. ceva de utilizatorul are (de exemplu card ID, date de securitate soft pe calculator
sau telefon).
3. ceva ce utilizatorul stie (de exemplu un password, o parola, un numar de identi-
care - PIN).
4. Orice combinat ie ntre metodele anterioare (de exemplu un card bancar cu PIN
asigura o dubla autenticare).
Alt termen frecvent utilizat este cel de integritate. El se refera la validitatea datelor.
Denit ia 8.3 Integritatea este sigurant a ca datele la care se refera un utilizator pot
accesate si pot modicate numai de cei autorizat i sa o faca.

In general integritatea poate compromisa n doua moduri:


1. Prin alterare intent ionata (de exemplu modicarea unui cont bancar, a unei adrese
de e-mail, a unui document de indetitate);
4
conform International Standards Organization (ISO)
5
de la grecescul authentes = author
8.5. COMPARAT IE

INTRE CRIPTAREASIMETRIC

ASI CEACUCHEIE PUBLIC

A9
2.

In mod accidental (transmisii perturbate de zgomote de canal, zgarierea harddiscului)
6
.
Sa presupunem ca Alice si Bob sunt doi utilizatori, cu posibile conicte de interese.
cand Alice trimite un mesaj lui Bob, ambele part i trebuie sa se asigure ca:
Mesajul nu este trimis de o tert a persoana care pretinde a Alice;
Bob sa nu poata obliga pe Alice sa t ina cont de mesaje care nu-i apart in, iar Alice
sa poata recunoaste public propriile mesaje.

Intr-o oarecare masura, cele doua condit ii sunt contradictorii: conform primei condit ii,
Bob trebuie sa stie ceva despre modul de criptare al lui Alice, care i va permite sa
autentice mesajul, iar conform celei de-a doua condit ii, el nu trebuie sa stie prea mult.
O modalitate frecvent utilizata pentru autenticarea mesajelor este folosirea codurilor de
autenticare.
Exemplul 8.6 MAC-ul (Message Authentication Code) denit n cadrul sistemului de
criptare DES este o varianta prin care se poate asigura atat autenticitatea cat si integri-
tatea mesajului.
Daca se solicita si autenticarea partenerilor, atunci se foloseste de obicei semnatura
electronica.
Exemplul 8.7 Sa presupunem ca Alice vrea sa trimita lui Bob mesajul m. Daca se
foloseste un sistem de criptare cu cheie publica n care funct iile de criptare/decriptare
sunt comutative, iar (e
A
, d
A
), (e
B
, d
B
) sunt perechile (cheie publica,cheie privata) ale celor
doi, ei pot urma urmatorul protocol:
1. Alice trimite lui Bob y
1
= e
A
(m);
2. Bob trimite lui Alice y = e
B
(y
1
);
3. Alice trimite lui Bob d
A
(y) = e
B
(m);
4. Bob calculeaza d
B
(e
B
(m)) = m si aa mesajul.
Se observa ca sunt vericate cele doua condit ii de autenticare si n plus protocolul
rezista unui atac de tip meet-in-the-middle.
Daca dorim sa folosim un singur contact, Alice poate trimite mesajul y = e
B
(d
A
(m)).
La recept ie, Bob va folosi propria sa cheie pentru decriptare, impreuna cu cheia public a a
lui Alice. Metoda merge si pentru sisteme de criptare necomutative.
8.5 Comparat ie ntre criptarea simetrica si cea cu
cheie publica
Avantaje ale sistemelor de criptare cu cheie simetrica:
6
De recuperarea informat iei pierdutan acest mod se ocupa Teworia Codurilor detectoare si corectoare
de erori.
10 PRELEGEREA 8. CRIPTARE CU CHEIE PUBLIC

A
1. Pot transmite volume mari de date. Exista implementari hard care pentru unele
sisteme de criptare pot asigura rate de criptare de sute de mega-octet i pe secunda
(sunt si implementari soft cu rate de mega-octet i pe secunda).
2. Cheile sunt relativ scurte.
3. Pot folosite ca baza de construct ie a diverselor mecanisme de criptare, cum ar
generatori de numere pseudo-aleatoare, generatori de funct ii de dispersie, scheme
de semnatura.
4. Prin compunere pot conduce la sisteme de criptare puternice.
5. Au o istorie bogata n evenimente si experient a.
Dezavantaje ale sistemelor de criptare cu cheie simetrica:
1. Cheia trebuie sa ramana permament secreta n (cel putn) doua locuri distincte.
2. Cu cat lungimea unui mesaj criptat este mai mare, cu atat el este mai usor de spart.
3.

In ret ele mari, o gestionare a cheilor devine extrem de dicila.
4. Necesita un canal sigur de comunicare, cel put in pentru transmiterea cheii. Acest
lucru devine dicil mai ales pentru sistemele care necesita schimbari frecvente ale
cehilor de criptare/decriptare.
Avantaje ale sistemelor de criptare cu cheie punlica
1. Sistemul este ideal pentru transmiterea informat iei prin canale nesigure.
2. Sistemele cu cheie publica sunt simplu de denit si elegante matematic.
3. Doar cheia de decriptare trebuie t inuta secreta, la un singur punct (destinatar).
4.

In funt ie de modul de utilizare, o pereche de chei (publica,privata) poate pastrata
o perioada mai lunga de timp.
5. Conduc la aplicat ii de mare ntindere: semnaturi electronice, algoritmi de autenti-
care, componente de comert electronic etc.
Dezavantaje ale sistemelor de criptare cu cheie publica:
1. Sunt semnicativ mai lente decat sistemele simetrice.
2. Sunt necesare chei de lungimi mult mai mari.
3. Nu se poate garanta securitatea absoluta a nici unei scheme de criptare cu cheie
publica.
8.5. COMPARAT IE

INTRE CRIPTAREASIMETRIC

ASI CEACUCHEIE PUBLIC

A11
4. Implementarea trebuie realizata cu foarte mare grija. Sisteme cu grad ridicat teo-
retic de securitate pot sparte usor printr-o implementare neglijenta.
Dupa cum se observa, cele doua clase de sisteme de criptare dispun de o serie de avantaje
complementare. Acest lucru face ca ele sa e folosite combinat.
Exemplul 8.8 Multe sisteme de criptare ncep comunicarea transmit and via un sistem cu
cheie publica, cheia unui sistem simetric.

In faza a doua, mesajele sunt criptate folosind
sistemul simetric de criptare. Aceasta asigura o viteza mult mai mare de transmitere si
un spor de autentcitate a mesajelor.
12 PRELEGEREA 8. CRIPTARE CU CHEIE PUBLIC

A
Bibliograe
[1] W. Die, M.E. Hellman - New Directions in Cryptography, IEEE Transactions on
Information Theory, IT-22, 6 (1976), pp. 644-654
[2] D. Stinton - Cryptographie, theorie et pratique, International Thompson Publishing
France, 1995
[3] A. Salomaa - Criptograe cu chei publice, ed. Militara, 1994
[4] P versus NP homepage, http://www.win.tue.nl/ gwoegi/P-versus-NP.htm
[5] http://en.wikipedia.org/wiki/Complexity classes P and NP
13
Prelegerea 10
Sistemul de criptare RSA
10.1 Descrierea sistemului RSA
Sistemul de criptare RSA (Rivest - Shamir - Adleman) este n acest moment cel mai
cunoscut si uzitat sistem cu cheie publica
1
. Aceasta se datoreazan primul rand modalit at ii
foarte simple de criptare si decriptare, care se realizeaza similar cu aceleasi module de
calcul (proprietate ntalnita n special la multe sisteme simetrice).
Iata n ce consta sistemul de criptare RSA:
Fie p, q numere prime impare distincte si n = pq.
Indicatorul sau Euler este (n) = (p 1)(q 1).
Fie P = C= Z
n
. Se deneste
K= {(n, p, q, a, b)| n = pq, ab 1 (mod (n))}
Pentru K = (n, p, q, a, b) se denesc (x, y Z
n
):
e
K
(x) = x
b
(mod n)
si
d
K
(y) = y
a
(mod n)
Valorile n si b sunt publice, iar p, q si a sunt secrete.
Deoarece ab 1 (mod (n)), avem ab = t(n) + 1.
Atunci, pentru un x Z

n
= Z
n
\ {0}, putem scrie (toate calculele se fac n Z
n
):
(x
b
)
a
x
t(n)+1

_
x
(n)
_
t
x 1
t
x x.
Pentru x = 0 armat ia este banala.
Exemplul 10.1 Sa presupunem ca Bob alege p = 101, q = 113. Atunci n = 11413, (n) =
11200. Deoarece 11200 = 2
6
5
2
7, un numar b poate utilizat ca exponent de criptare daca
1
Sistemul este prezentat n 1977 de Ron Rivest, Adi Shamir si Len Adleman n cadrul unui proiect
de cercetare la MIT. Totusi, dupa declasicarea n 1997 a unor documente din Marea Britanie, se pare
ca matematicianul Cliord Cocks a elaborat n 1973 un sistem echivalent, prezentat ntr-un document
intern GCHQ (Government Communications Headquarters).
1
2 PRELEGEREA 10. SISTEMUL DE CRIPTARE RSA
si numai daca nu este divizibil cu 2, 5 sau 7 (practic, Bob nu trebuie sa factorizeze (n);
este sucient sa verice daca ((n), b) = 1 folosind algoritmul lui Euclid). Fie de exemplu
b = 3533. Avem atunci b
1
= 6597 mod 11200.
Deci, exponentul (secret) de decriptare este a = 6597.
Bob face public n = 11413 si b = 3533.
Daca Alice doreste sa-i transmita lui Bob mesajul 9726, ea calculeaza
9726
3533
mod 11413 = 5761
si trimite prin canal textul criptat 5761. Cand Bob primeste acest numar, el determina
5761
6597
mod 11413 = 9726.
Securitatea sistemului de criptare RSA se bazeaza pe ipoteza ca funct ia e
K
(x) = x
b
mod n
este neinversabila din punct de vedere al complexitat ii, deci este imposibil pentru Oscar
sa o determine. Trapa secreta de care dispune Bob pentru decriptare este descompunerea
n = pq. Deoarece Bob stie aceasta factorizare, el poate calcula (n) = (p 1)(q 1)
si apoi determina exponentul de decriptare a folosind algoritmul lui Euclid extins (a se
vedea Anexa).
10.2 Implementarea sistemului RSA
Pentru a realiza criptarea, Bob trebuie sa efectueze urmatorii pasi (ecare din ei va
detaliat mai tarziu):
Tabelul 10.1:
1. Genereaza doua numere prime mari p, q;
2. Calculeaza n = pq si (n) = (p 1)(q 1);
3. Alege aleator un numar b (1 < b < (n)) astfel ca (b, (n)) = 1;
4. Calculeaza a = b
1
mod (n) folosind algoritmul lui Euclid;
5. Face public n si b.
Un atac evident al sistemului consta n ncercarea de factorizare a lui n. Daca se
realizeaza aceasta, este usor de determinat (n) = (p1)(q 1) si de calculat exponentul
de decriptare a plecand de la b.
Deci, pentru ca sistemul RSA sa e sigur, este necesar ca n sa e sucient de mare
pentru ca factorizarea sa sa e imposibila (din punct de vedere al complexitat ii). Algo-
ritmii de factorizare actuali pot descompune numere de pana la 200 cifre zecimale. Se
10.2. IMPLEMENTAREA SISTEMULUI RSA 3
recomanda de aceea pentru sigurant a sa se lucreze cu numere prime p si q de cel put in
300 cifre ecare, deci n va avea peste 500 cifre. Aproape toate implementarile actuale ale
sistemului folosesc chei de 1024 2048 bit i
2
.
Cu intent ia ca vom reveni asupra problemelor legate de numere prime mari, sa studiem
ntai operat iile necesare pentru criptare si decriptare. Orice astfel de calcul se bazeaza
pe o exponent iere modulo n. Cum n este foarte mare, vom utiliza aritmetica numerelor
mari pentru lucrul n Z
n
, timpul de calcul necesar ind direct proport ional cu numarul
de bit i ai lui n.
Daca n ocupa k bit i n memorie (deci k = [log
2
n] + 1), prin metode de calcul uzuale
se ajunge la concluzia ca suma a doua numere de k bit i se face n O(k), iar nmult irea n
O(k
2
). La fel si reducerea modulo n. Deci, pentru x, y Z
n
, numarul xy mod n se poate
determina prin calcule de complexitate O(k
2
). Conform prelegerii anterioare, vom numi
aceasta multiplicare modulara.
Sa cercetam acum exponent ierea modulara x
c
mod n. O modalitate de calcul consta n
efectuarea de c1 multiplicari modulare - proces foarte inecient pentru c mare, deoarece
algoritmul devine de complexitate exponent iala.
Exista nsa un algoritm de exponent iere rapida, care realizeaza x
c
mod n cu complex-
itate O(k
3
) (deci polinomial). Acesta utilizeaza descompunerea binara a lui c,
c =
s1

i=0
c
i
2
i
unde s (s k) este numarul de bit i ai lui c, iar c
i
{0, 1}. Exponent ierea se face doar
prin ridicari la patrat si maxim s nmult iri modulare, conform algoritmului:
z 1;
for i s 1 downto 0 do
z z
2
mod n;
if c
i
= 1 then z z x mod n
Exemplul 10.2 Sa reluam datele din Exemplul 10.1. Calculul lui 9726
3533
mod 11413 se
efectueaza cu algoritmul de sus n numai 12 pasi; anume:
2
Un numar n de maxim 256 bit i poate factorizat de un PC obisnuit n cateva ore, folosind un soft
free. Daca n are pana la 512 bit i, el poate factorizat folosind o ret ea de cateva sute de calculatoare,
conform unei scheme prezentate n 1999.

In 2003 a fost pusa sub semnul ntrebarii securitatea modulelor
de 1024 bit i.
4 PRELEGEREA 10. SISTEMUL DE CRIPTARE RSA
i c
i
z
11 1 1
2
9726 = 9726
10 1 9726
2
9726 = 2659
9 0 2659
2
= 5634
8 1 5634
2
9726 = 9167
7 1 9167
2
9726 = 4958
6 1 4958
2
9726 = 7783
5 0 7783
2
= 6298
4 0 6298
2
= 4629
3 1 4629
2
9726 = 10185
2 1 10185
2
9726 = 105
1 0 105
2
= 11025
0 1 11025
2
9726 = 5761
Deci textul clar 9726 este criptat de Alice n 5761.
Pentru aplicarea sistemului de criptare RSA, trebuiesc generate ntai numerele prime
p, q - despre care ne ocupam n sect iunea urmatoare. Etapa a doua (din Tabelul 10.1) se
efectueaza evident n O((log
2
n)
2
). Etapele 3 si 4 folosesc algoritmul lui Euclid extins. Ca
rezultat general, calculul celui mai mare divizor comun (a, b) cu a > b se poate realiza cu
complexitatea O((log
2
a)
2
).

In general, un algoritm RSA este cam de 1000 ori mai lent decat DES pentru o
implementare harwdare, cam de 100 ori la o implementare software.

In [3] se dau cateva
tabele cu astfel de valori comparative, la nivelul anului 1995.
10.3 Teste de primalitate probabiliste

In realizarea sistemului de criptare RSA trebuiesc generate aleator numere prime cu numar
mare de cifre. Practic, se realizeaza aleator numere, a caror primalitate se testeaza, pana se
ajunge la un numar prim. Pentru teste se folosesc algoritmi probabilisti al caror avantaj
este rapiditatea (complexitatea lor este log n) dar care pot arma uneori primalitatea
unor numere care nu sunt prime. Aceste erori se pot reduce la o marja acceptabila prin
multiplicarea testelor.
Problema generarii aleatoare este posibila din urmatorul considerent. Un rezultat din
teoria numerelor (numit Teorema rareerii numerelor prime) arma ca sunt circa n/log n
numere prime mai mici decat n. Astfel, pentru un modul de 512 bit i, un numar p de 256
bit i are o probabilitate 1/logp 1/177 de a prim. Deci se fac n medie cam 177 gener ari
de numere p pentru a obt ine un numar prim (daca se foloseste si faptul ca se genereaza
numai numere impare, aceasta reduce la jumatate numarul de ncercari). Rezulta ca este
practic sa se construiasca numere mari, care sunt probabil prime, pe baza carora sa se
realizeze criptarea RSA. Vom detalia acest procedeu.
Denit ia 10.1 O problema de decizie este o problema care pune o ntrebare al carui
raspuns este dicotomic (Da/Nu).
10.3. TESTE DE PRIMALITATE PROBABILISTE 5
Un algoritm probabilist este un algoritm care foloseste numere aleatoare.
Denit ia 10.2 Un algoritm Monte - Carlo pozitiv este un algoritm probabilist care re-
zolva o problema de decizie n care orice raspuns pozitiv este corect, dar pentru care un
raspuns negativ poate incorect.

In mod similar se deneste algoritmul Monte - Carlo negativ.


Un algoritm Monte - Carlo pozitiv are o probabilitate de eroare daca pentru orice
problema al carei raspuns ar trebui sa e pozitiv, algoritmul da un raspuns negativ cu
probabilitatea cel mult .
Problema de decizie folosita aici, numita Problema de descompunere este
Fiind dat un numar ntreg n, se poate el descompune n produs de alte numere mai
mici ?
Vom prezenta n aceasta sect iune doi algoritmi de tip Monte Carlo pozitiv care rezolva
aceasta problema de de decizie.
10.3.1 Algoritmul Solovay - Strassen
Sa reamintim ntai cateva not iuni matematice:
Denit ia 10.3 Fie p 3 numar prim si a Z

p
. Spunem ca a este rest (reziduu) patratic
modulo p daca ecuat ia x
2
a (mod p) are solut ie n Z
p
.

In caz contrar, un numar a = 0
nu este rest patratic.
Exemplul 10.3 Resturile patratice modulo 11 sunt 1, 3, 4, 5, 9 Aceasta deoarece n Z
11
avem (1)
2
= 1, (5)
2
= 3, (2)
2
= 4, (4)
2
= 5, (3)
2
= 9.
Problema resturilor patratice consta n a decide daca un numar n dat este sau nu un rest
patratic. Un algoritm determinist pentru rezolvarea acestei probleme se bazeaza pe
Teorema 10.1 (Criteriul lui Euler). Daca p 3 este prim, un numar a este rest patratic
modulo p daca si numai daca
a
p1
2
1 (mod p)
Demonstrat ie: Sa presupunem a x
2
(mod p). Cum x
p1
1 (mod p) (Teorema lui
Fermat) pentru x 0 (mod p),vom avea
a
p1
2
(x
2
)
p1
2
x
p1
1 (mod p).
Invers, e a
p1
2
1 (mod p) si b Z
p
un element primitiv (de ordin p 1). Atunci
a b
i
(mod p) pentru un anumit i. Calculam
1 a
p1
2
(b
i
)
p1
2
b
i(p1)
2
(mod p).
Ordinul p 1 al lui b va divide i(p 1)/2. Deci i este par si radacinile patrate ale lui a
sunt b
i/2
. 2
6 PRELEGEREA 10. SISTEMUL DE CRIPTARE RSA
Denit ia 10.4 Daca p 3 este prim, pentru orice numar a 0 se deneste simbolul
Legendre prin
_
a
p
_
=
_

_
0 daca a 0 (mod p)
1 daca a este rest patratic modulo p
1 daca a nu este rest patratic modulo p
Teorema 10.1 asigura ca a
(p1)/2
1 (mod p) daca si numai daca a este rest patratic
modulo p. Daca a este multiplu de p, evident a
(p1)/2
0 (mod p).

In sfarsit, daca a nu
este rest patratic modulo p, avem a
(p1)/2
1 (mod p) deoarece a
p1
1, a
(p1)/2

1 (mod p) si 1 este singura radacina patrata diferita de 1 modulo p. Este deci adevarata
teorema urmatoare:
Teorema 10.2 Daca p este numar prim impar, atunci
_
a
p
_
a
p1
2
(mod p)
Simbolul lui Legendre se poate generaliza astfel:
Denit ia 10.5 Fie n = p
e
1
1
. . . p
e
k
k
un numar impar descompus n factori primi. Daca
a 0 este un numar ntreg, se deneste simbolul Jacobi prin
_
a
n
_
=
k

i=1
_
a
p
i
_
e
i
Exemplul 10.4 Sa calculam simbolul Jacobi
_
6278
9975
_
. Descompunerea n factori primi
a lui 9975 este 9975 = 3 5
2
7 19. Avem atunci
_
6278
9975
_
=
_
6278
3
__
6278
5
_
2
_
6278
7
__
6278
19
_
=
_
2
3
__
3
5
_
2
_
6
7
__
8
19
_
= (1)(1)
2
(1)(1) =
1
Fie n > 1 un numar impar. Daca n este prim, atunci pentru orice a, avem
_
a
n
_

a
n1
2
(mod n).
Invers, daca n nu este prim, este posibil ca egalitatea de sus sa e falsa. Daca
congruent a se verica, spunem ca n este numar Euler pseudo - prim pentru baza a.
De exemplu, 91 este pseudo-prim pentru baza 10 deoarece
_
10
91
_
= 1 = 10
45
(mod 91).
Putem enunt a acum testul de primalitate Solovay - Strassen pentru un numar impar
n:
10.3. TESTE DE PRIMALITATE PROBABILISTE 7
1. Se genereaza aleator un numar a Z

n
;
2. x
_
a
n
_
;
3. if x = 0 then n nu este prim
4. y a
n1
2
(mod n);
5. if x y (mod n) then n este prim,
else n nu este prim.
Pentru evaluarea a
n1
2
(mod n) se poate folosi un algoritm de complexitate O((log n)
3
).
Problema este cum putem evalua simbolul Jacobi x
_
a
n
_
fara a factoriza pe n (altfel
ne nvartim ntr-un cerc vicios !!).
Acest lucru se poate realiza folosind cateva proprietat i. Anume:
Lema 10.1 Fie n un ntreg pozitiv impar. Atunci
1. Daca x y (mod n) atunci
_
x
n
_
=
_
y
n
_
;
2.
_
2
n
_
=
_
1 daca n 1 (mod 8)
1 daca n 3 (mod 8)
3.
_
x y
n
_
=
_
x
n
_

_
y
n
_
;
Lema 10.2 Fie m, n doua numere ntregi pozitive impare. Atunci
_
m
n
_
=
_
_
_

_
n
m
_
daca m n 3 (mod 4)
_
n
m
_
altfel
Lasam ca exercit iu demonstrat iile celor doua leme.
Exemplul 10.5 Sa calculam simbolul Jacobi
_
7411
9283
_
. Vom avea succesiv:
_
7411
9283
_
=
_
9283
7411
_
=
_
1872
7411
_
=
_
2
7411
_
4
_
117
7411
_
=
_
117
7411
_
=
_
7411
117
_
=

_
40
117
_
=
_
2
117
_
3
_
5
117
_
=
_
5
117
_
=
_
117
5
_
=
_
2
5
_
= 1
8 PRELEGEREA 10. SISTEMUL DE CRIPTARE RSA
O analiza sumara arata ca se poate calcula simbolul Jacobi
_
m
n
_
folosind cel mult O(log n)
reduceri modulare, ecare n timp O((log n)
2
). Deci complexitatea poate estimata la
O((log n)
3
)
3
.
Se poate arata ca numarul de baze a pentru care un numar neprim n este pseudo -
prim Euler, este cel mult n/2. Aceasta duce la concluzia ca testul de primalitate Solovay
- Strassen este un algoritm Monte Carlo pozitiv pentru problema de descompunere, cu
probabilitate de eroare 1/2. Un studiu referitor la complexitatea aplicarii acestui test de
primalitate si a probabilitat ii de eroare se poate gasi n [1].
10.3.2 Algoritmul Miller - Rabin
Acest algoritm este cunoscut si sub numele de testul de tare pseudo - primalitate. Forma
sa este:
1. Se descompune n 1 = 2
k
m unde m este impar;
2. Se alege aleator ntregul a [2, n 2];
3. b a
m
(mod n)
4. if b 1 (mod n) then n este prim, Stop;
5. for i 0 to k 1 do
6. if b 1 (mod n) then n este prim, Stop,
else b b
2
(mod n)
7. n nu este prim, Stop
Evident, algoritmul este polinomial, de complexitate O((log n)
3
).
Teorema 10.3 Algoritmul Miller - Rabin este un algoritm Monte Carlo pozitiv pentru
problema de descompunere.
Demonstrat ie: Sa presupunem prin absurd ca algoritmul raspunde ca un numar prim n
se poate descompune, adica a
m
1 (mod n). Vom urmari sirul de valori pe care le ia b.
Cum la ecare iterare b este ridicat la patrat, acest sir este a
m
, a
2m
, . . . , a
2
k1
m
. Vom avea
deci
a
2
i
m
1 (mod n) pentru 0 i k 1.
3
O analiza mai detaliata poate reduce aceasta complexitate la O((log n)
2
).
10.3. TESTE DE PRIMALITATE PROBABILISTE 9
Deoarece n este prim, teorema lui Fermat da a
2
k
m
1 (mod n). Deci a
2
k1
m
este o
radacina patrata a lui 1 modulo n.
Din faptul ca n este prim, singurele radacini patrate ale lui 1 sunt 1. Aceasta
armat ie se poate arata astfel:
x este radacina patrata a lui 1 daca si numai daca n|(x 1)(x +1). Cum n este prim,
avem n|(x 1) (deci x 1 (mod n)) sau n|(x + 1) (adica x 1 (mod n)).
Cum prin ipoteza a
2
k1
m
1 (mod n), avem a
2
k1
m
1 (mod n).
Atunci a
2
k2
m
trebuie sa e radacina patrata a lui 1, diferita de 1, deci
a
2
k2
m
1 (mod n).
Proced and iterativ, se ajunge la a
m
1 (mod n), ceea ce contrazice faptul ca algorit-
mul nu s-a oprit la Pasul 4.
Daca n este un numar impar neprim, atunci maxim 1/4 din numerele a Z

n
conduc
la un rezultat fals.

In [4] se apreciaza ca numarul maxim de astfel de valori este (n)/4,
pentru n = 9.
De exemplu, pentru n = 91 (neprim), mult imea valorilor a pentru care algoritmul
da raspuns incorect este {9, 10, 12, 16, 17, 22, 29, 38, 53, 62, 69, 74, 75, 79, 81, 82}. Pentru
n = 105 orice valoare a lui a conduce la un rezultat corect.
Deci, algorituml Miller-Rabin este un algoritm Monte-Carlo pozitiv de probabilitate
= 1/4. 2

In general se considera ca testul Miller - Rabin este mai bun decat Solovay - Strassen.
Cateva motive:
1. Solovay - Strassen este computat ional mai complex.
2. Implementarea lui Solovay - Strasen este mai dicila din cauza calculului simbolului
Jacobi.
3. Probabilitatea de eroare pentru Solovay - Strasen este 1/2, pe cand la Miller - rabin
ea se reduce la 1/4.
4. Deoarece orice valoare a lui a pentru care testul Miller - Rabin este gresit este
un numar Euler pseudo-prim (vezi Exercit iul 10.8), un test Miler - Rabin nu este
niciodata inferior unui test Solovay - Strasen.
Deoarece orice implementare a unui sistem RSA trebuie nsot ita de un generator de
numere prime mari, sunt necesare construct ii care sa genereze rapid astfel de numere.
Schneier propune urmatoarea varianta ([3]):
1. Se genereaza un numar aleator p de n bit i.
2. Se verica daca primul si ultimul bit sunt 1.
10 PRELEGEREA 10. SISTEMUL DE CRIPTARE RSA
3. Se verica daca p nu este divizibil cu numere prime mici (3, 5, 7, 11, . . .)
4
.
4. Se aplica testul Miller - Rabin cu o valoare aleatoare a. Daca p trece testul, se ia
alta valoare pentru a. Cinci teste sunt suciente. Pentru viteza, se recomanda sa se
ia valori mici pentru a. Daca p esueaza la unul din cele cinci teste, se reia algoritmul.
Se apreciaza ca utilizarea pasului 3, cu o testare a tuturor numerelor prime pana la 256
elimina aproape 80% din cazurile nefavorabile.
10.4 Anexa
10.4.1 Algoritmul lui Euclid extins
Dupa cum se stie, algoritmul lui Euclid constituie o modalitate ecace de determinare a
celui mai mare divizor comun a doua numere ntregi pozitive. El poate extins pentru a
determina si inversele elementelor dintr-un corp nit Z
n
.
Sa reamintim ntai algoritmul lui Euclid (forma clasica):
Fie r
0
, r
1
N

. Se efectueaza secvent a de mpart iri succesive:


r
0
= q
1
r
1
+ r
2
0 < r
2
< r
1
r
1
= q
2
r
2
+ r
3
0 < r
3
< r
2
.
.
. (1)
r
m2
= q
m1
r
m1
+ r
m
0 < r
m
< r
m1
r
m1
= q
m
r
m
.
Deoarece (r
0
, r
1
) = (r
1
, r
2
) = . . . = (r
m1
, r
m
) = r
m
, rezulta ca cel mai mare divizor
comun dintre r
0
si r
1
este r
m
.
Sa denim acum sirul t
0
, t
1
, . . . , t
m
astfel:
t
0
= 0, t
1
= 1
t
j
= t
j2
q
j1
t
j1
(mod r
0
), j 2 (2)
Teorema 10.4 Pentru 0 j m avem r
j
t
j
r
1
(mod r
0
) unde r
j
si t
j
sunt denite de
(1) respectiv (2).
Demonstrat ie: Se foloseste o induct ie dupa j. Pentru j = 0 si j = 1 armat ia este banala.
O presupunem adevarata pentru j = i 1 si j = i 2 (i 2) si sa o aratam pentru j = i.
Toate calculele se fac modulo r
0
.
Conform ipotezei de induct ie, r
i2
= t
i2
r
1
, r
i1
= t
i1
t
1
. Acum:
r
i
= r
i2
q
i1
r
i1
= t
i2
r
1
q
i1
t
i1
r
1
= (t
i2
q
i1
r
i1
)r
1
= t
i
r
1
. 2
Corolarul 10.1 Daca (r
0
, r
1
) = 1 atunci t
m
= r
1
1
(mod r
0
).
4
Multe implementari testeaza divizibilitatea cu numerele prime mai mici decat 256. Ecient a este
crescuta daca se merge pana la 2000
10.4. ANEX

A 11
Se poate da acum algoritmul extins al lui Euclid care pentru n > 1 si b Z

n
va determina
b
1
mod n (daca exista).
1. n
0
n, b
0
b, t
0
0, t 1
2. q
_
n
0
b
0
_
, r n
0
q b
0
3. while r > 0 do
3.1. temp t
0
q t
3.2. if temp 0 then temp temp (mod n)
else temp n ((temp) (mod n))
3.3. n
0
b
0
, b
0
r, t
0
t, t temp
3.4. q
_
n
0
b
0
_
, r n
0
q b
0
4. if b
0
= 1 then b nu are inversa mod n
else b
1
(mod n) = t.
Exemplul 10.6 Sa calculam 28
1
mod 75, folosind algoritmului lui Euclid extins. Vom
avea pe rand:
n
0
b
0
q r t
0
t temp
75 28 2 19 0 1 73
28 19 1 9 1 73 3
19 9 2 1 73 3 67
9 1 9 0 3 67
Deci 28
1
mod 75 = 67.
10.4.2 Teorema chineza a resturilor
Teorema 10.5 Se dau numerele p
1
, p
2
, . . . , p
r
prime ntre ele si e n = p
1
p
2
. . . p
r
. Atunci
sistemul de ecuat ii
x a
i
(mod p
i
), 1 i r
are solut ie comuna n intervalul [0, n 1].
Demonstrat ie: Pentru ecare i, (p
i
, n/p
i
) = 1; deci exista numerele y
i
astfel ncat
n
p
i
y
i
1 (mod p
i
).
De asemenea, pentru j = i, deoarece p
j
|(n/p
i
), avem
n
p
i
y
i
0 (mod p
j
).
Alegem
x =
r

i=1
n
p
i
y
i
a
i
(mod n).
12 PRELEGEREA 10. SISTEMUL DE CRIPTARE RSA
Pentru orice i, x este o solut ie a ecuat iei x a
i
(mod p
i
) deoarece n Z
p
i
avem
x =
n
p
i
y
i
a
i
= a
i
. 2
Exemplul 10.7 Fie r = 3, p
1
= 7, p
2
= 11, p
3
= 13, deci n = 1001. Notand m
i
=
n
p
i
,
avem m
1
= 143, m
2
= 91 si m
3
= 77. Folosind algoritmul lui Euclid, se obt ine y
1
=
5, y
2
= 4, y
3
= 12. Solut ia generala este atunci
x = 715a
1
+ 364a
2
+ 924a
3
(mod 1001).
De exemplu, pentru sistemul
x 5 (mod 7), x 3 (mod 11), x 10 (mod 13)
formula de sus da
x = 715 5 + 364 3 + 924 10 (mod 1001) = 13907 (mod 1001) = 894.
Vericarea se realizeaza reducand x modulo 7, 11 13.
10.5 Exercit ii
10.1 Demonstrat i lemele 10.1 si 10.2.
10.2 Fie p, q numere prime impare distincte si n = pq. Denim
(n) =
(p 1)(q 1)
cmmdc(p 1, q 1)
Folosim un sistem de criptare RSA n care s-a facut modicarea a b 1 (mod (n)).
(a) Demonstrat i ca operat iile de criptare si decriptare sunt operat ii inverse si n acest
sistem.
(b) Daca p = 37, q = 79 si b = 7, calculat i valoarea exponentului a atat n acest
sistem cat si n sistemul RSA normal.
10.3 Sa se arate ca pentru orice numar n egal cu produsul primelor k (k 2) numere
prime impare testul Miller - Rabin da rezultat corect pentru orice ntreg a [2, n 2].
10.4 O modalitate curenta de a mari viteza de decriptare foloseste teorema chineza a
restului. Sa presupunem ca n = pq si d
K
(y) = y
a
(mod n). Denim d
p
= d (mod (p
1)), d
q
= d (mod (q 1)) si M
p
= q
1
(mod p), M
q
= p
1
(mod q). Vom considera
algoritmul
1. x
p
y
d
p
(mod p);
2. x
q
y
d
q
(mod q);
3. x M
p
q x
p
+ M
q
p x
q
(mod n);
4. return(x).
10.5. EXERCIT II 13
(a) Demonstrat i ca valoarea x returnata este de fapt y
d
(mod n).
(b) Pentru p = 1511, q = 2003 calculat i d
p
, d
q
, M
p
, M
q
si apoi decriptat i textul y =
152702 folosind algoritmul din acest exercit iu.
10.5 Pentru n = 837, 851 1189 aat i numarul de baze b pentru care n este un numarul
n este Euler pseudo-prim.
10.6 Scriet i un program pentru calculul simbolului Jacobi, folosind lemele 10.1 si 10.2.
Singura operat ie de factorizare permisa este mpart irea la 2. valori de test:
_
610
987
_
,
_
20964
1987
_
,
_
1234567
11111111
_
10.7 Fie
G(n) =
_
a|a Z

n
,
_
a
n
_
a
n1
2
(mod n)
_
.
(a) Demonstrat i ca G(n) este subgrup al lui Z
n
. Deci, conform Teoremei lui Lan-
grance, daca subgrupul este propriu, atunci
|G(n)|
|Z

n
|
2

n 1
2
.
(b) Sa presupunem ca n = p
k
q, unde p si q sunt numere impare prime ntre ele, p
este prim si k 2. Fie a = 1 + p
k1
q. Demonstrat i ca
_
a
n
_
a
n1
2
(mod n).
(c) Fie n = p
1
p
2
. . . p
s
unde p
i
sunt numere prime impare distincte. Sa presupunem
ca a 1 (mod p
1
) si a 1 (mod p
2
p
3
. . . p
s
), unde u este un non-reziduu patratic modulo
p
1
(un astfel de a exista, conform teoremei chineze a restului). Demonstrat i ca
_
a
n
_
1 (mod n), a
n1
2
1 (mod p
2
p
3
. . . p
s
)
(deci a
n1
2
1 (mod n).
(d) Daca n este un numar neprim impar, aratat i ca |G(n)|
n 1
2
.
(e) Pe baza celor de mai sus, aratat i ca probabiltatea de eroare a testului de primalitate
Solovay - Strassen este cel mult 1/2.
10.8 Sa se arate ca orice numar a pentru care testul Miller - Rabin da rezultat fals este un
numar Euler pseudo-prim. Reciproca este adevarata daca si numai daca n 3 (mod 4).
14 PRELEGEREA 10. SISTEMUL DE CRIPTARE RSA
10.9 Fie p un numar prim impar si cmmdc(a, p) = 1.
a) Sa presupunem ca i 2 si b
2
a (mod p
i1
). Demonstrat i ca exista un x Z
p
unic astfel ca x
2
a (mod p
i
) si x b (mod p
i1
). Gasit i o modalitate eifcienta de calcul
a lui x.
(b) Aplicat i punctul anterior n urmatoarea situat ie: plecand de la congruent a 6
2

17 (mod 19), aat i radacinile patrate ale lui 17 modulo 19


2
si modulo 19
3
.
(c) i 1, aratat i ca numarul solut iilor congruent ei x
2
a (mod p
i
) este 0 sau 2.
10.10 Folosind algoritmul lui Euclid extins, calculat i inversele:
17
1
(mod 101), 357
1
(mod 1234), 3125
1
(mod 9987)
10.11 Fie aplicat ia u : Z
105
Z
3
Z
5
Z
7
denita prin
u(x) = (x (mod 3), x (mod 5), x (mod 7))
Sa se gaseasca o formula pentru u
1
si sa se determine cu ajutorul ei u
1
(2, 2, 3).
10.12 Sa se rezolve sistemul de congruent e
x 12 (mod 25), x 9 (mod 26), x 23 (mod 27)
10.13 Sa se rezolve sistemul de congruent e
13 x 4 (mod 99), 15 x 56 (mod 101)
Bibliograe
[1] D. Stinton, Cryptography, Theory et Pratice, Second Edition, Chapman & Hall/CRC
2002
[2] A. Salomaa, Criptograe cu chei publice, Ed. Militara, 1994
[3] B. Schneier, Applied Cryptography, Second Edition, John Wiley & Sons, 1996
[4] A. Menezes, P. Oorschot, S. Vanstome, Handbook of Applied Cryptography,
[5] R. Rivest, A. Shamir, L. Adleman, A Method for Obtaining Digital Signatures and
Public-Key Cryptosystems, Communications of the ACM, Vol. 21 (2), 1978, pages
120126.
15
Prelegerea 11
Securitatea sistemului RSA
Vom trece n revista cateva modalitat i de atac ale sistemelor de criptare RSA.
Ca o prima observat ie, RSA nu rezista la un atac de tipul meet-in-the middle, strategia
ind cea prezentata n cazul general al sistemelor de criptare cu cheie publica. De aceea,
un sistem RSA este nsot it permanent de un certicat generat conform unui protocol
PKI (Public Key Infrastructure) si binent eles de un generator de numere prime.
11.1 Informat ii despre p si q
Evident, cunoasterea lui (n) este sucienta pentru spargerea sistemului.

In acest caz,
totul se reduce la rezolvarea n N

timesN a sistemului
_
pq = n
(p 1)(q 1) = (n)
sau - dupa substitut ie - a ecuat iei
X
2
(n (n) + 1)X + n = 0
Deci, daca Oscar determina (n), el poate factoriza n si sparge sistemul. Cu alte cuvinte,
calculul lui (n) nu este mai simplu decat factorizarea lui n.
De asemenea, o slabiciune consta n alegerea unor numere p, q prime apropiate unul
de altul.

In acest caz (cu p > q), vom avea (p q)/2 un numar foarte mic, iar (p + q)/2
un numar foarte apropiat de

n.

In plus,
(p + q)
2
4
n =
(p q)
2
4
,
deci membrul stang este patrat perfect.
Atunci, pentru factorizarea lui n se testeaza toate numerele ntregi x >

n pana se
gaseste unul astfel ncat x
2
n este patrat perfect; e acesta y
2
. Atunci vom avea imediat
p = x + y, q = x y.
1
2 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
Exemplul 11.1 Pentru n = 97343 se gaseste

n = 311, 998. Apoi 312
2
n = 1, ceea ce
conduce la factorizarea p = 313, q = 311.
Deci, n general este recomandabil ca cele doua numere prime p si q sa difere prin lungime.
11.2 Exponentul de decriptare
11.2.1 Factorizarea modulului stiind exponentul de decriptare
Daca exist a un algoritm care calculeaza exponentul de decriptare a, acesta poate utilizat
ca oracol
1
ntr-un algoritm probabilist care descompune n. Deci, se poate spune ca daca
a este descoperit, secretul factorizarii lui n este compromis; deci Bob va trebui sa schimbe
nu numai exponentul de decriptare, ci si modulul n.
Algoritmul de descompunere care va descris este de tip Las Vegas.
Denit ia 11.1 Fie (0 < 1). Un algoritm tip Las Vegas este un algoritm probabilist
care, pentru orice aparit ie a unei probleme, poate oferi un raspuns - totdeauna corect -
sau poate esua si sa nu dea nici un raspuns, cu probabilitate .
Observat ia 11.1 Un algoritm Las Vegas poate sa nu dea raspuns, dar daca da - acest
raspuns este sigur corect. Algoritmii Monte Carlo n schimb dau totdeauna raspuns, desi
acesta uneori este incorect.
Deci, daca avem un algoritm Las Vegas pentru rezolvarea unei probleme, putem sa l
apelam de mai multe ori, pana se obt ine un raspuns. Probabilitatea ca el sa nu raspunda
la m tentative consecutive este
m
.
Sa consideram un algoritm ipotetic A care calculeaza exponentul de decriptare a
plecand de la exponentul de criptare b. Se poate descrie atunci un algoritm Las Vegas
care utilizeaza A ca oracol. El este bazat pe studiul radacinilor patrate ale unitat ii modulo
n, cand n = pq, p si q ind numere prime impare.

In acest caz x
2
1 (mod p) are ca
singure solut ii x 1 (mod p). La fel, x
2
1 (mod q) are solut iile x 1 (mod q).
Din Teorema chineza a resturilor rezulta ca x
2
1 (mod n) este echivalenta cu
x
2
1 (mod p) si x
2
1 (mod q). Vom avea deci patru radacini patrate ale unit at ii
modulo n, care pot calculate cu Teorema chineza a resturilor. Doua sunt solut iile triviale
1 (mod n), iar celelalte - numite netriviale - sunt opuse modulo n.
Exemplul 11.2 Fie n = 403 = 13 31. Cele patru radacini patrate ale lui 1 modulo 403
sunt 1, 92, 311 si 402.
1
program care raspunde numai cu Da/Nu la o ntrebare - tip a utilizatorului
11.2. EXPONENTUL DE DECRIPTARE 3
Sa presupunem acum ca x este o radacina patrata netriviala a lui 1 modulo n, deci o
solut ie a ecuat iei x
2
1 (mod n). Avem
n|(x 1)(x + 1)
Dar n nu poate divide nici unul din factorii din membrul drept. Deci va trebui ca
cmmdc(x+1, n) = p, cmmdc(x1, n) = q - sau invers - cmmdc(x+1, n) = q, cmmdc(x
1, n) = p. Acest cel mai mare divizor comun se poate calcula fara a sti descompunerea
lui n, construind algoritmul de mai jos, care foloseste A ca oracol:
1. Se genereaza aleator w Z

n
, w = 1;
2. x cmmdc(w, n);
3. if x > 1 then Stop (cu p = x sau q = x);
4. a A(b);
5. Se descompune ab 1 = 2
s
r, r impar;
6. v w
r
(mod n);
7. if v 1 (mod n) then Stop (esec);
8. while v 1 (mod n) do
8.1. v
0
v;
8.2. v v
2
(mod n);
9. if v
0
1 (mod n) then Stop (esec);
else x cmmdc(v
0
+1, n), Stop (p = x sau q = x).
Deci, cunoasterea unei radacini patrate netriviale a lui 1 modulo n determina des-compunerea
lui n printr-un calcul de complexitate polinomiala.
Exemplul 11.3 Fie n = 89855713, b = 34986517, a = 82330933 si sa consideram ca
s-a tras aleator w = 5. Vom avea:
ab 1 = 2
3
360059073378795.
La pasul 6 se obt ine v = 85877701, iar la pasul 8.2, v = 1. La pasul 9 se va obt ine
atunci cmmdc(85877702, n) = 9103.
Acesta este un factor al lui n; celalalt este n/9103 = 9871.
Trebuie demonstrata urmatoarea armat ie:
Armat ia 11.1 Procedeul descris este un algoritm.
Demonstrat ie: Ca o prima observat ie, daca exista sucienta sansa si w este multiplu de p
sau q, atunci el se factorizeaza imediat (pasul 2).
Daca w este prim cu n, atunci se calculeaza succesiv w
r
, w
2r
, . . . prin ridicari succesive
la patrat, pana se ajunge la un t cu w
2
t
r
1 (mod n). Deoarece ab 1 = 2
s
r
0 (mod (n)), se stie ca w
2
s
r
1 (mod n). Deci bucla while va efectua maxim s iterat ii.
La sfarsitul buclei se va gasi o valoare v
0
1 (mod n) cu v
2
0
1 (mod n). Daca
v
0
1 (mod n), algoritmul esueaza; altfel, v
0
este o radacina patrata netriviala a lui 1
modulo n care - la pasul 12 - permite descompunerea lui n. 2
Se poate arata ([2]) ca acest algoritm se termina cu succes cu probabilitate 1/2.
4 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
11.2.2 Atacul lui Wiener

In [4] este dezvoltat un atac asupra sistemului de criptare RSA n care exponentul de
decriptare a este mic; mai exact, trebuie vericate condit iile
3a < n
1/4
, q < p < 2q.
Deci, daca n are j bit i, atunci atacul va ecient pentru orice sistem de criptare RSAn
care a are mai put in de j/4 1 bit i, iar p si q sunt sucient de apropiat i
2
.
Din condit ia a b 1 (mod (n)) rezulta ca exista un numar ntreg t astfel ca
a b t (n) = 1.
Pe de-alta parte, din n = pq > q
2
rezulta q <

n, deci
0 < n (n) = pq (p 1)(q 1) = p + q 1 < 2q + q 1 < 3q < 3

n
Pe baza acestor relat ii, putem evalua

b
n

t
a

ab tn
an

1 + t((n) n)
an

<
3t

n
an
=
3 t
a

n
Deoarece t < a (evident), vom avea 3 t < 3 a < n
1/4
si deci

b
n

t
a

<
1
a n
1/4
<
1
3 a
2
.
Rezulta ca valoarea fract iei t/a este foarte apropiata de valoarea lui b/n. Din teoria
fract iilor continue se stie ca orice aproximare sucient de buna a lui b/n este una din
convergent ele dezvoltarii n fract ie continua a lui b/n. Sa descriem acest procedeu.
Denit ia 11.2 O fract ie continua (nita) este un m-tuplu de numere naturale [q
1
, q
2
, . . . , q
m
]
care reprezinta notarea expresiei
q
1
+
1
q
2
+
1
q
3
+...+
1
q
m
Fie a, b doua numere ntregi pozitive prime ntre ele si (q
1
, q
2
, . . . , q
m
) secvent a caturilor
obt inute prin aplicarea algoritmului lui Euclid. Se verica usor ca
a
b
= [q
1
, q
2
, . . . , q
m
].
Vom spune ca [q
1
, q
2
, . . . , q
m
] este dezvoltarea n fract ie continua a lui a/b.
2
Bob poate tentat sa aleaga astfel de parametri, pentru cresterea vitezei de decriptare; reamintim,
RSA este un sistem relativ lent.
11.2. EXPONENTUL DE DECRIPTARE 5
Acum, pentru ecare j (1 j m) denim C
j
= [q
1
, q
2
, . . . , q
j
] ca ind a j-a
convergent a a lui [q
1
, q
2
, . . . , q
m
]. Fiecare C
j
se poate scrie ca un numar rat ional c
j
/d
j
,
unde valorile c
j
si d
j
se pot deni recursiv astfel:
c
j
=
_

_
1 daca j = 0
q
1
daca j = 1
q
j
c
j1
+ c
j2
daca j 2
d
j
=
_

_
0 daca j = 0
1 daca j = 1
q
j
d
j1
+ d
j2
daca j 2
Exemplul 11.4 Sa dezvoltam n fract ie continua 34/99. Folosind algoritmul lui Euclid
se obt ine [0, 2, 1, 10, 3], care este notarea fract iei
34
99
= 0 +
1
2 +
1
1+
1
10+
1
3
Convergent ele acestei fract ii sunt:
[0] = 0
[0, 2] = 1/2
[0, 2, 1] = 1/3
[0, 2, 1, 10] = 11/32
[0, 2, 1, 10, 3] = 34/99
Este adevarata urmatoarea teorema ([4],[2]):
Teorema 11.1 Daca cmmdc(a, b) = cmmdc(c, d) = 1 si

a
b

c
d

<
1
2 d
2
atunci c/d este una din convergent ele dezvoltarii n fract ie continua a lui a/b.
Sa revenim acum la sistemul de criptare RSA.

In condit iile 3a < n
1/4
si q < p < 2q,
putem da urmatorul algoritm de factorizare a lui n:
1. Plecand de la n si b (publice), se aa dezvoltarea n fract ie continua a lui b/n
(folosind algoritmul lui Euclid).
2. Se parcurg pe rand convergent ele acestei dezvoltari. Daca exista convergent a t/a
care verica t|(a b 1), se calculeaza (n) =
a b 1
t
.
3. Cu n si (n) se aa p si q conform metodei din prima sect iune a acestei prelegeri.
Daca sunt ndeplinite ipotezele de la nceputul acestui paragraf, Teorema 11.1 asigura ca
exista o convergent a care satisface pasul 2 al algoritmului.
T inand cont de observat iile anterioare, algoritmul lui Wiener poate detaliat:
6 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
Intrare: [q
1
, q
2
, . . . , q
m
] - dezvoltarea n fract ie continua a lui b/n.
Algoritm:
1 c
0
1, c
1
q
1
, d
0
0, d
1
1;
2. for j 1 to m do
2.1. if c
j
|(d
j
b 1) then
2.1.1. m (d
j
b 1)/c
j
;
2.1.2. Fie p, q radacinile ecuat iei x
2
(n m + 1)x + n = 0
2.1.3. if p, q Z
n
then return(p, q);
2.2. j j + 1;
2.3. c
j
q
j
c
j1
+ c
k2
, d
j
q
j
d
j1
+ d
j2
;
3. return(esec);
Exemplul 11.5 Sa presupunem ca n = 160523347, b = 60728973. Dezvoltarea n fract ie
continua a lui b/n este
[0, 2, 1, 1, 1, 4, 12, 102, 1, 1, 2, 3, 2, 2, 36]
Primele convergent e sunt: 0,
1
2
,
1
3
,
2
5
,
3
8
,
14
37
. . .
Primele cinci convergent e nu verica condit ia de divizibilitate. Pentru 14/37 avem
nsa:
m =
37 60728973 1
14
= 160498000
Rezolvand ecuat ia x
2
25348x +160523347 = 0 obt inem radacinile 12347 si 13001. Deci
avem factorizarea
160523347 = 12347 13001
11.3 Informat ie part iala despre textul clar
Sa studiem put in informat ia din textul clar care ar putea trada sistemul de criptare RSA.
Stiind ca y = e
K
(x), vom considera doua exemple de informat ie part iala data de y despre
x:
1. par(y) - da valoarea ultimului bit din scrierea binara a lui x;
2. jum(y) - va da 0 daca 0 x < n/2, 1 daca n/2 x n 1.
Vom arata ([3]) ca orice algoritm care poate calcula par(y) sau jum(y) poate utilizat ca
oracol pentru regasirea textului clar x. Altfel spus, a calcula una din aceste funct ii este
la fel de dicil cu a decripta tot textul y.
Faptul ca cele doua funct ii sunt polinomial echivalente rezulta din
jum(y) = par(y e
K
(2) mod n) par(y) = jum(y e
K
(2
1
) mod n)
11.3. INFORMAT IE PART IAL

A DESPRE TEXTUL CLAR 7


si din relat ia e
K
(x
1
x
2
) = e
K
(x
1
)e
K
(x
2
).
Sa aratam acum cum se poate calcula x = d
K
(y) cu ajutorul unui oracol care da
valoarea jum(y):
1. k [log
2
n];
2. for i = 0 to k do
2.1. y
i
jum(y)
2.2. y (y e
K
(2)) mod n
3. jos 0;
4. sus n;
5. for i = 0 to k do
5.1. mijloc (jos + sus)/2;
5.2. if y
i
= 1 then jos mijloc
else sus mijloc
6. x [sus]
La pasul 2 se calculeaza y
i
= jum(y (e
K
(2))
i
) = jum(e
K
(x 2
i
)) pentru 0 i [log
2
n].
Se observa ca
jum(e
K
(x)) = 0 x
_
0,
n
2
_
jum(e
K
(2x)) = 0 x
_
0,
n
4
_

_
n
2
,
3n
4
_
jum(e
K
(4x)) = 0 x
_
0,
n
8
_

_
n
4
,
3n
8
_

_
n
2
,
5n
8
_

_
3n
4
,
7n
8
_
, etc.

In acest mod, x se poate localiza printr-o cautare binara, realizata la pasii 7 11.
Exemplul 11.6 Fie n = 1457, b = 779, iar textul criptat este y = 722. Calcul am
e
K
(2) = 946. Sa presupunem ca oracolul jum din pasul 3 da urmatoarele raspunsuri:
i 0 1 2 3 4 5 6 7 8 9 10
y
i
1 0 1 0 1 1 1 1 1 0 0
Cautarea binara este realizata n tabelul:
8 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
i jos mijloc sus
0 0, 00 728, 50 1457, 00
1 728, 50 1092, 75 1457, 00
2 728, 50 910, 62 1092, 75
3 910, 62 1001, 69 1092, 75
4 910, 62 956, 16 1001, 69
5 956, 16 978, 92 1001, 69
6 978, 92 990, 30 1001, 69
7 990, 30 996, 00 1001, 69
8 996, 00 998, 84 1001, 69
9 998, 84 1000, 26 1001, 69
10 998, 84 999, 55 1000, 26
998, 84 999, 55 999, 55
Textul clar este deci x = [999, 55] = 999.
11.4 Algoritmi de descompunere n factori primi
Sunt extrem de numeroase lucrarile care trateaza descompunerea numerelor n factori
primi. De aceea aici vom face doar o trecere n revista a celor mai cunoscut i algoritmi de
factorizare.
Astfel, cel mai simplu pare a ciurul lui Eratostene care consta n ncercarea de
mpart i numarul n impar prin toate numerele ntregi impare din intervalul [3,

n]. Pentru
n < 10
12
tehnica este destul de ecienta.
11.4.1 Metoda p 1
Un algoritm simplu care se poate aplica uneori si la numere mari este metoda p 1
enunt ata de Pollard n 1974. El foloseste esent ial trei variabile de intrare: numarul
n (impar) care trebuie descompus, o margine B si un numar oarecare g [2, n 1].
Descrierea algoritmului este:
Intrare: n, B, g.
1. a g
2. for j = 2 to B do a a
j
mod n
3. d cmmdc(a 1, n)
4. if d > 1 then d este factor al lui n, Stop
else nu s-a gasit divizor al lui n
Sa vedem cum funct ioneaza acest algoritm:
Presupunem ca p este un divizor prim al lui n si ca tot i divizorii primi ai lui p 1 la
puterile la care apar n descompunerea lui p1 sunt mai mici decat B. Atunci p1|B!.
La terminarea ciclului de la pasul 2, avem
a g
B!
(mod n) deci a g
B!
(mod p)
11.4. ALGORITMI DE DESCOMPUNERE

IN FACTORI PRIMI 9
deoarece p|n. Cum g
p1
1 (mod p) conform teoremei lui Fermat (n afara de cazul
cand p|g) si cum (p 1)|B!, se obt ine a 1 (mod p).
Deci, la pasul 3 se ajunge la p|(a 1) si p|n, de unde rezulta p|d = (a 1, n).
Numarul d este un divizor netrivial al lui n (n afara de cazul a = 1 la pasul 3). Avand
un divizor netrivial d, procesul se poate itera.
Exemplul 11.7 Sa consideram n = 15770708441. Aplicand metoda p 1 cu B = 180,
se gaseste a = 11620221425, iar d = 135979. Se ajunge la descompunerea nala
15770708441 = 135979 115979.
Descompunerea a reusit deoarece 135978 are numai factori primi mici:
135978 = 2 3 131 173. Luand deci B 173 se obt ine 135978|B!.
Observat ia 11.2 Condit ia ca metoda sa funct ioneze este ca divizorii primi la puterile
la care apar n descompunerea lui p1 sa e mai mici decat b. Daca s-ar considera ca
doar divizorii primi sa verice aceasta condit ie, rezultatul ar fals. Astfel, sa consider am
p = 17 si B = 3. Atunci p 1 = 2
4
. Vom avea 2 < 3 dar 16 nu este un divixor al lui 3 !!
Pentru valori relativ mici ale lui B algoritmul este de complexitate polinomial scazuta
(O(BlogB(log n)
3
)). Daca B creste pana la

n, el va reusi totdeauna, dar nu va mai
rapid decat ciurul lui Eratostene.
Deci slabiciunea metodei rezida n faptul ca n trebuie sa admita un divizor p cu
proprietatea ca p 1 sa aiba numai factori primi mici. Pentru a rezista la acest atac, se
recomanda folosirea numerelor prime tari.
Denit ia 11.3 Se numeste numar prim tare un numar prim p care verica condit iile:
1. p 1 are un divizor prim mare r;
2. p + 1 are un divizor prim mare;
3. r 1 are un divizor prim mare.
Exista diversi algoritmi pentru generarea numerelor prime tari. Pentru exemplicare am
ales algoritmul lui Gordon:
1. Se genereaza aleator doua numere prime mari s, t distincte.
2. Se alege un numar aleator i
0
. Se aa primul numar prim de forma 2 i t + 1, unde
i i
0
, i
0
+ 1, . . .. Fie r = 2 i t + 1 acest numar prim.
3. p
0
2 (s
r2
(mod r)) s 1;
4. Se alege un numar aleator j
0
. Se aa primul numar prim de forma p
0
+ 2 j r s,
unde j j
0
, j
0
+ 1, . . .. Fie p = p
0
+ 2 j r s acest numar prim.
5. return(p)
Teorema 11.2 Numarul p generat de algoritmul Gordon este un numar prim tare.
10 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
Demonstrat ie: Cum r = s, vom avea s
r1
1 (mod r) (Fermat). Deci p
0
1 (mod r) si
p
0
1 (mod s). Acum:
(1) p 1 = p
0
+ 2 j r s 1 0 (mod r), deci p 1 are pe r drept divizor prim.
(2) p + 1 = p
0
+ 2 j r s + 1 0 (mod s), deci s este un divizor prim al lui p + 1.
(3) r 1 = 2 i t 0 (mod t), deci numarul prim t divide pe r 1. 2
Practic, generarea unui numar prim tare se realizeaza n trei pasi:
- Cu un generator de numere aleatoare, se genereaza numerele s, t, i
0
, j
0
;
- Se testeaza daca s si t sunt numere prime, folosind algoritmul Miller - Rabin;
-

In caz armativ, se aplica algoritmul lui Gordon, bazat de asemenea pe algoritmul
Miller - Rabin.
De multe ori, pentru criptarea RSA este sucient sa se foloseasca numere prime mari
p cu proprietatea ca
p 1
2
este de asemenea numar prim.
Exemplul 11.8

In practica este folosit frecvent exponentul de criptare b = 3.

In acest
caz nsa, este necesar ca p 1 si q 1 sa nu e divizibile cu 3. Rezultatul este o criptare
extrem de rapida, deoarece se foloseste o singura nmult ire modulara si o singura ridicare
la patrat modulara.
De asemenea este utilizat des si b = 2
16
+ 1 = 65537. Acest numar are numai doi de
1 n reprezentarea binara, asa ca o criptare foloseste 16 ridicari la patrat modulare si o
nmult ire modulara.
11.4.2 Algoritmul lui Dixon si sita patratica
Algoritmul lui Dixon se bazeaza pe o idee extrem de simpla: daca se pot aa doua
numere x, y cu x y (mod n) dar x
2
y
2
(mod n), atunci cmmdc(x y, n) este un
divizor netrivial al lui n.
Metoda utilizeaza o baza B de factori primi mici. Se cauta ntai mai multe numere
x pentru care divizorii primi ai lui x
2
mod n sunt n B. Se formeaza apoi produse cu
aceste numere n asa fel ca ecare factor prim al patratului produsului sa apara de un
numar par de ori. Aceasta conduce la o relat ie x
2
y
2
(mod n) care va da eventual
o descompunere a lui n.
Exemplul 11.9 Fie n = 15770708441 si alegem mult imea B= {2, 3, 5, 7, 11, 13}. Se-
lectam
8340934156
2
3 7 (mod n)
12044942944
2
2 7 13 (mod n)
2773700011
2
2 3 13 (mod n)
Daca se ia produsul acestor trei congruent e, se ajunge la
(8340934156 12044942944 2773700011)
2
(2 3 7 13)
2
(mod n)
11.5. ALTE TIPURI DE ATAC 11
Reducand cont inutul parantezelor modulo n, se obt ine
9503435785
2
546
2
(mod n).
Vom calcula acum cmmdc(9503435785 546, 15770708441) = 115759,
care va da un divizor 115759 al lui n.
Fie B= {p
1
, p
2
, . . . , p
B
}; consideram un numar C put in mai mare decat B (de exemplu
C = B + 10) si presupunem ca am gasit C relat ii de forma
x
2
j
p

1j
1
p

2j
2
. . . p

Bj
B
1 j C
Pentru ecare j se considera vectorul binar (elementele sale se iau modulo 2)

j
= (
1j
, . . . ,
Bj
) Z
B
2
.
Daca se poate determina o submult ime a acestor vectori a caror suma modulo 2 este
(0, 0, . . . , 0), patratul produsului elementelor x
j
corespunzatoare va avea ecare divizor n
B de un numar par de ori.
Exemplul 11.10 Revenind la Exemplul 11.9, cei trei vectori care se construiesc sunt

1
= (0, 1, 0, 1, 0, 0),
2
= (1, 0, 0, 1, 0, 1),
3
= (1, 1, 0, 0, 0, 1).
Se verica imediat ca
1
+
2
+
3
(0, 0, 0, 0, 0, 0) (mod 2).
Evident, a cauta o submult ime de C vectori de suma nula modulo 2 revine la a cauta o
relat ie de dependent a liniara (n Z
2
) ntre acesti vectori. Daca C > B, o asemenea relat ie
exista si poate gasita usor prin eliminare gaussiana.
Ar mai de vazut cum sa se obt ina acei x
j
pentru care x
2
j
se descompun n factori
primi din baza B. Sunt mai multe metode posibile pentru aceasta; de exemplu, ciurul
patratic - construit de Pomerance - foloseste numere ntregi de forma
x
j
= j + [

n], j = 1, 2, . . . .
De remarcat ca daca B este mare, este foarte posibil ca un ntreg x
j
sa se descompuna
n B, dar numarul acestor x
j
trebuie sa creasca pentru a cauta relat iile de dependent a.
Se arata ca alegerea optima pentru B este n jur de
_
e

logn log logn


.
11.5 Alte tipuri de atac
11.5.1 Atac bazat pe proprietat i multiplicative ale criptarii RSA
Fie m
1
, m
2
doua texte clare si c
1
respectiv c
2
textele criptate corespunzatoare. Vom avea
(m
1
m
2
)
b
m
b
1
m
b
2
c
1
c
2
(mod n)
Aceasta proprietate de hmomorsm a criptarii poate oferi unui adversar activ posibilitatea
unui atac cu text clar ales.
12 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
Sa presupunem ca Oscar vrea sa decripteze mesajul c = m
b
(mod n) trimis de Bob
lui Alice, iar Alice are amabilitatea sa i decripteze lui Oscar orice text criptat primit
(nafara de c, bineint eles). Atunci Oscar va alege un numar aleator x Z

n
, va calcula
c
1
= c x
b
(mod n) si va solicita decriptarea lui. Alice va decripta pentru el m
1
=
c
a
1
(mod n). Deoarece
m
1
c
a
1
c
a
(x
b
)
a
mx (mod n)
Oscar va aa imediat m = m
1
x
1
(mod n).
Acest tip de atac este prevenit de obicei impunand anumite structuri speciale asupra
textelor clare.
11.5.2 Atac bazat pe un exponent mic de criptare
Asa cum s-a aratat n Exemplul 11.8, pentru marirea vitezei de criptare se prefera
exponent i mici de criptare (cum este b = 3). Aceasta alegere are unele slabiciuni, care
permit atacuri n anumite condit ii.
Astfel, sa presupunem ca Alice doreste sa trimita acelasi text clar m la trei destinatari
diferit i, care au modulele n
i
, dar acelasi exponent de criptare b = 3. Deci textele criptate
vor c
i
= m
3
(mod n
i
) i = 1, 2, 3. Oscar le intercepteaza si rezolva sistemul
x c
1
(mod n
1
), x c
2
(mod n
2
), x c
3
(mod n
3
)
folosind teorema chineza a resturilor, care asigura existent a unui x [0, n
1
n
2
n
3
).
Deoarece m
3
< n
1
n
2
n
3
, va rezulta ca x = m
3
. Deci Oscar va aa textul clar m
extragand radacina de ordinul 3 din soluta x.

In general, exponent i mici de criptare asigura o securitate redusa pentru mesajele mici
m: daca m < n
1/b
atunci textul clar poate dedus din textul criptat c = m
b
calculand
radacina de ordin b a lui c.
Folosirea unui modul comun de criptare de catre mai mult i utilizatori permite de
asemenea un atac usor. Sa presupunem ca Alice trimite acelasi mesaj m catre doi utiliza-
otri care au cheile publice b
1
, b
2
dar acelasi modul n. Deci
c
1
m
b
1
(mod n), c
2
m
b
2
(mod n).
Fara a micsora generalitatea, putem presupune ca cmmdc(b
1
, b
2
) = 1. Oscar va folosi
algoritmul lui Euclid pentru a determina numerele ntregi r, s astfel ca
r b
1
+ s b
2
= 1
Unul din numerele r, s este negativ; sa presupunem ca este r (pentru s negativ se pro-
cedeaza analog). Atunci Oscar obt ine textul clar m folosind egalitatea
(c
1
1
)
r
c
s
2
m (mod n)
11.6. ALTE SISTEME DE CRIPTARE

INRUDITE CU RSA 13
11.5.3 Atacuri ciclice
Fie c = m
b
(mod n) un text criptat si k un ntreg pozitiv astfel ca
c
b
k
c (mod n)
(un astfel de k exista totdeauna, deoarece criptarea RSA este de fapt o permutare n
spat iul Z
n
al textelor clare). Rezulta ca
c
b
k1
m (mod n)
Aceasta observat ie conduce la un atac ciclic: Oscar calculeaza c
b
i
(mod n) pentru i =
1, 2, . . . pana gaseste un k astfel ca c
b
k
c (mod n). Atunci va decripta c n c
b
k1

m (mod n).
Un atac ciclic generalizat consta n aarea celui mai mic ntreg pozitiv k astfel ca
cmmdc(c
b
k
c, n) > 1. Vom avea implicat ia
c
b
k
c (mod p), c
b
k
c (mod q) = k = p
si similar
c
b
k
c (mod p), c
b
k
c (mod q) = k = q

In ambele cazuri s-a obt inut factorizarea lui n.


Pe de-alta parte, daca
c
b
k
c (mod p), c
b
k
c (mod q) = k = nsic
b
k
c (mod n)

In acest caz s-a reust i decriptarea m = c


b
k1
(mod n).
Folosirea unor numere prime tari asigura o protect ie sucienta pentru acest gen de
atac.
11.6 Alte sisteme de criptare nrudite cu RSA
11.6.1 Sistemul de criptare Rabin
Sistemul de criptare Rabin este o varianta a sistemului RSA (propusa n 1979), care ofera
o securitate de calcul echivalenta. Descrierea sa este:
Fie n = pq unde p, q sunt numere prime distincte, p, q 3 (mod 4). Se ia
P = C= Z
n
si K= {(n, p, q, B) | 0 B n 1}.
Pentru cheia K = (n, p, q, B) se denesc:
e
K
(x) = x(x + B) (mod n) d
K
(y) =

B
2
4
+ y
B
2
14 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
Observat ia 11.3 Numerele prime n cu n 3 (mod 4) se numesc numere Blum.
Exista patru texte clare distincte care se pot criptan acelasi text. Sa detaliem aceasta
armat ie:
Fie una din cele patru radacini patrate modulo n ale unitat ii, si x Z
n
. Efectuam
calculele
e
K
_

_
x +
B
2
_

B
2
_
=
2
_
x +
B
2
_
2

_
B
2
_
2
= x
2
+ Bx = e
K
(x)
(calculele s-au realizat n Z
n
, iar mpart irea la 2 si 4 s-a facut prin nmult irea n Z
n
cu 2
1
respectiv 4
1
).
Cele patru texte clare care se cifreaza n e
K
(x) sunt
x, x B, (x + B/2) B/2 si (x + B/2) B/2,
unde este o radacina patrata netriviala a unitat ii modulo n.
Vericarea este imediata.

In general, Bob nu are nici un mijloc de a distinge care din cele patru mesaje este cel
corect, daca nu dispune de informat ii suplimentare.
Sa vedem cum se realizeaza decriptarea. Bob primeste mesajul criptat y si ncearca
sa sa determine x astfel ca x
2
+ Bx y (mod n).
Aceasta este o ecuat ie de gradul doi n x. Termenul de gradul 1 se poate elimina
folosind substitut ia x
1
= x + B/2 (sau echivalent x = x
1
B/2).
Se ajunge la ecuat ia
x
2
1

B
2
4
+ y (mod n).
Notand membrul drept cu C, aceasta ecuat ie se scrie x
2
1
C (mod n). Deci decriptarea
se reduce la extragerea radacinilor patrate modulo n. Aceasta echivaleaza cu rezolvarea
sistemului
x
2
1
C (mod p) x
2
1
C (mod q)
care, prin combinarea solut iilor ecarei ecuat ii va da patru radacini patrate mo-dulo n.

Intr-o criptare corecta, C este totdeauna un rest patratic modulo p si q. Daca p


3 (mod 4), exista o formula simpla pentru extragerea radacinilor patrate dintr-un rest
patratic C modulo p. Avem (calculele se fac modulo p):
_
C
(p+1)/4
_
2
C
(p+1)/2
C
(p1)/2
C C
(s-a folosit Teorema 10.1). Avem deci cele patru radacini patratice
C
(p+1)/4
(mod p), C
(q+1)/4
(mod q)
care prin combinare pe baza teoremei chineze a resturilor dau cele patru radacini
patrate ale lui C.
11.6. ALTE SISTEME DE CRIPTARE

INRUDITE CU RSA 15
Observat ia 11.4 De remarcat ca nu se cunoaste un algoritm polinomial determinist pen-
tru extragerea radacinilor patratice modulo p pentru p 1 (mod 4); n aceasta situat ie
exista doar algoritmi Las Vegas.
Dupa determinarea acestor radacini x
1
, se aa x = x
1
B/2. Aceasta da formula de
decriptare din enunt ul metodei Rabin.
Exemplul 11.11 Fie n = 77 = 7 11 si B = 9. Funct ia de criptare este
e
K
(x) = x
2
+ 9x (mod 77)
iar cea de decriptare
d
K
(y) =
_
1 + y 43 (mod 77).
Sa presupunem ca Bob vrea sa decripteze textul y = 22. El va trebui sa determine
radacinile patrate ale lui 23 modulo 7 si 11. Cum aceste doua module sunt congruente cu
3 modulo 4, se poate aplica formula aratata anterior:
23
(7+1)/4
2
2
4 (mod 7) 23
(11+1)/4
1
3
1 (mod 11).
Utilizand teorema chineza a resturilor, se obt in radacinile patrate ale lui 23 modulo 77:
11 2 a + 7 8 b (mod 77)
unde a = 4, b = 1. Calculand, se obt in valorile 10, 32. Cele patru texte clare
posibile (calculate modulo 77) vor deci:
10 43 = 44, 67 43 = 24, 32 43 = 66, 45 43 = 2.
Se verica imediat ca toate aceste patru texte clare se cripteaza n 22.
Sa studiem acum securitatea sistemului de criptare Rabin. Sa presupunem ca exista un
algoritm de decriptare A; acesta poate atunci utilizat ntr-un algoritm Las Vegas care
descompune modulul n cu probabilitate 1/2; algoritmul este urmatorul:
1. Se alege aleator r Z
n
;
2. y r
2
B
2
/4 mod n;
3. x A(y);
4. x
1
x + B/2;
5. if x
1
r (mod n) then Stop (esec)
else cmmdc(x
1
+ r, n) = p sau q, Stop
Sa observamntai ca y = e
K
_
r
B
2
_
, deci la pasul 3 se decripteaza x sub forma r B/2.
Cum la pasul 5. avem x
2
1
r
2
(mod n), rezulta x
1
r (mod n) sau x
1
r (mod n),
unde este o radacina netriviala modulo n a unitat ii.

In al doilea caz, n|(x
1
r)(x
1
+r)
16 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
si n nu divide nici unul din cei doi factori. Deci, calculul lui cmmdc(x
1
+ r, n) sau
cmmdc(x
1
r, n) va da p sau q, adica o descompunere a lui n.
Sa calculam probabilitatea de succes a algoritmului ([2]), din n 1 extrageri posibile
ale lui r. Pentru doua resturi nenule r
1
, r
2
, se deneste
r
1
r
2
r
2
1
r
2
2
(mod n)
Aceasta este evident o relat ie de echivalent

Toate clasele de echivalent a din Z

n
sunt de
cardinal patru, ecare ind de forma [r] = {r,

alr}.

In algoritmul anterior, doua valori
dintr-o clasa de echivalent a conduc la acelasi y. Sa consideram un x
1
calculat plecand de
la valoarea x returnata de oracolul A pentru un y dat. x
1
este un element din [r]. Daca
x
1
= r, algoritmul esueaza; daca x
1
=

alr, el reuseste sa descompuna n. Cum r este


aleator, cele patru posibilitat i sunt echi-probabile, deci algoritmul da reusita n 50% din
cazuri.
11.7 Exercit ii
11.1 Folosind metoda p 1 si diverse margini B, factorizat i 262063 si 9420457. Cat
este B pentru ecare caz ?
11.2 Fie n = 317940011 si b = 7753781. Descompunet i n n factori, folosind algoritmul
lui Wiener.
11.3 Consideram algoritmul lui Rabin cu p = 199, q = 211, n = pq si B = 1357.
(a) Criptat i mesajul 32767;
(b) Determinat i cele 4 mesaje clare care duc la textul criptat y = e
K
(32767).
Bibliograe
[1] A. Menezes, P. Oorschot, S. Vanstome, Handbook of applied cryptography
[2] D. Stinton, Cryptography, theory et practice, Chapman & Hall/CRC, 2002
[3] A. Salomaa, Criptograe cu chei publice, Ed. Militara, 1994
[4] M.J. Wiener - Cryptanalysis of short RSA secret exponents, IEEE Trans on Informa-
tion Theory, 36 (1990), 553-558
17
Prelegerea 12
Sistemul de criptare El Gamal
12.1 Descrierea algoritmului de criptare El Gamal
Sistemul de criptare El Gamal
1
, prezentat n 1985 (vezi [1]) de Taher ElGamal, se bazeaza
pe problema logaritmului discret, care este urmatoarea:
Fie p numar prim si , Z
p
, ,= 0.
Sa se determine a Z
p1
astfel ca

a
(mod p).
Acest ntreg a daca exista este unic si se noteaza log

.
Exemplul 12.1 Fie p = 11 si = 6. Toate elementele din Z

11
pot exprimate ca puteri
ale lui :
a 0 1 2 3 4 5 6 7 8 9
6
a
(mod 11) 1 6 3 7 9 10 5 8 4 2
De aici rezulta imediat tabelul logaritmilor n baza 6:
1 2 3 4 5 6 7 8 9 10
log
6
0 9 2 8 6 1 3 7 4 5
Pentru = 3 nsa nu vom avea totdeauna solut ie. Deoarece
a 0 1 2 3 4 5 6 7 8 9
3
a
(mod 11) 1 3 9 5 4 1 3 9 5 4
valorile 2, 6, 7, 8, 10 nu pot exprimate ca logaritmi n baza 3. Altfel spus, ecuat ia
log
3
x = nu are solut ie n Z
11
pentru aceste valori ale lui b.
1
Implementari ale sistemului sunt cont inute n softuri pentru GNU Privacy Guard si PGP pentru a
lista cele mai cunoscute aplicat ii.
1
2 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
Observat ia 12.1 Pentru problema logaritmului discret, nu este obligatoriu ca p sa e
numar prim. Important este ca sa e radacina primitiva de ordinul p 1 a unitat ii:
i (0 < i < p 1),
i
, 1 (mod p). Teorema lui Fermat asigura
p1
1 (mod p).
La o alegere convenabila a lui p, problema este NP - completa. Pentru sigurant a, p
se alege de minim 512 bit i
2
iar p 1 sa aiba cel put in un divizor prim mare. Pentru un
astfel de modul p, spunem ca problema logaritmului discret este dicila n Z
p
. Utilitatea
acestei cerint e rezida n faptul ca, desi este foarte dicil de calculat un logaritm discret,
operat ia inversa de exponent iere este foarte simpla (dupa cum s-a vazut la sistemul
RSA).
Sistemul de criptare El Gamal este urmatorul:
Fie p numar prim pentru care problema logaritmului discret n Z
p
este dicila, si
Z

p
primitiv.
Fie T= Z

p
, (= Z

p
Z

p
si
/= (p, , a, )[
a
(mod p).
Valorile p, , sunt publice, iar a este secret.
Pentru K = (p, , a, ) si k Z
p1
aleator (secret) se deneste
e
K
(x, k) = (y
1
, y
2
)
unde y
1
=
k
(mod p), y
2
= x
k
(mod p).
Pentru y
1
, y
2
Z

p
se deneste
d
K
(y
1
, y
2
) = y
2
(y
a
1
)
1
(mod p)
Vericarea este imediata:
y
2
(y
a
1
)
1
x
k
(
ka
)
1
x
k
(
k
)
1
x (mod p)
Sistemul este evident nedeterminist: criptarea depinde de x si de o valoare aleatoare
aleasa de Alice. Exista deci mai multe texte criptate corespunzatoare unui anumit text
clar.
Exemplul 12.2 Sa alegem p = 2579, = 2, a = 765. Prin calcul se obt ine =
2
765
(mod 2579) = 949.
Sa presupunem ca Alice vrea sa trimita mesajul x = 1299. Ea alege aleator k (sa
spunem k = 853) si calculeaza y
1
= 2
853
= 435, apoi y
2
= 1299 949
853
= 2396 (toate
calculele se fac modulo 2579).
Cand Bob primeste mesajul criptat y = (435, 2396), el va determina
x = 2396 (435
765
)
1
= 1299 (mod 2579).
2
Pentru o securitate pe termen lung se recomanda 1024 bit i ([3]).
12.2. CALCULUL LOGARITMULUI DISCRET 3
Observat ia 12.2
1. Un dezavantaj al sistemului El Gamal consta n dublarea lungimii textului criptat
(comparativ cu lungimea textului clar).
2. Daca (y
1
, y
2
), (z
1
, z
2
) sunt textele criptate ale mesajelor m
1
, m
2
atunci se poate
deduce imediat un text criptat pentru m
1
m
2
: (y
1
z
1
, y
2
z
2
). Similar poate dedusa o
criptare pentru 2m
1
(sau 2m
2
). Acest lucru face sistemul El Gamal sensibil la un atac cu
text clar ales.
3. Indicat ia ca pentru criptarea a doua texte diferite sa se foloseasca valori diferite ale
parametrului k este esent iala: astfel, sa prsupunem ca mesajele m
1
, m
2
au fost criptate n
(y
1
, y
2
) respectiv (z
1
, z
2
) folosind acelasi k. Atunci y
2
/z
2
= m
1
/m
2
si cunoasterea unuia
din mesaje n determina imediat pe celalalt.
12.2 Calculul logaritmului discret

In cele de mai jos presupunem ca p este numar prim, iar este o radacina primitiva de
ordinul p 1 a unitat ii. Aceste doua valori ind xate, problema logaritmului se poate
reformula astfel:
Fiind dat un Z

p
, sa se determine exponentul a Z
p1
astfel ca
a
(mod p).
Evident aceasta problema se poate rezolva printr-o cautare directa (se calculeaza puterile
lui ) n timp O(p) si folosind O(1) memorie. Pe de-alta parte, daca se calculeaza anterior
ntr-o tabela toate valorile (a,
a
mod p), aarea valorii cautate se poate face n O(1), dar
cu un spat iu de complexitate O(p).
Tot i algoritmii construit i pentru calculul logaritmului discret stabilesc un compromis
spat iu - timp.
12.2.1 Algoritmul Shanks
Fie m =
_
_
p 1
_
. Algoritmul Shanks este:
1. Se construieste lista L
1
= (j,
mj
(mod p)) [ 0 j m1;
2. Se construieste lista L
2
= (i,
i
(mod p)) [ 0 i m1;
3. Se determina perechile (j, y) L
1
, (i, y) L
2
(identice pe a doua pozit ie);
4. Se deneste log

= m j +i (mod (p 1))
De remarcat ca prin alegerea perechilor (j, y) L
1
, (i, y) L
2
vom avea

mj
= y =
i
, deci
mj+i
= .
Invers, pentru orice putem scrie log

= m j +i cu 0 i, j m1, deci cautarea


de la pasul 3 se termina totdeauna cu succes.
Implementarea acestui algoritm se poate face n timp O(m) si spat iu O(m).
4 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
Exemplul 12.3 Fie p = 809 si sa determinam log
3
525. Avem deci
= 3, = 525, m =

808| = 29, iar


29
mod 809 = 99.
Lista L
1
a perechilor (j, 99
j
(mod 809)), 0 j 28 este:
(0, 1) (1, 99) (2, 93) (3, 308) (4, 559)
(5, 329) (6, 211) (7, 664) (8, 207) (9, 268)
(10, 644) (11, 654) (12, 26) (13, 147) (14, 800)
(15, 727) (16, 781) (17, 464) (18, 632) (19, 275)
(20, 528) (21, 496) (22, 564) (23, 15) (24, 676)
(25, 586) (26, 575) (27, 295) (28, 81)
Lista L
2
a cuplurilor (i, 525 (3
i
)
1
(mod 809)), 0 i 28 este:
(0, 525) (1, 175) (2, 328) (3, 379) (4, 396)
(5, 132) (6, 44) (7, 554) (8, 724) (9, 511)
(10, 440) (11, 686) (12, 768) (13, 256) (14, 355)
(15, 388) (16, 399) (17, 133) (18, 314) (19, 644)
(20, 754) (21, 521) (22, 713) (23, 777) (24, 259)
(25, 356) (26, 658) (27, 489) (28, 163)
Parcurgand (eventual simultan) cele doua liste se gaseste (10, 644) L
1
, (19, 644) L
2
.
Se poate scrie deci
log
3
525 = 29 10 + 19 = 309.
Se verica usor ca 3
309
525 (mod 809).
12.2.2 Algoritmul Pohlig - Hellman
Mai ntai, un rezultat matematic:
Lema 12.1 Fie x Z
p
un element primitiv. Atunci
x
m
x
n
(mod p) m n (mod (p 1))
Demonstrat ie: Relat ia x
m
x
n
(mod p) se poate rescrie x
mn
1 (mod p). Dar
conform Teoremei lui Fermat x
p1
1 (mod p) si x
i
, 1 (mod p) pentru 0 < i < p 1.
Deci p1[mn, sau mn 0 (mod (p1)), relat ie echivalenta cu m n (mod p1)).
2
Revenind la sistemul de criptare El Gamal, sa consideram descompunerea n factori
primi
p 1 =
k

i=1
q
c
i
i
.
12.2. CALCULUL LOGARITMULUI DISCRET 5
Daca s-ar putea calcula a (mod q
c
i
i
) pentru tot i i = 1, . . . , k, atunci folosind Teorema
chineza a resturilor s-ar putea determina a mod (p 1).
Sa presupunem deci ca q este un numar prim astfel ca p 1 0 (mod q
c
) si p 1 ,
0 (mod q
c+1
). Sa aratam cum se poate calcula atunci x a (mod q
c
) pentru orice
x, (0 x q
c
1).
Sa descompunem ntai x n baza q folosind egalitatea
x =
c1

i=0
a
i
q
i
0 a
i
q 1, 0 i c 1
Atunci, se poate scrie a = x +q
c
s pentru un anumit numar ntreg pozitiv s.
La primul pas trebuie calculat a
0
. Se porneste de la observat ia ca

(p1)/q

(p1)a
0
/q
(mod p).
Pentru a arata aceasta, deoarece
(p1)/q

(p1)(x+q
c
s)/q
(mod p), este sucient sa se
verice ca
(p1)(x+q
c
s)/q

(p1)a
0
/q
(mod p).
Aceasta relat ie este adevarata dacasi numai daca
(p 1)(x +q
c
s)
q

(p 1)a
0
q
(mod p 1),
ceea ce se poate verica prin calcul direct:
(p 1)(x +q
c
s)
q

(p 1)a
0
q
=
p 1
q
(x +q
c
s a
0
) =
p 1
q
_
c1

i=0
a
i
q
i
+q
c
s a
0
_
=
p 1
q
_
c1

i=1
a
i
q
i
+q
c
s
_
= (p 1)
_
c1

i=1
a
i
q
i1
+q
c1
s
_
0 (mod p 1).
Putem acum sa ncepem calculul lui
(p1)/q
(mod p). Daca
(p1)/q
1 (mod p),
atunci a
0
= 0. Altfel se calculeaza n Z
p
=
(p1)/q
,
2
, . . . pana se obt ine un numar
ntreg pozitiv i pentru care
i

(p1)/q
. Atunci a
0
= i.
Daca c = 1, algoritmul se termina; altfel, (c > 1), se cauta valoarea lui a
1
. Pentru
aceasta se deneste

1
=
a
0
si se noteaza x
1
= log

1
(mod q
c
).
Deoarece (evident) x
1
=
c1

i=1
a
i
q
i
, se va obt ine
(p1)/q
2
1

(p1)a
1
/q
(mod p).
Se calculeaza atunci
(p1)/q
2
1
(mod p) si se cauta i astfel ca

i

(p1)/q
2
1
(mod p).
Se ia a
1
= i.
Daca c = 2, s-a terminat; n caz contrar, se mai efectueaza c 2 pasi pentru deter-
minarea coecient ilor a
2
, . . . , a
c1
.
Formal, algoritmul Pohlig - Hellman este urmatorul:
6 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
1. Se calculeaza
i
=
(p1)i/q
(mod p), 0 i q 1;
2.
0
;
3. for j = 0 to c 1 do
3.1
(p1)/q
j+1
j
(mod p);
3.2. Se cauta i astfel ca =
i
;
3.3. a
j
i;
3.4.
j+1

j

a
j
q
j
mod p.
Reamintim, este o radacina primitiva de ordinul p a unitat ii, iar q este numar prim; n
plus, p 1 0 (mod q
c
), p 1 , 0 (mod q
c+1
).
Algoritmul calculeaza a
0
, a
1
, . . . , a
c1
unde log

(mod q
c
) =
c1

i=0
a
i
q
i
.
Exemplul 12.4 Fie p = 29. Avem n = p 1 = 28 = 2
2
7
1
.
Sa alegem = 2, = 18 si ne punem problema determinarii lui a = log
2
18. Pentru
aceasta se va calcula a (mod 4) si a (mod 7).
Sa ncepem cu q = 2, c = 2. Avem (toate calculele se efectueaza modulo 29):

0
= 1,
1
=
28/2
= 2
14
= 28, deci =
28/2
= 18
14
= 28, de unde rezulta a
0
= 1.

1
=
0

1
= 9,
28/4
1
= 9
7
= 28. Cum
1
= 28, rezulta a
1
= 1. Avem deci
a 3 (mod 4).
Sa consideram acum q = 7, c = 1. Vom avea (modulo 29):

28/7
= 18
4
= 25,
1
=
28/7
= 2
4
= 16, apoi
2
= 24,
3
= 7,
4
= 25, deci a
0
= 4
si a 4 (mod 7).
Se obt ine sistemul a 3 (mod 4), a 4 (mod 7), de unde folosind teorema chineza
a resturilor a 11 (mod 28). Deci, log
2
18 = 11 n Z
29
.
12.2.3 Algoritmul Pollard Rho
Fie p un numar prim si Z
p
un element de ordin n. Vom considera G

Z
p
subgrupul
ciclic generat de . Ne punem problema calcularii lui log

, unde G

este arbitrar.
Fie Z
p
= S
1
S
2
S
3
o partit ie a lui Z
p
n mult imi de cardinale aproximativ egale;
consideram funct ia
f : G

Z
n
Z
n
G

Z
n
Z
n
denita prin
f(x, a, b) =
_

_
(x, a, b + 1) daca x S
1
(x
2
, 2a, 2b) daca x S
2
(x, a + 1, b) daca x S
3
Pe baza acestei funct ii vom genera recursiv triplete (x, a, b) cu proprietatea x =
a

b
. Fie
(1, 0, 0) tripletul init ial (el are aceasta proprietate).

In continuare
(x
i
, a
i
, b
i
) =
_
(1, 0, 0) daca i = 0
f(x
i1
, a
i1
, b
i1
) daca i 1
12.2. CALCULUL LOGARITMULUI DISCRET 7

In continuare se compara tripletele (x


2i
, a
2i
, b
2i
) si (x
i
, a
i
, b
i
) pana se gaseste o valoare a
lui i pentru care x
2i
= x
i
.

In acel moment,

a
2i

b
2i
=
a
i

b
i
Notand c = log

, relat ia poate rescrisa

a
2i
+cb
2i
=
a
i
+cb
i
Cum are ordinul n, rezulta
a
2i
+cb
2i
a
i
+cb
i
(mod n)
sau
c(b
2i
b
i
) a
i
a
2i
(mod n)
Daca cmmdc(b
2i
b
i
, n) = 1, atunci se poate obt ine c:
c =
a
i
a
2i
b
2i
b
i
(mod n)
Exemplul 12.5 Sa consideram p = 809 si = 89; ordinul lui n Z

809
este n = 101.
Se verica usor ca = 618 G
89
. Vom calcula log
89
618.
Sa presupunem ca alegem partit ia
S
1
= x [ x Z
809
, x 1 (mod 3)
S
2
= x [ x Z
809
, x 0 (mod 3)
S
3
= x [ x Z
809
, x 2 (mod 3)
Pentru i = 1, 2, 3, . . . obt inem urmatoarele triplete:
i (x
i
, a
i
, b
i
) (x
2i
, a
2i
, b
2i
)
1 (618, 0, 1) (76, 0, 2)
2 (76, 0, 2) (113, 0, 4)
3 (46, 0, 3) (488, 1, 5)
4 (113, 0, 4) (605, 4, 10)
5 (349, 1, 4) (422, 5, 11)
6 (488, 1, 5) (683, 7, 11)
7 (555, 2, 5) (451, 8, 12)
8 (605, 4, 10) (344, 9, 13)
9 (451, 5, 10) (112, 11, 13)
10 (422, 5, 11) (422, 11, 15)
Deci x
10
= x
20
= 422. Se poate calcula atunci
log
89
618 = (11 5) (11 15)
1
(mod 101) = 6 25 (mod 101) = 49
(n grupul multiplicativ Z

809
).
8 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
O formalizare a algoritmului Pollard Rho pentru calculul logaritmului discret
3
este:
Algoritm Pollard Rho(Z
p
, n, , )
1 Se deneste partit ia Z
p
= S
1
S
2
S
3
;
2. (x, a, b) f(1, 0, 0), (x
1
, a
1
, b
1
) f(x, a, b)
3. while x ,= x
1
do
3.1. (x, a, b) f(x, a, b);
3.2. (x
1
, a
1
, b
1
) f(x
1
, a
1
, b
1
), (x
1
, a
1
, b
1
) f(x
1
, a
1
, b
1
);
4. if cmmdc(b
1
b, n) > 1 then return(Esec)
else return((a a
1
) (b
1
b)
1
(mod n))
procedure f(x, a, b)
1. if x S
1
then f ( x, a, (b + 1) (mod n));
2. if x S
2
then f (x x, 2 a (mod n), 2 b (mod n));
3. if x S
3
then f ( x, (a + 1) (mod n), b);
4. return(f).
end procedure

In cazul cmmdc(b
1
b, n) = d > 1, congruent a c (b
1
b) a a
1
(mod n) are d solut ii
posibile. Daca d este destul de mic, aceste solut ii se pot aa si o simpla operat ie de
vericare gaseste solut ia corecta.
12.2.4 Metoda de calcul a indicelui
Aceasta metoda seamana cu unul din cei mai buni algoritmi de descompunere n factori.
Vom da doar o descriere informala a acestui algoritm.
Se foloseste o baza de divizori B compusa din B numere prime mici Prima etapa
consta n aarea logaritmilor elementelor din baza B.

In a doua etapa, folosind acesti logaritmi, se va determina logaritmul discret al lui .


I: Se construiesc C = B + 10 congruent e modulo p de forma

x
j
p
a
ij
1
p
a
2j
2
. . . p
a
Bj
B
(mod p), 1 j C
Cu aceste C ecuat ii de necunoscute log

p
i
(1 i B) se ncearca aarea unei solut ii
unice modulo (p 1).

In caz de reusita, primul pas este ncheiat.
Problema ar cum sa se gaseasca aceste C congruent e. O metoda elementara consta
din trei pasi: alegerea aleatoare a unui x, calculul lui
x
(mod p) si vericarea daca acest
numar are tot i divizorii n B.
II: Acum se poate determina log

cu un algoritm de tip Las Vegas. Se alege aleator


un numar ntreg s (1 s p 2) si se determina =
s
(mod p).
3
Un algoritm similar Pollard Rho poate construit pentru factorizarea unui numar. Detalii se gasesc
de exemplu n [4].
12.3. SECURITATEALOGARITMILOR DISCRET I FAT

ADE INFORMAT II PART IALE9
Se ncearca apoi descompunerea lui n baza B. Daca acest lucru este posibil, se
obt ine o relat ie de forma

s
p
c
1
1
p
c
2
2
. . . p
c
B
B
(mod p)
care poate transformata n
log

+s c
1
log

p
1
+. . . +c
B
log

p
B
(mod p 1).
De aici - prin evaluarea membrului drept, se poate determina log

.
Exemplul 12.6 Fie p = 10007 si = 5 (element primitiv). Sa consideram
B= 2, 3, 5, 7 ca baza de divizori. Cum evident log
5
5 = 1, trebuiesc determinat i doar
trei logaritmi de baza.
Trei numere aleatoare norocoase pot 4063, 5136, 9865.
Pentru x = 4063 calculam 5
4063
(mod 10007) = 42 = 2 3 7, care conduce la congruent a
log
5
2 +log
5
3 +log
5
7 4063 (mod 10006).

In mod similar se obt in 5


5136
(mod 10007) = 54 = 2 3
3
, 5
9865
(mod 10007) = 189 =
3
3
7.
Ele dau relat iile
log
5
2 + 3log
5
3 5136 (mod 10006),
3log
5
3 +log
5
7 9865 (mod 10006).
Rezolvarea acestui sistem de trei ecuat ii n Z
10006
conduce la solut ia unica
log
5
2 = 6578, log
5
3 = 6190, log
5
7 = 1301.
Sa presupunem acum ca se cauta log
5
9451. Daca se genereaza aleator numarul s =
7736, avem 9451 5
7736
(mod 10007) = 8400 = 2
4
3
1
5
2
7
1
.
Cum acesta se poate factoriza n B, avem
log
5
9451 = 4log
5
2+log
5
3+2log
5
5+log
5
7s = 4 6578+6190+2 1+13017736 = 6057,
calculele ind realizate modulo 10006.
Se verica usor ca 5
6057
9451 (mod 10007).
12.3 Securitatea logaritmilor discret i fat a de informat ii
part iale

In aceasta sect iune vom considera un tip de atac care ncearca sa determine valoarea unuia
sau mai multor bit i din reprezentarea binara a logaritmilor discret i.
Mai exact se ncearca calculul lui L
i
(): al i-lea bit (numarand de la cel mai put in
reprezentativ) din scrierea n binar a lui log

peste Z

p
; deci 1 i log
2
(p 1)|.
Armat ia 12.1 L
1
() poate calculat printr-un algoritm de complexitate polinomial a.
10 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
Demonstrat ie: Sa consideram funct ia f : Z

p
Z

p
denita
f(x) = x
2
(mod p)
Notam RP(p) mult imea resturilor patratice modulo p:
RP(p) = x [ y Z

p
, x y
2
(mod p)
Pe baza observat iilor
1. f(x) = f(p x),
2. x
2
y
2
(mod p) x = y (mod p)
rezulta card(RP(p)) = (p 1)/2 (deci exact jumatate din elementele lui Z

p
sunt resturi
patratice).
Sa presupunem acum ca Z
p
este primitiv. Deci
i
RP(p) pentru i par. Cum
(p 1)/2 astfel de puteri sunt distincte, rezulta
RP(p) =
_

2i

0 i
p 3
2
_
Deci este rest patratic daca si numai daca log

este par, adica L


1
() = 0.
Conform teoremei 10.1 (Prelegerea 10), este rest patratic daca si numai daca

p1
2
1 (mod p)
fapt care poate testat cu un algoritm de compmexitate polinomiala. Deci putem da o
formula pentru calculul lui L
1
():
L
1
() =
_
0 daca
(p1)/2
1 (mod p)
1 altfel
2
Armat ia 12.2 Daca p 1 = 2
s
(2t + 1), atunci
1. Calculul lui L
i
() pentru 1 i s este usor.
2. Orice algoritm (sau oracol) care poate calcula L
s+1
() permite rezolvarea problemei
logaritmului discret n Z
p
.
Prima parte a armat iei este simpla.
Vom demonstra a doua parte pentru cazul s = 1. Deci vom arata ca daca p este prim
si p 3 (mod 4), atunci orice oracol care da L
2
() poate folosit la rezolvarea problemei
logaritmului discret n Z
p
.
Se stie (Prelegerea 11, algoritmul lui Rabin) ca daca este rest patratic n Z
p
si
p 3 (mod 4), atunci radacinile patrate ale lui modulo p sunt
(p+1)/4
(mod p).
Lema 12.2 Daca p 3 (mod 4) si ,= 0, atunci L
1
(p ) = 1 L
1
().
Demonstrat ia lemei: Fie
a
(mod p). Atunci
a+(p1)/2
(mod p). Deoarece
p 3 (mod 4), numarul (p 1)/2 este impar. Deci L
1
() ,= L
1
(p ). 2
12.3. SECURITATEALOGARITMILOR DISCRET I FAT

ADE INFORMAT II PART IALE11
Fie acum =
a
pentru un exponent par a, necunoscut. Atunci

(p+1)/4

a/2
(mod p)
Cum L
2
() = L
1
(
a/2
), valoarea L
2
() poate determina care din cele doua variante (cu
+ sau ) este corecta. Acest lucru este folosit de urmatorul algoritm care da valoarea
logaritmului discret log

(s-a presupus ca valoarea L


2
() se poate aa folosind de
exemplu un oracol):
Algoritm aare bit(p, , )
1. x
0
L
1
();
2. /
x
0
(mod p)
3. i 1;
4. while ,= 1 do
4.1. x
i
L
2
();
4.2.
(p+1)/4
(mod p);
4.3. if L
1
() = x
i
then
else p ;
4.4. /
x
i
(mod p);
4.5. i i + 1;
5. return(x
i1
, x
i2
, . . . , x
0
).

In nal, se obt ine


log

j0
x
j
2
j
.
Exemplul 12.7 Fie p = 19, = 2, = 6. Deoarece numerele sunt foarte mici, se pot
determina usor valorile pentru L
1
si L
2
. Ele sunt adunate n tabelul
x L
1
(x) L
2
(x) x L
1
(x) L
2
(x) x L
1
(x) L
2
(x)
1 0 0 7 0 1 13 1 0
2 1 0 8 1 1 14 1 1
3 1 0 9 0 0 15 1 1
4 0 1 10 1 0 16 0 0
5 0 0 11 0 0 17 0 1
6 0 1 12 1 1 18 1 0
Pe baza acestor informat ii, aplicam algoritmul. Se obt ine:
x
0
0, 6, i 1;
x
1
L
2
(6) = 1, 5, L
1
(5) = 0 ,= x
1
, 14, 7, i 2;
x
2
L
2
(7) = 1, 11, L
1
(11) = 0 ,= x
2
, 8, 4, i 3;
x
3
L
2
(4) = 1, 17, L
1
(17) = 0 ,= x
3
, 2, 1, i 4.
return(1, 1, 1, 0).
Deci log
2
6 = 1110
2
= 14.
12 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
12.4 Generalizarea sistemului de criptare El Gamal
Sistemul de criptare El Gamal se poate construi pe orice grup (n loc de Z

n
) n care
problema logaritmului (denita corespunzator) este dicila.
Fie (G, ) un grup nit. Problema logaritmului discret se deneste n G astfel:
Fie G si H =
i
[ i 0 subgrupul generat de . Daca H, sa se determine
un a (unic) (0 a card(H) 1) cu
a
= , unde
a
= . . .
. .
a ori
Denirea sistemului de criptare El Gamal n subgrupul H n loc de Z

n
este usor de
realizat; anume:
Fie (G, ) un grup si G pentru care problema logaritmului discret n H =

i
[ i 0 este dicila.
Fie T= G, (= GG si /= (G, , a, )[ =
a
.
Valorile , sunt publice iar a este secret.
Pentru K = (G, , a, ) si un k Z
card(H)
aleator (secret), se deneste
e
K
(x, k) = (y
1
, y
2
) unde y
1
=
k
, y
2
= x
k
.
Pentru y = (y
1
, y
2
), decriptarea este
d
K
(y) = y
2
(y
a
1
)
1
.
De remarcat ca pentru criptare/decriptare nu este necesara cunoasterea ordinului card(H)
de marime al subgrupului; Alice poate alege aleator un k, (0 k card(G) 1) cu care
cele doua procese funct ioneaza fara probleme.
Se poate observa de asemenea ca G nu este neaparat abelian (H n schimb este, ind
ciclic).
Sa studiem acum problema logaritmului discret generalizat. Deoarece H este sub-
grup ciclic, orice versiune a problemei este echivalenta cu problema logaritmului dis-
cret ntr-un grup ciclic.

In schimb, se pare ca dicultatea problemei depinde mult de
reprezentarea grupului utilizat.
Astfel n grupul aditiv Z
n
, problema este simpla; aici exponent ierea
a
este de fapt
nmult irea cu a modulo n. Deci, problema logaritmului discret consta n aarea unui
numar ntreg a astfel ca
a (mod n).
Daca se alege astfel ca (, n) = 1 ( este generator al grupului), are un invers
multiplicativ modulo n, care se determina usor cu algoritmul lui Euclid. Atunci,
a = log

=
1
(mod n)
12.5. EXERCIT II 13
Sa vedem cum se reprezinta problema logaritmului discretn grupul multiplicativ Z

p
cu
p prim. Acest grup este ciclic de ordin p1, deci izomorf cu grupul aditiv Z
p1
. Deoarece
problema logaritmului discret n grupul aditiv se poate rezolva usor, apare ntrebarea daca
se poate rezolva aceasta problema n Z

p
reducand-o la Z
p1
.
Stim ca existaun izomorsm : Z

p
Z
p1
, deci pentru care
(xy mod p) = ((x) +(y)) (mod p 1)

In particular, (
a
mod p) = a() (mod p 1), adica

a
(mod p) a(a) () (mod p 1).
Acum, cautarea lui a se realizeaza cu log

= ()(())
1
(mod (p 1)).
Deci, daca se gaseste o metoda ecace pentru calculul izomorsmului , se obt ine
un algoritm ecace pentru calculul logaritmului discret n Z

p
. Problema este ca nu se
cunoaste nici o metoda generala de construct ie a lui pentru un numar prim p oarecare.
Desi se stie ca cele doua grupuri sunt izomorfe, nu exista nca un algoritm ecient pentru
construct ia explicita a unui izomorsm.
Aceasta metoda se poate aplica problemei logaritmului discret ntr-un grup nit ar-
bitrar. Implementarile au fost realizate n general pentru Z
p
, GF(2
p
) (unde problema
logaritmului discret este dicila) sau curbe eliptice.
12.5 Exercit ii
12.1 Implementat i algoritmul Shanks pentru aarea logaritmului discret. Aplicat ii pen-
tru aarea log
106
12375 n Z

24691
si log
6
248388 n Z

458009
.
12.2 Numarul p = 458009 este prim si = 2 are ordinul 57251 n Z

p
. Folosind algorit-
mul Pollard Rho, calculat i log
2
56851 n Z

p
. Luat i valoarea init iala x
0
= 1 si partit ia din
Exemplul 12.5.
12.3 Fie p un numar prim impar si k un numar pozitiv. Grupul multiplicativ Z

p
k
are
ordinul p
k1
(p 1) si este ciclic. Un generator al acestui grup este numit element
primitiv modulo p
k
.
(a) Daca este un element primitiv modulo p, aratat i ca cel put in unul din numerele
, +p este element primitiv modulo p
2
.
(b) Descriet i cum se poate poate verica ecient ca 3 este o radacina primitiva modulo
29 si modulo 29
2
. Aratat oi ntai ca daca este o radacina primitiva modulor p si modulo
p
2
, atunci ea este radacina primitiva modulo p
j
pentru orice j ntreg.
(c) Gasit i un ntreg care este radacina primitiva modulo 29 dar nu este radacina
primitiva modulo 29
2
.
(d) Folosit i algoritmul Pohlig - Hellman pentru a calcula log
3
3344 n Z

24389
.
14 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
12.4 Implementat i algoritmul Pohlig Hellman. Aplicat ie pentru log
5
8563 n Z
28703
si
log
10
12611 n Z
31153
.
12.5 Fie p = 227. Elementul = 2 este primitiv n Z

p
.
(a) Calculat i
32
,
40
,
59
si
156
modulo p si apoi factorizat i-le pentru baza de factori
2, 3, 5, 7, 11.
(b) Folosind faptul ca log
2
2 = 1, calculat i log
2
3, log
2
5, log
2
7, log
2
11 folosind factor-
izarea anterioara.
(c) Sa presupunem ca vrem sa calculam log
2
173.

Inmult im 173 cu valoarea aleatoare
2
177
(mod p). Factorizat i rezultatul peste baza de factori data mai sus si determinat
log
2
173.
12.6 Sa implementam sistemul El Gamal n GF(3
3
). Polinomul x
3
+ 2x
2
+ 1 este ire-
ductibil peste Z
3
[x] si deci GF(3
3
) = Z
[
x]/(x
3
+ 2x
2
+ 1). Asociem cele 26 luitere ale
alfabetului cu cele 26 elemente nenule ale corpului (ordonate lexicograc):
A 1 B 2 C x
D x + 1 E x + 2 F 2x
G 2x + 1 H 2x + 2 I x
2
J x
2
+ 1 K x
2
+ 2 L x
2
+x
M x
2
+x + 1 N x
2
+x + 2 O x
2
+ 2x
P x
2
+ 2x + 1 Q x
2
+ 2x + 2 R 2x
2
S 2x
2
+ 1 T 2x
2
+ 2 U 2x
2
+x
V 2x
2
+x + 1 W 2x
2
+x + 2 X 2x
2
+ 2x
Y 2x
2
+ 2x + 1 Z 2x
2
+ 2x + 2
Sa presupunem ca Bob foloseste = x si p = 11 ntr-un sistem de criptare El Gamal.
Apoi alege = x + 2. Decriptat i mesajul
(K, H) (P, X) (N, K) (H, R) (T, F) (V, Y ) (E, H) ((F, A) (T, W) (J, D) (U, J)
Bibliograe
[1] T. El Gamal, A public key cryptosystem and a signature scheme based on discrete
algorithms, IEEE Transactions on Information Theory, 31 (1985), 469-472
[2] J. Gibson, Discrete logarithm hash function that is collision free and one way. IEEE
Proceedings-E, 138 (1991), 407-410.
[3] A. Menezes, P. Oorschot, S. Vanstome, Handbook of applied cryptography
[4] D. Stinton; Cryptography, theory et pratice, Chapman & Hall/CRC, 2002
[5] A. Salomaa, Criptograe cu chei publice, ed. Militara, 1994
15
Prelegerea 13
Alte sisteme de criptare cu cheie
publica
13.1 Criptarea folosind curbe eliptice
Pentru nceput, sa denim not iunea de curba eliptica.
Denit ia 13.1 Fie p (p > 3) un numar prim. Curba eliptica y
2
= x
3
+ ax + b peste Z
p
este mult imea solut iilor (x, y) Z
p
Z
p
ecuat iei
y
2
x
3
+ ax + b (mod p) (1)
unde a, b Z
p
sunt constante astfel ca 4a
3
+ 27b
2
0 (mod p)
si dintr-un punct O numit punct la innit.
O curba eliptica E se poate structura ca un grup abelian nit. Legea de compozit ie
(notata aditiv) este denita astfel:
Fie P, Q E, P = (x
1
, y
1
), Q = (x
2
, y
2
).
Daca x
2
= x
1
, y
2
= y
1
, atunci P + Q = O; altfel, P + Q = (x
3
, y
3
) unde
x
3
=
2
x
1
x
2
, y
3
= (x
1
x
3
) y
1
,
iar
=
_
_
_
y
2
y
1
x
2
x
1
daca P = Q
3x
2
1
+a
2y
1
daca P = Q
Se mai deneste P +O= O+P = P, P E.
Vericarea proprietat ilor de grup este banala. Elementul neutru este O.
De remarcat ca inversa lui (x, y) (notata (x, y)) este (x, y).
Exemplul 13.1 Fie E curba eliptica y
2
= x
3
+ x + 5 peste Z
19
. Sa calculam la nceput
punctele lui E. Aceasta se face astfel: x Z
11
se calculeaza z = x
3
+ x + 5 (mod 19);
apoi se testeaza daca z este rest patratic.
1
2 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLIC

In caz armativ, deoarece 19 3 (mod 4), exista o formula (Prelegerea 10) pe care o
vom aplica direct, obt inand radacinile patrate ale lui z :
z
(19+1)/4
(mod 19) = z
5
(mod 19).
Rezultatele sunt stranse n tabelele urmatoare (toate calculele se realizeaza modulo 19):
a 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
a
2
0 1 4 9 16 6 17 11 7 5 5 7 11 17 6 16 9 4 1
x x
3
+ x + 5 y x x
3
+ x + 5 y x x
3
+ x + 5 y
0 5 9, 10 1 7 8, 11 2 15
3 16 4, 15 4 16 4, 15 5 2
6 18 7 13 8 12
9 2 10 8 11 17 6, 13
12 16 4, 15 13 11 7, 12 14 8
15 13 16 13 17 14
18 3
Curba eliptica E admite deci 15 puncte; cum ordinul grupului nu este numar prim,
grupul nu este ciclic. Vom alege un element primitiv drept generator. Fie acesta =
(0, 9). Calculam puterile lui (de fapt multiplii, grupul ind aditiv). Pentru 2 se
calculeaza ntai (modulo 19):
= (3 0
2
+ 1)(2 9)
1
= 1 18
1
= 18.
Acum se pot determina
x
3
= 18
2
0 0 = 361 1 (mod 19), y
3
= 18 (0 1) 9 = 27 11 (mod 19),
deci 2 = (1, 11).
Multiplul urmator este 3 = 2 + = (1, 11) + (0, 9). Avem:
= (9 11) (0 1)
1
= 2, deci
x
3
= 2
2
1 0 = 3, y
3
= 2 (1 3) 11 = 15 4 (mod 19),
de unde rezulta 3 = (3, 4).

In mod similar se obt in toate punctele curbei eliptice E:


= (0, 9) 2 = (1, 11) 3 = (3, 4) 4 = (4, 4) 5 = (13, 12)
6 = (11, 6) 7 = (12, 15) 8 = (12, 4) 9 = (11, 13) 10 = (13, 7)
11 = (4, 15) 12 = (3, 15) 13 = (1, 8) 14 = (0, 10) 15 = O
De remarcat ca de exemplu (3, 4) nu este element primitiv, avand ordinul 5.
O curb a eliptica denita pe Z
p
(p > 3 prim) are aproximativ p puncte. O teorem a a
lui Hasse ([2]) stabileste un interval pentru acest numar:
p + 1 2

p card(E) p + 1 + 2

p
13.1. CRIPTAREA FOLOSIND CURBE ELIPTICE 3
Calculul efectiv al lui card(E) este destul de dicil si vom trece peste el
1
. Exista
un algoritm al lui Schoof ([2], pag 137-140) de numarare a punctelor unei curbe eliptice,
dar complexitatea lui este destul de mare: O(log
6
p) (O(log
9
p) n versiunea originala)
nmult iri si inversiuni, si O(log
3
p) spat iu de memorie.

In plus implementarea sa este
destul de greoaie si nu a fost realizata complet pana n prezent.
Alta problema dicila consta n aarea unui subgrup ciclic al lui E n care problema
logaritmului discret sa e dicila. O informat ie utila este data de teorema urmatoare:
Teorema 13.1 (Teorema lui Ruck) Fie E o curba eliptica peste Z
p
cu p > 3 numar prim.
Atunci exista doua numere ntregi n
1
, n
2
astfel ca E sa e izomorfa cu Z
n
1

timesZ
n
2
, iar
n
2
|n
1
, n
2
|(p 1).
Demonstrat ia poate gasita n [2], pag. 107.
Pe spat iul curbelor eliptice se pot realiza diverse tehnici de criptare cu cheie pub-
lica; unele din ele sunt doar adaptari ale sistemelor deja prezentate, altele sunt aplicat ii
specice.
Principala atract ie a sistemelor construite pe curbe eliptice consta n dimensiuni mici
ale cheilor, ceea ce la face aplicabile pe sisteme portabile (smartcarduri de exemplu).
Exemplul 13.2 Sa vedem cum se realizeaza o criptare El Gamal pentru curba eliptica
denita n Exemplul 13.1.
Fie = (0, 9) si sa presupunem ca exponentul secret este a = 7. Atunci = 7 =
(12, 15), iar operat ia de criptare este:
e
K
(x, k) = (k (0, 9), x + k (12, 15)), unde x E, 0 k 14.
Pentru decriptare se foloseste operat ia
d
K
(y
1
, y
2
) = y
2
7y
1
Sa presupunem ca Alice vrea sa cripteze mesajul x = (3, 4) (care este un punct din
E); daca ea alege aleator valoarea k = 8, va calcula
y
1
= 8 (0, 9) = (12, 4), si
y
2
= (3, 4) + 8 (12, 15) = (3, 4) + (4, 15) = 3 + 8 7 = 3 + 11 = 14 = (0, 10)
(coecient ii se calculeaza modulo 15).
Deci y = ((12, 4), (0, 10)). Dupa recept ie, Bob decripteaza mesajul astfel:
x = (0, 10) 7 (12, 4) = 14 7 8 = 3.
1
Nu se cunoaste nici o formula care sa dea valoarea card(E); exista o conjectura Birch and Swinnerton-
Dyer n legatura cu acest subiect, conjectura inclusa printre cele sapte probleme ale mileniului (mpreuna
cu problema P versus NP).
4 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLIC

A
13.1.1 Criptarea Menezes - Vanstone

In acest sistem de criptare de fapt o varianta a lui El Gamal curba eliptica este
utilizata pentru mascare, domeniile de valori al textelor clare si criptate ind mult mai
larg. Prezentarea algoritmului este:
Fie E o curba eliptica peste Z
p
(p > 3 prim) care cont ine un subgrup ciclic H n
care problema logaritmului discret este dicila.
Alegem P= Z

p
Z

p
, C= E Z

p
Z

p
si
K= {(E, , a, )| E, a Z

p
, = a}.
Valorile , sunt publice, iar a este secret.
Pentru K = (E, , a, ), k Z
card(H)
ales aleator (secret) si x = (x
1
, x
2
) P,
denim
e
K
(x, k) = (y
0
, y
1
, y
2
),
unde y
0
= k , (c
1
, c
2
) = k , y
i
= c
i
x
i
(mod p), i = 1, 2.
Pentru un text criptat y = (y
0
, y
1
, y
2
) se deneste
d
K
(y) = (y
1
c
1
1
(mod p), y
2
c
1
2
(mod p)),
unde a y
0
= (c
1
, c
2
).
Exemplul 13.3 Revenind la curba y
2
= x
3
+ x + 5 peste Z
19
denita n Exemplul 13.1,
criptarea Menezes - Vanstone autorizeaza 18 18 = 324 texte clare, fat a de numai 15 n
sistemul El Gamal adaptat.
Sa luam din nou = (0, 9) si exponentul a = 7. Atunci = 7 = (12, 15).
Daca Alice doreste sa transmita textul clar x = (x
1
, x
2
) = (5, 11) (de remarcat ca
acesta nu este un punct din E) si alege k = 4, ea va ncepe prin a calcula
y
0
= k = 4 (2, 7) = (4, 4)sik = 4(12, 15) = (1, 8)
deci c
1
= 1, c
2
= 8.
Apoi se calculeaza (modulo 19):
y
1
= c
1
x
1
= 1 5 = 5 si y
2
= c
2
x
2
= 8 11 = 12.
Alice trimite deci lui Bob mesajul criptat y = (y
0
, y
1
, y
2
) = ((4, 4), 5, 12).
Dupa recept ie, Bob calculeaza (c
1
, c
2
) = a y
0
= 7 (4, 4) = 7 4 = 13 = (1, 8), apoi
x = (y
1
c
1
1
(mod 19), y
2
c
1
2
(mod 19)) = (5 1
1
, 12 8
1
) = (5, 12 12) = (5, 11).
13.2. SISTEMUL DE CRIPTARE WILLIAMS 5
13.2 Sistemul de criptare Williams
Acest sistem de criptare este bazat pe exponent ieri n corpuri patratice, avand multe
asemanari cu sistemele RSA si El Gamal. Se pare ca el are toate avantajele sistemului
RSA; oricum, se poate demonstra ca orice ncercare de spargere a sistemului prin pre-
lucrarea mesajelor criptate conduce la o operat ie de factorizare a modulului. Modul de
criptare si decriptare sunt la fel de rapide ca la RSA.
Sa abordam ntai baza matematica a sistemului de criptare Williams.
Fie c Z un numar ntreg xat, ne-patrat perfect. Consideram mult imea
{x = a + b

c|a, b Z, a
2
cb
2
= 1}.
Numerele x pot privite si ca perechi (a, b), pe baza carora aceasta mult ime se poate
structura algebric ca inel, folosind operat iile
(a
1
, b
1
) + (a
2
, b
2
) = (a
1
+ a
2
, b
1
+ b
2
)
(a
1
, b
1
)(a
2
, b
2
) = (a
1
a
2
+ cb
1
b
2
, a
1
b
2
+ a
2
b
1
).
Notam x = a b

c conjugatul lui x.
Pentru i = 0, 1, 2, . . . se denesc funct iile X
i
(x), Y
i
(x) astfel:
X
i
(x) = X
i
((a, b)) =
x
i
+ x
i
2
Y
i
(x) = Y
i
((a, b)) = b
x
i
x
i
x x
=
x
i
x
i
2

c
De aici se pot scoate relat iile
x
i
= X
i
(x) + Y
i
(x)

c, x
i
= X
i
(x) Y
i
(x)

c.
Evident, X
i
(x) si Y
i
(x) sunt numere ntregi; n continuare vom scrie aceste numere fara a
mai preciza si argumentul x, decat daca este necesar.
Din condit ia a
2
cb
2
= 1 rezultaxx = 1, X
2
i
cY
2
i
= 1.
Lema 13.1 Au loc relat iile:
X
i+j
= X
i
X
j
+ cY
i
Y
j
, Y
i+j
= Y
i
X
j
+ X
i
Y
j
, i, j N
X
i+j
= 2X
i
X
j
X
ji
, Y
i+j
= 2X
i
Y
j
Y
ji
, i, j, i j.
Demonstrat ie: Este lasata ca exercit iu.
Din lema 13.1 se deduc formulele recursive de calcul
X
2i
= X
2
i
+ cY
2
i
= 2X
2
i
1, Y
2i
= 2X
i
Y
i
,
X
2i+1
= 2X
i
X
i+1
X
1
, Y
2i+1
= 2X
i
Y
i+1
Y
1
.
6 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLIC

A
Acestea conduc la o evaluare rapida a valorilor X
i
si Y
i
.
Deoarece X
0
= 1, X
1
= a, rezulta ca X
i
nu depinde de b.
Relat iile astfel denite se pot extinde n mod natural la congruent e modulo un numar
natural nenul n:
a
1
+ b
1

c a
2
+ b
2

c a
1
a
2
(mod n) si b
1
b
2
(mod n)
Folosind si a
2
cb
2
1 (mod n) n loc de a
2
cb
2
= 1, relat iile de sus raman adevarate.
Lema 13.2 Se dau numerele:
n = pq cu p, q numere prime mari;
a, b, c care verica congruent a a
2
cb
2
1 (mod n) (2)
Simbolurile Legendre
p
=
_
c
p
_
,
q
=
_
c
q
_
care verica relat iile
i

i (mod 4) pentru i = p, q.
Presupunem vericate condit iile (b c, n) = 1 si simbolul Jacobi
_
2(a+1)
n
_
= 1.
Notam m =
(p
p
)(q
q
)
4
.
Fie d, e doua numere astfel ncat d e
m + 1
2
(mod m).

In toate aceste ipoteze, x


2de
x (mod n) unde x = a + b

c.
Demonstrat ie: Se realizeaza prin calcul direct.
Pe baza acestei leme se pot stabili metode de criptare si decriptare similare celor din
RSA.
Saconstruim acumn detaliu sistemul de criptare Williams. Prezentarea va consta din
patru part i: descrierea sistemului, criptarea, decriptarea si criptanaliza.
A (Prezentarea):

In prima faza se aleg doua numere prime mari p, q si se calculeaza
n = pq.
Se alege apoi un numar c astfel ca simbolurile Legendre
p
si
q
sa verice condit iile
din Lema 13.2 (c se poate obt ine foarte rapid deoarece cam un numar din patru satisface
congruent ele cerute).
Se determina apoi un numar s astfel ncat simbolul Jacobi sa verice
_
s
2
c
n
_
= 1 si (s, n) = 1
m este dat ca n Lema 13.2; se aleg apoi d cu (d, m) = 1 si e care sa satisfaca
congruent ele cerute.
Numerele n, c, e, s sunt publice iar p, q, m, d sunt secrete.
13.2. SISTEMUL DE CRIPTARE WILLIAMS 7
Exemplul 13.4 Sa alegem p = 11, q = 13, deci n = 143. Pentru ca
_
5
11
_
= 1 11 si
_
5
13
_
= 1 13 (ambele modulo 4), putem alege c = 5.
De asemenea se poate lua s = 2 pentru ca
_
s
2
c
n
_
=
_
1
11
__
1
13
_
= 1 1 = 1.
Se obt ine m = 10 14/4 = 35. Pentru ca 23 16 18 (mod 35), se pot folosi drept
exponent i de criptare/decriptare e = 23 respectiv d = 16.
B (Criptarea): Textele clare sunt numere w (0 < w < n).

In prima etapa w este codicat
ca un num ar x (metoda este prezentata mai jos); criptarea va x
e
(mod n).
Codicarea: Notam
b
1
= 0, = w +

c sau
b
1
= 1, = (w +

c)(s +

c)
dupa cum simbolul Jacobi
_
w
2
c
n
_
are valoarea +1 sau respectiv 1. Cazul cand
el este 0 trebuie evitat.
Ambele variante conduc la
_

n
_
= 1; relat ia este evidenta n primul caz, rezulta prin
calcul din alegerea lui s n cazul al doilea.

In nal, se noteazax =

.
Scrierea lui x sub forma a +b

c este posibila n ambele cazuri; astfel (toate calculele


se fac modulo n):
pentru b
1
= 0 : x =

=
w +

c
w

c
=
w
2
+ c
w
2
c
+
2w
w
2
c

c (mod n)
pentru b
1
= 1 : x =

=
(w +

c)(s +

c)
(w

c)(s

c)
=
=
(w
2
+ c)(s
2
+ c) + 4scw
(w
2
c)(s
2
c)
+
2s(w
2
+ c) + 2w(s
2
+ c)
(w
2
c)(s
2
c)

c (mod n).
Denit ia lui x asigura n ambele situat ii relat ia xx = a
2
cb
2
1 (mod n).
Mai avem 2(a + 1) = 2
_
x + x
2
+ 1
_
=

+ 2 =
( + )
2

(mod n),
ceea ce duce la simbolul Jacobi
_
2(a + 1)
n
_
= 1, cum se cere n Lema 13.2.
Dupa codicarea textului clar w ca x = a+b

c, textul criptat este x


e
(mod n), numar
care poate exprimat n funct ie de X
e
si Y
e
, calculate recursiv pe baza relat iilor din Lema
13.1. Notam
E = X
e
Y
1
e
(mod n).
Textul criptat este tripletul (E, b
1
, b
2
), unde b
1
s-a denit anterior, iar b
2
este dat de relat ia
b
2
a (mod 2).
8 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLIC

A
Deoarece ecarui text criptat i corespund patru texte clare distincte, bit ii b
1
si b
2
asigura unicitatea decriptarii.
Exemplul 13.5 Revenind la Exemplul 13.4, sa consideram textul clar w = 21. Deoarece
_
21
2
5
143
_
=
_
7
11
__
7
13
_
= (1)(1) = 1, avem b
1
= 0, deci = 21 +

5 si x =
21 +

5
21

5
=
446 + 42

5
436
=
17 + 42

5
7
= 41(17 + 42

5) = 125 + 6

5 (mod 143).
Deci a = 125, b = 6. Deoarece a este impar, rezulta b
2
= 1.
Vom calcula recursiv pe X
23
si Y
23
:
X
1
= 125 Y
1
= 6 X
2
= 75 Y
2
= 70 X
3
= 35 Y
3
= 48
X
5
= 120 Y
5
= 44 X
6
= 18 Y
6
= 71 X
11
= 48 Y
11
= 17
X
12
= 75 Y
12
= 125 X
23
= 68 Y
23
= 125
Obt inem acum E = 68 125
1
= 68 135 = 28 (mod 143).
Deci textul criptat este tripletul (28, 0, 1).
C Decriptarea: Folosind prima componentaE a textului criptat, destinatarul poate deter-
mina num arul x
2e
:
x
2e
=
x
2e
(xx)
e
=
x
e
x
e
=
X
e
+ Y
e

c
X
e
Y
e

c
=
E +

c
E

c
=
E
2
+ c
E
2
c
+
2E
E
2
c

c (mod n)
De remarcat ca acest calcul poate facut si de un criptanalist, n eventualitatea
interceptarii textului criptat.
Totusi, informat ia secreta este necesara pentru calculul ulterior:
x
2ed
= X
2ed
(x) + Y
2ed
(x)

c = X
d
(x
2e
) + Y
d
(x
2e
)

c,
unde valorile lui X
d
si Y
d
se pot calcula recursiv pe baza lui x
2e
, determinat anterior.
Cum toate ipotezele Lemei 13.2 sunt satisfacute, vom avea x
2ed
= x (mod n). Ultima
componenta b
2
a textului criptat da semnul corect al lui x.
Deci x se poate determina, iar textul clar w se obt ine din x si b
1
(a doua componenta
a textului criptat) n felul urmator:
Fie x

=
_
x daca b
1
= 0
x
s

c
s+

c
daca b
1
= 1
Atunci x

=
w +

c
w

c
(mod n), ceea ce duce la w =
x

+ 1
x

c (mod n).
Exemplul 13.6

In condit iile din Exemplul 13.4, sa decriptam mesajul (28, 0, 1). Folosim
E pentru a calcula n prima faza
x
2e
=
28
2
+ 5
28
2
5
+
2 28
28
2
5

5 = 95 + 126

5 (mod 143).
Reamintim, d = 16; deci vom calcula (modulo 143)
13.2. SISTEMUL DE CRIPTARE WILLIAMS 9
X
1
(x
2e
) = 95 Y
1
(x
2e
) = 126 X
2
(x
2e
) = 31 Y
2
(x
2e
) = 59
X
4
(x
2e
) = 62 Y
4
(x
2e
) = 83 X
8
(x
2e
) = 108 Y
8
(x
2e
) = 139
X
16
(x
2e
) = 18 Y
16
(x
2e
) = 137
S-a obt inut 18 + 137

5 = x (mod 143). Pentru ca b


2
= 1, a trebuie sa e impar, deci
x = (18 + 137

5) = 125 + 6

5 (mod 143).
Cum b
1
= 0, avem x

= x si deci
w =
126 + 6

5
124 + 6

5 =
(126 + 6

5)(124 6

5)
124
2
5 6
2

5 = 83 38
1
= 21 (mod 143)
Deci textul clar original a fost w = 21.
Lucrand detaliat, se pare ca sistemul de criptare Williams este mai dicil decat RSA.
Totusi ordinele de complexitate ale criptarii si decriptarii sunt egale n celel doua sisteme.
D Criptanaliza: Daca s-au aat p si q, m si d se pot calcula imediat. Invers, sa
presupunem ca criptanalistul a gasit ntr-un mod oarecare un algoritm de decriptare.
Atunci el poate folosi acest algoritm la descompunerea lui n astfel.

In prima faza se alege prin ncercari un numar x care verica


_
x
2
c
n
_
= 1.
Apoi x este criptat alegand b
1
= 0 si = x +

c. Deci, ca prima ipoteza, pentru


simbolul Jacobi este folosita valoarea (falsa) +1. Fie (E, 0, b
2
) textul criptat rezultat.
Acestuia, criptanalistul i aplica algoritmul pentru a stabili textul clar w corespunzator;
acest w nu este identic cu x deoarece procesul de criptare a plecat de la o ipoteza falsa.
Prin simplu calcul se arata ca (x w, n) este p sau q (vezi [6])
Aceasta nseamna ca si criptanalistul este n masura sa descompuna pe n.
Exemplul 13.7 Reluam cadrul descris n Exemplul 13.4. Alegem x = 138, care satisface
condit ia de plecare pentru criptanaliza. Se iau ca valori init iale false b
1
= 0, =
138 +

5. Atunci = / = 73 + 71

5.
Deoarece 73 este impar, se obt ine b
2
= 1. Pentru criptare se calculeaza iterativ (modulo
143):
X
1
() = 73 Y
1
() = 71 X
2
() = 75 Y
2
() = 70
X
3
() = 9 Y
3
() = 139 X
5
() = 133 Y
5
() = 44
X
6
() = 18 Y
6
() = 71 X
11
() = 139 Y
11
() = 82
X
12
() = 75 Y
12
() = 125 X
23
() = 42 Y
23
() = 73
Deducem ca E = 42 73
1
= 28 (mod 143), deci textul criptat este (28, 0, 1).
Acesta a fost nsa criptat anterior n w = 21. Se obt ine imediat factorizarea lui n
deoarece (x w, n) = (117, 143) = 13.
Deci, sistemul Williams nu rezista la un atac cu text clar ales.
10 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLIC

A
13.3 Sistemul de criptare McEliece
Sistemul de criptare McEliece propus n 1978 este destul de apropiat de problema
rucsacului. El utilizeaza drept cadru teoria codurilor liniare (pentru detalii vezi [1]); aici,
n general decodicarea unui cod liniar binar corector de erori este o problema NP - com-
pleta. Pentru unele clase de coduri sunt construit i algoritmi de decodicare polinomiali;
o astfel de clasa o formeaza codurile Goppa, care constituie baza sistemului de criptare
McEliece.
Denit ia 13.2 Fie k, n N(k n). Un (n, k) - cod liniar binar este un subspat iu liniar
C Z
n
2
de dimensiune k.
O matrice generatoare a lui C este o matrice binara k n ale carei linii formeaza o
baza a lui C.
Pentru a Z
n
2
se deneste ponderea w(a) = numarul de elemente nenule din a.
Pentru a, b Z
n
2
a = (a
1
, . . . , a
n
), b = (b
1
, . . . , b
n
), se deneste distant a Hamming
prin d(a, b) = w(a b).
Pentru un (n, k) - cod liniar binar C, distant a minima este
d
C
= min{d(a, b)|a, b C, a = b}
Un (n, k, d) - cod este un (n, k) - cod de distant a minima d.
Rolul unui cod corector de erori este de a corija modicari aleatoare care apar n trans-
miterea unui set de date (binare) printr-un canal.

In linii mari, acesta funct ioneaza astfel:
daca a este un mesaj de informat ie de k bit i, Alice l codica ntr-un cuvant de n bit i
b = aG, unde G este matricea generatoare a codului.
Bob primeste un mesaj r Z
n
2
(eventual r = b) si cauta un cuvant b
1
C cu d(r, b
1
)
minima posibil. Va decodica r n b
1
dupa care va calcula un mesaj de informat ie a
1
astfel ca b
1
= a
1
G. Cazul ideal este acela cand b
1
= b, a
1
= a (adica erorile au fost
acoperite corect). Se cunoaste ca, daca numarul de erori care apar nu depaseste (d1)/2,
acest procedeu corecteaza efectiv erorile.
Daca Bob cauta cuvantul - cod cel mai apropiat comparand r pe rand cu ecare element
din C, cum sunt 2
k
astfel de cuvinte, algoritmul va exponent ial, deci nefunct ional.
Majoritatea algoritmilor de decodicare se bazeaza pe not iunea de sindrom, denit
astfel:
Matricea de control a unui (n, k, d) - cod liniar binar de matrice generatoare G este o
matrice H de dimensiune (n k) n ale carei linii formeaza o baza a unui spat iu liniar
ortogonal. Evident, GH
T
= 0.
Pentru un cuvant r Z
n
2
, se numeste sindrom secvent a de n k bit i denita Hr
T
.
Teorema 13.2 a este un cuvant - cod daca si numai daca Ha
T
= 0.

In plus, daca a C, e Z
n
2
si r = a +e, atunci Hr
T
= He
T
.
13.3. SISTEMUL DE CRIPTARE MCELIECE 11
Pentru demonstrat ie se poate consulta de asemenea [1].
e poate considerat drept vectorul de erori care au aparut n transmiterea mesajului
a. Teorema anterioara arma ca sindromul nu depinde decat de erori, nu de cuvantul -
cod transmis.
Aceasta observat ie sugereaza o metoda de decodicare bazata pe sindrom. Se cal-
culeaza ntai s = Hr
T
. Daca s = 0, decodicarea lui r este tot r. Altfel, se ncearca toate
cuvintele de pondere 1. Pentru ecare astfel de cuvant e se calculeaza He
T
. Daca s-a
gasit un e cu He
T
= s, r se decodica n r e.

In caz contrar se ncearca vectorii de
pondere 2, 3, . . . , [(d 1)/2]. Daca nu s-a gasit nici un cuvant e cu He
T
= s, se deduce
ca au aparut mai mult de [(d 1)/2] erori n cursul transmisiei.
Metoda prezentata funct ioneaza pentru toate codurile liniare. Pentru anumite clase
speciale de coduri exista algoritmi polinomiali de decodicare si corectare a erorilor; n
cazul general nsa problema este NP - completa.
Algoritmul de criptare McElliece se bazeaza pe aceasta idee. Trapa sa secreta o consti-
tuie o clasa de coduri pentru care exista algoritmi ecace de decodicare - codurile Goppa.

In plus, exista un numar mare de coduri Goppa neechivalente, avand aceiasi parametri.
Algoritmul de criptare McEliece este urmatorul:
Fie G matricea generatoare a unui (n, k, d) - cod Goppa cu n = 2
m
, d = 2t +1, k =
n mt.
Se denesc S o matrice inversabila k k peste Z
2
si P o matrice de permutare nn
(matrice n care pe ecare linie si coloana exista o valoare 1, iar restul elementelor
sunt 0).
Fie P= Z
k
2
, C= Z
n
2
, K= {(G, S, P, G

) | G

= S G P}.
G

este publica iar G, S, P sunt secrete.


Pentru K = (G, S, P, G

) se deneste
e
K
(a, e) = aG

+e
unde e Z
n
2
este un cuvant aleator
2
de pondere t.
Bob decripteaza un mesaj b Z
n
2
astfel:
1. Calculeaza b
1
= bP
1
;
2. Decodica b
1
obt inand b
1
= a
1
+e
1
unde a
1
C;
3. Calculeaza a
0
Z
k
2
astfel ca a
0
G = a
1
;
4. Calculeaza a = a
0
S
1
.
Corectitudinea algoritmului de decriptare:
Deoarece b
1
= bP
1
= (aG

+e) P
1
= (aS G P +e) P
1
= (aS) G +eP
1
iar eP
1
este un vector de pondere cel mult t, algoritmul de decodicare al codului de
matrice generatoare G poate decodica corect pe b
1
si obt ine un mesaj sursa a
0
= aS.
La ultimul pas se aa mesajul init ial a = a
0
S
1
.
12 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLIC

A
Nu vom intra n detalii privind denit ia codurilor Goppa ([1]). Acestea pot privite
nsa drept coduri liniare cu parametrii n = 2
m
, d = 2t + 1, k = n mt. Pentru o
implementare practica referitor la criptare, McEliece sugereaza m = 10, t = 50, ceea ce
corespunde unui (1024, 524, 101) - cod Goppa
3
. Un text clar este o secventa de 524 bit i,
iar un text criptat este o secventa de 1024 bit i. Cheia publica este o matrice binara de
dimensiuni 524 1024.
Exemplul 13.8 Vom exemplica algoritmul pe un (8, 2, 5) - cod Goppa (deci n = 2
3
, k =
2, d = 5). Acest cod - extrem de mic (are doar 4 cuvinte) este generat de matricea
G =
_
0 0 1 1 1 1 1 1
1 1 0 0 1 0 1 1
_
Sa presupunem ca Bob alege matricile
S =
_
1 0
1 1
_
cu S
1
=
_
1 0
1 1
_
si
P =
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
cu P
1
=
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0 0 0 1 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
Matricea publica generata este deci
G

= SGP =
_
1 0 1 0 1 1 1 1
1 1 0 1 0 1 1 0
_
Sa presupunem ca Alice vrea sa cripteze textul clar a = (0, 1) folosind vectorul - eroare
e = (0, 0, 1, 0, 0, 1, 0, 0) (ales aleator) de pondere 2. Textul criptat este
b = aG

+e = (1, 1, 1, 1, 0, 0, 1, 0).
Dupa recept ionarea mesajului, Bob calculeaza ntai
b
1
= bP
1
= (1, 1, 1, 1, 1, 0, 0, 0),
pe care l scrie sub forma a
1
+e
1
unde a
1
= (1, 1, 1, 1, 0, 1, 0, 0) este un cuvant - cod,
iar e
1
= (0, 0, 0, 0, 1, 1, 0, 0) = e (din cauza nmult irii cu P
1
).
Bob calculeaza apoi mesajul a
0
= (1, 1), singurul cu proprietatea a
0
G = a
1
.
Ultimul pas este determinarea lui a = S
1
a
0
= (0, 1), care este textul clar expediat de
Alice.
3
O analiza a securitat ii recomanda parametrii n = 1024, t = 38, k 644.
13.4. EXERCIT II 13
Algoritmul McElliece s-a dovedit sigur. Acest lucru rezulta din analiza celor doua
tipuri de atac posibile:
1. Din informat ia publica, Oscar ncearca sa ae matricea G sau o matrice G
1
a unui
cod Goppa echivalent (avand aceeasi parametri). Nu se cunoast e nici un algoritm
ecient pentru un astfel de demers.
2. Oscar ncearca sa ae mesajul clar a direct din textul criptat b. El ia aleator k
coloane din matricea publica G

. Notand G

k
, b
k
, e
k
restrict iile lui G

, b respectiv e
la aceste k coloane, vom avea aG

k
= b
k
+ e
k
. Daca b
k
= 0 si G

k
este nesingulara,
atunci a poate aat rezolvand sistemul liniar aG

k
= b
k
. Probabilitatea ca cei k
bit i selectat i sa nu faca parte din eroare (deci e
k
= bf0 este C
k
nt
/C
k
n
, neglijabila
pentru valorile alese ale parametrior n, k, t.
Interesant, dar aceasta securitate este mult diminuata daca se folosest e alta clasa de coduri
liniare n locul codurilor Goppa.
Totusi, n ciuda securitat ii sale si a vitezei relativ mari de criptare/decriptare sistemul
McElliece nu este folosit practic. Cauza principala o constituie cheia sa excesiv de mare.
De exemplu, pentru n = 1024, t = 38, k 644, cheia are aproximativ 2
19
bit i.
13.4 Exercit ii
13.1 Fie E curba eliptica y
2
= x
3
+ x + 28 peste Z
71
.
1. Determinat i numarul de puncte din E;
2. Aratat i caE nu este ciclic;
3. Care este ordinul maxim al unui element din E ? Gasit i un astfel de element.
13.2 Fie E curba eliptica y
2
= x
3
+x +13 denitape Z
31
. Se poate arata ca |E| = 34 si
ca (9, 10) este de ordinul 34 n E. Sistemul de criptare Mezenes - Vanstome denit pe E
admite ca spat iu al textelor clare Z

34
Z

34
. Fie a = 25 exponentul secret al lui Bob.
1. Calculat i = a;
2. Decriptat i textul urmator:
((4, 9), 28, 7)((19, 28), 9, 13)((5, 22), 20, 17)((25, 16), 12, 27)
3. Daca presupunem ca ecare text clar reprezinta doua caractere alfabetice, convertit i
acest text clar n engleza (s-a folosit corespondent a A 1, . . . , Z 26).
14 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLIC

A
13.3 Fie E curba eliptica y
2
= x
3
+ x + 6 peste Z
11
.
(a) Sa se calculeze punctele lui E.
(b) Se aleg parametrii = (2, 7) si a = 7. Folosind sistemul de criptare El Gamal, sa
se cripteze mesajul x = (10, 9) cu valoarea aleatoare k = 3.
(c) Folosind sistemul de criptare Menezes - Vanstone si aceiasi parametrii, sa se
cripteze mesajul x = (9, 1).
13.4 Demonstrat i Lemele 13.1 si 13.2.
13.5 Fie curba eliptica E de ecuat ie y
2
= x
3
+ x + 28 peste Z
71
.
(a) Sa se determine numarul de puncte din E.
(b) Care este ordiunul maxim al unui element din E ? Sa se gaseasca un element de
acest ordin.
13.6 Fie p > 3 un numar prim impar si a, b Z
p
. Daca ecuat ia x
3
+ax+b 0 (mod p)
are trei radacini distincte n Z
p
, aratat i ca grupul curbei eliptice corespunzatoare (E, +)
nu este ciclic.
13.7 Fie E o curba eliptica denita peste Z
p
unde p > 3 este un numar prim. Sa
presupunem ca n = card(E) este prim si e P E, P = O.
(a) Ar atat i ca log
P
(P) = n 1.
(b) Dat i un algoritm de calcul pentru n de complexitate O(p
1/4
) folosind teorema lui
Hasse si o varianta a algoritmului Shanks.
13.8 O reprezentare binara (a
n1
, a
n2
, . . . , a
0
) a numarului ntreg a este n forma ne-
adiacenta (forma NAF) daca nu exista doua valori consecutive nenule.
(a) Dat i un algoritm de reprezentare a numerelor ntregi n forma NAF. Aplicat i
acest algoritm pentru numerele 87, 112, 2047.
(b) Folosind reprezentarea NAF a lui 87, calculat i 87P, unde P = (2, 6) este un punct
pe curba eliptica y
2
= x
3
+ x + 26 denita peste Z
27
.
Bibliograe
[1] A. Atanasiu, Teoria Codurilor, Editura Universitat ii Bucuresti, 2002
[2] A. Enge, Elliptic Curves and their applications to Cryptography, Kluwer Academic
Publ, 1999
[3] M. Rosing, Implementing Elliptic Curve Cryptography, Manning, 1998
[4] D. Stinton, Cryptography, theory and pratice, International Thompson Publishing
France, 1995
[5] A. Salomaa, Criptograe cu chei publice, Ed. Militara, 1994
[6] H.C.Williams, Some public-key criptofunctions as intractable as factorisation, Cryp-
tologia, 9 (1985), 224-237.
15
Prelegerea 1
Codicare si decodicare
1.1 Codicare
Denit ia 1.1 Fiind date mult imile A (alfabetul sursa) si B (alfabetul cod), o co-
dicare este o aplicat ie injectiva K : A B

.
Elementele mult imii K(A) B

se numesc cuvinte-cod, iar K(A) se numeste cod.


Daca B are numai doua simboluri, codicarea K se numeste binara.
Exemplul 1.1 Printre secvent ele binare de lungime 5, numarul celor care au doi
de 1 este C
2
5
= 10. Ele pot folosite pentru a codica cifrele din scrierea zecimala
(Tabelul 1.1).
Tabelul 1.1: Codul doi-din-cinci
Simbol zecimal Cuvant cod
1 11000
2 10100
3 01100
4 10010
5 01010
6 00110
7 10001
8 01001
9 00101
0 00011
Mesajul

173

are codul 110001000101100. De remarcat ca ntre cuvintele cod


nu se lasa nici un spat iu, deoarece spat iu poate el nsusi un simbol-cod. Astfel
de exemplu, codul Morse are alfabetul B = {., , spat iu}.
Decodicarea se face foarte simplu: se mparte mesajul codicat n grupe de cate
cinci caractere si se vede cifra din tabel corespunzatoare grupei respective. Repar-
tizarea cuvintelor cod a fost facuta pentru a realiza si o decodicare pe baza unei
1
2 PRELEGEREA 1. CODIFICARE SI DECODIFICARE
formule. Astfel, daca a
0
a
1
a
2
a
3
a
4
este cuvantul - cod, el corespunde cifrei k data de
algoritmul:
begin
x := a
1
+ 2a
2
+ 4a
3
+ 7a
4
;
if x = 11 then k := 0 else k := x;
end.
Denit ia 1.2 Pentru o codicare K : A B

, se numeste codicare a mesajelor


(textului) sursa aplicat ia K

: A

denita recursiv prin:


K

() = ( este cuvantul vid);


K

(a) = K

(a)K

(), a A, A

.
Denit ia 1.3 Codicarea K este unic decodabila daca K

este injectiva.
Codicarea data n Exemplul 1.1 este - dupa cum s-a observat - unic decodabila.
Acest lucru nu este totdeauna posibil. Daca luam de exemplu codicarea
K(a) = 00, K(b) = 10, K(c) = 101, K(d) = 110, K(e) = 1001,
ea nu este unic decodabila; astfel K

(bd) = K

(cb) = 101110 .
Denit ia 1.4 1. O codicare K : A B

n care toate cuvintele cod au lungi-


mea n se numeste codicare-bloc de lungime n, iar K(A) este un cod-bloc
de lungime n.
2. O codicare K : A B

se numeste instantanee daca K(A) are proprietatea


prexului (daca , K(B) atunci = ).
Codul denit n Exemplul 1.1 este un cod - bloc de lungime 5.
Codurile bloc sunt eciente n cazul cand simbolurile sursa au frecvent e egale de
aparit ie; n caz contrar, ele devin greoaie si sunt preferabile codurile instantanee cu
lungimi variabile ale cuvintelor cod.
Exemplul 1.2 Codul Morse, dat n Tabelul 1.2 este un cod instantaneu cu alfabetul
cod B = {., , }. Deoarece spat iul este folosit numai la sfarsitul ecarui cuvant -
cod, procedura de decodicare este simpla: orice cuvant - cod se aa ntre doua
spat ii, de la nceputul mesajului pana la primul spat iu, sau de la ultimul spat iu pana
la sfarsit. Motivul pentru care nu se foloseste un cod - bloc este simplu: frecvent ele
literelor ntr-o limba difera foarte mult.
Exemplul 1.3 Un alt exemplu de cod - bloc este codul octal:
0 000 4 100
1 001 5 101
2 010 6 110
3 011 7 111
1.2. EXEMPLE DE CODURI - BLOC IMPORTANTE 3
Tabelul 1.2: Codul Morse
A . - F . . - . K - . - P . - - . U . . -
B - . . . G - - . L . - . . Q - - . - V . . . -
C - . - . H . . . . M - - R . - . W . - -
D - . . I . . N - . S . . . X - . . -
E . J . - - - O - - - T - Y - . - -
Z - - . .
Exemplul 1.4 Sa presupunem ca vrem sa construim un cod binar pentru alfabetul
{0, 1, 2, 3} si observam ca 0 apare n mesajele sursa mai des decat orice alt simbol.
Atunci urmatoarea schema de codicare pare rezonabila:
K(0) = 0, K(1) = 01, K(2) = 011, K(3) = 111.
Decodicarea sa este foarte simpla: se aplica recursiv regula:
Se considera suxul 01
k
; valoarea lui k reprezinta numarul codicat.
Totusi aceasta codicare nu este instantanee.

Intr-adevar, daca se primeste un
mesaj lung de forma
0111111111111111 . . .
nu vom sti daca primul simbol sursa este 0, 1 sau 2 pana nu se termina mesajul.
1.2 Exemple de coduri - bloc importante
Codurile binare sunt de obicei lungi si deci greu de manipulat. Este deci convenabil
sa grupam simbolurile binare formand alfabete mai complexe.
Astfel, formand grupuri de cate trei simboluri, se obt in codurile octale (Exemplul
1.3). Reprezentarea n octal se indica de obicei prin indicele 8 asezat la sfarsit. De
exemplu,
(01)
8
= 000001

In mod similar, prin gruparea a cate patru simboluri binare se obt ine codul hexa-
zecimal.
Un cod foarte important folosit n reprezentarea standard a simbolurilor alfa-
betice si numerice este codul ASCII (American Standard Code for Information
Interchange) - Tabelul 1.3.
4 PRELEGEREA 1. CODIFICARE SI DECODIFICARE
Tabelul 1.3: Codul ASCII (7 bit i de informat ie)
Simbol Cod Simbol Cod Simbol Cod Simbol Cod
sursa sursa sursa sursa
@ 1(00)
8
1(40)
8
NUL 0(00)
8
SP 0(40)
8
A 1(01)
8
a 1(41)
8
SOH 0(01)
8
! 0(41)
8
B 1(02)
8
b 1(42)
8
STX 0(02)
8
0(42)
8
C 1(03)
8
c 1(43)
8
ETX 0(03)
8
# 0(43)
8
D 1(04)
8
d 1(44)
8
EOT 0(04)
8
$ 0(44)
8
E 1(05)
8
e 1(45)
8
ENQ 0(05)
8
% 0(45)
8
F 1(06)
8
f 1(46)
8
ACK 0(06)
8
& 0(46)
8
G 1(07)
8
g 1(47)
8
BEL 0(07)
8
0(47)
8
H 1(10)
8
h 1(50)
8
BS 0(10)
8
( 0(50)
8
I 1(11)
8
i 1(51)
8
HT 0(11)
8
) 0(51)
8
J 1(12)
8
j 1(52)
8
LF 0(12)
8
* 0(52)
8
K 1(13)
8
k 1(53)
8
VT 0(13)
8
+ 0(53)
8
L 1(14)
8
l 1(54)
8
FF 0(14)
8
0(54)
8
M 1(15)
8
m 1(55)
8
CR 0(15)
8
- 0(55)
8
N 1(16)
8
n 1(56)
8
SO 0(16)
8
. 0(56)
8
O 1(17)
8
o 1(57)
8
SI 0(17)
8
/ 0(57)
8
P 1(20)
8
p 1(60)
8
DLE 0(20)
8
0 0(60)
8
Q 1(21)
8
q 1(61)
8
DCI 0(21)
8
1 0(61)
8
R 1(22)
8
r 1(62)
8
DC2 0(22)
8
2 0(62)
8
S 1(23)
8
s 1(63)
8
DC3 0(23)
8
3 0(63)
8
T 1(24)
8
t 1(64)
8
DC4 0(24)
8
4 0(64)
8
U 1(25)
8
u 1(65)
8
NAK 0(25)
8
5 0(65)
8
V 1(26)
8
v 1(66)
8
SYN 0(26)
8
6 0(66)
8
W 1(27)
8
w 1(67)
8
ETB 0(27)
8
7 0(67)
8
X 1(30)
8
x 1(70)
8
CAN 0(30)
8
8 0(70)
8
Y 1(31)
8
y 1(71)
8
EM 0(31)
8
9 0(71)
8
Z 1(32)
8
z 1(72)
8
SUB 0(32)
8
: 0(72)
8
[ 1(33)
8
{ 1(73)
8
ESC 0(33)
8
; 0(73)
8
1(34)
8
1(74)
8
FS 0(34)
8
0(74)
8
] 1(35)
8
} 1(75)
8
GS 0(35)
8
= 0(75)
8
1(36)
8
1(76)
8
RS 0(36)
8
0(76)
8
1(37)
8
DEL 1(77)
8
US 0(37)
8
? 0(77)
8
El are 2
7
= 128 simboluri sursa codicate n secvent e binare de lungime 8;
primele 7 cont in infomat ia, iar ultimul - numit bit de paritate da un prim control
asupra corectitudinii secvent ei. Valoarea acestui caracter este suma modulo 2 a
primilor sapte bit i.
De exemplu, litera A, va avea codul 10000010; primele sapte simboluri provin
din Tabelul 1.3 iar ultimul are valoarea 0 deoarece anterior au fost doua (num ar
par) simboluri binare cu valoarea 1.
Un ultim cod, folosit internat ional pentru toate cart ile este Internat ional Stan-
dard Book Number (ISBN). El este un cod - bloc de lungime 10 (lungimea cuvintelor
- cod creste prin folosirea simbolului - pe diverse pozit ii, dar acest caracter este ig-
1.3. CONSTRUCT IA CODURILOR INSTANTANEE 5
norat la prelucrarea automata). Alfabetul cod este B = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, X},
(X pentru num arul 10).
De exemplu, cartea S. Lin, P. Costello - Teoria Codurilor are codul
ISBN 0 13 283796 X
Primul numar (0) reprezinta t ara (SUA), 13 reprezint a editura (Prentice-Hall),
iar urmatoarele sase cifre sunt asignate de editura ca numar de identicare al cart ii.
Ultimul simbol este de control (similar cu bitul de paritate denit anterior) si denit
astfel:
Pentru codul ISBN a
1
a
2
. . . a
10
,
10

i=1
ia
11i
= 0 (mod 11).
Astfel,n ISBN-ul de sus,
10 0+9 1+8 3+7 2+6 8+5 3+4 7+3 9+2 6+1 10 = 187 0 (mod 11)
Unele publicat ii au codul de identicare de trei cifre (de exemplu Wiley-Inter-
science are 471); n acest caz num arul pentru ecare publicat ie are numai cinci
simboluri. Pentru Romania, codul de t ar a este 973.
1.3 Construct ia codurilor instantanee
Ne punem problema construirii unui cod binar instantaneu peste alfabetul sursa
A = {a
1
, . . . , a
n
}.
Init ial se specica lungimile d
1
, d
2
, . . . , d
n
ale cuvintelor cod. Far a a micsora
generalitatea, putem presupune d
1
d
2
. . . d
n
.
Se alege un cuvant - cod binar arbitrar K(a
1
) de lungime d
1
.
Se alege un cuvant - cod arbitrar K(a
2
) din mult imea cuvintelor binare de
lungime d
2
care nu au pe K(a
1
) ca prex. Aceasta este totdeauna posibil pentru ca:
Numarul tuturor secvent elor binare de lungime d
2
este 2
d
2
; dintre acestea, num a-
rul celor care nu au prexul K(a
1
) este 2
d
2
d
1
. Cum 2
d
2
2
d
2
d
1
+ 1, exista cel
put in o alegere posibila pentru K(a
2
) de lungime d
2
.
Va trebui sa selectamn continuare un cuvant de lungime d
3
care nu are ca prex
K(a
1
) sau K(a
2
). Deci, din cele 2
d
3
secvent e binare posibile trebuiesc eliminate cele
2
d
3
d
1
secvent e cu prexul K(a
1
) si 2
d
3
d
2
secvent e cu prexul K(a
2
). Aceasta este
posibil daca si numai daca
2
d
3
2
d
3
d
2
+ 2
d
3
d
1
+ 1

Impart ind aceasta inegalitate cu 2


d
3
se obt ine
1 2
d
1
+ 2
d
2
+ 2
d
3
.

In mod analog se poate arata inegalitatea


1 2
d
1
+ 2
d
2
+. . . + 2
dn
din care rezulta construct ia. De remarcat ca ea este o condit ie necesara si sucient a
pentru construct ia codurilor instantanee.
6 PRELEGEREA 1. CODIFICARE SI DECODIFICARE
Teorema 1.1 Fiind dat un alfabet sursa de n simboluri si un alfabet cod de k sim-
boluri, se poate construi un cod instantaneu cu lungimile cuvintelor cod d
1
, d
2
, . . . , d
n
daca si numai daca este vericata inegalitatea (Kraft):
k
d
1
+k
d
2
+. . . +k
d
n
1.
Demonstrat ie: Fie A = {a
1
, a
2
, . . . , a
n
} si putem presupune relat ia d
1
d
2
. . .
d
n
. Construim codicarea instantanee K prin induct ie astfel:
Se alege K(a
1
) arbitrar.
Presupunem ca au fost alese K(a
1
), K(a
2
), . . . K(a
s1
). Atunci se va alege un
cuvant arbitrar K(a
s
) care nu are ca prex nici unul din cuvintele selectate
anterior. Aceasta este posibil deoarece numarul cuvintelor cu prexul K(a
i
)
este 2
d
s
d
i
(1 i s 1); deci alegerea poate facut a din
k
ds

s1

i=1
k
dsd
i
elemente.
Din inegalitatea lui Kraft avem
1
s1

i=1
k
d
i
k
ds
care, prin multiplicare cu k
ds
conduce la
k
d
s

s1

i=1
k
d
s
d
i
1.
Armat ia reciproca se demonstreaza similar (pentru k = 2 ea a fost data anterior).
2
Teorema 1.2 (McMillan) Orice codicare unic decodabila satisface inegalitatea lui
Kraft.
Demonstrat ie: Fie K o codicare unic decodabila. Notam cu d
i
lungimea cuvantului
cod K(a
i
), (1 i n). Se observa ca j, (j 1) se pot forma k
j
cuvinte de lungime
j peste alfabetul - cod cu k simboluri. Din proprietatea de unic decodabilitate,
num arul mesajelor sursa = a
i
1
a
i
2
. . . a
i
r
al caror cod are lungimea j nu depaseste
k
j
. Lungimea codului pentru este d
i
1
+d
i
2
+. . .+d
ir
; deci num arul tuturor sumelor
de forma
d
i
1
+d
i
2
+. . . +d
i
r
= j
este cel mult k
j
.
Ram ane de demonstrat ca numarul c =
n

i=1
k
d
i
este cel mult 1. Pentru aceasta,
vom arata ca r 1,
c
r
r
este marginit.
1.4. CODURI HUFFMAN 7
Sa calculam puterile lui c:
c
2
=

i=1
k
d
i

j=1
k
d
j

=
n

i,j=1
k
(d
i
+d
j
)
si, n general,
c
r
=
n

i
1
,i
2
,...,i
r
=1
k
(d
i
1
+d
i
2
+...+d
i
r
)
Aceasta suma se poate re-ordona grupand tot i termenii de forma k
j
unde j satisface
egalitatea anterioara. Cel mai mare j posibil este j = d + d + . . . + d = rd, unde
d = max{d
1
, d
2
, . . . , d
n
}.
Numarul tuturor termenilor de forma k
j
din suma este cel mult k
j
. Deci,
c
r

rd

j=1
k
j
k
j
=
rd

j=1
1 = rd.
Deci,
c
r
r
d, de unde va rezulta c 1 (pentru c > 1 sirul a
r
=
c
r
r
, deci nu
este marginit). 2
Corolarul 1.1 Pentru orice cod unic decodabil exista un cod instantaneu care are
toate cuvintele - cod de lungimi egale.
Demonstrat ie: Rezulta din demonstrat ia teoremei precedente.
Exemplul 1.5 Sa consideram alfabetul sursa = {a, b, c} si alfabetul - cod
B = {0, 1}; deci n = |A| = 3, k = |B| = 2. Vrem sa construim o codicare
instantanee K : A B care are toate cuvintele - cod de lungime d. Inegalitatea
Kraft va da 2
d
+ 2
d
+ 2
d
1, deci 2
d

1
3
. Cel mai mic d care o verica este
d = 2. Deci orice mult ime de 3 secvent e binare de lungime 2 va putea folosita
drept cod. Sunt 4 astfel de mult imi:
{00, 01, 10}, {00, 01, 11}, {00, 10, 11}, {01, 10, 11}
1.4 Coduri Human
Am ment ionat anterior faptul ca daca frecvent a simbolurilor sursa variaz a, atunci co-
durile instantanee sunt preferabile codurilor bloc, deoarece simbolurile care apar mai
frecvent vor codicate cu cuvinte cod mai scurte. Ne punem problema aarii unor
codicari cat mai eciente, n ipoteza ca frecvent ele simbolurilor sursa sunt cunos-
cute exact (de exemplu probabilitatea distribut iei simbolurilor sursa n mesaje).
Denit ia 1.5 O sursa de informat ie este o pereche S = (A, P) unde
A = {a
1
, a
2
, . . . , a
n
} este alfabetul sursa(mult ime ordonata);
P = {P(a
1
), P(a
2
), . . . , P(a
n
)} este mult imea ordonata a probabilitat ilor ele-
mentelor lui A, deci
8 PRELEGEREA 1. CODIFICARE SI DECODIFICARE
0 P(a
i
) 1, (1 i n);

i=1
P(a
i
) = 1.
Fie K o codicare a unei surse de informat ie. Daca se noteaza cu d
i
= |K(a
i
)| (||
reprezint a lungimea secvent ei ), se poate deni lungimea medie L a cuvintelor cod
prin
L =
n

i=1
d
i
P(a
i
).
O codicare este ecient a daca lungimea medie a secvent elor cod este cat mai mica.
Denit ia 1.6 Fiind data o sursa de informat ie S si un alfabet cod, un cod Human
este un cod instantaneu cu lungimea medie minima.
Lungimea medie minima a unui cod Humann se noteaza cu L
min
(S).
Exemplul 1.6 Sa se determine un cod Human binar pentru alfabetul sursa A =
{a, b, c, d, e, f} stiind ca a apare de doua ori mai des decat e si e de doua ori
mai des decat orice consoana.
Deci, vom avea sursa de informat ie
Simbol a b c d e f
Probabilitate 0.4 0.1 0.1 0.1 0.2 0.1
Putem asigna deci un cuvant cod de lungime 1 lui a si unul de lungime doi lui e.
Atunci lungimile cuvintelor cod ramase sunt egale cu 4, iar inegalitatea lui Kraft
este saturata:
1
2
+
1
2
2
+
4
2
4
= 1. Un astfel de cod se poate construi:
K(a) = 0 K(c) = 1101 K(e) = 10
K(b) = 1100 K(d) = 1110 K(f) = 1111
Lungimea sa medie este
L = 0.4 + 2 0.2 + 4 4 0.1 = 2.4
Deci, pentru acest exemplu, L
min
(S) 2.4
1.4.1 Construct ia codurilor Human binare
O sursa cu doua simboluri are evident un cod Human de cuvinte cod {0, 1} (si deci
L
min
(S) = 1).
O sursa cu trei simboluri {a
1
, a
2
, a
3
} n care a
1
are probabilitate maxima, poate
redusa la cazul a doua simboluri {a
1
, a
2,3
} unde P(a
2,3
) = P(a
2
) + P(a
3
). Vom
gasi o codicare Human pentru sursa redusa
K(a
1
) = 0, K(a
2,3
) = 1.
dupa care spargem cuvantul cod 1 n doua cuvinte: 10 si 11; n acest fel se obt ine
un cod Human pentru sursa originala:
1.4. CODURI HUFFMAN 9
a
1
a
2
a
3
0 10 11

In general, e S o sursa de informat ie cu simbolurile {a


1
, a
2
, . . . , a
n
} ordonate dupa
probabilitat i, adica:
P(a
1
) P(a
2
) . . . P(a
n
).
Contruim o sursa redusa S

cu simbolurile {a
1
, . . . , a
n2
, a
n1,n
} unde a
n1,n
este un
simbol nou, cu probabilitatea P(a
n1,n
) = P(a
n1
) +P(a
n
).
Daca nu se poate construi un cod Human pentru S

, se reia procedeul pentru


aceasta sursa (reordonand eventual simbolurile dupa probabilitate); n nal se va
ajunge la o sursa (pentru doua simboluri problema a fost rezolvat a) n care care
codul Human se poate construi.
Daca se poate gasi o codicare Human K

pentru sursa redusa S

, atunci codul
din Tabelul 1.4 este un cod Human pentru S (vom demonstra aceasta armat ie) .
Tabelul 1.4:
a
1
a
2
. . . a
n2
a
n1
a
n
K

(a
1
) K

(a
2
) . . . K

(a
n2
) K

(a
n1,n
)0 K

(a
n1,n
)1
Lema 1.1
L(K) = L(K

) +P(a
n1
) +P(a
n
)
Demonstrat ie: Fie d
1
, d
2
, . . . , d
n2
, d

lungimile cuvintelor cod corespunzatoare lui


K

. Atunci lungimile cuvintelor cod pentru K sunt d


1
, d
2
, . . . , d
n2
, d

+ 1, d

+ 1.
Efectuand calculele, se obt ine:
L(K) =
n2

i=1
d
i
P(a
i
) + (d

+ 1)P(a
n1
) + (d

+ 1)P(a
n
) =
=
n2

i=1
d
i
P(a
i
) +d

[P(a
n1
) +P(a
n
)] +P(a
n1
) +P(a
n
) =
= L(K

) +P(a
n1
) +P(a
n
).
2
Teorema 1.3 Fie K

o codicare Human pentru o sursa de informat ie redusa S

.
Atunci codicarea K denita de Tabelul 1.4 este un cod Human pentru sursa de
informat ie S.
Demonstrat ie: Fie a
1
, a
2
, . . . , a
n
simbolurile sursa, ordonate descrescator dupa prob-
abilitate. Deoarece teorema este evidenta pentru P(a
n
) = 0, vom considera doar
cazul P(a
n
) > 0. Demonstrat ia consta din trei pasi:
S admite o codicare Human K
0
cu lungimile cuvintelor cod ordonate:
d
1
d
2
. . . d
n
(d
i
= |K
0
(a
i
)|, 1 i n).
Pentru a demonstra aceasta, plecam de la un cod Human arbitrar K pentru
S. Daca exista un simbol a
i
astfel ca d
i
> d
i+1
, notam cu K

codicarea
10 PRELEGEREA 1. CODIFICARE SI DECODIFICARE
obt inuta din K prin permutarea cuvintelor cod corespunzatoare lui a
i
si a
i+1
.
K

este evident un cod instantaneu, iar diferent a dintre lungimile medii L =


L
min
(al lui K) si L

(al lui K

) este:
L
min
L

= [d
i
P(a
i
) +d
i+1
P(a
i+1
)] [d
i+1
P(a
i
) +d
i
P(a
i+1
)] =
= (d
i
d
i+1
)[P(a
i
) P(a
i+1
)].
Aceasta expresie este produsul dintre un num ar pozitiv si unul nenegativ, deci
L
min
L

, iar din proprietatea de minimalitate rezulta L


min
= L

. Cu alte
cuvinte, K

este un alt cod Human. Procedeul continu a pan a se obt ine codul
K
0
cerut.
S admite o codicare Human K
1
n care ultimele cuvinte cod, K
1
(a
n1
) si
K
1
(a
n
) difera doar prin ultimul simbol.
Fie K
0
codul Human anterior si

K
0
codul rezultat din K
0
eliminand ultimul
simbol din K
0
(a
n
). Lungimea medie a lui

K
0
va evident mai mica decat cea
a lui K
0
(pentru ca P(a
n
) > 0), deci

K
0
nu poate instantaneu. Cuvantul cod

K
0
(a
i
) = K
0
(a
i
), (1 i n 1) nu este prexul nici unui cuvant cod; deci
exista un i (i n 1) astfel nc at

K
0
(a
n
) este prexul lui K
0
(a
i
). Aceasta
este posibil numai daca d
i
= d
n
si deci K
0
(a
i
) difera de K
0
(a
n
) numai prin
ultimul simbol. Daca i = n 1, se ia K
1
= K
0
. Altfel, se observa ca d
i
= d
n
implica d
i
= d
i+1
= . . . = d
n
; deci se pot permuta cuvintele cod denite n K
0
pentru a
i
si a
n1
. Codul K
1
astfel obt inut are aceeasi lungime medie ca si K
0
,
deci este un cod Human.
Sa presupunem ca se da o codicare Human K

pentru sursa redusa S

si denim un cod K pentru S conform Tabelului 1.4. Lungimile lor medii


L(K), L(K

) veric a relat ia din Lema 1.1.


Sa folosim acum codul Human K
1
construit mai sus. Deoarece ultimele doua
cuvinte cod difera numai prin ultimul simbol, K
1
poate obt inut dintr-un cod
K

1
al lui S

prin spargerea ultimului cuvant - cod.



In plus, K

1
este evident
instantaneu. Prin calcule se ajunge la relat ia
L(K
1
) L(K

1
) = P(a
n1
) +P(a
n
)
Cum avem si L(K) L(K

) = P(a
n1
) +P(a
n
), rezulta
L(K) = L(K
1
) L(K

1
) +L(K

).
Acum, L(K

) = L
min
(S

), deci L(K

1
) + L(K

) 0. Rezulta L(K)
L(K
1
) = L
min
(S). Deci, K este un cod Human.
2
1.5. EXERCIT II 11
1.5 Exercit ii
Exercit iul 1.1 Care este cea mai mica lungime a unui cod bloc cu alfabetul sursa
A = {A, B, . . . , Z} si alfabetul cod B = {., , spat iu} (ca la codul Morse).
Exercit iul 1.2 Se deneste codicarea
1 01 4 1000
2 011 5 1100
3 10 6 0111
Este ea unic decodabila ? Este instantanee ? Se poate gasi un cod instantaneu cu
aceleasi lungimi ale cuvintelor cod ?
Exercit iul 1.3 Se deneste codicarea
A 1010 D 0001
B 001 E 1101
C 101 F 1011
Este ea unic decodabila ? Daca nu, gasit i doua mesaje sursa cu acelasi cod.
Exercit iul 1.4 Este unic decodabila codicarea:
0 AA 4 ABBAA 7 AAAABB
1 AABAB 5 BABBA 8 AAAABA
2 ABBBBB 6 BBBAB 9 AAAAAB
3 ABABA
Exercit iul 1.5 Se poate decide unic decodabilitatea codicarilor
K(a) = 001 K(a) = 00
K(b) = 1001 K(b) = 10
K(c) = 0010 K(c) = 011
K(d) = 1110 K(d) = 101
K(e) = 1010 K(e) = 111
K(f) = 01110 K(f) = 110
K(g) = 0101 K(g) = 010
folosind inegalitatea lui Kraft ?
Exercit iul 1.6 Sa se construiasca un cod binar instantaneu pentru urmatorul al-
fabet sursa cu lungimile corespunzatoare ale cuvintelor cod:
Simbol A B C D E F G H I J K L
Lungime 2 4 7 7 3 4 7 7 3 4 7 7
Exercit iul 1.7 Sa se construiasca un cod ternar (trei simboluri cod) instantaneu
pentru urmatorul alfabet sursa, cu lungimile corespunzatoare ale cuvintelor cod:
12 PRELEGEREA 1. CODIFICARE SI DECODIFICARE
Simbol 1 2 3 4 5 6 7 8 9 0
Lungime 1 3 3 3 3 3 2 2 2 2
Exercit iul 1.8 Cate simboluri cod sunt necesare pentru ca urmatorul alfabet sursa
sa poata codicat ntr-un cod instantaneu cu lungimile cuvintelor cod date:
A B C D E F G H I J K L M N O P
1 2 2 2 1 2 2 2 1 2 2 2 2 2 1 2
Exercit iul 1.9 Demonstrat i ca pentru orice cod instantaneu n care inegalitatea
Kraft este stricta, este posibil sa se adauge un nou simbol sursa si sa se extinda
codul dat la un nou cod instantaneu (cu acelasi alfabet cod). Demonstrat i aceasta
pentru codul denit la Exercit iul 1.6.
Prelegerea 2
Coduri liniare
2.1 Matrice generatoare
Denit ia 2.1 Fie q un numar prim si n N

un numar natural nenul. Se numeste


cod liniar orice subspat iu liniar al lui Z
n
q
.
Un subspat iu k-dimensional al lui Z
n
q
se numeste (n, k)- cod liniar peste alfabetul
Z
q
.
Sa notam n general cu A
n,k
(A
n,k
Z
n
q
) un (n, k) - cod liniar. Elementele sale se
numesc cuvinte-cod.
Fie n, k N, k < n. O codicare este o aplicat ie injectiva : Z
k
q
Z
n
q
, iar
A
n,k
= (Z
k
q
). Elementele lui Z
k
q
se numesc mesaje de informat ie.
Deci, x Z
k
q
este un mesaj de informat ie scris cu caractere din alfabetul Z
q
.
Daca transmitem succesiunea x de semnale printr-un canal de comunicat ie, mesajul
este supus diverselor perturbari de canal care-l modica. Ideea teoriei codurilor
este urmatoarea: n loc de a transmite elementele lui Z
k
q
, sa lungim mesajul
informat ional scufundand (prin intermediul aplicat iei ) Z
k
q
ntr-un spat iu liniar
Z
n
q
(n > k) astfel nc at cele n k pozit ii noi - numite pozit ii de control - sa asigure
redondant a necesara refacerii mesajului de informat ie init ial.
Astfel, cu pret ul lungirii mesajului, se castiga protect ia fat a de (anumite tipuri
de) erori.
Observat ii:
Din denit ie rezulta ca un cod liniar de lungime n este un set A de cuvinte
(secvent e, siruri, vectori) de lungime n cu proprietat ile:
a, b A = a +b A;
a A, t Z
q
= ta A.
Orice cod - liniar cont ine cuvantul cod nul 0 = (0, 0, . . . , 0).
|Z
q
| = r = |A
n,k
| = r
k
A
n,k
ind un spat iu liniar k-dimensional, admite o baza formata din k vectori cu n
elemente. Fie
e
1
, e
2
, . . . , e
n
13
14 PRELEGEREA 2. CODURI LINIARE
o astfel de baza. Atunci orice cuvant cod v A
n,k
are forma
v =
k

i=1
u
i
e
i
unde (u
1
, u
2
, . . . , u
k
) Z
k
q
este unic determinat.
Cu alte cuvinte, k simboluri de informat ie u
1
, . . . , u
k
Z
q
determina n mod
unic un cuvant - cod v A
n,k
prin relat ia de sus, si reciproc. Operat ia de codicare
face aceasta asociere biunivoca:
u = (u
1
, . . . , u
k
) Z
k
q
v =
k

i=1
u
i
e
i
A
n,k
Fiecare vector - codntr-un cod liniar va avea deci k simboluri de informat ie; celelalte
n k simboluri se numesc simboluri de control.
Denit ia 2.2 Fie A
n,k
un cod liniar cu baza e
1
, . . . , e
k
. Matricea
G
n,k
=

e
1
e
2
. . .
e
k

se numeste matricea generatoare a codului.


Deci operat ia de codicare este denita prin matricea generatoare:
u Z
k
q
, (u) = uG.
Exemplul 2.1 Matricea
G =

1 0 0 1 1
0 1 0 0 1

genereaza un (5, 2)-cod liniar peste Z


2
. Rangul ei este 2 (primele doua coloane
formeaza matricea unitate), deci cele doua linii ale lui G sunt cuvinte - cod liniar
independente.
Mult imea mesajelor de de informat ie este Z
2
2
= {00, 01, 10, 11}.

Inmult ind ecare
mesaj cu matricea G se obt ine spat iul liniar al cuvintelor - cod
A
4,2
= {00000, 01001, 10011, 11010}.
Funct ia de codicare este:
00 00000, 01 01001, 10 10011, 11 11010.
Un cod liniar poate generat de mai multe baze posibile. Deci se pot construi
mai multe matrici generatoare pentru un (n, k)-cod liniar. Ele se pot transforma
una n alta prin operat iile liniare obisnuite, denite pentru liniile unei matrici. Prin
schimbarea matricii generatoare nu se schimb a spat iul liniar al cuvintelor - cod, ci
numai modalitatea de codicare (funct ia ). Cum prin termenul cod se nt elege de
obicei spat iul liniar A
n,k
, rezulta ca doua matrici diferite care se deduc una din alta
prin operat ii pe linii, reprezint a acelasi cod.
2.1. MATRICE GENERATOARE 15
Exemplul 2.2 Reluand Exemplul 2.1, prin adunarea liniei doi la prima linie se
obt ine matricea
G

1 1 0 1 0
0 1 0 0 1

Ea genereaza acelasi spat iu liniar A


5,2
, dar codicarea difera:
00 00000, 01 01001, 10 11010, 11 10011
Exemplul 2.3 Matricea
G =

1 1 0 0 0 0
0 0 2 2 0 0
1 1 1 1 1 1

genereaza un (6, 3)-cod liniar peste Z


3
. Aducand matricea la forma canonica, se
obt ine
G

1 1 0 0 0 0
0 0 1 1 0 0
0 0 0 0 1 1

Toate cele 3
3
= 27 cuvinte ale acestui cod au urmatoarea proprietate: ecare simbol
este scris de doua ori. Din acest motiv, codul este numit cod cu repetit ie.
Cea mai convenabil a regula de codicare constan scrierea simbolurilor de informat ie
si suplimentarea lor cu n k simboluri de control. Aceasta corespunde matricii
generatoare (unice)
G = (I|B)
unde I este matricea unitate de ordin k, iar B este o matrice cu k linii si n k
coloane.
Denit ia 2.3 Un cod liniar este numit sistematic daca admite o matrice genera-
toare de forma G = (I|B) unde I este matricea unitate.
Denit ia 2.4 Doua coduri liniare A si A

de aceeasi lungime n se numesc echiva-


lente daca S
n
astfel ncat
v
1
v
2
. . . v
n
A v
(1)
v
(2)
. . . v
(n)
A

(s-a notat cu S
n
mult imea permutarilor de n elemente).
Exemplul 2.4 Codul din Exemplul 2.1 este un cod sistematic. Din codicare se
observa ca mesajul de informat ie se aa n cuvantul - cod pe primele doua pozit ii.
Codul cu repetit ie din Exemplul 2.3 nu este sistematic. Totusi, folosind per-
mutarea (1, 4, 6, 2, 5, 3) (se permuta simbolurile doi cu patru si trei cu sase) se ajunge
la un cod sistematic generat de matricea
G

1 0 0 1 0 0
0 1 0 0 0 1
0 0 1 0 1 0

16 PRELEGEREA 2. CODURI LINIARE


Teorema 2.1 Orice cod liniar este echivalent cu un cod liniar sistematic.
Demonstrat ie: Matricea generatoare G a unui (n, k) - cod liniar A are rangul k; deci
ea are k coloane liniar independente.
1. Sa presupunem ca primele k coloane ale lui G sunt liniar independente. Deci
G = (X|Y ) unde Y este o matrice kk inversabil a. Exista atunci o succesiune
de operat ii de linii care transforma X n matricea unitate. Aceeasi succesiune
de operat ii efectuate acum pentru toata matricea G va conduce la matricea
G

= (I|Y

). Deoarece si G

este matrice generatoare pentru codul A, rezulta


ca acesta este sistematic.
2. Fie (p
1
, p
2
, . . . , p
n
) permutarea care aduce coloanele liniar independente ale
matricii G pe primele k pozit ii. Se obt ine n acest fel o noua matrice G

. Fie
A

codul liniar obt inut prin codicarea cu matricea generatoare G

. Atunci A
si A

sunt echivalente, iar A

este sistematic, conform cazului anterior. 2


2.2 Matrice de control
Denit ia 2.5 Fie A
n,k
un cod liniar generat de matricea G = G
k,n
. Se numeste
matrice de control o matrice H = H
nk,n
cu proprietatea GH
T
= 0.
Observat ii:
Din denit ie rezulta ca matricea de control H a unui cod liniar A are urma-
toarea proprietate:
v A vH
T
= 0
Lasam ca exercit iu demonstrarea acestei echivalent e.
Prin transpunere, relat ia de sus se poate scrie si HG
T
= 0. Aceasta nseamn a
ca si H este matricea generatoare a unui (n, nk) - cod liniar peste corpul Z
q
,
cod pentru care G este matrice de control. Cele doua coduri astfel denite se
numesc coduri duale. Cuvintele - cod din cele doua coduri duale sunt ortogo-
nale (produsul lor scalar este zero).

Intr-adev ar, daca A si B sunt doua coduri
duale generate de matricile G respectiv H, iar x A, y B sunt cuvinte -
cod arbitrare, exista u, v cu x = uG, y = vH.

In plus, xH
T
= 0, yG
T
= 0.
Atunci, xy
T
= uGy
T
= u(yG
T
)
T
= u0
T
= 0.
Exemplul 2.5 (7, 4) - codul liniar binar cu matricea generatoare
G =

1 0 0 0 0 1 1
0 1 0 0 1 0 1
0 0 1 0 1 1 0
0 0 0 1 1 1 1

are drept matrice de control


2.2. MATRICE DE CONTROL 17
H =

0 0 0 1 1 1 1
0 1 1 0 0 1 1
1 0 1 0 1 0 1

care la randul ei este matricea generatoare a unui (7, 3) - cod liniar binar.
Se verica imediat relat ia
GH
T
=

0 0 0
0 0 0
0 0 0
0 0 0

Un cod care coincide cu codul sau dual se numeste cod auto - dual.
Teorema 2.2 Un cod sistematic cu matricea generatoare G = (I|B) admite ca
matrice de control H = (B
T
|I).
Demonstrat ie: Cele doua matrici unitate din scrierea lui G si H sunt de ordin k
respectiv n k. Efectuand calculele, se obt ine:
GH
T
= (I|B)

= IB +BI = B +B = 0
2
Corolarul 2.1 Matricea de control a unui (n, k)-cod liniar are rangul n k.
Teorema de sus permite un algoritm de calcul extrem de simplu al matricii de control,
atunci cand se cunoaste matricea generatoare. Sa arat am aceasta pe un exemplu:
Exemplul 2.6 Plecand de la matricea generatoare construita n Exemplul 2.4, se
poate construi matricea de control (calculele se fac n Z
3
):
H

1 0 0 1 0 0
0 0 1 0 1 0
0 1 0 0 0 1

2 0 0 1 0 0
0 0 2 0 1 0
0 2 0 0 0 1

.
Aplicand acum permutarea inversa coloanelor lui H

, se ajunge la matricea de con-


trol a codului denit n Exemplul 2.3:
H =

2 1 0 0 0 0
0 0 0 0 1 2
0 0 1 2 0 0

Relat ia xH
T
= 0 pe care o veric a orice cuvant - cod x A
n,k
permite sa denim
un cod si sub forma unui sistem de ecuat ii. Astfel, A
n,k
este un cod peste Z
q
daca
si numai daca elementele sale sunt solut ii ale sistemului liniar xH
T
= 0.
Exemplul 2.7 Codul cu matricea de control H =

1 1 0 1 0
1 1 1 1 1

este denit ca mult imea solut iilor binare (x


1
, x
2
, x
3
, x
4
, x
5
) ale sistemului
x
1
+x
2
+x
4
= 0, x
1
+x
2
+x
3
+x
4
+x
5
= 0
18 PRELEGEREA 2. CODURI LINIARE
2.3 Sindrom
Fie codul liniar A
n,k
Z
n
q
peste Z
q
, cu matricea de control H si a Z
n
q
. Se numeste
sindrom al vectorului a vectorul z cu n k componente obt inut prin relat ia
z
T
= Ha
T
,
sau - echivalent - z = aH
T
.
Observat ie: z = 0 a A
n,k
.
Daca se transmite printr-un canal de comunicat ie un cuvant a A
n,k
pentru
care sindromul corespunzator veric a relat ia z = aH
T
= 0, nseamna ca s-a detectat
faptul ca n timpul transmisiei au aparut erori.
Teorema 2.3

In Z
2
, sindromul recept ionat este egal cu suma coloanelor din ma-
tricea de control corespunzatoare pozit iilor perturbate.
Demonstrat ie: Fie a = (a
1
, a
2
, . . . , a
n
) A
n,k
cuvantul-cod transmis. Fara a res-
trange generalitatea, sa presupunem ca au intervenit trei erori, pe pozit iile i, j, k,
ind recept ionat vectorul
a

= (a
1
, . . . , a
i1
, a

i
, a
i+1
, . . . , a
j1
, a

j
, a
j+1
, . . . , a
k1
, a

k
, a
k+1
, . . . , a
n
)
unde a

i
= a
i
, a

j
= a
j
, a

k
= a
k
. Avem
0 = aH
T
= a
1
(h
1
) +. . . +a
i
(h
i
) + . . . +a
j
(h
j
) + . . . +a
k
(h
k
) + . . . +a
n
(h
n
)
pentru ca a A
n,k
, iar (h
1
), . . . , (h
n
) sunt coloanele matricii H.
Avem, de asemenea
a

H
T
= a
1
(h
1
) +. . . +a

i
(h
i
) + . . . +a

j
(h
j
) + . . . +a

k
(h
k
) + . . . +a
n
(h
n
)
Prin adunarea acestor doua egalitat i se obt ine:
z

= a

H
T
= aH
T
+a

H
T
= (0) +. . . +(0) +(h
i
) +. . . +(h
j
) +. . . +(h
k
) +(0) +
. . . + (0) = (h
i
) + (h
j
) + (h
k
). 2
2.4 Pondere, distant a Hamming
Pentru orice cuvant x Z
n
q
, se numeste pondere num arul w(x) de componente
nenule. Evident, 0 w(x) n.
Pentru doua cuvinte x, y Z
n
q
, se numeste distant a Hamming ntre ele, numarul
d(x, y) = w(x y).
Ca o remarca, deoarece x y Z
n
q
, rezulta ca distant a Hamming dintre doua
cuvinte este ponderea unui cuvant din Z
n
q
.
Denit ia 2.6 Se numeste distant a (Hamming) a codului liniar A
n,k
Z
n
q
peste Z
q
cea mai mica distant a (Hamming) dintre elementele codului A
n,k
, adica
d = min
x,yA
n,k
,x=y
d(x, y)
2.5. DETECTARE SI CORECTARE DE ERORI 19
Folosind proprietatea anterioara si faptul ca 0 A
n,k
, rezulta ca
d = min
xA
n,k
,x=0
w(x).
Se poate verica imediat ca d este o distant a cu ajutorul careia Z
n
q
se poate structura
ca spat iu metric.
Teorema 2.4 Fie H matricea de control a unui cod liniar A
n,k
. Codul are distant a
minima d daca si numai daca orice combinat ie liniara de d 1 coloane ale lui H
este liniar independenta si exista cel put in o combinat ie liniara de d coloane liniar
dependente.
Demonstrat ie: Pentru orice cuvant a, cu w(a) = s, aH
T
este o combinat ie liniara
de s coloane ale lui H. Cum exista un cuvant - cod de pondere minima egala cu
distant a d a codului, rezulta ca avem cel put in o combinat ie de d coloane liniar
dependente ale lui H. O combinat ie de mai put in de d coloane liniar dependente ar
conduce la contradict ie. 2
Denit ia 2.7 Pentru r > 0 si x Z
n
q
, denim sfera de raza r si centru x ca
S
r
(x) = {y|d(x, y) r}
Teorema 2.5 Fie A
n,k
Z
n
q
un cod liniar peste Z
q
cu distant a Hamming d. Daca
r =

d 1
2

, atunci
x, y A
n,k
, x = y, S
r
(x) S
r
(y) = .
Demonstrat ie: Presupunem prin absurd ca exista z Z
n
q
, z S
r
(x) S
r
(y).
Atunci d(x, z) r, d(y, z) r deci, conform inegalitat ii triunghiului, d(x, y)
d(x, z) + d(y, z) 2r = 2

d1
2

< d, ceea ce contrazice armat ia ca d este distant a


codului A
n,k
. 2
Evident, n ecare astfel de sfera exista un singur cuvant - cod: cel aat n
centru.
Denit ia 2.8 Un cod liniar A
n,k
Z
n
q
de distant a d peste Z
q
este perfect daca
Z
n
q
=

xA
n,k
S
r
(x)
unde r =

d1
2

.
2.5 Detectare si corectare de erori
Fie A
n,k
Z
n
q
un cod liniar peste Z
q
, de distant a d si t =

d1
2

. Sa presupunem ca
s-a recept ionat cuvantul z Z
n
q
; va exista cel mult un cuvant x A
n,k
astfel ncat
z S
t
(x) (n cazul codurilor perfecte, acest cuvant exista totdeauna).

In cazul (ideal) cand z = x, cuvantul a fost transmis fara erori (sau cu erori
nedetectabile).
20 PRELEGEREA 2. CODURI LINIARE
Daca z = x, atunci mesajul a fost perturbat (si avem o detectare de erori);
n ipoteza ca numarul de erori aparute este minim si exista un x A
n,k
astfel ca
d(x, z) t, atunci z provine din cuvantul - cod x - si se va transforma n acesta
prin corectarea corespunzatoare a erorilor.

In celelalte cazuri, z sau nu se poate corecta, sau se corecteaza gresit, n alt


cuvant cod.
Aceasta ultima situat ie nu apare la codurile perfecte.
Metoda de detectare si corectare a erorilor descrisa mai sus se numeste decodi-
carea cea mai probabila. Pentru marea majoritate a codurilor liniare aceasta este
singura metoda utilizata.
Pentru orice cuvant e Z
n
q
formam mult imea
V
e
= e +A = {e +v|v A}
V
e
este mult imea cuvintelor w = e +v care pot recept ionate la transmiterea
cuvantului cod v, atunci cand a act ionat un vector - eroare e. e va numit eroare
- tip.

In particular, A = 0 +A = V
0
.
Propozit ia 2.1 Pentru orice a V
e
, V
a
= V
e
.
Demonstrat ie: Din a V
e
, rezulta ca exista x A cu a = e +x. Deoarece x+A = A
(evident, A ind subspat iu liniar), avem V
a
= a +A = e +x +A = e +A = V
e
. 2
Vom utiliza aceasta propozit ie pentru denirea unei tehnici de decodicare.
Daca vrem sa detectam o anumit a eroare - tip e care modica cuvintele din A
n cuvintele subspat iului V
e
, atunci vor mai usor de depistat cuvintele din V
e
cu
ponderea minima.
Pentru ecare V
e
se alege un cuvant numit reprezentantul lui V
e
; acesta este un
element cu cea mai mica pondere din V
e
.
Se construieste urmatorul tablou (numit tablou standard):
1. Pe prima linie se scriu cuvintele - cod, ncepand cu 0 (reprezentantul lui
A = V
0
);
2. Pe prima coloana se scriu reprezentant ii 0, e
1
, e
2
, . . .;
3. Pe linia cu reprezentantul e
i
, sub cuvantul cod x
j
se scrie cuvantul
e
i
+x
j
( mod q).
Exemplul 2.8 Fie matricea generatoare G =

1 0 0 1
0 1 1 1

peste Z
2
. Ea va cod-
ica Z
2
2
= {00, 01, 10, 11} n A
4,2
= {0000, 1001, 0111, 1110}.
Calculul mult imilor V
e
conduce la
V
0000
= V
1001
= V
0111
= V
1110
V
1000
= V
0001
= V
0110
= V
1111
V
0100
= V
1101
= V
0011
= V
1010
V
0010
= V
1011
= V
0101
= V
1100
2.5. DETECTARE SI CORECTARE DE ERORI 21
Alegem ca reprezentant i pe 0000, 1000 (se poate si 0001), 0100, 0010. Tabloul
standard va :
0000 1001 0111 1110
1000 0001 1111 0110
0100 1101 0011 1010
0010 1011 0101 1100
Pentru recept ie, acest tablou este ca un dict ionar care se utilizeaza astfel: cu-
vantul primit se decodica n cuvantul - cod din capul coloanei pe care se aa.
De exemplu, daca se recept ioneaza 1101, el se va decodica n 1001.
Evident, cuvintele de pe prima coloana se decodica n ele nsele (ele nu au fost
perturbate de nici o eroare).
Pentru orice cod liniar, un dict ionar complet de tipul celui de mai sus constituie cea
mai simpla metoda de decodicare.
Problema apare atunci candntr-o mult ime V
e
sunt mai multe cuvinte de pondere
minima. Atunci tabela va decodica corect numai eroarea - tip aleasa ca reprezen-
tant.
Astfel, revenind la Exemplul 2.8, cuvantul recept ionat 1111 se decodica n 0111
(considerand ca a fost alterat primul caracter).
Daca se ia ns a drept reprezentant pe linia a doua 0001 n loc de 1000, a doua
linie din tabloul standard este
0001 1000 0110 1111
Atunci, 1111 se decodican 1110 (considernd ultimul caracter ca ind cel alterat
de canalul de transmisie). Care este cuvantul - cod corect transmis ? Acest lucru nu
poate decis. Singurul lucru care poate facut este sa se aleaga drept reprezentant i
erorile - tip cele mai probabile.
Pentru un (n, k) - cod peste Z
q
, un dict ionar complet consta din toate cele q
n
cuvinte posibile, lucru destul de dicil deoarece n practica codurile sunt destul de
lungi (de exemplu n = 100, k = 80). De aceea este utilizata o alta maniera de lucru
care reduce mult marimea tabloului de lucru.
Fie H matricea de control a unui (n, k) - cod liniar A; putem considera (Corolarul
2.1) ca liniile lui H sunt vectori liniar independent i.
Teorema 2.6 Pentru orice e Z
n
q
, toate cuvintele din V
e
au acelasi sindrom.
Demonstrat ie: Fie v A arbitrar si w = e +v. Avem
wH
T
= (e +v)H
T
= eH
T
+vH
T
= eH
T
+0 = eH
T
.
Deci toate cuvintele din V
e
au sindromul egal cu sindromul lui e. 2
Invers, pentru ecare sindrom - deci pentru ecare cuvant s de lungime nk, se
poate determina un vector - eroare e avand sindromul s. Mai mult, s va ales astfel
ncat sa aiba pondere minima (conform decodicarii cele mai probabile). Pentru
22 PRELEGEREA 2. CODURI LINIARE
aceasta, se rezolva sistemul de ecuat ii liniare He
T
= s
T
, care are solut ie, deoarece
liniile lui H sunt liniar independente. Din mult imea solut iilor alegem una de pondere
minima, cu ajutorul careia construim mult imea V
e
a tuturor cuvintelor de sindrom
s.
Pe baza celor de mai sus, se poate folosi urmatoarea procedura de decodicare:
1. La recept ionarea unui cuvant w, se calculeaza sindromul s:
s
T
= Hw
T
.
2. Se aa eroarea - tip e cu sindromul s.
3. Se considera cuvantul - cod corect ca ind v = we.

In acest fel, nu mai este necesar sa se ret ina tot tabloul standard; este sucient
sa se stie reprezentant ii subspat iilor V
e
si sindromurile corespunzatoare.
Exemplul 2.9 Reluand codul denit n Exemplul 2.8, el are ca matrice de control
H =

0 1 1 0
1 1 0 1

Calculand sindromurile reprezentant ilor, se ajunge la tabloul:


Sindrom Reprezentant
00 0000
01 1000
10 0010
11 0100
care reprezinta o reducere cu 50% a datelor stocate.
La recept ionarea cuvantului 1101, i se calculeaza sindromul

0 1 1 0
1 1 0 1

1
1
0
1

1
1

Repezentantul sindromului 11 este 0100. Efectuand operat ia


1101 0100 = 1101 + 0100 = 1001
(n Z
2
scaderea este de fapt adunare) se ajunge la cuvantul transmis, anume 1001.
Exemplul 2.10 Sa consideram codul liniar peste Z
3
denit de matricea de control
H =

1 0 2 1 0
0 1 2 1 2

Sindromurile sunt cuvinte de lungime 2 peste Z


3
, deci n total noua cuvinte.
Lista sindromurilor si a reprezentant ilor este:
2.6. EXERCIT II 23
Sindrom Reprezentant
00 00000
10 10000
01 01000
22 00100
11 00010
02 00001
20 20000
12 10001
21 20002
De remarcat ca un tablou standard pentru acest cod are dimensiunea 9 27 si
cont ine 243 cuvinte; volumul de date s-a redus deci cu 92%.
Sa presupunem ca s-a trimis cuvantul cod 21122 si s-a recept ionat 11122.
Sindromul este

1 0 2 1 0
0 1 2 1 2

1
1
1
2
2

2
0

deci e = 20000; decodicarea este


v = we = 11122 20000 = 21122.
Decodicarea a fost corecta deoarece eroarea - tip aparut a a fost una din cele
selectate prin reprezentant i.
2.6 Exercit ii
2.1 Sa se construiasca coduri liniare care sa transforme cuvantul (a
1
, a
2
, . . . , a
n
)
Z
n
q
n:
1. (a
1
, a
1
, a
1
, a
2
, a
2
, a
2
, . . . , a
n
, a
n
, a
n
);
2. (a
1
, b
1
, a
2
, b
2
, . . . , a
n
, b
n
) unde b
1
= a
1
, b + 2 = a
1
+a
2
, b
n
= a
1
+. . . +a
n
;
3. (a
1
, 2a
n
, 3a
2
, 4a
n1
, . . .).
2.2 Un cod liniar peste Z
5
are urmatoarea matrice generatoare:
G =

1 2 3 1 2
2 2 4 1 0
1 1 2 2 1

Sa se ae matricea de control.
2.3 Aceeasi problema pentru Z
7
.
24 PRELEGEREA 2. CODURI LINIARE
2.4 Determinat i daca urmatorul cod liniar binar este sistematic sau nu:
G =

1 1 0 0 0 0
0 0 1 1 1 1
0 0 0 0 1 1

Daca nu, gasit i un cod sistematic echivalent.


2.5 Gasit i matricea generatoare a unui cod liniar binar care are matricea de control:
H =

1 0 1 1 0 0 0
1 1 1 0 1 0 0
1 1 0 0 0 1 0
0 0 1 0 0 0 1

2.6 Se da matricea de control


H =

1 1 0 1 0 1
1 1 0 0 1 0
1 0 1 1 0 0

a unui cod liniar binar.


Sa se decodice mesajele 110110, 010100.
2.7 Descriet i dualul (6, 3) - codului binar descris de ecuat iile:
x
1
= x
4
, x
2
= x
5
, x
3
= x
6
.
2.8 Fie A un cod liniar binar obt inut din toate sumele posibile ale cuvintelor
101011, 011101, 011010.
1. Aat i o matrice de control a codului.
2. Aat i un tablou standard si decodicat i 111011.
2.9 Demonstrat i ca codul liniar binar descris de ecuat iile
x
3
= x
1
+x
2
, x
4
= x
1
, x
5
= x
1
+x
2
corecteaza o eroare. Construit i tabloul standard.
2.10 Construit i o tabela de sindromuri de decodicare pentru:
1. Codul cu repetit ie de lungime 7;
2. Codul din Exercit iul 2.7;
3. Codul peste Z
3
cu matricea generatoare:
G =

1 0 0 2 2
0 1 0 0 1
0 0 1 1 0

2.11 Fie un cod liniar A


n,k
Z
n
q
si tabela de sindromuri de decodicare cores-
punzatoare. Denim o operat ie de decodicare : Z
n
q
A
n,k
cu proprietatea:
v A
n,k
, e reprezentant din tabela, (v +e) = v. ( corecteaza erorile - tip din
tabela de decodicare). Sa se arate ca atunci nu corecteaza nici o alta eroare - tip:
daca e nu este un reprezentant din tabela, atunci exista v A
n,k
cu (v +e) = v.
(Altfel spus, decodicarea cu sindromuri este optimala).
Prelegerea 3
Coduri liniare - II
3.1 Capacitat i de detectare si corectare de erori
Dupa cum am vazut pana acum, un cod liniar este un spat iu liniar, codul dual este
complementul sau ortogonal etc. Teoria codurilor este interesat a nsa n depistarea
unor coduri cu proprietat i deosebite n detectarea si corectarea erorilor. Aceste
proprietat i sunt legaten special de distant a minima a codului. Vom prezenta pentru
nceput cateva rezultate legate de diverse margini relativ la distant a, num arul de
simboluri de control, informat ie etc.
Teorema 3.1 Un cod liniar A
n,k
Z
n
q
are distant a minima d daca si numai daca
poate detecta orice combinat ie de maxim d 1 erori.
Demonstrat ie: Daca se transmite un cuvant a A
n,k
si apar t(t < d) erori, se va
recept iona cuvantul a +e Z
n
q
cu w(e) = t.
Deoarece d(a, a +e) = t, rezulta a +e A
n,k
, deci se detecteaza eroare.
Reciproca este evidenta. 2
Teorema 3.2 Un cod liniar A
n,k
Z
n
q
are distant a minima d daca si numai daca
poate corecta orice combinat ie de maxim
_
d1
2
_
erori.
Demonstrat ie: Sa presupunem prin absurd ca d 2t si vom arata ca exista erori
- tip de pondere t (numite si pachete de t erori) care nu pot corectate de codul
A
n,k
. Aceasta contradict ie va duce la concluzia d 2t +1, adica A
n,k
poate corecta
orice pachet de t
_
d1
2
_
erori.
Fie a, b A
n,k
cu d(a, b) = d si i
1
, i
2
, . . . , i
d
tot i indicii n care a difera de b.
Alegand t =
_
d+1
2
_
, avem d 2t (t astfel ales este minim).
Sa presupunem ca se trimite a si se recept ioneaza cuvantul a

= (a

1
, a

2
, . . . , a

n
)
unde
a

i
=
_

_
a
i
= b
i
daca i = i
1
, i
2
, . . . , i
d
,
a
i
daca i = i
1
, i
3
, . . . ,
b
i
daca i = i
2
, i
4
, . . .
Atunci, evident d(a, a

) =
_
d + 1
2
_
= t si d(a

, b) =
_
d
2
_
t = d(a

, a). Aceasta va
duce la decodicarea lui a n b - incorect.
25
26 PRELEGEREA 3. CODURI LINIARE - II
Sa presupunem acum d 2t + 1. Atunci codul A
n,k
poate corecta orice pachet
de t erori. Pentru a arata aceasta, sa presupunem ca se trimite un cuvant - cod
a si se primeste un cuvant a

cu d(a, a

) t. Pentru orice cuvant cod b (deci cu


d(a, b) d 2t + 1) avem, conform inegalitat ii triunghiului:
d(a, a

) + d(a

, b) d(a, b) 2t + 1.
deci, d(a

, b) 2t + 1 d(a, a

) 2t + 1 t = t + 1 > d(a, a

).
Deci, cu o decodicare cea mai probabila, a

se va decodica n a. 2
Teorema 3.3 Distant a minima a unui (n, k) - cod liniar verica relat ia
d n k + 1.
Demonstrat ie: Vom separa demonstrat ia n doua part i:
A: Fie A
n,k
un cod sistematic. Atunci primele k simboluri din orice cuvant - cod
pot alese arbitrar. Fie v A
n,k
cuvantul de forma v = 100 . . . 0v
k+1
v
k+2
. . . v
n
.
Evident, 0 < w(v) n k + 1. Cum d este cea mai mica pondere a unui cuvant -
cod nenul, rezulta inegalitatea ceruta.
B: Fie A
n,k
un cod liniar arbitrar si A

n,k
codul liniar sistematic echivalent. Se ob-
serva ca cele doua coduri au aceeasi parametri n, k, d. Folosind acum A, inegalitatea
se obt ine din nou. 2
Teorema 3.4

In orice cod liniar A
n,k
peste Z
q
avem
d
nq
k1
(q 1)
q
k
1
(marginea Plotkin)
Demonstrat ie: Sa consideram elementele din A
n,k
asezate ca linii ale unui tablou. Se
obt ine un tablou cu q
k
linii si n coloane. Fiecare component a nenula din Z
q
apare
pe ecare coloana n q
k1
linii. Atunci, suma ponderilor tuturor cuvintelor - cod
este egala cu nq
k1
(q 1) deoarece ecare component a nenul a apare de q
k1
ori n
ecare coloana si avem q 1 componente nenule distribuite pe n coloane.
Distant a minima a codului nu poate sa depaseasca ponderea medie a cuvintelor
codului, adica
d
nq
k1
(q 1)
q
k
1
deoarece n A
n,k
sunt q
k
1 cuvinte nenule. 2
Teorema 3.5 Fie A
n,k
un cod liniar peste Z
q
care corecteaza orice combinat ie de
maxim t erori.

Intr-un asemenea cod sunt necesare cel put in
n k log
q
[1 + C
1
n
(q 1) + C
2
n
(q 1)
2
+ . . . + C
t
n
(q 1)
t
]
pozit ii de control (marginea Hamming).
3.1. CAPACIT

AT I DE DETECTARE SI CORECTARE DE ERORI 27


Demonstrat ie: Pentru ca A
n,k
sa corecteze orice combinat ie de cel mult t erori, este
necesar ca ecare astfel de eroare - tip sa e reprezentat a n tabloul standard, deci
sa e caracterizata printr-un sindrom distinct. Sunt q
nk
sindromuri distincte, deci
acesta este numarul maxim de erori care pot corectate de cod. Din cele q
nk
sindromuri, 1 trebuie sa e pentru 0 erori, C
1
n
(q 1) - pentru erori - tip simple
(cuvinte e cu o singura componenta nenul a), C
2
n
(q 1)
2
pentru erori duble etc.
Deci, este necesar ca
q
nk
1 + C
1
n
(q 1) + C
2
n
(q 1)
2
+ . . . + C
t
n
(q 1)
t
.
Apoi se logaritmeaza. 2
Teorema 3.6 Daca
n k log
q
[1 + C
1
n1
(q 1) + C
2
n1
(q 1)
2
+ . . . + C
d2
n1
(q 1)
d2
]
atunci exista un cod liniar A
n,k
peste Z
q
cu distant a minima d (marginea Varsamov
- Gilbert).
Demonstrat ie: Pentru ca sa existe un cod liniar A
n,k
peste Z
q
cu distant a minima d
este sucient (Teorema 2.4) ca orice coloana din matricea de control H
nk,n
sa nu
e combinat ie liniara a altor d2 coloane, n acest fel ne-existand nici o combinat ie
liniara ntre d 1 coloane ale lui H. Aceasta condit ie este echivalent a cu
q
nk
1 C
1
n1
(q 1) + C
2
n1
(q 1)
2
+ . . . + C
d2
n1
(q 1)
d2
.
Aici, q
nk
1 reprezinta num arul total de coloane distincte nenule care pot apare
n matricea H. Semnicat ia termenilor din membrul drept este evidenta; astfel, de
exemplu C
2
n1
(q 1)
2
reprezint a num arul combinat iilor liniare cu coecient i nenuli
a doua din cele n 1 coloane etc.
Apoi se logaritmeaza. 2
Fie E
n,k
un cod liniar peste Z
q
pentru care d 2t + 1 (deci cu capacitatea de a
corecta orice combinat ie de maxim t erori). Reamintim ca n prelegerea precedent a
am denit pentru orice x A
n,k
sfera centrat a n x prin
S
t
(x) = {y Z
n
q
|d(x, y) t}.
Mai introducem si suprafat a (scoart a) acestei sfere, denita:
A
t
(x) = {y Z
n
q
|d(x, y) = t}.
Vom nota numarul de elemente ale ecareia din cele doua mult imi prin
S
t
= |S
t
(x)|, A
t
= |A
t
(x)|
(valorile sunt aceleasi pentru orice x Z
n
q
).
Au loc relat iile evidente:
A
t
S
t
, S
t
=
t

i=0
A
i
.
28 PRELEGEREA 3. CODURI LINIARE - II
Deoarece sferele de raza t centrate n cuvintele codului A
n,k
sunt disjuncte, avem
q
k
S
t
q
n
.
Aici, q
k
reprezint a num arul de cuvinte - cod, iar q
n
- numarul total de cuvinte
din Z
n
q
.
Din aceasta relat ie se obt ine imediat
n k log
q
S
t
,
cunoscuta sub numele de inegalitatea volumului. Ea mai poate gasita si sub forma
k
n
1
1
n
log
q
S
t
.
Raportul
k
n
se numeste rata de informat ie si da o masura a cantit at ii de informat ie
pe care o poarta un cuvant - cod. O rata de informat ie mica (mai multe simboluri
de control) asigura o securitate mai mare a transmiterii datelor.

In schimb, condit ii
practice de ecient a cer o rata de informat ie cat mai mare (mai multa informat ie
pe unitatea de mesaj). Aceasta este una din solicitarile contradictorii ale teoriei
codurilor.
3.2 Modicari ale codurilor liniare
Adesea este imposibil sa se utilizeze un cod bun deoarece el nu satisface anumite
restrict ii tehnice, cum ar lungimea sau rata de informat ie. De aceea este practic
sa se faca anumite modicari asupra codurilor, care sa nu afecteze proprietatile
principale de detectare si corectare de erori.
Denit ia 3.1 Numim extensie a unui (n, k) - cod liniar A peste Z
q
, (n + 1, k) -
codul liniar A

obt inut din A prin adaugarea la ecare cuvant cod a


1
a
2
. . . a
n
a unui
simbol nou a
n+1
cu proprietatea
n+1

i=1
a
i
= 0 (mod q).
Observat ii:


In cazul binar, noul caracter a
n+1
poarta numele bit de paritate.
Daca H este matricea de control a codului A
n,k
, atunci codul extins A

n+1,k
are
matricea de control
H

=
_
_
_
_
_
_
0
H
.
.
.
0
1 1 . . . 1 1 1
_
_
_
_
_
_
De fapt, ultima linie reprezint a ecuat ia
n

i=1
x
i
= 1.
3.2. MODIFIC

ARI ALE CODURILOR LINIARE 29


Daca un cod liniar binar A are o distant a minima impara d, atunci codul
extins are distant a minima d + 1.

Intr-adev ar, e a = a
1
a
2
. . . a
n
A cu
w(a) = d. Cum d este impar, rezulta
n

i=1
a
i
= 1 (n Z
2
), deci a
n+1
= 1.
Cuvantul a

= a
1
a
2
. . . a
n
1 A

, w(a

) = d + 1 si nu se poate construi un alt


cuvant - cod n A

de pondere mai mica.


Denit ia 3.2 Fie A un cod liniar de lungime n peste Z
q
.
1. Relaxarea lui A este un cod liniar A de lungime n1 obt inut prin stergerea
ultimului simbol din cuvintele lui A;
2. Completarea lui A este un cod denit A

= A(A+1) (unde 1 este cuvantul


cu toate elementele 1, iar suma se face modulo q);
3. Expurgarea lui A este codul A

= {a A|w(a) 0 mod 2}.


Observat ii:
Relaxarea este operat ia inversa extensiei.
Prin completarea si expurgarea codurilor liniare se obt in coduri liniare numai
n cazul binar.

In celelalte cazuri, noile mult imi rezultate nu sunt spat ii liniare.
Propozit ia 3.1 Prin completarea unui cod liniar binar A
n,k
se obt ine un cod liniar
binar A
n,k+1
cu un numar dublu de cuvinte - cod.
Demonstrat ie: Completarea unui cod binar nseamn a adaugarea la cuvintele - cod
ale lui A a tuturor cuvintelor obt inute prin complementare (schimbarea lui 0 n 1 si
a lui 1 n 0).
Fie G
k,n
matricea generatoare a codului A
n,k
. Se veric a usor ca matricea
G

=
_
_
_
G
1 1 . . . 1 1
_
_
_
genereaza A
n,k
(1 +A
n,k
). Acest cod are k +1 pozit ii de informat ie si lungime
n. Fiecare din cele doua submult imi are un numar egal de elemente. 2
Propozit ia 3.2 Orice cod liniar binar are sau toate cuvintele - cod de pondere para,
sau numarul cuvintelor - cod de pondere para este egal cu al celor de pondere impara.
Demonstrat ie: Fie A un cod liniar binar cu un cuvant v
1
de pondere impara. Sa
presupunem ca v
1
, v
2
, . . . , v
r
sunt toate cuvintele lui A; atunci A = A+v
1
. Pentru
orice cuvant - cod v
i
de pondere para (impara), v
1
+v
i
are pondere impara (para).
Pentru aceasta, sa presupunem ca w(v
1
) = 2p + 1, w(v
i
) = 2q iar v
i
si v
1
au 1 pe
r pozit ii comune. Atunci w(v
i
+v
1
) = w(v
i
) + w(v
1
) 2r (pentru ca 1 + 1 = 0)
= 2p + 1 + 2q 2r = 2s + 1. Similar daca v
i
are pondere impara.
Deci adunarea cu v
1
deneste o corespondent a biunivoca ntre cuvintele - cod
de pondere para si cele de pondere impara, ceea ce completeaza demonstrat ia. 2
30 PRELEGEREA 3. CODURI LINIARE - II
Corolarul 3.1 Expurgarea unui cod liniar binar A este tot A sau un cod liniar
avand ca elemente jumatate din elementele lui A.
Matricea generatoare G
exp
a lui A
exp
se poate obt ine din matricea G a lui A astfel:
daca toate liniile lui G sunt vectori de pondere para cele doua coduri coincid. Altfel,
e G = [e
1
, e
2
, . . . , e
r
, e
r+1
, . . . , e
k
]
T
n care - fara a micsora generalitatea, putem
presupune ca primele r au pondere impara, iar celelalte k r au pondere para.
Atunci G
exp
= [0, e
2
+e
1
, . . . , e
r
+e
1
, e
r+1
. . . , e
k
]
T
.
Exemplul 3.1 Sa construim codul A
4,2
peste Z
3
de matrice generatoare
G =
_
1 0 0 1
0 1 1 1
_
.
Ea codica cele 9 elemente din Z
2
3
n
A
4,2
= {0000, 0111, 0222, 1001, 1112, 1220, 2002, 2110, 2221}.
Codul liniar relaxat A
3,2
= {000, 011, 022, 100, 111, 122, 200, 211, 222} este generat
de matricea
G
rel
=
_
1 0 0
0 1 1
_
.
Construct ia a fost posibila deoarece prin eliminarea ultimei coloane, liniile ramase
sunt tot liniar independente. Daca acest lucru nu este realizabil, se cauta k cuvinte
- cod n A
n,k
cu proprietatea ca dupa eliminarea ultimei componente, ele sunt liniar
independente. Acestea formeaza liniile noii matrici generatoare.
Codul completat este
0000 0111 0222 1001 1112 1220 2002 2110 2221
1111 1222 1000 2112 2220 2001 0110 0221 0002
De remarcat ca el nu este un spat iu liniar (nu este nchis la adunarea din Z
3
).
Codul expurgat are cinci elemente: {0000, 1001, 1112, 2002, 2221}. Nici acesta
nu este cod liniar.
Exemplul 3.2 Sa reluam matricea generatoare din Exemplul 3.1, dar pentru un
cod liniar peste Z
2
. Codul generat de G este A
4,2
= {0000, 0111, 1001, 1110}.
Toate codurile modicate sunt n acest caz coduri liniare. Astfel
Codul relaxat A
rel
= {000, 011, 100, 111} este generat de aceeasi matrice G
rel
din Exemplul 3.1.
Codul completat A
com
= {0000, 0111, 1001, 1110, 1111, 1000, 0110, 0001} este
un cod liniar generat de matricea
G
com
=
_
_
_
1 0 0 1
0 1 1 1
1 1 1 1
_
_
_.
Codul expurgat A
exp
= {0000, 1001} este un cod liniar generat de matricea
G
ex
=
_
1 0 0 1
0 0 0 0
_
.
3.3. DETECTAREA SI CORECTAREA SIMULTAN

A A ERORILOR 31
3.3 Detectarea si corectarea simultana a erorilor
Sa ncepem cu un exemplu.
Exemplul 3.3 Fie (7, 4) - codul liniar binar cu matricea de control
H =
_
_
_
0 0 0 1 1 1 1
0 1 1 0 0 1 1
1 0 1 0 1 0 1
_
_
_.
El are distant a minima d = 3, deci poate detecta 2 erori si poate corecta o eroare
(Teoremele 3.1,3.2). Totusi, codul nu poate realiza acest lucru simultan.
Mai precis, atunci cand codul este utilizat pentru corectare de erori, erorile du-
ble scapa nedetectate. Astfel, daca se trimite 0000000 si se recept ioneaza 1010000,
sindromul este 010. Tabloul standard conduce la corectarea celui de-al doilea bit, si
decodica (incorect) n cuvantul - cod 111000.
Uneori nsa, se solicita n mod explicit un cod capabil sa detecteze si sa corecteze
erori n acelasi timp.
Denit ia 3.3 Un cod A de lungime n corecteaza t erori si detecteaza s erori simul-
tan daca orice cuvant - cod v are urmatoarea proprietate:
w Z
n
q
[d(w, v) s = a A \ {v}, d(w, a) > t].

In aceasta situat ie, detectarea si corectarea simultan a a erorilor se realizeaza astfel:


la recept ionarea unui cuvant w Z
n
q
se cauta cel mai apropiat cuvant - cod v (n
sensul distant ei Hamming). Daca d(w, v) t atunci cuvantul se corecteaza n v;
altfel, se anunt a ca cel put in s simboluri sunt modicate.
Justicarea acestui procedeu rezulta imediat din denit ie.
Teorema 3.7 Un cod corecteaza t erori si detecteaza s erori simultan daca si numai
daca
d t + s + 1.
Demonstrat ie: A: Sa presupunem d s + t + 1. Fie v un cuvant - cod si w Z
n
q
cu d(v, w) s. Pentru orice cuvant - cod v

(v

= v) avem d(v, v

) d t +s + 1.
Folosind inegalitatea triunghiului,
d(v, w) + d(w, v

) d(v, v

) s + t + 1,
se deduce
d(w, v

) t + s + 1 d(v, w) t + s + 1 s = t + 1.
Deci, condit ia din denit ie este ndeplinita.
B: Sa presupunem prin absurd d < t + s + 1. Fie v, v

doua cuvinte - cod cu


d(v, v

) = d t + s. Construim cuvantul w din v nlocuind primele s simboluri


n care acesta difera de v

, cu valorile lor din v

. Atunci d(v, w) = s si d(v

, w) =
d s t + s s = t, ceea ce contrazice condit ia din denit ie. 2
32 PRELEGEREA 3. CODURI LINIARE - II
Exemplul 3.4 Sa consideram (8, 4) - codul liniar binar generat de matricea
G =
_
_
_
_
_
1 0 0 0 1 1 1 0
0 1 0 0 1 1 0 1
0 0 1 0 1 0 1 1
0 0 0 1 0 1 1 1
_
_
_
_
_
.
El are distant a minima d = 4, deci - conform Teoremei 3.2 poate corecta maxim
o eroare, iar conform Teoremei 3.7 poate corecta o eroare si detecta simultan doua
erori.
Astfel recept ionarea cuvantului 11110010 conduce la corectarea sa n 10110010
(deoarece d(11110010, 10110010) = 1 si 10110010 este cuvant - cod).

In schimb recept ionarea cuvantului 00001111 anunt a ca au aparut cel put in doua
erori.

In aceasta situat ie, nu mai put in de patru cuvinte - cod (00010111, 00101011,
01001101, 10001110) sunt situate la distant a 2 de cuvantul primit.
Exemplul 3.5 Codul binar cu repetit ie de lungime 7 (care are 2 elemente) poate
realiza una din condit iile:
Corecteaza 3 erori;
Detecteaza 6 erori;
Corecteaza 2 erori si detecteaza 4 erori simultan.
3.4 Probabilitatea nedetectarii erorilor
Sa ne punem urmatoarea problema: care este probabilitatea ca la transmiterea unui
cuvant - cod a sa e recept ionat alt cuvant - cod b (b = a). Altfel spus, care este
probabilitatea ca o eroare sa scape nedetectata ?
Notand cu e = b a, o eroare este nedetectata daca si numai daca e este un
cuvant - cod nenul.
Vom considera un canal de transmisie binar simetric, adica un canal n care
singurele simboluri transmise sunt 0 si 1, iar probabilitatea p (0 p 1) ca la
transmiterea lui 0 sa e recept ionat 1 este egala cu probabilitatea ca la transmiterea
lui 1 sa se recept ioneze 0.

Intr-un astfel de canal, daca w(e) = i (adica au fost
perturbate la transmisie i caractere), probabilitatea de aparit ie a erorii - tip e este
p
i
q
ni
, unde q = 1 p. Notand cu A
i
numarul cuvintelor - cod cu ponderea i, prob-
abilitatea P
ned
a unei erori nedetectabile este suma probabilitat ilor p
i
q
ni
, ecare
termen apar and de A
i
ori pentru i = 1, 2, . . . , n. Formal,
P
ned
=
n

i=1
A
i
p
i
q
ni
Cum A
1
= A
2
= . . . = A
d1
= 0, suma se reduce la P
ned
=
n

i=d
p
i
q
ni
.
3.5. IDENTITATEA MACWILLIAMS 33
Exemplul 3.6 Sa consideram un cod care are un cuvant de pondere 0, cate sapte
cuvinte de pondere 3 si 4 si un cuvant de pondere 7. Atunci
P
ned
= 7p
3
q
4
+ 7p
4
q
3
+ p
7
Daca folosim acest cod ntr-un canal binar simetric cu eroare de probabilitate
p = 0.01, avem
P
ned
= 7(0.01)
3
(0.99)
4
+ 7(0.01)
4
(0.99)
3
+ (0.01)
7
7 10
6
deci - n medie - apar cam sapte erori nedetectabile la un milion de cuvinte
transmise.
Denit ia 3.4 Polinomul de variabila x [0, 1] denit
P(x) =
n

i=0
A
i
x
i
unde A
i
este numarul de cuvinte din A
n,k
de pondere i, se numeste numaratorul
de ponderi al codului A
n,k
.
Exemplul 3.7 Codul denit n Exemplul 3.2 are numaratorul de ponderi
P(x) = 1 + x
2
+ 2x
3
Propozit ia 3.3 Fie A
n,k
un cod liniar binar cu numarator de ponderi P(x). Proba-
bilitatea aparit iei unei erori nedetectabile la folosirea codului A
n,k
ntr-un canal binar
simetric este
P
ned
= q
n
_
P
_
p
q
_
1
_
.
Demonstrat ie: Relat ia de denit ie a lui P
ned
se poate rescrie
q
n
n

i=1
A
i
p
i
q
i
= q
n
n

i=1
A
i
_
p
q
_
i
.
Deoarece A
0
= 1 (singurul cuvant - cod de pondere 0 este cuvantul - cod 0, expresia
devine n continuare
P
ned
= q
n
_
_
n

i=0
A
i
_
p
q
_
i
1
_
_
= q
n
_
P
_
p
q
_
1
_
. 2
3.5 Identitatea MacWilliams

In acest paragraf vom arata un rezultat care face posibila determinarea num ar a-
torului de ponderi P
A
al dualului A

unui cod liniar A, direct din num ar atorul de


ponderi P
A
al codului A.
Propozit ia 3.4 Fie v Z
n
2
si A un (n, k) - cod liniar binar. Atunci are loc egali-
tatea
1
2
k

vA
(1)
vw
=
_
1 daca w A

0 altfel
34 PRELEGEREA 3. CODURI LINIARE - II
Demonstrat ie: Daca w A

atunci evident, (1)


vw
= (1)
0
= 1 si suma este egala
cu numarul de cuvinte - cod din A, care este 2
k
.
Sa presupunem acum ca w A

, deci exista un cuvant - cod v


0
A cu v
0
w = 1.
Vom arata ca n acest caz, num arul cuvintelor - cod ortogonale pe w este egal cu
cel al cuvintelor - cod ne-ortogonale pe w (si deci suma din formul a este 0).
Fie v
1
, v
2
, . . . , v
r
toate cuvintele - cod ortogonale pe w. Facem armat ia ca
atunci v
1
+v
0
, v
2
+v
0
, . . . , v
r
+v
0
sunt toate cuvintele - cod ne-ortogonale pe v
0
.

Intr-adev ar:
1. i (1 i r) (v
i
+v
0
)w = v
i
w +v
0
w = 0 + 1 = 1;
2. Daca v A veric a relat ia vw = 1, atunci v v
0
este un cuvant cod -
ortogonal pe w, deci v v
0
= v
i
pentru un anumit i. 2
Teorema 3.8 Pentru orice (n, k) - cod liniar binar A are loc relat ia (identitatea
MacWilliams):
P
A
(x) =
(1 + x)
n
2
k
P
A
_
1 x
1 + x
_
.
Demonstrat ie: Sa rescriem num aratorul de ponderi sub o forma put in diferita:
B(x, y) =
n

i=0
A
i
x
i
y
ni
.
Evident, deoarece P(x) = B(x, 1) si B(x, y) = y
n
P
_
x
y
_
, cele doua expresii sunt
echivalente.

In notat ia cu polinomul B, identitatea MacWilliams se scrie


B
A
(x) =
1
2
k
B
A
(y x, y + x).
Cu ajutorul ponderii cuvintelor - cod, num aratorul de ponderi are forma
B
A
(x, y) =
n

i=0
A
i
x
i
y
ni
=

aA
x
w(a)
y
nw(a)
Prelucrand membrul drept al identit at ii MacWilliams, avem:
B
A
(y x, y + x) =

aA
(y x)
w(a)
(y + x)
nw(a)
=

aA
n

i=1
[y + (1)
a
i
x] .

In mod analog, membrul stang se scrie:


B
A
(x, y) =

aA

x
w(a)
y
nw(a)
.
Folosind Propozit ia 3.4, el se poate reformula:
B
A
(x, y) =

aZ
n
2
_
1
2
k

vA
(1)
av
_
x
w(a)
y
nw(a)
.
3.5. IDENTITATEA MACWILLIAMS 35
Expresia din paranteze este 0 pentru toate cuvintele a care nu sunt n A

. Deci
B
A
(x, y) =
1
2
k

vA

aZ
k
2
(1)
va
x
w(a)
y
nw(a)
.
Suma interioar a se face dupa toate secvent ele binare a de lungime n. Vom ordona
aceasta suma dupa ponderile lui a: pentru a = 0 sumandul este y
n
; pentru cu-
vintele a de pondere 1 avem: [(1)
a
1
+ (1)
a
2
+ . . . + (1)
a
n
]xy
n1
etc; n nal,
pentru ponderea n avem [(1)
a
1
+ . . . + (1)
a
n
]x
n
. Suma tuturor acestor sumanzi
n

k=0
[(1)
a
i
1
+ . . . + (1)
a
i
k
]x
k
y
nk
se observa usor ca este egala cu
[y + (1)
a
1
x][y + (1)
a
2
x] . . . [y + (1)
a
k
x] =
n

i=1
[y + (1)
a
i
x]. Deci
B
A
(x, y) =
1
2
k

aA
n

i=1
[y + (1)
a
i
x] =
1
2
k
B
A
(y x, y + x). 2
Exemplul 3.8 Sa consideram codul din Exemplul 3.2 al carui numarator de ponderi
a fost dat n Exemplul 3.7. Pentru codul dual, numaratorul de ponderi este
P
A
(x) =
(1 + x)
4
2
2
P
A
_
1 x
1 + x
_
=
(1 + x)
4
4
_
1 +
_
1 x
1 + x
_
2
+ 2
_
1 x
1 + x
_
3
_
=
=
(1 + x)
4
+ (1 + x)
2
(1 x)
2
+ 2(1 + x)(1 x)
3
4
=
4 + 4x
2
+ 4x
3
4
= 1+x
2
+x
3
.
Deci cele doua coduri au acelasi numarator de ponderi. Aceasta nu nseamna
nsa ca cele doua coduri coincid (si deci codul ar auto - dual); a avea acelasi
numarator de ponderi este doar o condit ie necesara, nu si sucienta pentru ca un
cod sa coincida cu dualul sau.
Exemplul 3.9 Fie codul cu repetit ie de lungime para n A = {00 . . . 0, 11 . . . 1};
numaratorul lui de ponderi este P
A
(x) = 1 + x
n
. Codul dual are numaratorul de
ponderi
P
A
(x) =
(1 + x)
n
2
_
1 +
_
1 x
1 + x
_
n
_
= 1 + C
2
n
x
2
+ C
4
n
x
4
+ . . . + x
n
.
Rezulta din aceasta forma ca dualul codului cu repetit ie este codul liniar al cu-
vintelor de pondere para.
36 PRELEGEREA 3. CODURI LINIARE - II
3.6 Exercit ii
3.1

In Z
n
2
notam cu x cuvantul obt inut din x prin permutarea caracterelor 0 si 1
ntre ele. Sa se arate ca pentru orice a, b Z
n
2
:
1. a +b = a +b;
2. a +b = a +b = a +b;
3. d(a, b) = d(a +b) = w(a +b).
3.2 Descriet i codurile modicate obt inute din codul liniar binar cu matricea genera-
toare
G =
_
_
_
1 1 1 0 0
0 0 1 1 1
1 1 1 1 0
_
_
_
3.3 Aceeasi problema pentru codul peste Z
3
denit prin
G =
_
_
_
1 0 0 2 2
0 1 0 0 1
0 0 1 1 0
_
_
_.
3.4 Fie A un (n, k) - cod liniar binar si A

(n, k 1) - codul obt inut din A prin


expurgare. Ce relat ie exista ntre matricile de control ale celor doua coduri ?
3.5 Aratat i cum poate codul binar cu repetit ie de lungime 7 sa corecteze doua erori
si sa detecteze 4 erori simultan. Cate erori poate detecta daca corecteaza o eroare ?
3.6 Fie A (15, 4) - codul liniar binar n care ecare coloana i din matricea genera-
toare este scrierea binara a lui i sub forma unui vector cu 4 componente. Sa se
determine distant a minima, numaratorul de ponderi si numaratorul de ponderi al
codului dual.
3.7 Fie A un (2k + 1, k) - cod binar astfel ca A

A. Descriet i A

\ A.
Prelegerea 4
Clase de coduri liniare
4.1 Coduri Hamming
Fie H matricea de control a unui cod liniar binar. Daca se transmite un cuvant -
cod a si se recept ioneaz a a +e (deci cu eroarea - tip e, atunci sindromul este eH
T
.
Acest sindrom este egal cu suma coloanelor lui H care corespund pozit iilor afectate
de erori (Prelegerea II, Teorema 2.3).

In particular, o eroare care apare pe o pozit ie corespunzatoare unei coloane nule


din H nu inuent eaz a sindromul. Deci, o astfel de eroare nu este detectata.
Daca H are doua coloane identice si se nt ampla ca pe pozit iile corespunzatoare
lor sa apara simultan erori, acestea se anuleaz a reciproc n calculul sindromului - si
deci nu pot detectate.
Pe de-alta parte, daca toate coloanele lui H sunt distincte si nenule, o eroare
singulara pe pozit ia s va face ca sindromul sa e egal cu coloana num arul s din H.

In acest caz, erorile singulare pot detectate si corectate foarte usor.


Pe baza acestor observat ii am demonstrat teorema:
Teorema 4.1 Un cod liniar binar poate corecta o eroare daca si numai daca ma-
tricea sa de control are toate coloanele nenule si distincte.
Pentru a se putea corecta toate erorile simple, trebuie sa existe sindromuri distincte
pentru ecare eroare - tip; deci, conform marginii Hamming (Prelegerea III, Teorema
3.5),
2
nk
n + 1.
Pe baza acestor considerente se deneste codul Hamming binar:
Denit ia 4.1 Codul liniar binar n care coloanele matricii H sunt reprezentarea
binara a numerelor 1, 2, . . . , 2
r
1 este numit cod Hamming binar.
Deci, pentru orice num ar natural r (r 2) se poate construi un (n, k) - cod liniar
n care n = 2
r
1, k = 2
r
r 1.
De remarcat ca denit ia nu determina pentru ecare r n mod unic matricea de
control a codului Hamming. De obicei se considera acea matrice H n care coloana
i reprezint a scrierea n binar a num arului i. Deoarece codul este sistematic (exista
coloane pentru 2
0
, 2
1
, . . . , 2
r1
), toate celelalte reprezentari au aceleasi proprietat i.
37
38 PRELEGEREA 4. CLASE DE CODURI LINIARE
Exemplul 4.1 Pentru r = 3 avem codul Hamming de lungime n = 2
3
1 = 7 cu
k = 2
3
3 1 = 4 simboluri de informat ie si 3 simboluri de control. Matricea de
control este:
H
3,7
=
_
_
_
0 0 0 1 1 1 1
0 1 1 0 0 1 1
1 0 1 0 1 0 1
_
_
_
De aici rezulta ca el este determinat de solut iile sistemului liniar:
_

_
x
4
+ x
5
+ x
6
+ x
7
= 0
x
2
+ x
3
+ x
6
+ x
7
= 0
x
1
+ x
3
+ x
5
+ x
7
= 0
Sa determinam matricea generatoare a acestui cod. Pentru aceasta, construim ntai
codul echivalent, permutand coloanele pentru a aduce matricea de control la forma
esalonata canonic:
H

3,7
=
_
_
_
0 1 1 1 1 0 0
1 0 1 1 0 1 0
1 1 0 1 0 0 1
_
_
_.
De aici se obt ine matricea generatoare esalonata canonic:
G

4,7
=
_
_
_
_
_
1 0 0 0 0 1 1
0 1 0 0 1 0 1
0 0 1 0 1 1 0
0 0 0 1 1 1 1
_
_
_
_
_
Aplicand permutarea inversa asupra coloanelor, se obt ine matricea generatoare a
(7, 4) - codului Hamming binar:
G
4,7
=
_
_
_
_
_
1 1 1 0 0 0 0
1 0 0 1 1 0 0
0 1 0 1 0 1 0
1 1 0 1 0 0 1
_
_
_
_
_
.
Codul este sistematic: coloanele corespunzatoare matricii unitate: 3, 5, 6, 7, sunt
pozit iile simbolurilor de informat ie n ecare cuvant - cod. Deci simbolurile x
1
, x
2
, x
4
sunt simboluri de control. Sistemul de sus poate rearanjat pentru a permite calculul
simbolurilor de control din simbolurile de informat ie:
_

_
x
1
= x
3
+ x
5
+ x
7
x
2
= x
3
+ x
6
+ x
7
x
4
= x
5
+ x
6
+ x
7
Toate cuvintele codului sunt:
4.1. CODURI HAMMING 39
Informat ie Cuvant cod Informat ie Cuvant cod
0000 0000000 0110 0110011
1000 1000011 0101 0101010
0100 0100101 0011 0011001
0010 0010110 1110 1110000
0001 0001111 1101 1101001
1100 1100110 1011 1011010
1010 1010101 0111 0111100
1001 1001100 1111 1111111
Teorema 4.2 Un cod Hamming are distant a minima 3.
Demonstrat ie: Evident, orice doua coloane din matricea de control sunt liniar inde-
pendente.

In plus, se pot gasi trei coloane (de exemplu primele trei) a caror suma
sa e 0. Conform Teoremei 2.4 (Prelegerea II), distant a minima a codului este 3.2
Deci orice cod Hamming poate corecta o eroare sau poate detecta doua erori. El
nu poate realiza acest lucru simultan (nu veric a condit ia d s +t +1 din Teorema
3.7, Prelegerea III).
Decodicarea se realizeaza foarte simplu, conform urmatorului algoritm:
Algoritm A:
Fie a vectorul recept ionat.
1. Se calculeaza sindromul s = aH
T
.
2. Daca s = 0, nu a aparut nici o eroare (sau eroarea este nedetectabila),
deci v = a, STOP.
3. Altfel, eroarea este pe pozit ia i, unde i este num arul a carui reprezentare
n binar este sindromul s. Decodicarea este v = a +e
i
, unde e
i
este
vectorul care are 1 pe pozit ia i si 0 n rest.
Exemplul 4.2 Sa consideram din nou (7, 4) - codul Hamming din Exemplul 4.1
si sa presupunem ca s-a recept ionat cuvantul x = 0011101. Calculul sindromului
conduce la valoarea
xH
T
=
_
_
_
1
0
1
_
_
_
care este scrierea n binar a numarului 5. Deci a intervenit o eroare simpla pe pozit ia
a cincea. Corectam aceasta pozit ie - schimband 1 cu 0 si se obt ine cuvantul - cod
0011001, care pe pozit iile 3, 5, 6, 7 cont ine mesajul de informat ie: 1001.
Codul Hamming poate mbun at at it prin extensie. Aceasta operat ie conduce la un
(2
m
, 2
m
m 1) - cod liniar, cu toate cuvintele - cod de pondere para.
Exemplul 4.3 Prin extensia (7, 4) - codului Hamming se obt ine codul cu matricea
de control
H

=
_
_
_
_
_
0 0 0 1 1 1 1 0
0 1 1 0 0 1 1 0
1 0 1 0 1 0 1 0
1 1 1 1 1 1 1 1
_
_
_
_
_
.
40 PRELEGEREA 4. CLASE DE CODURI LINIARE
De remarcat ca H

are rangul 4; n plus, toate liniile ei sunt cuvinte - cod n


codul Hamming extins. Deci H

poate considerata matrice generatoare a acestui


cod. Rezulta ca (8, 4) - codul Hamming extins este auto - dual.
Un cod Hamming extins este solut ia unui sistem liniar de n k + 1 ecuat ii, ecuat ia
suplimentar a
n+1

i=1
x
i
= 0 ind numit a ecuat ia de control a paritat ii.
Propozit ia 4.1 Un cod Hamming extins are d = 4.
Demonstrat ie: Fie a
1
a
2
. . . a
n
un cuvant - cod de pondere d = 3 din codul Ham-
ming. Trecand la codul extins, cuvantul a
1
a
2
. . . a
n
a
n+1
veric a relat ia suplimentara
n+1

i=1
a
i
= 0 (reamintim, sumele se fac modulo 2). Cum
n

i=1
a
i
= 1, rezulta a
n+1
= 1.
Noul cuvant are evident pondere minima, si aceasta este 3 + 1 = 4. 2
Codurile Hamming extinse corecteaza o eroare simpla si detecteaza 2 erori si-
multan. Algoritmul prezentat este bazat pe vericarea celor n k + 1 ecuat ii de
control:
Algoritm B:
1. Daca nu sunt vericate ecuat ia de control a paritat ii si cel put in una
din primele n k ecuat ii, nseamna ca a aparut o eroare simpla, care se
corecteaza cu Algoritmul A;
2. Daca ecuat ia de control a paritat ii este vericata dar cel put in una din
primele nk ecuat ii de control nu se veric a, s-a detectat o eroare dubla;
3.

In celelalte situat ii nu au aparut erori (sau eroarea este nedetectabila).
Faptul ca se poate lua totdeauna o decizie se bazeaza pe urmatorul rezultat.
Teorema 4.3 Codul Hamming este perfect.
Demonstrat ie: Reamintim (Prelegerea II, Denit ia 2.8) ca un cod A este perfect
daca
Z
n
q
=
_
xA
S
t
(x).
Scriind aceasta relat ie n funct ie de num arul de elemente din ecare sfera si t inand
cont ca toate sferele cont in un numar egal de elemente, avem
q
k
_
1 +C
1
n
(q 1) + . . . +C
t
n
(q 1)
t
_
= q
n
.
Pentru cazul codurilor Hamming, q = 2, n = 2
r
1, k = 2
r
r 1, t = 1, deci
totul revine la vericarea egalitat ii 2
k
(1 + n) = 2
n
. 2
De remarcat ca rata de informat ie a codurilor Hamming
R =
k
n
= 1
r
2
r
1
creste rapid spre 1. Evident ns a ca odata cu aceasta crestere scade protect ia fat a
de erori.
4.1. CODURI HAMMING 41
4.1.1 Coduri Hamming nebinare
Denit ia 4.2 Fie q numar prim, r (r 2) un ntreg si n =
q
r
1
q1
. Se numeste cod
Hamming nebinar un (n, n r) - cod liniar peste Z
q
n care matricea de control are
orice pereche de doua coloane liniar independente (nici o coloana nu este multiplu
scalar al altei coloane).
Mult imea coloanelor unui astfel de cod formeaza o mult ime maximala de vectori
liniar independent i doi cate doi.
Exemplul 4.4 Sa consideram q = 3, r = 2. Atunci n =
3
2
1
3 1
= 4. Un (4, 2) -
cod Hamming ternar poate dat de matricea de control
H =
_
0 1 1 1
1 0 1 2
_
Decodicarea se poate face folosind tabela de sindromuri, n care s-au luat ca repre-
zentant i toate combinat iile posibile de o eroare:
Sindrom Reprezentant Sindrom Reprezentant
01 1000 12 0001
02 2000 20 0200
10 0100 21 0002
11 0010 22 0020
Daca se recept ioneaza de exemplu 1021, calculul sindromului da s = 02. Reprezen-
tantul este 2000. Se calculeaza 1021 2000 = 1021 + 1000 = 2021 deci cuvantul -
cod transmis a fost 2021.
Cum matricea generatoare a acestui cod este G =
_
2 2 1 0
1 2 0 1
_
ultimele doua
caractere formeaza mesajul de informat ie; deci s-a codicat mesajul 21.
Despre codurile Hamming nebinare se pot stabili urmatoarele rezultate:
Deoarece pentru q, r xat i codurile Hamming corespunzatoare sunt echiva-
lente, se poate alege o anumit a matrice de control. Uzual se foloseste matricea
n care se scriu toate coloanele nenule de r elemente din Z
q
, cu condit ia ca
primul element nenul (de sus n jos) sa e 1.
Codurile Hamming nebinare au d = 3 (evident, din construct ia matricii de
control de mai sus). Deci ele pot corecta o eroare.
Proprietatea de a coduri perfecte se pastreaz a.

Intr-adev ar, deoarece un
cod Hamming cont ine q
nr
cuvinte - cod iar n =
q
r
1
q1
, egalitatea stabilita n
demonstrat ia Teoremei 4.3 se scrie q
nr
[1 + n(q 1)] = q
n
, care se veric a
imediat.
42 PRELEGEREA 4. CLASE DE CODURI LINIARE
Exemplul 4.5 Sa consideram (13, 10) - codul Hamming ternar. Acest cod are o
aplicat ie interesanta n problema Pronosportului. Dupa cum se stie, un buletin
Pronosport cont ine rezultatele (notate cu 1, 2, X) a 13 meciuri. Pentru a avea sigur
13 rezultate exacte trebuiesc completate 3
13
buletine. Cate buletine sunt nsa necesare
pentru a sigur de 12 rezultate ? La prima vedere s-ar parea ca 3
12
. Completand
nsa buletinele cu elementele codului Hamming ternar (13, 10) (cu 0 n loc de X) -
care sunt n numar de 3
10
, se atinge scopul dorit.

Intr-adevar, acesta ind un cod
perfect corector de o eroare, orice element din Z
13
3
difera prin cel mult o pozit ie de
un cuvant - cod.
Astfel, numarul buletinelor se reduce de noua ori.
4.2 Codul Golay
Al doilea cod liniar prezentat are capacitatea de corect ie pentru maxim 3 erori.
Vom construi nt ai varianta extinsa a codului, deoarece algoritmul de decodicare
este mai simplu si usor de aplicat ulterior la codul Golay normal.
4.2.1 Codul Golay binar extins
Acest cod a fost folosit de programul spat ial Voyager la nceputul anilor

80, la
transmiterea fotograilor planetelor Jupiter si Saturn.
Sa consideram matricea 12 12 din Figura 4.1:
Figura 4.1:
B =
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
1 1 0 1 1 1 0 0 0 1 0 1
1 0 1 1 1 0 0 0 1 0 1 1
0 1 1 1 0 0 0 1 0 1 1 1
1 1 1 0 0 0 1 0 1 1 0 1
1 1 0 0 0 1 0 1 1 0 1 1
1 0 0 0 1 0 1 1 0 1 1 1
0 0 0 1 0 1 1 0 1 1 1 1
0 0 1 0 1 1 0 1 1 1 0 1
0 1 0 1 1 0 1 1 1 0 0 1
1 0 1 1 0 1 1 1 0 0 0 1
0 1 1 0 1 1 1 0 0 0 1 1
1 1 1 1 1 1 1 1 1 1 1 0
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
Fie G matricea 1224 G = (I
12
|B). Codul liniar binar generat de G se numeste
codul Golay extins si va notat C
24
.
Observat ii:
Matricea B este mai usor de construit decat pare. Astfel, eliminand ultima
linie si coloana, matricea ramasa - sa spunem B
1
- este generata ciclic (spre
4.2. CODUL GOLAY 43
stanga) de cuvantul binar 11011100010. Deci B =
_
B
1
1
T
1 0
_
,
unde 1 = 11111111111. Evident, B este simetrica (B
T
= B).
C
24
are n = 24, k = 12 si 2
12
= 4096 cuvinte - cod.
Conform Teoremei 2.2, o matrice de control a codului este H = (B|I
12
).
Teorema 4.4 H = (I
12
|B) este de asemenea matrice de control pentru C
24
.
Demonstrat ie: Liniile din B au pondere impara (7 sau 11); deci produsul (scalar)
al unei linii cu ea nsasi este 1. O vericare simpla arata ca produsul primei linii cu
oricare alta linie din B este 0. Structura ciclica a lui B
1
asigura ca atunci produsul
scalar al oricaror doua linii este 0.

In concluzie, BB
T
= I
12
. Dar B
T
= B, asa ca putem scrie:
GH
T
= (I|B)
_
I
B
_
= I
2
+B
2
= I +BB
T
= I +I = 0.
Vom folosi ambele matrici de control pentru decodicarea codului C
24
. 2
Corolarul 4.1
A. C
24
admite ca matrice generatoare si pe G = (B|I
12
).
B. Codul Golay extins este auto - dual (C
24
= C

24
).
Demonstrat ie: Se verica imediat. 2
Teorema 4.5 C
24
are distant a minima d = 8.
Demonstrat ie: Vom demonstra armat ia n trei pasi.
1. Ponderea cuvintelor din C
24
este multiplu de 4.
Sa observam ca liniile lui G au pondere 8 sau 12. Fie v C
24
ca suma de doua
linii din G : v = r
i
+r
j
. Cum B are liniile ortogonale, rezulta ca si liniile lui
G sunt ortogonale. Deci r
i
si r
j
au un numar par (sa zicem 2x) de elemente 1
n comun. Atunci w(v) = w(r
i
) +w(r
j
) 2(2x), care este multiplu de 4.
Fie acum v C
24
ca suma de trei linii din G : v = r
i
+r
j
+r
s
. Notam
v
1
= r
i
+r
j
. Deoarece C
24
este auto - dual, v
1
si r
s
au un numar par (sa
zicem 2y) de elemente 1 n comun. Deci w(v) = w(v
1
) + w(r
s
) 2(2y) care
este multiplu de 4.
Folosind acum un procedeu de induct ie, cum orice cuvant - cod este combinat ie
liniara de linii din G, ponderea sa va multiplu de 4.
2. Primele 11 linii din G sunt cuvinte - cod de pondere 8, deci distant a codului
C
24
este 4 sau 8.
3. C
24
nu are cuvinte de pondere 4.
Sa presupunem ca exista v C
24
cu w(v) = 4. Exista atunci u
1
, u
2
Z
12
2
cu v = u
1
(I|B), v = u
2
(B|I). Deoarece exista o jumatate din v care are cel
put in doi de 1, rezulta w(u
1
) 2 sau w(u
2
) 2. Pe de-alta parte, suma
a una sau doua linii din B nu poate avea o pondere mai mica de 4; deci
w(v) = w(u
i
) + w(u
i
B) > 4, contradict ie. 2
44 PRELEGEREA 4. CLASE DE CODURI LINIARE
4.2.2 Decodicarea codului Golay extins
Conform Teoremei 4.5, un cod Golay extins poate corecta orice combinat ie de maxim
3 erori.

In aceasta sect iune vom nota cu a cuvantul recept ionat, cu v cuvantul - cod cel
mai apropiat, si cu e eroarea - tip (v = a +e). Deoarece capacitatea de corect ie
este de 3 erori, vom considera w(e) 3.
Pentru orice cuvant din Z
24
2
, vom separa cu o virgula prima jumatate a cuvantului
de cea de-a doua. Eroarea - tip va notata u = [u
1
, u
2
], unde u
1
, u
2
au ecare
lungimea 12. Evident, condit ia w(u) 3 implica w(u
1
) 1 sau w(u
2
) 1.
Folosind cele doua matrici de control, se pot deni doua sindromuri pentru a:
s
1
= u
_
I
12
B
_
= [u
1
, u
2
]
_
I
12
B
_
= u
1
+u
2
B,
s
2
= u
_
B
I
12
_
= [u
1
, u
2
]
_
B
I
12
_
= u
1
B +u
2
.
De aici rezulta urmatoarea observat ie: daca w(u
2
) 1, atunci s
1
este sau un
cuvant de pondere maxim 3 (daca w(u
2
) = 0), sau o linie a lui B cu cel mult doi
bit i schimbat i (daca w(u
2
) = 1).
Similar, daca w(u
1
) 1, atunci s
2
este sau un cuvant de pondere maxim 3 sau
o linie a lui B cu cel mult doi bit i schimbat i.
Daca se foloseste si faptul ca s
2
= u
1
B + u
2
= (u
1
+u
2
B)B = s
1
B (deci se
poate folosi doar prima matrice de control), putem deni urmatorul algoritm de
decodicare a codurilor Golay extinse:
Algoritm C:
1. Se calculeaza sindromul s = aH;
2. Daca w(s) 3, atunci e = [s, 0], STOP.
3. Daca exista o linie b
i
a lui B cu w(s +b
i
) 2, atunci e = [s +b
i
, e
i
],
STOP.
4. Daca w(sB) 3, atunci e = [0, sB], STOP.
5. Daca exista o linie b
i
a lui B cu w(sB+b
i
) 2, atunci e = [e
i
, sB+b
i
],
STOP.
6. Daca e nu a fost determinat nca, se cere retransmiterea.
S-a notat cu e
i
un cuvant de lungime 12 cu 1 pe pozit ia i si 0 n rest.
Dupa determinarea erorii e, cuvantul - cod transmis se determina prin v = a +e.
Exemplul 4.6 Sa decodicam cuvantul a = 101111101111, 010010010010.
Sindromul este
s = aH
T
= 101111101111 + 001111101110 = 100000000001.
Deoarece w(s) = 2 3, se gaseste e = [s, 0] = 100000000001, 000000000000
deci s-a transmis cuvantul v = a +u = 001111101110, 010010010010.
4.2. CODUL GOLAY 45
Deoarece G = (I
12
|B) este n forma esalonat canonica, mesajul de informat ie (orice
cuvant din Z
12
2
) apare pe primele 12 pozit ii ale cuvantului - cod. Astfel, n exemplul
de sus, mesajul de informat ie a fost 001111101110.
Exemplul 4.7 Se cere decodicarea cuvantului a = 001001001101, 101000101000.
Sindromul este
s = aH = 001001001101 + 111000000100 = 110001001001.
Deoarece w(s) = 5, se trece la pasul 3 al Algoritmului C si se calculeaza:
s +b
1
= 000110001100
s +b
2
= 011111000010
s +b
3
= 101101011110
s +b
4
= 001001100100
s +b
5
= 000000010010
Deoarece w(s +b
5
) 2, se determina
e = [s +b
5
, e
5
] = 000000010010, 000010000000
si se decide ca s-a transmis cuvantul - cod
v = a +e = 001001011111, 101010101000.
Exemplul 4.8 Sa decodicam cuvantul a = 000111000111, 011011010000.
Sindromul este
s = aH
T
= u
1
+u
2
B = 000111000111 + 101010101101 = 101101101010
care are ponderea 7. Trecand la pasul 3 se gaseste w(s +b
i
) 3 pentru toate
liniile lui B; deci se continua cu pasul 4: al doilea sindrom este sB = 111001111101
cu ponderea 8. Pasul 5 va da:
sB +b
1
= 001110111000
sB +b
2
= 010111110110
sB +b
3
= 100101101010
sB +b
4
= 000001010000
S-a ajuns la w(sB +b
4
) 2, deci se poate determina eroarea:
e = [e
4
, sB +b
4
] = 000100000000, 000001010000
deci cuvantul - cod transmis a fost:
v = a +e = 000011000111, 011010000000.
4.2.3 Codul Golay
Prin relaxarea codului Golay extins (eliminarea ultimului bit din ecare cuvant -
cod) se ajunge la Codul Golay binar.
Fie

B matricea 12 11 obt inuta din B prin eliminarea ultimei coloane. Denim
G = (I
12
|

B). Codul liniar binar generat de G se numeste codul Golay si este notat
cu C
23
. Caracteristicile sale sunt:
n = 23, k = 12, Numar de cuvinte - cod: 2
12
= 4096.
Evident, extensia lui C
23
este C
24
.
46 PRELEGEREA 4. CLASE DE CODURI LINIARE
Teorema 4.6 Distant a unui cod Golay este d = 7.
Demonstrat ie: Demonstrat ia se poate face e direct (similar celei de la Teorema 4.5)
e folosind faptul ca C
23
este relaxarea codului C
24
, care are distant a 8. 2

In consecint a, un cod Golay va corecta orice combinat ie de maxim 3 erori.


Teorema 4.7 Codul Golay este perfect.
Demonstrat ie: Se verica relat ia:
2
12
(C
0
23
+C
1
23
+C
2
23
+C
3
23
) = 2
12
(1 + 23 + 253 + 1771) = 2
12
2
11
= 2
23
. 2
Rezulta ca orice cuvant a Z
23
2
se aa la distant a maxim 3 de un cuvant - cod.
Astfel, daca se adauga la sfarsit 0 sau 1, formand a0 respectiv a1 pentru a obt ine
un cuvant de pondere impara, acest cuvant este la distant a maxim 3 de un cuvant
- cod c C
24
. Se foloseste Algoritmul C pentru a obt ine acest cuvant - cod, apoi se
elimina ultimul caracter din c; se ajunge astfel la cel mai apropiat cuvant - cod din
C
23
fat a de a.
Algoritmul D:
1. Se formeaza cuvantul extins de pondere impara a0 sau a1;
2. Se decodica ai folosind Algoritmul C si se obt ine c C
24
;
3. Se elimina ultimul caracter din c.
Exemplul 4.9 Sa decodicam a = 001001001001, 11111110000.
Deoarece a are pondere impara, se construieste
a0 = 001001001001, 111111100000.
Sindromul acestui cuvant este s
1
= 100010111110.
Pentru ca s
1
= b
6
+e
9
+e
12
, a0 se decodica n 001001000000, 111110100000,
asa ca a este decodicat n 001001000000, 11111010000.
4.3 Unicitatea codurilor perfecte binare
Ambele clase de coduri liniare prezentate aici sunt perfecte.
Se observa imediat ca pentru corectarea unei erori, singurele coduri binare per-
fecte sunt codurile Hamming.
Vom mai arata ca aceasta singularitate este valabil a si n cazul codurilor Golay;
anume, singurul cod binar perfect corector de 3 erori este codul Golay. Pentru
aceasta sunt necesare doua leme:
Lema 4.1 O condit ie necesara pentru existent a unui (n, k) - cod binar perfect corec-
tor de t erori este
t

i=0
C
i
n
= 2
p
pentru un anumit p.
Demonstrat ie: Rezulta imediat din relat ia scrisa n demonstrat ia Teoremei 4.3, n
care se ia q = 2. 2
4.3. UNICITATEA CODURILOR PERFECTE BINARE 47
Lema 4.2
t

i=0
C
i
n
=
n + 1
t!
R
t
(n)
unde t este numar natural impar, R
t
(X) Z[X], gr(R
t
(X)) = t 1.
Demonstrat ie: Pentru t = 1 se veric a imediat.
Presupumem adevarat a armat ia pentru t si o demonstram pentru t + 2. Avem
t+2

i=0
C
i
n
=
n + 1
t!
+C
t+1
n
+C
t+2
n
=
n + 1
(t + 2)!
_
(t + 1)(t + 2)R
t
(n) +
t

i=0
(n i)
_
.
Expresia din paranteza dreapta este un polinom de gradul t + 1; notandu-l cu
R
t+2
(n), armat ia este demonstrata. 2
Sa consideram acum cazul t = 3. Pentru ca sa existe un cod binar perfect
corector de 3 erori, cu lemele de sus, trebuie ca (n + 1)(n
2
n + 6) = 3 2
s
, sau
(n + 1)[(n + 1)
2
3(n + 1) + 8] = 3 2
s
.
Considerata ca o ecuat ie n n + 1, singurele solut ii ntregi pozitive sunt de forma
n + 1 = 2
k
p unde p = 1 sau p = 3.

Inlocuind, se ajunge la
2
2k
p
3
2
k
3p
2
+ 8p = 2
sk
3 (1)
Pentru k 3 si p = 1, 3 vericarile se fac imediat. Pentru k 4 se ajunge la
contradict ie. Singurele valori care veric a ecuat ia sunt:
n = 0, 1, 2 nu corespund nici unui cod.
n = 3 codul trivial cu un singur cuvant - cod de lungime 3.
n = 7 codul (trivial) cu repetit ie {0000000, 1111111}.
n = 23 codul Golay.

In acest mod am demonstrat teorema:


Teorema 4.8 Codul binar Golay este singurul cod binar perfect netrivial corector
de 3 erori.
Lemele 4.1 si 4.2 pot folosite si pentru alte valori impare ale lui t. Cercetarile nu
au condus la alte coduri perfecte binare, dar nici nu s-a demonstrat ca nu exista
nici un cod perfect binar corector de t (t > 3 impar) erori. Armat ia este valabil a
deocamdata pentru t < 20.
Un alt caz interesant de studiu este q = 2, t = 2. Aici se poate da teorema:
Teorema 4.9 Nu exista nici un cod netrivial binar perfect corector de 2 erori.
Demonstrat ie: Lema 4.1 conduce la relat ia
(2n + 1)
2
= 2
s+3
7.
Ecuat ia x
2
+ 7 = 2
m
a fost studiata n multe articole (vezi Math. Rev. 26, #74).
Singurele solut ii sunt x = 1, 3, 5, 11, 181 carora le corespund:
n = 0, 1 far a coduri.
n = 2 codul trivial cu un singur cuvant.
n = 5 codul cu repetit ie {00000, 11111}.
n = 90.
48 PRELEGEREA 4. CLASE DE CODURI LINIARE
Acest ultim caz este eliminat de urmatorul rezultat (Van Lindt - Coding theory,
pp. 95):
Daca exista un cod binar perfect corector de t erori, atunci
n + 1
t + 1
este numar
ntreg. 2
4.4 Exercit ii
4.1 Fie (8, 4) - codul Hamming binar extins. Decodicat i cuvintele
10101010 11010110 11111111.
4.2 Sa se demonstreze ca toate cuvintele - cod ale codului Hamming binar extins
(2
r
, 2
r
r 1) au pondere para.
4.3 Construit i codurile Hamming ternare pentru r = 2, 3 si determinat i decodi-
carea pe baza sindromurilor.
4.4 Construit i (5, 3) - codul Hamming cu q = 4. Determinat i toate cuvintele - cod si
tabela de decodicare cu sindromuri. Decodicat i cuvintele: 11223, 32101 2222 1100.
4.5 Demonstrat i armat iile din Corolarul 4.1.
4.6 Aratat i ca C
24
cont ine un cuvant cu toate componentele egale cu 1 si nici un
cuvant de pondere 20.
Demonstrat i ca numaratorul de ponderi al lui C
24
este:
1 + 759X
8
+ 2576X
12
+ 759X
16
+X
24
.
4.7

In codul Golay extins C
24
sa se decodice - daca este posibil, cuvintele:
111000000000, 011011011011 111111000000, 100011100111
111111000000, 101011100111 111111000000, 111000111000
111000000000, 110111001101 110111001101, 111000000000
000111000111, 101000101101 110000000000, 101100100000
4.8 Sa se determine eroarea tip cea mai probabila pentru un cuvant cu sindromurile:
s
1
= 010010000000, s
2
= 011111010000
s
1
= 010010100101, s
2
= 001000110000
s
1
= 111111000101, s
2
= 111100010111
s
1
= 111111111011, s
2
= 010010001110
s
1
= 001101110110, s
2
= 111110101101
s
1
= 010111111001, s
2
= 100010111111
4.9 Folosind C
23
, decodicat i cuvintele:
101011100000, 10101011011 101010000001, 11011100010
100101011000, 11100010000 011001001001, 01101101111
4.10 Detaliat i demonstrat ia Teoremei 4.6.
4.11 Rezolvat i ecuat ia (1).
Prelegerea 5
Coduri Reed - Muller
Vom introduce o noua clasa de coduri binare, caracterizate printr-o tehnica de de-
codicare deosebit de simpla: codurile Reed - Muller (R M). Ele au fost denite
de Reed, iar Muller a construit modalitatea de decodicare si - implicit - de de-
tectare si corectare a erorilor. Unul din aceste coduri - RM(1, 5) - a fost folosit n
1969 de sonda Mariner pentru transmiterea de imagini de pe Luna. Fiecare pixel
din imagine avea asignat una din 2
6
= 64 grade de umbra, iar acesti sase bit i de
informat ie erau codicat i ntr-un cuvant de lungime 32. Codul poate corecta pan a
la 7 erori.
5.1 Denirea prin funct ii booleene
5.1.1 Funct ii si polinoame booleene
Denit ia 5.1 O funct ie booleana de m (m 1) variabile este o aplicat ie
f : Z
m
2
Z
2
.
O modalitate simpla folosita pentru denirea unei funct ii booleene este asocierea
unei tabele de adevar: un tablou (m+1)2
m
care cont ine toate combinat iile posibile
de m valori binare, carora li se asociaza valoarea funct iei (de asemenea o valoare
binara). Prin convent ie, primii m bit i de pe coloana i (0 i 2
m
1) reprezint a
scrierea n baza 2 a numarului i.
Exemplul 5.1 Urmatoarea tabela de adevar deneste o funct ie booleana de 3 vari-
abile:
x
0
0 1 0 1 0 1 0 1
x
1
0 0 1 1 0 0 1 1
x
2
0 0 0 0 1 1 1 1
f 0 1 1 0 1 1 1 0
Observam ca o astfel de tabela deneste un cuvant binar de lungime 8. Armat ia
este adevarata si invers: orice cuvant binar de lungime 8 este denit printr-o tabela
de adevar a unei funct ii booleene de 3 variabile. Astfel, se pot identica funct iile
booleene de 3 variabile prin cuvintele binare de lungime 8.

In tabela de sus, cuvantul
01101110 este pus n corespondent a biunivoca cu funct ia f.
49
50 PRELEGEREA 5. CODURI REED - MULLER

In cele ce urmeaza, orice cuvant binar f = f


0
f
1
. . . f
2
m
1
de lungime 2
m
este conside-
rat ca o funct ie booleana de m variabile, unde
f(0, 0, . . . , 0, 0) = f
0
,
f(0, 0, . . . , 0, 1) = f
1
,
f(0, 0, . . . , 1, 0) = f
2
,
.
.
.
f(1, 1, . . . , 1, 1) = f
2
m
1

In general, f
i
= f(i
m1
, . . . , i
1
, i
0
), unde i =
m1

k=0
i
k
2
k
(i
m1
. . . i
1
i
0
este scrierea n binar a lui i).
Exemplul 5.2 Exista doua funct ii booleene constante:
1 = 11 . . . 11, 0 = 00 . . . 00.
Exemplul 5.3 Orice variabila poate tratata ca o funct ie booleana. De exemplu,
x
0
este funct ia booleana care asigneaza ecarui m-tuplu (x
0
, x
1
, . . . , x
m1
) valoarea
primei coordonate x
0
. Deci, valoarea este 0 pentru toate numerele pare si 1 pentru
toate numerele impare: x
0
= 0101 . . . 01 (vezi Exemplul 5.1 pentru cazul m = 3).

In general,
x
i
este cuvantul binar n care pe pozit ia k (0 k 2
m
1) este 1 atunci si
numai atunci cand scrierea binara a lui k cont ine 1 pe pozit ia i.
Aceasta observat ie rezulta din modul de scriere al tabelelor de adevar.
De exemplu, x
1
= 00110011 . . . 0011 si x
m1
= 00 . . . 00
. .
2
m1
11 . . . 11
. .
2
m1
.
Pentru m = 4, cele patru variabile sunt descrise n Tabelul 5.1:
Tabelul 5.1:
x
0
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
x
1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
x
2
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
x
3
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Pe mult imea funct iilor booleene se denesc doua operat ii:
Suma logica (sau exclusiv): f +g = h
unde h
i
= f
i
+ g
i
(mod 2), 0 i 2
m
1.
Produsul logic (si): fg = h
unde h
i
= f
i
g
i
(mod 2), 0 i 2
m
1.
Observat ii:
5.1. DEFINIREA PRIN FUNCT II BOOLEENE 51
1. Produsul logic verica relat ia = f.
Deci n reprezentarea funct iilor nu vor apare exponent i mai mari de 1.
2. Exista si alte operat ii care pot exprimate cu ajutorul sumei si produsului
logic. Astfel,
Negat ia f = 1 +f
(sau disjunctiv): f g = f +g +fg
Denit ia 5.2 Un polinom boolean de m nedeterminate este o suma de termeni din
mult imea
{0, 1} {x
i
1
x
i
2
. . . x
i
k
|0 i
1
< i
2
< . . . < i
k
m1, k 1}.
Funct ia 0 este numit a polinom boolean de gradul 1, funct ia 1 este numit a polinom
boolean de gradul 0, iar orice alt polinom boolean are gradul k unde k este numarul
maxim de factori dintr-un termen al lui f.
Exemplul 5.4 Polinomul boolean 1 +x
0
x
1
de 3 nedeterminate are gradul 2. El
este negat ia polinomului
x
0
x
1
= (01010101)(00110011) = 00010001.
Deci 1 +x
0
x
1
= 11101110.
Acelasi polinom, considerat ca funct ie de 4 nedeterminate, este cuvantul
1110111011101110.
Exemplul 5.5 Polinomul x
i
x
j
(i = j) este cuvantul binar n care pe pozit ia k este
1 daca si numai daca reprezentarea binara a lui k are 1 pe pozit iile i si j. Numarul
acestor situat ii este 2
m2
(deoarece celelalte m2 pozit ii din scrierea binara a lui k
pot alese arbitrar). Deci w(x
i
x
j
) = 2
m2
.
Mai general,
Daca i
1
, i
2
, . . . , i
r
sunt valori distincte din [0, m1], atunci
w(x
i
1
x
i
2
. . . x
ir
) = 2
mr
. ()
Fiecare polinom boolean de m variabile determina un cuvant binar de lungime
2
m
: pentru o singura nedeterminata, se foloseste Exemplul 5.3, dupa care se opereaza
adunarile si multiplic arile necesare.
Invers, orice cuvant binar f = f
0
f
1
. . . f
2
m
1
poate translatat ntr-un polinom
boolean pe baza urmatoarei propozit ii:
Propozit ia 5.1 Daca f este o funct ie booleana de m variabile, atunci:
f(x
0
, . . . , x
m2
, x
m1
) = f(x
0
, . . . , x
m2
, 0)+
+[f(x
0
, . . . , x
m2
, 0) + f(x
0
, . . . , x
m2
, 1)]x
m1
.
Demonstrat ie: Deoarece x
m1
poate lua doar doua valori (0, 1), este sucient sa
veric am identitatea pentru acestea. Cazul x
m1
= 0 se veric a banal. Pentru
x
m1
= 1 avem:
f(x
0
, . . . , x
m2
, 0)+[f(x
0
, . . . , x
m2
, 0)+f(x
0
, . . . , x
m2
, 1)] = f(x
0
, . . . , x
m2
, 1).
2
52 PRELEGEREA 5. CODURI REED - MULLER
Exemplul 5.6 Sa translatam f = 01101110 ntr-un polinom boolean de 3 variabile.
Vom aplica pe etape formula din Propozit ia 5.1:
f = 0110 + [0110 + 1110]x
2
= 0110 + 1000x
2
=
= (01 + [01 + 10]x
1
) + (10 + [10 + 00]x
1
)x
2
= 01 + 11x
1
+ 10x
2
+ 10x
1
x
2
=
= (0 +[0 +1]x
0
) +(1 +[1 +1]x
0
)x
1
+(1 +[1 +0]x
0
)x
2
+(1 +[1 +0]x
0
)x
1
x
2
=
= x
0
+x
1
+x
2
+x
0
x
2
+x
1
x
2
+x
0
x
1
x
2
.
Teorema 5.1 Spat iul liniar Z
n
2
, (n = 2
m
) are o baza formata din toate monoamele
booleene:
1
x
i
(i = 0, 1, . . . , m1)
x
i
x
j
(i, j = 0, 1, . . . , m1, i = j)
.
.
.
x
0
x
1
. . . x
m1
Demonstrat ie: Fiecare cuvant de lungime n = 2
m
este o funct ie booleana de m nede-
terminate, care poate exprimata printr-un polinom boolean. Monoamele booleene
pot considerate n Z
n
2
si sunt evident liniar independente.

In plus, deoarece pentru
ecare k = 0, 1, . . . , m sunt C
k
m
monoame de grad k, numarul lor total va
m

k=0
C
k
m
= 2
m
= n, adica dimensiunea spat iului liniar. 2
5.1.2 Coduri Reed - Muller
Denit ia 5.3 Se numeste cod Reed - Muller de lungime n = 2
m
si grad r
(0 r m), codul liniar RM(r, m) al tuturor cuvintelor binare de lungime n care
au - ca polinoame booleene - gradul maxim r.
Exemplul 5.7 RM(0, m) este format din toate polinoamele de grad cel mult 0,
adica 0 si 1. Deci RM(0, m) este codul cu repetit ie de lungime 2
m
.
Exemplul 5.8 RM(1, m) are baza 1, x
0
, . . . , x
m1
; orice polinom de grad cel mult
1 se poate scrie ca suma de o parte din aceste m+1 polinoame (liniar independente).
Deci, RM(1, m) este un (2
m
, m + 1) - cod liniar.
De exemplu, RM(1, 3) are matricea generatoare:
G =
_
_
_
_
_
1
x
0
x
1
x
2
_
_
_
_
_
=
_
_
_
_
_
1 1 1 1 1 1 1 1
0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1
0 0 0 0 1 1 1 1
_
_
_
_
_
.
care genereaza codul Hamming extins (8, 4).
Similar, RM(1, 4) este un (16, 5) - cod liniar binar, iar RM(1, 5) este un (32, 6)
- cod liniar, folosit n 1969 de programul Mariner, dupa cum s-a ment ionat anterior.
Propozit ia 5.2 RM(r, m) are k = C
0
m
+ C
1
m
+ . . . + C
r
m
simboluri de informat ie.
5.1. DEFINIREA PRIN FUNCT II BOOLEENE 53
Demonstrat ie: Codul RM(r, m) are ca baza monoamele booleene
{1} {x
i
1
x
i
2
. . . x
i
s
|s r, 0 i
1
< i
2
< . . . < i
s
< m}.
Numarul acestor monoame este C
0
m
+ C
1
m
+ . . . + C
r
m
. Cum ele sunt liniar in-
dependente, vor forma liniile matricii generatoare G a codului; ori num arul de linii
este egal cu numarul de simboluri de informat ie. 2
Propozit ia 5.3 Dualul codului RM(r, m) este codul RM(mr 1, m).
Demonstrat ie: Trebuie aratat ca cele doua coduri au baze ortogonale si suma di-
mensiunilor lor este egala cu suma ntregului spat iu.
A: Fie v
i
1
v
i
2
. . . v
i
p
(p r) un monom din baza codului RM(r, m) si
v
j
1
v
j
2
. . . v
j
s
(s m r 1) un monom din baza codului RM(m r 1, m).
Produsul lor are t (t r +mr 1 = m1) variabile distincte (variabilele comune
apar o singura data), deci ponderea lui este (conform ()) 2
mt
2. Fiind un num ar
par, rezulta ca produsul scalar (adica suma n binar a termenilor) este 0.
B: Suma dimensiunilor celor doua coduri este:
r

i=0
C
i
m
+
mr1

i=0
C
i
m
=
r

i=0
C
i
m
+
m

i=r+1
C
i
m
=
m

i=0
C
i
m
= 2
m
= n. 2
Exemplul 5.9 RM(m 2, m) este codul Hamming extins de lungime 2
m
.

Intr-
adevar, codul sau dual este RM(m(m2) 1, m) = RM(1, m), deci RM(m
2, m) are matricea de control
H =
_
_
_
_
_
_
1
x
0
.
.
.
x
m
_
_
_
_
_
_
=
_
_
_
_
_
_
1 1 1 1 . . . 1 1 1 1
0 1 0 1 . . . 0 1 0 1
.
.
.
0 0 0 0 . . . 1 1 1 1
_
_
_
_
_
_
.
Daca adunam prima linie la toate celelalte si apoi o permutam cu ultima linie,
se obt ine alta matrice de control a codului:
H
_
_
_
_
_
_
_
_
_
1 0 1 0 . . . 1 0 1 0
1 1 0 0 . . . 1 1 0 0
.
.
.
1 1 1 1 . . . 0 0 0 0
1 1 1 1 . . . 1 1 1 1
_
_
_
_
_
_
_
_
_
.
Dupa eliminarea ultimei linii si coloane se obt ine un (2
m
1, m) - cod ale carui
coloane sunt nenule si diferite doua cate doua, adica matricea de control H
0
a unui
cod Hamming binar. Deci H este matricea de control a unui cod Hamming extins.
Codicarea mesajelor cu un cod RM se realizeaza normal, nmult ind mesajul de
informat ie cu matricea generatoare.

In acest fel bit ii de informat ie devin coecient ii
polinomului boolean corespunzator. De exemplu, n RM(1, m) codicarea celor
m + 1 caractere de informat ie este:
(a
1
, a
2
, . . . , a
m+1
)
_
_
_
_
_
_
1
x
0
.
.
.
x
m1
_
_
_
_
_
_
= a
1
1 + a
2
x
0
+ . . . + a
m+1
x
m1
.
54 PRELEGEREA 5. CODURI REED - MULLER
5.2 Denirea recursiva a codurilor R - M
Sa introducem o alta modalitate de denire a codurilor Reed - Muller, nu prin
polinoame booleene, ci prin construct ie recursiva.
Denit ia 5.4 Fie m 0 un numar natural. Se deneste codul Reed - Muller
RM(r, m) de ordin r (0 r m) si lungime n = 2
m
astfel:
RM(0, m) = {00 . . . 0, 11 . . . 1}, RM(m, m) = Z
n
2
.
RM(p, m) = {[a, a +b]|a RM(p, m1), b RM(p1, m1)}, 0 < p r.
S-a notat cu [x, y] un cuvant de lungime 2
m
scris ca alaturare de doua subcuvinte
de lungimi egale (2
m1
), separate prin virgula.
Exemplul 5.10 RM(0, 0) = {0, 1}
RM(0, 1) = {00, 11}, RM(1, 1) = {00, 01, 10, 11}
RM(0, 2) = {0000, 1111}, RM(2, 2) = Z
4
2
RM(1, 2) = {(a, a +b)|a {00, 01, 10, 11}, b {00, 11}} =
= {0000, 0011, 0100, 0111, 1000, 1011, 1100, 1111}

In mod similar se poate da o denit ie recursiva a matricii generatoare G(r, m) pentru


codul RM(r, m).
G(0, m) = (11 . . . 1);
pentru 0 < p < m, G(p, m) =
_
G(p, m1) G(p, m1)
0 G(p 1, m1)
_
;
G(m, m) =
_
G(m1, m)
00 . . . 01
_
.
Teorema 5.2 G(r, m) este matrice generatoare pentru codul RM(r, m).
Demonstrat ie: Se verica prin induct ie dupa r. 2
Exemplul 5.11 Sa consideram r = 2; atunci lungimea este n = 2
2
= 4 si pentru
r = 1, 2 avem
G(1, 2) =
_
G(1, 1) G(1, 1)
0 G(0, 1)
_
G(2, 2) =
_
G(1, 2)
0001
_
.
Din denit ie, matricile generatoare pentru RM(0, 1) si RM(1, 1) sunt
G(0, 1) = (11), G(1, 1) =
_
1 1
0 1
_
, asa ca
G(1, 2) =
_
_
_
1 1 1 1
0 1 0 1
0 0 1 1
_
_
_, G(2, 2) =
_
_
_
_
_
1 1 1 1
0 1 0 1
0 0 1 1
0 0 0 1
_
_
_
_
_
.
5.3. DEFINIREA GEOMETRIC

A A CODURILOR R-M 55
Propozit ia 5.4 RM(r 1, m) RM(r, m).
Demonstrat ie: Sa consideram init ial matricea
G(1, m) =
_
G(1, m1) G(1, m1)
0 G(0, m1)
_
.
Pentru ca 1 este prima linie a lui G(1, m 1), cuvantul [1, 1] formeaza prima
linie a matricii (G(1, m 1) G(1, m 1)). Deci RM(0, m) = {0, 1} este cont inut
n codul RM(1, m).

In general, deoarece G(r 1, m1) este submatrice a lui G(r, m1) si


G(r 2, m1) este o submatrice a lui G(r 1, m1), este evident ca
G(r 1, m) =
_
G(r 1, m1) G(r 1, m1)
0 G(r 2, m)
_
este o submatrice a lui G(r, m), deci RM(r1, m) este subcod al lui RM(r, m).
2
Teorema 5.3 RM(r, m) are distant a d = 2
mr
.
Demonstrat ie: Vom folosi o induct ie dupa r:
Pentru r = 0, evident (RM(0, m) ind codul cu repetit ie, distant a sa este
d = n = 2
m
).
La pasul II, deoarece
RM(r, m) = {[x, x +y]|x RM(r, m1), y RM(r 1, m1)} si
RM(r 1, m1) RM(r, m1) (Propozit ia 5.4), rezulta x +y RM(r, m1).
Daca x = y, conform ipotezei de induct ie w(x +y) 2
m1r
. Cum si w(x)
2
m1r
, putem scrie w([x +y, x]) = w(x +y) + w(x) 2
mr
.
Daca x = y, atunci [x, x +y] = [y, 0]; dar y RM(r 1, m 1) si deci
w([y, 0]) = w(y) 2
mr
.
Cum orice linie a matricii generatoare este cuvant - cod, iar ultima linie are
ponderea exact 2
mr
, demonstrat ia este ncheiat a. 2
5.3 Denirea geometrica a codurilor R-M
Codurile Reed - Muller mai pot denite si geometric - prin folosirea spat iilor
ane. Avantajul acestei reprezent ari consta n modalitatea mai simpla de aplicare
a algoritmilor de decodicare.
Pentru usurint a descrierii am construit nt ai cazul tridimensional. De asemenea,
pentru a vedea echivalent a cu denirea anterioara a codurilor Reed - Muller, vom
face permanent legatura cu polinoamele booleene (sau cu funct iile lor caracteristice).
56 PRELEGEREA 5. CODURI REED - MULLER
5.3.1 Cazul 3 -dimensional
Spat iul euclidian 3 - dimensional binar este mult imea {(a, b, c)|a, b, c Z
2
}. Spre
deosebire de spat iul euclidian obisnuit - unde cele trei coordonate luau valori n R
- aici num arul punctelor este nit: numai 8. Ele pot listate, renotandu-le astfel:
Punct Funct ie caracteristica
p
0
= 000 00000001
p
1
= 001 00000010
p
2
= 010 00000100
p
3
= 011 00001000
p
4
= 100 00010000
p
5
= 101 00100000
p
6
= 110 01000000
p
7
= 111 10000000
Liniile pot denite n geometria euclidiana prin expresii de forma
a + tb a, b Z
3
2
, b = 0.
unde t este un parametru binar (t {0, 1}). Deci o linie n spat iul 3 - dimensional
binar are numai 2 puncte: a, a +b. Invers, orice pereche de doua puncte distincte
a, a

formeaza o dreapta, anume a +t(a

a). Putem astfel sa consideram liniile ca


ind totalitatea celor C
2
8
= 28 submult imi de cate doua puncte
{p
0
, p
1
}, {p
0
, p
2
}, . . . , {p
6
, p
7
}.

In mod similar, planele din geometria euclidiana sunt denite


a + t
1
b + t
2
c, a, b, c Z
3
2
, b, c liniar independente,
unde t
1
, t
2
sunt parametri binari. Un plan este format deci din patru puncte:
a, a +b, a +c, a +b +c. Aparent, desi num arul planelor n geometria euclidiana
binara 3 - dimensionala ar trebui sa e C
4
8
= 70, condit ia de liniar independent a
reduce acest num ar la 14:
Plan Funct ie caracteristica Polinom boolean
{p
1
, p
3
, p
5
, p
7
} 10101010 x
0
{p
2
, p
3
, p
6
, p
7
} 11001100 x
1
{p
4
, p
5
, p
6
, p
7
} 11110000 x
2
{p
0
, p
2
, p
4
, p
6
} 01010101 1 +x
0
{p
0
, p
1
, p
4
, p
5
} 00110011 1 +x
1
{p
0
, p
1
, p
2
, p
3
} 00001111 1 +x
2
{p
1
, p
2
, p
5
, p
6
} 01100110 x
0
+x
1
{p
1
, p
3
, p
4
, p
6
} 01011010 x
0
+x
2
{p
2
, p
3
, p
4
, p
5
} 00111100 x
1
+x
2
{p
1
, p
2
, p
4
, p
7
} 10010110 x
0
+x
1
+x
2
{p
0
, p
3
, p
4
, p
7
} 10011001 1 +x
0
+x
1
{p
0
, p
2
, p
5
, p
7
} 10100101 1 +x
0
+x
2
{p
0
, p
1
, p
6
, p
7
} 11000011 1 +x
1
+x
2
{p
0
, p
3
, p
5
, p
6
} 01101001 1 +x
0
+x
1
+x
2
5.3. DEFINIREA GEOMETRIC

A A CODURILOR R-M 57

In general, un plan este descris de ecuat ia generala


h
0
x
0
+ h
1
x
1
+ h
2
x
2
= c
care deneste un subspat iu 2 - dimensional al lui Z
3
2
.
Din faptul ca orice dreapta este o intersect ie de doua plane, ea poate descrisa
printr-o pereche de doua ecuat ii:
h
0
x
0
+ h
1
x
1
+ h
2
x
2
= c, h

0
x
0
+ h

1
x
1
+ h

2
x
2
= c

.
Liniile si planele sunt exemple de spat ii ane. Un spat iu ann Z
3
2
este o mult ime
de forma
a + A = {a +b|b A}
unde a Z
3
2
iar A este un subspat iu liniar din Z
3
2
. Daca dimensiunea lui A este s,
numim acea mult ime un s - spat iu an.
Deci liniile sunt 1 - spat ii ane, iar planele: 2 - spat ii ane. Pentru ecare punct
p
i
avem un 0 - spat iu an, si - n sfarsit - exista un 3 - spat iu an unic - Z
3
2
.
Orice spat iu an L poate descris de un cuvant binar f
L
= f
7
. . . f
1
f
0
denit
prin
f
i
=
_
1 daca p
i
L,
0 altfel
Cuvantul f
L
(sau funct ia booleana de trei variabile corespunzatoare) se numeste
funct ia caracteristica a spat iului an L (tabelele anterioare listeaza aceste funct ii
pentru 0 si 2 - spat ii ane).
Fiind date spat iile ane L, L

, intersect ia lor LL

este caracterizata de produsul


logic f
L
f
L
.
Exemplul 5.12 Primele doua plane din tabelul de sus se intersecteaza dupa linia
{p
3
, p
7
}. Produsul logic al funct iilor lor caracteristice este
x
0
x
1
= 10001000,
care se poate verica imediat ca ind funct ia caracteristica a dreptei {p
3
, p
7
}.
5.3.2 Cazul m - dimensional
Vom prezenta construct iile anterioare ntr-un cadru mai general, al geometriei eu-
clidiene m - dimensionale binare. Punctele (elementele lui Z
m
2
) pot renotate dupa
extensia binara a indicilor; mai clar, vom scrie Z
m
2
= {p
0
, p
1
, . . . , p
2
m
1
} unde
p
0
= 000 . . . 00, p
1
= 000 . . . 01, p
2
= 000 . . . 10, . . . , p
2
m
1
= 111 . . . 11.
Denit ia 5.5 Fie A un subspat iu liniar r - dimensional al lui Z
m
2
si a Z
m
2
.
Mult imea
A
a
= a + A = {a +b|b A}
se numeste r - spat iu an n geometria euclidiana m - dimensionala.
Un (m1) - spat iu an se numeste hiperplan.
58 PRELEGEREA 5. CODURI REED - MULLER
Daca b
1
, . . . , b
r
este o baza a lui A, r - spat iul an A
a
se noteaza
a + t
1
b
1
+ . . . + t
r
b
r
.
El are 2
r
puncte (date de variantele de alegere ale parametrilor binari t
i
, 1 i r).
O alta modalitate de notare a r - spat iilor ane se realizeaza cu ajutorul sis-
temelor de ecuat ii liniare: astfel, daca A este denit ca mult imea solut iilor sistemului
Hx
T
= 0
T
, atunci A
a
este dat de mult imea solut iilor sistemului
Hx
T
= Ha
T
.
Acest sistem are m r ecuat ii.

In particular, un hiperplan este denit printr-o
singura ecuat ie:
h
0
x
0
+ h
1
x
1
+ . . . + h
m1
x
m1
= c.
Exemplul 5.13 Un 0 - spat iu an cuprinde un singur punct. Exista deci 2
m
0 - spat ii ane distincte: {p
0
}, {p
1
}, . . . , {p
2
m
1
}.
Similar, orice 1 - spat iu an (sau linie) este o mult ime formata din doua
puncte
a + tb {a, a +b},
si invers, orice mult ime de doua puncte distincte formeaza un 1 - spat iu an.
Exista deci C
2
2
m 1 - spat ii ane.
Exemplul 5.14 Fie P
i
spat iul an denit de ecuat ia x
i
= 1. Deci P
i
este mult imea
punctelor p
k
care au 1 pe pozit ia i. De exemplu P
0
= {p
1
, p
3
, . . . , p
2
m
1
}.
Fiecare P
i
este un hiperplan si - deoarece p
2
i are un singur 1 pe pozit ia i si 0 n
rest, putem scrie
P
i
p
2
i + A
unde A este spat iul liniar denit de ecuat ia x
i
= 0, (deci tot un hiperplan).
Propozit ia 5.5 Exista 2(2
m
1) hiperplane.
Demonstrat ie: Deoarece se pot construi 2
m
1 ecuat ii cu coecient i binari si variabile
x
0
, x
1
, . . . , x
m1
, Z
m
2
are 2
m
1 subspat ii A de dimensiune m 1. Fiecare din ele
are 2
m1
puncte, deci vor exista
2
m
2
m1
= 2 spat ii ane modulo A. 2
Exemplul 5.15 Pentru i = j, intersect ia P
i
P
j
(mult imea punctelor care au 1 pe
pozit iile i si j) este un (m 2) - spat iu an.

Intr-adevar, daca se ia a = p
2
i
+2
j ,
avem
P
i
P
j
a + A,
unde A este determinat de ecuat iile x
i
= x
j
= 0 (deci A are dimensiunea m2).
Denit ia 5.6 Funct ia caracteristica a unui r - spat iu an L este cuvantul binar
f
L
= f
2
m
1
. . . f
1
f
0
denit prin
f
j
=
_
1 daca p
j
L,
0 altfel
5.3. DEFINIREA GEOMETRIC

A A CODURILOR R-M 59
Funct ia caracteristica poate interpretata ca un polinom boolean f
L
(x
0
, . . . , x
m1
).
Din proprietat ile acestor polinoame rezulta
a
0
a
1
. . . a
m1
L f
L
(a
0
, a
1
, . . . a
m1
) = 1
Observat ii:
1. Singurul m - spat iu an (Z
m
2
) are funct ia caracteristica 1 = 11 . . . 1.
2. Un hiperplan P
i
are funct ia f
P
i
= x
i
.
3. Fie L un hiperplan denit de ecuat ia h
0
x
0
+ . . . h
m1
x
m1
= c. Funct ia sa
caracteristica va un polinom boolean de gradul 1, anume
f
L
(x
0
, . . . , x
m1
) = h
0
x
0
+ . . . + h
m1
x
m1
+ c + 1
Aceasta relat ie rezulta din faptul ca un punct a
0
. . . a
m1
este n plan daca si
numai daca h
0
a
0
+ . . . + h
m1
a
m1
= c, adica f
L
(a
0
, . . . , a
m1
) = 1.
4. Pentru doua spat ii ane L, L

, funct ia caracteristica a intersect iei L L

este
f
L
f
L
.
Astfel, pentru P
i
P
j
(care este un (m2) - spat iu an) funct ia caracteristica
este x
i
x
j
.
Mai general, polinomul boolean x
i
1
x
i
2
. . . x
is
este funct ia caracteristica a unui
(ms) - spat iu an.
Teorema 5.4 Funct ia caracteristica a unui r - spat iu an este un polinom boolean
de gradul mr.
Demonstrat ie: Un r - spat iu an L este denit ca solut ia sistemului de ecuat ii
Hx
T
= c
T
, sau, detaliind,
m1

j=0
h
ij
x
j
= c
i
, 1 i mr.
Aceste ecuat ii se pot scrie
m1

j=0
h
ij
x
j
+ c
i
+ 1 = 1, 1 i mr.
Atunci, polinomul boolean de grad mr
f(x
0
, . . . , x
m1
) =
mr

i=1
_
_
m1

j=0
h
ij
x
j
+ c
i
+ 1
_
_
este funct ia caracteristica a lui L. 2
Denit ia 5.7 RM(r, m) este codul liniar generat de toate funct iile caracteristice
ale spat iilor ane de dimensiune cel put in mr n geometria euclidiana m - dimen-
sionala peste Z
2
.
60 PRELEGEREA 5. CODURI REED - MULLER
Faptul ca aceasta coincide cu denit ia anterioar a a codurilor Reed - Muller rezulta
din construt ia spat iilor ane: RM(r, m) cont ine toate funct iile caracteristice ale s
- spat iilor ane, unde s m r. Faptul ca aceste funct ii genereaza tot spat iul
RM(r, m) rezulta din Observat ia 4.
Exemplul 5.16 Codul RM(1, 3) este generat de funct iile caracteristice ale tuturor
planelor. Orice astfel de funct ie este un polinom de trei variabile de gradul 1.
Codul RM(2, 3) este generat de funct iile caracteristice ale tuturor planelor si
liniilor. Cum o linie este intersect ia a doua plane, funct ia sa caracteristica este
produsul a doua polinoame de gradul 1, deci un polinom de gradul 2 (cuvant - cod
din RM(2, 3)).
5.4 Exercit ii
5.1 Ce polinom boolean are ultima linie a tabelei de adevar:
10100110 1010011010100110 0101001110011100
5.2 Determinat i tabela de adevar a polinomului boolean 1 +x
0
+x
1
x
2
:
1. Ca funct ie de trei variabile;
2. Ca funct ie de patru variabile.
5.3 Demonstrat i armat ia ().
5.4 Gasit i un (15, 5) - cod liniar binar corector de 3 erori (folosit i un cod R M
relaxat).
5.5 Fiind dat codul RM(1, 3), codicat i toate mesajele de informat ie posibile.
Acelasi lucru pentru codul RM(2, 3).
5.6 Demonstrat i Teorema 5.2
5.7 Construit i matricile generatoare G(1, 3), G(2, 3), G(r, 4), r = 0, 1, 2.
5.8 Demonstrat i ca G(r, m) are k + 1 linii, unde k este dat de Propozit ia 5.2
5.9 Calculat i numarul de 2 - spat ii ane n geometria euclidiana peste Z
m
2
.
5.10 Este orice funct ie booleana funct ia caracteristica a unui anumit spat iu an ?
Caracterizat i astfel de funct ii.
5.11 Orice funct ie caracteristica a unui (r + 1) - spat iu an apart ine codului dual
lui RM(r, m).
5.12 Sa se arate ca RM(2, 5) este auto - dual. Sa se determine toate codurile
RM auto - duale.
Prelegerea 6
Decodicarea codurilor Reed -
Muller
Avantajul principal al codurilor Reed - Muller consta n facilitatea decodicarii,
facilitate bazata pe o tehnica diferita de cea de pan a acum. Aceasta tehnica, numit a
decodicare majoritara nu apeleaza la ideea de sindrom, ci corecteaza direct bit ii
modicat i, folosind diverse proprietat i ale cuvantului recept ionat.
6.1 Decodicarea majoritara
Sa prezent am pe scurt principiile generale ale decodicarii majoritare. Vom ncepe
cu un exemplu foarte simplu:
Exemplul 6.1 Fie codul binar cu repetit ie de lungime 2n + 1 :
C = {00 . . . 0
. .
2n+1
, 11 . . . 1
. .
2n+1
}.
Ca sistem de ecuat ii de control se poate lua
_

_
x
1
+ x
2
= 0
x
1
+ x
3
= 0
.
.
.
x
1
+ x
2n+1
= 0
Daca se recept ioneaza cuvantul y = x +e, la nlocuirea lui n sistem, acesta devine
y
1
+ y
i
= e
1
+ e
i
, 2 i 2n + 1.
Daca mai mult de n din cele 2n expresii y
1
+y
i
iau valoarea 1, aceasta nseamna
ca:
Au aparut mai put in de n erori, printre care si pe prima pozit ie (e
1
= 1), sau
Au aparut mai mult de n erori, dar nu pe prima pozit ie (e
1
= 0).
Din aceste doua variante, prima este mai probabila. Deci valoarea majoritara pe
care o iau cele n valori y
1
+ y
i
va valoarea lui e
1
.
Denit ia 6.1 Fie A
n,k
un cod liniar. Un set de ecuat ii de control pentru A
n,k
este
ortogonal pe mult imea de pozit ii P {1, 2, . . . , n} daca si numai daca:
61
62 PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER
1. i P, termenul x
i
apare (cu coecient nenul) n ecare ecuat ie;
2. i P, termenul x
i
apare cel mult ntr-o ecuat ie.
Decodicarea se realizeaza caracter cu caracter, dupa urmatorul procedeu:
Fie a = a
1
. . . a
n
cuvantul recept ionat si i (1 i n) o pozit ie.
Se construieste mult imea maximala de ecuat ii de control ortogonale pe pozit ia
i.
Fie e
i
valoarea obt inut a n majoritatea acestor ecuat ii. Al i-lea caracter de-
codicat este a
i
+ e
i
.
Exemplul 6.2 Fie dualul (15, 11) - codului Hamming cu matricea de control
H =
_
_
_
_
_
0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
_
_
_
_
_
Pentru ecare pereche de coloane distincte din H exista o a treia coloana astfel ncat
suma celor trei coloane este 0. Deci, ecare cuvant de pondere 3 al codului Hamming
da o ecuat ie de control cu trei termeni pentru codul dual; n acest fel se obt ine pentru
ecare caracter x
i
cate un sistem de 7 ecuat ii ortogonale pe pozit ia i. Astfel,
pentru x
1
ele sunt: x
1
= x
2
+ x
3
= x
4
+ x
5
= x
6
+ x
7
= x
8
+ x
9
= x
10
+ x
11
=
x
12
+ x
13
= x
14
+ x
15
;
pentru x
2
: x
2
= x
1
+x
3
= x
4
+x
6
= x
5
+x
7
= x
8
+x
10
= x
9
+x
11
= x
12
+x
14
=
x
13
+ x
15
, etc.
Codul are distant a d = 8; deci poate corecta maxim 3 erori.
Daca n mesajul primit y apar cel mult 3 erori, atunci un sistem de ecuat ii
ortogonal pe x
1
va avea cel mult trei ecuat ii care sa dea pentru x
1
o valoare gresita
si cel put in cinci cu valoarea calculata corect. Valoarea gasita majoritar va cea n
care se decodica primul caracter.
Procedeul se reia pentru y
2
, y
3
, . . ..
Sa presupunem de exemplu ca s-a recept ionat mesajul 001011110101011. Pentru
decodicarea primului caracter vom calcula sumele
0 + 1, 0 + 1, 1 + 1, 1 + 0, 1 + 0, 1 + 0, 1 + 1.
Se obt in 5 valori de 1 si doua de 0; deci, primul simbol este 1.
Procedand similar pentru ecare (folosind ecuat iile ortogonale corespunzatoare
ecarei pozit ii), se ajunge la cuvantul 10101011010101010.
Aceasta metoda este nu numai usor de implementat, dar are adesea si alte completari
(gen bitul de testare a paritat ii) care fac posibila corectarea mai multor erori.

In aceasta prelegere vom construi trei algoritmi de decodicare a codurilor R


M. Doi din ei sunt bazat i pe modurile de reprezentare (geometric si algebric) ale
acestor coduri; al treilea este un algoritm bzat pe denirea recursiva a codurilor
RM si este prezentat numai pentru cazul r = 1. Tot ii algoritmii sunt foarte usor
de implementat, utilizarea unuia sau a altuia depinzand de criterii particulare n
alegerea parametrilor codului.
6.2. ALGORITM GEOMETRIC DE DECODIFICARE MAJORITAR

A 63
6.2 Algoritm geometric de decodicare majori-
tara
Deoarece distant a unui cod RM(r, m) este d = 2
mr
, el va capabil sa corecteze
pan a la 2
mr1
1 erori.

In cele ce urmeaza vom presupune ca s-a recept ionat
cuvantul y = y
2
m
1
. . . y
1
y
0
, n care au fost modicate maxim 2
mr1
1 pozit ii.
Problema este de a determina pentru ecare i (0 i 2
m
1) daca bitul y
i
trebuie
corectat sau nu. Sau - altfel spus - de a vedea daca pozit ia lui y corespunzatoare 0
- spat iului an {p
i
} trebuie sau nu corectata.
Pentru a folosi proprietat ile codurilor Reed - Muller exprimate de spat iile ane,
vom reformula totul n maniera urmatoare:
Pentru ecare s - spat iu an L (0 s r + 1) vom cerceta daca pozit iile
cuvantului recept ionat y corespunzatoare punctelor lui L (adica acei bit i y
i
pentru
care p
i
L) sunt modicat i sau nu.
Vom da nt ai cateva not iuni si notat ii ajutatoare pentru a simplica demons-
trat iile.
Denit ia 6.2 Fie G un grup, A un subgrup al sau si x G. Se numeste subgrup
modulo A al lui G mult imea
A
x
= x + A = {x + a|a A}.
Lema 6.1 Subgrupurile unui grup modulo un subgrup arbitrar A, au urmatoarele
proprietat i:
1. a G, x G, a A
x
;
2. Daca x = y atunci A
x
A
y
= sau A
x
= A
y
;
3. Daca a, b A
x
atunci a b A;
4. x, card(A
x
) = card(A).
Demonstrat ie: Este lasat a ca exercit iu.
Teorema principala a acestui paragraf este:
Teorema 6.1 Orice s - spat iu an din geometria binara m - dimensionala este
cont inut n exact 2
ms
1 (s + 1) - spat ii ane distincte.

In plus, orice punct din
afara lui L este exact n unul din aceste (s + 1) - spat ii ane.
Demonstrat ie: I: Sa arat am ntai ca orice s - subspat iu liniar A Z
m
2
este cont inut
n exact 2
ms
1 subspat ii distincte de dimensiune s + 1.
Orice (s + 1) - spat iu care cont ine A este de forma
A = A + tb {a + tb|a A, t = 0, 1},
unde b A este un punct arbitrar xat. Aceasta rezulta imediat din faptul ca orice
baza a lui A poate extinsa la o baza a lui A.
Pentru doua puncte b, b

A, spat iile liniare A + tb si A + tb

coincid daca si
numai daca b si b

sunt n acelasi subspat iu modulo A (Lema 6.1).


64 PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER
Din aceeasi lema rezulta ca sunt
2
m
2
s
subspat ii modulo A. Unul este chiar A, iar
celelalte cont in numai puncte dinafara lui A. Deci exista 2
ms
1 spat ii distincte
A + tb pentru b A.
II: Orice s - spat iu an L a + A (dimA = s) este cont inut n 2
ms
1
(s + 1) - spat ii ane distincte de forma a + A.
Cu I, orice spat iu care cont ine L este de forma b + A. Deoarece L este de forma
a+A, rezulta ca a b+A, deci a b A, de unde rezulta (Lema 6.1) ca punctele
a, b sunt n acelasi subspat iu modulo A.
III: Orice punct b L = a +A este ntr-un (s +1) - spat iu an care cont ine L,
anume a + A unde A = A + t(b a).

Intr-adevar, alegand t = 1 si 0 A, avem b = a + [0 + (b a)].


Pentru a verica ca A are dimensiunea s+1 este sucient de aratat ca b a A;
daca prin absurd b a A, atunci a + (b a) = b A, contradict ie.

In nal, ar mai trebui aratat ca acest (s + 1) - spat iu an care l cont ine pe


b este unic. Orice (s + 1) - spat iu an care cont ine a + A are forma a + A unde
dim(A) = s + 1. Daca b a + A, atunci b a A, deci A cont ine spat iul liniar
A + (b a). Cum ambele spat ii au aceeasi dimensiune (s + 1), ele coincid. 2
Corolarul 6.1 Daca numarul de erori din cuvantul recept ionat este t < 2
mr1
,
atunci pentru ecare s - spat iu an L (0 s r) majoritatea (s + 1) - spat iilor
ane care cont in L au aceeasi paritate a erorilor ca L.
Demonstrat ie: Conform Teoremei 6.1, L este cont inut n 2
mr
1 > 2t
(s +1) - spat ii ane L

, ecare L

ind unic determinat de un punct din afara lui L.


Sa consideram toate punctele p
i
L pentru care caracterul y
i
este modicat. Lor
le corespund cel mult t (s +1) - spat ii ane L

. Toate celelalte spat ii L

ramase au
proprietatea ca nu cont in nici un punct p
i
din afara lui L pentru care y
i
este gresit.
Deci aceste spat ii au aceeasi paritate de erori ca si L, iar numarul lor este cel put in
(2
mr
1) t > t, deci majoritar. 2
Algoritm de decodicare pentru RM(r, m):
1. (Init ializare): La recept ionarea unui cuvant a Z
m
2
se considera toate
(r + 1) - spat iile ane L. Un spat iu L se numeste impar daca af
L
= 1 (f
L
este
funct ia caracteristica a spat iului an L).

In caz contrar L este par.
2. (Induct ie): Pentru ecare s = r, r 1, . . . , 0 unde (s + 1) - spat iile ane
au fost denite drept pare sau impare, se considera toate s - spat iile ane. Un
s - spat iu an L este par daca majoritatea (s + 1) - spat iilor ane care cont in
pe L sunt pare; altfel L este impar.
3. (Final): Pentru i = 0, 1, . . . , 2
m
1, se corecteaza a
i
daca si numai daca
0 - spat iul an {p
i
} este impar.
6.2. ALGORITM GEOMETRIC DE DECODIFICARE MAJORITAR

A 65
Exemplul 6.3 Sa consideram RM(1, 3) n care s-a recept ionat cuvantul
a = 11101010.
Tabelul 6.1: Primul pas al decodicarii 11101010
Plan Paritate Plan Paritate
{p
1
, p
3
, p
5
, p
7
} par {p
1
, p
3
, p
4
, p
6
} impar
{p
2
, p
3
, p
6
, p
7
} impar {p
2
, p
3
, p
4
, p
5
} par
{p
4
, p
5
, p
6
, p
7
} impar {p
0
, p
3
, p
4
, p
7
} par
{p
0
, p
2
, p
4
, p
6
} impar {p
0
, p
2
, p
5
, p
7
} par
{p
0
, p
1
, p
4
, p
5
} par {p
0
, p
1
, p
6
, p
7
} impar
{p
0
, p
1
, p
2
, p
3
} par {p
1
, p
2
, p
4
, p
7
} par
{p
1
, p
2
, p
5
, p
6
} impar {p
0
, p
3
, p
5
, p
6
} impar
Tabelul 6.2: Al doilea pas al decodicarii 11101010
Linie Paritate Linie Paritate Linie Paritate
{p
0
, p
1
} par {p
1
, p
5
} par {p
3
, p
5
} par
{p
0
, p
2
} par {p
1
, p
6
} par {p
3
, p
6
} impar
{p
0
, p
3
} par {p
1
, p
7
} par {p
3
, p
7
} par
{p
0
, p
4
} par {p
2
, p
3
} par {p
4
, p
5
} par
{p
0
, p
5
} par {p
2
, p
4
} par {p
4
, p
6
} impar
{p
0
, p
6
} impar {p
2
, p
5
} par {p
4
, p
7
} par
{p
0
, p
7
} par {p
2
, p
6
} impar {p
5
, p
6
} impar
{p
1
, p
2
} par {p
2
, p
7
} par {p
5
, p
7
} par
{p
1
, p
3
} par {p
3
, p
4
} par {p
6
, p
7
} impar
{p
1
, p
4
} par
La primul pas trebuie sa decidem care plane sunt pare si care sunt impare. De
exemplu planul L = {p
1
, p
3
, p
5
, p
7
} este par deoarece af
L
= 1110101010101010 = 0
(vezi Prelegerea V , Paragraful 5.3.1). Se obt ine Tabelul 6.1.
La pasul urmator trebuie sa decidem paritatea ecarei linii.
De exemplu, linia {p
0
, p
1
} este cont inuta n trei plane:
{p
0
, p
1
, p
4
, p
5
} (par), {p
0
, p
1
, p
2
, p
3
} (impar), {p
0
, p
1
, p
6
, p
7
} (impar).
deci, prin majoritate, {p
0
, p
1
} este para.

In mod similar se efectueaza calculele
pentru toate liniile, obt inandu-se Tabelul 6.2.
Se poate trece acum la corectarea erorilor. RM(1, 3) poate corecta maxim
2
mr1
1 = 2
311
1 = 1 erori. {p
0
} este cont inut n sapte linii, sase pare si una
impara, deci a
0
este corect, etc. Singurul bit care trebuie corectat este a
6
deoarece
{p
6
} este n sapte linii impare. Cuvantul trimis a fost deci 10101010.
Algoritmul de decodicare se bazeaza pe urmatoarea observat ie:
66 PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER
Fie codul RM(r, m) si a Z
m
2
un cuvant recept ionat.
Un (r + 1) - spat iu an L este par af
L
= 0.

Intr-adevar, daca a este cuvant - cod, atunci af


L
= 0 (Prelegerea V, Exercit iul
5.11). Acum, daca au fost perturbate un numar par de caractere din a, cores-
punzatoare unor puncte din L, valoarea produsului scalar af
L
nu se modica. Pentru
un numar impar de pozit ii perturbate, valoarea produsului scalar este 1.
6.3 Algoritm algebric de decodicare majoritara

In afara de algoritmul prezentat anterior, care foloseste reprezentarea geometrica a


codurilor R M, se poate da si o varianta algebrica de decodicare, bazata direct
pe denit ia decodicarii majoritare.

In cele ce urmeaza sa consideram un cod RM(r, m) xat si k = 1+C


1
m
+. . .+C
r
m
num arul simbolurilor de informat ie, n = 2
m
- lungimea codului.

In matricea U
m,n
=
_
_
_
_
_
_
x
0
x
1
.
.
.
x
m1
_
_
_
_
_
_
care cont ine pe coloane toate elementele spat iului
liniar Z
m
2
, vom nota cu u
i
(0 i m1) coloanele care reprezinta baza (naturala)
a lui Z
m
2
. Deci, orice coloana w
j
, 0 j n 1 din Z
m
2
se poate scrie
w
j
=
m1

i=0
t
ij
u
i
, t
ij
{0, 1}.
Orice cuvant v Z
n
2
poate considerat indicatorul unei mult imi de cuvinte din Z
m
2
:
acele coloane din U care corespund pozit iilor din v unde se aa valoarea 1.
Exemplul 6.4 Pentru orice j = 0, . . . , n 1, cuvantul e
j
= 00 . . . 010 . . . 0 cu 1 pe
pozit ia j corespunde coloanei cuvantului de pe coloana j din U;
Cuvantul 1 = 11 . . . 1 corespunde ntregului spat iu Z
m
2
.
Propozit ia 6.1
e
j
=
m1

i=0
[x
i
+ (1 + t
ij
)1] , j, 0 j 2
m
1.
Demonstrat ie: Sa aratamnt ai ca x
i
+(1+t
ij
)1 reprezint a indicatorul acelor coloane
din U care au aceeasi componenta i ca si coloana w
j
.

Intr-adevar:
1. Daca t
ij
= 1, atunci x
i
+ (1 + t
ij
)1 = x
i
+ (1 + 1)1 = x
i
care este indicatorul
mult imii coloanelor cu 1 (ca si w
j
) pe linia i.
6.3. ALGORITM ALGEBRIC DE DECODIFICARE MAJORITAR

A 67
2. Daca t
ij
= 0, atunci x
i
+(1 +t
ij
)1 = x
i
+1 care are componentele lui x
i
cu 0
si 1 permutate, ind deci indicatorul mult imii coloanelor care au 0 (ca si w
j
)
pe linia i.
Cuvantul
m1

i=0
[x
i
+ (1 + t
ij
)1] reprezint a indicatorul mult imii acelor coloane din ma-
tricea U care au toate componentele egale cu cele ale coloanei w
j
. Cum coloanele
matricii U sunt distincte, aceasta mult ime este chiar {w
j
}, al carei indicator este e
j
.
2
Fie mesajul de informat ie a
1
a
2
. . . a
k
Z
k
2
. Ele se codica cu ajutorul (2
m
, k) -
codului Reed - Muller n cuvantul - cod
f = (f
0
, f
1
, . . . , f
n1
) =
a
1
1 + a
2
x
0
+ . . . + a
m+1
x
m1
+ a
m+2
x
0
x
1
+ . . . + a
k
x
mr
x
mr+1
. . . x
m1
.
Putem enunt a acum rezultatul principal pe baza caruia se construieste algoritmul
algebric de decodicare majoritara al codurilor R M.
Teorema 6.2 Pentru ecare componenta a
s
din mesajul de informat ie care se n-
mult este - la codicare - cu un produs de forma x
i
1
x
i
2
. . . x
ir
, exista 2
mr
sume
disjuncte (cu termeni diferit i) cont inand ecare 2
r
componente ale cuvantului - cod
corespunzator f = f
0
f
1
. . . f
n1
, care sunt toate egale cu a
s
.
Demonstrat ie: T inand cont de Propozit ia 6.1 si de faptul ca e
0
, e
1
, . . . , e
n1
consti-
tuie de asemenea o baza pentru Z
n
2
, putem scrie:
f = (f
0
, f
1
, . . . , f
n1
) =
n1

j=0
f
j
e
j
=
n1

j=0
f
j
m1

i=0
[x
i
+ (1 + t
ij
)1].
Prin urmare, ca un produs de forma x
i
1
. . . x
iu
sa e n aceasta suma, trebuie ca
t
ij
= 0 pentru i {i
1
, i
2
. . . , i
u
}. Daca notam
C(i
1
, . . . , i
j
) = {p| p =
m1

i=0
t
ip
2
i
, t
ip
= 0 daca i {i
1
, . . . , i
j
}} =
= {p| p = t
i
1
p
2
i
1
+ t
i
2
p
2
i
2
+ . . . + t
i
j
p
2
i
j
, t
ip
{0, 1}},
vom avea
f = (f
0
, f
1
, . . . , f
n1
) =

i
1
<i
2
<...<i
u
_
_

jC(i
1
,...,i
u
)
f
j
_
_
x
i
1
x
i
2
. . . x
iu
Pe de-alta parte,
f = (f
0
, . . . , f
n1
) = a
1
1+a
2
x
0
+. . .+a
m+1
x
m1
+a
m+2
x
0
x
1
+. . .+a
k
x
mr
. . . x
m1
.
Prin identicare, rezulta ca elementul a
s
, coecient al produsului x
i
1
x
i
2
. . . x
ir
este
a
s
=

jC(i
1
,...,ir)
f
j
(1)
Fie z {i
1
, . . . , i
r
}. Deoarece baza codului RM(r, m) nu cont ine monoame de
forma x
i
1
. . . x
ir
x
i
r+1
, vom obt ine prin codicare
68 PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER

jC(i
1
,...,i
r
,z)
f
j
= 0 (2)

Insa, C(i
1
, . . . , i
r
, z) = C(i
1
, . . . , i
r
) [C(i
1
, . . . , i
r
) + 2
z
]
unde s-a notat C + = {x + | x C}.

Intr-adev ar, putem scrie
C(i
1
, . . . , i
r
, z) = {j| j = t
i
1
j
2
i
1
+ . . . + t
i
r
j
2
i
r
+ t
zj
2
z
} =
= {j| j = t
i
1
j
2
i
1
+ . . . + t
i
r
j
2
i
r
} {j| j = t
i
1
j
2
i
1
+ . . . + t
i
r
j
2
i
r
+ 2
z
} =
= C(i
1
, . . . , i
r
) [C(i
1
, . . . , i
r
) + 2
z
],
cele doua mult imi ale reuniunii ind disjuncte.
Deci relat ia (2) se scrie

jC(i
1
,...,ir)
f
j
+

jC(i
1
,...,ir)+2
z
f
j
= 0 si - t inand cont de (1),
avem
a
s
+

jC(i
1
,...,ir)+2
z
f
j
= 0 (3)
Din (1) si (3) rezulta urmatoarea armat ie: daca m = r +1, pentru orice simbol de
informat ie a
s
nmult it la codicare cu un produs de forma x
i
1
. . . x
i
r
exista 2
mr
= 2
sume disjuncte ((1) si (3)), ecare de cate 2
r
componente ale lui f.
Aceste doua relat ii se numesc relat ii de determinare a componentei a
s
.
Fie acum t
1
, t
2
{i
1
, . . . , i
r
}. Deoarece baza codului nu are produse de forma
x
i
1
. . . x
i
r
x
i
r+1
x
i
r+2
, vom avea

jC(i
1
,...,ir,t
1
,t
2
)
f
j
= 0. (4)
Dar C(i
1
, . . . , i
r
, t
1
, t
2
) = C(i
1
, . . . , i
r
) [C(i
1
, . . . , i
r
) + 2
t
1
] [C(i
1
, . . . , i
r
) + 2
t
2
]
[C(i
1
, . . . , i
r
) + 2
t
1
+ 2
t
2
].
Deci (4) se descompune n

jC(i
1
,...,ir)
f
j
+

jC(i
1
,...,ir)+2
t
1
f
j
+

jC(i
1
,...,ir)+2
t
2
f
j
+

jC(i
1
,...,ir)+2
t
1+2
t
2
f
j
= 0
ceea ce, t inand cont de (1) si (3) devine a
s
+ a
s
+ a
s
+

jC(i
1
,...,ir)+2
t
1+2
t
2
f
j
= 0
deci
a
s
=

jC(i
1
,...,i
r
)+2
t
1+2
t
2
f
j
(5)
Am aratat astfel ca, daca m = r + 2, atunci exista 2
mr
= 2
2
= 4 sume ((1), de
doua ori (3) pentru t
1
respectiv t
2
, si (5)) care dau pe a
s
, ecare suma cont in and 2
r
componente ale lui f. Deci, pentru a
s
existan acest caz patru relat ii de determinare.
Teorema rezulta n continuare printr-un procedeu de induct ie nita. 2
Sa vedem cum se foloseste Teorema 6.2 la decodicarea majoritara a codurilor
Reed - Muller:
Dupa cum s-a vazut, pentru ecare componenta a
s
corespunzatoare unui produs
de forma x
i
1
. . . x
ir
exista 2
mr
sume disjuncte, cont in and ecare 2
r
componente ale
lui f care - n absent a erorilor - vor toate egale cu a
s
.
6.4. DECODIFICAREA CODURILOR RM(1, M) 69
Deoarece sumele sunt disjuncte (deci termenii lor sunt elemente diferite ale
cuvantului - cod), orice eroare va afecta o singura relat ie de determinare a lui a
s
.
Prin urmare, daca apar n transmiterea cuvantului - cod f cel mult 2
mr1
1 erori
independente, putem determina - prin majoritate - pe a
s
, identic andu-l cu valoarea
a jumatate plus unu din relat iile de determinare corespunzatoare.
Dupa ce se determina n acest mod coecient ii tuturor produselor x
i
1
. . . x
ir
, se
scade din vectorul recept ionat combinat ia liniara
a
p
x
0
. . . x
r1
+ . . . + a
k
x
mr
. . . x
m1
.

In acest fel problema se reduce la decodicarea ntr-un cod de ordin r 1 si lungime


2
m
; procedeul este similar, ind determinate aici componentele de informat ie care
se codica prin nmult irea cu produsele de forma x
j
1
. . . x
j
r1
, s. a. m. d.
Exemplul 6.5 Fie codul RM(2, 4). El are lungimea n = 16, ordinul r = 2, k =
1 + C
1
4
+ C
2
4
= 11 simboluri de informat ie si n k = 5 simboluri de control. Deci
este un (16, 11) - cod liniar.
Orice mesaj de informat ie (a
1
, a
2
, . . . , a
11
) Z
11
2
se codica n cuvantul
f = (f
0
, . . . , f
15
) = a
1
1+a
2
x
0
+a
3
x
1
+a
4
x
2
+a
5
x
3
+a
6
x
0
x
1
+a
7
x
0
x
2
+a
8
x
0
x
3
+
a
9
x
1
x
2
+ a
10
x
1
x
3
+ a
11
x
2
x
3
.
Sa stabilim de exemplu relat iile de determinare pentru a
9
, care se codica prin
nmult ire cu x
1
x
2
. Trebuiesc calculate mult imile:
C(1, 2) = {j| j = t
1j
2
1
+ t
2j
2
2
} = {0, 2, 4, 6}
C(1, 2) + 2
0
= {1, 3, 5, 7}
C(1, 2) + 2
3
= {8, 10, 12, 14}
C(1, 2) + 2
0
+ 2
3
= {9, 11, 13, 15}.
Deci relat iile de determinare corespunzatoare lui a
9
devin
a
9
= f
0
+ f
2
+ f
4
+ f
6
a
9
= f
1
+ f
3
+ f
5
+ f
7
a
9
= f
8
+ f
10
+ f
12
+ f
14
a
9
= f
9
+ f
11
+ f
13
+ f
15
Daca intervine o eroare n timpul transmiterii cuvantului - cod f, va afectata o
singura relat ie de determinare, celelalte trei relat ii dand valoarea corecta a lui a
9
.
Dupa ce s-a determinat valorile a
6
, a
7
, a
8
, a
9
, a
10
, a
11
, se trece la etapa a doua a
decodicarii, scazand din cuvantul recept ionat combinat ia
a
6
x
0
x
1
+ a
7
x
0
x
2
+ a
8
x
0
x
3
+ a
9
x
1
x
2
+ a
10
x
1
x
3
+ a
11
x
2
x
3
si aplicand cuvantului obt inut procedeul de corectare a erorilor pentru codul R M
de ordinul r 1 = 1.
6.4 Decodicarea codurilor RM(1, m)
Pentru cazul r = 1 se poate da si un alt algoritm de decodicare, extrem de ecient.
El foloseste transformarea Hadamard pentru aarea celui mai apropiat cuvant - cod.
Vom da init ial cateva not iuni ajutatoare.
70 PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER
Denit ia 6.3 Fie A
m,n
, B
p,q
doua matrici. Se deneste produsul Kronecker AB
ca ind matricea C
mp,nq
= [a
ij
B].
Acest produs este evident asociativ si necomutativ; el va utilizat pe larg si n alte
prelegeri.
Exemplul 6.6 Fie H =
_
1 1
1 1
_
, I
2
=
_
1 0
0 1
_
. Atunci
I
2
H =
_
_
_
_
_
1 1 0 0
1 1 0 0
0 0 1 1
0 0 1 1
_
_
_
_
_
, H I
2
=
_
_
_
_
_
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
_
_
_
_
_
.
Se considera sirul de matrici denit
H
i
m
= I
2
mi H I
2
i1, i = 1, 2, . . .
unde H este matricea (Hadamard) denita n Exemplul 6.6.
Exemplul 6.7 Fie m = 2. Atunci
H
1
2
= I
2
H I
1
= I
2
H, H
2
2
= I
1
H I
2
= H I
2
.
Exemplul 6.8 Fie m = 3. Atunci:
H
1
3
= I
4
H I
1
=
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
1 1 0 0 0 0 0 0
1 1 0 0 0 0 0 0
0 0 1 1 0 0 0 0
0 0 1 1 0 0 0 0
0 0 0 0 1 1 0 0
0 0 0 0 1 1 0 0
0 0 0 0 0 0 1 1
0 0 0 0 0 0 1 1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
,
H
2
3
= I
2
H I
2
=
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
1 0 1 0 0 0 0 0
0 1 0 1 0 0 0 0
1 0 1 0 0 0 0 0
0 1 0 1 0 0 0 0
0 0 0 0 1 0 1 0
0 0 0 0 0 1 0 1
0 0 0 0 1 0 1 0
0 0 0 0 0 1 0 1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
,
6.4. DECODIFICAREA CODURILOR RM(1, M) 71
H
3
3
= I
1
H I
4
=
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 0
0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1
1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 0
0 0 1 0 0 0 1 0
0 0 0 1 0 0 0 1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
.
Modalitatea recursiva de construct ie a codurilor RM(r, m) (Prelegerea V , sect iunea
5.2) sugereaza existent a unui algoritm similar de decodicare. Acest algoritm exista
numai pentru RM(1, m) si l prezent am far a a demonstra corectitudinea lui.
Algoritm de decodicare a codurilor RM(1, m):
Fie a Z
m
2
cuvantul recept ionat si G(1, m) matricea generatoare a codului.
1. Se nlocuieste 0 cu 1 n a; e a

noul cuvant;
2. Se calculeaza a
1
= a

H
1
m
, a
i
= a
i1
H
i
m
, 2 i m;
3. Se determina pozit ia j a celei mai mari componente (n valoare absoluta)
a lui a
m
.
Fie v(j) Z
m
2
reprezentarea binara a lui j (ncep and cu bit ii cei mai
nesemnicativi). Cuvantul decodicat este:
(1, v(j)) daca a j - a componenta a lui a
m
este pozitiva,
(0, v(j)) daca a j - a componenta a lui a
m
este negativa.
Exemplul 6.9 Fie m = 3 si G(1, 3) matricea generatoare a codului RM(1, 3). Sa
presupunem ca s-a recept ionat cuvantul a = 10101011.
Primul pas al algoritmului transform a acest cuvant n
a

= (1, 1, 1, 1, 1, 1, 1, 1). Se calculeaza apoi:


a
1
= a

H
1
3
= (0, 2, 0, 2, 0, 2, 2, 0)
a
2
= a
1
H
2
3
= (0, 4, 0, 0, 2, 2, 2, 2)
a
3
= a
2
H
3
3
= (2, 6, 2, 2, 2, 2, 2, 2).
Cea mai mare compomenta a lui a
3
este 6 pe pozit ia 1. Cum v(1) = 100 si 6 > 0,
rezulta ca a fost trimis cuvantul 1100.
Daca s-a recept ionat cuvantul a = 10001111, atunci a

= (1, 1, 1, 1, 1, 1,
1, 1) si
a
1
= a

H
1
3
= (0, 2, 2, 0, 2, 0, 2, 0),
a
2
= a
1
H
2
3
= (2, 2, 2, 2, 4, 0, 0, 0),
a
3
= a
2
H
3
3
= (2, 2, 2, 2, 6, 2, 2, 2).
Cea mai mare componenta a lui a
3
este 6 aata pe pozit ia 4. Deoarece v(4) = 001
si 6 < 0, mesajul transmis este 0001.
72 PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER
6.5 Exercit ii
6.1

In codul Hamming (15, 11) sa se decodice mesajele
111100000000000, 011101000111001.
6.2 Demonstrat i Lema 6.1.
6.3 Sa se decodice cuvantul 01111100 n RM(1, 3). Vericat i corectitudinea de-
codicarii.
6.4 Sa se decodice 0111100 n RM(2, 3).
6.5 Sa se scrie toate relat iile de determinare din codul RM(2, 4).
6.6 Aceeasi problema pentru codul RM(1, 3).
6.7 Sa se decodice 1111111011111111 n RM(2, 4).
6.8 Aratat i ca orice hiperplan L n geometria euclidiana peste Z
m
2
are drept com-
plement Z
m
2
\ L tot un hiperplan.
6.9

In codul RM(1, 3), sa se decodice cuvintele
01011110, 01100111, 00010100, 11001110.
6.10 Sa se calculeze H
i
4
pentru i = 1, 2, 3, 4.
6.11

In codul RM(1, 4), sa se decodice cuvintele:
1011011001101001, 1111000001011111.
Prelegerea 7
Alte clase de coduri elementare

Inafara codurilor Hamming si Reed - Muller se pot construi si alte clase de coduri
cu proprietat i remarcabile. Vom prezenta numai cateva astfel de coduri - nu toate
liniare - punand n evident a la ecare clasa caracteristicile sale specice.
7.1 Codurile MacDonald
Fie A
n,k
un cod liniar peste Z
2
si G matricea sa generatoare.
Vom nota cu M
k,2
k
1
o matrice care cont ine toate coloanele nenule posibile cu
k elemente care se pot construi peste Z
2
. Ordinea acestor coloane este arbitrara
dar xata. Coloana i din matricea M se va numi coloana de tip i. Pentru usurint a
notat iei se admite asert iunea ca tipul de coloana i este reprezentarea n binar a
num arului zecimal i.
Deoarece codul A
n,k
nu este inuent at de operat iile elementare efectuate asupra
coloanelor din matricea generatoare (n particular permutarea de coloane), este su-
cient sa denim acest cod indicand doar num arul coloanelor de ecare tip care intr a
n component a matricii generatoare.
Se obt ine astfel reprezentarea modulara a codului A
n,k
:
N = (n
1
, n
2
, . . . , n
2
k
1
) (1)
unde n
i
este num arul coloanelor de tip i care apar (sau nu) n matricea G,
2
k
1

i=1
n
i
= n.
Exemplul 7.1 Sa luam k = 2, n = 3 si matricea generatoare G =
_
0 1 0
1 1 1
_
Avem matricea M =
_
0 1 1
1 0 1
_
(coloanele sunt reprezentarile binare ale
numerelor 1, 2, 3).
Reprezentarea modulara a codului generat de matricea G este atunci N = (2, 0, 1)
(pentru ca n G exista doua coloane de tipul 1, nici una de tipul 2 si una de tipul
3).
73
74 PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE
Sa introducem matricea
K
2
k
1,n
= M
T
G (2)
K are drept linii toate cuvintele nenule ale codului A
n,k
.
Fie de asemenea matricea patrata simetrica:
C
2
k
1,2
k
1
= M
T
M (3)
Astfel, pentru Exemplul 7.1, K =
_
_
_
1 0 1
0 1 0
1 1 1
_
_
_, C =
_
_
_
1 1 1
0 1 0
1 0 1
_
_
_.
Teorema 7.1 O lista a ponderilor cuvintelor codului A
n,k
se obt ine nmult ind (n
R) matricea de reprezentare modulara cu matricea C:
W
2
k
1
= NC (4)
Demonstrat ie: Scriem matricea M sub forma unei matrici linie
M = (v
1
, v
2
, . . . , v
2
k
1
)
unde v
i
(1 i 2
k
1) este coloana de tip i din matricea M.
Matricea generatoare corespunzatoare reprezent arii modulare N = (n
1
, n
2
, . . . ,
n
2
k
1
) este G = (v
1
, . . . , v
1
. .
n
1
, v
2
, . . . , v
2
. .
n
2
, . . . , v
2
k
1
, . . . , v
2
k
1
. .
n
2
k
1
)
unde n
1
+n
2
+. . . +n
2
k
1
= n. Se obt ine deci
C =
_
_
_
_
_
_
v
1
v
2
.
.
.
v
2
k
1
_
_
_
_
_
_
(v
1
, . . . , v
2
k
1
) =
_
_
_
_
_
_
v
1
v
1
v
1
v
2
. . . v
1
v
2
k
1
v
2
v
1
v
2
v
2
. . . v
2
v
2
k
1
.
.
.
v
2
k
1
v
1
v
2
k
1
v
2
. . . v
2
k
1
v
2
k
1
_
_
_
_
_
_
,
unde produsele scalare sunt efectuate n Z
2
.
Acum, W = (w
1
, w
2
, . . . , w
2
k
1
) = (n
1
, n
2
, . . . , n
2
k
1
)C, nmult ire efectuata n
R.
Prin identicare rezulta w
i
= n
1
v
1
v
i
+n
2
v
2
v
i
+. . . +n
2
k
1
v
2
k
1
v
i
.
Deoarece toate produsele scalare v
j
v
i
sunt 0 sau 1, w
i
este un num ar natural.
El este chiar ponderea cuvantului cod care ocupa linia i n matricea K.

Intr-adevar,
avem
K
2
k
1,n
=
_
_
_
_
_
_
v
1
v
1
v
1
v
1
. . . v
1
v
2
k
1
v
2
v
1
v
2
v
1
. . . v
2
v
2
k
1
.
.
.
v
2
k
1
v
1
v
2
k
1
v
1
. . . v
2
k
1
v
2
k
1
_
_
_
_
_
_
,
produsele scalare ind n Z
2
.
Deci ponderea cuvantului situat pe linia i n matricea K este:
v
i
v
1
+. . . +v
i
v
1
. .
n
1
+. . . +v
i
v
2
k
1
+. . . +v
i
v
2
k
1
. .
n
2
k
1
= n
1
v
i
v
1
+. . . +n
2
k
1
v
i
v
2
k
1
.
2
Ne punem problema de a determina un cod atunci cand se da vectorul ponderilor
cuvintelor sale (deci si ponderea minima, adica distant a Hamming). Formal, din (4)
se obt ine
7.1. CODURILE MACDONALD 75
N = WC
1
(5)
nmult ire efectuata n R. Formula este adevarata numai daca demonstram ca ma-
tricea C este inversabila.

In acest sens avem:
Teorema 7.2 Matricea C este nesingulara. Inversa ei se calculeaza nlocuind n C
pe 0 cu 1 si mpart ind toate elementele cu 2
k1
.
Demonstrat ie: I: Fiecare linie (deci si coloana) din C cont ine 1 pe 2
k1
pozit ii. Doua
linii (coloane) distincte din C au n comun 1 n 2
k2
pozit ii.

Intr-adevar, liniile lui C - la care se adauga linia nul a - formeaza un spat iu liniar
cu 2
k
cuvinte binare. Sa consideram submult imea liniilor care au 1 n componentele
i si j. Ele formeaza un subspat iu liniar cu
2
k
2
2
= 2
k2
elemente deoarece, factorizand
cu acest spat iu se obt in patru clase de resturi corepunzatoare componentelor (i, j)
de forma (0, 0), (0, 1), (1, 0), (1, 1).
Pentru a arata ca 1 apare pe ecare linie din C de 2
k1
ori se rat ioneaza similar.
II:

In aceste condit ii, putem scrie
C
2
=
_
_
_
_
_
_
2
k1
2
k2
. . . 2
k2
2
k2
2
k1
. . . 2
k2
.
.
.
2
k2
2
k2
. . . 2
k1
_
_
_
_
_
_
= 2
k2
(I +J)
unde I este matricea unitate iar J este matricea patrata cu toate elementele
egale cu 1, ambele de ordin 2
k
.
Se mai observa ca CJ = 2
k1
J. Deci
I =
1
2
k1
(2C
2
2
k1
J) =
1
2
k1
(2C
2
CJ) = C
2C J
2
k1
= CC
1
.
De aici rezulta ca C este inversabila si C
1
=
1
2
k1
(2C J). 2
Exemplul 7.2 Sa luam k = 3, n = 5. Vom avea:
M =
_
_
_
0 0 0 1 1 1 1
0 1 1 0 0 1 1
1 0 1 0 1 0 1
_
_
_, C = M
T
M =
_
_
_
_
_
_
_
_
_
_
_
_
_
1 0 1 0 1 0 1
0 1 1 0 0 1 1
1 1 0 0 1 1 0
0 0 0 1 1 1 1
1 0 1 1 0 1 0
0 1 1 1 1 0 0
1 1 0 1 0 0 1
_
_
_
_
_
_
_
_
_
_
_
_
_
,
C
1
=
1
4
_
_
_
_
_
_
_
_
_
_
_
_
_
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
_
_
_
_
_
_
_
_
_
_
_
_
_
.
Daca luam codul generat de matricea G =
_
_
_
1 0 0 1 1
0 1 0 1 0
0 0 1 0 1
_
_
_, el are reprezenta-
rea modulara N = (1, 1, 0, 1, 1, 1, 0). Vectorul ponderilor cuvintelor - cod este
76 PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE
W = (2, 2, 4, 3, 3, 3, 3).

Intr-adevar, cuvintele - cod sunt liniile matricii
K =
_
_
_
_
_
_
_
_
_
_
_
_
_
0 0 1 0 1
0 1 0 1 0
0 1 1 1 1
1 0 0 1 1
1 0 1 1 0
1 1 0 0 1
1 1 1 0 0
_
_
_
_
_
_
_
_
_
_
_
_
_
.
Sa determinam acum reprezentarea modulara a unui cod liniar binar n care toate
cuvintele - cod au aceeasi pondere w (si deci distant a minima va d = w). Vom
avea prin ipoteza W = (w, w, . . . , w
. .
2
k
1
).
Dupa cum am remarcat n demonstrat ia Teoremei 7.2, 1 apare pe ecare linie
din C n 2
k1
pozit ii. Rezulta (Teorema 7.2) ca n C
1
, 1 va apare pe ecare linie
(coloana) tot n 2
k1
pozit ii, n rest ind 1. Deci
N = WC
1
= (w2
(k1)
, . . . , w2
(k1)
. .
2
k
1
)
Problema enunt at a are solut ie daca w se divide cu 2
k1
; n acest caz, reprezenta-
rea modulara este de forma N = (r, r, . . . , r
. .
2
k
1
), adica ecare tip de coloana apare n
matricea generatoare de r = w 2
(k1)
ori.
Plecand de la aceste considerente, McDonald a introdus o clasa de coduri pentru
care reprezentarea modulara este de forma 0
i
1
j
. Mai exact,
n d N
2
k
1 2
k1
(1, 1, 1, . . . , 1)
2
k
2 2
k1
1 (0, 1, 1, . . . , 1)
2
k
3 2
k1
2 (0, 0, 1, . . . , 1)
. . . . . . . . .
2
k
2
u
2
k1
2
u1
(0, . . . , 0
. .
2
u
1
, 1, . . . , 1
. .
2
k
2
u
)
Aceste coduri au proprietatea ca prezinta o distant a minima foarte apropiata de
marginea Plotkin.
Sa luam de exemplu al treilea cod din tabelul de sus. Reamintim, marginea
Plotkin este
d
nq
k1
(q 1)
q
k
1
.

In cazul codului McDonald avem q = 2, n = 2


k
3, d = 2
k1
2, deci
nq
k1
(q 1)
q
k
1
d =
(2
k
3)2
k1
2
k
1
(2
k1
2) =
2
k
2
2
k
1
< 1.
7.2. CODURI DERIVATE DIN MATRICILE HADAMARD 77
7.2 Coduri derivate din matricile Hadamard

In prelegerea anterioar a am folosit o matrice Hadamard pentru a construi un al-


goritm de decodicare al codurilor RM(1, m). De fapt matricile Hadamard pot
utilizate n mod direct la construct ia de coduri.
Denit ia 7.1 Se numeste matrice Hadamard H
n
o matrice patrata de ordinul n cu
elemente 1 si 1, ale carei linii sunt ortogonale doua cate doua.
Teorema 7.3 Fiind data matricea Hadamard H
n
, (n par) se poate construi un cod
de distant a minima d =
n
2
, format din 2n cuvinte de lungime n.
Demonstrat ie:

In matricea H
n
vomnlocui 1 cu 0 si 1 cu 1. Vom nota v
1
, v
2
, . . . , v
n
vectorii care formeaza liniile noii matrici. Codul cautat este
C = {v
1
, v
2
, . . . , v
n
, v
1
, v
2
, . . . , v
n
}.
Acest cod (care nu este neaparat liniar) are 2n cuvinte de lungime n. Mai trebuie
aratat ca distant a sa minima este n/2.
Deoarece v si v difera n toate componentele, distant a Hamming dintre ele este
n. Pe de-alta parte, din proprietatea matricilor Hadamard rezulta
v
i
(v
j
) = 0, i, j {1, . . . , n}, i = j.
Pentru ca aceasta egalitate sa e adevarata, este necesar ca v
i
si v
j
sa coincida n
jumatate din componente si sa difere n cealalta jumatate (atent ie, calculele se fac
n R, nu n Z
2
!). Rezulta ca distant a Hamming dintre cele doua cuvinte este
n
2
.
Deci d =
n
2
. 2
Pentru n = 32 un astfel de cod a fost folosit de programul spat ial Mariner.
Teorema 7.4 Daca H
n
este matrice Hadamard, atunci H
2n
=
_
H
n
H
n
H
n
H
n
_
este matrice Hadamard.
Demonstrat ie: Evident, H
2n
este o matrice 2n 2n cu elemente 1. Mai trebuie
aratat ca liniile sale sunt ortogonale doua cate doua.
Avem: [v
i
, v
i
][v
i
, v
i
] = v
i
v
i
v
i
v
i
= n n = 0.
De asemenea, pentru i = j, [v
i
, v
i
][v
j
, v
j
] = [v
i
, v
j
] [v
i
, v
j
] = 0 0 = 0. 2
Pe baza acestei teoreme, putem construi coduri Hadamard a caror distant a sa
e oricat de mare. Este sucient sa gasim o matrice Hadamard init iala, pe care
(folosind Teorema 7.4) sa o dilatam ulterior cat este nevoie. O astfel de matrice
Hadamard init iala a fost data n Prelegerea anterioar a: ea este
H
2
=
_
1 1
1 1
_
.
Pentru construct ia altor matrici (si coduri) Hadamard mai generale au fost elaborate
diverse tehnici. Una din cele mai cunoscute este cea a lui Paley si Hall.
78 PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE
Denit ia 7.2 O matrice patrata C de ordin n cu 0 pe diagonala principala si 1
nafara ei, astfel ca CC
T
= (n1)I
n
se numeste matrice de conjunctura (conference
matrix).
Exemplul 7.3 Matricile
_
0 1
1 0
_
,
_
_
_
_
_
0 1 1 1
1 0 1 1
1 1 0 1
1 1 1 0
_
_
_
_
_
sunt matrici de conjunctura.
Fie q = p
r
cu p numar prim impar, r 1. Pe Z
q
denim funct ia astfel:
(x) =
_

_
0 daca x = 0
1 daca x este un patrat nenul
1 n rest
Vom nota elementele lui Z
q
cu a
0
, a
1
, . . . , a
q1
unde a
0
= 0, cu I
n
matricea unitate
de ordin n si cu J
n
matricea patrata de ordin n cu toate elementele egale cu 1.
Teorema 7.5 Matricea Paley S
q
= (s
ij
) de ordin q denita prin s
ij
= (a
i
a
j
),
0 i, j < q are urmatoarele proprietat i:
1. S
q
J
q
= J
q
S
q
= 0;
2. S
q
S
T
q
= qI
q
J
q
;
3. S
T
q
= (1)
q1
2
S
q
.
Demonstrat ie: Este lasat a ca exercit iu.
Exemplul 7.4 Pentru q = 3, matricea Paley este S
3
=
_
_
_
0 1 1
1 0 1
1 1 0
_
_
_,
iar pentru q = 5, S
5
=
_
_
_
_
_
_
_
_
0 1 1 1 1
1 0 1 1 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 0
_
_
_
_
_
_
_
_
.
De remarcat ca S
T
3
= S
3
, S
T
5
= S
5
.
Teorema 7.6 Daca q = p
r
(p numar prim impar, r 1) astfel ncat q 3 (mod 4),
atunci exista o matrice Hadamard de ordin q + 1.
Demonstrat ie: Din ipoteza si Teorema 7.5, exista o matrice Paley S de ordin q.
Construim matricea C de ordin q + 1 astfel:
C =
_
_
_
_
_
0 1 . . . 1
1
1 S
1
_
_
_
_
_
7.3. CODURI PRODUS 79
Se verica faptul ca C este o matrice de conjunctura cu proprietatea C
T
= C
(q 3 mod 4 conduce la relat ia S
T
= S). Fie H = I
q+1
+C.
Avem HH
T
= (I
q+1
+ C)(I
q+1
+ C)
T
= (I
q+1
+ C)(I
q+1
+ C
T
) = I
q+1
+ C +
C
T
+CC
T
= I
q+1
+qI
q+1
= (q +1)I
q+1
, deci orice doua linii distincte ale lui H sunt
ortogonale. Rezulta ca H este matrice Hadamard de ordin q + 1. 2
Plecand de la matricile Paley se pot construi alte coduri Hadamard.
Fie S o matrice Paley de ordin n (conform Teoremei 7.5). Un cod Hadamard de
ordin n poate denit cu 0, 1 si cu liniile matricilor
1
2
(S+I
n
+J
n
),
1
2
(S+I
n
+J
n
).
Acesta este un cod care cont ine 2n + 2 cuvinte - cod de lungime n si are distant a
d =
n 1
2
.
Exemplul 7.5 Pentru n = 9 = 3
2
, codul este format din cele 20 cuvinte care
formeaza linile matricii
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0 0 0 0 0 0 0 0 0
J P
2
P
P J P
2
P
2
P J
I J P
2
J P
J P I J P
2
J P
2
J P I
1 1 1 1 1 1 1 1 1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
unde P =
_
_
_
0 1 0
0 0 1
1 0 0
_
_
_, iar I si J sunt matricile unitate, respectiv cu toate ele-
mentele egale cu 1, ambele de ordin 3.
7.3 Coduri produs
Sa consideram un cod de lungime n = n
1
n
2
.

In loc sa scriem cuvintele sale sub
forma de linii de lungime n, le putem reprezenta ca matrici cu n
1
linii si n
2
coloane.
Un mod simplu de a realiza acest lucru este de a scrie cuvantul cod a = a
0
a
1
. . . a
n1
ca o matrice X = [x
ij
], 0 i n
1
1, 0 j n
2
1, unde x
ij
= a
in
2
+j
. Aceasta
va numita scrierea canonica.
Denit ia 7.3 Fie A
1
, A
2
doua coduri liniare de lungime n
1
respectiv n
2
. Se cons-
truieste codul A de lungime n
1
n
2
ca mai sus (cu scrierea canonica). Spunem ca
A = A
1
A
2
este codul produs al lui A
1
cu A
2
daca si numai daca A consta din
toate cuvintele - cod n care reprezentarea matriciala verica proprietat ile:
Fiecare coloana a unei matrici este un cuvant - cod din A
1
;
Fiecare linie a unei matrici este un cuvant - cod din A
2
.
De remarcat ca prin permutarea lui A
1
cu A
2
se obt ine un cod echivalent.
80 PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE
Teorema 7.7 Daca A
1
este un (n
1
, k
1
) - cod liniar si A
2
este un (n
2
, k
2
) - cod
liniar, atunci A
1
A
2
este un (n
1
n
2
, k
1
k
2
) - cod liniar.
Demonstrat ie: Fie G
i
, i = 1, 2 matricile generatoare ale celor doua coduri, pe care
le presupunem n forma esalonat canonica, deci G
i
= [I
k
i
B
n
i
k
i
]. Vom nota cu
g
(1)
i
(1 i k
1
) respectiv g
(2)
i
(1 i k
2
) liniile celor doua matrici.
Denim matricile X
ij
(1 i < k
1
, 1 j < k
2
) de dimensiune n
1
n
2
, astfel:
Primele k
1
linii sunt 0 cu except ia liniei i care este g
(2)
j
;
Primele k
2
coloane sunt 0 cu except ia coloanei j care este g
(1)
i
T
.
Pentru k > k
1
, linia k este g
(1)
ik
g
(2)
j
;
Pentru k > k
2
, coloana k este g
(2)
jk
g
(1)
i
T
.
Schematic, o astfel de matrice arata astfel:
X
ij
=
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0 . . . 0 0 . . . 0
. . . . . . . . . . . . . . . . . .
1 x x x
. . . . . . . . . . . . . . . . . .
0 . . . 0 0 . . . 0
0 x 0
. . . x . . . X
0 x 0
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
Evident, X
ij
reprezinta un cuvant - cod din A
1
A
2
si orice alt cuvant - cod este
o combinat ie liniara formata din aceste matrici. Deci X
ij
, 1 i k
1
, 1 j k
2
formeaza o baza a codului A
1
A
2
.
Submatricile formate din primele k
1
linii si k
2
coloane din X
ij
formeaza mult imea
mesajelor de informat ie. 2
Exemplul 7.6 Sa consideram codurile liniare binare A
1
, A
2
generate de matricile
G
1
=
_
1 0 1
0 1 1
_
respectiv G
2
=
_
1 0 1
0 1 0
_
.
Deci n
1
= n
2
= 3, k
1
= k
2
= 2. Sunt 4 matrici X
ij
, toate de dimensiune 3 3:
X
11
=
_
_
_
1 0 1
0 0 0
1 0 1
_
_
_ X
12
=
_
_
_
0 1 0
0 0 0
0 1 0
_
_
_
X
21
=
_
_
_
0 0 0
1 0 1
1 0 1
_
_
_ X
22
=
_
_
_
0 0 0
0 1 0
0 1 0
_
_
_.
Sa consideram mesajul de informat ie 1011 pe care l asezam sub forma unei matrici
2 2 :
_
1 0
1 1
_
. Matricea - cod va
7.3. CODURI PRODUS 81
X
11
+X
21
+X
22
=
_
_
_
1 0 1
0 0 0
1 0 1
_
_
_+
_
_
_
0 0 0
1 0 1
1 0 1
_
_
_+
_
_
_
0 0 0
0 1 0
0 1 0
_
_
_ =
_
_
_
1 0 1
1 1 1
0 1 0
_
_
_.
Se observa ca liniile sunt cuvinte - cod din A
2
, iar coloanele sunt cuvinte - cod
din A
1
.
Propozit ia 7.1 Matricea generatoare a codului produs A
1
A
2
este G
1
G
2
unde
G
1
si G
2
sunt matricile generatoare ale celor doua coduri, iar

este produsul
Kronecker.
Demonstrat ie: Fie (n
1
, k
1
), (n
2
, k
2
) cele doua coduri, cu matricile generatoare G
1
respectiv G
2
, si sa consideram matricea G
1
G
2
obt inuta prin produsul Kronecker
(Prelegerea 6, Denit ia 6.3). Daca se ia linia k
2
i + j din aceasta matrice si se
reprezint a sub forma canonica ca o matrice n
1
n
2
, se obt ine exact matricea X
ij
din
construct ia Teoremei 7.7. Cum X
ij
reprezinta o baza pentru codul A
1
A
2
, rezulta
ca G
1
G
2
este matricea sa generatoare.
Din acest motiv, n primii ani, codurile produs erau numite si coduri Kronecker.
2
Exemplul 7.7 Matricea generatoare a codului produs A
1
A
2
din Exemplul 7.6
este:
G = G
1
G
2
=
_
G
2
0 G
2
0 G
2
G
2
_
=
_
_
_
_
_
1 0 1 0 0 0 1 0 1
0 1 0 0 0 0 0 1 0
0 0 0 1 0 1 1 0 1
0 0 0 0 1 0 0 1 0
_
_
_
_
_
.
Se observa imediat ca prin plierea celor patru linii din aceasta matrice se obt in
matricile X
ij
din Exemplul 7.6.
Sa consideram din nou mesajul de informat ie 1011. Prin nmult irea cu matricea
G se ajunge la cuvantul - cod 101111010 care - scris ca o matrice 3 3 - coincide
cu rezultatul din Exemplul 7.6.
Teorema 7.8 Distant a codului A
1
A
2
este egala cu d
1
d
2
(d
1
si d
2
ind distant ele
codurilor A
1
respectiv A
2
).
Demonstrat ie: Daca A
i
are lungimea n
i
(i = 1, 2), sa consideram o matrice X
reprezent and un cuvant - cod nenul din A
1
A
2
(am vazut ca asemenea cuvinte
exista). Putem gasi deci cel put in o linie cu minim d
2
elemente nenule. Fiecare
astfel de element se aa pe o coloana cu minim d
1
elemente nenule; deci matricea
X are minim d
1
d
2
elemente nenule. 2
Exemplul 7.8 Cele doua coduri din Exemplul 7.6 au d
1
= d
2
= 2 (se gasesc imediat
cuvintele - cod si se observa ca ponderea lor nenula minima este 2). Deci codul produs
va avea distant a d = 2 2 = 4. De remarcat ca - desi A
1
si A
2
nu pot corecta erori,
A
1
A
2
este capabil sa corecteze o eroare.
Codurile produs - desi cunoscute de la nceputul anilor

60, au devenit foarte impor-
tante odata cu folosirea lor n transmisiile telefonice far a r si codicarea informat iei
pe CD - uri. Vom relua ulterior - pe larg - analiza acestor coduri.
82 PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE
7.4 Coduri optimal maximale
Fie mult imea A Z
n
q
. Se numeste diametrul mult imii A num arul
d(A) = min
x,yA
d(x, y), x = y.
De remarcat ca, daca A este cod liniar, atunci d(A) este chiar distant a minima a
codului.
Denit ia 7.4 A este mult ime optimala de distant a minima d daca:
d(A) = d;
x Z
n
q
\ A, d(A {x}) < d.
Exemplul 7.9

In Z
6
2
, urmatoarele mult imi sunt optimale de distant a minima 3:
A = {000000, 010101, 101010, 111111}
B = {000000, 101010, 011001, 000111, 110100, 111111}
Denit ia 7.5 Se numeste mult ime optimala cardinal maximala de distant a d o
mult ime optimala cu un numar maxim de elemente.
Vom nota acest num ar cu a(n, d).
Exemplul 7.10 Mult imile date n Exemplul 7.9 sunt optimale dar nu cardinal ma-
ximale pentru distant a 3. O mult ime optimala cardinal maximala din Z
6
2
pentru
d = 3 este:
C = {000000, 001011, 010101, 011110, 100110, 101101, 110011, 111000},
deci a(6, 3) = 8.
Denit ia 7.6 Un cod liniar A de distant a d este optimal daca A este mult ime
optimala cardinal maximala de distant a d.
Spunem ca un astfel de cod satisface condit ia max - min, deoarece are un numar
maxim de vectori aat i la distant a minima d.
Nu se cunosc algoritmi de construct ie a unor astfel de coduri.

In aceasta sect iune
vom da cateva condit ii necesare pentru codurile optimale.
Teorema 7.9

Intr-un cod optimal maximal A de distant a minima d (d < n),
a(n, d) q a(n 1, d).
Demonstrat ie: Putem presupune - far a a micsora generalitatea - ca primul caracter
al codului este caracter de informat ie.
Fie K mult imea cuvintelor din A care au 0 pe prima componenta. Cum pe prima
componenta pot apare q caractere distincte, va rezulta
card(K) =
a(n, d)
q
.
7.4. CODURI OPTIMAL MAXIMALE 83
K este un cod cu distant a d n care toate cuvintele au 0 pe prima pozit ie. Daca
eliminam aceasta component a, se obt ine un cod din Z
n1
q
, tot de distant a d, cu
acelasi numar de cuvinte. Acest cod nu este neaparat optim, deci condit ia va
a(n 1, d)
a(n, d)
q
Mai trebuie facut a observat ia ca a(n 1, n 1) = q pentru ca un cod cu repetit ie
este optimal maximal de distant a minima egala cu lungimea cuvintelor - cod. 2
Corolarul 7.1 Daca j d, atunci q
nj
a(j, d) a(n, d).
Demonstrat ie: Din Teorema 7.9 rezulta inegalitat ile:
q a(n 1, d) a(n, d)
q a(n 2, d) a(n 1, d)
. . .
q a(n i, d) a(n i + 1, d)
Prin nmult ire se obt ine q
i
a(ni, d) a(n, d), dupa care se face notat ia ni = j.
2
Teorema 7.10 Fie A un cod liniar optimal maximal de distant a minima d.
Daca n <
qd
q 1
, atunci numarul simbolurilor de informat ie verica inegalitatea
k n
dq 1
q 1
+ 1 +log
q
d.
Demonstrat ie: Deoarece A este cod liniar, numarul de simboluri de informat ie va
dat de relat ia a(n, d) = q
k
.
Rescriem inegalitatea lui Plotkin sub forma d(q
k
1) nq
k1
(q 1), sau
q
k1
(dq +n nq) n.
Deoarece - din ipoteza - dq +n nq > 0, avem q
k

dq
dq +n nq
, sau
a(n, d)
dq
dq +n nq
.
Fie
dq 1
q 1
= i +f unde i =
_
dq 1
q 1
_
, f =
_
dq 1
q 1
_
.
Deci qd 1 = (q 1)i + (q 1)f si avem
a(i, d)
dq
dq +i iq
=
dq
dq (q 1)i
=
dq
1 + (q 1)f
.
Folosind Corolarul 7.1 si i d (deoarece
_
dq 1
q 1
_
=
_
d +
d 1
q 1
_
d), rezulta
a(n, d) q
ni
a(i, d)
q
n
dq1
q1
+f
1 + (q 1)f
qd
Dezvolt and n serie Taylor, q
f
1 + (q 1)f (f < 1) si deci
a(n, d) q
n
dq1
q1
qd,
sau q
k
q
n
dq1
q1
qd, de unde - prin logaritmare - se obt ine relat ia din enunt . 2
84 PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE
7.5 Exercit ii
7.1 Sa se construiasca vectorul ponderilor pentru codurile Hamming (7, 4) si
RM(1, 3).
7.2 Folosind vectorul ponderilor, sa se construiasca numaratorul de ponderi al unui
cod liniar.
7.3 Sa se construiasca matricile generatoare si matricile K pentru codurile
McDonald cu k = 2, 3, 4.
7.4 Sa se construiasca matricile si codurile Hadamard pentru n = 4 si n = 8.
7.5 Sa se arate ca daca H
n
este o matrice Hadamard, atunci H
n
H
T
n
= nI
n
.
7.6 Sa se construiasca o matrice Hadamard de ordin 12.
7.7 Sa se arate ca matricea Hadamard H
8
genereaza (8, 4) - codul Hamming binar
extins.
7.8 Sa se construiasca codurile produs pentru codul cu repetit ie de lungime n (A
1
)
si codul cu repetit ie de lungime p (A
2
).
7.9 Sa se construiasca matricea generatoare a codului produs A
1
A
2
unde A
1
= A
2
este codul Hamming (7, 4).
7.10 Aceeasi problema pentru codul RM(1, 3).
7.11 Demonstrat i Teorema 7.5.
7.12 Folosind matricile Paley, sa se construiasca codurile Hadamard de ordin 5 si
respectiv 7.
7.13 Sa se arate ca un cod binar liniar optimal maximal de distant a minima d are
cel put in 2d 1 log
2
d simboluri de control.
Prelegerea 8
Circuite liniare si extensii Galois
8.1 Circuite liniare pentru operat ii elementare

In aceasta sect iune presupunem ca toate calculele se realizeazan Z


q
(q num ar prim).
Un circuit liniar este un graf orientat, cu trei tipuri de noduri (conectori):
sumator - este un conector cu cel put in doua intr ari si o iesire. Efectul este
acela de a scoate suma modulo q a elementelor aate la intrare. Operat ia se
executa instantaneu. Sumatorul se noteaza astfel:
`
_
-
?
-
+
Multiplicator - este un conector cu o singura intrare si o iesire unde se obt ine
rezultatul nmult irii cu c Z
q
a elementului de la intrare. Operat ia se executa
(de asemenea) instantaneu. Notat ie:
`
_
- -
c
Element de nmagazinare - Este un registru buer cu o intrare si o iesire; efectul
este ntarzierea cu un tact a intrarii: elementul a Z
q
intra n momentul k si
iese n momentul k + 1. Notat ie:
- -
Aceste trei tipuri de conectori se pot grupa arbitrar - folosind eventual si noduri
obisnuite. Utilizarea practica revine la obt inerea de circuite liniare care pot realiza
automat operat ii uzuale cu polinoame: adunari, scaderi, nmult iri si mp art iri.

In cele ce urmeaza, vom identica un vector cu n + 1 componente


a = (a
0
, a
1
, . . . , a
n
)
cu polinomul de gradul n cu o variabila
a(x) = a
0
+ a
1
X + . . . + a
n
X
n
.
85
86 PRELEGEREA 8. CIRCUITE LINIARE SI EXTENSII GALOIS

In cursul transmisiei mesajului a, ordinea de prelucrare (transmisie) se face dupa


puterile descrescatoare ale lui X; deci, sensul de circulat ie a semnalelor va :
a
0
a
1
. . . a
n

8.1.1 Construct ia unor circuite liniare uzuale
A Circuit de nmult ire cu un polinom.
Fie h(X) = b
0
+b
1
X+. . .+b
n
X
n
un polinom xat si a(X) = a
0
+a
1
X+. . .+a
k
X
k
un polinom arbitrar. Coecient ii ambelor polinoame pot luat i ntr-un inel arbitrar
(din considerente pur aplicative, acesta este de obicei Z
q
, dar construct iile raman
valabile n general).
Un circuit de nmult ire cu h(X) este:
Figura 8.1:
`
_
`
_
`
_
`
_
_ _ _
- - - - - -
6 6
,
6
,
6
,
6
-
6
- -
6
-
6
-
a(X)
b
n
b
n1
b
1
b
0
+ + +
. . .
. . .
Init ial elementele de nmagazinare cont in 0; coecient ii polinomului a(X) intra
n stanga jos - dupa puterile descrescatoare ale lui X - cate unul la un tact, iar
coecient ii produsului ies n dreapta sus. Circuitul funct ioneaz a n+k+1 tact i; dupa
k +1 tact i, la intrare se introduc zerouri n cei n tact i ramasi, pna ce elementele de
nmagazinare cont in din nou numai 0.
De remarcat ca un element de nmagazinare funct ioneaz a dupa principiile unei
variabile de memorie (aducerea unei valori face sa dispara vechea valoare din locat ie).
Circuitul lucreaza dupa formula de nmult ire obisnuita:
a(X)h(X) = a
0
b
0
+(a
0
b
1
+a
1
b
0
)X +. . . +(a
k1
b
n
+a
k
b
n1
)X
k+n1
+a
k
b
n
X
n+k
Exemplul 8.1 Sa luam polinomul h(X) = X
3
5X
2
+ 2 Z[X] (vectorul core-
spunzator este h = (2, 0, 5, 1)). Circuitul de nmult ire cu h(X) va :
`
_
`
_

_

_
- - - -
6 6
6
, ,
- - -
6 6
5 2
+ +
De remarcat ca multiplicarea cu 1 se face prin arc simplu (fara conector), iar
multiplicarea cu 0 revine la suprimarea arcului.

In cazul operat iilor cu polinoame
din Z
2
[X], tot i multiplicatorii se reduc la aceste doua cazuri.
8.1. CIRCUITE LINIARE PENTRU OPERAT II ELEMENTARE 87
Daca dorim sa nmult im h(X) cu polinomul a(X) = 2X + 8 (vector a = (8, 2)),
circuitul liniar va funct iona 5 tact i (pana cand toate elementele de nmagazinare
revin la 0); comportarea sa este relatata de tabelul:
Nr. tact Intrare

Inmagazinare Iesire
0 0 0 0 0 0
1 2 0 0 0 2
2 8 2 0 0 2
3 0 8 2 0 40
4 0 0 8 2 4
5 0 0 0 8 16
6 0 0 0 0 0
Deci, polinomul produs este 2X
4
2X
3
40X
2
+ 4X + 16; sau - n termeni de
vectori, (16, 4, 40, 2, 2).
Aceeasi operat ie de nmult ire este realizata si de circuitul liniar:
Figura 8.2:

_

_

_

_
`
_
`
_
`
_
`
_
`
_
- -
6 6 6 6 6
, , , ,
6
- - - - - - - - -
6 6 6 6
b
0
b
1
b
2
b
n1
b
n
+ + + +
. . .
. . .
Exemplul 8.2 Circuitul liniar care realizeaza nmult irea cu polinomul
h(X) = 1 + X + X
4
peste Z
2
este

_

_
-
6
6
,
- - - - - - -
6
,
+ +
deoarece vectorul corespunzator polinomului h(X) este h = (1, 1, 0, 0, 1).
B. Fie h(X) = h
0
+ h
1
X + . . . + h
n
X
n
si g(X) = g
0
+ g
1
X + . . . + g
n
X
n
doua
polinoame xate. Un circuit liniar care sa realizeze operat ia
a(X)h(X) + b(X)g(X)
pentru doua polinoame arbitrare a(X), b(X), este:
88 PRELEGEREA 8. CIRCUITE LINIARE SI EXTENSII GALOIS

_

_

_

_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
- -
?
- -
6 6
,
6
,
6
,
6 6 6 6
? ? ?
, , ,
? ? ? ?
- - - - - - - -
b(X)
a(X)
g
0
g
1
g
n1
g
n
h
0
h
1
h
n1
h
n
+ + + +
. . .
. . .
. . .
De remarcat ca polinoamele g(X) si h(X) pot avea grade diferite; n acest caz se
alege n ca ind gradul cel mai mare si se completeaza celalalt polinom cu coecient i
nuli pan a la gradul n.
Exemplul 8.3 Fie polinoamele g(X) = 1+X
2
, h(X) = X+X
2
+X
4
cu coecient i
n Z
2
; deci vectorii corespunzatori vor h = (0, 1, 1, 0, 1), g = (1, 0, 1, 0, 0). Cir-
cuitul liniar care realizeaza expresia a(X)h(X) + b(X)g(X) este:

_

_

_
-
?
?
,
- - - - - - - -
-
6 6 6
, ,
b(X)
a(X)
+ + +
C. Circuit liniar de mpart ire cu un polinom.
Fie polinomul (xat) g(X) = g
0
+ g
1
X + . . . + g
k
X
k
, g
k
= 0. Un circuit liniar
care realizeaza mp art irea unui polinom arbitrar a(X) = a
0
+ a
1
X + . . . + a
n
X
n
la
g(X) este:
Figura 8.3:

_

_

_

_
- - - - - - - -
6
? ?
,
?
,
6

?
-
? ?
g
0
g
1
g
k1 g
1
k
a(X) + + +
. . .
. . .
Init ial, toate cele k elemente de nmagazinare cont in 0. La intrare, timp de
n + 1 tact i se introduc coecient ii polinomului a(X) (n ordinea descrescatoare a
puterilor).

In primii k tact i, iesirea va scoate numai 0. Primul coecient nenul
apare la iesire la momentul k +1 si este a
n
g
1
k
(operat ii n inelul coecient ilor celor
doua polinoame) - coecientul termenului X
nk
din cat.
Pentru ecare coecient q
j
al catului, polinomul q
j
g(X) trebuie scazut din dem-
part it; aceasta operat ie se realizeaza printr-un procedeu de conexiune invers a (feed-
back).
8.1. CIRCUITE LINIARE PENTRU OPERAT II ELEMENTARE 89
Dupa momentul n+1 (cand au intrat tot i coecient ii polinomului a(X)) la iesire
s-a obt inut catul q(X) al mp art irii la g(X), iar n elementele de nmagazinare se
gasesc coecient ii restului.
Exemplul 8.4 Un circuit liniar de mpart ire (peste Q) la polinomul g(X) = 2 +X
este:
`
_

_
- - -
6
-
?
2
+
Exemplul 8.5 Fie polinomul g(X) = 1 + X
2
+ X
5
+ X
6
Z
2
[X]. Circuitul care
realizeaza mpart irea este:

_

_

_
- - - - - - - - -
6

? ?
,
?
, -
+ + +
Sa luam polinomul a(X) = 1 + X
4
+ X
5
+ X
7
+ X
9
+ X
10
pe care sa-l mpart im n
Z
2
la polinomul g(X). Se obt ine catul X
4
+ X si restul X
5
+ X
3
+ X + 1.
Circuitul funct ioneaza 11 tact i. Etapele prin care trece n efectuarea acestei
mpart iri sunt reprezentate de tabelul urmator:
Nr. tact Intrare Elemente de nmagazinare Iesire
0 0 0 0 0 0 0
1 1 1 0 0 0 0 0 0
2 1 1 1 0 0 0 0 0
3 0 0 1 1 0 0 0 0
4 1 1 0 1 1 0 0 0
5 0 0 1 0 1 1 0 0
6 1 1 0 1 0 1 1 0
7 1 0 1 1 1 0 0 1
8 0 0 0 1 1 1 0 0
9 0 0 0 0 1 1 1 0
10 0 1 0 1 0 1 0 1
11 1 1 1 0 1 0 1 0
Vectorii (1, 1, 0, 1, 0, 1) - de pe ultima linie si (0, 1, 0, 0, 1) - scris mai gros si n
ordine inversa pe ultima coloana - reprezinta restul 1 +X +X
3
+X
5
respectiv catul
X + X
4
mpart irii lui a(X) la g(X).
90 PRELEGEREA 8. CIRCUITE LINIARE SI EXTENSII GALOIS
D. Circuitul liniar are realizeaza nmult irea cu polinomul h(X) = h
0
+ h
1
X +
. . . + h
n
X
n
urmata de mp art irea la polinomul g(X) = g
0
+ g
1
X + . . . + g
n
X
n
este:
`
_

_

_

_

_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
- -
6 6 6
,
6
,
6 6 6 6
- - - - - - - -
6
6
-
?
,
? ?
,
? ? ?
g
0
g
1
g
n1 g
1
n
+ + + +
h
0
h
1
h
n1
h
n
. . .
. . .
. . .
Cand gradele polinoamelor sunt diferite, se construieste nt ai circuitul liniar co-
respunzator polinomului de grad maxim, dupa care se completeaza cu circuitul cores-
punzator celuilalt polinom.
Exemplul 8.6 Sa luam polinoamele h(X) = 1 + X + X
3
, g(X) = 2 + X + X
4
cu
coecient i n Z
3
. Circuitul liniar care realizeaza nmult irea cu h(X) si mpart irea la
g(X) este

_

_

_
`
_
-
6 6
,
6
,
- - - - - - -
6

?
-
?
,
?
2
+ + +
Deoarece calculele se fac n Z
3
, 2 = 1, 1 = 2, si 1
1
= 1.
Pentru intrarea a(X) = 1 +2X +2X
2
, comportarea circuitului este urmatoarea:
0 0 0 0
2 2 2 0 2
2 1 2 2 2 2
1 0 0 2 0 2
ceea ce corespunde catului 2 + 2X si restului 2X
2
.
De remarcat ca primul coecient (de grad maxim) al catului este scos de circuit
cu o ntarziere de grad(g(X)) grad(f(X)) = 1 tact.
8.2. EXTENSII GALOIS 91
Exemplul 8.7 Un circuit liniar pentru nmult irea cu h(X) = 1 X
2
+ 2X
4
si
mpart irea la g(X) = 3 2X + X
2
, ambele din Z[X], este:

_

_

_
`
_
`
_
`
_
`
_
-
6 6
,
6
- - - - - -
6

?
, -
?
? ?
6
3 2
1 2
6
-
+ + +
Fie intrarea a(X) = 2 + X; comportarea circuitului este:
0 0 0 0
1 1 0 7 4 2
2 2 1 2 7 0
0 0 2 22 12 7
0 0 0 34 2 12
deci catul este 2X
3
7X 12 iar restul 34 2X.
De remarcat ca circuitul este lasat sa funct ioneze grad(h(X)) grad(f(X)) = 2
tact i n plus (prin introducerea de zero-uri), pentru golirea elementelor de nmagazi-
nare necontrolate de mpart itor.
8.2 Extensii Galois
Fie q un numar prim si g(X) = g
0
+ g
1
X + . . . + g
n
X
n
Z
q
[X]. Vom considera
algebra polinoamelor modulo g(X).
Fiind dat un polinom oarecare din Z
q
[X], clasa sa de resturi modulo g(X) se
gaseste mp art ind polinomul respectiv cu g(X). Restul mpart irii specica clasa de
resturi respectiva.
Doua polinoame carora le corespunde acelasi rest la mpart irea cu g(X) sunt
echivalente, intr and n aceeasi clasa de resturi modulo g(X).
Fiecare clasa de resturi modulo g(X) se reprezint a prin polinomul (unic) de grad
strict mai mic decat n, care apart ine clasei respective. Tot i acesti reprezentant i pot
considerat i ca polinoame de gradul n 1, av and eventual coecient i nuli.
Vom nota cu {f(X)} clasa de resturi a polinomului f(X) modulo g(X). Deci
f(X) va corespunde unui vector (distinct) de lungime n, cu componente din Z
q
(prin
completare eventual cu zerouri).
Operat iile n algebra claselor de resturi sunt:
{a(X)} +{b(X)} = {a(X) + b(X)}
c{a(X)} = {ca(X)}, c Z
q
{a(X)}{b(X)} = {a(X)b(X)}
92 PRELEGEREA 8. CIRCUITE LINIARE SI EXTENSII GALOIS
toate calculele ind facute modulo g(X).
Evident, {0} = {g(X)}, unde {0} este polinomul de grad n1 cu tot i coecient ii
nuli (sau vectorul cu n componente zero). Vom nota {0} = 0.
Pentru un polinom s(X) Z
q
[X], clasa de resturi modulo g(X) se obt ine foarte
usor. Teorema mpart irii cu rest da:
s(X) = a(X)g(X) + r(X) unde grad(r(X)) < grad(g(X)) = n. Atunci:
{s(X)} {r(X)} = {s(X) r(X)} = {a(X)g(X)} = {a(X)}{g(X)} = 0.
Sa reluam circuitul liniar de mpart ire denit n Figura 8.3, n care facem urma-
toarele modicari (vezi Figura 8.4):
Se neglijeaza intrarea si iesirea;
La momentul init ial elementele de nmagazinare cont in coecient ii unui poli-
nom b(X) = b
0
+ b
1
X + . . . + b
n1
X
n1
.
Figura 8.4:
b
0

_
b
1

_
b
n1

_
- - - - - -
6
6

?
,
?

?
?-
?
,
?
g
0
g
1
g
n1 g
1
n
+ +
. . .
. . .
La urmatorul tact, n elementele de nmagazinare se obt in coecient ii polinomu-
lui:
b

(X) = g
0
g
1
n
b
n1
+ (b
0
g
1
g
1
n
b
n1
)X + (b
1
g
2
g
1
n
b
n1
)X
2
+ . . .
+(b
n2
g
n1
g
1
n
b
n1
)X
n1
=
= b
0
X +b
1
X
2
+. . . +b
n1
X
n
b
n1
X
n
g
1
n
b
n1
(g
0
+g
1
X +. . . +g
n1
X
n1
) =
= Xb(X) g
1
n
b
n1
g(X).
Daca notam = {X} ({X} este clasa de resturi a polinomului X), din relat ia
de mai sus se obt ine:
b

() = {b

(X)} = {Xb(X)} = {X}{b(X)} = {X}b({X}) = b().


Deci circuitul de mp art ire cu polinomul g(X) poate utilizat pentru nmult irea lui
b() cu .
Teorema 8.1

In algebra polinoamelor modulo g(X), grad(g(X)) = n, avem:
1. g() = 0 unde = {X};
2. g este polinomul de grad minim care are pe ca radacina.
Demonstrat ie:
8.2. EXTENSII GALOIS 93
1. Fie g(X) = g
0
+ g
1
X + . . . + g
n
X
n
Z
q
[X], g
n
= 0. Vom avea g() =
g
0
+g
1
+. . .+g
n

n
= g
0
+g
1
{X}+. . .+g
n
{X}
n
= g
0
+g
1
{X}+. . .+g
n
{X
n
} =
{g
0
+ g
1
X + . . . + g
n
X
n
} = {g(X)} = 0.
2. Folosind acelasi rat ionament, se obt ine pentru orice polinom f(X) cu
grad(f(X)) < n, ca f() = {f(X)} = 0, deoarece toate polinoamele ne-
identic nule de grad strict mai mic decat n apart in la clase de resturi distincte.
2
Sa presupunem acum ca g(X) Z
q
[X] este un polinom ireductibil. Conform
Teoremei 8.1, = {X} este rad acina a lui g(X). Acest element poate considerat
e ca polinom de grad n 1 (cu tot i coecient ii nuli nafara de cel al lui X), e ca
vector cu n componente (0, 1, 0, . . . , 0).
Vom nota cu GF(q
n
) mult imea vectorilor din Z
n
q
, sau - echivalent:
- mult imea polinoamelor de grad n 1 cu coecient i n Z
q
, sau
- mult imea claselor de resturi modulo polinomul g(X) Z
q
[X], ireductibil
peste Z
q
.
GF(q
n
) se numeste extensia Galois de grad n a lui Z
q
.
Spunem ca GF(q
n
) se obt ine prin adaugarea la Z
q
a unei radacini a polinomului
g(X) Z
q
[X] de grad n, ireductibil peste corpul de baza Z
q
.
Observat ie: Procedeul de trecere de la Z
q
la GF(q
n
) este similar trecerii de la
corpul numerelor reale R la cel complex C, prin adaugarea rad acinii i = {X} n
algebra claselor de resturi modulo 1 + X
2
, ireductibil peste R. Putem considera
mult imea C a numerelor complexe e ca mult imea polinoamelor de grad 2 1 =
1, a + bi cu a, b R, e ca mult imea vectorilor (a, b) cu doua componente reale.
Daca polinomul g(X) Z
q
[X] este ireductibil peste Z
q
si primitiv, puterile lui
= {X} vor genera toate elementele lui GF(q
n
) \ {0} unde n = grad(g(X)). Acest
lucru se poate realiza cu circuitul liniar din Figura 8.4, introducand la momentul
init ial n elementele de nmagazinare coecient ii polinomului b(X) = 1 (adica vec-
torul (1, 0, . . . , 0)). Conform celor observate mai sus, la momentul urmator se obt ine
{Xb(X)} = {X} = , dupa care urmeaza pe rand
2
,
3
, . . .. Cum g(X) a fost ales
primitiv, el va genera toate elementele nenule din GF(q
n
).
Exemplul 8.8 Fie polinomul 1+X+X
4
ireductibil peste Z
2
si = {X} n algebra
claselor de resturi modulo 1+X+X
4
. Circuitul liniar care va genera toate elementele
nenule din GF(2
4
) este:

_
-
6

?
,
- -
?
- - -
+
unde, la momentul init ial, n elementele de nmagazinare este vectorul (1, 0, 0, 0).
Conform Teoremei 8.1, este o radacina a polinomului 1 + X + X
4
, adica
1 + +
4
= 0.
Lasand circuitul sa funct ioneze, n elementele de nmagazinare se obt in toate ele-
mentele lui GF(2
4
), pe care le interpretam e ca vectori cu patru componente peste
Z
2
, e ca polinoame de gradul 3 n cu coecient i n Z
2
94 PRELEGEREA 8. CIRCUITE LINIARE SI EXTENSII GALOIS

0
= 1 1 0 0 0

1
= 0 1 0 0

2
=
2
0 0 1 0

3
=
3
0 0 0 1

4
= 1 + 1 1 0 0

5
= +
2
0 1 1 0

6
=
2
+
3
0 0 1 1

7
= 1 + +
3
1 1 0 1

8
= 1 +
2
1 0 1 0

9
= +
3
0 1 0 1

10
= 1 + +
2
1 1 1 0

11
= +
2
+
3
0 1 1 1

12
= 1 + +
2
+
3
1 1 1 1

13
= 1 +
2
+
3
1 0 1 1

14
= 1 +
3
1 0 0 1

15
= 1 1 0 0 0
Vedem deci ca polinomul 1 + X + X
4
este primitiv, puterile lui epuizand tot i
vectorii nenuli din GF(2
4
) = {0,
0
, , . . . ,
14
}.
Exemplul 8.9 Tabelul din exemplul precedent descrie operat ia de nmult ire din
GF(2
4
), generata de radacina a polinomului primitiv 1 + X + X
4
. Daca s-ar
alege ca radacina a altui polinom primitiv - de exemplu 1+X
3
+X
4
, se va genera
tot GF(2
4
), dar ntr-o alta ordine. Lasam ca exercit iu aceasta generare.

In GF(2
4
) se poate deni si operat ia de adunare, nsumand modulo 2 cei doi
operanzi, pe componente. Astfel, daca reluam GF(2
4
) generat n Exemplul 8.8 de
radacina polinomului 1 + X + X
4
, tabela de adunare va :
+ 0
0

2

10

11

12

13

14
0 0
0

2

10

11

12

13

14

0
0
4

14

10

13

12

11

3

4
0
5

11

14

10

13

12

5
0
6

10

3

12

11

14

13

14

6
0
7

11

13

12

10

4

0

10

7
0
8

12

14

13

11

10

2

11

8
0
9

13

14

12

13

11

12

9
0
10

14

7

4

14

12

13

10
0
11

10

13

14

11
0
12

7

11

14

12
0
13

10

10

10

12

6

13
0
14

11

11

11

12

13

3

8

14
0
0

10

12

12

11

13

10

14

0
0
5

13

13

12

14

11

10

4
0
2

14

14

13

12

8

6

11

10

2
0
Fie acum a(X) = a
0
+ a
1
X + . . . + a
k1
X
k1
Z
q
[X]. Valoarea a() se obt ine
folosind circuitul de mp art ire dat n Figura 8.3, cu urmatoarele observat ii:
8.2. EXTENSII GALOIS 95
Se ignora iesirea;
Coecient ii lui a(X) se introduc la intraren ordinea descrescatoare a puterilor;
Init ial, elementele de nmagazinare cont in valorile (0, 0, . . . , 0).
Pentru calculul unei valori de forma a()
j
, (j 0 xat), se pot construi circuite
liniare care sa realizeze direct acest produs.
Exemplul 8.10 Fie GF(2
4
) element primitiv, solut ie a ecuat iei 1+X+X
4
= 0.
Polinomul a(X) va avea atunci gradul maxim 3. Fie a(X) = a
0
+a
1
X+a
2
X
2
+a
3
X
3
.
Sa construim un circuit liniar care sa efectueze a()
5
.
Folosind tabelul din Exemplul 8.8, avem:
(a
0
+a
1
+a
2

2
+a
3

3
)
5
= a
0

5
+a
1

6
+a
2

7
+a
3

8
= a
0
( +
2
) +a
1
(
2
+

3
)+a
2
(1++
2
)+a
3
(1+
2
) = (a
2
+a
3
)+(a
0
+a
2
)+(a
0
+a
1
+a
3
)
2
+(a
1
+a
2
)
3
Pentru acest polinom se va construi circuitul liniar:
a
0
a
1
a
2
a
3

_

_

_

_
-
?
6
-
6
6
6 6 6
-
? -
6

6 6
6
-
? -
6
-
? -
+ + + +
La momentul init ial, n elementele de nmagazinare se gasesc coecient ii lui a();
dupa un tact, aici vor coecient ii polinomului a()
5
.
96 PRELEGEREA 8. CIRCUITE LINIARE SI EXTENSII GALOIS
8.3 Exercit ii
8.1 Sa se realizeze circuite liniar (n ambele modalitat i de construct ie) care sa
efectueze nmult iri cu polinoamele:
h(X) = 1 + 2X + 3X
2
+ 4X
3
Z[X]
h(X) = 1 + 2X + X
5
Z
7
[X]
8.2 Sa se reprezinte comportamentul circuitelor realizate anterior, la nmult irea cu
polinoamele:
a(X) = 2 + 5X + X
3
, a(X) = X X
3
2X
4
, a(X) = 0.
8.3 Se da cavantul g = (1, 0, 0, 1, 0, 1). Sa se realizeze circuitul de nmult ire
cu polinomul corespunzator si sa se reprezinte comportamentul acestui circuit la
nmult irea cu a = (1) si a = (1, 1, 1, 0, 0, 0, 1).
8.4 Sa se realizeze un circuit liniar care realizeaza produsul a(X)g(X) +b(X)h(X)
pentru polinoamele:
g(X) = 1 + X + X
3
, h(X) = 1 5X 2X
2
+ 3X
3
;
g(X) = 4X
3
+ X
5
2X
8
, h(X) = X
2
+ 2X
4
+ X
6
;
g(X) = X X
3
+ 3X
4
, h(X) = 2X
3
+ X
5
+ X
9
.
8.5 Sa se faca mpart irea n Q[X] la polinomul g(X) = X
2
2X+1 a polinoamelor
a(X) = X
5
4X
3
2X + 5, a(X) = X + 7.
8.6 Aceeasi problema pentru polinoamele g(X) = 2X1 si respectiv a(X) = X
3
3.
(1) :

In Q[X];
(2) :

In Z
3
[X].
8.7 Sa realizeze un circuit care sa efectueze (n Q) nmult irea cu polinomul
g(X) = 1 2X + X
3
si mpart irea cu polinomul h(X) = g(X).
8.8 Aceeasi problema pentru polinoamele:
g(X) = X 2X
3
X
4
, h(X) = 2 + X + X
3
n Z
5
[X];
g(X) = 1 + X X
6
, h(X) = X
2
4X
3
2X
5
+ 3X
7
n Z
11
[X].
8.9 Sa se rezolve problema enunt ata n Exemplul 8.9.
8.10 Sa se genereze toate puterile lui , radacina a polinomului 1 + X
2
+ X
5

Z
2
[X] si 1 + X + X
3
Z
3
[X].
8.11 Folosind elementele din Exemplul 8.10 sa se construiasca circuite de generare
pentru a(), a()
2
si a()
7
.
8.12 Sa se construiasca circuite de generare n GF(2
5
) pentru a() si a()
10
,
unde este radacina a polinomului 1 + X
2
+ X
5
Z
2
[X].
Prelegerea 9
Coduri ciclice
9.1 Relat ii de recurent a liniara
Teorema 9.1 Fie q prim si f(X) Z
q
[X], grad(f(X) = n.

In algebra poli-
noamelor modulo f(X), e I un ideal si g(X) polinomul de grad minim a carui
clasa de resturi apart ine lui I : {g(X)} I. Atunci:
1. {s(X)} I g(X)|s(X);
2. g(X)|f(X).
Demonstrat ie: (1): Fie {s(X)} I. Folosind identitatea mp art irii, avem
s(X) = b(X)g(X) + r(X), grad(r(X)) < grad(g(X)).
Trec and la clasele de resturi respective, se obt ine {s(X)} = {b(X)}{g(X)} +
{r(X)}. Cum {s(X)} I, {b(X)}{g(X)} I deoarece I este ideal, rezulta
{r(X)} I, absurd, deoarece g(X) este polinomul de grad minim a carui clasa de
resturi apart ine idealului I. Deci r(X) 0, adica s(X) = b(X)g(X).
Reciproca este imediata, deoarece din s(X) = b(X)g(X) rezulta {s(X)} =
{b(X)}{g(X)} I.
(2): Prin mpart irea polinomului f(X) cu g(X) se obt ine
f(X) = c(X)g(X) + r(X) unde grad(r(X)) < grad(g(X)).
Avem 0 = {f(X)} = {c(X)}{g(X)} +{r(X)} de unde rezulta {r(X)} I, absurd;
deci r(X) 0. 2
Teorema 9.2

In algebra polinoamelor modulo f(X), pentru orice ideal I exista un
polinom normat unic g(X) de grad minim, cu {g(X)} I.
Reciproc, pentru orice divizor normat al lui f(X) exista un ideal generat de acel
divizor.
g(X) se numeste generatorul idealului I si scriem I = ({g(X)}).
Demonstrat ie: Fie h(X) un polinom de grad minim cu {h(X)} I; vom nota
g(X) = h
1
n
h(X) unde h
n
este coecientul termenului de grad maxim din polinomul
h(X)).
Sa presupunem ca g(X), g

(X) sunt doua astfel de polinoame de grad minim,


normate, ale caror clase de resturi sunt n I. Conform Teoremei 9.1, g(X) si g

(X)
97
98 PRELEGEREA 9. CODURI CICLICE
se divid unul pe altul si - av and acelasi grad - difera printr-o constant a. Polinoamele
ind normate, aceasta constant a este 1. Deci g(X) = g

(X).
Reciproc, e g(X) un divizor normat al polinomului f(X) si ({g(X)}) idealul
generat de el. Un element al acestui ideal este {a(X)} ({g(X)}), deci are forma
{a(X)} = {b(X)}{g(X)} = {b(X)g(X)}. 2
Teorema 9.3 Fie q un numar prim, f(X) Z
q
[X], normat, cu grad(f(X)) = n
si e f(X) = g(X)h(X). Daca grad(h(X)) = k, atunci n algebra polinoamelor
modulo f(X), idealul ({g(X)}) are dimensiunea k.
Demonstrat ie: Sa observam ca vectorii (asociat i polinoamelor)
{g(X)}, {Xg(X)}, . . . , {X
k1
g(X)}
sunt liniar independent i.

Intr-adevar, pentru orice k elemente c
0
, . . . , c
k1
Z
q
, nu
toate nule, avem
c
0
{g(X)}+c
1
{Xg(X)}+. . . +c
k1
{X
k1
} = {(c
0
+c
1
X+. . . +c
k1
X
k1
)g(X)} = 0
deoarece s-a obt inut un polinom de grad cel mult n k + k 1 = n 1 < n.

In acelasi timp, pentru orice {s(X)} ({g(X)}) avem


{s(X)} = {a(X)g(X)} = {(a
0
+ a
1
X + . . . + a
k1
X
k1
)g(X)} = a
0
{g(X)} +
a
1
{Xg(X)} + . . . + a
k1
{X
k1
g(X)}, unde unii din coecient ii a
0
, a
1
, . . . , a
k1
pot
nuli.
Deci vectorii de sus formeaza o baza a subspat iului liniar ({g(X)}), care are deci
dimensiunea k. 2
Teorema 9.4 Fie f(X) Z
q
[X] un polinom normat si f(X) = g(X)h(X).

In
algebra polinoamelor modulo f(X),
{a(X)} ({g(X)}) {a(X)} este n spat iul nul al idealului ({h(X)}).
Demonstrat ie:

=

: Fie {a(X) ({g(X)}), deci {a(X)} = {v(X)g(X)}.


Fie de asemenea {b(X)} ({h(X)}), deci {b(X)} {w(X)h(X)}. Vom avea
{a(X)}{b(X)} = {v(x)w(X)g(X)h(X)} = {v(X)w(X)f(X)} =
= {v(X)w(X)}{f(X)} = 0.

: Sa consideram {a(X)} n spat iul nul al idealului ({h(X)}). Atunci


{a(X)}{h(X)} = 0, adica a(X)h(X) = c(X)f(X) = c(X)g(X)h(X) de unde
rezulta a(X) = c(X)g(X). Deci {a(X)} ({g(X)}). 2
Denit ia 9.1 Se numeste relat ie de recurent a liniara egalitatea
k

j=0
h
j
a
i+j
= 0 (1)
unde i 0, h
k
= 1, h
0
= 0, h
j
Z
q
, a
i+j
Z
q
.
Realt iile de recurent a liniara se pot scrie si
a
i+k
=
k1

j=0
h
j
a
i+j
, i = 0, 1, . . .
O solut ie a unei astfel de relat ii de recurent a liniara este orice succesiune innita de
forma a
0
, a
1
, . . . , a
p
, . . . care verica relat ia data, cu h
0
, h
1
, . . . , h
k
date, h
0
= 0,
9.1. RELAT II DE RECURENT

A LINIAR

A 99
h
k
= 1. Relat ia va determina succesiv pe a
k
din a
0
, . . . , a
k1
, apoi pe a
k+1
din
a
1
, . . . , a
k
, s.a.m.d.
Altfel spus, condit iile init iale a
0
, a
1
, . . . , a
k1
determina o solut ie a relat iei de
recurent a liniara.
Observat ii:
Orice combinat ie liniara de solut ii ale unei relat ii de recurent a liniara este tot
o solut ie.
Solut iile pentru care condit iile init iale sunt respectiv (1, 0, . . . , 0), (0, 1, . . . , 0),
. . . , (0, 0, . . . , 1) determina orice alta solut ie. Deci, spat iul solut iilor relat iei de
recurent a (1) are dimensiunea cel mult k.
Fiind date condit iile init iale (arbitrare) a
0
, a
1
, . . . , a
k1
, solut ia relat iei de recurent a
liniara (1) corespunzatoare lor se poate obt ine folosind circuitul liniar
a
j
a
j+1
`
_
`
_
`
_
`
_
a
j+k2
a
j+k1
_ _ _
h
0
h
1
h
k2
h
k1
6
- - - - -
?
6 6
,
6
6
,
6
6
,
6
+ + +
. . .
. . .
n care, la momentul init ial, n elementele de nmagazinare se gasesc a
0
, a
1
, . . . , a
k1
.
Sa consideram acum polinomul (xat) h(X) Z
q
[X], h(X) = h
0
+ h
1
X + . . . +
h
k
X
k
, h
0
= 0, h
k
= 1, si e n cel mai mic num ar natural pentru care X
n
1 se
divide cu h(X). Notam
g(X) =
X
n
1
h(X)
(2)
Pe baza acestor date construim relat ia de recurent a liniara
a
i+k
=
k1

j=0
h
j
a
i+j
, i 0 (3)
Teorema 9.5
1. Solut iile relat iei de recurent a (3) sunt periodice, de perioada n.
2. Mult imea formata din prima perioada a ecarei solut ii, scrisa ca polinom
a(X) = a
0
X
n1
+ . . . + a
n2
X + a
n1
constituie idealul ({g(X)}) n algebra
polinoamelor modulo X
n
1.
Demonstrat ie: (a): Vom arata ca oricarui element {a(X)} ({g(X)}) cu
a(X) = a
0
X
n1
+ . . . + a
n2
X + a
n1
i corespunde o solut ie periodica
a
1
, a
1
, . . . , a
n1
, a
0
, a
1
, . . . , a
n1
, a
0
, . . .
a relat iei de recurent a (3). Evident, nu este obligatoriu ca tot i coecient ii a
i
sa
e nuli, gradul real al polinomului f(X) putand chiar zero.
100 PRELEGEREA 9. CODURI CICLICE
Fie {a(X)}{h(X)} = {c(X)}. Vom nota c(X) = c
0
+ c
1
X + . . . + c
n1
X
n1
.
Avem:
- pentru k p n 1, c
p
= h
0
a
n1p
+ h
1
a
n1p+1
+ . . . + h
k
a
n1p+k
(4)
- pentru 0 p < k, c
p
= h
0
a
n1p
+h
1
a
n1p+1
+. . . +h
p
a
n1
+h
p+1
a
0
+. . . +
h
k
a
kp1
. (5)
Conform Teoremei 9.4, daca {a(X)} ({g(X)}) atunci {a(X)}{h(X)} = 0,
adica c
p
= 0, (0 p n 1).
Considerand (a
i
)
i
ca o succesiune periodica, vom avea evident a
i+n
= a
i
, i =
0, 1, . . .. T inand cont de aceasta introducand c
p
= 0 n (4) si (5), se obt ine (3).
(b): Idealul ({g(X)}) are dimensiunea k = grad(h(X)) (Teorema 9.3) si ecare
element al acestui ideal (polinom sau vector - dupa cum este scris) va da (conform
cu (a)) o solut ie a relat iei de recurent a liniara (3). Dar spat iul solut iilor relat iei (3)
are dimensiunea cel mult k. Deci idealul ({g(X)} va da toate solut iile relat iei de
recurent a liniara (3). Mai trebuie aratat ca perioada acestor solut ii este chiar n.
Din cele de pana acum a rezultat ca perioada este cel mult n. Vom arata ca
solut ia corespunzatoare clasei de resturi {g(X)} are perioada n.
Sa presupunem prin absurd ca solut ia corespunzatoare lui {g(X)} are perioada
m < n. Dar n este divizibil cu m si deci coecient ii polinomului g(X) - considerat
ca ind de grad n 1 (prin completare cu coecient i nuli) formeaza
n
m
blocuri care
se repeta.
Deci g(X) = q(X)(1 + X
m
+ x
2m
+ . . . + X
nm
) unde q(X) este un polinom de
gradul m1. Relat ia se poate scrie si g(X) = q(X)
X
n
1
X
m
1
.
Vom avea acum (X
n
1)(X
m
1) = g(X)h(X)(X
m
1) = q(X)h(X)(X
n
1)
adica X
m
1 = q(X)h(X), ceea ce contrazice denit ia numarului n (minim).
Deci m = n. 2
Exemplul 9.1 Sa consideram polinomul h(X) = 1+X+X
2
+X
4
Z
2
[X]. Relat ia
de recurent a liniara asociata este
a
i+4
= a
i+2
+ a
i+1
+ a
i
, i 0.
Circuitul liniar corespunzator are forma

_

_

6
- - -
?
6 6
, ,
+ +
Cel mai mic n pentru care X
n
1 se divide cu h(X) este n = 7. Cum g(X) =
X
7
1
h(X)
= X
3
+ X + 1, rezulta ca circuitul va genera cuvintele idealului ({g(X)}).
Fiecare din ele este caracterizat de cele patru valori binare init iale din elementele
de nmagazinare. Vor deci 2
4
= 16 cuvinte de lungime 7. Ele corespund tuturor
polinoamelor de grad maxim 6 din Z
2
[X], care se divid cu g(X).
De exemplu, pentru valorile init iale (1, 0, 1, 1), funct ionarea circuitului timp de
sapte tact i este:
9.2. DEFINIREA CODURILOR CICLICE 101
Iesire
1 0 1 1
1 0 1 1 0
0 1 1 0 0
1 1 0 0 0
1 0 0 0 1
0 0 0 1 0
0 0 1 0 1
0 1 0 1 1

In elementele de nmagazinare se regasesc valorile init iale, iar la iesire s-a obt inut
polinomul f(X) = X
6
+ X
4
+ X
3
= X
3
g(X).
Exemplul 9.2 Circuitul liniar corespunzator polinomului
h(X) = 1 + X
3
+ X
5
+ X
6
+ X
8
Z
2
[X] este

_

_

_

6
- - - -
?
6 6 6
, , ,
+ + +
El da solut iile relat iei de recurent a liniara a
i
+ a
i+3
+ a
i+5
+ a
i+6
+ a
i+8
= 0,
care formeaza idealul generat de polinomul g(X) =
X
255
1
h(X)
ideal compus din
2
8
= 256 cuvinte de lungime 255.
9.2 Denirea codurilor ciclice
Fie n 2 un num ar natural. Sa notam cu A
n
algebra polinoamelor din Z
q
[X],
modulo X
n
1. Dupa cum s-a convenit, identic am cuvantul cuvantul a
0
a
1
. . . a
n1
cu vectorul (a
0
, a
1
, . . . , a
n1
) si cu polinomul a(X) = a
0
+ a
1
X + . . . + a
n1
X
n1
.

In cadrul dualismului vector - polinom vom face o deosebire: anularea produsului


a doua polinoame nu nseamna ortogonalitatea vectorilor corespunzatori. Pentru
aceasta situat ie se foloseste urmatoarea propozit ie:
Propozit ia 9.1 Produsul a doua polinoame este zero daca si numai daca toate
produsele scalare dintre vectorul unui polinom si permutarile ciclice ale vectorilor
celuilalt polinom sunt zero.
Demonstrat ie: Fie a(X), b(X) Z
q
[X], a(X) =
n1

i=0
a
i
X
i
, b(X) =
n1

i=0
b
i
X
i
.
Atunci {c(X)} = {a(X)}{b(X)} = {c
0
+ c
1
X + . . . + c
n1
X
n1
} unde
c
j
=
j

i=0
a
i
b
ji
+
n1

i=j+1
a
i
b
j+ni
= (a
0
a
1
. . . a
n1
) (b
j
b
j1
. . . b
0
b
n1
b
n2
. . . b
j+1
)
T
si Propozit ia rezulta din faptul ca c
j
= 0 j. 2
Denit ia 9.2 Un subspat iu liniar V
n
A
n
se numeste ciclic daca
(a
0
, a
1
, . . . , a
n1
) V
n
= (a
n1
, a
0
, . . . , a
n2
) V
n
.
Teorema 9.6 Un subspat iu liniar V
n
A
n
este ciclic daca si numai daca este ideal.
102 PRELEGEREA 9. CODURI CICLICE
Demonstrat ie:

Inmult irea cu clasa de resturi {X} nseamn a de fapt permutarea
ciclica a componentelor cu o unitate spre dreapta, pentru ca:
{X}{a
0
+ a
1
X + . . . + a
n1
X
n1
} = {a
n1
+ a
0
X + . . . + a
n2
X
n1
}
=: Daca V
n
A
n
este ideal, atunci pentru orice v V
n
avem v

= {X}v V
n
(s-a notat tot cu v clasa de resturi modulo X
n
1 corespunzatoare polinomului ai
carui coecient i sunt componentele vectorului v). Deci V
n
este ciclic.
=: Presupunem ca subspat iul liniar V
n
A
n
este ciclic si e v V
n
. Atunci,
din {X}v V
n
rezulta {X
j
}v V
n
, j = 1, . . . , n 1. Deci
{c
0
+ c
1
X + . . . + c
n1
X
n1
}v V
n
, adica V
n
este ideal n A
n
. 2
Denit ia 9.3 Se numeste cod ciclic un ideal din A
n
.
Codurile ciclice au fost introduse de Prange (1957), care a evident iat bogat ia de
informat ie rezultata din structura lor algebrica.
9.3 Generarea codurilor ciclice
Pentru a construi un cod ciclic se foloseste structura idealelor n algebra modulo
X
n
1. Fie I un ideal n A
n
si g(X) polinomul normat de grad minim cu {g(X)} I.
Atunci (Teorema 9.1) {f(X)} I daca si numai daca g(X)|f(X).
De asemenea, g(X)|X
n
1. Oricarui divizor al lui X
n
1 i corespunde un ideal
n A
n
, generat de el.
Pentru a da un cod ciclic este sucient sa dam generatorul sau g(X), divizor al
lui X
n
1. Fie g(X) = g
0
+ g
1
X + . . . + g
nk
X
nk
, (k < n). O baza a idealului
({g(X)}) se poate alege (Teorema 9.3)
{g(X)}, {Xg(X)}, . . . , {X
k1
g(X)}.
Matricea generatoare corespunzatoare codului ciclic va
G
n,k
=

g
0
g
1
. . . g
nk
0 0 . . . 0
0 g
0
. . . g
nk1
g
nk
0 . . . 0
.
.
.
0 0 . . . 0 g
0
g
1
. . . g
nk

Rezulta ca un cod ciclic poate organizat ca un (n, k) - cod liniar, unde n este
gradul polinomului X
n
1 iar k este gradul polinomului h(X) =
X
n
1
g(X)
.
Exemplul 9.3 Codul cu repetit ie este un cod ciclic al carui polinom generator este
g(X) = 1 + X + X
2
+ . . . + X
n1
.
Exemplul 9.4 Sa consideram codul ciclic binar A de lungime 7, cu polinomul gen-
erator g(X) = 1 + X + X
3
(vezi si Exemplul 9.1). El are matricea generatoare
G =

1 1 0 1 0 0 0
0 1 1 0 1 0 0
0 0 1 1 0 1 0
0 0 0 1 1 0 1

.
9.3. GENERAREA CODURILOR CICLICE 103
Exemplul 9.5 Fie codul ciclic de lungime 6 peste Z
3
, de polinom generator g(X) =
2 + X
2
. Matricea sa generatoare este
G =

2 0 1 0 0 0
0 2 0 1 0 0
0 0 2 0 1 0
0 0 0 2 0 1

.
El este deci un (6, 4) - cod ternar.
Idealul generat de {g(X)} este spat iul nul al idealului ({h(X)}) unde
h(X) =
X
n
1
g(X)
. Acest ideal ({h(X)}) se construieste luand ca baza polinoamele
{h(X)}, {Xh(X)} . . . , {X
nk1
h(X)}.
T inand cont de Propozit ia 9.1, pentru a construi matricea de control H a codului
ciclic ({g(X)}), luam ca linii ale matricii cele n k polinoame de sus, cu ordinea
componentelor inversata.
Exemplul 9.6 Sa reluam codul din Exemplul 9.4. Deoarece X
7
1 = (1 + X)(1 +
X + X
3
)(1 + X
2
+ X
3
), pentru acest cod, avem
h(X) = (1 + X)(1 + X + X
3
) = 1 + X
2
+ X
3
+ X
4
.
Matricea generatoare a codului ({h(X)}) este

1 0 1 1 1 0 0
0 1 0 1 1 1 0
0 0 1 0 1 1 1

.
deci matricea de control asociat a codului din Exemplul 9.4 va
H =

0 0 1 1 1 0 1
0 1 1 1 0 1 0
1 1 1 0 1 0 0

.
Deoarece coloanele sale sunt nenule si distincte doua cate doua, codul astfel cons-
truit este echivalent cu un cod Hamming (7, 4).
Pentru a obt ine un cod ciclic sistematic, este convenabil sa alegem o alta baza pentru
idealul ({g(X)}). Sa observam ca pentru i = nk, nk +1, . . . , n1, putem scrie
X
i
= q
i
(X)g(X) + r
i
(X) cu grad(r
i
(X)) < grad(g(X)) = n k.
Deci {X
i
r
i
(X)} ({g(X)}), i = n k, n k + 1, . . . , n 1.
Aceasta mult ime de vectori este liniar independenta si conduce la o matrice
generatoare de forma
G = [R I]
unde linia j din matricea R este vectorul coecient ilor lui r
j
(X) pentru j = n
k, . . . , n 1. Codul obt inut este deci sistematic, iar matricea sa de control se scrie
imediat:
H = [I R
T
]
De remarcat ca matricea H
T
are pe linii componentele resturilor r
i
(X) pentru i =
0, 1, . . . , n 1.
104 PRELEGEREA 9. CODURI CICLICE
Exemplul 9.7 Sa luam din nou X
7
1 = g(X)h(X) peste Z
2
, unde
g(X) = 1 + X
2
+ X
3
, h(X) = 1 + X
2
+ X
3
+ X
4
(deci n = 7, k = 4). Avem
X
0
= 0g(X) + 1
X
1
= 0g(X) + X
X
2
= 0g(X) + X
2
X
3
= g(X) + 1 + X
2
X
4
= (1 + X)g(X) + 1 + X + X
2
X
5
= (1 + X + X
2
)g(X) + 1 + X
X
6
= (X + X
2
+ X
3
)g(X) + X + X
2
Baza corespunzatoare idealului ({g(X)}) este
{1 + X
2
+ X
3
}, {1 + X + X
2
+ X
4
}, {1 + X + X
5
}, {X + X
2
+ X
6
}
care conduce la matricea generatoare a unui cod sistematic:
G
7,4
=

1 0 1 1 0 0 0
1 1 1 0 1 0 0
1 1 0 0 0 1 0
0 1 1 0 0 0 1

= [R
4,3
I
4
].
Matricea de control corespunzatoare se scrie simplu:
H
7,3
=

1 0 0 1 1 1 0
0 1 0 0 1 1 1
0 0 1 1 1 0 1

= [I
3
R
T
3,4
].
9.4 Generarea automata a codurilor ciclice
Codurile ciclice sunt coduri a caror implementare este mult facilitata de circuitele
liniare. Cu ajutorul acestora se poate realiza automat codicarea, calculul sindro-
mului, corectarea si detectarea erorilor.

In construct ia practica vom distinge doua cazuri:


9.4.1 Circuit cu k elemente de nmagazinare
Este o metoda de generare a codurilor ciclice, avantajoasa daca sunt mai put ine
simboluri de informat ie decat de control: k < n k.
Fie codul ciclic ({g(X)}) A
n
si h(X) =
X
n
1
g(X)
= h
0
+ h
1
X + . . . + h
k
X
k
cu
h
0
= 0, h
k
= 1. Conform Teoremei 9.5, idealul ({g(X)}) este generat de circuitul
liniar care construieste secvent ial solut iile relat iei de recurent a liniara
k

j=0
h
j
a
i+j
= 0, i = 0, 1, . . .
Mesajul de informat ie care trebuie codicat - cont in and k simboluri pe ecare bloc
- se introduce la momentul init ial n elementele de nmagazinare ale circuitului,
sub forma de condit ii init iale. Las and circuitul sa funct ioneze, obt inem dupa n
momente cuvantul - cod corespunzator, apart in and idealului ({g(X)}) si avand pe
primele k pozit ii elementele de informat ie.
9.4. GENERAREA AUTOMAT

A A CODURILOR CICLICE 105


Exemplul 9.8 Circuitul liniar construit n Exemplul 9.1 este un circuit de codicare
pentru codul generat de polinomul g(X) = 1 +X +X
3
. Exemplul descrie si un mod
de funct ionare pentru cuvantul de informat ie 1011.
Daca s-ar lua drept polinom generator 1 + X
2
+ X
3
+ X
4
, idealul generat de el
este dat de circuitul liniar

6
- -
?
6
,
+
deoarece h(X) =
X
7
1
1 + X
2
+ X
3
+ X
4
= 1 + X
2
+ X
3
.
9.4.2 Circuit cu n k elemente de nmagazinare
Este o strategie avantajos de utilizat n cazul n k < k.
Daca interpret am mesajul de informat ie ca un polinom de gradul k 1, atunci
codicarea se poate face utilizand un circuit de nmult ire cu polinomul generator
g(X) (vezi Prelegerea anterioar a). La decodicare se recapata mesajul init ial (daca
nu au aparut erori) folosind un circuit de mp art ire cu g(X).
Exemplul 9.9 Codul ciclic de polinom generator g(X) = 1+X +X
3
poate codica
mesajele de informat ie folosind circuitul liniar:

_

_
- - - -
6
6
- - -
6
,
+ +
u
3
u
2
u
1
u
0
Astfel, mesajul de informat ie u = 1001 se codica n v = 1100101, conform
calculelor:
v(X) = u(X)g(X) = (1 + X
3
)(1 + X + X
3
) = 1 + X + X
4
+ X
6
Pentru decodicare se foloseste circuitul

_
- - - - - -
6
-
? ?
,
+ + v(X)
u(X)
Dezavantajul unei asemenea metode l constituie faptul ca, neind un cod sis-
tematic, prin codicare pozit iile de informat ie se pierd. Pentru a obt ine un cod
sistematic, procedam n felul urmator: mesajul de informat ie este considerat un
polinom u
0
(X) de gradul n 1 av and pozit iile de informat ie drept coecient ii lui
X
nk
, . . . , X
n1
, restul coecient ilor ind nuli. Atunci avem u
0
(X) = q(X)g(X) +
r(X) cu grad(r(X)) < grad(g(X)) = n k de unde
{u
0
(X) r(X)} ({g(X)}).
{u
0
(X) r(X)} reprezint a un cuvant - cod n care coecient ii lui X
nk
, . . . , X
n1
sunt pozit iile de informat ie nealterate, iar coecient ii lui r(X) cu semnul schimbat
(deci coecient ii lui X
0
, X
1
, . . . , X
nk1
) sunt caracterele de control.
Circuitul care realizeaza aceasta codicare este urmatorul:
106 PRELEGEREA 9. CODURI CICLICE

_

_

_

_
Canal

_
6
P
P
P
Pi
, , ,
?
?- - - - - - - -,
6
?
?
?
?
?
?
-
6
,

_
1
?
-
3
-
+ + + +
g
0
g
1
g
2
g
nk1 g
1
nk
u(X)
. . .
. . .
El funct ioneaz a astfel:
Init ial cele n k elemente de nmagazinare cont in 0, ntrerupatorul de iesire
este decuplat iar cel de feedback - cuplat.
Se introduc cele k elemente ale mesajului de informat ie atat n circuit cat si
n canalul de comunicat ie. Dupa k momente, n elementele de nmagazinare
avem coecient ii restului r(X).
Se decupleaza feedbackul si se cupleaza circuitul la canalul de comunicat ie.
Coecient ii restului - cu semn schimbat - se transmit n canal imediat dupa
pozit iile de informat ie.
Deoarece provine din circuitul de mpart ire cu g(X), acelasi circuit poate folosit
si pentru detectarea erorilor la recept ie. Pentru aceasta, dupa decuplarea ntrerup a-
torului de iesire si cuplarea celui de feedback, se introduce n circuit cuvantul
recept ionat. Daca n momentul n restul nu este nul (cel put in un element de
nmagazinare cont ine un element nenul) nseamn a ca a aparut cel put in o eroare
n transmisie.
Exemplul 9.10 Codul de lungime 7 generat de g(X) = 1 + X
2
+ X
3
, poate
construit folosind circuitul liniar:
_
,
_
Canal
6
Z
Z}

?-
?
- - - -,
-
6
,
?-
>
-
+ +
u
3
u
2
u
1
u
0
9.5 Exercit ii
9.1 Sa se determine toate codurile ciclice de lungime 5
(a) : peste Z
2
; (b) : peste Z
3
.
9.2 Construit i o baza pentru cel mai mic cod ciclic de lungime n care cont ine
cuvantul v:
(a) v = 1101000, n = 7;
(b) v = 010101, n = 6;
(c) v = 11011000, n = 8.
9.3 Pentru ecare din cuvintele de mai jos gasit i polinomul generator al celui mai
mic cod ciclic care cont ine cuvantul:
9.5. EXERCIT II 107
010010 01100110 0101100
001000101110000 000010010000000 010111010000000
9.4 Sa se ae polinomul generator al codului ciclic C stiind o baza S a sa:
S = {010, 011, 111};
S = {1010, 0101, 1111};
S = {0101, 1010, 1100};
S = {1000, 0100, 0010, 0001};
S = {11000, 01111, 11110, 01010}.
9.5

Intr-o codicare sistematica, codicat i mesajul de informat ie 1101 ntr-un cu-
vant - cod al unui cod binar ciclic de lungime 7 cu polinomul generator g(X) =
1 + X
2
+ X
3
.
9.6 Pentru codul denit mai sus codicat i mesajele de informat ie date de poli-
noamele: 1 + X
2
, X, X + X
2
+ X
3
.
Fiind date cuvintele - cod X
2
+X
4
+X
5
, 1+X +X
2
+X
4
, X
2
+X
3
+X
4
+X
6
,
gasit i mesajele de informat ie corepunzatoare.
9.7 Construit i circuite liniare pentru codicare si decodicare ale codului ciclic bi-
nar de lungime 7 generat de polinomul g(X) = (1 + X
2
+ X
3
)(1 + X).
9.8 Care este lungimea minima a unui cod ciclic binar de polinom generator
g(X) = 1 + X
2
+ X
3
+ X
4
?
Construit i circuite liniare pentru codicarea si decodicarea sa.
9.9 Construit i un circuit liniar pentru codicarea (15, 11) - codului Hamming binar.
9.10 Construit i matricea de control a codului ciclic binar de lungime n si polinom
generator g(X):
n = 6, g(X) = 1 + X
2
;
n = 8, g(X) = 1 + X
2
;
n = 9, g(X) = 1 + X
3
+ X
6
;
n = 15, g(X) = 1 + X + X
4
(genereaza codul Hamming);
n = 23, g(X) = 1 + X + X
5
+ X
6
+ X
7
+ X
9
+ X
11
(genereaza codul Golay);
n = 15, g(X) = 1 + X
4
+ X
6
+ X
7
+ X
8
.
9.11 Sunt ciclice codurile liniare binare denite de matricile generatoare denite
mai jos ?

1 0 1 1 1 0 0
1 1 0 1 0 0 0
1 1 0 0 1 0 1
0 0 1 0 1 1 1

1 1 1 1 0 0 0
0 1 1 1 1 0 0
0 0 1 1 1 1 0
0 0 0 1 1 1 1

9.12 Aratat i ca daca polinomul generator al unui cod binar se divide cu polinomul
1 + X, atunci toate cuvintele sale au pondere para.
Reciproca este adevarata ?
108 PRELEGEREA 9. CODURI CICLICE
9.13 Dat i o condit ie necesara si sucienta pentru polinomul generator al unui cod
ciclic de lungime impara pentru ca 11 . . . 1 sa e cuvant - cod.
9.14 Aratat i ca daca g(X) genereaza un (n, k) - cod ciclic, atunci g(X
i
) genereaza
un (in, kn) - cod ciclic.
Descriet i codurile pentru g(X) = 1 + X si g(X) = 1 + X + X
3
cu n = 7.
9.15 Aratat i ca intersect ia a doua coduri ciclice de aceeasi lungime este tot un cod
ciclic.
Care este polinomul sau generator ?
Prelegerea 10
Decodicarea codurilor ciclice
Dupa cum se stie de la codurile liniare, o caracterizare important a a tipurilor de
erori care pot apare n transmisia mesajelor este data de sindrom.

In cazul codurilor
ciclice este convenabil sa lucram cu un sindrom polinomial.
Denit ia 10.1 Fie A un cod ciclic de lungime n cu polinomul generator g(X). Se
numeste sindrom polinomial s(X) al cuvantului a de lungime n, restul mpart irii
polinomului corespunzator a(X) la g(X).
Deci, daca se transmite cuvantul - cod q(X)g(X) si se primeste a(X), sindromul va

e(X) = a(X) q(X)g(X), grad(e(X) < grad(g(X)).


Observat ii:
Deoarece a(X) e(X) este divizibil cu g(X), rezulta ca resturile mpart irii lui
a(X) si e(X) la g(X) coincid. Deci se poate vorbi despre tipul de eroare e.
Similar cu rat ionamentul de la coduri liniare, sindromurile vor toate poli-
noamele din Z
q
[X] de grad < n k; pentru ecare sindrom s(X) putem alege
o eroare - tip e(X) de pondere minima care are acel sindrom.
Structura algebrica a codurilor ciclice permite construct ia de metode de decodicare
(cu corectarea posibilelor erori aferente) mai eciente decat algoritmii similari de la
codurile liniare.
Vom ncepe cu prezentarea unui exemplu.
Exemplul 10.1 Fie A codul Hamming de lungime 7, care are polinomul generator
g(X) = 1 + X + X
3
(Prelegerea 9, Exemplele 9.4 si 9.6).
Eroare - tip Sindrom
0 0
1 1
X X
X
2
X
2
X
3
1 + X
X
4
X + X
2
X
5
1 + X + X
2
X
6
1 + X
2
109
110 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
Sindromul cuvantului recept ionat a = 1011001 este restul mpart irii lui X
6
+ X
3
+
X
2
+1 la X
3
+X +1, adica s(X) = X +1. Se stie ca orice cod Hamming corecteaza
o eroare, deci va util sa avem un tabel cu sindromurile tuturor erorilor - tip
e(X) = X
i
(0 i 6). Pentru ca X + 1 este sindromul lui e(X) = X
3
, tragem
concluzia ca a fost perturbat al treilea bit si vom decodica
a(X) e(X) = 1011001 0001000 = 1010001.
O dicultate n aceasta metoda de decodicare bazata pe sindrom consta n necesi-
tatea de a lista toate erorile - tip corespunzatoare sindromurilor si de a le parcurge la
recept ia ecarui cuvant. O simplicare este nsa propusa de Meggitt (1960), bazata
pe structura ciclica a codurilor. Vom face corect ia numai pentru ultimul caracter
(de grad maxim) al cuvantului a recept ionat. Dupa aceea se efectueaza o permutare
ciclica si se studiaza din nou ultimul caracter.

In acest fel, dupa n permut ari ciclice,
toate pozit iile au fost corectate.
Metoda prezint a doua avantaje majore:
1. Se foloseste o lista a erorilor - tip numai pentru sindromurile de grad n 1.
(Astfel, n Exemplul 10.1 numai un sindrom are gradul 6).
2. Calculul sindromului se efectueaza o singura data la nceput folosind cir-
cuitul liniar de mpart ire cu g(X). Dupa ce a funct ionat n momente, n ele-
mentele de nmagazinare se gaseste sindromul. Dupa aceea se neglijeaza iesirea
si se lasa sa funct ioneze circuitul. La ecare pas (Prelegerea 8, Figura 8.4) sin-
dromul se nmult este cu X, av and ca efect permutarea sa ciclica cu o pozit ie.
Propozit ia 10.1 Daca un cuvant a = (a
0
, a
1
, . . . , a
n1
) are sindromul s(X), atunci
permutarea sa ciclica are sindromul s

(X), care este restul mpart irii lui Xs(X) la


polinomul generator g(X).
Demonstrat ie: Sindromul s(X) este dat de identitatea mp art irii
a(X) = q(X)g(X) + s(X)
unde q(X) este catul mp art irii lui a(X) la g(X). Deoarece se lucreaza n alge-
bra polinoamelor modulo X
n
1, permutarea ciclica a lui {a(X)} este {a

(X)} =
{Xa(X)}, construit astfel:
a

(X) = Xa(X) a
n1
X
n
+ a
n1
= Xa(X) a
n1
(X
n
1) =
= Xa(X) a
n1
g(X)h(X) = Xq(X)g(X) + Xs(X) a
n1
g(X)h(X) =
= Xs(X) + g(X)[Xq(X) a
n1
h(X)].
Rezulta de aici ca resturile mp art irii lui a

(X) si Xs(X) la polinomul generator


g(X) sunt aceleasi. 2
Se poate da acum
111
Algoritmul de decodicare Meggitt pntru (n, k) - codurile ciclice
binare:
1. Se listeaza toate sindromurile reprezentate prin polinoame de grad
n k 1;
2. Cuvantul recept ionat a este introdus n circuitul liniar de mpart ire cu
g(X), care va funct iona n tact i;
3. Daca sindromul rezultat esten lista, se modica bitul cel mai din dreapta
al cuvantului primit;
4. Simultan se permut a ciclic cuvantul primit si si se lasa sa funct ioneze un
tact circuitul liniar (neglijand iesirea), dupa care se reia Pasul (3).
Se repeta acest procedeu de n 1 ori.
Exemplul 10.2 Reluand codul Hamming din Exemplul 10.1, algoritmul va lucra
astfel:
- Singurul sindrom din lista este 1 + X
2
.
- Daca se recept ioneaza de exemplu a = 1011001, el se introduce n circuitul
liniar
j
1
j
1 0
-
6

? ?
- - - - -
+ + 1011001
Dupa 7 tact i, n elementele de nmagazinare se obt ine sindromul 110.
- 110 nu este pe lista, deci a
6
a fost corect.
- Se permuta circular a n 1101100 si se lasa circuitul sa funct ioneze un tact;
elementele de nmagazinare vor cont ine 011.
- Nici acest sindrom nu este pe lista, deci a
5
a fost corect, etc.
Pasii de lucru ai algoritmului sunt reprezentat i n tabloul:
Pas Bit Sindrom
7 a
6
110
8 a
5
011
9 a
4
111
10 a
3
101
11 a
2
100
12 a
1
010
13 a
0
001
Deci singurul bit corectat (unde se transforma 1 n 0) este a
3
.
Exemplul 10.3 Sa consideram codul ciclic binar generat de polinomul g(X) = 1 +
X
4
+ X
6
+ X
7
+ X
8
. El este un (15, 7) - cod de distant a d = 5 (dupa cum vom
vedea mai tarziu) deci poate corecta 2 erori. Lista completa a sindromurilor (deci a
tuturor erorilor - tip de pondere 0, 1, 2) are C
0
15
+C
1
15
+C
2
15
= 121 elemente. Folosind
algoritmul Meggitt, numarul lor se reduce la 15, anume
112 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
Tip eroare Sindrom
X
14
X
7
+ X
6
+ X
5
+ X
3
1 + X
14
X
7
+ X
6
+ X
5
+ X
3
+ 1
X + X
14
X
7
+ X
6
+ X
5
+ X
X
2
+ X
14
X
7
+ X
6
+ X
5
+ X
3
+ X
2
X
3
+ X
14
X
7
+ X
6
+ X
5
X
4
+ X
14
X
7
+ X
6
+ X
5
+ X
4
+ X
3
X
5
+ X
14
X
7
+ X
6
+ X
3
X
6
+ X
14
X
7
+ X
5
+ X
3
X
7
+ X
14
X
6
+ X
5
+ X
3
X
8
+ X
14
X
5
+ X
4
+ X
3
+ 1
X
9
+ X
14
X
7
+ X
4
+ X
3
+ X + 1
X
10
+ X
14
X
3
+ X
2
+ X
X
11
+ X
14
X
7
+ X
6
+ X
5
+ X
4
+ X
2
+ X
X
12
+ X
14
X
7
+ X
6
+ X
4
+ X
X
13
+ X
14
X
7
+ X
4
+ X
3
+ X
2
Deci, la primirea unui cuvant a de lungime 15, vom calcula sindromul si - daca
acesta se aa n tabelul de sus - vom modica bitul a
14
. Apoi se face o permutare
ciclica si se corecteaza a
13
, s.a.m.d.
De remarcat can Exemplul 10.3 decodicarea nu este completa: algoritmul Meggitt
corecteaza n total 121 erori - tip. Privit ns a ca un cod liniar tabela de decodicare
va avea 2
15
/2
7
= 256 linii. Deci cu algoritmul Meggitt se vor corecta toate erorile
simple sau duble ignorand complet posibilitatea altor tipuri de erori.
Vom ncerca n continuare sa mbun atat im aceasta situat ie.
10.1 Corectarea pachetelor de erori
Fie A A
n
un (n, k) - cod ciclic peste Z
q
capabil sa corecteze t erori.
Denit ia 10.2 Pentru un polinom e(X) = X
s
e
0
(X) Z
q
[X] cu e
0
(0) = 1, spunem
ca lungimea pachet a lui e este 1 + grad(e
0
(X)).
Cuvantul e Z
n
q
este un pachet - tip de lungime j daca gradul minim al
polinoamelor {X
s
e(X)} este j 1.
Daca se trimite un cuvant v si se recept ioneaz a a, spunem ca erorile au afectat
j pozit ii daca eroarea - tip e = a v este un pachet - tip de lungime j.
Exemplul 10.4 Fie n = 7 si e = 0101100. Atunci e(X) = X + X
3
+ X
4
=
X(1+X
2
+X
3
). Efectuand toate permutarile ciclice, se obt ine ca toate au grad mai
mare decat 3, nafara de {X
6
e(X)} = {1 + X
2
+ X
3
}, tot de gradul 3. Deci e este
un pachet - tip de lungime 4.
Daca se ia e = 1000100, 1 + X
4
are gradul 4, dar permutarea ciclica {X
3
(1 +
X
4
)} = {1 + X
3
} are gradul 3, deci si acesta este un pachet - tip de lungime 4.
10.2. DETECTAREA PACHETELOR DE ERORI 113
Reamintim ca la codurile liniare se construia un tablou standard n care pe ecare
linie se aau toate cuvintele cu acelasi sindrom. Codul era corector de t erori daca
toate cuvintele din Z
n
q
de pondere cel mult t erau pe linii diferite; acestea constituiau
reprezentant ii sindromurilor si apareau pe prima coloana, ind considerate erori -
tip pentru ecare linie.
Astfel de tabele se pot construi si pentru codurile ciclice; aici se iau ca reprezen-
tant i n ecare linie, pachetele de erori de lungime minima.

In acest fel, un cod
liniar corector de t erori (independente) este corector de pachete de j erori daca
toate cuvintele de lungime - pachet cel mult j sunt reprezentant i.
Lema 10.1 Daca un cod A este corector de t erori independente si corector de
pachete de j erori, atunci t j.
Demonstrat ie: Exercit iu. 2
Denit ia 10.3 Un (n, k) - cod ciclic corecteaza pachetele de j erori daca orice
pachet - tip de lungime cel mult j este un sindrom.
Exemplul 10.5 Sa consideram toate pachetele - tip nenule de lungime cel mult 3
n Z
15
2
. Fiecare astfel de cuvant este de forma
{e(X)} = {X
s
e
0
(X)} cu 0 s 14 si e
0
(X) {1, 1 + X, 1 + X
2
, 1 + X + X
2
}.

In total sunt 15 4 = 60 astfel de pachete de erori.


Exemplul 10.6 Fie g(X) = 1 + X + X
2
+ X
3
+ X
6
polinomul generator al unui
(15, 9) - cod ciclic binar. El nu este un cod corector de 3 erori independente pentru
ca sunt 576 tipuri de erori de pondere cel mult 3 si numai 2
15
/2
9
= 64 sindromuri.

In schimb sunt numai 61 pachete - tip de lungime maxim 3 (Exemplul 10.5, la care
se adauga pachetul nul), deci acest cod poate corecta pachetele de 3 erori. Faptul ca
este un cod ciclic corector de pachete de 3 erori rezulta din calculul sindromurilor
polinoamelor {X
s
e
0
(X)} unde 0 s 14 si e
0
(X) {1, 1+X, 1+X
2
, 1+X+X
2
}.
10.2 Detectarea pachetelor de erori
Teorema 10.1 Un (n, k) - cod ciclic detecteaza orice pachet de maxim nk erori.
Demonstrat ie: Daca {e(X)} este o eroare - tip de lungime cel mult n k, atunci
e(X) = X
s
e
0
(X) cu grad(e
0
(X)) < nk. Fie g(X) polinomul generator al codului,
cu grad(g(X)) = n k.
Stim ca {e(X)} este cuvant - cod g(X)|e(X).
Cum g(X)|X
n
1, el va prim cu X
s
; deci {e(X)} este n cod daca si numai
daca g(X)|e
0
(X), absurd deoarece grad(e
0
(X)) < n k = grad(g(X)). 2
Teorema 10.2 Proport ia pachetelor - tip de j > n k erori pe care nu le poate
detecta un (n, k) - cod ciclic este
q
(nk1)
q 1
daca j = n k + 1
q
(nk)
daca j > n k + 1.
114 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
Demonstrat ie: Fie {e(X)} = {X
s
e
0
(X)} unde grad(e
0
(X)) = j 1. Sa numar am
cate asemenea pachete - tip de erori sunt posibile. Ca prim si ultim coecient al
lui e
0
(X) poate orice element din Z
q
\ {0} (n num ar de q 1), iar coecient ii
intermediari pot orice elemente din Z
q
(n num ar de q). Deci sunt (q 1)
2
q
j2
pachete - tip de eroare care ncep si se termina n aceeasi pozit ie.
Un pachet - tip de eroare {e(X)} nu este detectat de un (n, k) - cod ciclic
daca si numai daca {e(X)} este cuvant - cod, adica e
0
(X) = g(X)h(X), unde
grad(h(X)) = grad(e
0
(X)) grad(g(X)) = j 1 (n k). Deci polinomul h(X)
are j n + k coecient i. Apar doua situat ii:
1. grad(h(X)) = 0, adica j = n k + 1. Atunci h(X) se reduce la o constanta
si exista q 1 asemenea polinoame h(X). Deci, raportul dintre numarul pa-
chetelor - tip de lungime j nedetectabile si num arul total al pachetelor - tip
de lungime j care pot localizate este
q 1
(q 1)
2
q
j2
=
q
(nk1)
q 1
.
2. Daca grad(h(X)) > 0, adica j > nk+1, vom avea (q1)
2
q
jn+k2
polinoame
h(X) posibile (pachete - tip de lungime j) nedetectabile. Rezulta ca raportul
de sus este n acest caz
(q 1)q
jn+k2
(q 1)
2
q
j2
= q
(nk)
.
2
Exemplul 10.7 Codul ciclic denit n Exemplul 10.6 detecteaza orice pachet de
maxim 9 erori.
Dintre pachetele de 10 erori posibile care pot apare, doar 1/2
8
nu pot detectate,
iar dintre pachetele de 11 15 erori nu pot detectate 1/2
9
.
10.3 Corectarea pachetelor de erori
Algoritmul este o variant a a Algoritmului Meggitt.
Fie A = ({g(X)}) un (n, k) - cod ciclic corector de pachete - tip de j erori si
a Z
n
q
un cuvant recept ionat.
1. Se calculeaza sindromul {s(X)};
2. Pentru ecare i 0 se calculeaza s
i
(X) = X
i
s(X) mod g(X), pan a se
ajunge la un p cu grad(s
p
(X)) < j 1.
Atunci eroarea - tip este {e(X)} = {X
np
s
p
(X)} si se genereaza cuvantul
a +e.
10.4. TRANSPUNERE 115
Exemplul 10.8 Polinomul g(X) = 1 + X + X
2
+ X
3
+ X
6
genereaza un (15, 9) -
cod ciclic corector de pachete - tip de 3 erori. Sa folosim algoritmul de sus pentru a
decodica a = 111100100001010.
s(X) = 1+X+X
2
+X
3
+X
6
+X
11
+X
13
(mod g(X)) = 1+X
3
+X
4
+X
5
.
s
1
(X) = Xs(X) (mod g(X)) = 1 = X
2
+ X
3
+ X
4
+ X
5
,
s
2
(X) = X
2
s(X) = 1 + X
2
+ X
4
+ X
5
,
s
3
(X) = X
3
s(X) = 1 + X
2
+ X
5
,
s
4
(X) = X
4
s(X) = 1 + X
2
.
S-a ajuns la grad(s
4
(X)) = 2 < 3 1. Deci eroarea - tip este
{e(X)} = {X
154
s
4
(X)} = X
11
+ X
13
.
Cuvantul - cod transmis a fost
v = a +e = 111100100001010 + 000000000001010 = 111100100000000.
10.4 Transpunere
O metoda ecient a de utilizare a capacitat ilor de corectare a pachetelor - tip de erori
de catre codurile ciclice este utilizarea de transpuneri (interleaving).

In mod natural, mesajele de informat ie m


1
, m
2
, . . . sunt codicate n cuvintele
- cod c
1
, c
2
, . . . si transmise prin canal n ordinea codicarii. Transmisia se poate
realiza nsa si dupa o rearanjare a caracterelor de informat ie din mai multe cuvinte
- cod consecutive.
Formal, prin transpunere la adancimea s se nt elege scrierea a s cuvinte - cod
c
1
, c
2
, . . . , c
s
ca linii ale unei matrici
C
s,n
=

c
11
c
12
c
13
. . . c
1n
c
21
c
22
c
23
. . . c
2n
.
.
.
c
s1
c
s2
c
s3
. . . c
sn

si transmiterea a n mesaje de lungime s, formate din coloanele matricii C:


c
11
c
21
. . . c
s1
, c
12
c
22
. . . c
s2
, . . . , c
1n
c
2n
. . . c
sn
Exemplul 10.9 Sa consideram codul generat de G =

1 0 0 1 1 0
0 1 0 1 0 1
0 0 1 0 1 1

si sase mesaje codicate c


1
, c
2
, . . . , c
6
, unde
c
1
= 100110 c
2
= 010101 c
3
= 111000
c
4
= 010101 c
5
= 100110 c
6
= 111000
Deci - la nivel de caracter - secvent a va arata:
100110 010101 111000 010101 100110 111000.
Printr-o transpunere la adancimea 3, forma mesajelor este:
101 011 001 110 100 010 011 101 001 110 010 100
iar cu o transpunere la adancimea 6:
101011 011101 001001 110110 100010 010100.
116 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
Ce efect are o transpunere la adncimea s asupra capacitat ii de corect ie de pachete
- tip de erori ale codului ? Raspunsul este dat de
Teorema 10.3 Fie A un cod corector de pachete - tip de j erori. Daca A este
transpus la adancimea s, atunci toate pachetele de cel mult sj erori pot corectate,
n ipoteza ca ecare cuvant - cod este afectat de maxim un pachet - tip de j erori.
Demonstrat ie: Daca primul caracter al cuvantului - cod c este al i - lea caracter
transmis, atunci celelalte caractere apar pe pozit iile i + s, i + 2s, . . . , i + (n 1)s.
Orice pachet de maxim sj erori va produce un pachet - tip de maxim j erori n c,
deci c va putea regasit la recept ie (daca el nu a mai fost cumva afectat si de alte
pachete de erori). 2
Restrict ia ca ecare cuvant - cod sa e afectat de cel mult un pachet de erori
impune condit ia ca pachetele de erori sa e separate de perioade n care transmisia
este corecta, perioade sucient de lungi pentru evitarea situat iei ca un bloc de s
cuvinte sa e afectat de doua pachete distincte de erori.

In acest fel, crescand s,
creste si lungimea pachetului de erori care poate corectat, dar creste si lungimea
perioadelor necesare de transmisie fara erori.
Exemplul 10.10 Codul din Exemplul 10.9 corecteaza o eroare. Folosind o transpu-
nere la adancimea 3, el poate corecta toate pachetele - tip de cel mult 3 erori.
Un dezavantaj al transpunerii este acela ca nu se poate face transmisia pan a nu au
fost codicate toate cele s cuvinte, fapt care nu va permite folosirea directa a cir-
cuitelor liniare. Pentru a evita acest neajuns se va folosi un s - cadru de transpunere
ntarziata, care aranjeaza caracterele codicate, nu sub forma unei matrici C ci sub
forma de scara - ca n tabelul:
c
1,1
c
2,1
. . . c
s+1,1
c
s+2,1
. . . c
2s+1,1
c
2s+2,1
. . . c
(n1)s+1,1
. . .
c
1,2
c
2,2
. . . c
s+1,2
c
s+2,2
. . . c
(n2)s+1,2
. . .
c
1,3
c
2,3
. . . c
(n3)s+1,3
. . .
.
.
.
c
1,n
. . .
Deoarece transmisia se face pe coloane, spat iile libere trebuiesc marcate. Acest lucru
se realizeaza practic introducand pe aceste pozit ii un caracter special Z
q
.
Exemplul 10.11 Sa reluam mesajul codicat c
1
, c
2
, . . . , c
6
din Exemplul 10.9.
Un 1 - cadru de transpunere ntarziata va
1 0 1 0 1 1 . . .
0 1 1 1 0 1 . . .
0 0 1 0 0 1 . . .
1 1 0 1 1 0 . . .
1 0 0 0 1 0 . . .
0 1 0 1 0 0 . . .
Scvent a de caractere transmise este
1 00 110 0101 11111 100000 . . .
Daca se foloseste un 2 - cadru de transpunere ntarziata, avem
10.4. TRANSPUNERE 117
1 0 1 0 1 1 . . .
0 1 1 1 0 1 . . .
0 0 1 0 0 1 . . .
1 1 0 1 1 0 . . .
1 0 0 0 1 0 . . .
0 1 0 1 0 0 . . .
iar secvent a de caractere transmise este:
1 0 10 01 110 110 . . .
Este usor de gasit o teorema analoga cu Teorema 10.3:
Teorema 10.4 Fie A un cod capabil sa corecteze pachetele - tip de j erori. Daca A
foloseste un s - cadru de transpunere narziata, atunci se poate corecta orice pachet
- tip de maxim j(sn + 1) erori, n ipoteza ca orice cuvant - cod este afectat de cel
mult un pachet - tip de j erori.
Demonstrat ie: Exercit iu.
Ca o alta facilitate, pentru codicarea unui mesaj se folosesc adesea doua coduri.
De exemplu, pentru codicarea muzicii pe compact - discuri se utilizeaza doua coduri
Reed - Solomon, iar NASA si Agent ia Spat iala Europeana folosesc doua coduri
convolut ionale (ambele vor denite mai tarziu).
Fie C
i
(i = 1, 2) doua (n
i
, k
i
) coduri liniare. Transpunerea ncrucisata a lui C
1
cu C
2
se realizeaza astfel:
1. Mesajele de informat ie sunt codicate cu C
1
iar cuvintele - cod rezultate
sunt transpuse la adancimea k
2
.
2. Coloanele obt inute n acest proces de transpunere (care sunt de lungime
k
2
) - privite ca mesaje de informat ie - sunt codicate de codul C
2
.
3. Cuvintele - cod rezultate sunt transpuse la o adancime s xata, sau cu
un s - cadru de transpunere ntarziat a.
Avantajul principal al celei de-a doua codicari este urmatorul:
Fie d
1
, d
2
distant ele celor doua coduri. C
2
poate detecta d
2
1 erori (nu ne punem
problema corectarii lor). Daca s-au detectat erori pentru un cuvant - cod din C
2
,
atunci toate caracterele acestui cuvant sunt marcate si tratate drept simboluri care
pot incorecte. Se considera apoi cuvintele - cod din C
1
. Daca n
1
d
1
+1 caractere
dintr-un cuvant - cod din C
1
sunt corecte, atunci se pot determina unic celelalte
d
1
1 caractere (deoarece este imposibil ca doua cuvinte - cod distincte din C
1
sa
coincida pe n
1
d
1
+1 pozit ii, ele diferind pe minim d
1
pozit ii; armat ia este bazata
si pe faptul ca pozit iile caracterelor corecte sunt cunoscute).
Deci, daca un cuvant - cod din C
1
are cel mult d
1
1 simboluri marcate si se stie
ca toate caracterele gresite sunt marcate, cuvintele - cod pot decodicate corect.
118 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
Cat de mare este un pachet de erori pe care l poate corecta aceasta schem a ?
Sa presupunem ca C
2
a fost transpus la adancimea s, si ca orice cuvant - cod (atat
din C
1
cat si din C
2
) a fost afectat de cel mult un pachet de erori. Daca apare un
pachet de cel mult s(d
2
1) erori, atunci el va afecta maxim d
2
1 simboluri din
ecare cuvant - cod din C
2
. Deci aceste erori vor detectate si se vor marca toate
caracterele cuvintelor - cod implicate. Daca s d
1
1, atunci orice cuvant - cod
din C
1
are cel mult d
1
1 simboluri marcate.

In ipoteza ca nu exista decat maxim
un pachet de erori care l-a perturbat, caracterele marcate pot corectate.
Am aratat astfel:
Teorema 10.5 Fie o codicare care foloseste transpunerea ncrucisata a (n
1
, k
1
) -
codului C
1
cu (n
2
, k
2
) - codul C
1
, C
2
ind transpus la adancimea s (s d
1
1).
Daca ecare cuvant - cod este afectat de cel mult un pachet - tip de erori, atunci
toate pachetele - tip de erori de lungime maxim s(d
2
1) pot corectate.
(d
1
, d
2
sunt distant ele minime ale celor doua coduri).
Exemplul 10.12 Fie C
1
si K
2
codurile binare, denite respectiv de matricile gene-
ratoare
G
1
=

1 0 0 0 1 1 1 0
0 1 0 0 1 1 0 1
0 0 1 0 1 0 1 1
0 0 0 1 0 1 1 1

G
2
=

1 0 0 1 1 0
0 1 0 1 0 1
0 0 1 0 1 1

.
Deci, n
1
= 8, k
1
= 4, d
1
= 4, n
2
= 6, k
2
= 3, d
2
= 3.
Sa codicam mesajele de informat ie m
1
= 1000, m
2
= 1100, m
3
= 1010
folosind o transpunere ncrucisata a lui C
1
cu K
2
, C
2
ind transpus la o adancime
s = 3 = d
1
1.
Codicarea mesajelor de informt ie cu codul C
1
da:
c
1
= m
1
G
1
= 10001110, c
2
= m
2
G
1
= 11000011, c
3
= m
3
G
1
= 10100101.
Transpunerea acestor cuvinte la adancimea k
2
= 3 conduce la mesajul
111 010 001 000 100 101 110 011
Aceste 8 mesaje de informat ie sunt codicate cu C
2
n:
c

1
= 111000, c

2
= 010101, c

3
= 001011, c

4
= 000000,
c

5
= 100110, c

6
= 101101, c

7
= 110011, c

8
= 011110.
si apoi transpuse la adancimea s = 3 (c

6
si c

7
vor transpuse cu urmatorul
cuvant - cod c

9
obt inut de urmatoarele trei mesaje de informat ie m
4
, m
5
, m
6
).
Scvent a de caractere transmisa va ncepe cu
100 110 101 010 001 011 011 000 001 011 010 001 . . .
Conform Teoremei 10.5, folosind C
2
pentru a detecta d
2
1 = 2 erori, si apoi C
1
pentru a corecta toate caracterele marcate, se pot corecta n ansamblu toate pachetele
de cel mult s(d
2
1) = (d
1
1)(d
2
1) = 6 erori.
10.5. EXERCIT II 119
De exemplu, sa presupunem ca primii 6 bit i au fost transmisi incorect, deci s-a
primit 011 001 101 010 001 011 . . .. Eliminand efectul transpunerii la adancimea
s = 3, se ajunge la cuvintele
001000 100101 111011
(care comparate respectiv cu c

1
, c

2
, c

3
au erori ecare pe primele doua pozit ii). Deoa-
rece sindromurile sunt nenule, C
2
va detecta erori n toate cele trei cuvinte, deci tot i
cei 18 bit i sunt marcat i (i vom nlocui cu ).
Presupunand ca nu mai sunt alte erori, dupa un procedeu similar se obt in cuvin-
tele c

4
, . . . , c

8
, fara caractere marcate.
Eliminand acum efectul transpunerii la adancimea k
2
= 3, se obt in cuvintele
c
1
= 01110, c
2
= 00011, c
3
= 100101.
Exista o modalitate unica de a ajunge la cuvinte - cod din C
1
prin nlocuirea cu
caractere 0 sau 1.
10.5 Exercit ii
10.1 Demonstrat i Lema 10.1
10.2 Aratat i ca daca un cod ciclic detecteaza o eroare - tip e, atunci detecteaza
toate erorile - tip obt inute prin permutari ciclice ale lui e.
10.3 Vericat i ca pachetele ciclice - tip de erori de lungime 3 din Z
15
2
au sindromuri
diferite pentru codul din Exemplul 10.6.
10.4 Aratat i ca g(X) = 1+X
2
+X
4
+X
5
genereaza un (15, 10) - cod ciclic corector
de pachete de maxim 2 erori. Este acesta un cod corector de 2 erori independente ?
10.5 Aratat i ca g(X) = 1 + X
3
+ X
4
+ X
5
+ X
6
genereaza un (15, 9) - cod ci-
clic corector de pachete de maxim 3 erori. Este acesta un cod corector de 3 erori
independente ?
10.6 Aratat i ca g(X) = 1 + X
4
+ X
6
+ X
7
+ X
8
genereaza un (15, 7) - cod ciclic
corector de 2 erori independente si de pachete de 4 erori.
10.7 Fie codul din Exemplul 10.6. Sa se decodice mesajele:
101101110001000, 001101100010101, 100110101010011
101101000010111, 000000111110000
10.8 Fie (15, 10) - codul ciclic binar generat de g(X) = 1 + X
2
+ X
4
+ X
5
.
Cate erori au pachetele - tip pe care le poate corecta ?
Decodicat i mesajele:
010101000010010, 011010010010100, 001101000000100
000100010100101, 000000011111001.
120 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
10.9 Fie codul generat de polinomul g(X) = 1 + X + X
2
+ X
3
+ X
6
. Codicat i
mesajele de informat ie m
1
(X) = 1, m
2
(X) = X
2
, m
3
(X) = 1 + X,
m
4
(X) = 1 + X
2
, m
5
(X) = X
3
, m
6
(X) = 1.
Determinat i sirul de bit i transmisi daca se foloseste o transpunere la adancimea
s unde
(a) s = 1 (b) s = 2 (c) s = 3.
10.10 Ce secvent a de caractere este transmisa daca se foloseste un 0 - cadru de
transpunere ntarziata ?
10.11 Demonstrat i Teorema 10.4
10.12 Folosind codurile denite n Exemplul 10.12, sa se codice urmatoarele me-
saje de informat ie prin transpunerea ncrucisata a lui C
1
cu C
2
:
(a) m
1
= 0110, m
2
= 1011, m
3
= 1111, s = 2
(b) m
1
= 0110, m
2
= 1011, m
3
= 1111, s = 3
(c) m
1
= 0010, m
2
= 1111, m
3
= 1010, s = 3
(d) m
1
= 1000, m
2
= 0100, m
3
= 0010, m
4
= 0001, m
5
= 0011,
m
6
= 0100 s = 3
10.13 Folosind codurile din Exemplul 10.12 au fost obt inute prin transpunere
ncrucisata a lui C
1
cu C
2
la adancimea s = 3, urmatoarele secvent e binare:
(a) 000001001110110001000111000111000111000000000000000000 . . .
(b) 100011001111101010011001111010100110100100011101000100 . . .
Aat i meajele de informat ie m
1
, m
2
, m
3
.
10.14 Gasit i un rezultat analog Teoremei 10.5 daca pentru C
2
se foloseste s - cadrul
de transpunere ntarziata n loc de s - transpunere.
Prelegerea 11
Alte denit ii ale codurilor ciclice
Primele doua sect iuni ale acestei prelegeri vor trecen revista cateva not iuni algebrice
fundamentale n construirea codurilor ciclice.
11.1 Elemente primitive n extensii Galois
Denit ia 11.1 Fie F un corp nit. Un element a F are ordin n (n 1) daca
a
n
= 1 si a
k
= 1, k, 0 < k < n. Vom scrie ord(a) = n.
Propozit ia 11.1

Intr-un corp nit:
- Orice element nenul are un ordin nit;
- Daca n = ord(a) atunci a, a
2
, . . . , a
n
sunt distincte;
- a
k
= 1 daca si numai daca ord(a)|k (ord(a) este divizor al lui k).
Demonstrat ie: Fie a F, a = 0. Cum F este nit, elementele a, a
2
, a
3
, . . . nu pot
toate distincte. Vom alege cel mai mic n pentru care i a
n+i
= a
i
. Relat ia se
poate simplica (lucram ntr-un corp) cu a
i
si se obt ine a
n
= 1. Din construct ie,
a, a
2
, . . . , a
n
sunt distincte, deci n este ordinul lui a.
Pentru k = ni avem a
k
= (a
n
)
i
= 1
i
= 1. Reciproc, sa presupunem a
k
= 1.
Teorema mpart irii cu rest da k = qn + r, r < n. Avem 1 = a
k
= a
qn
a
r
= a
r
.
Cum r < n rezulta r = 0. 2
Denit ia 11.2 Un element a F este primitiv daca toate puterile sale genereaza
F \ {0}.
Observat ie: Daca F are r elemente, atunci un element este primitv daca si numai
daca are ordinul r 1.
Teorema 11.1 Orice corp nit are cel put in un element primitiv.
Demonstrat ie: Cum F este nit (card(F) = r), se poate gasi un element a F de
ordin n maxim. Evident n r 1. Mai trebuie aratat ca n r 1.
Fie b F de ordin s. Sa-l descompunem pe sn factori primi: s = p
i
q
j
. . . (p, q, . . .
numere prime). La randul lui n = p
t
n

unde n

nu este divizibil cu p (iar t poate


eventual zero).
121
122 PRELEGEREA 11. ALTE DEFINIT II ALE CODURILOR CICLICE
Sa consideram s

= s/p
i
(deci s = p
i
s

) si e c = a
p
t
b
s

F. Vrem sa arat am ca
c are ordinul m = p
i
n

. Pentru aceasta, avem:


c
m
= a
p
t
m
b
s

m
= a
p
t
n

p
i
b
p
i
s

= (a
n
)
p
i
(b
s
)
n

= 1
p
i
1
n

= 1.
Mai ram ane de aratat ca c
m

= 1 = m

m. Este sucient sa veric am ca p


i
si n

sunt divizori ai lui m

; deoarece ei sunt primi intre ei, va rezulta ca produsul


m = p
i
n

este de asemenea divizor al lui m

.
Din calculul 1 = (c
m

)
n

= a
p
i
n

b
s

= (a
n
)
m

b
s

= b
s

rezulta (Propozit ia
11.1) ca ordinul s = p
i
s

al lui b divide s

; deci p
i
|m

In plus, din 1 = (c
m

)
p

= a
p
t
p
i
m

b
p
i
s

= a
p
t
p
i
m

(b
s
)
m

= a
p
t
p
i
m

rezulta ca ordinul
n = p
t
n

al lui a divide p
t
p
i
m

; deci n

|p
i
m

.
Cum n este cel mai mare ordin ale elementelor din F, avem p
i
n

p
t
n

, deci
i t, adica p
i
divide n = p
i
n

In mod similar, tot i factorii lui s sunt divizori ai lui n, deci s|n.
Am aratat urmatoarea armat ie:
b F = ord(b)|n
Deci b este p rad acina a polinomului X
n
1 = 0, de unde rezulta ca polinomul
X
n
1 = 0 are r 1 radacini, adica r 1 n. 2
Fie F un corp xat si f(X) F[X] un polinom arbitrar. Spunem ca a F este
radacina a lui f daca f(a) = 0.
Se poate demonstra imediat armat ia:
Propozit ia 11.2 Daca un polinom f are radacinile distincte a
1
, a
2
, . . . , a
n
atunci
el este divizibil cu polinomul (X a
1
)(X a
2
) . . . (X a
n
).
Exemplul 11.1 Polinomul X
3
+ 1 are o radacina 1 n Z
2
. Deci X
3
+ 1 se divide
cu X + 1:
X
3
+ 1 = (X + 1)(X
2
+ X + 1)
Aceasta este o factorizare completa; deoarece X
2
+X +1 nu are radacini n Z
2
,
el nu poate descompus n produsul a doua polinoame de gradul 1. Acelasi polinom
X
3
+ 1 are n Z
3
pe 2 ca radacina tripla, deci aici putem scrie:
X
3
+ 1 = (X + 1)
3
.
Rezulta ca factorizarea unui polinom depinde de corpul n care este denit.
Din Teorema 11.1 si Propozit ia 11.2 rezulta ca daca a F este un element de
ordin n, atunci X
n
1 se poate descompune n
X
n
1 = (X a)(X a
2
) . . . (X a
n
).
Denit ia 11.3 Un polinom f(X) F[X] de grad n este ireductibil daca nu se poate
descompune n produsul a doua polinoame din F[X] de grad mai mic decat n.
Observat ii;
Orice polinom liniar este ireductibil. Pentru polinoame de grad cel put in 2,
Propozit ia 11.2 arma ca:
Un polinom ireductibil ntr-un corp nu are radacini n acel corp.
Este interesant ca reciproca nu este adevarata decat pentru polinoamele de
grad 2 si 3. Astfel, polinomul f(X) = (X
2
+ X + 1)
2
Z
2
[X], desi nu are
radacini n Z
2
, este reductibil.
11.2. POLINOAME MINIMALE 123


In R singurele polinoame ireductibile sunt de gradul 1 sau 2. Daca un polinom
are grad impar, el are sigur o rad acin a reala, iar daca este de grad par, atunci
are sau cel put in o rad acina reala, sau cel put in doua rad acini complexe de
forma a ib.

In acest ultim caz, el se va divide cu (x a)
2
+ b
2
, care este un
polinom din R[X] de gradul 2.


In corpul complex C, teorema fundamental a a algebrei asigura ca orice polinom
ireductibil are gradul 1.
Denit ia 11.4 Caracteristica unui corp nit F este cel mai mic numar de termeni
ai sumei S = 1 + 1 + . . . + 1 cu proprietatea S = 0.
Propozit ia 11.3 Caracteristica unui corp nit este numar prim.
Demonstrat ie: Sa consideram elementele a
i
= 1 + 1 + . . . + 1 de cate i termeni
ecare. Deoarece nu pot o innitate de valori distincte, e p minim cu proprietatea
i, a
i
= a
i+p
. Rezulta a
p
= a
i+p
a
i
= 0. Deci F are caracteristica p.
Presupunem p = st cu 1 s < p. Evident 0 = a
st
= a
s
+a
s
+. . . +a
s
(t termeni).
Deoarece s < p avem a
s
= 0.

Impart ind relat ia cu a
s
se obt ine 0 = 1+1+. . .+1 = a
t
.
Deci t = p. 2
Corolarul 11.1 Orice corp de caracteristica p este o extensie a lui Z
p
.
Demonstrat ie: Exercit iu.
Corolarul 11.2 GF(q
r
) este un corp de caracteristica q.
Demonstrat ie: Reamintim ca GF(q
r
) cont ine toate polinoamele din Z
q
[X] de grad
cel mult r 1.

In particular, polinoamele de grad 0 (constantele) formeaza un
subcorp izomorf cu Z
q
care are caracteristica q. 2
Propozit ia 11.4

Intr-un corp de caracteristica p avem (a + b)
p
= a
p
+ b
p
Demonstrat ie: Se foloseste binomul lui Newton, n care C
k
p
= 0, k, 0 < k < p. 2
11.2 Polinoame minimale

In cele ce urmeaza vom restrange studiul la cazul F = Z


q
, q num ar prim.
Denit ia 11.5 Fie un element dintr-o extensie a lui Z
q
. Se numeste polinom
minimal al lui polinomul normat g(X) Z
q
[X] de grad minim, cu g() = 0.
Exemplul 11.2 Sa consideram extensia GF(2
3
) generata de radacina a plinomu-
lui 1+X+X
3
. Deoarece este primitiv, avem GF(2
3
) = {0, 1, ,
2
,
3
,
4
,
5
,
6
}.
Polinoamele minimale ale ecarui element sunt date n tabelul:
Element Polinom minimal
0 X
1 1 + X
,
2
,
4
1 + X + X
3

3
,
5
,
6
1 + X
2
+ X
3
124 PRELEGEREA 11. ALTE DEFINIT II ALE CODURILOR CICLICE
Propozit ia 11.5 Un polinom minimal g(X) Z
q
[X] este ireductibil peste Z
q
.
Demonstrat ie: Daca ar exista descompunerea g(X) = u(X)v(X) cu u(X), v(X)
Z
q
[X], atunci vom avea u() = 0 sau v() = 0, ceea ce contrazice denit ia polino-
mului minimal pentru . 2
Propozit ia 11.6 Daca f(X) Z
q
[X] verica f() = 0 atunci g(X)|f(X).
Demonstrat ie: Conform identitat ii mpart irii, avem
f(X) = q(X)g(X) + r(X) cu grad(r(X)) < grad(g(X)).
Cum f() = 0, g() = 0, va rezulta r() = 0, contradict ie.
Singura posibilitate ram ane r(X) 0, deci f(X) = q(X)g(X). 2
Din Propozit iile 11.5 si 11.6 rezulta ca un polinom normat peste Z
q
care admite
pe ca rad acina este polinom minimal al lui . Acest polinom este unic.
Teorema 11.2 Fie GF(q
k
). Atunci exista un polinom minimal al lui de grad
cel mult k.
Demonstrat ie: Dupa cum am vazut (Prelegerea 8), GF(q
k
) are dimensiunea k. O
baza a lui este {1}, {X}, . . . , {X
k1
}. Deci cele k + 1 elemente 1, ,
2
, . . . ,
k

GF(q
k
) sunt liniar dependente.
Rezulta ca exista un polinom de grad maxim k pentru care este radacin a. 2
Teorema 11.3 Solut iile ecuat iei X
q1
1 = 0 dau elementele nenule din Z
q
.
Demonstrat ie: Elementele nenule din Z
q
formeaza grup multiplicativ. Ordinul
ecarui element divide ordinul grupului, care este q 1 (Teorema 11.1).
Fie Z
q
\ {0}; subgrupul ciclic generat de este 1, ,
2
, . . . ,
t1
unde b
t
= 1
si t|q 1. Deci
q1
= 1.

In plus, ecuat ia X
q1
1 = 0 are q 1 radacini. 2
Teorema 11.4 X
m
1|X
n
1 m|n.
Demonstrat ie: : Fie n = md. Cum Y 1 divide pe Y
d
1, daca se ia Y = X
m
,
vom avea X
m
1|X
md
1.
: Sa presupunem ca X
m
1|X
n
1 si e n = md + s, (s < m). Avem
X
n
1 = X
s
(X
md
1) + X
s
1 = q(X)(X
m
1) + r(X) cu grad(r(X)) = s < m.
Pentru a verica ipoteza, trebuie ca s = 0, deci n = md. 2
Teorema 11.5 Fie f(X) Z
q
[X] si o radacina a sa (eventual dintr-o extensie
a lui Z
q
). Atunci si
q
este radacina a lui f(X).
Demonstrat ie: Scriem f(X) = a
0
+ a
1
X + . . . + a
n
X
n
. Cum Z
q
este corp de carac-
teristica q, este adevarat a relat ia (a + b)
q
= a
q
+ b
q
(Propozit ia 11.4).
De asemenea (Teorema 11.3) a Z
q
\ {0} avem a
q1
1 = 0, deci a
q
= a.
Atunci se poate scrie
(f(X))
q
= a
q
0
+ a
q
1
X
q
+ . . . + a
q
n
(X
n
)
q
= a
0
+ a
1
X
q
+ . . . + a
n
X
nq
= f(X
q
).

In particular, f(
q
) = (f())
q
= 0. 2
11.2. POLINOAME MINIMALE 125
Teorema 11.6 Orice polinom normat ireductibil peste Z
q
de grad m este un factor
al polinomului X
q
m
X.
Demonstrat ie: Daca g(X) = X, armat ia este banala.
Sa presupunem ca g(X) = X si e GF(q
m
) o radacin a nenul a a sa, deci
g() = 0. Atunci (Teorema 11.3) satisface ecuat ia X
q
m
1
1 = 0, deci (Propozit ia
11.6) X
q
m
1
1 se divide cu polinomul minimal g(X). 2
Teorema 11.7 Orice factor ireductibil g(X) Z
q
[X] al lui X
q
m
X are gradul cel
mult m.
Demonstrat ie: Fie g(X)|X
q
m
X, ireductibil peste Z
q
, cu grad(g(X)) = k.
Vom considera algebra polinoamelor modulo g(X), n care luam = {X}. Se
stie (Prelegerea 8) ca g() = 0. Un element oarecare din aceasta algebra este de
forma
= a
0
+ a
1
+ . . . + a
k1

k1
.
Atunci
q
m
= a
q
m
0
+a
q
m
1

q
m
+. . . +a
q
m
k1
(
k1
)
q
m
= a
0
+a
1

q
m
+. . . +a
k1
(
q
m
)
k1
=
a
0
+ a
1
+ . . . + a
k1

k1
=
deoarece GF(q
m
) are tot caracteristica q ca si Z
q
, iar ind o rad acina a lui g(X),
este rad acina si a lui X
q
m
X, deci
q
m
= , de unde rezulta
jq
m
=
j
j 0.
Am obt inut n nal faptul ca este o solut ie a ecuat iei X
q
m
X = 0. Sunt
posibile q
k
asemenea elemente distincte, iar cum ecuat ia are q
m
rad acini, rezulta
q
k
q
m
sau k m. 2
Teorema 11.8 Fie GF(q
m
) de polinom minimal g(X), grad(g(X)) = k si
ord() = t. Atunci
(i) t|q
k
1;
(ii) k este minim cu proprietatea (i).
Demonstrat ie: Stim (Teorema 11.6) ca g(X) este un factor al lui X
q
k
X; deci

q
k
= , de unde rezulta t|q
k
1.
Sa presupunem acum ca exista p < k cu t|q
p
1. Atunci
q
p
1
= 1, adica este
o radacin a a ecuat iei X
q
p
X = 0, deci g(X) este un factor al polinomului X
q
p
X.
Conform Teoremei 11.7, rezulta k p, contradict ie. 2
Teorema 11.9 Fie polinomul g(X) Z
q
[X], grad(g(X)) = m si GF(q
m
) o
radacina a sa. Atunci ,
q
,
q
2
, . . . ,
q
m1
sunt toate radacinile lui g(X).
Demonstrat ie: Deoarece g() = 0, avem conform Teoremei 11.5 ca
q
,
q
2
, . . . ,

q
m1
sunt si ele rad acini ale lui g(X). De asemenea, conform Teoremei 11.6, este
rad acin a a lui X
q
m
X, adica
q
m
= . Mai ram ane de aratat ca aceste rad acini
sunt distincte. Presupunem ca exista 0 i < j < m cu
q
i
=
q
j
. Avem
=
q
m
=

q
j

q
mj
=

q
i

q
mj
=
q
m+ij
Deci este radacin a a polinomului X
q
m+ij
= X si cu Teorema 11.7,
grad(g(X)) = m m + i j < m, contradict ie. 2
Din Teorema 11.9 rezulta ca n extensia GF(q
m
)[X] se poate scrie
g(X) = (X )(X
q
) . . . (X
q
m1
).
126 PRELEGEREA 11. ALTE DEFINIT II ALE CODURILOR CICLICE
Teorema 11.10 Fie g(X) un polinom normat ireductibil peste Z
q
, grad(g(X)) =
m, si o radacina a sa din GF(q
m
). Atunci toate radacinile lui g(X) au acelasi
ordin.
Demonstrat ie: Fie p = ord(), p

= ord(
q
j
) care conform Teoremei 11.9 este
tot rad acina a lui g(X). Avem:

q
j

p
= (
p
)
q
j
= 1 si deci p

|p.
De asemenea,

q
m

q
j

q
mj

q
j

q
mj
= 1 p|p

.
S-a mai folosit Teorema 11.8, conform careia p divide q
m
1 dar nu divide nici
un numar de forma q
s
1 cu s < m.
Deci p = p

. 2
11.3 Denirea codurilor ciclice prin radacini
O alta metoda de denire a unui cod ciclic consta n a da init ial toate rad acinile
(eventual ntr-o extensie a lui Z
q
) cuvintelor - cod, considerate ca polinoame.
Denit ia 11.6 Fie
1
,
2
, . . . ,
r
elemente dintr-o extensie a lui Z
q
. Codul ciclic
A este format din toate elementele {f(X)} din algebra polinoamelor modulo X
n
1
care admit pe
i
, 1 i r ca radacini simple.
De remarcat ca n aceasta denit ie n este deocamdata nedeterminat.
Conform Denit iei 11.6, f(X) se va divide cu ecare polinom minimal m
i
(X)
corespunzator radacinii
i
(1 i r). Deci polinomul generator al codului ciclic
este
g(X) = cmmmc {m
1
(X), m
2
(X), . . . , m
r
(X)} .
Propozit ia 11.7 A = ({g(X)}).
Demonstrat ie: Este lasat a ca exercit iu.
Deoarece polinomul generator g(X) divide pe X
n
1, rezulta ca ecare
i
este
rad acin a a lui X
n
1. Deci ordinul ord(
i
) al ecarei radacini
i
(1 i r) va
divide pe n. O modalitate naturala de denire a lui n este
n = cmmmc {ord(
1
), ord(
2
), . . . , ord(
r
)}
Un caz particular important este acela n care toate rad acinile
1
,
2
, . . . ,
r
sunt
puteri ale unui anumit element, adica

i
=
u
i
, 1 i r.
Fie p = ord(). Atunci polinomul minimal m
i
(X) al lui
i
va avea (Teorema 11.9)
toate rad acinile printre elementele
u
i
,
qu
i
,
q
2
u
i
, . . ..
Numarul factorilor lui g(X) si gradul ecarui polinom minimal m
i
(X) se vor
determina atunci din ordinul p si din exponent ii u
i
, qu
i
, q
2
u
i
, . . . (1 i r).

Intr-
adevar, num arul de clase de resturi modulo p n succesiunea u
i
, qu
i
, . . . va da gradul
polinomului minimal m
i
(X).
11.3. DEFINIREA CODURILOR CICLICE PRIN R

AD

ACINI 127
Exemplul 11.3 Fie GF(2
4
) primitiv, radacina a polinomului 1 + X + X
4
,
ireductibil peste Z
2
. Sa denim un cod care sa aiba ca radacini ,
2
,
3
,
4
,
5
,
6
.
Fiind primitiv, ord() = 2
4
1 = 15 (vezi si Prelegerea 8, Exemplul 8.8).
Fie m
i
(X) polinomul minimal al radacinii
i
, 1 i 6.
Radacinile lui m
1
(X) sunt ,
2
,
4
,
8
(
16
= ), deci
m
1
(X) = m
2
(X) = m
4
(X) = (X )(X
2
)(X
4
)(X
8
).
Acest polinom este cunoscut, anume 1 + X + X
4
.
Radacinile lui m
3
(X) sunt
3
,
6
,
12
,
24
=
9
(
18
=
3
), deci m
3
(X) este un
polinom de gradul 4, egal cu m
6
(X). Notam m
3
(X) = a
0
+a
1
X+a
2
X
2
+a
3
X
3
+X
4
.
Detaliind m
3
(
3
) = 0, avem
a
0

1
0
0
0

+ a
1

0
0
0
1

+ a
2

0
0
1
1

+ a
3

0
1
0
1

1
1
1
1

0
0
0
0

.
de unde se poate scrie sistemul de ecuat ii
a
0
+ 1 = 0, a
3
+ 1 = 0, a
2
+ 1 = 0, a
1
+ a
2
+ a
3
+ 1 = 0
cu solut ia a
0
= a
1
= a
2
= a
3
= 1, deci m
3
(X) = m
6
(X) = 1 + X + X
2
+ X
3
+ X
4
.
Radacinile lui m
5
(X) sunt
5
,
10
(
20
=
5
), deci m
5
(X) este un polinom de
gradul 2 : m
5
(X) = b
0
+ b
1
X + X
2
. Cum m
5
(
5
) = 0, se obt ine:
b
0

1
0
0
0

+ b
1

0
1
1
0

1
1
1
0

0
0
0
0

care are solut ia b


0
= b
1
= 1, deci m
5
(X) = 1 + X + X
2
.
Polinomul generator este
g(X) = cmmmc{m
1
(X), m
2
(X), m
3
(X), m
4
(X), m
5
(X), m
6
(X)} =
= m
1
(X)m
3
(X)m
5
(X) = (1 + X + X
4
)(1 + X + X
2
+ X
3
+ X
4
)(1 + X + X
2
) =
1 + X + X
2
+ X
4
+ X
5
+ X
8
+ X
10
.
De remarcat ca era sucient sa cerem ca ,
3
,
5
sa e radacini ale codului.
Exemplul 11.4 Fie =
89
unde GF(2
11
) este primitiv. Deoarece
2
11
1 = 89 23, rezulta
23
=
2
11
1
= 1.
Sa consideram drept radacini elementele ,
3
,
9
,
16
.
Fie m(X) polinomul minimal al lui . Radacinile lui m(X) sunt (conform Teo-
remei 11.9) ,
2
,
4
,
8
,
16
,
32
=
9
,
18
,
36
=
13
,
26
=
3
,
6
,
12
. (
24
= )
Deci m(X) este un polinom de gradul 11 care are ca radacini pe ,
3
,
9
,
16
,
deci polinomul generator al codului respectiv este g(X) = m(X).
Fie polinomul f(X) = a
0
+ a
1
X + . . . + a
n1
X
n1
Z
q
[X] si o rad acina a sa.
Atunci 0 = f() = a
0
+ a
1
+ a
2

2
+ . . . + a
n1

n1
, sau altfel scris:
(a
0
a
1
a
2
. . . a
n1
)

.
.
.

n1

= 0
128 PRELEGEREA 11. ALTE DEFINIT II ALE CODURILOR CICLICE
Deci cuvantul corespunzator polinomului f(X) este n spat iul nul al matricii
(1 . . .
n1
) (1).
Aceasta este si condit ia de divizibilitate a polinomului f(X) cu polinomul mini-
mal m(X) al lui . Mult imea polinoamelor care satisfac condit ia formeaza idealul
generat de m(X). Dimensiunea acestui ideal este (Prelegerea 9) n k unde
k = grad(m(X)). Deci spat iul liniar generat de matricea (1) are dimensiunea k.
Prin urmare, a cere ca f(X) sa admita pe
1
,
2
, . . . ,
r
GF(q
m
) ca radacini
este echivalent cu a cere ca vectorul corespunzator sa apart ina spat iului nul al ma-
tricii
H
mr,n
=

1
1

2
1
. . .
n1
1
1
2

2
2
. . .
n1
2
.
.
.
1
r

2
r
. . .
n1
r

Exemplul 11.5 Sa revenim la Exemplul 11.3. Polinomul {f(X)} apart ine codului
respectiv daca si numai daca vectorul corespunzator apart ine spat iului nul al matricii
H =

1
2

10

11

12

13

14
1
3

12
1
3

12
1
3

12
1
5

10
1
5

10
1
5

10
1
5

10
1
5

10

1 0 0 0 1 0 0 1 1 0 1 0 1 1 1
0 1 0 0 1 1 0 1 0 1 1 1 1 0 0
0 0 1 0 0 1 1 0 1 0 1 1 1 1 0
0 0 0 1 0 0 1 1 0 1 0 1 1 1 1
1 0 0 0 1 1 0 0 0 1 1 0 0 0 1
0 0 0 1 1 0 0 0 1 1 0 0 0 1 1
0 0 1 0 1 0 0 1 0 1 0 0 1 0 1
0 1 1 1 1 0 1 1 1 1 0 1 1 1 1
1 0 1 1 0 1 1 0 1 1 0 1 1 0 1
0 1 1 0 1 1 0 1 1 0 1 1 0 1 1
0 1 1 0 1 1 0 1 1 0 1 1 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

S-a obt inut o matrice 12 15, desi - conform rezultatelor teoretice, n = 15, n
k = 10, k = 5 si deci matricea de control a codului ar trebui sa aiba dimensiunile
(n k) n = 10 15. Se observa nsa ca de fapt ultima linie este nula, iar
urmatoarele doua linii sunt identice (deci penultima se poate elimina).
11.4. ALT

A DEFINIT IE A CODURILOR CICLICE 129


11.4 Alta denit ie a codurilor ciclice
Vom mai prezenta si o a treia construct ie a codurilor ciclice, realizata de Edwin
Berlekamp n 1968.
Denit ia 11.7 Fie polinomul Tr(X) = X +X
q
+X
q
2
+. . . +X
q
r1
GF(q
r
)[X].
Se numeste urma lui GF(q
r
) expresia Tr().
Propozit ia 11.8 Tr este o aplicat ie : GF(q
r
) Z
q
.
Demonstrat ie: Trebuie aratat ca GF(q
r
) avem Tr() Z
q
. Pentru aceasta
este sucient sa arat am ca Tr() veric a ecuat ia X
q
X = 0. Folosind faptul ca
ca GF(q
r
) este corp de caracteristica q si ca GF(q
r
) avem
q
r
= , se veric a
imediat relat ia [TR()]
q
= TR(). 2
Propozit ia 11.9 Tr este aplicat ie liniara.
Demonstrat ie: Relat ia Tr( + ) = Tr() + Tr() este usor de vericat, deoarece
se lucreaza n corpuri de caracteristica q. 2
Propozit ia 11.10 Pentru orice a Z
q
exista q
r1
valori GF(q
r
) cu Tr() =
a.
Demonstrat ie: Fiecare ecuat ie Tr(X) = a admite maxim q
r1
rad acini, iar num arul
de elemente a posibile este q. Mai trebuie aratat ca toate cele q ecuat ii au radacini
distincte. Aceasta se poate deduce foarte simplu folosind derivata formala ntr-un
corp de caracteristica q: toate ecuat iile au aceeasi derivat a: 1. 2
Teorema 11.11 Polinomul Tr(X) se poate descompune n GF(q
r
) n produs de
polinoame minimale.
Demonstrat ie: Demonstrat ia se bazeaza pe urmatorul algoritm:
(1) Fie polinomul g(X) = Tr(X);
(2) Se considera GF(q
r
) cu g() = 0. Deci g(X) este divizibil cu polinomul
minimal m(X) al lui .
(3) g(X) := g(X)/m(X). Daca g(X) = 1, STOP, altfel se reia pasul (2).
Existent a rad acinilor pentru g(X) (pasul (2)) este asigurata de faptul ca n
GF(q
r
) orice polinom ireductibil este polinom minimal.
Exemplul 11.6 Sa consideram GF(2
4
), deci q = 2, r = 4. Aici se poate verica
descompunerea
Tr(X) = X + X
2
+ X
4
+ X
8
= X(1 + X)(1 + X + X
2
)(1 + X + X
4
)
care sunt toate polinoame minimale.
Fie GF(2
4
) radacina (primitiva) a ecuat iei 1 + X + X
4
= 0. Deci toate
elementele nenule din GF(2
4
) se pot scrie ca puteri ale lui . Vom folosi aceasta
pentru a lista valorile funct iei Tr : GF(2
4
) Z
2
:
130 PRELEGEREA 11. ALTE DEFINIT II ALE CODURILOR CICLICE
X Tr(X) X Tr(X) X Tr(X) X Tr(X)
0 0
3
1
7
1
11
1
1 0
4
0
8
0
12
1
0
5
0
9
1
13
1

2
0
6
1
10
0
14
1
Dupa cum se observa, sunt 8 = 2
3
valori 0 si 8 valori 1.
Putem da acum teorema principala care deneste codurile ciclice folosind oper-
atorul Tr:
Teorema 11.12 Fie n numar natural, q numar prim, k ordinul lui q modulo n
(q
k
1 mod n) si GF(q
k
) element primitiv de ordin n. Atunci
A = {c

= (Tr(), Tr(), Tr(


2
), . . . , Tr(
n1
))| GF(q
k
)}
este un (n, k) - cod ciclic peste Z
q
.
Demonstrat ie: Din Propozit ia 11.9 rezulta ca A este cod liniar.
Se veric a apoi ca c

1 A este o permutare ciclica a lui c

; deci A este
cod ciclic. Deoarece este primitiv, nseamn a ca polinomul sau minimal m(X) =
h
0
+ h
1
X + . . . + h
k
X
k
are gradul k. Daca c

= (c
0
, c
1
, . . . , c
n1
), avem
k

i=0
c
i
h
i
= Tr(m()) = Tr(0) = 0
care constituie una din cele n k ecuat ii de control pentru A. Deoarece m(X) este
minimal (deci ireductibil), h(X) = X
k
m(X
1
) este polinomul de control pentru A.
Cum gradul lui este k, avem un (n, k) - cod ciclic peste Z
q
. 2
De remarcat ca aceasta teorema deneste numai codurile ciclice ireductibile
(care nu cont in subcoduri ciclice proprii), deci clasa lor este inclusa strict n clasa
codurilor ciclice data de cele doua denit ii anterioare (prin ideale si prin rad acinile
polinomului generator).
Exemplul 11.7 Sa luam n = 15, q = 2, deci k = 4.

In GF(2
4
) vom lua ,
radacina polinomului 1 +X +X
4
. Se stie ca ea este un element primitiv. Aplicat ia
Tr este Tr(X) = X+X
2
+X
4
+X
8
iar codul A este format din 16 cuvinte de forma
(Tr(), Tr(), . . . , Tr(
n1
)), GF(2
4
).
Pentru = 0, 00 . . . 0 A.
Pentru = 1, (Tr(1), Tr(), . . . , Tr(
n1
)) = 000100110101111
Celelalte 14 cuvinte sunt permutarile circulare ale acestuia.
Polinomul de control al codului este h(X) = X
4

1 +
1
X
+
1
X
4

= 1 +X
3
+X
4
,
iar polinomul generator
g(X) =
X
16
X
X
4
+ X
3
+ 1
= X + X
4
+ X
5
+ X
7
+ X
9
+ X
10
+ X
11
+ X
12
,
al carui vector corespunzator se obt ine n construct ia de sus pentru =
2
.
Acesta este un (15, 4) - cod ciclic, ireductibil.
De remarcat ca pentru n = 15 sunt numai doua astfel de coduri, celalalt ind
codul dual (radacina polinomului 1 + X
3
+ X
4
este de asemenea primitiva).
11.5. EXERCIT II 131
11.5 Exercit ii
11.1 Demonstrat i Corolarul 11.1.
11.2 Demonstrat i Propozit ia 11.7
11.3 Construit i urmatoarele corpuri:
(a) GF(2
2
);
(b) GF(2
3
) folosind polinomul 1 + X
2
+ X
3
;
(c) GF(2
4
) folosind polinomul 1 + X
3
+ X
4
;
(d) GF(2
5
) folosind polinomul 1 + X
2
+ X
5
.
11.4 Gasit i o extensie a lui Z
2
n care X
9
1 sa se descompuna n factori liniari.
11.5 Gasit i toate elementele primitive din GF(2
3
) si GF(2
4
).
11.6 Gasit i toate elementele primitive din GF(3
2
) si GF(5
2
).
11.7 Construit i GF(2
4
) ca o extensie a lui GF(2
2
).
11.8 Fie GF(2
4
), radacina a polinomului 1 + X + X
4
.
Gasit i polinoamele minimale al lui =
7
si =
10
.
11.9 Gasit i polinoamele minimale al tuturor elementelor din:
- GF(2
3
), generat cu 1 + X + X
3
;
- GF(2
5
), generat cu 1 + X
2
+ X
5
;
- GF(3
2
), generat cu 2 + X + X
2
;
- GF(5
2
), generat cu 3 + 2X + X
2
.
11.10 Orice element nenul din GF(q
m
) are un ordin prim cu q.
11.11 Gasit i polinomul generator al unui cod ciclic de lungime 15, de radacini
1,
5
,
7
, GF(2
4
) ind radacina a polinomului 1 + X + X
4
.
Construit i matricea de control a codului.
Aratat i ca v(X) este polinom - cod daca si numai daca ponderea w(v) este para.
11.12 Gasit i polinomul generator al unui cod ciclic de radacini
2
,
3
,
6
unde
GF(2
3
) este radacina polinomului 1 + X + X
3
.
11.13 Aratat i ca orice cuvant - cod al unui cod ciclic are pondere para daca si
numai daca 1 + X este un factor al polinomului generator.
11.14 Sa se descompuna Tr(X) n produs de polinoame minimale n corpurile:
(a) GF(2
3
) (b) GF(2
5
) (c) GF(3
2
) (d) GF(3
3
) (e) GF(5
2
).
11.15 Folosind Teorema 11.12 sa se construiasca toate codurile ireductibile pentru
GF(2
3
), GF(2
5
), GF(3
2
).
11.16 Vericat i ca polinomul h(X) construit n demonstrat ia Teoremei 11.12 este
polinomul generator al codului dual.
Prelegerea 12
Coduri BCH
Codurile BCH constituie cea mai relevanta clasa de coduri ciclice. Ele au fost
denite n mod independent de Bose si Chaudhuri pe de-o o parte, Hocquenheim
de pe de-alta parte. Numele de BCH (Bose - Chaudhuri - Hocquenheim) a fost
dat de Peterson, care s-a ocupat de ele n mod special, construind si algoritmul de
decodicare.
12.1 Denirea codurilor BCH
Denit ia 12.1 Fie q numar prim, m
0
, m, d numere naturale si GF(q
m
). Un
cuvant {f(X)} este n codul BCH daca polinomul are ca radacini

m
0
,
m
0
+1
, . . . ,
m
0
+d2
.

In majoritatea cazurilor studiate se considera m


0
= 0 sau m
0
= 1.
Teorema 12.1 Lungimea n a cuvintelor - cod este egala cu ordinul e al lui .
Demonstrat ie: Conform construct iei codurilor ciclice bazata pe rad acinile polino-
mului generator, lungimea n a cuvintelor - cod este cel mai mic multiplu comun al
ordinelor rad acinilor.

In cazul codurilor BCH avem
(
m
0
)
n
=
m
0
n
= 1 si 1 = (
m
0
+1
)
n
=
m
0
+n
=
m
0

n
deci
n
= 1. Prin urmare e|n si n e.
De asemenea, (
j
)
e
= (
e
)
j
= 1 j = m
0
, m
0
+ 1, . . . , m
0
+d 2, adica n e.
Rezulta n = e. 2
De remarcat ca, daca este primitiv, atunci e = q
m
1.
Teorema 12.2

Intr-un cod BCH denit de radacinile
m
0
,
m
0
+1
, . . . ,
m
0
+d2
(
GF(q
m
)), distant a minima a codului este cel put in d (si deci codul poate corecta cel
put in orice combinat ie de t
_
d 1
2
_
erori).
133
134 PRELEGEREA 12. CODURI BCH
Demonstrat ie: Un cod BCH este spat iul nul al matricii
H =
_
_
_
_
_
_
1
m
0
(
m
0
)
2
. . . (
m
0
)
n1
1
m
0
+1
(
m
0
+1
)
2
. . . (
m
0
+1
)
n1
.
.
.
1
m
0
+d2
(
m
0
+d2
)
2
. . . (
m
0
+d2
)
n1
_
_
_
_
_
_
Sa consideram urmatorul determinant, obt inut prin alegerea arbitrara a d 1
coloane din H:
D =

(
m
0
)
j
1
(
m
0
)
j
2
. . . (
m
0
)
j
d1
(
m
0
+1
)
j
1
(
m
0
+1
)
j
2
. . . (
m
0
+1
)
j
d1
.
.
.
(
m
0
+d2
)
j
1
(
m
0
+d2
)
j
2
. . . (
m
0
+d2
)
j
d1

=
=
m
0
(j
1
+j
2
+...+j
d1
)

1 1 . . . 1

j
1

j
2
. . .
j
d1
.
.
.
(
j
1
)
d2
(
j
2
)
d2
. . . (
j
d1
)
d2

=
=
m
0
(j
1
+j
2
+...+j
d1
)

i>k
(
j
i

j
k
) = 0
pentru ca j
i
= j
k
daca i = k.
Deci orice submult ime formata cu maxim d 1 coloane din H este liniar inde-
pendenta de unde - conform Teoremei 2.4 (Prelegerea 2) - distant a minima a codului
este cel put in d. 2
Exemplul 12.1 Daca se lucreaza n binar, puterile pare ale radacinilor se pot omite
din lista(daca
i
este radacina, atunci si
2i
este radacina - conform Teoremei 11.9,
Prelegerea 11). Atunci un cod BCH binar corector de 3 erori este dat de radacinile
,
3
,
5
, unde este un element primitiv dintr-o extensie a lui Z
2
. De exemplu,
daca = , radacina a polinomului 1 +X +X
4
, se obt ine codul din Exemplul 11.3,
Prelegerea 11.
Exemplul 12.2 Fie GF(3
2
) generat de radacina a polinomului ireductibil 2 +
X + X
2
. Deoarece ord() = 8, orice cod va avea lungimea 8. Sa construim codul
BCH de radacini
2
,
3
,
4
. Polinoamele minimale sunt:
m
2
(X) = 1 + X
2
cu radacini
2
,
6
;
m
3
(X) = 2 + X +X
2
cu radacini
3
,
m
4
(X) = 1 + X numai cu radacina
4
.
Deci polinomul generator este
g(X) = (1 + X
2
)(2 + X +X
2
)(1 + X) = 2 + X
2
+X
3
+ 2X
4
+X
5
.
Codul este un (8, 3) - cod ciclic. Deoarece printre radacini este si , se poate
considera m
0
= 1, d = 5, deci codul poate corecta cel put in doua erori.
De remarcat ca daca folosim acest cod drept cod liniar, cum ponderea minima
a cuvintelor sale este 4 (de exemplu 02010201 este cuvant - cod), distant a minima
este 4, deci codul nu poate corecta decat o singura eroare. Astfel, tratarea codurilor
ciclice sub forma de coduri liniare scade de obicei puterea de corect ie a erorilor.
12.2. ALGORITMUL PETERSON DE DECODIFICARE 135
Numerele m, m
0
, d, q sunt parametrii codului BCH. Ideea este de a-l mari pe d,
pentru a putea corecta cate mai multe combinat ii de erori. Acest lucru este posibil
totdeauna, deoarece m si q sunt arbitrari.
Sa observam ca pentru primitiv, toate puterile lui pana la q
m
1 sunt
distincte.

In cazul binar, avem urmatorul rezultat:
Teorema 12.3 Fie m un numar natural oarecare si GF(2
m
) primitiv. Atunci
exista un cod BCH de lungime n = 2
m
1 care corecteaza orice combinat ie de
t
_
2
m
1
2
_
erori independente, folosind mt pozit ii de control.
Demonstrat ie: Vom considera codul binar denit de rad acinile ,
2
, . . . ,
2t
. Acesta
este un cod BCH pentru q = 2, m
0
= 1, d = 2t +1, n = 2
m
1 si care are distant a
minima cel put in 2t + 1. Pentru ca rad acinile ment ionate mai sus sa e distincte,
trebuie ca 2t 2
m
1.
Sa observam ca orice putere para a lui este rad acina a unui polinom minimal
al unei puteri impare anterioare a lui . Deci este sucient sa dam la nceput doar
rad acinile ,
3
, . . . ,
2t1
ale cuvintelor codului binar.
Avem - dupa denit ie: g(X) = cmmmc{m
1
(X), m
3
(X), . . . , m
2t1
(X)}.
Pe de - alta parte, m
i
(X)|X
n
1 = X
2
m
1
1 si deci - conform Teoremei 11.7
(Prelegerea 11), grad(m
i
(X)) m. Din cele doua relat ii rezulta grad(g(X)) mt.
Cum grad(g(X)) da numarul de simboluri de control, teorema este demonstrata. 2
12.2 Algoritmul Peterson de decodicare
Fie codul BCH denit de rad acinile
m
0
,
m
0
+1
, . . . ,
m
0
+2t1
(d = 2t + 1) cu
GF(q
m
).
Un asemenea cod corecteaza orice combinat ie de maxim t erori independente.
Fie {f(X)} un cuvant - cod transmis si
{r(X)} = {f(X) + e(X)} = {f(X)} +{e(X)}
secvent a recept ionat a, unde {e(X)} este vectorul - eroare.
Avem, pentru j = m
0
, m
0
+ 1, . . . , m
0
+ 2t 1 :
S
j
= r(
j
) = f(
j
) +e(
j
) = e(
j
).
S
j
se numesc componentele sindromului.
La decodicare, tipul e de eroare este determinat complet daca se stiu:
Valorile erorilor Y
i
Z
q
;
Localizarile erorilor X
i
GF(q
m
).
Vom nota pozit iile elementelor cuvintelor din GF(q
m
) prin puterile lui ; pe pozit ia
i n e() se aa coecientul lui
i1
, deci
i1
va localiza a i - a componenta dintr-un
cuvant.
Daca au intervenit t erori, modelul de eroare este complet caracterizat de cunoas-
terea celor t perechi nenule (Y
i
, X
i
), 1 i t.
136 PRELEGEREA 12. CODURI BCH
Putem conveni (evident) ca
Y
i
= 0 X
i
= 0.
De remarcat ca X
i
nu reprezint a
i
ci un
j
arbitrar care va trebui aat.
Deci, a gasi pe {e(X)} revine la a determina 2t elemente X
i
, Y
i
, 1 i t,
grupate n t perechi, cu proprietatea Y
i
= 0 i, t < i q
m
1. Avem
S
j
= e(
j
) =
t

i=1
Y
i
X
j
i
, m
0
j m
0
+ 2t 1.
Atunci
(S
j
)
q
=
_
t

i=1
Y
i
X
j
i
_
q
=
t

i=1
Y
q
i
X
jq
i
=
t

i=1
Y
i
X
jq
i
= S
jq
Deci, determinarea polinomului - eroare {e(X)} se reduce la aarea solut iilor
(Y
i
, X
i
), 1 i t ale sistemului de ecuat ii
t

i=1
Y
i
X
j
i
= S
j
, m
0
j m
0
+ 2t 1. (1)
Daca au intervenit k (k < t) erori, se completeaza cele k perechi nenule cu alte
tk perechi nule (Y
i
, X
i
). De fapt, acest numar k nu este cunoscut apriori; de aceea,
se pleaca de la t erori potent iale (maximul pe care codul BCHl poate corecta sigur),
caracterizate de t perechi (Y
i
, X
i
). Problema care se pune este deci de a-l determina
pe k si cele 2k necunoscute Y
i
, X
i
(1 i k).
Orice metoda de corectare a erorilor revine la rezolvarea sistemului de ecuat ii
(1), care este un sistem neliniar de 2t ecuat ii cu 2t necunoscute, problema NP -
completa.
Fie polinomul
(X
1
X)(X
2
X) . . . (X
t
X) =
t
+
t1
(X) +. . . +
1
(X)
t1
+(X)
t
.
unde
j
sunt funct iile simetrice date de relat iile lui V i` ete.
Daca n aceasta relat ie se ia X = X
i
(i = 1, . . . , t), obt inem
X
t
i
+ (1)
1
X
t1
i
+. . . + (1)
t1

t1
X
i
+ (1)
t

t
= 0, 1 i t.

Inmult im cu Y
i
X
j
i
si sumam dupa i. Se obt ine:
t

i=1
Y
i
X
j+t
i
+(1)
1
t

i=1
Y
i
X
j+t1
i
+. . . +(1)
t1

t1
t

i=1
Y
i
X
j+1
i
+(1)
t

t
Y
i
X
j
i
=
0, j = m
0
, m
0
+ 1, . . . , m
0
+t 1
relat ie care se poate scrie
S
j
(1)
t

t
+S
j+1
(1)
t1

t1
+. . . +S
j+t1
(1)
1
+S
j+t
= 0,
m
0
j m
0
+t 1 (2)
Algoritmul lui Peterson de corectare a k (k t) erori ntr-un cod BCH este:
12.2. ALGORITMUL PETERSON DE DECODIFICARE 137
1. Se rezolva sistemul (2) n care necunoscutele sunt (1)
p

p
, 1 p t;
2. Se nlocuiesc valorile aate n ecuat ia
X
t
+ (1)
1
X
t1
+. . . + (1)
t1

t1
X + (1)
t

t
= 0
si se aa cele t rad acini X
1
, X
2
, . . . , X
t
GF(q
m
) ale sale;
3. Cu aceste valori introduse n sistemul (1), se determina din primele t
ecuat ii valorile Y
1
, Y
2
, . . . , Y
t
Z
q
;
4. Daca (Y
i
, X
i
), X
i
=
j
i
sunt cele k t valori nenule ale solut iei obt inute,
atunci:
Pentru k = 0, cuvantul recept ionat este {r(X)} (fara erori);
Pentru 0 < k t, e e(X) =
k

i=1
Y
i
X
j
i
.
Cuvantul - cod decodicat este {f(X)} = {r(X)} {e(X)}.
De remarcat ca n cazul binar, pasul (3) nu mai este necesar, deoarece
Y
i
= 1, i k.
Pentru corectitudinea algoritmului, trebuie studiate compatibilitat ile sistemelor
de ecuat ii (1) si (2).
Teorema 12.4 Sistemul
t

i=1
Y
i
X
j
i
= S
j
, m
0
j m
0
+ t 1, de necunoscute Y
i
este compatibil daca si numai daca au intervenit t erori.
Demonstrat ie: Considerat ca sistem n Y , este liniar; determinantul principal este

X
m
0
1
X
m
0
2
. . . X
m
0
t
X
m
0
+1
1
X
m
0
+1
2
. . . X
m
0
+1
t
X
m
0
+2
1
X
m
0
+2
2
. . . X
m
0
+2
t
.
.
.
X
m
0
+t1
1
X
m
0
+t1
2
. . . X
m
0
+t1
t

= X
m
0
1
X
m
0
2
. . . X
m
0
t

1 1 . . . 1
X
1
X
2
. . . X
t
X
2
1
X
2
2
. . . X
2
t
.
.
.
X
t1
1
X
t1
2
. . . X
t1
t

= X
m
0
1
X
m
0
2
. . . X
m
0
t

1j<it
(X
i
X
j
)
El este nenul numai daca au intervenit t erori, pentru ca atunci tot i X
i
sunt distinct i
si nenuli. 2
Teorema 12.5 Matricea M =
_
_
_
_
_
_
S
m
0
S
m
0
+1
. . . S
m
0
+t1
S
m
0
+1
S
m
0
+2
. . . S
m
0
+t
.
.
.
S
m
0
+t1
S
m
0
+t
. . . S
m
0
+2t1
_
_
_
_
_
_
este nesingulara daca au intervenit t erori si este singulara daca au intervenit
mai put in de t erori.
138 PRELEGEREA 12. CODURI BCH
Demonstrat ie: T inand cont de forma sistemului (1), este posibila descompunerea
matricii M n produs de 3 matrici M = ABA
T
unde:
A =
_
_
_
_
_
_
_
_
_
1 1 . . . 1
X
1
X
2
. . . X
t
X
2
1
X
2
2
. . . X
2
t
.
.
.
X
t1
1
X
t1
2
. . . X
t1
t
_
_
_
_
_
_
_
_
_
B =
_
_
_
_
_
_
Y
1
X
m
1
0 . . . 0
0 Y
2
X
m
2
. . . 0
.
.
.
0 0 . . . Y
t
X
m
t
_
_
_
_
_
_
M este nesingulara daca cele doua matrici din descompunere sunt nesingulare.
Matricea A este nesingulara daca si numai daca valorile X
i
, (1 i t) sunt distincte
si nenule, deci daca au intervenit t erori. Matricea diagonala B este nesingulara daca
toate elementele de pe diagonala principala sunt nenule, deci daca toate perechile
(Y
i
, X
i
), 1 i t sunt nenule - adica au aparut t erori. 2
Aplicarea algoritmului Peterson se face n felul urmator:
1. Folosind polinomul recept ionat {r(X)}, se calculeaza marimile
S
j
= r(
j
), j = m
0
, m
0
+ 1, . . . , m
0
+ 2t 1
2. Se studiaza compatibilitatea sistemului
S
j
(1)
t

t
+S
j+1
(1)
t1

t1
+. . . +S
j+t1
(1)
1
+S
j+t
= 0,
m
0
j m
0
+t 1.
Daca matricea M a sistemului este nesingulara, nseamn a ca au aparut t erori.
Daca M este singulara, atunci se observa ca
t
= 0 (deoarece
t
= X
1
X
2
. . . X
t
)
si - neglijand prima sau ultima din ecuat iile de mai sus, n care se nlocuieste

t
= 0 - se obt ine un nou sistem liniar format din t 1 ecuat ii cu t 1
necunoscute.
Se studiaza matricea acestui nou sistem. Daca ea este nesingulara, nseamn a
ca au aparut t 1 erori. Daca si aceasta este singulara, cum
t1
= 0, se
repeta procedeul.
Primul sistem compatibil (cu matricea nesingulara) care se obt ine va da num a-
rul k t de erori care au intervenit n transmisie, precum si valorile
(1)
1
, (1)
2

2
, . . . , (1)
k

k
.
3. Se introduc valorile determinate mai sus n polinomul
P = X
k
+ (1)
1
X
k1
+. . . + (1)
k1

k1
X + (1)
k

k
si se aa cele k radacini X
1
, X
2
, . . . , X
k
GF(q
m
) ale ecuat iei P = 0 (prin
diverse metode, eventual chiar prin simpla vericare a ecuat iei cu toate ele-
mentele din GF(q
m
)). Aceste radacini vor da localizarile erorilor.
De remarcat ca ordinea de notare a erorilor X
1
, X
2
, . . . , X
m
este neesent ial a.
12.2. ALGORITMUL PETERSON DE DECODIFICARE 139
4. Se introduc aceste solut ii n ecuat iile sistemului
k

i=1
Y
i
X
j
i
= S
j
, j = m
0
, m
0
+ 1, . . . , m
0
+k 1
si se determina valorile erorilor Y
1
, Y
2
, . . . , Y
k
.
5. Se calculeaza astfel polinomul eroare {e(X)}, care se scade din polinomul
recept ionat si se obt ine cuvantul - cod transmis:
{r(X)} {e(X)} = {r(X) e(X)} = {f(X)}
Exemplul 12.3 Fie codul BCH denit de radacinile ,
2
,
3
,
4
,
5

6
unde
GF(2
4
) este element primitiv, radacina a polinomului 1 + X + X
4
(Exemplul 11.3,
Prelegerea 11 si Exemplul 12.1). Deoarece t = 3, acest cod este capabil sa corecteze
maxim 3 erori.
Sa presupunem ca au aparut doua erori, pe pozit iile
3
si
10
(adica pe pozit iile
4 si 11) ale cuvantului transmis. Ele reprezinta polinomul eroare e(X) = X
3
+X
10
.
Sa calculam sindromul (pentru operat ile folosite, a se vedea Exemplele 8.8 si 8.9,
Prelegerea 8):
S
1
= r() = e() =
3
+
10
=
12
S
2
= (S
1
)
2
=
24
=
9
S
3
= r(
3
) = e(
3
) =
9
+
30
=
9
+
0
=
7
S
4
= (S
2
)
2
=
18
=
3
S
5
= r(
5
) = e(
5
) =
15
+
50
=
0
+
5
=
10
S
6
= (S
3
)
2
=
14
.
Observam ca ntr-o situat ie reala, nu se stie unde sunt localizate erorile si deci
- n cazul n care au intervenit doua erori pe pozit iile
3
si
10
(care nu se cunosc
nca), din vectorul recept ionat se obt ine direct sindromul
S = (S
1
, S
2
, S
3
, S
4
, S
5
, S
6
) = (
12
,
9
,
7
,
3
,
10
,
14
)
fara sa stim din combinat iile caror localizari ale erorilor provin aceste compo-
nente ale sindromului.
Sa consideram sistemul de ecuat ii
_

_
S
1

3
+S
2

2
+S
3

1
= S
4
S
2

3
+S
3

2
+S
4

1
= S
5
S
2

3
+S
4

2
+S
5

1
= S
6
adica
_

12

3
+
9

2
+
7

1
=
3

3
+
7

2
+
7

1
=
10

3
+
3

2
+
10

1
=
14

Inmult im cele trei ecuat ii ale sistemului respectiv cu

7
=
8
,
3
=
12
,
10
=
5
si obt inem:
_

3
+
2

2
+
1
=
11

3
+
4

2
+
1
=
7

12

3
+
8

2
+
1
=
4
Adunam prima ecuat ie la ultimele doua si atunci
_

9

3
+
10

2
=
8

14

3
+
0

2
=
13
140 PRELEGEREA 12. CODURI BCH
Deoarece a doua ecuat ie se obt ine din prima prin nmult ire cu
5
, ele nu sunt in-
dependente; deci au aparut mai put in de 3 erori. Facem
3
= 0 si a doua ecuat ie
va da
2
=
13
. Din prima ecuat ie a sistemului se ajunge la
0
+
1
=
11
, adica

1
=
12
.
Deci, n acest caz k = 2,
1
=
12
,
2
=
13
. Se ajunge la polinomul X
2
+

1
X +
2
= X
2
+
12
X +
13
, care are ca radacini X
1
=
3
, X
2
=
10
.
Am redescoperit astfel cele doua localizari ale erorilor. Codul ind binar, corecta-
rea se face imediat: se modica (din 1 n 0 sau din 0 n 1) bit ii de pe pozit iile 4
respectiv 11 din cuvantul recept ionat.
Exemplul 12.4 Fie codul BCH denit de radacinile ,
2
,
3
,
4
unde GF(2
4
)
este radacina polinomului 1 +X +X
4
. Acest cod are m
0
= 1, m
0
+2t 1 = 4, deci
t = 2; codul poate corecta n mod sigur cel put in doua erori. Sa presupunem ca s-a
recept ionat cuvantul
r = 100100110000100
de 15 componente. Sa determinam cuvantul - cod transmis.
Polinomul corespunzator acestui cuvant este r(X) = 1 + X
3
+ X
6
+ X
7
+ X
12
.
Componentele sindromului sunt
S
1
= r() =
0
S
2
= r(
2
) = (S
1
)
2
=
0
S
3
= r(
3
) =
4
S
4
= r(
4
) = (S
2
)
2
=
0
Trebuie rezolvat sistemul
_
S
1

2
+S
2

1
= S
3
S
2

2
+S
3

1
= S
4
adica
_

0

2
+
0

1
=
4

2
+
4

1
=
0
,
de unde se obt ine
1
=
0
,
1
= .
Polinomul de localizare a erorilor este X
2
+
1
X+
2
= X
2
+X+, cu radacinile
X
1
=
7
, X
2
=
9
. Au aparut deci doua erori, pe pozit iile 8 si 10. Pentru ca suntem
n cazul binar, Y
1
= Y
2
= 1; vectorul - eroare obt inut este e(X) = X
7
+ X
9
, deci
cuvantul - cod transmis este
{f(X)} = {r(X)} {e(X)} = {r(X) + e(X)} = 1 +X +X
6
+X
9
+X
12
adica f = 100100100100100.
12.3 Localizarea erorii la codurile BCH binare
Dupa cum s-a observat, n cazul codurilor BCH binare este sucient sa se localizeze
eroarea; corectarea se face imediat prin complementaritatea bit ilor aat i pe pozit iile
respective. Dupa determinarea valorilor
1
,
2
, . . . ,
t
, algoritmul Peterson nu ex-
pliciteaza modul de rezolvare a ecuat iei de localizare al erorii, care uneori poate
dicil de prelucrat.
Un procedeu ecient de determinare a pozit iilor erorilor pentru codurile BCH
binare a fost realizat de Chien.
Fie polinomul (de localizare a erorii):
S(X) = (1 X
1
X)(1 X
2
X) . . . (1 X
t
X) =
0
+
1
X +
2
X
2
+. . . +
t
X
t
12.3. LOCALIZAREA ERORII LA CODURILE BCH BINARE 141
unde

0
= 1

1
= X
1
+X
2
+. . . +X
t
. . .

t
= X
1
X
2
. . . X
t
(operat iile ind efectuate n binar, semnul este asimilat cu +).
Rad acinile acestui polinom sunt inversele localizarilor erorilor X
1
i
, 1 i t.
Procedeul lui Chien de corectare a erorilor n cazul binar pentru codurile BCH,
este urmatorul:
Fie r = r
0
r
1
. . . r
n1
cuvantul recept ionat; componentele lui se vor decodica pas
- cu - pas (pe masur a ce sunt recept ionate).
Sa consideram primul bit primit r
n1
si sa cercetam daca el este corect sau nu.
Aceasta este echivalent cu a verica daca
n1
este o localizare a erorii, sau daca

(n1)
= este o rad acina a polinomului S(X) de localizare a erorii.
Daca
1
+
2

2
+ . . . +
t

t
= 1 adica S() = 0, atunci a intervenit o eroare
pe pozit ia
n1
si deci componenta r
n1
trebuie corectata.
Daca
1
+
2

2
+ . . . +
t

t
= 1 adica S() = 0, atunci r
n1
s-a recept ionat
corect.
Procedeul se repeta: n general componenta recept ionat a r
ns
este corecta daca

(ns)
=
s
nu este rad acina a polinomului S(X), adica

s
+
2

2s
+. . . +
t

st
= 1

In caz contrar, r
ns
va corectata n r
ns
+ 1.
Algoritmul lui Chien este deci:
1. s := 0;
2. while s n do
(a) s := s + 1;
(b) Se calculeaza P :=
1

s
+
2

2s
+. . . +
t

ts
;
(c) Se decodica a
ns
:= r
ns
+v unde v =
_
0 daca P = 0
1 daca P = 0
Circuitul liniar care implementeaza acest algoritm este:

1

2

t
`
_

`
_

2
`
_

t
t

i=1

si
A
T
E
c
T
E
c
T
E
c
c c c
'
T
E
'
T
E
'
T
E
`
_
E E
E
T
+
. . .
. . .
r
0
, r
1
, . . . , r
n1
142 PRELEGEREA 12. CODURI BCH
Cele t circuite din stanga realizeaza la ecare tact multiplicarea cu
i
.
La momentul init ial blocul A calculeaza suma
1
+
2

2
+ . . . +
t

t
dand la
iesire valoarea 1 (scalar) daca aceasta suma este egala cu 1 si 0 (scalar) daca suma
anterioar a da orice element din GF(2
m
) diferit de 1 = (1, 0, . . . , 0).

In funct ie de
acest rezultat, componenta r
n1
este schimbat a, respectiv pastrata.
La momentul urmator, blocul A calculeaza suma
1

2
+
2

4
+. . . +
t

2t
. Daca
aceasta suma este 1,
2
este rad acina a polinomului de localizare a erorii S(X),
deci
2
=
n2
este o localizare a erorii.

In caz contrar, suma este diferita de
1. La iesirea din blocul A se obt ine scalarul 1 respectiv 0 - componenta r
n2
ind
modicata respectiv pastrata.
Exemplul 12.5 Fie GF(2
4
) primitiv, radacina polinomului 1 + X + X
4
. Sa
presupunem si ca se stiu
1
si
2
. Circuitul care multiplica cu este (Prelegerea 8,
Figura 8.4) circuitul de mpart ire cu m(X) = 1 + X +X
4
:

_
,
+
E E E E E
T
'
cE
c
Circuitul de nmult ire cu
2
este - conform egalitat ii

2
(a
1
+ a
2
+ a
3

2
+ a
4

3
) = a
1

2
+ a
2

3
+ a
3

4
+ a
4

5
= a
3
+ (a
3
+ a
4
) +
(a
1
+a
4
)
2
+a
2

3
urmatorul (vezi si Exemplul 8.10, Prelegerea 8):

_
,
,

_
E E
c E
T
E E
c '
T
T
T
E E
T
'
cE
c
E
c E
+
+
Init ial n elementele de nmagazinare ale celor doua circuite se aa
1
respectiv
2
.
Pentru cazul binar vom nota cu

E
E
E
E
x
1
x
2
x
n
x
1
x
2
. . . x
n
dispozitivul sau care da valoarea (scalar) 0 daca si numai daca
x
1
= x
2
= . . . = x
n
= 0,
si cu
E E
x
x
dispozitivul non.
Atunci, circuitul de implementare a procedeului Chien de localizare a erorii este:
12.4. EXERCIT II 143
1

_
,

_
,

_
,

_
`

_
+
+
c
+
+
+
+
+
+
c E c '
c
'
c
c E c '
c
c E c '
cE
c
c E
c
c E c '

c E
c
c
c
E
c
E E E E E
T
'
c E
c
'
T
E
c '
c
'
T
'
'
T
E
c
c
'
T
'
c '
r
0
, r
1
, . . . , r
n1

In acest circuit, cele patru elemente de nmagazinare din stanga formeaza circuitul
de nmult ire cu (unde init ial se introduce
1
), iar cele patru elemente din dreapta
formeaza circuitul de nmult ire cu
2
, aranjat n ordine inversa (unde
2
se introduce
init ial de la dreapta spre stanga).
De asemenea, exista un element de nmagazinare care cont ine numai 1, element
pe care l furnizeaza la ecare tact.
Init ial, circuitul funct ioneaza odata la momentul 0 fara a introduce nimic de pe
canal (pentru amorsarea n elementele de nmagazinare a coecient ilor pentru
1

respectiv
2

2
).
La momentul urmator se ncepe procesul efectiv de decodicare. Daca r
n1
a fost
perturbat, atunci
n1
este localizarea erorii, adica este radacina a polinomului de
localizare a erorii si avem 1+
1
+
2

2
= 0.

In acest caz, la intrarea n sumatorul
sau este vectorul 0 = (0, 0, 0, 0), iar la iesire scalarul 0. Dupa negare se obt ine
scalarul 1, care se aduna (pentru corect ie) la r
n1
.
Daca r
n1
este corect, la intrarea n sumator se obt ine o valoare nenula, deci
iesirea va 1, care prin negare este 0 si r
n1
ramane nemodicat.
12.4 Exercit ii
12.1 Sa se verice valabilitatea descompunerii M = ABA
T
din demonstrat ia Teo-
remei 12.5
12.2 Fie GF(2
m
), m > 2 primitiv. Atunci polinoamele minimale m
1
(X) si
m
3
(X) au acelasi grad.
12.3 Construit i un cod BCH binar corector de 2 erori de lungime 11.
12.4 Construit i un cod BCH ternar de lungime 26 si d = 5.
144 PRELEGEREA 12. CODURI BCH
12.5 Sa se determine polinomul generator si cel de control pentru codul BCH binar
corector de 3 erori de lungime
(a) 15 (b) 31.
Codicat i mesajul de informat ie format numai din 1.
12.6 Caracterizat i codurile BCH care sunt denite de toate elementele extensiei
Galois GF(q
m
).
12.7 Daca g(X) = 1 + X
4
+ X
6
+ X
7
+ X
8
este polinomul generator al unui cod
BCH binar de lungime 15, sa se cerceteze daca urmatoarele secvent e sunt cuvinte -
cod:
(a) 011001011000010 (b) 000111010000110
(c) 011100000010001 (d) 111111111111111
12.8 Aat i radacinile polinoamelor cu coecient i n GF(2
4
) ( este radacina poli-
nomului 1 + X +X
4
):
X
2
+
4
X +
13
, X
2
+
7
X +
2
, X
2

2
X +
5
X
2
+
6
, X
2
+
2
X, X
2
+X +
8
.
12.9 Denim codul BCH de polinom generator g(X) = m
1
(X)m
3
(X) peste GF(2
4
)
folosind elementul primitiv , radacina a polinomului 1 +X +X
4
. Se recept ioneaza
cuvintele a si se calculeaza sindromurile aH. Stiind aceste sindromuri, localizat i
erorile (daca se poate):
01000101 11101000 11001101 01000000
00000100 10100100 00111101 00000000
12.10 Pentru codul BCH denit n exemplul anterior, decodicat i mesajele:
110000000000000 000010000100001 010001010100000
110011100111000 110011100100000 111000000000001
101110000000000 101010010110001 010000100000000
010101001011000 110111011101100 101110000001000
111001011000000 000111010000110
12.11

In codul BCH de lungime 15 corector de 3 erori, sa se decodice mesajele:
(a) 001000100000000, (b) 101011001000000.
12.12

In codul BCH peste Z
3
de lungime 8, corector de 2 erori, sa se decodice
mesajele
(a) 00100000 (b) 12121212 (c) 11211122
(d) 02020202 (e) 10201020 (f) 22110011.
12.13 Fie GF(2
5
) primitiv, radacina a polinomului 1 +X
2
+X
5
. Se deneste
un cod BCH de lungime 31 cu d = 5.
1. Sa se construiasca polinomul generator al codului: g(X) = m
1
(X)m
3
(X).
2. Sa se decodice mesajul 1001011011110000110101010111111.
Prelegerea 13
Coduri Reed - Solomon
13.1 Denirea codurilor RS
O clasa foarte interesanta de coduri ciclice a fost denitan 1960 de Reed si Solomon.
Numite n articolul init ial coduri polinomiale, Peterson arata un an mai tarziu ca ele
sunt de fapt un caz particular de coduri BCH. Construct ia data de Reed - Solomon
a fost urmatoarea:
Fie GF(q
m
) primitiv (deci ord() = n = q
m
1).
Daca a
0
a
1
. . . a
k1
GF(q
m
)
k
este secvent a de informat ie, se deneste polinomul
h(X) = a
0
+a
1
X +. . . +a
k1
X
k1
GF(q
m
)[X]. Codul polinomial va format de
toate cuvintele de forma h(1)h() . . . h(
n1
).
Teorema 13.1 Un cod polinomial este un cod BCH peste GF(q
m
), denit de rada-
cinile ,
2
, . . . ,
nk
.
Demonstrat ie: Sa consideram polinomul {f(X)} asociat cuvantului - cod:
f(X) = h(1) + h()X + . . . + h(
n1
)X
n1
= a
0
(1 + X + X
2
+ . . . + X
n1
) +
a
1
(1+X +
2
X
2
+. . . +
n1
X
n1
) +a
2
(1+
2
X +
4
X
2
+. . . +(
2
X)
n1
) +. . . +
a
k1
(1 +
k1
X + . . . + (
k1
X)
n1
).
Se stie ca toate elementele nenule din GF(q
m
) sunt radacinile polinomului
X
q
m
1
1 = X
n
1 = (X 1)(1 +X +X
2
+. . . +X
n1
), deci toate elementele din
GF(q
m
) \ {0, 1} sunt radacini ale polinomului 1 + X + X
2
+ . . . + X
n1
.
Prin calcul se obt ine f(1) = a
0
, f(
1
) = a
1
, f(
2
) = a
2
, . . . ,
f(
(k1)
) = a
k1
si f(
j
) = 0 daca n 1 j k.
Dar cum
n
= 1, avem
j
=
nj
si deci f(
i
) = 0, 1 i n k. 2

In continuare vom numi aceste coduri Reed - Solomon pentru care vom folosi
urmatoarea denit ie:
Denit ia 13.1 Fie GF(q
m
) primitiv. Se numeste cod Reed - Solomon (RS)
codul BCH de polinom generator g(X) GF(q
m
)[X],
g(X) = (X
m
0
)(X
m
0
+1
) . . . (X
m
0
+d2
).
Deci, diferent a fat a de codurile BCH generale este aceea ca un cod RS este denit
direct pe extensie, nu pe corpul de baza. Astfel, la un cod BCH cuvintele - cod sunt
din Z
n
q
, pe cand la un cod RS, ele sunt din GF(q
m
)
n
. Cum si GF(q
m
) este corp,
toate proprietat ile codurilor BCH se pastreaz a si n cazul codurilor RS.
145
146 PRELEGEREA 13. CODURI REED - SOLOMON
Deoarece au fost studiate (si utilizate) numai codurile Reed - Solomon de carac-
teristica 2, vom considera n continuare q = 2.
Exemplul 13.1 Fie GF(2
3
) generat de radacina a polinomului 1 + X + X
3
, si
sa consideram codul RS denit de polinomul g(X) = ( + X)(
2
+ X) = 1 + +
( +
2
)X + X
2
. Este un cod ciclic de lungime n = 7, k = 5 si d = 3. Folosind
denit ia din sect iunea 9.3, se poate construi matricea generatoare a codului:
G =

1 + +
2
1 0 0 0 0
0 1 + +
2
1 0 0 0
0 0 1 + +
2
1 0 0
0 0 0 1 + +
2
1 0
0 0 0 0 1 + +
2
1

Codul are 8
5
cuvinte, obt inute prin nmult irea cu g(X) a tuturor polinoamelor din
GF(2
3
)[X] de grad cel mult 4 sau - echivalent - din nmult irea cu matricea G a
tuturor cuvintelor din GF(2
3
)
5
.
De exemplu, codicarea mesajului de informat ie a = 100
3
, sau a(X) = 1 +
X+
3
X
4
este a(X)g(X) = 1++(+
2
)X
2
+X
3
+(1+
2
)X
4
+X
5
+(1+)X
6
(respectiv
3
0
4

6
1
3
).
O matrice de control foarte simpla se obt ine folosind (conform sect iunii 11.3)
radacinile si
2
ale cuvintelor - cod:
H =

1
2

6
1
2

6

3

.
Teorema 13.2 Distant a minima a unui cod RS este d = n k + 1.
Demonstrat ie: Sa notam - temporar - cu d
H
distant a minima a unui cod. Conform
Teoremei 3.3, d
H
n k + 1. Pe de-alta parte, ntr-un cod RS, grad(g(X)) =
nk = d 1 deci d = nk +1. Din cele doua armat ii rezulta d
H
d. Pe de-alta
parte, din Teorema 12.2, cum codul RS este un caz particular de cod BCH, rezulta
d
H
d. 2
Din aceasta teorema rezulta ca un cod RS are distant a maxima separabila (se
mai spune ca este un cod DMS).
13.2 Coduri RS scurte
Deoarece GF(2
m
) este primitiv, toate cuvintele unui cod RS au lungimea
n = 2
m
1 si k = n d + 1 = 2
m
d simboluri de informat ie. Uneori ns a sunt
necesare coduri RS a caror lungime sa nu e de aceasta forma. Ele se obt in astfel:
Fie A un (n, k) - cod RS de distant a d si s (1 s < 2
m
d) un numar ntreg.
Se construieste codul RS scurt A(s) format din toate cuvintele lui A care au 0 pe
ultimele s pozit ii, din care apoi aceste s pozit ii se ignora.
Exemplul 13.2 Fie A codul dat de g(X) = +X unde este radacina polinomului
1 + X + X
2
si genereaza GF(2
2
). A are deci n = 3, k = 2, d = 2 si 16 cuvinte
13.2. CODURI RS SCURTE 147
- cod. Codul A(1) se obt ine luand toate cuvintele lui A care au 0 pe ultima pozit ie
(acestea sunt 000, 10,
2
0, 10), din care se elimina ultimul caracter.
Deci A(1) = {00, 1,
2
, 1}.
Atent ie: Ultima pozit ie nu nseamna ultimul bit. Fiecare element din cuvant are
aici doua pozit ii binare. Astfel, cele patru cuvinte - cod alese din A au reprezentarea
binara
000000, 011000, 110100, 100100
iar codul scurt, reprezentat n binar este

A(1) = {0000, 0110, 1101, 1001}.
Daca g(X) este polinomul generator al codului A, atunci
A(s) = {b A|grad(b(X)) < n s}.
Sau - altfel spus - A(s) cont ine toate polinoamele de forma b(X) unde
b(X) = a(X)g(X), grad(a(X)) < k s = 2
m
d s (deoarece grad(g(X)) =
d 1 = n k).
De aici rezulta ca matricea generatoare a unui cod RS scurt A(s) este
G =

g(X)
Xg(X)
.
.
.
X
ks1
g(X)

care se obt ine din matricea generatoare a codului A, din care se elimina ultimele s
linii. Numarul de simboluri de informat ie este egal cu num arul de linii din G, deci
k
s
= k s = 2
m
d s
Sa notam acum cu d respectiv d
s
distant ele minime ale celor doua coduri. Se
observa ca c
1
, c
2
A(s), c

1
= c
1
00. . . 0, c

2
= c
2
00. . . 0 A si deci d(c
1
, c
2
) =
d(c

1
, c

2
), adica d
s
d.
Pe de-alta parte (Teorema 3.3), d
s
n
s
k
s
+1 = 2
m
1s(2
m
ds)+1 = d,
deci d
s
= d.
Din cele aratate mai sus putem enunt a teorema:
Teorema 13.3 Fie A un (n, k) - cod RS cu distant a minima d si A(s) codul sau
scurt, cu parametrii n
s
, k
s
, d
s
. Atunci
n
s
= 2
m
1 s, k
s
= 2
m
d s, d
s
= d
si A(s) este un cod DMS.
Observat ie: Alte coduri scurte se pot obt ine eliminand orice set de s elemente din
cuvintele unui cod RS. Se poate vedea imediat ca proprietat ile aratate mai sus nu
se schimba.
Exemplul 13.3 Plecand de la codul RS din Exemplul 13.1, codul scurt A(2) va
avea ca matrice generatoare matricea G fara ultimele doua linii si coloane, iar ca
parametri n
2
= 5, k
2
= 3, d
2
= 3.
148 PRELEGEREA 13. CODURI REED - SOLOMON
13.3 Decodicarea codurilor RS
Fiind cazuri particulare de coduri BCH, codurile RS se pot decodica folosind al-
goritmul Peterson (Sect iunea 12.2). Sa reluam detaliat pe un exemplu aplicarea
acestui algoritm.
Exemplul 13.4 Fie g(X) = (1 + X)( + X)(
2
+ X)(
3
+ X) unde GF(2
3
)
este radacina (primitiva) a polinomului 1 + X + X
3
. Codul are d = 5, deci poate
corecta maxim 2 erori independente. Mai stim ca:

3
= 1 + ,
4
= +
2
,
5
= 1 + +
2
,
6
= 1 +
2
.
Sa presupunem ca s-a recept ionat cuvantul v =
6

2
10
2
. Pentru decodi-
care se aplica urmatorii pasi:
(1): Se calculeaza cele patru sindromuri:
S
0
= v(
0
) =
6
++
5
+
2
+1+0+
2
= 1+
2
++1++
2
+
2
+1+
2
= 1
S
1
= v() =
6
+
2
+
7
+
5
+
4
+0 +
8
=
3
S
2
= v(
2
) =
6
+
3
+
9
+
8
+
8
+0 +
14
=
3
S
3
= v(
3
) =
6
+
4
+
11
+
11

12
+0 +
20
= 1
(2) Deoarece rangul matricii

S
0
S
1
S
1
S
2

1
3

este 2, cuvantul
v are doua erori; cum distant a este 5, ele pot corectate.
(3) Se rezolva sistemul liniar

S
0

2
+ S
1

1
= S
2
S
1

2
+ S
2

1
= S
3
adica


2
+
3

1
=
3

2
+
3

1
= 1
Adunand cele doua ecuat ii, se obt ine (1 +
3
)
2
= 1 +
3
, deci
2
= 1.

Inlocuind n prima ecuat ie, avem


3

1
=
3
+1 = , de unde, prin nmult ire cu

4
se ajunge la
1
=
5
.
(4) Polinomul de localizare a erorii este (X) = X
2
+
1
X +
2
= X
2
+

5
X + 1. Prin ncercari se obt ine () = (
6
) = 0, deci cele doua erori sunt pe
pozit iile X
1
= , X
2
=
6
.
(5) Se rezolva sistemul liniar

X
0
1
X
0
2
X
1
X
2

Y
1
Y
2

S
0
S
1

, adica:

Y
1
+ Y
2
= 1
Y
1
+
6
Y
2
=
3

Inmult ind a doua ecuat ie cu si adunand, se obt ine


6
Y
1
=
5
, deci Y
1
=
6
. Dupa
nlocuire n prima ecuat ie, se determina si Y
2
=
2
.
(6) Rezumand, au aparut erorile
6
pe pozit ia 1 si
2
pe pozit ia 6. Deci
eroarea este e = 0
6
0000
2
, iar cuvantul - cod trimis a fost
c = v +e =
6

2
100.
13.4 Alta construct ie a codurilor RS
Plecand de la construct ia init iala, se poate realiza si o alta denit ie pentru codurile
RS. Ea se bazeaza pe o modalitate diferita de reprezentare a cuvintelor din Z
n
q
:
folosind polinoamele ca funct ii.
13.4. ALT

A CONSTRUCT IE A CODURILOR RS 149


Exemplul 13.5 Fie S = GF(2
3
), construit folosind radacina primitiva a polino-
mului 1 + X + X
3
. Denim funct ia f : S Z
2
prin
x 0 1
2

6
f(x) 0 0 1 1 0 1 0 0
Atunci f(x) se poate reprezenta prin
v
f
= f(0)f(1)f()f(
2
)f(
3
)f(
4
)f(
5
)f(
6
) = 00110100.
Exemplul 13.6 Fie S = GF(2
3
) si funct ia f : S S denita v
f
=
4
01
2
100.
Pe baza valorilor n ecare punct din S, f se poate reprezenta si ca un polinom
f(X) =
4
+
2
X +
3
X
2
+ X
3
.
Denit ia 13.2 Fie S GF(2
m
). Doua polinoame p(X), q(X) reprezinta aceeasi
funct ie : S GF(2
m
) daca si numai daca S, p() = q().
Mult imea A = {f(X) GF(2
m
)[X]|grad(f(X)) k1} se poate structura evident
ca un spat iu liniar de dimensiune k, cu baza {1, X, X
2
, . . . , X
k1
}. Deoarece toate
aceste polinoame pot scrise si ca funct ii denite pe o mult ime S GF(2
m
), vom
numi A spat iul funct iilor pe S.
De remarcat ca n aceasta faza S nu este denit explicit.
Teorema 13.4 Fie mult imea S, |S| = n si k n. Mult imea tuturor funct iilor
: S GF(2
m
) reprezentate prin polinoame de grad k 1 formeaza un spat iu
liniar de funct ii, cu baza {1, X, . . . , X
k1
}.
Demonstrat ie: Evident, orice polinom de grad cel mult k 1 este generat de
{1, X, . . . , X
k1
}. Tot ce trebuie aratat este ca ecare funct ie are o reprezentare
unica sub forma de polinom.
Sa presupunem (prin absurd) ca p(X) si q(X) sunt egale ca funct ii pe S. Deci
S, p() = q(). Dar atunci p(X) q(X) este un polinom de grad < k care
are n (n k) rad acini, deci p(X) q(X) 0, adica p(X) q(X). 2
Exemplul 13.7 Fie S = GF(2
3
) construit folosind 1 + X + X
3
, si sa consideram
toate polinoamele din GF(2
3
)[X], de grad cel mult doi. O baza pentru acest spat iu
de funct ii este {1, X, X
2
}, cu reprezentarea corespunzatoare:
1 11111111
X 01
2

6
X
2
01
2

5
Atunci, orice polinom p(X) = a
0
+ a
1
X + a
2
X
2
considerat ca o funct ie, poate
reprezentat sub forma de vector prin
v
p
= (a
0
a
1
a
2
)

1 1 1 1 1 1 1 1
0 1
2

6
0 1
2

6

3

Teorema 13.5 Spat iul funct iilor pe S GF(2


m
) (|S| = n) al tuturor polinoamelor
din GF(2
m
)[X] de grad k 1 formeaza un (n, k) - cod liniar DMS.
150 PRELEGEREA 13. CODURI REED - SOLOMON
Demonstrat ie: Alegem o mult ime S GF(2
m
) de cardinal n si consideram spat iul
funct iilor tuturor polinoamelor p : S GF(2
m
) de grad cel mult k 1. Lungimea
ecarui cuvant - cod este n, iar dimensiunea este k (cu Teorema 13.4). Mai ramane
de aratat ca acest cod este DMS (are distant a maxima separabila), adica d = n
k +1. Pentru aceasta, sa observam ca orice polinom p(X) are maxim k 1 rad acini
distincte; deci reprezentarea v
p
are cel mult k 1 zero-uri, adica w(v
p
) nk +1.
Conform Teoremei 3.3, d n k + 1, deci d = n k + 1. 2
Fie n un divizor al lui 2
m
1 si S = { GF(2
m
)|
n
= 1} mult imea rad acinilor
de ordinul n ale unitat ii din GF(2
m
). Evident, S cont ine toate rad acinile din GF(2
m
)
ale ecuat iei X
n
+ 1 = 0 si S are cel put in un element primitiv (Teorema 11.1).
Teorema 13.6 Fie p(X), q(X) GF(2
m
)[X] si S GF(2
m
) mult imea radacinilor
de ordinul n ale unitat ii. Atunci p(X) si q(X) reprezinta aceeasi funct ie f : S
GF(2
m
) daca si numai daca p(X) q(X) (mod 1 + X
n
).
Demonstrat ie: Fie q(X) = h(X)(1 + X
n
) + p(X). Atunci pentru orice S avem
q() = h()(1 +
n
) + p(). Dar 1 +
n
= 0, deci q() = p().
Invers, e S primitiv. Deci orice element din S are forma
i
(0 i < n).
Daca q(
i
) = p(
i
), atunci
i
este rad acina a polinomului p(X)q(X). Putem scrie
atunci
p(X) q(X) = h(X)
n1

i=0
(1 +
i
) = h(X)(1 + X
n
).
2
Teorema 13.7 Fie S mult imea radacinilor de ordinul n ale unitat ii din GF(2
m
).
Atunci spat iul funct iilor tuturor polinoamelor din GF(2
m
)[X] de grad k 1 pe S
formeaza un (n, k) - cod ciclic peste GF(2
m
).
Demonstrat ie: Sa notam cu C acest spat iu si e S generat de primitiv. Atunci,
daca p(X) GF(2
m
)[X] este un polinom de grad cel mult k 1, avem v
p
=
p(1)p() . . . p(
n1
) C.
Fie q(X) = p(X). Cum grad(q(X)) k 1, rezulta v
q
C. Dar
q(1)q() . . . q(
n1
) = p()p(
2
) . . . p(
n1
)p(1) C,
ceea ce reprezint a chiar denit ia unui cod ciclic. 2
Exemplul 13.8 Sa consideram GF(2
3
) construit cu 1 + X + X
3
si e p(X) =

4
+
2
X +
3
X
2
+ X
3
, care are reprezentarea 01
2
100. Permutarea ei ciclica
este 1
2
1000, care corespunde funct iei p(X) =
4
+
3
X +
5
X
2
+
3
X
3
=
(
4
+ X)(
5
+ X)(
6
+ X)
3
.
Denit ia 13.3 Fie polinomul V (X) = V
0
+ V
1
X + . . . + V
n1
X
n1
GF(2
m
)[X]
si GF(2
m
) o radacina primitiva de ordinul n a unitat ii. Spunem ca v(X) =
v
0
+ v
1
X + . . . + v
n1
X
n1
este transformata lui V (X) daca
V (
j
) =
n1

i=0
V
i

ji
= v
j
, j = 0, 1, . . . , n 1
13.4. ALT

A CONSTRUCT IE A CODURILOR RS 151


Altfel spus, daca se noteaza cu A = (a
ij
), a
ij
=
ij
, atunci
(V
0
V
1
. . . V
n1
)A = (v
0
v
1
. . . v
n1
).
Matricea A este numita transformata Fourier nita. Ea este nesingulara, deci se
poate scrie (V
0
V
1
. . . V
n1
) = (v
0
v
1
. . . v
n1
)A
1
sau
V
i
=
n1

i=1
v
j

ij
= v(
i
)
Vom arata aceasta ns a n mod direct, far a a folosi inversa matricii A:
Teorema 13.8 Fie GF(2
m
) o radacina primitiva de ordin n a unitat ii. Daca
v
j
= V (
j
) pentru V (X) = V
0
+ V
1
X + . . . + V
n1
X
n1
GF(2
m
)[X], atunci
V
i
= v(
i
) unde v(X) = v
0
+ v
1
X + . . . + v
n1
X
n1
.
Demonstrat ie: Deoarece este primitiv, vom avea
n1

j=0

(ki)j
=

n (mod 2) daca k i = 0
0 daca k i = 0
Atunci
v(
i
) =
n1

j=0
v
j

ij
=
n1

j=0

n1

k=0
V
k

kj

ij
=
n1

k=0
V
k

n1

j=0

(ki)j

= V
i
. 2
Deci, ind dat un vector de valori (v
0
, v
1
, . . . , v
n1
), se pot regasi coecient ii
polinomului V (X) = V
0
+ V
1
X + . . . + V
n1
X
n1
, lucru esent ial n denirea unui
algoritm de decodicare.
Teorema 13.9 Fie S GF(2
m
) mult imea radacinilor de ordinul n ale unitat ii din
GF(2
m
), generata de elementul primitiv . Spat iul funct iilor tuturor polinoamelor
de grad < n d + 1 pe S este un cod ciclic DMS cu polinomul generator
g(X) = ( + X)(
2
+ X) . . . (
d1
+ X).
Demonstrat ie: Funct ia polinomiala V (X) a carei reprezentare corespunde lui v(X) =
a(X)g(X) este V (X) =
n1

i=0
v(
ni
)X. Deoarece v(
ni
) = 0 pentru i = n d +
1, n d + 2, . . . , n 1 (grad(v(X) < n d + 1), coecientul lui X
i
din V (X) este
zero, deci V (X) are gradul < n d + 1. 2
Daca se ia n = 2
m
1, se ajunge la o alta modalitate de construct ie a codurilor
RS, care are o alta matrice generatoare (deci o alta dispunere a bit ilor de informat ie).
Exemplul 13.9 Fie radacina polinomului 1 + X + X
3
cu care se construieste
GF(2
3
). Consideram codul RS de polinom generator g(X) = (1 + X)( + X)(
2
+
X)(
3
+ X) =
6
+
5
X +
5
X
2
+
2
X
3
+ X
4
care corespunde reprezentarii

2
100). Transformata lui g(X) este polinomul G(X) =
6

k=0
g(
7k
)X
k
.
Pentru ca g(
0
)g() . . . g(
6
) = 00001
4
, avem
G(X) = g(
71
)X+g(
72
)X
2
+g(
73
)X
3
=
4
X+X
2
+X
3
= X(
4
+X+X
2
).
Se verica usor ca G(X) este o funct ie cu reprezentarea
152 PRELEGEREA 13. CODURI REED - SOLOMON
G(
0
)G() . . . G(
6
) =
6

2
100.
Putem gandi acest cod RS ca spat iul tuturor polinoamelor de grade 1, 2 si 3, adica
{Xp(X)|p(X) GF(2
3
)[X], grad(p(X)) < 3}.
Baza pentru acest spat iu liniar este {X, X
2
, X
3
}, iar matricea generatoare

1
2

6
1
2

6

3

5
1
3

5

4

Deci G(X) =
4
X + X
2
+ X
3
va avea reprezentarea
(
4
1)

1
2

6
1
2

6

3

5
1
3

5

4

= (
6

2
1 0 0).
13.4.1 Algoritmul de decodicare Berlekamp - Massey
Fie g(X) polinomul generator al unui cod RS, c(X) = a(X)g(X) un polinom -
cod transmis, si v(X) = c(X) + e(X) polinomul recept ionat. Notam V (X), C(X)
si E(X) transformatele lui v(X), c(X) respectiv e(X). Cum transformata Fourier
nita este o aplicat ie liniara, se veric a imediat V (X) = C(X) + E(X).
Deoarece g(X) are d1 rad acini consecutive
i
, m
0
i m
0
+d2, sindromul
s(X) va avea s(
ni
) = e(
ni
) = E
i
pentru n m
0
d + 1 i n m
0
. Deci
sindromul va putea determina d1 coecient i ai transformatei E(X). Pentru ceilalt i
coecient i va trebui sa reluam polinomul de localizare a erorilor (X).
(X) are proprietatea ca (
k
) = 0 e
k
= 0. Deoarece E(
k
) = e
k
, vom
avea (
k
)E(
k
) = 0 k, deci - lucrand n algebra polinoamelor modulo 1 + X
n
:
{(X)}{E(X)} = 0
si
{(X)}{E(X)} =

i=0

i
X
i

n1

k=0
E
k
X
k

unde t = [(d 1)/2]. Calculand n ambele relat ii coecientul lui X


t+k
, se obt ine:

t
E
k
+
t1
E
k+1
+ . . . +
0
E
k+t
= 0.
Pentru ca stim deja d1 valori consecutive ale lui E
k
, putem determina recursiv
coecient ii
i
, pe care i folosim la generarea tuturor valorilor E
k
.

In [5] se deneste o alta forma a acestui algoritm.


Exemplul 13.10 Sa reluam codul RS denit n Exemplul 13.4, n care consideram
ca s-a recept ionat cuvantul v =
6

2
10
2
. Deoarece d = 5, avem t 2 si
E
0
= v(
0
) = 1, E
6
= v() =
3
, E
5
= v(
2
) =
3
, E
4
= v(
3
) = 1. Polinomul de
localizare a erorii este (X) = X
2
+
1
X +
0
. Determinam
0
,
1
ca n Exemplul
13.4 si gasim
0
= 1,
1
=
5
. Se poate determina astfel relat ia de recurent a:
E
k
=
5
E
k+1
+ E
k+2
Deoarece (E
0
, E
6
, E
5
, E
4
) = (1,
3
,
3
, 1), vom avea:
E
3
=
5
E
4
+ E
5
=
5
+
3
=
2
,
E
2
=
5
E
3
+ E
4
=
5

2
+1 = 0,
E
1
=
5
E
2
+ E
3
= 0 +
2
=
2
13.5. STERGERI 153
Am determinat transformata lui e(X), adica E(X) = 1 +
2
X +
2
X
3
+ X
4
+

3
X
5
+
3
X
6
. De aici rezulta e = (E(
0
), E(), E(
2
), . . . , E(
6
)) = 0
6
0000
2
,
deci cuvantul decodicat este
c = v + e =
6

2
100.
Pe de-alta parte, daca s-ar folosit matricea generatoare din Exemplul 13.9, nu
ar mai fost necesar sa se determine vectorul eroare e, ci doar sa se calculeze toate
valorile lui v(
k
), 0 k 6, din care se obt ine direct mesajul transmis; mai precis,
se aa transformata lui v(X), care se aduna la transformata lui e(X):
v
0
v
1
. . . v
6
= v(
0
)v(
6
)v(
5
) . . . v() = 1
6
1
3

3
,
E
0
E
1
. . . E
6
= 1
2
0
2
1
3

3
, si deci
C
0
C
1
. . . C
6
= V
0
V
1
. . . V
6
+ E
0
E
1
. . . E
6
= 0
4
1000.
S-a obt inut C(X) =
4
X + X
2
+ X
3
. Deci bit ii de informat ie sunt (
4
, , 1).
De aici se obt ine forma cuvantului transmis c =
6

2
100.
13.5 Stergeri
O stergere este o eroare detectata, pentru corectarea careia trebuind determinata
doar valoarea erorii. Numarul locat iei de stergere este pozit ia elementului perturbat.
Acest num ar este n general cunoscut (din citirea zica a mesajului primit sau din
structura codului).
Astfel, e A un cod RS peste GF(2
m
) si sa consideram codul

A format din
reprezentarea binara a cuvintelor codului A (ecare element din GF(2
m
) se scrie ca
un cuvant binar de lungime m). Se deneste si codul

A

obt inut prin adaugarea cate


unui bit de paritate la ecare simbol din component a cuvintelor codului

A.
Exemplul 13.11 Sa consideram codul RS din Exemplul 13.2. Pentru a forma

A

,
se nlocuieste ecare element 0, 1, ,
2
respectiv cu 000, 101, 011, 110 (al treilea bit
este bitul de paritate). Astfel, pentru 10 A avem 011101000

A

.
Deoarece ecare element dintr-un cuvant - cod c A este reprezentat printr-un
cuvant binar de lungime m + 1, cuvantul - cod corespunzator c

va avea
lungimea (2
m
1)(m + 1). Se observa ca ecare element nenul din c este nlocuit
cu un cuvant de pondere para. Deci, c

va format din 2
m
1 cuvinte binare de
lungimi m + 1, ecare de pondere para.

In acest fel, daca n cuvantul recept ionat
v

exista un grup de pondere impara, stim ca a aparut o eroare printre cei m + 1


bit i corespunzatori. Considerat din nou ca un cuvant cu elemente din GF(2
m
), stim
ca acest cuvant are un element perturbat; nu cunoastem valoarea erorii, dar stim
pozit ia sa. Avem deci o stergere.
Exemplul 13.12 Reluand construct ia din exemplul anterior, sa presupunem ca s-
a primit 011100000. Deci, au aparut erori n al doilea grup de 3 bit i (acesta are
pondere impara), asa ca
1
este un numarul locat iei de stergere. Stiind acest numar,
putem nlocui al doilea element cu 0 (usureaza calculul sindromului), si vom ncerca
decodicarea lui v = 00 n cel mai apropiat cuvant - cod din A, stiind ca pozit ia
erorii este X
1
= .
154 PRELEGEREA 13. CODURI REED - SOLOMON
Teorema 13.10 Fie A un cod RS peste GF(2
m
) de distant a d, si v un cuvant
recept ionat care are s stergeri si t erori care nu sunt stergeri. Atunci v poate
decodicat corect daca 2t + s d 1.
Demonstrat ie: De remarcat ca n Teorema 3.7, o condit ie mai slaba (t + s d 1)
asigura corectarea celor t erori, dar detecteaza numai celelalte s sters aturi. Aceasta
teorema realizeaza corectarea completa a cuvantului.
Fie B mult imea pozit iilor sters aturilor si A mult imea pozit iilor erorilor; deci
A \ B este mult imea pozit iilor erorilor care nu sunt stersaturi. Denim
B
(X) =

iB
(
i
+ X) ca ind polinomul de localizare a stersaturilor. Atunci polinomul de
localizare a erorilor se poate scrie

A
(X) =
B
(X)
A\B
(X).
Aarea pozit iilor erorilor revine la determinarea rad acinilor polinomului
A\B
(X).
Pentru aceasta se poate folosi algoritmul Peterson de decodicare a codurilor BCH,
cu cateva schimb ari, corespunzatoare sindromurilor modicate.
Astfel, e
B
(X) = B
0
+B
1
X +. . . +B
s1
X
s1
+X
s
si
A\B
(X) = A
0
+A
1
X +
. . . + A
t1
X
t1
+ X
t
.
Similar algoritmului Peterson, vom nmult i ambii membrii ai egalitat ii

B
(X)
A\B
(X) =
A
(X) cu Y
i
X
j
i
(m
0
j m
0
+ d 2) (reamintim, X
i
sunt
locat iile, iar Y
i
sunt valorile erorilor).
Apoi se nlocuieste X = X
i
si se face suma dupa i = 1, . . . , t + s. Se obt ine
S

j
A
0
+ S

j+1
A
1
+ . . . + S

j+t1
A
t1
+ S

j+t
= 0 (m
0
j m
0
+ d 2) (1)
unde S

k
sunt sindromurile modicate, de forma
S

k
= B
0
S
k
+ B
1
S
k+1
+ . . . + B
s1
S
k+s1
+ S
k+s
. (2)
Pentru ca se stiu valorile lui S
j
pentru j = m
0
, . . . , m
0
+d2 iar B
0
, B
1
, . . . , B
s1
sunt cunoscute, se pot determina S

j
pentru m
0
j d 1 s. Deoarece 2t +s
d 1, deci 2t d 1 s, se poate rezolva sistemul (1) scris matricial

m
0
S

m
0
+1
. . . S

m
0
+t1
S

m
0
+1
S

m
0
+2
. . . S

m
0
+t
.
.
.
S

m
0
+t1
S

m
0
+t
. . . S
m
0
+2t1

A
0
A
1
.
.
.
A
t1

m
0
+t
S

m
0
+t+1
.
.
.
S
m
0
+2t

(3)
cu t necunoscute A
0
, A
1
, . . . , A
t1
.
Dupa determinarea polinomului de localizare a erorilor, algoritmul Peterson se
poate aplica n continuare nemodicat. 2
Fie A un cod RS peste GF(2
m
), de polinom generator g(X) = (
m
0
+ X) . . .
(
m
0
+d2
+ X). Se transmite cuvantul - cod c si se recept ioneaz a v cu s stergeri
localizate n elementele mult imii B = {X
1
, . . . , X
s
}. Fie
B
(X) = B
0
+B
1
X +. . . +
B
s1
X
s1
+ X
s
polinomul de localizare al stergerilor.
Polinomul de localizare a erorilor
A
(X) =
A\B
(X)
B
(X) poate determinat
aand
A\B
(X) = A
0
+ A
1
X + . . . + A
t1
X
t1
+ X
t
astfel:
(a) Se calculeaza S
j
= v(
j
) pentru j = m
0
, m
0
+ 1, . . . , m
0
+ d 2;
(b) Se determina S

j
(m
0
j m
0
+ d 2 s) cu relat iile (2);
(c) Se rezolva sistemul liniar (3) de necunoscute A
i
.
13.6. EXERCIT II 155
Exemplul 13.13 Fie A codul RS peste GF(2
4
) construit de 1 + X + X
4
, cu poli-
nomul generator g(X) = (1 + X)( + X) . . . (
4
+ X) si

A

codul binar asociat n


care sunt codicate mesajele. S-a primit mesajul
v

= 11101 11001 00101 00110 10010 0 . . . 0,


deci v =
10
0
2
0
6

14
0. . . 0.
Singura stergere localizata este
1
, deci
B
(X) = + X.
Trebuie sa determinam polinomul de localizare a erorilor.
Din v(X) =
10
+
2
X
2
+
6
X
4
+
14
X
5
calculam sindromurile
S
0
=
5
, S
1
= 0, S
2
=
3
, S
3
=
4
, S
4
=
3
.
Deoarece B
0
= si s = 1, relat ia de recurent a pentru sindromurile modicate
este S

j
= B
0
S
j
+ S
j+1
= S
j
+ S
j+1
(0 j 3).
Se determina astfel S

0
=
6
, S

1
=
3
, S

2
= 0, S

3
=
11
.
Deoarece d = 5 avem t = 2, deci sistemul (3) este

0
S

1
S

1
S 2

a
0
A
1

2
S

sau

3
0

A
0
A
1

11

cu solut ia A
0
=
8
, A
1
=
11
. S-a obt inut polinomul
A\B
(X) =
8
+
11
X+X
2
.
Deci,

A
(X) =
B
(X)
A\B
(X) = (+X)(
8
+
11
X+X
2
) = (+X)(
3
+X)(
5
+X).
Rezulta ca erorile sunt localizate pe pozit iile X
1
= , X
2
=
3
, X
3
=
5
.
Mai departe se lucreaza pentru determinarea valorilor erorilor, folosind sindro-
murile originale n algoritmul Peterson. Trebuie rezolvat sistemul:

1 1 1

3

10

Y
1
Y
2
Y
3

5
0

cu solut ia Y
1
=
12
, Y
2
= 1, Y
3
=
3
.
Deci v(X) se decodica n c(X) = v(X)+e(X) = (
10
+
2
X
2
+
6
X
4
+
14
X
5
)+
(
12
X + X
3
+
3
X
5
), adica c =
10

12

2
1
6
10. . . 0, sau - n

A

:
11101 11110 00101 10001 00110 10001 0 . . . 0.
13.6 Exercit ii
13.1 Construit i matricea generatoare si listat i toate cuvintele - cod ale codului RS
din Exemplul 13.2. Scriet i si forma binara a acestor cuvinte.
13.2 Fie codul denit de g(X) = (1+X)(+X)(
2
+X)(
3
+X), bazat pe extensia
Galois GF(2
3
) generata de , radacina a polinomului 1 + X + X
3
.
1. Determinat i n, k, d si numarul de cuvinte - cod.
2. Construit i o matrice generatoare si o matrice de control a codului.
3. Codicat i mesajele de informat ie
10
2
, 111,
2

6
.
13.3 Construit i coduri RS cu urmatorii parametri:
(a) m = 2, d = 3, m
0
= 2;
156 PRELEGEREA 13. CODURI REED - SOLOMON
(b) m = 3, d = 3, m
0
= 2;
(c) m = 3, d = 5, m
0
= 0;
(d) m = 4, d = 5, m
0
= 0;
(e) m = 5, d = 7, m
0
= 0.
13.4 Pentru ecare cod determinat la exercit iul anterior determinat i n, k si numa-
rul de cuvinte - cod.
13.5 Aratat i ca un (2
m
1, k) - cod RS are 2
mk
cuvinte - cod.
13.6 Fie codul RS de polinom generator g(X) = (1 + X)( + X)(
2
+ X)(
3
+
X)(
4
+ X)(
5
+ X) GF(2
4
)[X] unde este radacina polinomului 1 + X + X
4
.
Decodicat i mesajele:
0
3

10
000000
1
4

2
0010
5

2
0
10

0
7
0
12

3
10000000
13.7 Fie codul RS generat de g(X) = ( + X)(
2
+ X)(
3
+ X)(
4
+ X) unde
GF(2
4
) este radacina polinomului 1 + X + X
4
. Decodicat i mesajele:
001
8
00
5
00000000
0
10
0
6

13
0
8

11

5
00000

4
0100
2

12
al
14
000000
13.8 Plecand de la codul RS din exercit iul precedent, se formeaza codul scurt A(4)
de lungime n = 11 (si k = 7). Deecodicat i mesajele:
001
8
00
5
0000
0
10
0
6

13
0
8

11

5
0

4
0100
2

12

14
00
13.9 Aratat i ca transformata Fourier nita A este inversabila.
13.10 Fiind dat GF(2
3
) construit cu polinomul 1 +X +X
3
, gasit i matricea gene-
ratoare pentru un cod DMS de lungime 7 pentru spat iul funct iilor denit pe
S = GF(2
3
) \ {0}, cu baza:
(a) {X, X
2
, X
3
} (b) {1, X, X
2
, X
3
, X
4
} (c) {X, X
2
, X
3
}.
Aratat i ca toate aceste coduri sunt ciclice. Determinat i polinomul generator pen-
tru ecare cod.
13.11 Fiind dat GF(2
3
) construit cu 1+X +X
3
, determinat i pentru ecare G(X)
reprezentarea v
g
:
G(X) = X + X
3
, G(X) = 1 + X
2
+ X
4
.
13.12

In aceleasi condit ii din exercit iul precedent, determinat i G(X) stiind valorile
lui v
g
:
v
g
=
3

4
0
6

2
v
g
=
4

3
0
6
1.
13.13 Folosind codul denit n Exemplul 13.13, decodicat i mesajele:
11101 11110 11010 00111 11110 10100 10110 10100 0 . . . 0
11000 00000 01010 11111 11011 00000 10001 00101 0 . . . 0
00000 10000 10000 10000 00101 10100 11101 0 . . . 0.
Bibliograe
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[3] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[4] S. Guiasu - Teoria Codurilor, Tipograa Universit at ii Bucuresti, 1976;
[5] D.G. Homan, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[6] A.M.Kerdok - A class of low-rate non linear codes, Information and control, 20
(1972), 182-187;
[7] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[8] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
157
Prelegerea 14
Alte clase de coduri ciclice
14.1 Coduri Hamming ciclice
Sa consideram spat iul nul al matricii
H = (1
2
. . .
n1
)
unde GF(2
p
) este primitiv, deci n = ord() = 2
p
1.
Cum poate considerat ca un vector coloana cu p componente, H este o
matrice p 2
p
n care toate coloanele sunt distincte. Acesta este dupa cum se stie
(Prelegerea 4) un cod Hamming (2
p
1, 2
p
p 1) - construit nsa ca un cod ciclic.
Exemplul 14.1 Fie GF(2
3
), radacina a polinomului ireductibil 1+X +X
3
.
Se verica imediat ca ord() = 7, deci este primitiv. Construim matricea
H = (1
2

6
) =

1 0 0 1 0 1 1
0 1 0 1 1 1 0
0 0 1 0 1 1 1

Ea este matricea de control pentru un (7, 4) - cod Hamming.


Deci codul studiat n Exemplul 4.1 (Prelegerea 4) poate tratat si ca un cod ciclic
de polinom generator h(X) = 1 + X + X
3
.
Un cod Hamming ciclic se deneste cerand ca orice polinom - cod {f(X)} sa admita
ca radacin a pe GF(2
p
) primitiv. Generatorul unui asemenea cod este chiar
polinomul minimal al lui : g(X) = m(X).
Deoarece si
2
este radacin a a polinoamelor - cod (Teorema 11.9), codul Ham-
ming ciclic este un caz particular de cod BCH cu d = 3, capabil sa corecteze o
eroare.
Codicarea se face folosind circuitul liniar cu p = nk elemente de nmagazinare
(vezi paragraful 9.4.2, Prelegerea 9), corespunzator polinomului minimal m(X). Cal-
culul sindromului cuvantului recept ionat {r(X)} - adica rH
T
= r() se realizeaza
folosind acelasi circuit de mpart ire cu m(X). Acest sindrom - n cazul n care este
nenul, deci a intervenit o eroare simpla - este una din coloanele matricii H, adica
una din valorile 1, ,
2
, . . . ,
n1
.
Pentru a aa care component a a fost afectata de eroare, se poate folosi acelasi
circuit n felul urmator: neglijam intrarea si las am circuitul sa funct ioneze, avand
init ial n elementele de nmagazinare sindromul r(), care este de forma
157
158 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE

j
(0 < j 2
p
2).
La ecare tact circuitul nmult este cont inutul elementelor de nmagazinare cu ;
deci, dupa n j = 2
p
1 j momente, n elementele de nmagazinare se obt ine

2
p
1j+j
=
2
p
1
=
n
=
0
= 1 = (1, 0, . . . , 0).
Cum componentele cuvantului recept ionat sunt scrise n ordinea descrescatoare a
puterilor (prima component a este coecientul termenului de rang maxim), nseam-
na ca va trebui sa corectam componenta nj din cuvant, nlocuind 0 cu 1 sau 1 cu
0.
Exemplul 14.2 Fie GF(2
4
), radacina a polinomului 1 + X + X
4
. Codul
Hamming (15, 11) obt inut folosind ca radacina pe - deci polinom generator
g(X) = 1 + X + X
4
, are matricea de control
H = (1 . . .
14
) =

1 0 0 0 1 0 0 1 1 0 1 0 1 1 1
0 1 0 0 1 1 0 1 0 1 1 1 1 0 0
0 0 1 0 0 1 1 0 1 0 1 1 1 1 0
0 0 0 1 0 0 1 1 0 1 0 1 1 1 1

Circuitul care realizeaza (n funct ie de necesitat i) codicarea, calculul sindromului si


corectarea erorilor simple este:
j j j E
T
'
}
'
c
r
E E E E E E
c
cEBE
E
T
r
+ + +
Intrare 2
Intrare 1
Codicarea se obt ine introducand la Intrarea 1 mesajul de informat ie de lungime k,
mesaj considerat ca un polinom de gradul n1 cu primii coecient i (corespunzatori
termenilor de rang mare) elementele mesajului informat ional si cu ultimii n k
coecient i nuli.
La momentul init ial n elementele de nmagazinare se aa numai 0, circuitul
feedback este nchis, iar circuitul spre canal este deschis. De asemenea, Intrarea 2
este ignorata.
Simultan cu transmiterea pe canal, elementele de informat ie se introduc si n
circuitul liniar. Dupa k momente, aici se aa pozit iile de control.

In acest moment se decupleaza feedback-ul, se cupleaza legatura spre canal si se


ignora cele doua intrari. Timp de n k tact i elementele de control nmagazinate
sunt trimise pe canal, imediat dupa mesajul de informat ie.
Pentru calculul sindromului: se neglijeaza canalul, se nchide feedback-ul, iar n
elementele de nmagazinare se gaseste init ial (0, 0, . . . , 0). Cuvantul recept ionat este
introdus prin Intrarea 2. Dupa n tact i, aici se va gasi r().
Pentru corectarea erorii: se neglijeaza cele doua intrari, se nchide feedback-ul si
se lasa sa funct ioneze circuitul pana cand n elementele de nmagazinare se obt ine
vectorul (1, 0, . . . , 0). Numarul de tact i scursi da indicele componentei din mesajul
recept ionat, care trebuie corectata prin complementare.
14.1. CODURI HAMMING CICLICE 159
Sa consideram spat iul nul al matricii
H =

1
2
. . .
2
p
2
1 1 1 . . . 1

unde GF(2
p
) este primitiv. H are p + 1 linii si n = 2
p
1 coloane (pe prima
coloana, primele p pozit ii formeaza vectorul 1 =
0
, iar pe a p + 1-a pozit ie se aa
scalarul 1 Z
2
). Codul obt inut este codul Hamming extins (Denit ia 3.1), capabil
sa corecteze o eroare si sa detecteze doua erori.
Un asemenea cod se poate deni cerand ca orice cuvant - cod {f(X)} sa aiba
ca rad acini si 1. Generatorul unui astfel de cod ciclic este g(X) = (1 + X)m(X),
unde m(X) este polinomul minimal al lui .
Codicarea n acest caz se face - ca mai sus - folosind circuitul cu n k + 1 =
p+1 elemente de nmagazinare. Pentru calculul sindromului cuvantului recept ionat
{r(X)} se folosesc ns a practic doua circuite: unul de mp art ire la m(X) (pentru cal-
culul lui r()) si altul de mp art ire la 1+X (pentru r(1)). Discut ia este urmatoarea:
Daca r() = r(1) = 0, atunci nu a intervenit nici o eroare (sau avem o eroare
nedetectabila);
Daca r() = 0, r(1) = 0, avem o eroare simpla care se corecteaza cu circuitul
de mp art ire cu m(X), dupa procedeul descris n Exemplul 14.2;
Daca r() = 0, r(1) = 0, atunci au fost detectate doua erori.
Exemplul 14.3 Sa extindem codul Hamming din Exemplul 14.2. Vom avea poli-
nomul generator
g(X) = (1 + X)(1 + X + X
4
) = 1 + X
2
+ X
4
+ X
5
Circuitul liniar care codica mesajele de informat ie (de lungime k = 10) este:

+ + +
E E E E E E E
T
'
k
'
cE
c
r r
c
c EBE
E
T
r
Sindromul se calculeaza cu ajutorul circuitului liniar corespunzator polinomului
m(X) = 1 + X + X
4
:
j j
+ +
E
T
E E E E E E
T
'
c c
r
iar r(1) se obt ine din circuitul de mpart ire la 1 + X:
j E E E
T
'
c
+
Circuitul liniar construit pentru m(X) face si corectarea erorilor simple.
160 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
14.2 Coduri Hamming ciclice nebinare
Am studiat codurile Hamming atat sub forma liniara, cat si ca un caz particular
de coduri Reed - Muller sau coduri ciclice.

In aceasta ultima situat ie, ele se pot
implementa cu ajutorul circuitelor liniare si - fapt important - admit o variant a de
generalizare naturala la cazul nebinar.
Denit ia 14.1 Fie GF(q
p
) un element primitiv. Se deneste codul Hamming
ciclic nebinar A astfel:
{f(X)} A f(X) are radacina =
q1
sau - echivalent - A are matricea de control H = (1
2
. . .
n1
) unde n = ord().
Din

n
= 1 = ()
q
p
1
=

q1

q
p
1
q1
rezulta n =
q
p
1
q 1
.
Se observa imediat ca H are un num ar maxim de coloane distincte si nenule.
Propozit ia 14.1 (n, q 1) = 1 daca si numai daca (p, q 1) = 1
Demonstrat ie: Din q 1|q
j
1 rezulta q
j
= (q 1)s
j
+ 1. Deci
n =
q
p
1
q 1
= q
p1
+ q
p2
+ . . . + q + 1 = (q 1)(s
p
+ s
p1
+ . . . + s
1
) + p
si atunci
(p, q 1) = 1 (n, q 1) = 1. 2
Teorema 14.1 Spat iul nul al matricii H = (1
2
. . .
n1
) unde =
q1
,
n =
q
p
1
q 1
si GF(q
p
) primitiv, are distant a minima d 3 daca si numai daca
(n, q 1) = 1.
Demonstrat ie: : Sa presupunem ca exista doua coloane liniar dependente n
matricea H. Deci
i
= a
j
cu a Z
q
, adica
ij
= a.
Elementele nenule din Z
q
sunt rad acinile ecuat iei X
q1
1 = 0 (Teorema 11.3).
Mai mult, ele sunt chiar primele q 1 puteri ale lui
n
.

Intr-adevar, pentru orice
s = 0, 1, . . . , q 2 avem
(
ns
)
q1
=

q
m
1

s
= 1
s
= 1.
Deci pentru a Z
q
avem a =
ns
. Se poate scrie atunci
ij
=
ns
, adica

(ij)(q1)
=
ns
(i j)(q 1) = ns.
Dar s < q 1 iar (n, q 1) = 1, deci i = j, de unde rezulta a = 1,
i
=
j
.
Orice doua coloane din H sunt liniar independente, adica (Teorema 2.4) d 3.
: Daca q 1 si n nu sunt prime ntre ele, atunci ecuat ia anterioar a admite
si solut ia i = j; deci exista doua coloane distincte liniar dependente
i
si
j
n
matricea H, ceea ce contrazice faptul ca d 3. 2
Pentru operat ia de codicare se foloseste circuitul de mpart ire cu polimul mini-
mal m(X) al lui (care aici este chiar polinomul generator al codului Hamming ciclic
A). Acelasi circuit va calcula sindromul r() al polinomului recept ionat {r(X)}.
14.2. CODURI HAMMING CICLICE NEBINARE 161

In cazul n care a intervenit o eroare, r() este de forma b


j
(eroarea b a aparut
pe pozit ia
j
). Funct ionarea secvent iala a circuitului liniar (fara intrari) revine la
nmult irea succesiva cu . Deci, dupa n j tact i, n elementele de nmagazinare se
obt ine vectorul (b 0 . . . 0). Atunci, din componenta n j a cuvantului recept ionat
se va scadea eroarea b. De observat ca - deoarece coloanele lui H sunt nenule
si distincte - primul tact n care se obt ine un vector cu toate componentele nule
nafara de prima, este n j.
Exemplul 14.4 Sa consideram p = q = 3 (astfel, (m, q 1) = 1). Folosind
radacina a polinomului primitiv 1 + 2X + X
3
vom genera extensia GF(3
3
). Fie
=
q1
=
2
. Deoarece
3
3
1
=
26
= 1, avem ord() = 13, deci n = 13. Pentru
a construi polinomul minimal m(X) al lui , sa observam (Sect iunea 11.3) ca el are
ca radacini
2
,
6
si
18
(
54
=
2
). Deci m(X) = a + bX + cX
2
+ X
3
. Punand
condit ia m(
2
) = a + b
2
+ c
4
+
6
= 0, obt inem ecuat ia matriciala:
a

1
0
0

+ b

0
0
1

+ c

0
2
1

1
1
1

0
0
0

cu solut ia a = 2, b = c = 1. Deci m(X) = 2 + X + X


2
+ X
3
.
Codul ciclic de polinom generator g(X) = m(X) = 2+X+X
2
+X
3
are matricea
de control
H = (1
2

4
. . .
24
) =

1 0 0 1 2 0 2 0 1 1 1 2 1
0 0 2 1 0 1 0 2 2 2 1 2 1
0 1 1 1 2 1 1 0 0 1 2 0 2

Am denit astfel (13, 10) - codul Hamming ternar, evocat n Exemplul 4.5 relativ
la Problema Pronosportului.
Sa consideram mesajul de informat ie 0120120120. Pentru operat ia de codicare
se va folosi circuitul (pentru detalii, a se revedea sect iunea 9.4.2):
j
j
j
j
j
+ +
2 2
+
E E E E E
T
'
cE
c
r
c
c
r
c
E
T
r
0210210210
(s-a t inut cont ca 1 = 2, 2 = 1).

In primii 10 tact i de funct ionare, bit ii de
informat ie sunt trimisi pe canal si - simultan - intra n circuitul liniar, a carui
funct ionare este (pe prima coloana se aa informat ia, iar pe celelalte trei - cont inutul
elementelor de nmagazinare):
0 0 0 0 2 2 1 2
1 1 2 2 0 2 0 2
2 1 0 1 1 0 2 0
0 1 0 2 2 2 1 0
1 0 1 0 0 0 2 1
162 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE

In elementele de nmagazinare au ramas caracterele de control 021. Ele sunt trimise


prin canal la tact ii 11 13 de la dreapta spre stanga, cu semn schimbat: n ordine
1 = 2, 2 = 1, 0 = 0. Deci cuvantul - cod transmis a fost a = 0120120120210.
Se verica imediat ca aH
T
= 0.
La recept ie, primele 10 caractere sunt cele de informat ie. Pentru a verica daca
au aparut sau nu erori, se foloseste acelasi circuit, dar cu alta intrare:
j
j
j
j
+
2 2
+
j
+
E E E E
T
'
c
r
E
c
r
c
c
c
E
T
E
0120210210210
Funct ionarea acestui circuit liniar timp de 13 tact i, este data de tabelul:
0 0 0 0 1 2 0
0 0 0 0 1 1 1 2
1 1 0 0 2 1 2 2
2 2 1 0 0 2 2 0
0 0 2 1 2 2 2 2
1 2 2 1 1 0 0 0
2 0 1 1 0 0 0 0
Sindromul a(
2
) obt inut este 000, deci nu a aparut nici o eroare. Daca s-ar
recept ionat nsa cuvantul a

= 0120120100210, dupa funct ionarea circuitului timp


de 13 tact i s-ar ajuns n elementele de nmagazinare la 220. Cum acesta este
nenul, circuitul se lasa sa funct ioneze n continuare, fara intrare, pana se ajunge
la un sindrom de forma b00 cu b = 0. Mai exact, funct ionarea circuitului va (pe
prima coloana se numara tact ii):
0 2 2 0 5 1 0 1
1 0 2 2 6 1 0 2
2 2 1 0 7 2 2 1
3 0 2 1 8 1 1 1
4 1 2 1 9 1 0 0
Deci, dupa 9 tact i s-a ajuns la 100. Corect ia se face astfel: din componenta a 9 - a
a cuvantului recept ionat se scade b = 1, obt inandu-se 0 1 = 2 (mod 3).
Observat ie: Denit ia codurilor Hamming ciclice nebinare nu este echivalent a cu cea a
codurilor Hamming nebinare data n Sect iunea 4.1.1. De exemplu, codul de matrice
de control
H =

1 0 1 2
0 1 2 2

este un (4, 2) - cod Hamming ternar. El cont ine 9 cuvinte


(0000, 1101, 2202, 0211, 1012, 2110, 0122, 1222, 2021),
care - evident - nu formeaza un cod ciclic.
Deci ntre cele doua denit ii ale codurilor Hamming nebinare (liniare si ciclice)
exista doar o relat ie de incluziune stricta.
14.3. CODURI GOPPA 163
14.3 Coduri Goppa
Aceasta clasa de coduri a fost introdusa de Goppa n 1970. Desi coduri neciclice,
ele constituie o generalizare a codurilor BCH si sunt o punte ntre teoria codurilor
si criptograe. Din acest motive, prezentarea lor este necesara.
Fie q un num ar prim si g(X) Z
q
[X]. Daca a Z
q
este un element cu proprie-
tatea g(a) = 0, vom nota
1
X a
=
g(X) g(a)
X a
g(a)
1
Propozit ia 14.2

In algebra polinoamelor din Z
q
[X] modulo g(X), polinomul
1
X a
este inversul lui X a.
Demonstrat ie: Faptul ca
1
X a
este polinom se veric a imediat. Pe de-alta parte,
(X a)
1
X a
= [g(a) g(X)]g(a)
1
= 1 g(a)
1
g(X) 1 (mod g(X)) 2
Denit ia 14.2 Un cod Goppa de lungime n peste Z
q
este determinat prin:
1. Un polinom g(X) peste o extensie Galois F a lui Z
q
, grad(g(X)) 2;
2. a
1
, a
2
, . . . , a
n
F cu g(a
i
) = 0, 1 i n.
Codul cont ine toate cuvintele v = v
1
v
2
. . . v
n
Z
n
q
pentru care
n

i=1
v
i
X a
i
= 0.
Teorema 14.2 Codul Goppa cont ine numai cuvintele v = v
1
v
2
. . . v
n
pentru care
n

i=1
v
i
g(a
i
)
1
a
s
i
= 0, s = 0, 1, . . . , t 1
unde t = grad(g(X)).
Demonstrat ie: Sa explicitam polinomul
1
X a
. Daca g(X) = g
0
+ g
1
X + . . . +
g
t
X
t
(g
t
= 0), atunci pentru orice a Z
q
cu g(a) = 0, are loc descompunerea
g(X) g(a)
X a
= g
t
X
t1
+ (ag
t
+ g
t1
)X
t2
+ (a
2
g
t
+ ag
t1
+ g
t2
)X
t3
+ . . . +
(a
t1
g
t
+ a
t2
g
t1
+ . . . + g
1
).
Deci coecientul lui X
k1
(1 k t) n polinomul
1
X a
este g(a)
1
t

j=k
a
tj
g
j
.
Ecuat ia caracteristica a codurilor Goppa
n

i=1
v
i
X a
i
= 0 implica faptul ca tot i
coecient ii lui X
k1
, k = 1, . . . , t sunt nuli. Deci
n

i=1
v
i
g(a
i
)
1
t

j=k
a
tj
g
j
= 0, 1 k t.
164 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
Cazul k = t conduce la g
t
n

i=1
v
i
g(a
i
)
1
= 0 si - deoarece g
t
= 0 - se obt ine
n

i=1
v
i
g(a
i
)
1
= 0.
Din cazul k = t 1 se obt ine g
t
n

i=1
v
i
g(a
i
)
1
a
i
+ g
t1
n

i=1
v
i
g(a
i
)
1
= 0. Cum a doua
suma este zero, iar g
t
= 0, va rezulta
n

i=1
v
i
g(a
i
)
1
a
i
= 0, s.a.m.d.
Am obt inut echivalent a
n

i=1
v
i
X a
i
= 0
n

i=1
v
i
g(a
i
)
1
a
s
i
= 0, 0 s t 1
2
Corolarul 14.1 Codul Goppa determinat de un polinom g(X) de gradul t are ma-
tricea de control
H =

1
g(a
1
)
1
g(a
2
)
1
g(a
3
)
. . .
1
g(a
n
)
a
1
g(a
1
)
a
2
g(a
2
)
a
3
g(a
3
)
. . .
an
g(a
n
)
.
.
.
a
t1
g(a
1
)
a
t1
2
g(a
2
)
a
t1
3
g(a
3
)
. . .
a
t1
n
g(an)

.
Demonstrat ie: Este lasat a ca exercit iu.
Exemplul 14.5 Polinomul 1+X+X
3
Z
2
[X] este ireductibil. Fie o radacina a
sa, cu ajutorul careia se genereaza extensia GF(2
3
). Daca alegem g(X) = 1+X+X
2
si drept elemente a
i
cele 8 componente ale lui GF(2
3
), vom obt ine un cod Goppa de
lungime 8 cu matricea de control
H =

1
g(0)
1
g(1)
1
g()
. . .
1
g(
6
)
0
1
g(1)

g()
. . .

6
g(
6
)

1 1
2

2

4
0 1
3

=
=

1 1 0 0 0 0 0 0
0 0 0 1 0 1 1 1
0 0 1 1 1 0 0 1
0 1 1 1 1 1 1 1
0 0 1 0 1 1 0 1
0 0 0 1 1 1 1 0

Acest cod este format din numai patru cuvinte:


00000000, 00111111, 11001011, 11110100.
El are distant a minima 5; s-a obt inut deci un (8, 2) - cod binar corector de doua
erori. De remarcat ca acesta nu este un cod ciclic.
Observat ie: Sa consideram un cod BCH denit prin rad acinile

m
0
,
m
0
+1
, . . . ,
m
0
+d2
unde GF(q
m
) are ordinul n. Acest cod se poate scrie ca un cod Goppa astfel: Se
14.3. CODURI GOPPA 165
ia polinomul g(X) = X
m
0
+d2
si elementele
0
,
1
, . . . ,
(n1)
. Vom avea pentru
orice i = 0, 1, . . . , d 2 si k = 0, 1, . . . , n 1:
(
k
)
i
(
k
)
m
0
+d2
= (
k
)
m
0
+d2i
= (
m
0
+d2i
)
k
Pe baza aceasta, codul Goppa rezultat are matricea de control
H =

1
m
0
+d2
(
m
0
+d2
)
2
. . . (
m
0
+d2
)
n1
1
m
0
+d3
(
m
0
+d3
)
2
. . . (
m
0
+d3
)
n1
.
.
.
1
m
0
(
m
0
)
2
. . . (
m
0
)
n1

care coincide cu matricea de control a codului BCH considerat, n care s-a efectuat
o inversare a liniilor.
Se poate arata (Van Lint) ca singurele coduri Goppa ciclice sunt codurile BCH.
Propozit ia 14.3 Codul Goppa binar de lungime n, determinat de un polinom de
grad t peste GF(2
m
) are k n mt simboluri de informat ie si distant a minima
t + 1.
Demonstrat ie: Matricea de control a codului Goppa are t linii n GF(2
m
), deci mt
linii scrise n binar. Rezulta ca numarul n k de simboluri de control este cel mult
mt : n k mt.
Pe de-alta parte, se arata usor ca orice combinat ie liniara de t coloane din H
este liniar independent a. 2
Denit ia 14.3 Fie g(X) un polinom ireductibil peste GF(q
m
). Codul Goppa deter-
minat de g(X) si de toate elementele lui GF(q
m
) se numeste ireductibil.
Codul prezentat n Exemplul 14.5 este un cod ireductibil. Despre codurile Goppa
ireductibile se poate prezenta urmatorul rezultat:
Teorema 14.3 Un cod Goppa binar ireductibil, determinat de un polinom de gradul
t poate corecta cel put in t erori independente.
Pentru demonstrat ie va trebui sa facem o construct ie suplimentara.
Denit ia 14.4 Derivata formala a polinomului a(X) = a
0
+a
1
X +. . . +a
n
X
n
este
denita prin a

(X) = a
1
+ 2a
2
X + 3a
3
X
2
+ . . . + na
n
X
n1
.
Lema 14.1 Pentru derivata formala sunt adevarate egalitat ile:
1. (a(X) + b(X))

= a

(X) + b

(X);
2. (a(X)b(X))

= a

(X)b(X) + a(X)b

(X)
Demonstrat ie: Exercit iu.
Lema 14.2

Intr-un corp de caracteristica 2 derivata formala a unui polinom este
un patrat perfect.
166 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
Demonstrat ie: Deoarece (X
n
)

= nX
n1
= 0 pentru n par, derivata va avea numai
puteri pare. Cum ecare coecient se poate scrie ca un patrat perfect (se lucreaza
ntr-un corp de caracteristica 2), avem f

(X) = f
2
0
+ f
2
2
X
2
+ f
2
4
X
4
+ . . . si, daca se
ia g(X) = f
0
+ f
2
X + f
4
X
2
+ . . ., avem f

(X) = g
2
(X). 2
Sa revenim acum la Demonstrat ia Teoremei 14.3: Fie g(X) un polinom ire-
ductibil de grad t peste GF(2
m
) = {a
1
, a
2
, . . . , a
n
} (n = 2
m
) si v = v
1
v
2
. . . v
n
un cuvant al codului Goppa, w(v) = s. Notam v
i
1
, v
i
2
, . . . , v
is
bit ii egali cu 1 din
v. Deoarece v este cuvant - cod, avem
n

i=1
v
i
X a
i
=
s

k=1
1
X a
i
k
= 0. Polino-
mul f(X) = (X a
i
1
)(X a
i
2
) . . . (X a
is
) nu este divizibil cu g(X) (deoarece
g(X) este ireductibil de grad t 2). Rezulta ca, n algebra claselor de resturi
Z
2
[X]/g(X), f() = 0 deci admite invers. Rezulta ca exista un polinom r(X) cu
{f()}{r()} = 1.
Sa calculam derivata formala f

(X) =
s

k=1
f(X)
X a
i
k
. Facand X = si nmult ind
relat ia cu r(), obt inem
{f

()}{r()} =
s

k=1
{f()}{r()}
a
i
k
=
s

k=1
1
a
i
k
= 0 (mod g(X)).
Aceastanseamn a ca f

(X)r(X) este divizibil cu g(X). Cum g(X) este ireductibil


si nu divide r(X) (deoarece r() = 0), rezulta g(X)|f

(X).
Deoarece suntem ntr-un corp de caracteristica 2, conform Lemei 14.2 derivata
formala este un patrat perfect: f

(X) = b
2
(X). Din faptul ca g(X) este divizor
ireductibil al lui b
2
(X) rezulta g(X)|b(X). Deci g
2
(X)|b
2
(X) = f

(X).
Se stie ca grad(f

(X)) = s 1 si s 1; deci grad(f

(X)) grad(g
2
(X)), adica
s 1 2t.
Cum ponderea oricarui cuvant - cod este 2t + 1, rezulta ca distant a minima a
codului este cel put in 2t + 1, deci codul corecteaza sigur t erori independente. 2
Exemplul 14.6 Sa consideram GF(2
3
) generat de o radacina a lui g(X) = 1 +
X + X
3
. Deoarece g(X) are 3 radacini n GF(2
3
), el nu va avea nici o radacina
n corpul GF(2
5
) (GF(2
5
) nu este o extensie a lui GF(2
3
)), deci aici g(X) este
ireductibil.
Codul Goppa ireductibil corespunzator are n = 32, k 32 5 3 = 17, d 7;
deci este un (32, 17) - cod corector de 3 erori.
Decodicarea codurilor Goppa se face n maniera similara decodicarii codurilor
BCH. Astfel, e C un cod Goppa denit de g(X) Z
q
[X] (grad(g(X)) = t),
si a
1
, . . . , a
n
GF(q
m
); consideram v = v
0
v
1
. . . v
n1
un cuvant - cod si r =
r
0
r
1
. . . r
n1
cuvantul recept ionat dupa transmiterea lui v.
Vom nota cu e = r v = e
0
e
1
. . . e
n1
secvent a - eroare.
Pentru w(e) t/2 se poate folosi un algoritm din cei uzuali.

In practica ns a
t = grad(g(X)) este mare si exista algoritmi ecient i de decodicare pentru cazul
w(e) < t/2. Un astfel de algoritm vom construi mai jos.
Fie M = {i|e
i
= 0}, card(M) = e < t/2; consideram polinomul sindrom
{s(X)} =
n1

i=0
e
i
X a
i
(mod g(X)).
14.4. EXERCIT II 167
De remarcat ca {s(X)} se poate determina prin calcul la primirea cuvantului r.
Se denesc polinoamele (X) (de localizare a erorii) si (X) prin
(X) =

iM
(X a
i
), (X) =

iM
e
i

jM\{i}
(X a
j
).
Din denit ie rezulta ca (X) si (X) sunt prime ntre ele.

In plus, grad((X)) =
e, grad((X)) < e.

Intre ele exista relat ia
{s(X)}{(X)} =
n1

i=0
e
i
X a
i

iM
(X a
i
) {(X)} (mod g(X)). (1)
(X) si (X) sunt polinoamele normate de grad minim care veric a relat iile de
sus.

Intr-adevar, sa presupunem ca exista
1
(X) un polinom nenul normat de grad
< e si
1
(X) polinomul corespunzator, astfel ca
{s(X)}{
1
(X)} {
1
(X)} (mod g(X))
Fie d(X) = cmmdc(s(X), g(X)). Din relat iile
s(X)(X) = a(X)g(X) + (X), s(X)
1
(X) = b(X)g(X) +
1
(X),
rezulta ca d(X) va divide si polinoamele (X),
1
(X). Deci,

s(X)
d(X)

{(X)}

(X)
d(X)

0,

s(X)
d(X)

{
1
(X)}

1
(X)
d(X)

mod
g(X)
d(X)

sau

s(X)
d(X)

{
1
(X)(X) (X)
1
(X)}
{d(X)}
0 (mod g(X)).
Deci {
1
(X)(X) (X)
1
(X)} 0 (mod g(X)). Deoarece polinomul din mem-
brul stang are grad mai mic decat t, rezulta ca membrul stang este 0. Apoi,
cum cmmdc((X), (X)) = 1, deducem (X)|
1
(X) ceea ce contrazice faptul
ca grad(
1
(X)) < grad((X)) si {
1
(X)} 0.
Rezumand, procedeul de decodicare a mesajelor la codurile Goppa are loc astfel:
1. Din mesajul recept ionat r se calculeaza sindromul s(X);
2. Se determina polinomul normat (X) de grad minim < t/2 care veric a
relat ia (1) (un algoritm ecient a fost dat de Berlekamp).
Din rezolvarea ecuat iei (X) = 0 se aa locat iile erorilor;
3. Se determina e
i
(i M) din relat iile (a
i
) = e
i

jM\{i}
(a
i
a
j
).
Pe baza acestor valori se construieste secvent a - eroare e;
4. Cuvantul decodicat este v = r e.
14.4 Exercit ii
14.1 Sa se construiasca matricea generatoare a (13, 10) - codului Hamming ternar
din Exemplul 14.4.
168 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
14.2

In codul din Exemplul 14.4 sa se codice mesajele de informat ie:
(a) 1122002211 (b) 0000111122 (c) 1020012210
(d) 2200211101 (e) 2222222222 (f) 0000000000
14.3 Sa se construiasca toate codurile Hamming peste Z
3
si Z
5
.
14.4 Demonstrat i Corolarul 14.1
14.5 Demontrat i Lema 14.1
14.6 Pentru g(X) = X
2t
aratat i ca
1
X a
=
2t

j=1
a
j
X
j1
.
14.7 Gasit i distant a minima a codului binar Goppa determinat de g(X) = 1 + X
2
si de elementele 0, ,
2
GF(2
2
).
14.8 Gasit i o matrice de control a (16, 8) - codului Goppa binar ireductibil dat de
g(X) =
3
+ X + X
2
, unde GF(2
4
) este primitiv.
14.9 Polinomul generator este g(X) = 1+X
2
iar parametrii sunt cele 15 elemente
nenule ale extensiei GF(2
4
) generata de radacina polinomului 1+X+X
4
. Analizat i
codul Goppa binar astfel construit.
14.10 Sa se construiasca codul Goppa ireductibil peste GF(2
4
), cu g(X) = 1+X+
X
3
. Sa se determine matricea de control si matricea generatoare.
Care este distant a minima a codului ?
14.11 Folosind codul construit anterior, sa se decodice (folosind algoritmi de co-
duri liniare) cuvintele:
0110110010011110 0111011001000000 1011110101100100
1111111111111111 1011011111001011 1010010110000010
14.12 Pentru acelasi cod Goppa binar ireductibil, sa se decodice cuvintele
0101100101111001 1100101100110100 0001100010010110
folosind algoritmul rapid specic.
14.13 Vericat i ca polinomul 1 + X + X
2
este ireductibil n GF(2
5
). Determinat i
parametrii si matricea de control a codului Goppa ireductibil corespunzator.
Prelegerea 15
Coduri Preparata

In 1968 Preparata a introdus o clasa de coduri neliniare corectoare de doua erori, care
s-au dovedit foarte interesante prin proprietat ile si prin legaturile pe care le au cu
diverse alte coduri deja studiate. Ele sunt o combinat ie ntre codurile Reed - Muller
si codurile BCH corectoare de doua erori. Denit ia pe care o vom folosi apart ine lui
Baker si permite o abordare mai simpla a algoritmilor de codicare/decodicare.
15.1 Denirea codurilor Preparata extinse
Sa revenim la modalitatea de marcare a pozit iilor cuvintelor de lungime 2
r
folosind
elementele lui GF(2
r
), asa cum s-a denit n algoritmul de decodicare Peterson
pentru codurile BCH. Deci:
Fie r 2 un num ar ntreg, GF(2
r
) primitiv, si U GF(2
r
); se noteaza
(U) cuvantul de lungime 2
r
denit prin
1 pe pozit ia i daca
i
U (0 i 2
r
2),
1 pe pozit ia 2
r
1 daca 0 U,
0 n rest.
Exemplul 15.1 Fie GF(2
3
) primitiv. Atunci
({0}) = 00000001
({
2
,
5
,
6
}) = 00100110
() = 00000000.
Se denesc n mod natural operat iile:
U + = {u +|u U}, U = {u|u U},
UV = {u|u U V, u U V }, U, V GF(2
r
), GF(2
r
).
Se veric a usor relat iile
(U) +(V ) = (UV ), w((U)) = card(U). (1)
Exemplul 15.2 Fie GF(2
3
) construit folosind radacina (primitiva) a polinomu-
lui 1 + X +X
3
, si mult imile U = {
2
,
5
,
6
}, V = {
5
, 0}. Atunci
U +
2
= {
2
+
2
,
5
+
2
,
6
+
2
} = {0,
3
,
0
},

2
U = {
2

2
,
2

5
,
2

6
} = {
4
,
0
, },
(U) +(V ) = 00100110 + 00000101 = 00100011 = ({
2
,
6
, 0}) = (UV ).
169
170 PRELEGEREA 15. CODURI PREPARATA
Denit ia 15.1 Fie r > 2 un numar impar. Codul extins Preparata P(r) este mul-
t imea cuvintelor de forma (U)(V ) unde U, V GF(2
r
) verica condit iile
1. card(U), card(V ) sunt numere pare;
2.

uU
u =

vV
v;
3.

uU
u
3
+

uU
u

3
=

vV
v
3
.
Pentru usurint a vom nota cuvintele - cod cu [(U), (V )] (vezi si codul Golay).
Exemplul 15.3

In ipotezele din Exemplul 15.2, sa consideram U = {,
2
,
5
, 0},
V = {
0
, ,
2
,
3
,
6
, 0}. Prima condit ie din denit ie este vericata. Pentru a
doua condit ie avem:

uU
u = +
2
+
5
+0 = 010 + 001 + 111 + 000 = 100 =
0
,

vV
v =
0
++
2
+
3
+
6
+0 = 100+010+001+110+101+000 = 100 =
0
.
A treia condit ie este si ea vericat a deoarece

uU
u
3
=
3
+
6
+ +0 = 110 + 101 + 010 + 000 = 001 =
2
,

vV
v
3
=
0
+
3
+
6
+
2
+
4
+0 = 100+110+101+001+011+000 = 101 =
6
si
2
+ (
0
)
3
=
6
.
Deci [(U), (V )] = 01100101 11110011 este cuvant - cod n P(3).
Observat ii:
Deoarece card((U)) = card((V )) = 2
r
, P(r) este un cod de lungime 2
r+1
.
Faptul ca 0 este sau nu un element al mult imilor U sau V nu afecteaza cu
nimic condit iile 2 si 3 din Denit ia 15.1. Acest element se introduce n cele
doua mult imi numai pentru a asigura prima condit ie din denit ie. Rezulta
ca bit ii de pe pozit ia 2
r
1 din (U) si (V ) sunt bit i de paritate (ceea ce
justica termenul de cod Preparata extins).
Exponentul

3

din Denit ia 15.1 nu este esent ial. Daca el se nlocuieste cu


s = 2
t
+ 1 astfel ca aplicat iile f, g : GF(2
r
) GF(2
r
), f(x) = x
s
, g(x) =
x
s2
sa e bijective, toate proprietat ile se pastreaz a.
Aceste coduri se numesc Coduri Preparata generalizate.
Lema 15.1 Fie [(U), (V )], [(A), (B)] P(r) si =

uU
u.
Atunci [(UA +), (V B)] P(r).
Demonstrat ie: Vom arata ca noul cuvant construit veric a condit iile din Denit ia
15.1.
15.1. DEFINIREA CODURILOR PREPARATA EXTINSE 171
1. Deoarece card(U), card(V ), card(A), card(B) sunt pare, se arata usor ca:
card(V B) = card(V ) +card(B) 2 card(V B),
card(UA +) = card(UA) = card(U) +card(A) 2 card(U A).
2. Sa observamnt ai ca daca I, J GF(2
r
), avem

xIJ
x =

xI
x+

xJ
x deoarece
orice element
i
I J apare de doua ori n membrul drept si niciodata n
membrul stang, iar
i
+
i
= 0. Deci:

xUA+
x =

yUA
(y + ) =

yUA
y + card(UA) =

yU
y +

yA
+0
(deoarece card(UA) este par) =

yV
y +

yB
y =

yV B
y.
3.

xUA+
x
3
+


xUA+
x

3
=

yUA
(y +)
3
+


yV B
y

3
=
=

yU
(y +)
3
+

yA
(y +)
3
+

yV
y +

yB
y

3
=

yU
y
3
+

yU
y
2
+
2

yU
y +

3
card(U) +

yA
y
3
+

yA
y
2
+
2

yA
y +
3
card(A) +

yV
y

3
+

yV
y

yB
y

yV
y

yB
y

2
+

yB
y

3
.
Dar =

yU
y =

yV
y,

yV
y

2
=

yV
y
2
, iar card(U), card(V ) sunt pare.
Deci expresia de sus se reduce la

yV
y
3
+

yB
y
3
=

yV B
y
3
.
Denit ia 15.2 Un cod C este invariant la distant a daca pentru orice c
1
, c
2
C,
are loc relat ia
i 0 i n, card({|d(, c
1
) = i}) = card({|d(, c
2
) = i}).
Exemple simple de coduri invariante la distant a sunt codurile liniare.
Ca o consecint a imediata, pentru un cod invariant la distant a care cont ine
cuvantul nul, distant a minima este ponderea minima a unui cuvant - cod nenul.
Vom arata n continuare ca un cod Preparata are aceasta proprietate.
Lema 15.2 P(r) este invariant la distant a.
Demonstrat ie: Fie [(U), (V )], [(A), (B)] P(r) arbitrare aate la distant a i
unul de altul. Conform Lemei 15.1, [(UU+), (V V )], [(UA+), (V B)]
sunt de asemenea cuvinte - cod si se verica usor ca ele se aa la distant a i. Deoarece
UU = rezulta [(UU + ), (V V )] = 0, deci [(UA) + ), (V B)] are
pondere i. 2
172 PRELEGEREA 15. CODURI PREPARATA
Lema 15.3 Fie [(U), (V )] P(r). Atunci P(r) mai cont ine urmatoarele cuvinte:
(i). [(V ), (U)];
(ii). [(U +), (V +)] pentru orice GF(2
r
);
(iii). [(U), (V )] pentru orice GF(2
r
), = 0.
Demonstrat ie: Se rezolva similar demonstrat iei de la Lema 15.1. 2
Exemplul 15.4 Conform Exemplului 15.3, [(U), (V )] P(3), unde
U = {,
2
,
5
, 0}, V = {
0
, ,
2
,
3
,
6
, 0}.
Conform Lemei 15.3 n care se ia =
3
, vom mai gasi drept cuvinte - cod si pe
[(V ), (U)] = 11110011 01100101,
[(U +), (V +)] = [({
0
,
5
,
2
,
3
}), ({,
0
,
5
, 0,
4
,
3
})] =
= 10110100 11011101,
[(U), (V )] = [({
4
,
5
, , 0}), ({
3
,
4
,
5
,
6
,
2
, 0})] =
= 01001101 00111111.
Putem folosi Lema 15.3 pentru a simplica problema determinarii distant ei mini-
me a lui P(r). Pentru aceasta ns a, este nevoie de un rezultat suplimentar (care
justica condit ia ca r sa e impar).
Lema 15.4 Fie GF(2
r
) primitiv. Atunci
3
este primitiv daca r este impar si
nu este primitiv daca r este par.
Demonstrat ie: Se stie ca
i
este primitiv daca si numai daca (i, 2
r
1) = 1. Avem
2
r
1 = (31)
r
1 = M3+(1)
r
1; deci pentru r impar 2
r
1 = M32 = M3+1,
ceea ce nseamn a ca
3
este primitiv. Similar, pentru r par, 2
r
1 = M3, deci
3
nu este primitiv. 2
Corolarul 15.1 Daca r > 2 este un numar impar, atunci pentru orice x GF(2
r
)\
{0} exista y unic (numit radacina cubica a lui x) astfel ca y
3
= x.
Teorema 15.1 P(r) are distant a minima t = 6.
Demonstrat ie: Deoarece P(r) este invariant la distant a, el va cont ine un cuvant -
cod [(U), (V )] de pondere t. Deci
t = w((U)) +w((V )) = card(U) + card(V ).
Rezulta ca t este num ar par; mai trebuie vericat ca t = 2, t = 4 si exista un
cuvant - cod de pondere 6.
Sa presupunem t = 2; atunci card(U) = 2, card(V ) = 0 (Lema 15.3 asigura ca
totul se poate reduce la acest caz). Folosind tot Lema 15.3, (ii), putem presupune ca
U = {0, x} cu x = 0. Dar atunci

uU
u = 0 +x = x, ceea ce duce la o contrazicere
a denit iei codurilor Preparata, pentru ca V = .
Sa presupunem t = 4. Cu Lema 15.3, (i) aceasta nseamna card(U) = 4,
card(V ) = 0 sau card(U) = card(V ) = 2.

In primul caz avem U = {0, x, y, z} cu
x, y, z = 0 si distincte. Ultima condit ie a denit iei codurilor Preparata este:
0
3
+x
3
+y
3
+z
3
+ (0 +x +y +z)
3
= 0 sau (x +y)(x +z)(y +z) = 0
ceea ce este imposibil, cele trei numere ind distincte si nenule.
15.2. CODIFICAREA CODURILOR PREPARATA EXTINSE 173

In a doua varianta, se poate considera U = {0, x}, V = {y, z}, toate cele patru
elemente ind distincte. Din denit ie rezulta
0
3
+x
3
+ (0 +x)
3
= y
3
+z
3
sau y
3
+z
3
= 0.
Folosind acum Corolarul 15.1, din y
3
= z
3
rezulta y = z, contradict ie.
Sa construim acum un cuvant - cod de pondere t = 6. Fie x, y, z GF(2
r
)
elemente distincte nenule. Exista atunci (Corolarul 15.1) un element v GF(2
r
)
unic cu v
3
= x
3
+y
3
+z
3
. Daca v = x, atunci v
3
= x
3
deci y
3
= z
3
, ceea ce duce
la contradict ia y = z. Deci v este distinct de x, y, z.
Denim u = v +x +y +z. Se observa ca u = 0 (altfel
v
3
+ (x +y +z)
3
= (x +y)(x +z)(y +z) = 0
deci - cu Corolarul 15.1 - v = x +y +z). Fie acum U = {0, u}, V = {v, x, y, z}.
Din construct ie, cum toate elementele sunt distincte, [(U), (V )] este un cuvant
de pondere 6 si se veric a usor ca este cuvant - cod. 2
Exemplul 15.5 Sa consideram GF(2
3
) construit anterior. Fie elementele
x = , y =
3
, z =
5
. Denim
v
3
= x
3
+y
3
+z
3
=
3
+
9
+
15
= 110 + 001 + 100 =
4
= (
6
)
3
(deoarece
7
= 1), deci se poate lua v =
6
. Mai departe,
u = v +x +y +z =
6
+ +
3
+
5
=
4
. Acum, U = {0, u} = {0,
4
},
V = {v, x, y, z} = {
6
, ,
3
,
5
} si se obt ine [(U), (V )] = 00001001 01010110
care este un cuvant cod din P(3) de pondere 6.
Teorema 15.2 Codul Preparata nu este cod liniar.
Demonstrat ie: Dupa cum se stie, [(U), (V )]+[(A), (B)] = [(UA), (V B)].
Din demonstrat ia Teoremei 15.1 am vazut cum se pot construi cuvintele - cod
[(U), (V )], [(A), (B)] P(r) cu U = {0, u
1
}, V = {x
1
, y
1
, z
1
, v
1
},
A = {0, u
2
}, B = {x
2
, y
2
, z
2
, v
2
}. Conform Lemei 15.1,
c = [(UA +u
1
), (V B)] P(r). Facem urmatoarele observat ii:
card(UA +u
1
) 2;
d(c, [(UA), (V B)]) 2 card(UA +u
1
) 4;
P(r) are distant a minima 6.
Din ele rezulta ca [(U), (V )] + [(A), (B)] P(r).
Deci P(r) nu este cod liniar. 2
Ca o consecint a a acestei teoreme, nu se poate da nici o dimensiune pentru P(r),
deci se pare ca nu se poate determina numarul de cuvinte - cod. Vom reusi totusi
acest lucru ca o consecint a a schemei de codicare.
15.2 Codicarea codurilor Preparata extinse
Fie GF(2
r
) primitiv si sa consideram codul BCH de polinom generator g(X) =
m
1
(X)m
3
(X) unde m
i
(X) este polinomul minimal al lui
i
(i = 1, 3). Dupa cum se
stie, grad(m
1
(X)) = grad(m
3
(X)) = r, deci grad(g(X)) = 2r. Codul BCH astfel
denit poate corecta maxim 2 erori si are matricea de control (transpusa):
174 PRELEGEREA 15. CODURI PREPARATA
H =

6
.
.
.

2
r
2

3(2
r
2)

Deoarece g(X) genereaza un cod ciclic, rezulta ca orice submatrice a lui H formata
din 2r linii consecutive este nesingulara, deci inversabila. Se deneste matricea A
ca submatrice a lui H formata din ultimele 2r linii, si H

matricea ramasa prin


stergerea lui A.
Exemplul 15.6

In extensia GF(2
3
) generata de radacina a polinomului 1+X +
X
3
vom avea
A =

010 110
001 101
110 001
011 111
111 010
101 011

cu A
1
=

001 011
111 010
011 101
110 100
101 110
111 001

.
Pentru GF(2
5
) generata de radacina a polinomului 1 +X
2
+X
5
avem
A =

21

63

22

66
.
.
.
.
.
.

30

90

00011 01000
10101 00001
11110 00101
01111 10001
10011 00111
11101 11011
11010 01100
01101 10101
10010 10011
01001 01101

cu A
1
=

00111 00010
00011 10001
10011 00011
11011 01010
01101 10101
10101 11001
00110 11111
11001 01110
11000 00111
10001 10100

Fie a = [a
L
, a
R
] un cuvant binar oarecare de lungime 2
r+1
2r 2, unde
|a
L
| = 2
r
1, |a
R
| = 2
r
2r 1.

In notat ie polinomiala putem scrie
a
L
H = [a
L
(), a
L
(
3
)], a
R
H

= [a
R
(), a
R
(
3
)].
Se mai deneste
v
R
= [a
L
() +a
R
(), a
L
(
3
) + (a
L
())
3
+a
R
(
3
)]A
1
. (2)
Teorema 15.3 Fie r un numar impar. Pentru orice cuvant binar a de lungime
2
r+1
2r 2, daca (U) = [a
L
, p
L
], (V ) = [a
R
, v
R
, p
R
] unde p
L
, p
R
sunt bit ii de
control pentru a
L
respectiv [a
R
, v
R
], atunci [(U), (V )] P(r).
Demonstrat ie: [a
R
, v
R
]H = a
R
H

+v
R
A = [a
R
(), a
R
(
3
)] + [a
L
() +a
R
(),
a
L
(
3
) + (a
L
())
3
+a
R
(
3
)] = [a
L
(), a
L
(
3
) + (a
L
())
3
].
Dar [a
R
, v
R
] = [

vV
v,

vV
v
3
], a
L
() =

uU
u, a
L
(
3
) + (a
L
())
3
=

uU
u
3
+

uU
u

3
, ceea ce veric a condit iile din Denit ia 15.1.
Deci [(U), (V )] este cuvant - cod n P(r). 2
15.3. DECODIFICAREA CODURILOR PREPARATA EXTINSE 175
Corolarul 15.2 P(r) are 2
2
r+1
2r2
cuvinte - cod.
Demonstrat ie:

In Teorema 15.3 exista 2
2
r+1
2r2
alegeri posibile pentru a, toate
conducand la cuvinte - cod distincte. 2
Putem da acum un algoritm de codicare a meajelor de informat ie n codurile
Preparata.
Fie a
L
, a
R
cuvinte de lungimi 2
r
1 respectiv 2
r
2r 1.
Fie v
R
denit de (2).
Se construiesc p
L
, p
R
conform Teoremei 15.3.
Atunci mesajul de informat ie a = [a
L
, a
R
] se codica
n [a
L
, p
L
, a
R
, v
R
, p
R
].
Exemplul 15.7 Sa consideram r = 3, a
L
= 0110010, a
R
= 1. Deci
a
L
() = +
2
+
5
=
0
, a
R
() =
0
,
a
L
(
3
) =
3
+
6
+
15
=
2
, a
R
(
3
) =
0
.
Din (2) avem v
R
= [
0
+
0
,
2
+
0
+
0
]A
1
= [000 001]A
1
= 111001 unde
A
1
este matricea din Exemplul 15.6. Atunci vom codica a = [0110010 1] n
c = [a
L
, p
L
, a
R
, v
R
, p
R
] = [01100010 1 1 111001 1].
Deci c = [(U), (V )] unde (U) = 01100101, (V ) = 11110011, care coincide
cu secvent a - cod construita n Exemplul 15.3.
15.3 Decodicarea codurilor Preparata extinse
Cum P(r) are distant a minima 6, el poate corecta maxim 2 erori.
Fie b un cuvant recept ionat; l scriem b = [b
L
, p
L
, b
R
, p
R
] unde b
L
, b
R
sunt
ambele de lungime 2
r
1 iar p
L
, p
R
sunt bit i de control a paritat ii. Se calculeaza
b
L
H = [b
L
(), b
L
(
3
)], b
R
H = [b
R
(), b
R
(
3
)].
Apar mai multe cazuri, n funct ie de pozit iile unde apar erori.
1. Daca erorile apar pe pozit iile de control, atunci
b
L
() = b
R
(), b
L
(
3
) + (b
L
())
3
= b
R
(
3
)
(conform Denit iei 15.1), ceea ce se veric a usor.
2. Daca exista o eroare pe pozit ia i n b
R
si cel mult o eroare pe pozit iile de
control atunci
b
L
() = b
R
() +
i
, b
L
(
3
) + (b
L
())
3
= b
R
(
3
) +
3i
, deci
(b
L
() + b
R
())
3
= b
L
(
3
) + (b
L
())
3
+b
R
(
3
).
Daca ultima relat ie este vericat a, atunci se scrie
i
= b
L
() + b
R
() si se
schimba bitul i din b
R
(plus cel mult un bit de control).
3. Daca exista o eroare pe pozit ia i din b
L
si cel mult o eroare pe pozit iile de
control, similar cu cazul anterior (lucru posibil pe baza Lemei 15.3) se verica
relat ia
(b
R
() +b
L
())
3
= b
R
(
3
) + (b
R
())
3
+b
L
(
3
);
176 PRELEGEREA 15. CODURI PREPARATA
n caz armativ, se calculeaza
i
= b
R
() +b
L
() si se schimb a bitul i din b
L
(plus cel mult un bit de control).
4. Daca apar doua erori n b
R
pe pozit iile i si j, atunci:
b
L
() = b
R
() +
i
+
j
, b
L
(
3
) + (b
L
())
3
= b
R
(
3
) +
3i
+
3j
,
deci se determina
i
+
j
si
3i
+
3j
. Valorile i, j sunt determinate cu un
algoritm similar celui de la codurile BCH.
5. Daca apar doua erori n b
L
, invocand din nou Lema 15.3 putem aplica analiza
de la cazul anterior.
6. Daca apar doua erori: una pe pozit ia i n b
L
si una pe pozit ia j n b
R
, atunci
b
L
() +
i
= b
R
() +
j
, b
L
(
3
) +
3i
+ (b
L
() +
i
)
3
= b
R
(
3
) +
3j
.
Acest sistem de necunoscute
i
si
j
se rezolva astfel: din prima ecuat ie se
scoate
j
= b
L
() +
i
+b
R
() si se nlocuieste n a doua ecuat ie, ceea ce da
b
L
(
3
) +
3i
+ (b
L
() +
i
)
3
= b
R
(
3
) + (b
L
() +
i
)
3
+ (b
L
() +
i
)
2
b
R
() +
(b
L
() +
i
)b
R
()
2
+b
R
()
3
.
Dupa simplicari se ajunge la

3i
+
2i
b
R
() +
i
(b
R
())
2
+ (b
R
())
3
= b
L
(
3
) + b
R
(
3
) + b
L
()
2
b
R
() +
b
L
()b
R
()
2
, sau
(
i
+b
R
())
3
= (b
L
(
3
) + b
R
(
3
)) + (b
L
() +b
R
())
3
+b
L
()
3
+b
R
()
3
.
Notand membrul drept al acestei expresii cu , obt inem solut ia

i
= b
R
() +
1/3
,
j
= b
L
() +
1/3
.
Deci locat iile erorilor se pot determina n toate situat iile posibile. Bit ii de paritate
pentru ecare jumatate de cuvant dau posibilitatea de a decide ce caz se aplica lui
b. Putem da acum algoritmul de decodicare pentru codurile Preparata P(r).
15.3. DECODIFICAREA CODURILOR PREPARATA EXTINSE 177
Fie b = [b
L
, p
L
, b
R
, p
R
] cuvantul recept ionat.
0. Se calculeaza L
1
= b
L
(), L
3
= b
L
(
3
), R
1
= b
R
(), R
3
= b
R
(
3
);
1. Daca L
1
+ R
1
= 0 si L
3
+ L
3
1
+ R
3
= 0, atunci singurele erori posibile au
aparut pe pozit iile de control.
2. Daca (L
1
+R
1
)
3
+L
3
+L
3
1
+R
3
= 0, calculam
i
= L
1
+R
1
. Se corecteaza
pozit ia i din b
R
si cel mult un bit de control al paritat ii; se cere retransmisia
daca ambii bit i de paritate trebuie modicat i.
3. Daca (L
1
+R
1
)
3
+R
3
+R
3
1
+L
3
= 0, calculam
i
= L
1
+R
1
. Se corecteaza
pozit ia i din b
L
si cel mult un bit de control al paritat ii; se cere retransmisia
daca ambii bit i de paritate trebuie modicat i.
4. Daca ambele jumatat i ale lui b sunt de pondere para si
X
2
+ (L
1
+R
1
)X +
L
3
+L
3
1
+R
3
+ (L
1
+R
1
)
3
L
1
+R
1
= (X +
i
)(X +
j
),
se corecteaza pozit iile i si j din b
L
.
5. Daca ambele jumatat i ale lui b sunt de pondere para si
X
2
+ (L
1
+R
1
)X +
R
3
+R
3
1
+R
3
+ (L
1
+R
1
)
3
L
1
+R
1
= (X +
i
)(X +
j
),
se corecteaza pozit iile i si j din b
R
.
6. Daca ambele jumatat i ale lui b sunt de pondere impara, se calculeaza

i
= R
1
+ (L
3
1
+R
3
1
+ (L
1
+R
1
)
3
+L
3
+R
3
)
1/3

j
= L
1
+ (L
3
1
+R
3
1
+ (L
1
+R
1
)
3
+L
3
+R
3
)
1/3
Se corecteaza pozit ia i din b
L
si pozit ia j din b
R
.
7. Daca nu a aparut nici una din situat iile anterioare, se cere retransmisia
cuvantului.
Exemplul 15.8 Sa decodicam urmatoarele cuvinte primite, despre care se pre-
supune ca au fost codicate folosind P(3), unde GF(2
3
) s-a generat cu radacina
a polinomului 1 +X +X
3
:
I: b = 10010011 11100111
(0) [L
1
, L
3
] = b
L
H = 111 110, [R
1
, R
3
] = b
R
H = 101 110
(1) L
1
+R
1
= 111 + 101 = = 0
(2) (L
1
+R
1
)
3
+L
3
+L
3
1
+R
3
=
3
+
3
+
15
+
3
=
0
= 0
(3) (L
1
+R
1
)
3
+R
3
+R
3
1
+L
1
=
3
+
3
+
18
+
3
=
6
= 0
(4) X
2
+X +

3
+
15
+
3
+
3

= X
2
+X +
6
= (X +
2
)(X +
4
)
Deci b se decodica n 10010011 11001111.
II: b = 10100100 10001001
(0) [L
1
, L
3
] = b
L
H = [010, 011], [R
1
, R
3
] = b
R
H = [111, 011]
(1) L
1
+R
1
= 010 + 111 =
6
= 0
(2) (L
1
+R
1
)
3
+L
3
+L
3
1
+R
3
=
18
+
4
+
3
+
4
=
6
= 0
(3) (L
1
+R
1
)
3
+R
3
+R
3
1
+L
3
=
18
+
4
+
15
+
4
=
2
= 0
Ambele jumatat i ale lui b au pondere impara, deci
(6)
i
=
5
+ (
3
+
15
+
18
+
4
+
4
)
1/3
=
5
+ (
5
)
1/3
=
5
+ (
12
)
1/3
=

5
+
4
=
0
.
S-a obt inut i = 0. Se poate determina apoi imediat

j
= +
4
=
2
, deci j = 2.
Cuvantul b se decodica n 00100100 10101001.
178 PRELEGEREA 15. CODURI PREPARATA
III: b = 10001000 11101001
(0) [l
1
, L
3
] = b
L
H = [111, 011], [R
1
, R
3
] = b
R
H = [100, 000]
(1) L
1
+R
1
= 111 + 100 =
4
= 0
(2) (L
1
+R
1
)
3
+L
3
+L
3
1
+R
3
=
12
+
4
+
15
+0 =
3
= 0
(3) (L
1
+R
1
)
3
+R
3
+R
3
1
+L
3
=
12
+0 +
0
+
4
= 0
Calcul am
i
= L
1
+R
1
=
4
, deci i = 4. Dar modicarea bitului 4 n b
L
cere ca
ambii bit i de control sa e modicat i; deci se cere retransmisia cuvantului.
Pentru codul Preparata obt inut prin relaxarea lui P(r), se poate aplica aceeasi
strategie de decodicare folosita la codul Golay; cum acesta are d = 5, poate corecta
de asemenea cel mult 2 erori independente.
15.4 Coduri nrudite cu codul Preparata
15.4.1 Codul Nordstrom - Robinson
Sa plecam de la codul Golay binar extins C
24
ale carui cuvinte le scriem sub forma
a = [a
1
, a
2
] unde |a
1
| = 8, |a
2
| = 16. Consideram submult imea GNR C
24
ale
carei elemente veric a condit iile:
1. Daca a GNR atunci w(a
1
) {0, 2}.
2. Daca a, b GNR atunci d(a
1
, b
1
) 2.
Evident, GNR va avea 256 cuvinte. Pe baza lui se construieste codul
NR = {a
2
|a = [a
1
, a
2
] GNR}.
Acesta este un cod neliniar de lungime n = 16 si distant a minima d = 6. Numit
codul Nostrom - Robinson, el coincide cu codul Preparata P(3).
Un alt cod derivat din acesta este codul Nadler, construit astfel: se pastreaza din
NR doar cuvintele - cod care coincid pe ultimele doua pozit ii. Apoi la toate aceste
cuvinte se sterg ultimele trei caractere (o dubla scurtare urmata de o relaxare).
Codul astfel obt inut este unic, are n = 13, d = 5 si 64 cuvinte - cod.
15.4.2 Codurile Kerdock
Denit ia 15.3 Fie r 3, r impar si U, V GF(2
r
), card(U), card(V ) pare.
Un cod Kerdock K(r) este format din toate cuvintele de forma [U, V ] care verica
condit iile:
1. s (1 s 2
r
2) (1 w
2
(s) < r 2)

uU
u
s
=

vV
v
s
= 0;
2. s ( s 2
r
2) (w
2
(s) = r2)

uU
u
s
=

vV
v
s
=

uU
u
1
+

vV
v
1

s
unde w
2
(s) reprezinta ponderea reprezentarii n binar a lui s.
Se considera prin convent ie s, 0
s
= 0.
15.5. EXERCIT II 179
Codul Kerdok K(r) (denit n 1972) este de fapt un subcod al codului Reed
- Muller RM(2, r + 1); el este format din perechi de translatari de cuvinte din
RM(1, r) selectate n asa fel ca sa maximizeze distant a minima dintre doua trans-
latari.
Este interesant ca dintre toate codurile cu aceeasi distant a minima, codul Kerdok
are numarul maxim de cuvinte - cod.
Nu vom detalia demonstrat ii referitoare la proprietat ile acestor coduri. Pentru
informat ii suplimentare se pot folosi [6] si [2], cu ment iunea ca justicarile pleaca de
la o modalitate diferita de denire a codurilor K(r) si P(r). Rezultatele sunt nsa
deosebit de interesante. Astfel:
Teorema 15.4 K(r) este invariant la distant a.
Lema 15.5 K(3) = P(3).
Teorema 15.5 Codurile P(r) si K(r) sunt duale.
Ca o consecint a imediata, P(3) este un cod auto-dual.
15.5 Exercit ii
15.1 Demonstrat i relat iile (1).
15.2 Demonstrat i Lema 15.3.
15.3 Demonstrat i Corolarul 15.1.
15.4 Aplicat i Lema 15.3 cuvantului - cod denit n Exemplul 15.4, folosind
=
0
, = , =
6
15.5 De ce [(U), (V )] nu este cuvant - cod pentru = 0 ?
15.6 Aratat i ca cele trei cuvinte obt inute n Exemplul 15.4 satisfac condit iile deni-
t iei codurilor Preparata.
15.7 Fie GF(2
3
) generat de radacina a polinomului 1 + X + X
3
= 0. Folosind
urmatoarele cuvinte x, y, z GF(2
3
) construit i cuvinte - cod de pondere 6 din P(3):
x = y =
2
, z =
3
,
x = y =
4
, z =
6
,
x =
0
y =
3
, z =
6
,
15.8 Fie GF(2
3
) construit cu 1 + X + X
3
, iar A
1
din Exemplul 15.6. Codicat i
urmatoarele mesaje folosind P(3):
a
L
= 1010100, a
R
= 1;
a
L
= 1010100, a
R
= 0;
a
L
= 1111111, a
R
= 1;
a
L
= 1111111, a
R
= 0;
a
L
= 0000000, a
R
= 1;
180 PRELEGEREA 15. CODURI PREPARATA
15.9 Fie GF(2
5
) construit cu 1 +X
2
+X
5
, iar A
1
din Exemplul 15.6. Codicat i
urmatoarele mesaje folosind P(5):
a
L
= 10100 . . . 0, a
R
= 000001000100 . . . 0;
a
L
= 10100 . . . 0, a
R
= 00 . . . 0;
a
L
= 10100 . . . 0, a
R
= 111100 . . . 0;
a
L
= 0000 . . . 0, a
R
= 100 . . . 0;
Care este lungimea lui a
L
? dar a lui a
R
?
15.10

In aceleasi condit ii din Exemplul 15.8, sa se decodice cuvintele:
10000001 11101000 00011010 01000010 00100101 10100100
01010110 00011110 11101000 10001001 10011001 01010101
01000111 11001000 10101101 11010000 11101110 01010101
10111011 01101010 01011101 11101101 10011100 10100100
01101101 10011000 10101010 10111011 10100101 00010001
15.11 Decodicat i cuvintele primite, care au fost codicate cu P(5), unde GF(2
5
)
a fost construit folosind polinomul 1 +X
2
+X
5
.
11000110001000000000000001000010 00011110000000000000000110010000
10100000001000000000000000000000 00000100010000000100010101011100
15.12 Fie b un cuvant recept ionat n care w(b
L
) este impar iar w(b
R
) este par.
Poate decodicat b la pasul 2 al algoritmului ntr-un cuvant - cod situat la distant a
cel mult 2 ?
Bibliograe
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[3] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[4] S. Guiasu - Teoria Codurilor, Tipograa Universit at ii Bucuresti, 1976;
[5] D.G. Homan, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[6] A.M.Kerdok - A class of low-rate non linear codes, Information and control, 20
(1972), 182-187;
[7] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[8] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
181
Prelegerea 16
Coduri convolut ionale

In cazul codurilor prezentate pan a acum, la codicarea unui mesaj de informat ie se


obt ine un cuvant - cod de lungime n, ale carui caractere nu depind decat de cele
k elemente de informat ie curente. Avem de-a face cu un proces de codicare far a
memorie, iar aceste coduri sunt numite si coduri - bloc.
P. Elias a introdus n 1965 o clasa de coduri, remarcabile prin sigurant a sporita pe
care o asigura n transmiterea informat iei: codurile convolut ionale.

In cazul lor,
codicarea unui mesaj de lungime k se face t inand cont si de codicarile mesajelor
de informat ie anterioare.
De remarcat ca NASA si Agent ia Spat ial a Europeana folosesc o combinat ie ntre
aceste coduri si codurile Reed - Solomon. Fiecare mesaj de informat ie este codicat
init ial cu un cod RS, apoi cu un cod convolut ional.
16.1 Coduri liniare si coduri convolut ionale
Dupa cum am vazut, un (n, k) - cod liniar codica un mesaj de informat ie u Z
k
q
ntr-un cuvant - cod v = uG de lungime n (v Z
n
q
). Un cod liniar poate privit
nsa si ca o aplicat ie care transforma mesaje sursa (de orice lungime ik, i = 1, 2, . . .)
n mesaje - cod de lungime i n.
Exemplul 16.1 Codul generat de matricea
G =

1 0 0 1
0 1 0 1
0 0 1 1

deneste o funct ie astfel:


a
0
a
1
a
2
a
3
a
4
a
5
. . . a
0
a
1
a
2
x
0
a
3
a
4
a
5
x
1
. . .
unde
x
0
= a
0
+a
1
+a
2
, x
1
= a
3
+a
4
+a
5
, . . .
O astfel de funct ie poate exprimata foarte simplu prin polinoame. Astfel, e
a(X) = a
0
+ a
1
X + a
2
X
2
+ . . . polinomul reprezent and mesajul sursa, si u(X) =
u
0
+ u
1
X + u
2
X
2
+ . . . mesajul codicat. Atunci un cod liniar este o aplicat ie C
denita C(a(X)) = u(X). O astfel de aplicat ie are urmatoarele proprietat i:
181
182 PRELEGEREA 16. CODURI CONVOLUT IONALE
C este liniara:
C(a(X) +a

(X)) = C(a(X)) +C(a

(X));
C(ta(X)) = tC(a(X)).
C este invarianta n timp: nt arzierea mesajului sursa cu k tact i are ca efect
decalarea raspunsului cu n tact i:
C(X
k
a(X)) = X
n
C(a(X)).
C nu are memorie: codicarea unui mesaj sursa de lungime k nu depinde de
mesajele sursa precedente.
Aceste trei proprietat i caracterizeaza complet codurile liniare. Daca se renunt a la
ultima proprietate, se obt ine o noua clasa de coduri, numite coduri convolut ionale.
Denit ia 16.1 Fie q un numar prim. Prin (n, k) - cod convolut ional se nt elege o
aplicat ie liniara C : Z
q
[X] Z
q
[X] cu proprietatea (de invariant a de timp)
C(X
k
a(X)) = X
n
C(a(X)).
Exemplul 16.2 Sa consideram circuitul liniar:
`
_
`
_
`
_
-
6
-
?-
6
?
-
?
-
-
?-
-
6
-
6
+
+ +
El reprezinta un (2, 1) - cod convolut ional binar. Este liniar (datorita circuitului),
invariant n timp (o ntarziere de 1 tact la intrare provoaca o ntarziere de 2 tact i
la iesire).
De exemplu, pentru intrarea 1 se obt ine 11 la primul tact, 11 la al doilea tact si
01 la al treilea (dupa care urmeaza 0000 . . .). Deci
C(1) = 111101 = 1 + X +X
2
+X
3
+X
5
.
Datorita invariant ei n timp, avem
C(X) = C(01) = 00111101, C(X
2
) = C(001) = 0000111101, . . .
(s-a t inut cont de dualitatea de notare polinom - cuvant).
Datorita liniaritat ii, raspunsul C(1) caracterizeaza complet codul. De exemplu,
mesajul de intrare 101 se codica prin
C(101) = C(1 + X
2
) = C(1) + C(X
2
) = C(1) + C(001) = 11110100 . . . +
0000111101 . . . = 1111101101 = 1 + X +X
2
+X
3
+X
4
+X
6
+X
7
+X
9
.
16.2 Coduri (n, 1) - convolut ionale

In cazul particular k = 1, codul este complet determinat de iesirea pentru mesajul


de intrare 1. Notam
C(1) = g
0
(X)
polinomul generator al acestei subclase de coduri. Din invariant a n timp rezulta
16.2. CODURI (N, 1) - CONVOLUT IONALE 183
C(X
i
) = X
ni
g
0
(X), i 1.
Deci, pentru orice polinom a(X) = a
0
+a
1
X +. . . +a
p
X
p
avem
C(a(X)) = a
0
C(1)+a
1
C(X)+a
2
C(X
2
)+. . .+a
p
C(X
p
) = a
0
g
0
(X)+a
1
X
n
g
0
(X)+
a
2
X
2n
g
0
(X) +. . . +a
p
X
np
g
0
(X) = a(X
n
)g
0
(X).
Aceasta conduce la ideea ca un (n, 1) - cod convolut ional este generat de polino-
mul g
0
(X) conform regulii
a(X) a(X
n
)g
0
(X).
Invers, orice polinom g
0
(X) Z
q
[X] deneste un (n, 1) - cod convolut ional.
Observat ie: Ideea de polinom generator este similara celei de la codurile ciclice,
unde codicarea mesajului de informat ie a(X) revenea la nmult irea cu polinomul
generator. La codurile convolut ionale nu exista ns a restrict ie referitor la gradul lui
a(X) si n plus la nmult ire se foloseste a(X
n
).
Exista o modalitate simpla de construct ie a unui circuit liniar, generator al unui
astfel de cod. Vom descrie aceasta pentru cazul binar.
Polinomul g
0
(X) se descompune n sume de n termeni consecutivi, ecare suma
descriind modul de conectare al elementelor de nmagazinare. Astfel, e
g
0
(X) = (b
0
+b
1
X +. . . +b
n1
X
n1
) +(b
n
X
n
+b
n+1
X
n+1
+. . . +b
2n1
X
2n1
) +
. . . + (b
mn
X
mn
+b
mn+1
X
mn+1
+. . . +b
mn+n1
X
mn+n1
)
Numarul de m + 1 paranteze indica faptul ca sunt necesare m elemente de
nmagazinare (prima paranteza se refera la intrare). A i - a secvent a de termeni
descrie iesirea celui de-al i - lea element de nmagazinare (b
p
= 1 semnica o legatur a
directa cu al p - lea element al iesirii).

In plus, elementele de nmagazinare sunt legate ntre ele secvent ial.


Exemplul 16.3 Sa consideram (2, 1) - codul convolut ional de polinom generator
g
0
(X) = 1+X+X
2
+X
5
= (1+X) +(X
2
+0) +(0+X
5
). Prima paranteza, 1+X,
arata ca ambii bit i de iesire sunt legat i de intrare, X
2
+ 0 indica faptul ca primul
element de nmagazinare este legat direct doar de primul bit de iesire, 0 +X
5
arata
ca al doilea element de nmagazinare este legat numai de al doilea bit de iesire.

In
acest fel se obt ine codicatorul descris de circuitul liniar:
`
_
`
_
+
+
,-
6
-
? -
-
-
?-
-
6
-
6
?
6
Exemplul 16.4 Fie (3, 1) - codul convolut ional (deci cu 3 bit i de iesire) generat de
polinomul g
0
(X) = 1 + X
2
+ X
3
+ X
5
+ X
6
+ X
7
+ X
12
+ X
13
+ X
14
. Pentru a
construi circuitul liniar, rescriem acest polinom astfel: g
0
(X) = (1+0+X
2
)+(X
3
+
0 + X
5
) + (X
6
+X
7
+ 0) + (X
12
+X
13
+X
14
). Se obt ine
184 PRELEGEREA 16. CODURI CONVOLUT IONALE
`
_
`
_
`
_
`
_
`
_
`
_
+ + +
+
+ +
- - - - - -
6
- - - -
?-
6
?- - -
6
-
6
?
6
? -
6
6
?
, ,
Similar codurilor ciclice, plecand de la polinomul generator, se poate construi ma-
tricea generatoare a codurilor (n, 1) - convolut ionale. Aceasta este
G =

g
0
(X)
X
n
g
0
(X)
X
2n
g
0
(X)
.
.
.

Numarul liniilor (si deci si al coloanelor) lui G nu este xat, el depinzand de lungimea
mesajului sursa. Astfel, pentru un mesaj de lungime i, matricea G are i linii si
1 + grad(g
0
(X)) + (i 1) n coloane.
Exemplul 16.5 Fie (3, 1) - codul convolut ional binar de polinom generator g
0
(X) =
1 +X +X
3
+X
4
+X
5
+X
8
. Pentru un mesaj sursa de lungime 3, matricea G va
avea dimensiunea 3 15:
G =

1 1 0 1 1 1 0 0 1
1 1 0 1 1 1 0 0 1
1 1 0 1 1 1 0 0 1

(spat iile libere sunt completate cu 0). Astfel, codicarea mesajului 101 este
101 G = 110001000110001.
16.3 Coduri (n, k) - convolut ionale
Sa dezvoltam o descriere a codurilor (n, k) - convolut ionale, similara celei date an-
terior pentru cazul k = 1. Vom ncepe cu un exemplu:
Exemplul 16.6 Fie circuitele liniare a doua (2, 1) - coduri convolut ionale, care au
iesirea comuna:

_

_

_

_
+ +
+
+ +
6
-
6
-
6
-
?

_
+
-
,
?- -
? ?
? - -
6
-
-
? - - -
6
?-
,
- -
6
? ?
16.3. CODURI (N, K) - CONVOLUT IONALE 185
La ecare tact intrarea este formata din doi bit i care formeaza intrarile n cele doua
circuite liniare. O ntarziere cu doi tact i la intrare genereaza o ntarziere de doi
tact i la iesire; deci, acesta este un (2, 2) - cod convolut ional.
Pentru intrarea 10 iesirea este 110101 (funct ioneaza doar circuitul superior), iar
pentru 01 iesirea este 010111 (numai pe baza circuitului inferior). Formal,
C(1) = 1+X+X
3
+X
5
= g
0
(X), C(X) = X+X
3
+X
4
+X
5
= g
1
(X).
Folosind invariant a n timp se pot determina si alte iesiri:
C(X
2i
) = X
2i
g
0
(X), C(X
2i+1
) = X
2i
g
1
(X) i 1.
Denit ia 16.2 Pentru un (n, k) - cod convolut ional, polinoamele
g
i
(X) = C(X
i
), 0 i k 1
se numesc polinoame generatoare.
Teorema 16.1 Un (n, k) - cod convolut ional de polinoame generatoare g
i
(X), (0
i k 1) este determinat de funct ia de codicare
a(X)
k1

i=0
a
(i)
(X
n
)g
i
(X) (1)
unde pentru secvent a a = a
0
a
1
a
2
. . . s-a notat a
(i)
= a
i
a
i+k
a
i+2k
. . . (0 i k 1).
Reciproc, ind date polinoamele g
i
(X) i = 0, 1, . . . , k 1 si un numar n, formula
(1) determina un (n, k) - cod convolut ional.
Demonstrat ie: Vom ncepe prin a arata ultima armat ie. Aplicat ia
a(X) a
(i)
(X
n
)g
i
(X)
este liniara (ca o compunere de transformari liniare) si invariant a n timp (deci
deneste un (n, k) - cod convolut ional). Ultima asert iune rezulta din observat ia ca
pentru orice secvent a a,

X
k
a(X)

(i)
X
n
a
(i)
(X).
Deci iesirea la X
k
a(X) prin aceasta aplicat ie este X
n
k1

i=0
a
(i)
(X
n
)g
i
(X).
Sa aratam acum ca un (n, k) - cod convolut ional denit de aplicat ia C este identic
cu cel dat de C

(a(X)) =
k1

i=0
a
(i)
(X
n
)g
i
(X) unde g
i
(X) = C(X
i
) sunt polinoamele
generatoare. Deoarece C si C

sunt ambele liniare, este sucient sa aratam ca


C(X
r
) = C

(X
r
) pentru orice r 0; atunci vom avea
C(a
0
+a
1
X +a
2
X
2
+. . .) =

r0
a
r
C(X
r
) =

r0
a
r
C

(X
r
) = C

(a
0
+a
1
X +. . .).
Deoarece ambele aplicat ii sunt (n, k) invariante n timp, ne putem restrange la
0 r k 1. Pentru a = 00 . . . 0100 . . . (cu 1 pe pozit ia r), este evident ca
a
(r)
= 100 . . . si a
(i)
= 000 . . . pentru i = r. Deci C

(X
r
) = g
r
(X) = C(X
r
). 2
Analog codurilor (n, 1) - convolut ionale, si n acest caz se poate deni ma-
tricea generatoare, care este o reprezentare matriciala a relat iei (1). Liniile ma-
tricii sunt g
0
(X), g
1
(X), . . . , g
k1
(X), X
n
g
0
(X), X
n
g
1
(X), . . ., considerate ca poli-
noame de grad innit. Pentru mesajul a = a
0
a
1
. . . a
r
codicarea este aG =
186 PRELEGEREA 16. CODURI CONVOLUT IONALE
a
0
g
0
(X) +. . . +a
k1
g
k1
(X) +X
n
[a
k
g
0
(X) +. . . +a
2k1
g
k1
(X)] +X
2n
[a
2k
g
0
(X) +
. . . +a
3k1
g
k1
(X)] +. . . = (a
0
+a
k
X
n
+a
2k
X
2n
+. . .)g
0
(X)+. . . +(a
k1
+a
2k1
X
n
+
. . .)g
k1
(X) =
k1

i=0
a
(i)
(X
n
)g
i
(X).
Exemplul 16.7 Matricea generatoare a (2, 2) - codului convolut ional descris n Ex-
emplul 16.6 este
G =

1 1 0 1 0 1
0 1 0 1 1 1
1 1 0 1 0 1
0 1 0 1 1 1
1 1 0 1 0 1 . . .
0 1 0 1 1 1 . . .
.
.
.

(locurile goale sunt completate cu 0).


Pentru intrarea 101 iesirea este
(1 0 1)

1 1 0 1 0 1 0 0
0 1 0 1 1 1 0 0
0 0 1 1 0 1 0 1

= (1 1 1 0 0 0 0 1), deci
C(1 +X
3
) = 1 + X +X
3
+X
8
.
S-a prezentat anterior modul de construct ie al unui circuit liniar pentru (n, 1) -
coduri convolut ionale, plecand de la polinomul generator g(X).

In mod similar se
determina circuitul liniar de codicare pentru un (n, k) - cod convolut ional:
1. Pentru i = 0, 1, . . . , k 1 se construieste circuitul liniar al (n, 1) - codului dat
de a(X) a(X
n
)g
i
(X);
2. Se foloseste un buer comun de iesire (de n simboluri), n care ajung rezultatele
nsumate ale celor k circuite;
3. Secvent a de intrare este segmentat a n grupe de cate k simboluri, ecare din
ele constituind intrarea n cate un circuit liniar.
Exemplul 16.8 Sa construim circuitul liniar pentru (2, 2) - codul denit de poli-
noamele generatoare
g
0
(X) = X +X
3
+X
4
+X
5
, g
1
(X) = 1 + X +X
2
+X
4
+X
5
+X
6
+X
7
.
Scriem g
0
(X) = (0 + X) + (0 + X
3
) + (X
4
+ X
5
) deci circuitul sau liniar are 2
elemente de nmagazinare. Pentru g
1
(X) = (1+X)+(X
2
+0)+(X
4
+X
5
)+(X
6
+X
7
)
sunt necesare trei elemente de nmagazinare.
Reprezentarea sa graca este:
16.4. CODURI CONVOLUT IONALE SISTEMATICE 187

_

_

_

_

_
+ +
+ +
+
+
?
-
6
- - -
?
,
6
- - -
?
6 6
-
?- - - -
6

_

_
+ +
,
6
- - -
6
-
6 6
? - - -
6
? ?
-
-
6
Denit ia 16.3 Un (n, k) - cod convolut ional are memorie N daca
i (0 i k 1), grad(g
i
(X)) Nn,
iar N este minim cu aceasta proprietate. Numarul Nn se numeste lungimea
restransa a codului.
Dupa cum s-a vazut, un cod convolut ional de memorie N poate implementat cu
o combinat ie de N 1 elemente de nmagazinare. N este numarul de simboluri de
iesire care pot modicate la schimbarea unui singur caracter de intrare.
16.4 Coduri convolut ionale sistematice
Un (n, k) - cod convolut ional sistematic are proprietatea ca la ecare iesire de n car-
actere, pe primele k pozit ii se gasesc simbolurile de informat ie. Vom da o construct ie
directa a acestor coduri, plecand tot de la similitudinea cu codurile - bloc.
Fie n, k, N (k < n) numere naturale nenule. Consideram sistemul de k(n k)
secvent e cu N componente peste Z
q
:
g(i, j) = g
0
(i, j)g
1
(i, j) . . . g
N1
(i, j), 1 i k, 1 j n k.
Aceste secvent e se numesc subgeneratori.
Consideram matricea
Q
0
=

(1)
g

(2)
.
.
.
g

(k)

= (I
k
P
0
O
k
P
1
O
k
P
2
O
k
. . . P
N2
O
k
P
N1
O
k
O
k
. . .)
unde I
k
este matricea unitate, O
k
este matricea nula (ambele de ordin k),
P
t
=

g
t
(1, 1) g
t
(1, 2) . . . g
t
(1, n k)
g
t
(2, 1) g
t
(2, 2) . . . g
t
(2, n k)
.
.
.
g
t
(k, 1) g
t
(k, 2) . . . g
t
(k, n k)

, 0 t N 1
iar
g

(i) = 0 . . . 010 . . . g
0
(i, 1) . . . g
0
(i, n k)0 . . . 0g
1
(i, 1) . . . g
1
(i, n k)0 . . . 0
0 . . . 0g
N1
(i, 1) . . . g
N1
(i, n k)0 . . . (1 i k).
Cuvintele obt inute din primele Nn componente ale lui g

(i) (1 i k):
g(i) = 0 . . . 010 . . . 0g
0
(i, 1) . . . g
0
(i, n k)0 . . . 0g
N1
(i, 1) . . . g
N1
(i, n k)
188 PRELEGEREA 16. CODURI CONVOLUT IONALE
se numesc generatori.
Fie un numar natural. Se deneste operatorul
D

(i) = 0 . . . 0

n
g

(i)
care translateaza g

(i) cu n pozit ii spre dreapta.

In sfarsit, e
G

Q
0
DQ
0
D
2
Q
0
.
.
.

(1)
.
.
.
g

(k)
Dg

(1)
.
.
.
Dg

(k)
D
2
g

(1)
.
.
.

=
=

I
k
P
0
O
k
P
1
O
k
P
2
. . . O
k
P
N1
. . .
I
k
P
0
O
k
P
1
. . . O
k
P
N2
O
k
P
N1
. . .
I
k
P
0
. . . O
k
P
N3
O
k
P
N2
O
k
P
N1
.
.
.

matricea generatoare a unui (n, k) - cod convolut ional sistematic.


Observat ie: Evident, un (n, k) - cod convolut ional sistematic este un (n, k) - cod
convolut ional. Invers, ind dat un (n, k) - cod convolut ional, el se poate transforma
n unul sistematic prin adunarea la ecare polinom generator g
i
(X) =
mn+n1

p=0
b
i,p
X
i
a polinomului g

i
(X) =
m

p=0
k1

j=0
(k b
i,np+j
)X
np+j
+b
i
X
i
(0 i k 1).
Desi are - teoretic - un numar innit de linii si coloane, ind n forma canonica,
pentru aceasta reprezentare se poate construi imediat matricea de control:
H

P
T
0
I
nk
. . .
P
T
1
O
nk
P
T
0
I
nk
. . .
P
T
2
O
nk
P
T
1
O
nk
P
T
0
I
nk
. . .
.
.
.
P
T
N1
O
nk
P
T
N2
O
nk
P
T
N3
O
nk
. . .
P
T
N1
O
nk
P
T
N2
O
nk
. . .
P
T
N1
O
nk
. . .
.
.
.

a carei transpusa este


H
T

P
0
P
1
P
2
. . . P
N1
. . .
I
nk
O
nk
O
nk
. . . O
nk
. . .
P
0
P
1
. . . P
N2
P
N1
. . .
I
nk
O
nk
. . . O
nk
O
nk
. . .
.
.
.

16.4. CODURI CONVOLUT IONALE SISTEMATICE 189


Se verica imediat egalitatea G

H
T

= O

.
Sa consideram un mesaj de informat ie a, sub forma unei succesiuni (teoretic)
innite. El va descompus init ial n blocuri de lungime k:
a = a
0
(1) . . . a
0
(k)

a
0
a
1
(1) . . . a
1
(k)

a
1
. . . a
p
(1) . . . a
p
(k)

a
p
. . .
Mesajul codicat se obt ine similar codurilor liniare, prinnmult irea lui a cu matricea
generatoare: c = aG

; textul rezultat va descompus n blocuri de lungime n:


c = aG

= c
0
(1) . . . c
0
(n)

c
0
c
1
(1) . . . c
1
(n)

c
1
. . . c
p
(1) . . . c
p
(n)

c
p
. . .
T inand cont de forma canonica a matricii G

, rezulta urmatoarele relat ii:


c
p
(i) = a
p
(i), (1 i k)
c
p
(k +j) =
k

i=1
N1

t=0
a
pt
(i)g
t
(i, j), (1 j n k). (2)
Aceeasi formula de codicare se poate scrie si n alt mod:
c = aG

=
k

i=1
a
0
(i)g

(i) +
k

i=1
a
1
(i)Dg

(i) +
k

i=1
a
2
(i)D
2
g

(i) +. . ., deci
c =
k

i=1

t=0
a
t
(i)D
t
g

(i) (3)
Exemplul 16.9 Sa consideram un (2, 1) - cod convolut ional binar cu N = 4 si
subgenerator g(1, 1) = 1101. Generatorul va atunci g(1) = 110100001 iar matricea
G

11 01 00 01 . . .
11 01 00 01 . . .
11 01 00 01 . . .
.
.
.

Daca dorim sa se transmita secvent a de informat ie a = 10011 . . ., ea va codicata


n c = aG

= 1101001010 . . .
Exemplul 16.10 Fie (3, 2) - codul convolut ional binar cu N = 3 si subgeneratori
g(1, 1) = 101, g(2, 1) = 110. Calculand generatorii, se obt ine
g(1) = 101000001, g(2) = 011001000 si deci
G

101 000 001 . . .


011 001 000 . . .
101 000 001 . . .
011 001 000 . . .
101 000 001 . . .
011 001 000 . . .
.
.
.

Fie a = 110010 . . . o secvent a de informat ie. Rezultatul codicarii ei este c = aG

= 110001100 . . .
190 PRELEGEREA 16. CODURI CONVOLUT IONALE
16.5 Arborescent a codurilor convolut ionale
Cuvintele - cod dintr-un cod convolut ional sistematic se pot reprezenta folosind
un graf arborescent innit, cu noduri situate la o distant a de n pozit ii si cu q
k
descendent i din ecare nod. Codicarea unui mesaj revine la parcurgerea unui
drum n acest arbore.
Pentru simplicare, sa consideram un (n, 1) - cod convolut ional sistematic binar
(generalizarea este imediata) de lungime restrans a N. El este complet caracterizat
prin n 1 subgeneratori
g(1, j) = g
0
(1, j)g
1
(1, j) . . . g
N1
(1, j), (1 j n 1).
Codul are un singur generator, anume
g(1) = 1g
0
(1, 1)g
0
(1, 2) . . . g
0
(1, n 1)0g
1
(1, 1)g
1
(1, 2) . . . g
1
(1, n 1)0 . . .
. . . 0g
N1
(1, 1) . . . g
N1
(1, n 1)
Vom folosi notat iile
g
0
= 1g
0
(1, 1) . . . g
0
(1, n 1),
g
p
= 0g
p
(1, 1) . . . g
p
(1, n 1), (1 p N 1).
Atunci g(1) = g
0
g
1
. . . g
N1
, iar g
p
este a p - a ramicat ie a lui g(1). Matricea
generatoare a codului va - cu aceste notat ii:
G

(1)
Dg

(1)
D
2
g

(1)
.
.
.

g
0
g
1
g
2
. . . g
N1
0 0 . . .
0 g
0
g
1
. . . g
N2
g
N1
0 . . .
0 0 g
0
. . . g
N3
g
N2
g
N1
. . .
.
.
.

unde 0 este un bloc de n zerouri.


Fie a = a
0
a
1
a
2
. . . secvent a de informat ie si c = c
0
c
1
c
2
. . . cuvantul - cod cores-
punzator, unde c
p
= c
p
(1)c
p
(2) . . . c
p
(n). Are loc egalitatea
c = c
0
c
1
c
2
. . . = aG

= a
0
g

(1) +a
1
Dg

(1) +a
2
D
2
g

(1) +. . . (4)
De aici rezulta ca c
0
= 0 daca a
0
= 0 si c
0
= g
0
daca a
0
= 1. Cu alte cu-
vinte, codul poate partit ionat n doua submult imi de marime egala: o submult ime
S
0
cont ine toate secvent ele care corespund lui a
0
= 0 (deci toate cuvintele - cod
din S
0
au acelasi prex 0); cealalta submult ime S
1
cont ine toate cuvintele - cod
corespunzatoare lui a
0
= 1 (deci toate cuvintele - cod din S
1
au prexul g
0
).
La randul lui, S
0
se mparte n doua submult imi egale S
00
si S
01
. S
00
corespunde
secvent elor - cod pentru care a
0
= a
1
= 0 (deci toate cuvintele - cod din S
00
ncep
cu 00). S
01
cont ine secvent ele cu a
0
= 0, a
1
= 1, deci cu prexul 0g
0
. Similar, S
1
se partit ioneaza n S
10
si S
11
, S
10
ind pentru a
0
= 1, a
1
= 0 (deci cuvintele - cod
din S
10
au prexul g
0
g
1
); secvent ele din S
11
ncep cu prexul g
0
(g
0
+g
1
).
Acest procedeu continu a indenit.
Deci cuvintele - cod pot aranjate ntr-un arbore cu noduri de n caractere si
cate doua ramicat ii din ecare nod. O ramicat ie este marcata de un cod bloc
de n caractere, corespunzatoare unui caracter de informat ie particular, iar ntreaga
secvent a corespunde unui drum prin arbore.
16.5. ARBORESCENT A CODURILOR CONVOLUT IONALE 191
0
g
0
g
1
g
0
+g
1
g
2
g
0
+g
2
g
1
+g
2
g
0
+g
1
+g
2
0
g
0
g
1
g
0
+g
1
0
g
0
6
-
? -
-
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
-
6
? -
0
0
0
1
1
0
1
1
0
1
0
1
0
1
Operat ia de codicare poate privita atunci ca un proces n care este trasat un
drum particular n arbore, conform instruct iunilor date de mesajul de informat ie.
Exemplul 16.11 Sa consideram (3, 1) - codul convolut ional binar cu N = 4, gene-
rat de g(1, 1) = 1011, g(1, 2) = 1101. Generatorul codului este
g(1) = 111 001 010 011, iar arborele de codicare
000
111
001
110
010
101
011
100
011
100
010
101
001
110
000
111
000
111
001
110
010
101
011
100
000
111
001
110
000
111
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
-
6
-
? -
Daca vom considera de exemplu mesajul de informat ie a = 1001 . . ., secvent a -
cod generata va c = 111 001 010 100 . . ..
Aceasta construct ie se poate extinde la un (n, k) - cod convolut ional sistematic binar.
Deoarece la momentul 0 exista 2
k
secvent e posibile de lungime k, toate cuvintele
- cod se pot partit iona n 2
k
submult imi S
0
, S
1
, . . . , S
2
k
1
. Toate secvent ele din S
i
ncep cu acelasi bloc, corespunzator aceluiasi mesaj de informat ie. Fiecare S
i
se
mparte la randul lui n 2
k
submult imi, dupa tipul celui de-al doilea bloc de la tactul
1. Procesul continu a n mod similar pan a la epuizarea mesajului de informat ie.
192 PRELEGEREA 16. CODURI CONVOLUT IONALE
16.6 Exercit ii
16.1 Construit i un codicator pentru (2, 1) - codul convolut ional binar de polinom
generator g
0
(X) = 1 + X + X
3
+ X
4
+ X
6
+ X
7
+ X
9
. Cat este N ? Codicat i
mesajele 110, 0110, 1010.
16.2 Construit i o matrice generatoare pentru codul denit anterior.
16.3 Construit i un codicator pentru (2, 1) - codul convolut ional ternar de polinom
generator g
0
(X) = 1 + 2X + 2X
3
.
Sa se determine o matrice generatoare.
Sa se codice mesajele 102, 200, 0120.
16.4 Construit i un codicator pentru un (3, 2) - cod convolut ional binar cu N = 2.
16.5 Codicatorul din Exemplul 16.8 are 5 elemente de nmagazinare. Construit i
un codicator pentru acelasi cod, care utilizeaza doar 4 elemente de nmagazinare.
16.6 Construit i polinoamele generatoare ale codului convolut ional dat mai jos:

_

_

_

_

_

_

_

_
6
-
6
-
-
-
? -
6
- - -
?
- -
6 6
-
?
,
?-
?
,
- - - -
?-
- - -
6
-
,
-
6
6
6
- - -
6
6
?- - - -
6
-
? ? ?
+ +
+ +
+ + +
+
+ + +
16.7 Construit i o matrice generatoare pentru codul din exercit iul anterior.
Codicat i mesajul 11001.
16.8 Construit i un codicator pentru (4, 3) - codul binar, de polinoame generatoare
g
0
(X) = 1 +X +X
3
+X
5
+X
6
, g
1
(X) = X +X
2
+X
3
+X
4
, g
2
(X) = 1 +X
2
+
X
3
+X
5
+X
6
.
16.9 Sa se construiasca matricea generatoare si de control pentru (3, 2) - codul
convolut ional sistematic ternar de subgeneratori g(1, 1) = 1200, g(2, 1) = 2011.
Sa se codice mesajele 11220, 1012, 2222.
16.10 Aceeasi problema pentru (4, 2) - codul binar cu
g(1, 1) = 001, g(1, 2) = 110, g(2, 1) = 101, g(2, 2) = 111.
Sa se codice mesajele 1100, 011, 001100.
Sa se construiasca reprezentarea arborescenta.
16.11 Sa se demonstreze formulele (2).
Bibliograe
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] M. Blaum - A (16, 9, 6, 5, 4) error correcting dc-free block code, IEEE Transac-
tions on Information Theory, vol. 34, 1988, pp. 38-141;
[3] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[4] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[5] S. Guiasu - Teoria Codurilor, Tipograa Universitat ii Bucuresti, 1976;
[6] D.G. Homan, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[7] B. Honary, G. Markarian - Trellis Decoding of Block Codes, A Parctical Ap-
proach, Kluwer Academic Publ., 1997;
[8] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[9] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[10] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
[11] W. E. Ryan - A Turbo Code Tutorial, IEEE Trans. Comm., pp. 1261- 1271,
Oct. 1996.
193
Prelegerea 17
Decodicarea codurilor
convolut ionale
17.1 Capacitatea de corectare a erorilor
Algoritmii de decodicare pentru codurile convolut ionale folosesc aceeasi idee de la
codurile liniare: cuvantul primit este decodicat n cel mai apropiat cuvant - cod,
n sensul distant ei Hamming.
Ideea este de a nu decodica deodata tot cuvantul primit, ci pas cu pas, la ecare
tact ind decodicate n caractere (cont inutul unui buer de iesire) n k simboluri
(marimea buerului de intrare). Distant a Hamming (notata cu d
H
) pentru un (n, k)
- cod convolut ional se deneste
d
H
(a(X), b(X)) = d(a
0
a
1
. . . a
n1
, b
0
b
1
. . . b
n1
).
Observat ie:

In cele ce urmeaza vom continua sa identicam secvent ele de p + 1
caractere a = a
0
a
1
. . . a
p
cu polinoamele de gradul p a(X) = a
0
+a
1
X+. . . +a
p
X
p
.
Se va folosi adesea chiar notat ia (neambigua) a(X) = a.
Fie deci a(X) mesajul de informat ie; el se codica n v(X) = C(a(X)). Sa
presupunem ca se recept ioneaza u(X). La primul tact se determina cuvantul - cod
w(X) cu d
H
(u(X), w(X)) minim (cel mai apropiat cuvant - cod), iar u
0
u
1
. . . u
n1
se
transforman w
0
w
1
. . . w
n1
. Daca decodicarea este corecta, atunci s-au determinat
primele n caractere si se pot gasi imediat ca-racterele de informat ie a
0
a
1
. . . a
k1
(cont inutul primei intrari). Se deneste apoi
u(X) := u(X) C(a
0
+ a
1
X + . . . + a
k1
X
k1
)
(care aduce 0 pe primele n caractere ale cuvantului recept ionat), se ignora primele
n caractere si procedeul continua inductiv.
Motivat ia consta n faptul ca acum nu se lucreaza cu v(X) = C(a(X)) ci cu
v(X) C(a
0
+ a
1
X + . . . a
k1
X
k1
) = C(a(X) a
0
a
1
X . . . a
k1
X
k1
) =
C(a
k
X
k
+a
k+1
X
k+1
+. . .) = C(X
k
(a
k
+a
k+1
X+a
k+2
X
2
+. . .)) = X
n
C(a
k
+a
k+1
X+
a
k+2
X
2
+ . . .).
Exemplul 17.1 Sa consideram (2, 1) - codul convolut ional binar de polinom gene-
rator g
0
(X) = 1 + X + X
3
. Cuvintele lui cod sunt
193
194PRELEGEREA 17. DECODIFICAREA CODURILOR CONVOLUT IONALE
0 00000000 . . .
g
0
(X) 11010000 . . .
X
2
g
0
(X) 00110100 . . .
(1 + X
2
)g
0
(X) 11100100 . . .
. . . . . .
Daca se primeste - de exemplu - u = 11110001, vom determina cel mai apropiat
cuvant - cod, care este (1 +X
2
+X
4
)g
0
(X), adica 11101001. Primul grup de n = 2
bit i este 11, deci primul bit de informat ie (k = 1) este 1. Fie acum
u := u C(1) = 11110001 11010000 = 00100001.
Se ignora primele doua simboluri din noul u si se determina cel mai apropiat
cuvant - cod de 100001; acesta este 000 . . . 0; deci al doilea grup cadru este 00 - adica
al doilea simbol de informat ie este 0.
Refacem u := u X
2
C(0) = 00100001. Se sterg primele patru simboluri din u
si se cauta cel mai apropiat cuvant - cod de 0001. Acesta este din nou 00 . . .. Deci
u se corecteaza n
C(1 + 0X + 0X
2
) = 11000000.
Denit ia 17.1 Pentru un (n, k) - cod convolut ional se deneste distant a libera prin
d
lib
= min{d
H
(C(a(X)), C(a

(X)))|a
0
a
1
. . . a
k1
= a

0
a

1
. . . a

k1
}.
Similar observat iei de la codurile liniare, d
lib
este cea mai mica pondere a unui cuvant
- cod C(a

(X)) cu proprietatea a

0
a

1
. . . a

k1
= 0. (s-a notat a

(X) = a(X) a

(X)
unde a(X), a

(X) sunt doua mesaje de informat ie arbitrare distincte).


Exemplul 17.2 Reluand codul construit n Exemplul 17.1, acesta are d
lib
= 3,
deoarece g
0
(X) are ponderea 3 si orice cuvant C(a
0
+ a
1
X + . . .) cu a
0
= 0 are
ponderea minim 3.
Propozit ia 17.1 Un cod convolut ional corecteaza t erori daca si numai daca d
lib
>
2t.
Demonstrat ie: Sa presupunem d
lib
> 2t. La recept ia unui cuvant v(X) cu cel mult t
erori, exista un cuvant - cod u(X) = C(a(X)) aat la o distant a Hamming minima
de acesta: d
H
(u(X), v(X)) = s. Daca u

(X) = C(a

(X)) este cuvantul - cod trimis


prin canal (recept ionat drept v(X)), din ipoteza d
H
(v(X), u

(X)) t. Deci, cu
inegalitatea triunghiului, d(u(X), u

(X)) s +t. Cum s este cea mai mica distant a


Hamming, avem s t, deci d(C(a(X)), C(a

(X))) s + t 2t < d
lib
. Din denit ia
distant ei libere rezulta ca primele k simboluri din a(X) au drept cel mai apropiat
grup de k simboluri generat de cod grupul primelor k simboluri din a

(X), ceea ce
permite decodicarea si corectarea erorilor.
Pentru urmatoarele grupuri, procedeul decurge analog.
Invers, sa presupunem d
lib
2t si e u(X) = C(a(X)), u

(X) = C(a

(X)) cu
d
H
(u(X), u

(X)) = d
lib
si u
0
. . . u
k1
= u

0
. . . u

k1
. Fie i
1
, i
2
, . . . i
d
lib
tot i indicii i
pentru care u
i
= u

i
. Construim urmatorul cuvant v(X):
v
i
=

u
i
daca u
i
= u

i
sau i = i
2s+1
u

i
daca i = i
2s
Avem d
H
(u(X), v(X)) d
H
(u

(X), v(X)) t. Presupunem ca a fost trimis


u

(X) si recept ionat v(X). Atunci eroarea, care a modicat cel mult t simboluri -
17.2. DECODIFOCAREA CODURILOR SISTEMATICE 195
poate conduce la o decodicare incorecta, deoarece u(X) este cuvantul cod cel mai
apropiat.
Deci, n aceasta ipoteza, codul nu va corecta t erori. 2
Din analiza de sus rezulta ca un parametru important pentru un cod convolu-
t ional este distant a libera, care specica num arul maxim de erori care pot corec-
tate. Din nefericire ([1]), nu se cunoaste nici o metoda analitica de construct ie de
coduri convolut ionale bune, n sensul unei maximizari a d
lib
pentru n si k date.
Folosind calculatorul, au fost gasite nsa o serie de astfel de coduri bune. Listam
cateva din ele pentru cazul binar si k = 1:
n d
lib
g
0
(X)
2 5 110111 = 1 + X + X
3
+ X
4
+ X
5
2 6 11110111
2 7 1101011011
2 8 110111011011
2 10 11011111001011
2 10 111011110111
3 8 111011111
3 10 111011101111
3 12 111011101011111
4 10 111101111111
4 13 1111011110011111
17.2 Decodifocarea codurilor sistematice
Pastr and similitudinea cu codurile liniare, sa folosim la codurile sistematice ideea
de decodicare bazata pe calculul sindromului.
Fie un (n, k) - cod convolut ional sistematic denit prin matricea generatoare G

si cea de control H

, construite pe baza subgeneratorilor de lungime N g(i, j), 1


i k, 1 j n k (a se vedea prelegerea anterioara). Din relat iile G

H
T

= 0 si
c = aG

se obt ine cH
T

= 0.
Sa presupunem ca s-a recept ionat secvent a (innita) r = c +e unde e este o
secvent a eroare. Ca si la codurile liniare, sindromul va
s = rH
T

= cH
T

+eH
T

= eH
T

.
Secvent a recept ionata se poate structura n blocuri de n caractere:
r = r
0
(1) . . . r
0
(n)

r
0
r
1
(1) . . . r
1
(n)

r
1
. . . r
p
(1) . . . r
p
(n)

rp
. . .
Similar se segmenteaz a sindromul n blocuri de lungime n k:
s = s
0
(1) . . . s
0
(n k)

s
0
s
1
(1) . . . s
1
(n k)

s
1
. . . s
p
(1) . . . s
p
(n k)

sp
. . .
Vom avea
s
p
(j) = r
p
(k +j)
k

i=1
r
p
(i)g
0
(i, j)
k

i=1
r
p1
(i)g
1
(i, j) . . .
k

i=1
r
pN+1
(i)g
N1
(i, j),
1 j n k.
196PRELEGEREA 17. DECODIFICAREA CODURILOR CONVOLUT IONALE
Aceasta relat ie se poate scrie si s
p
(j) = r
p
(k + j) A
p
(j), unde
A
p
(j) =
N1

t=0
k

i=1
r
pt
(i)g
t
(i, j) este rezultatul codicarii secvent ei r
p
(1) . . . r
p
(k) folo-
sind matricea G

, n funct ie de r
p1
(1), . . . , r
p1
(k), . . . , r
pN+1
(1) . . . , r
pN+1
(k).
Din aceste relat ii, se poate deduce o formula pentru calculul elementelor sindro-
mului, n funct ie de caracterele secvent ei - eroare:
s
p
(j) = e
p
(k +j)
k

i=1
e
p
(i)g
0
(i, j)
k

i=1
e
p1
(i)g
1
(i, j) . . .
k

i=1
e
pN+1
(i)g
N1
(i, j),
1 j n k,
unde e = e
0
(1) . . . e
0
(n)

e
0
e
1
(1) . . . e
1
(n)

e
1
. . . e
p
(1) . . . e
p
(n)

ep
. . .
este secvent a de eroare - tip, segmentat a n blocuri de lungime n. Deci, pentru orice
j = 1, 2, . . . , n k, putem scrie:
s
0
(j) = e
0
(k + j)
k

i=1
e
0
(i)g
0
(i, j),
s
1
(j) = e
1
(k + j)
k

i=1
e
1
(i)g
0
(i, j)
k

i=1
e
0
(i)g
1
(i, j),
.
.
.
s
N1
(j) = e
N1
(k + j)
N1

p=0
k

i=1
e
p
(i)g
Np1
(i, j),
s
N
(j) = e
N
(j)
N1

p=0
k

i=1
e
p+1
(i)g
Np1
(i, j),
.
.
.
s
N+m
(j) = e
N+m
(k + j)
N1

p=1
k

i=1
e
p+m1
(i)g
Np1
(i, j)
.
.
.
De remarcat ca secvent a e
0
afecteaza numai primele N componente ale sin-
dromului: s
0
, s
1
, . . . , s
N1
, deoarece apare numai n primele N(n k) ecuat ii din
sistemul de sus.
Pentru corectarea erorilor, se determina init ial secvent a e
0
; dupa aceasta, sindro-
mul se recalculeaza scaz and din el componentele lui e
0
. Aceasta operat ie se numeste
rearanjarea sindromului.

In paralel, e
0
se foloseste la corectarea primelor n caractere
recept ionate; operat ia se realizeaza identic cu cea de la codurile liniare.

In continuare, se va folosi un nou sindrom, anume:


s

0
(j) = 0
s

m
(j) = e
m
(k+j)
m1

p=0
k

i=1
e
mp
(i)g
p
(i, j), 1 m N1, 1 j nk
s

N+m
(j) = s
N+m
(j), m 0.
De remarcat ca secvent a e
1
gureaza numai n expresiile lui s

1
, s

2
, . . . , s

N
unde
s

i
= s

i
(1) . . . s

i
(nk), 1 i N. Deci aceste componente apar n N(nk) ecuat ii.
17.3. ALGORITMUL VITERBI 197
Dupa determinarea lui e
1
se corecteaza blocul r
1
din secvent a recept ionat a, apoi se
recalculeaza sindromul, s.a.m.d.
17.3 Algoritmul Viterbi
Cel mai cunoscut algoritm de decodicare pentru codurile convolut ionale apart ine
lui Viterbi si a fost folosit pe scara larga n comunicat iile spat iale. Astfel - ca sa
dam numai un exemplu, stat ia Voyager n misiunea sa din 1974 spre Marte, Saturn
si Jupiter, a folosit pentru transmisii un (2, 1) - cod convolut ional binar de polinom
generator g
0
(X) = 1 + X + X
2
+ X
5
+ X
6
+ X
7
+ X
8
+ X
10
+ X
11
+ X
12
.

In descrierea algoritmului Viterbi vom folosi o reprezentare n ret ea a codurilor


convolut ionale, care reia sub o forma nita reprezentarea arborescent a. Din nou, ne
vom margini la construct ii pentru (n, 1) - coduri convolut ionale binare, extensia la
cazul general ind imediata.
O diagrama ret ea este un graf orientat innit, care are ca noduri starile unui
circuit liniar la ecare moment (tact). Un nod marcat care corespunde unei stari
S la momentul i, este legat direct cu alte doua noduri, corespunzatoare starilor
circuitului la momentul i + 1: S
0
(pentru intrarea 0) respectiv starea S
1
(pentru
intrarea 1). Grac, arcul S S
0
va totdeauna trasat sub arcul S S
1
. Fiecare
arc este marcat cu secvent a de iesire a circuitului pentru intrarea corespunzatoare.
Exemplul 17.3 (2, 1) - codul convolut ional denit de circuitul liniar

_
+

`
`
,
`


`
are doua stari posibile (dupa cont inutul elementului de nmagazinare): 0 si 1.
Pentru intrarea i (i = 0, 1) iesirea este secvent a
ii daca starea este 0,
i(1 i) daca starea este 1.
Diagrama ret ea a codului este:
,
, , , , ,
, , , ,

`
0
1
0 1 2 3 4
. . .

00 00 00 00
10 10 10
11 11 11 11
01 01 01
Exemplul 17.4 (2, 1) - codul convolut ional (de memorie N = 2) reprezentat prin
circuitul liniar
198PRELEGEREA 17. DECODIFICAREA CODURILOR CONVOLUT IONALE

_

_

_
,
`

` `

`
+ +
+
are patru stari: 00, 01, 10 si 11 (dupa cont inuturile elementelor de nmagazinare).
Din starea S = 00 se ajunge la S
0
= 00 daca intrarea este 0, sau n S
1
= 10
daca intrarea este 1. Iesirile corespunzatoare sunt 00 respectiv 11.
Analog, daca S = 10, atunci S
0
= 01 (intrare 0 iesire 10) si S
1
= 11 (intrare 1
iesire 01), etc. Se ajunge la diagrama ret ea urmatoare:
, , , , ,
, , , ,
, , , ,
, , , , , ,

`


`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`

00
10
01
11
0 1 2 3 4 5
. . .
00 00 00 00 00
11 11 11 11 11
01 01 01 01
10 10 10
01 01 01
10 10 10 10
00 00 00
11 11 11
Orice drum prin ret ea, care pleaca din momentul 0 conduce - prin citirea marcajelor
arcelor - la un cuvant - cod. De exemplu, pentru intrarea 100110, codul generat este
C(100110) = 111000011001 (reamintim, spre dreapta pleaca totdeauna doua arce,
iar arcul pentru intrarea 0 este situat sub arcul pentru intrarea 1).
Invers, orice cuvant - cod reprezint a marcajul unui drum n ret ea.
17.3. ALGORITMUL VITERBI 199
Sa construim acum algoritmul de decodicare Viterbi.
La recept ia unui cuvant v = v
0
v
1
v
2
. . . vom cauta construct ia unui drum n
ret ea, cat mai apropiat de v.
Pentru ecare moment i si stare S vom lista drumurile active prin ret ea pana la
starea S la momentul i. Un drum este activ daca discrepant a sa este minima (prin
discrepant a se nt elege distant a Hamming dintre cuvantul generat de drumul prin
arbore si cuvantul de aceeasi lungime primit la intrare). Vom adnota ecare stare
la momentul i cu discrepant a drumului sau activ. Pentru calculul ei se poate folosi
o formula recursiva denita astfel:
Fie d(S S

) distant a Hamming dintre marcajul arcului S S

si secvent a de
n caractere primita, iar di(S) discrepant a starii S. Atunci
di(S

) = min
SS

{di(S) + d(S S

)} (1)
Algoritmul va avea o durata de funct ionare nita numit a fereastra de decodicare,
pe care o notam cu b (deci va funct iona b tact i).
Algoritmul Viterbi:
Intrare: Secvent a v
0
v
1
. . . , v
p
= v
p,0
v
p,1
. . . v
p,n1
;
Algoritm:
1. Fie p := 0 si S
0
starea init iala a ret elei (starea cu toate elementele de
nmagazinare 0);
2. Se marcheaz a di(S
0
) = 0;
3. for i := 1 to b do
Pentru toate starile S accesibile la momentul p+i se determina
di(S) folosind formula (1), si se listeaza toate drumurile active care
duc la S.
4. Daca toate drumurile active la momentul p + b ncep cu acelasi arc
S
0
S
1
, secvent a de intrare v
p
se corecteazan marcajul u
p
al acestui
prim arc (si se decodica n primul caracter al lui S
1
). Altfel, eroarea
nu este corectabila, STOP.
5. p := p + 1, S
0
:= S
1
, salt la pasul 3.
Exemplul 17.5 Sa reluam codul descris n Exemplul 17.4, mpreuna cu diagrama
sa de ret ea. Presupunem ca s-a primit secvent a v = 10010100101100000 . . . Deci
v
0
= 10, v
1
= 01, v
2
= 01, v
3
= 00, v
4
= 10, v
5
= 11, v
6
= 00 . . ..
Vom lucra cu o fereastra de decodicare b = 7. Detaliem grac numai procedura
de decodicare a primului bloc (cazul p = 0).
200PRELEGEREA 17. DECODIFICAREA CODURILOR CONVOLUT IONALE
,
0 i = 0 :
, ,
,
>
>
>
1
1
i = 1 :
, ,
,
>
>
>
,
,
,
,
>
>
>
>
>
>

2
2
3
1
i = 2 :
, ,
,
>
>
>
,
,

,
>
>
>

i = 3 :
,
,
,
,
>
>
>

3
3
1
2
, ,
,
>
>
>
,
,

,
>
>
>

i = 4 :
,
,
,

,
,
,
,

3
1
3
3
, ,
,
>
>
>
,
,

,
>
>
>

i = 5 :
,
,
,

,
,
,
,

,
,
,
,
>
>
>
>
>
>

4
4
1
3
,
,
>
>
>
,

i = 6 :
,

,
,
>
>
>

,
,
,

3
3
4
4
,
,
,
>
>
>
,

i = 7 :
,

,
,
>
>
>

,
,

, ,
,
,
,
>
>
>
>
>
>

4
3
4
4
Se ajunge la concluzia ca toate arcele active au acelasi nceput: arcul marcat cu
11. Deci primul bloc v
0
= 10 se decodica n 11, dupa care se ia ca nod init ial
S
0
= 10 si procesul se repeta.
De remarcat ca pentru o fereastra de decodicare b = 5, eroarea nu s-ar putut
corecta (primul arc nu este unic).

In aceasta prezentare a algoritmului Viterbi, apare o problema: cat de mare este


fereastra b ? Cat de departe mergem prin diagrama ret ea pana sa m siguri ca totusi
este posibila decodicarea si corectarea erorilor ?
Pentru aceasta sa refacem sub o forma nita reprezentarea diagramelor - ret ea.
Din denit ia data n Prelegerea 16 se observa ca daca g
0
(X), g
1
(X), . . . ,
g
n1
(X) sunt polinoamele generatoare si a(X) un mesaj de informat ie, codicarea
poate scrisa ca o secvent a de n componente (innite)
c(X) = (a(X)g
0
(X), a(X)g
1
(X), . . . , a(X)g
n1
(X))
ale caror caractere se transmit n paralel, n ordinea crescatoare a puterilor lui
X.
17.3. ALGORITMUL VITERBI 201
Exemplul 17.6 Fie (2, 1)- codul generat de g
0
(X) = 1+X +X
3
si g
1
(X) = 1+X.
Mesajul a(X) = 1 + X
2
este codicat n
c(X) = ((1 +X
2
)(1 +X +X
3
), (1 +X
2
)(1 +X)) = (1 +X +X
2
+X
5
, 1 +X +
X
2
+ X
3
).
Deci cuvantul cod este c = 11 11 11 01 00 10 00 . . ..
Vom construi un translator (diagrama de translatare) asociat unui (n, 1) - cod
convolut ional astfel:
Starile translatorului sunt N - tupluri binare, ecare stare reprezentand o situat ie
posibila a celor N elemente de nmagazinare. O stare s
1
. . . s
N1
s
N
este legata direct
prin arcul marcat x
1
. . . x
n
de starea is
1
. . . s
N1
, (i = 0, 1) daca n circuitul liniar
corespunzator codului, intrarea i conduce la modicarea cont inuturilor elementelor
de nmagazinare, din (s
1
, . . . , s
N
) n (i, s
1
, . . . , s
N1
) si are ca efect iesirea x
1
. . . x
n
.
Exemplul 17.7 Ret eaua codului denit n Exemplul 17.3 poate reprezentata sub
forma de diagrama de translatare astfel:

_

_


0 1 00 10
11
01
Pentru codul din Exemplul 17.4, reprezentarea nita este:

_

_

_

_


`
`
`
`
`
`
`
`
`
`
`
`
`
`
` `
10 11
01 00
01
10
11 00 10 01
11
00
De remarcat ca pe ecare arc este sucient sa marcam doar secvent a de iesire;
caracterul de intrare este reprezentat de primul caracter al starii n care intra arcul
respectiv.
Denit ia 17.2 Se deneste lungimea unui drum ca ind numarul de arce care
formeaza acel drum.
Ponderea unui drum este suma ponderilor arcelor care formeaza drumul.
Reamintim, ponderea unui cuvant este numarul de caractere nenule din cuvantul
respectiv.
Conform Denit iei 17.1, distant a libera a unui cod este ponderea nenula minima
a unui cuvant cod - deci a unei secvent e care marcheaza un drum prin diagrama de
translatare.
Propozit ia 17.2 Distant a libera a unui (n, 1) - cod convolut ional este egala cu pon-
derea nenula minima a unui ciclu care trece prin starea init iala 00 . . . 0 a diagramei
de translatare a codului.
Demonstrat ie: Este imediata.
Fie S
0
= 00 . . . 0 starea init iala. Pentru orice t, 1 t

d
lib
1
2

, se de-
neste d(t) ca ind cel mai mic numar ntreg pozitiv p cu proprietatea ca orice
202PRELEGEREA 17. DECODIFICAREA CODURILOR CONVOLUT IONALE
drum S
0
S
1
. . . S
p1
, (S
0
S
1
) are ponderea mai mare de 2t. Pentru de-
terminarea algoritmica a lui d(t) se poate adapta imediat un algoritm similar din
teoria grafurilor.
Deoarece codul este liniar, valoarea lui d(t) se pastreaz a pentru orice stare a
diagramei de translatare.
Acum, n condit iile ca pot apare maxim t erori, algoritmul Viterbi va funct iona
corect pentru o fereastra b = d(t) (datorita Propozit iei 17.1).
Reluarea algoritmului Viterbi la ecare pas cu fereastra maxima d(t) este ns a
destul de costisitoare ca timp; de aceea, practic, se foloseste o fereastra mobila
b d(t) si algoritmul trece la faza de decodicare atunci cand toate drumurile
active selectate au acelasi prim arc. Daca s-a ajuns la b = t(b) si nu s-a selectat un
prim arc comun, algoritmul esueaza.
17.4 Coduri convolut ionale catastroce
Daca este denit neglijent, un cod convolut ional poate conduce la urmatoarea situa-
t ie, complet nefericita: un mesaj n care a fost perturbat un num ar mic de caractere
genereaza prin decodicare o innitate de erori.
Pentru a studia acest caz, consideram din nou numai codurile (n, 1) - convolut io-
nale binare. Pentru a vedea n ce consta problema, sa luam urmatorul exemplu:
Exemplul 17.8 Fie (2, 1) - codul convolut ional binar, cu polinoamele generatoare
g
0
(X) = 1 + X
3
, g
1
(X) = 1 + X + X
2
. Diagrama sa de translatare este
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
`
`
`
`
`-
/
/
/
/
/
/- `
`
`
`
`
``
/
/
/
/
/
/`

/
/
/
/
/
/`
/
/
/
/
/
/-
`
`
`
`
`
``

`
`
`
`
`
`-


000 010 101 111
100 110
001 011
00 01 00 01
10
11 01 00 11
10
11
10 01 00 10
11
Sa presupunem ca s-a transmis mesajul de informat ie a = 00 . . ., caruia i
corespunde cuvantul - cod nul c = 0000 . . .. La recept ie s-a primit un cuvant cu
primele trei simboluri gresite: v = 111000 . . .. Decodicarea sa nu ridica nici o
problema, acesta ind de asemenea cuvant - cod, care marcheaza drumul prin starile
000 100 110 011 101 110 . . ..
Deci, n ipoteza generala din Teoria Codurilor (cea a decodic arii cele mai proba-
bile), nu au aparut erori, si mesajul decodicat este a

= 110110110 . . ., care difera


de a ntr-o innitate de pozit ii.

In acest mod, modicarea doar a primelor trei caractere a dus la situat ia n care
aceste erori se propaga ntr-o secvent a innita.
17.5. EXERCIT II 203
Se observa din acest exemplu ca tot necazul provine din faptul ca diagrama cont ine
doua cicluri distincte cu iesirea 0: 000 000 si 110 011 101 110.
Denit ia 17.3 Un cod convolut ional se numeste catastroc daca diagrama sa de
translatare cont ine doua cicluri distincte de pondere zero.
Observat ie: Orice cod convolut ional cont ine un ciclu de pondere zero, anume bucla
care pleaca si intr a n starea init iala. Reamintim, ponderea unui drum este suma
ponderilor arcelor sale.
Teorema 17.1 Un (n, 1) - cod convolut ional este catastroc daca si numai daca
cmmdc(g
0
(X), . . . , g
n1
(X)) = 1.
Demonstrat ie: Teorema ram ane valabila daca o demonstram pentru cazul n = 2. Fie
deci un (2, 1) - cod convolut ional, de polinoame generatoare g
0
(X), g
1
(X). Pentru
a marca un ciclu, un cuvant de intrare trebuie sa e de forma b(X) +X
r
a(X) (1 +
X
p
+X
2p
+. . .), cu grad(a(X)) < p. Pentru a elimina din discut ie bucla din starea
S
0
, vom considera a(X) 0. Sa presupunem can diagrama de translatare a codului
exista un ciclu de lungime p si pondere 0. Atunci a(X) g
0
(X) si a(X) g
1
(X) trebuie
sa se divida cu 1 + X
p
, deci a(X) g

(X) (unde g

(X) = cmmdc(g
0
(X), g
1
(X))), se
divide cu 1 + X
p
.
Daca g

(X)) = 1, se ajunge la o contradict ie (deoarece a(X) are grad mai mic


decat p si nu este polinomul identic nul). Deci grad(g

(X)) 1.

In acest caz, toate
mesajele de informat ie b(X) +a(X) [g

(X)]
t
(1 +X
p
+X
2p
+. . .), (t 0) se codica
identic, ceea ce va conduce la imposibilitatea decodicarii.
Reciproca se demonstreaza similar. 2
17.5 Exercit ii
17.1 Determinat i d
lib
pentru ecare din codurile urmatoare:
(a) g
0
(X) = 1 + X
2
, g
1
(X) = 1 + X + X
2
;
(b) g
0
(X) = 1 + X + X
2
+ X
3
, g
1
(X) = 1 + X
2
+ X
3
;
(c) g
0
(X) = 1 + X
3
+ X
4
, g
1
(X) = 1 + X + X
2
+ X
4
.
17.2 Folosind (2, 2) - codul convolut ional denit n Exemplul 17.4, si fereastra de
decodicare b = 7, decodicat i (cat este posibil) secvent ele
v = 01000001000 . . .
v = 11000110010010001110010 . . .
17.3 Trasat i diagrama ret ea a (2, 1) - codului convolut ional generat de g
0
(X) =
1 = X
2
+ X
3
+ X
4
. Folosit i algoritmul Viterbi pentru decodicarea secvent ei v =
1000001000001000 . . .
17.4 Fie (2, 1) - codul generat de g
0
(X) = 1 + X + X
2
+ X
3
, g
1
(X) = 1 +
X
2
+ X
3
. Decodicat i primele 4 caractere de informat ie ale cuvantului recept ionat
c = 11000000 . . . pentru
204PRELEGEREA 17. DECODIFICAREA CODURILOR CONVOLUT IONALE
b = 2, b = 3, b = 4.
17.5 Generalizat i conceptul de diagrama ret ea la (n, k) - coduri.
Trasat i ret eaua (2, 2) - codului denit de circuitul liniar:

_

_

_
`

`
,
`

`


`
,

`
`

+ +
+ +
+
17.6 Generalizat i not iunea de diagrama de translatare pentru (n, k) coduri binare.
Construit i diagrama de translatare a codului denit n exercit iul anterior.
17.7 Demonstrat i Propozit ia 17.2,
17.8 Pentru codurile denite n Exercit iul 17.1, determinat i diagramele de trans-
latare si d(t) pentru 1 t

d
lib
1
2

.
17.9 Ce se ntampla daca se ncearca sa se determine d(t) pentru t >

d
lib
1
2

?
17.10 Construit i un algoritm pentru determinarea lui d(t) n cazul unui (n, 1) -
cod convolut ional (1 t

d
lib
1
2

dat).
17.11 Pentru ecare din codurile urmatoare, decidet i daca sunt catastroce sau nu.

In caz armativ, determinat i ciclurile de pondere 0.


(a) g
0
(X) = 1 + X, g
1
(X) = 1 + X + X
2
+ X
3
;
(b) g
0
(X) = 1 + X + X
4
, g
1
(X) = 1 + X
2
+ X
4
;
(c) g
0
(X) = 1 + X + X
2
, g
1
(X) = 1 + X + X
3
+ X
4
.
Bibliograe
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] L. Bahl, J. Cocke, F. Jelinek, J. Raviv - Optimal decoding of linear codes for
minimizing symbol error rate, IEEE Inf. Theory, pp. 284-287, Martie 1974;
[3] M. Blaum - A (16, 9, 6, 5, 4) error correcting dc-free block code, IEEE Transac-
tions on Information Theory, vol. 34, 1988, pp. 38-141;
[4] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[5] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[6] S. Guiasu - Teoria Codurilor, Tipograa Universitat ii Bucuresti, 1976;
[7] D.G. Homan, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[8] B. Honary, G. Markarian - Trellis Decoding of Block Codes, A Practical Ap-
proach, Kluwer Academic Publ., 1997;
[9] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[10] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[11] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
[12] W.E.Ryan - A Turbo Code Tutorial, IEEE Trans. comm. pp. 1261-1271, Oct.
1996;
205
Prelegerea 18
Coduri - tablou
18.1 Denirea codurilor tablou

In Prelegerea 3 au fost denite codurile - produs. Desi construct ia prezentat a era


cunoscuta din anii

60, dezvoltarea acestei clase de coduri a fost exploziva abia dupa
trei decenii, odata cu introducerea pe piat a a telefoniei mobile. Acum s-a aratat ca
orice cod - bloc poate generat nit recursiv, folosind o varianta de coduri produs.
Sa consideram o clasa particulara de coduri - produs binare, n care n
1
= k
1
+
1, n
2
= k
2
+ 1 (deci singurul simbol de control este bitul de control al paritat ii).
Acest cod este generat de produsul Kronecker a doua matrici de forma
G
p,p+1
=

1 0 0 . . . 0 1
0 1 0 . . . 0 1
.
.
.
0 0 0 . . . 1 1

(1)
unde p = k
1
, k
2
.
Un astfel de (n
1
n
2
, k
1
k
2
) - cod are distant a d = d
1
d
2
= 22 = 4, deci corecteaza
o eroare si detecteaza doua erori. Chiar daca n scrierea liniara a cuvintelor - cod
ultimul simbol de control se poate elimina (el este de fapt suma modulo 2 a bit ilor
de control de pe ultima linie si coloana) distant a se reduce la 3, deci capacitatea de
corectare a unei erori ramane.
Exemplul 18.1 Fie un (3, 2) - cod binar sistematic, generat de matricea G =

1 0 1
0 1 1

. Codul produs (3, 2)(3, 2) = (9, 4) va avea ca matrice generatoare


G

= GG =

1 0 1 0 0 0 1 0 1
0 1 1 0 0 0 0 1 1
0 0 0 1 0 1 1 0 1
0 0 0 0 1 1 0 1 1

Daca a = 1001 este un mesaj de informat ie, el se codica n


x = aG

= 101011110, sau folosind forma matriciala:


x =
1 0 1
0 1 1
1 1 0
= 101011110
caracterele de control ind subliniate, iar cuvantul - cod este transmis linie cu linie.
193
194 PRELEGEREA 18. CODURI - TABLOU
18.2 Structura de ret ea a codurilor tablou

In cadrul codurilor convolut ionale s-a denit o structura de ret ea pentru facilitarea
codicarii, decodicarii, detectarii si corectarii de erori (Prelegerea 17). Aceasta
structura se poate extinde cu mici modicari si la codurile liniare.
Fie C un (n, k) - cod liniar care se poate reprezenta printr-un cod - tablou. Lui
i se asociaza un graf orientat cu arce marcate. Varfurile grafului sunt partit ionate
n coloane V
0
, V
1
, . . . , V
Nc1
(N
c
n + 1). O coloana V
i
cont ine mult imea starilor
la care se poate ajunge la momentul i. Fiecare arc U pleaca dintr-o stare q
j
V
i
si
ajunge la o stare q
m
V
i+1
(i 0); n acest caz, q
m
este succesorul lui q
j
, iar q
j
este
predecesorul lui q
m
. Arcul este marcat cu o pereche (U)/(U), unde (U) Z

q
este
un mesaj de informat ie, iar (U) Z

q
este mesajul - cod corespunzator (de obicei
ele se reduc la cate un singur caracter).
Proprietat i:
(a) V
0
= {q
0
}, V
Nc1
= {q
Nc1
}; deci, orice ret ea pleaca dintr-o stare unica q
0
(radacina) si ajunge de asemenea ntr-o stare unica q
Nc1
(t inta);
(b) Orice stare este accesibila din rad acin a prin cel put in un drum;
(c) Din orice stare se poate ajunge la t int a prin cel put in un drum.
Numim drum prin ret ea un drum de la rad acina la t inta. Printr-o ret ea se pot
cataloga toate cuvintele unui cod liniar reprezentabil sub forma de cod - tablou.
Orice cuvant - cod corespunde unui drum unic prin ret ea. Deci o astfel de ret ea va
cont ine q
k
drumuri distincte. Fiecare astfel de drum are doua marcaje:
(i) concatenarea marcajelor de informat ie (U) ale ecarui arc U al drumului;
aceasta secvent a formeaza mesajul de informat ie care se codica.
(ii) concatenarea marcajelor (U) ale ecarui arc U al drumului; ele formeaza
cuvantul care codica secvent a de informat ie.

In acest fel, operat ia de codicare sau decodicare (far a corectare de erori) se


reduce pentru ecare mesaj de informat ie (cod) la determinarea acelui drum prin
ret ea, marcat de mesajul respectiv.
Sa consideram numai (n
1
n
2
, k
1
k
2
) - coduri - tablou binare (generalizarea la
cazul nebinar se face fara probleme deosebite). Pentru aceste coduri se pot construi
evident mai multe structuri de ret ea; vom considera aici numai ret ele cu un num ar
minim de stari pe ecare coloana. Construct ia unei astfel de ret ele va necesita
N
s
= 2
min{k
1
,k
2
}
stari (reamintim, aici k
i
= n
i
1, i = 1, 2). Procedura de generare ([8]) a ret elei
este:
18.2. STRUCTURA DE RET EA A CODURILOR TABLOU 195
1. Fie n
1
= min{n
1
, n
2
} (pentru cazul invers se procedeaza similar);
2. Se determina numarul N
s
de stari si num arul N
c
de coloane prin relat iile
N
s
= 2
n
1
1
, N
c
= n
2
+ 1;
3. Pentru ecare coloana V
p
(0 p N
c
1) se noteaza elementele (starile)
sale prin (A)
p
= (a
1
a
2
. . . a
k
1
)
p
, unde a
i
Z
2
;
4. Radacina ret elei este (00 . . . 0)
0
, iar scopul este (00 . . . 0)
N
c
1
;
5. Pentru orice pereche de stari (A, B) V
p
V
p+1
(0 p < N
c
2), se
marcheaz a arcul corespunzator cu
p
(A, B)/
p
(A, B) denite
p
(A, B) =
(A)
p
+ (B)
p+1
,
p
(A, B) =
p
(A, B)c
1
, unde c
1
este bitul de paritate al
secvent ei
p
(A, B) iar suma se realizeaza n Z
2
.
6. Arcele care leaga starile A V
N
c
2
de t int a au
N
c
2
(A, B) =
,
N
c
2
(A, B) = (A)
N
c
2
c
1
unde c
1
este bitul de paritate al secvent ei
(A)
N
c
2
care deneste starea A.
Exista 2
k
1
k
2
drumuri distincte prin ret ea, ecare corespunzand unui cuvant - cod
unic. Procedura poate extinsa usor la codurile produs cu mai multe simboluri de
control.
Exemplul 18.2 Sa construim ret eaua asociata codului tablou (3, 2)(3, 2) (deci n
1
=
n
2
= 3, k
1
= k
2
= 2, d = 4). Ea va avea N
s
= 2
n
1
1
= 2
31
= 4 stari distincte si
N
c
= n
2
+ 1 = 3 + 1 = 4 coloane.
Fiecare stare va de forma (a
1
a
2
)
p
cu p = 0, 1, 2, 3, a
1
, a
2
{0, 1}.
(00)
0
si (00)
3
vor radacina respectiv t inta ret elei.
Marcajele arcelor sunt de forma
p
(A, B)/
p
(A, B), obt inute prin toate combina-
t iile posibile ale lui (a
1
a
2
)
p
si (a
1
a
2
)
p+1
.
Astfel, pentru p = 0 avem:

0
(00, 00) = (00)
0
+ (00)
1
= 00
0
(00, 01) = (00)
0
+ (01)
1
= 01

0
(00, 01) = (00)
0
+ (10)
1
= 10
0
(00, 11) = (00)
0
+ (11)
1
= 11.
iar ecare arc va marcat cu o pereche de forma

0
/
0
= a
1
a
2
/a
1
a
2
c
1
unde c
1
= a
1
+ a
2
.
Pe nivelul p = 1, arcele sunt marcate prin perechi din tabelul urmator:

1
(A, B) 00 01 10 11
00 00/000 01/011 10/101 11/110
01 01/011 00/000 11/110 10/101
10 10/101 11/110 00/000 01/011
11 11/110 10/101 01/011 00/000
La ultimul nivel, pentru p = N
c
2 = 2 vom avea
2
(A, 00) = si

2
(00, 00) = 000,
2
(01, 00) = 011,
2
(10, 00) = 101,
2
(11, 00) = 110 (pe ultimul
arc sunt numai simboluri de control).
196 PRELEGEREA 18. CODURI - TABLOU
Ret eaua se poate reprezenta grac astfel:

00
00 00
01 01
10 10
11 11
00
`

00/000
01/011
10/101
11/110
/000
/011
/101
/110

`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

Exemplul 18.3

In mod similar se construiesc codurile tablou obt inute prin produsul
a doua (3, 2)(n
2
, k
2
) - coduri bloc. Toate au acelasi numar de stari N
s
= 2
2
=
4, doar adancimea (numarul de coloane) variind n funct ie de n
2
(N
c
= n
2
+ 1).
Reprezentarea graca a ret elei este

>
>
>
>
>
>

`
`
`
`
`
`
`
`
`

`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`

`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`

`
`
`
`
`
`
`

`
`
`
`
`
`
`
`
`

`
` `
`
`

>
>

.
.
..
>
>
>>

-
-
--

.
.
.
>
>
>>

.
.
..
-
-
--

`
`
``

-
-
-

-
-
-
-
-
--

00
00 00 00
00
01 01 01
10 10 10
11 11 11
. . .
marcajul nodurilor ind realizat similar cu cel din Exemplul 18.2.
18.3 Decodicarea codurilor tablou
Operat ia de codicare se realizeaza foarte simplu: ecare mesaj de informat ie de
k
1
k
2
caractere, se scrie ca o secvent a de k
2
+ 1 grupuri, primele k
2
grupuri av and
cate k
1
simboluri, iar ultimul . Aceasta secvent a traseaza prin ret ea un drum unic
18.3. DECODIFICAREA CODURILOR TABLOU 197
(00 . . . 0) A
1
. . . A
N
c
2
(00 . . . 0)
de la radacin a la t int a. Ceea ce se obt ine prin concatenarea iesirilor

0
(00 . . . 0, A
1
)
1
(A
1
, A
2
) . . .
N
c
2
(A
N
c
2
, 00 . . . 0)
va un cuvant - cod al (n
1
n
2
, k
1
k
2
) - codului - tablou reprezentat de ret ea.
Pentru decodicare se poate folosi o variant a a algoritmului Viterbi, cu mici
modicari, necesare trecerii de la codurile convolut ionale la coduri bloc.
1. Cuvantul recept ionat este mpart it n n
2
subcuvinte, ecare av and n
1
valori digitizate (vezi Exemplul 18.4) ale alfabetului - cod.
2. La ecare nivel p, pentru ecare arc (A
p
, B
p+1
) se calculeaza metrica
arcului, care este distant a euclidiana dintre al p + 1-lea subcuvant
recept ionat si
p
(A
p
, B
p+1
). Distant a euclidiana dintre x = x
1
x
2
. . . x
n
si
y = y
1
y
2
. . . y
n
este
d
E
(x, y) = (x
1
y
1
)
2
+ (x
2
y
2
)
2
+ . . . + (x
n
y
n
)
2
.
3. Pentru ecare nod B al ret elei se determina metrica nodului B, astfel:
(a) Metrica nodului rad acina este 0;
(b) Pentru un nod B
p+1
V
p+1
(p 0), metrica lui B este cea mai mica
valoare a sumei dintre metrica unui nod A
p
V
p
si d
E
((A)
p
, (B)
p+1
),
minimul ind luat dupa toate nodurile din V
p
.
4. Arcul selectat n calculul metricii nodului se introduce ntr-un drum posi-
bil, iar toate celelalte arce de pe nivelul respectiv sunt eliminate.
5. Dupa ce s-a calculat metrica nodului t inta, se considera drumul posibil
corespunzator si decodicarea se face prin concatenarea sub-mesajelor
de informat ie care marcheaz a arcele acestui drum.
Exemplul 18.4 Sa reluam codul - tablou denit n Exemplul 18.2. Presupunem ca
s-a transmis cuvantul cod a = 011101110 si s-a recept ionat mesajul digitizat
b

= 0.2 0.4 0.4 0.3 0.1 0.9 1.0 0.9 0.6.


Presupunand ca orice simbol digitizat din intervalul [0.0, 0.5) reprezinta carac-
terul binar 0, iar [0.5, 1.0] reprezinta 1, putem considera ca s-a primit secvent a
b = 000001111 deci au aparut 4 erori.

Intr-o decodicare obisnuita a codurilor
liniare, deoarece d = 4, erorile nu pot corectate. Folosind structura de ret ea nsa,
acest lucru este realizabil. Sa detaliem pasii decodicarii cuvantului b

.
Metrica nodului radacina (00)
0
este 0.
Prima subsecvent a de n
1
= 3 caractere primite este 0.2 0.4 0.4.
Se calculeaza metricile celor patru arce care pleaca din radacina:
d
E
((00)
0
, (00)
1
) = (0.2 0.0)
2
+ (0.4 0.0)
2
+ (0.4 0.0)
2
= 0.36;
d
E
((00)
0
, (01)
1
) = (0.2 0.0)
2
+ (0.4 1.0)
2
+ (0.4 1.0)
2
= 0.76;
d
E
((00)
0
, (10)
1
) = (0.2 1.0)
2
+ (0.4 0.0)
2
+ (0.4 1.0)
2
= 1.16;
d
E
((00)
0
, (11)
1
) = (0.2 1.0)
2
+ (0.4 1.0)
2
+ (0.4 0.0)
2
= 1.16.
Metricile celor patru noduri de pe nivelul 1 sunt chiar aceste valori.
198 PRELEGEREA 18. CODURI - TABLOU
Urmatorul submesaj primit este 0.3 0.1 0.9. Pentru nodurile de pe nivelul
2, valorile calculate ale metricilor (metrica nodului predecesor plus metrica arcului)
sunt:
(00)
2
(01)
2
(10)
2
(11)
2
(00)
1
1.27 1.27 0.87 2.42
(01)
1
1.67 1.67 2.87 1.37
(10)
1
1.67 3.27 2.07 2.07
(11)
1
3.27 1.67 2.07 2.07
Minimul pe ecare coloana ale acestor valori (scris ngrosat) reprezinta metrica
nodului respectiv. Deci nodurile (00)
2
si (01)
2
au metrica 1.27, (10)
2
are metrica
0.87, iar (11)
2
are metrica 1.37.
Ultima subsecvent a de trei caractere digitizate este 1.0 0.9 0.6. Valorile calcu-
late ale metricilor (metrica nodului predecesor plus metrica arcului) drumurilor care
ajung n nodul t inta sunt:
(00)
3
(00)
2
3.44
(01)
2
2.44
(10)
2
1.84
(11)
2
1.74
Deci metrica nodului t inta este 1.74. Refacand acum traiectoria n sens invers,
se obt ine drumul posibil (00)
0
(01)
1
(11)
2
(00)
3
, reprezentat n gura

.
.
.
.
.
.
`
`
`
`
`
`
`

00
00
01
10
11
00
01
10
11
00
01/011
10/101
/110
Prin concatenarea marcajelor arcelor de pe acest drum, rezulta cuvantul - cod
011101110 (care coincide cu mesajul transmis a) si decodicarea lui - mesajul de
informat ie 0110.
18.4 Coduri tablou generalizate (GAC)
Denit ia codurilor - tablou se poate extinde pentru a cuprinde si alte clase de coduri
liniare (Hamming, Reed - Muller) sau ciclice (BCH, Reed - Solomon); ceea ce se
obt ine este un cod - tablou generalizat (GAC - Generalized Array Codes).
Un GAC este o suma binara de doua sau trei coduri - tablou, completate eventual
cu linii nule. Procedura de construct ie a unui astfel de (n, k) - cod C este:
A. Fie C
1
un cod - produs prin nmult irea Kronecker G
A
1
G
A
2
, unde:
(i) G
A
1
este o matrice k
1
(k
1
+ 1) de tipul (1);
18.4. CODURI TABLOU GENERALIZATE (GAC) 199
(ii) G
A
2
= (I
k
2
|J
k
2
,n
2
k
2
) unde I
k
2
este matricea unitate iar J este o matrice cu
toate elementele 1;
(iii) n = (k
1
+ 1) n
2
, k
A
= k
1
k
2
.
B. Fie C
2
un cod - produs prin nmult irea Kronecker G
B
1
G
B
2
, unde:
(i) G
B
1
este o matrice 1 n
B
1
cu toate elementele 1;
(ii) G
B
2
= (G
3
|G
4
) este o matrice k
B
n
B
2
unde G
3
este o matrice cu coloane 0
sau 1, iar G
4
este o matrice de tipul (1) cu k
B
linii. Coloanele lui G
B
2
pot eventual
permutate.
(iii) n = n
B
1
n
B
2
.
C. Fie C
3
un cod - produs prin nmult irea Kronecker G
C
1
G
C
2
, unde:
(i) G
C
1
= (00 . . . 01) are dimensiunea 1 n
C
1
;
(ii) G
C
2
= (11 . . . 1) are dimensiunea 1 n
C
2
;
(iii) n = n
C
1
n
C
2
.
D. Codul C este C
1
+ C
2
sau C
1
+ C
2
+ C
3
unde suma se efectueaza n Z
2
; el
are lungimea n, k = k
A
+ k
B
respectiv k = k
A
+ k
B
+ 1 simboluri de informat ie si
este generat de matricea

G
A
1
G
A
2
G
B
1
G
B
2

sau

G
A
1
G
A
2
G
B
1
G
B
2
G
C
1
G
C
2

In exemplele urmatoare vom prezenta sub forma de coduri GAC unele din cele
mai cunoscute coduri - bloc (liniare sau ciclice).
Exemplul 18.5 Sa consideram
G
A
1
=

1 0 0 1
0 1 0 1
0 0 1 1

, G
A
2
= (1 1)
G
B
1
= (1 1 1 1), G
B
2
= (0 1).
Dimensiunile codului sunt n = 4 2 = 8, k = 3 + 1 = 4. Matricea generatoare va
G =

1 1 0 0 0 0 1 1
0 0 1 1 0 0 1 1
0 0 0 0 1 1 1 1
0 1 0 1 0 1 0 1

.
Aceasta corespunde unui cod Reed - Muller RM(1, 3). Daca se ignora ultima
coloana (de control), se obt ine un (7, 4) - cod Hamming binar.
Aranjarea sub forma de tablou a cuvintelor - cod din cele doua coduri - produs
componente este urmatoarea:
Fie a = a
1
a
2
a
3
a
4
un mesaj de informat ie. Atunci cuvantul - cod x este dat prin:
x
1
=
a
1
p
1
a
2
p
2
a
3
p
3
p
4
p
5
x
2
=
0 a
4
0 a
4
0 a
4
0 a
4
,
x = x
1
+x
2
=
a
1
p
1
+ a
4
a
2
p
2
+ a
4
a
3
p
3
+ a
4
p
4
p
4
+ a
4
= (a
1
, a
4
+ p
1
, a
2
, p
2
+ a
4
, a
3
, p
3
+ a
4
, p
4
, p
4
+ a
4
),
unde p
i
= a
i
(1 i 3) si p
4
= a
1
+ a
2
+ a
3
sunt simboluri de control.
200 PRELEGEREA 18. CODURI - TABLOU
Exemplul 18.6 Codul RM(1, 4) poate generat cu un cod GAC astfel:
G
A
1
=

1 0 0 1
0 1 0 1
0 0 1 1

G
A
2
= (1 1 1 1)
G
B
1
= (1 1 1 1) G
B
2
=

0 1 0 1
0 0 1 1

.
Deci n = 4 4, k = 3 + 2 = 5 si
G =

1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

.
Eliminand ultimul simbol de control (ultima coloana din matricea G) se ajunge
la un (15, 5) - cod binar cu d = 7, care este un cod BCH.
Fie a = a
1
a
2
a
3
a
4
a
5
un mesaj de informat ie. Reprezentarea tabelara a cuvintelor
- cod este:
x
1
=
a
1
p
1
p
1
p
1
a
2
p
2
p
2
p
2
a
3
p
3
p
3
p
3
p
4
p
4
p
4
p
4
x
2
=
0 a
4
a
5
a
4
+ a
5
0 a
4
a
5
a
4
+ a
5
0 a
4
a
5
a
4
+ a
5
0 a
4
a
5
a
4
+ a
5
,
x = x
1
+x
2
=
a
1
p
1
+ a
4
p
1
+ a
5
p
1
+ a
4
+ a
5
a
2
p
2
+ a
4
p
2
+ a
5
p
2
+ a
4
+ a
5
a
3
p
3
+ a
4
p
3
+ a
5
p
3
+ a
4
+ a
5
p
4
p
4
+ a
4
p
4
+ a
5
p
4
+ a
4
+ a
5
,
unde p
i
= a
i
(1 i 3), p
4
= a
1
+ a
2
+ a
3
sunt simboluri de control.
Exemplul 18.7 Sa plecam de la urmatoarele matrici de baza:
G
A
1
= G
A
2
=

1 0 0 1
0 1 0 1
0 0 1 1

G
B
1
= G
C
2
= (1 1 1 1), G
B
2
= G
C
1
= (0 0 0 1).
Se obt ine un cod C = C
1
+ C
2
+ C
3
cu n = 4 4 = 16, k = 3 3 + 1 + 1 = 11 si
matrice generatoare
G =

1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1
0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1
0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1
0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1
0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1
0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1
0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1

El are d = 4 si este echivalent cu un cod RM(2, 4). Daca se elimina ultimul


simbol de control, se obt ine un (15, 11) - cod Hamming binar.
18.5. DECODIFICAREA CODURILOR GAC 201
Fie a = a
1
a
2
. . . a
11
un mesaj de informat ie. Cuvantul - cod x este format din:
x
1
=
a
1
a
2
a
3
p
1
a
4
a
5
a
6
p
2
a
7
a
8
a
9
p
3
p
4
p
5
p
6
p
7
, x
2
=
0 0 0 a
10
0 0 0 a
10
0 0 0 a
10
0 0 0 a
10
, x
3
=
0 0 0 0
0 0 0 0
0 0 0 0
a
11
a
11
a
11
a
11
x = x
1
+x
2
+x
3
=
a
1
a
2
a
3
p
1
+ a
10
a
4
a
5
a
6
p
2
+ a
10
a
7
a
8
a
9
p
3
+ a
10
p
4
+ a
11
p
5
+ a
11
p
6
+ a
11
p
7
+ a
10
+ a
11
Exemplul 18.8 Pentru (24, 12) - codul Golay binar extins se poate da urmatoarea
reprezentare GAC:
G
A
1
=

1 0 1
0 1 1

G
A
2
=

1 0 0 0 1 1 1 1
0 1 0 0 1 1 1 1
0 0 1 0 1 1 1 1
0 0 0 1 1 1 1 1

G
B
1
= (1 1 1) G
B
2
=

1 1 1 0 1 1 0 1
1 0 1 1 1 1 0 1
1 0 1 0 1 1 1 1

G
C
1
= (0 0 1) G
C
2
= (1 1 1 1 1 1 1 1).
Fie a = a
1
a
2
. . . a
12
un mesaj de informat ie.
Pentru obt inerea cuvantului - cod, avem:
x
1
=
a
1
a
2
a
3
a
4
p
1
p
2
p
3
p
4
a
5
a
6
a
7
a
8
p
5
p
6
p
7
p
8
p
9
p
10
p
11
p
12
p
13
p
14
p
15
p
16
x
2
=
c
1
a
9
c
2
a
10
c
3
c
4
a
11
c
5
c
1
a
9
c
2
a
10
c
3
c
4
a
11
c
5
c
1
a
9
c
2
a
10
c
3
c
4
a
11
c
5
x
3
=
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
a
12
a
12
a
12
a
12
a
12
a
12
a
12
a
12
deci
x = x
1
+x
2
+x
3
=
a
1
+ c
1
a
2
+ a
9
. . . a
11
+ p
3
c
5
+ p
4
a
5
+ c
1
a
6
+ a
9
. . . a
11
+ p
7
c
5
+ p
8
a
12
+ p
9
+ c
1
a
12
+ p
10
+ a
9
. . . a
12
+ a
11
+ p
15
a
12
+ p
16
+ c
5
De remarcat maniera mult mai simpla de codicare, ea reducandu-se la adunari
de valori binare (pentru simbolurile de control) si adunari de matrici binare.
18.5 Decodicarea codurilor GAC
Pentru decodicare se poate folosi tot algoritmul lui Viterbi aplicat unei structuri
de ret ea sub care se pot reprezenta aceste coduri. Structura de ret ea se construieste
similar cu cea a codurilor - tablou, cu unele mici modicari datorate denit iei cu-
vintelor - cod, ca sume de doua sau trei alte secvent e.
202 PRELEGEREA 18. CODURI - TABLOU
Vom considera reprezentarea cuvintelor unui cod GAC sub forma de tablou cu
n
1
linii si n
2
coloane. Fie k
i
num arul de simboluri noi de informat ie care pot apare
pe linia i a cuvintelor - cod si t = max
1in
1
{k
i
}.
1. Numarul de coloane (adancimea ret elei) este N
c
= n
1
+ 1, iar num arul
de stari distincte este N
s
= 2
t
.
2. Fiecare stare de pe coloana p se noteaza (a
1
a
2
. . . a
t
)
p
unde a
i
Z
2
(1
i t).
3. Radacina ret elei este (00 . . . 0)
0
iar t inta (00 . . . 0)
n
1
.
4. Fiecare arc (A
p
, B
p+1
) de pe nivelul p este marcat cu o pereche

p
(A, B)/
p
(A, B) unde
p
(A, B) este secvent a de simboluri noi de
informat ie de pe linia p (eventual ), iar
p
(A, B) este linia p a cuvantului
- cod.
5. Daca A
p
si B
p+1
sunt legate printr-un arc si |
p
(A, B)| = s, atunci B
p+1
=
A
p
+
p
(A, B)0
ts
.
6. Daca construct ia codului GAC a folosit si codul C
3
, atunci ecare nod
de pe coloana n
2
este legat de t inta prin doua arce, marcajul celui de-al
doilea arc ind complementara marcajului primului arc (pe acest nivel

n
2
(A, 00 . . . 0) = ).

In aceasta construct ie de ret ea sunt


n
1

p=1
2
k
i
drumuri distincte, ecare din ele
corespunzand unui cuvant - cod.
Operat iile de codicare/decodicare (inclusiv aplicarea algoritmului Viterbi a-
daptat) sunt identice cu cele denite la codurile - tablou.
Exemplul 18.9 Reluam codul denit n Exemplul 18.5. Pentru el se poate construi
o ret ea n felul urmator:
Sunt necesare N
c
= n
1
+ 1 = 4 + 1 = 5 coloane. Pentru numarul de stari, sa
studiem forma de tablou a cuvintelor cod:
x =
a
1
p
1
+ a
4
a
2
p
2
+ a
4
a
3
p
3
+ a
4
p
4
p
4
+ a
4

>
>
>
>
>
>
>
.
.
.
.
.
.
-
-
-
-
-
--

.
.
.
.
.
..

-
-
-
-
-
--
.
.
.
.
.
..

-
-
-
-
-
-- .
.
.
.
.
.
.
-
-
-
-
-
--
.
.
.
.
.
..

-
-
-
-
-
-
.
.
.
.
.
.
.
>
>
>
>
>
>
>
00
00 00 00
00
10 10 10
01 01 01
11 11 11
18.5. DECODIFICAREA CODURILOR GAC 203

In aceasta reprezentare, pe prima linie sunt doua simboluri de informat ie (a


1
si a
4
),
pe a doua si a treia cate unul (a
2
respectiv a
3
, a
4
neind simbol nou), iar pe a patra
linie, nici unul. Deci numarul de stari al ret elei este N
s
= 2
2
= 4, ecare stare ind
reprezentata printr-o secvent a de t = 2 caractere binare (00, 01, 10, 11).
Funct ia este denita prin

0
(00, B) = a
1
a
4
,
1
(A, B) = a
2
,
2
(A, B) = a
3
,
3
(A, 00) = .
Nodurile si arcele sunt marcate cu valorile date de tabelele urmatoare:

0
(A, B)/
0
(A, B) 00 10 01 11
00 00/00 10/11 01/01 11/10

1
(A, B)/
1
(A, B) 00 10 01 11
00 0/00 1/11
10 1/11 0/00
01 0/01 1/10
11 1/10 0/01

2
(A, B)/
2
(A, B) 00 10 01 11
00 0/00 1/11
10 1/11 0/00
01 0/01 1/10
11 1/10 0/01

3
(A, B)/
3
(A, B) 00
00 /00
10 /11
01 /01
11 /10
pentru codul RM(1, 3),

3
(A, B)/
3
(A, B) 00
00 /0
10 /1
01 /0
11 /1
pentru (7, 4) - codul Hamming
Exemplul 18.10 Reprezentarea prin ret ea a codurilor RM(1, 4) si (15, 5) BCH
construite sub forma de GAC n Exemplul 18.6 se realizeaza astfel:
Adancimea ret elei (numarul de coloane) este N
c
= 4 + 1 = 5. Numarul maxim
de simboluri de informat ie noi se aa pe prima linie a cuvintelor - cod (a
1
, a
4
, a
5
);
deci ret eaua are N
s
= 2
3
= 8 stari distincte.
Funct ia este denita

0
(000, B) = a
1
a
4
a
5
,
1
(A, B) = a
2
,
2
(A, B) = a
3
,
3
(A, 000) = .
iar funct ia :

0
(000, B) = a
1
(a
1
+ a
4
)(a
1
+ a
5
)(a
1
+ a
4
+ a
5
)

1
(A, B) = a
2
(a
2
+ a
4
)(a
2
+ a
5
)(a
2
+ a
4
+ a
5
)

2
(A, B) = a
3
(a
3
+ a
4
)(a
3
+ a
5
)(a
3
+ a
4
+ a
5
)

3
(A, 000) = (a
1
+a
2
+a
3
)(a
1
+a
2
+a
3
+a
4
)(a
1
+a
2
+a
3
+a
5
)(a
1
+a
2
+a
3
+a
4
+a
5
)
pentru codul RM(1, 4). Pentru (15, 5) - codul BCH se elimina ultimul bit de control.
Nodurile si arcele sunt etichetate conform tabelelor:

0
/
0
000 100 001 101 010 110 011 111
000 000/0000 100/1111 001/0011 101/1100 010/0101 110/1010 011/0110 111/1001
204 PRELEGEREA 18. CODURI - TABLOU

.
.
.
.
.
..
-
-
-
-
-
-

`
`
`
`
`
`
`
`
`







`
`
`
`
`
`
`
`
`

`
`
`
`
`
`
-
-
-
-
-
-
.
.
.
.
.
..
>
>
>
>
>
>
>

000
000 000 000
000
100 100 100
001 001 001
101 101 101
010 010 010
110 110 110
011 011 011
111 111 111

i
/
i
000 100 001 101 010 110 011 111
000 0/0000 1/1111

100 1/1111 0/0000

001

0/0011 1/1100

101

1/1100 0/0011

010

0/0101 1/1010

110

1/1010 0/0101

011

0/0110 1/1001
111

1/1001 0/0110
(i=1,2)

3
/
3
0000
000 /0000
100 /1111
001 /0011
101 /1100
010 /0101
110 /1010
011 /0110
111 /1001
respectiv

3
/
3
0000
000 /000
100 /111
001 /001
101 /110
010 /010
110 /101
011 /011
111 /100
.
De remarcat ca aceasta ret ea se poate reprezenta folosind numai 4 stari n loc de 8:
{
y
{
{ {
{
y
{
{
{
y
{
{ {








`

Cele doua arce care leaga doua noduri sunt marcate cu etichete complementare.
Except ie fac arcele de pe primul nivel unde n denit ia funct iei
0
este complemen-
tat numai primul bit (a
1
); ceilalt i doi bit i de informat ie a
4
a
5
sunt identici pentru
ecare pereche de arce si formeaza marcajele nodurilor succesor de pe nivelul 1:
00, 01, 10, 11.
Bibliograe
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] L. Bahl, J. Cocke, F. Jelinek, J. Raviv - Optimal decoding of linear codes for
minimizing symbol error rate, IEEE Inf. Theory, pp. 284-287, Martie 1974;
[3] M. Blaum - A (16, 9, 6, 5, 4) error correcting dc-free block code, IEEE Transac-
tions on Information Theory, vol. 34, 1988, pp. 38-141;
[4] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[5] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[6] S. Guiasu - Teoria Codurilor, Tipograa Universitat ii Bucuresti, 1976;
[7] D.G. Homan, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[8] B. Honary, G. Markarian - Trellis Decoding of Block Codes, A Practical Ap-
proach, Kluwer Academic Publ., 1997;
[9] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[10] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[11] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
[12] W.E.Ryan - A Turbo Code Tutorial, IEEE Trans. comm. pp. 1261-1271, Oct.
1996;
205
Prelegerea 19
Alte reprezentari de coduri - bloc
19.1 RLL - coduri
Sistemele de comunicare actuale (telefonice, de nregistrare etc), datorita vitezei
mari de lucru, difera substant ial de canalele clasice (binar simetrice). Pentru ele
se folosesc ltre de banda capabile sa elimine fenomenul de interferent a care apare.
Numite canale cu raspuns part ial, ele corecteaza aceste interferent e folosind algoritmi
de tip Viterbi, incorporat i prin construct ie. Reusita decodicarii corecte a cuvintelor
recept ionate este asigurata de supra-codicari ale mesajului sursa.

In prezent sunt
folosite trei supra-coduri care asigura transmiterea fara interferent e (n anumite
limite) a mesajului: acestea sunt codurile cu lungime limitata si codurile balansate
pentru codurile-bloc, turbo-codurile pentru ocdurile convolut ionale.
Denit ia 19.1 Un cod cu lungime limitata (RLL - Run Length Limited Codes), sau
(d
0
, k
0
) - cod, este un cod - bloc cu proprietatea ca orice doua simboluri 1 consecutive
sunt separate prin p zerouri, unde d
0
p k
0
.
Parametrul d
0
este folosit pentru controlul interferent ei dintre simboluri (feno-
men care apare la viteze de transmisie mari, apropiate de capacitatea de saturat ie a
canalului); k
0
impune num arul maxim de zerouri care pot apare, pentru pastrarea
unei rate de informat ie cat mai convenabile.
Fie C un (n, k) - cod bloc care poate reprezentat sub forma de cod tablou
(n
1
n
2
, k
1
k
2
), si c
1,n
un cuvant binar de comutat ie. Codul C +c = {a +c|a A}
va tot un (n, k) - cod, cu restrict ii RLL.
Dicultatea acestei construct ii rezida n modul de alegere a vectorului c. De
aceea, vom detalia procedura de codicare pentru obt inerea de coduri RLL cu d
0
=
0:
1. Se deneste codul - tablou (n
1
n
2
, k
1
k
2
) care trebuie transformat.
2. Se deneste cuvantul de comutat ie c = c
1
c
2
. . . c
n
2
, unde c
i
=
c
i
1
c
i
2
. . . c
i
n
1
(1 i n
2
) este secvent a binara de comutat ie pentru linia i.
3. Pentru linia i (care este un cuvant - cod cu un singur simbol de control),
cuvantul de comutat ie veric a urmatoarea condit ie:
Daca n
1
este par, c
i
are un num ar impar de 1,
altfel, c
i
are un num ar par de 1.
217
218 PRELEGEREA 19. ALTE REPREZENT

ARI DE CODURI - BLOC


Exemplul 19.1 Fie (16, 9) - codul tablou, avand cuvintele - cod de forma
a =
a
1
a
2
a
3
p
1
a
4
a
5
a
6
p
2
a
7
a
8
a
9
p
3
p
4
p
5
p
6
p
7
(este codul C
1
construit n Exemplul 18.7). Deoarece n
1
= 4, cuvantul de comutat ie
al ecarei linii cont ine un numar impar de 1. Vor exista opt variante posibile pentru
c
i
:
0001 0010 0100 1000 1110 1101 1011 0111,
deci se pot deni N
0
= 8
4
cuvinte de comutat ie distincte c.
Daca se ia de exemplu c = 0100110110001110, codul RLL denit pe baza lui va
avea cuvintele - cod
a =
a
1
a
2
a
3
p
1
a
4
a
5
a
6
p
2
a
7
a
8
a
9
p
3
p
4
p
5
p
6
p
7
unde s-a notat x = 1 x.
Tehnica descrisa mai sus se poate extinde la coduri GAC, conducand la coduri cu
proprietat i RLL optime ([7]). Generalizarea este urmatoarea:
1. Daca n
1
este par, c
i
(1 i n
2
) cont ine zero sau un numar impar de 1;
2. Daca n
2
este impar, c
i
(1 i n
2
) cont ine un num ar par de 1;
3. Daca n = n
1
n
2
este par, cuvantul de comutat ie c va cont ine un numar
par de 1;
4. c
i
nu este cuvant - cod al codului care formeaza liniile; daca aceasta nu se
poate evita, atunci c
i+1
se alege de asemenea dintre cuvintele aceluiasi cod.
Exemplul 19.2 Fie un (8, 4) - cod binar care codica ecare mesaj de informat ie
(a
1
, a
2
, a
3
, a
4
) n
a =
a
1
a
1
+ a
4
a
2
a
2
+ a
4
a
3
a
3
+ a
4
p
1
p
1
+ a
4
Deoarece n si n
1
sunt pare, alegem c
i
(1 i 4) cu numar impar de 1, aste
ncat numarul total de 1 din c sa e par. Putem lua de exemplu
c
1
= 10, c
2
= 00, c
3
= 01, c
4
= 00
Deci secvent a generala de comutat ie este c = 10000100 si cuvintele - cod cu
restrict ia RLL sunt
a =
a
1
a
1
+ a
4
a
2
a
2
+ a
4
a
3
a
3
+ a
4
p
1
p
1
+ a
4
19.1. RLL - CODURI 219
Studiind toate cele 16 cuvinte - cod, se gasesc trei cuvinte cod care ncep cu trei
caractere 1 si trei cuvinte - cod care se termina cu trei caractere 1. Deci k
0
= 6 si
se poate demonstra ca aceasta este valoarea minima care se poate obt ine pentru k
0
n cazul (8, 4) - codurilor.
Daca se relaxeaza codul prin eliminarea ultimului simbol de control, se ajunge la
un (7, 4) - cod Hamming binar, cu k
0
= 7.
Pentru decodicarea codurilor RLL se poate folosi structura de ret ea denita n
cazul codurilor GAC, cu o singura modicare: la marcajul arcelor, se nlocuieste

p
(A, B) := (A, B) +c
p
.
Exemplul 19.3 Sa reluam (8, 4) - codul GAC de mai sus, a carui ret ea este de-
scrisa n Exemplul 18.5. Folosind secvent a de comutat ie c = 00010001, se obt ine un
cod RLL cu aceeasi structura de ret ea:
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
`
_
>
>
>
>
>
>
>
.
.
.
.
.
.
-
-
-
-
-
--

.
.
.
.
.
..

-
-
-
-
-
--
.
.
.
.
.
..

-
-
-
-
-
-- .
.
.
.
.
.
.
-
-
-
-
-
--
.
.
.
.
.
..

-
-
-
-
-
-
.
.
.
.
.
.
.
>
>
>
>
>
>
>
00
00 00 00
00
10 10 10
01 01 01
11 11 11
iar marcajele arcelor:

0
/
0
00 10 01 11
00 00/00 10/11 01/01 11/10

1
/
1
00 10 01 11
00 0/01 1/10
10 1/10 0/01
01 0/01 1/11
11 1/11 0/00

2
/
2
00 10 01 11
00 0/00 1/11
10 1/11 0/00
01 0/01 1/10
11 1/10 0/01

3
/
3
00
00 /01
10 /10
01 /00
11 /11
(pentru (7, 4) - codul Hamming binar se ignora ultimul bit din
3
).
De remarcat ca fat a de Exemplul 18.5 s-a modicat numai marcajul nodurilor de
pe nivelele 1 si 3).
220 PRELEGEREA 19. ALTE REPREZENT

ARI DE CODURI - BLOC


19.2 Coduri balansate
Codurile balansate reprezinta o clasa speciala de coduri RLL n care ecare cuvant
- cod are un num ar egal de 0 si 1. Avantajele pe care le ofera aceasta condit ie
(sigurant a la transmiterea de date la viteze mari, capacitatea de auto-control al
tact ilor, posibilitat i de detectare si corectare a erorilor comparabile cu codurile -
bloc) o recomanda ca o masura ecient a de codicare suplimentara.
Algoritm B:
Fie a = a
1
a
2
. . . a
k
un mesaj de informat ie. Denim urmatorul cuvant - cod
tablou balansat asociat lui a:
1. Se alege n
1
astfel ca 2n
1
2 k si se noteaza n = 4 n
1
.
2. Se construieste un cuvant - cod tablou cu primele 2n
1
2 caractere de
informat ie:
c =
a
1
a
3
a
5
. . . a
2n
1
3
p
1
a
1
a
3
a
5
. . . a
2n
1
3
p
1
a
2
a
4
a
6
. . . a
2n
1
2
p
2
a
2
a
4
a
6
. . . a
2n
1
2
p
2
Cuvintele de aceasta forma, citite pe coloana, formeaza un (n, 2n
1
2) - cod
tablou balansat C, av and d = 4. C este folosit pentru denirea caracterelor
de control p
1
si p
2
.
3. Se denesc funct iile f
1
, f
2
: Z
2
Z
4
2
prin
f
1
(x, y) = (x, x, y, y)
f
2
(x, y) = (x y, x y, x y, x y)
unde este operatorul boolean obisnuit. Evident, coloanele codului C sunt
codicate folosind f
1
.
4. Se construieste cuvantul - cod u folosind ultimele k 2n
1
+ 2 caractere de
informat ie x = a
2n
1
1
a
2n
1
. . . a
k
astfel:
1. Daca x = 0 . . . 00, atunci u = f
1
(a
1
, a
2
)f
1
(a
3
, a
4
) . . . f(p
1
, p
2
);
2. Daca x = 0 . . . 01, atunci u = f
1
(a
1
, a
2
)f
1
(a
3
, a
4
) . . . f
1
(p
1
, p
2
);
3.

In rest, u = g(a
1
, a
2
)g(a
3
, a
4
) . . . g(p
1
, p
2
), unde
(i) g este f
2
sau f
2
; ecare din ele apare de un numar egal de ori (cate
n
1
/2 aparit ii);
(ii) Daca se noteaza f
2
cu 0 si f
2
cu 1, lui u i se asociaza o secvent a de
n
1
caractere binare, cu proprietatea ca pentru primele 2n
1
2 caractere
de informat ie xate, aplicat ia x este izotona fat a de relat ia de ordine
lexicograca.
5. Cuvantul - cod nal se obt ine prin scrierea pe ecare linie a unei valori
f
i
(x, y) din u. El apart ine astfel unui cod GAC A de dimensiuni n
1
4.
Sunt multe modalitat i de transformare a unui cod - bloc binar ntr-un cod bal-
ansat; de exemplu dublarea ecarui cuvant - cod a cu o secvent a identic a (aa) sau
19.2. CODURI BALANSATE 221
cu caractere complementate (aa) conduc la coduri balansate. Construct ia unui cod
balansat realizata prin Algoritmul B asigura posibilitatea construct iei unei ret ele de
decodicare n maniera celei din Prelegerea 18.

In construct ia data de Algoritmul B mai trebuie rezolvat a problema alegerii lui


n
1
. Aceasta se realizeaza folosind urmatoarea teorema:
Teorema 19.1 Fiind dat k, n
1
este de forma n
1
= 2s unde s este cel mai mic
numar pozitiv care verica inegalitatea
2
k+24s
2 + C
s
2s
. (1)
Demonstrat ie: Condit ia ca n
1
sa e par rezulta din cerint a ca n u jumatate din cele
n
1
funct ii g sa e f
2
si jumatate sa e f
2
. Fie deci n
1
= 2s.
Din condit ia 2n
1
2 k rezulta k + 2 4p 0.
Deoarece x este format din k + 2 4s caractere binare, sunt 2
k+24s
secvent e
x posibile. Din acestea, 2
k+24s
2 sunt construite folosind numai funct ia f
2
, deci
trebuie sa existe pentru ele cel put in tot atatea secvent e . Deoarece num arul
secvent elor binare este C
s
2s
, rezulta inegalitatea din enunt .
Condit ia de minim asigura unicitatea codicarii. 2
De remarcat ca prin aceasta metoda, operat ia de balansare nu pastreaza propri-
etatea de cod liniar sau ciclic.
Exemplul 19.4 Sa construim un cod GAC balansat care sa codice k = 3 simboluri
de informat ie. Folosind inegalitatea (1), se obt ine s = 1, deci n
1
= 2, n = 8.
Codul cadru, care deneste simbolurile de control, este un (8, 2) cod bloc avand
cuvintele - cod de forma (reamintim, reprezentarea desfasurata se face pe coloane):
c =
a
1
p
1
a
1
p
1
a
2
p
2
a
2
p
2
= a
1
a
1
a
2
a
2
p
1
p
1
p
2
p
2
unde p
1
= a
1
, p
2
= a
2
. Operat ia de codicare este reprezentata de tabloul:
000 01010101 001 01011010
010 01100110 011 01101001
100 10011001 101 10010110
110 10101010 111 10100101
Exemplul 19.5 Pentru k = 4 simboluri de informat ie se obt ine de asemenea s = 1
si acelasi (8, 2) - cod cadru, cu doua simboluri de control. Cele doua caractere de
informat ie ramase, a
3
a
4
asigura codicarea n felul urmator:
= 00 = u = f(a
1
, a
2
)f(p
1
, p
2
)
= 10 = u = f(a
1
, a
2
)f(p
1
, p
2
)
= 01 = u = f
2
(a
1
, a
2
)f
2
(p
1
, p
2
)
= 11 = u = f
2
(a
1
, a
2
)f
2
(p
1
, p
2
)
Se obt ine n acest fel un (8, 4) - cod balansat. Din studiul celor 16 cuvinte - cod
rezulta ca el are d = 2.
222 PRELEGEREA 19. ALTE REPREZENT

ARI DE CODURI - BLOC


Exemplul 19.6 Urmatorul cod balansat a fost studiat de Blaum ([2]), odata cu
introducerea metodei de balansare prezentata mai sus. Din k = 9, singura valoare
posibila este s = 2, deci n
1
= 4, n = 16. Cuvintele - cod cadru au forma
c =
a
1
a
3
a
5
p
1
a
1
a
3
a
5
p
1
a
2
a
4
a
6
p
2
a
2
a
4
a
6
p
2
unde p
1
= a
1
+ a
3
+ a
5
, p
2
= a
2
+ a
4
+ a
6
.
Procedura de codicare este data de tabelul urmator:
a
7
a
8
a
9
u
1
u
2
u
3
u
4
u
5
u
6
u
7
u
8
u
9
u
10
u
11
u
12
u
13
u
14
u
15
u
16
000 f
1
(a
1
, a
2
) f
1
(a
3
, a
4
) f
1
(a
5
, a
6
) f
1
(p
1
, p
2
)
001 f
1
(a
1
, a
2
) f
1
(a
3
, a
4
) f
1
(a
5
, a
6
) f
1
(p
1
, p
2
)
010 f
2
(a
1
, a
2
) f
2
(a
3
, a
4
) f
2
(a
5
, a
6
) f
2
(p
1
, p
2
)
011 f
2
(a
1
, a
2
) f
2
(a
3
, a
4
) f
2
(a
5
, a
6
) f
2
(p
1
, p
2
)
100 f
2
(a
1
, a
2
) f
2
(a
3
, a
4
) f
2
(a
5
, a
6
) f
2
(p
1
, p
2
)
101 f
2
(a
1
, a
2
) f
2
(a
3
, a
4
) f
2
(a
5
, a
6
) f
2
(p
1
, p
2
)
110 f
2
(a
1
, a
2
) f
2
(a
3
, a
4
) f
2
(a
5
, a
6
) f
2
(p
1
, p
2
)
111 f
2
(a
1
, a
2
) f
2
(a
3
, a
4
) f
2
(a
5
, a
6
) f
2
(p
1
, p
2
)
S-a obt inut astfel un (16, 9) - cod balansat cu d = 4.
Sa codicam mesajul de informat ie a = 001101010. Pentru determinarea bit ilor
de control se construieste cuvantul
c =
0 1 0 1
1 0 1 0
0 1 1 0
1 0 0 1
Deoarece a
7
= 0, a
8
= 1, a
9
= 0, codul va generat folosind a treia linie din
tabelul de sus:
u =
0 1 1 1
0 0 1 0
0 0 0 1
1 0 1 1
= 0001 1000 1101 1011.
Alte exemple de mesaje de informat ie si codic arile lor:
000000000 0101010101010101
111111001 1010101010100101
000000101 1110000100011110
111111011 1000011110000111
Pentru realizarea unei structuri de ret ea a codurilor balansate, dicultatea consta
n faptul ca aceste coduri nu sunt liniare, deci algoritmii utilizat i pana acum nu
funct ioneaz a. Se va utiliza urmatorul algoritm, specic codurilor balansate denite
n aceasta sect iune:
19.2. CODURI BALANSATE 223
1. Pe baza algoritmilor cunoscut i se construieste structura de ret ea R
b
a
codului - bloc cadru C
b
; e k
0
num arul ei de coloane (egal cu numarul
de coloane din reprezentarea n tablou a cuvintelor - codului C
b
).
2. Se copiaza ret eaua R
b
de 2
p
1 ori, unde p = k 2n
1
+ 2 este dat de
pasul 3 al algoritmului B; ecare copie corespunde unei generari posibile
a unui cuvant - cod balansat.
Toate subret elele au o singura rad acina si o singura t int a.
3.

In ecare din cele 2
p
subret ele:
(a) Arcul ((00 . . . 0)
0
, B
1
) de pe nivelul 0 se marcheaz a cu
0
/
0
unde

0
(00 . . . 0, B) = a
2n
1
1
. . . a
k
, iar

0
(00 . . . 0, B) = g
1
(a
1
, a
2
).
(b) Arcul spre t int a are
k
0
(A, 00 . . . 0) = si

k
0
(A, 00 . . . 0) = g(p
1
, p
2
). (notat iile sunt cele din algoritmul B).
4.

In ecare subret ea se deneste valoarea
j
/
j
(1 j < k
0
) a arcu-
lui (A
j
, B
j+1
) astfel:
j
(A, B) este valoarea nemodicata din R
b
, iar

j
(A, B) = g(a
2j+1
, a
2j+2
).
Exemplul 19.7 Sa reluam (8, 3) - codul balansat din Exemplul 19.4. Dupa ce se
construieste ret eaua (8, 2) - codului cadru, deoarece exista doar un bit de informat ie
suplimentar avem p = 1 deci ret eaua se mai copiaza de 2
p
1 = 1 ori.
Sunt doua maniere de abordare:
A. Daca transmiterea se face pe linii, apare o construct ie conforma cu cea a
ret elelor denite pentru codurile GAC. Ret eaua corespunzatoare codului cadru este
prezentat a n (a), iar cea pentru codul balansat, n (b):


`
`
`
`
`
`
`

0/00 /11 0/00 /11


1/11 /00 1/11 /00
1/11 0/00


`

`
`
`
``

`
`
`
``

00/00 /11 0/00 /11


10/11 /00 1/11 /00
01/01 /10 0/01 /10
11/10 /01 1/10 /01
1/11 0/00
1/10 0/01
(a) (b)
B. Daca transmiterea datelor se face pe coloane (specic codurilor balansate),
ret eaua codului cadru este cea prezentata n Figura 19.1, pozit ia (a); din ea se obt ine
ret eaua (b) a codului balansat.
Exemplul 19.8 Sa construim ret eaua de (de)codicare pentru (16, 9) - codul bal-
ansat denit n Exemplul 19.6. Conform procedurii, sunt necesare 8 subret ele, cate
224 PRELEGEREA 19. ALTE REPREZENT

ARI DE CODURI - BLOC


Figura 19.1:

`
00/0101 /0101
01/0110 /0110
10/1001 /1010
11/1010 /1010
(a)





`



000/0101 /0101
010/0110 /0110
100/1001 /1001
110/1010 /1010
001/0101 /1010
011/0110 /1001
101/1001 /0110
111/1010 /0101
(b)
una pentru ecare linie din tabelul de codicare. Deoarece cuvintele - cod sunt citite
pe coloane, ecare subret ea are cate 5 coloane si 4 stari.
Pentru a
7
= a
8
= a
9
= 0 (prima linie din tabel) subret eaua construita plecnd de
la (16, 6) - codul cadru din Exemplul 19.6 are structura:

_

_

_
00
00 00 00
00
01 01 01
10 10 10
11 11 11

`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`

`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`

`
`
`
`
`
`
`

`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`

`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`

`
`
`
`
`
`
`

19.2. CODURI BALANSATE 225


unde marcajul arcelor este dat de tabela:
p
p
/
p
00 01 10 11
0 00 00/0101 01/0110 10/1001 11/1010
1 00 00/0101 01/0110 10/1001 11/1010
01 01/0110 00/0101 11/1010 10/1001
10 10/1001 11/1010 00/0101 01/0110
11 11/1010 10/1001 00/0101 00/0101
2 00 00/0101 01/0110 10/1001 11/1010
01 01/0110 00/0101 11/1010 10/1001
10 10/1001 11/1010 00/0101 01/0110
11 11/1010 10/1001 01/0110 00/0101
3 00 /0101
01 /0110
10 /1001
11 /1010
Pentru a
7
= a
8
= 0, a
9
= 1 (a doua linie din tabel) se construieste aceeasi subret ea,
n care valorile funct iei
3
din marcajul arcelor ultimului nivel se complementeaza.
Prin compunerea acestor doua subret ele se obt ine (16, 7) - codul balansat cu d = 4.
Celelalte 6 subret ele se denesc similar. Ret eaua nala a (16, 9) - codului balansat
cu d = 4 obt inuta din compunerea lor va avea 32 stari si 5 nivele.
226 PRELEGEREA 19. ALTE REPREZENT

ARI DE CODURI - BLOC


19.3 Exercit ii
19.1 Construit i un (3, 2)(3, 2) RLL cod tablou si calculat i parametrii sai (d
0
, k
0
).
19.2 Construit i un (12, 8) - cod GAC cu restrict ii RLL si calculat i pentru el
(d
0
, k
0
).
19.3 Construit i un GAC cod balansat pentru k = 10.
19.4 Aceeasi problema pentru k = 13.
19.5 Denit i un vector de modicare care transforma codul tablou (3, 2)(3, 2) ntr-
un cod RLL. Construit i ret eaua acesui cod.
19.6 Aceeasi problema pentru (12, 8) - codul GAC cu d = 3.
19.7 Construit i un (12, 5) cod balansat cu d = 4. Trasat i ret eaua acestui cod.
Bibliograe
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] M. Blaum - A (16, 9, 6, 5, 4) error correcting dc-free block code, IEEE Transac-
tions on Information Theory, vol. 34, 1988, pp. 38-141;
[3] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[4] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[5] S. Guiasu - Teoria Codurilor, Tipograa Universitat ii Bucuresti, 1976;
[6] D.G. Homan, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[7] B. Honary, G. Markarian - Trellis Decoding of Block Codes, A Parctical Ap-
proach, Kluwer Academic Publ., 1997;
[8] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[9] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[10] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
227
Prelegerea 20
Alte rezultate din teoria codurilor
20.1 Coduri aritmetice
Construct iile oferite de teoria codurilor pot utilizate si n alte domenii decat n
cele clasice, de transmitere si recept ie corecta a mesajelor. O aplicat ie legata de
operat iile aritmetice pe calculator este prezentata de van Lindt n [11].
Denit ia 20.1 Fie r 2 un numar ntreg xat. r - ponderea aritmeticaunui numar
ntreg x este denita prin
w
(r)
(x) =
_
0 daca x = 0
t altfel
unde t = min
_
p

i=1
a
i
r
n(i)
= x, |a
i
| < r, n(i) 0
_
.

In practica se folosesc des cazurile r = 2, 8, 10, 16.


Exemplul 20.1
w
(10)
(5) = 1,
w
(10)
(199) = 2 (deoarece 199 = 200 1 = 2 10
2
1 10
0
),
w
(2)
(9) = 2,
w
(2)
(246) = 3 (deoarece 246 = 256 8 2 = 2
8
2
3
2
1
).
Propozit ia 20.1
1. w
(r)
(x) = w
(r)
(x);
2. w
(r)
(x +y) w
(r)
(x) + w
(r)
(y).
Demonstrat ie: Este lasat a ca exercit iu. 2

In cele ce urmeaza vom considera r ca o valoare xata. Se numeste distant a


aritmetica valoarea
d(x, y) = w
(r)
(x y).
Propozit ia 20.2
1. d este o distant a;
2. d este invarianta la translatare.
3. d(x, y) d
H
(x, y) unde d
H
este distant a Hamming a doua secvent e numerice
reprezentate n baza r.
227
228 PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR
Demonstrat ie: (1) Faptul ca d este o distant a se verica imediat din Denit ia 20.1
si Propozit ia 20.1.
(2) Deoarece d(x +z, y +z) = w
(r)
(x +z y z) = w
(r)
(x y) = d(x, y) rezulta
ca distant a aritmetica este invariant a la translatare (proprietate pe care distant a
Hamming nu o are).
(3) Este lasat ca exercit iu. Precizam ca cele doua numere reprezentate n baza
r pot aduse la un num ar egal de cifre completand eventual num arul mai scurt cu
0-uri (nesemnicative) n fat a. 2
Denit ia 20.2 Fie a, b numere ntregi pozitive. Se numeste AN - cod mult imea
nita C
a,b
= {a n|0 n < b}.
Ideea folosirii AN - codurilor n aritmetica calculatorului este urmatoa-rea: sa pre-
supunem ca trebuie calculata suma n
1
+ n
2
(n
1
, n
2
pozitive si mici comparativ cu
b); e S suma lor. Cele doua numere se codica n a n
1
, a n
2
C
a,b
. Daca
S 0 (mod a) atunci suma a fost efectuata corect si ea este S div a. Daca
nu, nseamn a ca au aparut erori de calcul si se ia ca rezultat acel numar n
3
cu
proprietatea ca d(S, an
3
) este minima.
Pentru a corecta orice combinat ie de maxim t erori este necesar ca C sa aiba
distant a minima 2t + 1, deci orice num ar din C are ponderea minim 2t + 1.
Teorema 20.1 Fie a un numar ntreg xat si s = min{w
(r)
(a n)|n = 0}. Atunci
s 2.
Demonstrat ie: Cazurile a = 0 si a = 1 sunt banale. Pentru a < 0 se va lucra cu a.
Deci ram ane de studiat numai cazul a > 1. Vom folosi Teorema lui Fermat:
Daca (a, r) = 1 atunci r
(a)
1 (mod a).
(reamintim, (a) este simbolul Euler).
Deci a | r
(a)
1. Cum w
(r)
(r
(a)
1) = 2, armat ia este demonstrata pentru
cazul cand a si r sunt prime ntre ele.
Sa presupunem acum ca (a, r) = d > 1. Vom avea a = a
1
d, r = r
1
d cu (a
1
, r
1
) =
1. Atunci (notand n = (a
1
)), putem scrie r
n
1 = d
n
r
n
1
1 = d
n
(r
n
1
1) +(d
n
1).
Se stie ca a
1
| r
n
1
1. Daca (a
1
, d) = 1 atunci a
1
| d
n
1, deci a
1
| r
n
1, sau
a | d r
n
d si cum d < r, teorema este demonstrata.
Daca (a
1
, d) > 1, rat ionamentul se reia si el se va termina dupa un numar nit
de pasi (deoarece a
1
< a, d < r). 2
20.1.1 AN - coduri ciclice
Rezultatul ment ionat n Teorema 20.1 conduce la o dicultate de alegere. O ar-
itmetica a calculatorului ecient a recomanda alegerea unei valori mari pentru b.
Pe de-alta parte Teorema 20.1 arata ca n acest caz riscul de a avea r - ponderea
aritmetica minima cel mult 2 (deci de a nu putea corecta nici o eroare) este mare.
Problema se elimina daca vom considera codurile AN modulare. Fie a, b numere
prime si m = a b. Denim C
a,b
ca subgrup al lui Z
m
. Aceasta conduce la o
alta denit ie pentru distant a dintre doua numere. Pentru determinarea ei, sa luam
20.1. CODURI ARITMETICE 229
elementele lui Z
m
ca varfuri ntr-un graf
m
; a, b Z
m
sunt legate printr-un arc
daca si numai daca
c, j (0 < c < r, j 0) a b c r
j
(mod m).
Denit ia 20.3 Distant a modulara d
m
(x, y) dintre doua numere a, b Z
m
este
lungimea drumului minim dintre a si b n graful
m
.
Ponderea modulara a lui a Z
m
este w
m
(a) = d
m
(a, 0).
Propozit ia 20.3 Pentru a Z
m
w
m
(a) = min{w
(r)
(x)| x Z, y x (mod m)}.
Demonstrat ie: Rezulta imediat din Denit ia 20.3. 2
Exemplul 20.2 Sa consideram r = 2, a = 2, b = 3 deci m = 6. Graful
6
va
j
j j j j
j
$
$
$
$
$
$
$
$
l
l
l

$
$
$
$
$
$
$
$
0
1 3 2 4
5
deci tabelul distant elor ntre elementele lui Z
6
este:
d 0 1 2 3 4 5
0 0 1 1 2 1 2
1 1 0 2 1 2 1
2 1 2 0 1 2 2
3 2 1 1 0 2 1
4 1 2 2 2 0 1
5 2 1 2 1 1 0
De remarcat ca alegerea lui m trebuie facuta cu grija. De exemplu, daca se ia
r = 3, m = 35 vom avea d
35
(0, 12) = 1 deoarece 12 = 3
11
(mod 35). Practic ns a,
lucrand cu numere din Z
35
, nu vom putea corecta erori pe pozit ia corespunzatoare
lui 3
11
.
De aceea, aritmetica pe calculator considera doar situat ia m = r
n
1 (n 2)
care elimina astfel de situat ii. Orice num ar ntreg nenul x admite o reprezentare
unica
x
n1

i=0
c
i
r
i
mod (r
n
1),
cu 0 c
i
< r nu tot i nuli.
Deci Z
r
n
1
poate interpretat ca ind mult imea GF(r
n
) \ {0} cuvintelor nenule
de lungime n peste alfabetul {0, 1, . . . , r 1}.
Pentru a b = m = r
n
1 distant a modulara devine distant a obisnuit a n Z
m
si
C
a,b
are un comportament similar unui cod liniar.
Denit ia 20.4 Un AN - cod ciclic de lungime n si baza r este un subgrup multi-
plicativ C Z
r
n
1
.
230 PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR
Evident, un astfel de subgrup este ideal principal n inelul Z
r
n
1
, deci exista a, b Z
astfel nc at a b = r
n
1 si C = C
a,b
, adica:
C = {a k|k Z, 0 k < b}.
Daca x C
a,b
, atunci r x (mod r
n
1) este tot n C
a,b
deoarece acesta este grup
multiplicativ; pe de-alta parte noul num ar este o permutare ciclica a lui x (ambele
ind scrise n baza r). Numarul b poate asimilat polinomului de control al unui
cod ciclic.
Exemplul 20.3 Fie r = 2, n = 11. Atunci m = 2
11
1 = 2047. Sa consideram
a = 23, b = 89. Se obt ine AN - codul ciclic format din 89 multipli ai lui 23 (pana la
2047). Exista 22 modalitat i de a semnala o eroare, ecare din ele corespunzand unui
numar de forma 2
j
(0 j 11). Acestea sunt exact toate numerele din Z
23
\ {0}.
Deci orice numar ntreg din intervalul [0, 2047] are distant a modulara 0 sau 1 de
exact un cuvant - cod. Acest AN - cod ciclic este perfect si poate considerat o
generalizare a codurilor Hamming.

In [11] se face armat ia ca nu exista AN - coduri perfecte corectoare de o eroare


pentru r = 10 sau r = 2
k
, (k > 1).
20.1.2 AN - coduri corectoare de mai multe erori
Pentru a construi AN - coduri capabile sa corecteze erori multiple, va trebui denita
o modalitate mai simpla de determinare a ponderii aritmetice sau modulare a nu-
merelor ntregi.
Conform Denit iei 20.1, orice num ar ntreg x se poate scrie sub forma
x =
w
(r)

i=1
a
i
r
n(i)
cu a
i
, n(i) numere ntregi, |a
i
| < r, n(i) 0 (0 i w
(r)
). Aceasta reprezentare
are defectul ca nu este unica. De exemplu, pentru r = 10, num arul 99 se poate
reprezenta n doua moduri diferite:
99 = 9 10 + 9 10
0
, 99 = 1 10
2
1 10
0
.
Se poate obt ine prin impunerea de restrict ii asupra coecient ilor o reprezenta-
re unica a numerelor ntregi.
Denit ia 20.5 Fie b, c Z , |b| < r, |c| < r. Perechea (b, c) se numeste admisibila
daca este adevarata una din relat iile:
(1) b c = 0;
(2) b c > 0 si |b +c| < r;
(3) b c < 0 si |b| > |c|.
De remarcat ca ambele perechi (b, c), (c, b) sunt admisibile numai n cazurile (1) sau
(2). Cazul (3) nu permite comutativitatea relat iei de admisibilitate.
Exemplul 20.4 Pentru r = 2 este posibil numai cazul (1). Deci o reprezentare
x =

i=0
c
i
2
i
n care toate perechile (c
i+1
, c
i
) sunt admisibile, nu are doi coecient i
consecutivi nenuli.
20.1. CODURI ARITMETICE 231
Denit ia 20.6 O reprezentare x =

i=0
c
i
r
i
cu c
i
Z, |c
i
| < r si n
x
cu c
i
= 0 i >
n
x
se numeste NAF (non-adiacent form) daca pentru orice i 0, perechea (c
i+1
, c
i
)
este admisibila.
Exemplul 20.5 Pentru r = 10 putem scrie:
96 = 4 10
0
+ 0 10
1
+ 1 10
2
(cazul (1)),
11 = 1 10
0
+ 1 10
1
(cazul (2)),
38 = 2 10
0
+ 4 10
1
(cazul (3)).
De remarcat ca reprezentarea lui 96 = 6 10
0
+ 9 10
1
nu este n forma NAF
deoarece perechea (9, 6) nu este admisibila. La fel pentru reprezentarile celorlaltor
numere.
Teorema 20.2 Orice numar ntreg x are o reprezentare NAF unica n baza r.
Daca aceasta este
x =

i=0
c
i
r
i
,
atunci w
(r)
(x) = card ({i|i 0, c
i
= 0}).
Demonstrat ie: Fie

i=0
b
i
r
i
, (|b
i
| < r) o reprezentare a lui x n baza r, si i cel
mai mic num ar cu proprietatea ca perechea (b
i+1
, b
i
) nu este admisibila. Putem
presupune ca b
i
> 0 (altfel se va lucra cu x). Vom nlocui b
i
cu b

i
= b
i
r si b
i+1
cu b

i+1
= b
i+1
+ 1 (daca b
i+1
+ 1 = r, atunci b

i+1
= 0 si facem deplasarea obisnuita
de la adunare).
Daca b
i+1
> 0, atunci avem sau b

i+1
= 0, sau b

i
b

i+1
< 0 si b

i+1
= b
i+1
+ 1 >
r b
i
= |b

i
| (deoarece perechea (b
i+1
, b
i
) nu era admisibila).
Daca b
i+1
< 0, atunci sau b

i+1
= 0, sau b

i
b

i+1
> 0 si |b

i
+b

i+
| = r b
i
b
i+1
< r
deoarece b
i+1
b
i
(perechea (b
i+1
, b
i
) nu era admisibila).
Deci, (b

i+1
, b

i
) este admisibila, si se verica similar daca (b

i
, b
i1
) este admisibila.
Procedeul continua pan a se ajunge la i = 0.
Sa aratam acum ca reprezentarea NAF este unica. Presupunem ca exista x Z
cu doua astfel de reprezent ari:
x =

i=0
c
i
r
i
=

i=0
c

i
r
i
.
Consideram far a a micsora generalitatea ca c
0
= c

0
si c
0
> 0; deci c

0
= c
0
r.
Atunci pentru c

1
sunt posibile trei valori: c
1
+ 1, c
1
+ 1 r. Daca c

1
= c
1
+ 1 r,
atunci c
1
0, deci c
0
+c
1
r 1. Deoarece c

0
c

1
> 0, avem c

0
c

1
< r, de unde
r c
0
+ r c
1
1 < r, deci c
0
+ c
1
> r 1, contradict ie. Celelalte doua cazuri se
trateaza similar. 2
Reprezentarea NAF a unui num ar x se poate aa direct si pe baza teoremei:
Teorema 20.3 Fie x Z, x 0. Consideram reprezentarile n baza r a numerelor
(r + 1) x =

i=0
a
i
r
i
, x =

i=0
b
i
r
i
,
unde a
i
, b
i
{0, 1, . . . , r 1}. Atunci reprezentarea NAF pentru x este
x =

i=0
(a
i+1
b
i+1
) r
i
.
232 PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR
Demonstrat ie: Stim ca pentru doua numere naturale nenule a, r, [a/r] reprezint a
catul mpart irii celor doua numere, iar a [a/r] r - restul.
Din reprezentarea din enunt , rezulta ca ecare coecient a
i
se determina prin
adunarea coecient ilor corespunzatori ai numerelor x si r x, scrise n baza r. Sa
denim secvent a numerica
i
, i 0 astfel:

0
= 0,
i
=
_

i1
+b
i1
+b
i
r
_
.
Atunci, conform observat iei de la nceputul demonstrat iei, a
i
=
i1
+b
i1
+b
i

i
r. Daca notam c
i
:= a
i
b
i
, avem c
i
=
i1
+b
i1

i
r.
Mai ramane de vericat faptul ca (c
i+1
, c
i
) este o pereche admisibila. Relat ia
|c
i+1
+ c
i
| < r rezulta imediat din denit ia lui
i
. Sa presupunem c
i
> 0, c
i+1
< 0;
atunci
i
= 0. Vom avea c
i
=
i1
+ b
i1
, c
i+1
= b
i
r si condit ia |c
i+1
| > |c
i
| este
echivalenta cu
i1
+b
i1
+b
i
< r, adica
i
= 0. Celalalt caz se arata analog. 2
Exemplul 20.6 Pentru a gasi reprezentarea NAF a numarului 98 n baza r = 10,
avem
98 = 8 10
0
+ 9 10
1
+ 0 10
2
+ 0 10
3
+. . .
980 + 98 = 1078 = 8 10
0
+ 7 10
1
+ 0 10
2
+ 1 10
3
Deci, 98 = (7 9) 10
0
+ (0 0) 10
1
+ (1 0) 10
2
= 2 + 1 10
2
.
Similar situat iei din paragraful anterior, sa consideram acum cazul reprezent arii
modulare. Vom lua deci m = r
n
1, (n 2).
Denit ia 20.7 O reprezentare
x
n1

i=0
c
i
r
i
(mod m)
cu c
i
Z, |c
i
| < r se numeste CNAF (cyclic NAF) pentru x daca i (0 i
n 1), (c
i+1
, c
i
) este admisibila (se considera c
n
= c
0
).
Din Teoremele 20.2 si 20.3 rezulta un rezultat similar pentru reprezenta- rile CNAF:
Teorema 20.4 Orice numar ntreg x admite o reprezentare CNAF modulo m.
Aceasta reprezentare este unica, exceptand cazul
(r + 1) x 0 x (mod m),
cand sunt posibile doua reprezentari.
Daca x
n1

i=0
c
i
r
i
(mod m), atunci
w
m
(x) = card({i|0 i < n, c
i
= 0}).
Demonstrat ie: Construct ia este identic a cu cea din demonstrat ia Teoremei 20.3.
Unicitatea se arata similar cu cea din demonstrat ia Teoremei 20.2. Singura except ie
este cazul b
i+1
b
i
(mod m).

In acest caz sunt posibile doua reprezentari:
x b
0
+b
1
r +. . . b
n1
r
n1
si x b
1
b
2
r . . . b
0
r
n1
,
ambele modulo m. 2
20.2. TURBO - CODURI 233
20.1.3 Coduri Mandelbaum - Barrows
O clasa de AN coduri a fost denita de Mandelbaum si Barrows, generalizata ulterior
de van Lindt ([11]).
Init ial este necesar un rezultat referitor la ponderea modulara n AN coduri
ciclice, a carui demonstrare se aa n [11], pag. 127 128:
Teorema 20.5 Fie C Z/(r
n
1) un AN cod ciclic cu generator a si b = (r
n

1)/a = card(C), cu proprietatea ca x C are o reprezentare CNAF unica. Atunci

xC
w
m
(x) = n
__
r b
r + 1
_

_
b
r + 1
__
.
Teorema 20.6 Fie b un numar prim care nu divide r, cu proprietatea ca grupul
multiplicativ Z
b
este generat de r si 1. Fie n un numar ntreg pozitiv astfel ca
r
n
1 (mod b) si a = (r
n
1)/b. Atunci codul C Z/(r
n
1) generat de a este
un cod echidistant cu distant a
n
b 1
__
r b
r + 1
_

_
b
r + 1
__
.
Demonstrat ie: Fie x C\{0}. Atunci x = a n (mod r
n
1) cu n = 0 (mod b). Din
ipoteza rezulta ca exista j ntreg cu n r
j
(mod b). Deci w
m
(x) = w
m
(r
j
a) =
w
m
(a). Aceasta arata ca C este echidistant. Valoarea distant ei rezulta din Teorema
20.5. 2
20.2 Turbo - coduri

In ultimii ani, viteza tot mai mare de transmisie a datelor - aproape de capacitatea
maxima a canalelor de comunicat ie a condus la modalitati noi de codicare. Turbo
codurile sunt prezentate prima data n 1993 de Berrou, Glavier si Thitimajshima
si combin a sub forma de ret ea (minim) doua coduri convolut ionale. Modalitatea
de decodicare este total deosebita de algoritmii cunoscut i pana acum (se folosesc
capacitat ile statistice de performant a ale canalelor de transmisie). Ele asigura o
rata de corectare a erorilor mult mai ridicata decat la codurile clasice; de aceea
turbo - codurile asigura transmisiile de pe stat iile lansate dupa anul 1993, precum
si canalele de satelit.
20.2.1 Structura unui turbo - cod
Un turbo - cod standard este reprezentat de Figura 20.1:
El foloseste doua (2, 2) - coduri convolut ionale (care far a a micsora generali-
tatea au fost considerate identice), separate printr-un bloc P
N
de permutare de N
caractere (N ind o constant a xata, dependenta de structura canalului de trans-
misie). Mesajul de informat ie este spart n blocuri u Z
q
de lungime N; daca
se ignora mecanismul de relaxare R, rata codicatorului este 1/3 (N simboluri de
informat ie se transforma n cuvinte - cod de lungime 3N). Cele 3 iesiri (x
s
, x
1p
, x
2p
)
sunt apoi transmise pe coloana, ca un cod GAC.
234 PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR
Tabelul 20.1: Turbo - codicator standard
P
N
g
1
(X)
g
0
(X)
g
1
(X)
g
0
(X)
R
E s
c
E s E
c E E
E
u = x
s
u

x
1p
x
2p
x
1p
, x
2p
Codicatorul
Pentru codul convolut ional, matricea generatoare poate considerata (ntr-o vari-
ant a simplicata, bazata pe structura de ret ea a mesajelor) G = (g
0
(X) g
1
(X)).
Codicatorul unui turbo - cod va folosi ca matrice generatoare o forma echivalent a
recursiva:
G
T
R
=
_
1
g
1
(X)
g
0
(X)
_
.
Din acest motiv, un codicator convolut ional pentru turbo - coduri este numit Cod-
icator Sistematic Recursiv (RSE).
Un mesaj de informat ie u(X), este codicat de codul convolut ional n u(X)G =
(u(X)g
0
(X) u(X)g
1
((X)). RSE va realiza aceeasi iesire pentru mesajul u

(X) =
u(X)g
0
(X) (se veric a imediat relat ia u(X)g
0
(X)G
R
= u(X)G). Vom numi totusi
cuvant - cod perechea de polinoame u(X)G (desi se mai efectueaza o operat ie de
nmult ire pentru obt inerea mesajului u

(X)).
Se observa ca pentru un RSE, cuvantul cod are pondere nita daca si numai
daca mesajul de intrare se divide cu g
0
(X).
Corolarul 20.1 Un mesaj sursa u

cu w(u

) = 1 se codica ntr-un cuvant - cod


de pondere innita.
Demonstrat ie: Evident, deoarece u

(X) = X
p
nu se divide cu g
0
(X). 2
Corolarul 20.2 Pentru orice polinom netrivial g
0
(X) Z
q
[X] exista o innitate
de mesaje sursa de pondere 2 care se codica n cuvinte - cod de pondere nita.
Demonstrat ie: Pentru g
0
(X) Z
q
[X], g
0
(X) = X
p
, exista un n minim cu propri-
etatea g
0
(X)|X
n
1 (n este lungimea secvent ei pseudo-aleatoare generata de g
0
(X)
- a se vedea Relat ii de recurent a liniara, Prelegerea 8).
Orice secvent a u

de forma u

(X) = aX
i
(X
n
1), a Z
q
\ {0} are pondere 2
si este divizibila cu g
0
(X), deci codicarea prin RSE va genera un polinom cu un
num ar nit de termeni. 2
Exemplul 20.7 Fie g
0
(X) = 1 + X + X
4
, g
1
(X) = 1 + X
2
+ X
3
+ X
4
polinoame
din Z
2
[X].

In mod uzual se foloseste notat ia n octal; deci, cum g
0
= 11001
2
=
31
8
, g
1
= 10111
2
= 27
8
, vom avea (g
0
g
1
) = (31, 27).
20.2. TURBO - CODURI 235
Matricea generatoare este
G
R
=
_
1
1 +X
2
+X
3
+X
4
1 + X +X
4
_
,
iar un circuit liniar care realizeaza acest RSE are forma:
j
j
E E E E E
T
'
c
E
T
'
c
T
E
c E c '
c
c

%
c E
s s s s s s
+
+
u
k
u
k
p
k
(s-a notat cu u
k
simbolul de informat ie curent, iar cu p
k
simbolul de control core-
spunzator).
Cum g
0
(X) este primitiv, lungimea secvent elor este 2
4
1 = 15. De exemplu,
mesajul sursa u(X) = 1+X
15
se codica n (1+X
15
, 1+X+X
2
+X
3
+X
5
+X
7
+
X
8
+X
11
) = (1000000000000001, 1111010110010000).
u(X) = X
7
(1 + X
15
) va genera acelasi cuvant - cod, cu o ntarziere de sapte tact i.
Permutatorul
P
N
este un bloc de permutare. Cele N caractere care constituie intrarea n primul
codicator RSE sunt rearanjate nainte de a intra n al doilea codicator. Din
considerente practice este preferabil ca permutarea folosita sa nu pastreze nici o
ordine anterioar a a simbolurilor (desi acest lucru este uneori dicil, mai ales pentru
cuvinte de pondere mica). De asemenea, N trebuie sa e sucient de mare (n
practica se foloseste N 1000). Aceste doua cerint e uzuale n criptograe sunt
necesare n obt inerea de performant e ridicate la decodicare.
Mecanismul de relaxare
Daca pentru transmiterea de imagini din spat iu sunt folosite coduri cu rate mici
de informat ie (ecarui bit i corespund cel put in 3 caractere cod), n alte situat ii
(comunic ari prin satelit de exemplu) sunt preferabile rate mari (cel put in 1/2).
Rolul mecanismului de relaxare (vezi Capitolul 2) este de a reduce periodic anumite
caractere pentru a scurta lungimea cuvintelor - cod. De obicei se elimina bit i de
control; astfel, pentru a obt ine o rata de informat ie 1/2 se pot elimina tot i bit ii de
control pari de la nceputul codului si tot i bit ii de control impari de la sfarsit.
20.2.2 Decodicarea turbo - codurilor
Din construct ie rezulta ca un turbo codicator este liniar, deoarece toate compo-
nentele sale sunt liniare. Codicarile RSE sunt implementate prin circuite liniare,
permutatorul este liniar deoarece poate modelat printr-o matrice de permutare.
La fel, mecanismul de relaxare nu afecteaza liniaritatea, deoarece din toate cuvintele
- cod se sterg simbolurile de pe aceleasi pozit ii. Important a liniaritat ii consta n fap-
tul ca se poate lua ca referint a cuvantul - cod nul. De asemenea, toate construct iile
236 PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR
le facem pentru cazul binar, cu simbolurile 1. Decodicatorul va lucra dupa prin-
cipiul obisnuit al decodicarii cele mai probabile.
Din pacate, utilizarea algoritmului Viterbi nu este posibila din cauza operat iei
de permutare folosita n decodicare. Totusi, pentru subsecven-t e stricte, un astfel
de algoritm poate da rezultate.
Primul algoritm de decodicare pentru turbo - coduri a fost propus de Berrou
n 1993 ([12]), bazat pe ideile din [2]. Numit BCJR, el foloseste o decodicare
caracter-cu-caracter (spre deosebire de Viterbi care decodica pe secvent e bloc de
cate n caractere).
Vom folosi urmatoarele notat ii:
E
i
- notarea codicatorului RSE i (1 i 2);
D
i
- notarea decodicatorului i (1 i 2);
m - capacitatea de memorie (buer) a codicatorului;
S - mult imea celor 2
m
stari ale codicatorului;
x
s
= x
s
1
x
s
2
. . . x
s
N
= u
1
u
2
. . . u
N
secvent a de informat ie care se codica;
x
p
= x
p
1
x
p
2
. . . x
p
N
cuvantul de control generat de codicator;
y
k
= y
s
k
y
p
k
o recept ie (posibil perturbata) a lui x
s
k
x
p
k
;
y
b
a
= y
a
y
a+1
. . . y
b
;
y
N
1
= y
1
y
2
. . . y
N
cuvantul recept ionat.
Algoritmul BCJR (init ial si modicat)
O prima versiune a algoritmului se bazeaza pe decodicarea cea mai probabila apos-
teriori (MAP - maximul aposteriori). Se realizeaza decodicarea
u
k
=
_
+1 daca P(u
k
= +1|y) > P(u
k
= 1|y)
1 altfel.
Formal, u
k
= sign[L(u
k
)], unde L(u
k
) este logaritmul raportului probabilitat ilor
de potrivire aposteriori, denit prin relat ia
L(u
k
) = log
_
P(u
k
= +1|y)
P(u
k
= 1|y)
_
.
Daca se t ine cont de faptul ca se codica n ret ea, aceasta se scrie:
L(u
k
) = log
_
_
_
_

S
+
p(s
k1
= s

, s
k
= s, y)/p(y)

p(s
k1
= s

, s
k
= s, y)/p(y)
_
_
_
_
(1)
unde
s
k
S este starea codicatorului la momentul k,
S
+
este mult imea perechilor (ordonate) (s

, s) corespunzatoare tuturor starilor


de tranzit ie (s
k1
= s

) (s
k
= s) generate de u
k
= +1,
20.2. TURBO - CODURI 237
S

este denita similar pentru u


k
= 1.
Este posibil sa simplicam cu p(y) n (1); deci este necesara doar o formul a
pentru calculul lui p(s

, s, y).

In [2], este construita o variant a sub forma
p(s

, s, y) =
k1
(s

)
k
(s

, s)
k
(s) (2)
unde:

k
(s

, s) = p(s
k
= s, y
k
|s
k1
= s

);

k
(s) = p(s
k
= s, y
k
1
) este calculat recursiv cu formula

k
(s) =

k1
(s

)
k
(s

, s)
cu condit iile init iale
0
(0) = 1,
0
(s = 0) = 0
(codicatorul pleaca din starea 0).

k
(s) = p(y
N
k+1
|s
k
= s) are formula recursiva de calcul

k1
(s

) =

sS

k
(s)
k
(s

, s)
si condit iile
N
(0) = 1,
N
(s = 0) = 0
(dupa N bit i de intrare codicatorul trebuie sa ajunga la starea 0; restrict ia
se realizeaza alegand corespunzator ultimii m bit i, numit i bit i de ncheiere).
Aplicarea acestei variante de decodicare la turbo - coduri (reamintim, algoritmul
BCJR init ial a fost denit n 1974) are un neajuns: simplicarea cu p(y) conduce la
algoritmi numerici instabili. De aceea, Berrou ([12]) face o modicare a algoritmului,
n felul urmator:
Se denesc probabilitat ile (modicate)

k
(s) =
k
(s)/p(y
k
1
),

k
(s) =
k
(s)/p(y
N
k+1
|y
N
1
).
Prin mpart irea relat iei (2) cu p(y)/p(y
k
) = p(y
k1
1
) p(y
N
k+1
|y
k
1
) se ajunge la
p(s

, s|y) p(y
k
) =
k1
(s

)
k
(s

, s)

k
(s).
Pentru ca p(y
k
1
) =

sS

k
(s), valorile
k
(s) se pot determina din
k
(s) pe baza
formulei

k
(s) =

k
(s)

sS

k
(s)
,
sau folosind denit ia recursiva a lui
k
(s):

k
(s) =

k1
(s

)
k
(s

, s)

sS

k1
(s

)
k
(s

, s)
=

S

k1
(s

)
k
(s

, s)

sS

S

k1
(s

)
k
(s

, s)
ultimul rezultat ind obt inut prin mp art irea numar atorului si numitorului cu
p(y
k1
1
).
Denirea recursiva a lui

k
(s) se obt ine plecand de la
p(y
N
k
|y
k1
1
) = p(y
k
1
)
p(y
N
k+1
|y
k
1
)
p(y
k1
1
=

sS

k1
(s

)
k
(s

, s)
p(y
N
k+1
|y
k
1
)
p(y
k1
1
)
=

sS

S

k1
(s

k
(s

, s) p(y
N
k+1
|y
k
1
)
si folosind denit ia recursiva a lui
k1
(s), se ajunge la relat ia
238 PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR

k1
(s

) =

sS

k
(s)
k
(s

, s)

sS

S

k1
(s

)
k
(s

, s)
.

In nal, algoritmul BCJR modicat va folosi valoarea L(u


k
) data de relat ia
L(u
k
) = log
_
_
_
_

S
+

k1
(s

)
k
(s

, s)

k
(s)


k1
(s

)
k
(s

, s)

k
(s)
_
_
_
_
. (3)
Condit iile la limita pentru
k
(s) si

k
(s) sunt cele de la
k
(s) respectiv
k
(s).
O alta versiune a algoritmului foloseste informat ia apriori. Pentru acesta avem
L(u
k
) = log
_
P(y|u
k
= +1)
P(y|u
k
= 1)
_
+log
_
P(u
k
= +1)
P(u
k
= 1)
_
.
Deoarece n mod normal P(u
k
= +1) = P(u
k
= 1), al doilea termen al sumei
este zero n decodicatoarele uzuale. Pentru un turbo - decodor care lucreaza re-
cursiv, D
1
primeste informat ie suplimentar a de la D
2
, care serveste ca informat ie
apriori. Similar, D
2
primeste de la D
1
informat ie suplimentar a, s.a.m.d. Ideea
consta n faptul ca D
2
poate da lui D
1
informat ii despre u
k
la care acesta nu are
acces (de exemplu caracterele de control generate de E
2
); acelasi lucru l realizeaza
D
1
pentru D
2
.
Un circuit de decodicare bazat pe algoritmul BCJR este:
D
1
P
1
N
P
1
N
P
1
N
D
2
E
E
E E E
T
' '
c
c E
s
E
T
E
E
T
y
1p
y
s
y
2p
L
e
12
L
e
21
S-a notat cu P
1
N
inversa matricii de permutare P
N
din circuitul de codicare. L
e
12
este informat ia suplimentar a transmisa de la D
1
la D
2
, iar L
e
21
este cea transmisa de
la D
2
la D
1
. Deciziile nale de decodicare pot veni atat de la D
1
cat si de la D
2
.
Mai ramane de vazut cum se poate obt ine aceasta informat ie suplimentara care
circula ntre cei doi decodicatori recursivi.
Denit ia lui
k
(s

, s) se poate rescrie

k
(s

, s) = P(s|s

)p(y
k
|s

, s) = P(u
k
) p(y
k
|u
k
)
unde evenimentul u
k
corespunde tranzit iei s

s. Daca se noteaza:
L
e
(u
k
) = log
_
P(u
k
= +1)
P(u
k
= 1)
_
,
P
+
= P(u
k
= +1), P

= P(u
k
= 1), avem
_
_
_
P

/P
+
1 + P

/P
+
_
_

_
P
+
/P

= P
+
daca u
k
= +1,
_
_
_
P

/P
+
1 + P

/P
+
_
_

_
P

/P
+
= P

daca u
k
= 1.

In aceasta situat ie se obt ine


P(u
k
) =
_
exp[L
e
(u
k
)/2]
1 +exp[L
e
(u
k
)]
_
exp[u
k
L
e
(u
k
)/2] = A
k
exp[u
k
L
e
(u
k
)/2], si (ream-
20.2. TURBO - CODURI 239
intim, y
k
= y
s
k
y
p
k
, x
k
= x
s
k
x
p
k
= u
k
x
p
k
)
p(y
k
|u
k
) exp
_

(y
s
k
u
k
)
2
2
2

(y
p
k
x
p
k
)
2
2
2
_
=
= exp
_

(y
s
k
)
2
+u
2
k
+ (y
p
k
)
2
+ (x
p
k
)
2
2
2
_
exp
_
u
k
y
s
k
+x
p
k
y
p
k

2
_
=
= B
k
exp
_
y
s
k
u
k
+y
p
k
x
p
k

2
_
deci

k
(s

, s) A
k
B
k
exp [u
k
L
e
(u
k
)/2] exp
_
u
k
y
s
k
+x
p
k
y
p
k

2
_
(4)
Deoarece
k
(s

, s) apare n (3) la num arator (unde u


k
= +1) si numitor (unde
u
k
= 1), factorul A
k
B
k
se va reduce ind independent de u
k
. De asemenea,
particularitat ile de canal la transmisia lui 1 dau relat ia
2
= N
0
/(2E
c
) unde E
c
este energia de canal per bit. Din (4) se obt ine

k
(s

, s) exp [u
k
(L
e
(u
k
) +L
c
y
s
k
)/2 +L
c
y
p
k
x
p
k
/2] =
= exp [u
k
(L
e
(u
k
) +L
c
y
s
k
)/2]
e
k
(s

, s),
unde L
c
=
4E
c
N
0
si
e
k
(s

, s) = exp [L
c
y
p
k
x
p
k
/2].
Combinand aceasta relat ie cu (3) se ajunge la
L(u
k
) = log
_
_
_
_

S
+

k1
(s

)
e
k
(s

, s)

k
(s) C
k


k1
(s

)
e
k
(s

, s)

k
(s) C
k
_
_
_
_
=
= L
c
y
s
k
+L
e
(u
k
) + log
_
_
_
_

S
+

k1
(s

)
e
k
(s

, s)

k
(s)


k1
(s

)
e
k
(s

, s)

k
(s)
_
_
_
_
(5)
unde s-a notat C
k
= exp [u
k
(L
e
(u
k
) + L
c
y
s
k
)/2].
A doua egalitate rezulta deoarece C
k
(u
k
= +1) si C
k
(u
k
= 1) pot scoase ca
factor. Primul termen al sumei (5) este numit valoare de canal, al doilea reprezinta
informat ia apriori despre u
k
(furnizata de un decodicator anterior), iar al treilea
termen cont ine informat ia suplimentara care se trimite la decodicatorul urmator.
Deci de exemplu la orice iterat ie, D
1
calculeaza
L
1
(u
k
) = L
c
y
s
k
+L
e
21
(u
k
) +L
e
12
(u
k
)
unde L
e
21
(u
k
) este informat ia suplimentar a venit a de la D
2
si L
e
12
(u
k
) este al treilea
termen din (5), folosit ca o informat ie suplimentara trecuta de la D
1
spre D
2
.
Algoritmul BCJR se poate formaliza, n unele ipoteze implicite. Astfel:
- se presupune ca cei doi codicatori lucreaza corect, adica ultimii m bit i din
mesajul de informat ie de lungime N se codica astfel ca la sfarsit E
1
sa ajunga la
starea zero.
- decodicatorii det in toata informat ia referitoare la ret eaua de codicare; ast-
fel, ei au tabele complete cu simbolurile de informat ie si de control pentru toate
tranzit iile de stari s

s, matricile de permutare si inversele lor.


240 PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR
Algoritmul BCJR:
1. (Init ializare):
D
1
:
(1)
0
(s) :=
_
1 pentru s = 0
0 pentru s = 0

(1)
N
(s) :=
_
1 pentru s = 0
0 pentru s = 0
L
e
21
(u
k
) := 0, k = 1, 2, . . . , N
D
2
:
(2)
0
(s) :=
_
1 pentru s = 0
0 pentru s = 0
,

(2)
N
(s) :=
(2)
N
(s), s.
L
e
12
(u
k
) se determina din D
1
dupa prima trecere, deci nu se init ializeaz a.
2. (A n-a iterat ie):
D
1
: pentru k = 1, 2, . . . , N
- Se determina y
k
:= y
s
k
y
1p
k
unde y
1p
k
sunt bit ii de control recept ionat i pentru
E
1
(posibil perturbat i de canal);
- Se determina
k
(s

, s) pentru toate tranzit iile posibile s

s;
- Se determina
(1)
k
(s), s.
pentru k = N, N 1, . . . , 2 se determina

(1)
k1
(s), s;
pentru k = 1, 2, . . . , N se determina L
e
12
(u
k
) cu valorile de probabilitat i
asociate lui D
1
.
D
2
: pentru k = 1, 2, . . . , N
- Se determina y
k
:= y
s
P
N
[k]
y
2p
k
;
- Se determina
k
(s

, s) pentru toate tranzit iile posibile s

s;
- Se determina
(2)
k
(s), s;
pentru k = N, N 1, . . . , 2 se determina

(2)
k1
(s), s;
pentru k = 1, 2, . . . N se determina L
e
21
(u
k
) cu valorile de probabilitati
asociate lui D
2
;
3. (Dupa ultima iterat ie):
Pentru k = 1, 2, . . . , N
- Se determina L
1
(u
k
) := L
c
y
s
k
+L
e
21
(u
P
1
N
[k]
) + L
e
12
(u
k
);
- Daca L
1
(u
k
) > 0 atunci u
k
:= +1 altfel u
k
:= 1;
4. Stop.
20.3 Exercit ii
20.1 Demonstrat i Propozit ia 20.1.
20.2 Demonstrat i Propozit ia 20.2, (3).
20.3 Calculat i w
(2)
, w
(10)
si w
(16)
pentru numerele 100, 32412, 999, 1024.
20.4 Fie x Z. Un cod Booth este o reprezentare x =

i=0
c
i
3
i
unde c
i
{1, 0, 1}.
1. Sa se reprezinte n codul Booth numerele 23, 455, 81, 6493;
2. Sa se arate ca pentru orice numar ntreg, codul Booth este unic.
20.5 Determinat i AN - codurile ciclice din Z
2
3
1
si Z
3
3
1
.
Stabilit i valorile a si b pentru ecare din ele.
20.3. EXERCIT II 241
20.6 Generalizat i Exemplul 20.3. Gasit i un AN - cod ciclic perfect corector de o
eroare pentru r = 3.
20.7 Scriet i n forma NAF pentru r = 2, r = 10 si r = 7 numerele
15, 32075, 5665, 992.
20.8 Completat i demonstrat ia Teoremei 20.2, vericand unicitatea re-prezentarii
NAF n cazurile c

1
= c
1
+ 1 si c

1
= c
1
+ 1 +r.
20.9

In denit ia reprezentarii NAF a numarului ntreg x (cu completarea n
0
=
1), sa se arate ca
n
x
k |x| <
r
k+2
r + 1
.
20.10 Consideram reprezentarea ternara modulo 3
6
1. Sa se determine forma
CNAF pentru numarul 455.
20.11 Determinat i cuvintele - cod din codul Mandelbaum - Barrows cu b = 11, r =
3, n = 5.
20.12 Fie g
0
(X) = 1 +X +X
3
, g
1
(X) = 1 +X
2
+X
4
+X
5
din Z
2
[X]. Construit i
circuitul liniar pentru codicatorul RSE.
Codicat i mesajele de informat ie 1 +X
2
+X
3
, 1 +X
7
, X +X
4
+X
5
.
20.13 Aceeasi problema pentru polinoamele g
0
(X) = 1 + X
3
+ X
4
, g
1
(X) = X +
X
3
+X
6
.
20.14 Sa se construiasca un turbo-codicator folosind codicatoarele RSE din Ex-
emplul 20.7, N = 3, matricea de comutat ie P
3
=
_
_
_
1 0 0
0 0 1
0 1 0
_
_
_ si fara mecanism de
relaxare.
Sa se codice mesajul de informat ie 100 011 101.
242 PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR
Bibliograe
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] L. Bahl, J. Cocker, F. Jelinek, J. Raviv - Optimal decoding of linear codes for
minimizing symbol error rate, IEEE Trans. Inf. Theory, pp. 284-287, Martie
1974;
[3] M. Blaum - A (16, 9, 6, 5, 4) error correcting dc-free block code, IEEE Transac-
tions on Information Theory, vol. 34, 1988, pp. 38-141;
[4] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[5] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[6] S. Guiasu - Teoria Codurilor, Tipograa Universitat ii Bucuresti, 1976;
[7] D.G. Homan, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[8] B. Honary, G. Markarian - Trellis Decoding of Block Codes, A Parctical Ap-
proach, Kluwer Academic Publ., 1997;
[9] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[10] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[11] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
[12] W.E.Ryan - A Turbo Code Tutorial, IEEE Trans. Comm. pp. 1261-1271, Oct.
1996;
243
Prelegerea 1
Semnaturi electronice
1.1 Considerat ii generale
Vom lua n discut ie n aceasta sect iune not iunea de semnatura electronica (ntr-un mediu de
calcul) precum si diverse modalitat i de utilizare ale ei.
Orice semnatura pe un document autentic a acest document dar si angajeaza n mod nor-
mal responsabilitatea semnatarului. Probleme practice legate de rapiditatea transmiterii unor
documente care sa e certicate ca autentice prin semnatura au condus la necesitatea creerii
de semnaturi electronice.
De exemplu, se stie ca majoritatea operat iunilor si tranzact iilor bancare devin legal valide
numai dupa ce ambele part i au semnat formularele respective. Totusi, daca part ile sunt legate
ntr-o ret ea de calculatoare, ele vor adesea sa faciliteze aceasta operat ie care provoac a un mare
consum de timp; solicita de aceea posibilitatea de a semna documentele folosind terminalele si
ret eaua aata la dispozit ie.
Deci, apare urmatoarea problema:
Cum se poate crea o semnatura ntr-un mediu de calcul ?
Deoarece calculatoarele accepta informat ia numai n forma digitala, orice semnatura pusa
n discut ie trebuie sa aiba aceasta forma. O semnatur a (electronica sau olografa) trebuie sa
satisfaca urmatoarele condit ii:
Unica: o anumita semnatura trebuie sa poata generata numai de o singura persoana;
Neimitabila: nici o alta persoana nu va putea genera semnatura utilizatorului indicat;
altfel spus, utilizatorii ilegali trebuie sa rezolve probleme NP complete daca vor sa
foloseasca o semnatura care nu le apart ine;
Usor de autenticat: orice destinatar legal si orice arbitru (n cazul unor eventuale
dispute) sa poata stabili autenticitatea semnaturii (indiferent dupa ce interval de timp);
Imposibil de negat: nici un utilizator legal sa nu-si poata nega propria semnatur a, sub
armat ia ca nu este autentica;
Usor de generat.
Trebuie facut a totusi distinct ie ntre semnatura olografa si cea digitala.
Iata cateva diferent e notabile ntre cele doua tipuri de semnaturi:
1
2 PRELEGEREA 1. SEMN

ATURI ELECTRONICE
O semnatura scrisa de mana este o conrmare zica a unui document, cu ajutorul unei foi
de hartie care cont ine doua elemente: un mesaj (textul docu-mentului) si o semnatur a.
O astfel de legatura ntre mesaje si semnaturi nu este posibila ntr-un mediu de calcul;
O semnatura olografa este aceeasi indiferent de document. Pentru semnaturile digitale
ns a, este esent ial ca ele sa depinda atat de semnatar cat si de cont inu-tul documentului;
Orice copie a unui document electronic (inclusiv semnatura) este identic a cu originalul.

In schimb copia unui document pe hartie este diferita ca valoare de original. Aceasta
conduce la ideea ca un document electronic nu este reutili-zabil. De exemplu, daca Bob
trimite lui Alice un cec n valoare de 10 milioane lei, banca nu va accepta onorarea sa
decat o singura data.
1.2 Protocoale de semnatura
Orice protocol de semnatura este format dintr-un algoritm de semnatura si un algoritm de
vericare. Bob semneaza un mesaj x bazat pe un algoritm (secret) de semnatura sig. Rezultatul
sig(x) este apoi vericat de un algoritm public de vericare ver. Pentru orice pereche (x, y),
algoritmul de vericare ofera un raspuns dicotomic (adevarat sau fals), dupa cum y este o
semnatur a autentica a lui x sau nu. Formal ([8]):
Denit ia 1.1 Un protocol de semnatura este un cvintuplu (P, A, K, S, V) unde:
1. P, A, K sunt mult imi nite, nevide, ale caror elemente se numesc mesaje, semnaturi
si respectiv chei;
2. Exista o aplicat ie biunivoca ntre Ksi SV; anume, pentru ecare K K exista o pereche
unica (sig
K
, ver
K
) unde sig
K
: P A, ver
K
: P A {T, F} au proprietatea:
x P, y A, ver
K
(x, y) = T y = sig
K
(x)
Pentru ecare K K, funct iile sig
K
si ver
K
trebuie sa e calculabile n timp polinomial;
ver
K
este publica iar sig
K
este secreta. Pentru Oscar, imitarea unei semnaturi a lui Bob pentru
un mesaj x trebuie sa e imposibila (din punct de vedere al complexitat ii calculului). Altfel
spus, pentru un x dat, numai Bob este capabil sa calculeze o semnatura y astfel ca ver(x, y) = T.
Binent eles, nici un protocol de semnatur a nu este absolut sigur, deoarece Oscar poate
ncerca folosind funct ia publica de vericare ver toate semnaturile y posibile ale unui mesaj
x, pana va gasi semnatura corecta.
Deci, daca ar dispune de sucient timp, Oscar poate totdeauna sa contrafaca semnatura
lui Bob.
Exemplul 1.1 Un prim exemplu de semnatura este folosirea n acest scop a sistemului de
criptare RSA. Se denesc
P = A = Z
n
, K = {(n, p, q, a, b) | n = pq, p, q prime, ab 1 (mod (n))}.
n si b sunt publice, p, q, a sunt secrete.
Pentru K = (n, p, q, a, b) se denesc:
sig
K
(x) = x
a
(mod n)
ver
K
(x, y) = T x y
b
(mod n)
1.3. SEMN

ATURA EL GAMAL 3
Aici Bob semneaza un mesaj folosind cheia sa de decriptare din sistemul de criptare RSA; el
este singurul capabil sa genereze o semnatura corecta deoarece d
K
= sig
K
este secreta. Funct ia
de vericare utilizeaza funct ia de criptare e
K
care este publica, deci oricine o poate verica.
De remarcat ca oricine poate genera o semnatura a lui Bob pentru un mesaj aleator x; Oscar
poate alege un y si calculeaza x = e
k
(y); atunci y = sig
K
(x).
Acest lucru poate prevenit folosind mesaje x cu sucient de mult a redondant a (cu anumita
semnicat ie). O alta modalitate de a evita acest atac este folosirea unor funct ii de dispersie
(hash); vom studia aceasta maniera n prelegerea urmatoare.
Sa vedem cum pot combinate procedeele de semnatura si criptare. Presupunem ca Alice
doreste sa trimita lui Bob un mesaj criptat si semnat. Pentru un text clar x dat, Alice determina
semnatura y = sig
Alice
(x), dupa care cifreaza x si y folosind cheia publica a lui Bob : z =
e
Bob
((x, y)).
Textul criptat z este transmis lui Bob. Acesta foloseste cheia sa secreta d
Bob
si obt ine (x, y).
Dupa aceasta, verica semnatura lui Alice cu ajutorul cheii publice ver
Alice
(x, y).
Ce se nt ampla daca Alice cripteaza nainte de a semna ? Ea va calcula z = e
Bob
(x), y =
sig
Alice
(e
Bob
(x)) si va trimite lui Bob mesajul (z, y). Acesta decripteaza z, obt ine x si verica
y ca semnatur a a lui z.
Pericolul consta n faptul ca Oscar poate intercepta (z, y), nlocuieste y cu propria sa
semnatur a y

si transmite lui Bob mesajul (z, y

).
Din acest motiv se recomanda folosirea semnaturii nainte de criptare.
1.3 Semnatura El Gamal
Fie p un num ar prim (pentru care problema logaritmilor discret i n Z
p
este dicila) si
Z

p
= Z
p
\ {0} un element primitiv. Se ia:
P = Z

p
, A = Z

p
Z
p1
, K = {(p, , a, ) | =
a
(mod p)}.
Valorile p, , sunt publice iar a este secret.
Pentru K = (p, , a, ), k Z
p1
(secret) se deneste:
sig
K
(x, k) = (, ) unde
=
k
(mod p), = (x a)k
1
(mod p 1).
Pentru x, Z

p
, Z
p1
se deneste
ver
K
(x, , ) = T


x
(mod p)
Daca semnatura este corecta, vericarea autentic a semnatura, deoarece:

k
(mod p)
x
(mod p)
(s-a folosit egalitatea a + k x (mod p 1)).
Protocolul de semnatur a El Gamal a fost denit n 1985 ([4]). Ca o particularitate, el nu este
determinist: pentru un mesaj dat pot exista mai multe semnaturi valide. Funct ia de vericare
va trebui deci sa accepte ca autentice toate aceste semnaturi.
4 PRELEGEREA 1. SEMN

ATURI ELECTRONICE
Protocolul de semnatur a ElGamal este descris pe pagina anterioar a.
Bob calculeaza semnatura folosind cheia sa secreta a si o valoare aleatoare secreta k (generata
numai pentru semnarea mesajului x). Vericarea se realizeaza cu ajutorul cheii publice.
Exemplul 1.2 : Sa luam p = 467, = 2, a = 127. Avem
=
a
(mod p) = 2
127
(mod 467) = 132.
Daca Bob doreste sa semneze mesajul x = 100 alegand valoarea k = 213 (de remarcat ca
(213, 466) = 1 si 213
1
(mod 466) = 431), va obt ine
= 2
213
(mod 467) = 29 si = (100 127 29) 431 (mod 466) = 51.
Pentru a verica semnatura, calculam
132
29
29
51
189 (mod 467) si 2
100
189 (mod 467).
Semnatura este deci valida.
Sa studiem securitatea protocolului de semnatura El Gamal.
Vom presupune ca Oscar doreste sa falsice semnatura pe mesajul x fara sa stie a.
Daca Oscar alege valoarea si ncearca sa gaseasca corespunzator, el va trebui sa
calculeze logaritmul discret log

. Daca strategia sa este inversa: sa aleaga nt ai


si sa caute apoi , el va trebui sa rezolve ecuat ia


x
(mod p) de necunoscuta .
Nu se cunoaste nca o metoda pentru rezolvarea unei astfel de probleme.
Daca Oscar alege aleator si pe si cauta sa obt ina x, el va ajunge din nou la problema
logaritmului discret, adica la calculul log

.
Oscar poate totusi sa semneze un mesaj aleator x n felul urmator:
Fie numerele ntregi i, j (0 i p 2, 0 j p 2, (j, p 1) = 1).
Se efectueaza calculele:
=
i

j
(mod p); = j
1
(mod p 1); x = ij
1
(mod p 1)
(deoarece calculele sunt facute modulo p 1, exista j
1
).
(, ) este o semnatura valid a pentru x.

Intr-adevar, se verica

j
(
i

j
)

j
j
1

ij
1

j

ij
1

j

ij
1

x
(toate calculele sunt facute modulo p).
Sa exemplicam acest atac:
Exemplul 1.3 Fie din nou p = 467, = 2, = 132. Sa presupunem ca Oscar alege
i = 99, j = 179 ( deci j
1
= 151 (mod p 1)); Oscar calculeaza:
= 2
99
132
179
= 117 (mod 467)
= 117 151 = 41 (mod 466)
x = 99 41 = 331 (mod 466)
Deci (117, 41) este o semnatura a mesajului 331, ceea ce se poate verica imediat, calculand
132
117
117
41
303 (mod 467) si 2
331
303 (mod 467).
Semnatura este deci valida.
Sa mai arat am o modalitate prin care Oscar poate utiliza un mesaj semnat anterior de Bob.
Sa presupunem ca (, ) este o semnatur a valida a lui x. Oscar poate semna atunci alte tipuri
de mesaje:
Fie h, i, j numere ntregi din intervalul [0, p 2] cu (h j, p 1) = 1.
1.4. VARIANTE ALE PROTOCOLULUI DE SEMN

ATUR

A ELGAMAL 5
Calculam:
l =
h

j
(mod p), y = l(h j)
1
(mod p 1),
x

= l(hx + i)(h j)
1
(mod p 1)
unde (h j)
1
este calculat modulo p 1. Se poate atunci verica direct
l
l
y

(mod p). Deci (l, y) este o semnatura valid a a lui x

.
Aceste doua strategii construiesc semnaturi valide, dar se pare ca nu este posibil ca cineva
sa contrafac a semnatura unui mesaj ales de el, fara sa rezolve o problema de logaritmi discret i.
Din acest motiv se considera ca nu exista slabiciuni n protocolul de semnatura El Gamal.
Sa arat am n nal doua maniere de a sparge acest protocol de semnatur a, atunci cand este
aplicat neglijent.
Daca ntregul aleator k este cunoscut, se determina imediat
a = (x k)
1
mod (p 1)
Din acest moment, Oscar, stiind a, poate calcula semnaturile la fel ca Bob.
Daca se utilizeaza acelasi k pentru mai multe mesaje. Aceasta i permite de asemenea lui
Oscar sa determine a. El va proceda astfel:
Fie (,
i
) semnaturile mesajelor x
i
, i = 1, 2. Avem:

i

x
i
(mod p), i = 1, 2, deci
x
2
x
1

1
(mod p).

Inlocuind =
k
se obt ine ecuat ia de necunoscuta k:

x
2
x
1

k(
2

1
)
(mod p),
care este echivalent a cu x
2
x
1
k(
2

1
) (mod p 1).
Daca se ia d = (
2

1
, p 1), din d | (p 1) si d | (
2

1
) rezulta d | (x
2
x
1
).
Daca notam:
x

=
x
2
x
1
d

=

2

1
d
p

=
p 1
d
ecuat ia devine x

(mod p). Cum (

, p

) = 1, se poate determina = (

)
1
(mod p

).
Valoarea lui k verica deci relat ia k x

(mod p), ceea ce conduce la determinarea a d


candidat i la valoarea lui k, dat i de relat ia k = x

+ ip

(mod p), i = 0, . . . , d 1. Din


aceste d valori posibile, solut ia se determina testand relat ia
k
(mod p)
1.4 Variante ale protocolului de semnatura ElGamal

In general, un mesaj este criptat si decriptat o singura data, ind necesara doar securitatea
sistemului de criptare.

In schimb, un document semnat cum ar un contract are o valoare
juridica, si este posibil ca autenticitatea sa sa e vericata chiar si dupa mai mult i ani. Este deci
important sa existe criterii de securitate mai severe pentru semnatura electronica decat pentru
criptare. Cum sigurant a protocolului de semnatura ElGamal este echivalenta cu complexitatea
problemei logaritmilor discret i, este necesar sa se foloseasca un modul p cat mai mare. Un p
de 1024 bit i conduce ns a la o semnatura ElGamal de 2048 bit i, ceea ce o elimina din multe
aplicat ii (cum ar exemplu smart-cardurile).
6 PRELEGEREA 1. SEMN

ATURI ELECTRONICE
1.4.1 Standard de semnatura electronica
Standardul de semnatur a electronica (DSS de la Digital Signature Standard) este o variant a a
protocolului de semnatur a ElGamal, cu proprietatea ca reduce substant ial lungimea semnaturii.
Protocolul de semnatur a DSS este urmatorul:
Fie p un num ar prim de 512 bit i, q un factor de 160 bit i ai lui p 1 si Z

p
o rad acin a
primitiva de ordin q a unitat ii.
Fie P = Z

p
, A = Z
q
Z
q
si K = {(p, q, , a, ) |
a
(mod p)}.
Valorile p, q, , sunt publice, iar a este secreta.
Pentru K = (p, q, , a, ) si pentru un num ar (secret) k (1 k q 1) se denesc:
sig
K
(x, k) = (, ) unde
= (
k
mod p) mod q = (x + a)k
1
mod q
Pentru x Z

p
, , Z
q
funct ia de vericare este denita
ver
K
(x, , ) = T (
e
1

e
2
mod p) mod q =
unde e
1
= x
1
(mod q) e
2
=
1
(mod q)
Diferent e ntre protocoalele de semnatura El Gamal si DSS:
a. DSS se distinge n primul rand de El Gamal prin faptul ca asigura o semnatur a de 320
bit i pe un mesaj de 160 bit i, lucrandn Z
p
cu p de 512 bit i. Aceasta permite lucrul ntr-un
corp cu circa 2
160
elemente. Ipoteza este aceea ca n aceasta baza, calculul logaritmilor
discret i este foarte dicil.
b.

In denirea lui semnul s-a schimbat n +. Aceasta schimba ecuat ia de vericare n:

mod p.
Daca (x + , p 1) = 1, atunci exista
1
mod (p 1) si aceasta ecuat ie se poate scrie

x
1

1
(mod p).
c. (idee a lui Schnorr). Sa presupunem ca q este un num ar de 160 bit i astfel nc at q | (p1) si
Z

p
este o rad acina primitiva de ordinul q a unitatii modulo p (pentru a gasi un astfel
de num ar, se ia o rad acina primitiva
0
Z
p
si se construieste =
(p1)/q
0
(mod p)).

In
acest fel, si sunt de asemenea rad acini de ordinul q ale unitat ii. Deci exponent ii lui
, , se pot reduce modulo q, fara a modica ecuat ia de vericare de mai sus.
Algoritmul de Schnorr foloseste si o funct ie de dispersie h : {0, 1}

Z
q
(a se vedea
prelegerea urmatoare), pe baza careia deneste componentele semnaturii astfel:
= h(x
k
), = k + (mod q)
Pentru x {0, 1}

si , Z
q
, procedura de vericare este
ver
K
(x, (, )) = T h(x

) =
Relat ia de vericare este adevarata deoarece se obt ine imediat

=
k
(mod p)
Exemplul 1.4 Fie q = 101, p = 78q + 1 = 7879. 3 este radacina primitiva n Z
7879
, deci se
poate lua = 3
78
(mod 7879) = 170.
Daca alegem de exemplu a = 75, obt inem =
a
(mod 7879) = 4567.
1.4. VARIANTE ALE PROTOCOLULUI DE SEMN

ATUR

A ELGAMAL 7
Sa presupunem ca Bob doreste sa semneze mesajul x = 1234 si ia k = 50 (deci
k
1
(mod 101) = 99); el va avea:
= (170
50
mod 7879) mod 101 = 2518 (mod 101) = 94
= (1234 + 75 94) 99 (mod 101) = 97
Semnatura (94, 97) a mesajului 1234 se verica prin calcul:

1
= 97
1
(mod 1010 = 25, e
1
= 1234 25 (mod 1010 = 45, e
2
= 94 25 (mod 101) = 27
(170
45
4567
27
mod 7879) mod 101 = 2518 mod 101 = 94
Semnatura este deci valida.

In varianta Schnorr trebuie calculata valoarea h(12342518) unde h este o funct ie de dis-
persie, iar 1234 si 2518 sunt reprezentate n binar. Pentru a nu intra n detalii, sa presupunem
ca h(12342518) = 96. Atunci
= 50 + 75 96 (mod 101) = 79
si semnatura este (96, 79).
Ea este vericata calculand 170
79
4567
96
(mod 7879) = 2518 si vericand h(12342518) = 96.
O alta varianta a protocolului DSS este protocolul de semnatur a DSA (Digital Signature
Algorithm). Acesta a fost propus n 1991 si adoptat ca standard de semnatur a la 1 decembrie
1994 (dupa publicarea sa n Registrul Federal la 19 mai 1994). Singura modicare fat a de DSS
consta n nlocuirea mesajului x (din calculul lui si al lui e
1
) cu SHA1(x), unde SHA1
este o funct ie de dispersie standard.
Exemplul 1.5 Sa reluam valorile lui p, q, , a, , k din Exemplul 1.4 si sa presupunem ca Alice
vrea sa semneze amprenta SHA 1(x) = 22. Ea va calcula
k
1
(mod 1010 = 50
1
(mod 1010 = 99,
= (170
50
(mod 7879)) (mod 1010 = 2518 (mod 101) = 94 si
= (22 + 75 94) 99 (mod 101) = 97.
Semnatura (94, 97) a amprentei 22 este vericata efectuand calculele;

1
= 97
1
(mod 1010 = 25,
e
1
= 22 25 (mod 101) = 45, e
2
= 94 25 (mod 101) = 27
si vericand ca 170
45
4567
27
(mod 7879) (mod 101) = 2518 (mod 101) = 94.
Cand DSS a fost propus n 1991, a avut mai multe critici. Astfel:
Mult i s-au aratat nemult umit i de impunerea marimii de 512 bit i pentru modul; o marime
variabila care sa e aleasa de beneciari n funct ie de necesitat i ar fost mai convenabila.
Ca raspuns, NIST a schimbat descrierea standardului pentru a permite alegerea ca modul
a oricarui num ar divizibil cu 64 avand ntre 512 si 1024 bit i.

In octombrie 2001 NIST
revine si recomanda alegerea pentru p a unui numar prim de 1024 bit i.
Semnaturile pot mult mai usor generate decat vericate. Pentru comparat ie, n sistemul
RSA un exponent mic de decriptare poate conduce la un protocol de vericare mult mai
rapid decat semnatura. Obiect ia este ridicata din considerente practice, anume:
Un mesaj este semnat o singura data, dar poate vericat de foarte multe ori de-a
lungul timpului.
Pe ce tipuri de calculatoare sunt efectuate aceste protocoale de semnatur a si/sau
vericare ? Cea mai mare parte a aplicat iilor folosesc calculatoare de birou, cu
resurse limitate, care comunica cu sisteme puternice de calcul. Trebuie dezvoltat
deci un protocol care sa oblige calculatorul de birou la cat mai put ine calcule.
8 PRELEGEREA 1. SEMN

ATURI ELECTRONICE
Raspunsul dat de NIST la aceasta obiect ie a fost ca este foarte put in important ce calcul
este mai simplu, av and n vedere sistemele actuale de calcul, tot mai performante.
1.4.2 Protocolul de semnatura ECDSA

In 2000 protocolul ECDSA (Elliptic Curve Digital Signature Algorithm) a fost aprobat sub
numele FIPS 186 2. Si el este o variant a a protocolului ElGamal, construit pentru funct ii
eliptice. Sa prezent am o descriere a sa:
Fie p un numar prim sau o putere a lui 2 si E o curba eliptica peste Z
p
. Fie A un punct
din E de ordin q (num ar prim) astfel ca Problema Logaritmului discret pentru A sa e
dicila. Fie
P= {0, 1}

, A= Z

1
Z

q
, K= {(p, q, E, A, m, B) | B = mA},
unde m Z
q1
. Valorile p, q, E, A, B sunt publice, m este cheia secreta.
Pentru K = (p, q, E, A, m, B) si k Z
q
ales aleator, denim
sig
K
(x, k) = (r, s)
unde
kA = (u, v), r = u (mod q), s = k
1
(SHA
1
(x) + mr) (mod q).
(daca r s = 0 se alege alta valoare aleatoare pentru k).
Pentru x {0, 1}

, r, s Z

q
vericarea este denita prin
w = s
1
(mod q), i = w SHA
1
(x) (mod q),
j = w r (mod q), (u, v) = iA + jB si
ver
K
(x, (r, s)) = T u (mod q) = r
Exemplul 1.6 Sa consideram curba eliptica y
2
= x
3
+ x + 6 denita peste Z
11
. Alegem
parametrii protocolului de semnatura astfel: p = 11, q = 13, A = (2, 7), m = 7 si B = (7, 2).
(a se vedea si exemplul din prelegerea anterioara).
Sa presupunem ca avem un mesaj x cu SHA
1
(x) = 4 si Alice vrea sa-l semneze folosind
valoarea aleatoare k = 3. Ea va calcula
(u, v) = 3 (2, 7) = (8, 3), r = u (mod 13) = 8 si s = 3
1
(4 + 7 8) (mod 13) = 7.
Deci semnatura este (8, 7).
Bob verica aceasta semnatura efectuand urmatoarele calcule:
w = 7
1
(mod 13) = 2, i = 2 4 (mod 13) = 8, j = 2 8 (mod 13) = 3,
(u, v) = 8A + 3B = (8, 3) si u (mod 13) = 8 = r.
Deci semnatura este valida.
1.5. PROTOCOALE DE SEMN

ATUR

A ONE-TIME 9
1.5 Protocoale de semnatura One-time
Ideea acestor protocoale se bazeaza pe faptul ca funct ia care asigura semnatura este folosita
pentru a semna un singur document, dupa care ea este abandonata (cu toate ca poate
vericat a de un numar arbitrar de ori).
Poate cel mai cunoscut astfel de procedeu este Protocolul de semnatura Lamport:
Fie k > 0 un numar ntreg si P = {0, 1}
k
. Daca f : Y Z este o funct ie neinversabil a,
se alege A = Y
k
. Se selecteaza aleator y
i,j
Y, 1 i k, j = 0, 1 si e z
i,j
= f(y
i,j
).
Cheia K este lista celor 2k valori y (secrete) si a celor 2k valori z (publice).
Pentru K = {(y
i,j
, z
i,j
) | 1 i k, j = 0, 1} se deneste:
sig
K
(x
1
, . . . , x
k
) = (y
1,x
1
, . . . , y
k,x
k
)
si
ver
K
(x
1
, . . . , x
k
, a
1
, . . . , a
k
) = T f(a
i
) = z
i,x
i
, 1 i k.
Conform acestui protocol, mesajul care trebuie semnat este un sir binar de lungime k.
Fiecare bit, de valoare j (j = 0, 1) este semnat prin z
i,j
, unde ecare z
i,j
este imaginea printr-o
funct ie neinversabil a a unui y
i,j
.
Vericarea consta n aplicarea lui f si compararea rezultatului cu cheia publica.
Exemplul 1.7 Fie 7879 un numar prim, iar 3 Z
7879
un element primitiv. Se deneste
f(x) = 3
x
mod 7879.
Daca Bob doreste sa semneze un mesaj de trei bit i, el alege (secret) sase numere aleatoare
y
1,0
= 5831 y
2,0
= 803 y
3,0
= 4285
y
1,1
= 735 y
2,1
= 2467 y
3,1
= 6449
Calculeaza apoi imaginea lor prin funct ia f:
z
1,0
= 2009 z
2,0
= 4672 z
3,0
= 268
z
1,1
= 3810 z
2,1
= 4721 z
3,1
= 5731
Aceste numere z sunt publice.
Sa presupunem ca Bob vrea sa semneze mesajul x = (1, 1, 0). Semnatura lui este
(y
1,1
, y
2,1
, y
3,0
) = (735, 2467, 4285)
Pentru a verica semnatura, este sucient sa se constate ca:
3
735
= 3810; 3
2467
= 4721; 3
4285
= 268,
toate calculele ind realizate modulo 7879.
Oscar nu poate imita semnatura, deoarece f nu are invers a.

In plus, protocolul de semnatur a nu poate utilizat decat pentru un singur mesaj: daca
dispune de doua mesaje cu aceeasi semnatura, Oscar poate imita semnatura unui nou mesaj
(diferit de cele doua).
De exemplu, daca mesajele (0, 1, 1) si (1, 0, 1) sunt semnate prin procedeul de sus cu
(y
1,0
, y
2,1
, y
3,1
) respectiv (y
1,1
, y
2,0
, y
3,1
), se pot imediat semna mesaje cum ar (1, 1, 1) sau
(0, 0, 1).
Desi foarte simplu si elegant, acest protocol nu este practic din cauza dimensiunii mari a
semnaturii. Reluand exemplul de mai sus, o implementare sigura necesita un modul p de 512
bit i. Aceasta nseamna ca ecare bit al mesajului are o semnatura de 512 bit i; avem deci o
semnatur a de 512 ori mai lunga decat mesajul !
De aceea a aparut o simplicare, care reduce lungimea semnaturii fara a diminua securitatea
ei. Numit Bos-Chaum, acest protocol este denit astfel:
10 PRELEGEREA 1. SEMN

ATURI ELECTRONICE
Fie k > 0 un num ar ntreg si P = {0, 1}
k
. Daca n este un num ar ntreg cu proprietatea
2
k
C
n
2n
, e B mult imea numerelor ntregi din intervalul [1, 2n] si
: P B
o funct ie injectiva n mult imea B a part ilor lui B de n elemente.
Daca f : Y Z este o funct ie neinversabil a, e A = Y
n
.
Se aleg aleator valorile y
i
Y, 1 i 2n si e z
i
= f(y
i
).
Cheia K este lista celor 2n valori y (secrete) si a celor 2n valori z (publice).
Pentru K = {(y
i
, z
i
) | 1 i 2n}, se denesc
sig
K
(x
1
, . . . , x
k
) = {y
j
| j (x
1
, . . . x
k
)}
si
ver
K
(x
1
, . . . , x
k
, a
1
, . . . , a
n
) = T {f(a
i
) | 1 i n} = {z
j
| j (x
1
, . . . , x
k
)}
Avantajul protocolului Bos-Chaum este acela ca scurteaza semnatura. De exemplu, sa
presupunem ca vrem sa semnam un mesaj de sase bit i (k = 6); cum 2
6
= 64 si C
4
8
= 70,
putem lua n = 4. Aceasta permite semnarea mesajului cu numai patru valori y (n loc de
sase la Lamport). De asemenea, si cheia este mai scurta, cu numai opt valori z fat a de 12 la
semnatura Lamport.
Protocolul de semnatura Bos-Chaum necesita o funct ie injectiva care asociaza ecarei
secvent e de k bit i x = (x
1
, . . . , x
k
) o submult ime de n elemente. Un exemplu de algoritm
simplu care realizeaza o astfel de asociere este:
x
k

i=1
x
i
2
i1
(x)
t 2n
e n
while t > 0 do
t t 1
if x > C
e
t
then
x x C
e
t
e e 1
(x) (x) {t + 1}.
enddo
Daca vrem sa dam o estimare generala a valorii lui n din protocolul Bos-Chaum, plecam de
la inegalitatea 2
k
C
n
2n
n care se evalueaz a C
n
2n
=
(2n)!
(n!)
2
cu formula lui Stirling, obt inandu-se
2
2n
/

n. Dupa simplicari si logaritmare n baza 2 se ajunge la relat ia:


k 2n
log
2
n
2
Asimptotic, n este de ordinul lui k/2, deci protocolul de semnatur a Bos-Chaum reduce
marimea semnaturii lui Lamport cu aproximativ 50%.
1.6 Semnaturi incontestabile
Semnaturile incontestabile au fost introduse de Chaum si van Antwerpen n 1989. Ele prezint a
cateva caracteristici. Astfel:
1.6. SEMN

ATURI INCONTESTABILE 11
Semnatura nu poate validata far a aportul semnatarului Bob. Aceasta l protejeaza pe
Bob de difuzarea far a consimtam ant a unui document pe care se pretinde ca l-ar semnat.
Validarea se face urmand un protocol de ntreb ari si raspunsuri.
Pentru a evita ca Bob sa-si nege propria semnatur a, exista un protocol de dezmint ire pe
care Bob trebuie sa-l urmeze pentru a arata ca o semnatur a este falsa.
Refuzul de a folosi acest protocol este o conrmare a autenticit at ii semnaturii.
Deci, un protocol de semnatura incontestabil a este format dintr-o funct ie de semna-tur a, un
protocol de vericare si o procedura de dezmint ire.
Algoritmul Chaum-van Antwerpen este:
Fie p = 2q + 1 un num ar prim cu proprietatea ca q este prim si Z

p
un element de
ordin q. Pentru 1 a q 1, se deneste
a
mod p.
Fie G subgrupul de ordin q al lui Z
p
generat de .
Se denesc P = A = G, K = {(p, , a, ) |
a
(mod p)}.
Valorile p, , sunt publice iar a este secreta.
Pentru K = (p, , a, ), x G se deneste y = sig
K
(x) = x
a
mod p.
Pentru x, y G, protocolul de vericare se efectueaza astfel:
1. Alice alege aleator numerele e
1
, e
2
Z

q
;
2. Alice calculeaza c = y
e
1

e
2
mod p si-l trimite lui Bob;
3. Bob calculeaza d = c
a
1
mod q
mod p si-l trimite lui Alice;
4. Alice admite autenticitatea lui y daca si numai daca d x
e
1

e
2
mod p.
A. Sa explicam nt ai rolul lui p si q n acest protocol. Calculele sunt efectuate n Z
p
. Este
necesar totusi ca anumite calcule sa e facute ntr-un subgrup al sau de ordin prim (notat cu
G).

In particular este nevoie sa calculam inverse modulo q (ceea ce justica de ce q = card(G)
trebuie sa e prim). Alegand p = 2q + 1 cu q prim, se asigura acest deziderat si - n plus -
dimensiunea lui G este maxima, lucru de dorit deoarece mesajele de semnat sunt elemente din
G.
Sa aratam nt ai cum admite Alice autenticitatea semnaturilor valide.

In calculul de mai
jos, exponent ii sunt redusi modulo q.
d c
a
1
(mod p) y
e
1
a
1

e
2
a
1
(mod p).
Cum
a
(mod p), avem
a
1
(mod p).
De asemenea, din y = x
a
(mod p) rezulta y
a
1
x (mod p).
Se ajunge deci la d x
e
1

e
2
(mod p).
Exemplul 1.8 Fie p = 467. 2 este o radacina primitiva, deci 2
2
= 4 este un generator al lui
G, grupul reziduurilor patratice modulo 467. Vom lua deci = 4.
Sa presupunem a = 101; avem =
a
mod 467 = 449.
Bob semneaza deci mesajul x = 119 cu y = 119
101
mod 467 = 129.
Sa presupunem ca Alice vrea sa autentice semnatura y si ca alege pentru asta e
1
= 38, e
2
=
397. Ea calculeaza c = 13, la care Bob raspunde cu d = 9. Alice verica atunci relat ia
119
38
4
397
9 (mod 467).
Semnatura este acceptata ca autentica.
12 PRELEGEREA 1. SEMN

ATURI ELECTRONICE
B. Sa arat am acum ca Alice nu poate accepta o semnatur a falsa drept autentica decat cu
o probabilitate neglijabila.
Teorema 1.1 Daca y x
a
(mod p) atunci Alice admite pe y ca semnatura autentica a lui x
cu probabilitate 1/q.
Demonstrat ie: Se observa ca orice ntrebare c corespunde la exact q perechi (e
1
, e
2
) posibile
(deoarece y si sunt elemente ale grupului G de ordin q prim si n denit ia lui c, ecare e
1
determina un e
2
unic). Cand Bob primeste c, el nu stie ce pereche (e
1
, e
2
) a fost folosita pentru
a-l construi. Vom arata ca daca y x
a
(mod p), orice raspuns d nu poate consistent decat
cu o singura pereche (e
1
, e
2
).
Deoarece genereaza G, orice element din G se scrie ca o putere (unica modulo q) a lui .
Deci c =
i
, d =
j
, x =
k
, y =
m
cu i, j, k, m Z
q
si operat iile aritmetice efectuate modulo
p. Sa consideram sistemul:
c y
e
1

e
2
(mod p) d x
e
1

e
2
(mod p).
El este echivalent cu
i me
1
+ ae
2
(mod q) j ke
1
+ e
2
(mod q).
Cum prin ipoteza y x
a
(mod p), rezulta m ak (mod q).
Astfel, matricea sistemului modulo q admite un determinant nenul, deci sistemul are solut ie
unica. Altfel spus, pentru orice d G, nu exista raspuns corect la ntrebarea c decat pentru
un singur cuplu (e
1
, e
2
). Deci probabilitatea ca Bob sa raspunda corect lui Alice n condit iile
teoremei este 1/q. 2
C. Sa construim acum procedura de dezmint ire. Ea foloseste de doua ori protocolul de
vericare. Algoritmul este:
1. Alice alege aleator e
1
, e
2
Z

q
;
2. Alice calculeaza c = y
e
1

e
2
(mod p) si-l trimite lui Bob;
3. Bob calculeaza d = c
a
1
mod q
(mod p) si-l trimite lui Alice;
4. Alice verica d x
e
1

e
2
(mod p);
5. Alice alege aleator f
1
, f
2
Z

q
;
6. Alice calculeaza C = y
f
1

f
2
(mod p) si-l trimite lui Bob;
7. Bob calculeaza D = C
a
1
mod q
(mod p) si-l trimite lui Alice;
8. Alice verica D x
f
1

f
2
(mod p);
9. Alice admite ca y este fals daca si numai daca
(d
e
2
)
f
1
(D
f
2
)
e
1
(mod p)
Pasii 1 4 si 5 8 corespund protocolului de vericare. Pasul 9 este validarea consistent ei
raspunsului, care permite lui Alice sa determine daca Bob a calculat bine raspunsurile sale
conform protocolului.
1.6. SEMN

ATURI INCONTESTABILE 13
Exemplul 1.9 Sa luam parametrii din exemplul anterior: p = 467, = 4,
a = 101, = 449. Fie mesajul x = 286 cu semnatura (gresita) y = 83.
Bob doreste sa dezminta aceasta semnatura.
Fie e
1
= 45, e
2
= 237 primele valori alese de Alice. Ea calculeaza c = 305 si Bob raspunde
cu d = 109. Alice calculeaza atunci
286
45
4
237
(mod 467) = 149.
Deoarece 149 = 109, Alice trece la pasul 5 al protocolului. Sa presupunem ca ea alege acum
f
1
= 125, f
2
= 9 si calculeaza C = 270 la care Bob raspunde cu D = 68. Alice calculeaza acum
286
125
4
9
(mod 467) = 25.
Cum 25 = 68, Alice trece la pasul 9 si efectueaza testul de consistenta:
(109 4
237
)
125
188 (mod 467) (68 4
9
)
45
188 (mod 467)
Acum Alice este convinsa ca semnatura nu este valabila.
Pentru nal, mai trebuiesc aratate doua elemente:
Bob poate sa o convinga pe Alice sa invalideze o semnatur a incorecta.
Bob nu poate sa o convinga pe Alice sa invalideze o semnatur a corecta decat cu proba-
bilitate neglijabila.
Teorema 1.2 Daca y x
a
(mod p) si daca Alice si Bob urmeaza corect protocolul de dezmin-
t ire, atunci
(d
e
2
)
f
1
(D
f
2
)
e
1
(mod p).
Demonstrat ie: Utilizand faptul ca d c
a
1
(mod p) si c y
e
1

e
2
(mod p), avem:
(d
e
2
)
f
1
((y
e
1

e
2
)
a
1

e
2
)
f
1
(mod p) y
e
1
f
1

e
2
a
1
f
1

e
2
f
1
(mod p)
y
e
1
f
1

e
2
f
1

e
2
f
1
(mod p) y
e
1
f
1
(mod p).
Un calcul similar folosind D C
a
1
(mod p), C y
f
1

f
2
(mod p) si

a
(mod p) arata ca
(D
f
2
)
e
1
y
e
1
f
1
(mod p)
deci testul de consistenta de la pasul 9 reuseste. 2
Sa studiem acum cazul cand Bob ncearca sa dezmint a o semnatura valid a.

In acest caz
Bob nu va urma protocolul, si va construi d si D far a sa respecte procedura.
Teorema 1.3 Sa presupunem ca y x
a
(mod p) si Alice urmeaza procedura de dezmint ire.
Daca d x
e
1

e
2
(mod p) si D x
f
1

f
2
(mod p) atunci probabilitatea ca (d
e
2
)
f
1

(D
f
2
)
e
1
(mod p) este 1
1
q
.
Demonstrat ie: Sa presupunem ca avem (conform ipotezei):
y x
a
d x
e
1

e
2
D x
f
1

e
2
(d
e
2
)
f
1
(D
f
2
)
e
1
toate calculele ind facute modulo p. Vom arata ca se ajunge la o contradict ie.
Testul de consistent a (pasul 9) se rescrie D d
f
1
0

f
2
(mod p) unde
d
0
= d
1/e
1

e
2
/e
1
(mod p) nu depinde decat de pasii 1 4 ai protocolului. Aplicand Teorema
1.1 se obt ine ca y este o semnatura valida a lui d
0
cu probabilitate 1
1
q
. Dar, prin ipoteza, y
este o semnatura valida a lui x. Deci, cu mare probabilitate vom avea x
a
d
a
0
(mod p) adica
x = d
0
.
Pe de-alta parte, din d x
e
1

e
2
(mod p) rezulta x d
1/e
1

e
2
/e
1
(mod p), adica tocmai
x = d
0
, contradict ie. 2
14 PRELEGEREA 1. SEMN

ATURI ELECTRONICE
1.7 Protocol de semnatura fara esec
O semnatur a fara esec ofera protect ie contra unui adversar atat de puternic nc at poate con-
traface semnaturi. Protocolul de semnatur a prezentat aici este construit de Heyst si Pedersen
n 1992. Este un tip de semnatura one - time, compus dintr-o funct ie de semnatur a, o funct ie
de vericare si un protocol pentru proba de autenticare. Prezentarea sa n detaliu este:
Fie p = 2q + 1 un num ar prim cu q prim, si Z

p
un element de ordin q. Pentru
1 a
0
q 1 se deneste =
a
0
(mod p).
Valorile p, q, , sunt publice si considerate xe.
Valoarea a
0
este secreta pentru toata lumea (inclusiv Bob).
Fie P = Z
q
, A = Z
q
Z
q
. O cheie este de forma K = (
1
,
2
, a
1
, a
2
, b
1
, b
2
) unde
a
1
, a
2
, b
1
, b
2
Z
q
,
1
=
a
1

a
2
(mod p)
2
=
b
1

b
2
(mod p).

1
, g
2
sunt publice, a
1
, a
2
, b
1
, b
2
sunt secrete.
Daca x Z
q
, se deneste
sig
K
(x) = (y
1
, y
2
) unde y
1
= a
1
+ xb
1
(mod q) y
2
= a
2
+ xb
2
(mod q).
Pentru y = (y
1
, y
2
) Z
q
Z
q
, avem
ver
K
(x, y) = T
1

x
2

y
1

y
2
(mod p)
Se poate vedea direct ca o semnatur a corect construita este validata de funct ia de vericare.
Ram ane de studiat problema de securitate si de ce procedeul este far a esec. Sa stabilim ntai
cateva proprietat i importante ale cheilor.
Doua chei (
1
,
2
, a
1
, a
2
, b
1
, b
2
) si (

1
,

2
, a

1
, a

2
, b

1
, b

2
) sunt echivalente daca

1
=

1
,
2
=

2
.

In ecare clasa de echivalent a sunt exact q


2
chei.
Lema 1.1 Daca K, K

sunt chei echivalente, atunci


ver
K
= T ver
K
= T.
Demonstrat ie: Fie K = (
1
,
2
, a
1
, a
2
, b
1
, b
2
) si K

= (
1
,
2
, a

1
, a

2
, b

1
, b

2
) cu

1

a
1

a
2
(mod p)
a

2
(mod p) si
2

b
1

b
2
(mod p)
b

2
(mod p).
Sa presupunem ca mesajul x este semnat cu y = (y
1
, y
2
) folosind cheia K, unde
y
1
a
1
+ xb
1
(mod q) y
2
a
2
+ xb
2
(mod q)
Sa presupunem ca vericarea lui y se face cu cheia K

y
1

y
2

a

1
+xb

2
+xb

2
(mod p)
a

2
(
b

2
)
x
(mod p)
1

x
2
(mod p).
Deci y se veric a si cu cheia K

. 2
Lema 1.2 Fie o cheie K si y = sig
K
(x). Exista exact q chei K

echivalente cu K astfel ncat


y = sig
K
(x).
Demonstrat ie: Fie
1
,
2
componentele publice ale lui K. Trebuie determinat num arul de
quadrupluri (a
1
, a
2
, b
1
, b
2
) astfel nc at

1

a
1

a
2
(mod p)
2

b
1

b
2
(mod p)
y
1
a
1
+ xb
1
(mod q) y
2
= a
2
+ xb
2
(mod q).
Cum genereaza Z

q
, exista exponent ii unici c
1
, c
2
, a
0
Z
q
astfel nc at

1

c
1
(mod p),
2

c
2
(mod p),
a
0
(mod p).

In acest fel, este necesar si sucient sa avem:


c
1
a
1
+ a
0
a
2
(mod q) c
2
b
1
+ a
0
b
2
(mod q)
1.7. PROTOCOL DE SEMN

ATUR

A F

AR

A ESEC 15
y
1
a
1
+ xb
1
(mod q) y
2
a
2
+ xb
2
(mod q).
Matricea acestui sistem de ecuat ii cu necunoscutele a
1
, a
2
, b
1
, b
2
are rangul 3 (determinantul
este

1 a
0
0 0
0 0 1 a
0
1 0 x 0
0 1 0 x

), deci sistemul are cel put in o solut ie netriviala obt inuta cu ajutorul cheii
K si n plus dimensiunea spat iului solut iilor este 4 3 = 1, deci exista exact q solut ii. 2
Lema 1.3 Fie o cheie K, y = sig
K
(x) si ver
K
(x

, y

) = T pentru x

= x. Exista atunci cel


put in o cheie K

echivalenta cu K astfel ca
y = sig
K
(x), y

= sig
K
(x

)
Demonstrat ie: Se face printr-un rat ionament analog cu cel din lema precedent a. 2
Din ultimele doua leme putem trage urmatoarea concluzie: ind data o semnatura valid a y
a unui mesaj x, exista exact q chei posibile care pot semna x. Pentru orice alt mesaj x

= x,
aceste q chei produc semnaturi diferite ale lui x

. Se obt ine astfel teorema urmatoare:


Teorema 1.4 Fiind date sig
K
(x) = y si x

= x, Oscar nu poate calcula sig


K
(x

) decat cu
probabilitate
1
q
.
De remarcat ca rezultatul acestei teoreme nu depinde de puterea de calcul a lui Oscar;
securitatea provine din faptul ca el nu poate distinge care din cele q chei posibile a fost utilizata.
Se poate explica acum not iunea de semnatur a far a esec. S-a aratat ca ind dat un mesaj
x semnat cu y, Oscar nu poate calcula semnatura y

a lui Bob pe un alt mesaj x

. Ar mai
posibilitatea ca Oscar sa poata calcula o semnatur a y = sig
K
(x

) care sa e valid a. Dar, daca


ea ajunge napoi la Bob, acesta poate furniza cu probabilitate 1
1
q
o proba de autenticare;
aceasta este valoarea a
0
= log

, cunoscuta numai de autor.


Sa presupunem ca Bob are o pereche (x

, y) astfel ncat
ver
K
(x

, y) = T si y = sig
K
(x

).
Avem
1

2

y
1

y
2

(mod p) unde y = (y
1
, y
2
).
Bob poate calcula propria sa semnatura pentru x

, pe care o noteaza y

= (y
1

, y
2

) si are

2

y

2
(mod p).
Deci
y
1

y
2

y

2
(mod p). Scriind =
a
0
(mod p) se obt ine:

y
1
+a
0
y
2

y

1
+a
0
y

2
(mod p) de unde y
1
+ a
0
y
2
y

1
+ a
0
y

2
(mod q)
sau y
1
y

1
a
0
(y

2
y
2
) (mod q). Evident y

2
y
2
deoarece y este un fals.
Deci (y

2
y
2
)
1
(mod q) exista si avem:
a
0
= log

= (y
1
y

1
)(y

2
y
2
)
1
(mod q).
Binent eles, n vericarea probei de autenticare s-a presupus ca nici Bob nu poate calcula
logaritmul discret log

.
Ca o remarca nala, acest procedeu este cu utilizare unica, deoarece cheia K a lui Bob poate
usor determinata dupa doua folosiri.
16 PRELEGEREA 1. SEMN

ATURI ELECTRONICE
Exemplul 1.10 Sa presupunem p = 3467 = 2 1733 +1. Numarul = 4 are ordinul 1733 n
Z

3467
. Daca se ia a
0
= 1567 vom avea = 4
1567
(mod 3467) = 514.
Reamintim ca Bob cunoaste si dar nu a
0
.
Sa presupunem ca Bob construieste cheia sa cu a
1
= 888, a
2
= 1024,
b
1
= 786, b
2
= 999 deci

1
= 4
888
514
1024
(mod 3467) = 3405
2
= 4
786
514
999
(mod 3467) = 2281.

In acest moment Bob este pus n prezent a semnaturii false (822, 55) a mesajului 3383.
Aceasta semnatura este valida, deoarece condit ia de vericare este satisfacuta:
3405 2281
3383
2282 (mod 3467) 4
822
514
56
2282 (mod 3467).
Dar Bob stie ca aceasta nu este semnatura sa si trebuie sa dovedeasca acest lucru. El
calculeaza propria sa semnatura:
(888 + 3383 786 (mod 1733), 1024 + 3383 999 (mod 1733)) = (1504, 1291)
dupa care evalueaza logaritmul discret
a
0
= (822 1504)(1291 55)
1
(mod 1733) = 1567
care constituie proba de autenticare, si arata ca semnatura nu i apart ine.
1.8. EXERCIT II 17
1.8 Exercit ii
1.1 Sa presupunem ca Bob utilizeaza semnatura El Gamal si semneaza mesajele x
1
, x
2
obt i-
nand (,
1
) respectiv (,
2
) (cu aceeasi valoare a lui n ambele sem-naturi). Se considera n
plus ca (
1

2
, p 1) = 1.
Ar atat i ca aceste informat ii sunt suciente pentru determinarea lui k;
Ar atat i cum se poate sparge protocolul de semnatura;
Presupunand p = 3187, = 5, = 25703, efectuat i calculul lui k si a plecand de la
semnaturile (23972, 31396) pentru x = 8990 si (23972, 20481) pentru x = 31415.
1.2 Protocolul de semnatura El Gamal este implementat folosind p = 31847,
= 5, = 26379. Sa se scrie un program care:
Verica semnatura (20679, 11082) a mesajului x = 20543.
Calculeaza exponentul secret a prin compromisul spat iu - timp al lui Shanks. Apoi deter-
mina valoarea aleatoare k utilizata n semnatura lui x.
1.3 Bob utilizeaza procedeul de semnatura El Gamal ca n Exemplul 1.1: p = 467, = 2, =
132. Sa presupunem cael semneaza mesajul x = 100 cu (29, 51). Calculat i semnatura falsa pe
care o poate obt ine Oscar cu h = 102, i = 45, j = 293. Autenticat i semnatura rezultata cu
funct ia de vericare.
1.4 Aratat i ca a doua metoda de atac din semnatura El Gamal furnizeaza o semna-tura corecta
care satisface funct ia de vericare.
1.5 Modicam put in protocolul de semnatura El Gamal. Cheia este construita astfel: Bob
alege o radacina primtiva Z

p
, un exponent secret a (0 a p2), (a, p1) = 1 si =
a
.
Cheia este K = (, a, ) unde , sunt publice, iar a este secreta. Fie x Z
p
un mesaj care
trebuie semnat. Bob calculeaz a semnatura sig
K
(x) = (, ) prin:
=
k
(mod p) = (x k)a
1
(mod p 1).
Singura diferenta fata de semnatura El Gamal este calculul lui .
Descriet i cum se poate verica cu cheia publica a lui Bob o semnatura (, ) pe un mesaj
x;
Descriet i avantajul noului procedeu (fata de cel vechi) din punct de vedere al calculelor;
Comparat i pe scurt securitatea celor doua protocoale.
1.6 Bob utilizeaza procedeul DSS cu q = 101, p = 7879, = 170, a = 75, = 4567.
Determinat i semnatura lui Bob pe mesajul x = 5001 utilizand valoarea aleatoare k = 49, si
aratat i cum poate vericata semnatura rezultata.
18 PRELEGEREA 1. SEMN

ATURI ELECTRONICE
1.7

In protocolul de semnatura Lamport, Bob semneaza doua mesaje x, x

, ambele de cate k
bit i. Fie s = d(x, x

) numarul de coordonate n care difera cele doua mesaje. Aratat i ca Oscar


poate semna 2
s
2 mesaje noi.
1.8

In protocolul de semnatura Bos-Chaum cu k = 6, n = 4 sunt semnate mesajele x =
(0, 1, 0, 0, 1, 1), x

= (1, 1, 0, 1, 1, 1). Determinat i noile mesaje pe care le poate semna Oscar,


plecand de la semnaturile lui x si x

.
1.9

In protocolul de semnatura Bos-Chaum, Bob semneaza doua mesaje x, x

. Fie s =
card((x) (x

)). Aratat i ca Oscar poate semna acum C


n
s
2 mesaje noi.
1.10 Bob utilizeaza protocolul de semnatura incontestabila Chaum-van Antwerpen ca n Ex-
emplul 1.7; deci p = 467, = 4, a = 101, = 449. Sa presupunem ca Bob este confruntat
cu semnatura y = 25 a mesajului x = 157 si doreste sa arate ca ea este falsa. Presupunand ca
Alice alege valorile aleatoare e
1
= 46, e
2
= 123, f
1
= 198, f
2
= 11 n protocolul de dezmint ire,
calculat i ntreb arile c, d ale lui Alice si raspunsurile C, D ale lui Bob; vericat i ca Alice
admite dezmint irea.
1.11 Aratat i ca clasele de echivalenta de chei n protocolul de semnatura fara esec Pedersen
- van Heyst cont ine q
2
chei.
1.12 Bob utilizeaza protocolul de semnatura fara esec Pedersen - van Heyst cu p = 3467, =
4, a
0
= 1567, = 514 (valoarea lui a
0
nu este cunsocuta de Bob).
Folosind faptul ca a
0
= 1567, determinat i toate cheile posibile
K = (
1
,
2
, a
1
, a
2
, b
1
, b
2
) astfel ca sig
K
(42) = (1118, 1449).
Presupunem sig
K
(42) = (1118, 1449) si sig
K
(969) = (899, 471). Fara a utiliza valoarea
lui a
0
, determinat i valoarea lui K (cea utilizata n protocolul cu cheie one - time).
1.13 Bob foloseste protocolul de semnatura fara esec Pedersen - van Heyst cu p = 5087, =
25, = 1866. Cheia este K = (5065, 5076, 144, 874, 1873, 2345). Se presupune ca Bob este
confruntat cu semnatura (2219, 458) contrafacuta pe mesajul 4785.
Ar atat i ca ea satisface condit ia de vericare, deci este valida.
Ar atat i cum poate Bob sa calculeze proba de autenticitate plecand de la aceasta semnatura.
Bibliograe
[1] J. N. Bos, D. Chaum - Provably unforgable signatures; Lecture Notes in Computer Science,
740(1993), 1 14
[2] D. Chaum, H. van Antwerpen - Undeniable signatures; Lecture Notes in Computer Science,
435(1990), 212 216
[3] W. Die, M.E. Hellman - Multiuser cryptographic techniques; AFIPS Conference Proceed-
ings, 45(1976), 109 112
[4] T. El Gamal - A public key cryptosystem and a signature scheme based on discrete algo-
rithms; IEEE Trans on Inf. Theory, 31(1985), 469 472
[5] E. van Heyst, T.P.Petersen - How to make ecient fail-stop signatures; Lecture Notes in
Computer Science, 658(1993), 366 377
[6] C. J. Mitchell, F. Piper, P. Wild - Digital signatures; Contemporary Cryptology, The Science
of Information Integrity, IEEE Press, (1992), 325 378
[7] M. E. Smid, D. K. Branstad - Response to comments on the NIST proposed digital signa-
ture standard; Lecture Notes in Computer Science, 740(1993), 76 88
[8] D. Stinton - Cryptographie, Theorie and Practique, Int. Thompson Publishing (1995)
[9] Digital signature standard; national Bureau of Standards, FIPS Publications 186, 1994
19
Prelegerea 3
Generatori de numere pseudo -
aleatoare
3.1 Numere aleatoare si numere pseudo-aleatoare
Aproape toate sistemele de criptare si protocoalele folosite n criptograe au un punct central:
alegerea unor numere arbitrare, necunoscute apriori, imprevizibile; denumirea standard este
numere aleatoare sau numere generate aleator.

In general nu se poate vorbi de un singur
num ar aleator decat ntr-un context statistic. Termenul corect este acela de sir de numere
aleatoare.
Folosirea calculatorului reduce termenul de numere aleatoare la un sir de bit i generat i
aleator, grupat i dupa o anumit a regula. Matematic, nu exista o modalitate mai scurta de
a specica sirul decat secvent a nsasi.
Statistica ofera destul de put ine informat ii despre bit ii generat i aleator. De exemplu, se stie
ca 0 trebuie sa apara la fel de frecvent ca 1, ca 00 trebuie sa apara de doua ori mai rar decat
0 (sau 1) si la fel de des ca 11, 10, 01. Exista si teste statistice (
2
- Kolmogorov) care arata
cat de aleatoare sunt numerele dintr-un sir.

In criptograe este esent ial ca un num ar aleator sa nu paota aat. Un numar perfect
aleator este acela pe care Oscar nu-l poate ghici decat prin fort a bruta. O parte destul de im-
portanta din criptanaliza se bazeaza pe exploatarea imperfect iunilor unor funct ii care genereaza
numere aleatoare.
O generare de numere pur aleatoare se realizeaza prin colectarea si procesarea de date
obt inute dintr-o sursa de entropie exterioara calculatorului. Sursa de entropie poate foarte
simpla, ca de exemplu variat iile misc arii mouse-ului, sau intervalul de timp dintre apasarea a
doua taste. Surse foarte bune de entropie pot cele radioactive sau cele care folosesc zgomote
din atmosfera.
Proprietatea de a aleator a fost introdusa n calculatoare cu ajutorul generatorilor de
numere pseudo-aleatoare.
Denit ia 3.1 Fie m, k (m 1 k > 0) numere ntregi. Un (k, m) generator de numere
pseudo-aleatoare este o aplicat ie recursiva
f : Z
k
2
Z
m
2
calculabila n timp polinomial.
33
34 PRELEGEREA 3. GENERATORI DE NUMERE PSEUDO - ALEATOARE

In aplicat ii, m se obt ine din k printr-o aplicat ie polinomiala.


Un generator de numere pseudo-aleatoare trebuie sa satisfaca anumite cerint e:
Sa e simplu si rapid.
Sa produca siruri de numere de lungime arbitrara care sa nu cont in a repetit ii. Deoarece
un calculator nu poate genera decat numere mai mici decat un numar dat, nu se poate
construi un generator cu perioada innita. Generatorul trebuie sa aiba totusi o perioada
cat mai mare.
Sa produca numere independente unul de altul (sau cu o corelare cat mai vag a).
Sa genereze numere cu o repartit ie uniforma.
Fie S un circuit secvent ial cu m = |S| stari si F = {f | f : S S} mult imea funct iilor de
tranzit ie. Un generator de numere pseudo-aleatoare este denit prin
x
n
= f(x
n1
), x
0
oarecare
Un astfel de generator este cu atat mai ecient cu cat satisface mai bine cerint ele anetrioare.
3.2 Generatori simpli de numere pseudo-aleatoare
3.2.1 Generatori liniari congruent iali
Un astfel de generator (construit de Lehmer n 1949) este denit de formula
x
n+1
= ax
n
+b (mod m)
Valorile a (multiplicatorul), b (incrementul) si m (modulul) sunt constante. Cheia de generare
este valoarea init iala x
0
.
Cand b = 0 generatorul se numeste multiplicativ.
Din denit ie rezulta imediat ca orice generator liniar congruent ial intr a ntr-o ciclare carei
lungime se numeste perioada. Evident ca perioada maxima a generator liniar este m. Ea poate
atinsa pentru anumite valori ale perechii (a, b) (de exemplu daca (b, m) = 1). Un generator
congruent ial liniar de perioada m se numeste generator de perioada maximala. O analiza a
strategiei de select ie a valorilor pentru a asigura o perioada maxima se poate gasi n [3] si [4].
O analiza teoretica detaliata a generatorilor liniari congruent iali se gaseste n [7].

In Tabelul 1 se aa listat i cat iva generatori de perioada maximala. Numerele pseudo-


aleatoare obt inute nu depasesc valoarea de pe ultima coloana.
a b m Marime a b m Marime
105 1283 6075 2
20
1277 24749 117128 2
28
211 1663 7875 2
21
2311 25367 120050 2
29
421 1663 7875 2
22
3877 29573 139968 2
30
430 2531 11979 2
23
8121 28411 134456 2
31
171 11213 53125 2
24
9301 49297 233280 2
32
141 28411 134456 2
25
2416 374441 1771875 2
33
421 17117 81000 2
26
17221 107839 510300 2
34
1093 18257 86436 2
27
84589 45989 217728 2
35
Tabelul 1
3.2. GENERATORI SIMPLI DE NUMERE PSEUDO-ALEATOARE 35
Avantajul generatorilor liniari congruent iali este rapiditatea de calcul.
O generalizare a relat iei de recurent a este
x
n+k
= (a
k
x
n
+ (a
k
1)c/b) (mod m)
care da un generator de perioada maximala cand:
(c, m) = 1;
b = a 1 este multiplu de p, pentru orice numar prim p care divide m;
b (mod 4) = 0 daca m (mod 4) = 0.
Dezavantajul generatorilor liniari congruent iali este acela ca ei nu mai pot folosit i n
criptograe; stiind prima valoare, numerele pot gasite usor. Criptanaliza a fost realizata de
Jim Reeds n 1977 (cu completari n 1979) si Joan Boyar n 1982. Ea a spart si generatorii
patratici
x
n+1
= (ax
2
n
+bx
n
+c) (mod m)
si cubici
x
n+1
= (ax
3
n
+bx
2
n
+cx
n
+d) (mod m)
Alt i cercetatori au extins metodele de atac pentru spargerea oricarui generator polinomial
congruent ial.
Acum, acest tip de generator de numere pseudo-aleatoare este folosit n aplicat ii necrip-
tograce; de exemplu, n simulare ele asigura o comportare statistica buna n majoritatea
testelor.
3.2.2 Generatori Ranrot
Clasa generatorilor Ranrot a fost denita de danezul Agner Fog n 1997 ([2]), init ial pentru
algoritmi Monte Carlo. Ea se bazeaza pe generatoare de numere Fibonacci, completate cu
operat ia de rotat ie pe bit i. Sunt studiate trei tipuri de generatoare Ranrot:
Tip A: x
n
= ((x
nj
+x
nk
) (mod 2
b
)) r;
Tip B: x
n
= ((x
nj
r
1
) + (x
nk
r
2
)) (mod 2
b
);
Tip B3: x
n
= ((x
ni
r
1
) + (x
nj
r
2
) + (x
nk
r
3
)) (mod 2
b
);
Tip W: z
n
= ((y
nj
r
3
) + (y
nk
r
1
)) (mod 2
b/2
),
y
n
= ((z
nj
r
4
) + (z
nk
r
2
)) (mod 2
b/2
),
x
n
= y
n
+z
n
2
b/2
.
S-au folosit urmatoarele convent ii:
1. Toate numerele x sunt ntregi binare pe b bit i;
2. 0 < i < j < k n numere ntregi;
3. s este rotat ia secvent ei spre dreapta cu s pozit ii;
4. 0 r
i
b 1 pentru primele doua tipuri, 0 b
i
b/2 pentru tipul W.
36 PRELEGEREA 3. GENERATORI DE NUMERE PSEUDO - ALEATOARE
Valorile sunt calculate ntr-un vector (buer) de k elemente, numit stare S
n
.
Starea init ial a este
S
1
= (x
1
, x
2
, . . . , x
k
)
iar trecerea de la o stare la alta se realizeaza printr-o deplasare spre stanga de forma
(x
nk
, x
nk+1
, . . . , x
n1
) (x
nk+1
, . . . , x
n1
, x
n
)
unde x
n
este calculat conform formulei specice tipului sau.
Fie p = (j, k). Daca p > 1, atunci sistemul se poate descompune n p sisteme independente.
Deci o prima condit ie de performant a este (j, k) = 1, ceea ce asigura interdependent a tuturor
numerelor din stare.
Din acelasi motiv, la tipul W trebuie ca numarul k j sa e prim.
Din modul de implementare al adunarii binare rezulta o scurgere de informat ie (prin bitul de
transport - carry) de la bit ii cei mai put in semnicativi catre cei mai semnicativi, informat ie
care nu se transfera n sens contrar. Pentru eliminarea acestui neajuns s-au ncercat diverse
variante, cum ar adunarea transportului la bitul cel mai put in semnicativ (n loc de cel mai
semnicativ) operat ie care mbunat at este lungimea perioadei, dar nu si caracterul aleator.
Varianta considerata a fost aceea de rotire a bit ilor sumei rezultate.

In plus, pentru ca toate
elementele din S sa raman a interdependente, trebuie ca cel put in un r sa e nenul. Prin
experimente s-a gasit ca cele mai bune valori pentru num arul de pozit ii rotite este aproape de
b
2
pentru tipul A, de
b
3
si
2b
3
pentru tipul B si aproape de
b
4
,
b
2
,
3b
4
pentru tipul B3.
Lungimea maxima a unei perioade la un generator Ranrot este (2
k
1) 2
b1
.
Nu se cunoaste nc a un algoritm de obt inere de generatori Ranrot de perioada maximala;
cei cunoscut au fost gasit i prin testari. Cel mai mare generator analizat are 2
32
stari.
Exemplul 3.1 Un generator Ranrot de tipul A cu j = 1, k = 4, b = 7, r = 4 are 24 cicluri de
perioade 1, 5, 9, 11, 14, 21, 129, 6576, 8854, 16124, 17689, 135756, 310417, 392239, 488483,
1126126, 1355840, 1965955, 4576377, 7402465, 8393724, 57549556, 184256986.
Important a restrict iilor impuse diverselor tipuri de generatori Ranrot este listata n Tabelul 2.
Regula A B B3 W
(j, k) = 1 ((j, i) = (k, i) = 1) *** *** *** ***
1 < i < j < k 1 ** * * *
k j impar - - - ***
un r = 0 *** *** *** **
tot i r = 0 *** ** * -
r distinct i - ** ** **
r > 1 *** ** * *
(r, b) = 1 * * * *
(b, k) = 1 * * * *
Tabelul 2
S-a notat cu o regula far a important a, - important a minora, - nerespectarea ei duce la
aparit ia unor cicluri de perioada mica, - regula important a.

In varianta init ial a, si acesti generatori sunt usor de spart, deoarece starea init iala se poate
deduce usor din k valori consecutive ale lui x. Daca ns a parametrii nu se cunosc, generatorii
Ranrot pot solosit i cu succes n criptograe, av and o securitate sporita.
3.2. GENERATORI SIMPLI DE NUMERE PSEUDO-ALEATOARE 37
Exemplul 3.2 Sa consideram o varianta de generator Ranrot:
x
n
= ((x
n1
r
1
) + (X
n2
r
2
) +. . . + (x
nk
r
k
) +h) (mod 2
b
)
unde h este un numar ntreg arbitrar. Pentru ecare r sunt b
k
valori posibile, iar pentru
0 h 2
b
. Astfel, pentru k = 17, b = 32 numarul de variante este 1, 6 10
35
Exista un sistem de criptare (Power Crypto) bazat pe generatorul Ranrot de tip B3.
3.2.3 Generatorul Blum - Blum - Shub
Cel mai simplu si se pare cel mai ecient generator de numere pseudo- aleatoare este Blum
- Blum - Shub (numit si generator rezidual patratic).
Denit ia 3.2 Fie p, q doua numere prime. Daca
p 3 (mod 4), q 3 (mod 4)
atunci numarul n = pq se numeste ntreg Blum.
Algoritmul Blum - Blum - Shub (BBS pe scurt) de generare de numere pseudo-aleatoare
(prezentat ca un (k, m) generator) este:
Fie n = pq un ntreg Blum, unde p, q sunt numere prime pe k/2 bit i.
Fie x
0
un reziduu patratic modulo n. Se deneste secvent a
s
i+1
= s
2
i
(mod n)
Daca z
i
= s
i
(mod 2) pentru 1 i m, atunci num arul aleator generat este
f(x
0
) = z
1
z
2
. . . z
m
.
Generarea bit ilor nu este de fapt recursiva, deoarece z
i
(1 i m) se poate calcula direct cu
formula
z
i
= x
2
i
(mod (p1)(q1))
0
(mod 2)
Exemplul 3.3 Fie p = 383, q = 503; deci n = 192649. Alegand x
0
= 101355
2
(mod n) =
20749, generatorul BBS va produce sirul pseudo-aleator 11001110000100111010. Detaliind
i 0 1 2 3 4 5 6 7 8 9 10
s
i
20749 143135 177671 97048 89992 174051 80649 45663 69442 186894 177046
z
i
1 1 0 0 1 1 1 0 0 0
i 11 12 13 14 15 16 17 18 19 20
s
i
137922 123175 8630 114386 14863 133015 106065 45870 137171 48060
z
i
0 1 0 0 1 1 1 0 1 0
Securitatea acestui generator se bazeaza pe dicultatea factorizarii lui n. n poate facut public,
oricine poate genera o secvent a pseudo-aleatoare pe baza lui. Totusi, daca n nu se descompune
n factori, nimeni nu poate prezice iesirea; nici macar o armat ie de genul: Urmatorul bit este
1 cu probabilitate 51%.
Mai mult, ind data o parte a secvent ei, nu exista nici o modalitate de a prezice bitul
anterior sau cel ulterior secvent ei.
38 PRELEGEREA 3. GENERATORI DE NUMERE PSEUDO - ALEATOARE
Algoritmul BBS este destul de lent, dar are unele implementari mai rapide. Astfel, daca n
este lungimea lui x
i
, pot pastrat i ultimii log
2
x
i
bit i.

In acest moment BBS este considerat cel mai bun generator de numere pseudo-aleatoare
pentru protocoale de generare si distribut ie a cheii.
3.3 Circuite liniare
Circuitele liniare
1
sunt folosite pe scara larga n teoria codurilor detectoare si corectoare de
erori (codurile ciclice si codurile convolut ionale) precum si n unele sisteme de criptare liniare
(AES de exemplu). Avantajul lor consta n modalitatea extrem de rapida de calcul.
Teoria circuitelor liniare a fost stabilita n 1965 ([6]) de Ernst Selmer, seful biroului de
criptograe al guvernului norvegian. Pentru detalii si rezultate teoretice poate consultat
cartea de teoria codurilor [1].
Un LFSR (Linear Feedback Shift Register) este un circuit liniar format dintr-un registru
serial si o funct ie de ntoarcere (feedback). Daca registrul este compus din n ip-opuri de date
(DF F), vom avea un n LFSR.
Funct ie de ntoarcere
b
n
b
n1
. . .
b
2
b
1
-
? ? ? ?

6
-
Funct ia de ntoarcere este o adunare modulo 2 (XOR) a anumitor bit i din registru; uneori ea
este numita congurat ie Fibonacci (vezi generatoarele Ranrot).
Exemplul 3.4 Sa consideram un 4 LFSR dat de schema (poarta XOR s-a notat cu ):

_
- - - -
?
6
-
?
, ,
+
Funct ia de ntoarcere este formata dintr-un singur XOR ntre primul si ultimul bit. Sa pre-
supunem ca init ial cei patru bit i din registru sunt 1001. La ecare tact se va obt ine o noua
congurat ie, anume:
0100, 0010, 0001, 1000, 1100, 1110, 1111, 0111, 1011, 0101, 1010, 1101, 0110, 0011
dupa care apare din nou 1001.
La iesire va apare secvent a 1001000111101011. Acest circuit asigura un generator de pe-
rioada 16.
Un n LFSR poate avea maxim 2
n
1 stari distincte (starea 00 . . . 0 este exclusa deoarece ea
formeaza un ciclu de lungime 1, neinteresant pentru generarea de numere pseudo-aleatoare).
Fie g(X) Z
2
[X], g(X) = 1 +g
1
X +. . . +g
n
X
n
polinomul asociat unui n LFSR, unde
g
i
= 1 daca si numai daca bitul i participa la o adunare modulo 2. Astfel, n Exemplul 3.4
polinomul este g(X) = 1 +X +X
4
.
1
Termenul din engleza este Shift Register.
3.4. GENERATORI BAZAT I PE LFSR 39
Sa consideram un polinom g(X) Z
2
[X], grad(g(X)) = n si e m cel mai mic num ar
astfel ca g(X)|X
m
+1. Atunci secvent a binara generata de un n LFSR asociat lui g(X) are
perioada m (este o m - secvvent a).
Daca g(X) este un polinom ireductibil peste Z
2
, atunci m = 2
n
1, iar aceasta este valoarea
maxima posibila (egaleaza numarul de stari distincte posibile din n LFSR). Toate detaliile
teoretice care justica aceste armat ii se gasesc n [1].
Lema 3.1 Un polinom g(X) Z
2
[X] este ireductibil daca si numai daca
1. Are un numar impar de termeni;
2. Cel put in un termen este de forma X
2p+1
.
Demonstrat ie: Exercit iu.

In [5] pag. 376 este dat un tabel cu aproape 300 polinoame ireductibile de diverse grade.
Evident, un nLFSR este un generator de secvent e, dar proprietatea lor pseudo-aleatoare
este extrem de slaba; o stare interna ofera urmatorii n bit i din secvent a de iesire. Chiar daca
funct ia de ntoarcere nu este cunoscuta, ea poate determinata pe baza a 2n bit i de iesire
(Algoritmul de decodicare Berlekamp - Massey). Totusi, prin combinarea mai multor circuite
LFSR se pot obt ine generatori de numere aleatoare acceptabili.
3.4 Generatori bazat i pe LFSR
3.4.1 Generatorul Gee
Generatorul Gee combin a ntr-o maniera neliniara trei LFSR, conform schemei urmatoare:
LFSR
1
LFSR
3
LFSR
2
EMUX
-
-
-
6
-
0
1
LFSR
1
formeaza funct ia de select ie a multiplexorului elementar, intr arile ind asigurate de
celelalte doua LFSR-uri. Daca a
1
, a
2
, a
3
sunt iesirile din cele trei LFSR-uri, iesirea din gener-
atorul Gee este data de relat ia
b = (a
1
a
2
) (a
1
a
3
)
Perioada generatorului este cel mai mic multiplu comun al perioadelor celor trei LFSR-
uri. Deci, daca cele trei polinoame care denesc circuitele au grade prime ntre ele, perioada
generatorului Gee este produsul celor trei perioade.
Din punct de vedere criptograc generatorul nu rezista unui atac prin corelare. Iesirea din
generator coincide cu iesirea din LFSR
2
cam 75% din timp. Deci, daca denit iile polinomiale
ale circuitelor sunt cunoscute se poate ghici valoarea init iala din LFSR
2
si genera secvent a sa
40 PRELEGEREA 3. GENERATORI DE NUMERE PSEUDO - ALEATOARE
de iesire. Apoi se num ar a de cate ori iesirea din LFSR
2
coincide cu iesirea din generator. Daca
nu s-a ghicit corect, cele doua secvent e coincid cam 50%; daca s-a ghicit corect, ele coincid cam
75%.
Similar, iesirea generatorului coincide cu cea din LFSR
3
cam 75% din timp. Cu aceste
corelari secvent a poate ghicita complet.

Intr-un articol din 1991, Zeng s.a. ([8]) arata ca
daca polinoamele ireductibile au cate trei termeni iar cel mai mare LFRS este de lungime n,
atunci o secvent ae 37n bit i la iesirea din generator este sucienta pentru determinarea starilor
interne din tot i LFSR.
Genratorul Gee poate extins la 2
k
+1 LFSR legat i printr-un MUX
k
. Acest lucru nu va
mari nsa securitatea generatorului.
3.4.2 Generatori Stop-and-Go
Cel mai cunoscut este generatorul Beth - Piper (dupa numele autorilor); structura sa este
urmatoarea:
LFSR
3
LFSR
2

LFSR
1
-
6
-
6
-
-
? -
-
6
-
6
-
-
-
6
,
,
CK
a
1
(t)
a
2
(t)
a
3
(t)
b(t)
Acest generator controleaza ceasurile celor trei circuite. Astfel, ceasul de intraren LFSR
2
este controlat de iesirea din LFSR
1
; n acest fel, LFSR
2
si schimba starea la momentul
t numai daca iesirea din LFSR
1
a fost 1 la momentul t 1.
Nu se cunosc studii asupra complexitat ii acestui generator. El totusi nu a rezistat at-
acurilor corelate ([8]).
Stop-and-Go alternativ: Aceasta varianta foloseste trei LFSR de lungimi diferite, legate
ntr-un circuit de forma:
LFSR
3
LFSR
2
LFSR
1

-
? -
X
X

-
-
6
-
6
-
-
? -
6
-
? -
6
-
? -
-
6
-
-
,
,
,
CK
Cand iesirea din LFSR
1
este 1 e activeaz a LFSR
2
; n caz contrar este activat LFSR
3
.
Iesirea din generator este un XOR dintre cele doua iesiri.
Acest generator are o perioada mare. Exista un atac prin corelare asupra sa (mai precis
asupra LFSR
1
), dar acesta nu a slabit substant ial sigurant a sa.
3.5. ALTE GENERATOARE DE NUMERE PSEUDO-ALEATOARE 41
Generator Gollmann: Este o legare seriala n cascada a mai multor circuite LFSR,
ceasul ecarui LFSR ind controlat de circuitul anterior.
LFSR
1

LFSR
2

LFSR
2

-
6
-
6
-
6
- - -
? -
6
-
-
-
? -
6
?-
6
-
? -
6
-
? -
-
-
, ,
,
,
,
1
CK
. . .
. . .
Daca la momentul t 1 iesirea din LFSR
i
este 1, atunci la momentul t este activat
LFSR
i+1
. Iesirea din generator este iesirea din ultimul LFSR. Daca toate circuitele
liniare au aceiasi lungime n, complecitatea unui generator Gollmann cu k LFSR-uri este
n (2
n
1)
k1
3.5 Alte generatoare de numere pseudo-aleatoare
3.5.1 Generatorul Mother-of-all
Este un generator propus de George Marsaglia.
Init ial se aleg cinci numere ntregi x
0
, x
1
, x
2
, x
3
, c (nu toate nule), stocate pe 32 bit i ecare.
Algoritmul este:
1. n 4;
2. while n MAX do
(a) S 2111111111 x
n4
+ 1492 x
n3
+ 1776 x
n2
+ 5115 x
n1
+c;
(b) x
n
S (mod 2
32
), c

S
2
32

;
(c) n n + 1;
Suma intermediar a S este stocata pe 64 bit i. Valoarea MAX este stabilita n funct ie de
lungimea secvent ei de numere pseudo-aleatoare generate.
Implementat n limbaj de asamblare, algoritmul este extrem de rapid, deoarece aici exista
o instruct iune de nmult ire a doua numere ntregi pe 32 bit i ecare, cu rezultatul pe 64 bit i.
Scris ntr-un limbaj de nivel nalt, algoritmul foloseste numere n virgula mobila cu o mantisa
de 63 bit i.
3.5.2 Generatorul Blum - Micali
Fie g un num ar prim, p un num ar prim impar si x
0
o valoare init ial a. Se genereaza numerele
x
i+1
= g
x
i
(mod p)
Iesirea din generator este 1 daca x
i
<
p 1
2
si 0 altfel.
Securitatea acestui sistem se bazeaza pe problema logaritmului discret. Daca p este sucient
de mare astfel ca problema logaritmului discret sa e dicila, generatorul este sigur.
42 PRELEGEREA 3. GENERATORI DE NUMERE PSEUDO - ALEATOARE
3.5.3 Generator RSA
Sistemul de criptare RSA poate folosit si pentru generare de numere aleatoare.
Fie n = pq un modul obt inut prin produsul a doua numere prime mari, un num ar e astfel
ca (e, (p 1) (q 1)) = 1 si x
0
o valoare init ial a (x
0
< n). Se deneste
x
i+1
= x
e
i
(mod n)
Iesirea din generator este z
i
= x
i
(mod 2).
Securitatea generatorului se bazeaza pe dicultatea spargerii sistemului RSA. Daca n este
sucient de mare, sistemul este sigur.
3.6 Securitatea generatorilor de numere pseudo-aleatoare
Denit ia 3.3 Fie X
n
, Y
n
doua distribut ii de probabilitate pe {0, 1}
n
. Notam t X
n
atunci
cand t este ales astfel ca z {0, 1}
n
,
Pr(x = z) = X
n
(z)
Spunem ca {X
n
} este inseparabil de {Y
n
} n timp polinomial daca pentru orice algoritm
probabilist A si orice polinom Q exista n
0
astfel ca n (n > n
0
) sa avem
|Pr
tXn
(A(t) = 1) Pr
tYn
(A(t) = 1)| <
1
Q(n)
Condit ia de inseparabilitate spune ca pentru siruri sucient de lungi nu exista un algoritm
probabilist care sa decida daca sirul a fost selectat urmand distribut ia X
n
sau Y
n
. Intuitiv, nu
se poate face distinct ie ntre distributia aleatoare si cea uniforma.
Vom nota cu U
n
distribut ia uniforma pe {0, 1}
n
; adica {0, 1}
n
,
Pr
xU
n
(x = ) =
1
2
n
Denit ia 3.4 Sirul {X
n
} este pseudo-aleator daca este inseparabil n timp polinomial de {U
n
}.
Algoritmul A din Denit ia 3.3 este numit test statistic n timp polinomial. Exemple de teste
statistice se gasesc n [3]. De asemenea, Marsaglia a construit n 1996 pachete de teste folosite
astazi ca standard de securitate pentru generatorii de numere pseudo-aleatoare.
Denit ia 3.5 Un program determinist n timp polinomial
G : {0, 1}
k
{0, 1}
p
este un generator pseudo-aleator (PSRG) daca verica urmatoarele condit ii;
1. p > k;
2. {G
p
}
p
este pseudo-aleator, unde G
p
este distribut ia pe {0, 1}
p
obt inuta astfel:
(a) pentru a obt ine t G se alege x U;
(b) se deneste t = G(x).
Adica, pentru orice algoritm probabilist A si orice polinom Q avem

Pr
tXn
(A(t) = 1) Pr
tUp
(A(t) = 1)

<
1
Q(p)
Bibliograe
[1] A.Atanasiu - Teoria codurilor corectoare de erori, Editura Univ. Bucuresti, 2001;
[2] A.Fog - http://www.agner.org/random/theory;
[3] D.Knuth - The art of computer Programming, vol 2 (Seminumerical Algorithms)
[4] P. L Ecuyer - Random Numbers for Simulation, Comm ACM 33, 10(1990), 742-749, 774.
[5] B. Schneier - Applied Cryptograpgy, John Wiley & Sons 1996;
[6] E.S. Selmer - Linear Recurrence over Finite Field, Univ. of Bergen, Norway, 1966;
[7] E.H.Sibley - Random Number Generators: Good Ones are Hard to Find, Comm ACM 31,
10(1988), 1192-1201.
[8] K.C.Zeng, C.H.Yang, D.Y.Wei, T.R.N. Rao - Pseudorandom Bit Generators in Stream
Cipher Cryptography, IEEE Computer, 24 (1991), 8.17.
43
Prelegerea 4
Protocoale de distribuire a cheilor
4.1 Introducere
Am vazut ca sistemele bazate pe chei publice nu necesita un canal sigur pentru transmiterea
unei chei private. Aceste avantaj este compensat ns a de faptul ca un canal cu cheie publica este
mult mai lent decat unul cu cheie privat a, el necesitand protocoale, procedee de autenticare
etc.

In aceasta prelegere vom aborda aceasta problema, de stabilire a unor modalitat i de a


schimba mesaje ntre mai mult i utilizatori, folosind protocoale rapide, ecare av and propria sa
cheie privat a. Protocoalele vor consta din doua part i principale:
1. Distribuirea cheilor: un protocol prin care o persoana alege cheia privata si o transmite
mai departe.
2. Punerea de acord: tot i participant ii stabilesc o cheie privat a folosind un canal public.
Baza de comunicare consta dintr-o ret ea (nesigura) care leaga n utilizatori.

In general se
presupune ca exista o autoritate A numit a arbitru, considerata apriori ca ind onesta; ea
va verica identitat ile utilizatorilor, alegerea si transmiterea cheilor init iale, precum si alte
probleme curente.
Deoarece ret eaua nu este sigura, participant ii trebuie sa prevada unele atacuri din partea
lui Oscar. Acesta poate pasiv (adica doar sa intercepteze mesaje) sau activ. Un adversar
activ este capabil sa:
modice un mesaj n cursul transmisiei;
transmita mesaje vechi;
ncerce sa se prezinte ca unul din utilizatorii ret elei.
Obiectivul lui Oscar este:
Sa i faca pe U si V sa accepte o cheie invalida
Sa i faca pe U si V sa creada ca au schimbat chei ntre ei.
Scopul protocolului de distribut ie a cheilor sau al punerii de acord este ca n nal cei doi
participant i sa det ina aceasi cheie K, necunoscuta de ceilalt i participant i (exceptand eventual
A).
43
44 PRELEGEREA 4. PROTOCOALE DE DISTRIBUIRE A CHEILOR
4.2 Predistribuirea cheilor
Init ial are loc o etapa de predistribuire a cheilor: pentru orice pereche de utilizatori (U, V ),
arbitrul A alege aleator o cheie K
U,V
= K
V,U
pe care o transmite n prealabil lui U si V
printr-un canal sigur (neutilizat pentru comunicat iile uzuale).
Deci, n aceasta faza, A genereaza C
2
n
chei pe care le distribuie celor n utilizatori. Fiecare
utilizator trebuie sa pastreze cheia sa precum si cele n 1 chei de comunicat ie cu ceilalt i
utilizatori.
Aceasta etapa este sigura, dar ridica o serie de probleme cum ar :
existent a de canale sigure ntre A si ecare din cei n participant i;
obligat ia pentru ecare participant sa stocheze n 1 chei si sa participe la C
2
n
transmisii
de chei solicitate de arbitru. Chiar pentru o ret ea mica, acest lucru devine destul de
dicil.
Scopul protocoalelor prezentate mai departe este de a micsora (far a a periclita sigurant a comu-
nicarii) cantitatea de informat ie care trebuie transmisa.
4.2.1 Protocolul Blom
Fie n (n 3) utilizatori si p (p n) un num ar prim. Fiecare cheie este un element din Z
p
.
Se alege un numar ntreg k, (1 k n 2). Valoarea lui k este num arul maxim de intrusi
Oscar contra carora trebuie construita protect ia.

In procedeul Blom, A transmite printr-un
canal sigur k + 1 elemente din Z
p
ecarui utilizator (n loc de n 1 chei n varianta generala).
Fiecare pereche de utilizatori (U, V ) poate calcula o cheie K
U,V
= K
V,U
. Condit ia de securitate
este: orice coalit ie de k utilizatori diferit i de U si V nu poate obt ine informat ii despre K
U,V
.
Pentru cazul k = 1 protocolul Blom este:
1. Se alege public un num ar prim p si pentru ecare utilizator
U se alege r
U
Z
p
. Numerele r
U
sunt distincte.
2. A alege aleator trei numere a, b, c Z
p
si formeaza polinomul
f(x, y) = a + b(x + y) + cxy (mod p)
3. Pentru ecare utilizator U, A determina polinomul
g
U
(x) = f(x, r
U
) (mod p)
si transmite g
U
(x) lui U printr-un canal sigur.
4. Daca U si V doresc sa comunice, cheia lor privata este
K
U,V
= K
V,U
= f(r
U
, r
V
)
Observat ii:
Aplicat ia g
U
(x) de la pasul 3 este o aplicat ie ana, de forma g
U
(x) = a
U
+ b
u
x, unde
a
U
= a + br
U
(mod p), b
U
= b + cr
U
(mod p).
4.2. PREDISTRIBUIREA CHEILOR 45
La pasul 4, U poate calcula cheia privata K
U,V
= f(r
U
, r
V
) = g
U
(r
V
), iar V n mod
similar K
V,U
= f(r
U
, r
V
) = g
V
(r
U
).
Exemplul 4.1 Sa presupunem ca sunt 3 utilizatori U, V, W si p = 17. Cheile lor publice sunt
r
U
= 12, r
V
= 7, r
W
= 1.
Presupunem ca arbitrul alege a = 8, b = 7, c = 2. Atunci
f(x, y) = 8 + 7(x + y) + 2xy
Polinoamele g sunt acum
g
U
(x) = 7 + 14x, g
V
(x) = 6 + 4x, g
W
(x) = 15 + 9x.
Cele trei chei private sunt K
U,V
= 3, K
U,W
= 4, K
V,W
= 10.
U poate calcula K
U,V
prin g
U
(r
V
) = 7 + 14 7 = 3 (mod 17);
V poate calcula K
V,U
prin g
V
(r
U
) = 6 + 4 12 = 3 (mod 17).
Sa arat am ca nici un utilizator nu poate obt ine informat ie asupra cheilor private ale celorlalt i
utilizatori.
Teorema 4.1 Protocolul Blom pentru k = 1 este necondit ionat sigur contra oricarui atac
individual.
Demonstrat ie: Sa presupunem ca utilizatorul W doreste sa calculeze cheia K
U,V
= a + b(r
U
+
r
V
) + cr
U
r
V
mod p.
Valorile r
U
si r
V
sunt publice, dar a, b, c sunt secrete. W cunoaste propriile sale valori
a
W
= a + br
W
, b
W
= b + cr
W
(mod p), care sunt coecient ii propriului sau polinom g
W
(x).
Vom arata ca informat ia det inuta de W este consistent a cu orice valoare posibila m Z
p
a
cheii K
U,V
. Deci W nu poate obt ine nici o informat ie asupra cheii K
U,V
. Sa consideram ecuat ia
matriciala n Z
p
:

1 r
U
+ r
V
r
U
r
V
1 r
W
0
0 1 r
W

a
b
c

m
a
W
b
W

Prima ecuat ie este de fapt K


U,V
= m, iar celelalte doua dau informat ia furnizata de g
W
(x)
despre a, b, c.
Determinantul matricii este
r
2
W
+ r
U
r
V
(r
U
+ r
V
)r
W
= (r
W
r
U
)(r
W
r
V
)
unde toate calculele sunt efectuaten Z
p
. Cumr
W
este distinct de r
U
si r
V
, acest determinant
este nenul, deci sistemul admite o solut ie unica (a, b, c). Cu alte cuvinte, orice valoare m Z
p
este compatibila cu informat ia deja det inut a de W. 2
O coalit ie ntre doi utilizatori W, X poate conduce la aarea cheii K
U,V
. W si X stiu ca:
a
W
= a + br
W
b
W
= b + cr
W
a
X
= a + br
X
b
X
= b + cr
X
Acesta este un sistem de 4 ecuat ii cu 3 necunoscute, din care se poate aa imediat solut ia
unica (a, b, c). Dupa ce s-au aat aceste trei valori, se poate construi polinomul f(x, y), din
care se poate determina mai departe restul informat iei.
46 PRELEGEREA 4. PROTOCOALE DE DISTRIBUIRE A CHEILOR
Acest protocol poate generalizat pentru a rezista la atacul unei aliant e de k utilizatori.
Singura modicare se face la pasul 2, unde arbitrul foloseste polinomul
f(x, y) =
k

i=0
k

j=0
a
i,j
x
i
y
j
(mod p)
unde a
i,j
Z
p
(0 i k, 0 j k) si a
i,j
= a
j,i
pentru orice i si j.
4.2.2 Protocolul Die - Hellman
Este un protocol celebru, des folosit, bazat pe problema logaritmului discret.
Vom folosi grupul Z
p
unde p este num ar prim (desi construct ia funct ioneaz a pentru orice
grup nit n care problema logaritmului discret este dicila) si e Z
p
un element primitiv.
p si sunt publice.
ID(U) este o informat ie capabila sa identice utilizatorul U n ret ea (numele, adresa elec-
tronica, numarul de telefon etc). Orice utilizator U dispune de un num ar secret a
U
(0 a
U

p 2), putand sa calculeze
b
U
=
a
U
(mod p)
Arbitrul A dispune de un algoritm de semnatur a secret sig
A
si o procedura de vericare
publica ver
A
. Mai presupunem implicit ca datele au fost n prealabil supuse unei funct ii de
dispersie criptograce h pe care pentru simplicarea scrierii nu o mai ment ion am explicit.
Anumite informat ii despre utilizatorul U sunt autenticate folosind un certicat care cont ine
si amprenta (semnatura) arbitrului; un certicat este o denit ca o secvent a de forma
C(U) = (ID(U), b
U
, sig
A
(id(U), b
U
)).
De remarcat ca arbitrul nu trebuie sa cunoasca a
U
pentru a produce certicatul. Cand U
intr a n ret ea, se genereaza un astfel de certicat, care poate pastrat n baza de date sau
poate comunicat chiar de U la ecare utilizare. Semnatura lui A permite oricui sa verice
autenticitatea informat iei pe care o cont ine.
O cheie privat a pentru U si V este denita
K
U,V
=
a
U
a
V
(mod p).
Ea poate construita atat de U, prin K
U,V
= b
a
U
V
(mod p) cat si de V prin K
U,V
=
b
a
V
U
(mod p) (reamintim, a
U
, a
V
sunt private, b
U
, b
V
sunt publice).
Exemplul 4.2 Sa presupunem p = 25307 si = 2. Daca luam a
U
= 3578, vom avea b
U
=
2
3578
= 6113 (mod 25307), valoare pusa n certicatul lui U.
Sa presupunem ca V alege a
V
= 19956; atunci
b
V
= 2
19956
= 7984 (mod 25307).
U poate calcula cheia comuna K
U,V
= 7984
3578
= 3694 (mod 25307).
Aceiasi cheie este calculata si de V :
K
U,V
= 6113
19956
= 3694 (mod 25307).
4.3. KERBEROS 47
Sa studiem securitatea acestui protocol contra unui atac (activ sau pasiv). Semnatura lui
A pe certicate mpiedic a producerea de informat ii publice false. Deci vor ram ane n discut ie
numai atacurile pasive, care se reduc la problema: W poate determina K
U,V
daca nu este U
sau V ? Altfel spus: ind date
a
U
si
u
V
, ambele (mod p), se poate calcula
a
U
a
V
(mod p) ?
Aceasta este cunoscuta si sub numele de problema Die - Hellman, formulat a astfel:
Fie I = (p, , , ) unde p este num ar prim, Z
p
este primitiv, iar , Z

p
.
Se poate determina
log

(mod p) ?
(sau echivalent,
log

(mod p))
Evident, securitatea protocolului Die - Hellman de predistribuire a cheii fat a de atacurile
pasive este echivalent cu dicultatea problemei Die - Hellman.
Daca W poate calcula a
U
(sau a
V
) plecand de la b
U
(b
V
), el poate deduce K
U,V
asa cum
face U (respectiv V ). Aceasta conduce la rezolvarea unei probleme de logaritm discret. Deci,
daca problema logaritmului discret n Z
p
este dicila, atunci protocolul de predistribuire a cheii
Die - Hellman nu poate atacat. Conjectura este aceea ca problema Die - Hellman este
echivalenta cu problema logaritmului discret (asa cum s-a conjecturat ca spargerea sistemului
RSA este echivalenta cu factorizarea unui num ar).
Teorema 4.2 A sparge sistemul de criptare El Gamal este echivalent cu a rezolva problema
Die - Hellman.
Demonstrat ie: Sa reamintim sistemul de criptare El Gamal: O cheie este K = (p, , a, ) unde
=
a
(mod p); a este secret, iar p, , sunt publice. Criptarea unui mesaj x Z
p
se face
alegand aleator un num ar k Z
p1
; apoi e
K
(x, p) = (y
1
, y
2
) unde
y
1
=
k
(mod p), y
2
= x
k
(mod p)
Pentru y
1
, y
2
Z

p
, decriptarea este denita prin
d
K
(y
1
, y
2
) = y
2
(y
a
1
)
1
(mod p)
Sa presupunem ca dispunem de un algoritmAcare rezolva problema Die - Hellman si ncerc am
un atac asupra mesajului criptat (y
1
, y
2
). Aplicand A asupra intr arilor p, , y
1
si avem:
A(p, , y
1
, ) = A(p, ,
k
,
a
) =
ka
=
k
(mod p)
De aici rezulta x = y
2
(
k
)
1
(mod p), deci se poate decripta mesajul (y
1
, y
2
).
Invers, sa presupunem ca dispunem de un algoritmB de decrptare pentru sistemul El Gamal.
Deci B admite la intrare (p, , , y
1
, y
2
) si calculeaza
x = y
2

y
log

1
(mod p).
Fiind data o aparit ie (p, , , ) a problemei Die - Hellman, se poate calcula usor
B(p, , , , 1)
1
= 1

log

1
=
log

(mod p)
2
4.3 Kerberos
Un punct slab n metodele de predistribuire a cheilor prezentate este acela ca ecare pereche
de utilizatori primeste mereu aceeasi cheie. Acest lucru, pe o perioada de timp mai lunga
periciliteaza condent ialitatea cheii. Este mult mai indicat sa se calculeze cate o cheie noua
(freshness) pentru ecare contact direct.
48 PRELEGEREA 4. PROTOCOALE DE DISTRIBUIRE A CHEILOR

In plus, daca se utilizeaza o distribut ie a cheilor n direct, nici un utilizator nu va mai


nevoit sa stocheze cheile de comunicare cu ceilalt i utilizatori (nafara cheii de comunicare cu
arbitrul, binent eles). Cheile de sesiune sunt transmise la simpla solicitare a lui A. Tot arbitrul
este responsabil de noutatea cheii livrate.
Kerberos este unul din cele mai rasp andite sisteme de gestiune a cheilor. Sa prezent am
protocolul de fabricare a cheilor de sesiune asigurat de acest sistem.
Fiecare utilizator U mparte cu arbitrul o cheie DES notata K
U
. Ultimele versiuni folosesc
modul CBC de implementare a sistemului DES.
ID(U) reprezinta o informat ie publica care identic a utilizatorul U. La solicitarea lui U de
a comunica cu V , arbitrul efectueaza urmatorii pasi:
Genereaza o cheie K;


Inregistreaza ora T a cererii;
Stabileste o durata L de validitate a lui K; deci cheia de sesiune este valida n intervalul
de timp [T, T + L].
Aceste informat ii sunt transmise de A lui U, apoi V . Protocolul Kerberos este urmatorul:
1. A genereaza K, T si L.
2. A calculeaza
m
1
= e
K
U
(K, ID(V ), T, L), m
2
= e
K
V
(K, ID(U), T, L)
pe care le trimite lui U.
3. U calculeaza d
K
U
(m
1
) si aa K, T, L, ID(V ). Pe urma calculeaza
m
3
= e
K
(ID(U), T)
si trimite lui V mesajele m
2
si m
3
.
4. V aa K, T, L, ID(U) din d
K
V
(m
2
) si T, ID(U) din d
K
V
(m
2
). Verica daca cele
doua valori pentru T si ID(U) sunt identice.
5. V calculeaza
m
4
= e
K
(T + 1)
pe care l trimite lui U.
6. U calculeaza d
K
(m
4
) si verica daca este T + 1.
Fiecare din cele patru mesaje m
i
transmise are rolul sau bine determinat. Astfel, m
1
si m
2
servesc la transmiterea condent iala a cheii K. La randul lor, m
3
si m
4
asigura o conrmare a
cheii; dupa primirea ei, U si V sunt siguri ca dispun de aceeasi cheie de sesiune K.
Rolul lui T si L este acela de protejare contra unui atac activ constand din nregistrarea
unor mesaje vechi si retransmiterea lor ulterior.
Unul din slabiciunile sistemului Kerberos consta n imposibilitatea unei sincronizari a cea-
surilor utilizatorilor.

In practica se admit anumite decalaje, stabilite de comun acord.

In plus,
spargerea sistemului DES a condus la renunt area treptata la sistemul Kerberos.
4.4. SCHIMBUL DE CHEI DIFFIE - HELLMAN 49
4.4 Schimbul de chei Die - Hellman
Daca nu se accepta un furnizor universal de chei, atunci va trebui stabilit un protocol de punere
de acord. Primul si cel mai cunoscut astfel de protocol este protocolul de schimb de chei Die
- Hellman.
Fie p numar prim si Z
p
un element primitiv, ambele publice; eventual ele sunt alese de
U si comunicate lui V . Protocolul de schimb este urmatorul:
1. U alege aleator a
U
[0, p 2];
2. U calculeaza
a
U
(mod p) si l trimite lui V ;
3. V alege aleator a
V
[0, p 2];
4. V calculeaza
a
V
(mod p) si l trimite lui U;
5. U calculeaza K = (
a
V
)
a
U
(mod p) iar V calculeaza K = (
a
U
)
a
V
(mod p)
La sfarsitul protocolului, U si V obt in aceeasi cheie K =
a
U
a
V
(mod p). Procedeul este
aseman ator cu cel de predistribuire a cheii, cu diferent a ca exponent ii a
U
si a
V
se schimb a la
ecare sesiune.
4.4.1 Protocol ntre stat ii
Protocolul Die - Hellman se efectueaza dupa schema urmatoare:
-

U V

a
V

a
U
Acest protocol este nsa vulnerabil la un atac activ al unui intrus W, care se interpune ntre U
si V n modul urmator:
- -

U W V

a
U

a
V
W intercepteaz a mesajele lui U si V si le nlocuieste cu ale sale. La sfarsitul lui, W a stabilit
o cheie de comunicat ie
a
U
a

V
cu U si o cheie
a

U
a
V
cu V . Cand U doreste sa trimita un mesaj
lui V , el va utliliza cheia pe care o mparte cu W; acesta poate decripta mesajul si apoi sa l
cripteze cu cheia comuna cu V . Acesta primeste mesajul, far a sa realizeze ca a fost citit de W.
Acelasi lucru se nt ampla n cazul unui mesaj trimis de V catre U.
Este necesar deci ca utilizatorii sa si autentice punerea de acord a protocolului de stabilire
a cheilor. Acesta va numit protocol de punere de acord autenticat. Un astfel de acord, bazat
pe schimbul de chei Die - Helmann este numit protocol ntre stat ii (STS) si este construit de
Die, Van Oorschot si Wiener. O variant a STS simplicata este:
50 PRELEGEREA 4. PROTOCOALE DE DISTRIBUIRE A CHEILOR
1. U genereaza aleator un num ar a
U
[0, p 2]; apoi calculeaza num arul
a
U
(mod p)
pe care l trimite lui V ;
2. V genereaza aleator un num ar a
V
[0, p 2];
3. V calculeaza
a
V
(mod p), apoi K = (
a
U
)
a
V
(mod p) si y
V
= sig
V
(
a
V
,
a
U
).
Trimite lui U mesajul (C(V ),
a
V
(mod p), y
V
).
4. U calculeaza K = (
a
V
)
a
U
(mod p) si verica C(V ) cu ver
A
, apoi y
V
cu ver
V
extras
din C(V );
5. U calculeaza y
U
= sig
U
(
a
U
,
a
V
) si trimite lui V mesajul (C(U), y
U
);
6. V veric a C(U) cu ver
A
, apoi y
U
cu ver
U
extras din C(U).

In aceasta schem a, num arul prim p si elementul primitiv Z


p
sunt publice. Fiecare utilizator
U dispune de un protocol privat de semnatura sig
U
si unul public de vericare ver
U
. Arbitrul
A are de asemenea asociate funct iile sig
A
respectiv ver
A
. Certicatul lui U este
C(U) = (ID(U), ver
U
, sig
A
(ID(U), ver
U
))
Informat iile schimbaten cadrul protocolului STS simplicat sunt schematizate de diagrama
urmatoare:
-

-
U V

a
U

a
V
, sig
V
(
a
V
,
a
U
)
sig
U
(
a
U
,
a
V
)
Prin acest protocol, un intrus W nu se mai poate interpunentre U si V .

Intr-adevar, daca W in-
tercepteaza
a
U
si l nlocuieste cu
a

U
, el va trebui sanlocuiasca de asemenea si sig
V
(
a
V
,
a

U
)
cu sig
V
(
a

V
,
a
U
), ceea ce nu poate decat n cazul a
U
= a

U
si a
V
= a

V
(pentru ca nu cunoaste
sig
V
).
La fel, W nu poate nlocui sig
U
(
a

U
,
a
V
) cu sig
U
(
a
U
,
a

V
), pentru ca nu cunoaste sig
V
.
Varianta aceasta de protocol nu ofera totusi o conrmare a cheii. Pentru aceasta trebuie
modicat y
V
= e
K
(sig
V
(
a
V
,
a
U
)) n pasul 3 si y
U
= e
K
(sig
U
(
a
U
,
a
V
)) n pasul 5.

In acest fel, ca la Kerberos, se obt ine o conrmare a cheii decriptand o parte cunoscuta a
cheii de sesiune. Acesta este protocolul STS complet.
4.4.2 Punerea de acord MTI
Matsumoto, Takashima si Imai au dezvoltat mai multe protocoale de punere de acord, bazate
pe schimbul de chei Die - Hellman. Aceste protocoale numite MTI necesita doar doua
schimburi de informat ii ntre U si V (cate unul pe ecare sens) si nu folosesc protocoale de
semnatur a.
Unul din protocoalele MTI este denit astfel:
Fie p un numar prim si Z
p
un element primitiv, ambele publice. Fiecare utilizator
U poseda un identicator ID(U), un exponent secret a
U
[0, p 2] si o valoare publica
b
U
=
a
U
(mod p).
4.4. SCHIMBUL DE CHEI DIFFIE - HELLMAN 51
Arbitrul dispune de un protocol de semnatur a sig
A
si unul de semnatura ver
A
.
Fiecare utilizator poseda un certicat
C(U) = (ID(U), b
U
, sig
A
(ID(U), b
U
)).
Protocolul MTI este dat mai jos.

In urma lui, utilizatorii U si V obt in aceeasi cheie
K =
r
U
a
V
+r
V
a
U
(mod p).
1. U selecteaza aleator r
U
[0, p 2], calculeaza
s
U
=
r
U
(mod p) si trimite lui V (C(U), s
U
).
2. V selecteaza aleator r
V
[0, p 2], calculeaza
s
V
=
r
V
(mod p) si trimite lui U (C(V ), s
V
).
3. U calculeaza K = s
a
U
V
b
r
U
V
(mod p), iar V calculeaza K = s
a
V
U
b
r
V
U
(mod p).
Exemplul 4.3 Sa luam p = 27803 si = 5. Daca U alege a
U
= 21131, el va calcula b
U
=
5
21131
= 21420 (mod 27803), pe care l pune n certicatul sau. La fel, daca V alege a
V
= 17555,
va avea b
V
= 5
17555
= 17100 (mod 27803)
Presupunem ca U selecteaza r
U
= 169; el va trimite lui V
s
U
= 5
169
= 6268 (mod 27803).
Daca V alege r
V
= 23456, el trimite lui U
s
V
= 5
23456
= 26759 (mod 27803).
Acum se poate calcula
K
U,V
= s
a
U
V
b
r
U
V
(mod p) = 26759
21131
17100
169
= 21600 (mod 27803)
Aceeasi cheie 21600 o obt ine si V .
Semnatura arbitrului elimina posibilitatea interpunerii lui Oscar.

Intr-adevar, daca un intrus
W se interpune ntre U si V , va avea loc scenariul
- -

U W V C(V ),
r

V
C(U),
r
U
C(U),
r

U
C(V ),
r
V

In acest moment, U si V vor calcula chei diferite: U calculeaza K =


r
U
a
V
+r
V

a
U
(mod p),
iar V calculeazaK =
r
U

a
V
+r
V
a
U
(mod p).

In plus, nici una din cheile lui U sau V nu pot
calculate de W, pentru ca aceasta ar solicita cunoasterea exponentului secret a
U
respectiv a
V
.
Deci, desi U si V obt in chei distincte, nici una din ele nu poate calculata si de W (n ipoteza
ca problema logaritmului discret este dicila). Altfel spus, U si V sunt siguri ca nici o alta
persoana nu poate calcula cheia. Aceasta proprietate este numit a autenticare implicita.
Pentru atacuri pasive, securitatea sistemului MTI se reduce tot la dicultatea problemei
Die - Hellman.
4.4.3 Chei auto-certicate
Metoda punerii de acord prezentata n acest paragraf este construita de Girault; ea nu necesita
certicat. Valoarea cheii publice asigura o autenticare implicita.
Protocolul lui Girault combina proprietat ile sistemului RSA cu cele ale logaritmului discret.
Fie n = pq unde p = 2p
1
+ 1, q = 2q
1
+ 1 sunt numere prime sigure (p
1
, q
1
sunt numere prime
52 PRELEGEREA 4. PROTOCOALE DE DISTRIBUIRE A CHEILOR
distincte). Cum grupul multiplicativ Z

n
este izomorf cu Z
p
Z
q
, ordinul maxim al unui element
din Z

n
este deci cmmmc(p1, q 1) = 2p
1
q
1
. Fie Z

n
de ordin 2p
1
q
1
. Vom utiliza problema
logaritmului discret n subgrupul ciclic al lui Z

n
, generat de .

In acest protocol, factorizarea n = pq este cunoscuta numai de catre arbitru. Valorile n,


sunt publice, iar p, q sunt secrete (deci si p
1
, q
1
). A alege un exponent de criptare RSA public,
sa spunem e. Exponentul de decriptare d = e
1
(mod (n)) este secret.
Fiecare utilizator U are un identicator C(U) si primeste de la A o cheie publica auto-
certicata p
U
conform urmatorului protocol:
1. U alege un exponent secret a
U
si calculeaza b
U
=
a
U
(mod n);
2. U trimite lui A valorile a
U
si b
U
;
3. A calculeaza p
U
= (b
U
ID(U))
d
(mod n), pe care l trimite lui U.
De remarcat aportul arbitrului n calculul lui p
U
. Se observa ca
b
U
= p
e
U
+ ID(U) (mod n)
poate calculat folosind numai informat iile publice.
Protocolul lui Girault este dat mai jos. Schematizat, schimbul de informat ii arata n felul
urmator:
-

U V
ID(V ), p
V
,
r
V
(mod n)
ID(U), p
U
,
r
U
(mod n)
La sfarsitul acestui protocol, U si V dispun de aceeasi cheie:
K =
r
U
a
V
+r
V
a
U
(mod n).
1. U alege aleator r
U
si calculeaza s
U
=
r
U
(mod n);
tripletul (ID(U), p
U
, s
U
) este trimis lui V .
2. V alege aleator r
V
si calculeaza s
V
=
r
V
(mod n);
tripletul (ID(V ), p
V
, s
V
) este trimis lui U.
3. U calculeaza cheia K = s
a
U
V
(p
e
V
+ ID(V ))
r
U
(mod n).
Cheia calculata de V este K = s
a
V
U
(p
e
U
+ ID(U))
r
V
(mod n).
Exemplul 4.4 Sa presupunem p = 839 si q = 863. Vom avea n = 724057 si (n) = 722356.
Elementul = 5 are ordinul 2p
1
q
1
= (n)/2.
Daca arbitrul A alege e = 84453 drept exponent de criptare, vom avea d = 125777.
Daca ID(U) = 500021 si a
U
= 111899, vom avea b
U
= 488889 si p
U
= 650704.

In mod
similar, consideram ID(V ) = 500022 si a
V
= 123456, deci b
V
= 111692, p
V
= 683556.
Daca U si V vor sa stabileasca o cheie comuna si U alege numarul r
U
= 56381, iar V
numarul r
V
= 356935, vom avea s
U
= 171007, s
V
= 320688.
Dupa protocol, cei doi vor dispune de cheia K = 42869.
4.4. SCHIMBUL DE CHEI DIFFIE - HELLMAN 53
Sa studiem put in evitarea atacurilor cu acest sistem de chei auto-certicate.
Cum valorile b
U
, p
U
, ID(U) nu sunt semnate de A, nimeni nu poate verica direct autentic-
itatea lor. Sa presupunem ca ele provin de la W (fara ajutorul arbitrului), care vrea sa se dea
drept U. Daca W furnizeaza ID(U) si daca p
U
conduce la un b
U

gresit, nu se poate calcula


exponentul a
U

asociat (daca problema logaritmului discret este dicila). Far a a


U

, W nu poate
determina cheia.
O situat ie similara apare daca W se interpune ntre U si V . El poate mpiedica pe U si
V sa obt in a o cheie comuna, dar nu poate efectua calculele lor. Are loc deci o autenticare
implicita, ca la MTI.
O ntrebare ar : De ce U trebuie sa comunice arbitrului valoarea a
U
? A poate determina
p
U
plecand de la b
U
, far a sa cunoasca a
U
. Acest lucru se face pentru ca arbitrul sa e convins
ca U poseda a
U
, nainte de a calcula p
U
.
Daca A nu face aceasta vericare nainte de calculul lui p
U
, sistemul poate atacat.
Sa presupunem ca W alege un a

U
fals si determina b
U

=
a

U
(mod n). Cu ele, stabileste o
cheie publica falsa p

U
= (b

U
ID(U))
d
(mod n) n felul urmator:
W calculeaza b
W

= B
U

ID(U) + ID(W) si trimite lui A perechea (b


W

, ID(W)). Pre-
supunem ca arbitrul calculeaza efectiv pentru W valoarea p
W

= (b
W

ID(W))
d
(mod n).
Atunci, din
b
W

ID(W) b
U

ID(U) (mod n)
se obt ine imediat p
W

= p
U

.
Sa presupunem acum ca U si V efectueaza protocolul, iar W se interpune conform schemei
urmatoare:
- -

U W V
ID(V ), p
V
,
r
V
mod n
ID(U), p
U
,
r
U
mod n ID(U), p
U

,
r

U
mod n
ID(V ), p
V
,
r
V
mod n
V calculeaza deci cheia K

=
r

U
a
V
+r
V
a

U
(mod n), iar U calculeaza K =
r
U
a
V
+r
V
a
U
(mod n).
W obt ine K

calculand K

= s
a

U
V
(p
e
V
+ ID(V )))
r

U
(mod n).
W si V poseda deci aceeasi cheie, n timp ce V crede ca o mparte cu U.

In acest moment,
W poate decripta mesajele trimise de V pentru U.
Prelegerea 5
Sisteme de partajare a secretelor
5.1 Sistemul condent ial al lui Shamir

Intr-o banca, seiful trebuie deschis n ecare zi. Banca are trei directori, dar nu ncredint eaza
combinat ia seifului nici unuia din ei. Ea doreste sa dispuna de un sistem de acces prin care
orice asociere de doi directori sa poata deschide seiful, dar acest lucru sa e imposibil pentru
unul singur.
Ca un exemplu, conform revistei Time Magazin (4 mai 1992), n Rusia, accesul la arma
nuclear a utilizeaza un astfel de sistem doi - din - trei. Cele trei persoane sunt Presedintele
t arii, Presedintele Parlamentului si Ministrul Apar arii.
Sa prezentam ntai un sistem de partajare a secretului numit sistem condent ial.
1
Denit ia 5.1 Fie t, w doua numere ntregi pozitive, t w. Un sistem condent ial (t, w) este
o metoda de partajare a unei chei K ntre membrii unei mult imi T de w participant i, astfel
ncat orice asociere de t participant i sa poata calcula K, lucru imposibil pentru asocieri de t 1
sau mai put ini participant i.
Exemplul precedent este deci un sistem condent ial (2, 3).
Valoarea lui K este aleasa de un arbitru
2
D. Vom presupune ca D , T. D va distribui n
secret componente ale cheii membrilor grupului T, astfel nc at nici un participant sa nu cunoasca
componentele celorlalt i si nici sa e capabil ca din componenta sa sa poata recompune cheia
K.
Ulterior, participant ii unei submult imi B T pot pune n comun componentele cheii cunos-
cute de ei (sau sa le dea unei autoritat i n care au ncredere) cu scopul de a determina K. Ei
trebuie sa poata reusi n aceasta tentativa daca si numai daca card(B) t.
Sa notam
T= P
i
[ 1 i w
mult imea celor w participant i. / este spat iul tuturor cheilor posibile, iar o este spat iul
componentelor (toate componentele posibile ale cheii).
Sistemul prezentat n aceasta sect iune este datorat lui Shamir si a fost creat n 1979. Fie
p (p w + 1) un numar prim si /= Z
p
, o= Z
p
. Deci cheile si componentele sunt numere din
Z
p
. Sistemul condent ial al lui Shamir, prezentat mai jos, se bazeaza pe un polinom aleator
1
Threshold scheme n engleza, a seuil n franceza.
2
Dealer n engleza, initiateur n franceza.
55
56 PRELEGEREA 5. SISTEME DE PARTAJARE A SECRETELOR
a(X) de grad cel mult t 1, n care termenul liber este K. Fiecare participant P
i
aa un punct
(x
i
, y
i
) de pe gracul acestui polinom.
1. (Init ializare): D alege w elemente distincte x
1
, . . . , x
w
Z
p
(x
i
publice), ecare x
i
ind comunicat lui P
i
.
2. Sa presupunem ca D doreste sa repartizeze cheia K Z
p
. D va selecta aleator t 1
elemente a
1
, . . . , a
t1
Z
p
si construieste polinomul
a(X) = K
t1

j=1
a
j
X
j
(mod p).
3. D calculeaza y
i
= a(x
i
) si comunic a aceasta valoare lui P
i
(1 i w).
Fie acum o submult ime P
i
1
, . . . , P
i
t
de participant i care doresc sa reconstituie cheia. Ei stiu
valorile x
i
j
si y
i
j
= a(x
i
j
) pentru 1 j t; a(X) Z
q
[X] este polinomul (secret) folosit de D.
Cum gradul lui este cel mult t 1, putem scrie
a(X) = a
0
+ a
1
X + . . . + a
t1
X
t1
unde a
0
= K iar a
0
, . . . , a
t1
Z
q
sunt necunoscute. Ele se aa rezolvand sistemul liniar
de t ecuat ii y
i
j
= a(x
i
j
). Daca ecuat iile sunt independente, solut ia este unica, iar valoarea lui
a
0
este chiar cheia K.
Exemplul 5.1 Sa presupunem p = 17, t = 3, w = 5, iar x
i
= i, (1 i 5). Daca
B = P
1
, P
3
, P
5
vor sa ae cheia aducand ecare informat iile 8, 10 si respectiv 11, ei vor
scrie polinomul general a(X) = a
0
+ a
1
X + a
2
X
2
si vor reduce problema la rezolvarea n Z
17
a
sistemului liniar
_

_
a(1) = a
0
+ a
1
+ a
2
= 8
a(3) = a
0
+ 3a
1
+ 9a
2
= 10
a(5) = a
0
+ 5a
1
+ 8a
2
= 11
Acesta admite solut ia unica n Z
17
: a
0
= 13, a
1
= 10, a
2
= 2.
Deci valoarea cautata este K = 13.
Teorema 5.1

In sistemul condent ial al lui Shamir, orice mult ime B de t participant i poate
reconstitui n mod unic cheia K.
Demonstrat ie: Fie a(X) = a
0
+ a
1
X + . . . + a
t1
X
t1
polinomul ales de D, unde a
0
= K.
Armat ia se reduce la a arata ca sistemul de ecuat ii y
i
j
= a(x
i
j
) (1 j t), de necunoscute
a
0
, . . . , a
t1
, admite solut ie unica. Determinantul acestui sistem este

1 x
i
1
x
2
i
1
. . . x
t1
i
1
1 x
i
2
x
2
2
1
. . . x
t1
i
2
. . .
1 x
i
t
x
2
it
. . . x
t1
it

1j<kt
(x
i
k
x
i
j
) (mod p)
Deoarece toate numerele x
i
sunt distincte, iar Z
p
este corp, rezulta ca acest produs este
nenul, deci sistemul are totdeauna solut ie unica, iar a
0
este chiar cheia cautat a. 2
Ce se nt ampl a daca un grup de t 1 participant i ncearc a sa calculeze cheia K ?
5.1. SISTEMUL CONFIDENT IAL AL LUI SHAMIR 57
Daca procedeaza conform algoritmului anterior, vor obt ine un sistem de t 1 ecuat ii cu t
necunoscute. Fie y
0
o valoare arbitrara a cheii K. Vom avea y
0
= a
0
= a(0), care formeaza a
t - a ecuat ie a sistemului. Acesta ofera de asemenea solut ie unica. Deci, pentru orice valoare
K Z
p
exista un polinom unic a
K
(X) Z
p
[X] care verica toate condit iile:
y
i
j
= a
K
(x
i
j
) (1 j t 1), y
0
= a
K
(0).
Rezulta ca orice valoare a lui K este consistent a cu componentele det inute de cei t 1
participant i; asocierea lor nu ofera nici o informat ie suplimentara pentru aarea cheii.
Mai exista o modalitate de abordare a sistemului condent ial al lui Shamir: folosind poli-
noamele de interpolare Lagrance. Acestea ofera o exprimare explicita a polinomului a(X), sub
forma
a(X) =
t

j=1
y
i
j

1 k t
k ,= j
x x
i
k
x
i
j
x
i
k
.
Evident, acesta este un polinom de grad cel mult t 1, cu proprietatea y
i
j
= a(x
i
j
), j =
1, . . . , t. Cum un astfel de polinom este unic, rezulta ca el este chiar polinomul cautat.
Un grup B de t participant i poate calcula a(X) pe baza acestei formule. De fapt, nici nu
este nevoie se determine tot polinomul: este sucient sa obt ina K = a(0). Deci, nlocuind n
formul a pe X cu 0, avem
K =
t

j=1
y
i
j

1 k t
k ,= j
x
i
k
x
i
k
x
i
j
.
Daca denim
b
j
=

1 k t
k ,= j
x
i
k
x
i
k
x
i
j
(1 j t),
aceste valori pot precalculate si facute publice de catre arbitru. Cheia este atunci o combinat ie
liniara de t componente:
K =
t

j=1
b
j
y
i
j
.
Exemplul 5.2 Sa revenim la Exemplul 5.1. Participant ii P
1
, P
3
, P
5
pot calcula b
1
, b
2
, b
3
;
se obt ine (calculele sunt facute modulo 17):
b
1
=
x
3
x
5
(x
3
x
1
)(x
5
x
1
)
= 3 5 (2)
1
(4)
1
= 4.
Similar, b
2
= 3, b
5
= 11. Cu componentele 8, 10 si 11, cheia se determina imediat:
K = 4 8 + 3 10 + 11 11 = 13 (mod 17)
Aceasta varianta ofera o simplicare a algoritmului Shamir pentru cazul w = t. Ea funct ioneaza
pentru /= Z
m
, o= Z
m
(m nu este obligatoriu numar prim si chiar mai mult este posibil
ca m w). Noul algoritm este:
58 PRELEGEREA 5. SISTEME DE PARTAJARE A SECRETELOR
1. D alege aleator t 1 elemente y
1
, . . . , y
t1
Z
m
;
2. D calculeaza y
t
= K
t1

i=1
y
i
(mod m);
3. Fiecare element y
i
este transmis n secret lui P
i
(1 i t).
Cei t participant i pot determina cheia K pe baza formulei
K =
t

i=1
y
i
(mod m).
Evident, t 1 participant i nu pot obt ine cheia K. Chiar daca pun n comun componentele lor,
ei pot determina valoarea K y, unde y este componenta celui care lipseste. Cum y este o
valoare aleatoare din Z
m
, nu se va obt ine nici o informat ie suplimentar a referitoare la cheie.
Acesta este deci un sistem condent ial (t, t).
5.2 Structura de acces si partaj a secretului general

In paragraful precedent am studiat situat ia cand orice asociere de t participant i din totalul
de w poate calcula cheia. Vom restrange aici aceasta condit ie, specicand ce submult imi de
participant i pot avea acces la cheie si pentru ce submult imi acest acces este interzis. Fie o
mult ime de submult imi ale lui T, ecare din ele reprezentand o asociat ie autorizata sa calculeze
cheia K. se numeste structura de acces, iar submult imile ei se numesc submult imi autorizate.
Fie / o mult ime de chei si o o mult ime de componente. Cand arbitrul D doreste sa
repartizeze o cheie K /, el va distribui cate o component a ecarui participant, urmand ca
ulterior, o submult ime de participant i sancerce sa determine K punandn comun componentele
cunoscute de ei.
Denit ia 5.2 Un sistem perfect de partajare a secretelor cu structura de acces este un pro-
cedeu de partajare a secretului unei chei K peste o mult ime T de participant i, astfel ncat:
1. Orice submult ime autorizata B T de participant i poate reconstitui cheia din componen-
tele cunoscute de ei;
2. Orice submult ime neautorizata B T de participant i nu poseda nici o informat ie despre
valoarea lui K.
Un sistem condent ial (t, w) realizeaza structura de acces = B T [ card(B) t. O
asemenea structura de numeste structura condent iala. Conform paragrafului precedent, sis-
temul condent ial al lui Shamir este perfect si realizeaza o structura condent ial a.
Sa studiem securitatea sistemelor de partajare a secretelor. Ca de obicei, nu se impune nici
o restrict ie asupra puterii de calcul a submult imilor neautorizate.
Fie B si B C T. Daca C cauta sa determine cheia K, ea va reusi lucrand numai
cu B si ignorand participant ii din C B. Altfel spus, structura de acces satisface condit ia de
monotonie:
5.3. CONSTRUCT IA CIRCUITELOR MONOTONE 59
Daca B si B C T, atunci C .

In continuare vom presupune ca orice structura de acces este monotona.


Un element B este minimal daca A B = A , . Vom nota cu
0
mult imea
elementelor minimale din . Se observa ca aceasta mult ime caracterizeaza complet . Mai
exact,
= C T [ B
0
, B C.
Spunem ca este nchiderea lui
0
si notam prin =
0
.
Exemplul 5.3 Fie T= P
1
, P
2
, P
3
, P
4
si
0
= P
1
, P
2
, P
4
, P
1
, P
3
, P
4
, P
2
, P
3
. Vom avea
= P
1
, P
2
, P
4
, P
1
, P
3
, P
4
, P
2
, P
3
, P
1
, P
2
, P
3
, P
2
, P
3
, P
4
, P
1
, P
2
, P
3
, P
4
.
Invers, ind dat , se vede imediat ca
0
este mult imea part ilor sale minimale.

In cazul structurilor condent iale de acces, baza este mult imea submult imilor formate cu t
participant i.
5.3 Construct ia circuitelor monotone
Ideea din aceasta sect iune apart ine lui Benaloh si Leichter; ea consta n construirea unui cir-
cuit combinat ional care recunoaste structura de acces si genereaza un sistem de partajare a
secretului. Un astfel de circuit este numit de autori circuit monoton.
Fie C un circuit computat ional cu w intr ari notate prin variabilele booleene x
1
, . . . , x
w
(corespunzatoare celor w participant i P
1
, . . . , P
w
) si o iesire booleana y = C(x
1
, . . . , x
w
). Pre-
supunem ca la construct ia circuitului sunt folosite numai port i AND si OR (far a port i NOT).
Un astfel de circuit este numit monoton daca modicarea unei intr ari din 0 n 1 nu va implica
niciodata transformarea iesirii y din 1 n 0.
Vom nota
B(x
1
, . . . , x
w
) = P
i
[ x
i
= 1
mult imea participant ilor asociat i n mult imea B. Presupunand ca circuitul C este monoton,
vom avea
(C)= B(x
1
, . . . , x
w
) [ C(x
1
, . . . , x
w
= 1.
Circuitul C ind monoton, (C) este o mult ime monotona de part i ale lui T.
Fiind data o mult ime monotona de part i ale lui T, se poate construi usor un circuit
monoton C cu (C)= . Un exemplu de construct ie este urmatorul:
Fie
0
o baza a lui . Vom construi formula booleana (n forma normal disjunctiva)

B
0
_
_

P
i
B
P
i
_
_
Fiecare clauza din aceasta forma normala este legata printr-o poarta AND, iar disjunc-t ia
nala corespunde unei port i OR. Numarul total de port i folosite este card(
0
) + 1.
Fie acum C un circuit monoton care recunoaste . Vom prezenta un algoritm care permite
arbitrului D sa construiasca un sistem perfect de partajare a secretului cu structura de acces
. Vom folosi sistemul condent ial (t, t) din paragraful anterior. Mult imea cheilor este deci
/= Z
m
.
Algoritmul parcurge circuitul de la iesire spre intrare, marcand recursiv cu x
V
/, ecare
arc V parcurs (n sens invers). Init ial, arcului care marcheaz a iesirea y i se atribuie valoarea
x
out
= K a cheii. Formal, algoritmul este:
60 PRELEGEREA 5. SISTEME DE PARTAJARE A SECRETELOR
1. x
out
K;
2. pentru orice poarta G din care iese un arc marcat x, iar arcele care intr a sunt
nemarcate, executa:
(a) Daca G este o poarta OR, atunci x
V
x pentru orice arc V care intr a n G;
(b) Daca G este o poarta AND si V
1
, . . . , V
t
sunt arcele care intra n G, atunci
i. Alege aleator x
V,1
, . . . , x
V,t1
Z
m
;
ii. Calculeaza x
V,t
= x
t1

i=1
x
V,i
(mod m);
iii. Marcheaz a arcul V
i
cu x
V,i
, (1 i t).
Exemplul 5.4 Pentru mult imea din Exemplul 5.3, avem
0
= P
1
, P
2
, P
4
, P
1
, P
3
, P
4
,
P
2
, P
3
, deci se poate asocia expresia booleana
(P
1
P
2
P
4
) (P
1
P
3
P
4
) (P
2
P
3
).
Circuitul monoton asociat este desenat mai jos; n paralel au fost marcate si arcele, conforma
algoritmului descris:
"!

&% "! &%
?
? -
?
?
? ?
u u u u
? -
? ?
?
? ?
?
?
-
?
?
?
-
?
x
1
x
2
x
3
x
4
K
K K
K
a
1 b
1
a
2
c
1 Kc
1
b
2
Ka
1
a
2
Kb
1
b
2
Aici a
1
, a
2
, b
1
, b
2
, c
1
, c
2
sunt numere alese aleator n Z
m
. Fiecare participant primeste drept
componenta doua numere:
1. a
1
si b
1
pentru P
1
,
2. a
2
si c
1
pentru P
2
,
3. b
2
si K c
1
pentru P
3
,
4. K a
1
a
2
si K b
1
b
2
pentru P
1
.
Fiecare submult ime autorizata poate calcula valoarea lui K. Astfel, P
1
, P
2
, P
4
determina
K = a
1
+a
2
+(K a
1
a
2
), submult imea P
1
, P
3
, P
4
calculeaza K = b
1
+b
2
+(K b
1
b
2
),
iar P
2
, P
3
va calcula K = c
1
+ (K c
1
).
Sa vedem acum ce se nt ampl a cu mult imile neautorizate.
Ca o remarca, daca o mult ime B este neautorizata, orice submult ime a sa va de asemenea
neautorizata.
Denit ia 5.3 O mult ime B T este maximal neautorizat a daca
B
1
B = B
1
.
Este sucient deci de demonstrat ca mult imile maximal neautorizate nu pot aa cheia din
informat iile pe care le det in.
5.4. RATA DE INFORMAT IE 61
Exemplul 5.5 Revenind la exemplul anterior, mult imile maximal neautorizate sunt P
1
, P
2
,
P
1
, P
3
, P
1
, P
4
, P
2
, P
4
, P
3
, P
4
.

In ecare caz, pentru determinarea cheii K lipseste o
informat ie denita aleator. De exemplu, P
1
, P
2
det in informat iile a
1
, a
2
, b
1
si c
1
. Pentru a
reconstitui cheia K ar avea nevoie cel put in de numarul K a
1
a
2
, sau de K c
1
.
Sisteme cu aceeasi structura de acces pot obt inute folosind si alte circuite.
Exemplul 5.6 Sa reluam Exemplul 5.3 si sa rscriem expresia booleana sub forma normal con-
junctiva:
(P
1
P
2
) (P
1
P
3
) (P
2
P
3
) (P
2
P
4
) (P
3
P
4
)
Construind sistemul condent ial corespunzator acestei expresii, vom avea urmatoarea distri-
but ie a componentelor (omitem detaliile):
1. P
1
primeste a
1
si a
2
;
1. P
2
primeste a
1
, a
3
si a
4
;
1. P
3
primeste a
2
, a
3
si K a
1
a
2
a
3
a
4
;
1. P
4
primeste a
4
si K a
1
a
2
a
3
a
4
;
Teorema 5.2 Fie C un circuit boolean monoton. Construct ia sa genereaza un sistem perfect
de partajare a secretului, a carui structura de acces este (C).
Demonstrat ie: Vom folosi o recurent a asupra num arului de port i din circuitul C. Cazul cand
C are o singura poarta este banal: daca poarta este OR, ecare participant cont ine cheia K
si structura de acces este mult imea tuturor part ilor nevide ale lui T; daca poarta este AND si
are t intrari, se obt ine sistemul condent ial (t, t) denit anterior.
Sa presupunem ca pentru j > 1, orice circuit C cu mai put in de j port i veric a teorema,
si e C un circuit cu j port i. Vom considera ultima poarta G a acestui circuit (din care iese
rezultatul y). Ea nu poate decat OR sau AND. Daca G este o poarta OR, sa consideram cele
t arce care intra n G : V
i
(1 i t). Acestea sunt arcele de iesire din t circuite C
i
; conform
ipotezei de induct ie, ecare astfel de circuit deneste un sub-sistem de partajare a secretului,
cu structura de acces (C
i
). Vom avea evident
(C) =
t
_
i=1
(C
i
).
Cum valoarea cheii se atribuie ecarui arc V
i
, sistemul va avea structura de acces (C).
Procedeul este similar daca G este o poarta AND.

In acest caz,
(C) =
t

i=1
(C
i
).
Deoarece K este repartizata peste toate arcele V
i
conform unui sistem condent ial (t, t),
sistemul total va admite (C) drept structura de acces. 2
Cand o mult ime autorizata B doreste aarea cheii, ea trebuie sa stie circuitul utilizat de
arbitru pentru construirea sistemului si sa deduca de aici ce componente sunt necesare pentru
parcurgerea arcelor respective. Aceasta informat ie trebuie sa e publica. Numai valoarea
componentelor trebuie sa e secreta.
5.4 Rata de informat ie
Fie T o mult ime de participant i si o spat iul tuturor componentelor posibile ale cheii. O
distribut ie de componente este o funct ie
62 PRELEGEREA 5. SISTEME DE PARTAJARE A SECRETELOR
f : T o
Ea codica matematic modalitatea de repartizare a informat iilor ntre participant i. f(P
i
)
va componenta distribuita participantului P
i
(1 i w).
Pentru ecare K /, e T
K
mult imea tuturor distribut iilor posibile ale cheii K.

In general,
T
K
este publica. Denim
T=
_
KK
T
K
.
T este ansamblul complet al tuturor distribut iilor posibile de chei. Rolul arbitrului va de
a selecta aleator un element f T
K
si de a distribui componentele n conformitate cu aceasta
alegere.
Pentru o submult ime B T (autorizata sau nu) de participant i, se deneste S(B) =
f[
B
[ f T, unde funct ia f
B
: B o este restrict ia distribut iei de part i f la submult imea
B; ea este deci denita prin f
B
(P
i
) = f(P
i
), P
i
B.
Deci S(B) este mult imea tuturor distribut iilor posibile ale componentelor la elementele
submult imii B.
Ne punem acum problema evalu arii performant elor sistemelor perfecte de partajare a se-
cretelor construite anterior, pe baza structurilor de acces monotone.

In cazul unui sistem condent ial (t, w), circuitul boolean construit pe baza expresiei n forma
normal disjunctiva are 1 + C
t
w
port i. Fiecare participant primeste o componenta formata din
C
t1
w1
numere din Z
m
. Aceasta partajare este foarte slaba comparativ cu sistemul condent ial
al lui Shamir (t, w), care ofera acelasi rezultat folosind componente formate dintr-un singur
num ar.
Pentru masurarea performant elor sistemelor perfecte de partajare a secretelor, vom folosi
un instrument numit rata de informat ie.
Denit ia 5.4 Consideram un sistem perfect de partajare a secretelor cu structura de acces .
Rata de informat ie a unui participant P
i
este prin denit ie

i
=
log
2
(card(X))
log
2
(card(S(P
i
)))
.
S(P
i
) o este mult imea componentelor posibile pe care le poate primi participantul P
i
. S-a
notat cu X = / mult imea cheilor posibile.
Rata de informat ie a sistemului este
= min
i
[ 1 i w.
Exemplul 5.7 Sa comparam cele doua sisteme date ca exemplu n paragraful anterior. Sis-
temul din Exemplul 5.4 are rata de informat ie =
log
2
m
log
2
m
2
=
1
2
.
Pentru sistemul din Exemplul 5.6, avem =
log
2
m
log
2
m
3
=
1
3
.
Primul sistem este deci mai bun.

In general, daca se construieste un sistem de partajare a secretelor plecand de la un circuit


monoton C, rata sa de informat ie se obt ine folosind urmatoarea teorema:
Teorema 5.3 Fie C un circuit boolean monoton. Exista atunci un sistem perfect de partajare
a secretelor, cu structura de acces (C), care admite ca rata de informat ie
= max
1iw
_
1
r
i
_
unde r
i
este numarul de arce de intrare n circuit (pentru valorile x
i
).
5.5. SISTEMUL DE PARTAJARE AL LUI BRICKELL 63
Evident, este preferabila o rata de informat ie cat mai mare. Valoarea ei este nsa limitata
superior, conform teoremei urmatoare:
Teorema 5.4 Pentru orice sistem perfect de partajare a secretelor cu structura de acces ,
rata de informat ie verica inegalitatea 1.
Demonstrat ie: Sa consideram un sistem perfect de partajare a secretelor av and structura de
acces . Fie B
0
si P
j
B un participant. Denim B

= B P
j
. Fie g S(B). Cum
B

, , distribut ia componentelor g[
B
nu da nici o informat ie asupa cheii. Deci, pentru orice
K / exista o distribut ie a componentelor g
K
T astfel ca g
K
[
B
= g[
B
. Cum B , vom
avea g
K
(P
j
) ,= gK

(P
j
) pentru K ,= K

. Deci card(S(P
j
)) card(/), adica 1. 2
Un sistem cu = 1 va numit ideal. Ca un exemplu, sistemul condent ial al Shamir are
= 1, deci este un sistem ideal.

In schimb, rata de informat ie pentru un sistem condent ial
(t, w) bazat pe circuite monotone construite cu forma normal disjunctiva este
1
C
t1
w1
, extrem de
inecient a daca 1 < t < w.
5.5 Sistemul de partajare al lui Brickell
Sistemul construit n acest paragraf este cunoscut sub numele de construct ia vectoriala a lui
Brickell.
Fie o structura de acces, p un num ar prim, iar d 2 un numar ntreg. Fie
|: T Z
d
p
o funct ie cu proprietatea
(1, 0, . . . , 0) | (P
i
) [ P
i
B) B . (A)
Altfel spus, vectorul (1, 0, . . . , 0) este o combinat ie liniara de vectori din mult imea
| (P
i
) [ P
i
B daca si numai daca B este o submult ime autorizata.
Plecand de la aceasta funct ie, vom construi un sistem de partajare a secretelor cu /=
S(P
i
) = Z
p
(1 i w). Pentru orice a = (a
1
, . . . , a
d
) Z
d
p
. vom deni o funct ie de distribut ie
a componentelor f
a
: T o prin f
a
(x) = a | (x).
S-a notat cu produsul scalar a doi vectori. Algoritmul de partajare a secretelor Brickell
este urmatorul:
1. (Init ializare) Pentru 1 i w, D atribuie lui P
i
vectorul | (P
i
) Z
d
p
.
Acesti vectori sunt publici.
2. Pentru repartizarea cheii K Z
p
, arbitrul D alege aleator d 1 elemente
a
2
, . . . , a
d
Z
p
.
3. Folosind vectorul a = (K, a
2
, . . . , a
d
), arbitrul calculeaza componenta
y
i
= a | (P
i
) (1 i w), pe care o da lui P
i
.
Vom avea rezultatul urmator:
64 PRELEGEREA 5. SISTEME DE PARTAJARE A SECRETELOR
Teorema 5.5 Daca | verica proprietatea (A), mult imea distribut iilor de componente T
K
,
K / formeaza un sistem perfect de partajare a secretelor, cu structura de acces .
Demonstrat ie: Sa aratam ntai ca daca B este o mult ime autorizata, participant ii lui B pot
calcula cheia K. Deoarece (1, 0, . . . , 0) | (P
i
) [ P
i
B), putem scrie
(1, 0, . . . , 0) =

{i|P
i
B}
c
i
| (P
i
)
unde c
i
Z
p
. Fie s
i
componenta lui P
i
. Vom avea s
i
= a | (P
i
), unde a este vectorul
necunoscut ales de D, iar K = a
1
= a (1, 0, . . . , 0). Vom avea deci
K =

{i|P
i
B}
c
i
a | (P
i
).
Component ii grupului B pot reconstitui deci cheia K =

{i|P
i
B}
c
i
s
i
.
Ce se nt ampl a daca B nu este autorizat ? Fie e dimensiunea spat iului vectorial
| (P
i
) [ P
i
B) (evident, e card(B)). Sa consideram K / si sistemul liniar
| (P
i
) a = s
i
P
i
B
(1, 0, . . . , 0) a = K
cu necunoscutele a
1
, . . . , a
d
. Matricea sistemului are rangul e + 1 deoarece (1, 0, . . . , 0) ,
| (P
i
) [ P
i
B). Deci, independent de valoarea lui K, spat iul solut iilor este de1, adica ex-
ista p
de1
distribut ii de componente n ecare T
K
, consistente cu componentele participant ilor
din B. 2
Sistemul condent ial (t, w) al lui Shamir este un caz particular al acestei construct ii.

Intr-
adevar, e d = t si | (P
i
) = (1, x
i
, x
2
i
, . . . x
t1
i
), pentru 1 i w, unde x
i
este coordonata x
data de P
i
. Sistemul obt inut este echivalent cu cel al lui Shamir.
Un alt rezultat general se refera la structurile de acces care admit ca baza un ansamblu
de perechi care denesc un graf multipartit complet. Reamintim, un graf G = (V, E) este
multipartit complet daca V se poate partit ionan submult imile V
1
, . . . , V
s
astfel nc at x, y E
daca si numai daca x V
i
, y V
j
cu i ,= j.
Mult imile V
i
se numesc componente. Daca card(V
i
) = n
i
(1 i s), graful este notat
K
n
1
,...,ns
. Graful multipartit complet K
1,...,1
cu s componente este de fapt un graf complet si se
noteaza K
s
.
Teorema 5.6 Fie G = (V, E) un graf multipartit complet. Atunci exista un sistem perfect de
partajare a secretelor, ideal, cu structura de acces E peste mult imea V de participant i.
Demonstrat ie: Fie V
1
, . . . , V
s
componentele lui G, si x
1
, . . . , x
s
Z
p
distincte (p s). Fie si
d = 2. Pentru ecare participant v V
i
se deneste | (v) = (x
i
, 1). Proprietatea (A) se verica
imediat, deci conform Teoremei 5.5 armat ia este demonstrata. 2
Vom aplica acest rezultat considerand structurile de acces posibile pentru patru partici-
pant i. Va sucient sa luam n calcul numai structurile a caror baza nu se poate partit iona n
doua mult imi nevide. De exemplu,
0
= P
1
, P
2
, P
3
, P
4
poate partit ionat an P
1
, P
2

P
3
, P
4
, ecare cu dezvoltarea sa independent a, deci nu o vom lua n considerare. O lista
completa a structurilor de acces neizomorfe pentru 2, 3 sau 4 participant i este data n Tabelul
5.1 (s-a notat cu

valoarea maxima a ratei de informat ie pentru structura respectiva).


Se pot construi sisteme ideale pentru 10 din aceste 18 structuri de acces. Acestea sunt
structuri condent iale sau structuri a caror baza este un graf multipartit, pentru care se aplica
Teorema 5.6.
5.5. SISTEMUL DE PARTAJARE AL LUI BRICKELL 65
Tabelul 5.1: Structuri de acces cu maxim 4 participant i
Nr.crt w Submult imile lui G
0

Rezultate
1. 2 P
1
P
2
1 Condent ial (2, 2)
2. 3 P
1
P
2
, P
2
P
3
1
0
K
1,2
3. 3 P
1
P
2
, P
2
P
3
, P
1
P
3
1 Condent ial (2, 3)
4. 3 P
1
P
2
P3 1 Condent ial (3, 3)
5. 4 P
1
P
2
, P
2
P
3
, P
3
P
4
2/3
6. 4 P
1
P
2
, P
1
P
3
, P
1
P
4
1
0
K
1,3
7. 4 P
1
P
2
, P
1
P
4
, P
2
P
3
, P
3
P
4
1
0
K
2,2
8. 4 P
1
P
2
, P
2
P
3
, ; P
2
P
4
, P
3
P
4
2/3
9. 4 P
1
P
2
, P
1
P
3
, P
1
P
4
, P
2
P
3
, P
2
P
4
1
0
K
1,1,2
10. 4 P
1
P
2
, P
1
P
3
, P
1
P
4
, P
2
P
3
, P
2
P
4
, P
3
P
4
1 Condent ial (2, 4)
11. 4 P
1
P
2
P
3
, P
1
P
4
1
12. 4 P
1
P
3
P
4
, P
1
P
2
, P
2
P
3
2/3
13. 4 P
1
P
3
P
4
, P
1
P
2
, P
2
P
3
, P
2
P
4
2/3
14. 4 P
1
P
2
P
3
, P
1
P
2
P
4
1
15. 4 P
1
P
2
P
3
, P
1
P
2
P
4
, P
3
P
4
1
16. 4 P
1
P
2
P
3
, P
1
P
2
P
4
, P
1
P
3
P
4
1
17. 4 P
1
P
2
P
3
, P
1
P
2
P
4
, P
1
P
3
P
4
, P
2
P
3
P
4
1 Condent ial (3, 4)
18. 4 P
1
P
2
P
3
P
4
1 Condent ial (4, 4)
Exemplul 5.8 Sa consideram structura de acces cu numarul 9 din Tabelul 5.1; deci d = 2 si
p 3. Denim | prin
| (P
1
) = (0, 1), | (P
2
) = (0, 1), | (P
3
) = (1, 1), | (P
4
) = (1, 2).
Aplicand Teorema 5.6 se obt ine o structura perfecta de partajare a secretelor, ideala pentru
acest tip de acces.
Ram an de studiat opt structuri de acces. Se poate utiliza construct ia lui Brickell pentru patru
din ele: structurile 11, 14, 15 si 16.
Exemplul 5.9 Pentru structura de acces 11 vom considera d = 3 si p 3. Denit ia lui | este
| (P
1
) = (0, 1, 0), | (P
2
) = (1, 0, 1), | (P
3
) = (0, 1, 1), | (P
4
) = (1, 1, 0).
Calculand, se obt ine | (P
4
) | (P
1
) = (1, 1, 0) (0, 1, 0) = (1, 0, 0) si
| (P
2
)+ | (P
3
) | (P
1
) = (1, 0, 1) + (0, 1, 1) (0, 1, 0) = (1, 0, 0).
Deci (1, 0, 0) | (P
1
), | (P
2
), T(T

)) si (1, 0, 0) | (P
1
), | (P
4
)).
Mai ramane de aratat ca (1, 0, 0) , | (P
i
) [ P
i
B) pentru orice mult ime maximala neau-
torizata B. Exista numai trei astfel de mult imi: P
1
, P
2
, P
1
, P
3
, P
2
, P
3
, P
4
. Pentru ecare
caz se arata ca sistemul liniar asociat nu are solut ie. De exemplu, sa consideram sistemul
(1, 0, 0) = a
2
| (P
2
) + a
3
| (P
3
) + a
4
| (P
4
)
cu a
2
, a
3
, a
4
Z
p
. Se obt ine sistemul echivalent
a
2
+ a
4
= 1
a
3
+ a
4
= 0
a
2
a
3
= 0
66 PRELEGEREA 5. SISTEME DE PARTAJARE A SECRETELOR
care nu are solut ie.
Exemplul 5.10 Pentru structura de acces 14 vom deni d = 3, p 2, iar | va :
| (P
1
) = (0, 1, 0), | (P
2
) = (1, 0, 1), | (P
3
) = (0, 1, 1), | (P
4
) = (0, 1, 1).
Proprietatea (A) se verica imediat; deci se poate aplica Teorema 5.6.

In mod similar se pot construi sisteme perfecte de partajare a secretelor ideale pentru structurile
15 si 16.
Cele patru sisteme ramase nu admit construct ia unor astfel de sisteme.
5.6 Construct ia prin descompunere
Prezent am aici o alta modalitatea de construire a sistemelor de partajare a secretelor, remar-
cabila prin performant ele rezultatelor, care maximizeaza rata de informat ie.
Denit ia 5.5 Fie o structura de acces cu baza
0
si / un set de chei. O / - descompunere
ideala a lui
0
este un set
1
, . . . ,
n
cu proprietat ile
1.
k

0
(1 k n);
2.
n
_
k=1

k
=
0
;
3. k (1 k n) exista un sistem perfect de partajare a secretelor, ideal, cu mult imea de
chei /, peste mult imea de participant i T
k
=
_
B
k
B.
Pentru o / - descompunere ideala a structurii de acces se poate construi usor un sistem
perfect de partajare a secretelor.
Teorema 5.7 Fie o structura de acces cu baza
0
, / un set de chei si o / - descompunere
ideala
1
, . . . ,
n
a lui . Pentru ecare participant P
i
, e R
i
= cardk [ P
i
T
k
.
Exista atunci un sistem perfect de partajare a secretelor cu structura de acces si rata de
informat ie = 1/R, unde R = max
1iw
R
i
.
Demonstrat ie: Pentru 1 k n exista un sistem ideal de structura de acces de baza
k
peste
mult imea /. Notam T
k
mult imea distribut iilor componentelor sale. Vom construi un sistem
cu structura de acces peste mult imea /. Mult imea distribut iilor componentelor sale este
generata dupa regula: daca arbitrul D doreste sa mpart a cheia K (n cazul 1 k n), el va
genera aleator o distribut ie de componente f
k
T
k
K
si va distribui efectiv aceste componente
participant ilor din T
k
.
Se veric a usor ca acest sistem este perfect. Sa determinam rata sa de informat ie. Vom
avea card(S(P
i
)) = [card(/)]
R
i
pentru orice i (1 i w). Deci
i
= 1/R
i
si
=
1
maxR
i
[ 1 i w
,
ceea ce incheie demonstrat ia. 2
O generalizare a acestui rezultat pentru s / - descompuneri ideale se bazeaza pe teorema
5.6. CONSTRUCT IA PRIN DESCOMPUNERE 67
Teorema 5.8 (Construct ia prin descompunere): Fie o structura de acces de baza
0
, s 1
un numar ntreg, si / un set de chei. Presupunem ca s-a construit o / - descompunere ideala
T
j
=
j,1
, . . . ,
j,n
j
a lui
0
, si e T
j,k
mult imea participant ilor la structura de acces
j,k
.
Pentru ecare participant P
i
denim
R
i
=
s

j=1
cardk [ P
i
T
j,k
.
Exista atunci un sistem perfect de partajare a secretelor, cu structura de acces , a carui
rata de informat ie este = s/R, unde R = max
1iw
(R
i
).
Demonstrat ie: Pentru 1 j s si 1 k n se poate construi un sistem ideal cu baza
j,k
si
mult imea de chei /. Vom nota T
j,k
mult imea corespunzatoare de distribut ii a componentelor.
Vom construi un sistem cu structura de acces si mult imea de chei /
s
. Mult imea sa de
distribut ii de componente T se genereaza astfel: daca arbitrul D doreste sa mpart a cheia
K = (K
1
, . . . , K
s
) (pentru 1 k n), el va genera aleator o distribut ie de componente
f
j,k
T
j,k
K
j
, pe care le distribuie efectiv participant ilor din T
j,k
.

In continuare se repeta demonstrat ia Teoremei 5.7. 2


Exemplul 5.11 Sa consideram structura de acces 5 din Tabelul 5.1, a carei baza nu este un
graf multipartit complet.
Fie p un numar prim si sa consideram doua Z
p
- descompuneri:
T
1
=
1,1
,
1,2
cu

1,1
= P
1
, P
2

1,2
= P
2
, P
3
, P
3
, P
4

si
T
2
=
2,1
,
2,2
cu

2,1
= P
1
, P
2
, P
2
, P
3

2,2
= P
3
, P
4

Aceste descompuneri corespund lui K


2
si K
1,2
, deci sunt descompuneri ideale. Ambele ofera
o rata de informat ie = 1/2. Daca le vom combina conform Teoremei 5.8 cu s = 2, vom
obt ine o rata de informat ie maxima = 2/3.
Luand ca baza Teorema 5.6, putem obt ine efectiv un astfel de sistem. D alege aleator
patru elemente b
1,1
, b
1,2
, b
2,1
, b
2,2
Z
p
. Pentru o cheie (K
1
, K
2
) Z
2
p
, arbitrul va distribui
componentele astfel:
1. P
1
primeste b
1,1
si b
2,1
;
2. P
2
primeste b
1,1
+ K
1
, b
1,2
si b
2,1
+ K
2
;
3. P
3
primeste b
1,2
+ K
1
, b
2,1
si b
2,2
;
4. P
4
primeste b
1,2
si b
2,2
+ K
2
.
(toate calculele sunt efectuate n Z
p
).
Exemplul 5.12 Fie structura de acces 8 din Tabelul 5.1. Vom considera /= Z
p
pentru un
numar prim p 3. Vom utiliza doua / - descompuneri ideale
T
1
=
1,1
,
1,2
cu

1,1
= P
1
, P
2

1,2
= P
2
, P
3
, P
2
, P
4
, P
3
, P
4

si
T
2
=
2,1
,
2,2
cu

2,1
= P
1
, P
2
, P
2
, P
3
, P
2
, P
4

2,2
= P
3
, P
4

T
1
corespunde lui K
2
si K
3
, iar T
2
lui K
2
si K
1,3
; deci ambele sunt / - descompuneri.
Aplicand Teorema 5.8 cu s = 2 se va obt ine = 2/3. Similar exemplului precedent, o construct ie
efectiva se realizeaza astfel:
68 PRELEGEREA 5. SISTEME DE PARTAJARE A SECRETELOR
D alege aleator (si independent) patru elemente b
1,1
, b
1,2
, b
2,1
, b
2,2
Z
p
. Pentru o cheie
(K
1
, K
2
) Z
2
p
, arbitrul va distribui componentele astfel:
1. P
1
primeste b
1,1
+ K
1
si b
2,1
+ K
2
;
2. P
2
primeste b
1,1
, b
1,2
si b
2,1
;
3. P
3
primeste b
1,2
+ K
1
, b
2,1
+ K
2
si b
2,2
;
4. P
4
primeste b
1,2
+ 2K
1
, b
21
+ K
2
si b
2,2
+ K
2
.
(toate calculele sunt efectuate n Z
p
).
Prelegerea 6
Sisteme electronice de plata
6.1 Proprietat i de baza ale sistemelor electronice de plata
Sistemele electronice de plata realizeaza tranzact ii nanciare prin intermediul informat iei trans-
misa prin canale de telecomunicat ie.

In prezent sistemele de plata electronice exista n mai
multe forme, printre care: cecuri digitale (digital checks), carti de credit (credit cards), bani
electronici (electronic cash).

In aceasta prelegere vom trata sistemele de plata care utilizeaza monezile electronice si sunt
denite prin anumite proprietat i criptograce. Utilizand acest tip de sisteme, vom incerca
realizarea unui model care va imita sistemul bancar clasic de emitere a numerarului, cu singura
diferent a ca totul este realizat digital.
T. Okamoto si K. Ohta au propus n 1991 sase proprietat i fundamentale ale unui sistem
digital de plata:
1. Securitatea:
Protocolul de tranzact ie trebuie sa asigure un nivel de securitate ridicat, utilizand tehnici
criptograce. Vor prevenite atacuri care ncearc a sa modice sau sa reproduca informa-
t ia transmisa.
2. Anonimitatea:
Aceasta tras atura permite utilizatorului sa ram ana anonim n timpul desfasurarii proto-
colului de tranzact ie.
3. Portabilitatea:
Securitatea si folosirea sistemului digital nu trebuie sa e dependente de caracteristicile
zice ale calculatoarelor folosite.

In plus, informat ia va putea transferata prin orice
ret ea de calculatoare, fara sa existe o ret ea speciala care sa aiba drepturi separate.
4. Transferul n ambele sensuri:
Monezile digitale se pot transfera ntre utilizatori, fara ca acest transfer sa e realizat
printr-o banca.
5. Capacitatea de a realiza tranzact ii o-line:
69
70 PRELEGEREA 6. SISTEME ELECTRONICE DE PLAT

A
Protocolul de tranzact ie ntre doua parti trebuie sa se desfasoare n orice moment, fara
autenticarea unei a treia part i si far a ca utilizatorii sa e conectat i obligatoriu la o
institut ie nanciara de control.
6. Divizibilitatea:
O moneda electronica obt inuta de utilizator din contul sau poate mp art ita n monezi
de valori mai mici, cu scopul de a folosite (separat sau nu) la diferite tranzact ii.
Scenariul sistemului de plata electronic presupune 3 tipuri de participant i:
Un utilizator (sau client) pe care-l vom nota de obicei U.
Un comerciant (sau magazin) care va accepta banii electronici ai clientului, furnizand n
schimb anumite bunuri. Acesta se va nota S.
O institut ie nanciara (sau banca, notata B) unde atat clientul, cat si comerciantul au
conturi deschise. Este posibil sa e o ret ea de banci care comunic a si realizeaza tranzact ii
ntre ele, dar noi vom considera pentru simplicare existent a unei singure banci.
6.2 Securitatea plat ilor electronice
Pentru securitatea unui sistem electronic de plata mai sunt necesare cateva proprietat supli-
mentare:
Intimitatea (Privacy) sau protect ia mpotriva interceptarii mesajelor
Autenticarea utilizatorului: ecare dintre cele doua part i implicate ntr-un protocol
trebuie sa e sigura de identitatea celeilalte part i.
Integritatea mesajului: destinatarul trebuie sa verice daca mesajul primit a fost (sau
nu) modicat n tranzit.
Imposibilitatea negarii (Non-repudiation): cel care a trimis un mesaj nu va putea sa
nege mai tarziu acest lucru.
David Chaum, init iatorul sistemelor electronice de plata, deneste nca doua trasaturi de
baza ale acestora:
Imposibilitatea bancii de a urmai utilizatorul dupa protocolul de extragere a monezilor
electronice n cazul n care acesta este onest (adica va utiliza monezile o singura data).
Vom vedea ulterior ca pentru un sistem de ncredere se impune ca banca sa aiba posibili-
tatea de a-l identica pe cel care comite o frauda (ncearc a sa foloseasca acceasi moneda de
mai multe ori). Mai mult decat atat, s-au elaborat sisteme (toate folosind o component a
hardware de tip card, chip sau micro-procesor) care previn frauda.
Daca se respecta aceasta condit ie, sistemul se va numi fara urmarire (un-traceable).
6.2. SECURITATEA PL

AT ILOR ELECTRONICE 71
Imposibilitatea de a deduce identitatea utilizatorului, daca se urmaresc mai multe monezi
folosite de acesta; altfel spus nu se poate realiza o legatura ntre monezile folosite n
tranzact ii diferite pentru a obt ine informat ii suplimentare.

In acest caz, sistemul se va numi fara legaturi (un-linkable).


De remarcat ca sistemul de plata folosind cart i de credit nu dispune de aceste ultime doua
proprietat i; de aceea David Chaummpreun a cu alt i cercetatori au propus sistemul de plata cu
monezi electronice, care va oferi utilizatorilor lor aceste doua garant ii suplimentare.

Intr-un protocol de tranzact ie al unui astfel de sistem, succesiunea evenimentelor este


urmatoarea:
1. Protocolul de extragere al monezilor (withdrawal protocol);
Utilizatorul va extrage monezi de o anumit a valoare din contul sau din banca si le va
stoca ntr-o component a hard (harddisk sau card).
2. Protocolul de plata (payment protocol);
Utilizatorul va transfera bani digitali comerciantului (sau magazinului) de la care a
cumparat bunuri.
3. Protocolul de depozit (deposit protocol);
Comerciantul va transfera banii primit i n contul sau din banca, apoi va livra clientului
bunurile platite.
Aceste protocoale se pot implementa n doua moduri:
on-line: Comerciantul ia legatura cu banca si veric a validitatea monezii trimisa de
client, nainte de a-i livra acestuia bunurile.
Acesta este modul care se utilizeaza n prezent de catre tranzact iile cu carti de credit.
o-line: Comerciantul accepta monezile clientului dupa un protocol de vericare cu
acesta, far a a face apel la banca. Protocolul de depozit la banca se va desfasura periodic
(de exemplu la sfarsitul sapt amanii).
La sistemele de tip on-line, protocoalele de plata si de depozit nu sunt practic separate.
Cel mai mare dezavantaj al acestor sisteme si unul din motivele pentru care nu se folosesc
la operat iile cu sume mici este faptul ca la ecare tranzact ie trebuie apelata banca. Cum
num arul utilizatorilor de Internet si de sisteme electronice comerciale creste accelerat, aceasta
devine o problema dicila de comunicare.
Tipul de frauda cel mai frecvent nt alnit consta n utilizarea unei monezi de mai multe ori
(double-spending sau multiple-spending). Pentru a se proteja mpotriva acestei fraude, banca va
ment ine o baza de date cu toate monezile electronice folosite. Executand protocolul de depozit,
banca va cauta moneda primitan baza de date si daca se aa deja acolo o va respinge. Daca
plata se face on-line se va preveni utilizarea unei aceleiasi monezi de mai multe ori. Daca
se foloseste sistemul o-line, se deneste un mecanism suplimentar prin care banca va putea
identica utilizatorul care a comis frauda. Dezavantajul la sistemele o-line este intervalul
de timp dupa care se face identicarea, timp n care utilizatorul necinstit poate sa dispara. De
aceea sistemele o-line nu sunt recomandate pentru sume mari de bani.
Pentru realizarea sistemelor care dispun de proprietat ile enunt ate, se foloseste criptograa
cu cheie publica.
72 PRELEGEREA 6. SISTEME ELECTRONICE DE PLAT

A
6.3 Protocoale de semnatura blind
Introdus de Chaum n 1983, protocolul de semnatur a blind (blind signature protocol) este
extrem de util n crearea sistemelor de plat i electronice.
Pentru usurint a exprimarii vom nota cu B partea care semneaza un mesaj, si cu U partea
care primeste semnatura.
Denit ia 6.1 Un protocol de semnatura (P, A, K, S, V) se numeste protocol de semnatura
blind daca x P (x complet necunoscut lui B) U poate sa obt ina de la B un mesaj semnat
valid (x, sig
K
(x)).
Exemplul 6.1 Protocolul de semnatura blind RSA.
Fie p, q, n denite ca la sistemul cu cheie publica RSA. Vom avea
P = A = Z
n
, K={(n, p, q, a, b), n = pq, ab 1 (mod (n))}.
Fie x mesajul care trebuie semnat. Pasii protocolului blind sunt urmatorii:
1. U alege aleator un numar r Z
n
si trimite lui B numarul x

= r
b
x (mod n).
2. B semneaza mesajul x

: y

= sig
K
(x

) = sig
K
(r
b
x) = (r
b
x)
a
(mod n) rx
a
(mod n) si
trimite y

lui B.
3. U mparte y

la r si obt ine y = y

r
1
= x
a
(mod n).
La sfarsitul protocolului, U obt ine (x, y = sig
K
(x)): un mesaj semnat valid, astfel ncat B nu
cunoaste x.
Observam ca funct iile sig
K
si ver
K
sunt cele denite n protocolul de semnatura RSA:
sig
K
(x

) = (x

)
a
(mod n)
ver
K
(x

, y

) = T x

= (y

)
b
(mod n).
6.4 Scheme de identicare
O schem a de identicare este un protocol ntre doua part i: P (prover) si V (verier) n care P
demonstreaza cunoasterea cheii sale secrete far a a o revela, iar V la sfarsitul protocolului este
convins de identitatea lui P.
Orice schema de identicare se poate transforma ntr-un protocol de semnatura prin uti-
lizarea unei funct ii de dispersie. Vom prezenta schema de identicare si protocolul de semnatura
denite de Clauss Schnorr, a caror securitate este bazata pe problema logaritmului discret.

In protocoalele lui Schnorr se aleg:


doua numere prime p si q, astfel nc at q|p 1,
un parametru t
un generator g Z
p
asfel ncat g
q
1 (mod p).
6.4. SCHEME DE IDENTIFICARE 73
Pentru securitate se recomanda ca q sa aiba n reprezentarea binara minim 150 bit i, p minim
512 bit i, iar parametrul t n jur de 72 bit i.
Numerele (p, q, g) vor facute publice.
Pentru a genera o pereche (cheie publica, cheie privata), un utilizator P alege aleator un
num ar s < q si calculeaza v = g
s
(mod p). s va cheia sa privat a, iar v cheia sa publica.
Protocolul de Autenticare:
Presupunand ca P vrea sa i demonstreze identitatea sa lui V, cei doi parcurg urmatorul
protocol:
Protocolul de autenticare Schnorr:
1. P alege aleator un num ar r (0 < r < q), calculeaza b = g
r
(mod p) pe care-l trimite
lui V.
2. V trimite lui P un numar aleator x, x (0, 2
t
1), numit provocare.
3. P calculeaza y = r + sx (mod q) si i raspunde lui V cu y.
4. V verica relat ia b = g
y
v
x
(mod p) si accepta autenticarea lui P daca ea este
ndeplinit a.
Protocolul se numeste de tip provocare - raspuns.
Daca P urmeaza acest protocol pas cu pas, atunci:
g
y
v
x
g
r+sx
g
sx
g
r
b (mod p),
deci relat ia de la pasul 4 este vericat a si P este autenticat.
Ideea acestui protocol consta n construct ia de catre P a unei drepte d : y = r + sx de
pant a secreta s. P i va demonstra lui V cunoasterea dreptei d, raspunzand la o provocare x
cu punctul y corespunzator de pe dreapta. Veric and relat ia de la pasul 4, V este convins ca
P cunoaste panta secreta a dreptei, fara a o putea calcula si el.
De ecare data cand init iaz a acest protocol, P trebuie sa aleaga o noua valoare pentru r.
Altfel, V se va aa n posesia a doua puncte ale dreptei, determinand astfel panta dreptei
care este chiar cheia secreta s a lui P. Vom demonstra acest lucru:
Propozit ia 6.1 Executand de doua ori protocolul de autenticare Schnorr cu acelasi numar r
ales la pasul 1, n nal V va n posesia cheii secrete s a lui P.
Demonstrat ie: Dupa pasul 1, V cunoaste b = g
r
(mod p).
Fie x
1
, x
2
cele doua provocari diferite trimise de V n cele doua execut ii ale protocolului
Schnorr; (0 x
1
, x
2
2
t
1).

In nal V va cunoaste:

y
1
= r + sx
1
(mod q)
y
2
= r + sx
2
(mod q)
Rezolvand acest sistem, se obt ine
y
1
y
2
= s(x
1
x
2
) (mod q) s = (y
1
y
2
)(x
1
x
2
)
1
(mod q). 2
Protocolul de semnatura:
Sa arat am cum poate transformat protocolul de autenticare Schnorr ntr-un protocol de
semnatur a digitala.
74 PRELEGEREA 6. SISTEME ELECTRONICE DE PLAT

A
Introducem o funct ie de dispersie H far a coliziuni tari. Presupunem ca U doreste sa obt ina
de la B o semnatur a asupra unui mesaj m. Similar protocolului de autenticare Schnorr, B va
avea cheia publica v si cheia sa secreta s.
Protocolul de semnatura Schnorr
1. B alege un numar aleator r (0 < r < q) si calculeaza b = g
r
(mod p).
2. B concateneaza m cu b si formeaza x = H(m b).
3. B calculeaza y = r + sx (mod q) si trimite lui U perechea (x, y).
4. U calculeaza b

= g
y
v
x
(mod p) si x

= H(m b

).
Daca x = x

, atunci U accepta (x, y) ca o semnatura valid a pentru m.


Observam ca pentru a transforma protocolul de autenticare Schnorr ntr-un protocol de
semnatur a este sucient sa nlocuim provocarea cu dispersia asupra documentului care tre-
buie semnat. Ideea poate folosita la toate protocoalele de autenticare de tip provocare /
raspuns.
Formal, protocolul de semnatur a Schnorr este denit astfel:
P = A = Z
p
, K={(p, q, g, s, v, r)|v = g
s
(mod p), p|q 1}.
Daca K = (p, q, g, s, v, r) K, cheia (p, q, g, v) este publica, iar cheia (s, r) este secreta.
Pentru K = (p, q, g, s, v, r) K, x P, y A,
sig
K
(x) = r + sx (mod q)
ver
K
(x, y) = T x = H(m g
y
v
x
) (mod p).
Daca B urmeaza protocolul de semnatur a Schnorr, atunci:
b

= g
y
v
x
g
r+sx
g
sx
g
r
b (mod p) x

= H(m b

) = H(m b) = x,
deci relat ia de la pasul 4 este vericat a si U accepta semnatura lui B drept valid a.
Observam ca determinarea cheii secrete s din cheia publica v, cunoscand g, este echivalent a
din punct de vedere al complexitat ii cu rezolvarea problemei logaritmilor discret i.
6.5 Problema reprezentarii n grupuri

In aceasta sect iune vom discuta despre problema reprezent arii n grupuri, problema care sta
la baza construct iei unui sistem de plata electronic. Vom demonstra, de asemenea, echivalenta
acestei probleme din punct de vedere al complexitat ii cu problema logaritmilor discret i.
6.5.1 Denirea problemei reprezentarii
Denit ia 6.2 Fie k 2 numar natural si q un numar prim. Un tuplu generator de lungime
k pentru grupul Z
q
este un k-tuplu (g
1
, . . . , g
k
) astfel ncat g
i
Z
q
\{1}, i {1, 2, . . . , n} si
g
i
= g
j
, i = j.
Pentru orice h Z
q
, (a
1
, . . . , a
k
) este o reprezentare a lui h n raport cu tuplul generator
(g
1
, . . . , g
k
) daca
k

i=1
g
a
i
i
= h (mod q).
6.5. PROBLEMA REPREZENT

ARII

IN GRUPURI 75
Propozit ia 6.2 Fie k 2 un numar natural si q un numar prim. Pentru orice h Z
q
si orice
(g
1
, . . . , g
k
) tuplu generator, exista exact q
k1
reprezentari ale lui h n raport cu (g
1
, . . . , g
k
).
Demonstratie: Cum q este prim, orice element din Z
q
este primitiv, deci generator al grupului
multiplicativ Z
q
\ {1}.
Alegem primele k 1 elemente ale unui k-tuplu (a
1
, . . . , a
k
) aleator in q
k1
moduri si din
relat ia
k

i=1
g
a
i
i
= h (mod q) determinam g
a
k
k
= h(
k1

i=1
g
a
i
i
)
1
(mod q) deci
a
k
= log
g
k
h(

k1
i=1
g
a
i
i
)
1
(mod q).
Logaritmul are sens, deoarece din denit ia tuplului generator, g
k
= 1.
Din problema logaritmilor discret i, a
k
este unic determinat, deci exista exact q
k1
reprezen-
tari ale lui h n raport cu (g
1
, . . . , g
k
). 2
Acest rezultat relativ simplu arata ca xand h si un tuplu generator (g
1
, . . . , g
k
), printr-o
cautare exhaustiva n mult imea k-tuplurilor peste Z
q
, probabilitatea de a obt ine o reprezentare
a lui h n raport cu (g
1
, . . . , g
k
) este
q
k1
q
k
=
1
q
.
Astfel, suntemn masura sa enunt am problema reprezentarii n grupuri cu cardinalul numar
prim.
Problema reprezentarii:
Fie q un num ar prim, k 2 un num ar natural, (g
1
, . . . , g
k
) un tuplu generator si h Z
q
.
Sa se gaseasca o reprezentare a lui h n raport cu (g
1
, . . . , g
k
) n Z
q
, n cazul n care aceasta
exista.
Observam ca pentru k = 1 se obt ine problema logaritmilor discret i; de aceea am considerat
n denit ie k 2 pentru a face distinct ie intre cele doua probleme.
6.5.2 Echivalent a problemei reprezentarii cu problema logaritmilor
discret i
Sa reamintim cateva denit ii relative la algoritmii probabilisti.
Denit ia 6.3 Un algoritm probabilist este un algoritm care foloseste numere aleatoare.
Probabilitatea de succes a unui algoritm probabilist este probabilitatea ca acesta sa ofere un
raspuns corect.
Fie 0 < 1. Un algoritm tip Las-Vegas este un algoritm probabilist care pentru orice
aparit ie a unei probleme, poate oferi un raspuns ntotdeauna corect, sau poate esua si sa nu dea
nici un raspuns cu probabilitatea . Probabilitatea de succes pentru un algoritm Las-Vegas este
1 .
Observat ia 6.1 Daca construim un algoritm Las-Vegas pentru rezolvarea unei probleme, pu-
tem sa l apelam de un numar mediu de
1
1
ori pentru a obt ine raspuns, care este ntotdeauna
corect.
Teorema 6.1 Fie q un numar prim mare. Urmatoarele armat ii sunt echivalente:
76 PRELEGEREA 6. SISTEME ELECTRONICE DE PLAT

A
1. Exista 0 < P
1
1 si un algoritm probabilist polinomial n timp A
1
care avand la intrare
un tuplu generator de lungime k si un element h Z
q
calculeaza o reprezentare a lui h
cu probabilitatea de succes cel put in P
1
.
2. Exista 0 < P
2
1 si un algoritm probabilist polinomial n timp A
2
care avand la
intrare un tuplu generator de lungime k calculeaza o reprezentare netriviala a lui 1 cu
probabilitatea de succes cel put in P
2
.
3. Exista 0 < P
3
1, h Z
q
si un algoritm probabilist polinomial n timp A
3
care
avand la intrare un tuplu generator de lungime k calculeaza o reprezentare a lui h cu
probabilitatea de succes cel put in P
3
.
4. Exista 0 < P
4
1 si un algoritm probabilist polinomial n timp A
4
care rezolva prob-
lema logaritmilor discret i (avand la intrare g Z
q
\ {1} si h Z
q
, calculeaza log
g
h) cu
probabilitatea de succes cel put in P
4
.
Demonstratie: Vom demonstra implicat iile:
(1) = (2), (1) = (3), (4) = (1), (1) = (4), (2) = (4), (3) = (4).
(1) = (2);
Presupunand existent a algoritmului A
1
si a lui P
1
, e (g
1
, . . . , g
k
) intrarea n algoritmul
A
2
. Se introduc n A
1
tuplul generator (g
1
, . . . , g
k
) si h = 1. Dupa executarea lui A
1
,
suntem n posesia unei reprezent ari a lui 1 n raport cu (g
1
, . . . , g
k
) cu probabilitatea de
succes P
2
= P
1
.
(1) = (3);
Alegem un element arbitrar h Z
q
\ {1} si tuplul generator (g
1
, . . . , g
k
), intrare pentru
A
3
. Se executa A
1
care calculeaza o reprezentare a lui h cu probabilitatea de succes P
1
.
Atunci exista P
3
= P
1
.
(4) = (1);
Exista algoritmul A
4
si probabilitatea 0 < P
4
1. Construim algoritmul A
1
care primeste
la intrare tuplul generator (g
1
, . . . , g
k
) si h Z
q
.
1. for i = 1, 2, . . . , k 1 do
(a) Se genereaza aleator h
i
Z

q
;
(b) Se introduc g
i
, h
i
n A
4
care calculeaza a
i
.
(c) if g
a
i
i
= h
i
(mod q) then STOP (esec).
2. Se calculeaza a
k
= log
g
k
(h
k1

i=1
h
1
i
) (mod q);
3. STOP cu succes si raspuns (a
1
, . . . , a
k
).
Corectitudine: Algoritmul asfel construit este de tip Las-Vegas cu probabilitatea de succes
P
1
=
P
4
k 1
.
6.5. PROBLEMA REPREZENT

ARII

IN GRUPURI 77

In cazul n care A
1
se termina cu succes, la pasul 2 avem g
a
i
i
= h
i
(mod q), i
{1, . . . , k 1} (deci a
i
= log
g
i
h
i
(mod q), i {1, . . . , k 1}).
a
k
= log
g
k
(h
k1

i=1
h
1
i
) (mod q) g
a
k
k
= h
k1

i=1
h
1
i
(mod q)
k1

i=1
h
i
g
a
k
k
=
h (mod q)
k

i=1
g
a
i
i
= h (mod q) (a
1
, . . . , a
k
) este o reprezentare a lui h.
Algoritmul se repeta de un numar mediu de
1
P
4
ori pentru ecare i {1, . . . , k 1}
pentru ca n pasul (b) sa obt inem a
i
= log
g
i
h
i
(mod q). Deci, algoritmul trebuie rulat
de un num ar mediu de (k 1)
1
P
4
ori, ceea ce nseamn a ca probabilitatea de succes a
algoritmului A
1
este P
1
=
P
4
k 1
.
(1) = (4);
Exista algoritmul A
1
si probabilitatea 0 < P
1
1. Construim algoritmul A
4
care primeste
la intrare g Z
q
\ {1} si h Z
q
.
1. Se genereaza aleator un k-tuplu (u
1
, . . . , u
k
) Z
k
q
; se calculeaza g
i
= g
u
i
, 1 i k.
2. Se ruleaza algoritmul A
1
cu intrarea (g
1
, . . . , g
k
) si h.
3. Fie (a
1
, . . . , a
k
) iesirea lui A
1
;
if (a
1
, . . . , a
k
) nu e o reprezentare a lui h (h =
k

i=1
g
a
i
i
(mod q)) then STOP (esec).
4. Se calculeaza log
g
h =
k

i=1
a
i
u
i
(mod q). STOP (succes).
Corectitudine: Algoritmul astfel construit este de tip Las-Vegas cu probabilitate de succes
P
4
= P
1
.

In cazul n care algoritmul de mai sus se terimina cu succes, avem:


h =
k

i=1
g
a
i
i
=
k

i=1
g
a
i
u
i
(mod q) = log
g
h =
k

i=1
a
i
u
i
(mod q).
Algoritmul se repeta de un numar mediu de
1
P
1
ori pentru a obt ine o reprezentare corecta
a lui h n pasul 3. Deci probabilitatea de succes a algoritmului A
4
este P
4
= P
1
.
(2) = (4);
Exista algoritmul A
2
si probabilitatea 0 < P
2
1. Construim algoritmul A
4
care primeste
la intrare g Z
q
\ {1} si h Z
q
.
78 PRELEGEREA 6. SISTEME ELECTRONICE DE PLAT

A
1. Se genereaza aleator un k-tuplu (u
1
, . . . , u
k
) Z
k
q
; se calculeaza g
1
=
h
u
1
(mod q), g
i
= g
u
i
(mod q), 2 i k 1.
2. Se genereaza aleator o permutare S
k
si se ruleaza algoritmul A
2
cu intrarea
(g
(1)
, . . . , g
(k)
).
3. Fie (a
1
, . . . , a
k
) iesirea lui A
2
.
if [(a
1
, . . . , a
k
) nu e o reprezentare a lui 1 (
k

i=1
g
a
i
(i)
= 1 (mod q))] or [a

1
(1)
= 0]
then STOP (esec).
4. Se calculeaza log
g
h = (u
1
a

1
(1)
)
1
k

i=2
u
i
a

1
(i)
(mod q); STOP (succes).
Corectitudine: Algoritmul asfel construit este de tip Las-Vegas cu probabilitate de succes
P
4
=
2P
2
k
.
Daca algoritmul se termina cu succes, atunci (a
1
, . . . , a
k
) este o reprezentare a lui 1 n
raport cu (g
(1)
, . . . , g
(k)
), ceea ce este echivalent cu:
k

i=1
g
a
i
(i)
= 1 (mod q) g
a

1
(1)
1
k

i=2
g
a

1
(i)
i
= g
0
(mod q)
h
u
1
a

1
(1)
k

i=2
g
u
i
a

1
(i)
= g
0
(mod q) si logaritmand, relat ia este echivalent a cu:
u
1
a

1
(1)
log
g
h +
k

i=2
u
i
a

1
(i)
= 0 (mod q)
de unde se obt ine formula din pasul 4 pentru log
g
h.
De remarcat ca la pasul 4, a

1
(1)
= 0, ceea ce asigura existent a inversului (u
1
a
1(1)
)
1
n Z
q
.
Algoritmul se repeta de un numar mediu de
1
P
2
ori pan a se obt ine la pasul 3 o reprezentare
(a
1
, . . . , a
k
) a lui 1.
Pentru ecare reprezentare (a
1
, . . . , a
k
) a lui 1, n cazul cel mai defavorabil k 2 com-
ponente ale k-tuplului (a
1
, . . . , a
k
) sunt nule (cum
k

i=1
g
a
i
(i)
= 1 (mod q), daca ar nule
k 1 componente, ar rezulta a
i
= 0 i = 1, 2, . . . , k, deci A
2
ar calcula o reprezentare
triviala a lui 1, contradict ie cu ipoteza (2)). Rezulta ca avem cu o probabilitate cel put in
2
k
, a

1
(1)
= 0.
Atunci algoritmul se va repeta de cel mult
1
P
2
k
2
ori, probabilitatea de succes ind cel
put in P
4
=
2P
2
k
.
(3) = (4);
6.5. PROBLEMA REPREZENT

ARII

IN GRUPURI 79
Exista h

Z
q
si algoritmul A
3
care avand la intrare un tuplu generator de lungime k
determina o reprezentare a lui h

cu probabilitatea de succes P
3
. Construim algoritmul
A
4
care primeste la intrare g Z
q
\ {1} si h Z
q
.
1. i = 1.
2. Se genereaza aleator un k-tuplu (u
1
, . . . , u
k
) Z
k
q
;
se calculeaza g
i1
= h
u
i1
, g
ij
= g
u
ij
(mod q) pentru j = 2, . . . , k.
3. Se genereaza aleator o permutare
i
S
k
;
Se ruleaza algoritmul A
3
cu intrarea (g
i1
, . . . , g
i
i
(k)
).
4. Fie (a
i1
, . . . , a
ik
) iesirea lui A
3
;
if (a
i1
, . . . , aik) nu e o reprezentare a lui h n raport cu (g
i1
, . . . , g
ik
) then STOP
(esec).
5. i = i + 1 goto 1.
6. if u
21
a
2
1
2
(1)
= u
11
a
1
1
1
(1)
(mod q) then STOP (esec).
7. Se calculeaza
log
g
h = (u
21
a
2
1
2
(1)
u
11
a
1
1
1
(1))
1
(
k

j=2
u
1j
a
1
1
1
(j)

k

j=2
u
2j
a
2
1
2
(j)
) (mod q).
Corectitudine: Algoritmul asfel construit este de tip Las-Vegas cu probabilitatea de succes
P
4
=
P
2
3
k
.
Daca algoritmul se termina cu succes, atunci (a
11
, . . . , a
1k
) si (a
21
, . . . , a
2k
) sunt reprezen-
tari ale lui h

n raport cu (g
1
1
(1)
, . . . , g
1
1
(k)
), respectiv (g
2
1
(1)
, . . . , g
2
1
(k)
) ceea ce este
echivalent cu
h

=
k

j=1
g
a
1j
1
1
(j)
=
k

j=1
g
a
2j
2
2
(j)
(mod q) = g
11
a
1
1
1
(1)
k

j=2
g
a
1
1
1
(j)
1j
= g
21
a
2
1
2
(1)
k

j=2
g
a
2
1
2
(j)
2j
(mod q) h
u
11
a
1
1
1
(1)
k

j=2
g
u
1j
a
1
1
1
(j)
= h
u
21
a
2
1
2
(1)
k

j=2
g
u
2j
a
2
1
2
(j)
(mod q)
si logaritmand n baza g, rezulta:
u
11
a
1
1
1
(1)
log
g
h +
k

j=2
u
1j
a
1
1
1
(j)
= u
21
a
2
1
2
(1)
log
g
h +
k

j=2
u
2j
a
2
1
2
(j)
(mod q)
de unde se obt ine formula din pasul 7 pentru log
g
h.
De remarcat ca la pasul 7, u
11
a
1
1
1
(1)
= u
21
a
1
1
2
(1)
, ceea ce asigura existent a inversului
(u
11
a
1
1
1
(1)
u
21
a
1
1
2
(1)
)
1
n Z
q
.
Pentru i = 1 algoritmul se repeta de un num ar mediu de
1
P
3
ori pentru a obt ine o
reprezentare (a
11
, . . . , a
1k
) a lui h

.
Pentru i = 2 algoritmul se repeta n cazul cel mai defavorabil de un num ar de k
1
P
3
ori,
deoarece trebuie repetat pasul 6 de cel mult k ori.
80 PRELEGEREA 6. SISTEME ELECTRONICE DE PLAT

A
Astfel, algoritmul se repeta de cel mult
1
P
3
k
P
3
=
k
P
2
3
ori pana se obt ine raspunsul succes.
Deci probabilitatea de succes este cel put in
P
2
3
k
Cu aceasta echivalent a celor doua probleme din punct de vedere al complexitat ii este complet
demonstrata. Deoarece problema logaritmilor discret i este NP - completa n Z
q
pentru valori
mari ale lui q prim, va rezulta ca si problema reprezentarii n Z
q
este NP-completa.
Corolarul 6.1 Alegang q prim asfel ncat problema logaritmilor discret i este NP-completa, nu
exista un algoritm polinomial n timp care, avand la intrare un tuplu generator (g
1
, . . . , g
k
)
scoate la iesire un numar h Z
q
si doua reprezentari diferite ale lui h n raport cu (g
1
, . . . , g
k
)
cu o probabilitate ne-neglijabila.
Demonstrat ie:
Presupunem, prin reducere la absurd, existent a unui astfel de algoritm A. Construim
urmatorul algoritm:
1. Fie (g
1
, . . . , g
k
) un tuplu generator. Se ruleaza algoritmul A cu intrarea (g
1
, . . . , g
k
).
Se primesc ca raspuns h si doua reprezent ari ale acestuia (a
1
, . . . , a
k
) si (b
1
, . . . , b
k
)
n raport cu (g
1
, . . . , g
k
).
2. Raspuns la iesire: (a
1
b
1
(mod q), . . . , a
k
b
k
(mod q)).
Evident:
k

i=1
g
a
i
b
i
i
= 1 (mod q), deci (a
1
b
1
(mod q), . . . , a
k
b
k
(mod q)) este o reprezentare
a lui 1 n raport cu (g
1
, . . . , g
k
).
Am construit astfel algoritmul A
2
, polinomial n timp din teorema 6.1, ceea ce contrazice
presupunerea de NP-completitudine a problemei logaritmilor discret i.
Corolarul 6.2 Funct ia f : Z
k
q
= Z
q
denitia f(a
1
, . . . , a
k
) =
k

i=1
g
a
i
i
este o funct ie de dispersie
fara coliziuni tari.
Demonstrat ie:
Din Corolarul 6.1, este calculabil dicil sa se obt in a un num ar h Z
q
si doua reprezent ari
diferite ale acestuia (a
1
, . . . , a
k
) si (b
1
, . . . , b
k
) n raport cu (g
1
, . . . , g
k
). Rezulta ca este calculabil
dicil sa obt inem x = (a
1
, . . . , a
k
) Z
k
q
si x
1
= (b
1
, . . . , b
k
) Z
k
q
asfel nc at f(x) = f(x
1
); adica
f este far a coliziuni tari.
Aceasta funct ie de dispersie nu e sucient de rapida pentru aplicat ii practice, dar constituie
un model teoretic sugestiv.
6.5.3 Demonstrarea cunoasterii unei reprezentari
Fie p si q doua numere prime mari, cu proprietatea q|p 1.
Presupunem ca un utilizator P (Prover) cunoaste o reprezentare (a
1
, . . . , a
k
) Z
k
q
a unui
num ar h Z
q
n raport cu tuplul generator (g
1
, . . . , g
k
) Z
k
q
. P doreste sa i demonstreze lui
V (Verier) acest lucru, fara a-i revela reprezentarea sa secreta (a
1
, . . . , a
k
).
6.5. PROBLEMA REPREZENT

ARII

IN GRUPURI 81
Construim un protocol de tip provocare-raspuns care i permite lui P demonstrarea
cunoasterii reprezentarii (a
1
, . . . , a
k
).
1. P genereaza aleator k numere w
1
, . . . , w
k
Z
q
si trimite lui V numarul z =
k

i=1
g
w
i
i
(mod q).
2. V genereaza o provocare c Z
q
si o trimite lui P.
3. P calculeaza raspunsul r
i
= w
i
+ ca
i
(mod q), pentru i = 1, . . . , k, si trimite
(r
1
, . . . , r
k
) lui V.
4. V accepta daca si numai daca zh
c
=
k

i=1
g
r
i
i
(mod q).
Teorema 6.2
1. (Completitudinea) Daca P este n posesia reprezentarii (a
1
, . . . , a
k
) a lui h n raport
cu (g
1
, . . . , g
k
) si urmeaza protocolul pas cu pas, atunci V accepta n pasul 4.
2. (Consistent a) Daca P nu cunoaste o reprezentare a lui hn raport cu (g
1
, . . . , g
k
), atunci
nu exista o strategie pentru el astfel ncat V sa accepte cu o probabilitate ne-neglijabila.
3. (Ascunderea informat iei) Chiar daca V ar dispune de o putere de calcul nelimitata,
executand protocolul pas cu pas, nu va reusi sa ae n nal reprezentarea cunoscuta de P
cu o probabilitate ne-neglijabila.
Demonstrat ie:
1. Presupunand ca protocolul este executat corect de ambele part i, la pasul 4 avem:
zh
c
=
k

i=1
g
w
i
i
h
c
=
k

i=1
g
w
i
i
(
k

i=1
g
a
i
i
)
c
=
k

i=1
g
w
i
+a
i
c
i
=
k

i=1
g
r
i
i
(mod q), deci V accepta la pasul
4.
2. P nu cunoaste o reprezentare a lui h n raport cu (g
1
, . . . , g
k
), deci nu poate sa respecte
protocolul la pasul 3.
Distingem doua situat ii:
P urmeaza protocolul n pasul 1, deci P alege aleator w
1
, . . . , w
k
Z
q
si calculeaza
z =
k

i=1
g
w
i
i
(mod q).
Dupa ce primeste provocarea c a lui V, P trebuie sa determine numerele r
1
, . . . , r
k
care sa verice relat ia din pasul 4:
zh
c
=
k

i=1
g
r
i
i
(mod p) =
k

i=1
g
w
i
i
h
c
=
k

i=1
g
r
i
i
(mod q) =
h
c
=
k

i=1
g
r
i
w
i
i
(mod q) = h =
k

i=1
g
(r
i
w
i
)c
1
i
(mod q).
82 PRELEGEREA 6. SISTEME ELECTRONICE DE PLAT

A
Deci, daca P reuseste sa determine r
1
, . . . , r
k
asfel ncat V sa accepte la pasul 4,
el va cunoaste o reprezentare a lui h n raport cu (g
1
, . . . , g
k
) si anume: ((r
1

w
1
)c
1
, . . . , (r
k
w
k
)c
1
), ceea ce contrazice ipoteza.
P nu urmeaza protocolul din pasul 1, deci P alege un num ar z pentru care nu
cunoaste o reprezentare n raport cu (g
1
, . . . , g
k
).

In pasul 3, P trebuie sa determine numerele r


1
, . . . , r
k
astfel nc at zh
c
=
k

i=1
g
r
i
i
(mod q), problema echivalent a cu determinarea unei reprezentari a lui zh
c
n raport
cu (g
1
, . . . , g
k
). Cum problema reprezent arii este NP-completa pentru p, q convenabil
alese si protocolul se desfasoara n timp real, nici n acest caz P nu are o strategie
cu o probabilitate de succes ne-neglijabila pentru a-l convinge pe V sa accepte.
3. La sfarsitul protocolului V este n posesia urmatoarelor informat ii: z, c, r
1
, . . . , r
k
.
Avem r
i
= w
i
+ ca
i
(mod q) a
i
= c
1
(r
i
w
i
) (mod q), deci problema deter-
minarii lui (a
1
, . . . , a
k
) este echivalenta cu problema determinarii lui (w
1
, . . . , w
k
).

In plus
a
1
, . . . , a
k
sunt unic determinate de w
1
, . . . , w
k
.
Singura informat ie pe care V o are despre w
1
, . . . , w
k
este z =
k

i=1
g
w
i
i
(mod q).
Dispunand de o putere de calcul nelimitata, V poate sa determine o reprezentare a lui z
n raport cu (g
1
, . . . , g
k
).
Conform Propozitiei 6.2, exista exact q
k1
reprezentari ale lui z n raport cu (g
1
, . . . , g
k
),
deci probabilitatea ca V sa calculeze exact aceeasi reprezentare (w
1
, . . . , w
k
) este
1
q
k1
,
adica neglijabila.
Prelegerea 7
Sistemul electronic de plata Brands
7.1 O scurta prezentare a sistemelor de plata electronice
o-line
Prima si cea mai simpla schem a a fost denita de Chaum, Fiat si Naor. Prezentam, pe scurt,
ideea acestui protocol.
Fie n, p, q, a, b parametrii sistemului RSA si f o funct ie de dispersie far a coliziuni tari. O
moneda electronica de o valoare xata d este reprezentata sub forma
(x, (f(x))
b
(mod n)
cu x ales aleator. Pentru ecare valoare a unei monezi trebuie folosit un alt exponent de criptare
b si un exponent de decriptare corespunzator a. Identitatea utilizatorului trebuie inclusa n
moneda electronica asfel ncat daca moneda este folosita corect, identitatea nu poate dedusa;
alfel identitatea poate calculata.
Pentru aceasta este folosita o tehnica numit a Cut-and-Choose: cand U doreste sa extraga
o moneda din banca, construieste un mesaj format din k perechi de numere (k este num arul de
candidat i). Aceste numere au proprietatea ca dintr-o pereche se poate calcula identitatea lui U
(de exemplu printr-un simplu XORntre cele doua numere ale perechii), iar av and la dispozit ie
un singur numar din ecare pereche nu se poate deduce nici o informat ie. U concateneaza cei
k candidat i si obt ine o semnatur a blind de la B asupra mesajului trimis cu protocolul de
semnatur a blind RSA.

In momentul n care U doreste sa foloseasca moneda la magazinul S, primeste o provocare


de la S de k bit i aleatori. Pentru ecare bit, U raspunde cu primul num ar al perechii core-
spunzatoare numarului bitului (daca bitul este 0) sau cu al doilea num ar daca bitul este 1.
(De exemplu, daca provocarea este 0110 . . . , U raspunde cu primul num ar din prima pereche, al
doilea numar din a doua pereche, al doilea numar din a treia pereche etc). Cand S depoziteaza
moneda la banca, i trimite lui B provocarea mpreun a cu numerele trimise de U. B pastreaz a
ntr-o baza de date moneda mpreun a cu provocarea si raspunsul lui U.
Daca U ncearca refolosirea monezii, primeste o noua provocare aleatoare de k bit i, care
difera de prima n cel put in un bit cu o probabilitate destul de mare (1
1
2
k
). Astfel pentru
bitul care difera, U va revela ambele numere ale perechii corespunzatoare. Acum banca poate
calcula din cele doua numere identitatea lui U.
83
84 PRELEGEREA 7. SISTEMUL ELECTRONIC DE PLAT

A BRANDS
Desi este conceptual simpla, aceasta schem a nu este ecient a, deoarece ecare moneda tre-
buie nsot it a de 2k numere mari. Modelul Chaum-Fiat-Naor satisface primele patru proprietat i
denite n prelegerea anterioar a.
Okamoto si Ohta au descris un sistem universal de plata care satisface toate cele sase
proprietat i, dar din pacate este inecient din punct de vedere al dimensiunii mesajelor
transmise.

In schimb ei au avut ideea de a introduce proprietatea de divizibilitate a monezilor
electronice. Pentru ecare moneda de valoare d se asociaza un arbore binar etichetat astfel:
nodul rad acina (de nivel 0) are valoarea d, cele doua noduri de pe nivelul 1 au etichetele d/2 si
n general nodurile de pe nivelul k sunt etichetate cu
d
2
k
. Daca d = 2
s
, arborele are s + 1
nivele, cu frunzele av and valoarea minima 1.
Orice suma mai mica decat d poate folosita dupa urmatoarele reguli:
1. Odata ce un nod este folosit, tot i succesorii si predecesorii sai nu vor putea folosit i la o
plata viitoare;
2. Nici un nod nu poate folosit mai mult decat o data.
Aceste doua reguli asigura folosirea unui singur nod pentru orice drum de la rad acin a la o
frunza, ceea ce face imposibila folosirea unei valori mai mari decat valoarea rad acinii d.
Exemplul 7.1 Sa presupunem ca U are o moneda n valoare de 4 unitat i. Se construieste
arborele binar:

a
a
a
a
a
,
,
l
l


Z
Z
4
2 2
1 1 1 1

00

01

000

001

010

011
Pentru a realiza o plata de 3 unitat i, U foloseste
00
si
010
. Singurul nod care poate
utilizat la o plata viitoare este
011
n valoare de o unitate.
Daca cel put in una din cele doua reguli este ncalcat a, atunci exista un drum de la radacina la
o frunza pe care s-au folosit 2 noduri si se va putea determina identitatea lui U.
Mai exact, ecare utilizator U are o valoare secreta s care releva identitatea sa, iar ecare
nod i al arborelui are asignata o valoare secreta t
i
. Se construieste dreapta y = sx + t
i
pentru
ecare nod i. Cand se face o plata utilizand un nod particular n, U va revela t
i
pentru tot i i
predecesori ai lui n. Magazinul S va trimite o provocare x
1
la care U raspunde cu y
1
= sx
1
+t
n
.
Daca acelasi nod n este folosit a doua oara, U primeste nc a o provocare x
2
la care raspunde
cu y
2
= sx
2
+t
n
, deci U a revelat doua puncte (x
1
, y
1
), (x
2
, y
2
) ale dreptei y = sx +t
n
, de unde
se poate calcula s si apoi identitatea lui U.
Daca se folosesc doua noduri n si m de pe acelasi drum de la radacin a la o frunza, pre-
supunem ca n este succesor al lui m. Cand se foloseste nodul n se releva t
m
; apoi daca se
foloseste nodul m U raspunde la provocarea x
1
a lui S cu y
1
= sx
1
+ t
m
.
Deci si n acest caz S poate calcula s si identitatea lui U.
Un alt dezavantaj al acestei scheme ar ca se pot realiza legaturi ntre plat i, adica se poate
deduce daca doua plat i provin din aceeasi moneda si deci, de la aceeasi persoana.
7.2. INIT IALIZAREA SISTEMULUI BRANDS 85
Protocoalele discutate pana acum pot sa detecteze identitatea utilizatorilor necinstit i, far a
nsa a putea preveni utilizarea unei monezi de doua ori. Singurul mod prin care s-ar putea
realiza acest lucru este prin ncorporarea unei componente hardware (chip sau smart card) n
calculatorul utilizatorului, cu rolul de observator al tuturor plat ilor.

In plus, nici un protocol
de plata al utilizatorlui nu poate efectuat fara o informat ie secreta det inut a de observator.
Astfel, observatorul autorizeaza si participa activ la toate tranzact iile.
Totusi, se poate ntampla ca utilizatorul sa reuseasc a printr-o modalitate oarecare sa ae
informat ia secreta a observatorului.

In acest caz sistemul trebuie sa asigure detectarea utiliza-
torului care a comis frauda, la fel ca n primele protocoale discutate.
Cele mai cunoscute si utilizate protocoale de plata o-line cu monezi electronice apart in lui
Stefan Brands. Primul sistem real de tip o-line, numit DigiCash, se bazeaza n totalitate
pe aceste protocoale.
7.2 Init ializarea sistemului Brands
Se cauta doua numere prime mari p si q cu proprietatea q|p 1 (p si q sunt alese la fel ca n
schema de identicare Schnorr) si H o funct ie de dispersie far a coliziuni tari. Se genereaza un
subgrup G
q
de ordin q al lui Z
p
(aici se vor efectua toate calculele din sistem).
Init ializarea sistemului consta n generarea de catre banca a urmatoarelor cinci numere
distincte:
1. g G
q
, x Z

q
; se calculeaza h = g
x
(mod q). Tuplul generator (g, h) G
q
G
q
constituie cheia publica a bancii, iar x Z

q
cheia secreta.
2. Un tuplu generator (g
1
, g
2
) cu g
1
, g
2
G
q
.
3. Un generator d G
q
.
Vom presupune pentru nceput ca exista n sistem monezi de o singura valoare, apoi vom
arata cum se pot introduce monezi de valori diferite.
Securitatea acestei scheme consta n alegerea numerelor g, h, g
1
, g
2
, d astfel nc at nici un
utilizator sa nu poata exprima oricare din aceste numere ca o combinat ie de puteri ale celorlalte.
Acest lucru este din punct de vedere al complexitat ii la fel de dicil ca si gasirea unei reprezentari
netriviale a lui 1 n raport cu (g, h, g
1
, g
2
, d) o problema NP-completa pentru p si q convenabil
alese (prelegerea precedent a).
Cand utilizatorul U si deschide un cont n banca, el genereaza aleator numerele u
1
, u
2
Z

q
si calculeaza I = g
u
1
1
g
u
2
2
(mod p). (u
1
, u
2
) va constitui cheia secreta a lui U, iar I G
q
va
pseudonimul folosit de B pentru identitatea reala a lui U. B stocheaza ntr-o baza de date
identitatea reala a lui U, num arul contului sau si I. Este important ca U sa cunoasca o singura
reprezentare a lui I n raport cu (g
1
, g
2
). Daca U utilizeaza o moneda de doua ori, B poate sa
determine (u
1
, u
2
).
O moneda electronica este reprezentat a sub forma (m, sig
K
(m)) cu anumite restrict ii asupra
lui m, dupa cum vom vedea in continuare.
86 PRELEGEREA 7. SISTEMUL ELECTRONIC DE PLAT

A BRANDS
7.3 Tehnici pentru crearea sistemului
7.3.1 Protocolul de semnatura Chaum - Pedersen
Protocolul de semnatur a Chaum - Pedersen este un protocol de tip Schnorr. Fie m G
q
mesajul care trebuie semnat. Presupunem ca U doreste o semnatur a de la B asupra lui m.
Pasii protocolului sunt urmatorii:
1. B genereaza aleator w Z
q
si trimite lui U numerele z = m
x
(mod p), a =
g
w
(mod p) si b = m
w
(mod p).
2. U genereaza aleator provocarea c = H(m z a b) si o trimite lui B.
3. B raspunde cu r = w + cx (mod q).
4. U accepta daca si numai daca h
c
a = g
r
(mod p) si z
c
b = m
r
(mod p).
(de vericat; nu coincide cu pag 22 din licenta)
Se observa ca singura diferent a fat a de schema lui Schnorr este trimiterea la pasul 1 a nca
doua numere: z si b. sig
K
(m) = (z, a, b, r) va constitui semnatura asupra mesajului m.
Formal, protocolul de semnatura Chaum-Pedersen este:
P =G
q
,
A =G
3
q
Z
q
,
K= {(p, q, g, h, x)| p, q prime, q|p 1, h = g
x
(mod p)}.
Cheia (p, q, g, h) este publica, iar x este secreta.
K K , m G
q
si w Z
q
aleator, denim
sig
K
(m, w) = (z, a, b, r), unde z = m
x
(mod p), a = g
w
(mod p), b = m
w
(mod p),
c = H(m z a b), r = w + cx (mod q).
ver
K
(m, (z, a, b, r)) = T h
c
a = g
r
(mod p), z
c
b = m
r
(mod p).
Daca U si B urmeaza protocolul, dupa primii 3 pasi avem:
g
r
= g
w+cx
= (g
x
)
c
g
w
= h
c
a (mod p),
m
r
= m
w+cx
= (m
x
)
c
m
w
= z
c
b (mod p),
deci U accepta n pasul 4.
7.3.2 Protocolul restrictiv de semnatura blind Chaum - Pedersen

In aceasta sect iune descriem o variant a simplicata a schemei de semnatura blind folosita
n protocolul de extragere. Pentru a transforma protocolul de semnatur a Chaum - Pedersen
ntr-un protocol de semnatura blind, U trebuie sa obt in a un nou mesaj m

si noile numere
a

, b

, z

, c

= H(m

). B raspunde cu r, pe care U l transforma n r

astfel nc at
(z

, a

, b

, r

) sa e o semnatur a valida asupra lui m

. Protocolul este urmatorul:


7.3. TEHNICI PENTRU CREAREA SISTEMULUI 87
1. B genereaza aleator w Z
q
si trimite lui U valorile z = m
x
(mod p), a = g
w
(mod p)
si b = m
w
(mod p).
2. U genereaza aleator trei numere s Z

q
, u, v Z
q
, apoi calculeaza:
m

= m
s
(mod p), w

= uw + v (mod q), a

= a
u
g
v
= g
w

(mod p),
b

= a
us
(m

)
v
= (m

)
w

(mod p), z

= z
s
= (m

)
x
(mod p), c

= H(m

||z

||a

||b

)
si trimite lui B numarul c = c

u
1
(modq).
3. B raspunde cu r = w + cx (mod q).
4. U accepta daca si numai daca h
c
a = g
r
(mod p) si z
c
b = m
r
(mod p).
Se observa ca (z, a, b, r) nu este o semnatur a valida asupra lui m deoarece r este un raspuns
la o provocare diferita de H(m||z||a||b). Dar U poate calcula r

= ur + v (mod q) si obt ine


sig
K
(m

) = (z

, a

, b

, r

), o semnatura valida asupra lui m

. Semnatura poate vericat a de


oricine.
U accepta la pasul 4 deoarece relat iile sunt vericate la fel ca n protocolul anterior.
Propozit ia 7.1 Daca r

= ur + v (mod q), atunci (z

, a

, b

, r

) constituie o semnatura valida


asupra lui m

.
Demonstrat ie:
Pentru K = (p, q, g, h, x, w), ver
K
(m

, (z

, a

, b

, r

)) = T

h
c

= g
r

(mod p)
(z

)
c

= (m

)
r

(mod p)
Dar r

= ur+v = u(w+cx)+v (mod p) = g


r

= g
u(w+cx)+v
= g
ucx
g
v+uw
= (g
x
)
uc
g
w

=
h
c

(mod p) si (m

)
r

= (m

)
ucx
(m

)
uw+v
= (m

)
xc

(m

)
w

= (z

)
c

(mod p),
deci sig
K
(m

) = (z

, a

, b

, r

). 2
Protocolul este de tip blind deoarece B nu cunoaste m

, mesajul pentru care U a obt inut


o semnatur a.
Propozit ia 7.2
1. Daca U urmeaza protocolul pas cu pas, atunci perechea (m

, sig
K
(m

)) nu poate legata
de nici o execut ie specica a protocolului.
2. Chiar daca B aa m

, reprezentarea (s, t) a lui m

n raport cu (m, g) cunoscuta de U i


este ascunsa lui B n setul tuturor reprezentarilor lui m

.
Demonstratie:
La nalul protocolului, B este n posesia urmatoarelor informat ii: w, z, a, b, c. Arat am ca
exista q alegeri posibile pentru (s, u, v) care produc n nal aceeasi pereche (m

, sig
K
(m

)).
Fie s Z
q
xat (sunt posibile q 1 alegeri pentru s) si m

, sig
K
(m

) = (z

, a

, b

, r

) xate.
Sa analizam n cate moduri putem alege u, v.
Se calculeaza n mod unic c

= H(m

||z

||a

||b

) (mod q). Deci uc = c

(mod q) = u =
c

c
1
(mod q), deci si u este unic determinat.
88 PRELEGEREA 7. SISTEMUL ELECTRONIC DE PLAT

A BRANDS
r

= ur +v = u(w +cx) +v = uw +c

x +v (mod q) = v = r

uw c

x (mod q). Sa
arat am ca u si v astfel determinate veric a relat iile pentru a

si b

.
a
u
g
v
= a
u
g
r

uwc

x
= a
u
g
r

(g
w
)
u
(g
x
)
c

= a
u
h
c

a
u
h
c

= a

(mod p)
(m

)
w

= (m

)
uv+w
= b
us
(m

)
v
= b
us
(m

)
r

uwc

x
= (m
w
)
us
(m

)
r

(m

)
uw
((m

)
x
)
c

=
m
wus
(z

)
c

(m
s
)
uw
(z

)
c

= b

(mod p)
Am demonstrat asfel ca exista exact q1 alegeri pentru (s, u, v) care produc aceeasi pereche
(m

, sig
K
(m

)), deci B nu realizeaza n care execut ie specica a protocolului s-a semnat mesajul
m

. 2
7.3.3 Generarea aleatoare a unei reprezentari

In faza de init ializare a sistemului, U trebuie sa genereze un tuplu (u


1
, u
2
) pentru a-si deschide
un cont n banca si a calcula pseudonimul sau I = g
u
1
1
g
u
2
2
(mod p). Banca trebuie sa se asigure
ca U nu cunoaste doua reprezentari ale lui I n raport cu (g
1
, g
2
).
Prin urmatorul protocol U si B genereaza mpreuna un num ar aleator h Z
q
si o reprezen-
tare a acestuia n raport cu tuplul generator (g
1
, . . . , g
k
).
1. U genereaza aleator tuplul (x
1
, . . . , x
k+1
) si trimite lui B h

=
k+1

i=1
g
x
i
i
(mod p).
2. B trimite lui U un tuplu ales aleator (y
1
, . . . , y
k
).
3. U trimite x
k+1
lui B.
Daca U a fost corect la pasul 3, (x
1
+ y
1
, . . . , x
k
+ y
k
) este o reprezentare a lui h =
h

g
x
k+1
k+1
(
k

i=1
g
y
i
i
) (mod p) n raport cu (g
1
, . . . , g
k
).

Intr-adevar, g
x
1
+y
1
1
. . . g
x
k
+y
k
k
=
k

i=1
g
x
i
i
k

i=1
g
y
i
i
= h

g
x
k+1
k+1
k

i=1
g
y
i
i
= h (mod p).
7.4 Sistemul de baza Brands

In aceasta sect iune sunt descrise cele trei protocoale care formeaza sistemul de baza: protocolul
de extragere a monezilor electronice, protocolul de plata si protocolul de depozit. Se presupune
ca n sistem exista monezi de o unica valoare. Ulterior vom arata cum se pot introduce n
sistem monezi de diferite valori.
7.4.1 Protocolul de extragere a monezilor
Daca utilizatorul U avand identitatea I = g
u
1
1
g
u
2
2
(mod p) doreste sa extraga o moneda din
contul sau, mai ntai trebuie sa conving a banca ca ntr-adevar el este posesorul contului de unde
se face extragerea. Pentru aceasta U si B vor executa protocolul din prelegerea anterioar a, prin
care U i demonstreaza lui B cunoasterea unei reprezentari a lui I n raport cu (g
1
, g
2
), far a a
o revela.
7.4. SISTEMUL DE BAZ

A BRANDS 89
Pentru ecare extragere a unei monezi, este executat urmatorul protocol:
1. U i demonstreaza lui B cunoasterea reprezentarii (u
1
, u
2
) a lui I n raport cu (g
1
, g
2
)
prin protocolul din prelegerea anterioara.
2. B realizeaza urmatoarele operat ii:
(a) extrage din contul lui U valoarea xata a monezii;
(b) calculeaza m = Id (mod p);
(c) genereaza aleator w Z
q
;
(d) trimite lui U: z = m
x
(mod p), a = g
w
(mod p) si b = m
w
(mod p).
3. U realizeaza urmatoarele operati:
(a) calculeaza m = Id (mod p);
(b) genereaza aleator s Z

q
, u, v Z
q
;
(c) calculeaza: m

= m
s
= I
s
d
s
= g
u
1
s
1
g
u
2
s
2
d
s
(mod p),
z

= z
s
(mod p), w

= uw + v (mod q), a

= a
u
g
v
= g
w

(mod p), b

=
b
us
(m

)
v
= (m

)
w

(mod p);
(d) determina aleator a descompunere a lui m

in A si B (m

= AB (mod p)) astfel:


determina aleator ecare din numerele u
1
s, u
2
s ca suma de doua numere:
u
1
s = x
1
+ x
2
(mod q), u
2
s = y
1
+ y
2
(mod q), s = z
1
+ z
2
(mod q),
apoi calculeaza A = g
x
1
1
g
y
1
2
d
z
1
(mod p) si B = g
x
2
1
g
y
2
2
d
z
2
(mod p);
(e) calculeaza c

= H(m

||z

||a

||b

||A);
(f) trimite lui B mesajul c = c

u
1
(mod q).
4. B raspunde cu r = cx + w (mod q).
5. U accepta daca si numai daca g
r
= h
c
a (mod p), m
r
= z
c
b (mod p).

In nal, U calculeaza r

= ru + v (mod q).
Conform propozit iilor 7.1 si 7.2, n nal U este n posesia unui mesaj semnat
(A, B, sig
K
(A, B)) = (z

, a

, b

, r

)
care nu poate legat de nici o execut ie specica a protocolului.

In plus, m

= AB (mod p).
Descompunerea lui m

n A si B a fost facuta pentru ca U sa poate sa demonstreze n protocolul


de plata identitatea sa, fara a o dezvalui.
Daca U urmeaza protocolul, atunci se va aa n nal n posesia reprezentarilor lui m

, A, B
n raport cu (g
1
, g
2
, d) care sunt (u
1
s, u
2
s, s), (x
1
, y
1
, z
1
) si respectiv (x
2
, y
2
, z
2
). Din Corolarul
?.1 (prelegerea precedenta), U nu poate aa doua reprezent ari ale lui m

n timp polinomial.
Cum (x
1
+ x
2
, y
1
+ y
2
, z
1
+ z
2
) este de asemenea o reprezentare a lui m

rezulta ca trebuie
ndeplinite simultan condit iile (toate modulo q):
u
1
s = x
1
+ x
2
, u
2
s = y
1
+ y
2
, s = z
1
+ z
2
.
Faptul ca U accepta n pasul 5 se deduce similar protocolului din ?.3.2.
90 PRELEGEREA 7. SISTEMUL ELECTRONIC DE PLAT

A BRANDS
7.4.2 Protocolul de plata
Cand U doreste sa foloseasca o moneda la magazinul S este executat urmatorul protocol:
1. U i trimite lui S:
A = g
x
1
1
g
y
1
2
d
z
1
(mod p), B = g
x
2
1
g
y
2
2
d
z
2
(mod p), sig
K
(A, B) = (z

, a

, b

, r

).
(Daca n sistem sunt monezi de valori diferite U trebuie sa trimita si valoarea mo-
nezii.)
2. S se asigura ca AB = 1.
Apoi el veric a semnatura bancii:
ver
K
(m

, sig
K
(m

)) = T

g
r

= h
c

(mod p)
(m

)
r

= (z

)
c

(mod p)
cu c

= H(AB||z

||a

||b

||A).
Daca relat iile sunt ndeplinite, S este convins ca moneda a fost emisa de banca si
trimite lui U o provocare c Z

q
\ {1}.
3. U raspunde cu
r
1
= x
1
+ cx
2
, r
2
= y
1
+ cy
2
, r
3
= z
1
+ cz
2
(toate calculele sunt modulo q).
4. S accepta daca si numai daca g
r
1
1
g
r
2
2
d
r
3
= AB
c
(mod p).
Teorema 7.1
1. (Completitudinea) Daca U urmeaza protocolul pas cu pas si protocolul de extragere a
monezii a fost executat corect, atunci S accepta la pasul 4.
2. (Consistent a) Daca U nu cunoaste cate o reprezentare a lui A, respectiv B n raport cu
(g
1
, g
2
, d), atunci nu exista strategie pentru el astfel ncat S sa accepte cu o probabilitate
de succes ne-neglijabila.
3. (Ascunderea informat iei) Chiar daca S dispune de o putere de calcul nelimitata, iar
U si S executa protocolul pas cu pas, S nu va reusi sa ae n nal identitatea lui U cu o
probabilitate ne-neglijabila.
Demonstrat ie:
1. Daca protocolul este executat pas cu pas, la pasul 4 avem:
g
r
1
1
g
r
2
2
d
r
3
= g
x
1
+cx
2
1
g
y
1
+cy
2
2
d
z
1
+cz
2
= g
x
1
1
g
y
1
2
d
z
1
(g
x
2
1
g
y
2
2
d
z
2
)
c
= AB
c
(mod p),
deci S accepta.
2. U ar trebui sa determine numerele r
1
, r
2
, r
3
Z
q
asfel nc at g
r
1
1
g
r
2
2
d
r
3
= AB
c
(mod p),
ceea ce este echivalent cu determinarea unei reprezentari a lui AB
c
n raport cu (g
1
, g
2
, d),
care este o problema pe care U nu o poate rezolva n timp polinomial.
Astfel, se deduce un lucru foarte important pentru securitatea sistemului:
7.4. SISTEMUL DE BAZ

A BRANDS 91
S accepta U cunoaste cate o reprezentare a lui A si B n raport cu (g
1
, g
2
, d) si
este cinstit = U cunoaste o reprezentare a lui m

n raport cu (g
1
, g
2
, d).
Deci, daca U nu cunoaste o reprezentare a lui m

n raport cu (g
1
, g
2
, d), nu are nici o
sansa sa-l faca pe S sa accepte la pasul 4.
3. La sfarsitul protocolului, S se aa n posesia urmatoarelor informat ii:
A, B, z, a, b, r, c, r
1
, r
2
, r
3
.
Consideram sistemul (ntai cu necunoscutele u
1
, u
2
, s, r
1
, r
2
, r
3
, iar a doua oara cu ne-
cunoscutele x
1
, x
2
, y
1
, y
2
, z
1
, z
2
):

x
1
+ x
2
= u
1
s y
1
+ y
2
= u
2
s z
1
+ z
2
= s
x
1
+ cx
2
= r
1
y
1
+ cy
2
= r
2
z
1
+ cz
2
= r
3
(toate ecuat iile sunt scrise modulo q).
Din acest sistem se deduce ca problema determinarii lui (u
1
, u
2
) este echivalent a cu prob-
lema determinarii numerelor: x
1
, x
2
, y
1
, y
2
, z
1
, z
2
.
Informat iile pe care S le are despre x
1
, x
2
, y
1
, y
2
, z
1
, z
2
sunt:

x
1
+ cx
2
= r
1
(mod q) (1) A = g
x
1
1
g
y
1
2
d
z
1
(mod p) (4)
y
1
+ cy
2
= r
2
(mod q) (2) B = g
x
2
1
g
y
2
2
d
z
2
(mod p) (5)
z
1
+ cz
2
= r
3
(mod q) (3) g
r
1
1
g
r
2
2
d
r
3
= AB
c
(mod p) (6)
(1) x
1
= r
1
cx
2
(mod q), (2) y
1
= r
2
cy
2
(mod q) , (3) z
1
= r
3
cz
2
(mod q)

Inlocuind x
1
, y
1
, z
1
n (4) si folosind (6) rezulta:
A = g
r
1
cx
2
1
g
r
2
cy
2
2
d
r
3
cz
2
(mod p) g
r
1
1
g
r
2
2
d
r
3
= A(g
x
2
1
g
y
2
2
d
z
2
)
c
(mod p)
g
x
2
1
g
y
2
2
d
z
2
= (A
1
g
r
1
1
g
r
2
2
d
r
3
)
1
c
= B (mod p). (7)
Relatia (7) este echivalent a cu (5), ceea ce demonstreaza ca din relat iile (1),(2) si (3) nu
se obt ine nici o informat ie n plus, deci (4) si (5) sunt de fapt singurele informat ii esent iale
pe care S le are despre x
1
, x
2
, y
1
, y
2
, z
1
, z
2
.
De aici rezulta ca determinarea lui (x
1
, y
1
, z
1
) este echivalenta cu determinarea unei
reprezent ari a lui An raport cu (g
1
, g
2
, d), iar determinarea lui (x
2
, y
2
, z
2
) este echivalenta
cu determinarea unei reprezent ari a lui B.
Daca dispune de o putere de calcul nelimitata, S poate determina o reprezentare a lui A
si o reprezentare a lui B n raport cu (g
1
, g
2
, d). Probabilitatea ca aceste reprezent ari sa
e egale cu cele cunoscute de U este
1
q
2
1
q
2
=
1
q
4
din Propozit ia ?.2 (prelegerea anterioara).
Deci probabilitatea ca S sa ae identitatea lui U dupa executarea protocolului este
1
q
4
.
7.4.3 Protocolul de depozit
Dupa un anumit interval de timp, toate magazinele depoziteaza la banca monezile electronice
primite de la client i. Protocolul executat de un magazin S cu banca pentru trimiterea ecarei
monezi este urmatorul:
92 PRELEGEREA 7. SISTEMUL ELECTRONIC DE PLAT

A BRANDS
1. S si B urmeaza protocolul provocare/raspuns (prelegerea anterioar a) prin care S
demonstreaza cunoasterea reprezent arii identitat ii sale n raport cu (g
1
, g
2
).
2. S trimite lui B mesajele A, B, sig
K
(A, B), c, r
1
, r
2
, r
3
.
3. B verica validitatea semnaturii sig
K
(A, B), stocheaza A, B, sig
K
(A, B), c, r
1
, r
2
, r
3
ntr-o baza de date si crediteaza contul lui S cu valoarea monezii.
Teorema 7.2 Daca moneda (A, B, sig
K
(A, B)) apare de doua ori n baza de date a bancii,
atunci banca poate determina identitatea utilizatorului necinstit care a utilizat moneda de doua
ori.
Demonstrat ie:
Daca moneda (A, B, sig
K
(A, B)) apare de doua ori n baza de date, rezulta ca banca dispune
de doua seturi de raspunsuri ale lui U: (r
1
, r
2
, r
3
) si (r
1

, r
2

, r
3

) corespunzatoare celor doua


provocari c si c

ale lui S.
Din relat iile de vericare ale protocolului de plata rezulta:

g
r
1
1
g
r
2
2
d
r
3
= AB
c
(mod p) (1)
g
r
1

1
g
r
2

2
d
r
3

= AB
c

(mod p) (2)
Ridicand (1) la puterea c

si (2) la puterea c, rezulta:

A
c

B
cc

= g
r
1
c

1
g
r
2
c

2
d
r
3
c

(mod p)
A
c
B
cc

= g
r
1

c
1
g
r
2

c
2
d
r
3

c
(modp)

Impart ind cele doua relat ii rezulta:


A
c

c
= g
r
1
c

r
1

c
1
g
r
2
c

r
2

c
2
d
r
3
c

r
3

c
(mod p) =
A = g
(r
1
c

r
1

c)(c

c)
1
1
g
(r
2
c

r
2

c)(c

c)
1
2
d
(r
3
c

r
3

c)(c

c)
1
(mod p) (3)
Analog se obt ine: B = g
(r
1
r
1

)(cc

)
1
1
g
(r
2
r
2

)(cc

)
1
2
d
(r
3
r
3

)(cc

)
1
(mod p) (4)
Dar A = g
x
1
1
g
y
1
2
d
z
1
(mod p) (5) si B = g
x
2
1
g
y
2
2
d
z
2
(mod p) (6)
Cum nu se cunoaste o reprezentare netriviala a lui 1 n raport cu (g
1
, g
2
, d), din (3),(4),(5)
si (6) rezulta (toate relat iile sunt modulo q):

(r
1
c

r
1

c)(c

c)
1
= x
1
(r
2
c

r
2

c)(c

c)
1
= y
1
(r
3
c

r
3

c)(c

c)
1
= z
1
(r
1
r
1

)(c c

)
1
= x
2
(r
2
r
2

)(c c

)
1
= y
2
(r
3
r
3

)(c c

)
1
= z
2
Ceea ce nseamn a ca banca poate sa calculeze:
u
1
s = x
1
+ x
2
= (r
1
c

r
1

c)(c

c)
1
+ (r
1
r
1

)(c c

)
1
(mod q) (7)
u
2
s = y
1
+ y
2
= (r
2
c

r
2

c)(c

c)
1
+ (r
2
r
2

)(c c

)
1
= y
2
(mod q) (8)
s = z
1
+ z
2
= (r
3
c

r
3

c)(c

c)
1
+ (r
3
r
3

)(c c

)
1
= z
2
(mod q) (9)
Din (9) = s = (c

c)
1
(r
3
(c

1) r
3

(c 1)) (mod q) =
s
1
= (r
3
(c

1) r
3

(c 1))
1
(c

c) (mod q) (10).
Din (7) si (10) rezulta u
1
= u
1
ss
1
= (c

c)
1
(r
1
(c

1) r
1

(c 1))(r
3
(c

1) r
3

(c
1))
1
(c

c) = (r
1
(c

1) r
1

(c 1))(r
3
(c

1) r
3

(c 1))
1
(mod q)
si analog u
2
= (r
2
(c

1) r
2

(c 1))(r
3
(c

1) r
3

(c 1))
1
(mod q),
deci banca poate sa calculeze identitatea utilizatorului necinstit. 2
7.5. CORECTITUDINEA SISTEMULUI DE BAZ

A 93
7.5 Corectitudinea sistemului de baza
Urmatoarea teorema este fundamental a pentru demonstrarea securitat ii sistemului:
Teorema 7.3

In protocolul de extragere a monezilor, U nu poate sa obt ina o semnatura asupra
unui mesaj m

pentru care cunoaste o reprezentare n raport cu (g


1
, g
2
, d), dar care nu este o
putere a lui m.
Demonstrat ie:
Presupunem prin reducere la absurd ca U poate sa obt in a o semnatur a asupra lui m

, cu
m

de forma m

= m
s
g
r
1
= g
u
1
s+r
1
g
u
2
s
2
d
s
(mod p), cu s, r Z
q
arbitrare. Celelalte cazuri pentru
forma lui m

se vor rezolva analog.


Daca U poate obt ine o semnatura valida asupra lui m

, rezulta ca U poate sa calculeze


sig
K
(m

) = (z

, a

, b

, r

) n timp polinomial.
Sa vedem cat de difcila este pentru U calcularea lui b

.
b

= (m

)
w

= (m

)
uw+v
= (m
s
g
r
1
)
uw+v
= m
suw
m
sv
(g
ru
1
)
w
g
rv
1
= b
su
m
sv
g
rv
1
(g
ru
1
)
w
(mod p).
Notam g
3
= g
ru
1
= g
w
3
= g
rv
1
m
sv
b
su
b

(mod q), cu g
1
, m, b, s, u, v, r, g
3
cunoscute, iar w
necunoscut lui U (w este ales de B aleator la ecare execut ie a protocolului). Deci calcularea
lui b

este la fel de dicila ca si calcularea lui g


w
3
.
Fie s Z
p
astfel ncat g
3
= g
s
(mod p).
Presupunand ca b

se poate calcula n timp polinomial, rezulta ca si g


w
3
se poate calcula n
timp polinomial.
Dar U cunoaste g
3
= g
s
, g
w
, g, m, m
w
si reuseste sa determine g
ws
= g
w
3
, adica cheia Die-
Hellman unica pentru g
w
, g
s
.
Cum u si w sunt alese aleator, avem ca si g
w
, g
s
= g
3
= g
ru
1
sunt aleatoare n G
q
. Am
construit asfel un algoritm polinomial care are la intrare numerele aleatoare g
s
, g
w
si calculeaza
cheia unica Die-Hellman, ceea ce reprezinta o contradict ie cu NP-completitudinea acestei
probleme.
De aici rezulta ca b

nu se poate calcula polinomial, deci U nu poate obt ine o semnatura


asupra lui m

care nu e multiplu de m. 2
Consecint a: Din Teoremele 7.1 si 7.3 deducem ca U poate sa obt ina o semnatura asupra
lui m

pe care o poate folosi ntr-un protocol de plata daca si numai daca impunem urmatoarele
restrict ii asupra lui m

(care justica calicativul restrictiv dat acestui protocol de semnatur a):


1. m

este de forma m
s
m G
q
;
2. U cunoaste o reprezentare a lui m

n raport cu (g
1
, g
2
, d) care este multiplu al reprezent arii
lui m.
Sa enunt am cateva proprietat i importante ale sistemului:
1. Securitatea:
Din consecint a anterioara rezulta ca identitatea utilizatorului este inclusa n m

(m

=
m
s
= I
s
d
s
); astfel, daca utilizatorul foloseste moneda o singura data i este garantat a
anonimitatea.

In schimb, daca moneda este folosita de doua ori, se poate detecta identi-
tatea utilizatorului necinstit, cum am aratat n Teorema 7.2.
94 PRELEGEREA 7. SISTEMUL ELECTRONIC DE PLAT

A BRANDS
Securitatea acestui sistem se bazeaza pe presupunerea de NP-completitudine a problemei
reprezent arii n grupuri, a problemei determinarii cheii unice Die-Hellman si pe ipoteza
ca funct ia de dispersie folosita n sistem este far a coliziuni tari.
Falsicarea unei monezi presupune imitarea semnaturii bancii, ceea ce este calculabil
dicil. Presupunand totusi ca U fasica o moneda (m

, sig
K
(m

)) (dispunand de o
putere de calcul foarte mare), pentru a avea vreo sansa ca moneda sa i e acceptata n
protocolul de plata, trebuie sa cunoasca o reprezentare a lui m

n raport cu (g
1
, g
2
, d)
(din Teorema 7.1). Astfel, sarcina falsicatorului devine si mai dicila.
2. Anonimitatea utilizatorilor este de asemenea garantat a de Teorema 7.1.
3. Sistemul este fara legaturi.
O moneda nu poate legata de nici o execut ie specica a protocolului de extragere,
conform Propozit iei 7.2.
4. Sistemul este fara urmarire.
Tranzact iile utilizatorului nu pot urmarite de banca dupa protocolul de extragere a
monezilor.

In momentul n care moneda este depozitata n banca de catre un magazin,
banca nu poate deduce din care cont a fost extrasa init ial.
5. Sistemul este o-line.
6. Sistemul asigura protejarea utilizatorilor mpotriva acuzarii nedrepte a bancii.
Daca banca acuza un utilizator U ca a folosit o moneda de doua ori, ea trebuie sa dezvaluie
juriului o reprezentare a identitatii lui U, de exemplu (u
1
, u
2
). Daca U este onest,
reprezentarea (u
1
, u
2
) coincide cu cea cunoscuta de U cu o probabilitate
1
q
(prelegerea
anetrioara). Deci, cu o probabilitate mare (1
1
q
), cele doua reprezent ari sunt dis-
tincte. Asfel, U se aa n posesia a doua reprezentari ale lui I n raport cu (g
1
, g
2
),
deci poate calcula o reprezentare a lui 1 n raport cu (g
1
, g
2
). U prezinta juriului aceasta
reprezentare a lui 1, ceea ce constituie proba nevinovat iei sale (U nu ar putut calcula
altfel o reprezentare a lui 1, deoarece aceasta este o problema NP - completa).
7. Introducerea monezilor de valori diferite. Exista cel put in doua metode:
Banca poate sa utilizeze cate o cheie publica diferita pentru ecare tip de moneda.
Astfel, daca n sistem exista k monezi distincte, banca dispune de k chei publice:
(g, h
1
), . . . , (g, h
k
) si de k chei secrete corespunzatoare: x
1
, . . . , x
k
cu x
i
= log
g
i
h
i
,
i = 1, 2, . . . k.
Se utilizeaza k generatori d
1
, . . . , d
k
(n loc de unul singur d utilizat n sistemul de
baza). Fiecare generator d
i
reprezinta o anumit a valoare (de exemplu d
i
reprezint a
valoarea 2
i1
). Atunci se poate forma orice moneda de valoare cuprinsa ntre 1
si 2
k
folosind reprezentarea n binar a valorii monezii. Generatorul d
i
apare n
reprezentarea monezii daca bitul i din reprezentarea binara este 1.
De exemplu, pentru o moneda de valoarea 11 = 1011
2
, m = Id
4
d
2
d
1
, iar pentru o
moneda de valoare 18 = 10010
2
, m = Id
5
d
2
.

Inlocuirea lui m = Id cu m = Id
i
p
. . . d
i
1
este singura modicare realizata n proto-
coalele sistemului de baza.
Prelegerea 8
Cecuri electronice
8.1 Sistemul de plata cu cecuri nedivizibile
Sistemele de plata cu monezi electronice pot extinse n mod natural la sisteme care utilizeaza
cecuri electronice.
Ideea acestei extensii se bazeaza pe intrpducerea a k noi generatori (f
1
, . . . , f
k
) G
k
g
, unde
f
i
reprezint a o anumita valoare (de exemplu 2
i1
unitat i). Dupa cum s-a vazut n prelegerea
anterioar a, orice suma de cel mult 2
k
1 poate reprezentata ca un produs de generatori f
i
,
conform reprezentarii binare a valorii sumei.
Succesiunea de evenimente n sistemul de cecuri nedivizibile este urmatoarea:
1. Protocolul de extragere a cecului electronic:
Daca utilizatorul U (cunoscut bancii prin identitatea sa I = g
u
1
1
g
u
2
2
mod p)) doreste sa
extraga din banca un cec de valoare maxima 2
k
1, genereaza aleator (a
1
, . . . , a
k
) Z
k
q
si calculeaza m =
m

i=1
f
a
i
i
(mod p). Banca extrage din contul lui U valoarea 2
k
1 si
stocheaz a ntr-o baza de date identitatea lui U mpreuna cu m.
2. Protocolul de plata:
Utilizatorul U doreste sa foloseasca la magazinul S o suma de valoare mai mica sau egala
cu 2
k
1 (presupunem, pentru claritate, k 3 si U utilizeaza suma de 5 = 101
2
unitat i).
Atunci, U trebuie sa i releve lui S: valorile A, B, semnatura pe care a obt inut-o de
la banca asupra lui (A, B) si numerele (a
1
, a
3
), corespunzatoare reprezent arii n binar a
valorii sumei.
3. Protocolul de depozit:
Magazinul S depoziteaza la banca cecul electronic (A, B, sig
K
(A, B)) mpreun a cu partea
folosita din cec: (a
1
, a
3
). Banca stocheaz a perechea (a
1
, a
3
) ntr-o lista de recuperare.
4. Protocolul de recuperare a sumei nefolosite:
Utilizatorul U doreste sa recupereze suma din cec pe care nu a utilizat-o (corespunzatoare
generatorilor f
2
, f
4
, . . . , f
k
). U trimite bancii (A, B, sig
K
(A, B) si (a
2
, a
4
, . . . , a
k
). Banca
veric a faptul ca m = AB este asociat cu I n baza sa de date si ca (a
2
, a
4
, . . . , a
k
) nu
sunt pe lista de recuperare.
95
96 PRELEGEREA 8. CECURI ELECTRONICE
Daca banca accepta, ea sterge din baza de date m si crediteaza contul lui U cu suma
nefolosita din cec: 2
k
1 5 = 2
k
6.
Deoarece cecul este nedivizibil, un utilizator are dreptul sa foloseasca un cec o singura
data. Daca nu a utilizat valoarea maxima a cecului, U trebuie sa urmeze mpreun a cu banca
protocolul de recuperare.
Vom construi mai tarziu si un sistem de cecuri cu proprietatea de divizibilitate.
8.1.1 Init ializarea sistemului de cecuri
Numerele p, q, g, x, h, g
1
, g
2
, funct ia de dispersie H si subgrupul G
q
al lui Z
q
sunt generate ca
n sistemul de baza. Apoi, banca genereaza urmatoarele numere:
Doua tupluri generatoare de lungime k: (e
1
, . . . , e
k
) G
k
q
si (f
1
, . . . , f
k
) G
k
q
.
Doi generatori: d
1
, d
2
G
k
q
.
Deschiderea unui cont se similar ca n sistemul de baza, utilizatorul U ind cunoscut prin
pseudonimul sau I = g
u
1
1
g
u
2
2
(mod p), cu u
1
, u
2
generate aleator n Z
q
.
Un cec electronic este de forma (m

, sig
K
(m

)) cu restrict ia ca exista s Z

q
cu m

=
m
s
(mod p), unde m cont ine de aceasta data atat identitatea utilizatorului care a extras cecul,
cat si valoarea maxima a cecului:
m = (
2

i=1
g
u
i
i
)d
z
1
1
. .
identitate
(
k

i=1
e
a
i
i
f
b
i
i
)d
a
k+1
2
. .
valoare
(mod p)
Rolul generatorului d
1
este acelasi ca n sistemul de baza (sa asigure ca identitatea utiliza-
torului ram ane ascunsa daca acesta este onest), iar rolul lui d
2
va sa mpiedice realizarea de
legaturi de catre banca dupa protocolul de recuperare.
8.1.2 Protocolul de extragere a cecurilor
Presupunand ca utilizatorul U cu identitatea I = g
u
1
1
g
u
2
2
(mod p) doreste sa extraga un cec de
valoare maxima 2
k
1, U si B urmeaza protocolul urmator:
1. U i demonstreaza lui B cunoasterea reprezentarii (u
1
, u
2
) a lui I n raport cu (g
1
, g
2
),
prin protocolul din Prelegerea ? (cunoasterea unei reprezentari).
2. U genereaza aleator 2k + 1 numere distincte a
1
, a
2
, . . . , a
k+1
, b
1
, b
2
, . . . , b
k
Z

q
.
Apoi U calculeaza m
1
= (
k

i=1
e
a
i
i
f
b
i
i
)d
a
k+1
2
si trimite m
1
lui B.
3. B efectueaza urmatoarele operat ii:
(a) extrage din contul lui U valoarea maxima a cecului;
(b) stocheaza m
1
si I ntr-o baza de date a cecurilor emise;
(c) calculeaza m
2
= Id
1
(mod p), m = m
1
m
2
(mod p);
8.1. SISTEMUL DE PLAT

A CU CECURI NEDIVIZIBILE 97
(d) genereaza aleator w Z
q
;
(e) trimite lui U numerele z = m
x
(mod p), a = g
w
(mod p) si b = m
w
(mod p).
4. U realizeaza urmatoarele operat ii:
(a) calculeaza m
2
= Id
1
(mod p), m = m
1
m
2
(mod p);
(b) genereaza aleator s Z

q
, u, v Z
q
;
(c) calculeaza m

= m
s
= m
s
1
m
s
2
= g
u
1
s
1
g
u
2
s
2
d
s
1
(
k

i=1
e
a
i
s
i
f
b
i
s
i
)d
a
k+1
s
2
(mod p);
z

= z
s
(mod p), w

= uw + v (mod q), a

= a
u
g
v
= g
w

) (mod p), b

=
b
us
(m

)
v
= (m

)
w

) (mod p);
(d) U determina aleator o descompunere a lui m

n A si B (m

= AB (mod p)) astfel:


determina aleator ecare din numerele u
1
s, u
2
s, s, a
1
s, b
1
s, . . . , a
k
s, b
k
s, a
k+1
s ca sume
de cate doua numere:
u
1
s = x
1
+ x
2
(mod q) u
2
s = y
1
+ y
2
(mod q) s = z
1
+ z
2
(mod q),
a
1
s =
1A
+
1B
(mod q) b
1
s =
1A
+
1B
(mod q) . . .
a
k
s =
kA
+
kB
(mod q) b
k
s =
kA
+
kB
(mod q) a
k+1
s =
A
+
B
(mod q)
apoi U calculeaza
A = g
x
1
1
g
y
1
2
d
z
1
1
(
k

i=1
e

iA
i
f

iA
i
)d

A
2
(mod p), B = g
x
2
1
g
y
2
2
d
z
2
1
(
k

i=1
e

iB
i
f

iB
i
)d

B
2
(mod p) si
c

= H(m

||z

||a

||b

||A);
(e) trimite lui B numarul c = c

u
1
(mod q).
5. B raspunde cu r = cx + w (mod q).
6. U accepta protocolul daca si numai daca g
r
= h
c
a (mod p), m
r
= z
c
b (mod p).

In nal, el calculeaza r

= ru + v (mod q).
(z

, a

, b

, r

) constituie o semnatura valid a asupra lui m

confomr Propozit iei ?.1 (prelegerea


anterioar a).
Rezultatele demonstrate pentru sistemul de baza ram an valabile si n sistemul cu cecuri.
Propozit ia 8.1 Daca U urmeaza protocolul anterior, atunci perechile (m

, sig
K
(m

)) nu pot
legate de nici o execut ie specica a protocolului.
Demonstrat ia este similara celei de la Propozitia ?.2, aratand ca exista exact q valori posibile
pentru (s, u, v) care produc aceeasi pereche (m

, sig
K
(m

)). 2
Propozit ia 8.2

In protocolul de extragere a monezilor, U nu poate sa obt ina o semnatura
asupra unui mesaj m

pentru care cunoaste o reprezentare n raport cu (g


1
, g
2
, d
1
, e
1
, f
1
, . . . , e
k
,
f
k
, d
2
), dar care nu este o putere a lui m.
Demonstrat ia este similara celei de la Teorema ?.3, arat and ca obt inerea unei semnaturi
pentru un mesaj m

, unde m

nu este multiplu de m, este echivalenta din punct de vedere


al complexitat ii cu construct ia unui algoritm care rezolva problema determinarii cheii unice
Die-Hellman. 2
98 PRELEGEREA 8. CECURI ELECTRONICE
Observat ia 8.1 Cheia publica folosita de banca pentru cecuri trebuie sa difere de cheia publica
pentru monezi.
Aceasta deoarece, daca ar egale, U ar putea sa trimita la pasul 2 al protocolului de extragere
a cecului electronic, m
1
= g
t
1
cu t aleator in Z
q
si sa obt ina o semnatura asupra lui m

= m
s
cu m = g
u
1
+t
1
g
u
2
2
d
1
(mod p). Apoi, U ar putea sa foloseasca aceasta semnatura ca o moneda si
ar ncalca armat iile demonstrate n Teorema ?.2, cu consecint e asupra securitat ii sistemului.
Sa demonstram acest lucru.
Propozit ia 8.3 Daca utilizatorul U foloseste de doua ori n sistemul de baza o moneda de
forma (m

, sig
K
(m

)) cu m

= m
s
(mod p) si m = g
u
1
+t
1
g
u
2
2
d
1
(mod p), t ales aleator n Z

q
,
atunci B nu are suciente informat ii pentru a determina identitatea lui U cu o probabilitate
ne-neglijabila.
Demonstrat ie:
Similar demonstrat iei Teoremei ?.2, B poate calcula
(u
1
+ t)s = x
1
+ x
2
= (r
1
c

r
1

c)(c

c)
1
+ (r
1
r
1

)(c c

)
1
(mod q),
u
2
s = y
1
+ y
2
= (r
2
c

r
2

c)(c

c)
1
+ (r
2
r
2

)(c c

)
1
= y
2
(mod q),
s = z
1
+ z
2
= (r
3
c

r
3

c)(c

c)
1
+ (r
3
r
3

)(c c

)
1
= z
2
(mod q),
unde r
1
, r
2
, r
3
, respectiv r
1

, r
2

, r
3

sunt raspunsurile date de U n cele doua protocoale de


plata n care acesta a utilizat moneda.
De aici, B deduce u
2
si u
1
+t. Cum t a fost ales aleator de U n Z

q
, B are q 1 posibilitat i
de alegere pentru t, deci cunoaste identitatea lui U cu probabilitatea
1
q 1
2
8.1.3 Protocolul de plata
Daca U doreste sa foloseasca suma 2
j
1 din cecul sau (corespunzatoare generatorilor
(e
1
, f
1
), . . . , (e
j
, f
j
)) la magazinul S, este este parcurs urmatorul protocol:
1. U i trimite lui S numerele A, B, sig
K
(A, B) = (z

, a

, b

, r

).
De asemenea, el l informeaza pe S asupra sumei pe care doreste sa o utilizeze (2
j
1 n
acest caz).
2. S se asigura ca AB = 1.
Apoi el veric a semnatura bancii: ver
K
(m

, sig
K
(m

) = T
_
g
r

= h
c

(mod p)
(m

)
r

= (z

)
c

(mod p)
cu c

= H(AB||z

||a

||b

||A)
si trimite lui U o provocare c Z

q
\ {1}.
3. U verica daca c = 1, apoi calculeaza si trimite lui S raspunsurile:
for i = 1 to j do r
i
= (r
i1
, r
i2
, r
i3
, r
i4
) (
iA
,
iB
,
iA
,
iB
)
for i = j + 1 to k do r
i
= (r
i1
, r
i2
) (
iA
+ c
iB
,
iA
+ c
iB
)
r
k+1
= (r
(k+1)1
, r
(k+1)2
, r
(k+1)3
) (x
1
+ cx
2
, y
1
+ cy
2
, z
1
+ cz
2
)
r
k+2

A
+ c
B
.
8.1. SISTEMUL DE PLAT

A CU CECURI NEDIVIZIBILE 99
Pentru ecare generator care apare n expresia sumei, U releva puncte, iar pentru gener-
atorii care nu apar, U releva drepte.
4. S accepta
_

_
r
13
+ r
14
= 0 . . . r
j3
+ r
j4
= 0
AB = 1
AB
c
=
j

i=1
e
r
i1
i
f
r
i3
i
_
_
j

i=1
e
r
i2
i
f
r
i4
i
_
_
c
_
_
k

i=j+1
e
r
i1
i
f
r
i2
i
_
_
g
r
(k+1)1
1
g
r
(k+1)2
2
d
r
(k+1)3
1
d
r
k+2
2
(mod p)
Teorema urmatoare este o consecint a imediata a Teoremei ?.1:
Teorema 8.1
1. (Completitudinea) Daca U urmeaza protocolul pas cu pas si protocolul de extragere a
cecului electronic a fost executat corect, atunci S accepta n pasul 4.
2. (Consistent a) Daca U nu cunoaste cate o reprezentare a lui A respectiv B n raport
cu (g
1
, g
2
, d
1
, e
1
, f
1
, . . . , e
k
, f
k
, d
2
), atunci nu exista strategie pentru el astfel ncat S sa
accepte cu o probabilitate de succes ne-neglijabila.
3. (Ascunderea informat iei) Chiar daca S dispune de o putere de calcul nelimitata, iar
U si S executa protocolul pas cu pas, S nu va reusi sa ae n nal identitatea lui U cu o
probabilitate ne-neglijabila.
Demonstrat ie:
1. Daca protocolul este executat pas cu pas, la pasul 4 avem:
r
i3
+ r
i4
=
iA
+
iB
= b
i
s, i, 1 i j.
Cum b
i
= 0, s = 0 daca U urmeaza protocolul, rezulta r
i3
+ r
i4
= 0, i, 1 i j.
m

= m
s
, s = 0 = m

= 1 = AB = 1.
j

i=1
e
r
i1
i
f
r
i3
i
_
_
j

i=1
e
r
i2
i
f
r
i4
i
_
_
c
_
_
k

i=j+1
e
r
i1
i
f
r
i2
i
_
_
g
r
(k+1)1
1
g
r
(k+1)2
2
d
r
(k+1)3
1
d
r
k+2
2
=
j

i=1
e

iA
i
f

iA
i
_
_
j

i=1
e

iB
i
f

iB
i
_
_
c
_
_
k

i=j+1
e

iA
+c
iB
i
f

iA
+ciB
i
_
_
g
x
1
+cx
2
1
g
y
1
+cy
2
2
d
z
1
+cz
2
1
d

A
+c
B
2
=
g
x
1
1
g
y
1
2
d
z
1
1
_
k

i=1
e

iA
i
f

iA
i
_
d

A
2
_
g
x
2
1
g
y
2
2
d
z
2
1
_
k

i=1
e

iB
i
f

iB
i
_
d

B
2
_
c
= AB
c
(mod p)
deci S accepta n pasul 4.
2. U ar trebui sa determine numerele r
1
, r
2
, . . . , r
k+2
Z
q
astfel ncat
AB
c
=
j

i=1
e
r
i1
i
f
r
i3
i
_
_
j

i=1
e
r
i2
i
f
r
i4
i
_
_
c
_
_
k

i=j+1
e
r
i1
i
f
r
i2
i
_
_
g
r
(k+1)1
1
g
r
(k+1)2
2
d
r
(k+1)3
1
d
r
k+2
2
(mod p),
ceea ce este echivalent cu determinarea unei reprezent ari a lui AB
c
n raport cu
(g
1
, g
2
, d
1
, e
1
, f
1
, . . . , e
k
, f
k
, d
2
), care este o problema pe care U nu o poate rezolva n timp
polinomial.
100 PRELEGEREA 8. CECURI ELECTRONICE
Similar demonstrat iei Teoremei ?.1, se deduce ca daca U nu cunoaste o reprezentare a
lui m

n raport cu (g
1
, g
2
, d
1
, e
1
, f
1
, . . . , e
k
, f
k
, d
2
), nu are nici o sans a sa-l faca pe S sa
accepte la pasul 4.
3. La sfarsitul protocolului, S se aa n posesia urmatoarelor informat ii:
A, B, z

, a

, b

, r

, c, r
1
, r
2
, . . . , r
k+2
.
Analog demonstrat iei folosite la Teorema ?.1, se deduce ca problema determinarii lui
(u
1
, u
2
) este echivalenta cu problema determinarii numerelor: x
1
, x
2
, y
1
, y
2
, z
1
, z
2
. Deter-
minarea lui (x
1
, y
1
, z
1
) se poate face doar prin determinarea unei reprezent ari a lui A n
raport cu (g
1
, g
2
, d
1
, e
1
, f
1
, . . . , e
k
, f
k
, d
2
), iar determinarea lui (x
2
, y
2
, z
2
) prin aarea unei
reprezent ari a lui B.
Daca dispune de o putere de calcul nelimitata, S poate sa determine o reprezentare a lui
A si o reprezentare a lui B n raport cu (g
1
, g
2
, d
1
, e
1
, f
1
, . . . , e
k
, f
k
, d
2
). Probabilitatea ca
aceste reprezentari sa e egale cu cele cunoscute de U este (cf. Propozit iei ?.4)
1
q
2k+3
. Deci
probabilitatea ca S sa ae identitatea lui U dupa executarea protocolului, este neglijabila.
2
8.1.4 Protocolul de depozit
Pentru a depozita un cec electronic, magazinul S urmeaza mpreuna cu B protocolul urmator:
1. S demonstreaza lui B cunoasterea reprezent arii identit at ii sale n raport cu (g
1
, g
2
), prin
protocolul din Prelegerea ?.
2. S trimite lui B numerele: A, B, sig
K
(A, B), c, r
1
, r
2
, . . . r
k+2
.
3. B verica validitatea semnaturii sig
K
(A, B), stocheaza A, B, sig
K
(A, B), c, r
1
, r
2
, . . . , r
k+2
ntr-o baza de date si crediteaza contul lui S cu valoarea cecului.

In plus fat a de protocolul de depozit pentru monezi electronice, B introduce n lista de


recuperare termenii (r
i1
+ r
i2
)(r
i3
+ r
i4
)
1
(mod q), pentru 1 i j.
Propozit ia 8.4 Daca moneda (A, B, sig
K
(A, B)) apare de doua ori n baza de date a bancii,
atunci banca poate determina identitatea utilizatorului necinstit care a utilizat moneda de doua
ori.
Demonstrat ia acestei propozit ii este analoga cu demonstrat ia Teoremei ?.2 pentru sistemul de
baza. 2
8.1.5 Protocolul de recuperare
Daca utilizatorul U doreste sa recupereze valoarea nefolosita din cecul (m

, sig
K
(m

)) (core-
spunzatoare generatorilor (e
j+1
, f
j+1
), . . . , (e
k
, f
k
)), el urmeaza mpreun a cu banca urmatorul
protocol:
1. U i trimite lui B identitatea sa I mpreun a cu m
1
.
2. B verica daca m
1
este asociat lui I n baza de date a cecurilor emise.
8.1. SISTEMUL DE PLAT

A CU CECURI NEDIVIZIBILE 101


3. U trimite lui B a
i
, b
i
, cu j < i k.
4. B veric a daca b
i
= 0, i, j < i k si daca a
i
(b
i
)
1
(mod q), (i = j +1, . . . k) nu apart in
listei de recuperare.
Daca B accepta, se trece la pasul 5.
5. U i demonstreaza lui B prin protocolul din Prelegerea ? cunoasterea unei reprezentari a
lui m
1
_
_
k

i=j+1
e
a
i
i
f
b
i
i
_
_
1
(mod p) n raport cu (e
1
, f
1
, . . . , e
j
, f
j
, d
2
).
6. Daca B accepta proba lui U, el crediteaza contul lui U cu suma corespunzatoare si imtro-
duce a
i
(b
i
)
1
, i = j + 1, . . . , k n lista de recuperare. Apoi sterge m
1
din baza de date a
cecurilor emise
Teorema 8.2 Presupunand ca protocoalele de extragere, de plata si de depozit sunt executate
corect, daca U este necinstit n protocolul de recuperare, atunci B nu accepta sa-i returneze
suma ceruta la pasul 6.
Demonstrat ie:

In cazul n care U este necinstit, ar doua situat ii de analizat:


1. U a utilizat anterior cel put in una din perechile (a
i
, b
i
), j < i k.

In acest caz, n protocolul de depozit al cecurilor, banca a stocat n lista de recuperare


valoarea (r
i1
+ r
i2
)(r
i3
+ r
i4
)
1
= (
iA
+
iB
)(
iA
+
iB
)
1
= a
i
s(b
i
s)
1
= a
i
b
1
i
. Deci
protocolul de recuperare se opreste la pasul 4 si B nu accepta sa-i returneze lui U valoarea
ceruta de acesta.
2. U ncearc a sa genereze perechi (a
i

, b
i

), j < i k care nu au fost generate n protocolul


de extragere a cecurilor.

In acest caz U ar trebui sa determine numerele (a
i

, b
i

), j <
i k astfel nc at sa cunoasca o reprezentare a lui m
1
_
_
k

i=j+1
e
a
i

i
f
b
i

i
_
_
1
n raport cu
(e
1
, f
1
, . . . , e
j
, f
j
, d
2
). Acest lucru este echivalent pentru U cu determinarea numerelor
a
i

, (1 i k + 1) si b
i

, (1 i k) astfel nc at:
m
1
_
_
k

i=j+1
e
a
i

i
f
b
i

i
_
_
1
=
_
_
j

i=1
e
a
i

i
f
b
i

i
_
_
d
a
k+1

2
m
1
=
_
k

i=1
e
a
i

i
f
b
i

i
_
d
a
k+1

2
(mod q).
Deoarece protocolul de extragere a fost executat corect, avem:
m
1
=
_
k

i=1
e
a
i
i
f
b
i
i
_
d
a
k+1
2
(mod q).
Cum U nu poate determina n timp polinomial doua reprezentari diferite ale lui m
1
n
raport cu (e
1
, f
1
, . . . , e
K
, f
K
, d
2
), rezulta ca a
i

= a
i
, i {1, 2, . . . , k +1} si b
i

= b
i
, i
{1, 2, . . . , k}.
Am demonstrat astfel ca U este obligat sa foloseasca n protocolul de recuperare perechi (a
i
, b
i
)
care au fost generate n protocolul de extragere. Deci n niciunul din cele doua cazuri, B nu
accepta sa-i returneze lui U suma ceruta, iar alta strategie pentru U nu exista. 2
102 PRELEGEREA 8. CECURI ELECTRONICE
Din punct de vedere al securitat ii, sistemul de cecuri este echivalent cu sistemul de baza,
toate proprietat ile demonstrate pentru sistemul de baza raman and valabile si la sistemul de
cecuri.
Sistemul de cecuri nu este ns a ecient, deoarece orice cec poate utilizat o singura data, iar
dupa protocolul de plata utilizatorul este obligat sa urmeze mpreun a cu banca protocolul de
recuperare. Aceste dezavantaj poate eliminat part ial folosind un protocol de cecuri divizbile.
8.2 Sistemul de plata cu cecuri divizibile
Un cec divizibil este caracterizat de o valoare maxima si de proprietatea de divizibilitate:
utilizatorul care a extras cecul din banca poate sa utilizeze parti ale lui n diferite tranzact ii, cu
condit ia sa nu depaseasca suma maxima.

In orice moment, utilizatorul poate sa ceara bancii
sa-i returneze suma neutilizata a cecului, caz n care banca si utilizatorul vor urma protocolul
de recuperare.
Pentru a obt ine proprietatea de divizibilitate, modicam sistemul de plata cu cecuri nedi-
vizibile n felul urmator:
1. La init ializarea sistemului, banca genereaza toate numerele si tuplurile generatoare folosite
n sistemul de cecuri nedivizibile.

In plus, banca genereaza nc a un tuplu generator
(h
1
, h
2
, . . . , h
k
) G
k
q
.
2. Un cec electronic este reprezentat sub forma (m

, sig
k
(m

)) cu restrict ia ca exista s Z

q
astfel nc at m

= m
s
(mod p), unde forma lui m este de aceasta data:
m = (g
u
1
r
1
g
u
2
r
2
d
1
)
k

i=1
_
e
a
i
i
f
b
i
i
h
a
i
r
i
_
d
a
k+1
2
(mod p),
cu a
1
, . . . , a
k+1
, b
1
, . . . , b
k
, r alese aleator de U la pasul al doilea al protocolului de ex-
tragere.
Valoarea cecului este data de termenii de forma e
a
i
i
f
b
i
i
h
a
i
r
i
(n acest caz ea este 2
k
1),
iar generatorii d
1
si d
2
au acelasi rol ca n sistemul de cecuri nedivizibile.
Sa arat am cum se modica n acest caz protocoalele de extragere a cecurilor, de plata si de
depozit.
8.2.1 Protocolul de extragere a cecurilor electronice divizibile
Presupunand ca utilizatorul U cu identitatea I = g
u
1
1
g
u
2
2
(mod p) doreste sa extraga un cec de
valoare maxima 2
k
1, U si B urmeaza protocolul urmator:
1. U i demonstreaza lui B cunoasterea reprezent arii (u
1
, u
2
) a lui I n raport cu (g
1
, g
2
) prin
protocolul din Prelegerea ?.
2. U genereaza aleator 2k + 2 numere distincte a
1
, a
2
, . . . , a
k+1
, b
1
, . . . , b
k
Z

q
. Apoi el
calculeaza m = (g
u
1
r
1
g
u
2
r
2
d
1
)
k

i=1
_
e
a
i
i
f
b
i
i
h
a
i
r
i
_
d
a
k+1
2
(mod p) si trimite m lui B.
3. B realizeaza urmatoarele operat ii:
8.2. SISTEMUL DE PLAT

A CU CECURI DIVIZIBILE 103


(a) extrage din contul lui U valoarea maxima a cecului;
(b) stocheaza m si I ntr-o baza de date a cecurilor emise;
(c) genereaza aleator w Z
q
;
(d) trimite lui U numerele z = m
x
(mod p), a = g
w
(mod p) si b = m
w
(mod p).
4. U realizeaza urmatoarele operat ii:
(a) genereaza aleator s Z

q
, u, v Z
q
;
(b) calculeaza: m

= m
s
= (g
u
1
rs
1
g
u
2
rs
2
d
s
1
)
k

i=1
_
e
a
i
s
i
f
b
i
s
i
h
a
i
rs
i
_
d
a
k+1
s
2
(mod p),
z

= z
s
(mod p), w

= uw + v (mod q), a

= a
u
g
v
(= g
w

) (mod p),
b

= b
us
(m

)
v
(= (m

)
w

) (mod p),
(c) determina o descompunere aleatoare m

= AB (mod p) astfel: scrie n mod aleator


ecare dintre numerele u
1
rs, u
2
rs, s, a
1
rs, . . . , a
k
rs, a
k+1
s ca suma de doua numere
(toate calculele se fac modulo q):
u
1
rs = x
1
+ x
2
, u
2
rs = y
1
+ y
2
, s = z
1
+ z
2
,
a
1
rs =
1A
+
1B
. . . , a
k
rs =
kA
+
kB
, a
k+1
s =
A
+
B
(d) calculeaza:
A = (g
x
1
1
g
y
1
2
d
z
1
1
)
_
k

i=1
e
a
i
s
i
f
b
i
s
i
h

iA
i
_
d

A
2
(mod p),
B = (g
x
2
1
g
y
2
2
d
z
2
1
)
_
k

i=1
h

iB
i
_
d

B
2
(mod p) si c

= H(m

||z

||a

||b

||A),
(e) trimite lui B numarul c = c

u
1
(mod q).
5. B raspunde cu r = cx + w (mod q).
6. U accepta daca si numai daca g
r
= h
c
a (mod p), m
r
= z
c
b (mod p).

In nal, U calculeaza r

= ru + v (mod q).
(z

, a

, b

, r

) va constitui o semnatur a valida asupra lui m

(dupa cum rezulta din Propozit ia


?.1).
8.2.2 Protocolul de plata
Daca U doreste sa foloseasca suma 2
j
1 din cecul sau (corespunzatoare generatorilor
(e
1
, f
1
, h
1
), . . . , (e
j
, f
j
, h
j
)) la magazinul S, este executat urmatorul protocol:
1. U i trimite lui S numerele A, B, sig
K
(A, B) = (z

, a

, b

, r

).

In plus, U l informeaza pe S asupra sumei pe care doreste sa o cheltuiasca (2


j
1 n
acest caz).
2. S se asigura ca AB = 1.
Apoi S verica semnatura bancii: ver
K
(m

, sig
K
(m

) = T
_
g
r

= h
c

(mod p)
(m

)
r

= (z

)
c

(mod p)
104 PRELEGEREA 8. CECURI ELECTRONICE
cu c

= H(AB||z

||a

||b

||A)
si trimite o provocare c Z

q
\ {1}.
3. U verica daca c = 1, apoi calculeaza si trimite lui S raspunsurile:
for i = 1 to j do r
i
= (r
i1
, r
i2
, r
i3
) (a
i
s, b
i
s,
iA
+ c
iB
)
r
k+1
= (r
(k+1)1
, r
(k+1)2
, r
(k+1)3
) (x
1
+ cx
2
, y
1
+ cy
2
, z
1
+ cz
2
)
r
k+2

A
+ c
B
r
k+3

k

i=j+1
e
a
i
s
i
f
b
i
s
i
h

iA
+c
iB
i
.
Pentru ecare generator (e
i
, f
i
, h
i
) care apare n expresia sumei, U releva puncte pentru
exponent ii lui e
i
si f
i
si o dreapta pentru exponentul lui h
i
, iar pentru generatorii care nu
apar, U nu releva nimic.
4. S accepta
_

_
r
i1
, r
i2
= 0, i = 1, . . . , j
AB = 1
AB
c
= (g
r
(k+1)1
1
g
r
(k+1)2
2
d
r
(k+1)3
1
)
j

i=1
(e
r
i1
i
f
r
i2
i
h
r
i3
i
) d
r
k+2
2
r
k+3
(mod p)
Propozit ia 8.5 (Completitudinea) Daca U este onest n protocolul de plata, atunci S ac-
cepta la pasul 4.
Demonstrat ie:
Daca protocolul este executat pas cu pas, la pasul 4 avem r
i1
= a
i
s, r
i2
= b
i
s, i, (1 i j).
Cum a
i
= 0, b
i
= 0, s = 0 rezulta r
i1
= 0, r
i2
= 0, i, (1 i j).
m

= m
s
, s = 0 = m

1 = AB = 1.
_
g
r
(k+1)1
1
g
r
(k+1)2
2
d
r
(k+1)3
1
_
j

i=1
(e
r
i1
i
f
r
i2
i
h
r
i3
i
) d
r
k+2
2
r
k+3
=
=
_
g
x
1
+cx
2
1
g
y
1
+cy
2
2
d
z
1
+cz
2
1
_
j

i=1
_
e
a
i
s
i
f
b
i
s
i
h

iA
+c
iB
i
_
d

A
+c
B
2
k

i=j+1
_
e
a
i
s
i
f
b
i
s
i
h

iA
+c
iB
i
_
=
= (g
x
1
1
g
y
1
2
d
z
1
1
)
k

i=1
_
e
a
i
s
i
f
b
i
s
i
h

iA
i
_
d

A
2
_
(g
x
2
1
g
y
2
2
d
z
2
1
)
_
k

i=1
h

iB
i
_
d

B
2
_
c
= AB
c
(mod p)
8.2.3 Protocolul de depozit
Pentru a depozita un cec electronic, magazinul S urmeaza mpreun a cu B protocolul
urmator:
1. S demonstreaza lui B cunoasterea reprezent arii identitat ii sale n raport cu (g
1
, g
2
) prin
protocolul din Prelegerea ?.
2. S trimite lui B numerele A, B, sig
K
(A, B), c, r
1
, r
2
, . . . r
j
, r
k+1
, r
k+2
, r
k+3
.
3. B verica validitatea semnaturii sig
K
(A, B), stocheaza A, B, sig
K
(A, B), c, r
1
, r
2
, . . . , r
j
,
r
k+1
, r
k+2
, r
k+3
ntr-o baza de date si crediteaza contul lui S cu valoarea cecului.
B introduce n lista de recuperare termenii r
i1
(r
i2
)
1
(mod q), pentru 1 i j.
8.2. SISTEMUL DE PLAT

A CU CECURI DIVIZIBILE 105


Teorema 8.3
1. Daca U foloseste de doua ori aceeasi parte a unui cec divizibil, B poate aa identitatea
sa.
2. Daca U utilizeaza un cec de doua ori, dar este onest (utilizeaza de ecare data part i
nefolosite ale cecului), atunci probabilitatea ca B sa ae identitatea lui U este neglijabila.
Demonstrat ie:
1. Presupunem fara a restrange generalitatea, ca U utilizeaza n doua protocoale de plata
distincte valoarea corespunzatoare generatorului (e
1
, f
1
, h
1
).
B se va aa n posesia urmatoarelor informat ii: A, B, c, r
1
, r
k+1
, r
k+2
, r
k+3
, c

, r
1

, r
k+1

,
r
k+2

, r
k+3

, unde c = c

sunt cele doua provocari trimise de S n doua protocoale de plata.


_
r
(k+1)1
= x
1
+ cx
2
(mod q)
r
(k+1)1

= x
1
+ c

x
2
(mod q)
Acesta este un sistem liniar cu determinantul c

c = 0; el admite solut ia unica:


_
x
1
= (c
1
(c

)
1
)
1
(c
1
r
(k+1)1
(c

)
1
r
(k+1)1

) (mod q)
x
2
= (c c

)
1
(r
(k+1)1
r
(k+1)1

) (mod q)
Analog se determina:
_
y
1
= (c
1
(c

)
1
)
1
(c
1
r
(k+1)2
(c

)
1
r
(k+1)2

) (mod q)
y
2
= (c c

)
1
(r
(k+1)2
r
(k+1)2

) (mod q)
_
z
1
= (c
1
(c

)
1
)
1
(c
1
r
(k+1)3
(c

)
1
r
(k+1)3

) (mod q)
z
2
= (c c

)
1
(r
(k+1)3
r
(k+1)3

) (mod q)
_

1A
= (c
1
(c

)
1
)
1
(c
1
r
13
(c

)
1
r
13

) (mod q)

1B
= (c c

)
1
(r
13
r
13

) (mod q)
Apoi se pot calcula:
_
u
1
rs = x
1
+ x
2
(mod q) (1) u
2
rs = y
1
+ y
2
(mod q) (2)
s = z
1
+ z
2
(mod q) (3) a
1
rs =
1A
+
1B
(4)
Din r
11
= a
1
s si din (4) rezulta r = (a
1
rs)(a
1
s)
1
= (
1A
+
1B
)r
1
11
(mod q) (5).
Din (1), (2) si (3) se pot calcula:
_
u
1
r = (u
1
sr)(s)
1
= (x
1
+ x
2
)(z
1
+ z
2
)
1
(mod q)
u
2
r = (u
2
sr)(s)
1
= (y
1
+ y
2
)(z
1
+ z
2
)
1
(mod q)
Din (5) va rezulta acum:
u
1
= (u
1
r)r
1
= (x
1
+ x
2
)(z
1
+ z
2
)
1
[(
1A
+
1B
)r
1
11
] = (x
1
+ x
2
)(z
1
+ z
2
)
1
r
11
(
1A
+

1B
)
1
(mod q), u
2
= (y
1
+ y
2
)(z
1
+ z
2
)
1
r
11
(
1A
+
1B
)
1
(mod q).
Deci B a calculat identitatea lui U: (u
1
, u
2
).
2. Valoarea unui cec ind 2
k
1, putem presupune ca U utilizeaza n primul protocol de
plata valoarea 2
j
1 (corespunzatoare generatorilor (e
1
, f
1
, h
1
), . . . , (e
j
, f
j
, h
j
)), iar n al
doilea protocol, valoarea 2
k
2
j
(corespunzatoare generatorilor (e
j+1
, f
j+1
, h
j+1
), . . . ,
(e
k
, f
k
, h
k
)). Atunci B se va aa n posesia informat iilor:
106 PRELEGEREA 8. CECURI ELECTRONICE
A, B, c, r
1
, . . . , r
j
, r
k+1
, r
k+2
, r
k+3
, c

, r
j+1

, . . . , r
k

, r
k+1

, r
k+2

, r
k+3

.
Valorile x
1
, x
2
, y
1
, y
2
, z
1
, z
2
se determina la fel ca n demonstrat ia primului punct, iar
pentru
A
,
B
avem:
_

A
= (c
1
(c

)
1
)
1
(c
1
r
k+2
(c

)
1
r
k+2

) (mod q)

B
= (c c

)
1
(r
k+2
r
k+2

) (mod q)
r
i1
= a
i
s, r
i2
= b
i
s, (1 i j), r
i1

= a
i
s, r
i2

= b
i
s, (j + 1 i k).
Cum s = z
1
+ z
2
(mod q) =
_

_
a
i
= r
i1
(z
1
+ z
2
)
1
(mod q)i = 1, . . . , j
a
i
= r
i1

(z
1
+ z
2
)
1
(mod q)i = j + 1, . . . , k
a
k+1
= (
A
+
B
)(z
1
+ z
2
)
1
(mod q)
b
i
= r
i2
(z
1
+ z
2
)
1
(mod q), i = 1, . . . , j
b
i
= r
i2

(z
1
+ z
2
)
1
(mod q), i = j + 1, . . . , k
u
1
rs, u
2
rs, u
1
r, u
2
r se calculeaza identic cu primul punct.
B mai stie ca m

= m
s
(mod p). Din m

si s = z
1
+ z
2
(mod q), B va determina
m = (m

)
1
s
(mod p).
Dar m = (g
u
1
r
1
g
u
2
r
2
d
1
)
k

i=1
_
e
a
i
i
f
b
i
i
h
a
i
r
i
_
d
a
k+1
2
(mod p) md
1
1
_
k

i=1
e
a
i
i
f
b
i
i
_
1
d
a
k+1
2
=
_
I
k

i=1
h
a
i
i
_
r
(mod p).
Notand m
1
= md
1
1
_
k

i=1
e
a
i
i
f
b
i
i
_
1
d
a
k+1
2
si m
2
=
k

i=1
h
a
i
i
, obt inem m
1
= (Im
2
)
r
(mod p)
cu m
1
, m
2
cunoscute.
B trebuie sa determine identitatea lui U din urmatoarea ecuat ie cu necunoscutele I si r:
m
1
= (Im
2
)
r
(mod p).
Ecuat ia are exact q 1 solut ii: pentru ecare valoare a lui r Z

q
, se determina n mod
unic I = m
1
r
1
m
1
2
(mod p).
Deci B determina I (identitatea lui U), cu probabilitatea
1
q1
. 2
Protocolul de recuperare este identic cu cel pentru sistemul de cecuri nedivizibile, Teorema
8.2 ram anand adevarat a si n cazul sistemului de cecuri care accepta divizibilitatea.
Se observa ca n protocolul de plata U trebuie sa releve m

, deci toate plat ile efectuate cu


part i ale aceluiasi cec pot legate ntre ele. Gasirea unei reprezent ari a cecului astfel ncat sa
nu poata realizate legaturi ntre plat ile facute cu acelasi cec ramane o problema deschisa.
Prelegerea 9
Protocoale de vot electronic
Guvernele si organizat iile democratice au nevoie de anumite mecanisme pentru a permite
alegatorilor sa voteze.

In mod tradit ional, alegerile reprezinta pentru persoanele cu drept de vot
mecanismele ociale prin care acestea si pot exprima opt iunile n mod democratic, n timp ce
sondajele constituie una din cele mai bune metode neociale de aare a opt iunilor electoratului.
At at n alegeri cat si n sondaje intimitatea si securitatea sunt deziderate obligatorii dar al caror
cost poate creste substant ial. Mecanismele care asigura securitatea si intimitatea alegatorilor
pot scumpe si/sau consumatoare de timp pentru administratorii acestora si neconvenabile
pentru alegatori. Organizarea de alegeri sigure devine si mai dicila atunci cand alegatorii sunt
distribuit i pe o mare zona geograca.
Acestea sunt cateva motive pentru care poate propusa cu succes modalitatea de vot
electronic. Primele idei apar n anii 80, iar ideile dezvoltate n acest interval de timp l fac din
ce n ce mai credibil pentru utilizarea sa ntr-un mediu informatizat.
9.1 Caracteristici ale unui sistem de vot
Desi exista numeroase protocoale si sisteme de votare, procedura de baza pentru organizarea de
alegeri democratice este standard. Aceasta procedura indiferent daca este vorba de o votare
clasica sau una electronica implica n general ndeplinirea a patru sarcini:
1.

Inregistrarea: crearea unei liste de persoane care au dreptul sa voteze;
2. Validarea: vericarea datelor personale ale celor care doresc sa voteze. Se permite
votarea numai pentru cei care au drept sa voteze si nu au votat deja.
3. Colectarea voturilor de la centrele de votare.
4. Numararea voturilor.
Pentru a avea ncredere n rezultatul alegerilor, oamenii trebuie sa aiba dovezi ca aceste sarcini
au fost ndeplinite n mod corect. Exista ns a numeroase posibilitat i de corupere a sistemului
n timpul ndeplinirii ecareia din aceste sarcini. De exemplu:
Autoritat ile electorale pot trisa permit and alegatorilor far a drept de vot sa se nregistreze
la vot, iar alegatorilor nregistrat i sa voteze de mai multe ori. De asemenea poate pierde
107
108 PRELEGEREA 9. PROTOCOALE DE VOT ELECTRONIC
sau adauga voturi suplimentare.
1
Alegatorii fara drept de vot se pot nregistra (cel mai frecvent folosind numele unei per-
soane decedate) sau cei cu drept de vot se pot nregistra sub mai multe nume.
Se poate ncerca participarea la vot sub o identitate falsa.
Cutiile cu voturi, voturile sau masinile de num arat pot compromise.
Atunci cand se proiecteaza un sistem electronic de vot este esent ial sa se implementeze modali-
tat i prin care cele patru condit ii ment ionate mai sus sa e ndeplinite fara a sacrica intimitatea
alegatorilor sau a oferi posibilitat i de frauda.

In plus, mai trebuie ndeplinite cateva condit ii
specice unui astfel de sistem. Conform cu [5], [6], un sistem de vot electronic trebuie sa
satisfaca urmatoarele cerint e:
1. Anonimitatea votant ilor: Nu exista nici o modalitate prin care poate dezvaluita
identitatea unei persoane care voteaza.
2. Acuratet e: Oricine poate verica validitatea voturilor si se poate asigura ca voturile nu
au fost schimbate, multiplicate sau eliminate de cineva (inclusiv de autoritat i).
3. Necoliziune: Garant ia ca toate voturile legale difera ntre ele.
4. Corectitudine de numar: Suma voturilor repartizate pe candidat i este egala cu numaul
de voturi valide.
5. Vericabilitate: Orice votant poate controla daca votul sau a fost num arat si repartizat
candidatului pe care l-a votat.
6. Detectarea dublei votari: Daca apare un vot dublu, organizatorii pot identica per-
soana care a votat de mai multe ori.

In aceasta prelegere vom prezenta cateva protocoale de vot care sa ndeplineasca cat mai multe
din aceste cerint e.
9.2 Protocol independent de vot
Cele mai simple protocoale de vot nu folosesc nici o autoritate, bazajndu-se numai pe alegatori.
Sunt primele protocoale concepute pentru votare, bazate pe aplcari succesive de criptari si/sau
semnari digitale de mesaje. Anonimitatea se obt ine prin aplicarea de permut ari n diverse faze.
Pentru exemplicare, prezent am protocolul lui Michael Merritt:
Sunt N alegatori, ecare alegator i av and cheia publica de criptare e
i
si cheia privata d
i
,
precum si o semnatur a electronica sig
i
. Protocolul este urmatorul;
1. Fiecare alegator i ataseaz a un num ar aleator r
i
la votul sau m
i
.
1
Este celebra declarat ia dictatorului rus I.V.Stalin: Nu este important pe cine voteaza lumea; important este
cine numara voturile.
9.3. PROTOCOL CU AUTORITATE CENTRRAL

A 109
2. Cripteaza perechea (m
i
, r
i
) cu cheile publice ale tuturor alegatorilor n ordinea 1, . . . , N,
obt in and secvent a e
N
(e
N1
(. . . (e
1
(m
i
, r
i
)) . . .).
3. Repeta pasul anterior, adaug and dupa ecare criptare cate un numar aleator R
i
distinct
(pe care-l trimite lui i). Se obt ine
e
N
(R
N
, e
N1
(. . . (R
2
, e
1
(R
1
, e
N
(e
N1
(. . . (e
1
(m
i
, r
i
)) . . .)
4. Toate aceste voturi sunt stranse de alegatorul N. Fiecare alegator i:
(a) Decripteaza mesajul cu cheia sa secreta d
i
, scoate num arul R
i
si se asigura ca este
pe lista numerelor aleatoare primite.
(b) Amesteca cele N voturi si le trimite lui i 1 (alegatorul 1 le trimite lui N).
Dupa afectuarea acestui pas, alegatorul N dispune de N mesaje de forma
e
N
(e
N1
(. . . (e
1
(m
i
, r
i
)) . . .).
pe care le semneaza cu semnatura sa sig
N
.
5. Procedeul se reia, ecare alegator i:
(a) Veric a validitatea semnaturii alegatorului i + 1;
(b) Decripteaza mesajele primite;
(c) Aplica propria sa semnatur a sig
i
si trimite lui i 1 cele N mesaje de forma
sig
i
(e
i
(. . . (e
1
(m
i
, r + i) . . .).
6. Tot i alegatorii conrma semnatura alegatorului 1. Voturile sunt num arate n comun,
ecare alegator putandu-se convinge de existent a votului sau datorita num arului aleator
atasat.

In timpul procesului de votare numarul de voturi este constant, deci pierderea sau adaugarea
unui vot este usor de detectat.
Amestecul voturilor asigura anonimitatea.
De asemenea, voturile nu pot nlocuite; o astfel de ncercare pe parcursul primei runde este
depistata prin num arul aleator introdus incorect. Daca alegatorul i nlocuieste votul alegstorului
j (j > i), atunci alegatorul j va detecta acest lucru la nceputul celei de-a doua runde de
decriptari (pasul 5).
O ncercare de nlocuire pe parcursul celei de-a doua runde este depistata la decriptarea
nala cand ecare alegator si veric a prpriul sau numar r
i
.
Un defect major al acestui protocol consta n implementarea dicila datorata numarului
mare de calcule, dependent de num arul de votant i N.
9.3 Protocol cu autoritate centrrala
Pentru micsorarea volumului de calcule se poate itnroduce o noua entitate care se ocupa cu
nregistrarea alegatorilor; ea este numit a de obicei autoritate centrala (AC). Prezentam o
variant a de protocol cu autoritate centrala. Se presupune ca prin carta de alegator, ecare
persoana k dispune de doua chei e
k
(publica) si d
k
(secreta).
110 PRELEGEREA 9. PROTOCOALE DE VOT ELECTRONIC
1. AC ntreaba ecare alegator daca doreste sau nu sa participe la alegeri.
2. Se publica o lista cu tot i alegatorii nregistrat i.
3. Fiecare alegator primeste de la AC un ID (printr-un protocol de dezvaluire part ial a a
secretelor)
4. Fiecare alegator i trimite spre AC perechea (ID, e
i
(ID, m)).
5. AC publica e
i
(ID, m) pentru tot i alegatorii de pe lista de la punctul (2).
6. Fiecare alegator i trimite anonim spre AC perechea (ID, d
i
).
7. AC asociaza mesajele dupa ID, le decripteaza, verica autenticitatea voturilor si publica
perechile (ID, m) pentru tot i participant ii la vot.
Acest sistemmpiedica atat alegatorii neautorizat i sa voteze, cat si pe cei neautorizat i sa voteze
de doua ori. Alegatorilor nu li se pot aa identitatea reala, deoarece ecare ID se obt ine printr-
un protocol de dezvaluire part iala a secretelor, deci AC nu stie la cine a ajuns ecare ID.
Exista si n acest protocol cateva neajunsuri. Primul si cel mai important este acela ca
o autoritate centrala reprezint a un punct de corupt ie asupra caruia nu exista control. ea poate
falsica voturi n numele alegatorilor care se abt in, poate pierde voturi valide (nici un alegator
nu poate demonstra ca a trimis ntr-adevar un vot).

In plus, implementarea sa ramane destul
de complexa.
O prima idee de mbunat at ire a sistemului a constat n introducerea mai multor autoritat i
centrale, dependente una de alta. De exemplu, se pot introduce doua autoritat i: una care se
ocupa de legitimitatea alegatorilor (sa i spunem AL - agente de legimitate), alta care se ocupa
de num ararea efectiva a voturilor (AT - agent ie de tabulare). Un vot valid trebuie sa treaca
prin ambele agent ii pentru validare. Prima recunoaste dreptul alegatorului de a vota (fara a
vedea cont inutul votului), eliberandu-i un buletin. A doua agent ie primeste votul mpreuna cu
buletinul de validare. O varianta de astfel de protocol (n ipoteza ca cele doua agent ii nu se
aliaza pentru falsicarea vot arii) este:
1. Fiecare alegator (dupa demonstrarea identitat ii sale) solicita AL un num ar de autenti-
care.
2. AL genereaza aleator numere de autenticare si le distribuie.
3. AL trimite spre AT lista tuturor numerelor de autenticare.
4. Fiecare votant alege aleator un ID (num ar de validare) si trimite spre AT un triplet
format din numarul de autenticare, ID si votul sau.
5. AT veric a numarul de autenticare si daca este pe lista l bifeaza si publica votul
mpreun a cu nunm arul de validare.
9.4. PROTOCOLUL MU-VARADHARAJAN 111
9.4 Protocolul Mu-Varadharajan
Dupa 1986 au fost publicate diverse protocoale de vot, ecare av and avantajele si dezavantajele
sale. A se vedea de exemplu [1] (primul protocol de vot utilizabil pe scara larga), [2], [4], [7],
[8], [9].

In continuarea acestei prelegeri vom prezenta un protocol de vot electronic pentru o ret ea
informatica (bazat pe schemele de semnatur a electronica ElGamal si RSA) propus de Mu si
Varadjarajan n 1998 ([6]). Ulterior n [3] sunt demonstrate si corectate cateva slabiciuni.
Componentele protocolului Mu-Varadharajan sunt:
V - mult ime nita nevida de votant i;
AS - un server de autenticare a votantilor;
V S - o mult ime nita de servere de votare;
TCS - un server de num arare a buletinelor de vot;
CA - un certicat de autenticitate.
Protocolul cont ine trei etape:
1. Obt inerea buletinului de vot;
2. Votarea (si colectarea buletinelor de vot);
3. Numararea buletinelor de vot.
9.4.1 Init ializarea
Vom nota cu p un num ar prim mare si cu t stampila de timp. De asemenea, va reprezenta
concatenarea secvent elor si b.

Inainte de a incepe protocolul de vot:


Fiecare participant V primeste o pereche de chei RSA : (e
V
, d
V
) si un modul n
V
obt inut
prin nmult irea a doua numere prime mari. Reamintim, conform algoritmului RSA:
e
V
d
V
1 (mod (n
V
))
AS det ine un modul n
AS
si o pereche de chei RSA (e
AS
, d
AS
). n
AS
si e
AS
sunt publice,
cunoscute de toti votant ii.
Orice votant valid V are un certicat de votant Cert
V
eliberat pe termen lung de CA.
Acesta este semnat de cheia secreta a lui CA, iar cont inutul lui include
un num ar serial,
identitatea votantului V ,
identitatea CA,
cheia publica e
V
si modulul n
V
,
intervalul de valabilitate,
o stampil a de timp.
112 PRELEGEREA 9. PROTOCOALE DE VOT ELECTRONIC
9.4.2 Etapa I: Obt inerea buletinului de vot
1. V trebuie sa demonstreze ca este un alegator valid. Pentru aceasta el alege un factor
blind b si trei numere aleatoare g, r, k
1
Z

p
. Pe baza lor calculeaza parametrii
a = g
r
(mod p),
x
1
= gb
e
AS
(mod n
AS
), (1)
x
2
= g
k
1
b
e
AS
(mod n
AS
),
x
3
= ab
e
AS
(mod n
AS
) (2)
si trimite lui AS cvadruplul (V, AS, Cert
V
, (x
1
x
2
x
3
t)
d
V
(mod n
V
)).
2. AS verica ntai validitatea certicatului si valideaza semnatura
(x
1
x
2
x
3
t)
d
V
(mod n
V
)). Apoi AS alege un num ar aleator k
2
si calculeaza
x
4
= (k
2
t)
e
V
(mod n
V
)
x
5
= (x
3k
2
1
x
2
2
x
3
)
d
AS
(mod n
AS
) = (y
1
y
2
a)
d
AS
b
3(k
2
+1)
(mod n
AS
)
unde y
1
= g
k
1
+k
2
, y
2
= g
k
1
+2k
2
. Mesajul (AS, V, x
4
, (x
5
t)
e
V
(mod n
V
)) este trimis lui V .
Parametrul k
2
este diferit pentru ecare votant, iar AS stocheaza n baza sa de date k
2
mpreun a cu identitatea lui V (Cert
V
).
3. Prin decriptarea lui x
4
, V obt ine k
2
. Deci V poate calcula y
1
si y
2
, dupa care determina
s = x
5
b
3(k
2
+1)
= (y
1
y
2
a)
d
AS
(mod n
AS
)
s este semnatura RSA pentru produsul y
1
y
2
a.
Pentru un vot m, V poate genera acum o semnatura (s
1
, s
2
) de tip ElGamal:
s
1
= (k
1
+ k
2
)
1
(ma r) (mod p 1), (3)
s
2
= (k
1
+ 2k
2
)
1
(ma r) (mod p 1). (4)
Buletinul de vot al lui V este
T = a g y
1
y
2
s s
1
s
2
m.
9.4.3 Etapa II: Votarea (si colectarea buletinelor de vot)

In aceasta faza V poate trimite prin ret ea buletinul sau de vot spre un server de votare V S.
Scopul principal al unui V S este de a garanta validitatea buletinului de vot. Protocolul cont ine
doi pasi:
1. V trimite T spre V S;
2. V S decripteaza T si veric a validitatea lui a, y
1
, y
2
folosind semnatura s si cheia publica
e
AS
. Apoi V S determina corectitudinea semnaturii (s
1
, s
2
) pentru m, folosind relat iile:
ay
s
1
1
= g
ma
(mod p), (5)
ay
s
2
2
= g
ma
(mod p) (6)
Daca rezultatul acestei vericari este pozitiv, atunci V S are certitudinea ca buletinul T
este valid.
V S stocheaza toate buletinele de vot si trimite n nal baza de date prin ret ea catre serverul
de numarare a buletinelor TCS.
9.5. SL

ABICIUNI ALE PROTOCOLULUI MU-VARADHARAJAN 113


9.4.4 Etapa III: Numararea buletinelor de vot
Toate V S-urile trimit buletinele catre TCS. Scopul acestuia este de a numara voturile si de a
depista pe cei care au votat de mai multe ori.
Sa presupunem ca V foloseste parametrii a, g, k
1
, k
2
pentru a semna si un alt vot m

si sa
trimita un al doilea buletin T = a g y
1
y
2
s s

1
s

2
m

spre alt V S.
Pentru a detecta o dubla votare, V S veric a parametrii a, g, y
1
, y
2
din toate buletinele T
pentru a vedea daca ei se repeta.

In caz armativ, el rezolva sistemul liniar
k
1
+ k
2
=
ma

ma
s

1
s
1
(mod p 1) (7)
k
1
+ 2k
2
=
ma

ma
s

2
s
2
(mod p 1) (8)
si aa k
2
. Folosind baza de date a lui AS, se identic a n mod unic votantul V .
9.5 Slabiciuni ale protocolului Mu-Varadharajan

In [3] se arata ca totusi exista doua modalitat i prin care cineva poate vota de mai multe ori
far a sa e depistat.
Sa presupunem ca V a obt inut buletinul valid de vot T = a g y
1
y
2
s s
1
s
2
m.
Pe baza lui poate genera un alt buletin valid T

astfel:
9.5.1 Atacul 1
La nceput V calculeaza g

, y

1
, y

2
, a

cu relat iile
g

= q
c
0
(mod p),
y

1
= (g

)
(k
1
+k
2
+c
1
)c
1
0
(mod p),
y

2
= (g

)
(k
1
+2k
2
+c
2
)c
1
0
(mod p),
a

= (g

)
(r+c
3
)c
1
0
(mod p),
unde c
0
, c
1
, c
2
, c
3
sunt numere ntregi care evrica condit iile c
1
+ c
2
+ c
3
= 0, c
1
c
2
c
3
= 0.
Acum V genereaza buletinul T

= a

1
y

2
s s

1
s

2
m unde (s

1
, s

2
) este semnatura
votului m cu cheile (k
1
+ k
2
+ c
1
)c
1
0
respectiv (k
1
+ 2k
2
+ c
2
)c
1
0
; anume
s

1
= ((k
1
+ k
2
+ c
1
)c
1
0
)
1
(ma

(r + c
3
)c
1
0
) (mod p 1)
s

2
= ((k
1
+ 2k
2
+ c
2
)c
1
0
)
1
(ma

(r + c
3
)c
1
0
) (mod p 1)

In faza de votare si de colectare a buletinelor, V poate trimite catre V S si al doilea buletin


T

. V S veric a nt ai semnatura s, apoi validitatea lui a

, y

1
, y

2
folosind ecuat ia
s
e
AS
= y
1
y
2
a (mod n
AS
) = y

1
y

2
a

(mod n
AS
)

In continuare V S verica validitatea lui (s

1
, s

2
) cu ecuat iile (5) si (6). Cum toate sunt
corecte, V S crede ca T

este un buletin valid si-l trimite lui TCS. Aici, pentru protejarea contra
dublei vot ari, TCS verica parametrii a

, g

, y

1
, y

2
si decide ca ei au fost folosit i o singura data.
Deci atacul funct ioneaz a. Chiar daca V S detecteaza ca semnatura s a mai fost utilizata, el nu
va putea detecta identitatea votantului ilegal (cu (7) si (8)).
9.5.2 Atacul 2
Similar primului atac, V alege ntai aleator numarul h si calculeaza
g

= g
h
, a

= a
h
2
, y

1
= y
h
2
1
, y

2
= y
h
2
2
, s

= s
h
2
114 PRELEGEREA 9. PROTOCOALE DE VOT ELECTRONIC
Apoi, semnatura (s

1
, s

2
) pentru m poate calculata cu o variant a a relat iilor (3) si (4)
folosind cheile (k
1
+ k
2
)h respectiv (k
1
+ 2k
2
)h:
s

1
= (k
1
+ k
2
)
1
h
1
(ma

hr) (mod p 1),


s

2
= (k
1
+ 2k
2
)
1
h
1
(ma

hr) (mod p 1).


Deci V poate genera un nou buletin de vot T

= a

1
y

2
s

1
s

2
m.
V S este convins de validitatea lui T

pentru ca relat iile


(s

)
e
AS
= (y
1
y
2
a)
h
2
= y

1
y

2
a

(mod n
AS
)
(y

1
)
s

1
a

= (g

)
a

m
(mod p)
(y

2
)
s

2
a

= (g

)
a

m
(mod p)
sunt vericate.
Cu aceste atacuri, un votant poate vota de oricate ori vrea, fara sa e detectat.
9.6 Protocolul Mu-Varadharajan modicat
Pentru a evita slabiciunile n fat a atacurilor prezentate anterior, este construita o variant a
mbunat at it a a protocolului de vot Mu-Varadharajan. Noua schem a are tot trei etape; acestea
sunt (s-au folosit aceleasi notat ii):
9.6.1 Etapa I: Obt inerea buletinului de vot
1. V alege doi factori blind b
1
, b
2
si doua nuemre aleatoare k
1
, r. Cu acesti parametri cal-
culeaza w
1
si w
2
dupa formulele
w
1
= g
r
b
e
AS
1
(mod n
AS
)
w
2
= g
k
1
b
e
AS
2
(mod n
AS
)
unde g Z

p
este un parametru public al sistemului.
V trimite lui AS structura {V, AS, Cert
V
, t, w
1
, w
2
, ((w
1
w
2
t)
d
V
(mod n
V
))}.
2. V S veric a validitatea certicatului si valideaza semnatura (w
1
w
2
t)
d
V
(mod n
V
).
Daca rezultatul veric arii este pozitiv, AS poate sigur ca parametrii primit i sunt corect i.
El continu a alegand un num ar aleator k
2
diferit pentru ecare votant si calculeaza
w
3
= (k
2
t)
e
V
(mod n
V
)
w
4
= (w
1
AS)
d
AS
(mod n
AS
) = (a AS)
d
AS
b
1
(mod n
AS
)
w
5
= (w
2
g
k
2
AS)
d
AS
(mod n
AS
) = (y
1
AS)
d
AS
b
2
(mod n
AS
)
w
6
= (w
2
2
g
k
2
AS)
d
AS
(mod n
AS
) = (y
2
AS)
d
AS
b
2
2
(mod n
AS
)
unde a = g
r
, y
1
= g
k
1
+k
2
, y
2
= g
k
1
+2k
2
.
Mesajul {AS, V, w
3
, ((w
4
w
5
w
6
t)
e
V
(mod n
V
))} este trimis lui V .

In paralel, AS
stocheaz a n baza sa de date k
2
mpreuna cu identitatea lui V .
3. V obt ine k
2
prin decriptarea lui w
3
, iar pe baza lui poate determina y
1
si y
2
. Mai departe,
V determina semnatura (s
1
, s
2
, s
3
) (eliminand factorii blind) conform relat iilor
s
1
= w
4
b
1
1
= (a AS)
d
AS
quad(mod n
AS
)
s
2
= w
5
b
1
2
= (y
1
AS)
d
AS
quad(mod n
AS
)
9.6. PROTOCOLUL MU-VARADHARAJAN MODIFICAT 115
s
3
= w
6
b
2
2
= (y
2
AS)
d
AS
quad(mod n
AS
)
4. V aplica o schem a de semnatur a ElGamal pentru a semna votul m. Fie y
1
, y
2
cheile
publice ale sistemului de criptare ElGamal si x
1
= k
1
+ k
2
, x
2
= 2k
1
+ k
2
cheile se-
crete corespunzatoare; deci y
1
= g
k
1
+k
2
(mod p) si y
2
= g
2k
1
+k
2
(mod p). Semnatura
((a, s
4
), (a, s
5
)) pentru votul m este generata de ecuat iile
s
4
= x
1
1
(ma r) (mod p 1) respectiv
s
5
= x
1
2
(ma r) (mod p 1).
Buletinul de vot al lui V este T = s
1
s
2
s
3
s
4
s
5
a y
1
y
2
m.
9.6.2 Etapa II: Votarea (si colectarea buletinelor de vot)
1. V trimite buletinul de vot T lui V S.
2. V S verica validitatea lui a, y
1
, y
2
folosind ecuat iile
AS a = s
e
AS
1
(mod n
AS
) (9)
AS y
1
= s
e
AS
2
(mod n
AS
) (10)
AS y
2
= s
e
AS
3
(mod n
AS
) (11)
Daca toate sunt vericate, V S trece la vericarea corectitudinii semnaturii ((a, s
4
), (a, s
5
))
folosind relat iile:
g
ma
= y
s
4
1
a = y
s
5
2
a (mod p)
Daca ele se veric a, V S accepta T ca valid.

In nal, V S formeaza o baza de date cu toate
buletinele de vot valide, pe care o trimite prin ret ea lui TCS.
9.6.3 Etapa III: Numararea buletinelor de vot
Dupa ce primeste buletinele de vot de la toate V S-urile, TCS face public cont inutul lor si le
num ara.

In plus, el este responsabil cu detectarea dublei vot ari.
Sa presupunem ca un votant V foloseste aceiasi parametri y
1
, y
2
, a pentru a semna un vot
diferit m

si trimite acest buletin unui alt V S. Atunci:


1. TCS veric a y
1
, y
2
, a pentru toate buletinele T pentru a vedea daca apar de mai multe
ori.
2. Daca aceste valori au aparut de doua ori si m = m

se ia n considerare un singur buletin.


Daca m = m

rezulta ca este un caz de dubla votare si TCS aa identitatea acestuia,


calculand
x
1
=
m

a ma
s

4
s
4
(mod p 1) si
x
2
=
m

a ma
s

5
s
5
(mod p 1).
De aici, x
2
x
1
= (2k
1
+ k
2
) (k
1
+ k
2
) = k
1
si deci k
2
= x
1
k
1
. Cu ajutorul lui k
2
se
poate aa cine a ncercat sa triseze.
116 PRELEGEREA 9. PROTOCOALE DE VOT ELECTRONIC
9.7 Securitatea protocolului Mu-Varadharajan modicat

In ipoteza ca serverul de autenticare SA este sigur si deci nu va genera nici un buletin de vot
far a consimt am antul votantului, sistemul construit verica toate restrict iile unui sistem de vot
electronic.

In plus, el are o securitate sporita, rezultata din urmatoarele observat ii:
9.7.1 Rezistent a la atacurile 1 si 2
Sa presupunem ca un votant fort eaz a parametrii a, y
1
, y
2
n conformitate cu Atacul 1; el nu va
putea totusi sa obt in a semnatura (s
1
, s
2
, s
3
) data de ecuat iile (9), (10), (11) pentru ca nu stie
cheia secreta d
AS
.

In al doilea atac, V poate obt ine usor componenta s

2
= (AS y

2
)
d
AS
dar nu poate gebera
restul semnaturiii pentru vatul m. De exemplu, sa presupunem s

2
= s
2
2
= (AS
2
y
2
2
)
d
AS
si y

2
= AS y
2
2
. Deci parametrul y

2
poate trece de vericare. Dar din cauza problemei
logaritmilor discret i votantul nu poate obt ine cheia secreta corespunzatoare x

1
. Far a cheia
secreta, V nu poate genera o semnatura corecta.
9.7.2 Rezistent a fat a de un atac aliat
Sa presupunem ca doi votant i V
1
, V
2
cu semnaturile valide (s
11
, s
12
, s
13
) respectiv (s
21
, s
22
, s
23
)
colaboreaza pentru obt inerea unei noi semnaturi (s

1
, s

2
, s

3
) denita prin
s

i
= s
1i
s
2i
(mod n
AS
), i = 1, 2, 3, 4.
Totusi ei nu vor putea calcula parametrii r

, x

1
, x

2
din cauza dicultat ii de rezolvare a
problemei logaritmului discret.
Bibliograe
[1] J. Benaloh Veriable sectret-ballot elections, Ph.D thesis, Yale University, Technical report
561 (1987)
[2] J.D. Cohen Improving Privacy in Cryptographic Elections
[3] I.Chang Lin, M.Hwang, C.Chang Security enhancement for anonymous secure e-voting
over a network, Computer Science $ interfaces 25 (2003), 131-139
[4] K. Iversen A criptographic scheme for cmputerized general elections, proc. Crypto 1,
Springer LNCS 576 (1992), 405 - 419.
[5] C.I. Lei, C.I. Fan A universal single-authority election system, IEICE Transactions on
Fundamentals E81-A (10) (1998), 2186-2193
[6] Y.Mu, V. Varadharajan Anonymous e-voting over a network, Proc. of the 14th Annual
Computer Security Applications Conference, ASAC8 (1998) 293-299
[7] H. Nurmi, A. Salomaa, L. Santean Secret ballot elections in computer networks, Computer
and Security 10 (1991), 553 - 560.
[8] C. Park, K. Itoh, K. Kurosawa it Ecient anonymous channel and all or nothing election
scheme, Proc. Eurocrypt 3, Springer LNCS 765 (1994), 248 - 259.
[9] A. Renvall Cryptogtaphic Protocols and techniques for Communication, Ph.D. Thesis
117
Pag. 1
Criptogrfie i securitate Anul III Sem. 1 USH
A Criptografie si securitate 6 / 12 subiecte
RSA Criptografie si securitate 4 / 12 subiecte
ELG Criptografie si securitate 2 / 12 subiecte
B Securitatea retelelor de calculatoare 2008-2009 100 sub
C Servere de date 73 subiiecte
C 45
Afisarea unei portiuni de text cu o dimensiune mai mare decat cea prestabilita se face prin:
a) <b> c) <sup>
b) <big> d) <bigger>
b
C 54
Alegeti culoarea data de codul de culoare #000000:
a) black c) red
b) white d) blue
a
C 53
Alegeti culoarea data de codul de culoare #ffffff:
a) black c) green
b) white d) gray
b
C 3
Aplicatiile de control a conexiunii folosesc protocolul:
a) ip c) icmp
b) udp d) igrp
a
B 3 Aplicatiile de control al conexiunii folosesc protocolul: TCP
B 65
Arhitecturile de retea cele mai cunoscute sunt modelul de referinta OSI (Open System Interconnection)
si TCP/IP (transmission control protocol / Internet Protocol).
C 55
Care din urmatoarele atribute apartine tagului font?
a) align c) size
b) width d) style
b
C 2
Care din urmatoarele programe foloseste campul TTL:
a) ping c) traceroute
b) telnet d) arp
c
B 2 Care program foloseste campul TTL: tracert/traceroute
C 22
Care program nu este un client de mail
a) Thunderbird c) Kmail
b) Sendmail d) Outlook
b
C 23
Care program nu este un client de mail
a) Thunderbird c) Postfix
b) Evolution d) Outlook
c
C 24
Care program nu este un client de mail
a) Thunderbird c) Outlook
b) Evolution d) Exim
d
C 9
Care program nu este un client de web
a) Mozilla firefox c) Safari
b) Opera d) Explorer
d
Pag. 2
C 25
Care program nu este un server de mail
a) Postfix c) Cyrus
b) Sendmail d) Exim
c
C 8
Care program nu este un server de web
a) firefox c) apache
b) lighhttp d) iis
a
B 13 Cate situri poate gazdui un server de web? oricare
B 95
Cifrul ..................... este cel mai cunoscut cifru bloc cu cheie simetrica, este un cifru Feistel care proce-
seaza blocuri de text de n = 64 biti si produce blocuri cifrate de 64 biti. Dimensiunea cheii secrete este
k = 56 biti.
R: DES (DataEncryption Standard, Standardul de Criptare a Datelor)
B 98
Cifrul ........................ este un cifru cu o arhitectura orientata cuvant pentru cuvinte cu dimensiune varia-
bila (16, 32 sau 64 biti). Are o descriere compacta si este potrivit pentru implementare hardware sau
software.
R: RC5
B 96
Cifrul....................... este un cifru bazat pe o generalizare a structurii Feistel si consta din 8 repetari iden-
tice urmate de o transformare. n prezent, se pare ca singurul punct slab al lui este dimensiunea mica (64
biti) a blocului.
R: IDEA (International Data Encryption Algorithm)
B 97
Cifrul.......................... este un cifru bloc iterat cu dimensiunea blocului de 64 biti. Spre deosebire de ci-
frurile Feistel, algoritmii lui de criptare si decriptare sunt diferiti.
R: SAFER (SAFER K-64 - Secure And Fast Encryption Rottine)
C 64
Comanda cat din sistemul de operare UNIX
a) Afiseaza continutul unui fisier c) Concateneaza doua sau mai multe siruri
b) Afiseaza continutul unui director d) Afiseaza lista de partitii si spatiul liber
a
C 65
Comanda cat din sistemul de operare UNIX
a) Afiseaza continutul unui director c) Afiseaza lista de partitii si spatiul liber
b) Afiseaza lista de procese active d) Concateneaza doua sau mai multe fisiere
d
C 67
Comanda df din sistemul de operare UNIX
a) Afiseaza continutul unui fisier
b) Afiseaza continutul unui director
c) Afiseaza lista de fisiere si directoare si spatiul ocupat de acestea
d) Afiseaza lista de partitii si spatiul liber si cel ocupat
d
B 40 Comanda df din sistemul de operare UNIX Afiseaza lista de partitii si spatiul liber si cel ocupat
C 68
Comanda df h din sistemul de operare UNIX
a) Afiseaza continutul unui fisier c) Afiseaza lista de procese active
b) Afiseaza lista de partitii si spatiul liber d) Afiseaza continutul unui director
b
C 66
Comanda du din sistemul de operare UNIX
a) Afiseaza continutul unui fisier
b) Afiseaza continutul unui director
c) Afiseaza lista de fisiere si directoare si spatiul ocupat de acestea
d) Afiseaza lista de partitii si spatiul liber
c
B 41
Comanda du din sistemul de operare UNIX Afiseaza lista de fisiere si directoare si spatiul ocupat
de acesta
Pag. 3
C 70
Comanda head din sistemul de operare UNIX
a) Afiseaza continutul unui fisier
b) Afiseaza primele linii ale unui fisier
c) Afiseaza ultimele linii ale unui fisier
d) Afiseaza lista de partitii si spatiul liber si cel ocupat
b
B 39 Comanda ifconfig din sistemul de operare UNIX Arata configurarea curenta a placilor de retea
B 44 Comanda ipfw din sistemul de operare UNIX Este un program de configurare a firewall-ului
C 62
Comanda ls din sistemul de operare UNIX
a) Afiseaza continutul unui fisier
b) Afiseaza continutul unui director
c) Afiseaza lista de fisiere si directoare si spatiul ocupat de acestea
d) Afiseaza lista de partitii si spatiul liber si cel ocupat
b
B 36 Comanda ls din sistemul de operare UNIX Afiseaza continutul unui director
B 37
Comanda netstat din sistemul de operare UNIX Afiseaza starea conexiunilor TCP adresa remote si
portul
C 63
Comanda ps din sistemul de operare UNIX
a) Afiseaza continutul unui fisier c) Afiseaza lista de procese active
b) Afiseaza continutul unui director d) Afiseaza lista de partitii si spatiul liber
c
C 72
Comanda ps din sistemul de operare UNIX
a) Afiseaza interactiv procesele din sistem
b) Afiseaza continutul unei partitii
c) Afiseaza lista de programe instalate in sistem
d) Afiseaza lista de procese active
d
B 45 Comanda ps din sistemul de operare UNIX Afiseaza lista de procese active
B 42 Comanda route din sistemul de operare UNIX Adauga o ruta statica in tabela de rutare
C 71
Comanda tail din sistemul de operare UNIX
a) Afiseaza continutul unui fisier
b) Afiseaza primele linii ale unui fisier
c) Afiseaza ultimele linii ale unui fisier
d) Afiseaza lista de partitii si spatiul liber si cel ocupat
c
B 43 Comanda tcpdump din sistemul de operare UNIX Analizator de pachete
C 69
Comanda top din sistemul de operare UNIX
a) Afiseaza topul userilor logati n sistem
b) Afiseaza lista de programe si memoria alocata acestora
c) Afiseaza interactiv procesele active n sistem
d) Afiseaza interactiv primele linii ale unui fisier
c
B 38 Comanda top din sistemul de operare UNIX Afiseaza interactiv procesele active in sistem
C 73
Comanda who din sistemul de operare UNIX
a) Afiseaza userul curent c) Afiseaza lista de useri conectati in sistem
b) Afiseaza directorul curent d) Afiseaza lista de grupuri din sistem
c
C 41
Comentariile n limbajul html se introduc astfel:
a) //comentariu c) <!-- comentariu -->
b) /*comentariu */ d) {comentariu}
c
B 4 Comunicarea dintre un client si un server se realizeaza pe baza adresei de: IP IP
Pag. 4
C 4
Comunicarea dintre un client si un server se realizeaza pe baza adresei de:
a) ip c) udp
b) mac d) web
a
B 5 Comunicarea directa dintre doua hosturi din aceiasi retea se realizeaza doar pe baza adresei de . MAC
C 5
Comunicarea directa dintre doua hosturi din aceiasi retea se realizeaza doar pe baza adresei de:
a) ip c) email
b) mac d) web
b
B 85
Concepte de baza ce apar in criptografie :
A este o multime finita, numita alfabetul de definitie.
M reprezinta spatiul mesajelor si contine siruri de simboluri dintr-un alfabet de definitie.
Elementele din M se numesc:
R: mesaje in clar
B 86
Concepte de baza ce apar in criptografie :
Multimea C contine siruri de simboluri dintr-un alfabet de definitie care poate diferi de alfabetul lui M
(spatiul mesajelor). Un element din C este numit text cifrat. Multimea C se numeste:
R: spatiul textelor cifrate
B 87
Concepte de baza ce apar in criptografie :
K este o multime numita spatiul cheilor . Un element al lui K este numit cheie. Fiecare element e din K
determina in mod unic o bijectie de la M (spatiul mesajelor) la C (spatiul textelor cifrate), notata Ee,
numita:
R: functie (transformarea) de criptare
B 88
Concepte de baza ce apar in criptografie :
Pentru fiecare element d din spatiul cheilor K, Dd este o bijectie de la C (spatiul textelor cifrate) la M
(spatiul mesajelor) numita :
R: functie (transformare) de decripate
B 89
Concepte de baza ce apar in criptografie :
Multimea {Ee |e din K } a functiilor de criptare si o multime corespunzatoare

in
d
D d K a functii-
lor de decriptare, cu proprietatea ca pentru fiecare e din K exista o cheie unica din K astfel incat
1
=
d e
D E , formeaza :
R: scheme de cripate
B 49 Configurare firewall-uri in mediul UNIX iptables
B 50 Configurare routere
A 9
Considerm modul de utilizare CBC al cifrului bloc DES care aplic permutri biilor unui vector de bii
de lungime 4. Criptai textul clar x = 1011000101001010 folosind cheia
| |
=
]
\
1 2 3 4
2 3 4 1
i blo-
cul iniial IV = 1010
R: 0010 0110 0100 1101
A 11
Considerm modul de utilizare CFB al cifrului bloc DES care aplic permutri biilor unui vector de bii
de lungime 4. Criptai textul clar x = 1011000101001010 folosind cheia
| |
=
]
\
1 2 3 4
2 3 4 1
i blo-
cul iniial IV = 1010
R: 1101 0101 1101 0010
Pag. 5
A 8
Considerm modul de utilizare ECB al cifrului bloc DES care aplic permutri biilor unui vector de bii
de lungime 4. Criptai textul clar x = 1011000101001010 folosind cheia
| |
=
]
\
1 2 3 4
2 3 4 1
R: 0111 0010 1000 0101
A 10
Considerm modul de utilizare OFB al cifrului bloc DES care aplic permutri biilor unui vector de bii
de lungime 4. Criptai textul clar x = 1011000101001010 folosind cheia
| |
=
]
\
1 2 3 4
2 3 4 1
i blo-
cul iniial IV = 1010
R: 1110 1011 0001 0000
RSA 12C
Considerm sistemul de criptare RSA construit cu numerele prime p = 3; q = 5. Dac exponentul de crip-
tare este e = 4 i se dorete codificarea textului clar m = 11, determinai textul criptat c.
R: 1
B 92
Criptarea similara cifrurilor cascada, dar in care cheile nivelurilor nu trebuie sa fie independente si cifru-
rile pot fi ori un cifru bloc E, ori functia de decriptare corespunzatoare E-1 , se numeste criptare:
R: multipla
A 2
Criptai un text clar la alegere folosind sistemul de criptare Hill cu matricea
3 2
3 5
| |
]
\
R:
B 57
Daca in retea datele circula:
-ntr-un singur sens simplex
-n ambele sensuri dar nu simultan semi-duplex
-n ambele sensuri simultan duplex
B 58
Daca transmiterea mesajului de la sursa la destinatie se poate face pe mai multe cai, trebuie ales un anu-
mit drum. Aceasta alegere se numeste dirijare sau .
R: rutare
C 57
Deschiderea unui link intr-o fereastra noua se va produce prin accesarea unui link de forma:
a) <a href="url" new> c) <a href="url" target="new">
b) <a href="url" target="_blank"> d) <a href="url" target="_self">
b
A 1
Determinai inversa matricei (modulo 26)
3 2
3 5
| |
]
\
R: [15 20;17 9]
C 36
DHCP provine de la
a) Detect Host Configuration Protocol c) Dynamic Host Connection Process
b) Dynamic Host Configuration Protocol d) Ddebug Host Configuration Problems
b
B 33 DHCP provine de la Dinamic Host Configuration Protocol
C 37
DNS provine de la
a) Domain Name Service c) Domain Name System
b) Dynamic Network Server d) Domain Name Service
c
B 34 DNS provine de la Domain Name System
B 59
Elementele active ale unui nivel se numesc entitati. Entitatile aceluiasi nivel dar de pe masini diferite se
numesc entitati pereche Entitatile pot fi: software (un proces) sau hardware (un cip I/E inteligent).
R: pereche
Pag. 6
C 48
Elementul inline generic potrivit cu o gama larga de utilizari, inclusiv pentru a atasa CSS
unei portiuni a unui rand este:
a) <div> c) <span>
b) <p> d) <tr>
c
C 51
Evidentierea unui fragment de text, prin afisarea acestuia cu stilul cursiv se face prin
utilizarea urmatorului element de fraza:
a) <em> c) <i>
b) <b> d) <c>
c
C 52
Evidentierea unui fragment de text, prin afisarea acestuia cu stilul aldin se face prin
utilizarea urmatorului element de fraza:
a) <strong> c) <aldine>
b) <em> d) <b>
d
ELG 12B
Fie cifrul El-Gamal asociat numrului prim p = 11 i rdcinii primitive, modulo 7, 5. Cheia secret a lui
Alice este 4, iar cea a lui Bob este 7. Alice primete de la Bob textul criptat (3,7) pe care l decodific i
gsete mesajul clar ....
R: x=m(textul clar)=2
ELG 12A
Fie cifrul El-Gamal asociat numrului prim p = 7 i rdcinii primitive, modulo 7, 5. Cheia secret a lui
Alice este 3, iar cea a lui Bob este 4. Dac Bob codific textul clar x = 11 i il transmite lui Alice, atunci
aceasta primete codificarea ....
R: c=(c1,c2)=(2,4)
RSA 12B
Fie d = 11 exponentul de decriptare al sistemului de criptare RSA construit cu numerele prime
p = 7; q = 11. Determinai exponentul de criptare e.
R: E=11
RSA 12A
Fie d exponentul de decriptare al sistemului de criptare RSA construit cu numerele prime p = 3; q = 5.
Dac exponentul de criptare este e = 7, determinai d.
R: D=7
A 3
Folosind sistemul de criptare Polybios codificai textul clar UNIVERSITATE.
R: EACDBDEBAEDCDDBDDEAADEAE (am eliminat w)
A 6
Folosind un sistem aditiv fluid binar de criptare se cere criptarea /decriptarea secvenei de text clar
x = 101101, cunoscnd cheia fluid z = 1101.
R: 011010 (criptarea)
A 7
Folosind un sistem de criptre asincron cu auto-cheie, pentru k = 11, codificai /decodificai textul clar
SPIRU HARET.
R: DSARLSSJNG
B 62
Formal, un serviciu este specificat printr-un set de primitive (operatii) disponibile entitatii ca-
re foloseste acest serviciu. Acestea comanda serviciului sa execute anumite actiuni sau sa raporteze des-
pre actiunile executate de o entitate pereche.
C 31
HTML provine de la
a) HyperText Multi Language c) HyperText Markup Language
b) HyperTag Markup Language d) HighexTensible Markup Language
c
B 28 HTML provine de la Hyper Text Markup Language
C 32
HTTP provine de la
a) Hypertext Transfer Protocol c) Hypertext Transport Protocol
b) Hypertext Transmission Protocol d) Hyper Text Protocol
a
B 29 HTTP provine de la Hyper Text Transfer Protocol
C 33
IMAP provine de la
a) Instant Message Access Protocol c) Internet Mail Access Protocol
b) Internet Message Access Protocol d) Interior Message Access Protocol
b
X 10
Pag. 7
B 30 IMAP provine de la Internet Message Access Protocol
C 47
Inserarea textului n paragrafe se realizeaza folosind:
a) <blockquote> c) <div>
b) <p> d) <span>
b
C 61
Inserarea unei imagini se face prin:
a) <image src="image.gif"> c) <img href="image.gif>
b) <img src="image.gif"> d) <img>image.gif</img>
b
C 56
Inserarea unui hyperlink n limbajul HTML se face prin:
a) <a name="http://www.w3schools.com">W3Schools.com</a>
b) <a href="http://www.w3schools.com">W3Schools</a>
c) <a url="http://www.w3schools.com">W3Schools.com</a>
d) <a>http://www.w3schools.com</a>
b
B 53
n LAN-urile cu inel fiecare bit se propaga independent de ceilalti pe inel, fara sa astepte restul pachetu-
lui.
R: inel
A 5
n sistemul de criptare Vigenere, s consideram cuvntul cheie GRUPA. Criptm cu aceast cheie textul
clar CRIPTOGRAFIE i se obine textul criptat ...
R: IICETUXLPFOV
B 55
ntre doua nivele adiacente exista o interfata care defineste operatiile si serviciile primitive oferite de ni-
velul n nivelului n+1.
R: interfata
C 43
ntreruperea de rand n cadrul unui paragraf de text se realizeaza prin introducerea unui
element de tipul:
a) <p> c) <br>
b) <b> d) <hr>
c
B 71
Nivelul ...................... al modelului OSI stabileleste si ntretine conexiunea ntre procese de pe masini
diferite, permite proceselor sa defineasca proprietatile dialogului si sa-l sincronizeze.
R: sesiune
B 73
Nivelul ........................ al modelului OSI contine o multitudine de protocoale utilizate frecvent cum ar fi
HTTP (protocol de transmitere a hipertextului), FTP (protocol pentru transferul fisierelor), SMTP (pro-
tocol pentru posta electronica), etc.
R: aplicatie
B 72
Nivelul ........................ al modelului OSI realizeaza operatii de transformare a datelor n formate recu-
noscute de entitatile ce intervin n conexiune, transfera date ntre masini de tipuri diferite (Unix-DOS),
realizeaza codificarea datelor n functie de caracteristicile acestor masini., ofera servicii de securitate
(permite comunicarea unor structuri de date de nivel inalt, cum ar fi inregistrarile bancare).
R: prezentare
B 76
Nivelul aplicatie al modelului TCP/IP cuprinde toate protocoalele de nivel nalt. Unul dintre acestea este
protocolul de terminal virtual ....................... care permite unui utilizator de pe o masina sa se conecteze
si sa lucreze pe o masina situata la distanta.
R: telnet
B 77
Nivelul aplicatie al modelului TCP/IP cuprinde toate protocoalele de nivel nalt. Unul dintre acestea este
protocolul pentru transferul de fisiere ............. care poseda un mecanism de mutare eficienta a datelor de
pe o masina pe alta.
R: FTP
B 78
Nivelul aplicatie al modelului TCP/IP cuprinde toate protocoalele de nivel nalt. Unul dintre acestea este
protocolul de posta electronica
R: SMTP
B 79
Nivelul aplicatie al modelului TCP/IP cuprinde toate protocoalele de nivel nalt sialte servicii. Unul din-
tre acestea este serviciul numelor de domenii .................... care stabileste corespondenta dintre numele
gazdelor si adresele retelelor.
R: DNS
Pag. 8
B 54
Nivelul n de pe o masina comunica folosind anumite reguli si conventii numite . cu nivelul
n de pe alta masina
R: protocoale
B 66
Nivelul fizic al modelului OSI are rolul de a transmite bitii de la o masina la alta printr-un canal
de comunicatie. Nivelul rezolva problemele de natura electrica: cum ar fi tensiunea si intensitatea curen-
tului.
B 68
Nivelul legaturi de date al modelului OSI cuprinde un subnivel de control al accesului la me-
diu care rezolva problema controlului accesului la canalul partajat pentru retelele cu difuzare.
B 69
Nivelul retea al modelului OSI are rolul de a controla functionarea subretelei. Acesta trebuie sa
determine modul de dirijare a pachetelor de la sursa la destinatie prin intermediul tabelelor statistice (cu
trasee care sunt stabilite la nceputul fiecarei conversatii) sau n mod dinamic (prin determinarea trasee-
lor pentru fiecare pachet n parte n concordanta cu traficul din retea la momen tul respectiv).
R: retea
B 67
Nivelul transport al modelului OSI are rolul de a transforma un mijloc de transmisie ntr-o li-
nie disponibila nivelului retea fara erori de transmisie.
B 70
Nivelul transport al modelului OSI descompune datele pe care le primeste de la nivelul ime-
diat superior n unitati mai mici, le trimite nivelului imediat inferior si se asigura ca acestea ajung corect
la distanta. De asemenea, stabileste tipul de serviciu pe care l furnizeaza nivelului imediat su perior si
utilizatorilor retelei.
R: transport
C 58
O linie n cadrul unui tabel se introduce prin:
a) <td> c) <table>
b) <tr> d) <th>
b
B 56
O lista de protocoale folosita de un sistem, cte u n protocol pentru fiecare nivel se numeste stiva
de protocoale.
C 60
O lista neordonata se introduce prin:
a) <ul> c) <dl>
b) <list> d) <ol>
a
C 59
O lista ordonata se introduce prin:
a) <dl> c) <ul>
b) <list> d) <ol>
d
B 81
Obiectivul esential al criptografiei care se refera la ascunderea informatiilor fata de toate persoanele,
mai putin cele autorizate, este:
R: confidentialitate
B 82
Obiectivul esential al criptografiei care se refera la evitarea alterarii neautorizate a datelor este:
R: intregritate
B 83
Obiectivul esential al criptografiei care se refera la identificarea unei persoane sau a originii unui mesaj
este:
R: autentificare
B 90
Obiectivul unui cifru bloc este de a asigura confidentialitatea. Obiectivul unui intrus este de a recupera
mesajul in clar din textul cifrat. Daca un intrus poate obtine parti ale mesajului in clar din textul cifrat,
dar nu poate obtine cheia, un cifru bloc este:
R: partial compromis
B 91
Obiectivul unui cifru bloc este de a asigura confidentialitatea. Obiectivul unui intrus este de a recupera
mesajul in clar din textul cifrat. Daca se poate gasi o cheie, un cifru bloc este:
R: total compromis
B 80
Paginile pot fi vazute printr-un program de navigare numit ........................... Exemple de astfel de pro-
grame sunt: Mosaic, Opera si Netscape, care aduc pagina dorita, interpreteaza textul si comenzile de for-
matare continute n text si afiseaza pe ecran pagina formatata corespunzator .
R: browser
Pag. 9
A 4
Pentru a = 3; b = 5 se definesc funciile de criptare, respectiv decriptare, ale unui sistem de criptare afin:
, )
, ) = +
3,5
3 5 e x x
, )
, ) , ) , ) = + = +
3,5
9 9 26 - 5 mod26 9 7 d y y y
S luam textul clar GRUPA. Codificarea acestuia este ...
R: XENYF
B 26 Pentru a aduce mesajele de mail un client se conecteaza la un MTA cu pop3 pe portul 110
C 27
Pentru a aduce mesajele de mail un client se conecteaza la un MTA cu pop3 pe portul
a) 21 c) 25
b) 100 d) 110
c
C 50
Pentru a insera o portiune de text preformatat se recomanda utilizarea tagului :
a) <plaintext> c) <pre>
b) <text> d) <xmp>
c
C 44
Pentru inserarea unui element de text formatat cu stilul teletype se foloseste:
a) <i> c) <tr>
b) <tt> d) <td>
b
C 35
POP provine de la
a) Postfix Office Protocol c) Post Online Protocol
b) Post Office Protocol d) Postfix Online Protocol
b
B 32 POP provine de la Post Office Protocol
B 64
Prin protocol ntelegem un set de reguli ce guverneaza formatul si semnificatia cadrelor, pache-
telor sau mesajelor schimbate ntre ele de entitatile pereche ale unui nivel.
B 63
Prin serviciu ntelegem un set de primitive pe care un nivel le furnizeaza nivelului de deasupra.
El spune ce operatii poate oferi utilizatorilor sai fara sa precizeze nimic despre modul de implementare
al acestor operatii. Acesta este definit n contextul unei interfete ntre doua nivele.
B 47 Programul bind in mediul UNIX Programul bind e server de DNS
B 46 Programul nmap in mediul UNIX Este un program de scanare a retelei
B 48 Programul ssh in mediul UNIX Clinet de SSH din Linux
B 74
Protocolul ................. din cadrul modelului TCP/IP este un protocol sigur, orientat pe conexiune care re-
alizeaza controlul transmisiei (pentru a elimina erorile de transmisie ce pot aparea ntre doua masini a-
flate n retea) si controlul fluxului (pentru a evita inundarea unui receptor lent de catre un emitator cu o
viteza mult mai mare).
R: TCP
B 75
Protocolul .......................... din cadrul modelului TCP/IP este un protocol nesigur si neorientat pe cone-
xiune care ofera posibilitatea utilizatorilor sa foloseasca propriul lor control al transmisiei si al fluxului.
Protocolul asigura comunicarea rapida clientserver si ntre aplicatii, fara sa garanteze nsa acuratetea
transmisiei.
R: UDP
B 99
Schema de criptare .............................. este bazata pe codurile corectoare de erori. Ideea este de a selec-
ta, mai intai, un cod particular pentru care este cunoscut un algoritm eficient de decodare si apoi prezen-
tarea acestui cod ca un cod liniar general. Cheia privata poate fi o descriere a codului original iar cheia
publica o descriere a codului transformat.
R: Mc Eliece
B 100
Schema de criptare ............................... este cea mai eficienta schema de criptare probabilista cunoscuta.
Ea se bazeaza pe imposibilitatea de rezolvare in timp real a problemei factorizarii intregilor si este se-
mantic sigura (textul cifrat nu ofera nici o informatie despre textul in clar, informatie ce poate fi calcula-
ta in timp polinomial). Totusi, este vulnerabila la un atac de tip text cifrat ales.
R: Blum-Goldwasser
Pag. 10
B 52
Se numeste retea de calculatoare o colectie interconectata de calculatoare autonome care sunt capabile
sa schimbe informatii intre ele si sa partajeze resurse.
R: retea
B 84
Serviciul care impiedica o entitate sa nege actiuni sau angajamente anterioare este:
R: non-repudierea
B 61
Serviciul secventelor de mesaje orientat pe conexiuni , este serviciul n care se mentine deli-
mitarea mesajelor. Daca spre exemplu sunt trimise doua mesaje de aceasi dimensiune, ele vor sosi la
destinatie sub forma a doua mesaje distincte si niciodata ca un singur mesaj de dimensiune dubla.
C 34
SMTP provine de la
a) Simple Mail Transmission Protocol c) Simple Mail Transport Protocol
b) Simple Message Transfer Protocol d) Simple Mail Transfer Protocol
d
B 31 SMTP provine de la Simple Mail Transfer Protocol
C 46
Stilul de text ingrosat/aldin se poate aplica folosind:
a) <aldin> c) <bold>
b) <b> d) <big>
b
C 49
Tagul <span> nu accepta atributul:
a) width c) title
b) align d) style
b
C 42
Titlul unei pagini web afisat n bara de titlu a browserului se introduce prin:
a) <head> c) <h2>
b) <h1> d) <title>
d
B 94
Un cifru bloc ce repeta secvential o functie interna numita functie repetitiva se numeste cifru bloc
R: iterat
B 93
Un cifru simplu de perioada t peste un alfabet cu s caractere care foloseste o cheie de t caractere
k1k2kt iar functia ce transforma textul in clar m1m2m3 in textul cifrat c1c2c3 este aplicata ca-
racterelor individuale astfel: ci = mi + ki (mod s), unde indicele i in ki este luat modulo t (cheia este re-
folosita), se numeste cifru:
R: vigenere simplu
C 39
Un client ARP :
a) obtine o adresa IP intr-o adresa UDP c) obtine o adresa IP intr-o adresa MAC
b) obtine o adresa de web intr-o adresa IP d) obtine o adresa MAC intr-o adresa IP
c
C 20
Un client de mail aduce mesajele prin protocolul:
a) xml c) imap
b) http d) smtp
c
C 21
Un client de mail aduce mesajele prin protocolul:
a) xml c) http
b) pop3 d) smtp
b
B 23 Un client de mail aduce mesajele prin protocolul: POP3/IMAP
B 24 Un client de mail aduce mesajele prin protocolul: POP3/IMAP
C 29
Un exemplu de MDA este
a) Thunderbird c) Sendmail
b) Cyrus d) Gmail
b
C 30
Un exemplu de MTA este
a) Outlook c) Gmail
b) Cyrus d) Postfix
d
Pag. 11
C 28
Un program de tip MUA se conecteaza la un MDA imap pe portul
a) 140 c) 23
b) 143 d) 110
b
B 27 Un program de tip MUA se conecteaza la un MDA imap pe portul 143
C 16
Un server de fisiere livreaza datele pe portul:
a) 19 c) 21
b) 20 d) 22
b
B 19 Un server de fisiere livreaza datele pe portul: 20
C 15
Un server de fisiere se ataseaza uzual la portul:
a) 19 c) 21
b) 20 d) 22
c
B 18 Un server de fisiere se ataseaza uzual la portul: 21
C 14
Un server de fisiere utilizeaza protocolul:
a) http c) ftps
b) ftp d) udp
b
B 17 Un server de fisiere utilizeaza protocolul: FTP
C 26
Un server de mail primeste conexiuni pe portul
a) 21 c) 25
b) 22 d) 80
c
B 25 Un server de mail primeste conexiuni pe portul 25
C 19
Un server de mail trimite mesajele prin protocolul:
a) xml c) imap
b) http d) smtp
d
B 22 Un server de mail trimite mesajele prin protocolul: SMTP
B 16 Un server de web care accepta conexiuni securizate se ataseaza uzual la portul: 443
C 13
Un server de web care accepta conexiuni securizate se ataseaza uzual la portul:
a) 88 c) 445
b) 443 d) 22
b
C 7
Un server de web de web poate gazdui:
a) Un singur site c) Oricat de multe situri
b) Cel mult doua situri d) Un numar limitat de situri
c
B 15 Un server de web se asculta uzual la portul 80
C 12
Un server de web se ataseaza uzual la portul:
a) 88 c) 80
b) 8080 d) 21
c
C 11
Un server de web serveste n mod uzual:
a) fisiere zip c) mesaje de e-mail
b) date din baza de date d) pagini html
d
C 6
Un server de web utilizeaza protocolul:
a) html c) imap
b) http d) ftp
b
Pag. 12
C 10
Un server de web utilizeaza protocolul:
a) https c) xml
b) pop3 d) html
a
B 12 Un server de web utilizeaza protocolul: HTTP
B 14 Un server de web utilizeaza protocolul: HTTP
C 38
Un server DNS :
a) Translateaza o adresa IP intr-o adresa UDP
b) Translateaza o adresa de web intr-o adresa IP
c) Translateaza o adresa IP intr-o adresa MAC
d) Translateaza o adresa MAC intr-o adresa IP
b
C 40
Un server DNS raspunde pe portul
a) 69 c) 80
b) 55 d) 53
d
B 35 Un server DNS raspunde pe portul: 53
B 21 Un server UNIX adminstrat de la distanta primeste conexiuni pe portul 22
C 18
Un server UNIX adminstrat de la distanta primeste conexiuni pe portul
a) 21 c) 25
b) 22 d) 80
b
B 20 Un server UNIX de web se administreaza de la distanta prin protocolul SSH
C 17
Un server UNIX de web se administreaza de la distanta prin protocolul
a) ftp c) imap
b) http d) ssh
d
RSA 12D
Un utilizator al sistemului de criptare RSA are ca cheie public (n; e) = (35; 5) i cheia secret d = 5. Da-
c primete textul criptat c = 3, atunci textul clar decodificat de utilizator este ..
R: 33
B 60
Una dintre caracteristicile unui serviciu este calitatea serviciului. Un serviciu de calitate trebuie sa fie
sigur, adica sa nu piarda niciodata date. Pentru aceasta, receptorul trebuie sa confirme primirea fiecarui
mesaj, ceea ce duce la introducerea unui timp suplimentar si deci la ntrzieri.
R: sigur
B 51 Utilizare sniffere Dsniff, Ettercap, Cain
C 1
Verificare unei conexiuni fizice de retea se va realiza prin:
a) ping c) traceroute
b) telnet d) arp
a
B 1 Verificarea unei conexiuni fizice de retea se va realiza prin PING
B 9 Vulnerabilitati de tip buffer-overflow Dos, DDos
B 11 Vulnerabilitati la nivelul aplicatie Dos, DDos
B 10 Vulnerabilitati la nivelul de retea IP Spooling
B 6 Vulnerabilitati la nivelul legaturii de date MAC Flooding
B 7 Vulnerabilitati prin ARP poisoning
B 8 Vulnerabilitati prin DHCP 22
RSA
Reguli generale RSA:
n = p*q
f = (p-1)*(q-1)
1<e<n astfel incat c.m.m.d.c(e,f)=1
d=e
-1
(mod f) || se calculeaza folosind algoritmul lui Euclid extins
Criptare: c=m
e
(mod n)
Decriptare: m = c
d
(mod n)
m text clar, c text criptat, e exponentul de criptare, d exponentul de decriptare.
Algoritmul lui Euclid extins pentru aflarea inversului unui numar intr-un mod n.
Vom nota pasii algoritmului lui Euclid pornind de la pasul 0. Coeficientul obtinut la pasul i va fi notat q
i
. In timp ce efectuam
fiecare pas al algoritmului, vom calcula si un numar auxiliar, p
i
. Pentru primii 2 pasi stim deja valorile : p
0
= 0 and p
1
= 1. Pentru
restul pasilor vom calcula recursiv p
i
= p
i-2
- p
i-1
q
i-2
(mod n). Continuam calculul numarului auxiliar inca un pas dupa terminarea
algoritmului.
Algoritmul incepe prin impartirea lui n la x, apoi continua prin impartirea impartitorului la rest. Cand ultimul rest diferit de 0 se
afla la pasul k, daca acest rest e 1 , x admite un invers care va fi p
k+2
. (Daca restul nu e 1, atunci x nu admite un invers.)
EXEMPLU:
Calculam inversul lui 15 mod 26.
PAS 0: 26 /15= 1 rest 11 p
0
= 0
PAS 1: 15/11 = 1 rest 4 p
1
= 1
PAS 2: 11/4 = 2 rest 3 p
2
= 0 - 1( 1) mod 26 = 25
PAS 3: 4/3 = 1 rest 1 => x admite invers p
3
= 1 - 25( 1) mod 26 = -24 mod 26 = 2
PAS 4: 3/1 = 3 rest 0 p
4
= 25 - 2( 2) mod 26 = 21
p
5
= 2 - 21( 1) mod 26 = -19 mod 26 = 7
Observati ca 15*7 = 105 = 1 + 4*26 1 (mod 26).
EL-GAMAL
Reguli generale EL-GAMAL:
A cheia privata a lui Alice
B cheia privata a lui Bob
p numar prim mare
primitiv
(p,,
A
) Cheia publica a lui Alice
(p,,
B
) Cheia publica a lui Bob
Criptare : Bob obtine cheia publica a lui Alice, calculeaza textul criptat c
1
folosind cheia lui privata si c
2
folosind
A
a
lui Alice pe care-l obtine din cheia ei publica.
c
1
=
B
mod p ; c
2
= m(
A
)
k
mod p ; c = (c
1
,c
2
) - Trimite textul cifrat c = (c
1
,c
2
) la utilizatorul Alice.
Decriptare : Pentru a determina textul clar m din textul cifrat c, utilizatorul Alice execut urmtoarele:
1. Utilizeaz cheia sa privat a pentru a calcula: f = c
1
p-1-A
(mod p).
2. Determin textul clar m astfel: m = f*c
2
(mod p).



RSA 1) : p=3 ; q=5 ; e=7 , d=?
f=(p-1)*(q-1) = 2*4 = 8
d = e
-1
(mod f) = 7
-1
(mod 8)
8/7 = 1 rest 1 p
0
=0
7/1 = 7 rest 0 p
1
=1
p
2
=0 1*1 (mod 8) = -1 (mod 8) = 7
d = 7

RSA 2) : p=7; q=5; d=11 ; e=?
f=(p-1)*(q-1) = 6*4 = 24
e= d
-1
(mod f) = 11
-1
( mod 24 )
24/11 = 2 rest 2 p
0
=0
11/2 = 5 rest 1 p
1
=1
2/1 = 2 rest 0 p
2
=0 1*2 (mod 24) = 22
P
3
= 1 22*5 (mod 24) = -109 mod 24 = 11
e = 11

RSA 3) : n=15; e=4; m=11, c=?
c = m
e
(mod n) = 11
4
(mod 15) = 14641 mod 15 = 1

RSA 4) : (n,e) = (35,5) ; d=5, c=3 , m=?
m = c
d
(mod n) = 3
5
(mod 35) = 243 mod 35 = 33


El-Gamal 1): p=11; =2; csA=3; csB=4; m=9; c=?
c
1
=
B
(mod p) = 2
4
mod 11 = 16 mod 11 = 5
c
2
= m(
A
)
B
(mod p) = 9(2
3
)
4
mod 11 = 9*4096 (mod 11) = 3
c = (c
1
,c
2
) = (5,3)

El-Gamal 2): p=7; =5; csA=3; csB=4; m=11; c=?
c
1
=
B
(mod p) = 5
4
mod 7 = 625 mod 7 = 2
c
2
= m(
A
)
B
(mod p) = 11(5
3
)
4
mod 7 = 11*244140625 (mod 7) = 4
c = (c
1
,c
2
) = (2,4)

El-Gamal 3): p=11; =2; csA=3; csB=4; A primeste de la B (y
1
,y
2
)=(5,3); txt. Clar x =?
z = y
1
p-1-A
(mod p) = 5
11-1-3
(mod 11) = 5
7
(mod 11) = 3
x = z * y
2
(mod p) = 3 * 3 (mod 11) = 9

El-Gamal 4): p=11; =2; csA=4; csB=7; (y
1
,y
2
) = (3,7); txt clar x=?
Daca (y
1
,y
2
) = (3,7) este primit de B de la A, atunci:
f = y
1
p-1-B
(mod p) = 3
11-1-7
(mod 11) = 3
3
(mod 11) = 5
x = f * y
2
(mod p) = 5 * 7 (mod 11) = 2
Daca (y
1
,y
2
) = (3,7) este primit de A de la B, atunci:
f = y
1
p-1-A
(mod p) = 3
11-1-4
(mod 11) = 3
6
(mod 11) = 3
x = f * y
2
(mod p) = 3 * 7 (mod 11) = 10

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