Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Criptografie si securitate
Luciana Morogan
Facultatea de Matematica-Informatica
Universitatea Spiru Haret
Laboratoare
Laborator
Definitii de baza
Sisteme de criptare simetrice
Outline
1 Definitii de baza
Laborator
Definitii de baza
Sisteme de criptare simetrice
Definitie generica
Laborator
Definitii de baza
Sisteme de criptare simetrice
Schema generala
Fig.1
Figure: Fig.1
Laborator
Definitii de baza
Sisteme de criptare simetrice
Definitie formala(1)
Laborator
Definitii de baza
Sisteme de criptare simetrice
Definitie formala(2)
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Sisteme clasice
Sistemele de criptare clasice ↔ sisteme simetrice
odata cu aflarea cheii de criptare cheia de decriptare se
obtine imediat, fiind functia inversa
Clasificare
Sistemele de criptare simetrice se impart in doua clase mari
cifruri de permutare
cifruri cu substitutie
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Criptarea
Textul clar se imparte in blocuri de n, n ≥ 2 caractere, si
fiecaruia i se va aplica o permutare prefixata.
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Exemplul 1 (1)
Criptarea
Textul clar GRUPELE ANULUI III se imparte in grupuri de
cate trei caractere (consideram si caracterul spatiu, notat
•)
GRU PEL E•A NUL UI• III
Textul criptat va fi....?
si eliminand gruparile...?
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Exemplul 1 (2)
Solutia
Textul criptat va fi... RGU EPL •EA UNL IU• III
si eliminand gruparile... RGUEPL•EAUNLIU•III
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Exercitiul 1
1
2 5
3 1
2
7 3 5
1 8 2
2 2 4
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Exercitiul 2
1
17 17 5
21 18 21
2 2 19
sau
2
5 11 5
2 14 1
2 4 9
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Exercitiul 3
Cifruri cu substitutie
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
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
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
P = C = (Z26 )
K = (a, b)|a, b ∈ Z26 , cmmdc(a, 26) = 1
pentru k ∈ K , k = (a, b) definim
functia de criptare: ek (x) = ax + b(mod26) = y
functia de decriptare: dk (y ) = a−1 y + a−1 (26 − b)(mod26)
(cum (a, 26) = 1, ∃a−1 ∈ Z26 )
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
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Exemplu
Pentru a = 3, b = 5 avem
e(3,5) (x) = 3x + 5
d(3,5) (y ) = 9y + 9(26 − 5)(mod26) = 9y + 7 deoarece 3−1 = 9(mod26)
Sa luam textul clar GRUPA.
Codificarea 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
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
Laborator
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
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:
Codificarea textului este a = 2 17 8 15 19 14 6 17 0 5 8 4.
Sub fiecare 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
Cifruri de permutare
Definitii de baza
Exercitii
Sisteme de criptare simetrice
Cifruri cu substitutie
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 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 1 ( Termenul folosit in limba engleza pentru o secventa de acest tip este cel de
2
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 f :Z 2k → Z 2l calculabila in timp polinomial[2] (in functie de k). Intrarea s0 ∈ Z 2k se numeste secventa initiala
de intrare, in timp ce iesirea f ( s0 ) ∈ Z 2l 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.
In studiul securitatii unui sistem criptografic exista doua abordari fundamentale:
Alta clasificare:
Din punctul de vedere
al securitatii: generatori simplii
Generatorul liniar congruential
Generatori Ranrot
Generatorul Blum – Blum – Shub
Generatori siguri generatori bazati pe LFSR
Generatorul Geffe
ANSI X9.17 Generatori de tip “Stop-and-go”
Generatorul Stop-and-go alternativ
FISP 186 “clasa” separata
Generatorul Mother-of-all
Generatorul Blum – Micali
Generatorul1/p
Generatori nesiguri:
Generatorul RSA
Micali-Schnorr
Blum-Blum-Schub
Generatori simplii de
numere pseudo-aleatoare
Generatorul liniar congruential
Face parte din clasa generatorilor nesiguri.
Un exemplu ilustrativ :
[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:
Generatorul Blum – Blum – Shub
R4 R3 R2 R1 R0
R4 R3 R2 R1 R0
( x4 , x3 , x2 , x1 , x0 ) → ( −, x4 , x3 , x2 , x1 )
Secventa de iesire in acest moment consta in valoarea 1.
Simbolic: Aceasta secventa de elemente este numita satare
a vectorului.
In general, o relatie de recurenta (binara)
de lungime m (corespunzatoare a m registrii),
este o relatie de forma: m −1
xi + m = ∑ c j xi + j
j =0
LFSR2 0
EMUX
LFSR3 1
LFSR1
Aici, LFSR1 formeaza functia de selectie a multiplexorului[1] elementar,
intrarile fiind asigurate de celelalte doua LFSR-uri.
Daca a1 , a2 , a3 sunt iesirile corespunzatoare celor trei LFSR-uri,
iesirea generatorului Geffe este data de relatia
b = (a1 ∧ a2 ) ⊕ (a1 ∧ a3 )
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.
Generatori de tip “Stop-and-go”
Generatorul Stop-and-go alternativ
Generatorul Beth-Piper (dupa numele foloseste tot trei LFSR-uri de lungimi diferite
autorilor) care controleaza ceasurile celor trei legate intr-un circuit de forma:
circuite. Structura sa este urmatoarea:
Ceasul de intrare in LFSR2 este Daca iesirea din LFSR1 este 1, atunci
controlat de iesirea din LFSR1 si, astfel, LFSR2 se activeaza LFSR2; altfel se activeaza LFSR3.
isi schimba starea la momentul t daca iesirea Iesirea finala din generator este reprezentata de
din LFSR1 era 1 la momentul t-1. un XOR intre cele doua iesiri.
Alti generatori de numere
pseudo-aleatoare
Generatorul Mother-of-all
1
| Prt∈X n ( A(t ) = 1) − Prt∈U n ( A(t ) = 1) |<
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.
a. se alege x ∈ Gk
b. se defineste t = G(x).
Distributia χ
2
Distributia normala
Definitie. O variabila aleatoare (continua) X
are o distributie normala de medie µ si
varianta σ , daca densitatea sa de Definitie. Fie v ≥ 1 un intreg. O variabila
2
aleatoare (continua) X are o distributie χ cu
2
probablitate este definita astfel:
v grade de libertate daca functia sa de
densitate probablistica este definita astfel:
1 −( x − µ ) 2 1
f ( x) = exp , −∞ < x < ∞ x ( v / 2)−1 e − x / 2 , 0 ≤ x < ∞
σ 2π 2σ 2 f ( x) = Γ(v / 2)2 v/2
0, x < 0
Notatam X cu N (µ ,σ 2 )
unde Γ reprezinta functia gamma[1].
Daca X este N(0,1), atunci spunem ca X
are o distributie normala standard.
Media si varianta acestei distributii sunt µ =v
si σ 2 = 2v .
Fapt. Daca variabila aleatoare X este Fapt. Daca variabila aleatoare X este N ( µ , σ )
2
este N(0,1). ∞
∫
t −1 − x
[1] Functia gamma este definita prin Γ (t ) = x e dx
unde t > 0. 0
Postulatele lui Golomb
n
si fie k = m . Se imparte secventa s in k
subsecvente, fiecare de lungime m si se
considera ni numarul aparitiilor celui de-al i-
lea tip de astfel de secventa, unde 1 ≤ i ≤
. 2 m
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 = x1 x2 x3 . . . atunci
y = y1 y2 y3 . . . = ek (x1 )ek (x2 )ek (x3 ) . . .
fluide(stream cyphers)
sincrone
asincrone
Preview Sisteme sincrone Sisteme asincrone
Definitie formala
Descrierea sistemului
m lungimea cuvantului cheie
P, C, K=Z26 , K= (Z26 )m
ez (x) = x + z(mod26), dz (y ) = y − z(mod26)
cheia z1 z2 . . . definita prin
ki dc 1 ≤ i ≤ m
zi =
zi−m dc i ≥ m + 1
Criptarea si decriptarea
Criptarea
Preview Sisteme sincrone Sisteme asincrone
Decriptarea: schematic
Decriptarea
Preview Sisteme sincrone Sisteme asincrone
Observatii
Criptare Decriptare
Preview Sisteme sincrone Sisteme asincrone
Criptarea Decriptarea
y1 = ez1 (x1 ) = x1 ⊕ z1 = 1 ⊕ 1 = 0 x1 = dz1 (y1 ) = y1 ⊕ z1 = 1 ⊕ 0 = 1
y2 = ez2 (x2 ) = x2 ⊕ z2 = 0 ⊕ 1 = 1 x2 = dz2 (y2 ) = y2 ⊕ z2 = 1 ⊕ 1 = 0
y3 = ez3 (x3 ) = x3 ⊕ z3 = 1 ⊕ 0 = 1 x3 = dz3 (y3 ) = y3 ⊕ z3 = 0 ⊕ 1 = 1
y4 = ez4 (x4 ) = x4 ⊕ z4 = 1 ⊕ 1 = 0 x4 = dz4 (y4 ) = y4 ⊕ z4 = 1 ⊕ 0 = 1
y5 = ez1 (x5 ) = x5 ⊕ z1 = 0 ⊕ 1 = 1 x5 = dz1 (y5 ) = y5 ⊕ z1 = 1 ⊕ 1 = 0
y6 = ez2 (x6 ) = x6 ⊕ z2 = 1 ⊕ 1 = 0 x6 = dz2 (y6 ) = y6 ⊕ z2 = 1 ⊕ 0 = 1
Se obtine astfel secventa de text cript Se obtine astfel secventa de text clar
y = 011010 x = 101101
Preview Sisteme sincrone Sisteme asincrone
Definitie formala
LFSR
- registrii lineari cu feedback
Criptarea cu auto-cheie
P = C = L= Z26
cheia fluida este data de z1 = k , zi = yi−1 , i ≥ 2
pentru z ∈ Z26 , definim
ez (x) = x + z(mod26)
dz (y ) = y − z(mod26)
Exercitiu Solutia
Pentru k = 11 Se va obtine textul criptatat
codificati/decodificati textul clar DSARLSSJNG.
SPIRU HARET
Preview Sisteme sincrone Sisteme asincrone
Modul criptare
y1 = ez1 (x1 ) = x1 + z1 (mod26) = 18 + 11(mod26) = 3 si z2 = y1 = 3
y2 = ez2 (x2 ) = x2 + z2 (mod26) = 15 + 3(mod26) = 18 si z3 = y2 = 18
y3 = ez3 (x3 ) = x3 + z3 (mod26) = 8 + 18(mod26) = 0 si z4 = y3 = 0
y4 = ez4 (x4 ) = x4 + z4 (mod26) = 17 + 0(mod26) = 17 si z5 = y4 = 17
y5 = ez5 (x5 ) = x5 + z5 (mod26) = 20 + 17(mod26) = 11 si z6 = y5 = 11
y6 = ez6 (x6 ) = x6 + z6 (mod26) = 7 + 11(mod26) = 18 si z7 = y6 = 18
y7 = ez7 (x7 ) = x7 + z7 (mod26) = 0 + 18(mod26) = 18 si z8 = y7 = 18
y8 = ez8 (x8 ) = x8 + z8 (mod26) = 17 + 18(mod26) = 9 si z9 = y8 = 9
y9 = ez9 (x9 ) = x9 + z9 (mod26) = 4 + 9(mod26) = 13 si z10 = y9 = 13
y10 = ez10 (x10 ) = x10 + z10 (mod26) = 19 + 13(mod26) = 6
Se obtine astfel textul criptat y = 3 18 0 17 11 18 18 9 13 6 si deci
codificarea DSARLSSJNG.
Observatii
Luciana Morogan
Facultatea de Matematica-Informatica
Universitatea Spiru Haret
Laborator
Laborator
Outline
Moduri de utilizare
Exercitiu
In particular
Criptati textul clar x = 1011000101001010 folosind cheia
1 2 3 4
π=
2 3 4 1
Laborator
Modul de utilizare CBC
Schematic - CBC
Criptare Decriptare
Laborator
Modul de utilizare CBC
Exercitiu
In particular
Criptati textul clar x = 1011000101001010 folosind cheia
1 2 3 4
π=
2 3 4 1
Exercitiu
Schematic - CFB
Criptare Decriptare
Laborator
Modul de utilizare CFB
Exercitiu
Luciana Morogan
Facultatea de Matematica-Informatica
Universitatea Spiru Haret
Laborator
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Outline
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
Alice (sau orice alta persoana) poate trimite lui Bob un mesaj
criptat cu ek , fara a intra in prealabil in contact, iar Bob este
singurul capabil sa descifreze textul, utilizand cheia sa secreta
de decriptare dk .
Sisteme de criptare cu cheie publica Sistemul RSA Sistemul El-Gamal Exercitii propuse
Generalitati
Generalitati
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)
Generalitati
Generalitati
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
Securitatea
Atacuri (1)
Securitatea
Securitatea
Atacuri (2)
Securitatea
Apare necesitatea:
autentificarii mesajului sau expeditorului - autentificarea::
procesul princare un calculator (program sau alt uilizator)
incearca sa confirme destinatarului ca mesajul primit de
acesta provine sau nu din partea sa
confidentialtatea:: asigura accesul la informatie doar
partilor autorizate
integritatea:: siguranta ca datele la care se refera un
utilizator pot fi accesate si modificate 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 6= q si n = pq
ϕ(n) = (p − 1)(q − 1) indicatorul lui Euler
fie P = C =Zn , definim
K= {(n, p, q, a, b)|n = pq, ab ≡ 1(modϕ(n))}
pentru k = (n, p, q, a, b), ∀x, y ∈ Zn avem
ek (x) = x b (mod n)
dk (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
Se bazeaza pe ipoteza ca ek (x) = x b (mod n) este
neinversabila d.p.d.v al complexitatii.
Pentru ca sistemul sa fie sigur, trebuie ca n sa fie suficient
de mare pentru ca factorizarea acestuia sa fie 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 aflarea cmmdc-ului si a
inversului intr-un inel Zn )
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
p - prim, α, β ∈ Zp , β 6= 0
a =?, a ∈ Zp−1 a.i. αa ≡ β (mod p)
a, dc exista, este unic si a = logα β
Obs! Pentru problema logaritmilor discreti nu este obligatoriu ca p sa fie
numar prim, important este ca α sa fie radacina primitiva de ordinul p − 1 a
unitatii (∀i, 0 < i < p − 1, αi 6≡ 1 (mod p))
Obs! Cum logritmul discret este dificil de calculat iar operatia inversa
(exponentierea) este simpla, trebuie utilizata problema logaritmului discret
dificila in Zp :
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 fie dificila in
Zp 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 ∈ Zp−1 aleator(secret) definim:
eK (x, k ) = (y1 , y2 ) unde
y1 = αk (mod p)
y2 = x · β k (mod p)
pt y1 , y2 ∈ Z∗p definim dK (y1 , y2 ) = y2 · (y1a )−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
Exercitii propuse
Sistemul RSA
Ex. 1 Ex. 2
Fie d exponentul de decriptare al Fie d = 11 exponentul de decriptare al
sistemului de criptare RSA construit sistemului de criptare RSA construit
cu numerele prime p = 3, q = 5. Daca cu numerele prime p = 7, q = 11.
exponentul de criptare este e = 7, Determinati exponentul de criptare e.
determinati d.
Ex. 3 Ex. 4
Consideram sistemul de criptare RSA Un utilizator al sistemului de criptare
construit cu numerele prime RSA are ca cheie publica
p = 3, q = 5. Daca exponentul de (n, e) = (35, 5) si cheia secreta d = 5.
criptare este e = 4 si se doreste Daca primeste textul criptat c = 3,
codificarea textului clar m = 11, atunci textul clar decodificat de
determinati textul criptat c. 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 codifica textul clar x = 11 si il transmite
lui Alice, atunci aceasta primeste codificarea...
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 decodifica si gaseste mesajul clar ...
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Luciana Morogan
Facultatea de Matematica-Informatica
Universitatea Spiru Haret
Laborator
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Outline
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
Protocoale de semnatura
Protocoale
Protocoale de semnatura
Definitie formala
Semnatura El-Gamal
Semnatura El-Gamal
Semnatura El-Gamal
Observatii
1
Definitie. Functia de dispersie h este cu coliziuni slabe daca fiind dat un
mesaj x, este calculabil dificil sa se gaseasca un mesaj x1 6= x a.i.
h(x1 ) = h(x)
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
2
Definitie. Functia de dispersie h este cu coliziuni tari daca este calculabil
dificil sa se obtina doua mesaje x1 , x2 , x1 6= x2 a.i. h(x1 ) = h(x2 )
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
3
Definitie. h este neinversabila daca fiind data o amprenta numerica z,
este calculabil dificil sa se gaseasca mesajul x a.i. h(x) = z.
Preview: Semnaturi electronice Protocoale de semnatura Functii de dispersie
Exemplu de exercitiu
Exercitiu
Exemplu de exercitiu
Solutie
(r , s) =?
r = 33 mod 15 ≡ 12 mod 15
s = (11 − 5 ∗ 12)3−1 mod 14 ≡ 7 mod 14
=⇒ (r , s) = (12, 7)
Probleme
Criptografie si securitate
Facultatea de Matematica-Informatica
Universitatea Spiru Haret
Outline
1 Probleme
Exercitiul 1
Exercitiul 2
Exercitiul 3
Exercitiul 4
Exercitiul 5
Exercitiul 6
Exercitiul 7
Exercitiul 8
Exercitiul 9
Exercitiul 10
Exercitiul 11
Problema A Problema B
Fie d exponentul de decriptare al Fie d = 11 exponentul de decriptare al
sistemului de criptare RSA construit sistemului de criptare RSA construit
cu numerele prime p = 3, q = 5. Daca cu numerele prime p = 7, q = 11.
exponentul de criptare este e = 7, Determinati exponentul de criptare e.
determinati d.
Problema C Problema D
Consideram sistemul de criptare RSA Un utilizator al sistemului de criptare
construit cu numerele prime RSA are ca cheie publica
p = 3, q = 5. Daca exponentul de (n, e) = (35, 5) si cheia secreta d = 5.
criptare este e = 4 si se doreste Daca primeste textul criptat c = 3,
codificarea textului clar m = 11, atunci textul clar decodificat de
determinati textul criptat c. utilizator este ...
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 codifica textul clar x = 11 si il
transmite lui Alice, atunci aceasta primeste codificarea...
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 decodifica si gaseste mesajul clar ...
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 qi. In timp ce efectuam
fiecare pas al algoritmului, vom calcula si un numar auxiliar, pi. Pentru primii 2 pasi stim deja valorile : p0 = 0 and p1 = 1. Pentru
restul pasilor vom calcula recursiv pi = pi-2 - pi-1 qi-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 pk+2. (Daca restul nu e 1, atunci x nu admite un invers.)
EXEMPLU:
PAS 3: 4/3 = 1 rest 1 => x admite invers p3 = 1 - 25( 1) mod 26 = -24 mod 26 = 2
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 c1 folosind cheia lui privata si c2 folosind αA a
lui Alice pe care-l obtine din cheia ei publica.
c1 = αB mod p ; c2 = m(αA)k mod p ; c = (c1,c2) - Trimite textul cifrat c = (c1,c2) la utilizatorul Alice.
Decriptare : Pentru a determina textul clar m din textul cifrat c, utilizatorul Alice execută următoarele:
1. Utilizează cheia sa privată a pentru a calcula: f = c1p-1-A (mod p).
2. Determină textul clar m astfel: m = f*c2 (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 p0=0
7/1 = 7 rest 0 p1=1
p2=0 – 1*1 (mod 8) = -1 (mod 8) = 7
d=7
El-Gamal 3): p=11; α=2; csA=3; csB=4; A primeste de la B (y1,y2)=(5,3); txt. Clar x =?
z = y1p-1-A (mod p) = 511-1-3 (mod 11) = 57 (mod 11) = 3
x = z * y2 (mod p) = 3 * 3 (mod 11) = 9
El-Gamal 4): p=11; α=2; csA=4; csB=7; (y1,y2) = (3,7); txt clar x=?
Daca (y1,y2) = (3,7) este primit de B de la A, atunci:
f = y1p-1-B (mod p) = 311-1-7 (mod 11) = 33 (mod 11) = 5
x = f * y2 (mod p) = 5 * 7 (mod 11) = 2
Daca (y1,y2) = (3,7) este primit de A de la B, atunci:
f = y1p-1-A (mod p) = 311-1-4 (mod 11) = 36 (mod 11) = 3
x = f * y2 (mod p) = 3 * 7 (mod 11) = 10
Prelegerea 1
1
2 PRELEGEREA 1. NOŢIUNI DE BAZĂ ALE CRIPTOGRAFIEI
de criptare. În unele lucrări, cadrul general de lucru este numit criptologie, termenul de
criptografie desemnând numai operaţia de cifrare şi descifrare legală.
Situaţia generală de care se ocupă criptografia este următoarea:
Expeditor - Destinatar
6
Criptanalist
Expeditorul (personalizat ı̂n majoritatea lucrărilor cu apelativul Alice) doreşte să trimită
destinatarului (numit Bob) un mesaj printr-un canal de comunicaţie, canal cu un grad
ridicat de nesiguranţă2 . Această insecuritate o prezintă un adversar criptanalist (Oscar)
care doreşte – din diverse motive – să cunoască şi – eventual – să modifice conţinutul
mesajului, deşi acesta nu ı̂i este destinat.
Această confidenţialitate solicitată de Alice şi Bob se rezolvă de obicei prin transfor-
marea mesajului ı̂n aşa fel ı̂ncât el să nu poată fi ı̂nţeles de nici o persoană care l-ar putea
intercepta. Transformarea respectivă se numeşte criptare.
În general, hackerul Oscar poate avea două tipuri de comportament:
• Pasiv: el se mulţumeşte să intercepteze mesajele şi să le citească, folosindu-le ı̂n
scop personal;
• Activ: doreşte să modifice mesajele, să le schimbe ordinea sau să introducă propriile
sale mesaje, ı̂n intenţia de a fi acceptat de Bob drept Alice. În acest caz, mesajul va
trebui să verifice – ı̂nafară de condiţia de confidenţialitate – şi pe cea de autenticitate:
Bob trebuie să fie sigur că mesajul primit a fost de la Alice.
În unele cazuri, problema se poate complica prin faptul că există anumite mesaje pe
care Alice neagă că ı̂i aparţin, deşi le-a trimis chiar ea. În acest caz trebuie prevăzute
anumite protocoale care să ı̂ntărească proprietăţile de autentificare; proprietăţi care
să o silească pe Alice să ı̂şi recunoască propriile mesaje (non-repudiere).
În toate aceste scenarii nu există personaje pozitive sau negative. Orice serviciu de
criptare/decriptare are şi o secţie de criptanaliză. Se pot da numeroase exemple din
istorie care să arate rolul pozitiv al lui Oscar ı̂n anumite situaţii. În 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 şi – de aceea
– extrem de rare.
2
Canalul de comunicaţie poate suferi şi perturbări de ordin fizic: zgomote, ştergeri, demodulări etc;
studiul detectării şi corectării erorilor de de transmitere a informaţiei constituie tema altui domeniu,
numit Teoria Codurilor.
1.1. DEFINIŢII ŞI NOTAŢII PRELIMINARE 3
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 corespondenţa sa.
Să considerăm alfabetul latin scris, ı̂n ordine
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Fie k un număr ı̂ntreg din intervalul [0, 25]. El se va numi ”cheie de criptare”. Re-
scriem alfabetul latin permutat ciclic, ı̂ncepând ı̂nsă cu litera având numărul de ordine
k (litera A are numărul de ordine 0). Această nouă scriere o aşezăm sub prima scriere,
astfel (am presupus k = 2):
ABCDEFGHIJKLMNOPQRSTUVWXYZ
CDEFGHIJKLMNOPQRSTUVWXYZAB
Dacă Alice are un text clar pe care vrea să-l cripteze cu sistemul Cezar, ea va proceda
astfel:
Să presupunem că acest text clar este NIMIC NOU. Alice va aşeza sub fiecare literă a
acestui text, litera aflată pe linia a doua din tabelul de sus, astfel:
NIMICNOU
PKOKEPQW
Textul criptat obţinut este P KOKEP QW (din motive suplimentare de securitate,
spaţiile dintre cuvinte se ignoră de obicei).
La primirea textului, Bob – care ştie că este vorba de sistemul de criptare Cezar –
va proceda astfel: el cunoaşte (fiind destinatar legal) cheia de criptare ek . Cheia sa de
decriptare este e26−k . Pe baza ei Bob va putea construi cele doua linii ale tabelului, după
care va proceda ca Alice: scrie textul criptat pe prima linie, iar pe a doua linie determină
literele corespunzătoare, conform tabelului.
În cazul k = 2, Bob va folosi drept cheie numărul e26−2 = e24 , iar tabelul (litera 24
corespunde lui Y) este
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YZABCDEFGHIJKLMNOPQRSTUVWX
Literele P KOKEP QW determină pe a doua linie textul N IM ICN OU .
4
Aceasta este prima din cele cinci probleme ale mileniului, pentru rezolvarea cărora se acordă premii
de câte un milion dolari.
1.1. DEFINIŢII ŞI NOTAŢII PRELIMINARE 5
Să rescriem sistemul Cezar ı̂n termenii Definiţiei 1.2. Deoarece textele clare şi cele
criptate folosesc alfabetul latin, vom efectua ı̂n prima etapă o operaţie de ”codificare”:
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
În acest fel putem opera matematic pe un inel finit foarte simplu: Z26 . Vom avea
P = C = K= Z26 . Pentru un K ∈ K ales arbitrar,
şi
dK (α) = α − K (mod 26)
Definiţia 1.3 Procesul de determinare a unei chei K folosind un text criptat α (asociat
eventual cu alte informaţii auxiliare) se numeşte ”criptanaliză”.
Deci decriptarea şi criptanaliza au ı̂n final acelaşi scop: aflarea textului clar. Diferenţa
constă ı̂n faptul că ı̂n criptanaliză el trebuie aflat fără a şti cheia de decriptare. Există o
”regulă de aur” a creatorilor de sisteme de criptare:
Nu subestimaţi niciodată pe criptanalist.
care s-a verificat din punct de vedere istoric pentru toate sistemele create până ı̂n
prezent: acestea sau au fost sparte sau trebuie să se revizuiască periodic pentru a rezista
atacurilor permanente ale intruşilor.
Să studiem puţin poziţia unui criptanalist (Oscar). Se presupune ı̂ntotdeauna că el
are la dispoziţie facilităţi de calcul excelente, adesea superioare celor de care dispun cei
doi parteneri Alice şi Bob.
Mai mult, se poate considera că Oscar cunoaşte sistemul de criptare. S-a constatat
că – practic – acest lucru se ı̂ntâmplă totdeauna. Ce nu cunoaşte ı̂nsă criptanalistul este
cheia K ∈ K.
Cel mai simplu atac constă ı̂n parcurgerea tuturor cheilor posibile şi verificarea textului
criptat, până se găseşte cheia corectă. Este atacul prin forţă brută şi el reuşeşte totdeauna,
pentru că există ı̂ntotdeauna o cheie ı̂n K, care a folosit la criptare. Deci, ı̂n cazul când
numărul cheilor posibile este mic (ı̂n Exemplul 1.1 sunt numai 26 chei), această cheie se
poate afla foarte uşor după un număr finit de ı̂ncercări. De aceea sunt folosite obligatoriu
sisteme de criptare cu card(K) foarte mare. Pentru o cheie care ocupă n biţi sunt necesare
ı̂n general 2n căutări (dacă nu există nici o informaţie suplimentară). O extindere a
lungimii cheii la n + 1 biţi dublează deci spaţiul de căutare. În momentul de faţă, tehnica
de calcul oferă atacuri prin forţă brută eficiente pentru cheile de lungimi mai mici de 128
6 PRELEGEREA 1. NOŢIUNI DE BAZĂ ALE CRIPTOGRAFIEI
biţi; aşa că sistemele de criptare actuale folosesc ı̂n general chei de 1024 biţi sau chiar mai
mult5 .
În general, un criptanalist este pus ı̂n faţa următoarelor situaţii, care ı̂i solicită strategii
diverse de urmat:
1. Ştie numai textul criptat w; ı̂n acest caz atacurile sunt direct legate de lungimea
textului.
În sisteme simple – cum este Cezar – sunt suficiente texte scurte, pentru că o
singură potrivire produce textul - clar. Pentru sistemele mai evoluate, este necesară
o lungime mai mare a textului criptat. Metodele de criptanaliză folosesc diverse
conjecturi şi informaţii statistice relative la alfabetul textului - clar, la frecvenţa
apariţiei caracterelor etc.
2. Ştie cel puţin o pereche de caractere (text clar, text criptat); din cunoaşterea câtorva
perechi (x, eK (x)) cu x ∈ V criptanalistul va ı̂ncearca să decripteze ı̂ntregul text
criptat interceptat.
Exemplul 1.2 La sistemul de criptare Cezar, o singură pereche (a, eK (a)), dezvăluie
imediat cheia şi – implicit duce la decriptare.
Exemplul 1.3 Aceasta a fost situaţia ı̂n care s-a aflat orientalistul francez Cham-
pollion când a descifrat hieroglifele,folosind piatra de la Rosetta (vezi [6]).
3. Criptanalistul cunoaşte criptarea unor texte clare selectate de el; este atacul cu text
clar ales, considerat ı̂n majoritatea studiilor de criptanaliză. Această situaţie este
adesea superioară celei din cazul precedent; să exemplificăm acest lucru.
Exemplul 1.4 Fie sistemul de criptare Hill, creat ı̂n 1929 de Lester Hill. Fie d ≥ 2
un număr ı̂ntreg fixat. Se definesc
P= C= (Z26 )d , K= {M | M ∈ Md (Z26 ), det(M ) 6= 0}.
Deci o cheie de criptare este o matrice M pătrată nesingulară de dimensiune d, cu
elemente din Z26 , iar M −1 formează cheia de decriptare.
Textul clar w se ı̂mparte ı̂n blocuri de lungime d : w = α1 α2 . . . αn , |αi | = d
(ultimul bloc se completează eventual până ajunge la lungimea d). Textul criptat va
fi x = β1 β2 . . . βn unde βi = eM (αi ) = αi · M (mod 26), (1 ≤ i ≤ n).
Pentru decriptare se foloseşte relaţia dM (βi ) = βi · M −1 (mod 26).
! !
3 3 −1 15 17
Să luăm de exemplu d = 2 şi cheia M = , cu inversa M = .
2 5 20 9
5
O excepţie o constituie sistemele bazate pe curbe eliptice, datorită aparatului matematic special.
1.1. DEFINIŢII ŞI NOTAŢII PRELIMINARE 7
4. Ştie cheia de criptare; acum Oscar va cunoaşte cheia eK şi ı̂ncearcă să determine dK
ı̂nainte de interceptarea mesajelor criptate.
Aceasta este situaţia tipică sistemelor de criptare cu cheie publică: cheia de criptare
eK este cunoscută public cu mult ı̂nainte de a fi folosită pentru criptare. Deci
criptanalistul are la dispoziţie destul de mult timp pentru prelucrarea ei şi orice
clarificare ı̂n perioada când timpul este ”ieftin” are o valoare deosebită; după ce se
primesc mesaje criptate, timpul devine scump, şi el trebuie să fie scurtat cât mai
mult.
8 PRELEGEREA 1. NOŢIUNI DE BAZĂ ALE CRIPTOGRAFIEI
Exemplul 1.5 În Exemplul 1.1, la sistemul Cezar dK = e26−K este cheia de decriptare
pentru cheia de criptare eK .
Sistemele de criptare simetrice se ı̂mpart ı̂n două clase mari: cifruri de permutare şi cifruri
cu substituţie.
Exemplul 1.7 Un sistem celebru de criptare cu permutări este sistemul Richelieu, prezen-
tat şi ı̂n literatură de Jules Verne, ı̂n romanul Mathias Sandorf. Dăm un exemplu de
utilizare a unui astfel de sistem.
Fie cartonul 6 × 6, ı̂n care zonele haşurate constituie găuri.
E M I N S E
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
Aplicând cartonul peste acest text, vor rămâne vizibile 9 caractere: MNS TA AN (citite
de la stânga la dreapta şi de sus ı̂n jos).
Vom roti acum cartonul cu 90o ı̂n sensul acelor de ceasornic. El va arăta
Aşezând acum peste text, rămân vizibile caracterele F MPTNIL (primul caracter a fost
un spaţiu şi l-am marcat cu pentru a-l face vizibil).
La a treia rotire a cartonului se obţine similar textul ICSUEETOA, iar la a patra –
EEUAOURO
Deci textul criptat este
MNS TA AN F MPTNILICSUEETOAEEUAOURO
Operaţia de decriptare se realizează similar.
Definiţia 1.4 Fie n un număr natural nenul. Un cifru de permutare este un sistem
(P, C, K, E, D) unde P= C= (Z26 )n , K= Pn (mulţimea permutărilor de n elemente).
Pentru o cheie (permutare) π
!
1 2 3
Exemplul 1.8 Să reluăm Exemplul 1.6. Permutării ı̂i corespunde matricea
2 1 3
0 1 0
de permutare 1 0 0 .
0 0 1
Operaţia de criptare este imediată. De exemplu, criptarea textului F LO este
0 1 0
(5 11 14) · 1 0 0
= (11 5 14)
0 0 1
adică LF O.
1.3 Exerciţii
1.1 Textul clar NUMAR este criptat ı̂n ”Orice vânt nu bate seara”. Să se descrie sistemul
de criptare.
1.2 Folosind atacul prin forţă brută, decriptaţi mesajul WYPTBSJBYZ criptat cu un
sistem Cezar.
1.4 Fie p un număr prim. Arătăţi că numărul matricilor 2 × 2 inversabile peste Zp este
(p2 − 1)(p2 − p).
1.6 Să se cripteze textul clar INAINTE SI LA DREAPTA folosind sistemul de xriptare
Hill cu matricea
17 17 5 11 2 19
M = 21 18 21 sau M = 5 23 25
2 2 19 20 7 1
1.9 Demonstraţi că ı̂ntr-un cifru de permutare, π este o auto-cheie dacă şi numai dacă
[2] D. Stinton, Cryptography, Theory and Practice, Chapman & Hall/CRC, 2002
13
Prelegerea 2
Cifruri de substituţie
Cifrurile de substituţie sunt cele mai utilizate sisteme de criptare simetrice; ele se ı̂ntâlnesc
şi azi, exemple fiind sistemele DES şi AES.
Un astfel de cifru constă ı̂n ı̂nlocuirea fiecărui caracter din V cu alt caracter (din W ).
Există două clase mari de cifruri de substituţie: sisteme monoalfabetice şi polialfabetice.
1
2 PRELEGEREA 2. CIFRURI DE SUBSTITUŢIE
Se consideră un cuvânt (cheie), preferabil cu toate caracterele distincte (ı̂n caz contrar,
literele identice se folosesc doar la prima apariţie). Acest cuvânt se aşează la ı̂nceputul al-
fabetului. După ce se termină, şirul de completează cu literele care nu existau ı̂n cuvântul
cheie, ı̂n ordine alfabetică.
De exemplu, să presupunem că s-a ales cuvântul cheie M ART OR. 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 rând, iar pentru criptare
– caracterele corespondente de pe rândul al doilea. Astfel, STUDENT se criptează ı̂n
QSUTOJS, ARGINT ı̂n MPCEJS etc.
Sistemul Cezar cu cheie rezistă mai bine la atacul cu forţă brută, numărul cheilor fiind
acum card(P26 = 26!.
Condiţia ca a să fie prim cu 26 asigură existenţa lui a−1 ı̂n Z26 .
De exemplu, pentru a = 3, b = 5 funcţia de criptare este eK (x) = 3x + 5, care poate
fi reprezentată 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
În operaţia de criptare, fiecare caracter a va fi reprezentat printr-o pereche (x, y) (x, y ∈
{A, B, C, D, E}) care dau linia respectiv coloana pe care se află a.
Astfel, textul clar MERGEM ACASA este criptat ı̂n
CCAEDCBBAECCAAACAADDAA.
Deci sistemul de criptare Polybios este o substituţie monoalfabetică cu alfabetul W =
{AA, AB, AC, . . . , EE} de 25 caractere.
Sunt diverse variante ale sistemului Polybios. Astfel, dacă se folosesc drept coordonate
cifrele 1, 2, 3, 4, 5 ı̂n loc de A, B, C, D, E, sistemul a fost folosit ı̂n penitenciarele ruseşti3
şi de către prizonierii americani din Vietnam. Este foarte simplu de ı̂nvăţat şi poate fi
aplicat folosind diverse semne drept coordonate (cifre, puncte, figuri, bătăi de tobă etc).
A fost utilizat de asemenea ı̂n cadrul altor sisteme de criptare, cum ar fi sistemul nihilist,
cifrul ADFGVX (utilizat de armata germană ı̂n primul război mondial) sau sistemul Bifid,
inventat de Dellastell ı̂n 1901 (pentru detalii, se vedea [6]).
A: B: C: J. K. L. S T U
D: E: F : M. N. O. V W X
G: H: I: P. Q. R. Y Z
2
În limba engleză litera eliminată 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 SUBSTITUŢIE
Liniile care ı̂ncadrează fiecare caracter (inclusiv spaţiul), ı̂mpreună cu punctele (două, unul
sau zero) indică substituţia caracterului respectiv. Astfel, textul clar DUPA DOUAZECI
DE ANI se criptează ı̂n
: . : : . : : : : : : : . :
Exemplul 2.1 Să considerăm că s-a interceptat următorul text, criptat cu un sistem
monoalfabetic (nu se ştie 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
În prima etapă, vom număra de câte ori apare ı̂n text fiecare caracter. se obţine tabelul
Caracter c k x b s q g p m l e p a v b n o f z
Frecvenţă 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 şi k. Pe de-altă parte, cele mai frecvente
caractere din limba română sunt a, i şi e (textul nu este destul de mare pentru a putea
face o distincţie netă). În mod cert, a ∈ {c, k}. Sunt patru opţiuni posibile, din care trei
se elimină rapid. Rămâne 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
Cuvântul ExA de pe primul rând are caracterul din mijloc (x) de frecvenţă ridicată (27
apariţii); deci el trebuie să corespundă unei litere frecvente din limba română şi – ı̂n plus –
să aibă semnificaţie semantică. Concluzie: acest cuvânt este ERA. Deci x ←− R. Facem
substituţia sı̂ se obţine textul
În acest text, cuvântul REtREnEpbAq are corespondent ı̂n limba română numai pe
REP REZEN T A{I, M, U }. De aici se obţin decriptările t ←− P, n ←− Z, p ←− N şi
b ←− T (pentru ultimul caracter - q, nu facem deocamdată nici o opţiune). Noul text va
fi
Pentru alte aplicaţii, oferim tabelele de frecvenţă a literelor pentru principalele limbi
europene4 (am reţinut din fiecare limba numai cele mai frecvente nouă litere):
Există o situaţie ipotetică ı̂n care criptanaliza unui sistem monoalfabetic este imposibilă:
atunci când P= V ∗ şi nu dispunem de nici o altă informaţie (decât eventual sistemul de
criptare). Acest caz corespunde ı̂nsă unei codificări; adevărata criptare a avut loc atunci
când mesajele inteligibile au fost translatate ı̂n cuvinte din V ∗ .
4
Datele statistice pentru toate tabelele – inclusiv limba română – sunt din anul 1994.
2.2. SISTEME DE CRIPTARE POLIALFABETICE 7
1. H(a) ∩ H(b) = ∅ ⇐⇒ a 6= b;
2. Dacă a apare mai frecvent ı̂n textele clare, atunci card((H(a)) ≥ card(H(b)).
Criptarea unui caracter a ∈ P se face cu un element ales aleator din H(a). Pentru
decriptarea lui y ∈ C se caută o mulţime H(a) astfel ca y ∈ H(a).
Exemplul 2.2 Să considerăm P= {a, b} şi H(a) = {001, 010}, H(b) = {000, 011, 101,
111}. Pentru criptarea textului ab se poate folosi oricare din secvenţele
001000, 001011, 001101, 001111, 010000, 010011, 010101, 010111.
Sistemul homofonic este mult mai rezistent la un atac doar pe baza textului criptat, dar
cedează uşor la un atac cu text clar ales.
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 atât cheia de criptare cât şi cea de decriptare.
Regulile de criptare/de-criptare sunt:
• Textul clar este separat ı̂n blocuri de câte două caractere (ignorând spaţiile). Condi-
ţia este ca nici un bloc să nu conţină aceiaşi literă, iar textul să fie de lungime pară.
Aceste deziderate se realizează uşor modificând puţin textul clar (se introduce o
literă de frecvenţă mică ı̂ntre cele două litere egale, respectiv ca ultim caracter).
• Fiecare bloc se criptează astfel: dacă cele două litere nu sunt plasate ı̂n tabel pe
aceiaşi linie sau coloană (de exemplu A şi E), se cercetează colţurile dreptunghiului
determinat de cele două litere (ı̂n cazul nostru A, F, O, E). Perechea AE este crip-
tată ı̂n F O. Ordinea este determinată de ordinea liniilor pe care se află literele din
textul clar. Astfel, EA se criptează ı̂n OF , SF ı̂n ZB etc.
Dacă cele două litere se găsesc pe aceaşi linie (coloană), se merge ciclic cu o poziţie
la dreapta (respectiv jos). Deci CA se criptează ı̂n AX, W X ı̂n U G, CA ı̂n AX
etc.
De exemplu, textul clar AFARA PLOUA se criptează ı̂n XHHPPDPEPX. Se observă că
cele patru apariţii ale caracterului A au fost criptate cu X, H, P şi din nou X.
O permutare ciclică a liniilor şi coloanelor tabloului nu modifică criptarea. De exemplu,
pătratul
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
obţinut prin deplasarea cu două poziţii spre stânga şi o poziţie ı̂n sus, este echivalent cu
cel iniţial (ambele asigură aceeăsi cheie de criptare).
Regulile de bază pot fi modificate sau completate după necesităţi. Astfel, se poate
adăuga din loc ı̂n loc câte o literă falsă (cu frecvenţă foarte redusă, cum ar fi X, Y ) care
să modifice textul criptat. Pătratul 5 × 5 poate fi ı̂nlocuit cu un dreptunghi 4 × 6 sau
3 × 8, cu schimbările corespunzătoare ı̂n alegerea literelor care se elimină.
Pentru a păstra cheia ı̂n siguranţă, se recomandă memorarea acesteia. Cum o astfel
de cheie este extrem de greu de memorat, se foloseşte un cuvânt cheie sau o propoziţie cu
toate literele distincte. Acesta cuvânt este scris la ı̂nceputul tabloului. Spaţiile rămase
sunt completate cu restul literelor alfabetului, scrise ı̂n ordinea apariţiei lor5 .
5
În definiţia iniţială a sistemului, Wheatstone pleca de la cuvântul Holmes.
2.2. SISTEME DE CRIPTARE POLIALFABETICE 9
Astfel, ı̂n preajma primului război mondial, armata română folosea un dreptunghi
3 × 8 din care lipseau literele Q şi K. Cuvântul cheie era ROM AN ESC. 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 şi sistemul anterior, Palyfair rezistă la atacuri bazate pe frecvenţa apariţiei, dar
nu şi la cele prin text clar ales.
Implementări actuale folosesc reprezentarea binară a literelor şi fac un pas suplimentar:
după ce s-a obţinut o pereche criptată, aceasta se combină printr-un XOR (adunare
modulo 2) cu perechea criptată anterior.
Prezentarea sistemului
Considerăm – ca şi la sistemele anterioare – cele 26 litere ale alfabetului, numerotate de
la 0 (pentru A) până 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
+
Definim P = C= Z26 , K= Z26 .
O cheie K ∈ K este un cuvânt având codificarea numerică k0 k1 . . . kp−1 .
Fie a = a0 a1 . . . an codificarea textului clar care trebuie transmis. Textul criptat va fi
eK (a) = x = x0 x1 . . . xn , unde
xi = ai + ki (mod p) (mod 26) (∗)
Exemplul 2.3 Să considerăm cuvântul cheie F OCAR; deci p = 5 şi K = 5 14 2 0 17.
Dacă vrem să criptăm cu această cheie textul clar NU POT VENI AZI, vom proceda
astfel:
Codificarea textului este a = 13 20 15 14 19 21 4 13 8 0 25 8.
Sub fiecare număr din a se aşează câte un număr din K; când cheia se termină, ea
se reia ciclic, până se termină a. Deci vom avea
6
Sursa [7] indică drept real inventator al sistemului pe Giovan Batista Belaso ı̂n 1553.
10 PRELEGEREA 2. CIFRURI DE SUBSTITUŢ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 conţine suma modulo 26 a numerelor de pe primele două linii, iar pe ultima
linie s-a scris textul criptat rezultat.
Decriptarea se realizează similar, scăzând (modulo 26) din codul caracterului criptat,
codul caracterului corespunzător din cheie.
O variantă a sistemul Vigenere este sistemul Beaufort (amiral englez, autorul şi a unei
scale a vânturilor care ı̂i poartă numele); aici relaţia de criptare (∗) este ı̂nlocuită cu
Avantajul sistemului Beaufort constă ı̂n faptul că ecuaţia de criptare se aplică şi la
decriptare (ai = ki (mod p) − xi ).
Altă variantă este sistemul Autoclave, atribuit matematicianului Cardano (autorul
formulelor de rezolvare pentru ecuaţiile de gradul 3 şi 4). Aici cheia se foloseşte o singură
dată, la ı̂nceput, după care este utilizat drept cheie textul clar.
Exemplul 2.4 Să luăm cuvântul cheie COV OR şi textul clar A VENIT TOAMNA.
Putem aranja sistemul de criptare sub forma unui tabel (s-au trecut doar caracterele, nu
şi codificările 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 rândul, fiind considerat ca fiind unul din
cele mai sigure sisteme de criptare. În 1917 de exemplu, prestigioasa revistă ”Scientific
American” ı̂l considera imposibil de atacat. Numai că acest sistem a fost spart de Kasiski
ı̂ncă din 1863 (şi independent de Babbage ı̂n 1854).
x0 xp x2p . . .
x1 xp+1 x2p+1 . . .
..
.
xp−1 x2p−1 x3p−1 ...
Elementele de pe prima linie au fost criptate după formula
adică cu un sistem Cezar (k0 fiind o valoare fixată din Z26 ). În mod similar şi celelalte
linii.
Deci, dacă s-ar cunoaşte lungimea p a cheii, problema s-ar reduce la criptanaliza a p
texte criptate cu Cezar – sistem de criptare monoalfabetic.
Sunt cunoscute două metode pentru aflarea lungimii cheii: testul lui Kasiski şi indexul
de coincidenţe.
Prima metodă constă ı̂n studiul textului criptat şi aflarea de perechi de segmente de
cel puţin 3 caractere (această lungime este propusă de Kasiski) identice. Pentru fiecare
astfel de pereche, se determină distanţa dintre segmente.
După ce s-au găsit mai multe astfel de distanţe, valoarea lui p va fi cel mai mare divizor
comun al lor (sau – eventual un divizor al acestuia).
Exemplul 2.5 Oscar interceptează următorul text criptat, despre care bănuie că 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) şi nu se mai ştie nici un text trimis anterior.
Folosind metoda Kasiski, Oscar găseşte secvenţa QLN CJ care apare pe rândul al doilea.
Distanţa dintre cele două apariţii este 27. De asemenea, apar două cuvinte foarte asemă-
nătoare: AQLN şi AOLN , având ı̂ntre ele distanţa 57.
Deci putem bănui că avem de-a face cu un cuvânt cheie de lungime cmmdc(27, 57) = 3.
Rescriem textul pe coloane, fiecare coloană având 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
În limba română, primele litere ca frecvenţă sunt A−E −I, aflate la distanţă egală una
de alta. Deci vom căuta pe fiecare linie tripletele de litere situate pe poziţiile (k, k+4, k+8)
având frecvenţă semnificativ de mare (maximă ı̂n cazul unui text lung). Pentru linia 3,
alegerea este simplă: ea este chiar A − E − I (16 apariţii din 49 posibile), deci o deplasare
0 ı̂n codul Cezar.
Pentru prima linie, sunt două posibilităţi: O − S − W (deplasare 14) sau S − W − A
(deplasare 18), ambele cu câte 18 apariţii.
12 PRELEGEREA 2. CIFRURI DE SUBSTITUŢIE
Tot două variante apar şi pentru a doua linie: C − G − K (deplasare 2) cu 10 apariţii,
sau R − V − Z (deplasare 14) cu 13 apariţii.
Deplasările dau exact codificările cheii. Deci trebuie luate ı̂n considerare patru vari-
ante de cuvânt cheie: OCA, ORA, SCA sau SRA. Cum de obicei cuvântul cheie are
o semnificaţie semantică (pentru a putea fi reţinut mental uşor), putem presupune că el
este OCA sau ORA.
O simplă verificare reţine drept cuvânt cheie ORA, care conduce la decriptarea corectă
a textului (spaţiile şi semnele de punctuaţie se pun corespunzător):
PELANGAPLOPIIFARASOTADESEAAMTRECUTMACUNOSTEAUVECINIITOTITUNUMAICUNOSCUT
ACEASTAESTEPRIMASTROFAAUNEINPOEZIICELEBREDEMIHAIEMINESCU
A doua metodă de aflare a lungimii cheii de criptare ı̂ntr-un sistem Vigenere se bazează
pe un concept definit ı̂n 1920 de Wolfe Friedman ı̂n 1920: indexul de coincidenţe ([4]).
Definiţia 2.1 Dacă x = x1 x2 . . . xn este o secvenţăe n caractere alfabetice, se numeşte
”index de coincidenţe” al lui x probabilitatea ca două caractere din x, alese aleator, să fie
identice. Această valoare se notează Ic (x).
Să notăm cu fi frecvenţa de apariţie ı̂n x a caracterului literal codificat i (0 ≤ i ≤ 25).
Două litere din x pot fi alese ı̂n Cn2 moduri. Din acestea, sunt Cf2i moduri ca ambele să
aibă aceiaşi codificare i (0 ≤ i ≤ 25). De aici se poate deduce formula
25 25
Cf2i
X X
fi (fi − 1)
i=0 i=0
Ic (x) = =
Cn2 n(n − 1)
Să presupunem că x este un text ı̂n limba română. Din tabelul frecvenţelor de apariţie ale
literelor, notând pi probabilitatea de apariţie a caracterului codificat cu i (0 ≤ i ≤ 25),
valoarea pe care o putem estima pentru indxul de coincidenţe este
25
p2i = 0, 0788
X
Ic (x) ≈
i=0
Motivaţie: Probabilitatea ca două elemente aleatoare să fie ambele egale cu caracterul de
cod i este p2i (0 ≤ i ≤ 25). Afirmaţia este valabilă pentru orice criptare cu un sistem
monoalfabetic.
Să presupunem acum că am aranjat textul criptat x = x0 x1 . . . xn−1 ı̂ntr-o matrice cu
p linii şi dn/pe coloane (unde p este un număr ı̂ntreg pozitiv arbitrar), astfel
x0 = x0 xp x2p . . .
x1 = x1 xp+1 x2p+1 . . .
..
.
xp−1 = xp−1 x2p−1 x3p−1 ...
2.3. EXERCIŢII 13
Dacă p este chiar lungimea cheii, atunci fiecare valoare Ic (xi ) trebuie să fie apropiată de
0, 0788. În caz contrar, şirul xi va arăta mult mai aleator, fiind obţinut prin amestecul
unei secvenţe de caractere criptate cu chei diferite. Pentru o secvenţă complet aleatoare,
valoarea indexului de coincidenţe este
2
1 1
Ic ≈ 26 = = 0, 0384
26 26
Valorile 0, 0788 şi 0, 0384 vor constitui punctele de extrem pe care le poate lua Ic . Vom lua
deci diverse valori pentru p, până vom găsi una care să se apropie cât mai mult de 0, 788
şi nu de 0, 384. Aceea poate fi considerată – cu suficientă siguranţă – că este lungimea
cheii.
În etapa a doua, vom ı̂ncerca să aflăm efectiv cheia K = k0 k1 . . . kp−1 .
Dacă notăm n1 = bn/pc lungimea secvenţei xi , atunci distribuţia de probabilitate ale
celor 26 litere ı̂n xi este
f0 f1 f25
, ,...,
n1 n1 n1
Secvenţa xi a fost obţinută printr-o criptare Cezar cu o deplasare ki . Deci, situaţia ideală
este când distribuţia de probabilitate a deplasării
fki fki +1 (mod 26) fk +25 (mod 26)
, ,..., i
n1 n1 n1
este cât mai apropiată de distribuţia de probabilitate p0 , p1 , . . . , p25 a limbii române.
Fie un ı̂ntreg m (0 ≤ m ≤ 25); definim expresia
25
X pi · fi+m
Fm =
i=0 n1
25
p2i = 0, 0788.
X
Dacă m = kj (0 ≤ j ≤ p − 1), ne putem aştepta ca Fm ≈
i=0
Dacă m 6= kj , atunci Fm va fi semnificativ mai mic decât această valoare. Deci, după
cel mult 25 ı̂ncercări, se poate afla deplasarea kj şi deci a j-a literă din cheie.
2.3 Exerciţii
2.1 Demonstraţi că funcţia de criptare afină eK (x) = ax+b (mod 26) este injectivă dacă
şi numai dacă cmmdc(a, 26) = 1.
2.2 Textul clar este scris peste alfabetul V = {a, b, c, d}. Se foloseşte un sistem de
criptare monoalfabetic dat de regulile a −→ bb, b −→ aab, c −→ bab, d −→ a. Să se
arate că funcţia de criptare este injectivă.
Dar pentru: a −→ ab, b −→ ba, c −→ a, d −→ c ?
14 PRELEGEREA 2. CIFRURI DE SUBSTITUŢIE
2.3 Se definesc două sisteme de criptare cu P= {a, b}, C= {c, d} şi regulile
a −→ ccd, b −→ c pentru primul sistem,
a −→ c, b −→ dcc la al doilea sistem.
Ce cuvinte sunt criptate la fel ı̂n cele două sisteme ?
2.5 În sistemele de criptare simple, orice cheie de criptare poate fi reprezentată ca o
compunere de câteva chei generatoare. La sistemul Cezar, o astfel de cheie este e1 . Arătaţi
că la sistemul afin sunt necesare cel putı̂n două chei generatoare.
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
2.7 O variantă a sistemului AUTOCLAVE este utilizarea textului criptat (ı̂n loc de text
clar) după prima aplicare a cheii. La care din cele două variante de AUTOCLAVE este
criptanaliza mai uşoară ?
2.8 Câte chei are un sistem de criptare afin ı̂n care card(V ) = 30, 100 sau 1225 ?
2.9 Să presupunem că K = (5, 21) este o cheie ı̂ntr-un sistem de criptare afin peste Z29 .
(a) Exprimaţi funcţia de decriptare sub forma dK (y) = ay + b unde a, b ∈ Z29 ;
(b) Arătaţi că eK (dK (x)) = x, ∀x ∈ Z29 .
2.10 Fie K = (a, b) o cheie ı̂ntr-un sistem afin peste Zn . Arătaţi că K este auto-cheie
dacă şi numai dacă a−1 ≡ a (mod n) şi b · (a + 1) ≡ 0 (mod n).
Aflaţi toate auto-cheile dintr-un sistem afin peste Z15 .
Să presupunem că n = pq unde p şi q sunt numere prime distincte. Arătaţi că numărul
auto-cheilor din sistemul afin peste Zn este n + p + q + 1.
Bibliografie
[7] http://www.answers.com/topic/vigen-re-cipher
15
Prelegerea 3
Sistemele de criptare pot fi aduse la un grad mai mare de complexitate şi securitate dacă
se folosesc mijloace mecanice de criptare. Astfel de mecanisme special construite vor uşura
– pe de-o parte – operaţiile de criptare/decriptare, iar pe de-altă parte vor fi capabile să
creeze un număr mult mai mare de chei posibile.
Exemplul 3.1 Să presupunem că dimensiunile băţului permit scrierea a 4 rânduri, cu
5 caractere pe fiecare rând. Fie ”VINO MAINE LA INTALNIRE” textul care trebuie
criptat. Ignorând spaţiile, mesajul va apare scris sub forma
1
Skitala a fost menţionată prima oară de poetul grec Archilochus (sec. VII ı̂.H). Deşi apare ulterior
şi ı̂n alte texte, abia la mijlocul secolului III ı̂.H. Apollonius din Rhodos specifică limpede utilizarea lui
ca mijloc de criptare. De remarcat că pentru perioada respectivă, sistemele de criptare folosite de greci
erau de tip steganografic. O descriere a modului de operare este dată 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 | |
|___|___|___|___|___|__|
După derularea de pe skitala, mesajul scris pe banda de hârtie este:
VAALIIINNNNIOETRMLAE.
La decriptare, banda va fi rulată din nou şi fiecare a patra literă va fi pe aceeaşi linie.
Criptanaliza este foarte simplă. Se iau pe rând valorile n = 2, 3, 4, . . .. Pentru o astfel
de valoare fixată, se formează n rânduri de tipul
n + i, 2n + i, 3n + i, . . . (i = 1, 2, . . . , n)
care ulterior se concatenează. Există o valoare a lui n pentru care textul astfel format este
inteligibil.
Exemplul 3.2 Să considerăm n = 10 şi fie cilindrul, ı̂n care am desfăşurat 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 următoarele linii (oricare din ele putând fi 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
Cilindrul Jefferson a fost reinventat ulterior de mai multe ori, cea mai notabilă fiind
se pare maşina de criptat M − 94, care a fost ı̂n serviciu până până ı̂n al doilea război
mondial.
3.3.1 C − 36 (M − 209 C)
Maşina C − 36 este concepută de inginerul suedez Boris Hagelin, la solicitarea armatei
americane de a avea o maşină de criptat portabilă, uşor de mânuit, care să poată fi folosită
3.3. MAŞINI DE CRIPTAT 5
după un instructaj sumar. Este cunoscută şi sub numele de M − 209 C, la bază fiind
un model creat de Hagelin ı̂n Suedia la sfârşitul anilor 0 30. Ea ı̂ncepe să fie produsă –
după câteva modificări legate de design – ı̂n 1940 şi ı̂nlocuieşte treptat maşina de criptat
M − 94. Se apreciază că ı̂n timpul războiului au fost produse circa 140.000 maşini de
criptat C − 36.
Nu au fost specificate măsuri speciale de securitate; C − 36 nu a fost realizată pentru
a fi criptografic sigură, ea fiind destinată zonelor militare tactice, unde era nevoie doar de
o siguranţă de câteva ore faţă de o eventuală criptanaliză.
Vom da o prezentare matematică a principiilor sale de construcţie; pentru alte detalii,
a se vedea [1] şi [5].
Definiţia 3.1 Se numeşte matrice lug o matrice binară M6×27 ı̂n care fiecare din cele 27
coloane conţine cel mult doi de 1.
Exemplul 3.3 ([4]). Toate exemplificările referitoare la M − 209 vor fi făcute pentru
matricea
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
M = 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
2. Fiecare vector linie se repetă ciclic din momentul când s-a terminat.
Pe baza acestor elemente se poate descrie sistemul de criptare al maşinii C − 36. Ream-
intim, codificarea numerică a literelor este de la A − 0 până la Z − 25; toate calculele se
vor face modulo 26.
Fie x codul celui de-al i-lea caracter din textul clar şi h ponderea celui de-al i-lea
vector generat de configuraţia de ı̂nceput ı̂n raport cu matrica lug. Atunci
y = h − x − 1.
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 şi configuraţia de ı̂nceput formează cheia pentru maşina C − 36. De fapt,
maşina ı̂nsăşi este o realizare fizică a acestui sistem: ea operează conform cu o cheie
stabilită anterior prin fixarea unor roţi dinţate şi a unui disc (pentru detalii vezi [5]).
Observaţia 3.1 Ecuaţia de decriptare este identică cu cea de criptare:
x = h − y − 1.
Deci din acest punct de vedere sistemul de criptare este de tip Beaufort şi maşina C − 36
poate fi folosită atât pentru criptare cât şi pentru decriptare.
3
În aplicaţiile practice, spaţiul se ı̂nlocuieşte uneori cu o literă de frecvenţă redusă.
3.3. MAŞINI DE CRIPTAT 7
Deoarece liniile din configuraţia de ı̂nceput au lungimi numere prime ı̂ntre ele, vectorii
generaţi ı̂ncep să se repete sigur după 17·19·21·23·25·26 = 101.405.850 paşi; deci cuvântul
cheie poate fi considerat mai lung decât orice text clar. Sunt ı̂nsă cazuri când această
perioadă poate fi mai scurtă. De exemplu, dacă configuraţia de ı̂nceput conţine numai 1,
se va genera un singur vector, deci perioada este 1. De asemenea se obţin perioade scurte
pentru matrici lug cu foarte puţini 1 sau configuraţii de ı̂nceput ı̂n care raportul dintre
numărul de 0 şi 1 este disproporţionat.
Nu există o condiţie matematică pentru existenţa a exact 6 linii ı̂n configuraţia de
ı̂nceput. Acest număr a fost ales ca un compromis ı̂ntre securitatea criptografică şi
uşurinţa de a cripta. În general perioada creşte cu numărul de linii.
Maşina de criptat M − 209 avea şi ea o serie de slăbiciuni (un atac cu texte clare alese
care au anumite componente comune poate duce la informaţii asupra matricii lug), astfel
că ı̂n 1943 criptanaliştii germani puteau decripta mesajele. Totuşi – din punct de vedere
militar tactic – ea a fost considerată perfect adaptată necesităţilor şi a fost folosită de
armata americană până după războiul din Coreea (1953 − 1956).
Ulterior, Hagelin a elaborat un model ı̂mbunătăţit: maşina C − 52. Aceasta avea o
perioadă de 2.756.205.443; discurile puteau şi scoase şi reinserate ı̂n altă ordine; exista
un disc al cărui alfabet putea fi permutat. C − 52 a făcut parte din ultima generaţie
de maşini de criptat clasice, noua tehnologie (cea a computerelor) permiţând dezvoltarea
altor mecanisme cu o putere de calcul mult mai mare.
3.3.2 Enigma
Poate cea mai celebră maşină de criptat a fost maşina germană Enigma. Sub acest nume
se află o varietate largă de modele de maşini de criptat electro-mecanice, care asigură o
criptare polialfabetică de tip Vigenere sau Beaufort.
Ea a fost proiectată la Berlin ı̂n 1918, de inginerul german Arthur Scherbius. Primul
model (A) este prezentat la Congresele Uniunii Poştale Internaţionale din 1923 şi 1924.
Modele ulterioare sunt folosite ı̂n mai multe ţări europene şi asiatice (Suedia, Olanda,
Marea Britanie, Japonia, Italia, Spania, SUA, Polonia, Elveţia) ı̂n scopuri comerciale,
militare sau diplomatice. Din 1926 ı̂ncepe să fie preluată şi de armata germană, care
după 1928 ı̂şi defineşte propriile modele (G, I, K).
În total au fost construite circa 100.000 maşini Enigma, din care 40.000 ı̂n timpul
războiului. După 1945 aliaţii au capturat toate maşinile de pe teritoriul german, acestea
fiind ı̂ncă mult timp considerate sigure. Abia ı̂n 1970 au apărut primele informaţii despre
decriptarea de către aliaţi (Biuro Szyfrow - Polonia şi Bletchley Park - Anglia) a unui
mare număr de mesaje criptate prin modelul militar Enigma şi transmise prin radio ı̂n
timpul războiului.
O descriere completă a maşinii este destul de lungă; recomand pentru detalii [2], [3].
În linii mari, ea are următoarele componente:
• Tastatură: Este o componentă mecanică formată din:
8 PRELEGEREA 3. SISTEME MECANICE DE CRIPTARE
• Poziţia iniţială a discurilor: poziţionarea ı̂n mod independent a fiecărui disc, diferită
pentru fiecare mesaj;
Matematic, Enigma criptează fiecare literă după o procedură care poate fi exprimată prin
produs de permutări. Să presupunem că avem o maşină Enigma cu 3 discuri şi fie P
transformarea tabelei de conexiuni, U – reflectorul, S, M, D – acţiunile celor 3 discuri
(din stânga, mijloc şi respectiv dreapta). Atunci criptarea e poate fi scrisă sub forma:
e = P DM SU S −1 M −1 D−1 P −1
După fiecare apăsare a unei taste, discurile se rotesc schimbând transformarea. De exem-
plu, dacă discul din dreapta se roteşte cu i poziţii, atunci transformarea devine ρi Rρ−i ,
where ρ este permutarea ciclică stânga a vectorului (A, B, C, . . . , Z). Similar, discurile
din mijloc şi stânga pot fi reprezentate prin j respectiv k rotiri ale lui M respectiv S.
Atunci funcţia de criptare poate fi descrisă 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
Să calculăm numărul de variante posibile pentru criptarea unui mesaj. Vom considera
o maşină Enigma cu 3 discuri. Atunci numărul de situaţii iniţiale posibile este 26·26·26 =
17.576. Cum cele 3 discuri pot fi permutate ı̂n 6 moduri, numărul variantelor se ridică la
6 · 17.576 = 105.456.
Pentru fiecare din acestea, o tabelă de conexiuni cu 10 perechi de litere conectate
ridică numărul variantelor la 150.738.274.937.250.
La acestea se adaugă şi modul de poziţionare al inelului de caractere la mecanismul
discurilor, care mai ridică ordinul de mărime al variantelor cu aproximativ 105 . Aceste
estimări arată că Enigma era cea mai sigură maşină de criptat a momentului respectiv.
10 PRELEGEREA 3. SISTEME MECANICE DE CRIPTARE
Bibliografie
[1] Kahn, David - The Codebreakers, MacMillan Publishing Co, New York, 1967
[3] Thomas Kelly - The myth of the skytale, Cryptologia, Iulie 1998, pp. 244 - 260.
11
Prelegerea 4
1
2 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE
y i = x i ⊕ ki , (i ≥ 1)
Dacă cheia fluidă este aleasă aleator şi nu mai este folosită ulterior, sistemul de
criptare Vernam se numeşte ”one - time pad”.
Un sistem de criptare one-time pad este teoretic imposibil de spart. 1 Într-adevăr,
fiind dat un text criptat cu un astfel de sistem, Oscar nu are nici o informaţie privind
cheia fluidă sau textul clar. Dificultatea constă ı̂nsă atât ı̂n lungimea cheii (egală cu cea
a textului clar), cât şi ı̂n modalitatea de transmitere a ei ı̂ntre Alice şi Bob.
Pentru sistemul Vernam există o modalitate de atac cunoscută sub numele de ”crip-
tanaliză diferenţială” (prezentată mai târziu, ı̂n cadrul sistemului de criptare DES).
Anume:
Dacă y1 y2 . . . yn şi y 01 y 02 . . . y 0n sunt două texte criptate cu aceiaşi chee fluidă k1 k2 . . . kn ,
atunci
y i = x i ⊕ ki , y 0i = x0i ⊕ ki (1 ≤ i ≤ n)
deci yi ⊕ y 0i == xi ⊕ x0i , şi cheia nu mai este necesară, ci doar informaţia privind lungimea
sa; redundanţa ultimei relaţii va permite criptanaliza.
Sistemele de criptare fluide sunt clasificate ı̂n sisteme sincrone şi auto-sincronizabile.
Definiţia 4.3 Un sistem de criptare fluid sincron este o structură (P, C, K, L, E, D),
unde:
• P, C, K sunt mulţimi finite nevide ale căror elemente se numesc ”texte clare”, ”texte
criptate” şi respectiv ”chei”;
P = C = L =Z26 , K =(Z26 )m ,
ez (x) = x + z (mod 26), dz (y) = y − z (mod 26)
unde q0 este starea iniţială – care poate fi determinată din cheia k, δ este funcţia de
tranziţie a stărilor, g este funcţia care produce cheia fluidă zi , iar h este funcţia de ieşire
care produce textul criptat yi pe baza textului clar xi şi a cheii fluide zi .
- qi - qi
qi+1 6 qi+1 6
xi yi
δ
δ
? ? ?
?
6 - g - h - yi - g - h−1 - xi
k
6 zi
k 6
6 zi
Observaţia 4.1
• (sincronizare): În sistemele de criptare fluide sincrone, Alice şi Bob trebuie să-şi
sincronizeze cheia fluidă pentru a putea obţine o criptare/decriptare corectă. Dacă ı̂n
timpul transmisiei sunt inseraţi sau eliminaţi biţi ı̂n textul criptat, atunci decriptarea
eşuează şi ea poate fi reluată numai pe baza unor tehnici de resincronizare (cum ar fi
de exemplu reiniţializarea sau plasarea unor marcatori speciali la intervale regulate
ı̂n textul transmis).
• Modificarea unui bit din textul criptat (făă a se elimina sau adăuga nimic) nu va
afecta decriptarea altor caractere (nepropagarea erorii).
4 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE
• Un adversar activ care elimină, inserează sau retrimite componente ale mesajului
criptat, va provoca desincronizări şi va fi deci detectat la recepţie. De asemenea, el
poate face modificări ı̂n textul criptat şi să observe cum vor afecta ele textul clar.
Deci un text criptat cu un sistem fluid sincron necesită meca-nisme separate de
autentificare şi de garantare a integrităţii datelor.
Definiţia 4.4 Un sistem aditiv fluid binar de criptare este un sistem fluid sincron ı̂n care
P = C = L =Z2 iar h este funcţia ⊕ (XOR).
Definiţia 4.5 Un sistem de criptare fluid este auto-sincronizabil (sau ”asincron”) dacă
funcţia de generare a cheii fluide depinde de un număr fixat de caractere criptate anterior.
unde q0 = (y−t , y−t+1 , . . . , y−1 ) este starea iniţială (cunoscută), k este cheia, g este funcţia
de generare a cheii fluide, iar h este functia de ieşire care criptează textul clar xi . Cele
mai cunoscute sisteme auto-sincronizabile sunt regiştrii liniari cu feedback, utilizaţi la
generarea secvenţelor de numere pseudo-aleatoare (ı̂n criptografie) şi la generarea codurilor
ciclice (ı̂n teoria codurilor).
z1 = K, zi = yi−1 , (i ≥ 2)
5. A + B (mod 232 ): suma lui A şi B (considerate ca numere ı̂ntregi fără 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.
3
Algoritmul de generare a tabelei G pentru SEAL 2.0:
3
Algoritmul SEAL 1.0 este bazat pe funcţia de dispersie SHA, iar SEAL 2.0 – pe funcţia SHA − 1.
8 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE
Intrare: a – cheia secretă (160 biţi), n ∈ [0, 232 ) ı̂ntreg, L - lungimea solicitată pentru
cheia fluidă.
Ieşire: cheia fluidă y, |y| = L0 , unde L0 este primul multiplu de 128 din [L, ∞).
3. l ←− 0, y ←− (şirul vid);
4. repeat
a. Initialize(n, l, A, B, C, D, n1 , n2 , n3 , n4 );
b. for i ←− 1 to 64 do
P ←− A ∧ 0x000007f c, B ←− B + T [P/4], A ←− (A >> 9), B ←− B ⊕ A;
Q ←− B ∧ 0x000007f c, C ←− C + T [Q/4], B ←− (B >> 9), C ←− C ⊕ B;
P ←− (P + C) ∧ 0x000007f c, D ←− D + T [P/4], C ←− (C >> 9), D ←− D ⊕ C;
Q ←− (Q + D) ∧ 0x000007f c, A ←− A + T [Q/4], D ←− (D >> 9), A ←− A ⊕ D;
P ←− (P + A) ∧ 0x000007f c, B ←− B + T [P/4], A ←− (A >> 9);
Q ←− (Q + B) ∧ 0x000007f c, C ←− C + T [Q/4], B ←− (B >> 9);
4.2. EXEMPLE DE SISTEME FLUIDE DE CRIPTARE 9
Observaţia 4.2 ([1]) În majoritatea aplicaţiilor pentru SEAL 2.0 se foloseşte L ≤ 219 .
Algoritmul funcţionează şi pentru valori mai mari, dar devine ineficient deoarece creşte
mult dimensiunea tabelei R. O variantă este concatenarea cheilor fluide SEAL(a, 0)||
SEAL(a, 1)||SEAL(a, 2)|| . . . Deoarece n < 232 , se pot obţine astfel chei fluide de lungimi
până la 251 , păstrând L = 219 .
4.2.2 RC4
Sistemul RC4 (Rivest Code #4) a fost creat ı̂n 1987 de Ron Rivest pentru societatea RSA
Data Security Inc (astăzi RSA Security). Destinat scopurilor comerciale, el a fost secret,
fiind accesibil numai după semnarea unui protocol de confidenţialitate. În septembrie 1994
ı̂nsă, un anonim publică codul său sursă pe o listă de discuţii, după care se răspândeşte
rapid stârnind o serie de polemici referitor la drepturile intelectuale. Se consideră că astăzi
există mai multe implementări ilegale.
RC4 este un sistem aditiv fluid de criptare.
Printre sistemele care folosesc RC4 se pot aminti SQL (Oracle), Lotus Notes, AOCE
(Apple Computer), WEP WPA CipherSaber Secure Sockets Layer (opţional) sau Secure
shell (opţional)4 RC4 este utilizat pentru criptarea fişierelor ı̂n protocoale cum ar fi RSA
SecurPC sau ı̂n standarde de comunicaţii (WEP, WPA pentru carduri, criptarea traficului
de date sau a site-urilor de web bazate pe protocolul SSL). De asemenea, el face parte
din Cellular Digital Packet Data specification.
La acest sistem, pentru generarea cheii fluide se foloseşte o stare internă (secretă)
formată din două componente:
• Un tablou de 256 octeţi: S[0], S[1], . . . S[255], numit S − box.
• Doi pointeri de câte 8-biţi (notaţi ”i” respectiv ”j”).
S − boxul este iniţializat cu o cheie de lungime variabilă – de obicei ı̂ntre 40 şi 256
biţi, folosind un algoritm numit KSA (key-sheduling algorithm).
În faza a doua, cheia fluidă este generată folosind algoritmul P RGA (pseudo-random
generation algorithm).
4
Când un sistem de criptare este marcat opţional, ı̂nsemnă că el este una din variantele oferite pentru
implementare.
10 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE
Conţinuturile S[i] şi S[j] (unde i, j sunt date de cei doi pointeri) se adună modulo 256,
iar octetul K de la adresa S[i] + S[j] este introdus ı̂n cheia fluidă. În plus cei doi octeţi
sunt interschimbaţi.
Procedeul este reluat atât timp cât este nevoie. La fiecare reluare starea celor doi
pointeri se modifică (i este incrementat cu 1 iar j este incrementat cu S[i]). În acest fel,
orice locaţie din S − box este modificată cel puţin odată ;a 256 iteraţ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]
Implementarea sistemului RC4 este foarte simpla: ea lucrează cu octeţi şi necesită
256 pentru S − box, n octeţi de memorie pentru cheie, plus trei variabile ı̂ntregi i, j, k.
Operaţiile folosite sunt XOR şi AN D (sau – pe unele platforme – simpla adunare pe biţi,
fără transport).
5
În majoritatea implementărilor n este ı̂n intervalul [5, 16].
4.3. EXERCIŢII 11
Securitatea RC4
Conform cu Bruce Schneier ([2]), sistemul are circa 256! × 2562 = 21700 stări posibile; el
este rezistent la criptanaliza diferenţială şi liniară, iar ciclurile sunt mai mari de 10.100.
Totuşi, securitatea RC4 este slabă din mai multe puncte de vedere şi criptografii nu
recomandă sistemul pentru aplicaţiile actuale.
Cheia fluidă generată are o uşoară preferinţă pentru anumite secvenţe de octeţi.
Aceasta a permis construirea unui atac (Fluhrer şi McGrew), care separă cheia fluidă
dintr-o secvenţă aleatoare de maxim 1 GB.
În 2001, Fluhrer, Mantin şi Shamir descoperă că din toate cheile RC4 posibile, primii
octeţi de ieşire nu sunt aleatori, oferind informaţii importante despre cheie.
La majoritatea sistemelor de criptare, o măsură de securitate ncesară este alegerea
unui număr aleator nou6 care să fie folosit pentru criptarea fiecărui mesaj. În acest fel,
criptarea de două ori a aceluiaşi mesaj va genera texte diferite. O solutı̂e sigură (care
funcţionează pentru orice sistem de criptare) este de a folosi o cheie pe termen lung din
care, prin amestec cu un nonce (după un algoritm prestabilit) se obţine cheia necesară
unei criptări. Multe aplicaţii ı̂nsă – care folosesc RC4 – fac o simplă concatenare a cheii cu
nonce. Această slabiciune este exploatată de Fluhrer, Mantin şi Shamir pentru a sparge
ulterior sistemul de criptare W EP (wired equivalent pruvacy) folosit pe reţelele fără fir
802.11.
Ulterior implementările sistemului RC4 s-au apărat eliminând primii octeţi (uzual
1024) din cheia fluidă, ı̂nainte de a o folosi.
4.3 Exerciţii
1. Construiţi coduri de autentificare a mesajelor (MAC) capabile să autentifice mesajele
primite printr-un sistem fluid de criptare. (Indicaţie: a se vedea [1], paragraf 9.5.4)
2. Presupunem că definim o cheie fluidă ı̂ntr-un sistem sincronizabil ı̂n felul următor:
Fie K ∈ K, L un alfabet al cheilor şi Σ o mulţime finită de stări. Se defineşte o
stare iniţială q0 ∈ σ. Apoi, pentru i ≥ 1, se defineşte recursiv
qi = f (qi−1 , K)
unde f : Σ×K−→ Σ. De asemenea, ∀i ≥ 1, elementul zi din cheia fluidă este definit
prin
zi = g(qi , K)
unde g : Σ × K−→ L. Arătaţi că orice cheie fluidă rezultată ı̂n acest mod are o
perioadă de lungime maxim |Σ|.
6
Un astfel de număr poartă numele de nonce (new number)
12 PRELEGEREA 4. SISTEME DE CRIPTARE FLUIDE
Bibliografie
[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
Li = Ri−1
Ri = Li−1 ⊕ f (Ri−1 , Ki )
unde ⊕ este sau - exclusiv (XOR) a două secvenţe binare. f este o funcţie care se
va preciza, iar K1 , K2 , . . . , K16 sunt secvenţe de 48 biţi calculaţi din cheia K. Se
spune că K1 , K2 , . . . , K16 sunt obţinuţi prin diversificarea cheii (key shedule).
1
2 PRELEGEREA 5. SISTEMUL DE CRIPTARE DES
3. Blocului R16 L16 i se aplică inversa permutării iniţiale pentru a obţine textul criptat
β = IP −1 (R16 L16 ).
Observaţia 5.1 Sistemul de ecuaţii care definesc criptarea la fiecare tur poate fi inversat
imediat pentru a obţine ecuaţiile tururilor de decriptare. Acestea sunt:
Funcţia de criptare f (A, J) are ca argumente două secvenţe binare: una de 32 biţi,
iar a doua de 48 biţi. Rezultatul este o secvenţă de 32 biţi. Etapele de calcul ale funcţiei
sunt:
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
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
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
S1
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
S2
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
S3
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
S4
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
S5
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
S6
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
S7
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
S8
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
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
1. Din cheie se elimină biţii de paritate, iar asupra celorlalţi se aplică o permutare
P C1 , obţinându-se P C1 (K) = C0 D0 (C0 sunt primii 28 biţi din secvenţă, iar D0 –
ceilalţi 28 biţi). Permutarea P C1 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 calculează
Ci = LSi (Ci−1 )
Di = LSi (Di−1 )
şi Ki = P C2 (Ci Di ). LSi este o rotaţie circulară la stânga cu una sau două poziţii,
ı̂n funcţie de valoarea lui i: o poziţie dacă i = 1, 2, 9, 16, altfel rotirea este de două
poziţii. Permutarea P C2 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 realizează plecând de la textul criptat β şi utilizând acelaşi algoritm, ı̂n
ordine inversă; se vor folosi ı̂n ordine cheile K16 , . . . , K1 .
3. Modificarea unui bit din operand, o S - cutie provoacă modificarea cel puţin a doi
biţi din rezultat;
4. Pentru fiecare cutie S şi α (secvenţă de lungime 6), S(α) şi S(α ⊕ 001100) diferă
prin cel puţin doi biţi.
Alte două proprietăţi au fost menţionate ca fiind consecinţe ale criteriilor de construcţie:
5. Pentru orice cutie S şi orice α, S(α) 6= S(α ⊕ 11ab00), oricare ar fi a, b ∈ {0, 1};
6. Pentru orice cutie S, dacă un bit din operand este menţinut constant şi se urmărşte
un bit al rezultatului, numărul de valori care produc 0 este apropiat de numărul
de valori care produc 1. Într-adevăr, dacă bitul fixat este unul din cei doi biţi care
determină linia cutiei S, există – conform criteriului 1. – 16 valori care produc 0 şi
16 valori care produc 1; pentru ceilalţi biţi, aceasta nu este adevărat, dar numărul
de valori care produc 0 (sau 1) este cuprins totdeauna ı̂ntre 13 şi 19.
• Modul ECB (Electronic Codebook Mode) corespunde metodei descrise anterior: fiind
dat un text clar x = α1 α2 . . ., fiecare bloc αi de 64 biţi este criptat cu cheia K după
formula
βi = eK (αi ), (i ≥ 1)
procedeul conducând la textul criptat y = β1 β2 . . .
• În modul CBC (Cypher Block Chaining Mode), fiecare bloc de text criptat βi este
combinat printr-un XOR (⊕) cu textul clar următor αi+1 , ı̂nainte de criptarea
acestuia. Operaţia decurge conform schemei:
5.4. MODURI DE UTILIZARE ALE DES -ULUI 7
α1 α2 Decriptare β1 - β2 -
- +j - +j
? -...
?
V I = β0 ? ?
6 6 dK dK
? ?
eK eK - +j ?- +j ?
? ?
- ...
V I = β0
? ? ? ?
Criptare β1 - β2 - α1 α2
Deşi metoda prezentată a fost descrisă pentru blocuri de mărime 64, modurile OF B
şi CF B pot fi extinse la blocuri de k biţi (1 ≤ k ≤ 64).
8 PRELEGEREA 5. SISTEMUL DE CRIPTARE DES
Cele patru moduri de utilizare prezintă diverse avantaje şi dezavantaje. Astfel, la
ECB şi OF B, modificarea unui bloc de text clar αi provoacă modificarea unui singur
bloc de text criptat, βi . În anumite situaţii, acest fapt constituie un defect. Modul OF B
este utilizat adesea pentru transmisiile prin satelit.
În modurile CBC şi CF B dimpotrivă, modificarea unui bloc αi de text clar antrenează
modificări ı̂n toate blocurile de texte criptate, ı̂ncepând cu βi . De aceea, aceste moduri
sunt adaptate ı̂n particular problemelor de autentificare a mesajelor (M AC - Message
Authentication Code). Un M AC este adăugat la un text clar cu scopul de a-l convinge
pe Bob că textul primit a fost scris de Alice şi nu a fost alterat de Oscar. El garantează
astfel integritatea (sau autenticitatea) mesajului, dar nu şi confidenţialitatea sa.
Să descriem cum este utilizat modul CBC la construcţia unui M AC. Se pleacă de la
blocul iniţial V I ı̂n care toţi biţii sunt 0. Se construieşte textul criptat β1 , β2 , . . . , βn
cu cheia K, ı̂n modul CBC, iar M AC este blocul βn . Alice va transmite mesajul
α1 , α2 , . . . , αn , asociat cu M AC-ul βn . Când Bob primeşte mesajul α1 , α2 , . . . , αn , el
generează β1 , . . . , βn folosind cheia (secretă) K şi verifică dacă βn este identic cu mesajul
M AC primit.
De remarcat că Oscar nu poate construi un M AC deoarece nu cunoaşte cheia K
utilizată de Alice şi Bob; orice modificare a mesajelor clare este depistată astfel uşor.
Se poate realiza şi o combinare a integrităţii cu confidenţialitatea, ı̂n felul următor:
Alice utilizează cheia K1 pentru a calcula un M AC bazat pe α1 , . . . , αn ; fie αn+1 acest
M AC. Apoi, ea criptează mesajul α1 , . . . , αn+1 ı̂n β1 , . . . , βn+1 folosind o a doua cheie
K2 . Când Bob primeşte mesajul, el decriptează ı̂n prima fază (cu cheia K2 ), apoi verifică
cu cheia K1 dacă αn+1 este M AC-ul lui α1 , . . . , αn .
Sau – ca altă variantă – Alice poate utiliza K1 pentru criptarea mesajului α1 , . . . , αn ;
apoi, pentru β1 , . . . , βn determină M AC-ul βn+1 folosind cheia K2 . Bob va face ı̂ntâi ver-
ificarea corectitudinii dată de M AC şi – dacă totul este ı̂n ordine – va trece la decriptare.
c = DESk3 (DESk−1
2
(DESk1 (m))).
unde:
m este un bloc de text clar (64 biţi),
5.5. SISTEME DE CRIPTARE ÎNRUDITE CU DES 9
Utilizarea a trei paşi (ede sau eee) este esenţială pentru protejarea contra unui atac de
tipul meet-in-the-middle. În cazul unei duble criptări, acest atac este destul de eficient.
Într-adevăr, să considerăm un sistem de criptare bloc unde mărimea cheii este n. O
criptare dublă cu două chei diferite va folosi de fapt o cheie de lungime 2n. Pentru un
text clar dat m, să presupunem că putem stoca eK (m), pentru toate cheile K posibile.
Fie x un text criptat după formula x = ek2 (ek1 (m)), unde cheile k1 şi k2 sunt secrete.
Pentru fiecare cheie p există o cheie unică q astfel ca dp (x) = eq (m). În particular există
exact 2n chei posibile determinate de perechea (m, x), chei care pot fi găsite ı̂n aproximativ
O(2n ) paşi.
Dacă numărul cheilor care pot fi stocate este de ordinul 2p < 2n , algoritmul poate fi
modificat pentru a afla toate cheile posibile ı̂n circa O(22n−p ) paşi.
Cheia pentru Triplu DES are 3 × 56 = 168 biţi, la care se adaugă 3 × 8 = 24 biţi de
paritate; ı̂n total sunt 192 biţi.
O variantă, numită ”3DES cu două chei” foloseşte k1 = k3 ; aici mărimea de stocare
a cheii va fi de numai 128 biţi (din care 16 biţi de paritate). Acest mod este ı̂nsă sensibil
la anumite atacuri cu text clar ales, propuse de Merkle şi Hellman (1981) şi – mai târziu
– de Van Oorschot şi Wiener (1991).
Sistemul de criptare 3DES nu este ı̂ncă spart, dar utilizarea sa este ı̂ngreunată din
cauza vitezei mici de criptare. Totuşi multe sisteme continuă să folosească 3DES; ca
exemple mai recente sunt cardurile bancare (Mastercard şi parţial – Visa) care din 2002
sunt configurate pe baza acestui sistem de criptare. De asemenea, sistemul de telefonie
mobilă 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 variantă a sistemului de criptare DES,
dezvoltată pentru a rezista mai bine unui atac prin forţă brută.
După cum am văzut, sistemul DES operează cu o cheie de 56 biţi; deci sunt numai
2 chei posibile, unele din acestea fiind chei slabe 1 Pentru a evita un atac direct, in mai
56
1984 Rivest propune creşterea mărimii cheii K fără a modifica substantı̂al algoritmul.
DES−X foloseşte două chei suplimentare K1 , K2 de câte 64 biţi şi efectuează criptarea
unui bloc de text clar x după formula
5.5.3 IDEA
Prima apariţie a sistemului IDEA are loc ı̂n 1990, sub denumirea P ES (Proposed En-
cryption Standard). Deoarece ı̂n acelaşi an, Biham şi Shamir publică sistemul de atac
al DES-ului prin criptanaliză diferenţială, ı̂n 1991 autorii (Xuejia Lai şi James Massey)
modifică sistemul de criptare pentru a rezista acestui gen de atac. Noul sistem este numit
IP ES (Improved Proposed Encryption Standard), nume care ı̂n 1992 se schimbă ı̂n IDEA
(International Data Encryption Standard Algorithm).
În opinia lui Bruce Schneider, ı̂n 1996 IDEA constituia cel mai sigur sistem de criptare
utilizabil fără restricţii. Este o componentă a sistemului de securitate prin poşta elec-
tronică P GP , unde asigură criptarea datelor.
Sistemul este foarte asemănător cu DES. Astfel, el este un sistem simetric care
operează cu blocuri de texte clare de 64 biţi, folosind o cheie de 128 biţi.
Textul clar de 64 biţi este despărţit ı̂n 4 sublocuri X1 , X2 , X3 , X4 , de câte 16 biţi
fiecare. Aceste patru componente formează intrarea la prima rundă a algoritmului. În
total sunt 8 runde, care folosesc operaţiile de adunare, ı̂nmulţire (modulo 216 ) şi XOR;
toate pe 16 biţi. De asemenea sunt implicate şi 16 subchei a câte 16 biţi fiecare. Între
runde, subblocurile 2 şi 3 sunt schimbate ı̂ntre ele. După runda 8, cele patru subblocuri
sunt combinate cu 4 subchei, formând ieşirea.
O rundă conţine 14 operaţii, anume:
1
DES are 4 chei slabe K pentru care eK (eK (x)) = x. Mai există 12 chei semi-slabe – asociate ı̂n
perechi (K1 , K1 ) – pentru care eK1 (eK2 (m)) = m. Posibilitatea ca printr-o alegere aleatoare a cheii să
se obţină o cheie slabă sau semi-slabă este deci 2−52 . Mulţi utilizatori solicită un test pentru depistarea
chilor slabe, test care nu afectează semnificativ timpul de criptare.
5.5. SISTEME DE CRIPTARE ÎNRUDITE CU DES 11
Rezultatele paşilor 11, . . . , 14 formează ieşirea dintr-o rundă; cele patru subblocuri (după
ce subblocurile doi şi trei sunt interschimbate) formează intrarea ı̂n runda următoare.
După ultima rundă, are loc o transformare finală:
1. Se ı̂nmulţeşte X1 cu prima subcheie;
2. Se adună X2 cu a doua subcheie;
3. Se adună X3 cu a treia subcheie;
4. Se ı̂nmulţeşte X4 cu a patra subcheie.
Operaţia de decriptare se realizează urmând aceeiaşi paşi, cu singura diferenţă că subcheile
se introduc ı̂n ordine inversă.
Comparativ cu DES, IDEA prezintă unele avantaje. Astfel, implementările realizate
permit o viteză dublă de criptare ı̂n IDEA faţă de DES.
Lungimea cheii (128) biţi, asigură o securitate sporită la atacurile brute: pentru a
găsi cheia prin ı̂ncercări, ar fi necesare cam 2128 teste; deci cu un chip care testează un
miliard de chei pe secundă, ar trebui cam 1013 ani – o perioadă mai lungă decât vârsta
Pământului.
12 PRELEGEREA 5. SISTEMUL DE CRIPTARE DES
Autorii au afirmat (fără să demonstreze) că IDEA rezistă atacurilor prin criptanaliza
diferenţială. Un studiu al subcheilor a arătat că există 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 fi completarea algoritmului de generare a subcheilor prin operarea
fiecărei subchei generate printr-un XOR cu 0x0D, unde ”x” este o cifră hexazecimală
aleasă aleator.
5.5.4 N EW DES
N EW DES a fost creat ı̂n 1985 de Robert Scott, ca un posibil ı̂nlocuitor al sistemului
DES. Algoritmul nu este o variantă a DES-ului (cum s-ar putea ı̂nţelege din numele
său, ales destul de nefericit). El operează cu texte clare grupate ı̂n blocuri de 64 biţi, dar
cheia are lungimea 120 biţi. Ca o simplificare, aici nu vom avea permutare iniţială şi nici
finală.
Blocul unui text clar este spart ı̂n 8 subblocuri de căte 8 biţi: B0 , B1 , . . . , B7 . Aceste
subblocuri trec prin 17 runde, fiecare rundă având 8 paşi.
Cheia este ı̂mpărţită ı̂n 15 subchei K0 , K1 , . . . , K14 . Procedeul de criptare este descris
destul de clar de schema următoare:
B0 B1 B2 B3 B4 B5 B6 B7
Runda 1
K0 -
- +j - +j
? ?
- f
K1 -
- +j - +j
? ?
- f
K2 -
- +j - +j
? ?
- f
K3 -
- +j - +j
? ?
- f
Runda 2 K4
+j +j
? ?
f
+j +j
? ?
f
K5
+j +j
? ?
f
K6
+j j
? ?
f +
? ? ? ? ? ? ? ?
Rundele 3 − 15
5.6. EXERCIŢII 13
K8
Runda 16 +j
?
f +j
?
+j +j
? ?
f
K9
+j +j
? ?
f
K10
+j +j
? ?
Runda 17 f
K11 -
- +j - +j
? ?
- f
K12 -
- +j - +j
? ?
- f
K13 -
- +j - +j
? ?
- f
K14 -
- +j - +j
? ?
- f
? ? ? ? ? ? ? 6 ?
B0 B1 B2 B3 B4 B5 B6 B7
5.6 Exerciţii
5.1 Să se arate că procesul de decriptare folosind DES se realizează folosind tot sistemul
de criptare, dar inversând ordinea de aplicare a subcheilor.
5.2 Să notăm DES(α, K) textul α criptat cu cheia K. Dacă β = DES(α, K) şi β 0 =
DES(c(α), c(K)), unde c(i1 i2 . . . in ) = in in−1 . . . i1 , să se arate că β 0 = c(β).
5.3 O modalitate de a ı̂ntări sistemul de criptare DES constă ı̂n dubla-rea criptării:
fiind date două chei K, K 0 , se defineşte β = eK2 (eK1 (α)). Dacă eK2 = dK1 , cheile K1
şi K2 se numesc duale (şi atunci β = α). O cheie este auto-duală dacă este propria sa
duală.
1. Să se arate că dacă C0 are toţi biţii identici şi la fel D0 , atunci K este auto-duală.
2. Să se arate că următoarele chei (scrise ı̂n hexazecimal) sunt auto-duale:
0101010101010101; F EF EF EF EF EF EF EF E;
1F 1F 1F 1F 1F 1F 1F 1F ; E0E0E0E0E0E0E0E0.
3. Să se arate că dacă C0 = 0101 . . . 01 sau C0 = 1010 . . . 10, atunci
Ci XOR C17−i = 1 . . . 1; Di XOR D17−i = 1 . . . 1 (1 ≤ i ≤ 16).
4. Să se arate că următoarele perechi de chei sunt duale:
E001E001F 101F 101, 01E001E001F 101F 1;
F E1F F E1F F E0EF E0E, 1F F E1F F E0EF E0EF E;
E01F E01F F F 10F F 10, 1F E01F E00EF 10EF 1.
14 PRELEGEREA 5. SISTEMUL DE CRIPTARE DES
În această prelegere trecem ı̂n revistă principalele modalităţi de criptanaliză dezvoltate
cu scopul de a sparge sistemul DES. Ele şi-au lărgit ulterior aria de aplicabilitate, fiind
considerate astăzi mijloace de atac standard, cărora trebuie să le reziste orice sistem nou
de criptare, pentru a putea fi luat ı̂n considerare.
1
2 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES
Oscar determină valorile X(i, j), 1 ≤ j ≤ t, formând cu ele o matrice Xm0 timest . Din
aceste valori, Oscar păstrează ı̂ntr-o tabelă T numai 2m perechi (X(i, 0), X(i, t)) 1 ≤ i ≤
m (deci sunt memorate numai prima şi ultima coloană a matricii X).
În momentul atacului, Oscar obţine textul criptat β al textului clar α ales de el. El
va căuta cheia K ı̂n cele t coloane ale matricii X, consultând tabloul T . Să 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), şi
1. β1 ← R(β)
2. for j := 1 to t do
2.1. if ∃ i cu βj = X(i, t) then
2.1.1. calculează X(i, t − j) = g t−j (X(i, 0))
2.1.2. if β = eX(i,t−j) (α) then K ← X(i, t − j), ST OP
2.2. βj+1 ← g(βj )
Timpul de calcul al atacului este mai dificil de evaluat. De remarcat că pasul 2.1
poate fi implementat ı̂n cel mai rău caz ı̂ntr-un timp O(log m), utilizând arbori binari de
căutare. Dacă acest pas eşuează (deci nu se găseşte nici o valoare), timpul de calcul este
O(N 2/3 ). Ceilalţi paşi care urmează cresc acest timp doar cu un factor constant.
Lema 6.1 Pentru un sistem de criptare bloc, o dublă criptare poate fi atacată folosind
O(2n ) operaţii şi O(2n ) spaţiu de memorie, unde n este lungimea cheii.
Demonstraţie: Fie (m, y) o pereche (text clar, text criptat) obţinută pe baza schemei de
mai sus.
Algoritmul se reia cu alte perechi (m, y), până ce perechea de chei folosite este determinată
ı̂n mod unic.
Exemplul 6.1 Un atac direct asupra unei duble criptări cu DES ar necesita un timp de
ordin 2112 şi un spaţiu neglijabil. Dacă se foloseşte un atac meet-in-the-middle, timpul va
fi 256 iar spaţiul 256 . Strategii complementare de genul compromisului spaţiu - timp pot
duce la variante de genul: 2p spaţiu, 2q timp, unde p + q = 112 ([1]).
Vom mai ı̂ntâlni frecvent acest atac la protocoalele de stabilire a cheilor de sesiune.
4 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES
Definiţia 6.1 Fie Sj (1 ≤ j ≤ 8) o S - cutie din sistemul DES. Pentru orice pereche
(Bj , Bj∗ ) de şiruri de 6 biţi, vom defini XOR-ul de intrare pentru Sj prin Bj 0 = Bj ⊕ Bj∗ ,
iar XOR-ul de ieşire prin Sj (Bj ) ⊕ Sj (Bj∗ ).
De remarcat că un XOR de intrare este o secvenţă de 6 biţi, iar un XOR de ieşire este
o secvenţă de 4 biţi.
Definiţia 6.2 Pentru orice Bj 0 ∈ Z26 se notează ∆(Bj 0 ) mulţimea perechilor (Bj , Bj∗ ) care
prin XOR dau B 0j .
Observaţia 6.1
• O mulţime ∆(Bj 0 ) conţine 26 = 64 elemente;
• ∆(Bj 0 ) = {(Bj , Bj ⊕ Bj 0 )| Bj ∈ Z26 }.
Pentru fiecare pereche din ∆(Bj 0 ) vom calcula XOR-ul de ieşire al lui Sj şi construim
o tabelă de distribuţii ale valorilor obţinute (sunt 64 ieşiri pe un spaţiu de 24 = 16 valori
posibile). Pe această tabelă se va baza atacul de criptanaliză diferenţială.
Exemplul 6.2 Să considerăm prima S - cutie S1 şi XOR-ul de intrare 110100. Vom
avea:
∆(110100) = {(000000, 110100), (000001, 110101), . . . , (111111, 001011)}.
Pentru fiecare pereche din ∆(110100) vom calcula XOR-ul de ieşire al lui S1 . De exemplu,
S1 (000000) = E16 = 1110, S1 (110100) = 916 = 1001 deci XOR-ul de ieşire S1 al perechii
(000000, 110100) este 0111.
Efectuând acest calcul pentru toate cele 64 perechi din ∆(110100), vom obţine distribu-
ţia următoare a XOR-urilor de ieşire pentru S1 :
6.3. CRIPTANALIZA DIFERENŢIALĂ 5
În Exemplul 6.2 au apărut numai 8 din cele 16 valori de ieşire posibile. În general, dacă
se fixează o S-cutie Sj şi un XOR de intrare diferit de 000000, se constată că vor apare
numai 75 − 80 % din valorile posibile de ieşire.
Definiţia 6.3 Pentru 1 ≤ j ≤ 8 şi secvenţele Bj 0 , Cj 0 de 6 respectiv 4 biţi, definim
INj (Bj 0 , Cj 0 ) = {Bj ∈ Z26 | Sj (Bj ) ⊕ Sj (Bj ⊕ Bj 0 ) = Cj 0 ,
Nj (Bj 0 , Cj 0 ) = card(INj (Bj 0 , Cj 0 )).
Distribuţia dată ı̂n Exemplul 6.2 dă valorile N1 (110100, C1 0 ), C1 0 ∈ Z24 . Toate aceste
valori se găsesc ı̂n Tabelul următor:
XOR de ieşire intrări 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 fiecare din cele 8 S-cutii există 64 XOR-uri de intrare posibile; deci ı̂n total vor fi
512 date de distribuit, lucru uşor de realizat cu un calculator.
Reamintim că intrarea ı̂ntr-o S-cutie la turul i este B = E ⊕J, unde E = E(Ri−1 ) este
rezultatul expandării lui Ri−1 , iar J = Ki este un subşir 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ĂŢI DE ATAC ASUPRA DES
B = B1 B2 B3 B4 B5 B6 B7 B8 , E = E1 E2 E3 E4 E5 E6 E7 E8 , J = J1 J2 J3 J4 J5 J6 J7 J8
În mod similar se scriu B ∗ şi E ∗ . Să presupunem acum că se ştiu valorile Ej şi Ej∗ pentru
un j (1 ≤ j ≤ 8) dat, precum şi valoarea XOR de ieşire Cj 0 = Sj (Bj ) ⊕ Sj (Bj∗ ) a lui Sj .
Vom avea
Ej ⊕ Jj ∈ INj (Ej 0 , Cj 0 )
unde Ej 0 = Ej ⊕ Ej∗ .
Să presupunem că se defineşte mulţimea testj astfel:
(s-au luat toate XOR-urile lui Ej cu elemente din INj (Ej 0 , Cj 0 )). Din aceste consideraţii
rezultă imediat teorema:
Teorema 6.1 Dacă Ej , Ej∗ sunt subsecvenţe construite pentru intrarea ı̂n S-cutia Sj , iar
Cj 0 este XOR-ul de ieşire al lui Sj , atunci biţii cheii Jj apar ı̂n mulţimea testj (Ej , Ej∗ , Cj 0 ).
Cum se poate remarca, există exact Nj (Ej 0 , Cj 0 ) secvenţe de 6 biţi ı̂n testj (Ej , Ej∗ , Cj 0 );
valoarea corectă Jj este una din acestea.
C 0 = C ⊕ C ∗ = P −1 (R3 0 ⊕ L0 0 )
Acesta este XOR-ul de ieşire din cele opt S-cutii după a treia rundă.
R2 = L3 şi R2∗ = L∗3 sunt cunoscute (componente ale textelor criptate); deci se poate
calcula
E = E(L3 ), E ∗ = E(L∗3 )
folosind funcţia de expansiune E. Aceste valori sunt intrările ı̂n S-cutii la runda a treia.
Se cunosc deci E, E ∗ , C 0 la a treia rundă şi se poate trece – aşa cum am văzut – la
construcţia mulţimilor test1 , test2 , . . . , test8 de valori posibile pentru J1 , J2 , . . . , J8 .
Un algoritm pentru această metodă este formalizat mai jos. Atacul foloseşte mai multe
triplete E, E ∗ , C 0 . Se utilizează opt tabele de valori şi se determină astfel cei 48 biţi ai
subcheii K3 de la a treia rundă. Cheia de 56 biţi se calculează apoi printr-o căutare
exhaustivă a celor 28 = 256 posibilităţi a celor 8 biţi necunoscuţi.
Observaţia 6.2
• Dacă L0 R0 şi L∗0 R0∗ sunt alese astfel ca L0 ⊕ L∗0 = L0 0 , R0 ⊕ R0∗ = R0 0 , nu se
poate afirma că probabilitatea ca pentru orice i = 1, 2, . . . , n să avem Li ⊕ L∗i =
Li 0 , Ri ⊕ Ri∗ = Ri 0 este p1 · p2 · . . . · pn . Într-adevăr, procesul de diversificare
a cheilor nu generează distribuţia independentă a sub-cheilor K1 , . . . , Kn . Totuşi,
probabilitatea p1 · p2 · . . . · pn furnizează o estimare destul de precisă a probabilităţii
reale.
• Probabilităţile pi sunt inserate ı̂n caracteristica pentru o pereche de texte clare oare-
care, având un XOR dat, pentru o distibuţie de 48 biţi ai sub-cheii. Criptanalistul
caută o cheie fixată necunoscută. De aceea el va utiliza texte clare aleatoare (cu
XOR-ul cerut), sperând ca distribuţia obţinută de XOR-urile de la a n-a rundă să
coincidă cu cea descrisă de o cheie aleatoare, deci cu p1 , p2 , . . . , pn .
Exemplul 6.4 O caracteristică pe o rundă – care forma baza atacului pe 3 runde – este
(ı̂n notaţie hexazecimală):
L0 0 = oarecare R0 0 = 0000000016
L1 0 = 0000000016 R1 0 = L0 0 p=1
Într-adevăr, ı̂n calculul lui f (R0 , K1 ) şi f (R0∗ , K1 ), funcţia de expansiune operează ı̂ntâi
asupra lui R0 şi R0∗ ; XOR-ul rezultatelor este 001100 . . . 0. Deci XOR-ul de intrare al lui
S1 este 001100, iar pentru celelalte S - cutii este 000000. La ieşire XOR - ul este 0000
la aceste cutii şi 1110 pentru S1 ; deoarece N( 001100, 1110) = 14 (se poate verifica), vom
avea probabilitatea 14/64.
Se obţine deci C 0 = 11100000000000000000000000000000 cu probabilitate 14/64.
Aplicând P , vom avea
P (C) ⊕ P (C ∗ ) = 00000000 10000000 10000010 00000000,
ceea ce dă 00808200 ı̂n hexazecimal. După calculul XOR-ului cu L0 0 se obţine valoarea
lui R1 0 cu probabilitate 14/64. Vom avea bineı̂nţeles L1 0 = R0 0 .
Atacul asupra DES-ului ı̂n 6 runde este bazat pe caracteristica celui pe 3 runde ı̂n modul
următor:
L0 0 = 4008000016 R0 0 = 0400000016
L1 0 = 0400000016 R1 0 = 0000000016 p = 1/4
L2 0 = 0000000016 R2 0 = 0400000016 p=1
L3 0 = 0400000016 R3 0 = 4008000016 p = 1/4
6.3. CRIPTANALIZA DIFERENŢIALĂ 9
Definiţia 6.5 Fie L0 ⊕ E0∗ = E0 0 , R0 ⊕ R0∗ = R0 0 . Spunem că perechea de texte clare
(L0 R0 , L∗0 R0∗ ) este o pereche bună pentru caracteristica dată, dacă pentru orice i (1 ≤ i ≤
n) avem Li ⊕ L∗i = Li 0 , Ri ⊕ Ri∗ = Ri 0 . Altfel, avem o perechea rea.
Strategiile de calcul pentru Ej , Ej∗ , Cj 0 şi testj pentru j = 2, 5, 6, 7, 8 a fost descrisă ante-
rior. Dacă avem o pereche bună, valoarea ei apare ı̂n testj . Pentru o pereche rea, valoarea
lui Cj 0 este incorectă şi se poate presupune că toate mulţimile testj au un conţinut aleator.
O pereche rea se poate recunoaşte astfel: dacă pentru un j avem card(testj ) = 0,
perechea este sigur rea. Fiind dată o pereche rea, probabilitatea de a avea card(testj ) = 0
10 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES
pentru un anumit j, este cam 1/5 (card(testj ) = Nj (Ej 0 , Cj 0 ) şi Nj (Ej 0 , Cj 0 ) = 0 ı̂ntr-o
cincime din cazuri). Probabilitatea ca cinci mulţimi testj să fie nevide este 0, 85 ≈ 0, 33,
deci probabilitatea ca cel puţin un testj să fie vid este 0, 67. Se pot elimina astfel cam 2/3
din perechile rele prin acest test simplu, numit operaţie de filtrare. Proporţia perechilor
rele care rămân după filtrare este ce circa (15/16) · (1/3) = 5/16. Rezultă că proporţia
perechilor bune rămse după filtrare este de 1/6.
j Ej Ej∗ C 0j
2 111100 010010 1101
5 111101 111100 0001
6 011010 000101 0010
7 101111 010110 1100
8 111110 101100 1101
j testj
2 14, 15, 26, 30, 32, 33, 48, 52
5
6 7, 24, 36, 41, 54, 59
7
8 34, 35, 48, 49
Deoarece test5 = test7 = ∅, perechea este rea şi va fi eliminată prin operaţia de filtrare.
Adesea, numărul de lanţuri sugerate este destul de mare (de ordinul miilor).
6.4. CRIPTANALIZA LINIARĂ 11
i∈I
Dacă perechea i este bună pentru orice i ∈ I, atunci I este admisibilă. Deci, sperăm să
avem o mulţime admisibilă de mărime aproximatic N/6, ceea ce sugerează sigur o valoare
unică de 30 biţi pentru cheie. Mulţimile admisibile I pot fi generate cu un simplu algoritm
recursiv.
Evident,
P r[Xi = 1] = 1 − pi , i = 1, 2 . . .
Dacă i 6= j, independenţa variabilelor Xi , Xj conduce la relaţiile
P r[Xi = 0, Xj = 0] = pi pj , P r[Xi = 0, Xj = 1] = pi (1 − pj ),
P r[Xi = 1, Xj = 0] = (1 − pi )pj , P r[Xi = 1, Xj = 1] = (1 − pi )(1 − pj ).
Fie acum variabila aleatoare discretă Xi ⊕ Xj ; se verifică uşor faptul că probabilitatea ei
de distribuţie este
P r[Xi ⊕ Xj = 0] = pi pj + (1 − pi )(1 − pj )
P r[Xi ⊕ Xj = 1] = pi (1 − pj ) + (1 − pi )pj
1
Pentru a simetriza formulele, introducem o nouă variabilă numită tendinţă definită
1 1 1
i = pi − , i ∈ − ,
2 2 2
Atunci
1 1
P r[Xi = 0] = + i , P r[Xi = 1] = − i
2 2
Lema 6.2 Fie X1 , X2 , . . . Xn variabile aleatoare independente şi pentru 1 ≤ i1 < i2 <
. . . < ik ≤ n, fie i1 ,i2 ,...ik tendinţa variabilei aleatoare Xi1 ⊕ Xi2 ⊕ . . . ⊕ Xik . Atunci
k
i1 ,i2 ,...ik = 2k−1
Y
ij .
j=1
Corolarul 6.1 Fie i1 ,i2 ,...,ik tendinţa variabilei aleatoare Xi1 ⊕. . . Xik . Dacă ∃j cu ij = 0
atunci i1 ,i2 ,...,ik = 0.
1
bias ı̂n engleză
6.4. CRIPTANALIZA LINIARĂ 13
Fie S-cutia πS : {0, 1}m −→ {0, 1}n şi X = (x1 , x2 , . . . , xm ) un m-tuplu de intrare,
ales arbitrar: matematic, aceasta ı̂nseamnă că fiecare coordonată xi defineşte o variabilă
aleatoare Xi cu valori 0 sau 1, având tendinţa i = 0. Cele m variabile aleatoare sunt
independente.
Ieşirea se poate reprezenta ca un n-tuplu Y = (y1 , y2 , . . . , yn ) unde fiecare yi defineşte
o variabilă aleatoare Yi de valori 0, 1. În general, aceste n variabile aleatoare sunt depen-
dente de intrări sau ı̂ntre ele. Are loc formula
(
0 dacă (y1 , . . . , yn ) 6= πS (x1 , . . . , xm )
P r[X1 = x1 , . . . , Xm = xm , Y1 = y1 , . . . , Yn = yn ] = −m
2 dacă (y1 , . . . , yn ) = πS (x1 , . . . , xm )
Exemplul 6.6 Să considerăm o S-cutie πS : {0, 1}4 −→ {0, 1}4 definită
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
X1 , . . . , X4 , Y1 , . . . , Y4 care pot lua valorile reprezentate pe liniile tabelului de pe pagina
următoare.
Să considerăm acum variabila aleatoare X1 ⊕ X4 ⊕ Y2 . Probabilitatea ca ea sa ia
valoarea 0 poate fi determinată numărând liniile din tabel unde X1 ⊕ X4 ⊕ Y2 = 0 şi apoi
ı̂mpărţind la 16 (numărul total de linii).
1 1
Se obţine P r[X1 ⊕ X4 ⊕ Y2 = 0] = , de unde rezultă P r[X1 ⊕ X4 ⊕ Y2 = 1] = .
2 2
Tendinţa acestei variabile aleatoare este deci 0.
14 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES
X1 X2 X3 X4 Y 1 Y 2 Y 3 Y4
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
În general ı̂n Exemplul 6.6 sunt 28 = 256 variabile aleatoare de acest gen. Pentru
fiecare din ele se poate da o reprezentare uniformă de tipul:
4 4
! !
M M
ai Xi ⊕ b i Yi
i=1 i=1
unde ai , bi ∈ {0, 1}, (1 ≤ i ≤ 4). Vectorii binari (a1 , a2 , a3 , a4 ) – numiţi sume de intrare şi
(b1 , b2 , b3 , b4 ) (sume de ieşire) vor fi codificaţi prin cifre hexazecimale. Astfel, fiecare din
cele 256 variabile aleatoare se va scrie ı̂n mod unic ca o pereche de două cifre hexazecimale.
Exemplul 6.7 Variabila X1 ⊕ X4 ⊕ Y2 va avea suma de intrare (1, 0, 1, 0) care este 9 ı̂n
hexazecimal, iar suma de ieşire este (0, 1, 0, 0), care este 4 ı̂n hexazecimal. Deci perechea
ataşată variabilei este (9, 4).
1. (y1 , y2 , y3 , y4 ) = πS (x1 , x2 , x3 , x4 )
4 4
! !
M M
2. ai Xi ⊕ b i Yi = 0
i=1 i=1
NL (a, b) − 8
(a, b) = .
16
6.5. EXERCIŢII 15
Exemplul 6.8 Variabila din Exemplul 6.7 are NL (9, 4) = 8, deci (9, 4) = 0. Se poate
cosntrui o tabelă cu toate valorile NL – numită ”tabela de aproximare liniară”:
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
6.5 Exerciţii
6.1 Fie X1 , X2 , X3 variabile aleatoare independente cu valori ı̂n {0, 1} de tendinţe 1 , 2
respectiv 3 . Demonstraţi că X1 ⊕ X2 şi X2 ⊕ X3 sunt indepedente dacă şi numai dacă
1 = 0, 3 = 0 sau 2 = ±1/2.
6.2 Pentru fiecare din cele opt S-cutii DES calculaţi tendinţa variabilei aleatoare X2 ⊕
Y1 ⊕ Y2 ⊕ Y3 ⊕ Y4 .
b) Arătaţi că orice linie din S4 poate fi transformată ı̂n orice altă linie printr-o operaţie
similară.
16 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES
pentru orice y ∈ {0, 1}n . Demonstraţi următoarele afirmaţii despre NL pentru o S-cutie
balansată:
a) NL (0, b) = 2m − 1, ∀b ∈ [0, 2n − 1];
n −1
2X
b) ∀a ∈ [0, 2 − 1],m
NL (a, b) = 2m+n−1 − 2n−1 + i2n
b=0
unde i este un număr ı̂ntreg din intervalul [0, 2m−n ].
1. β0 ← β;
2. f lag ← T rue;
3. while g(β) 6= β0 do
3.1. if ∃ j β = γj and f lag then
3.1.1. β −→ g −1 (γj )
3.1.2. f lag −→ F alse
else
3.1.3. β −→ g(β);
3.2. K = β.
Arătaţi că el determină K ı̂n maxim T etape (compromisul spaţiu - timp este deci
O(N )).
4. Daţi un algoritm care construieşte o mulţime Z ı̂n timp O(N T ), fără a folosi tablouri
de mărine N .
18 PRELEGEREA 6. MODALITĂŢI DE ATAC ASUPRA DES
Bibliografie
[2] Stinton, D - Cryptography, Theory and Practicce, Chapman & Hall/CRC, 2002
19
Prelegerea 7
7.1 Istoric
La sfârşitul anilor 0 90 se decide ı̂nlocuirea sistemului de criptare DES. Motivele sunt
multiple, dar menţionăm numai două:
• În iulie 1998 sistemul DES pe 56 biţi este spart de către organizaţia Electronic
Frontier Foundation; s-a folosit un calculator construit special ı̂n acest scop, iar
timpul necesar spargerii a fost de 3 zile.
• În luna septembrie a aceluiaşi an, administraţia americană acordă companiilor pro-
ducătoare de soft de securitate permisiunea de a exporta implementări ale algorit-
mului DES bazate pe chei de criptare de 56 biţi.
În legătură cu aceste evenimente, pe 20 august 1998 N IST (National Institute of Stan-
dards and Technology) anunţă (ı̂n cadrul unei conferinţe speciale) un set de 15 algoritmi
candidaţi să ı̂nlocuiască DES 1 . Este ales şi numele noului sistem de criptare: AES
(Advanced Encryption Standard). Cei 15 algoritmi au fost trimişi de membri din co-
munitatea criptografică mondială. Criteriile stabilite de N IST pentru noul sistem au
fost:
• Să fie eficient atât pe platforme Intel Pentium Pro cât şi pe alte platforme software
sau hardware;
1
Aceştia sunt (ı̂n ordine alfabetică) CAST − 256, CRY P T ON, DEAL, DF C, E2, F ROG, HP C,
LOKI97, M AGEN T A, M ARS, RC6, Rijndael, SAF ER+, Serpent, T wof ish.
1
2 PRELEGEREA 7. SISTEMUL DE CRIPTARE AES
• Să poate fi implementat atât pe procesoare de 32 biţi cât şi pe smart- carduri
(procesoare de 8 biţi);
• Să fie mai rapid decât DES şi să ofere o securitate mai mare decât 3DES.
A doua conferinţă AES are loc ı̂n martie 1999; după analiza rezultatelor algoritmilor
propuşi, N IST selectează 5 algoritmi: M ars, RC6, Rijndael, Serpent şi T wof ish. Aceştia
sunt supuşi testelor şi discuţiilor publice, folosind drept criterii de evaluare au fost: secu-
ritate, cost, implementare.
În mai 2000 N IST anunţă drept sistem ”câştigător” sistemul de criptare Rijndael,
care devine oficial AES.
• Algoritmul este format din trei componente, fiecare din ele asigurând protecţie pen-
tru anumite tipuri de atac.
• La intrare textul clar este ”spart” ı̂n grupuri de 128 biţi (4 numere ı̂ntregi de câte 32
biţi). Prima şi a treia parte a algoritmului amestecă aceşti biţi folosind o cheie de
dimensiune variabilă (ı̂ntre 128 şi 448 biţi) şi o S-cutie de 512 elemente. Componenta
din mijloc este formată din 16 runde şi foloseşte ı̂n plus o o funcţie de expandare E.
• Operaţiile folosite sunt: adunări, scăderi, XOR, rotaţii (fixe sau dependente de date)
şi ı̂nmulţiri; toate calculele se fac modulo 32. Construcţia S-cutiei s-a făcut pe baza
unui algoritm public, plecând de la o serie de condiţii iniţiale clare.
• D[0], D[1], D[2], D[3] – cuvinte (de 32 biţi), iniţializate cu textul clar; ı̂n final aici
va fi blocul de text criptat; se notează D[i : j] octetul j din D[i] (j = 0, 1, 2, 3).
• S[] – S - cutia de 512 cuvinte; S0[] va conţine primele 256 elemente, iar S1[] –
ultimele 256 cuvinte.
Expandarea cheii:
Această procedură expandează o cheie k[0, . . . , n − 1] de n cuvinte (4 ≤ n ≤ 14) ı̂ntr-o
cheie K de 40 cuvinte, folosind un vector temporar T de 15 cuvinte şi un vector fixat Z
de 4 cuvinte.
1. Z ←− 0xA4A8D57B 0x5B5D193B 0xC8A8309B 0x73F 9A978;
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 nouă biţ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 biţi din K[i];
4.2. w ←− K[i] cu cei mai din dreapta doi biţi setaţ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 secvenţă de 10 biţi consecutivi egali)
then M [p] ←− 1;
4.4. r ←− cei mai din dreapta cinci biţi din K[i − 1];
4.5. X ←− (Z[j] <<< r);
7.2. SCURTĂ 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 aşa fel ı̂ncât să verifice condiţiile:
- Nu are valorile 0x00000000 şi 0xF F F F F F F F ;
- Orice două valori diferă prin cel puţin 4 biţi;
- Nu există două valori a, b astfel ca a = b sau a = −b;
- Diferenţele de scădere sau XOR ı̂ntre orice două 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, elaborată de laboratoarele RSA
(sub coordonarea lui Ron Rivest) cu scopul de a ı̂ndeplini criteriile AES. Este un sistem
simplu, fără atacuri practice cunoscute (sunt elaborate doar câteva atacuri teoretice),
complet parametrizat: versiunea generală este RC6−w/r/b unde mărimea cuvintelor este
w, numărul de runde este r, iar b este mărimea (ı̂n octeţi) a cheii de criptare. Versiunea
pentru AES are w = 32, r = 20. Algoritmul lucrează pe blocuri de lungime w folosind
şase operaţii: +, −, · (toate modulo 2w ), ⊕, a <<< b (rotirea lui a spre stânga cu un
număr de pozitı̂i dat cei mai puţin semnificativi log2 w biţi din b) şi a >>> b (operaţie
similară spre dreapta).
Algoritmul de criptare
Intrare:
- Textul clar stocat ı̂n cuvintele A, B, C, D;
- Numărul r de runde;
- Cheia [0, . . . 2r + 3];
Ieşire: 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)) <<< log2 w;
3.2. u ←− (D · (2D + 1)) <<< log2 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 şi modalităţi de implementare pot fi găsite ı̂n [4].
Algoritmul de diversificare a cheii S este identic cu cel de la RC5. În [5] acesta este
prezentat ı̂mpreună cu un cod pentru RC5, scris ı̂n C + +.
6 PRELEGEREA 7. SISTEMUL DE CRIPTARE AES
Cheia iniţială are b octeţi (0 ≤ b ≤ 255) şi este stocată ı̂ntr-un tablou L cu c = db/4e
cuvinte (completând ultimul cuvânt cu 0 dacă este necesar).
În prima fază tabloul S este iniţializat folosind un generator liniar congruenţial:
1. S[0] ←− P ;
2. for i ←− 1 to 2(r + 1) − 1 do S[i] ←− (S[i − 1] + Q) mod 232
P = 0xB7E15163 şi Q = 0x9E3779B9 sunt constante bazate pe reprezentarea binară
a lui e şi π.
În etapa a doua se efectuează un amestec ı̂ntre L şi 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) şi Lars Knudsen (Universitea Bergen). El criptează
texte clare de 128 biţi ı̂n blocuri de aceeaşi lungime, ı̂n 32 runde, folosind 33 chei de
criptare de rundă, de lungime 128 biţi 3 . Ea se extinde la 256 biţi punând ı̂n faţă 1 pentru
primul bit, apoi 0 pentru ceilalţi biţi – atât cât este necesar.
Algoritmul de criptare cuprinde 3 paşi:
Intrare: P (textul clar)
Ieşire: C (Textul criptat)
Algoritm:
1. B̂0 = IP (P ): (IP - permutare iniţială);
Observaţia 7.1 S-cutiile lucrează pe 4 biţi, ca şi la DES 4 . Fiecare rundă foloseşte o
singură S-cutie ı̂n 32 copii. De exemplu, runda R0 foloseşte cutia S0 ı̂n 32 exemplare; o
copie pentru biţii 0−3 din B0 ⊕K0 ı̂ntorcând primii patru biţi dintr-un tablou intermediar,
a doua copie pentru biţii 4 − 7 din B0 ⊕ K0 ı̂ntoarce biţii 4 − 7 din vectorul intermediar
ş.a.m.d. Apoi vectorul intermediar obţinut trece prin transformarea liniară, producând
B1 . Analog, R1 foloseşte 32 S- cutii identice S1 pentru biţii din B1 ⊕ K1 produând un
vector intermediar care după trecerea prin L dă B2 etc.
Detalii asupra IP, F P , conţinutul şi modul de generare a S-cutiilor, precum şi o crip-
tanaliză amănunţită pot fi găsite ı̂n [2], [7]. De remarcat că la fiecare etapă IP (Bi ) =
B̂i , IP (Ki ) = K̂i .
Transformarea liniară L:
Blocul de 128 biţi dintr-o rundă este spart ı̂n patru cuvinte (X0 , X1 , X2 , X3 ) = Si (Bi ⊕Ki ).
Se aplică apoi următorii paşi:
1. X0 ←− (X0 <<< 13); 2. X2 ←− (X2 <<< 13);
3. X1 ←− X1 ⊕ X0 ⊕ X2 ; 4. X3 ←− X3 ⊕ X2 ⊕ (X0 << 3);
5. X1 ←− (X1 <<< 1); 6. X3 ←− (X3 <<< 7)
7. X0 ←− X0 ⊕ X1 ⊕ X3 ; 8. X2 ←− X2 ⊕ X3 ⊕ (X1 << 7);
9. X0 ←− (X0 <<< 5); 10. Bi+1 ←− (X0 , X1 , X2 , X3 ).
unde <<< ı̂nseamnă rotire spre stânga, iar << este deplasare spre stânga. În ultima
rundă, L este ı̂nlocuită cu B32 ←− S7 (B31 ⊕ K31 ) ⊕ K32 .
7.2.4 Twofish
Sistemul Twofish este propus de un colectiv condus de Bruce Schneier, fiind unul din
puţinele sisteme free (implementarea este disponibilă la adresa [6]). Algoritmul criptează
blocuri de 128 biţi, folosind o cheie de lungime variabilă.
Algoritmul de criptare
Funcţia F
F (R0 , R1 , r) este o funcţie ternară care ı̂ntoarce două valori (F0 , F1 ). Varianta propusă
este bazată la rdul ei pe o altă funcţie g.
1. T0 ←− g(R0 ) 2. T1 ←− g(R1 <<< 8)
32
3. F0 ←− (T0 + T1 + K2r+8 ) mod 2 4. F1 ←− (T0 + 2 · T1 + K2r+9 ) mod 232
Funcţia unară g constituie esenţa sistemului de criptare Twofish:
1. xi ←− bX/28i c mod 28 (0 ≤ i ≤ 3)
Cuvântul de intrare X este spart ı̂n patru octeţi.
2. yi ←− si [xi ], (0 ≤ i ≤ 3)
Octeţii sunt trecuţi prin patru S-cutii, dependente de cheie.
z0 01 EF 5B 5B y0
z 5B EF EF 01 y1
1
3. ←− ·
z2 EF 5B 01 EF y2
z3 EF 01 EF 5B y3
3
zi 28i .
X
4. Z ←− (Z este valoarea rezultată).
i=0
Observaţia 7.2 La pasul 3 se face o corespondenţă ı̂ntre octeţi şi elementele corpului
GF (28 ). Deoarece GF (28 ) ≡ GF (2)[X]/v(X) unde v(X) = X 8 + X 6 + X 5 + X 3 + 1 este
7
ai X i ∈ GF (28 ) se identifică cu octetul
X
un polinom primitiv peste Z2 . Elementul a =
i=0
7
ai 2i . Elementele matricii 4 × 4 au fost scrise ca valori hexazecimale ale octeţilor,
X
i=0
folosind această corespondenţă.
Diversificarea cheii
Sistemul Twofish este definit pentru chei de lungime N unde standardul este N = 128, 192
sau 256. Se pot folosi ı̂nsă chei de orice lungime mai mică de 256; dacă se dă o astfel de
cheie, ea este extinsă prin completare cu 0 la cea mai apropiată lungime standard. Din
cheia M a utilizatorului, prin diversificare se obţin 40 cuvinte K0 , K1 , . . . , K39 şi patru
S-cutii folosite la funcţia g.
Fie k ←− N/64. Cheia M constă din 8k octeţi m0 , m1 , . . . , m8k−1 . Se calculează
vectorii Me , Mo , S astfel:
3
m4i+j · 28j ,
X
1. Mi ←− (0 ≤ j ≤ 2k − 1)
j=0
2. Me ←− (M0 , M2 , . . . , M2k−2 ), Mo = (M1 , M3 , . . . , M2k−1 );
3
si,j · 28j ,
X
3. S = (Sk−1 , Sk−2 , . . . , S0 ) unde Si ←− (0 ≤ i ≤ k − 1)
j=0
10 PRELEGEREA 7. SISTEMUL DE CRIPTARE AES
Octeţii si,j se obţin printr-o codificare cu un cod Reed-Solomon, pe baza formulei
m8i
m8i+1
si,0 01 A4 55 87 5A 58 DB 9E m8i+2
s A4 56 82 F 3 1E C6 68 E5 m8i+3
i,1
= ·
si,2 02 A1 F C C1 47 AE 3D 19 m8i+4
si,3 A4 55 87 5A 58 DB 9E 03 m
8i+5
m8i+6
m8i+7
Pentru generarea S-cutiilor şi a cuvintelor cheii expandate se foloseşte funcţia h,
definită astfel:
Drept argumente sunt X (cuvânt) şi L = (L0 , L1 , . . . , Lk−1 ) – o listă de k cuvinte.
Rezultatul va fi un cuvânt Z.
1. li,j ←− bLi /28j c mod 28 , (0 ≤ i ≤ k − 1)
xj ←− bX/28j c mod 28 , (0 ≤ j ≤ 3) (cuvintele sunt sparte ı̂n octeţi)
2. yk,j ←− xj , (0 ≤ j ≤ 3)
3. if k = 4 then
y3,0 ←− q1 [y4,0 ] ⊕ l3,0 , y3,1 ←− q1 [y4,1 ] ⊕ l3,1 , y3,2 ←− q1 [y4,2 ] ⊕ l3,2 , y3,3 ←− q1 [y4,3 ] ⊕ l3,3
4. if k ≥ 3 then
y2,0 ←− q1 [y3,0 ] ⊕ l2,0 , y2,1 ←− q1 [y3,1 ] ⊕ l2,1 , y2,2 ←− q1 [y3,2 ] ⊕ l2,2 , y2,3 ←− q1 [y3,3 ] ⊕ l2,3
y0 ←− q1 [q0 [q0 [y2,0 ] ⊕ l1,0 ] ⊕ l0,0 , y1 ←− q0 [q0 [q1 [y2,1 ] ⊕ l1,1 ] ⊕ l0,1 ,
5.
y2 ←− q1 [q1 [q0 [y2,2 ] ⊕ l1,2 ] ⊕ l0,2 , y3 ←− q0 [q1 [q1 [y2,3 ] ⊕ l1,3 ] ⊕ l0,3
unde q0 şi q1 sunt permutări pe 8 biţi, definite detaliat ı̂n [6].
6. Z se obţine aplicând paşii 3 şi 4 din definiţia funcţiei g.
În acest moment putem defini:
g(X) = h(X, S)
În plus, i este indicele octetului ı̂n cadrul unui cuvânt care conţine acel octet, iar j
este indicele cuvântului ı̂n cadrul blocului care ı̂l conţine.
Criptarea se realizează ı̂n Nr runde, unde Nr depinde de Nb şi Nk . Valorile lui Nr sunt
date ı̂n tabelul:
Nr N b = 4 Nb = 6 N b = 8
Nk = 4 10 12 14
Nk = 6 12 12 14
Nk = 8 14 14 14
Fiecare rundă are la intrare o stare şi foloseşte o cheie de rundă. Cu excepţia rundei
finale, o rundă este formată din patru transformări, notate pe scurt:
• ByteSub(Stare);
• ShiftRow(Stare);
• MixColumn(Stare);
• AddRoundKey(Stare, Cheie).
Ultima rundă conţine numai trei transformări, fiind eliminată MixColumn(Stare). Să
vedem cum sunt definite aceste transformări:
Transformarea ByteSub se aplică tuturor octeţilor stării de intrare ı̂n rundă, rezul-
tatul fiind o altă stare de ieşire din rundă.
Inversa transformării se obţine aplicând fiecărui octet transforma-rea afină inversă,
după care se ia inversul multiplicativ din GF (28 ) (dacă octetul nu este nul).
• ShiftRow(Stare): La acest pas, liniile stării sunt permutate ciclic spre stânga. Numă-
rul de octeţi cu care se face ciclarea sunt: 0 pentru linia 0, Ci pentru linia i (1 ≤
i ≤ 3). Valorile Ci depind de lungimea Nb a blocului şi sunt date de tabelul
Nb C1 C2 C3
4 1 2 3
6 1 2 3
8 1 3 4
Exemplul 7.2 Aplicând transformarea ShiftRow stării din Exemplul 7.1 (unde
Nb = 6), vom obţine starea
b0 02 03 01 01 a0
b1 01 02 03 01 a1
=
b2 01 01 02 03 a2
b3 03 01 01 02 a3
14 PRELEGEREA 7. SISTEMUL DE CRIPTARE AES
Operaţia inversă este similară. Fiecare coloană este transformată prin ı̂nmulţire cu
polinomul invers lui c(X) modulo X 4 + 1; acesta este
d(X) = 0 0B 0 X 3 + 0 0D0 X 2 + 0 090 X + 0 0E 0
a0,0 a0,1 a0,2 a0,3 a0,4 a0,5 k0,0 k0,1 k0,2 k0,3 k0,4 k0,5
a1,0 a1,1 a1,2 a1,3 a1,4 a1,5 k k1,1 k1,2 k1,3 k1,4 k1,5
⊕ 1,0 =
a2,0 a2,1 a2,2 a2,3 a2,4 a2,5 k2,0 k2,1 k2,2 k2,3 k2,4 k2,5
a3,0 a3,1 a3,2 a3,3 a3,4 a3,5 k3,0 k3,1 k3,2 k3,3 k3,4 k3,5
b0,0 b0,1 b0,2 b0,3 b0,4 b0,5
b1,0 b1,1 b1,2 b1,3 b1,4 b1,5
b2,0 b2,1 b2,2 b2,3 b2,4 b2,5
b3,0 b3,1 b3,2 b3,3 b3,4 b3,5
2. Nr − 1 runde;
3. O rundă finală.
Înainte de aplicarea acestui algoritm (sau – eventual – ı̂n paralel) se foloseşte un algoritm
de obţinere a cheilor de rundă.
• Numărul total al biţilor din toate cheile de rundă este Nb (Nr + 1).
• Cheia de rundă se obţine luând primii Nb octeţi din Cheia Expandată, care nu au
fost folosiţi pentru alte chei.
Extinderea cheii
Cheia expandată (notată W [Nb (Nr + 1)]) este un tablou liniar ale cărui elemente sunt
cuvinte. Primele Nk cuvinte sunt cheia de criptare; celelalte cuvinte se obţin recursiv din
cuvintele definite anterior. Funcţia de extindere a cheii depinde de valoarea lui Nk ; există
o versiune pentru Nk ≤ 6 şi o alta pentru Nk > 6.
Pentru Nk ≤ 6 avem:
KeyExpansion(byte Key[4 ∗ Nk ] word W [Nb ∗ (Nr + 1)])
{
f or (i = 0; i < Nk ; i + +)
W [i] = (Key[4 ∗ i], Key[4 ∗ i + 1], Key[4 ∗ i + 2], Key[4 ∗ i + 3]);
f or (i = Nk ; i < Nb ∗ (Nr + 1); i + +)
{
temp = W [i − 1];
if (i % Nk == 0)
temp = SubByte(RotByte(temp)) ˆ Rcon(i/Nk );
W [i] = W [i − Nk ] ˆ temp;
}
}
În acest algoritm (scris ı̂n C + +), SubByte(W ) este o funcţie care ı̂ntoarce un cuvânt
ı̂n care fiecare octet este rezultatul aplicării S - boxului definit la transformarea ByteSub
fiecărui octet din cuvântul de intrare. RotByte(w) ı̂ntoarce un cuvânt ı̂n care octeţii sunt
rotiţi ciclic la stânga (pentru intrarea (a, b, c, d) ieşirea este (b, c, d, a)).
Esenţa algoritmului este următoarea: primele Nk cuvinte sunt completate cu cheia de
criptare. În continuare, fiecare cuvânt W [i] este egal cu W [i − 1] ⊕ W [i − Nk ]. Pentru
cuvintele care sunt pe poziţii multipli de Nk , ı̂nainte de această operaţie, lui W [i − 1] i se
aplică o permutare ciclică spre stânga a octeţilor, urmată de aplicarea unui S - box. În
plus, rezultatul este XOR - at ı̂ncă odată, cu o constantă de rundă.
Pentru Nk > 6, algoritmul este:
KeyExpansion(byte Key[4 ∗ Nk ] word W [Nb ∗ (Nr + 1)])
{
f or (i = 0; i < Nk ; i + +)
W [i] = (Key[4 ∗ i], Key[4 ∗ i + 1], Key[4 ∗ i + 2], Key[4 ∗ i + 3]);
f or (i = Nk ; i < Nb ∗ (Nr + 1); i + +)
{
temp = W [i − 1];
if (i % Nk == 0)
16 PRELEGEREA 7. SISTEMUL DE CRIPTARE AES
[1] Joan Daemen, Vincent Rijmen - The Rijndael Block Cipher Proposal,
http://csrc.nist.gov/CryptoToolkit/aes/
[2] Ross Anderson ş.a. - Serpent: A proposal for the Advanced Encryption Standard,
http://www.ftp.cl.cam.ac.uk/ftp/users/rja14/serpent.pdf
[5] Bruce Schneier - Applied Cryptography, Second Edition, John Wiley & Sons, 1996
17
Prelegerea 8
1
2 PRELEGEREA 8. CRIPTARE CU CHEIE PUBLICĂ
• Sistemul Merkle - Hellman: primul sistem definit cu cheie publică, bazat pe problema
{0, 1} a rucsacului, problemă N P - completă.
• Sistemul McEliece: este bazat pe teoria algebrică a codurilor, decodificarea unui cod
liniar fiind de asemenea o problemă N P - completă.
• Curbe eliptice: Sunt sisteme de criptare care ı̂şi desfăsară calculele pe mulţimea
punctelor unei curbe eliptice (ı̂n locul unui inel finit Zn ).
Exemplul 8.1 Ne putem imagina uşor străzile cu sens unic dintr-un oraş. Astfel, este
uşor ca mergând pe astfel de străzi să ajungi de la punctul A la punctul B, dar este
imposibil să ajungi de la B la A. În acest mod, criptarea este privită ca direcţia A → B;
deşi este foarte uşor de parcurs drumul ı̂n această direcţie, nu te poţi ı̂ntoarce ı̂napoi spre
A (adică să decriptezi mesajul).
Exemplul 8.2 Să considerăm cartea de telefon a unui oraş mare2 ; cu ajutorul ei este
foarte uşor să găsim numărul de telefon al unei anumite persoane. În schimb, este extrem
de greu - practic imposibil - să afli persoana care are un anumit număr de telefon. Te
afli ı̂n situaţia parcurgerii secvenţiale a (cel puţin) unui volum gros, ceea ce conduce la o
creştere exagerată a timpului.
Aceasta dă o sugestie de construcţie a unui sistem de criptare cu cheie publică. Criptarea
se face independent de context, literă cu literă. Pentru fiecare literă a textului clar se alege
un nume care ı̂ncepe cu acest caracter şi numărul de telefon al persoanei respective va con-
stitui criptarea. Sistemul este homofonic; douăapariţii diferite ale aceleiaşi litere vor fi
codificate foarte probabil cu numere diferite.
De exemplu, textul clar SOLIST se poate cripta astfel:
2
O carte de telefon expirată va duce la creşterea dificultăţii decriptării ilegale.
8.2. FUNCŢII NEINVERSABILE 3
Exemplul 8.3 Să considerăm ”problema rucsacului” Ea constă dintr-un vector de di-
mensiune n A = (a1 , a2 , . . . , an ) cu elemente numere ı̂ntregi pozitive distincte, şi un
număı̂ntreg pozitiv k. Trebuiesc aflaţi acei ai din A (dacă există) a căror sumă este
k. Numele intuitiv dat problemei este evident. De exemplu, fie
A = (43, 129, 215, 473, 903, 302, 561, 1165, 696, 1523) şi k = 3231.
Se determină 3231 = 129 + 473 + 903 + 561 + 1165, care este o astfel de soluţie (vom
da mai târziu o definiţie formală riguroasă a problemei).
În principiu o soluţie se poate găsi parcurgând sistematic toate submulţimile lui A şi
verificând dacă suma elementelor lor este k. În cazul de sus, aceasta ı̂nseamnă 210 − 1 =
1023 submulţimi (fără mulţimea vidă), dimensiune acceptabilă ca timp de lucru.
Ce se ı̂ntâmplă ı̂nsă dacă A are câteva sute de componente ? În acest caz se cunoaşte
faptul că problema rucsacului este N P - completă.
4 PRELEGEREA 8. CRIPTARE CU CHEIE PUBLICĂ
Exemplul 8.4 Sunt clase de probleme ale rucsacului uşor de rezolvat; una din ele o
formează vectorii cu creştere mare.
Spunem că vectorul rucsac A = (a1 , a2 , . . . , an ) este cu creştere mare dacă
j−1
X
∀ j ≥ 2, aj ≥ ai .
i=1
În acest caz, pentru a rezolva problema rucsacului este suficient să parcurgem vectorul
A de la dreapta spre stânga. Cunoscând valoarea k, cercetăm ı̂ntâi valoarea de adevăr
a relaţiei k ≥ an . Dacă răspunsul este FALSE, an nu poate aparţine sumei pe care o
căutăm. Dacă ı̂nsă se obţine TRUE, an trebuie să fie ı̂n sumă, deoarece toate elementele
ai rămase nu pot depăşi ı̂n sumă pe( k. Vom defini
k dacă an > k
k1 =
k − an dacă an ≤ k
şi repetăm procedeul pentru k şi a1 . Algoritmul se va opri la valoarea a1 .
Să presupunem că avem vectorul rucsac cu creştere mare
A = (1, 3, 5, 11, 21, 44, 87, 175, 349, 701)
şi vrem să decodificăm mesajul 278. Vom parcurge 10 paşi, sumarizaţi ı̂n tabelul:
Număr 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 obţine secvenţa binară 00110 01100 care - conform codificării din Exemplul 8.3
corespunde perechii de litere F L.
Dacă se foloseşte ı̂nsă public o astfel de informaţ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Ă
că pentru orice intrus aflarea mesajului clar trebuie să se reducă la rezolvarea unei prob-
leme N P - complete.
Exemplul 8.5 Pentru sistemul bazat pe problema rucsacului, Bob va proceda astfel: va
m
X
alege un număr m (m > ai ) numit modul şi un număr t, (m, t) = 1 numit multipli-
i+1
cator. Există atunci un număr s astfel ca m · s ≡ 1 (mod m).
Plecând de la vectorul cu creştere mare A = (a1 , a2 , . . . , an ) Bob generează vectorul
B = (b1 , b2 , . . . , bn ) unde bi = t · ai (mod m).
Vectorul B este declarat public pentru criptare, iar m, t şi s vor forma trapa secretă a
lui Bob.
Astfel, dacă luăm m = 1590 şi t = 43, vectorul cu creştere mare
devine
B = (43, 129, 215, 473, 903, 302, 561, 1165, 697, 1523),
adică cel prezentat ı̂n exemplul 8.3. În plus, s = t−1 = 37.3
Cum se va proceda: Cel care doreşte să trimită lui Bob un mesaj criptat va folosi
vectorul rucsac B şi va cripta mesajul x ı̂n y = B · BxT , conform Exemplului 8.3.
La recepţie, Bob va calcula ı̂ntâi z = s · y (mod m), după care va decripta mesajul z
folosind vectorul cu creştere mare A. Se poate arăta uşor că soluţia este chiar x.
Astfel, de exemplu Alice poate cripta mesajul F L ı̂n 2414 (cf. Exemplului 8.3). La
primirea acestui număr, Bob va determina ı̂ntâi s · 2414 = 37 · 2414 (mod 1590) = 278. În
Exemplul 8.4 s-a văzut că decriptarea mesajului 278 cu vectorul A conduce la textul clar
F L.
Putem trasa acum câteva principii generale de construire a unui sistem de criptare cu
cheie publică:
În funcţie de aceste principii generale, apar ı̂n detalii de construcţie multe alte probleme
pe care constructorii sistemelor de criptare trebuie să le rezolve.
• Un criptanalist activ poate efectua cu succes un atac de tipul meet in the middle. Să
presupunem că Alice şi Bob doresc să stabilească un contact. Ei fac publice cheile de
criptare eA respectiv eB . Dacă contactul este nepersonalizat, Oscar poate controla
mesajele schimbate ı̂ntre cei doi, ı̂n felul următor:
1. Oscar ”opacizează” printr-un mijloc oarecare aceste chei, şi trimite lui Alice
cheia e1B ca din partea lui Bob; substituie – similar – pentru Bob cheia eA cu
e1A .
8 PRELEGEREA 8. CRIPTARE CU CHEIE PUBLICĂ
2. Fie m mesajul pe care Alice vrea să ı̂l trimită lui Bob. Ea va cripta şi va trimite
y1 = e1B (m).
3. Oscar interceptează mesajul (reamintim, toate canalele sunt nesigure) şi află
m = d1B (y1 ).
4. Oscar recriptează y = eB (m) şi trimite y lui Bob.
Din această cauză, aproape ı̂n toate sistemele de criptare cu cheie publică apare nece-
sitatea autentificării mesajului sau a expeditorului, precum şi aceea a confidenţialităţii.
Definiţia 8.2 Autentificarea5 este procesul prin care un calculator (program de calculator
sau alt utilizator) ı̂ncearcă să confirme unui destinatar că mesajul primit de acesta vine
(sau nu vine) din partea sa.
Metodele prin care un expeditor uman se poate autentifica sunt clasificate ı̂n:
1. ”ceva ce utilizatorul este” (de exemplu amprente digitale, de retină, de voce, secvenţă
DNA, recunoaşterea semnăturii, identificatori biometrici).
2. ”ceva de utilizatorul are” (de exemplu card ID, date de securitate soft pe calculator
sau telefon).
4. Orice combinaţie ı̂ntre metodele anterioare (de exemplu un card bancar cu PIN
asigură o dublă autentificare).
Alt termen frecvent utilizat este cel de integritate. El se referă la validitatea datelor.
Definiţia 8.3 Integritatea este siguranţa că datele la care se referă un utilizator pot fi
accesate şi pot fi modificate numai de cei autorizaţi să o facă.
1. Prin alterare intenţionată (de exemplu modificarea 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. COMPARAŢIE ÎNTRE CRIPTAREA SIMETRICĂ ŞI CEA CU CHEIE PUBLICĂ9
1. Pot transmite volume mari de date. Există implementări hard care pentru unele
sisteme de criptare pot asigura rate de criptare de sute de mega-octeţi pe secundă
(sunt şi implementări soft cu rate de mega-octeţi pe secundă).
2. Cu cât lungimea unui mesaj criptat este mai mare, cu atât el este mai uşor de spart.
4. Necesită un canal sigur de comunicare, cel puţin pentru transmiterea cheii. Acest
lucru devine dificil mai ales pentru sistemele care necesită schimbări frecvente ale
cehilor de criptare/decriptare.
Avantaje ale sistemelor de criptare cu cheie punlică
1. Sistemul este ideal pentru transmiterea informaţiei prin canale nesigure.
4. Implementarea trebuie realizată cu foarte mare grijă. Sisteme cu grad ridicat teo-
retic de securitate pot fi sparte uşor printr-o implementare neglijentă.
După cum se observă, cele două clase de sisteme de criptare dispun de o serie de avantaje
complementare. Acest lucru face ca ele să fie folosite combinat.
Exemplul 8.8 Multe sisteme de criptare ı̂ncep comunicarea transmiţând via un sistem cu
cheie publică, cheia unui sistem simetric. În faza a doua, mesajele sunt criptate folosind
sistemul simetric de criptare. Aceasta asigură o viteză mult mai mare de transmitere şi
un spor de autentcitate a mesajelor.
12 PRELEGEREA 8. CRIPTARE CU CHEIE PUBLICĂ
Bibliografie
13
Prelegerea 10
Exemplul 10.1 Să presupunem că Bob alege p = 101, q = 113. Atunci n = 11413, φ(n) =
11200. Deoarece 11200 = 26 52 7, un număr b poate fi utilizat ca exponent de criptare dacă
1
Sistemul este prezentat ı̂n 1977 de Ron Rivest, Adi Shamir şi Len Adleman ı̂n cadrul unui proiect
de cercetare la MIT. Totuşi, după declasificarea ı̂n 1997 a unor documente din Marea Britanie, se pare
că matematicianul Clifford 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
şi numai dacă nu este divizibil cu 2, 5 sau 7 (practic, Bob nu trebuie să factorizeze φ(n);
este suficient să verifice dacă (φ(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 şi b = 3533.
Dacă Alice doreşte să-i transmită lui Bob mesajul 9726, ea calculează
97263533 mod 11413 = 5761
şi trimite prin canal textul criptat 5761. Când Bob primeşte acest număr, el determină
57616597 mod 11413 = 9726.
Securitatea sistemului de criptare RSA se bazează pe ipoteza că funcţia eK (x) = xb mod n
este neinversabilă din punct de vedere al complexităţii, deci este imposibil pentru Oscar
să o determine. Trapa secretă de care dispune Bob pentru decriptare este descompunerea
n = pq. Deoarece Bob ştie această factorizare, el poate calcula φ(n) = (p − 1)(q − 1)
şi apoi determina exponentul de decriptare a folosind algoritmul lui Euclid extins (a se
vedea Anexa).
Tabelul 10.1:
recomandă de aceea – pentru siguranţă – să se lucreze cu numere prime p şi q de cel puţin
300 cifre fiecare, deci n va avea peste 500 cifre. Aproape toate implementările actuale ale
sistemului folosesc chei de 1024 − 2048 biţi2 .
Cu intenţia că vom reveni asupra problemelor legate de numere prime mari, să studiem
ı̂ntâi operaţiile necesare pentru criptare şi decriptare. Orice astfel de calcul se bazează
pe o exponenţiere modulo n. Cum n este foarte mare, vom utiliza aritmetica numerelor
mari pentru lucrul ı̂n Zn , timpul de calcul necesar fiind direct proporţional cu numărul
de biţi ai lui n.
Dacă n ocupă k biţi ı̂n memorie (deci k = [log2 n] + 1), prin metode de calcul uzuale
se ajunge la concluzia că suma a două numere de k biţi se face ı̂n O(k), iar ı̂nmulţirea ı̂n
O(k 2 ). La fel şi reducerea modulo n. Deci, pentru x, y ∈ Zn , numărul xy mod n se poate
determina prin calcule de complexitate O(k 2 ). Conform prelegerii anterioare, vom numi
aceasta multiplicare modulară.
Să cercetăm acum exponenţierea modulară xc mod n. O modalitate de calcul constă ı̂n
efectuarea de c−1 multiplicări modulare - proces foarte ineficient pentru c mare, deoarece
algoritmul devine de complexitate exponenţială.
Există ı̂nsă un algoritm de exponenţiere rapidă, care realizează xc mod n cu complex-
itate O(k 3 ) (deci polinomial). Acesta utilizează descompunerea binară a lui c,
s−1
ci 2i
X
c=
i=0
unde s (s ≤ k) este numărul de biţi ai lui c, iar ci ∈ {0, 1}. Exponenţierea se face doar
prin ridicări la pătrat şi maxim s ı̂nmulţiri modulare, conform algoritmului:
z ←− 1;
for i ←− s − 1 downto 0 do
z ←− z 2 mod n;
if ci = 1 then z ←− z · x mod n
Exemplul 10.2 Să reluăm datele din Exemplul 10.1. Calculul lui 97263533 mod 11413 se
efectuează cu algoritmul de sus ı̂n numai 12 paşi; anume:
2
Un număr n de maxim 256 biţi poate fi factorizat de un PC obişnuit ı̂n câteva ore, folosind un soft
free. Dacă n are până la 512 biţi, el poate fi factorizat folosind o reţea de câteva sute de calculatoare,
conform unei scheme prezentate ı̂n 1999. În 2003 a fost pusă sub semnul ı̂ntrebării securitatea modulelor
de 1024 biţi.
4 PRELEGEREA 10. SISTEMUL DE CRIPTARE RSA
i ci z
2
11 1 1 · 9726 = 9726
10 1 97262 · 9726 = 2659
9 0 26592 = 5634
8 1 56342 · 9726 = 9167
7 1 91672 · 9726 = 4958
6 1 49582 · 9726 = 7783
5 0 77832 = 6298
4 0 62982 = 4629
3 1 46292 · 9726 = 10185
2 1 101852 · 9726 = 105
1 0 1052 = 11025
0 1 110252 · 9726 = 5761
Deci textul clar 9726 este criptat de Alice ı̂n 5761.
Pentru aplicarea sistemului de criptare RSA, trebuiesc generate ı̂ntâi numerele prime
p, q - despre care ne ocupăm ı̂n secţiunea următoare. Etapa a doua (din Tabelul 10.1) se
efectuează evident ı̂n O((log2 n)2 ). Etapele 3 şi 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((log2 a)2 ).
În general, un algoritm RSA este cam de 1000 ori mai lent decât DES pentru o
implementare harwdare, cam de 100 ori la o implementare software. În [3] se dau câteva
tabele cu astfel de valori comparative, la nivelul anului 1995.
Definiţia 10.4 Dacă p ≥ 3 este prim, pentru orice număr a ≥ 0 se defineşte simbolul
Legendre prin
! 0 dacă a ≡ 0 (mod p)
a
= 1 dacă a este rest pătratic modulo p
p
−1
dacă a nu este rest pătratic modulo p
Teorema 10.1 asigură că a(p−1)/2 ≡ 1 (mod p) dacă şi numai dacă a este rest pătratic
modulo p. Dacă a este multiplu de p, evident a(p−1)/2 ≡ 0 (mod p). În sfârşit, dacă a nu
este rest pătratic modulo p, avem a(p−1)/2 ≡ −1 (mod p) deoarece ap−1 ≡ 1, a(p−1)/2 6≡
1 (mod p) şi −1 este singura rădăcină pătrată diferită de 1 modulo p. Este deci adevărată
teorema următoare:
Definiţia 10.5 Fie n = pe11 . . . pekk un număr impar descompus ı̂n factori primi. Dacă
a ≥ 0 este un număr ı̂ntreg, se defineşte simbolul Jacobi prin
k
!ei
a a
Y
=
n i=1 pi
6278
Exemplul 10.4 Să calculăm simbolul Jacobi . Descompunerea ı̂n factori primi
9975
2
a lui 9975este9975 = 3 · 5 · 7 ·19. Avem
atunci
6278 2 6278
2
6278 6278 6278 2 3 6 8
= = = (−1)(−1)2 (−1)(−1) =
9975 3 5 7 19 3 5 7 19
−1
a
Fie n > 1 un număr impar. Dacă n este prim, atunci pentru orice a, avem ≡
n−1
n
a (mod n).
2
Invers, dacă n nu este prim, este posibil ca egalitatea de sus să fie falsă. Dacă
congruenţa se verifică, spunem că n este număr Euler pseudo - prim pentru baza a.
De exemplu, 91 este pseudo-prim pentru baza 10 deoarece
10
= −1 = 1045 (mod 91).
91
Putem enunţa acum testul de primalitate Solovay - Strassen pentru un număr impar
n:
10.3. TESTE DE PRIMALITATE PROBABILISTE 7
n−1
Pentru evaluarea a (mod n) se poate folosi un algoritm
2 de complexitate O((log n)3 ).
a
Problema este cum putem evalua simbolul Jacobi x ←− fără a factoriza pe n (altfel
n
ne ı̂nvârtim ı̂ntr-un cerc vicios !!).
Acest lucru se poate realiza folosind câteva proprietăţi. Anume:
x·y x y
3. = · ;
n n n
O analiză sumară arată că se poate calcula simbolul Jacobi m n
folosind cel mult O(log n)
2
reduceri modulare, fiecare ı̂n timp O((log n) ). Deci complexitatea poate fi estimată la
O((log n)3 )3 .
Se poate arăta că numărul de baze a pentru care un număr neprim n este pseudo -
prim Euler, este cel mult n/2. Aceasta duce la concluzia că 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 aplicării acestui test de
primalitate şi a probabilităţii de eroare se poate găsi ı̂n [1].
3. b ←− am (mod n)
5. for i ←− 0 to k − 1 do
Teorema 10.3 Algoritmul Miller - Rabin este un algoritm Monte Carlo pozitiv pentru
problema de descompunere.
Demonstraţie: Să presupunem prin absurd că algoritmul răspunde că un număr prim n
se poate descompune, adică am 6≡ 1 (mod n). Vom urmări şirul de valori pe care le ia b.
k−1
Cum la fiecare iterare b este ridicat la pătrat, acest şir este am , a2m , . . . , a2 m . Vom avea
deci
i
a2 m 6≡ −1 (mod n) pentru 0 ≤ i ≤ k − 1.
3
O analiză mai detaliată poate reduce această complexitate la O((log n)2 ).
10.3. TESTE DE PRIMALITATE PROBABILISTE 9
k k−1
Deoarece n este prim, teorema lui Fermat dă a2 m ≡ 1 (mod n). Deci a2 m este o
rădăcină pătrată a lui 1 modulo n.
Din faptul că n este prim, singurele rădăcini pătrate ale lui 1 sunt ±1. Această
afirmaţie se poate arăta astfel:
x este rădăcină pătrată a lui 1 dacă şi numai dacă n|(x − 1)(x + 1). Cum n este prim,
avem n|(x − 1) (deci x ≡ 1 (mod n)) sau n|(x + 1) (adică x ≡ −1 (mod n)).
k−1 k−1
Cum prin ipoteză a2 m 6≡ −1 (mod n), avem a2 m ≡ 1 (mod n).
k−2
Atunci a2 m trebuie să fie rădăcină pătrată a lui 1, diferită de −1, deci
k−2
a2 m ≡ 1 (mod n).
Procedând iterativ, se ajunge la am ≡ 1 (mod n), ceea ce contrazice faptul că algorit-
mul nu s-a oprit la Pasul 4.
Dacă n este un număr impar neprim, atunci maxim 1/4 din numerele a ∈ Zn∗ conduc
la un rezultat fals. În [4] se apreciază că numărul maxim de astfel de valori este φ(n)/4,
pentru n 6= 9.
De exemplu, pentru n = 91 (neprim), mulţimea valorilor a pentru care algoritmul
dă răspuns 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
În general se consideră că testul Miller - Rabin este mai bun decât Solovay - Strassen.
Câteva motive:
2. Implementarea lui Solovay - Strasen este mai dificilă din cauza calculului simbolului
Jacobi.
3. Probabilitatea de eroare pentru Solovay - Strasen este 1/2, pe când la Miller - rabin
ea se reduce la 1/4.
4. Deoarece orice valoare a lui a pentru care testul Miller - Rabin este greşit este
un număr Euler pseudo-prim (vezi Exerciţiul 10.8), un test Miler - Rabin nu este
niciodată inferior unui test Solovay - Strasen.
3. Se verifică dacă p nu este divizibil cu numere prime mici (3, 5, 7, 11, . . .)4 .
10.4 Anexă
10.4.1 Algoritmul lui Euclid extins
După cum se ştie, algoritmul lui Euclid constituie o modalitate eficace de determinare a
celui mai mare divizor comun a două numere ı̂ntregi pozitive. El poate fi extins pentru a
determina şi inversele elementelor dintr-un corp finit Zn .
Să reamintim ı̂ntâi algoritmul lui Euclid (forma clasică):
Fie r0 , r1 ∈ N ∗ . Se efectuează secvenţa de ı̂mpărţiri succesive:
r 0 = q1 r 1 + r 2 0 < r2 < r1
r 1 = q2 r 2 + r 3 0 < r3 < r2
..
. (1)
rm−2 = qm−1 rm−1 + rm 0 < rm < rm−1
rm−1 = qm rm .
Deoarece (r0 , r1 ) = (r1 , r2 ) = . . . = (rm−1 , rm ) = rm , rezultă că cel mai mare divizor
comun dintre r0 şi r1 este rm .
Să definim acum şirul t0 , t1 , . . . , tm astfel:
t0 = 0, t1 = 1
tj = tj−2 − qj−1 tj−1 (mod r0 ), j ≥ 2 (2)
Teorema 10.4 Pentru 0 ≤ j ≤ m avem rj ≡ tj r1 (mod r0 ) unde rj şi tj sunt definite de
(1) respectiv (2).
Demonstraţie: Se foloseşte o inducţie după j. Pentru j = 0 şi j = 1 afirmaţia este banală.
O presupunem adevărată pentru j = i − 1 şi j = i − 2 (i ≥ 2) şi să o arătăm pentru j = i.
Toate calculele se fac modulo r0 .
Conform ipotezei de inducţie, ri−2 = ti−2 r1 , ri−1 = ti−1 t1 . Acum:
ri = ri−2 − qi−1 ri−1 = ti−2 r1 − qi−1 ti−1 r1 = (ti−2 − qi−1 ri−1 )r1 = ti r1 . 2
Corolarul 10.1 Dacă (r0 , r1 ) = 1 atunci tm = r1−1 (mod r0 ).
4
Multe implementări testează divizibilitatea cu numerele prime mai mici decât 256. Eficienţa este
crescută dacă se merge până la 2000
10.4. ANEXĂ 11
Se poate da acum algoritmul extins al lui Euclid care pentru n > 1 şi b ∈ Zn∗ va determina
b−1 mod n (dacă există).
1. n0 ←− n, b0 ←− b, t0 ←− 0, t ←− 1
n0
2. q ←− , r ←− n0 − q · b0
b0
3. while r > 0 do
3.1. temp ←− t0 − q · t
3.2. if temp ≥ 0 then temp ←− temp (mod n)
else temp ←− n − ((−temp) (mod n))
3.3. n0 ←− b0 ,b0 ←− r, t0 ←− t, t ←− temp
n0
3.4. q ←− , r ←− n0 − q · b0
b0
4. if b0 6= 1 then b nu are inversă mod n
else b−1 (mod n) = t.
Exemplul 10.6 Să calculăm 28−1 mod 75, folosind algoritmului lui Euclid extins. Vom
avea pe rând:
n 0 b0 q r t0 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
Demonstraţie: Pentru fiecare i, (pi , n/pi ) = 1; deci există numerele yi astfel ı̂ncât
n
· yi ≡ 1 (mod pi ).
pi
n
De asemenea, pentru j 6= i, deoarece pj |(n/pi ), avem · yi ≡ 0 (mod pj ).
pi
Alegem
r
X n
x= · yi · ai (mod n).
i=1 pi
12 PRELEGEREA 10. SISTEMUL DE CRIPTARE RSA
Pentru orice i, x este o soluţie a ecuaţiei x ≡ ai (mod pi ) deoarece ı̂n Zpi avem
n
x = · y i · ai = ai . 2
pi
n
Exemplul 10.7 Fie r = 3, p1 = 7, p2 = 11, p3 = 13, deci n = 1001. Notând mi = ,
pi
avem m1 = 143, m2 = 91 şi m3 = 77. Folosind algoritmul lui Euclid, se obţine y1 =
5, y2 = 4, y3 = 12. Soluţia generală este atunci
x = 715a1 + 364a2 + 924a3 (mod 1001).
De exemplu, pentru sistemul
x ≡ 5 (mod 7), x ≡ 3 (mod 11), x ≡ 10 (mod 13)
formula de sus dă
x = 715 · 5 + 364 · 3 + 924 · 10 (mod 1001) = 13907 (mod 1001) = 894.
Verificarea se realizează reducând x modulo 7, 11 13.
10.5 Exerciţii
10.1 Demonstraţi lemele 10.1 şi 10.2.
(p − 1)(q − 1)
λ(n) =
cmmdc(p − 1, q − 1)
Folosim un sistem de criptare RSA ı̂n care s-a făcut modificarea a · b ≡ 1 (mod λ(n)).
(a) Demonstraţi că operaţiile de criptare şi decriptare sunt operaţii inverse şi ı̂n acest
sistem.
(b) Dacă p = 37, q = 79 şi b = 7, calculaţi valoarea exponentului a atât ı̂n acest
sistem cât şi ı̂n sistemul RSA normal.
10.3 Să se arate că pentru orice număr n egal cu produsul primelor k (k ≥ 2) numere
prime impare testul Miller - Rabin dă rezultat corect pentru orice ı̂ntreg a ∈ [2, n − 2].
1. xp ←− y dp (mod p);
2. xq ←− y dq (mod q);
3. x ←− Mp · q · xp + Mq · p · xq (mod n);
4. return(x).
10.5. EXERCIŢII 13
10.5 Pentru n = 837, 851 1189 aflaţi numărul de baze b pentru care n este un numărul
n este Euler pseudo-prim.
10.6 Scrieţi un program pentru calculul simbolului Jacobi, folosind lemele 10.1 şi 10.2.
Singura operaţie de factorizare permisă este ı̂mpărţirea la 2. valori de test:
10.7 Fie
a
n−1
G(n) = a|a ∈ Zn∗ , ≡ a 2 (mod n) .
n
(a) Demonstraţi că G(n) este subgrup al lui Zn . Deci, conform Teoremei lui Lan-
grance, dacă subgrupul este propriu, atunci
|Zn∗ | n−1
|G(n)| ≤ ≤ .
2 2
(b) Să presupunem că n = pk · q, unde p şi q sunt numere impare prime ı̂ntre ele, p
este prim şi k ≥ 2. Fie a = 1 + pk−1 · q. Demonstraţi că
a
n−1
6≡ a 2 (mod n).
n
(c) Fie n = p1 p2 . . . ps unde pi sunt numere prime impare distincte. Să presupunem
că a ≡ 1 (mod p1 ) şi a ≡ 1 (mod p2 p3 . . . ps ), unde u este un non-reziduu pătratic modulo
p1 (un astfel de a există, conform teoremei chineze a restului). Demonstraţi că
a
n−1
≡ −1 (mod n), a 2 6≡ −1 (mod p2 p3 . . . ps )
n
n−1
(deci a 2 6≡ −1 (mod n).
n−1
(d) Dacă n este un număr neprim impar, arătaţi că |G(n)| ≤ .
2
(e) Pe baza celor de mai sus, arătaţi că probabiltatea de eroare a testului de primalitate
Solovay - Strassen este cel mult 1/2.
10.8 Să se arate că orice număr a pentru care testul Miller - Rabin dă rezultat fals este un
număr Euler pseudo-prim. Reciproca este adevărată dacă şi numai dacă n ≡ 3 (mod 4).
14 PRELEGEREA 10. SISTEMUL DE CRIPTARE RSA
Să se găsească o formulă pentru u−1 şi să se determine cu ajutorul ei u−1 (2, 2, 3).
[1] D. Stinton, Cryptography, Theory et Pratice, Second Edition, Chapman & Hall/CRC
2002
[3] B. Schneier, Applied Cryptography, Second Edition, John Wiley & Sons, 1996
[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
120–126.
15
Prelegerea 11
Vom trece ı̂n revistă câteva modalităţi de atac ale sistemelor de criptare RSA.
Ca o primă observaţie, RSA nu rezistă la un atac de tipul meet-in-the middle, strategia
fiind cea prezentată ı̂n cazul general al sistemelor de criptare cu cheie publică. De aceea,
un sistem RSA este ı̂nsoţit permanent de un certificat generat conform unui protocol
P KI (Public Key Infrastructure) şi – bineı̂nţeles – de un generator de numere prime.
1
2 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
√
Exemplul 11.1 Pentru n = 97343 se găseşte n = 311, 998. Apoi 3122 − n = 1, ceea ce
conduce la factorizarea p = 313, q = 311.
Deci, ı̂n general este recomandabil ca cele două numere prime p şi q să difere prin lungime.
Definiţia 11.1 Fie (0 ≤ < 1). Un algoritm tip Las Vegas este un algoritm probabilist
care, pentru orice apariţie a unei probleme, poate oferi un răspuns - totdeauna corect -
sau poate eşua şi să nu dea nici un răspuns, cu probabilitate .
Observaţia 11.1 Un algoritm Las Vegas poate să nu dea răspuns, dar dacă dă - acest
răspuns este sigur corect. Algoritmii Monte Carlo ı̂n schimb dau totdeauna răspuns, deşi
acesta uneori este incorect.
Deci, dacă avem un algoritm Las Vegas pentru rezolvarea unei probleme, putem să ı̂l
apelăm de mai multe ori, până se obţine un răspuns. Probabilitatea ca el să nu răspundă
la m tentative consecutive este m .
Să considerăm un algoritm ipotetic A care calculează exponentul de decriptare a
plecând de la exponentul de criptare b. Se poate descrie atunci un algoritm Las Vegas
care utilizează A ca oracol. El este bazat pe studiul rădăcinilor pătrate ale unităţii modulo
n, când n = pq, p şi q fiind numere prime impare. În acest caz x2 ≡ 1 (mod p) are ca
singure soluţii x ≡ ±1 (mod p). La fel, x2 ≡ 1 (mod q) are soluţiile x ≡ ±1 (mod q).
Din Teorema chineză a resturilor rezultă că x2 ≡ 1 (mod n) este echivalentă cu
x2 ≡ 1 (mod p) şi x2 ≡ 1 (mod q). Vom avea deci patru rădăcini pătrate ale unităţii
modulo n, care pot fi calculate cu Teorema chineză a resturilor. Două sunt soluţiile triviale
±1 (mod n), iar celelalte - numite netriviale - sunt opuse modulo n.
Exemplul 11.2 Fie n = 403 = 13 · 31. Cele patru rădăcini pătrate ale lui 1 modulo 403
sunt 1, 92, 311 şi 402.
1
program care răspunde numai cu Da/Nu la o ı̂ntrebare - tip a utilizatorului
11.2. EXPONENTUL DE DECRIPTARE 3
Să presupunem acum că x este o rădăcină pătrată netrivială a lui 1 modulo n, deci o
soluţie a ecuaţiei x2 ≡ 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(x−1, n) = q - sau invers - cmmdc(x+1, n) = q, cmmdc(x−
1, n) = p. Acest cel mai mare divizor comun se poate calcula fără a şti descompunerea
lui n, construind algoritmul de mai jos, care foloseşte A ca oracol:
1. Se generează aleator w ∈ Zn∗ , w 6= 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 = 2s r, r impar;
6. v ←− wr (mod n);
7. if v ≡ 1 (mod n) then Stop (eşec);
8. while v 6≡ 1 (mod n) do
8.1. v0 ←− v;
8.2. v ←− v 2 (mod n);
9. if v0 ≡ −1 (mod n) then Stop (eşec);
else x ←− cmmdc(v0 + 1, n), Stop (p = x sau q = x).
Deci, cunoaşterea unei rădăcini pătrate netriviale a lui 1 modulo n determină des-compunerea
lui n printr-un calcul de complexitate polinomială.
Exemplul 11.3 Fie n = 89855713, b = 34986517, a = 82330933 şi să considerăm că
s-a tras aleator w = 5. Vom avea:
ab − 1 = 23 · 360059073378795.
La pasul 6 se obţine v = 85877701, iar la pasul 8.2, v = 1. La pasul 9 se va obţine
atunci cmmdc(85877702, n) = 9103.
Acesta este un factor al lui n; celălalt este n/9103 = 9871.
Trebuie demonstrată următoarea afirmaţie:
Afirmaţia 11.1 Procedeul descris este un algoritm.
Demonstraţie: Ca o primă observaţie, dacă există suficientă şansă şi w este multiplu de p
sau q, atunci el se factorizează imediat (pasul 2).
Dacă w este prim cu n, atunci se calculează succesiv wr , w2r , . . . prin ridicări succesive
t
la pătrat, până se ajunge la un t cu w2 r ≡ 1 (mod n). Deoarece ab − 1 = 2s r ≡
s
0 (mod φ(n)), se ştie că w2 r ≡ 1 (mod n). Deci bucla while va efectua maxim s iteraţii.
La sfârşitul buclei se va găsi o valoare v0 6≡ 1 (mod n) cu v02 ≡ 1 (mod n). Dacă
v0 ≡ −1 (mod n), algoritmul eşuează; altfel, v0 este o rădăcină pătrată netrivială a lui 1
modulo n care - la pasul 12 - permite descompunerea lui n. 2
Se poate arăta ([2]) că acest algoritm se termină cu succes cu probabilitate 1/2.
4 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
Deci, dacă n are j biţi, atunci atacul va fi eficient pentru orice sistem de criptare RSA ı̂n
care a are mai puţin de j/4 − 1 biţi, iar p şi q sunt suficient de apropiaţi2 .
Din condiţia a · b ≡ 1 (mod φ(n)) rezultă că există un număr ı̂ntreg t astfel ca
a · b − t · φ(n) = 1.
√
Pe de-altă parte, din n = pq > q 2 rezultă q < n, deci
√
0 < n − φ(n) = pq − (p − 1)(q − 1) = p + q − 1 < 2q + q − 1 < 3q < 3 n
Deoarece t < a (evident), vom avea 3 · t < 3 · a < n1/4 şi deci
b t 1 1
− < < .
n a a · n 1/4 3 · a2
Rezultă că valoarea fracţiei t/a este foarte apropiată de valoarea lui b/n. Din teoria
fracţiilor continue se ştie că orice aproximare suficient de bună a lui b/n este una din
convergenţele dezvoltării ı̂n fracţie continuă a lui b/n. Să descriem acest procedeu.
Definiţia 11.2 O fracţie continuă (finită) este un m-tuplu de numere naturale [q1 , q2 , . . . , qm ]
care reprezintă notarea expresiei
1
q1 + 1
q2 + q3 +...+ q1
m
Fie a, b două numere ı̂ntregi pozitive prime ı̂ntre ele şi (q1 , q2 , . . . , qm ) secvenţa câturilor
a
obţinute prin aplicarea algoritmului lui Euclid. Se verifică uşor că = [q1 , q2 , . . . , qm ].
b
Vom spune că [q1 , q2 , . . . , qm ] este dezvoltarea ı̂n fracţie continuă a lui a/b.
2
Bob poate fi tentat să aleagă astfel de parametri, pentru creşterea vitezei de decriptare; reamintim,
RSA este un sistem relativ lent.
11.2. EXPONENTUL DE DECRIPTARE 5
Exemplul 11.4 Să dezvoltăm ı̂n fracţie continuă 34/99. Folosind algoritmul lui Euclid
se obţine [0, 2, 1, 10, 3], care este notarea fracţiei
34 1
=0+
99 2 + 1+ 1 1
10+ 1
3
1. Plecând de la n şi b (publice), se află dezvoltarea ı̂n fracţie continuă a lui b/n
(folosind algoritmul lui Euclid).
Dacă sunt ı̂ndeplinite ipotezele de la ı̂nceputul acestui paragraf, Teorema 11.1 asigură că
există o convergenţă care satisface pasul 2 al algoritmului.
Ţinând cont de observaţiile anterioare, algoritmul lui Wiener poate fi detaliat:
6 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
Exemplul 11.5 Să presupunem că n = 160523347, b = 60728973. Dezvoltarea ı̂n fracţie
continuă a lui b/n este
Vom arăta ([3]) că orice algoritm care poate calcula par(y) sau jum(y) poate fi utilizat ca
oracol pentru regăsirea textului clar x. Altfel spus, a calcula una din aceste funcţii este
la fel de dificil cu a decripta tot textul y.
Faptul că cele două funcţii sunt polinomial echivalente rezultă din
1. k ←− [log2 n];
2. for i = 0 to k do
2.1. yi ←− jum(y)
2.2. y ←− (y · eK (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 yi = 1 then jos ←− mijloc
else sus ←− mijloc
6. x ←− [sus]
Exemplul 11.6 Fie n = 1457, b = 779, iar textul criptat este y = 722. Calculăm
eK (2) = 946. Să presupunem că oracolul jum din pasul 3 dă următoarele răspunsuri:
i 0 1 2 3 4 5 6 7 8 9 10
yi 1 0 1 0 1 1 1 1 1 0 0
11.4.1 Metoda p − 1
Un algoritm simplu care se poate aplica uneori şi la numere mari este metoda p − 1
enunţată de Pollard ı̂n 1974. El foloseşte esenţial trei variabile de intrare: numărul
n (impar) care trebuie descompus, o margine B şi un număr oarecare g ∈ [2, n − 1].
Descrierea algoritmului este:
Intrare: n, B, g.
1. a ←− g
2. for j = 2 to B do a ←− aj mod n
3. d ←− cmmdc(a − 1, n)
4. if d > 1 then ”d este factor al lui n”, Stop
else ”nu s-a găsit divizor al lui n”
Să vedem cum funcţionează acest algoritm:
Presupunem că p este un divizor prim al lui n şi că toţi divizorii primi ai lui p − 1 – la
puterile la care apar ı̂n descompunerea lui p − 1 – sunt mai mici decât B. Atunci p − 1|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 ÎN FACTORI PRIMI 9
deoarece p|n. Cum g p−1 ≡ 1 (mod p) conform teoremei lui Fermat (ı̂n afară de cazul
când p|g) şi cum (p − 1)|B!, se obţine a ≡ 1 (mod p).
Deci, la pasul 3 se ajunge la p|(a − 1) şi p|n, de unde rezultă p|d = (a − 1, n).
Numărul d este un divizor netrivial al lui n (ı̂n afară de cazul a = 1 la pasul 3). Având
un divizor netrivial d, procesul se poate itera.
Observaţia 11.2 Condiţia ca metoda să funcţioneze este ca divizorii primi la puterile
la care apar ı̂n descompunerea lui p−1 să fie mai mici decât b. Dacă s-ar considera că
doar divizorii primi să verifice această condiţie, rezultatul ar fi fals. Astfel, să considerăm
p = 17 şi B = 3. Atunci p − 1 = 24 . Vom avea 2 < 3 dar 16 nu este un divixor al lui 3 !!
Definiţia 11.3 Se numeşte număr prim tare un număr prim p care verifică condiţ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.
Există diverşi algoritmi pentru generarea numerelor prime tari. Pentru exemplificare am
ales algoritmul lui Gordon:
Teorema 11.2 Numărul p generat de algoritmul Gordon este un număr prim tare.
10 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
Demonstraţie: Cum r 6= s, vom avea sr−1 ≡ 1 (mod r) (Fermat). Deci p0 ≡ 1 (mod r) şi
p0 ≡ −1 (mod s). Acum:
(1) p − 1 = p0 + 2 · j · r · s − 1 ≡ 0 (mod r), deci p − 1 are pe r drept divizor prim.
(2) p + 1 = p0 + 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 numărul prim t divide pe r − 1. 2
Practic, generarea unui număr prim tare se realizează ı̂n trei paşi:
- Cu un generator de numere aleatoare, se generează numerele s, t, i0 , j0 ;
- Se testează dacă s şi t sunt numere prime, folosind algoritmul Miller - Rabin;
- În caz afirmativ, se aplică algoritmul lui Gordon, bazat de asemenea pe algoritmul
Miller - Rabin.
De multe ori, pentru criptarea RSA este suficient să se folosească numere prime mari
p−1
p cu proprietatea că este de asemenea număr prim.
2
Exemplul 11.8 În practică este folosit frecvent exponentul de criptare b = 3. În acest
caz ı̂nsă, este necesar ca p − 1 şi q − 1 să nu fie divizibile cu 3. Rezultatul este o criptare
extrem de rapidă, deoarece se foloseşte o singură ı̂nmulţire modulară şi o singură ridicare
la pătrat modulară.
De asemenea este utilizat des şi b = 216 + 1 = 65537. Acest număr are numai doi de
1 ı̂n reprezentarea binară, aşa că o criptare foloseşte 16 ridicări la pătrat modulare şi o
ı̂nmulţire modulară.
Exemplul 11.9 Fie n = 15770708441 şi alegem mulţimea B= {2, 3, 5, 7, 11, 13}. Se-
lectăm
83409341562 ≡ 3 · 7 (mod n)
120449429442 ≡ 2 · 7 · 13 (mod n)
27737000112 ≡ 2 · 3 · 13 (mod n)
Dacă se ia produsul acestor trei congruenţe, se ajunge la
De remarcat că dacă B este mare, este foarte posibil ca un ı̂ntreg xj să se descompună
ı̂n B, dar numărul acestor xj trebuie să crească pentru a căuta relaţiile de dependenţă.
Se arată că alegerea optimă pentru Bqeste ı̂n jur de
√
e logn log logn .
Această proprietate de hmomorfism a criptării poate oferi unui adversar activ posibilitatea
unui atac cu text clar ales.
12 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
Să presupunem că Oscar vrea să decripteze mesajul c = mb (mod n) trimis de Bob
lui Alice, iar Alice are amabilitatea să ı̂i decripteze lui Oscar orice text criptat primit
(ı̂nafară de c, bineinţeles). Atunci Oscar va alege un număr aleator x ∈ Zn∗ , va calcula
c1 = c · xb (mod n) şi va solicita decriptarea lui. Alice va decripta pentru el m1 =
ca1 (mod n). Deoarece
m1 ≡ ca1 ≡ ca (xb )a ≡ mx (mod n)
Oscar va afla imediat m = m1 · x−1 (mod n).
Acest tip de atac este prevenit de obicei impunând anumite structuri speciale asupra
textelor clare.
r · b1 + s · b2 = 1
Unul din numerele r, s este negativ; să presupunem că este r (pentru s negativ se pro-
cedează analog). Atunci Oscar obţine textul clar m folosind egalitatea
(c−1
1 )
−r
· cs2 ≡ m (mod n)
11.6. ALTE SISTEME DE CRIPTARE ÎNRUDITE CU RSA 13
(un astfel de k există totdeauna, deoarece criptarea RSA este de fapt o permutare ı̂n
spaţiul Zn al textelor clare). Rezultă că
k−1
cb ≡ m (mod n)
i
Această observaţie conduce la un atac ciclic: Oscar calculează cb (mod n) pentru i =
k k−1
1, 2, . . . până găseşte un k astfel ca cb ≡ c (mod n). Atunci va decripta c ı̂n cb ≡
m (mod n).
Un atac ciclic generalizat constă ı̂n aflarea celui mai mic ı̂ntreg pozitiv k astfel ca
k
cmmdc(cb − c, n) > 1. Vom avea implicaţia
k k
cb ≡ c (mod p), cb 6≡ c (mod q) =⇒ k=p
şi similar
k k
cb 6≡ c (mod p), cb ≡ c (mod q) =⇒ k=q
În ambele cazuri s-a obţinut factorizarea lui n.
Pe de-altă parte, dacă
k k k
cb ≡ c (mod p), cb ≡ c (mod q) =⇒ k = nşicb ≡ c (mod n)
k−1
În acest caz s-a reusţi decriptarea m = cb (mod n).
Folosirea unor numere prime tari asigură o protecţie suficientă pentru acest gen de
atac.
Există patru texte clare distincte care se pot cripta ı̂n acelaşi text. Să detaliem această
afirmaţie:
Fie α una din cele patru rădăcini pătrate modulo n ale unităţii, şi x ∈ Zn . Efectuăm
calculele
B 2
2
B B B
eK α x + − = α2 x + − = x2 + Bx = eK (x)
2 2 2 2
(calculele s-au realizat ı̂n Zn , iar ı̂mpărţirea la 2 şi 4 s-a făcut prin ı̂nmulţirea ı̂n Zn
cu 2−1 respectiv 4−1 ).
Cele patru texte clare care se cifrează ı̂n eK (x) sunt
x, −x − B, α(x + B/2) − B/2 şi −α(x + B/2) − B/2,
unde α este o rădăcină pătrată netrivială a unităţii modulo n.
Verificarea este imediată.
În general, Bob nu are nici un mijloc de a distinge care din cele patru mesaje este cel
corect, dacă nu dispune de informaţii suplimentare.
Să vedem cum se realizează decriptarea. Bob primeşte mesajul criptat y şi ı̂ncearcă
să să determine x astfel ca x2 + Bx ≡ y (mod n).
Aceasta este o ecuaţie de gradul doi ı̂n x. Termenul de gradul 1 se poate elimina
folosind substituţia x1 = x + B/2 (sau – echivalent – x = x1 − B/2).
Se ajunge la ecuaţia
B2
x21 ≡ + y (mod n).
4
Notând membrul drept cu C, această ecuaţie se scrie x21 ≡ C (mod n). Deci decriptarea
se reduce la extragerea rădăcinilor pătrate modulo n. Aceasta echivalează cu rezolvarea
sistemului
x21 ≡ C (mod p) x21 ≡ C (mod q)
care, prin combinarea soluţiilor fiecărei ecuaţii va da patru rădăcini pătrate mo-dulo n.
Într-o criptare corectă, C este totdeauna un rest pătratic modulo p şi q. Dacă p ≡
3 (mod 4), există o formulă simplă pentru extragerea rădăcinilor pătrate dintr-un rest
pătratic C modulo p. Avem (calculele se fac modulo p):
2
±C (p+1)/4 ≡ C (p+1)/2 ≡ C (p−1)/2 C ≡ C
(s-a folosit Teorema 10.1). Avem deci cele patru rădăcini pătratice
care – prin combinare pe baza teoremei chineze a resturilor – dau cele patru rădăcini
pătrate ale lui C.
11.6. ALTE SISTEME DE CRIPTARE ÎNRUDITE CU RSA 15
Utilizând teorema chineză a resturilor, se obţin rădăcinile pătrate ale lui 23 modulo 77:
11 · 2 · a + 7 · 8 · b (mod 77)
unde a = ±4, b = ±1. Calculând, se obţin valorile ±10, ±32. Cele patru texte clare
posibile (calculate modulo 77) vor fi deci:
Se verifică imediat că toate aceste patru texte clare se criptează ı̂n 22.
Să studiem acum securitatea sistemului de criptare Rabin. Să presupunem că există un
algoritm de decriptare A; acesta poate fi atunci utilizat ı̂ntr-un algoritm Las Vegas care
descompune modulul n cu probabilitate 1/2; algoritmul este următorul:
1. Se alege aleator r ∈ Zn ;
2. y ←− r2 − B 2 /4 mod n;
3. x ←− A(y);
4. x1 ←− x + B/2;
5. if x1 ≡ ±r (mod n) then Stop (eşec)
else cmmdc(x1 + r, n) = p sau q, Stop
B
Să observăm ı̂ntâi că y = eK r − , deci la pasul 3 se decriptează x sub forma r − B/2.
2
Cum la pasul 5. avem x21 ≡ r2 (mod n), rezultă x1 ≡ ±r (mod n) sau x1 ≡ ±αr (mod n),
unde α este o rădăcină netrivială modulo n a unităţii. În al doilea caz, n|(x1 − r)(x1 + r)
16 PRELEGEREA 11. SECURITATEA SISTEMULUI RSA
şi n nu divide nici unul din cei doi factori. Deci, calculul lui cmmdc(x1 + r, n) sau
cmmdc(x1 − r, n) va da p sau q, adică o descompunere a lui n.
Să calculăm probabilitatea de succes a algoritmului ([2]), din n − 1 extrageri posibile
ale lui r. Pentru două resturi nenule r1 , r2 , se defineşte
Aceasta este evident o relaţie de echivalenţṪoate clasele de echivalenţă din Zn∗ sunt de
cardinal patru, fiecare fiind de forma [r] = {±r, ±0 alr}. În algoritmul anterior, două valori
dintr-o clasă de echivalenţă conduc la acelaşi y. Să considerăm un x1 calculat plecând de
la valoarea x returnată de oracolul A pentru un y dat. x1 este un element din [r]. Dacă
x1 = ±r, algoritmul eşuează; dacă x1 = ±0 alr, el reuşeşte să descompună n. Cum r este
aleator, cele patru posibilităţi sunt echi-probabile, deci algoritmul dă reuşită ı̂n 50% din
cazuri.
11.7 Exerciţii
11.1 Folosind metoda p − 1 şi diverse margini B, factorizaţi 262063 şi 9420457. Cât
este B pentru fiecare caz ?
11.2 Fie n = 317940011 şi b = 7753781. Descompuneţi n ı̂n factori, folosind algoritmul
lui Wiener.
[4] M.J. Wiener - Cryptanalysis of short RSA secret exponents, IEEE Trans on Informa-
tion Theory, 36 (1990), 553-558
17
Prelegerea 12
αa ≡ β (mod p).
valorile β ∈ {2, 6, 7, 8, 10} nu pot fi exprimate ca logaritmi ı̂n baza 3. Altfel spus, ecuaţia
log3 x = β nu are soluţie ı̂n Z11 pentru aceste valori ale lui b.
1
Implementări ale sistemului sunt conţinute ı̂n softuri pentru GNU Privacy Guard şi PGP – pentru a
lista cele mai cunoscute aplicaţii.
1
2 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
Observaţia 12.1 Pentru problema logaritmului discret, nu este obligatoriu ca p să fie
număr prim. Important este ca α să fie rădăcină primitivă de ordinul p − 1 a unităţii:
∀i (0 < i < p − 1), αi 6≡ 1 (mod p). Teorema lui Fermat asigură αp−1 ≡ 1 (mod p).
eK (x, k) = (y1 , y2 )
Observaţia 12.2
1. Un dezavantaj al sistemului El Gamal constă ı̂n dublarea lungimii textului criptat
(comparativ cu lungimea textului clar).
2. Dacă (y1 , y2 ), (z1 , z2 ) sunt textele criptate ale mesajelor m1 , m2 atunci se poate
deduce imediat un text criptat pentru m1 m2 : (y1 z1 , y2 z2 ). Similar poate fi dedusă o
criptare pentru 2m1 (sau 2m2 ). Acest lucru face sistemul El Gamal sensibil la un atac cu
text clar ales.
3. Indicaţia ca pentru criptarea a două texte diferite să se folosească valori diferite ale
parametrului k este esenţială: astfel, să prsupunem că mesajele m1 , m2 au fost criptate ı̂n
(y1 , y2 ) respectiv (z1 , z2 ) folosind acelaşi k. Atunci y2 /z2 = m1 /m2 şi cunoaşterea unuia
din mesaje ı̂n determină imediat pe celălalt.
Evident această problemă se poate rezolva printr-o căutare directă (se calculează puterile
lui α) ı̂n timp O(p) şi folosind O(1) memorie. Pe de-altă parte, dacă se calculează anterior
ı̂ntr-o tabelă toate valorile (a, αa mod p), aflarea valorii căutate se poate face ı̂n O(1), dar
cu un spaţiu de complexitate O(p).
Toţi algoritmii construiţi pentru calculul logaritmului discret stabilesc un compromis
spaţiu - timp.
Exemplul 12.3 Fie p √ = 809 şi să determinăm log3 525. Avem deci
α = 3, β = 525, m = d 808e = 29, iar α29 mod 809 = 99.
Lista L1 a perechilor (j, 99j (mod 809)), 0 ≤ j ≤ 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)
Parcurgând (eventual simultan) cele două liste se găseşte (10, 644) ∈ L1 , (19, 644) ∈ L2 .
Se poate scrie deci
log3 525 = 29 · 10 + 19 = 309.
Se verifică uşor că 3309 ≡ 525 (mod 809).
Dacă s-ar putea calcula a (mod qici ) pentru toţi i = 1, . . . , k, atunci – folosind Teorema
chineză a resturilor – s-ar putea determina a mod (p − 1).
Să presupunem deci că q este un număr prim astfel ca p − 1 ≡ 0 (mod q c ) şi p − 1 6≡
0 (mod q c+1 ). Să arătăm cum se poate calcula atunci x ≡ a (mod q c ) pentru orice
x, (0 ≤ x ≤ q c − 1).
Să descompunem ı̂ntâi x ı̂n baza q folosind egalitatea
c−1
ai q i
X
x= 0 ≤ ai ≤ q − 1, 0 ≤ i ≤ c − 1
i=0
Putem acum să ı̂ncepem calculul lui β (p−1)/q (mod p). Dacă β (p−1)/q ≡ 1 (mod p),
atunci a0 = 0. Altfel se calculează ı̂n Zp γ = α(p−1)/q , γ 2 , . . . până se obţ ine un număr
ı̂ntreg pozitiv i pentru care γ i ≡ β (p−1)/q . Atunci a0 = i.
Dacă c = 1, algoritmul se termină; altfel, (c > 1), se caută valoarea lui a1 . Pentru
aceasta se defineşte
β1 = βα−a0
şi se notează x1 = logα β1 (mod q c ).
c−1
(p−1)/q 2
ai q i , se va obţine β1
X
Deoarece (evident) x1 = ≡ α(p−1)a1 /q (mod p).
i=1
(p−1)/q 2
Se calculează atunci β1 (mod p) şi se caută i astfel ca
(p−1)/q 2
γ i ≡ β1 (mod p).
Se ia a1 = i.
Dacă c = 2, s-a terminat; ı̂n caz contrar, se mai efectuează c − 2 paşi pentru deter-
minarea coeficienţilor a2 , . . . , ac−1 .
Formal, algoritmul Pohlig - Hellman este următorul:
6 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
În continuare se compară tripletele (x2i , a2i , b2i ) şi (xi , ai , bi ) până se găseşte o valoare a
lui i pentru care x2i = xi . În acel moment,
sau
c(b2i − bi ) ≡ ai − a2i (mod n)
Dacă cmmdc(b2i − bi , n) = 1, atunci se poate obţine c:
ai − a2i
c= (mod n)
b2i − bi
∗
Exemplul 12.5 Să considerăm p = 809 şi α = 89; ordinul lui α ı̂n Z809 este n = 101.
Se verifică uşor că β = 618 ∈ G89 . Vom calcula log89 618.
Să presupunem că alegem partiţia
S1 = {x | x ∈ Z809 , x ≡ 1 (mod 3)}
S2 = {x | x ∈ Z809 , x ≡ 0 (mod 3)}
S3 = {x | x ∈ Z809 , x ≡ 2 (mod 3)}
Pentru i = 1, 2, 3, . . . obţinem următoarele triplete:
i (xi , ai , bi ) (x2i , a2i , b2i )
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 x10 = x20 = 422. Se poate calcula atunci
log89 618 = (11 − 5) · (11 − 15)−1 (mod 101) = 6 · 25 (mod 101) = 49
∗
(ı̂n grupul multiplicativ Z809 ).
8 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
Se ı̂ncearcă apoi descompunerea lui γ ı̂n baza B. Dacă acest lucru este posibil, se
obţine o relaţie de forma
βαs ≡ pc11 pc22 . . . pcBB (mod p)
care poate fi transformată ı̂n
Să presupunem acum că se caută log5 9451. Dacă se generează aleator numărul s =
7736, avem 9451 · 57736 (mod 10007) = 8400 = 24 31 52 71 .
Cum acesta se poate factoriza ı̂n B, avem
log5 9451 = 4log5 2 + log5 3 + 2log5 5 + log5 7 − s = 4 · 6578 + 6190 + 2 · 1 + 1301 − 7736 = 6057,
calculele fiind realizate modulo 10006.
Se verifică uşor că 56057 ≡ 9451 (mod 10007).
Exemplul 12.7 Fie p = 19, α = 2, β = 6. Deoarece numerele sunt foarte mici, se pot
determina uşor valorile pentru L1 şi L2 . Ele sunt adunate ı̂n tabelul
x L1 (x) L2 (x) x L1 (x) L2 (x) x L1 (x) L2 (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 informaţii, aplicăm algoritmul. Se obţine:
x0 ←− 0, β ←− 6, i ←− 1;
x1 ←− L2 (6) = 1, γ ←− 5, L1 (5) = 0 6= x1 , β ←− 14, β ←− 7, i ←− 2;
x2 ←− L2 (7) = 1, γ ←− 11, L1 (11) = 0 6= x2 , β ←− 8, β ←− 4, i ←− 3;
x3 ←− L2 (4) = 1, γ ←− 17, L1 (17) = 0 6= x3 , β ←− 2, β ←− 1, i ←− 4.
return(1, 1, 1, 0).
Deci log2 6 = 11102 = 14.
12 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
Definirea sistemului de criptare El Gamal ı̂n subgrupul H ı̂n loc de Zn∗ este uşor de
realizat; anume:
Fie (G, ◦) un grup şi α ∈ G pentru care problema logaritmului discret ı̂n H =
{αi | i ≥ 0} este dificilă.
Fie P= G, C= G × G şi K= {(G, α, a, β)|β = αa }.
Valorile α, β sunt publice iar a este secret.
Pentru K = (G, α, a, β) şi un k ∈ Zcard(H) aleator (secret), se defineşte
Să vedem cum se reprezintă problema logaritmului discret ı̂n grupul multiplicativ Zp∗ cu
p prim. Acest grup este ciclic de ordin p − 1, deci izomorf cu grupul aditiv Zp−1 . Deoarece
problema logaritmului discret ı̂n grupul aditiv se poate rezolva uşor, apare ı̂ntrebarea dacă
se poate rezolva această problemă ı̂n Zp∗ reducând-o la Zp−1 .
Ştim că existăun izomorfism φ : Zp∗ −→ Zp−1 , deci pentru care
12.5 Exerciţii
12.1 Implementaţi algoritmul Shanks pentru aflarea logaritmului discret. Aplicaţii pen-
∗ ∗
tru aflarea log106 12375 ı̂n Z24691 şi log6 248388 ı̂n Z458009 .
12.2 Numărul p = 458009 este prim şi α = 2 are ordinul 57251 ı̂n Zp∗ . Folosind algorit-
mul Pollard Rho, calculaţi log2 56851 ı̂n Zp∗ . Luaţi valoarea iniţială x0 = 1 şi partiţia din
Exemplul 12.5.
12.3 Fie p un număr prim impar şi k un număr pozitiv. Grupul multiplicativ Zp∗k are
ordinul pk−1 · (p − 1) şi este ciclic. Un generator al acestui grup este numit ”element
primitiv modulo pk ”.
(a) Dacă α este un element primitiv modulo p, arătaţi că cel puţin unul din numerele
α, α + p este element primitiv modulo p2 .
(b) Descrieţi cum se poate poate verifica eficient că 3 este o rădăcină primitivă modulo
29 şi modulo 292 . Arătăţoi ı̂ntâi că dacă α este o rădăcină primitivă modulor p şi modulo
p2 , atunci ea este rădăcină primitivă modulo pj pentru orice j ı̂ntreg.
(c) Găsiţi un ı̂ntreg α care este rădăcină primitivă modulo 29 dar nu este rădăcină
primitivă modulo 292 .
∗
(d) Folosiţi algoritmul Pohlig - Hellman pentru a calcula log3 3344 ı̂n Z24389 .
14 PRELEGEREA 12. SISTEMUL DE CRIPTARE EL GAMAL
12.4 Implementaţi algoritmul Pohlig Hellman. Aplicaţie pentru log5 8563 ı̂n Z28703 şi
log10 12611 ı̂n Z31153 .
12.6 Să implementăm sistemul El Gamal ı̂n GF (33 ). Polinomul x3 + 2x2 + 1 este ire-
ductibil peste Z3 [x] şi deci GF (33 ) = Z[ x]/(x3 + 2x2 + 1). Asociem cele 26 luitere ale
alfabetului cu cele 26 elemente nenule ale corpului (ordonate lexicografic):
A ↔ 1 B ↔ 2 C ↔ x
D ↔ x+1 E ↔ x+2 F ↔ 2x
G ↔ 2x + 1 H ↔ 2x + 2 I ↔ x2
J ↔ x2 + 1 K ↔ x2 + 2 L ↔ x2 + x
M ↔ x2 + x + 1 N ↔ x2 + x + 2 O ↔ x2 + 2x
2
P ↔ x + 2x + 1 Q ↔ x2 + 2x + 2 R ↔ 2x2
S ↔ 2x2 + 1 T ↔ 2x2 + 2 U ↔ 2x2 + x
V ↔ 2x2 + x + 1 W ↔ 2x2 + x + 2 X ↔ 2x2 + 2x
Y ↔ 2x2 + 2x + 1 Z ↔ 2x2 + 2x + 2
Să presupunem că Bob foloseşte α = x şi p = 11 ı̂ntr-un sistem de criptare El Gamal.
Apoi alege β = x + 2. Decriptaţi mesajul
(K, H) (P, X) (N, K) (H, R) (T, F ) (V, Y ) (E, H) ((F, A) (T, W ) (J, D) (U, J)
Bibliografie
[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.
15
Prelegerea 13
x 3 = λ2 − x 1 − x 2 , y3 = λ(x1 − x3 ) − y1 ,
iar
y2 −y1
x2 −x1
dacă P 6= Q
λ= 3x21 +a
2y1
dacă P = Q
Se mai defineşte P + O= O+P = P, ∀P ∈ E.
Verificarea proprietăţilor de grup este banală. Elementul neutru este O.
De remarcat că inversa lui (x, y) (notată −(x, y)) este (x, −y).
Exemplul 13.1 Fie E curba eliptică y 2 = x3 + x + 5 peste Z19 . Să calculăm la ı̂nceput
punctele lui E. Aceasta se face astfel: ∀x ∈ Z11 se calculează z = x3 + x + 5 (mod 19);
apoi se testează dacă z este rest pătratic.
1
2 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICĂ
În caz afirmativ, deoarece 19 ≡ 3 (mod 4), există o formulă (Prelegerea 10) pe care o
vom aplica direct, obţinând rădăcinile pătrate ale lui z :
± z (19+1)/4 (mod 19) = ±z 5 (mod 19).
Rezultatele sunt strânse ı̂n tabelele următoare (toate calculele se realizează modulo 19):
a 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
a2 0 1 4 9 16 6 17 11 7 5 5 7 11 17 6 16 9 4 1
x x3 + x + 5 y x x3 + x + 5 y x x3 + 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 eliptică E admite deci 15 puncte; cum ordinul grupului nu este număr prim,
grupul nu este ciclic. Vom alege un element primitiv drept generator. Fie acesta α =
(0, 9). Calculăm ”puterile” lui α (de fapt multiplii, grupul fiind aditiv). Pentru 2α se
calculează ı̂ntâi (modulo 19):
Calculul efectiv al lui card(E) este destul de dificil şi vom trece peste el1 . Există
un algoritm al lui Schoof ([2], pag 137-140) de numărare a punctelor unei curbe eliptice,
dar complexitatea lui este destul de mare: O(log 6 p) (O(log 9 p) ı̂n versiunea originală)
ı̂nmulţiri şi inversiuni, şi O(log 3 p) spaţiu de memorie. În plus implementarea sa este
destul de greoaie şi nu a fost realizată complet până ı̂n prezent.
Altă problemă dificilă constă ı̂n aflarea unui subgrup ciclic al lui E ı̂n care problema
logaritmului discret să fie dificilă. O informaţie utilă este dată de teorema următoare:
Teorema 13.1 (Teorema lui Ruck) Fie E o curbă eliptică peste Zp cu p > 3 număr prim.
Atunci există două numere ı̂ntregi n1 , n2 astfel ca E să fie izomorfă cu Zn1 0 timesZn2 , iar
Exemplul 13.2 Să vedem cum se realizează o criptare El Gamal pentru curba eliptică
definită ı̂n Exemplul 13.1.
Fie α = (0, 9) şi să presupunem că exponentul secret este a = 7. Atunci β = 7α =
(12, 15), iar operaţia de criptare este:
dK (y1 , y2 ) = y2 − 7y1
Să presupunem că Alice vrea să cripteze mesajul x = (3, 4) (care este un punct din
E); dacă ea alege aleator valoarea k = 8, va calcula
y1 = 8 · (0, 9) = (12, 4), şi
y2 = (3, 4) + 8 · (12, 15) = (3, 4) + (4, 15) = 3α + 8 · 7α = 3α + 11α = 14α = (0, 10)
(coeficienţii se calculează modulo 15).
Deci y = ((12, 4), (0, 10)). După recepţie, Bob decriptează mesajul astfel:
x = (0, 10) − 7 · (12, 4) = 14α − 7 · 8α = 3α.
1
Nu se cunoaşte nici o formulă care să dea valoarea card(E); există o conjectură Birch and Swinnerton-
Dyer ı̂n legătură cu acest subiect, conjectură inclusă printre cele şapte probleme ale mileniului (ı̂mpreună
cu ”problema ”P versus N P ”).
4 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICĂ
Fie E o curbă eliptică peste Zp (p > 3 prim) care conţine un subgrup ciclic H ı̂n
care problema logaritmului discret este dificilă.
Alegem P= Zp∗ × Zp∗ , C= E × Zp∗ × Zp∗ şi
K= {(E, α, a, β)|α ∈ E, a ∈ Zp∗ , β = aα}.
Valorile α, β sunt publice, iar a este secret.
Pentru K = (E, α, a, β), k ∈ Zcard(H) ales aleator (secret) şi x = (x1 , x2 ) ∈ P,
definim
eK (x, k) = (y0 , y1 , y2 ),
unde y0 = k · α, (c1 , c2 ) = k · β, yi = ci · xi (mod p), i = 1, 2.
Pentru un text criptat y = (y0 , y1 , y2 ) se defineşte
unde a · y0 = (c1 , c2 ).
Exemplul 13.3 Revenind la curba y 2 = x3 + x + 5 peste Z19 definită ı̂n Exemplul 13.1,
criptarea Menezes - Vanstone autorizează 18 × 18 = 324 texte clare, faţă de numai 15 ı̂n
sistemul El Gamal adaptat.
Să luăm din nou α = (0, 9) şi exponentul a = 7. Atunci β = 7α = (12, 15).
Dacă Alice doreşte să transmită textul clar x = (x1 , x2 ) = (5, 11) (de remarcat că
acesta nu este un punct din E) şi alege k = 4, ea va ı̂ncepe prin a calcula
deci c1 = 1, c2 = 8.
Apoi se calculează (modulo 19):
y1 = c1 · x1 = 1 · 5 = 5 şi y2 = c2 · x2 = 8 · 11 = 12.
Alice trimite deci lui Bob mesajul criptat y = (y0 , y1 , y2 ) = ((4, 4), 5, 12).
După recepţie, Bob calculează (c1 , c2 ) = a · y0 = 7 · (4, 4) = 7 · 4α = 13α = (1, 8), apoi
x = (y1 · c−1 −1 −1 −1
1 (mod 19), y2 · c2 (mod 19)) = (5 · 1 , 12 · 8 ) = (5, 12 · 12) = (5, 11).
13.2. SISTEMUL DE CRIPTARE WILLIAMS 5
Numerele x pot fi privite şi ca perechi (a, b), pe baza cărora această mulţime se poate
structura algebric ca inel, folosind operaţiile
(a1 , b1 ) + (a2 , b2 ) = (a1 + a2 , b1 + b2 )
(a1 , b1 )(a2 , b2 ) = (a1 a2 + cb1 b2 , a1 b2 + a2 b1 ).
√
Notăm x = a − b c conjugatul lui x.
Pentru i = 0, 1, 2, . . . se definesc funcţiile Xi (x), Yi (x) astfel:
xi + xi
Xi (x) = Xi ((a, b)) =
2
xi − xi xi − xi
Yi (x) = Yi ((a, b)) = b = √
x−x 2 c
De aici se pot scoate relaţiile
√ √
xi = Xi (x) + Yi (x) c, xi = Xi (x) − Yi (x) c.
Evident, Xi (x) şi Yi (x) sunt numere ı̂ntregi; ı̂n continuare vom scrie aceste numere fără a
mai preciza şi argumentul x, decât dacă este necesar.
Din condiţia a2 − cb2 = 1 rezultăxx = 1, Xi2 − cYi2 = 1.
Folosind şi a2 −cb2 ≡ 1 (mod n) ı̂n loc de a2 −cb2 = 1, relaţiile de sus rămân adevărate.
s2 − c
!
= −1 şi (s, n) = 1
n
m este dat ca ı̂n Lema 13.2; se aleg apoi d cu (d, m) = 1 şi e care să satisfacă
congruenţele cerute.
Numerele n, c, e, s sunt publice iar p, q, m, d sunt secrete.
13.2. SISTEMUL DE CRIPTARE WILLIAMS 7
5
Exemplul 13.4 Să alegem p = 11, q = 13, deci n = 143. Pentru că = 1 ≡ −11 şi
11
5
= −1 ≡ −13 (ambele modulo 4), putem alege c = 5.
13
s2 − c
!
−1 −1
De asemenea se poate lua s = 2 pentru că = = −1 · 1 = −1.
n 11 13
Se obţine m = 10 · 14/4 = 35. Pentru că 23 · 16 ≡ 18 (mod 35), se pot folosi drept
exponenţi de criptare/decriptare e = 23 respectiv d = 16.
B (Criptarea): Textele clare sunt numere w (0 < w < n). În prima etapă w este codificat
ca un număr x (metoda este prezentată mai jos); criptarea va fi xe (mod n).
Codificarea: Notăm
√
b1 = 0, γ = w + c sau
√ √
b1 = 1, γ = (w + c)(s + c)
2
!
w −c
după cum simbolul Jacobi are valoarea +1 sau respectiv −1. Cazul când
n
el este 0 trebuie evitat.
γγ
Ambele variante conduc la = 1; relaţia este evidentă ı̂n primul caz, rezultă prin
n
calcul din alegerea lui s ı̂n cazul al doilea.
γ
În final, se noteazăx = .
γ √
Scrierea lui x sub forma a + b c este posibilă ı̂n ambele cazuri; astfel (toate calculele
se fac modulo n): √
γ w+ c w2 + c 2w √
pentru b1 = 0 : x = = √ = 2 + 2 c (mod n)
γ w − √c w √−c w −c
γ (w + c)(s + c)
pentru b1 = 1 : x = = √ √ =
γ (w − c)(s − c)
(w2 + c)(s2 + c) + 4scw 2s(w2 + c) + 2w(s2 + c) √
= + c (mod n).
(w2 − c)(s2 − c) (w2 − c)(s2 − c)
Definiţia lui x asigură ı̂n ambele situaţii relaţia xx = a2 − cb2 ≡ 1 (mod n).
x+x γ γ (γ + γ)2
Mai avem 2(a + 1) = 2 +1 = + +2= (mod n),
2 γ !γ γγ
2(a + 1)
ceea ce duce la simbolul Jacobi = 1, cum se cere ı̂n Lema 13.2.
n
√
După codificarea textului clar w ca x = a + b c, textul criptat este xe (mod n), număr
care poate fi exprimat ı̂n funcţie de Xe şi Ye , calculate recursiv pe baza relaţiilor din Lema
13.1. Notăm
E = Xe Ye−1 (mod n).
Textul criptat este tripletul (E, b1 , b2 ), unde b1 s-a definit anterior, iar b2 este dat de relaţia
b2 ≡ a (mod 2).
8 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICĂ
Deoarece fiecărui text criptat ı̂i corespund patru texte clare distincte, biţii b1 şi b2
asigură unicitatea decriptării.
Exemplul! 13.5 Revenind la Exemplul 13.4, să considerăm textul clar w = 21. Deoarece
2
21 − 5 7
7 √
= = (−1)(−1) = 1, avem b1 = 0, deci γ = 21 + 5 şi x =
143√ 11 √13 √
21 + 5 446 + 42 5 17 + 42 5 √ √
√ = = = 41(17 + 42 5) = 125 + 6 5 (mod 143).
21 − 5 436 7
Deci a = 125, b = 6. Deoarece a este impar, rezultă b2 = 1.
Vom calcula recursiv pe X23 şi Y23 :
X1 = 125 Y1 = 6 X2 = 75 Y2 = 70 X3 = 35 Y3 = 48
X5 = 120 Y5 = 44 X6 = 18 Y6 = 71 X11 = 48 Y11 = 17
X12 = 75 Y12 = 125 X23 = 68 Y23 = 125
Obţinem acum E = 68 · 125−1 = 68 · 135 = 28 (mod 143).
Deci textul criptat este tripletul (28, 0, 1).
C Decriptarea: Folosind prima componentăE a textului criptat, destinatarul poate deter-
mina numărul x2e :
√ √
2e x2e xe Xe + Ye c E+ c E2 + c 2E √
x = = = √ = √ = + c (mod n)
(xx)e xe Xe − Ye c E− c E2 − c E2 − c
De remarcat că acest calcul poate fi făcut şi de un criptanalist, ı̂n eventualitatea
interceptării textului criptat.
Totuşi, informaţia secretă este necesară pentru calculul ulterior:
√ √
x2ed = X2ed (x) + Y2ed (x) c = Xd (x2e ) + Yd (x2e ) c,
unde valorile lui Xd şi Yd se pot calcula recursiv pe baza lui x2e , determinat anterior.
Cum toate ipotezele Lemei 13.2 sunt satisfăcute, vom avea x2ed = ±x (mod n). Ultima
componentă b2 a textului criptat dă semnul corect al lui x.
Deci x se poate determina, iar textul clar w se obţine din x şi b1 (a doua componentă
a textului criptat)
(
ı̂n felul următor:
x dacă b1 = 0
Fie x0 = √
s−√c
x · s+ c dacă b1 = 1
√
0 w+ c x0 + 1 √
Atunci x = √ (mod n), ceea ce duce la w = 0 c (mod n).
w− c x −1
Exemplul 13.6 În condiţiile din Exemplul 13.4, să decriptăm mesajul (28, 0, 1). Folosim
E pentru a calcula ı̂n prima fază
282 + 5 2 · 28 √ √
x2e = + 5 = 95 + 126 5 (mod 143).
282 − 5 282 − 5
Reamintim, d = 16; deci vom calcula (modulo 143)
13.2. SISTEMUL DE CRIPTARE WILLIAMS 9
Lucrând detaliat, se pare că sistemul de criptare Williams este mai dificil decât RSA.
Totuşi ordinele de complexitate ale criptării şi decriptării sunt egale ı̂n celel două sisteme.
D Criptanaliza: Dacă s-au aflat p şi q, m şi d se pot calcula imediat. Invers, să
presupunem că criptanalistul a găsit ı̂ntr-un mod oarecare un algoritm de decriptare.
Atunci el poate folosi acest algoritm la descompunerea lui n astfel.
x2 − c
!
În prima fază se alege prin ı̂ncercări un număr x care verifică = −1.
n
√
Apoi x este criptat alegând b1 = 0 şi γ = x + c. Deci, ca primă ipoteză, pentru
simbolul Jacobi este folosită valoarea (falsă) +1. Fie (E, 0, b2 ) textul criptat rezultat.
Acestuia, criptanalistul ı̂i aplică algoritmul pentru a stabili textul clar w corespunzător;
acest w nu este identic cu x deoarece procesul de criptare a plecat de la o ipoteză falsă.
Prin simplu calcul se arată că (x − w, n) este p sau q (vezi [6])
Aceasta ı̂nseamnă că şi criptanalistul este ı̂n măsură să descompună pe n.
Exemplul 13.7 Reluăm cadrul descris ı̂n Exemplul 13.4. Alegem x = 138, care satisface
condiţ √ia de plecare pentru criptanaliză.
√ Se iau ca valori iniţ iale false b1 = 0, γ =
138 + 5. Atunci α = γ/γ = 73 + 71 5.
Deoarece 73 este impar, se obţine b2 = 1. Pentru criptare se calculează iterativ (modulo
143):
Deducem că E = 42 · 73−1 = 28 (mod 143), deci textul criptat este (28, 0, 1).
Acesta a fost ı̂nsă criptat anterior ı̂n w = 21. Se obţine imediat factorizarea lui n
deoarece (x − w, n) = (117, 143) = 13.
Definiţia 13.2 Fie k, n ∈ N (k ≤ n). Un (n, k) - cod liniar binar este un subspaţiu liniar
C ⊆ Z2n de dimensiune k.
O matrice generatoare a lui C este o matrice binară k × n ale cărei linii formează o
bază a lui C.
Pentru a ∈ Z2n se defineşte ponderea w(a) = numărul de elemente nenule din a.
Pentru a, b ∈ Z2n a = (a1 , . . . , an ), b = (b1 , . . . , bn ), se defineşte distanţa Hamming
prin d(a, b) = w(a − b).
Pentru un (n, k) - cod liniar binar C, distanţa minimă este
dC = min{d(a, b)|a, b ∈ C, a 6= b}
Rolul unui cod corector de erori este de a corija modificări aleatoare care apar ı̂n trans-
miterea unui set de date (binare) printr-un canal. În linii mari, acesta funcţionează astfel:
dacă a este un mesaj de informaţie de k biţi, Alice ı̂l codifică ı̂ntr-un cuvânt de n biţi
b = aG, unde G este matricea generatoare a codului.
Bob primeşte un mesaj r ∈ Z2n (eventual r = b) şi caută un cuvânt b1 ∈ C cu d(r, b1 )
minimă posibil. Va decodifica r ı̂n b1 după care va calcula un mesaj de informaţie a1
astfel ca b1 = a1 G. Cazul ideal este acela când b1 = b, a1 = a (adică erorile au fost
acoperite corect). Se cunoaşte că, dacă numărul de erori care apar nu depăşeşte (d − 1)/2,
acest procedeu corectează efectiv erorile.
Dacă Bob caută cuvântul - cod cel mai apropiat comparând r pe rând cu fiecare element
din C, cum sunt 2k astfel de cuvinte, algoritmul va fi exponenţial, deci nefuncţional.
Majoritatea algoritmilor de decodificare se bazează pe noţiunea de sindrom, definit
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 cărei linii formează o bază a unui spaţiu liniar
ortogonal. Evident, GH T = 0.
Pentru un cuvânt r ∈ Z2n , se numeşte sindrom secvenţa de n − k biţi definită HrT .
Teorema 13.2 a este un cuvânt - cod dacă şi numai dacă HaT = 0.
În plus, dacă a ∈ C, e ∈ Z2n şi r = a + e, atunci HrT = HeT .
13.3. SISTEMUL DE CRIPTARE MCELIECE 11
eK (a, e) = aG0 + e
Nu vom intra ı̂n detalii privind definiţia codurilor Goppa ([1]). Acestea pot fi privite
ı̂nsă drept coduri liniare cu parametrii n = 2m , d = 2t + 1, k = n − mt. Pentru o
implementare practică referitor la criptare, McEliece sugerează m = 10, t = 50, ceea ce
corespunde unui (1024, 524, 101) - cod Goppa3 . Un text clar este o secventă de 524 biţi,
iar un text criptat este o secventă de 1024 biţi. Cheia publică este o matrice binară de
dimensiuni 524 × 1024.
Să presupunem că Alice vrea să 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
Algoritmul McElliece s-a dovedit sigur. Acest lucru rezultă din analiza celor două
tipuri de atac posibile:
1. Din informaţia publică, Oscar ı̂ncearcă să afle matricea G sau o matrice G1 a unui
cod Goppa echivalent (având aceeaşi parametri). Nu se cunoasţe nici un algoritm
eficient pentru un astfel de demers.
2. Oscar ı̂ncearcă să afle mesajul clar a direct din textul criptat b. El ia aleator k
coloane din matricea publică G0 . Notând G0k , bk , ek restricţiile lui G0 , b respectiv e
la aceste k coloane, vom avea aG0k = bk + ek . Dacă bk = 0 şi G0k este nesingulară,
atunci a poate fi aflat rezolvând sistemul liniar aG0k = bk . Probabilitatea ca cei k
k
biţi selectaţi să nu facă parte din eroare (deci ek = bf 0 este Cn−t /Cnk , neglijabilă
pentru valorile alese ale parametrior n, k, t.
Interesant, dar această securitate este mult diminuată dacă se folosesţe altă clasă de coduri
liniare ı̂n locul codurilor Goppa.
Totuşi, ı̂n ciuda securităţii sale şi a vitezei relativ mari de criptare/decriptare sistemul
McElliece nu este folosit practic. Cauza principală o constituie cheia sa excesiv de mare.
De exemplu, pentru n = 1024, t = 38, k ≥ 644, cheia are aproximativ 219 biţi.
13.4 Exerciţii
13.1 Fie E curba eliptică y 2 = x3 + x + 28 peste Z71 .
3. Care este ordinul maxim al unui element din E ? Găsiţi un astfel de element.
13.2 Fie E curba eliptică y 2 = x3 + x + 13 definităpe Z31 . Se poate arăta că |E| = 34 şi
că (9, 10) este de ordinul 34 ı̂n E. Sistemul de criptare Mezenes - Vanstome definit pe E
∗ ∗
admite ca spaţiu al textelor clare Z34 × Z34 . Fie a = 25 exponentul secret al lui Bob.
1. Calculaţi β = aα;
((4, 9), 28, 7)((19, 28), 9, 13)((5, 22), 20, 17)((25, 16), 12, 27)
3. Dacă presupunem că fiecare text clar reprezintă două caractere alfabetice, convertiţi
acest text clar ı̂n engleză (s-a folosit corespondenţa A − 1, . . . , Z − 26).
14 PRELEGEREA 13. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICĂ
13.6 Fie p > 3 un număr prim impar şi a, b ∈ Zp . Dacă ecuaţia x3 + ax + b ≡ 0 (mod p)
are trei rădăcini distincte ı̂n Zp , arătaţi că grupul curbei eliptice corespunzătoare (E, +)
nu este ciclic.
13.7 Fie E o curbă eliptică definită peste Zp unde p > 3 este un număr prim. Să
presupunem că n = card(E) este prim şi fie P ∈ E, P 6= O.
(a) Arătaţi că logP (−P ) = n − 1.
(b) Daţi un algoritm de calcul pentru n de complexitate O(p1/4 ) folosind teorema lui
Hasse şi o variantă a algoritmului Shanks.
13.8 O reprezentare binară (an−1 , an−2 , . . . , a0 ) a numărului ı̂ntreg a este ı̂n ”forma ne-
adiacentă” (forma N AF ) dacă nu există două valori consecutive nenule.
(a) Daţi un algoritm de reprezentare a numerelor ı̂ntregi ı̂n forma N AF . Aplicaţi
acest algoritm pentru numerele 87, 112, 2047.
(b) Folosind reprezentarea N AF a lui 87, calculaţi 87P , unde P = (2, 6) este un punct
pe curba eliptică y 2 = x3 + x + 26 definită peste Z27 .
Bibliografie
[2] A. Enge, Elliptic Curves and their applications to Cryptography, Kluwer Academic
Publ, 1999
15
Prelegerea 1
1.1 Codificare
Definiţia 1.1 Fiind date mulţimile A (alfabetul sursă) şi B (alfabetul cod), o co-
dificare este o aplicaţie injectivă K : A → B ∗ .
Exemplul 1.1 Printre secvenţele binare de lungime 5, numărul celor care au doi
de 1 este C52 = 10. Ele pot fi folosite pentru a codifica cifrele din scrierea zecimală
(Tabelul 1.1).
Mesajul 00 17300 are codul 110001000101100. De remarcat că ı̂ntre cuvintele cod
nu se lasă nici un spaţiu, deoarece ”spaţiu” poate fi el ı̂nsusi un simbol-cod. Astfel
de exemplu, codul Morse are alfabetul B = {., −, spaţiu}.
Decodificarea se face foarte simplu: se ı̂mparte mesajul codificat ı̂n grupe de câte
cinci caractere şi se vede cifra din tabel corespunzătoare grupei respective. Repar-
tizarea cuvintelor cod a fost făcută pentru a realiza şi o decodificare pe baza unei
1
2 PRELEGEREA 1. CODIFICARE ŞI DECODIFICARE
Codificarea dată ı̂n Exemplul 1.1 este - după cum s-a observat - unic decodabilă.
Acest lucru nu este totdeauna posibil. Dacă luăm de exemplu codificarea
K(a) = 00, K(b) = 10, K(c) = 101, K(d) = 110, K(e) = 1001,
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 Să presupunem că vrem să construim un cod binar pentru alfabetul
{0, 1, 2, 3} şi observăm că 0 apare ı̂n mesajele sursă mai des decât orice alt simbol.
Atunci următoarea schemă de codificare pare rezonabilă:
din care rezultă construcţia. De remarcat că ea este o condiţie necesară şi suficientă
pentru construcţia codurilor instantanee.
6 PRELEGEREA 1. CODIFICARE ŞI DECODIFICARE
Teorema 1.1 Fiind dat un alfabet sursă de n simboluri şi un alfabet cod de k sim-
boluri, se poate construi un cod instantaneu cu lungimile cuvintelor cod d1 , d2 , . . . , dn
dacă şi numai dacă este verificată inegalitatea (Kraft):
Teorema 1.2 (McMillan) Orice codificare unic decodabilă satisface inegalitatea lui
Kraft.
Această sumă se poate re-ordona grupând toţi termenii de forma k −j unde j satisface
egalitatea anterioară. Cel mai mare j posibil este j = d + d + . . . + d = rd, unde
d = max{d1 , d2 , . . . , dn }.
Numărul tuturor termenilor de forma k −j din sumă este cel mult k j . Deci,
rd
X rd
X
cr ≤ k j k −j = 1 = rd.
j=1 j=1
cr cr
Deci, ≤ d, de unde va rezulta c ≤ 1 (pentru c > 1 şirul ar = → ∞, deci nu
r r
este mărginit). 2
Corolarul 1.1 Pentru orice cod unic decodabil există un cod instantaneu care are
toate cuvintele - cod de lungimi egale.
Demonstraţie: Rezultă din demonstraţia teoremei precedente.
Exemplul 1.5 Să considerăm alfabetul sursă = {a, b, c} şi alfabetul - cod
B = {0, 1}; deci n = |A| = 3, k = |B| = 2. Vrem să construim o codificare
instantanee K : A → B care are toate cuvintele - cod de lungime d. Inegalitatea
1
Kraft va da 2−d + 2−d + 2−d ≤ 1, deci 2−d ≤ . Cel mai mic d care o verifică este
3
d = 2. Deci orice mulţime de 3 secvenţe binare de lungime 2 va putea fi folosită
drept cod. Sunt 4 astfel de mulţimi:
{00, 01, 10}, {00, 01, 11}, {00, 10, 11}, {01, 10, 11}
– 0 ≤ P (ai ) ≤ 1, (1 ≤ i ≤ n);
n
X
– P (ai ) = 1.
i=1
O codificare este eficientă dacă lungimea medie a secvenţelor cod este cât mai mică.
Definiţia 1.6 Fiind dată o sursă de informaţie S şi un alfabet cod, un cod Huffman
este un cod instantaneu cu lungimea medie minimă.
Lungimea medie minimă a unui cod Huffmann se notează cu Lmin (S).
Exemplul 1.6 Să se determine un cod Huffman binar pentru alfabetul sursă A =
{a, b, c, d, e, f } ştiind că ’a’ apare de două ori mai des decât ’e’ şi ’e’ de două ori
mai des decât orice consoană.
Deci, vom avea sursa de informaţ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 cuvânt cod de lungime 1 lui ’a’ şi unul de lungime doi lui ’e’.
Atunci lungimile cuvintelor cod rămase sunt egale cu 4, iar inegalitatea lui Kraft
este saturată: 12 + 212 + 244 = 1. Un astfel de cod se poate construi:
K(a1 ) = 0, K(a2,3 ) = 1.
după care ”spargem” cuvântul cod 1 ı̂n două cuvinte: 10 şi 11; ı̂n acest fel se obţine
un cod Huffman pentru sursa originală:
1.4. CODURI HUFFMAN 9
a1 a2 a3
0 10 11
Tabelul 1.4:
Lema 1.1
L(K) = L(K ∗ ) + P (an−1 ) + P (an )
Demonstraţie: Fie d1 , d2 , . . . , dn−2 , d∗ lungimile cuvintelor cod corespunzătoare lui
K ∗ . Atunci lungimile cuvintelor cod pentru K sunt d1 , d2 , . . . , dn−2 , d∗ + 1, d∗ + 1.
Efectuând calculele, se obţine:
n−2
X
L(K) = di P (ai ) + (d∗ + 1)P (an−1 ) + (d∗ + 1)P (an ) =
i=1
n−2
X 2
= di P (ai ) + d∗ [P (an−1 ) + P (an )] + P (an−1 ) + P (an ) =
i=1
= L(K ∗ ) + P (an−1 ) + P (an ).
obţinută din K prin permutarea cuvintelor cod corespunzătoare lui ai şi ai+1 .
K 0 este evident un cod instantaneu, iar diferenţa dintre lungimile medii L =
Lmin (al lui K) şi L0 (al lui K 0 ) este:
Lmin − L0 = [di P (ai ) + di+1 P (ai+1 )] − [di+1 P (ai ) + di P (ai+1 )] =
= (di − di+1 )[P (ai ) − P (ai+1 )].
Această expresie este produsul dintre un număr pozitiv şi unul nenegativ, deci
Lmin ≥ L0 , iar din proprietatea de minimalitate rezultă Lmin = L0 . Cu alte
cuvinte, K 0 este un alt cod Huffman. Procedeul continuă până se obţine codul
K0 cerut.
• S admite o codificare Huffman K1 ı̂n care ultimele cuvinte cod, K1 (an−1 ) şi
K1 (an ) diferă doar prin ultimul simbol.
Fie K0 codul Huffman anterior şi K̃0 codul rezultat din K0 eliminând ultimul
simbol din K0 (an ). Lungimea medie a lui K̃0 va fi evident mai mică decât cea
a lui K0 (pentru că P (an ) > 0), deci K̃0 nu poate fi instantaneu. Cuvântul cod
K̃0 (ai ) = K0 (ai ), (1 ≤ i ≤ n − 1) nu este prefixul nici unui cuvânt cod; deci
există un i (i ≤ n − 1) astfel ı̂ncât K̃0 (an ) este prefixul lui K0 (ai ). Aceasta
este posibil numai dacă di = dn şi deci K0 (ai ) diferă de K0 (an ) numai prin
ultimul simbol. Dacă i = n − 1, se ia K1 = K0 . Altfel, se observă că di = dn
implică di = di+1 = . . . = dn ; deci se pot permuta cuvintele cod definite ı̂n K0
pentru ai şi an−1 . Codul K1 astfel obţinut are aceeaşi lungime medie ca şi K0 ,
deci este un cod Huffman.
2
1.5. EXERCIŢII 11
1.5 Exerciţii
Exerciţiul 1.1 Care este cea mai mică lungime a unui cod bloc cu alfabetul sursă
A = {A, B, . . . , Z} şi alfabetul cod B = {., −, spaţiu} (ca la codul Morse).
1 → 01 4 → 1000
2 → 011 5 → 1100
3 → 10 6 → 0111
A → 1010 D → 0001
B → 001 E → 1101
C → 101 F → 1011
Este ea unic decodabilă ? Dacă nu, găsiţi două mesaje sursă cu acelaşi cod.
0 → AA 4 → ABBAA 7 → AAAABB
1 → AABAB 5 → BABBA 8 → AAAABA
2 → ABBBBB 6 → BBBAB 9 → AAAAAB
3 → ABABA
Exerciţiul 1.6 Să se construiască un cod binar instantaneu pentru următorul al-
fabet sursă cu lungimile corespunzătoare 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
Exerciţiul 1.7 Să se construiască un cod ternar (trei simboluri cod) instantaneu
pentru următorul alfabet sursă, cu lungimile corespunzătoare ale cuvintelor cod:
12 PRELEGEREA 1. CODIFICARE ŞI DECODIFICARE
Simbol 1 2 3 4 5 6 7 8 9 0
Lungime 1 3 3 3 3 3 2 2 2 2
Exerciţiul 1.8 Câte simboluri cod sunt necesare pentru ca următorul alfabet sursă
să poată fi codificat ı̂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
Exerciţiul 1.9 Demonstraţi că pentru orice cod instantaneu ı̂n care inegalitatea
Kraft este strictă, este posibil să se adauge un nou simbol sursă şi să se extindă
codul dat la un nou cod instantaneu (cu acelaşi alfabet cod). Demonstraţi aceasta
pentru codul definit la Exerciţiul 1.6.
Prelegerea 2
Coduri liniare
13
14 PRELEGEREA 2. CODURI LINIARE
Fiecare vector - cod ı̂ntr-un cod liniar va avea deci k simboluri de informaţie; celelalte
n − k simboluri se numesc simboluri de control.
Definiţia 2.2 Fie An,k un cod liniar cu baza e1 , . . . , ek . Matricea
e1
e2
Gn,k =
...
ek
se numeşte ”matricea generatoare” a codului.
Deci operaţia de codificare este definită prin matricea generatoare:
∀u ∈ Zqk , φ(u) = uG.
Exemplul 2.1 Matricea
à !
1 0 0 1 1
G=
0 1 0 0 1
generează un (5, 2)-cod liniar peste Z2 . Rangul ei este 2 (primele două coloane
formează matricea unitate), deci cele două linii ale lui G sunt cuvinte - cod liniar
independente.
Mulţimea mesajelor de de informaţie este Z22 = {00, 01, 10, 11}. Înmulţind fiecare
mesaj cu matricea G se obţine spaţiul liniar al cuvintelor - cod
A4,2 = {00000, 01001, 10011, 11010}.
Funcţia de codificare este:
00 → 00000, 01 → 01001, 10 → 10011, 11 → 11010.
Un cod liniar poate fi 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 operaţiile liniare obişnuite, definite pentru liniile unei matrici. Prin
schimbarea matricii generatoare nu se schimbă spaţiul liniar al cuvintelor - cod, ci
numai modalitatea de codificare (funcţia φ). Cum prin termenul cod se ı̂nţelege de
obicei spaţiul liniar An,k , rezultă că două matrici diferite care se deduc una din alta
prin operaţii pe linii, reprezintă acelaşi cod.
2.1. MATRICE GENERATOARE 15
Exemplul 2.2 Reluând Exemplul 2.1, prin adunarea liniei doi la prima linie se
obţine matricea
à !
1 1 0 1 0
G0 =
0 1 0 0 1
Ea generează acelaşi spaţiu liniar A5,2 , dar codificarea diferă:
Cea mai convenabilă regulă de codificare constă ı̂n scrierea simbolurilor de informaţie
şi 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 şi n − k
coloane.
Definiţia 2.3 Un cod liniar este numit sistematic dacă admite o matrice genera-
toare de forma G = (I|B) unde I este matricea unitate.
Definiţia 2.4 Două coduri liniare A şi A0 de aceeaşi lungime n se numesc echiva-
lente dacă ∃π ∈ Sn astfel ı̂ncât
v1 v2 . . . vn ∈ A ⇐⇒ vπ(1) vπ(2) . . . vπ(n) ∈ A0
(s-a notat cu Sn mulţimea permutărilor de n elemente).
Exemplul 2.4 Codul din Exemplul 2.1 este un cod sistematic. Din codificare se
observă că mesajul de informaţie se află ı̂n cuvântul - cod pe primele două poziţii.
Codul cu repetiţie din Exemplul 2.3 nu este sistematic. Totuşi, folosind per-
mutarea (1, 4, 6, 2, 5, 3) (se permută simbolurile doi cu patru şi trei cu şase) se ajunge
la un cod sistematic generat de matricea
1 0 0 1 0 0
G = 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.
Demonstraţie: Matricea generatoare G a unui (n, k) - cod liniar A are rangul k; deci
ea are k coloane liniar independente.
1. Să presupunem că primele k coloane ale lui G sunt liniar independente. Deci
G = (X|Y ) unde Y este o matrice k ×k inversabilă. Există atunci o succesiune
de operaţii de linii care transformă X ı̂n matricea unitate. Aceeaşi succesiune
de operaţii efectuate acum pentru toată matricea G va conduce la matricea
G0 = (I|Y 0 ). Deoarece şi G0 este matrice generatoare pentru codul A, rezultă
că acesta este sistematic.
Observaţii:
• Din definiţie rezultă că matricea de control H a unui cod liniar A are urmă-
toarea proprietate:
v ∈ A ⇐⇒ vH T = 0
Lăsăm ca exerciţiu demonstrarea acestei echivalenţe.
• Prin transpunere, relaţia de sus se poate scrie şi HGT = 0. Aceasta ı̂nseamnă
că şi H este matricea generatoare a unui (n, n − k) - cod liniar peste corpul Zq ,
cod pentru care G este matrice de control. Cele două coduri astfel definite se
numesc coduri duale. Cuvintele - cod din cele două coduri duale sunt ortogo-
nale (produsul lor scalar este zero). Într-adevăr, dacă A şi B sunt două coduri
duale generate de matricile G respectiv H, iar x ∈ A, y ∈ B sunt cuvinte -
cod arbitrare, există u, v cu x = uG, y = vH. În plus, xH T = 0, yGT = 0.
Atunci, xyT = uGyT = u(yGT )T = u0T = 0.
Un cod care coincide cu codul său dual se numeşte cod auto - dual.
Teorema 2.2 Un cod sistematic cu matricea generatoare G = (I|B) admite ca
matrice de control H = (−B T |I).
Demonstraţie: Cele două matrici unitate din scrierea lui G şi H sunt de ordin k
respectiv n − k. Efectuând calculele, se obţine:
−B
GH = (I|B) −−
T
= −IB + BI = −B + B = 0
I
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 când se cunoaşte matricea generatoare. Să arătăm aceasta pe un exemplu:
Exemplul 2.6 Plecând de la matricea generatoare construită ı̂n Exemplul 2.4, se
poate construi matricea de control (calculele se fac ı̂n Z3 ):
−1 0 0 1 0 0 2 0 0 1 0 0
∗
H = 0 0 −1 0 1 0 = 0 0 2 0 1 0
.
0 −1 0 0 0 1 0 2 0 0 0 1
Aplicând acum permutarea inversă coloanelor lui H ∗ , se ajunge la matricea de con-
trol a codului definit ı̂n Exemplul 2.3:
2 1 0 0 0 0
H= 0 0 0 0 1 2
0 0 1 2 0 0
Relaţia xH T = 0 pe care o verifică orice cuvânt - cod x ∈ An,k permite să definim
un cod şi sub forma unui sistem de ecuaţii. Astfel, An,k este un cod peste Zq dacă
şi numai dacă elementele sale sunt soluţii ale sistemului liniar xH T = 0.
à !
1 1 0 1 0
Exemplul 2.7 Codul cu matricea de control H =
1 1 1 1 1
este definit ca mulţimea soluţiilor binare (x1 , x2 , x3 , x4 , x5 ) ale sistemului
x1 + x2 + x4 = 0, x 1 + x2 + x3 + x4 + x5 = 0
18 PRELEGEREA 2. CODURI LINIARE
2.3 Sindrom
Fie codul liniar An,k ⊂ Zqn peste Zq , cu matricea de control H şi a ∈ Zqn . Se numeşte
sindrom al vectorului a vectorul z cu n − k componente obţinut prin relaţia
zT = HaT ,
sau - echivalent - z = aH T .
Observaţie: z = 0 ⇐⇒ a ∈ An,k .
Dacă se transmite printr-un canal de comunicaţie un cuvânt a ∈ An,k pentru
care sindromul corespunzător verifică relaţia z = aH T 6= 0, ı̂nseamnă că s-a detectat
faptul că ı̂n timpul transmisiei au apărut erori.
Teorema 2.3 În Z2 , sindromul recepţionat este egal cu suma coloanelor din ma-
tricea de control corespunzătoare poziţiilor perturbate.
a0 = (a1 , . . . , ai−1 , a0i , ai+1 , . . . , aj−1 , a0j , aj+1 , . . . , ak−1 , a0k , ak+1 , . . . , an )
Definiţia 2.6 Se numeşte distanţă (Hamming) a codului liniar An,k ⊂ Zqn peste Zq
cea mai mică distanţă (Hamming) dintre elementele codului An,k , adică
d= min d(x, y)
x,y∈An,k ,x6=y
2.5. DETECTARE ŞI CORECTARE DE ERORI 19
d= min w(x).
x∈An,k ,x6=0
Se poate verifica imediat că d este o distanţă cu ajutorul căreia Zqn se poate structura
ca spaţiu metric.
Teorema 2.4 Fie H matricea de control a unui cod liniar An,k . Codul are distanţa
minimă d dacă şi numai dacă orice combinaţie liniară de d − 1 coloane ale lui H
este liniar independentă şi există cel puţin o combinaţie liniară de d coloane liniar
dependente.
Demonstraţie: Pentru orice cuvânt a, cu w(a) = s, aH T este o combinaţie liniară
de s coloane ale lui H. Cum există un cuvânt - cod de pondere minimă egală cu
distanţa d a codului, rezultă că avem cel puţin o combinaţie de d coloane liniar
dependente ale lui H. O combinaţie de mai puţin de d coloane liniar dependente ar
conduce la contradicţie. 2
Definiţia 2.7 Pentru r > 0 şi x ∈ Zqn , definim sfera de rază r şi centru x ca
Sr (x) = {y|d(x, y) ≤ r}
Teorema
"
2.5
#
Fie An,k ⊆ Zqn un cod liniar peste Zq cu distanţa Hamming d. Dacă
d−1
r= , atunci
2
∀x, y ∈ An,k , x 6= y, Sr (x) ∩ Sr (y) = ∅.
à !
1 0 0 1
Exemplul 2.8 Fie matricea generatoare G = peste Z2 . Ea va cod-
0 1 1 1
2
ifica Z2 = {00, 01, 10, 11} ı̂n A4,2 = {0000, 1001, 0111, 1110}.
Calculul mulţimilor Ve conduce la
V0000 = V1001 = V0111 = V1110
V1000 = V0001 = V0110 = V1111
V0100 = V1101 = V0011 = V1010
V0010 = V1011 = V0101 = V1100
2.5. DETECTARE ŞI CORECTARE DE ERORI 21
Alegem ca reprezentanţi pe 0000, 1000 (se poate şi 0001), 0100, 0010. Tabloul
standard va fi:
Pentru recepţie, acest tablou este ca un dicţionar care se utilizează astfel: cu-
vântul primit se decodifică ı̂n cuvântul - cod din capul coloanei pe care se află.
De exemplu, dacă se recepţionează 1101, el se va decodifica ı̂n 1001.
Evident, cuvintele de pe prima coloană se decodifică ı̂n ele ı̂nsele (ele nu au fost
perturbate de nici o eroare).
Pentru orice cod liniar, un dicţionar complet de tipul celui de mai sus constituie cea
mai simplă metodă de decodificare.
Problema apare atunci când ı̂ntr-o mulţime Ve sunt mai multe cuvinte de pondere
minimă. Atunci tabela va decodifica corect numai eroarea - tip aleasă ca reprezen-
tant.
Astfel, revenind la Exemplul 2.8, cuvântul recepţionat 1111 se decodifică ı̂n 0111
(considerând că a fost alterat primul caracter).
Dacă se ia ı̂nsă drept reprezentant pe linia a doua 0001 ı̂n loc de 1000, a doua
linie din tabloul standard este
Atunci, 1111 se decodifică ı̂n 1110 (considerı̂nd ultimul caracter ca fiind cel alterat
de canalul de transmisie). Care este cuvântul - cod corect transmis ? Acest lucru nu
poate fi decis. Singurul lucru care poate fi făcut este să se aleagă drept reprezentanţi
erorile - tip cele mai probabile.
Pentru un (n, k) - cod peste Zq , un dicţionar complet constă din toate cele q n
cuvinte posibile, lucru destul de dificil deoarece ı̂n practică codurile sunt destul de
lungi (de exemplu n = 100, k = 80). De aceea este utilizată o altă manieră de lucru
care reduce mult mărimea tabloului de lucru.
Fie H matricea de control a unui (n, k) - cod liniar A; putem considera (Corolarul
2.1) că liniile lui H sunt vectori liniar independenţi.
Teorema 2.6 Pentru orice e ∈ Zqn , toate cuvintele din Ve au acelaşi sindrom.
wH T = (e + v)H T = eH T + vH T = eH T + 0 = eH T .
aceasta, se rezolvă sistemul de ecuaţii liniare HeT = sT , care are soluţie, deoarece
liniile lui H sunt liniar independente. Din mulţimea soluţiilor alegem una de pondere
minimă, cu ajutorul căreia construim mulţimea Ve a tuturor cuvintelor de sindrom
s.
Pe baza celor de mai sus, se poate folosi următoarea procedură de decodificare:
În acest fel, nu mai este necesar să se reţină tot tabloul standard; este suficient
să se ştie reprezentanţii subspaţiilor Ve şi sindromurile corespunzătoare.
Exemplul 2.9 Reluând codul definit ı̂n Exemplul 2.8, el are ca matrice de control
à !
0 1 1 0
H=
1 1 0 1
Calculând sindromurile reprezentanţilor, se ajunge la tabloul:
Sindrom Reprezentant
00 0000
01 1000
10 0010
11 0100
(ı̂n Z2 scăderea este de fapt adunare) se ajunge la cuvântul transmis, anume 1001.
Exemplul 2.10 Să considerăm codul liniar peste Z3 definit de matricea de control
à !
1 0 2 1 0
H=
0 1 2 1 2
Sindromurile sunt cuvinte de lungime 2 peste Z3 , deci ı̂n total nouă cuvinte.
Lista sindromurilor şi a reprezentanţilor este:
2.6. EXERCIŢII Sindrom Reprezentant 23
00 00000
10 10000
01 01000
22 00100
11 00010
02 00001
20 20000
12 10001
21 20002
De remarcat că un tablou standard pentru acest cod are dimensiunea 9 × 27 şi
conţine 243 cuvinte; volumul de date s-a redus deci cu 92%.
Să presupunem că s-a trimis cuvântul cod 21122 şi s-a recepţionat 11122.
Sindromul este
1
à !
1
à !
1 0 2 1 0
= 2
1
0 1 2 1 2 0
2
2
Decodificarea a fost corectă deoarece eroarea - tip apărută a fost una din cele
selectate prin reprezentanţi.
2.6 Exerciţii
2.1 Să se construiască coduri liniare care să transforme cuvântul (a1 , a2 , . . . , an ) ∈
Zqn ı̂n:
1. (a1 , a1 , a1 , a2 , a2 , a2 , . . . , an , an , an );
2. (a1 , b1 , a2 , b2 , . . . , an , bn ) unde b1 = a1 , b + 2 = a1 + a2 , bn = a1 + . . . + an ;
2.4 Determinaţi dacă următorul cod liniar binar este sistematic sau nu:
1 1 0 0 0 0
G= 0 0 1 1 1 1
0 0 0 0 1 1
Dacă nu, găsiţi un cod sistematic echivalent.
2.5 Găsiţi matricea generatoare a unui cod liniar binar care are matricea de control:
1 0 1 1 0 0 0
1 1 1 0 1 0 0
H=
1 1 0 0 0 1 0
0 0 1 0 0 0 1
2.6 Se dă matricea de control
1 1 0 1 0 1
H= 1 1 0 0 1 0
1 0 1 1 0 0
a unui cod liniar binar.
Să se decodifice mesajele 110110, 010100.
2.7 Descrieţi dualul (6, 3) - codului binar descris de ecuaţiile:
x1 = x4 , x 2 = x5 , x 3 = x6 .
2.8 Fie A un cod liniar binar obţinut din toate sumele posibile ale cuvintelor
101011, 011101, 011010.
1. Aflaţi o matrice de control a codului.
2. Aflaţi un tablou standard şi decodificaţi 111011.
2.9 Demonstraţi că codul liniar binar descris de ecuaţiile
x3 = x1 + x2 , x 4 = x1 , x 5 = x1 + x2
corectează o eroare. Construiţi tabloul standard.
2.10 Construiţi o tabelă de sindromuri de decodificare pentru:
1. Codul cu repetiţie de lungime 7;
2. Codul din Exerciţiul 2.7;
3. Codul peste Z3 cu matricea generatoare:
1 0 0 2 2
G= 0 1 0 0 1
0 0 1 1 0
2.11 Fie un cod liniar An,k ⊂ Zqn şi tabela de sindromuri de decodificare cores-
punzătoare. Definim o operaţie de decodificare θ : Zqn → An,k cu proprietatea:
∀v ∈ An,k , ∀e reprezentant din tabelă, θ(v + e) = v. (θ corectează erorile - tip din
tabela de decodificare). Să se arate că atunci θ nu corectează nici o altă eroare - tip:
dacă e nu este un reprezentant din tabelă, atunci există v ∈ An,k cu θ(v + e) 6= v.
(Altfel spus, decodificarea cu sindromuri este optimală).
Prelegerea 3
Coduri liniare - II
25
26 PRELEGEREA 3. CODURI LINIARE - II
Să presupunem acum d ≥ 2t + 1. Atunci codul An,k poate corecta orice pachet
de t erori. Pentru a arăta aceasta, să presupunem că se trimite un cuvânt - cod
a şi se primeşte un cuvânt a0 cu d(a, a0 ) ≤ t. Pentru orice cuvânt cod b (deci cu
d(a, b) ≥ d ≥ 2t + 1) avem, conform inegalităţii triunghiului:
Teorema 3.3 Distanţa minimă a unui (n, k) - cod liniar verifică relaţia
d ≤ n − k + 1.
nq k−1 (q − 1)
d≤ (marginea Plotkin)
qk − 1
Demonstraţie: Să considerăm elementele din An,k aşezate ca linii ale unui tablou. Se
obţine un tablou cu q k linii şi n coloane. Fiecare componentă nenulă din Zq apare
pe fiecare coloană ı̂n q k−1 linii. Atunci, suma ponderilor tuturor cuvintelor - cod
este egală cu nq k−1 (q − 1) deoarece fiecare componentă nenulă apare de q k−1 ori ı̂n
fiecare coloană şi avem q − 1 componente nenule distribuite pe n coloane.
Distanţa minimă a codului nu poate să depăşească ponderea medie a cuvintelor
codului, adică
nq k−1 (q − 1)
d≤
qk − 1
deoarece ı̂n An,k sunt q k − 1 cuvinte nenule. 2
Teorema 3.5 Fie An,k un cod liniar peste Zq care corectează orice combinaţie de
maxim t erori. Într-un asemenea cod sunt necesare cel puţin
Demonstraţie: Pentru ca An,k să corecteze orice combinaţie de cel mult t erori, este
necesar ca fiecare astfel de eroare - tip să fie reprezentată ı̂n tabloul standard, deci
să fie caracterizată printr-un sindrom distinct. Sunt q n−k sindromuri distincte, deci
acesta este numărul maxim de erori care pot fi corectate de cod. Din cele q n−k
sindromuri, 1 trebuie să fie pentru 0 erori, Cn1 (q − 1) - pentru erori - tip simple
(cuvinte e cu o singură componentă nenulă), Cn2 (q − 1)2 pentru erori duble etc.
Deci, este necesar ca
Apoi se logaritmează. 2
atunci există un cod liniar An,k peste Zq cu distanţa minimă d (marginea Varşamov
- Gilbert).
Demonstraţie: Pentru ca să existe un cod liniar An,k peste Zq cu distanţa minimă d
este suficient (Teorema 2.4) ca orice coloană din matricea de control Hn−k,n să nu
fie combinaţie liniară a altor d − 2 coloane, ı̂n acest fel ne-existând nici o combinaţie
liniară ı̂ntre d − 1 coloane ale lui H. Această condiţie este echivalentă cu
q n−k − 1 ≥ Cn−1
1 2
(q − 1) + Cn−1 (q − 1)2 + . . . + Cn−1
d−2
(q − 1)d−2 .
Aici, q n−k − 1 reprezintă numărul total de coloane distincte nenule care pot apare
ı̂n matricea H. Semnificaţia termenilor din membrul drept este evidentă; astfel, de
2
exemplu Cn−1 (q − 1)2 reprezintă numărul combinaţiilor liniare cu coeficienţi nenuli
a două din cele n − 1 coloane etc.
Apoi se logaritmează. 2
Fie En,k un cod liniar peste Zq pentru care d ≥ 2t + 1 (deci cu capacitatea de a
corecta orice combinaţie de maxim t erori). Reamintim că ı̂n prelegerea precedentă
am definit pentru orice x ∈ An,k sfera centrată ı̂n x prin
Vom nota numărul de elemente ale fiecăreia din cele două mulţimi prin
St = |St (x)|, At = |At (x)|
(valorile sunt aceleaşi pentru orice x ∈ Zqn ).
Au loc relaţiile evidente:
t
X
A t ≤ St , St = Ai .
i=0
28 PRELEGEREA 3. CODURI LINIARE - II
Deoarece sferele de rază t centrate ı̂n cuvintele codului An,k sunt disjuncte, avem
q k St ≤ q n .
Aici, q k reprezintă numărul de cuvinte - cod, iar q n - numărul total de cuvinte
din Zqn .
Din această relaţie se obţine imediat
n − k ≥ logq St ,
cunoscută sub numele de inegalitatea volumului. Ea mai poate fi găsită şi sub forma
k 1
≤ 1 − logq St .
n n
k
Raportul se numeşte rata de informaţie şi dă o măsură a cantităţii de informaţie
n
pe care o poartă un cuvânt - cod. O rată de informaţie mică (mai multe simboluri
de control) asigură o securitate mai mare a transmiterii datelor. În schimb, condiţii
practice de eficienţă cer o rată de informaţie cât mai mare (mai multă informaţie
pe unitatea de mesaj). Aceasta este una din solicitările contradictorii ale teoriei
codurilor.
Observaţii:
• În cazul binar, noul caracter an+1 poartă numele bit de paritate.
Dacă H este matricea de control a codului An,k , atunci codul extins A∗n+1,k are
matricea de control
0
..
H .
H∗ =
0
1 1 ... 1 1 1
n
X
De fapt, ultima linie reprezintă ecuaţia xi = 1.
i=1
3.2. MODIFICĂRI ALE CODURILOR LINIARE 29
• Dacă un cod liniar binar A are o distanţă minimă impară d, atunci codul
extins are distanţa minimă d + 1. Într-adevăr, fie a = a1 a2 . . . an ∈ A cu
n
X
w(a) = d. Cum d este impar, rezultă ai = 1 (ı̂n Z2 ), deci an+1 = 1.
i=1
Cuvântul a0 = a1 a2 . . . an 1 ∈ A∗ , w(a0 ) = d + 1 şi nu se poate construi un alt
cuvânt - cod ı̂n A∗ de pondere mai mică.
Observaţii:
• Relaxarea este operaţia inversă extensiei.
• Prin completarea şi expurgarea codurilor liniare se obţin coduri liniare numai
ı̂n cazul binar. În celelalte cazuri, noile mulţimi rezultate nu sunt spaţii liniare.
Propoziţia 3.1 Prin completarea unui cod liniar binar An,k se obţine un cod liniar
binar An,k+1 cu un număr dublu de cuvinte - cod.
generează An,k ∪ (1 + An,k ). Acest cod are k + 1 poziţii de informaţie şi lungime
n. Fiecare din cele două submulţimi are un număr egal de elemente. 2
Propoziţia 3.2 Orice cod liniar binar are sau toate cuvintele - cod de pondere pară,
sau numărul cuvintelor - cod de pondere pară este egal cu al celor de pondere impară.
Corolarul 3.1 Expurgarea unui cod liniar binar A este tot A sau un cod liniar
având ca elemente jumătate din elementele lui A.
Matricea generatoare Gexp a lui Aexp se poate obţine din matricea G a lui A astfel:
dacă toate liniile lui G sunt vectori de pondere pară cele două coduri coincid. Altfel,
fie G = [e1 , e2 , . . . , er , er+1 , . . . , ek ]T ı̂n care - fără a micşora generalitatea, putem
presupune că primele r au pondere impară, iar celelalte k − r au pondere pară.
Atunci Gexp = [0, e2 + e1 , . . . , er + e1 , er+1 . . . , ek ]T .
Exemplul 3.1 Să construim codul A4,2 peste Z3 de matrice generatoare
à !
1 0 0 1
G= .
0 1 1 1
Ea codifică cele 9 elemente din Z32 ı̂n
A4,2 = {0000, 0111, 0222, 1001, 1112, 1220, 2002, 2110, 2221}.
Codul liniar relaxat A3,2 = {000, 011, 022, 100, 111, 122, 200, 211, 222} este generat
de matricea à !
1 0 0
Grel = .
0 1 1
Construcţia a fost posibilă deoarece prin eliminarea ultimei coloane, liniile rămase
sunt tot liniar independente. Dacă acest lucru nu este realizabil, se caută k cuvinte
- cod ı̂n An,k cu proprietatea că după eliminarea ultimei componente, ele sunt liniar
independente. Acestea formează 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 că el nu este un spaţiu liniar (nu este ı̂nchis la adunarea din Z3 ).
Codul expurgat are cinci elemente: {0000, 1001, 1112, 2002, 2221}. Nici acesta
nu este cod liniar.
Exemplul 3.2 Să reluăm matricea generatoare din Exemplul 3.1, dar pentru un
cod liniar peste Z2 . Codul generat de G este A4,2 = {0000, 0111, 1001, 1110}.
Toate codurile modificate sunt ı̂n acest caz coduri liniare. Astfel
• Codul relaxat Arel = {000, 011, 100, 111} este generat de aceeaşi matrice Grel
din Exemplul 3.1.
• Codul completat Acom = {0000, 0111, 1001, 1110, 1111, 1000, 0110, 0001} este
un cod liniar generat de matricea
1 0 0 1
Gcom =
0 1 1 1 .
1 1 1 1
• Codul expurgat Aexp = {0000, 1001} este un cod liniar generat de matricea
à !
1 0 0 1
Gex = .
0 0 0 0
3.3. DETECTAREA ŞI CORECTAREA SIMULTANĂ A ERORILOR 31
El are distanţa minimă d = 3, deci poate detecta 2 erori şi poate corecta o eroare
(Teoremele 3.1,3.2). Totuşi, codul nu poate realiza acest lucru simultan.
Mai precis, atunci când codul este utilizat pentru corectare de erori, erorile du-
ble scapă nedetectate. Astfel, dacă se trimite 0000000 şi se recepţionează 1010000,
sindromul este 010. Tabloul standard conduce la corectarea celui de-al doilea bit, şi
decodifică (incorect) ı̂n cuvântul - cod 111000.
Uneori ı̂nsă, se solicită ı̂n mod explicit un cod capabil să detecteze şi să corecteze
erori ı̂n acelaşi timp.
Definiţia 3.3 Un cod A de lungime n corectează t erori şi detectează s erori simul-
tan dacă orice cuvânt - cod v are următoarea proprietate:
În această situaţie, detectarea şi corectarea simultană a erorilor se realizează astfel:
la recepţionarea unui cuvânt w ∈ Zqn se caută cel mai apropiat cuvânt - cod v (ı̂n
sensul distanţei Hamming). Dacă d(w, v) ≤ t atunci cuvântul se corectează ı̂n v;
altfel, se anunţă că cel puţin s simboluri sunt modificate.
Justificarea acestui procedeu rezultă imediat din definiţie.
Teorema 3.7 Un cod corectează t erori şi detectează s erori simultan dacă şi numai
dacă
d ≥ t + s + 1.
se deduce
d(w, v0 ) ≥ t + s + 1 − d(v, w) ≥ t + s + 1 − s = t + 1.
Exemplul 3.4 Să considerăm (8, 4) - codul liniar binar generat de matricea
1 0 0 0 1 1 1 0
0 1 0 0 1 1 0 1
G= .
0 0 1 0 1 0 1 1
0 0 0 1 0 1 1 1
El are distanţa minimă d = 4, deci - conform Teoremei 3.2 poate corecta maxim
o eroare, iar conform Teoremei 3.7 poate corecta o eroare şi detecta simultan două
erori.
Astfel recepţionarea cuvântului 11110010 conduce la corectarea sa ı̂n 10110010
(deoarece d(11110010, 10110010) = 1 şi 10110010 este cuvânt - cod).
În schimb recepţionarea cuvântului 00001111 anunţă că au apărut cel puţin două
erori. În această situaţie, nu mai puţin de patru cuvinte - cod (00010111, 00101011,
01001101, 10001110) sunt situate la distanţa 2 de cuvântul primit.
Exemplul 3.5 Codul binar cu repetiţie de lungime 7 (care are 2 elemente) poate
realiza una din condiţiile:
• Corectează 3 erori;
• Detectează 6 erori;
n
X
Cum A1 = A2 = . . . = Ad−1 = 0, suma se reduce la Pned = pi q n−i .
i=d
3.5. IDENTITATEA MACWILLIAMS 33
Exemplul 3.6 Să considerăm un cod care are un cuvânt de pondere 0, câte şapte
cuvinte de pondere 3 şi 4 şi un cuvânt de pondere 7. Atunci
Pned = 7p3 q 4 + 7p4 q 3 + p7
Dacă folosim acest cod ı̂ntr-un canal binar simetric cu eroare de probabilitate
p = 0.01, avem
Pned = 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 şapte erori nedetectabile la un milion de cuvinte
transmise.
Exemplul 3.7 Codul definit ı̂n Exemplul 3.2 are numărătorul de ponderi
P (x) = 1 + x2 + 2x3
Propoziţia 3.3 Fie An,k un cod liniar binar cu numărător de ponderi P (x). Proba-
bilitatea apariţiei unei erori nedetectabile la folosirea codului An,k ı̂ntr-un canal binar
simetric este " Ã ! #
n p
Pned = q P −1 .
q
Demonstraţie: Dacă w ∈ A⊥ atunci evident, (−1)vw = (−1)0 = 1 şi suma este egală
cu numărul de cuvinte - cod din A, care este 2k .
Să presupunem acum că w 6∈ A⊥ , deci există un cuvânt - cod v0 ∈ A cu v0 w = 1.
Vom arăta că ı̂n acest caz, numărul cuvintelor - cod ortogonale pe w este egal cu
cel al cuvintelor - cod ne-ortogonale pe w (şi deci suma din formulă este 0).
Fie v1 , v2 , . . . , vr toate cuvintele - cod ortogonale pe w. Facem afirmaţia că
atunci v1 + v0 , v2 + v0 , . . . , vr + v0 sunt toate cuvintele - cod ne-ortogonale pe v0 .
Într-adevăr:
1. ∀i (1 ≤ i ≤ r) (vi + v0 )w = vi w + v0 w = 0 + 1 = 1;
Teorema 3.8 Pentru orice (n, k) - cod liniar binar A are loc relaţia (identitatea
MacWilliams):
µ ¶
(1 + x)n 1−x
PA⊥ (x) = PA .
2k 1+x
Demonstraţie: Să rescriem numărătorul de ponderi sub o formă puţin diferită:
n
X
B(x, y) = Ai xi y n−i .
i=0
à !
n x
Evident, deoarece P (x) = B(x, 1) şi B(x, y) = y P , cele două expresii sunt
y
echivalente.
În notaţia cu polinomul B, identitatea MacWilliams se scrie
1
BA⊥ (x) = BA (y − x, y + x).
2k
Cu ajutorul ponderii cuvintelor - cod, numărătorul de ponderi are forma
n
X X
BA (x, y) = Ai xi y n−i = xw(a) y n−w(a)
i=0 a∈A
Expresia din paranteze este 0 pentru toate cuvintele a care nu sunt ı̂n A⊥ . Deci
1 X X
BA⊥ (x, y) = k
(−1)va xw(a) y n−w(a) .
2 v∈A a∈Z k
2
Suma interioară se face după toate secvenţele binare a de lungime n. Vom ordona
această sumă după ponderile lui a: pentru a = 0 sumandul este y n ; pentru cu-
vintele a de pondere 1 avem: [(−1)a1 + (−1)a2 + . . . + (−1)an ]xy n−1 etc; ı̂n final,
pentru ponderea n avem [(−1)a1 + . . . + (−1)an ]xn . Suma tuturor acestor sumanzi
n
X
[(−1)ai1 + . . . + (−1)aik ]xk y n−k se observă uşor că este egală cu
k=0
n
Y
[y + (−1)a1 x][y + (−1)a2 x] . . . [y + (−1)ak x] = [y + (−1)ai x]. Deci
i=1
n
1 XY 1
BA⊥ (x, y) = k [y + (−1)ai x] = k BA (y − x, y + x). 2
2 a∈A i=1 2
Exemplul 3.8 Să considerăm codul din Exemplul 3.2 al cărui numărător de ponderi
a fost dat ı̂n Exemplul 3.7. Pentru codul dual,"numărătorul de ponderi este#
µ ¶ µ ¶ µ ¶
(1 + x)4 1−x (1 + x)4 1−x 2 1−x 3
PA⊥ (x) = PA = 1 + + 2 =
22 1+x 4 1+x 1+x
(1 + x)4 + (1 + x)2 (1 − x)2 + 2(1 + x)(1 − x)3 4 + 4x2 + 4x3
= = = 1 + x2 + x3 .
4 4
Deci cele două coduri au acelaşi numărător de ponderi. Aceasta nu ı̂nseamnă
ı̂nsă că cele două coduri coincid (şi deci codul ar fi auto - dual); a avea acelaşi
numărător de ponderi este doar o condiţie necesară, nu şi suficientă pentru ca un
cod să coincidă cu dualul său.
3.6 Exerciţii
3.1 În Z2n notăm cu x cuvântul obţinut din x prin permutarea caracterelor 0 şi 1
ı̂ntre ele. Să se arate că pentru orice a, b ∈ Z2n :
1. a + b = a + b;
2. a + b = a + b = a + b;
3.2 Descrieţi codurile modificate obţinute din codul liniar binar cu matricea genera-
toare
1 1 1 0 0
G= 0 0 1 1 1
1 1 1 1 0
3.4 Fie A un (n, k) - cod liniar binar şi A0 (n, k − 1) - codul obţinut din A prin
expurgare. Ce relaţie există ı̂ntre matricile de control ale celor două coduri ?
3.5 Arătaţi cum poate codul binar cu repetiţie de lungime 7 să corecteze două erori
şi să detecteze 4 erori simultan. Câte erori poate detecta dacă corectează o eroare ?
3.6 Fie A (15, 4) - codul liniar binar ı̂n care fiecare coloană i din matricea genera-
toare este scrierea binară a lui i sub forma unui vector cu 4 componente. Să se
determine distanţa minimă, numărătorul de ponderi şi numărătorul de ponderi al
codului dual.
Teorema 4.1 Un cod liniar binar poate corecta o eroare dacă şi numai dacă ma-
tricea sa de control are toate coloanele nenule şi distincte.
Pentru a se putea corecta toate erorile simple, trebuie să existe sindromuri distincte
pentru fiecare eroare - tip; deci, conform marginii Hamming (Prelegerea III, Teorema
3.5),
2n−k ≥ n + 1.
Pe baza acestor considerente se defineşte codul Hamming binar:
Definiţia 4.1 Codul liniar binar ı̂n care coloanele matricii H sunt reprezentarea
binară a numerelor 1, 2, . . . , 2r − 1 este numit cod Hamming binar.
Deci, pentru orice număr natural r (r ≥ 2) se poate construi un (n, k) - cod liniar
ı̂n care n = 2r − 1, k = 2r − r − 1.
De remarcat că definiţia nu determină pentru fiecare r ı̂n mod unic matricea de
control a codului Hamming. De obicei se consideră acea matrice H ı̂n care coloana
i reprezintă scrierea ı̂n binar a numărului i. Deoarece codul este sistematic (există
coloane pentru 20 , 21 , . . . , 2r−1 ), toate celelalte reprezentări au aceleaşi proprietăţi.
37
38 PRELEGEREA 4. CLASE DE CODURI LINIARE
Să determinăm matricea generatoare a acestui cod. Pentru aceasta, construim ı̂ntâi
codul echivalent, permutând coloanele pentru a aduce matricea de control la forma
eşalonată canonic:
0 1 1 1 1 0 0
∗
H3,7 = 1 0 1 1 0 1 0 .
1 1 0 1 0 0 1
1. Se calculează sindromul s = aH T .
Exemplul 4.2 Să considerăm din nou (7, 4) - codul Hamming din Exemplul 4.1
şi să presupunem că s-a recepţionat cuvântul x = 0011101. Calculul sindromului
conduce la valoarea
1
xH T = 0
1
care este scrierea ı̂n binar a numărului 5. Deci a intervenit o eroare simplă pe poziţia
a cincea. Corectăm această poziţie - schimbând 1 cu 0 şi se obţine cuvântul - cod
0011001, care pe poziţiile 3, 5, 6, 7 conţine mesajul de informaţie: 1001.
Codul Hamming poate fi ı̂mbunătăţit prin extensie. Această operaţie conduce la un
(2m , 2m − m − 1) - cod liniar, cu toate cuvintele - cod de pondere pară.
Exemplul 4.3 Prin extensia (7, 4) - codului Hamming se obţine codul cu matricea
de control
0 0 0 1 1 1 1 0
0 1 1 0 0 1 1 0
H∗ =
.
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 că H ∗ are rangul 4; ı̂n plus, toate liniile ei sunt cuvinte - cod ı̂n
codul Hamming extins. Deci H ∗ poate fi considerată matrice generatoare a acestui
cod. Rezultă că (8, 4) - codul Hamming extins este auto - dual.
Un cod Hamming extins este soluţia unui sistem liniar de n − k + 1 ecuaţii, ecuaţia
n+1
X
suplimentară xi = 0 fiind numită ecuaţia de control a parităţii.
i=1
1. Dacă nu sunt verificate ecuaţia de control a parităţii şi cel puţin una
din primele n − k ecuaţii, ı̂nseamnă că a apărut o eroare simplă, care se
corectează cu Algoritmul A;
2. Dacă ecuaţia de control a parităţii este verificată dar cel puţin una din
primele n−k ecuaţii de control nu se verifică, s-a detectat o eroare dublă;
32 − 1
Exemplul 4.4 Să considerăm q = 3, r = 2. Atunci n = = 4. Un (4, 2) -
3−1
cod Hamming ternar poate fi dat de matricea de control
à !
0 1 1 1
H=
1 0 1 2
Decodificarea se poate face folosind tabela de sindromuri, ı̂n care s-au luat ca repre-
zentanţi toate combinaţiile posibile de o eroare:
imediat.
42 PRELEGEREA 4. CLASE DE CODURI LINIARE
Exemplul 4.5 Să considerăm (13, 10) - codul Hamming ternar. Acest cod are o
aplicaţie interesantă ı̂n problema Pronosportului. După cum se ştie, un buletin
Pronosport conţine rezultatele (notate cu 1, 2, X) a 13 meciuri. Pentru a avea sigur
13 rezultate exacte trebuiesc completate 313 buletine. Câte buletine sunt ı̂nsă necesare
pentru a fi sigur de 12 rezultate ? La prima vedere s-ar părea că 312 . Completând
ı̂nsă buletinele cu elementele codului Hamming ternar (13, 10) (cu 0 ı̂n loc de X) -
care sunt ı̂n număr de 310 , se atinge scopul dorit. Într-adevăr, acesta fiind un cod
perfect corector de o eroare, orice element din Z313 diferă prin cel mult o poziţie de
un cuvânt - cod.
Astfel, numărul buletinelor se reduce de nouă ori.
Figura 4.1:
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
B=
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
• Matricea B este mai uşor de construit decât pare. Astfel, eliminând ultima
linie şi coloană, matricea rămasă - să spunem B1 - este generată ciclic (spre
4.2. CODUL GOLAY 43
à !
B1 1T
stânga) de cuvântul binar 11011100010. Deci B = ,
1 0
unde 1 = 11111111111. Evident, B este simetrică (B T = B).
• C24 are n = 24, k = 12 şi 212 = 4096 cuvinte - cod.
• Conform Teoremei 2.2, o matrice de control a codului este H = (B|I12 ).
Teorema 4.4 H = (I12 |B) este de asemenea matrice de control pentru C24 .
Demonstraţie: Liniile din B au pondere impară (7 sau 11); deci produsul (scalar)
al unei linii cu ea ı̂nsăşi este 1. O verificare simplă arată că produsul primei linii cu
oricare altă linie din B este 0. Structura ciclică a lui B1 asigură că atunci produsul
scalar al oricăror două linii este 0.
În concluzie, BB T = I12 . Dar B T = B, aşa că putem scrie:
à !
T I
GH = (I|B) = I 2 + B 2 = I + BB T = I + I = 0.
B
Vom folosi ambele matrici de control pentru decodificarea codului C24 . 2
Corolarul 4.1
A. C24 admite ca matrice generatoare şi pe G = (B|I12 ).
⊥
B. Codul Golay extins este auto - dual (C24 = C24 ).
Demonstraţie: Se verifică imediat. 2
Teorema 4.5 C24 are distanţa minimă d = 8.
Demonstraţie: Vom demonstra afirmaţia ı̂n trei paşi.
1. Ponderea cuvintelor din C24 este multiplu de 4.
Să observăm că liniile lui G au pondere 8 sau 12. Fie v ∈ C24 ca sumă de două
linii din G : v = ri + rj . Cum B are liniile ortogonale, rezultă că şi liniile lui
G sunt ortogonale. Deci ri şi rj au un număr par (să zicem 2x) de elemente 1
ı̂n comun. Atunci w(v) = w(ri ) + w(rj ) − 2(2x), care este multiplu de 4.
Fie acum v ∈ C24 ca sumă de trei linii din G : v = ri + rj + rs . Notăm
v1 = ri + rj . Deoarece C24 este auto - dual, v1 şi rs au un număr par (să
zicem 2y) de elemente 1 ı̂n comun. Deci w(v) = w(v1 ) + w(rs ) − 2(2y) care
este multiplu de 4.
Folosind acum un procedeu de inducţie, cum orice cuvânt - cod este combinaţie
liniară de linii din G, ponderea sa va fi multiplu de 4.
2. Primele 11 linii din G sunt cuvinte - cod de pondere 8, deci distanţa codului
C24 este 4 sau 8.
3. C24 nu are cuvinte de pondere 4.
Să presupunem că există v ∈ C24 cu w(v) = 4. Există atunci u1 , u2 ∈ Z212
cu v = u1 (I|B), v = u2 (B|I). Deoarece există o jumătate din v care are cel
puţin doi de 1, rezultă w(u1 ) ≤ 2 sau w(u2 ) ≤ 2. Pe de-altă parte, suma
a una sau două linii din B nu poate avea o pondere mai mică de 4; deci
w(v) = w(ui ) + w(ui B) > 4, contradicţie. 2
44 PRELEGEREA 4. CLASE DE CODURI LINIARE
Deoarece G = (I12 |B) este ı̂n forma eşalonat canonică, mesajul de informaţie (orice
cuvânt din Z212 ) apare pe primele 12 poziţii ale cuvântului - cod. Astfel, ı̂n exemplul
de sus, mesajul de informaţie a fost 001111101110.
s + b1 = 000110001100
s + b2 = 011111000010
s + b3 = 101101011110
s + b4 = 001001100100
s + b5 = 000000010010
sB + b1 = 001110111000
sB + b2 = 010111110110
sB + b3 = 100101101010
sB + b4 = 000001010000
Demonstraţie: Demonstraţia se poate face fie direct (similar celei de la Teorema 4.5)
fie folosind faptul că C23 este relaxarea codului C24 , care are distanţa 8. 2
În consecinţă, un cod Golay va corecta orice combinaţie de maxim 3 erori.
Lema 4.1 O condiţie necesară pentru existenţa unui (n, k) - cod binar perfect corec-
t
X
tor de t erori este Cni = 2p pentru un anumit p.
i=0
Demonstraţie: Rezultă imediat din relaţia scrisă ı̂n demonstraţia Teoremei 4.3, ı̂n
care se ia q = 2. 2
4.3. UNICITATEA CODURILOR PERFECTE BINARE 47
t
X n+1
Lema 4.2 Cni = Rt (n)
i=0 t!
unde t este număr natural impar, Rt (X) ∈ Z[X], gr(Rt (X)) = t − 1.
Teorema 4.8 Codul binar Golay este singurul cod binar perfect netrivial corector
de 3 erori.
Lemele 4.1 şi 4.2 pot fi folosite şi pentru alte valori impare ale lui t. Cercetările nu
au condus la alte coduri perfecte binare, dar nici nu s-a demonstrat că nu există
nici un cod perfect binar corector de t (t > 3 impar) erori. Afirmaţia este valabilă
deocamdată pentru t < 20.
Un alt caz interesant de studiu este q = 2, t = 2. Aici se poate da teorema:
Teorema 4.9 Nu există nici un cod netrivial binar perfect corector de 2 erori.
Ecuaţia x2 + 7 = 2m a fost studiată ı̂n multe articole (vezi Math. Rev. 26, #74).
Singurele soluţii sunt x = 1, 3, 5, 11, 181 cărora le corespund:
n = 0, 1 − fără coduri.
n=2 − codul trivial cu un singur cuvânt.
n=5 − codul cu repetiţie {00000, 11111}.
n = 90.
48 PRELEGEREA 4. CLASE DE CODURI LINIARE
Acest ultim caz este eliminat de următorul rezultat (Van Lindt - Coding theory,
pp. 95):
n+1
Dacă există un cod binar perfect corector de t erori, atunci este număr
t+1
ı̂ntreg. 2
4.4 Exerciţii
4.1 Fie (8, 4) - codul Hamming binar extins. Decodificaţi cuvintele
10101010 11010110 11111111.
4.2 Să se demonstreze că toate cuvintele - cod ale codului Hamming binar extins
(2r , 2r − r − 1) au pondere pară.
4.3 Construiţi codurile Hamming ternare pentru r = 2, 3 şi determinaţi decodifi-
carea pe baza sindromurilor.
4.4 Construiţi (5, 3) - codul Hamming cu q = 4. Determinaţi toate cuvintele - cod şi
tabela de decodificare cu sindromuri. Decodificaţi cuvintele: 11223, 32101 2222 1100.
4.5 Demonstraţi afirmaţiile din Corolarul 4.1.
4.6 Arătaţi că C24 conţine un cuvânt cu toate componentele egale cu 1 şi nici un
cuvânt de pondere 20.
Demonstraţi că numărătorul de ponderi al lui C24 este:
1 + 759X 8 + 2576X 12 + 759X 16 + X 24 .
4.7 În codul Golay extins C24 să se decodifice - dacă este posibil, cuvintele:
111000000000, 011011011011 111111000000, 100011100111
111111000000, 101011100111 111111000000, 111000111000
111000000000, 110111001101 110111001101, 111000000000
000111000111, 101000101101 110000000000, 101100100000
4.8 Să se determine eroarea tip cea mai probabilă pentru un cuvânt cu sindromurile:
s1 = 010010000000, s2 = 011111010000
s1 = 010010100101, s2 = 001000110000
s1 = 111111000101, s2 = 111100010111
s1 = 111111111011, s2 = 010010001110
s1 = 001101110110, s2 = 111110101101
s1 = 010111111001, s2 = 100010111111
4.9 Folosind C23 , decodificaţi cuvintele:
101011100000, 10101011011 101010000001, 11011100010
100101011000, 11100010000 011001001001, 01101101111
4.10 Detaliaţi demonstraţia Teoremei 4.6.
4.11 Rezolvaţi ecuaţia (1).
Prelegerea 5
Vom introduce o nouă clasă de coduri binare, caracterizate printr-o tehnică de de-
codificare deosebit de simplă: codurile Reed - Muller (R − M ). Ele au fost definite
de Reed, iar Muller a construit modalitatea de decodificare şi - implicit - de de-
tectare şi corectare a erorilor. Unul din aceste coduri - RM(1, 5) - a fost folosit ı̂n
1969 de sonda Mariner pentru transmiterea de imagini de pe Lună. Fiecare pixel
din imagine avea asignat una din 26 = 64 grade de umbră, iar aceşti şase biţi de
informaţie erau codificaţi ı̂ntr-un cuvânt de lungime 32. Codul poate corecta până
la 7 erori.
O modalitate simplă folosită pentru definirea unei funcţii booleene este asocierea
unei tabele de adevăr: un tablou (m+1)×2m care conţine toate combinaţiile posibile
de m valori binare, cărora li se asociază valoarea funcţiei (de asemenea o valoare
binară). Prin convenţie, primii m biţi de pe coloana i (0 ≤ i ≤ 2m − 1) reprezintă
scrierea ı̂n baza 2 a numărului i.
Exemplul 5.1 Următoarea tabelă de adevăr defineşte o funcţie booleană de 3 vari-
abile:
x0 0 1 0 1 0 1 0 1
x1 0 0 1 1 0 0 1 1
x2 0 0 0 0 1 1 1 1
f 0 1 1 0 1 1 1 0
Observăm că o astfel de tabelă defineşte un cuvânt binar de lungime 8. Afirmaţia
este adevărată şi invers: orice cuvânt binar de lungime 8 este definit printr-o tabelă
de adevăr a unei funcţii booleene de 3 variabile. Astfel, se pot identifica funcţiile
booleene de 3 variabile prin cuvintele binare de lungime 8. În tabela de sus, cuvântul
01101110 este pus ı̂n corespondenţă biunivocă cu funcţia f .
49
50 PRELEGEREA 5. CODURI REED - MULLER
În cele ce urmează, orice cuvânt binar f = f0 f1 . . . f2m −1 de lungime 2m este conside-
rat ca o funcţie booleană de m variabile, unde
f (0, 0, . . . , 0, 0) = f0 ,
f (0, 0, . . . , 0, 1) = f1 ,
f (0, 0, . . . , 1, 0) = f2 ,
..
.
f (1, 1, . . . , 1, 1) = f2m −1
m−1
X
În general, fi = f (im−1 , . . . , i1 , i0 ), unde i = ik 2k
k=0
(im−1 . . . i1 i0 este scrierea ı̂n binar a lui i).
Exemplul 5.2 Există două funcţii booleene constante:
1 = 11 . . . 11, 0 = 00 . . . 00.
Tabelul 5.1:
x0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
x1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
x2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
x3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
2. Există şi alte operaţii care pot fi exprimate cu ajutorul sumei şi produsului
logic. Astfel,
• Negaţia f =1+f
• ∨ (sau disjunctiv): f ∨ g = f + g + fg
Funcţia 0 este numită polinom boolean de gradul −1, funcţia 1 este numită polinom
boolean de gradul 0, iar orice alt polinom boolean are gradul k unde k este numărul
maxim de factori dintr-un termen al lui f .
Exemplul 5.5 Polinomul xi xj (i 6= j) este cuvântul binar ı̂n care pe poziţia k este
1 dacă şi numai dacă reprezentarea binară a lui k are 1 pe poziţiile i şi j. Numărul
acestor situaţii este 2m−2 (deoarece celelalte m − 2 poziţii din scrierea binară a lui k
pot fi alese arbitrar). Deci w(xi xj ) = 2m−2 .
Mai general,
Dacă i1 , i2 , . . . , ir sunt valori distincte din [0, m − 1], atunci
w(xi1 xi2 . . . xir ) = 2m−r . (∗)
Fiecare polinom boolean de m variabile determină un cuvânt binar de lungime
2m : pentru o singură nedeterminată, se foloseşte Exemplul 5.3, după care se operează
adunările şi multiplicările necesare.
Invers, orice cuvânt binar f = f0 f1 . . . f2m −1 poate fi translatat ı̂ntr-un polinom
boolean pe baza următoarei propoziţii:
Demonstraţie: Deoarece xm−1 poate lua doar două valori (0, 1), este suficient să
verificăm identitatea pentru acestea. Cazul xm−1 = 0 se verifică banal. Pentru
xm−1 = 1 avem:
f (x0 , . . . , xm−2 , 0)+[f (x0 , . . . , xm−2 , 0)+f (x0 , . . . , xm−2 , 1)] = f (x0 , . . . , xm−2 , 1).
2
52 PRELEGEREA 5. CODURI REED - MULLER
Teorema 5.1 Spaţiul liniar Z2n , (n = 2m ) are o bază formată din toate monoamele
booleene:
1
xi (i = 0, 1, . . . , m − 1)
xi xj (i, j = 0, 1, . . . , m − 1, i 6= j)
..
.
x0 x1 . . . xm−1
Exemplul 5.7 RM(0, m) este format din toate polinoamele de grad cel mult 0,
adică 0 şi 1. Deci RM(0, m) este codul cu repetiţie de lungime 2m .
Exemplul 5.8 RM(1, m) are baza 1, x0 , . . . , xm−1 ; orice polinom de grad cel mult
1 se poate scrie ca sumă de o parte din aceste m+1 polinoame (liniar independente).
Deci, RM(1, m) este un (2m , m + 1) - cod liniar.
De exemplu, RM(1, 3) are matricea generatoare:
1 1 1 1 1 1 1 1 1
x0 0 1 0 1 0 1 0 1
G=
=
.
x1 0 0 1 1 0 0 1 1
x2 0 0 0 0 1 1 1 1
care generează 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, după cum s-a menţionat anterior.
0 1 r
Propoziţia 5.2 RM(r, m) are k = Cm + Cm + . . . + Cm simboluri de informaţie.
5.1. DEFINIREA PRIN FUNCŢII BOOLEENE 53
În mod similar se poate da o definiţie recursivă a matricii generatoare G(r, m) pentru
codul RM(r, m).
Teorema 5.2 G(r, m) este matrice generatoare pentru codul RM(r, m).
à !
G(1, m − 1) G(1, m − 1)
G(1, m) = .
0 G(0, m − 1)
Pentru că 1 este prima linie a lui G(1, m − 1), cuvântul [1, 1] formează prima
linie a matricii (G(1, m − 1) G(1, m − 1)). Deci RM(0, m) = {0, 1} este conţinut
ı̂n codul RM(1, m).
În general, deoarece G(r − 1, m − 1) este submatrice a lui G(r, m − 1) şi
G(r − 2, m − 1) este o submatrice a lui G(r − 1, m − 1), este evident că
à !
G(r − 1, m − 1) G(r − 1, m − 1)
G(r − 1, m) =
0 G(r − 2, m)
este o submatrice a lui G(r, m), deci RM(r −1, m) este subcod al lui RM(r, m).
2
h 0 x0 + h 1 x1 + h 2 x2 = c
Liniile şi planele sunt exemple de spaţii afine. Un spaţiu afin ı̂n Z23 este o mulţime
de forma
a + A = {a + b|b ∈ A}
unde a ∈ Z23 iar A este un subspaţiu liniar din Z23 . Dacă dimensiunea lui A este s,
numim acea mulţime un s - spaţiu afin.
Deci liniile sunt 1 - spaţii afine, iar planele: 2 - spaţii afine. Pentru fiecare punct
pi avem un 0 - spaţiu afin, şi - ı̂n sfârşit - există un 3 - spaţiu afin unic - Z23 .
Orice spaţiu afin L poate fi descris de un cuvânt binar fL = f7 . . . f1 f0 definit
prin
(
1 dacă pi ∈ L,
fi =
0 altfel
Exemplul 5.12 Primele două plane din tabelul de sus se intersectează după linia
{p3 , p7 }. Produsul logic al funcţiilor lor caracteristice este
x0 x1 = 10001000,
care se poate verifica imediat ca fiind funcţia caracteristică a dreptei {p3 , p7 }.
Definiţia 5.5 Fie A un subspaţiu liniar r - dimensional al lui Z2m şi a ∈ Z2m .
Mulţimea
Aa = a + A = {a + b|b ∈ A}
se numeşte r - spaţiu afin ı̂n geometria euclidiană m - dimensională.
Un (m − 1) - spaţiu afin se numeşte ”hiperplan”.
58 PRELEGEREA 5. CODURI REED - MULLER
a + t 1 b1 + . . . + t r br .
HxT = HaT .
Acest sistem are m − r ecuaţii. În particular, un hiperplan este definit printr-o
singură ecuaţie:
h0 x0 + h1 x1 + . . . + hm−1 xm−1 = c.
Exemplul 5.13 Un 0 - spaţiu afin cuprinde un singur punct. Există deci 2m
0 - spaţii afine distincte: {p0 }, {p1 }, . . . , {p2m −1 }.
Similar, orice 1 - spaţiu afin (sau ”linie”) este o mulţime formată din două
puncte
a + tb ≡ {a, a + b},
şi invers, orice mulţime de două puncte distincte formează un 1 - spaţiu afin.
Există deci C22m 1 - spaţii afine.
Exemplul 5.14 Fie Pi spaţiul afin definit de ecuaţia xi = 1. Deci Pi este mulţimea
punctelor pk care au 1 pe poziţia i. De exemplu P0 = {p1 , p3 , . . . , p2m −1 }.
Fiecare Pi este un hiperplan şi - deoarece p2i are un singur 1 pe poziţia i şi 0 ı̂n
rest, putem scrie
Pi ≡ p2i + A
unde A este spaţiul liniar definit de ecuaţia xi = 0, (deci tot un hiperplan).
Definiţia 5.6 Funcţia caracteristică a unui r - spaţiu afin L este cuvântul binar
fL = f2m −1 . . . f1 f0 definit prin
(
1 dacă pj ∈ L,
fj =
0 altfel
5.3. DEFINIREA GEOMETRICĂ A CODURILOR R-M 59
Această relaţie rezultă din faptul că un punct a0 . . . am−1 este ı̂n plan dacă şi
numai dacă h0 a0 + . . . + hm−1 am−1 = c, adică fL (a0 , . . . , am−1 ) = 1.
Teorema 5.4 Funcţia caracteristică a unui r - spaţiu afin este un polinom boolean
de gradul m − r.
Faptul că aceasta coincide cu definiţia anterioară a codurilor Reed - Muller rezultă
din construţia spaţiilor afine: RM(r, m) conţine toate funcţiile caracteristice ale s
- spaţiilor afine, unde s ≥ m − r. Faptul că aceste funcţii generează tot spaţiul
RM(r, m) rezultă din Observaţia 4.
Exemplul 5.16 Codul RM(1, 3) este generat de funcţiile caracteristice ale tuturor
planelor. Orice astfel de funcţie este un polinom de trei variabile de gradul 1.
Codul RM(2, 3) este generat de funcţiile caracteristice ale tuturor planelor şi
liniilor. Cum o linie este intersecţia a două plane, funcţia sa caracteristică este
produsul a două polinoame de gradul 1, deci un polinom de gradul 2 (cuvânt - cod
din RM(2, 3)).
5.4 Exerciţii
5.1 Ce polinom boolean are ultima linie a tabelei de adevăr:
10100110 1010011010100110 0101001110011100
5.4 Găsiţi un (15, 5) - cod liniar binar corector de 3 erori (folosiţi un cod R − M
relaxat).
5.5 Fiind dat codul RM(1, 3), codificaţi toate mesajele de informaţie posibile.
Acelaşi lucru pentru codul RM(2, 3).
5.7 Construiţi matricile generatoare G(1, 3), G(2, 3), G(r, 4), r = 0, 1, 2.
5.8 Demonstraţi că G(r, m) are k + 1 linii, unde k este dat de Propoziţia 5.2
5.9 Calculaţi numărul de 2 - spaţii afine ı̂n geometria euclidiană peste Z2m .
5.10 Este orice funcţie booleană funcţia caracteristică a unui anumit spaţiu afin ?
Caracterizaţi astfel de funcţii.
5.11 Orice funcţie caracteristică a unui (r + 1) - spaţiu afin aparţine codului dual
lui RM(r, m).
5.12 Să se arate că RM(2, 5) este auto - dual. Să se determine toate codurile
RM auto - duale.
Prelegerea 6
Definiţia 6.1 Fie An,k un cod liniar. Un set de ecuaţii de control pentru An,k este
ortogonal pe mulţimea de poziţii P ⊂ {1, 2, . . . , n} dacă şi numai dacă:
61
62 PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER
Exemplul 6.2 Fie dualul (15, 11) - codului Hamming cu matricea de control
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
H=
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 fiecare pereche de coloane distincte din H există o a treia coloană astfel ı̂ncât
suma celor trei coloane este 0. Deci, fiecare cuvânt de pondere 3 al codului Hamming
dă o ecuaţie de control cu trei termeni pentru codul dual; ı̂n acest fel se obţine pentru
fiecare caracter xi câte un sistem de 7 ecuaţii ortogonale pe poziţia i. Astfel,
pentru x1 ele sunt: x1 = x2 + x3 = x4 + x5 = x6 + x7 = x8 + x9 = x10 + x11 =
x12 + x13 = x14 + x15 ;
pentru x2 : x2 = x1 + x3 = x4 + x6 = x5 + x7 = x8 + x10 = x9 + x11 = x12 + x14 =
x13 + x15 , etc.
Codul are distanţa d = 8; deci poate corecta maxim 3 erori.
Dacă ı̂n mesajul primit y apar cel mult 3 erori, atunci un sistem de ecuaţii
ortogonal pe x1 va avea cel mult trei ecuaţii care să dea pentru x1 o valoare greşită
şi cel puţin cinci cu valoarea calculată corect. Valoarea găsită majoritar va fi cea ı̂n
care se decodifică primul caracter.
Procedeul se reia pentru y2 , y3 , . . ..
Să presupunem de exemplu că s-a recepţionat mesajul 001011110101011. Pentru
decodificarea primului caracter vom calcula sumele
0 + 1, 0 + 1, 1 + 1, 1 + 0, 1 + 0, 1 + 0, 1 + 1.
Se obţin 5 valori de 1 şi două de 0; deci, primul simbol este 1.
Procedând similar pentru fiecare (folosind ecuaţiile ortogonale corespunzătoare
fiecărei poziţii), se ajunge la cuvântul 10101011010101010.
Această metodă este nu numai uşor de implementat, dar are adesea şi alte completări
(gen ”bitul de testare a parităţii”) care fac posibilă corectarea mai multor erori.
În această prelegere vom construi trei algoritmi de decodificare a codurilor R −
M . Doi din ei sunt bazaţi pe modurile de reprezentare (geometric şi algebric) ale
acestor coduri; al treilea este un algoritm bzat pe definirea recursivă a codurilor
R − M şi este prezentat numai pentru cazul r = 1. Toţii algoritmii sunt foarte uşor
de implementat, utilizarea unuia sau a altuia depinzând de criterii particulare ı̂n
alegerea parametrilor codului.
6.2. ALGORITM GEOMETRIC DE DECODIFICARE MAJORITARĂ 63
Ax = x + A = {x + a|a ∈ A}.
Teorema 6.1 Orice s - spaţiu afin din geometria binară m - dimensională este
conţinut ı̂n exact 2m−s − 1 (s + 1) - spaţii afine distincte. În plus, orice punct din
afara lui L este exact ı̂n unul din aceste (s + 1) - spaţii afine.
Demonstraţie: I: Să arătăm ı̂ntâi că orice s - subspaţiu liniar A ⊆ Z2m este conţinut
ı̂n exact 2m−s − 1 subspaţii distincte de dimensiune s + 1.
Orice (s + 1) - spaţiu care conţine A este de forma
A = A + tb ≡ {a + tb|a ∈ A, t = 0, 1},
unde b 6∈ A este un punct arbitrar fixat. Aceasta rezultă imediat din faptul că orice
bază a lui A poate fi extinsă la o bază a lui A.
Pentru două puncte b, b0 6∈ A, spaţiile liniare A + tb şi A + tb0 coincid dacă şi
numai dacă b şi b0 sunt ı̂n acelaşi subspaţiu modulo A (Lema 6.1).
64 PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER
2m
Din aceeaşi lemă rezultă că sunt subspaţii modulo A. Unul este chiar A, iar
2s
celelalte conţin numai puncte dinafara lui A. Deci există 2m−s − 1 spaţii distincte
A + tb pentru b 6∈ A.
II: Orice s - spaţiu afin L ≡ a + A (dimA = s) este conţinut ı̂n 2m−s − 1
(s + 1) - spaţii afine distincte de forma a + A.
Cu I, orice spaţiu care conţine L este de forma b + A. Deoarece L este de forma
a + A, rezultă că a ∈ b + A, deci a − b ∈ A, de unde rezultă (Lema 6.1) că punctele
a, b sunt ı̂n acelaşi subspaţiu modulo A.
III: Orice punct b 6∈ L = a + A este ı̂ntr-un (s + 1) - spaţiu afin care conţine L,
anume a + A unde A = A + t(b − a).
Într-adevăr, alegând t = 1 şi 0 ∈ A, avem b = a + [0 + (b − a)].
Pentru a verifica că A are dimensiunea s+1 este suficient de arătat că b − a 6∈ A;
dacă prin absurd b − a ∈ A, atunci a + (b − a) = b ∈ A, contradicţie.
În final, ar mai trebui arătat că acest (s + 1) - spaţiu afin care ı̂l conţine pe
b este unic. Orice (s + 1) - spaţiu afin care conţine a + A are forma a + A unde
dim(A) = s + 1. Dacă b ∈ a + A, atunci b − a ∈ A, deci A conţine spaţiul liniar
A + (b − a). Cum ambele spaţii au aceeaşi dimensiune (s + 1), ele coincid. 2
Corolarul 6.1 Dacă numărul de erori din cuvântul recepţionat este t < 2m−r−1 ,
atunci pentru fiecare s - spaţiu afin L (0 ≤ s ≤ r) majoritatea (s + 1) - spaţiilor
afine care conţin L au aceeaşi paritate a erorilor ca L.
Exemplul 6.3 Să considerăm RM(1, 3) ı̂n care s-a recepţionat cuvântul
a = 11101010.
La primul pas trebuie să decidem care plane sunt pare şi care sunt impare. De
exemplu planul L = {p1 , p3 , p5 , p7 } este par deoarece afL = 11101010·10101010 = 0
(vezi Prelegerea V , Paragraful 5.3.1). Se obţine Tabelul 6.1.
La pasul următor trebuie să decidem paritatea fiecărei linii.
De exemplu, linia {p0 , p1 } este conţinută ı̂n trei plane:
{p0 , p1 , p4 , p5 } (par), {p0 , p1 , p2 , p3 } (impar), {p0 , p1 , p6 , p7 } (impar).
deci, prin majoritate, {p0 , p1 } este pară. În mod similar se efectuează calculele
pentru toate liniile, obţinându-se Tabelul 6.2.
Se poate trece acum la corectarea erorilor. RM(1, 3) poate corecta maxim
m−r−1
2 − 1 = 23−1−1 − 1 = 1 erori. {p0 } este conţinut ı̂n şapte linii, şase pare şi una
impară, deci a0 este corect, etc. Singurul bit care trebuie corectat este a6 deoarece
{p6 } este ı̂n şapte linii impare. Cuvântul trimis a fost deci 10101010.
m−1
X
wj = tij ui , tij ∈ {0, 1}.
i=0
Orice cuvânt v ∈ Z2n poate fi considerat indicatorul unei mulţimi de cuvinte din Z2m :
acele coloane din U care corespund poziţiilor din v unde se află valoarea 1.
Propoziţia 6.1
m−1
Y
ej = [xi + (1 + tij )1] , ∀j, 0 ≤ j ≤ 2m − 1.
i=0
Demonstraţie: Să arătăm ı̂ntâi că xi + (1 + tij )1 reprezintă indicatorul acelor coloane
din U care au aceeaşi componentă i ca şi coloana wj .
Într-adevăr:
Pe de-altă parte,
Prin identificare, rezultă că elementul as , coeficient al produsului xi1 xi2 . . . xir este
X
as = fj (1)
j∈C(i1 ,...,ir )
Fie z ∈
6 {i1 , . . . , ir }. Deoarece baza codului RM(r, m) nu conţine monoame de
forma xi1 . . . xir xir+1 , vom obţine prin codificare
68 PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER
X
fj = 0 (2)
j∈C(i1 ,...,ir ,z)
Din (1) şi (3) rezultă următoarea afirmaţie: dacă m = r + 1, pentru orice simbol de
informaţie as ı̂nmulţit la codificare cu un produs de forma xi1 . . . xir există 2m−r = 2
sume disjuncte ((1) şi (3)), fiecare de câte 2r componente ale lui f .
Aceste două relaţii se numesc relaţii de determinare a componentei as .
Fie acum t1 , t2 6∈ {i1 , . . . , ir }. Deoarece baza codului nu are produse de forma
xi1 . . . xir xir+1 xir+2 , vom avea
X
fj = 0. (4)
j∈C(i1 ,...,ir ,t1 ,t2 )
Deoarece sumele sunt disjuncte (deci termenii lor sunt elemente diferite ale
cuvântului - cod), orice eroare va afecta o singură relaţie de determinare a lui as .
Prin urmare, dacă apar ı̂n transmiterea cuvântului - cod f cel mult 2m−r−1 − 1 erori
independente, putem determina - prin majoritate - pe as , identificându-l cu valoarea
a jumătate plus unu din relaţiile de determinare corespunzătoare.
După ce se determină ı̂n acest mod coeficienţii tuturor produselor xi1 . . . xir , se
scade din vectorul recepţionat combinaţia liniară
În acest fel problema se reduce la decodificarea ı̂ntr-un cod de ordin r − 1 şi lungime
2m ; procedeul este similar, fiind determinate aici componentele de informaţie care
se codifică prin ı̂nmulţirea cu produsele de forma xj1 . . . xjr−1 , ş. a. m. d.
Exemplul 6.5 Fie codul RM(2, 4). El are lungimea n = 16, ordinul r = 2, k =
1 + C41 + C42 = 11 simboluri de informaţie şi n − k = 5 simboluri de control. Deci
este un (16, 11) - cod liniar.
Orice mesaj de informaţie (a1 , a2 , . . . , a11 ) ∈ Z211 se codifică ı̂n cuvântul
f = (f0 , . . . , f15 ) = a1 1 + a2 x0 + a3 x1 + a4 x2 + a5 x3 + a6 x0 x1 + a7 x0 x2 + a8 x0 x3 +
a9 x1 x2 + a10 x1 x3 + a11 x2 x3 .
Să stabilim de exemplu relaţiile de determinare pentru a9 , care se codifică prin
ı̂nmulţire cu x1 x2 . Trebuiesc calculate mulţimile:
C(1, 2) = {j| j = t1j 21 + t2j 22 } = {0, 2, 4, 6}
C(1, 2) + 20 = {1, 3, 5, 7}
C(1, 2) + 23 = {8, 10, 12, 14}
C(1, 2) + 20 + 23 = {9, 11, 13, 15}.
Deci relaţiile de determinare corespunzătoare lui a9 devin
a9 = f0 + f2 + f4 + f6 a9 = f1 + f3 + f5 + f7
a9 = f8 + f10 + f12 + f14 a9 = f9 + f11 + f13 + f15
a6 x0 x1 + a7 x0 x2 + a8 x0 x3 + a9 x1 x2 + a10 x1 x3 + a11 x2 x3
Definiţia 6.3 Fie Am,n , Bp,q două matrici. Se defineşte produsul Kronecker A × B
ca fiind matricea Cmp,nq = [aij B].
Acest produs este evident asociativ şi necomutativ; el va fi utilizat pe larg şi ı̂n alte
prelegeri.
à ! à !
1 1 1 0
Exemplul 6.6 Fie H = , I2 = . Atunci
1 −1 0 1
1 1 0 0 1 0 1 0
1 −1 0 0 0 1 0 1
I2 × H = , H × I2 = .
0 0 1 1 1 0 −1 0
0 0 1 −1 0 1 0 −1
Se consideră şirul de matrici definit
i
Hm = I2m−i × H × I2i−1 , i = 1, 2, . . .
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
3
H3 = I1 × H × I4 = .
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 recursivă de construcţie a codurilor RM(r, m) (Prelegerea V , secţiunea
5.2) sugerează existenţa unui algoritm similar de decodificare. Acest algoritm există
numai pentru RM(1, m) şi ı̂l prezentăm fără a demonstra corectitudinea lui.
Algoritm de decodificare a codurilor RM(1, m):
Fie a ∈ Z2m cuvântul recepţionat şi G(1, m) matricea generatoare a codului.
2. Se calculează a1 = a0 Hm
1
, i
ai = ai−1 Hm , 2 ≤ i ≤ m;
Exemplul 6.9 Fie m = 3 şi G(1, 3) matricea generatoare a codului RM(1, 3). Să
presupunem că s-a recepţionat cuvântul a = 10101011.
Primul pas al algoritmului transformă acest cuvânt ı̂n
a0 = (1, −1, 1, −1, 1, −1, 1, 1). Se calculează apoi:
a1 = a0 H31 = (0, 2, 0, 2, 0, 2, 2, 0)
a2 = a1 H32 = (0, 4, 0, 0, 2, 2, −2, 2)
a3 = a2 H33 = (2, 6, −2, 2, −2, 2, 2, −2).
Cea mai mare compomentă a lui a3 este 6 pe poziţia 1. Cum v(1) = 100 şi 6 > 0,
rezultă că a fost trimis cuvântul 1100.
Dacă s-a recepţionat cuvântul a = 10001111, atunci a0 = (1, −1, −1, −1, 1, 1,
1, 1) şi
a1 = a0 H31 = (0, 2, −2, 0, 2, 0, 2, 0),
a2 = a1 H32 = (−2, 2, 2, 2, 4, 0, 0, 0),
a3 = a2 H33 = (2, 2, 2, 2, −6, 2, 2, 2).
Cea mai mare componentă a lui a3 este −6 aflată pe poziţia 4. Deoarece v(4) = 001
şi −6 < 0, mesajul transmis este 0001.
72 PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER
6.5 Exerciţii
6.1 În codul Hamming (15, 11) să se decodifice mesajele
111100000000000, 011101000111001.
6.3 Să se decodifice cuvântul 01111100 ı̂n RM(1, 3). Verificaţi corectitudinea de-
codificării.
6.5 Să se scrie toate relaţiile de determinare din codul RM(2, 4).
6.8 Arătaţi că orice hiperplan L ı̂n geometria euclidiană peste Z2m are drept com-
plement Z2m \ L tot un hiperplan.
Înafara codurilor Hamming şi Reed - Muller se pot construi şi alte clase de coduri
cu proprietăţi remarcabile. Vom prezenta numai câteva astfel de coduri - nu toate
liniare - punând ı̂n evidenţă la fiecare clasă caracteristicile sale specifice.
unde ni este numărul coloanelor de tip i care apar (sau nu) ı̂n matricea G,
k −1
2X
ni = n.
i=1
à !
0 1 0
Exemplul 7.1 Să luăm k = 2, n = 3 şi matricea generatoare G =
1 1 1
à !
0 1 1
Avem matricea M = (coloanele sunt reprezentările binare ale
1 0 1
numerelor 1, 2, 3).
Reprezentarea modulară a codului generat de matricea G este atunci N = (2, 0, 1)
(pentru că ı̂n G există două coloane de tipul 1, nici una de tipul 2 şi una de tipul
3).
73
74 PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE
N = W C −1 (5)
ı̂nmulţire efectuată ı̂n R. Formula este adevărată numai dacă demonstrăm că ma-
tricea C este inversabilă. În acest sens avem:
Teorema 7.2 Matricea C este nesingulară. Inversa ei se calculează ı̂nlocuind ı̂n C
pe 0 cu −1 şi ı̂mpărţind toate elementele cu 2k−1 .
Demonstraţie: I: Fiecare linie (deci şi coloană) din C conţine 1 pe 2k−1 poziţii. Două
linii (coloane) distincte din C au ı̂n comun 1 ı̂n 2k−2 poziţii.
Într-adevăr, liniile lui C - la care se adaugă linia nulă - formează un spaţiu liniar
cu 2k cuvinte binare. Să considerăm submulţimea liniilor care au 1 ı̂n componentele
2k
i şi j. Ele formează un subspaţiu liniar cu 2 = 2k−2 elemente deoarece, factorizând
2
cu acest spaţiu se obţin patru clase de resturi corepunzătoare componentelor (i, j)
de forma (0, 0), (0, 1), (1, 0), (1, 1).
Pentru a arăta că 1 apare pe fiecare linie din C de 2k−1 ori se raţionează similar.
II: În aceste condiţii, putem scrie
k−1
2 2k−2 . . . 2k−2
k−2
2 2k−1 . . . 2k−2
2
C = .. = 2k−2 (I + J)
.
2k−2 2k−2 . . . 2k−1
unde I este matricea unitate iar J este matricea pătrată cu toate elementele
egale cu 1, ambele de ordin 2k .
Se mai observă că CJ = 2k−1 J. Deci
1 1 2C − J
I = k−1 (2C 2 − 2k−1 J) = k−1 (2C 2 − CJ) = C k−1 = CC −1 .
2 2 2
−1 1
De aici rezultă că C este inversabilă şi C = k−1 (2C − J). 2
2
Exemplul 7.2 Să luăm k = 3, n = 5. Vom avea:
1 0 1 0 1 0 1
0 1 1 0 0 1 1
0 0 0 1 1 1 1 1 1 0 0 1 1 0
M = 0 1 1 0 0 1 1 , C = MT M = 0 0 0 1 1 1 1 ,
1 0 1 0 1 0 1 1 0 1 1 0 1 0
0 1 1 1 1 0 0
1 1 0 1 0 0 1
1 −1 1 −1 1 −1 1
−1 1 1 −1 −1 1 1
1 1 −1 −1 1 1 −1
1
C −1 = −1 −1 −1 1 1 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 0 0 1 1
Dacă luăm codul generat de matricea G = 0 1 0 1 0 , el are reprezenta-
0 0 1 0 1
rea modulară N = (1, 1, 0, 1, 1, 1, 0). Vectorul ponderilor cuvintelor - cod este
76 PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE
Să determinăm acum reprezentarea modulară a unui cod liniar binar ı̂n care toate
cuvintele - cod au aceeaşi pondere w (şi deci distanţa minimă va fi d = w). Vom
avea prin ipoteză W = (w, w, . . . , w).
| {z }
2k −1
După cum am remarcat ı̂n demonstraţia Teoremei 7.2, 1 apare pe fiecare linie
din C ı̂n 2k−1 poziţii. Rezultă (Teorema 7.2) că ı̂n C −1 , 1 va apare pe fiecare linie
(coloană) tot ı̂n 2k−1 poziţii, ı̂n rest fiind −1. Deci
N = W C −1 = (w2−(k−1) , . . . , w2−(k−1) )
| {z }
2k −1
Problema enunţată are soluţie dacă w se divide cu 2k−1 ; ı̂n acest caz, reprezenta-
rea modulară este de forma N = (r, r, . . . , r), adică fiecare tip de coloană apare ı̂n
| {z }
2k −1
−(k−1)
matricea generatoare de r = w · 2 ori.
Plecând de la aceste considerente, McDonald a introdus o clasă de coduri pentru
care reprezentarea modulară este de forma 0i 1j . Mai exact,
n d N
k k−1
2 −1 2 (1, 1, 1, . . . , 1)
2k − 2 2k−1 − 1 (0, 1, 1, . . . , 1)
2k − 3 2k−1 − 2 (0, 0, 1, . . . , 1)
... ... ...
2k − 2u 2k−1 − 2u−1 (0, . . . , 0, 1, . . . , 1)
| {z } | {z }
2u −1 2k −2u
Teorema 7.3 Fiind dată matricea Hadamard Hn , (n par) se poate construi un cod
n
de distanţă minimă d = , format din 2n cuvinte de lungime n.
2
Demonstraţie: În matricea Hn vom ı̂nlocui 1 cu 0 şi −1 cu 1. Vom nota v1 , v2 , . . . , vn
vectorii care formează liniile noii matrici. Codul căutat este
Acest cod (care nu este neapărat liniar) are 2n cuvinte de lungime n. Mai trebuie
arătat că distanţa sa minimă este n/2.
Deoarece v şi −v diferă ı̂n toate componentele, distanţa Hamming dintre ele este
n. Pe de-altă parte, din proprietatea matricilor Hadamard rezultă
Pentru ca această egalitate să fie adevărată, este necesar ca vi şi vj să coincidă ı̂n
jumătate din componente şi să difere ı̂n cealaltă jumătate (atenţie, calculele se fac
n
ı̂n R, nu ı̂n Z2 !). Rezultă că distanţa Hamming dintre cele două cuvinte este .
2
n
Deci d = . 2
2
Pentru n = 32 un astfel de cod a fost folosit de programul spaţial Mariner.
à !
Hn Hn
Teorema 7.4 Dacă Hn este matrice Hadamard, atunci H2n =
Hn −Hn
este matrice Hadamard.
2. Sq SqT = qIq − Jq ;
q−1
3. SqT = (−1) 2 Sq .
Demonstraţie: Este lăsată ca exerciţiu.
0 −1 1
Exemplul 7.4 Pentru q = 3, matricea Paley este S3 = 1 0 −1
,
−1 1 0
0 1 −1 −1 1
1 0 1 −1 −1
iar pentru q = 5,
S5 = −1 1 0 1 −1 .
−1 −1 1 0 1
1 −1 −1 1 0
De remarcat că S3T = −S3 , S5T = S5 .
Teorema 7.6 Dacă q = pr (p număr prim impar, r ≥ 1) astfel ı̂ncât q ≡ 3 (mod 4),
atunci există o matrice Hadamard de ordin q + 1.
Demonstraţie: Din ipoteză şi Teorema 7.5, există o matrice Paley S de ordin q.
Construim matricea C de ordin q + 1 astfel:
0 1 ... 1
−1
C=
−1 S
−1
7.3. CODURI PRODUS 79
Teorema 7.7 Dacă A1 este un (n1 , k1 ) - cod liniar şi A2 este un (n2 , k2 ) - cod
liniar, atunci A1 × A2 este un (n1 n2 , k1 k2 ) - cod liniar.
(1) T
• Primele k2 coloane sunt 0 cu excepţia coloanei j care este gi .
(1) (2)
• Pentru k > k1 , linia k este gik gj ;
(2) (1) T
• Pentru k > k2 , coloana k este gjk gi .
Teorema 7.8 Distanţa codului A1 × A2 este egală cu d1 · d2 (d1 şi d2 fiind distanţele
codurilor A1 respectiv A2 ).
De remarcat că, dacă A este cod liniar, atunci d(A) este chiar distanţa minimă a
codului.
• d(A) = d;
Exemplul 7.9 În Z26 , următoarele mulţimi sunt optimale de distanţă minimă 3:
A = {000000, 010101, 101010, 111111}
B = {000000, 101010, 011001, 000111, 110100, 111111}
Exemplul 7.10 Mulţimile date ı̂n Exemplul 7.9 sunt optimale dar nu cardinal ma-
ximale pentru distanţa 3. O mulţime optimală cardinal maximală din Z26 pentru
d = 3 este:
C = {000000, 001011, 010101, 011110, 100110, 101101, 110011, 111000},
deci a(6, 3) = 8.
Definiţia 7.6 Un cod liniar A de distanţă d este optimal dacă A este mulţime
optimală cardinal maximală de distanţă d.
Spunem că un astfel de cod satisface condiţia max - min, deoarece are un număr
maxim de vectori aflaţi la distanţa minimă d.
Nu se cunosc algoritmi de construcţie a unor astfel de coduri. În această secţiune
vom da câteva condiţii necesare pentru codurile optimale.
Teorema 7.9 Într-un cod optimal maximal A de distanţă minimă d (d < n),
K este un cod cu distanţa d ı̂n care toate cuvintele au 0 pe prima poziţie. Dacă
eliminăm această componentă, se obţine un cod din Zqn−1 , tot de distanţă d, cu
acelaşi număr de cuvinte. Acest cod nu este neapărat optim, deci condiţia va fi
a(n, d)
a(n − 1, d) ≥
q
Mai trebuie făcută observaţia că a(n − 1, n − 1) = q pentru că un cod cu repetiţie
este optimal maximal de distanţă minimă egală cu lungimea cuvintelor - cod. 2
Corolarul 7.1 Dacă j ≥ d, atunci q n−j a(j, d) ≥ a(n, d).
Demonstraţie: Din Teorema 7.9 rezultă inegalităţ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 ı̂nmulţire se obţine q i · a(n − i, d) ≥ a(n, d), după care se face notaţia n − i = j.
2
Teorema 7.10 Fie A un cod liniar optimal maximal de distanţă minimă d.
qd
Dacă n < , atunci numărul simbolurilor de informaţie verifică inegalitatea
q−1
dq − 1
k ≤n− + 1 + logq d.
q−1
Demonstraţie: Deoarece A este cod liniar, numărul de simboluri de informaţie va fi
dat de relaţia a(n, d) = q k .
Rescriem inegalitatea lui Plotkin sub forma d(q k − 1) ≤ nq k−1 (q − 1), sau
q k−1 (dq + n − nq) ≤ n.
dq
Deoarece - din ipoteză - dq + n − nq > 0, avem q k ≤ , sau
dq + n − nq
dq
a(n, d) ≤ .
dq + n − nq" # ( )
dq − 1 dq − 1 dq − 1
Fie = i + f unde i = , f= .
q−1 q−1 q−1
Deci qd − 1 = (q − 1)i + (q − 1)f şi avem
dq dq dq
a(i, d) ≤ = = .
dq + i − iq dq − (q − 1)i 1 "+ (q − 1)f
# " #
dq − 1 d−1
Folosind Corolarul 7.1 şi i ≥ d (deoarece = d+ ≥ d), rezultă
q−1 q−1
dq−1
n−i q n− q−1 +f
a(n, d) ≤ q a(i, d) ≤ qd
1 + (q − 1)f
Dezvoltând ı̂n serie Taylor, q f ≤ 1 + (q − 1)f (f < 1) şi deci
n− dq−1
a(n, d) ≤ q q−1 qd,
n− dq−1
sau q k ≤ q q−1 qd, de unde - prin logaritmare - se obţine relaţia din enunţ. 2
84 PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE
7.5 Exerciţii
7.1 Să se construiască vectorul ponderilor pentru codurile Hamming (7, 4) şi
RM(1, 3).
7.5 Să se arate că dacă Hn este o matrice Hadamard, atunci Hn HTn = nIn .
7.7 Să se arate că matricea Hadamard H8 generează (8, 4) - codul Hamming binar
extins.
7.8 Să se construiască codurile produs pentru codul cu repetiţie de lungime n (A1 )
şi codul cu repetiţie de lungime p (A2 ).
7.12 Folosind matricile Paley, să se construiască codurile Hadamard de ordin 5 şi
respectiv 7.
7.13 Să se arate că un cod binar liniar optimal maximal de distanţă minimă d are
cel puţin 2d − 1 − log2 d simboluri de control.
Prelegerea 8
?
¾»
- +
-
½¼
- -
Aceste trei tipuri de conectori se pot grupa arbitrar - folosind eventual şi noduri
obişnuite. Utilizarea practică revine la obţinerea de circuite liniare care pot realiza
automat operaţii uzuale cu polinoame: adunări, scăderi, ı̂nmulţiri şi ı̂mpărţiri.
85
86 PRELEGEREA 8. CIRCUITE LINIARE ŞI EXTENSII GALOIS
a0 a1 ... an −→
Figura 8.1:
- +n - ... - +n - +n -
6
6 6 6
º· º· º· º·
bn bn−1 b1 b0
¹¸ ¹¸ ¹¸ ¹¸
6 6 6 6
a(X) s - s - - ... - s - -
De remarcat că multiplicarea cu 1 se face prin arc simplu (fără conector), iar
multiplicarea cu 0 revine la suprimarea arcului. În cazul operaţiilor cu polinoame
din Z2 [X], toţi multiplicatorii se reduc la aceste două cazuri.
8.1. CIRCUITE LINIARE PENTRU OPERAŢII ELEMENTARE 87
Dacă dorim să ı̂nmulţim h(X) cu polinomul a(X) = 2X + 8 (vector a = (8, 2)),
circuitul liniar va funcţiona 5 tacţi (până când toate elementele de ı̂nmagazinare
revin la 0); comportarea sa este relatată de tabelul:
Figura 8.2:
²¯ ²¯ ²¯ ²¯
- -+ - - + - ... -+ - -+ -
6 ±° ±° ±° ±°
6 6 6 6
¾» ¾» ¾» ¾» ¾»
b0 b1 b2 bn−1 bn
½¼ ½¼ ½¼ ½¼ ½¼
6 6 6 6 6
s s s - ... s -
a(X)h(X) + b(X)g(X)
De remarcat că polinoamele g(X) şi h(X) pot avea grade diferite; ı̂n acest caz se
alege n ca fiind gradul cel mai mare şi se completează celălalt polinom cu coeficienţi
nuli până la gradul n.
Exemplul 8.3 Fie polinoamele g(X) = 1 + X 2 , h(X) = X + X 2 + X 4 cu coeficienţi
ı̂n Z2 ; deci vectorii corespunzători vor fi h = (0, 1, 1, 0, 1), g = (1, 0, 1, 0, 0). Cir-
cuitul liniar care realizează expresia a(X)h(X) + b(X)g(X) este:
b(X) s -
²¯ ²¯? ²¯
? - -+ - -+ - - -+ -
±° ±° ±°
6
s s6 -6
a(X)
Figura 8.3:
¾ s ... ¾ s -
#Ã
? #Ã
? #Ã
? 6
#Ã
?
²¯
-+ - -
±°
Vectorii (1, 1, 0, 1, 0, 1) - de pe ultima linie şi (0, 1, 0, 0, 1) - scris mai gros şi ı̂n
ordine inversă pe ultima coloană - reprezintă restul 1 + X + X 3 + X 5 respectiv câtul
X + X 4 ı̂mpărţirii lui a(X) la g(X).
90 PRELEGEREA 8. CIRCUITE LINIARE ŞI EXTENSII GALOIS
h0 h1 hn−1 hn
½¼ ½¼ ½¼ ½¼
6 6
s - ... 6
s -6
Când gradele polinoamelor sunt diferite, se construieşte ı̂ntâi circuitul liniar co-
respunzător polinomului de grad maxim, după care se completează cu circuitul cores-
punzător celuilalt polinom.
− 0 0 0 0 −
2 2 2 0 2 −
2 1 2 2 2 2
1 0 0 2 0 2
−3 2
½¼ ½¼
?
²¯ ?
²¯ ²¯
- - -+ - -+ - -+
6 ±° ±° ±°
6 6
¾» ¾»
−1 2
½¼ ½¼
6
s -6
− 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
Figura 8.4:
¾ s ... ¾ s
#Ã
? #Ã
? #Ã
? 6
#Ã
Deci circuitul de ı̂mpărţire cu polinomul g(X) poate fi utilizat pentru ı̂nmulţirea lui
b(α) cu α.
Demonstraţie:
8.2. EXTENSII GALOIS 93
unde, la momentul iniţial, ı̂n elementele de ı̂nmagazinare este vectorul (1, 0, 0, 0).
Conform Teoremei 8.1, α este o rădăcină a polinomului 1 + X + X 4 , adică
1 + α + α4 = 0.
Lăsând circuitul să funcţioneze, ı̂n elementele de ı̂nmagazinare se obţin toate ele-
mentele lui GF (24 ), pe care le interpretăm fie ca vectori cu patru componente peste
Z2 , fie ca polinoame de gradul 3 ı̂n α cu coeficienţi ı̂n Z2
94 α0 PRELEGEREA
= 1 8. CIRCUITE LINIARE
1 0ŞI EXTENSII
0 0 GALOIS
α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 că polinomul 1 + X + X 4 este primitiv, puterile lui α epuizând toţi
vectorii nenuli din GF (24 ) = {0, α0 , α, . . . , α14 }.
Exemplul 8.9 Tabelul din exemplul precedent descrie operaţia de ı̂nmulţire din
GF (24 ), generată de rădăcina α a polinomului primitiv 1 + X + X 4 . Dacă s-ar
alege α ca rădăcină a altui polinom primitiv - de exemplu 1 + X 3 + X 4 , se va genera
tot GF (24 ), dar ı̂ntr-o altă ordine. Lăsăm ca exerciţiu această generare.
În GF (24 ) se poate defini şi operaţia de adunare, ı̂nsumând modulo 2 cei doi
operanzi, pe componente. Astfel, dacă reluăm GF (24 ) generat ı̂n Exemplul 8.8 de
rădăcina polinomului 1 + X + X 4 , tabela de adunare va fi:
• Se ignoră ieşirea;
Pentru calculul unei valori de forma a(α)αj , (j ≥ 0 fixat), se pot construi circuite
liniare care să realizeze direct acest produs.
8.3 Exerciţii
8.1 Să se realizeze circuite liniar (ı̂n ambele modalităţi de construcţie) care să
efectueze ı̂nmulţiri cu polinoamele:
h(X) = 1 + 2X + 3X 2 + 4X 3 ∈ Z[X]
h(X) = 1 + 2X + X 5 ∈ Z7 [X]
8.3 Se dă cavântul g = (1, 0, 0, −1, 0, 1). Să se realizeze circuitul de ı̂nmulţire
cu polinomul corespunzător şi să se reprezinte comportamentul acestui circuit la
ı̂nmulţirea cu a = (1) şi a = (1, 1, 1, 0, 0, 0, 1).
8.4 Să se realizeze un circuit liniar care realizează 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 Să se facă ı̂mpărţ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 Aceeaşi problemă pentru polinoamele g(X) = 2X −1 şi respectiv a(X) = X 3 −3.
(1) : În Q[X];
(2) : În Z3 [X].
8.7 Să realizeze un circuit care să efectueze (ı̂n Q) ı̂nmulţirea cu polinomul
g(X) = 1 − 2X + X 3 şi ı̂mpărţirea cu polinomul h(X) = g(X).
8.11 Folosind elementele din Exemplul 8.10 să se construiască circuite de generare
pentru a(α)α, a(α)α2 şi a(α)α7 .
8.12 Să se construiască circuite de generare ı̂n GF (25 ) pentru a(α) şi a(α)α10 ,
unde α este rădăcină a polinomului 1 + X 2 + X 5 ∈ Z2 [X].
Prelegerea 9
Coduri ciclice
1. {s(X)} ∈ I ⇐⇒ g(X)|s(X);
2. g(X)|f (X).
Teorema 9.2 În algebra polinoamelor modulo f (X), pentru orice ideal I există un
polinom normat unic g(X) de grad minim, cu {g(X)} ∈ I.
Reciproc, pentru orice divizor normat al lui f (X) există un ideal generat de acel
divizor.
97
98 PRELEGEREA 9. CODURI CICLICE
se divid unul pe altul şi - având acelaşi grad - diferă printr-o constantă. Polinoamele
fiind normate, această constantă este 1. Deci g(X) = g 0 (X).
Reciproc, fie g(X) un divizor normat al polinomului f (X) şi ({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 număr prim, f (X) ∈ Zq [X], normat, cu grad(f (X)) = n
şi fie f (X) = g(X)h(X). Dacă grad(h(X)) = k, atunci ı̂n algebra polinoamelor
modulo f (X), idealul ({g(X)}) are dimensiunea k.
Demonstraţie: Să observăm că vectorii (asociaţi polinoamelor)
O soluţie a unei astfel de relaţii de recurenţă liniară este orice succesiune infinită de
forma a0 , a1 , . . . , ap , . . . care verifică relaţia dată, cu h0 , h1 , . . . , hk date, h0 6= 0,
9.1. RELAŢII DE RECURENŢĂ LINIARĂ 99
• Orice combinaţie liniară de soluţii ale unei relaţii de recurenţă liniară este tot
o soluţie.
• Soluţiile pentru care condiţiile iniţiale sunt respectiv (1, 0, . . . , 0), (0, 1, . . . , 0),
. . . , (0, 0, . . . , 1) determină orice altă soluţie. Deci, spaţiul soluţiilor relaţiei de
recurenţă (1) are dimensiunea cel mult k.
Teorema 9.5
Cel mai mic n pentru care X n − 1 se divide cu h(X) este n = 7. Cum g(X) =
X7 − 1
= X 3 + X + 1, rezultă că circuitul va genera cuvintele idealului ({g(X)}).
h(X)
Fiecare din ele este caracterizat de cele patru valori binare iniţiale din elementele
de ı̂nmagazinare. Vor fi deci 24 = 16 cuvinte de lungime 7. Ele corespund tuturor
polinoamelor de grad maxim 6 din Z2 [X], care se divid cu g(X).
De exemplu, pentru valorile iniţiale (1, 0, 1, 1), funcţionarea circuitului timp de
şapte tacţi este:
9.2. DEFINIREA CODURILOR
Ieşire CICLICE 101
− 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
În elementele de ı̂nmagazinare se regăsesc valorile iniţiale, iar la ieşire s-a obţinut
polinomul f (X) = X 6 + X 4 + X 3 = X 3 g(X).
Propoziţia 9.1 Produsul a două polinoame este zero dacă şi numai dacă toate
produsele scalare dintre vectorul unui polinom şi permutările ciclice ale vectorilor
celuilalt polinom sunt zero.
n−1
X n−1
X
i
Demonstraţie: Fie a(X), b(X) ∈ Zq [X], a(X) = ai X , b(X) = bi X i .
i=0 i=0
Atunci {c(X)} = {a(X)}{b(X)} = {c0 + c1 X + . . . + cn−1 X n−1 } unde
j
X n−1
X
cj = ai bj−i + ai bj+n−i = (a0 a1 . . . an−1 ) · (bj bj−1 . . . b0 bn−1 bn−2 . . . bj+1 )T
i=0 i=j+1
şi Propoziţia rezultă din faptul că cj = 0 ∀j. 2
Teorema 9.6 Un subspaţiu liniar Vn ⊆ An este ciclic dacă şi numai dacă este ideal.
102 PRELEGEREA 9. CODURI CICLICE
Matricea generatoare
corespunzătoare codului ciclic va fi
g0 g1 . . . gn−k 0 0 ... 0
0 g 0 . . . g n−k−1 gn−k 0 ... 0
Gn,k =
.
..
0 0 ... 0 g0 g1 . . . gn−k
Rezultă că un cod ciclic poate fi organizat ca un (n, k) - cod liniar, unde n este
Xn − 1
gradul polinomului X n − 1 iar k este gradul polinomului h(X) = .
g(X)
Exemplul 9.3 Codul cu repetiţie este un cod ciclic al cărui polinom generator este
g(X) = 1 + X + X 2 + . . . + X n−1 .
Exemplul 9.4 Să considerăm codul ciclic binar A de lungime 7, cu polinomul gen-
erator g(X) = 1 + X + X 3 (vezi şi Exemplul 9.1). El are matricea generatoare
1 1 0 1 0 0 0
0 1 1 0 1 0 0
G=
.
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 Z3 , de polinom generator g(X) =
2 + X 2 . Matricea sa generatoare
este
2 0 1 0 0 0
0 2 0 1 0 0
G= .
0 0 2 0 1 0
0 0 0 2 0 1
El este deci un (6, 4) - cod ternar.
Exemplul 9.6 Să reluăm 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ă codului din
Exemplul 9.4 va fi
0 0 1 1 1 0 1
H = 0 1 1 1 0 1 0 .
1 1 1 0 1 0 0
Deoarece coloanele sale sunt nenule şi distincte două câte două, codul astfel cons-
truit este echivalent cu un cod Hamming (7, 4).
Pentru a obţine un cod ciclic sistematic, este convenabil să alegem o altă bază pentru
idealul ({g(X)}). Să observăm că pentru i = n − k, n − k + 1, . . . , n − 1, putem scrie
Exemplul 9.8 Circuitul liniar construit ı̂n Exemplul 9.1 este un circuit de codificare
pentru codul generat de polinomul g(X) = 1 + X + X 3 . Exemplul descrie şi un mod
de funcţionare pentru cuvântul de informaţie 1011.
Dacă s-ar lua drept polinom generator 1 + X 2 + X 3 + X 4 , idealul generat de el
este dat de circuitul liniar
²¯
- + -
6 ±°
¾ ¾ ¾ s6 ¾ ?
X7 − 1
deoarece h(X) = 2 3 4
= 1 + X 2 + X 3.
1+X +X +X
Dezavantajul unei asemenea metode ı̂l constituie faptul că, nefiind un cod sis-
tematic, prin codificare poziţiile de informaţie se pierd. Pentru a obţine un cod
sistematic, procedăm ı̂n felul următor: mesajul de informaţie este considerat un
polinom u0 (X) de gradul n − 1 având poziţiile de informaţie drept coeficienţii lui
X n−k , . . . , X n−1 , restul coeficienţilor fiind nuli. Atunci avem u0 (X) = q(X)g(X) +
r(X) cu grad(r(X)) < grad(g(X)) = n − k de unde
{u0 (X) − r(X)} reprezintă un cuvânt - cod ı̂n care coeficienţii lui X n−k , . . . , X n−1
sunt poziţiile de informaţie nealterate, iar coeficienţii lui r(X) cu semnul schimbat
(deci coeficienţii lui X 0 , X 1 , . . . , X n−k−1 ) sunt caracterele de control.
Circuitul care realizează această codificare este următorul:
106 PRELEGEREA 9. CODURI CICLICE
i
P
PP
¾ s s ... ¾ s P¾
#Ã
? #Ã
? #Ã
? #Ã
? #Ã6
−1
−g0 −g1 −g2 −gn−k−1 gn−k
El funcţionează astfel:
• Iniţial cele n − k elemente de ı̂nmagazinare conţin 0, ı̂ntrerupătorul de ieşire
este decuplat iar cel de feedback - cuplat.
• Se introduc cele k elemente ale mesajului de informaţie atât ı̂n circuit cât şi
ı̂n canalul de comunicaţie. După k momente, ı̂n elementele de ı̂nmagazinare
avem coeficienţii restului r(X).
• Se decuplează feedbackul şi se cuplează circuitul la canalul de comunicaţie.
• Coeficienţii restului - cu semn schimbat - se transmit ı̂n canal imediat după
poziţiile de informaţie.
Deoarece provine din circuitul de ı̂mpărţire cu g(X), acelaşi circuit poate fi folosit
şi pentru detectarea erorilor la recepţie. Pentru aceasta, după decuplarea ı̂ntrerupă-
torului de ieşire şi cuplarea celui de feedback, se introduce ı̂n circuit cuvântul
recepţionat. Dacă ı̂n momentul n restul nu este nul (cel puţin un element de
ı̂nmagazinare conţine un element nenul) ı̂nseamnă că a apărut cel puţin o eroare
ı̂n transmisie.
Exemplul 9.10 Codul de lungime 7 generat de g(X) = 1 + X 2 + X 3 , poate fi
construit folosind circuitul liniar:
¾ r Z
}
Z¾
? 6
?
- - - +j - -
r +j
? -½ >-
½
6 - Canal
u3 u2 u1 u0 r
9.5 Exerciţii
9.1 Să se determine toate codurile ciclice de lungime 5
(a) : peste Z2 ; (b) : peste Z3 .
9.2 Construiţi o bază pentru cel mai mic cod ciclic de lungime n care conţine
cuvântul v:
(a) v = 1101000, n = 7;
(b) v = 010101, n = 6;
(c) v = 11011000, n = 8.
9.3 Pentru fiecare din cuvintele de mai jos găsiţi polinomul generator al celui mai
mic cod ciclic care conţine cuvântul:
9.5. EXERCIŢII 107
9.4 Să se afle polinomul generator al codului ciclic C ştiind o bază 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 Într-o codificare sistematică, codificaţi mesajul de informaţie 1101 ı̂ntr-un cu-
vânt - cod al unui cod binar ciclic de lungime 7 cu polinomul generator g(X) =
1 + X 2 + X 3.
9.6 Pentru codul definit mai sus codificaţi mesajele de informaţ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 ,
găsiţi mesajele de informaţie corepunzătoare.
9.7 Construiţi circuite liniare pentru codificare şi decodificare 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 minimă a unui cod ciclic binar de polinom generator
g(X) = 1 + X 2 + X 3 + X 4 ?
Construiţi circuite liniare pentru codificarea şi decodificarea sa.
9.9 Construiţi un circuit liniar pentru codificarea (15, 11) - codului Hamming binar.
9.10 Construiţi matricea de control a codului ciclic binar de lungime n şi 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 (generează codul Hamming);
n = 23, g(X) = 1 + X + X 5 + X 6 + X 7 + X 9 + X 11 (generează codul Golay);
n = 15, g(X) = 1 + X 4 + X 6 + X 7 + X 8 .
9.11 Sunt ciclice codurile liniare binare definite de matricile generatoare definite
mai jos ?
1 0 1 1 1 0 0 1 1 1 1 0 0 0
1 1 0 1 0 0 0 0 1 1 1 1 0 0
1 1 0 0 1 0 1 0 0 1 1 1 1 0
0 0 1 0 1 1 1 0 0 0 1 1 1 1
9.12 Arătaţi că dacă polinomul generator al unui cod binar se divide cu polinomul
1 + X, atunci toate cuvintele sale au pondere pară.
Reciproca este adevărată ?
108 PRELEGEREA 9. CODURI CICLICE
9.13 Daţi o condiţie necesară şi suficientă pentru polinomul generator al unui cod
ciclic de lungime impară pentru ca 11 . . . 1 să fie cuvânt - cod.
9.14 Arătaţi că dacă g(X) generează un (n, k) - cod ciclic, atunci g(X i ) generează
un (in, kn) - cod ciclic.
Descrieţi codurile pentru g(X) = 1 + X şi g(X) = 1 + X + X 3 cu n = 7.
9.15 Arătaţi că intersecţia a două coduri ciclice de aceeaşi lungime este tot un cod
ciclic.
Care este polinomul său generator ?
Prelegerea 10
109
110 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
O dificultate ı̂n această metodă de decodificare bazată pe sindrom constă ı̂n necesi-
tatea de a lista toate erorile - tip corespunzătoare sindromurilor şi de a le parcurge la
recepţia fiecărui cuvânt. O simplificare este ı̂nsă propusă de Meggitt (1960), bazată
pe structura ciclică a codurilor. Vom face corecţia numai pentru ultimul caracter
(de grad maxim) al cuvântului a recepţionat. După aceea se efectuează o permutare
ciclică şi se studiază din nou ultimul caracter. În acest fel, după n permutări ciclice,
toate poziţiile au fost corectate.
Metoda prezintă două avantaje majore:
Propoziţia 10.1 Dacă un cuvânt a = (a0 , a1 , . . . , an−1 ) are sindromul s(X), atunci
permutarea sa ciclică are sindromul s0 (X), care este restul ı̂mpărţirii lui Xs(X) la
polinomul generator g(X).
3. Dacă sindromul rezultat este ı̂n listă, se modifică bitul cel mai din dreapta
al cuvântului primit;
4. Simultan se permută ciclic cuvântul primit şi şi se lasă să funcţioneze un
tact circuitul liniar (neglijând ieşirea), după care se reia Pasul (3).
Se repetă acest procedeu de n − 1 ori.
Exemplul 10.2 Reluând codul Hamming din Exemplul 10.1, algoritmul va lucra
astfel:
- Singurul sindrom din listă este 1 + X 2 .
- Dacă se recepţionează de exemplu a = 1011001, el se introduce ı̂n circuitul
liniar
¾
6
? ? -
1011001 - +j
- 1 - +j
- 1 - 0
Exemplul 10.3 Să considerăm codul ciclic binar generat de polinomul g(X) = 1 +
X 4 + X 6 + X 7 + X 8 . El este un (15, 7) - cod de distanţă d = 5 (după cum vom
vedea mai târziu) deci poate corecta 2 erori. Lista completă a sindromurilor (deci a
0 1 2
tuturor erorilor - tip de pondere 0, 1, 2) are C15 +C15 +C15 = 121 elemente. Folosind
algoritmul Meggitt, numărul lor se reduce la 15, anume
112 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
1 + X 14 X7 + X6 + X5 + X3 + 1
14
X +X X7 + X6 + X5 + X
X 2 + X 14 X7 + X6 + X5 + X3 + X2
3 14
X +X X7 + X6 + X5
X 4 + X 14 X7 + X6 + X5 + X4 + X3
X 5 + X 14 X7 + X6 + X3
6 14
X +X X7 + X5 + X3
X 7 + X 14 X6 + X5 + X3
8 14
X +X X + X4 + X3 + 1
5
X 9 + X 14 X7 + X4 + X3 + X + 1
X 10 + X 14 X3 + X2 + X
11 14
X +X X + X + X + X4 + X2 + X
7 6 5
X 12 + X 14 X7 + X6 + X4 + X
13 14
X +X X7 + X4 + X3 + X2
Deci, la primirea unui cuvânt a de lungime 15, vom calcula sindromul şi - dacă
acesta se află ı̂n tabelul de sus - vom modifica bitul a14 . Apoi se face o permutare
ciclică şi se corectează a13 , ş.a.m.d.
De remarcat că ı̂n Exemplul 10.3 decodificarea nu este completă: algoritmul Meggitt
corectează ı̂n total 121 erori - tip. Privit ı̂nsă ca un cod liniar tabela de decodificare
va avea 215 /27 = 256 linii. Deci cu algoritmul Meggitt se vor corecta toate erorile
simple sau duble ignorând complet posibilitatea altor tipuri de erori.
Vom ı̂ncerca ı̂n continuare să ı̂mbunătăţim această situaţie.
Reamintim că la codurile liniare se construia un tablou standard ı̂n care pe fiecare
linie se aflau toate cuvintele cu acelaşi sindrom. Codul era corector de t erori dacă
toate cuvintele din Zqn de pondere cel mult t erau pe linii diferite; acestea constituiau
reprezentanţii sindromurilor şi apăreau pe prima coloană, fiind considerate erori -
tip pentru fiecare linie.
Astfel de tabele se pot construi şi pentru codurile ciclice; aici se iau ca reprezen-
tanţi ı̂n fiecare linie, pachetele de erori de lungime minimă. În acest fel, un cod
liniar corector de t erori (independente) este corector de pachete de j erori dacă
toate cuvintele de lungime - pachet cel mult j sunt reprezentanţi.
Lema 10.1 Dacă un cod A este corector de t erori independente şi corector de
pachete de j erori, atunci t ≤ j.
Demonstraţie: Exerciţiu. 2
Definiţia 10.3 Un (n, k) - cod ciclic corectează pachetele de j erori dacă orice
pachet - tip de lungime cel mult j este un sindrom.
Exemplul 10.5 Să considerăm toate pachetele - tip nenule de lungime cel mult 3
ı̂n Z215 . Fiecare astfel de cuvânt este de forma
{e(X)} = {X s e0 (X)} cu 0 ≤ s ≤ 14 şi e0 (X) ∈ {1, 1 + X, 1 + X 2 , 1 + X + X 2 }.
În total sunt 15 · 4 = 60 astfel de pachete de erori.
Demonstraţie: Dacă {e(X)} este o eroare - tip de lungime cel mult n − k, atunci
e(X) = X s e0 (X) cu grad(e0 (X)) < n − k. Fie g(X) polinomul generator al codului,
cu grad(g(X)) = n − k.
Ştim că {e(X)} este cuvânt - cod ⇐⇒ g(X)|e(X).
Cum g(X)|X n − 1, el va fi prim cu X s ; deci {e(X)} este ı̂n cod dacă şi numai
dacă g(X)|e0 (X), absurd deoarece grad(e0 (X)) < n − k = grad(g(X)). 2
Teorema 10.2 Proporţia pachetelor - tip de j > n − k erori pe care nu le poate
detecta un (n, k) - cod ciclic este
q −(n−k−1)
dacă j = n − k + 1
q−1
−(n−k)
q dacă j > n − k + 1.
114 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
q−1 q −(n−k−1)
= .
(q − 1)2 q j−2 q−1
2. Dacă grad(h(X)) > 0, adică j > n−k+1, vom avea (q−1)2 q j−n+k−2 polinoame
h(X) posibile (pachete - tip de lungime j) nedetectabile. Rezultă că raportul
de sus este ı̂n acest caz
(q − 1)q j−n+k−2
2 j−2
= q −(n−k) .
(q − 1) q
Exemplul 10.7 Codul ciclic definit ı̂n Exemplul 10.6 detectează orice pachet de
maxim 9 erori.
Dintre pachetele de 10 erori posibile care pot apare, doar 1/28 nu pot fi detectate,
iar dintre pachetele de 11 − 15 erori nu pot fi detectate 1/29 .
10.4 Transpunere
O metodă eficientă de utilizare a capacităţilor de corectare a pachetelor - tip de erori
de către codurile ciclice este utilizarea de transpuneri (interleaving).
În mod natural, mesajele de informaţie m1 , m2 , . . . sunt codificate ı̂n cuvintele
- cod c1 , c2 , . . . şi transmise prin canal ı̂n ordinea codificării. Transmisia se poate
realiza ı̂nsă şi după o rearanjare a caracterelor de informaţie din mai multe cuvinte
- cod consecutive.
Formal, prin transpunere la adâncimea s se ı̂nţelege scrierea a s cuvinte - cod
c1 , c2 , . . . , cs ca linii ale unei matrici
c11 c12 c13 . . . c1n
c21 c22 c23 . . . c2n
Cs,n =
..
.
cs1 cs2 cs3 . . . csn
c11 c21 . . . cs1 , c12 c22 . . . cs2 , ..., c1n c2n . . . csn
1 0 0 1 1 0
Exemplul 10.9 Să considerăm codul generat de G = 0 1 0 1 0 1
0 0 1 0 1 1
şi şase mesaje codificate c1 , c2 , . . . , c6 , unde
c1 = 100110 c2 = 010101 c3 = 111000
c4 = 010101 c5 = 100110 c6 = 111000
Deci - la nivel de caracter - secvenţa va arăta:
100110 010101 111000 010101 100110 111000.
Printr-o transpunere la adâncimea 3, forma mesajelor este:
101 011 001 110 100 010 011 101 001 110 010 100
iar cu o transpunere la adâncimea 6:
101011 011101 001001 110110 100010 010100.
116 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
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 secvenţa de caractere transmise este:
Cât de mare este un pachet de erori pe care ı̂l poate corecta această schemă ?
Să presupunem că C2 a fost transpus la adâncimea s, şi că orice cuvânt - cod (atât
din C1 cât şi din C2 ) a fost afectat de cel mult un pachet de erori. Dacă apare un
pachet de cel mult s(d2 − 1) erori, atunci el va afecta maxim d2 − 1 simboluri din
fiecare cuvânt - cod din C2 . Deci aceste erori vor fi detectate şi se vor marca toate
caracterele cuvintelor - cod implicate. Dacă s ≤ d1 − 1, atunci orice cuvânt - cod
din C1 are cel mult d1 − 1 simboluri marcate. În ipoteza că nu există decât maxim
un pachet de erori care l-a perturbat, caracterele marcate pot fi corectate.
Am arătat astfel:
Exemplul 10.12 Fie C1 şi K2 codurile binare, definite respectiv de matricile gene-
ratoare
1 0 0 0 1 1 1 0
1 0 0 1 1 0
0 1 0 0 1 1 0 1
G1 =
G2 = 0 1 0 1 0 1
.
0 0 1 0 1 0 1 1
0 0 1 0 1 1
0 0 0 1 0 1 1 1
Deci, n1 = 8, k1 = 4, d1 = 4, n2 = 6, k2 = 3, d2 = 3.
Să codificăm mesajele de informaţie m1 = 1000, m2 = 1100, m3 = 1010
folosind o transpunere ı̂ncrucişată a lui C1 cu K2 , C2 fiind transpus la o adâncime
s = 3 = d1 − 1.
Codificarea mesajelor de informţie cu codul C1 dă:
100 110 101 010 001 011 011 000 001 011 010 001 . . .
De exemplu, să presupunem că primii 6 biţi au fost transmişi incorect, deci s-a
primit 011 001 101 010 001 011 . . .. Eliminând efectul transpunerii la adâncimea
s = 3, se ajunge la cuvintele
(care comparate respectiv cu c01 , c02 , c03 au erori fiecare pe primele două poziţii). Deoa-
rece sindromurile sunt nenule, C2 va detecta erori ı̂n toate cele trei cuvinte, deci toţi
cei 18 biţi sunt marcaţi (ı̂i vom ı̂nlocui cu ∗).
Presupunând că nu mai sunt alte erori, după un procedeu similar se obţin cuvin-
tele c04 , . . . , c08 , fără caractere marcate.
Eliminând acum efectul transpunerii la adâncimea k2 = 3, se obţin cuvintele
10.5 Exerciţii
10.1 Demonstraţi Lema 10.1
10.2 Arătaţi că dacă un cod ciclic detectează o eroare - tip e, atunci detectează
toate erorile - tip obţinute prin permutări ciclice ale lui e.
10.3 Verificaţi că pachetele ciclice - tip de erori de lungime 3 din Z215 au sindromuri
diferite pentru codul din Exemplul 10.6.
10.4 Arătaţi că g(X) = 1+X 2 +X 4 +X 5 generează un (15, 10) - cod ciclic corector
de pachete de maxim 2 erori. Este acesta un cod corector de 2 erori independente ?
10.12 Folosind codurile definite ı̂n Exemplul 10.12, să se codifice următoarele me-
saje de informaţie prin transpunerea ı̂ncrucişată a lui C1 cu C2 :
(a) m1 = 0110, m2 = 1011, m3 = 1111, s = 2
(b) m1 = 0110, m2 = 1011, m3 = 1111, s = 3
(c) m1 = 0010, m2 = 1111, m3 = 1010, s = 3
(d) m1 = 1000, m2 = 0100, m3 = 0010, m4 = 0001, m5 = 0011,
m6 = 0100 s = 3
10.13 Folosind codurile din Exemplul 10.12 au fost obţinute prin transpunere
ı̂ncrucişată a lui C1 cu C2 la adâncimea s = 3, următoarele secvenţe binare:
(a) 000001001110110001000111000111000111000000000000000000 . . .
(b) 100011001111101010011001111010100110100100011101000100 . . .
Aflaţi meajele de informaţie m1 , m2 , m3 .
10.14 Găsiţi un rezultat analog Teoremei 10.5 dacă pentru C2 se foloseşte s - cadrul
de transpunere ı̂ntârziată ı̂n loc de s - transpunere.
Prelegerea 11
Primele două secţiuni ale acestei prelegeri vor trece ı̂n revistă câteva noţiuni algebrice
fundamentale ı̂n construirea codurilor ciclice.
Definiţia 11.2 Un element a ∈ F este primitiv dacă toate puterile sale generează
F \ {0}.
Observaţie: Dacă F are r elemente, atunci un element este primitv dacă şi numai
dacă are ordinul r − 1.
Teorema 11.1 Orice corp finit are cel puţin un element primitiv.
121
122 PRELEGEREA 11. ALTE DEFINIŢII ALE CODURILOR CICLICE
t 0
Să considerăm s0 = s/pi (deci s = pi s0 ) şi fie c = ap bs ∈ F . Vrem să arătăm că
c are ordinul m = pi n0 . Pentru aceasta, avem:
t 0 t 0 i i 0 0 i 0 i 0
cm = ap m bs m = ap n p bp s n = (an )p (bs )n = 1p 1n = 1.
0
Mai rămâne de arătat că cm = 1 =⇒ m0 ≥ m. Este suficient să verificăm că pi
şi n0 sunt divizori ai lui m0 ; deoarece ei sunt primi intre ei, va rezulta că produsul
m = pi n0 este de asemenea divizor al lui m0 .
0 0 i 0 0 0 0 0 0 0 0 0
Din calculul 1 = (cm )n = ap n m bs m = (an )m bs m = bs m rezultă (Propoziţia
11.1) că ordinul s = pi s0 al lui b divide s0 m0 ; deci pi |m0 .
0 0 t i 0 i 0 0 t i 0 0 t i 0
În plus, din 1 = (cm )p = ap p m bp s m = ap p m (bs )m = ap p m rezultă că ordinul
n = pt n0 al lui a divide pt pi m0 ; deci n0 |pi m0 .
Cum n este cel mai mare ordin ale elementelor din F , avem pi n0 ≤ pt n0 , deci
i ≤ t, adică pi divide n = pi n0 .
În mod similar, toţi factorii lui s sunt divizori ai lui n, deci s|n.
Am arătat următoarea afirmaţie:
∀b ∈ F =⇒ ord(b)|n
Deci b este p rădăcină a polinomului X n − 1 = 0, de unde rezultă că polinomul
n
X − 1 = 0 are r − 1 rădăcini, adică r − 1 ≤ n. 2
Fie F un corp fixat şi f (X) ∈ F [X] un polinom arbitrar. Spunem că a ∈ F este
rădăcină a lui f dacă f (a) = 0.
Se poate demonstra imediat afirmaţia:
Propoziţia 11.2 Dacă un polinom f are rădăcinile distincte a1 , a2 , . . . , an atunci
el este divizibil cu polinomul (X − a1 )(X − a2 ) . . . (X − an ).
Exemplul 11.1 Polinomul X 3 + 1 are o rădăcină 1 ı̂n Z2 . Deci X 3 + 1 se divide
cu X + 1:
X 3 + 1 = (X + 1)(X 2 + X + 1)
Aceasta este o factorizare completă; deoarece X 2 + X + 1 nu are rădăcini ı̂n Z2 ,
el nu poate fi descompus ı̂n produsul a două polinoame de gradul 1. Acelaşi polinom
X 3 + 1 are ı̂n Z3 pe 2 ca rădăcină triplă, deci aici putem scrie:
X 3 + 1 = (X + 1)3 .
Rezultă că factorizarea unui polinom depinde de corpul ı̂n care este definit.
Din Teorema 11.1 şi Propoziţia 11.2 rezultă ca dacă a ∈ F este un element de
ordin n, atunci X n − 1 se poate descompune ı̂n
X n − 1 = (X − a)(X − a2 ) . . . (X − an ).
Definiţia 11.3 Un polinom f (X) ∈ F [X] de grad n este ireductibil dacă nu se poate
descompune ı̂n produsul a două polinoame din F [X] de grad mai mic decât n.
Observaţii;
• Orice polinom liniar este ireductibil. Pentru polinoame de grad cel puţin 2,
Propoziţia 11.2 afirmă că:
Un polinom ireductibil ı̂ntr-un corp nu are rădăcini ı̂n acel corp.
Este interesant că reciproca nu este adevărată decât pentru polinoamele de
grad 2 şi 3. Astfel, polinomul f (X) = (X 2 + X + 1)2 ∈ Z2 [X], deşi nu are
rădăcini ı̂n Z2 , este reductibil.
11.2. POLINOAME MINIMALE 123
Propoziţia 11.6 Dacă f (X) ∈ Zq [X] verifică f (β) = 0 atunci g(X)|f (X).
Teorema 11.5 Fie f (X) ∈ Zq [X] şi β o rădăcină a sa (eventual dintr-o extensie
a lui Zq ). Atunci şi β q este rădăcină a lui f (X).
Teorema 11.6 Orice polinom normat ireductibil peste Zq de grad m este un factor
m
al polinomului X q − X.
Demonstraţie: Dacă g(X) = X, afirmaţia este banală.
Să presupunem că g(X) 6= X şi fie β ∈ GF (q m ) o rădăcină nenulă a sa, deci
m
g(β) = 0. Atunci (Teorema 11.3) β satisface ecuaţia X q −1 −1 = 0, deci (Propoziţia
m
11.6) X q −1 − 1 se divide cu polinomul minimal g(X). 2
m
Teorema 11.7 Orice factor ireductibil g(X) ∈ Zq [X] al lui X q − X are gradul cel
mult m.
m
Demonstraţie: Fie g(X)|X q − X, ireductibil peste Zq , cu grad(g(X)) = k.
Vom considera algebra polinoamelor modulo g(X), ı̂n care luăm α = {X}. Se
ştie (Prelegerea 8) că g(α) = 0. Un element oarecare din această algebră este de
forma
β = a0 + a1 α + . . . + ak−1 αk−1 .
m m m
Atunci β q = aq0 + aq1 αq + . . . + aqk−1 (αk−1 )q = a0 + a1 αq + . . . + ak−1 (αq )k−1 =
m m m m m
a0 + a1 α + . . . + ak−1 αk−1 = β
deoarece GF (q m ) are tot caracteristica q ca şi Zq , iar α fiind o rădăcină a lui g(X),
m m m
este rădăcină şi a lui X q − X, deci αq = α, de unde rezultă αjq = αj ∀j ≥ 0.
m
Am obţinut ı̂n final faptul că β este o soluţie a ecuaţiei X q − X = 0. Sunt
posibile q k asemenea elemente β distincte, iar cum ecuaţia are q m rădăcini, rezultă
q k ≤ q m sau k ≤ m. 2
Teorema 11.8 Fie β ∈ GF (q m ) de polinom minimal g(X), grad(g(X)) = k şi
ord(β) = t. Atunci
(i) t|q k − 1;
(ii) k este minim cu proprietatea (i).
k
Demonstraţie: Ştim (Teorema 11.6) că g(X) este un factor al lui X q − X; deci
k
β q = β, de unde rezultă t|q k − 1.
p
Să presupunem acum că există p < k cu t|q p − 1. Atunci β q −1 = 1, adică β este
p p
o rădăcină a ecuaţiei X q − X = 0, deci g(X) este un factor al polinomului X q − X.
Conform Teoremei 11.7, rezultă k ≤ p, contradicţie. 2
Teorema 11.9 Fie polinomul g(X) ∈ Zq [X], grad(g(X)) = m şi β ∈ GF (q m ) o
2 m−1
rădăcină a sa. Atunci β, β q , β q , . . . , β q sunt toate rădăcinile lui g(X).
2
Demonstraţie: Deoarece g(β) = 0, avem – conform Teoremei 11.5 – că β q , β q , . . . ,
m−1
βq sunt şi ele rădăcini ale lui g(X). De asemenea, conform Teoremei 11.6, β este
m m
rădăcină a lui X q − X, adică β q = β. Mai rămâne de arătat că aceste rădăcini
i j
sunt distincte. Presupunem că există 0 ≤ i < j < m cu β q = β q . Avem
m
³ j
´qm−j ³ i
´qm−j m+i−j
β = βq = βq = βq = βq
m+i−j
Deci β este rădăcină a polinomului X q = X şi – cu Teorema 11.7,
grad(g(X)) = m ≤ m + i − j < m, contradicţie. 2
Din Teorema 11.9 rezultă că ı̂n extensia GF (q m )[X] se poate scrie
m−1
g(X) = (X − β)(X − β q ) . . . (X − β q ).
126 PRELEGEREA 11. ALTE DEFINIŢII ALE CODURILOR CICLICE
Deci cuvântul corespunzător polinomului f (X) este ı̂n spaţiul nul al matricii
(1 α . . . αn−1 ) (1).
Aceasta este şi condiţia de divizibilitate a polinomului f (X) cu polinomul mini-
mal m(X) al lui α. Mulţimea polinoamelor care satisfac condiţia formează idealul
generat de m(X). Dimensiunea acestui ideal este (Prelegerea 9) n − k unde
k = grad(m(X)). Deci spaţiul liniar generat de matricea (1) are dimensiunea k.
Prin urmare, a cere ca f (X) să admită pe α1 , α2 , . . . , αr ∈ GF (q m ) ca rădăcini
este echivalent cu a cere ca vectorul corespunzător să aparţină spaţiului nul al ma-
tricii
1 α1 α12 . . . α1n−1
2 n−1
1 α2 α2 . . . α2
Hmr,n =
..
.
1 αr αr2 . . . αrn−1
Exemplul 11.5 Să revenim la Exemplul 11.3. Polinomul {f (X)} aparţine codului
respectiv dacă şi numai dacă vectorul corespunzător aparţine spaţiului nul al matricii
1 α α2 α3 α4 α5 α6 α7 α8 α9 α10 α11 α12 α13 α14
H = 1 α3 α6 α9 α12 1 α3 α6 α9 α12 1 α3 α6 α9 α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 obţinut o matrice 12 × 15, deşi - conform rezultatelor teoretice, n = 15, n −
k = 10, k = 5 şi deci matricea de control a codului ar trebui să aibă dimensiunile
(n − k) × n = 10 × 15. Se observă ı̂nsă că de fapt ultima linie este nulă, iar
următoarele două linii sunt identice (deci penultima se poate elimina).
11.4. ALTĂ DEFINIŢIE A CODURILOR CICLICE 129
Demonstraţie: Fiecare ecuaţie T r(X) = a admite maxim q r−1 rădăcini, iar numărul
de elemente a posibile este q. Mai trebuie arătat că toate cele q ecuaţii au rădăcini
distincte. Aceasta se poate deduce foarte simplu folosind derivata formală ı̂ntr-un
corp de caracteristică q: toate ecuaţiile au aceeaşi derivată: 1. 2
care constituie una din cele n − k ecuaţ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 Zq . 2
De remarcat că această teoremă defineşte numai codurile ciclice ”ireductibile”
(care nu conţin subcoduri ciclice proprii), deci clasa lor este inclusă strict ı̂n clasa
codurilor ciclice dată de cele două definiţii anterioare (prin ideale şi prin rădăcinile
polinomului generator).
Exemplul 11.7 Să luăm n = 15, q = 2, deci k = 4. În GF (24 ) vom lua α,
rădăcina polinomului 1 + X + X 4 . Se ştie că ea este un element primitiv. Aplicaţia
T r este T r(X) = X + X 2 + X 4 + X 8 iar codul A este format din 16 cuvinte de forma
(T r(β), T r(βα), . . . , T r(βαn−1 )), ∀β ∈ GF (24 ).
Pentru β = 0, 00 . . . 0 ∈ A.
Pentru β = 1, (T r(1), T r(α), . . . , T r(αn−1 )) = 000100110101111
Celelalte 14 cuvinte sunt permutările circulare ale µ acestuia. ¶
4 1 1
Polinomul de control al codului este h(X) = X 1 + + 4 = 1 + X 3 + X 4,
X X
iar polinomul generator
X 16 − X
g(X) = 4 = X + X 4 + X 5 + X 7 + X 9 + X 10 + X 11 + X 12 ,
X + X3 + 1
al cărui vector corespunzător se obţine ı̂n construcţia de sus pentru β = α2 .
Acesta este un (15, 4) - cod ciclic, ireductibil.
De remarcat că pentru n = 15 sunt numai două astfel de coduri, celălalt fiind
codul dual (rădăcina polinomului 1 + X 3 + X 4 este de asemenea primitivă).
11.5. EXERCIŢII 131
11.5 Exerciţii
11.1 Demonstraţi Corolarul 11.1.
11.4 Găsiţi o extensie a lui Z2 ı̂n care X 9 − 1 să se descompună ı̂n factori liniari.
11.11 Găsiţi polinomul generator al unui cod ciclic de lungime 15, de rădăcini
1, α5 , α7 , α ∈ GF (24 ) fiind rădăcină a polinomului 1 + X + X 4 .
Construiţi matricea de control a codului.
Arătaţi că v(X) este polinom - cod dacă şi numai dacă ponderea w(v) este pară.
11.13 Arătaţi că orice cuvânt - cod al unui cod ciclic are pondere pară dacă şi
numai dacă 1 + X este un factor al polinomului generator.
11.14 Să se descompună T r(X) ı̂n produs de polinoame minimale ı̂n corpurile:
(a) GF (23 ) (b) GF (25 ) (c) GF (32 ) (d) GF (33 ) (e) GF (52 ).
11.15 Folosind Teorema 11.12 să se construiască toate codurile ireductibile pentru
GF (23 ), GF (25 ), GF (32 ).
11.16 Verificaţi că polinomul h(X) construit ı̂n demonstraţia Teoremei 11.12 este
polinomul generator al codului dual.
Prelegerea 12
Coduri BCH
Codurile BCH constituie cea mai relevantă clasă de coduri ciclice. Ele au fost
definite ı̂n mod independent de Bose şi Chaudhuri pe de-o o parte, Hocquenheim
de pe de-altă parte. Numele de BCH (Bose - Chaudhuri - Hocquenheim) a fost
dat de Peterson, care s-a ocupat de ele ı̂n mod special, construind şi algoritmul de
decodificare.
Teorema 12.2 Într-un cod BCH definit de rădăcinile αm0 , αm0 +1 , . . . , αm0 +d−2 (α ∈
GF (q m )), distanţa minimă a codului
" #este cel puţin d (şi deci codul poate corecta cel
d−1
puţin orice combinaţie de t ≤ erori).
2
133
134 PRELEGEREA 12. CODURI BCH
Exemplul 12.1 Dacă se lucrează ı̂n binar, puterile pare ale rădăcinilor se pot omite
din listă(dacă αi este rădăcină, atunci şi α2i este rădăcină - conform Teoremei 11.9,
Prelegerea 11). Atunci un cod BCH binar corector de 3 erori este dat de rădăcinile
β, β 3 , β 5 , unde β este un element primitiv dintr-o extensie a lui Z2 . De exemplu,
dacă β = α, rădăcină a polinomului 1 + X + X 4 , se obţine codul din Exemplul 11.3,
Prelegerea 11.
• Localizările erorilor Xi ∈ GF (q m ).
Vom nota poziţiile elementelor cuvintelor din GF (q m ) prin puterile lui α; pe poziţia
i ı̂n e(α) se află coeficientul lui αi−1 , deci αi−1 va localiza a i - a componentă dintr-un
cuvânt.
Dacă au intervenit t erori, modelul de eroare este complet caracterizat de cunoaş-
terea celor t perechi nenule (Yi , Xi ), 1 ≤ i ≤ t.
136 PRELEGEREA 12. CODURI BCH
Yi = 0 ⇐⇒ Xi = 0.
Atunci
à t !q t t
X X X
q
(Sj ) = Yi Xij = Yiq Xijq = Yi Xijq = Sjq
i=1 i=1 i=1
4. Dacă (Yi , Xi ), Xi = αji sunt cele k ≤ t valori nenule ale soluţiei obţinute,
atunci:
De remarcat că ı̂n cazul binar, pasul (3) nu mai este necesar, deoarece
Yi = 1, ∀i ≤ k.
Pentru corectitudinea algoritmului, trebuie studiate compatibilităţile sistemelor
de ecuaţii (1) şi (2).
t
X
Teorema 12.4 Sistemul Yi Xij = Sj , m0 ≤ j ≤ m0 + t − 1, de necunoscute Yi
i=1
este compatibil dacă şi numai dacă au intervenit t erori.
Demonstraţie: Considerat ca sistem ı̂n Y , este liniar; determinantul principal este
¯ ¯ ¯ ¯
¯ X1m0 X2m0 . . . Xtm0 ¯ ¯ 1 1 ... 1 ¯
¯ ¯ ¯ ¯
¯ ¯ ¯ ¯
¯
¯
X1m0 +1 X2m0 +1 . . . Xtm0 +1 ¯
¯
¯
¯
X1 X2 . . . Xt ¯
¯
¯
¯ X1m0 +2 X2m0 +2 . . . Xtm0 +2 ¯ m0 m0 m0 ¯
¯ = X1 X2 . . . Xt ¯ X12 X22 . . . Xt2 ¯
¯
¯ .. ¯ ¯ .. ¯
¯ ¯ ¯ . ¯
¯ . ¯ ¯ ¯
¯ ¯ ¯ ¯
¯ X1m0 +t−1 X2m0 +t−1 . . . Xtm0 +t−1 ¯ ¯ X1t−1 X2t−1 . . . Xtt−1 ¯
Y
= X1m0 X2m0 . . . Xtm0 (Xi − Xj )
1≤j<i≤t
El este nenul numai dacă au intervenit t erori, pentru că atunci toţi Xi sunt distincţi
şi nenuli. 2
Sm0 Sm0 +1 . . . Sm0 +t−1
Sm0 +1 Sm0 +2 . . . Sm0 +t
Teorema 12.5 Matricea M =
..
.
Sm0 +t−1 Sm0 +t . . . Sm0 +2t−1
este nesingulară dacă au intervenit t erori şi este singulară dacă au intervenit
mai puţin de t erori.
138 PRELEGEREA 12. CODURI BCH
M este nesingulară dacă cele două matrici din descompunere sunt nesingulare.
Matricea A este nesingulară dacă şi numai dacă valorile Xi , (1 ≤ i ≤ t) sunt distincte
şi nenule, deci dacă au intervenit t erori. Matricea diagonală B este nesingulară dacă
toate elementele de pe diagonala principală sunt nenule, deci dacă toate perechile
(Yi , Xi ), 1 ≤ i ≤ t sunt nenule - adică au apărut t erori. 2
Aplicarea algoritmului Peterson se face ı̂n felul următor:
Sj = r(αj ), j = m0 , m0 + 1, . . . , m0 + 2t − 1
Deoarece a doua ecuaţie se obţine din prima prin ı̂nmulţire cu α5 , ele nu sunt in-
dependente; deci au apărut mai puţin de 3 erori. Facem σ3 = 0 şi a doua ecuaţie
va da σ2 = α13 . Din prima ecuaţie a sistemului se ajunge la α0 + σ1 = α11 , adică
σ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 rădăcini X1 = α3 , X2 = α10 .
Am redescoperit astfel cele două localizări ale erorilor. Codul fiind binar, corecta-
rea se face imediat: se modifică (din 1 ı̂n 0 sau din 0 ı̂n 1) biţii de pe poziţiile 4
respectiv 11 din cuvântul recepţionat.
de unde se obţine σ1 = α0 , σ1 = α.
Polinomul de localizare a erorilor este X 2 +σ1 X +σ2 = X 2 +X +α, cu rădăcinile
X1 = α7 , X2 = α9 . Au apărut deci două erori, pe poziţiile 8 şi 10. Pentru că suntem
ı̂n cazul binar, Y1 = Y2 = 1; vectorul - eroare obţinut este e(X) = X 7 + X 9 , deci
cuvântul - cod transmis este
adică f = 100100100100100.
S(X) = (1 − X1 X)(1 − X2 X) . . . (1 − Xt X) = σ0 + σ1 X + σ2 X 2 + . . . + σt X t
12.3. LOCALIZAREA ERORII LA CODURILE BCH BINARE 141
unde
σ0 = 1
σ1 = X1 + X2 + . . . + Xt
...
σt = X1 X2 . . . Xt
(operaţiile fiind efectuate ı̂n binar, semnul − este asimilat cu +).
Rădăcinile acestui polinom sunt inversele localizărilor erorilor Xi−1 , 1 ≤ i ≤ t.
Procedeul lui Chien de corectare a erorilor ı̂n cazul binar pentru codurile BCH,
este următorul:
Fie r = r0 r1 . . . rn−1 cuvântul recepţionat; componentele lui se vor decodifica pas
- cu - pas (pe măsură ce sunt recepţionate).
Să considerăm primul bit primit rn−1 şi să cercetăm dacă el este corect sau nu.
Aceasta este echivalent cu a verifica dacă αn−1 este o localizare a erorii, sau dacă
α−(n−1) = α este o rădăcină a polinomului S(X) de localizare a erorii.
Dacă σ1 α + σ2 α2 + . . . + σt αt = 1 adică S(α) = 0, atunci a intervenit o eroare
pe poziţia αn−1 şi deci componenta rn−1 trebuie corectată.
Dacă σ1 α + σ2 α2 + . . . + σt αt 6= 1 adică S(α) 6= 0, atunci rn−1 s-a recepţionat
corect.
Procedeul se repetă: ı̂n general componenta recepţionată rn−s este corectă dacă
−(n−s)
α = αs nu este rădăcină a polinomului S(X), adică
σ1 αs + σ2 α2s + . . . + σt αst 6= 1
În caz contrar, rn−s va fi corectată ı̂n rn−s + 1.
Algoritmul lui Chien este deci:
1. s := 0;
2. while s ≤ n do
(a) s := s + 1;
(b) Se calculează P := σ1 αs + σ2 α2s + . . . + σt αts ;
(
0 dacă P = 0
(c) Se decodifică an−s := rn−s + v unde v =
1 dacă P =
6 0
r0 , r1 , . . . , rn−1 -
142 PRELEGEREA 12. CODURI BCH
Iniţial ı̂n elementele de ı̂nmagazinare ale celor două circuite se află σ1 respectiv σ2 .
Pentru cazul binar vom nota cu
³
x1 -
x2 - - x1 ∨ x2 ∨ . . . ∨ xn
xn -
´
dispozitivul ”sau” care dă valoarea (scalar) 0 dacă şi numai dacă
x1 = x2 = . . . = xn = 0,
şi cu
x - - x
dispozitivul ”non”.
Atunci, circuitul de implementare a procedeului Chien de localizare a erorii este:
r -
12.4. EXERCIŢII 6 143
?
²¯
r -+
6 ?
²¯ ±°
¾ r + ¾
²¯? 6 ¾ ±° ? 6
-
? - +- - - - ¾ ¾?¾ ? ¾
6 ¾ ¾?
1 ±°
²¯
-+¾ ? ?
²¯ ±°
? -+¾ ?
±°
²¯
? -+¾ ?
? -? ±°
²¯
? -+¾ ?
±°
ª
?
- ¾?
? -
??? ?
µ ´
?
?
²¯
r0 , r1 , . . . , rn−1 -+
±°
?
În acest circuit, cele patru elemente de ı̂nmagazinare din stânga formează circuitul
de ı̂nmulţire cu α (unde iniţial se introduce σ1 ), iar cele patru elemente din dreapta
formează circuitul de ı̂nmulţire cu α2 , aranjat ı̂n ordine inversă (unde σ2 se introduce
iniţial de la dreapta spre stânga).
De asemenea, există un element de ı̂nmagazinare care conţine numai 1, element
pe care ı̂l furnizează la fiecare tact.
Iniţial, circuitul funcţionează odată la momentul 0 fără a introduce nimic de pe
canal (pentru ”amorsarea” ı̂n elementele de ı̂nmagazinare a coeficienţilor pentru σ1 α
respectiv σ2 α2 ).
La momentul următor se ı̂ncepe procesul efectiv de decodificare. Dacă rn−1 a fost
perturbat, atunci αn−1 este localizarea erorii, adică α este rădăcină a polinomului de
localizare a erorii şi avem 1 + σ1 α + σ2 α2 = 0. În acest caz, la intrarea ı̂n sumatorul
”sau” este vectorul 0 = (0, 0, 0, 0), iar la ieşire scalarul 0. După negare se obţine
scalarul 1, care se adună (pentru corecţie) la rn−1 .
Dacă rn−1 este corect, la intrarea ı̂n sumator se obţine o valoare nenulă, deci
ieşirea va fi 1, care prin negare este 0 şi rn−1 rămâne nemodificat.
12.4 Exerciţii
12.1 Să se verifice valabilitatea descompunerii M = ABAT din demonstraţia Teo-
remei 12.5
12.2 Fie α ∈ GF (2m ), m > 2 primitiv. Atunci polinoamele minimale m1 (X) şi
m3 (X) au acelaşi grad.
12.5 Să se determine polinomul generator şi cel de control pentru codul BCH binar
corector de 3 erori de lungime
(a) 15 (b) 31.
Codificaţi mesajul de informaţie format numai din 1.
12.6 Caracterizaţi codurile BCH care sunt definite de toate elementele extensiei
Galois GF (q m ).
12.8 Aflaţi rădăcinile polinoamelor cu coeficienţi ı̂n GF (24 ) (α este rădăcina 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 Definim codul BCH de polinom generator g(X) = m1 (X)m3 (X) peste GF (24 )
folosind elementul primitiv α, rădăcină a polinomului 1 + X + X 4 . Se recepţionează
cuvintele a şi se calculează sindromurile aH. Ştiind aceste sindromuri, localizaţi
erorile (dacă se poate):
01000101 11101000 11001101 01000000
00000100 10100100 00111101 00000000
12.10 Pentru codul BCH definit ı̂n exemplul anterior, decodificaţi mesajele:
110000000000000 000010000100001 010001010100000
110011100111000 110011100100000 111000000000001
101110000000000 101010010110001 010000100000000
010101001011000 110111011101100 101110000001000
111001011000000 000111010000110
12.11 În codul BCH de lungime 15 corector de 3 erori, să se decodifice mesajele:
(a) 001000100000000, (b) 101011001000000.
12.12 În codul BCH peste Z3 de lungime 8, corector de 2 erori, să se decodifice
mesajele
(a) 00100000 (b) 12121212 (c) 11211122
(d) 02020202 (e) 10201020 (f ) 22110011.
145
146 PRELEGEREA 13. CODURI REED - SOLOMON
Deoarece au fost studiate (şi utilizate) numai codurile Reed - Solomon de carac-
teristică 2, vom considera ı̂n continuare q = 2.
Codul are 85 cuvinte, obţinute prin ı̂nmulţirea cu g(X) a tuturor polinoamelor din
GF (23 )[X] de grad cel mult 4 sau - echivalent - din ı̂nmulţirea cu matricea G a
tuturor cuvintelor din GF (23 )5 .
De exemplu, codificarea mesajului de informaţie a = 1α00α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 simplă se obţine folosind (conform secţiunii 11.3)
rădăcinile α şi α2 ale cuvintelor - cod:
à !
1 α α2 α3 α4 α5 α6
H= .
1 α2 α4 α6 α α3 α5
Exemplul 13.2 Fie A codul dat de g(X) = α+X unde α este rădăcina polinomului
1 + X + X 2 şi generează GF (22 ). A are deci n = 3, k = 2, d = 2 şi 16 cuvinte
13.2. CODURI RS SCURTE 147
- cod. Codul A(1) se obţine luând toate cuvintele lui A care au 0 pe ultima poziţie
(acestea sunt 000, α10, α2 α0, 1α0), din care se elimină ultimul caracter.
Deci A(1) = {00, α1, α2 α, 1α}.
Atenţie: Ultima poziţie nu ı̂nseamnă ultimul bit. Fiecare element din cuvânt are
aici două poziţii binare. Astfel, cele patru cuvinte - cod alese din A au reprezentarea
binară
000000, 011000, 110100, 100100
iar codul scurt, reprezentat ı̂n binar este Â(1) = {0000, 0110, 1101, 1001}.
Sau - altfel spus - A(s) conţine toate polinoamele de forma b(X) unde
b(X) = a(X)g(X), grad(a(X)) < k − s = 2m − d − s (deoarece grad(g(X)) =
d − 1 = n − k).
De aici rezultă că matricea generatoare a unui cod RS scurt A(s) este
g(X)
Xg(X)
G=
..
.
X k−s−1 g(X)
care se obţine din matricea generatoare a codului A, din care se elimină ultimele s
linii. Numărul de simboluri de informaţie este egal cu numărul de linii din G, deci
ks = k − s = 2m − d − s
Să notăm acum cu d respectiv ds distanţele minime ale celor două coduri. Se
observă că ∀c1 , c2 ∈ A(s), c01 = c1 00 . . . 0, c02 = c2 00 . . . 0 ∈ A şi deci d(c1 , c2 ) =
d(c01 , c02 ), adică ds ≥ d.
Pe de-altă parte (Teorema 3.3), ds ≤ ns −ks +1 = 2m −1−s−(2m −d−s)+1 = d,
deci ds = d.
Din cele arătate mai sus putem enunţa teorema:
Teorema 13.3 Fie A un (n, k) - cod RS cu distanţa minimă d şi A(s) codul său
scurt, cu parametrii ns , ks , ds . Atunci
ns = 2m − 1 − s, ks = 2m − d − s, ds = d
Observaţie: Alte coduri scurte se pot obţine eliminând orice set de s elemente din
cuvintele unui cod RS. Se poate vedea imediat că proprietăţile arătate mai sus nu
se schimbă.
Exemplul 13.3 Plecând de la codul RS din Exemplul 13.1, codul scurt A(2) va
avea ca matrice generatoare matricea G fără ultimele două linii şi coloane, iar ca
parametri n2 = 5, k2 = 3, d2 = 3.
148 PRELEGEREA 13. CODURI REED - SOLOMON
poziţiile X1 = α, X2 = α6 . Ã ! Ã ! Ã !
X10 X20 Y1 S0
(5) Se rezolvă sistemul liniar · = , adică:
X1 X2 Y2 S1
(
Y1 + Y2 = 1
αY1 + α Y2 = α3
6
Definiţia 13.2 Fie S ⊆ GF (2m ). Două polinoame p(X), q(X) reprezintă aceeaşi
funcţie : S → GF (2m ) dacă şi numai dacă ∀β ∈ S, p(β) = q(β).
Teorema 13.6 Fie p(X), q(X) ∈ GF (2m )[X] şi S ⊆ GF (2m ) mulţimea rădăcinilor
de ordinul n ale unităţii. Atunci p(X) şi q(X) reprezintă aceeaşi funcţie f : S →
GF (2m ) dacă şi numai dacă p(X) ≡ q(X) (mod 1 + X n ).
Teorema 13.7 Fie S mulţimea rădăcinilor de ordinul n ale unităţii din GF (2m ).
Atunci spaţiul funcţiilor tuturor polinoamelor din GF (2m )[X] de grad ≤ k − 1 pe S
formează un (n, k) - cod ciclic peste GF (2m ).
Demonstraţie: Să notăm cu C acest spaţiu şi fie S generat de α primitiv. Atunci,
dacă p(X) ∈ GF (2m )[X] este un polinom de grad cel mult k − 1, avem vp =
p(1)p(α) . . . p(αn−1 ) ∈ C.
Fie q(X) = p(αX). Cum grad(q(X)) ≤ k − 1, rezultă vq ∈ C. Dar
q(1)q(α) . . . q(αn−1 ) = p(α)p(α2 ) . . . p(αn−1 )p(1) ∈ C,
ceea ce reprezintă chiar definiţia unui cod ciclic. 2
Vom arăta aceasta ı̂nsă ı̂n mod direct, fără a folosi inversa matricii A:
Teorema 13.9 Fie S ⊆ GF (2m ) mulţimea rădăcinilor de ordinul n ale unităţii din
GF (2m ), generată de elementul primitiv α. Spaţiul funcţiilor tuturor polinoamelor
de grad < n − d + 1 pe S este un cod ciclic DMS cu polinomul generator
g(X) = (α + X)(α2 + X) . . . (αd−1 + X).
Exemplul 13.10 Să reluăm codul RS definit ı̂n Exemplul 13.4, ı̂n care considerăm
că s-a recepţionat cuvântul v = α6 αα5 α2 10α2 . Deoarece d = 5, avem t ≤ 2 şi
E0 = v(α0 ) = 1, E6 = v(α) = α3 , E5 = v(α2 ) = α3 , E4 = v(α3 ) = 1. Polinomul de
localizare a erorii este σ(X) = X 2 + σ1 X + σ0 . Determinăm σ0 , σ1 ca ı̂n Exemplul
13.4 şi găsim σ0 = 1, σ1 = α5 . Se poate determina astfel relaţia de recurenţă:
Ek = α5 Ek+1 + Ek+2
Deoarece (E0 , E6 , E5 , E4 ) = (1, α3 , α3 , 1), vom avea:
E3 = α5 E4 + E5 = α5 + α3 = α2 ,
E2 = α5 E3 + E4 = α5 · α2 + 1 = 0,
E1 = α5 E2 + E3 = 0 + α2 = α2
13.5. ŞTERGERI 153
13.5 Ştergeri
O ştergere este o eroare detectată, pentru corectarea căreia trebuind determinată
doar valoarea erorii. Numărul locaţiei de ştergere este poziţia elementului perturbat.
Acest număr este ı̂n general cunoscut (din citirea fizică a mesajului primit sau din
structura codului).
Astfel, fie A un cod RS peste GF (2m ) şi să considerăm codul  format din
reprezentarea binară a cuvintelor codului A (fiecare element din GF (2m ) se scrie ca
un cuvânt binar de lungime m). Se defineşte şi codul Â0 obţinut prin adăugarea câte
unui bit de paritate la fiecare simbol din componenţa cuvintelor codului Â.
Exemplul 13.11 Să considerăm codul RS din Exemplul 13.2. Pentru a forma Â0 ,
se ı̂nlocuieşte fiecare element 0, 1, α, α2 respectiv cu 000, 101, 011, 110 (al treilea bit
este bitul de paritate). Astfel, pentru α10 ∈ A avem 011101000 ∈ Â0 .
Exemplul 13.12 Reluând construcţia din exemplul anterior, să presupunem că s-
a primit 011100000. Deci, au apărut erori ı̂n al doilea grup de 3 biţi (acesta are
pondere impară), aşa că α1 este un numărul locaţiei de ştergere. Ştiind acest număr,
putem ı̂nlocui al doilea element cu 0 (uşurează calculul sindromului), şi vom ı̂ncerca
decodificarea lui v = α00 ı̂n cel mai apropiat cuvânt - cod din A, ştiind că poziţia
erorii este X1 = α.
154 PRELEGEREA 13. CODURI REED - SOLOMON
13.6 Exerciţii
13.1 Construiţi matricea generatoare şi listaţi toate cuvintele - cod ale codului RS
din Exemplul 13.2. Scrieţi şi forma binară a acestor cuvinte.
13.2 Fie codul definit de g(X) = (1+X)(α+X)(α2 +X)(α3 +X), bazat pe extensia
Galois GF (23 ) generată de α, rădăcină a polinomului 1 + X + X 3 .
(b) m = 3, d = 3, m0 = 2;
(c) m = 3, d = 5, m0 = 0;
(d) m = 4, d = 5, m0 = 0;
(e) m = 5, d = 7, m0 = 0.
13.4 Pentru fiecare cod determinat la exerciţiul anterior determinaţi n, k şi numă-
rul de cuvinte - cod.
13.5 Arătaţi că un (2m − 1, k) - cod RS are 2mk cuvinte - cod.
13.6 Fie codul RS de polinom generator g(X) = (1 + X)(α + X)(α2 + X)(α3 +
X)(α4 + X)(α5 + X) ∈ GF (24 )[X] unde α este rădăcina polinomului 1 + X + X 4 .
Decodificaţi mesajele:
0α3 αα5 α3 α2 α6 α10 α000000
1α4 α2 α0010αα5 α3 α2 0α10 α
α0α7 0α12 α3 α3 10000000
13.7 Fie codul RS generat de g(X) = (α + X)(α2 + X)(α3 + X)(α4 + X) unde
α ∈ GF (24 ) este rădăcina polinomului 1 + X + X 4 . Decodificaţi mesajele:
001α8 00α5 00000000
0α10 0α6 α13 0α8 α11 α3 α5 00000
α4 0100α2 α5 α12 al14 000000
13.8 Plecând de la codul RS din exerciţiul precedent, se formează codul scurt A(4)
de lungime n = 11 (şi k = 7). Deecodificaţi mesajele:
001α8 00α5 0000
0α10 0α6 α13 0α8 α11 α3 α5 0
α4 0100α2 α5 α12 α14 00
13.9 Arătaţi că transformata Fourier finită A este inversabilă.
13.10 Fiind dat GF (23 ) construit cu polinomul 1 + X + X 3 , găsiţi matricea gene-
ratoare pentru un cod DMS de lungime 7 pentru spaţiul funcţiilor definit pe
S = GF (23 ) \ {0}, cu baza:
(a) {X, X 2 , X 3 } (b) {1, X, X 2 , X 3 , X 4 } (c) {X, X 2 , X 3 }.
Arătaţi că toate aceste coduri sunt ciclice. Determinaţi polinomul generator pen-
tru fiecare cod.
13.11 Fiind dat GF (23 ) construit cu 1 + X + X 3 , determinaţi pentru fiecare G(X)
reprezentarea vg :
G(X) = X + αX 3 , G(X) = 1 + X 2 + X 4 .
13.12 În aceleaşi condiţii din exerciţiul precedent, determinaţi G(X) ştiind valorile
lui vg :
vg = α3 αα4 0α6 α5 α2 vg = α4 α2 αα3 0α6 1.
13.13 Folosind codul definit ı̂n Exemplul 13.13, decodificaţ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.
Bibliografie
[3] G. Cullmann - Coduri detectoare şi corectoare de erori, Editura Tehnică, 1972;
[5] D.G. Hoffman, 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;
[8] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
157
Prelegerea 14
157
158 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
αj (0 < j ≤ 2p − 2).
La fiecare tact circuitul ı̂nmulţeşte conţinutul elementelor de ı̂nmagazinare cu α;
deci, după n − j = 2p − 1 − j momente, ı̂n elementele de ı̂nmagazinare se obţine
p −1−j+j p −1
α2 = α2 = αn = α0 = 1 = (1, 0, . . . , 0).
Circuitul care realizează (ı̂n funcţie de necesităţi) codificarea, calculul sindromului şi
corectarea erorilor simple este:
¾ r Z
}
Z¾
6
? ?
Intrare 2 - +j
- - +j
- - - - +j
?6 -©©
*-
Intrare 1 r -
unde α ∈ GF (2p ) este primitiv. H are p + 1 linii şi n = 2p − 1 coloane (pe prima
coloană, primele p poziţii formează vectorul 1 = α0 , iar pe a p + 1-a poziţie se află
scalarul 1 ∈ Z2 ). Codul obţinut este codul Hamming extins (Definiţia 3.1), capabil
să corecteze o eroare şi să detecteze două erori.
Un asemenea cod se poate defini cerând ca orice cuvânt - cod {f (X)} să aibă
ca rădăcini α şi 1. Generatorul unui astfel de cod ciclic este g(X) = (1 + X)m(X),
unde m(X) este polinomul minimal al lui α.
Codificarea ı̂n acest caz se face - ca mai sus - folosind circuitul cu n − k + 1 =
p + 1 elemente de ı̂nmagazinare. Pentru calculul sindromului cuvântului recepţionat
{r(X)} se folosesc ı̂nsă practic două circuite: unul de ı̂mpărţire la m(X) (pentru cal-
culul lui r(α)) şi altul de ı̂mpărţire la 1+X (pentru r(1)). Discuţia este următoarea:
• Dacă r(α) = r(1) = 0, atunci nu a intervenit nici o eroare (sau avem o eroare
nedetectabilă);
Exemplul 14.3 Să 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 codifică mesajele de informaţie (de lungime k = 10) este:
¾ r r Q
kQ¾
?
²¯ ?
²¯ 6
²¯
?
- - - + - - -+ - -+
±° ±° ±°
? 6 *-
©
-©
r -
Circuitul liniar construit pentru m(X) face şi corectarea erorilor simple.
160 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
Din
p −1
³ ´ qp −1qp − 1
β n = 1 = (α)q = αq−1 q−1
rezultă n =
.
q−1
Se observă imediat că H are un număr maxim de coloane distincte şi nenule.
Demonstraţie: ”⇐”: Să presupunem că există două coloane liniar dependente ı̂n
matricea H. Deci β i = aβ j cu a ∈ Zq , adică β i−j = a.
Elementele nenule din Zq sunt rădăcinile ecuaţiei X q−1 − 1 = 0 (Teorema 11.3).
Mai mult, ele sunt chiar primele q − 1 puteri ale lui αn . Într-adevăr, pentru orice
s = 0, 1, . . . , q − 2 avem ³ m ´s
(αns )q−1 = αq −1 = 1s = 1.
Deci pentru a ∈ Zq avem a = αns . Se poate scrie atunci β i−j = αns , adică
α(i−j)(q−1) = αns ⇒ (i − j)(q − 1) = ns.
Dar s < q − 1 iar (n, q − 1) = 1, deci i = j, de unde rezultă a = 1, β i = β j .
Orice două coloane din H sunt liniar independente, adică (Teorema 2.4) d ≥ 3.
”⇒”: Dacă q − 1 şi n nu sunt prime ı̂ntre ele, atunci ecuaţia anterioară admite
şi soluţia i 6= j; deci există două coloane distincte liniar dependente β i şi β j ı̂n
matricea H, ceea ce contrazice faptul că d ≥ 3. 2
Pentru operaţia de codificare se foloseşte circuitul de ı̂mpărţire cu polimul mini-
mal m(X) al lui β (care aici este chiar polinomul generator al codului Hamming ciclic
A). Acelaşi circuit va calcula sindromul r(β) al polinomului recepţionat {r(X)}.
14.2. CODURI HAMMING CICLICE NEBINARE 161
În cazul ı̂n care a intervenit o eroare, r(β) este de forma bβ j (eroarea b a apărut
pe poziţia β j ). Funcţionarea secvenţială a circuitului liniar (fără intrări) revine la
ı̂nmulţirea succesivă cu β. Deci, după n − j tacţi, ı̂n elementele de ı̂nmagazinare se
obţine vectorul (b 0 . . . 0). Atunci, din componenta n − j a cuvântului recepţionat
se va scădea eroarea b. De observat că - deoarece coloanele lui H sunt nenule
şi distincte - primul tact ı̂n care se obţine un vector cu toate componentele nule
ı̂nafară de prima, este n − j.
(s-a ţinut cont că −1 = 2, −2 = 1). În primii 10 tacţi de funcţionare, biţii de
informaţie sunt trimişi pe canal şi - simultan - intră ı̂n circuitul liniar, a cărui
funcţionare este (pe prima coloană se află informaţia, iar pe celelalte trei - conţ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
În elementele de ı̂nmagazinare au rămas caracterele de control 021. Ele sunt trimise
prin canal la tacţii 11 − 13 de la dreapta spre stânga, cu semn schimbat: ı̂n ordine
−1 = 2, −2 = 1, −0 = 0. Deci cuvântul - cod transmis a fost a = 0120120120210.
Se verifică imediat că aH T = 0.
La recepţie, primele 10 caractere sunt cele de informaţie. Pentru a verifica dacă
au apărut sau nu erori, se foloseşte acelaşi circuit, dar cu altă intrare:
¾ r r
? ? 6
2j 2j
? ? ?
0120210210210 - +j
- - +j - - +j - -
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 ) obţinut este 000, deci nu a apărut nici o eroare. Dacă s-ar fi
recepţionat ı̂nsă cuvântul a0 = 0120120100210, după funcţionarea circuitului timp
de 13 tacţi s-ar fi ajuns ı̂n elementele de ı̂nmagazinare la 220. Cum acesta este
nenul, circuitul se lasă să funcţioneze ı̂n continuare, fără intrare, până se ajunge
la un sindrom de forma b00 cu b 6= 0. Mai exact, funcţionarea circuitului va fi (pe
prima coloană se numără tacţ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, după 9 tacţi s-a ajuns la 100. Corecţia se face astfel: din componenta a 9 - a
a cuvântului recepţionat se scade b = 1, obţinându-se 0 − 1 = 2 (mod 3).
1 g(X) − g(a)
=− g(a)−1
X −a X −a
Propoziţia 14.2 În algebra polinoamelor din Zq [X] modulo g(X), polinomul
1
este inversul lui X − a.
X −a
1
Demonstraţie: Faptul că este polinom se verifică imediat. Pe de-altă parte,
X −a
1
(X − a) = [g(a) − g(X)]g(a)−1 = 1 − g(a)−1 g(X) ≡ 1 (mod g(X)) 2
X −a
Definiţia 14.2 Un cod Goppa de lungime n peste Zq este determinat prin:
1. Un polinom g(X) peste o extensie Galois F a lui Zq , grad(g(X)) ≥ 2;
2. a1 , a2 , . . . , an ∈ F cu g(ai ) 6= 0, 1 ≤ i ≤ n.
n
X vi
Codul conţine toate cuvintele v = v1 v2 . . . vn ∈ Zqn pentru care = 0.
i=1 X − ai
unde t = grad(g(X)).
1
Demonstraţie: Să explicităm polinomul . Dacă g(X) = g0 + g1 X + . . . +
X −a
t
gt X (gt 6= 0), atunci pentru orice a ∈ Zq cu g(a) 6= 0, are loc descompunerea
g(X) − g(a)
= gt X t−1 + (agt + gt−1 )X t−2 + (a2 gt + agt−1 + gt−2 )X t−3 + . . . +
X −a
(at−1 gt + at−2 gt−1 + . . . + g1 ).
Xt
1 −1
Deci coeficientul lui X k−1
(1 ≤ k ≤ t) ı̂n polinomul este −g(a) at−j gj .
X −a j=k
Xn
vi
Ecuaţia caracteristică a codurilor Goppa = 0 implică faptul că toţi
i=1 X − ai
coeficienţii lui X k−1 , k = 1, . . . , t sunt nuli. Deci
n
X t
X
vi g(ai )−1 at−j gj = 0, 1 ≤ k ≤ t.
i=1 j=k
164 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
n
X
Cazul k = t conduce la gt vi g(ai )−1 = 0 şi - deoarece gt 6= 0 - se obţine
i=1
n
X
vi g(ai )−1 = 0.
i=1
n
X n
X
Din cazul k = t − 1 se obţine gt vi g(ai )−1 ai + gt−1 vi g(ai )−1 = 0. Cum a doua
i=1 i=1
n
X
sumă este zero, iar gt 6= 0, va rezulta vi g(ai )−1 ai = 0, ş.a.m.d.
i=1
Am obţinut echivalenţa
n
X n
X
vi
=0 ⇐⇒ vi g(ai )−1 asi = 0, 0 ≤ s ≤ t − 1
i=1 X − ai i=1
2
Corolarul 14.1 Codul Goppa determinat de un polinom g(X) de gradul t are ma-
tricea de control
1 1 1 1
g(a ) g(a ) g(a )
. . . g(a )
a11 a2
2
a3
3
an
n
g(a1 ) g(a2 ) g(a3 ) . . . g(an )
H= .. .
.
at−1 at−1 at−1 at−1
g(a1 )
2
g(a2 )
3
g(a3 )
... n
g(an )
El are distanţa minimă 5; s-a obţinut deci un (8, 2) - cod binar corector de două
erori. De remarcat că acesta nu este un cod ciclic.
Observaţie: Să considerăm un cod BCH definit prin rădăcinile
αm0 , αm0 +1 , . . . , αm0 +d−2
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 m0 +d−2 şi elementele α0 , α−1 , . . . , α−(n−1) . Vom avea pentru
orice i = 0, 1, . . . , d − 2 şi k = 0, 1, . . . , n − 1:
(α−k )i
= (αk )m0 +d−2−i = (αm0 +d−2−i )k
(α−k )m0 +d−2
Pe baza aceasta, codul Goppa rezultat are matricea de control
1 αm0 +d−2 (αm0 +d−2 )2 . . . (αm0 +d−2 )n−1
m +d−3
1 α 0 (αm0 +d−3 )2 . . . (αm0 +d−3 )n−1
H=
..
.
1 αm0 (αm0 )2 ... (αm0 )n−1
care coincide cu matricea de control a codului BCH considerat, ı̂n care s-a efectuat
o inversare a liniilor.
Se poate arăta (Van Lint) că singurele coduri Goppa ciclice sunt codurile BCH.
Propoziţia 14.3 Codul Goppa binar de lungime n, determinat de un polinom de
grad t peste GF (2m ) are k ≥ n − mt simboluri de informaţie şi distanţa minimă
≥ t + 1.
Demonstraţie: Matricea de control a codului Goppa are t linii ı̂n GF (2m ), deci mt
linii scrise ı̂n binar. Rezultă că numărul n − k de simboluri de control este cel mult
mt : n − k ≤ mt.
Pe de-altă parte, se arată uşor că orice combinaţie liniară de t coloane din H
este liniar independentă. 2
Definiţia 14.3 Fie g(X) un polinom ireductibil peste GF (q m ). Codul Goppa deter-
minat de g(X) şi de toate elementele lui GF (q m ) se numeşte ireductibil.
Codul prezentat ı̂n Exemplul 14.5 este un cod ireductibil. Despre codurile Goppa
ireductibile se poate prezenta următorul rezultat:
Teorema 14.3 Un cod Goppa binar ireductibil, determinat de un polinom de gradul
t poate corecta cel puţin t erori independente.
Pentru demonstraţie va trebui să facem o construcţie suplimentară.
Definiţia 14.4 Derivata formală a polinomului a(X) = a0 + a1 X + . . . + an X n este
definită prin a0 (X) = a1 + 2a2 X + 3a3 X 2 + . . . + nan X n−1 .
Demonstraţie: Exerciţiu.
Lema 14.2 Într-un corp de caracteristică 2 derivata formală a unui polinom este
un pătrat perfect.
166 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
Din definiţie rezultă că σ(X) şi ω(X) sunt prime ı̂ntre ele. În plus, grad(σ(X)) =
e, grad(ω(X)) < e. Între ele există relaţia
n−1
X Y
ei
{s(X)}{σ(X)} = (X − ai ) ≡ {ω(X)} (mod g(X)). (1)
i=0 X − ai i∈M
σ(X) şi ω(X) sunt polinoamele normate de grad minim care verifică relaţiile de
sus. Într-adevăr, să presupunem că există σ1 (X) un polinom nenul normat de grad
< e şi ω1 (X) polinomul corespunzător, astfel ca
14.4 Exerciţii
14.1 Să se construiască matricea generatoare a (13, 10) - codului Hamming ternar
din Exemplul 14.4.
168 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
14.2 În codul din Exemplul 14.4 să se codifice mesajele de informaţie:
(a) 1122002211 (b) 0000111122 (c) 1020012210
(d) 2200211101 (e) 2222222222 (f ) 0000000000
14.8 Găsiţi o matrice de control a (16, 8) - codului Goppa binar ireductibil dat de
g(X) = α3 + X + X 2 , unde α ∈ GF (24 ) este primitiv.
14.9 Polinomul generator este g(X) = 1 + X 2 iar parametrii sunt cele 15 elemente
nenule ale extensiei GF (24 ) generată de rădăcina polinomului 1 + X + X 4 . Analizaţi
codul Goppa binar astfel construit.
14.11 Folosind codul construit anterior, să se decodifice (folosind algoritmi de co-
duri liniare) cuvintele:
14.12 Pentru acelaşi cod Goppa binar ireductibil, să se decodifice cuvintele
0101100101111001 1100101100110100 0001100010010110
folosind algoritmul rapid specific.
Coduri Preparata
În 1968 Preparata a introdus o clasă de coduri neliniare corectoare de două erori, care
s-au dovedit foarte interesante prin proprietăţile şi prin legăturile pe care le au cu
diverse alte coduri deja studiate. Ele sunt o combinaţie ı̂ntre codurile Reed - Muller
şi codurile BCH corectoare de două erori. Definiţia pe care o vom folosi aparţine lui
Baker şi permite o abordare mai simplă a algoritmilor de codificare/decodificare.
χ(∅) = 00000000.
Se definesc ı̂n mod natural operaţiile:
U + β = {u + β|u ∈ U }, βU = {βu|u ∈ U },
U ∆V = {u|u ∈ U ∪ V, u 6∈ U ∩ V }, U, V ⊂ GF (2r ), β ∈ GF (2r ).
Se verifică uşor relaţiile
χ(U ) + χ(V ) = χ(U ∆V ), w(χ(U )) = card(U ). (1)
Exemplul 15.2 Fie GF (23 ) construit folosind rădăcina (primitivă) α a polinomu-
lui 1 + X + X 3 , şi mulţ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}) = χ(U ∆V ).
169
170 PRELEGEREA 15. CODURI PREPARATA
Definiţia 15.1 Fie r > 2 un număr impar. Codul extins Preparata P (r) este mul-
ţimea cuvintelor de forma χ(U )χ(V ) unde U, V ⊆ GF (2r ) verifică condiţiile
à !3
X X X
3
3. u + u = v3.
u∈U u∈U v∈V
Pentru uşurinţă vom nota cuvintele - cod cu [χ(U ), χ(V )] (vezi şi codul Golay).
Exemplul 15.3 În ipotezele din Exemplul 15.2, să considerăm U = {α, α2 , α5 , 0},
V = {α0 , α, α2 , α3 , α6 , 0}. Prima condiţie din definiţie este verificată. Pentru a
douaXcondiţie avem:
u = α + α2 + α5 + 0 = 010 + 001 + 111 + 000 = 100 = α0 ,
u∈U
X
v = α0 + α + α2 + α3 + α6 + 0 = 100 + 010 + 001 + 110 + 101 + 000 = 100 = α0 .
v∈V
A
Xtreia condiţie este şi ea verificată deoarece
u3 = α3 + α6 + α + 0 = 110 + 101 + 010 + 000 = 001 = α2 ,
u∈U
X
v 3 = α0 +α3 +α6 +α2 +α4 +0 = 100+110+101+001+011+000 = 101 = α6
v∈V
şi α2 + (α0 )3 = α6 .
Deci [χ(U ), χ(V )] = 01100101 11110011 este cuvânt - cod ı̂n P (3).
Observaţii:
Demonstraţie: Vom arăta că noul cuvânt construit verifică condiţiile din Definiţia
15.1.
15.1. DEFINIREA CODURILOR PREPARATA EXTINSE 171
1. Deoarece card(U ), card(V ), card(A), card(B) sunt pare, se arată uşor că:
card(V ∆B) = card(V ) + card(B) − 2 · card(V ∩ B),
card(U ∆A + β) = card(U ∆A) = card(U ) + card(A) − 2 · card(U ∩ A).
X X X
2. Să observăm ı̂ntâi că dacă I, J ⊆ GF (2r ), avem x= x+ x deoarece
x∈I∆J x∈I x∈J
orice element αi ∈ I ∩ J apare de două ori ı̂n membrul drept şi niciodată ı̂n
membrul stâng, iar αi + αi = 0. Deci:
X X X X X
x = (y + β) = y + β · card(U ∆A) = y+ +0
x∈U ∆A+β y∈U ∆A y∈U ∆A y∈U y∈A
X X X
(deoarece card(U ∆A) este par) = y+ y= y.
y∈V y∈B y∈V ∆B
3 3
X X X X
3. x3 + x = (y + β)3 + y =
x∈U ∆A+β x∈U ∆A+β y∈U ∆A y∈V ∆B
3
X X X X X X X
= (y + β)3 + (y + β)3 + y+ y = y3 + β y2 + β 2 y+
y∈U
Xy∈A X y∈V
X y∈B y∈U y∈U y∈U
β 3 card(U ) + 3
y +β y2 + β 2
y + β 3 card(A) +
y∈A y∈A y∈A
3 2 2 3
X X X X X X
y + y y + y y + y .
y∈V y∈V y∈B y∈V y∈B y∈B
2
X X X X
Dar β = y = y, y = y 2 , iar card(U ), card(V ) sunt pare.
y∈U y∈V y∈V y∈V
Deci expresia de sus se reduce la
X X X
y3 + y3 = y3.
y∈V y∈B y∈V ∆B
Demonstraţie: Fie [χ(U ), χ(V )], [χ(A), χ(B)] ∈ P (r) arbitrare aflate la distanţa i
unul de altul. Conform Lemei 15.1, [χ(U ∆U +β), χ(V ∆V )], [χ(U ∆A+β), χ(V ∆B)]
sunt de asemenea cuvinte - cod şi se verifică uşor că ele se află la distanţa i. Deoarece
U ∆U = ∅ rezultă [χ(U ∆U + β), χ(V ∆V )] = 0, deci [χ(U ∆A) + β), χ(V ∆B)] are
pondere i. 2
172 PRELEGEREA 15. CODURI PREPARATA
Lema 15.3 Fie [χ(U ), χ(V )] ∈ P (r). Atunci P (r) mai conţine următoarele cuvinte:
(i). [χ(V ), χ(U )];
(ii). [χ(U + β), χ(V + β)] pentru orice β ∈ GF (2r );
(iii). [χ(βU ), χ(βV )] pentru orice β ∈ GF (2r ), β 6= 0.
Putem folosi Lema 15.3 pentru a simplifica problema determinării distanţei mini-
me a lui P (r). Pentru aceasta ı̂nsă, este nevoie de un rezultat suplimentar (care
justifică condiţia ca r să fie impar).
Lema 15.4 Fie α ∈ GF (2r ) primitiv. Atunci α3 este primitiv dacă r este impar şi
nu este primitiv dacă r este par.
Demonstraţie: Se ştie că αi este primitiv dacă şi numai dacă (i, 2r − 1) = 1. Avem
2r −1 = (3−1)r −1 = M3+(−1)r −1; deci pentru r impar 2r −1 = M3−2 = M3+1,
ceea ce ı̂nseamnă că α3 este primitiv. Similar, pentru r par, 2r − 1 = M3, deci α3
nu este primitiv. 2
Corolarul 15.1 Dacă r > 2 este un număr impar, atunci pentru orice x ∈ GF (2r )\
{0} există y unic (numit rădăcina cubică a lui x) astfel ca y 3 = x.
În a doua variantă, se poate considera U = {0, x}, V = {y, z}, toate cele patru
elemente fiind distincte. Din definiţie rezultă
03 + x3 + (0 + x)3 = y3 + z3 sau y3 + z3 = 0.
Folosind acum Corolarul 15.1, din y3 = z3 rezultă y = z, contradicţie.
Să construim acum un cuvânt - cod de pondere t = 6. Fie x, y, z ∈ GF (2r )
elemente distincte nenule. Există atunci (Corolarul 15.1) un element v ∈ GF (2r )
unic cu v3 = x3 + y3 + z3 . Dacă v = x, atunci v3 = x3 deci y3 = z3 , ceea ce duce
la contradicţia y = z. Deci v este distinct de x, y, z.
Definim u = v + x + y + z. Se observă că u 6= 0 (altfel
v3 + (x + y + z)3 = (x + y)(x + z)(y + z) 6= 0
deci - cu Corolarul 15.1 - v 6= x + y + z). Fie acum U = {0, u}, V = {v, x, y, z}.
Din construcţie, cum toate elementele sunt distincte, [χ(U ), χ(V )] este un cuvânt
de pondere 6 şi se verifică uşor că este cuvânt - cod. 2
Demonstraţie: După cum se ştie, [χ(U ), χ(V )]+[χ(A), χ(B)] = [χ(U ∆A), χ(V ∆B)].
Din demonstraţia Teoremei 15.1 am văzut cum se pot construi cuvintele - cod
[χ(U ), χ(V )], [χ(A), χ(B)] ∈ P (r) cu U = {0, u1 }, V = {x1 , y1 , z1 , v1 },
A = {0, u2 }, B = {x2 , y2 , z2 , v2 }. Conform Lemei 15.1,
c = [χ(U ∆A + u1 ), χ(V ∆B)] ∈ P (r). Facem următoarele observaţii:
card(U ∆A + u1 ) ≤ 2;
d(c, [χ(U ∆A), χ(V ∆B)]) ≤ 2 · card(U ∆A + u1 ) ≤ 4;
P (r) are distanţa minimă 6.
Din ele rezultă că [χ(U ), χ(V )] + [χ(A), χ(B)] 6∈ P (r).
Deci P (r) nu este cod liniar. 2
Ca o consecinţă a acestei teoreme, nu se poate da nici o dimensiune pentru P (r),
deci se pare că nu se poate determina numărul de cuvinte - cod. Vom reuşi totuşi
acest lucru ca o consecinţă a schemei de codificare.
r+1 −2r−2
Corolarul 15.2 P (r) are 22 cuvinte - cod.
r+1 −2r−2
Demonstraţie: În Teorema 15.3 există 22 alegeri posibile pentru a, toate
conducând la cuvinte - cod distincte. 2
Putem da acum un algoritm de codificare a meajelor de informaţie ı̂n codurile
Preparata.
Fie aL , aR cuvinte de lungimi 2r − 1 respectiv 2r − 2r − 1.
Fie vR definit de (2).
Se construiesc pL , pR conform Teoremei 15.3.
Atunci mesajul de informaţie a = [aL , aR ] se codifică
ı̂n [aL , pL , aR , vR , pR ].
2. Dacă există o eroare pe poziţia i ı̂n bR şi cel mult o eroare pe poziţiile de
control atunci
bL (α) = bR (α) + αi , bL (α3 ) + (bL (α))3 = bR (α3 ) + α3i , deci
(bL (α) + bR (α))3 = bL (α3 ) + (bL (α))3 + bR (α3 ).
Dacă ultima relaţie este verificată, atunci se scrie αi = bL (α) + bR (α) şi se
schimbă bitul i din bR (plus cel mult un bit de control).
3. Dacă există o eroare pe poziţia i din bL şi cel mult o eroare pe poziţiile de
control, similar cu cazul anterior (lucru posibil pe baza Lemei 15.3) se verifică
relaţia
(bR (α) + bL (α))3 = bR (α3 ) + (bR (α))3 + bL (α3 );
176 PRELEGEREA 15. CODURI PREPARATA
ı̂n caz afirmativ, se calculează αi = bR (α) + bL (α) şi se schimbă bitul i din bL
(plus cel mult un bit de control).
5. Dacă apar două erori ı̂n bL , invocând din nou Lema 15.3 putem aplica analiza
de la cazul anterior.
6. Dacă apar două erori: una pe poziţia i ı̂n bL şi una pe poziţia j ı̂n bR , atunci
3
bL (α) + αi = bR (α) + αj , bL (α3 ) + α3i + (bL (α) + αi ) = bR (α3 ) + α3j .
Acest sistem de necunoscute αi şi αj se rezolvă astfel: din prima ecuaţie se
scoate αj = bL (α) + αi + bR (α) şi se ı̂nlocuieşte ı̂n a doua ecuaţie, ceea ce dă
bL (α3 ) + α3i + (bL (α) + αi )3 = bR (α3 ) + (bL (α) + αi )3 + (bL (α) + αi )2 bR (α) +
(bL (α) + αi )bR (α)2 + bR (α)3 .
După simplificări se ajunge la
α3i + α2i bR (α) + αi (bR (α))2 + (bR (α))3 = bL (α3 ) + bR (α3 ) + bL (α)2 bR (α) +
bL (α)bR (α)2 , sau
(αi + bR (α))3 = (bL (α3 ) + bR (α3 )) + (bL (α) + bR (α))3 + bL (α)3 + bR (α)3 .
Notând membrul drept al acestei expresii cu ∆, obţinem soluţia
αi = bR (α) + ∆1/3 , αj = bL (α) + ∆1/3 .
Deci locaţiile erorilor se pot determina ı̂n toate situaţiile posibile. Biţii de paritate
pentru fiecare jumătate de cuvânt dau posibilitatea de a decide ce caz se aplică lui
b. Putem da acum algoritmul de decodificare pentru codurile Preparata P (r).
15.3. DECODIFICAREA CODURILOR PREPARATA EXTINSE 177
Exemplul 15.8 Să decodificăm următoarele cuvinte primite, despre care se pre-
supune că au fost codificate folosind P (3), unde GF (23 ) s-a generat cu rădăcina α
a polinomului 1 + X + X 3 :
I: b = 10010011 11100111
(0) [L1 , L3 ] = bL H = 111 110, [R1 , R3 ] = bR H = 101 110
(1) L1 + R1 = 111 + 101 = α 6= 0
(2) (L1 + R1 )3 + L3 + L31 + R3 = α3 + α3 + α15 + α3 = α0 6= 0
(3) (L1 + R1 )3 + R3 + R13 + L1 = α3 + α3 + α18 + α3 = α6 6= 0
α3 + α15 + α3 + α3
(4) X 2 + αX + = X 2 + αX + α6 = (X + α2 )(X + α4 )
α
Deci b se decodifică ı̂n 10010011 11001111.
II: b = 10100100 10001001
(0) [L1 , L3 ] = bL H = [010, 011], [R1 , R3 ] = bR H = [111, 011]
(1) L1 + R1 = 010 + 111 = α6 6= 0
(2) (L1 + R1 )3 + L3 + L31 + R3 = α18 + α4 + α3 + α4 = α6 6= 0
(3) (L1 + R1 )3 + R3 + R13 + L3 = α18 + α4 + α15 + α4 = α2 6= 0
Ambele jumătăţi ale lui b au pondere impară, deci
(6) αi = α5 + (α3 + α15 + α18 + α4 + α4 )1/3 = α5 + (α5 )1/3 = α5 + (α12 )1/3 =
α5 + α4 = α0 .
S-a obţinut i = 0. Se poate determina apoi imediat
αj = α + α4 = α2 , deci j = 2.
Cuvântul b se decodifică ı̂n 00100100 10101001.
178 PRELEGEREA 15. CODURI PREPARATA
Pentru codul Preparata obţinut prin relaxarea lui P (r), se poate aplica aceeaşi
strategie de decodificare folosită la codul Golay; cum acesta are d = 5, poate corecta
de asemenea cel mult 2 erori independente.
Codul Kerdok K(r) (definit ı̂n 1972) este de fapt un subcod al codului Reed
- Muller RM(2, r + 1); el este format din perechi de translatări de cuvinte din
RM(1, r) selectate ı̂n aşa fel ca să maximizeze distanţa minimă dintre două trans-
latări.
Este interesant că dintre toate codurile cu aceeaşi distanţă minimă, codul Kerdok
are numărul maxim de cuvinte - cod.
Nu vom detalia demonstraţii referitoare la proprietăţile acestor coduri. Pentru
informaţii suplimentare se pot folosi [6] şi [2], cu menţiunea că justificările pleacă de
la o modalitate diferită de definire a codurilor K(r) şi P (r). Rezultatele sunt ı̂nsă
deosebit de interesante. Astfel:
15.5 Exerciţii
15.1 Demonstraţi relaţiile (1).
15.4 Aplicaţi Lema 15.3 cuvântului - cod definit ı̂n Exemplul 15.4, folosind
β = α0 , β = α, β = α6
15.6 Arătaţi că cele trei cuvinte obţinute ı̂n Exemplul 15.4 satisfac condiţiile defini-
ţiei codurilor Preparata.
15.8 Fie GF (23 ) construit cu 1 + X + X 3 , iar A−1 din Exemplul 15.6. Codificaţi
următoarele mesaje folosind P (3):
aL = 1010100, aR = 1;
aL = 1010100, aR = 0;
aL = 1111111, aR = 1;
aL = 1111111, aR = 0;
aL = 0000000, aR = 1;
180 PRELEGEREA 15. CODURI PREPARATA
15.9 Fie GF (25 ) construit cu 1 + X 2 + X 5 , iar A−1 din Exemplul 15.6. Codificaţi
următoarele mesaje folosind P (5):
aL = 10100 . . . 0, aR = 000001000100 . . . 0;
aL = 10100 . . . 0, aR = 00 . . . 0;
aL = 10100 . . . 0, aR = 111100 . . . 0;
aL = 0000 . . . 0, aR = 100 . . . 0;
Care este lungimea lui aL ? dar a lui aR ?
15.10 În aceleaşi condiţii din Exemplul 15.8, să se decodifice 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 Decodificaţi cuvintele primite, care au fost codificate cu P (5), unde GF (25 )
a fost construit folosind polinomul 1 + X 2 + X 5 .
11000110001000000000000001000010 00011110000000000000000110010000
10100000001000000000000000000000 00000100010000000100010101011100
15.12 Fie b un cuvânt recepţionat ı̂n care w(bL ) este impar iar w(bR ) este par.
Poate fi decodificat b la pasul 2 al algoritmului ı̂ntr-un cuvânt - cod situat la distanţă
cel mult 2 ?
Bibliografie
[3] G. Cullmann - Coduri detectoare şi corectoare de erori, Editura Tehnică, 1972;
[5] D.G. Hoffman, 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;
[8] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
181
Prelegerea 16
Coduri convoluţionale
În cazul codurilor prezentate până acum, la codificarea unui mesaj de informaţie se
obţine un cuvânt - cod de lungime n, ale cărui caractere nu depind decât de cele
k elemente de informaţie curente. Avem de-a face cu un proces de codificare fără
memorie, iar aceste coduri sunt numite şi coduri - bloc.
P. Elias a introdus ı̂n 1965 o clasă de coduri, remarcabile prin siguranţa sporită pe
care o asigură ı̂n transmiterea informaţiei: codurile convoluţionale. În cazul lor,
codificarea unui mesaj de lungime k se face ţinând cont şi de codificările mesajelor
de informaţie anterioare.
De remarcat că NASA şi Agenţia Spaţială Europeană folosesc o combinaţie ı̂ntre
aceste coduri şi codurile Reed - Solomon. Fiecare mesaj de informaţie este codificat
iniţial cu un cod RS, apoi cu un cod convoluţional.
O astfel de funcţie poate fi exprimată foarte simplu prin polinoame. Astfel, fie
a(X) = a0 + a1 X + a2 X 2 + . . . polinomul reprezentând mesajul sursă, şi u(X) =
u0 + u1 X + u2 X 2 + . . . mesajul codificat. Atunci un cod liniar este o aplicaţie C
definită C(a(X)) = u(X). O astfel de aplicaţie are următoarele proprietăţi:
181
182 PRELEGEREA 16. CODURI CONVOLUŢIONALE
• C este liniară:
C(a(X) + a0 (X)) = C(a(X)) + C(a0 (X));
C(ta(X)) = tC(a(X)).
• C este invariantă ı̂n timp: ı̂ntârzierea mesajului sursă cu k tacţi are ca efect
decalarea răspunsului cu n tacţi:
C(X k a(X)) = X n C(a(X)).
Definiţia 16.1 Fie q un număr prim. Prin (n, k) - cod convoluţional se ı̂nţelege o
aplicaţie liniară C : Zq [X] −→ Zq [X] cu proprietatea (de invarianţă de timp)
C(X k a(X)) = X n C(a(X)).
C(X i ) = X ni g0 (X), ∀i ≥ 1.
Deci, pentru orice polinom a(X) = a0 + a1 X + . . . + ap X p avem
C(a(X)) = a0 C(1)+a1 C(X)+a2 C(X 2 )+. . .+ap C(X p ) = a0 g0 (X)+a1 X n g0 (X)+
a2 X 2n g0 (X) + . . . + ap X np g0 (X) = a(X n )g0 (X).
Aceasta conduce la ideea că un (n, 1) - cod convoluţional este generat de polino-
mul g0 (X) conform regulii
a(X) 7→ a(X n )g0 (X).
Invers, orice polinom g0 (X) ∈ Zq [X] defineşte un (n, 1) - cod convoluţional.
Observaţie: Ideea de polinom generator este similară celei de la codurile ciclice,
unde codificarea mesajului de informaţie a(X) revenea la ı̂nmulţirea cu polinomul
generator. La codurile convoluţionale nu există ı̂nsă restricţie referitor la gradul lui
a(X) şi – ı̂n plus – la ı̂nmulţire se foloseşte a(X n ).
Există o modalitate simplă de construcţie a unui circuit liniar, generator al unui
astfel de cod. Vom descrie aceasta pentru cazul binar.
Polinomul g0 (X) se descompune ı̂n sume de n termeni consecutivi, fiecare sumă
descriind modul de conectare al elementelor de ı̂nmagazinare. Astfel, fie
g0 (X) = (b0 + b1 X + . . . + bn−1 X n−1 ) + (bn X n + bn+1 X n+1 + . . . + b2n−1 X 2n−1 ) +
. . . + (bmn X mn + bmn+1 X mn+1 + . . . + bmn+n−1 X mn+n−1 )
Numărul de m + 1 paranteze indică faptul că sunt necesare m elemente de
ı̂nmagazinare (prima paranteză se referă la intrare). A i - a secvenţă de termeni
descrie ieşirea celui de-al i - lea element de ı̂nmagazinare (bp = 1 semnifică o legătură
directă cu al p - lea element al ieşirii).
În plus, elementele de ı̂nmagazinare sunt legate ı̂ntre ele secvenţial.
º·
- + -
6 ¹¸ 6
6 -
?
s- -
-
º·
? 6
? - + -
¹¸
Exemplul 16.4 Fie (3, 1) - codul convoluţional (deci cu 3 biţi de ieşire) generat de
polinomul g0 (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: g0 (X) = (1 +0 + X 2 )+(X 3 +
0 + X 5 ) + (X 6 + X 7 + 0) + (X 12 + X 13 + X 14 ). Se obţine
184 º· PRELEGEREA
º· 16. CODURI
º· CONVOLUŢIONALE
6
- + - + - + -
6 ¹¸ ¹¸ ¹¸ ? -
6 6 6 ¶³
s- - s- - - + -
µ´ -
66
? -
º·
? º·
?
?- + - + -
¹¸ ¹¸
Similar codurilor ciclice, plecând de la polinomul generator, se poate construi ma-
tricea generatoare a codurilor (n, 1) - convoluţionale. Aceasta este
g0 (X)
X n g0 (X)
G=
X 2n g0 (X)
..
.
Numărul liniilor (şi deci şi al coloanelor) lui G nu este fixat, el depinzând de lungimea
mesajului sursă. Astfel, pentru un mesaj de lungime i, matricea G are i linii şi
1 + grad(g0 (X)) + (i − 1) · n coloane.
Exemplul 16.5 Fie (3, 1) - codul convoluţional binar de polinom generator g0 (X) =
1 + X + X 3 + X 4 + X 5 + X 8 . Pentru un mesaj sursă de lungime 3, matricea G va
avea dimensiunea 3 × 15:
1 1 0 1 1 1 0 0 1
G= 1 1 0 1 1 1 0 0 1
1 1 0 1 1 1 0 0 1
(spaţiile libere sunt completate cu 0). Astfel, codificarea mesajului 101 este
101 · G = 110001000110001.
Exemplul 16.6 Fie circuitele liniare a două (2, 1) - coduri convoluţionale, care au
ieşirea comună:
-
6
s- -
6
6
?
²¯ ?
²¯
?- + - + ²¯?
- ±° ±° -
+
±°²¯
- ? -
6 ±°+ -
6 6
? s- - -
?
²¯ ²¯?
?- + - + -
±° ±°
16.3. CODURI (N, K) - CONVOLUŢIONALE 185
La fiecare tact intrarea este formată din doi biţi care formează intrările ı̂n cele două
circuite liniare. O ı̂ntârziere cu doi tacţi la intrare generează o ı̂ntârziere de doi
tacţi la ieşire; deci, acesta este un (2, 2) - cod convoluţional.
Pentru intrarea 10 ieşirea este 110101 (funcţionează doar circuitul superior), iar
pentru 01 ieşirea este 010111 (numai pe baza circuitului inferior). Formal,
C(1) = 1 + X + X 3 + X 5 = g0 (X), C(X) = X + X 3 + X 4 + X 5 = g1 (X).
Folosind invarianţa ı̂n timp se pot determina şi alte ieşiri:
C(X 2i ) = X 2i g0 (X), C(X 2i+1 ) = X 2i g1 (X) ∀i ≥ 1.
k−1
X
n
k
Deci ieşirea la X a(X) prin această aplicaţie este X a(i) (X n )gi (X).
i=0
Să arătăm acum că un (n, k) - cod convoluţional definit de aplicaţia C este identic
k−1
X
0
cu cel dat de C (a(X)) = a(i) (X n )gi (X) unde gi (X) = C(X i ) sunt polinoamele
i=0
generatoare. Deoarece C şi C 0 sunt ambele liniare, este suficient să arătăm că
C(X r ) = C 0 (X r ) pentru orice r ≥X0; atunci vomX
avea
r
2
C(a0 + a1 X + a2 X + . . .) = ar C(X ) = ar C 0 (X r ) = C 0 (a0 + a1 X + . . .).
r≥0 r≥0
Deoarece ambele aplicaţii sunt (n, k) invariante ı̂n timp, ne putem restrânge la
0 ≤ r ≤ k − 1. Pentru a = 00 . . . 0100 . . . (cu 1 pe poziţia r), este evident că
a(r) = 100 . . . şi a(i) = 000 . . . pentru i 6= r. Deci C 0 (X r ) = gr (X) = C(X r ). 2
Analog codurilor (n, 1) - convoluţionale, şi ı̂n acest caz se poate defini ma-
tricea generatoare, care este o reprezentare matricială a relaţiei (1). Liniile ma-
tricii sunt g0 (X), g1 (X), . . . , gk−1 (X), X n g0 (X), X n g1 (X), . . ., considerate ca poli-
noame de grad infinit. Pentru mesajul a = a0 a1 . . . ar codificarea este aG =
186 PRELEGEREA 16. CODURI CONVOLUŢIONALE
a0 g0 (X) + . . . + ak−1 gk−1 (X) + X n [ak g0 (X) + . . . + a2k−1 gk−1 (X)] + X 2n [a2k g0 (X) +
. . .+a3k−1 gk−1 (X)]+. . . = (a0 +ak X n +a2k X 2n +. . .)g0 (X)+. . .+(ak−1 +a2k−1 X n +
k−1
X
. . .)gk−1 (X) = a(i) (X n )gi (X).
i=0
Exemplul 16.7 Matricea generatoare a (2, 2) - codului convoluţional descris ı̂n Ex-
emplul 16.6 este
1 1 0 1 0 1
0 1 0 1 1 1
1 1 0 1 0 1
0 1 0 1 1 1
G=
1 1 0 1 0 1 ...
0 1 0 1 1 1 ...
..
.
S-a prezentat anterior modul de construcţie al unui circuit liniar pentru (n, 1) -
coduri convoluţionale, plecând de la polinomul generator g(X). În mod similar se
determină circuitul liniar de codificare pentru un (n, k) - cod convoluţional:
2. Se foloseşte un buffer comun de ieşire (de n simboluri), ı̂n care ajung rezultatele
ı̂nsumate ale celor k circuite;
3. Secvenţa de intrare este segmentată ı̂n grupe de câte k simboluri, fiecare din
ele constituind intrarea ı̂n câte un circuit liniar.
Exemplul 16.8 Să construim circuitul liniar pentru (2, 2) - codul definit de poli-
noamele generatoare
g0 (X) = X + X 3 + X 4 + X 5 , g1 (X) = 1 + X + X 2 + X 4 + X 5 + X 6 + X 7 .
Scriem g0 (X) = (0 + X) + (0 + X 3 ) + (X 4 + X 5 ) deci circuitul său liniar are 2
elemente de ı̂nmagazinare. Pentru g1 (X) = (1+X)+(X 2 +0)+(X 4 +X 5 )+(X 6 +X 7 )
sunt necesare trei elemente de ı̂nmagazinare.
Reprezentarea sa grafică este:
16.4. CODURI CONVOLUŢIONALE SISTEMATICE 187
²¯ ²¯
- + - + -
6 ±° ±°
6 6
s - - - 6
6
? ²¯?
- ²¯ ²¯ - + -
- + - + -6 ±°²¯ ?
- 6 ±° ±° 6 + -
6 6 ±°
6
?
-s - - -
?
²¯ ²¯?
? - + - + -
±° ±°
se numesc generatori.
Fie λ un număr natural. Se defineşte operatorul
Dλ g∞ (i) = 0| .{z
. . 0} g∞ (i)
λn
care translatează g∞ (i) cu λn poziţii spre dreapta.
În sfârşit, fie
g∞ (1)
..
.
Q0 g∞ (k)
DQ0 Dg∞ (1)
G∞ =
D 2 Q0
=
.. =
.
..
Dg∞ (k)
.
D 2 g∞ (1)
.
..
Ik P0 Ok P1 Ok P2 . . . Ok PN −1 ...
Ik P0 Ok P1 . . . Ok PN −2 Ok PN −1 ...
=
Ik P0 . . . Ok PN −3 Ok PN −2 Ok PN −1
..
.
matricea generatoare a unui (n, k) - cod convoluţional sistematic.
Observaţie: Evident, un (n, k) - cod convoluţional sistematic este un (n, k) - cod
convoluţional. Invers, fiind dat un (n, k) - cod convoluţional, el se poate transforma
mn+n−1
X
ı̂n unul sistematic prin adunarea la fiecare polinom generator gi (X) = bi,p X i
p=0
m k−1
X X
a polinomului gi0 (X) = (k − bi,np+j )X np+j + bi X i (0 ≤ i ≤ k − 1).
p=0 j=0
Deşi are - teoretic - un număr infinit de linii şi coloane, fiind ı̂n formă canonică,
pentru această reprezentare se poate construi imediat matricea de control:
−P0T In−k ...
−P1T On−k −P0T In−k ...
−P2T On−k −P1T On−k −P0T In−k ...
..
.
H∞ = T
−PN
−1 On−k −PNT −2 On−k −PNT −3 On−k ...
−PNT −1 On−k −PNT −2 On−k ...
−PNT −1 On−k ...
..
.
a cărei transpusă este
−P0 −P1 −P2 . . . −PN −1 ...
In−k On−k On−k . . . On−k ...
T
H∞ =
−P0 −P1 . . . −PN −2 −PN −1 ...
In−k On−k . . . On−k On−k ...
..
.
16.4. CODURI CONVOLUŢIONALE SISTEMATICE 189
T
Se verifică imediat egalitatea G∞ H∞ = O∞ .
Să considerăm un mesaj de informaţie a, sub forma unei succesiuni (teoretic)
infinite. El va fi ”descompus” iniţial ı̂n blocuri de lungime k:
a = a0 (1) . . . a0 (k) a1 (1) . . . a1 (k) . . . ap (1) . . . ap (k) . . .
| {z }| {z } | {z }
a0 a1 ap
Mesajul codificat se obţine similar codurilor liniare, prin ı̂nmulţirea lui a cu matricea
generatoare: c = aG∞ ; textul rezultat va fi descompus ı̂n blocuri de lungime n:
c = aG∞ = c0 (1) . . . c0 (n) c1 (1) . . . c1 (n) . . . cp (1) . . . cp (n) . . .
| {z }| {z } | {z }
c0 c1 cp
0- 0
0- 0 -6
6 ? 1 - g0
0 - 0-
6 0 - g1
? 1 - g- 6
0
? 1 - g0 + g1
-
0 - g2
0 - g- 6
1
6 ? 1 - g0 + g2
? 1 - g-
0
0 - g1 + g2
? 1 - g0 + g1 -6
? 1 - g0 + g1 + g2
Operaţia de codificare poate fi privită atunci ca un proces ı̂n care este trasat un
drum particular ı̂n arbore, conform instrucţiunilor date de mesajul de informaţie.
Exemplul 16.11 Să considerăm (3, 1) - codul convoluţ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 codificare
- 000
- 000 -6
? - 111
- 000 -6
6 - 001
? - 111 -6
? - 110
- 000 -
6 - 010
- 001 -6
6 ? - 101
? - 111 -
- 011
? - 110 -6
? - 100
-
- 011
- 010 -6
? - 100
- 001 -6
6 ? - 101 - - 010
6
? - 101
? - 111 -
- 001
- 011 -6
? - 110
? - 110 -6
- 000
? - 100 -6
? - 111
16.6 Exerciţii
16.1 Construiţi un codificator pentru (2, 1) - codul convoluţional binar de polinom
generator g0 (X) = 1 + X + X 3 + X 4 + X 6 + X 7 + X 9 . Cât este N ? Codificaţi
mesajele 110, 0110, 1010.
16.2 Construiţi o matrice generatoare pentru codul definit anterior.
16.3 Construiţi un codificator pentru (2, 1) - codul convoluţional ternar de polinom
generator g0 (X) = 1 + 2X + 2X 3 .
Să se determine o matrice generatoare.
Să se codifice mesajele 102, 200, 0120.
16.4 Construiţi un codificator pentru un (3, 2) - cod convoluţional binar cu N = 2.
16.5 Codificatorul din Exemplul 16.8 are 5 elemente de ı̂nmagazinare. Construiţi
un codificator pentru acelaşi cod, care utilizează doar 4 elemente de ı̂nmagazinare.
16.6 Construiţi polinoamele generatoare ale codului convoluţional dat mai jos:
²¯ ²¯
-+ -+ -
6 ±° ±°
6 6
s- - - -
-6 6
²¯ ²¯?
s- - -+ - + -
±° ±°
-
? 6 ? 6 ?-
²¯ ²¯ ²¯
?- + -+ -+ -
6 ±° ±° ±°
6 -
²¯ 6
-+ -
6 ±°
6
? s- - - -
?
²¯ ?
²¯ ?
²¯
?- + -+ -+ -
±° ±° ±°
16.7 Construiţi o matrice generatoare pentru codul din exerciţiul anterior.
Codificaţi mesajul 11001.
16.8 Construiţi un codificator pentru (4, 3) - codul binar, de polinoame generatoare
g0 (X) = 1 + X + X 3 + X 5 + X 6 , g1 (X) = X + X 2 + X 3 + X 4 , g2 (X) = 1 + X 2 +
X 3 + X 5 + X 6.
16.9 Să se construiască matricea generatoare şi de control pentru (3, 2) - codul
convoluţional sistematic ternar de subgeneratori g(1, 1) = 1200, g(2, 1) = 2011.
Să se codifice mesajele 11220, 1012, 2222.
16.10 Aceeaşi problemă pentru (4, 2) - codul binar cu
g(1, 1) = 001, g(1, 2) = 110, g(2, 1) = 101, g(2, 2) = 111.
Să se codifice mesajele 1100, 011, 001100.
Să se construiască reprezentarea arborescentă.
16.11 Să se demonstreze formulele (2).
Bibliografie
[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;
[4] G. Cullmann - Coduri detectoare şi corectoare de erori, Editura Tehnică, 1972;
[6] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[8] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[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
Decodificarea codurilor
convoluţionale
193
194PRELEGEREA 17. DECODIFICAREA 0 CODURILOR
00000000 . . . CONVOLUŢIONALE
g0 (X) 11010000 . . .
2
X g0 (X) 00110100 . . .
(1 + X 2 )g0 (X) 11100100 . . .
... ...
Dacă se primeşte - de exemplu - u = 11110001, vom determina cel mai apropiat
cuvânt - cod, care este (1 + X 2 + X 4 )g0 (X), adică 11101001. Primul grup de n = 2
biţi este 11, deci primul bit de informaţie (k = 1) este 1. Fie acum
u := u − C(1) = 11110001 − 11010000 = 00100001.
Se ignoră primele două simboluri din noul u şi se determină cel mai apropiat
cuvânt - cod de 100001; acesta este 000 . . . 0; deci al doilea grup cadru este 00 - adică
al doilea simbol de informaţie este 0.
Refacem u := u − X 2 C(0) = 00100001. Se şterg primele patru simboluri din u
şi se caută cel mai apropiat cuvânt - cod de 0001. Acesta este din nou 00 . . .. Deci
u se corectează ı̂n
C(1 + 0X + 0X 2 ) = 11000000.
Definiţia 17.1 Pentru un (n, k) - cod convoluţional se defineşte distanţa liberă prin
Similar observaţiei de la codurile liniare, dlib este cea mai mică pondere a unui cuvânt
- cod C(a00 (X)) cu proprietatea a000 a001 . . . a00k−1 6= 0. (s-a notat a00 (X) = a(X) − a0 (X)
unde a(X), a0 (X) sunt două mesaje de informaţie arbitrare distincte).
Exemplul 17.2 Reluând codul construit ı̂n Exemplul 17.1, acesta are dlib = 3,
deoarece g0 (X) are ponderea 3 şi orice cuvânt C(a0 + a1 X + . . .) cu a0 =
6 0 are
ponderea minim 3.
Propoziţia 17.1 Un cod convoluţional corectează t erori dacă şi numai dacă dlib >
2t.
Demonstraţie: Să presupunem dlib > 2t. La recepţia unui cuvânt v(X) cu cel mult t
erori, există un cuvânt - cod u(X) = C(a(X)) aflat la o distanţă Hamming minimă
de acesta: dH (u(X), v(X)) = s. Dacă u0 (X) = C(a0 (X)) este cuvântul - cod trimis
prin canal (recepţionat drept v(X)), din ipoteză dH (v(X), u0 (X)) ≤ t. Deci, cu
inegalitatea triunghiului, d(u(X), u0 (X)) ≤ s + t. Cum s este cea mai mică distanţă
Hamming, avem s ≤ t, deci d(C(a(X)), C(a0 (X))) ≤ s + t ≤ 2t < dlib . Din definiţia
distanţei libere rezultă că primele k simboluri din a(X) au drept cel mai apropiat
grup de k simboluri generat de cod grupul primelor k simboluri din a0 (X), ceea ce
permite decodificarea şi corectarea erorilor.
Pentru următoarele grupuri, procedeul decurge analog.
Invers, să presupunem dlib ≤ 2t şi fie u(X) = C(a(X)), u0 (X) = C(a0 (X)) cu
dH (u(X), u0 (X)) = dlib şi u0 . . . uk−1 6= u00 . . . u0k−1 . Fie i1 , i2 , . . . idlib toţi indicii i
pentru care ui 6= u0i . Construim
( următorul cuvânt v(X):
ui dacă ui = u0i sau i = i2s+1
vi = 0
ui dacă i = i2s
Avem dH (u(X), v(X)) ≤ dH (u0 (X), v(X)) ≤ t. Presupunem că a fost trimis
u0 (X) şi recepţionat v(X). Atunci eroarea, care a modificat cel mult t simboluri -
17.2. DECODIFOCAREA CODURILOR SISTEMATICE 195
poate conduce la o decodificare incorectă, deoarece u(X) este cuvântul cod cel mai
apropiat.
Deci, ı̂n această ipoteză, codul nu va corecta t erori. 2
Din analiza de sus rezultă că un parametru important pentru un cod convolu-
ţional este distanţa liberă, care specifică numărul maxim de erori care pot fi corec-
tate. Din nefericire ([1]), nu se cunoaşte nici o metodă analitică de construcţie de
coduri convoluţionale ”bune”, ı̂n sensul unei maximizări a dlib pentru n şi k date.
Folosind calculatorul, au fost găsite ı̂nsă o serie de astfel de coduri bune. Listăm
câteva din ele pentru cazul binar şi k = 1:
n dlib g0 (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
Din aceste relaţii, se poate deduce o formulă pentru calculul elementelor sindro-
mului, ı̂n funcţie de caracterele secvenţei - eroare:
k
X k
X k
X
sp (j) = ep (k + j) − ep (i)g0 (i, j) − ep−1 (i)g1 (i, j) − . . . − ep−N +1 (i)gN −1 (i, j),
i=1 i=1 i=1
1 ≤ j ≤ n − k,
unde e = e0 (1) . . . e0 (n) e1 (1) . . . e1 (n) . . . ep (1) . . . ep (n) . . .
| {z }| {z } | {z }
e0 e1 ep
este secvenţa de eroare - tip, segmentată ı̂n blocuri de lungime n. Deci, pentru orice
j = 1, 2, . . . , n − k, putem scrie:
k
X
s0 (j) = e0 (k + j) − e0 (i)g0 (i, j),
i=1
Xk k
X
s1 (j) = e1 (k + j) − e1 (i)g0 (i, j) − e0 (i)g1 (i, j),
i=1 i=1
..
.
N
X −1 X
k
sN −1 (j) = eN −1 (k + j) − ep (i)gN −p−1 (i, j),
p=0 i=1
N
X −1 X
k
sN (j) = eN (j) − ep+1 (i)gN −p−1 (i, j),
p=0 i=1
..
.
N
X −1 X
k
sN +m (j) = eN +m (k + j) − ep+m−1 (i)gN −p−1 (i, j)
p=1 i=1
..
.
De remarcat că secvenţa e0 afectează numai primele N componente ale sin-
dromului: s0 , s1 , . . . , sN−1 , deoarece apare numai ı̂n primele N (n − k) ecuaţii din
sistemul de sus.
Pentru corectarea erorilor, se determină iniţial secvenţa e0 ; după aceasta, sindro-
mul se recalculează scăzând din el componentele lui e0 . Această operaţie se numeşte
rearanjarea sindromului. În paralel, e0 se foloseşte la corectarea primelor n caractere
recepţionate; operaţia se realizează identic cu cea de la codurile liniare.
În continuare, se va folosi un nou sindrom, anume:
s00 (j) = 0
m−1
XX k
s0m (j) = em (k+j)− em−p (i)gp (i, j), 1 ≤ m ≤ N −1, 1 ≤ j ≤ n−k
p=0 i=1
s0N +m (j) = sN +m (j), ∀m ≥ 0.
De remarcat că secvenţa e1 figurează numai ı̂n expresiile lui s01 , s02 , . . . , s0N unde
s0i = s0i (1) . . . s0i (n−k), 1 ≤ i ≤ N . Deci aceste componente apar ı̂n N (n−k) ecuaţii.
17.3. ALGORITMUL VITERBI 197
-
0 1 2 3 4 ...
6
s 10 -s 10 -s 10 -s
11
¢¢̧@ ¢ ¢̧ @ ¢ ¢̧ @ ¢¢̧
¢ @ ¢ @ ¢ @ ¢
¢ @ 01 ¢ @ 01 ¢ @ 01 ¢
¢ @ ¢ @ ¢ @ ¢
¢ @¢ @¢ @¢
¢ ¢ @ ¢ @ ¢ @
01 ¢ s ¢ @
Rs
@ ¢ @
Rs
@ ¢ @Rs
@
¢ µA@
¡
¡ ¢ ¡
µA@
¡ ¢ ¡¡
µA@ ¢ ¡µ
¡
¢ ¡ A@ ¢ ¡ A@ ¢ ¡ A@ ¢ ¡
¢ ¡ 10 A ¢@ ¡ 10 A ¢@ ¡ 10 A ¢@ ¡10
01
¢ ¡ 01
¢A ¡@
01
¢A ¡@
01
¢A ¡ @
¢ ¡ ¢ A¡ @ ¢ A¡ @ ¢ ¡A @
¢¡ ¢¡ A 00 @ ¢¡ A 00 @ ¢¡ A 00 @
10 ¢s¡ s¢¡ 11A @
R¢¡
@ s A
11 @
@
R s¡
¢ 11A @Rs
@
¡
µ
¡ µ
¡
¡ A ¡
µ
¡ A ¡¡
µ A ¡µ
¡
¡ ¡ A ¡ A ¡ A ¡
¡ ¡ ¡A ¡A ¡A
11
¡ 11
¡ 11
¡ A 11
¡ A 11
¡ A
¡ ¡ ¡ A ¡ A ¡ A
¡ ¡ ¡ A ¡ A ¡ A
s
¡ -s¡ -s¡ - AAU¡s - AAU¡s - AAUs
00 00 00 00 00 00
0 1 2 3 4 5 ...
Orice drum prin reţea, care pleacă din momentul 0 conduce - prin citirea marcajelor
arcelor - la un cuvânt - cod. De exemplu, pentru intrarea 100110, codul generat este
C(100110) = 111000011001 (reamintim, spre dreapta pleacă totdeauna două arce,
iar arcul pentru intrarea 0 este situat sub arcul pentru intrarea 1).
Invers, orice cuvânt - cod reprezintă marcajul unui drum ı̂n reţea.
17.3. ALGORITMUL VITERBI 199
Algoritmul Viterbi:
Intrare: Secvenţa v0 v1 . . . , vp = vp,0 vp,1 . . . vp,n−1 ;
Algoritm:
2. Se marchează di(S0 ) = 0;
3. for i := 1 to b do
Pentru toate stările S accesibile la momentul p+i se determină
di(S) folosind formula (1), şi se listează toate drumurile active care
duc la S.
5. p := p + 1, S0 := S1 , salt la pasul 3.
Exemplul 17.5 Să reluăm codul descris ı̂n Exemplul 17.4, ı̂mpreună cu diagrama
sa de reţea. Presupunem că s-a primit secvenţa v = 10010100101100000 . . . Deci
v0 = 10, v1 = 01, v2 = 01, v3 = 00, v4 = 10, v5 = 11, v6 = 00 . . ..
Vom lucra cu o fereastră de decodificare b = 7. Detaliem grafic numai procedura
de decodificare a primului bloc (cazul p = 0).
200PRELEGEREA 17. DECODIFICAREA CODURILOR CONVOLUŢIONALE
i=0: s 0
s
©* 1
©
i=1: s© -s 1
s 1
¡
µs
¡©
* 3
s © s
©
¡ 2
©
* ©
*
i=2: s©©-s©©-s 2
sH s 2
µ H¡
¡ µ
j
H
¡ ¡ s 1
s
¡ s
¡ s 3
©
* ©
* *
©
i=3: s©©-s©©-s©©-s 3
s s -s 3
H HH
µ H¡
¡ µ
¡ ¡ sH H
j
H js 3
s
¡ s
¡ @ Hjs
H
©©
* ©© * @ 1
i=4: s© -s© -s -s @ R
-s 3
sH sH -s -s 3
µ H¡
¡ js HH
µ µs
¡
¡ ¡H j
HH sH¡ *
© 1
s
¡ s
¡ ©
H
j¡
H s H
© js 4
©©
* ©© * ©*
©
i=5: s© -s© -s -s -s© -s 4
sH sH -s 4
µ HH
¡ js ¡s HH
µ js
¡ H ¡
©*H
© 4
s
¡ HH
js¡
© @ Hjs
H
©
* @ 3
i=6: s©© @
Rs 3
s sH s 4
H
µ HH
¡ js ¡s HH
µ ¡
µ
js ¡ s
¡ H ¡©
*H ©
* 4
s
¡ HH
j¡s © @HH
© j@s © s
©
¡ 3
©©
* @
@
R© ©©
@*
i=7: s
© s @Rs 4
Se ajunge la concluzia că toate arcele active au acelaşi ı̂nceput: arcul marcat cu
11. Deci primul bloc v0 = 10 se decodifică ı̂n 11, după care se ia ca nod iniţial
S0 = 10 şi procesul se repetă.
De remarcat că pentru o fereastră de decodificare b = 5, eroarea nu s-ar fi putut
corecta (primul arc nu este unic).
În această prezentare a algoritmului Viterbi, apare o problemă: cât de mare este
fereastra b ? Cât de departe mergem prin diagrama reţea până să fim siguri că totuşi
este posibilă decodificarea şi corectarea erorilor ?
Pentru aceasta să refacem sub o formă finită reprezentarea diagramelor - reţea.
Din definiţia dată ı̂n Prelegerea 16 se observă că dacă g0 (X), g1 (X), . . . ,
gn−1 (X) sunt polinoamele generatoare şi a(X) un mesaj de informaţie, codificarea
poate fi scrisă ca o secvenţă de n componente (infinite)
c(X) = (a(X)g0 (X), a(X)g1 (X), . . . , a(X)gn−1 (X))
ale căror caractere se transmit ı̂n paralel, ı̂n ordinea crescătoare a puterilor lui
X.
17.3. ALGORITMUL VITERBI 201
Exemplul 17.6 Fie (2, 1)- codul generat de g0 (X) = 1 + X + X 3 şi g1 (X) = 1 + X.
Mesajul a(X) = 1 + X 2 este codificat ı̂n
c(X) = ((1 + X 2 )(1 + X + X 3 ), (1 + X 2 )(1 + X)) = (1 + X + X 2 + X 5 , 1 + X +
X + X 3 ).
2
Definiţia 17.2 Se defineşte lungimea unui drum ca fiind numărul de arce care
formează acel drum.
Ponderea unui drum este suma ponderilor arcelor care formează drumul.
Reamintim, ponderea unui cuvânt este numărul de caractere nenule din cuvântul
respectiv.
Conform Definiţiei 17.1, distanţa liberă a unui cod este ponderea nenulă minimă
a unui cuvânt cod - deci a unei secvenţe care marchează un drum prin diagrama de
translatare.
Propoziţia 17.2 Distanţa liberă a unui (n, 1) - cod convoluţional este egală cu pon-
derea nenulă minimă a unui ciclu care trece prin starea iniţială 00 . . . 0 a diagramei
de translatare a codului.
Demonstraţie: Este imediată.
" #
dlib − 1
Fie S0 = 00 . . . 0 starea iniţială. Pentru orice t, 1 ≤ t ≤ , se de-
2
fineşte d(t) ca fiind cel mai mic număr ı̂ntreg pozitiv p cu proprietatea că orice
202PRELEGEREA 17. DECODIFICAREA CODURILOR CONVOLUŢIONALE
drum S0 → S1 → . . . Sp−1 , (S0 6≡ S1 ) are ponderea mai mare de 2t. Pentru de-
terminarea algoritmică a lui d(t) se poate adapta imediat un algoritm similar din
teoria grafurilor.
Deoarece codul este liniar, valoarea lui d(t) se păstrează pentru orice stare a
diagramei de translatare.
Acum, ı̂n condiţiile că pot apare maxim t erori, algoritmul Viterbi va funcţiona
corect pentru o fereastră b = d(t) (datorită Propoziţiei 17.1).
Reluarea algoritmului Viterbi la fiecare pas cu fereastra maximă d(t) este ı̂nsă
destul de costisitoare ca timp; de aceea, practic, se foloseşte o fereastră mobilă
b ≤ d(t) şi algoritmul trece la faza de decodificare atunci când toate drumurile
active selectate au acelaşi prim arc. Dacă s-a ajuns la b = t(b) şi nu s-a selectat un
prim arc comun, algoritmul eşuează.
Se observă din acest exemplu că tot necazul provine din faptul că diagrama conţine
două cicluri distincte cu ieşirea 0: 000 − 000 şi 110 − 011 − 101 − 110.
Observaţie: Orice cod convoluţional conţine un ciclu de pondere zero, anume bucla
care pleacă şi intră ı̂n starea iniţială. Reamintim, ponderea unui drum este suma
ponderilor arcelor sale.
Teorema 17.1 Un (n, 1) - cod convoluţional este catastrofic dacă şi numai dacă
cmmdc(g0 (X), . . . , gn−1 (X)) 6= 1.
17.5 Exerciţii
17.1 Determinaţi dlib pentru fiecare din codurile următoare:
(a) g0 (X) = 1 + X 2 , g1 (X) = 1 + X + X 2 ;
(b) g0 (X) = 1 + X + X 2 + X 3 , g1 (X) = 1 + X 2 + X 3 ;
(c) g0 (X) = 1 + X 3 + X 4 , g1 (X) = 1 + X + X 2 + X 4 .
17.2 Folosind (2, 2) - codul convoluţional definit ı̂n Exemplul 17.4, şi fereastra de
decodificare b = 7, decodificaţi (cât este posibil) secvenţele
v = 01000001000 . . .
v = 11000110010010001110010 . . .
b = 2, b = 3, b = 4.
s- -
6
6
?
²¯ ²¯
- ?- + -+ -
±° ±°²¯?
- + -
6 ±°
? s - - 6
6
? -
17.11 Pentru fiecare din codurile următoare, decideţi dacă sunt catastrofice sau nu.
În caz afirmativ, determinaţi ciclurile de pondere 0.
(a) g0 (X) = 1 + X, g1 (X) = 1 + X + X 2 + X 3 ;
(b) g0 (X) = 1 + X + X 4 , g1 (X) = 1 + X 2 + X 4 ;
(c) g0 (X) = 1 + X + X 2 , g1 (X) = 1 + X + X 3 + X 4 .
Bibliografie
[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;
[5] G. Cullmann - Coduri detectoare şi corectoare de erori, Editura Tehnică, 1972;
[7] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[9] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[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
193
194 PRELEGEREA 18. CODURI - TABLOU
4. Rădăcina reţelei este (00 . . . 0)0 , iar scopul este (00 . . . 0)Nc −1 ;
Există 2k1 ·k2 drumuri distincte prin reţea, fiecare corespunzând unui cuvânt - cod
unic. Procedura poate fi extinsă uşor la codurile produs cu mai multe simboluri de
control.
Exemplul 18.2 Să construim reţeaua asociată codului tablou (3, 2)(3, 2) (deci n1 =
n2 = 3, k1 = k2 = 2, d = 4). Ea va avea Ns = 2n1 −1 = 23−1 = 4 stări distincte şi
Nc = n2 + 1 = 3 + 1 = 4 coloane.
Fiecare stare va fi de forma (a1 a2 )p cu p = 0, 1, 2, 3, a1 , a2 ∈ {0, 1}.
(00)0 şi (00)3 vor fi rădăcina respectiv ţinta reţelei.
Marcajele arcelor sunt de forma δp (A, B)/λp (A, B), obţinute prin toate combina-
ţiile posibile ale lui (a1 a2 )p şi (a1 a2 )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 fiecare arc va fi marcat cu o pereche de forma
δ0 /λ0 = a1 a2 /a1 a2 c1
unde c1 = a1 + a2 .
Pe nivelul p = 1, arcele sunt marcate prin perechi din tabelul următor:
δ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 = Nc − 2 = 2 vom avea δ2 (A, 00) = ² şi
λ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
4. Arcul selectat ı̂n calculul metricii nodului se introduce ı̂ntr-un drum posi-
bil, iar toate celelalte arce de pe nivelul respectiv sunt eliminate.
Exemplul 18.4 Să reluăm codul - tablou definit ı̂n Exemplul 18.2. Presupunem că
s-a transmis cuvântul cod a = 011101110 şi s-a recepţionat mesajul digitizat
b0 = 0.2 0.4 0.4 0.3 0.1 0.9 1.0 0.9 0.6.
Presupunând că orice simbol digitizat din intervalul [0.0, 0.5) reprezintă carac-
terul binar 0, iar [0.5, 1.0] reprezintă 1, putem considera că s-a primit secvenţa
b = 000001111 deci au apărut 4 erori. Într-o decodificare obişnuită a codurilor
liniare, deoarece d = 4, erorile nu pot fi corectate. Folosind structura de reţea ı̂nsă,
acest lucru este realizabil. Să detaliem paşii decodificării cuvântului b0 .
– Metrica nodului rădăcină (00)0 este 0.
– Prima subsecvenţă de n1 = 3 caractere primite este 0.2 0.4 0.4.
– Se calculează metricile celor patru arce care pleacă din rădăcină:
dE ((00)0 , (00)1 ) = (0.2 − 0.0)2 + (0.4 − 0.0)2 + (0.4 − 0.0)2 = 0.36;
dE ((00)0 , (01)1 ) = (0.2 − 0.0)2 + (0.4 − 1.0)2 + (0.4 − 1.0)2 = 0.76;
dE ((00)0 , (10)1 ) = (0.2 − 1.0)2 + (0.4 − 0.0)2 + (0.4 − 1.0)2 = 1.16;
dE ((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
– Următorul 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 fiecare coloană ale acestor valori (scris ı̂ngroşat) reprezintă metrica
nodului respectiv. Deci nodurile (00)2 şi (01)2 au metrica 1.27, (10)2 are metrica
0.87, iar (11)2 are metrica 1.37.
– Ultima subsecvenţă 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 ţintă sunt:
(00)3
(00)2 3.44
(01)2 2.44
(10)2 1.84
(11)2 1.74
Deci metrica nodului ţintă este 1.74. Refăcând acum traiectoria ı̂n sens invers,
se obţine drumul posibil (00)0 − (01)1 − (11)2 − (00)3 , reprezentat ı̂n figura
º· º·
00 00
¹¸
º· ¹¸
º·
º· 01/011 »»:
» 01 Z 01 º·
»» ¹¸ ¹¸
00 » º· Z 10/101
Z
º· 00
3́ ¹¸
¹¸ Z ´
10 Z ¹¸ ´
10 ²/110
¹¸
º· ZZº· ´
~ ´
11 11 ´
¹¸ ¹¸
Prin concatenarea marcajelor arcelor de pe acest drum, rezultă cuvântul - cod
011101110 (care coincide cu mesajul transmis a) şi decodificarea lui - mesajul de
informaţie 0110.
(ii) GA2 = (Ik2 |Jk2 ,n2 −k2 ) unde Ik2 este matricea unitate iar J este o matrice cu
toate elementele 1;
(iii) n = (k1 + 1) · n2 , kA = k1 · k2 .
B. Fie C2 un cod - produs prin ı̂nmulţirea Kronecker GB1 × GB2 , unde:
(i) GB1 este o matrice 1 × nB1 cu toate elementele 1;
(ii) GB2 = (G3 |G4 ) este o matrice kB × nB2 unde G3 este o matrice cu coloane 0
sau 1, iar G4 este o matrice de tipul (1) cu kB linii. Coloanele lui GB2 pot fi eventual
permutate.
(iii) n = nB1 · nB2 .
C. Fie C3 un cod - produs prin ı̂nmulţirea Kronecker GC1 × GC2 , unde:
(i) GC1 = (00 . . . 01) are dimensiunea 1 × nC1 ;
(ii) GC2 = (11 . . . 1) are dimensiunea 1 × nC2 ;
(iii) n = nC1 · nC2 .
D. Codul C este C1 + C2 sau C1 + C2 + C3 unde suma se efectuează ı̂n Z2 ; el
are lungimea n, k = kA + kB respectiv k = kA + kB + 1 simboluri de informaţie şi
este generat de matricea
à ! GA1 × GA2
GA1 × GA2
sau GB1 × GB2
GB1 × GB2
GC1 × GC2
În exemplele următoare vom prezenta sub formă de coduri GAC unele din cele
mai cunoscute coduri - bloc (liniare sau ciclice).
Vom considera reprezentarea cuvintelor unui cod GAC sub formă de tablou cu
n1 linii şi n2 coloane. Fie ki numărul de simboluri noi de informaţie care pot apare
pe linia i a cuvintelor - cod şi t = max {ki }.
1≤i≤n1
5. Dacă Ap şi Bp+1 sunt legate printr-un arc şi |δp (A, B)| = s, atunci Bp+1 =
Ap + δp (A, B)0t−s .
6. Dacă construcţia codului GAC a folosit şi codul C3 , atunci fiecare nod
de pe coloana n2 este legat de ţintă prin două arce, marcajul celui de-al
doilea arc fiind complementara marcajului primului arc (pe acest nivel
δn2 (A, 00 . . . 0) = ²).
n1
Y
În această construcţie de reţea sunt 2ki drumuri distincte, fiecare din ele
p=1
corespunzând unui cuvânt - cod.
Operaţiile de codificare/decodificare (inclusiv aplicarea algoritmului Viterbi a-
daptat) sunt identice cu cele definite la codurile - tablou.
Exemplul 18.9 Reluăm codul definit ı̂n Exemplul 18.5. Pentru el se poate construi
o reţea ı̂n felul următor:
Sunt necesare Nc = n1 + 1 = 4 + 1 = 5 coloane. Pentru numărul de stări, să
studiem forma de tablou a cuvintelor cod:
a1 p1 + a4
a p + a4
x= 2 2
a3 p3 + a4
p4 p4 + a4
º· º· º·
00 PP - 00 X - 00 H
©
*
©© ¹¸
º· P
» »
P »»:¹¸
»
º·
XX»
» X »»»:¹¸
º·
HH
© » » PPq
P » » X X
X
z HH
© »»»: - - 10 X Hjº·
º· © » 10 10 X XXX H
»»
© ¹¸ ¹¸ ¹¸ X
z 00
00 XX º· º· º·
¹¸HH XXXX » »»»
:
z 01 X
X - 01 X - 01 »» » ©*¹¸
©
H ¹¸ X X » :¹¸
»
» X X » »:¹¸ ©©
»
HH º·»X »X º· »X
»» X
z
X »»» XX zº·
X ©
H
j
H
11 - -
11 ©© 11
¹¸ ¹¸ ¹¸
18.5. DECODIFICAREA CODURILOR GAC 203
În această reprezentare, pe prima linie sunt două simboluri de informaţie (a1 şi a4 ),
pe a doua şi a treia câte unul (a2 respectiv a3 , a4 nefiind simbol nou), iar pe a patra
linie, nici unul. Deci numărul de stări al reţelei este Ns = 22 = 4, fiecare stare fiind
reprezentată printr-o secvenţă de t = 2 caractere binare (00, 01, 10, 11).
Funcţia δ este definită prin
δ0 (00, B) = a1 a4 , δ1 (A, B) = a2 , δ2 (A, B) = a3 , δ3 (A, 00) = ².
Nodurile şi arcele sunt marcate cu valorile date de tabelele următoare:
δ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 pentru codul RM(1, 3),
01 ²/01
11 ²/10
δ3 (A, B)/λ3 (A, B) 00
00 ²/0
10 ²/1 pentru (7, 4) - codul Hamming
01 ²/0
11 ²/1
Exemplul 18.10 Reprezentarea prin reţea a codurilor RM(1, 4) şi (15, 5) − BCH
construite sub formă de GAC ı̂n Exemplul 18.6 se realizează astfel:
Adâncimea reţelei (numărul de coloane) este Nc = 4 + 1 = 5. Numărul maxim
de simboluri de informaţie noi se află pe prima linie a cuvintelor - cod (a1 , a4 , a5 );
deci reţeaua are Ns = 23 = 8 stări distincte.
Funcţia δ este definită
δ0 (000, B) = a1 a4 a5 , δ1 (A, B) = a2 , δ2 (A, B) = a3 , δ3 (A, 000) = ².
iar funcţia λ:
λ0 (000, B) = a1 (a1 + a4 )(a1 + a5 )(a1 + a4 + a5 )
λ1 (A, B) = a2 (a2 + a4 )(a2 + a5 )(a2 + a4 + a5 )
λ2 (A, B) = a3 (a3 + a4 )(a3 + a5 )(a3 + a4 + a5 )
λ3 (A, 000) = (a1 +a2 +a3 )(a1 +a2 +a3 +a4 )(a1 +a2 +a3 +a5 )(a1 +a2 +a3 +a4 +a5 )
pentru codul RM(1, 4). Pentru (15, 5) - codul BCH se elimină ultimul bit de control.
Nodurile şi 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 P ³
1
000 P ³
1
000
¶
7¹¸ P³
P³ ¹¸ P³P³ ¹¸ S
¶ º· ³³ PP qº· ³³ PP qº· S
¶ 100 - 100 - 100 S
¶ ¡µ¹¸
¡ º· ¹¸
º· ¹¸
º· @ S
¶ ¡ @ S
- 001 - 001
¶¡ ´ 3́ 001 P PP ³³ 1¹¸ @S
³ Q @
¶ ¡ ´ ¹¸ º· PP
³ ³³
1¹¸
º· ³P º· Q S
¶¡´´ ³³ PP q
- ³³ PP q
-
Q @S
: 101
» 101 101 XX Q
º· ¶¡´»»»» Q@ wº·
RS
´
» » ¹¸ ¹¸ ¹¸XXX s
Q
z
X
@
000 XX º· º· º·
»»»
: 000
»
¹¸ HHXXX - 010 - 010 »»» © *¹¸
©
@ X
z 010
S H PP ³³ ³
1 PP ³³ 1 ©©½½ >¡µ
S@ HH ¹¸ º· ³ PP ¹¸
³
P
qº· ³ PP ¹¸
³ º· © © ½ ¡
@ H
j
H ³ ³ PP
q
S
110 - 110 - 110© ½ ¡
S@ ¹¸ ¹¸ ¹¸
½ ¡
S @ º· º· º· ½ ¡
@ ½
S @ R 011 - 011 - 011 ¡
S ¹¸ PP ³³ 1¹¸ PP ³³ 1¹¸ ¡
S º· P
³ º· P³ º·
w
S ³³ PP P
q
- ³³ PP q
P
- 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 − − − − (i=1,2)
010 − − − − 0/0101 1/1010 − −
110 − − − − 1/1010 0/0101 − −
011 − − − − − − 0/0110 1/1001
111 − − − − − − 1/1001 0/0110
δ3 /λ3 0000 δ3 /λ3 0000
000 ²/0000 000 ²/000
100 ²/1111 100 ²/111
001 ²/0011 001 ²/001
101 ²/1100 respectiv 101 ²/110 .
010 ²/0101 010 ²/010
110 ²/1010 110 ²/101
011 ²/0110 011 ²/011
111 ²/1001 111 ²/100
De remarcat că această reţea se poate reprezenta folosind numai 4 stări ı̂n loc de 8:
-
- { - {
- -
- { --
66
-
- { -
- { -
- { --
-66 ? - ??
{ -- ? - - {
- ? - y - y - y -6 -
? - - - -6 66
? - { - { - { -
? - - - -
Cele două arce care leagă două noduri sunt marcate cu etichete complementare.
Excepţie fac arcele de pe primul nivel unde ı̂n definiţia funcţiei δ0 este complemen-
tat numai primul bit (a1 ); ceilalţi doi biţi de informaţie a4 a5 sunt identici pentru
fiecare pereche de arce şi formează marcajele nodurilor succesor de pe nivelul 1:
00, 01, 10, 11.
Bibliografie
[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;
[5] G. Cullmann - Coduri detectoare şi corectoare de erori, Editura Tehnică, 1972;
[7] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[9] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[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
Definiţia 19.1 Un cod cu lungime limitată (RLL - Run Length Limited Codes), sau
(d0 , k 0 ) - cod, este un cod - bloc cu proprietatea că orice două simboluri 1 consecutive
sunt separate prin p zerouri, unde d0 ≤ p ≤ k 0 .
217
218 PRELEGEREA 19. ALTE REPREZENTĂRI DE CODURI - BLOC
Exemplul 19.1 Fie (16, 9) - codul tablou, având cuvintele - cod de forma
a1 a2 a3 p1
a a a p
a = 4 5 6 2
a7 a8 a9 p3
p4 p5 p6 p7
(este codul C1 construit ı̂n Exemplul 18.7). Deoarece n1 = 4, cuvântul de comutaţie
al fiecărei linii conţine un număr impar de 1. Vor exista opt variante posibile pentru
ci :
0001 0010 0100 1000 1110 1101 1011 0111,
deci se pot defini N0 = 84 cuvinte de comutaţie distincte c.
Dacă se ia de exemplu c = 0100110110001110, codul RLL definit pe baza lui va
avea cuvintele - cod
a1 a2 a3 p1
a4 a5 a6 p2
a=
a7 a8 a9 p3
p4 p5 p6 p7
Tehnica descrisă mai sus se poate extinde la coduri GAC, conducând la coduri cu
proprietăţi RLL optime ([7]). Generalizarea este următoarea:
Exemplul 19.2 Fie un (8, 4) - cod binar care codifică fiecare mesaj de informaţie
(a1 , a2 , a3 , a4 ) ı̂n
a1 a1 + a4
a a + a4
a= 2 2
a3 a3 + a4
p1 p1 + a4
Deoarece n şi n1 sunt pare, alegem ci (1 ≤ i ≤ 4) cu număr impar de 1, astfle
ı̂ncât numărul total de 1 din c să fie par. Putem lua de exemplu
c1 = 10, c2 = 00, c3 = 01, c4 = 00
Deci secvenţa generală de comutaţie este c = 10000100 şi cuvintele - cod cu
restricţia RLL sunt
a1 a1 + a4
a2 a2 + a4
a=
a3 a3 + a4
p1 p1 + a4
19.1. RLL - CODURI 219
Studiind toate cele 16 cuvinte - cod, se găsesc trei cuvinte cod care ı̂ncep cu trei
caractere 1 şi trei cuvinte - cod care se termină cu trei caractere 1. Deci k 0 = 6 şi
se poate demonstra că aceasta este valoarea minimă care se poate obţine pentru k 0
ı̂n cazul (8, 4) - codurilor.
Dacă se relaxează codul prin eliminarea ultimului simbol de control, se ajunge la
un (7, 4) - cod Hamming binar, cu k 0 = 7.
Pentru decodificarea codurilor RLL se poate folosi structura de reţea definită ı̂n
cazul codurilor GAC, cu o singură modificare: la marcajul arcelor, se ı̂nlocuieşte
λp (A, B) := λ(A, B) + cp .
Exemplul 19.3 Să reluăm (8, 4) - codul GAC de mai sus, a cărui reţea este de-
scrisă ı̂n Exemplul 18.5. Folosind secvenţa de comutaţie c = 00010001, se obţine un
cod RLL cu aceeaşi structură de reţea:
º· º· º·
00 PP - 00 X - 00 H
©
*
©© ¹¸
º· P
» »
P
:¹¸
»
»» º·
XX»
» X»»»:¹¸
º·
HH
© » » PP
q
P » » XX
X
z H
© »»»: - 10 - 10 XX HH
º·
©
©
» » 10 X jº·
H
» ¹¸ ¹¸ ¹¸ XXX
z
00 XX º· º· º· : 00
»»
¹¸H XXXX X
z 01 - 01 - 01 »»»» ©© *¹¸
HH XX :
» X »
: » ©
¹¸ »
»» º·¹¸ X » ¹¸
H
HH º·
XX X» º·©©
X»
»»» XX z
X »»» XX X
z
j
H
11 - 11 - ©© 11
¹¸ ¹¸ ¹¸
5. Cuvântul - cod final se obţine prin scrierea pe fiecare linie a unei valori
fi (x, y) din u. El aparţine astfel unui cod GAC A de dimensiuni n1 × 4.
Sunt multe modalităţi de transformare a unui cod - bloc binar ı̂ntr-un cod bal-
ansat; de exemplu dublarea fiecărui cuvânt - cod a cu o secvenţă identică (aa) sau
19.2. CODURI BALANSATE 221
Teorema 19.1 Fiind dat k, n1 este de forma n1 = 2s unde s este cel mai mic
număr pozitiv care verifică inegalitatea
2k+2−4s ≤ 2 + C2s
s
. (1)
Demonstraţie: Condiţia ca n1 să fie par rezultă din cerinţa ca ı̂n u jumătate din cele
n1 funcţii g să fie f2 şi jumătate să fie f2 . Fie deci n1 = 2s.
Din condiţia 2n1 − 2 ≤ k rezultă k + 2 − 4p ≤ 0.
Deoarece x este format din k + 2 − 4s caractere binare, sunt 2k+2−4s secvenţe
x posibile. Din acestea, 2k+2−4s − 2 sunt construite folosind numai funcţia f2 , deci
trebuie să existe pentru ele cel puţin tot atâtea secvenţe α. Deoarece numărul
s
secvenţelor binare α este C2s , rezultă inegalitatea din enunţ.
Condiţia de minim asigură unicitatea codificării. 2
De remarcat că prin această metodă, operaţia de balansare nu păstrează propri-
etatea de cod liniar sau ciclic.
Exemplul 19.4 Să construim un cod GAC balansat care să codifice k = 3 simboluri
de informaţie. Folosind inegalitatea (1), se obţine s = 1, deci n1 = 2, n = 8.
Codul cadru, care defineşte simbolurile de control, este un (8, 2) cod bloc având
cuvintele - cod de forma (reamintim, reprezentarea desfăşurată se face pe coloane):
a1 p1
a p1
c= 1 = a1 a1 a2 a2 p1 p1 p2 p2
a2 p2
a2 p2
Exemplul 19.6 Următorul cod balansat a fost studiat de Blaum ([2]), odată cu
introducerea metodei de balansare prezentată mai sus. Din k = 9, singura valoare
posibilă este s = 2, deci n1 = 4, n = 16. Cuvintele - cod cadru au forma
a1 a3 a5 p1
a a3 a5 p1
c= 1
a2 a4 a6 p2
a2 a4 a6 p2
unde p1 = a1 + a3 + a5 , p2 = a2 + a4 + a6 .
Procedura de codificare este dată de tabelul următor:
Exemplul 19.7 Să reluăm (8, 3) - codul balansat din Exemplul 19.4. După ce se
construieşte reţeaua (8, 2) - codului cadru, deoarece există doar un bit de informaţie
suplimentar avem p = 1 deci reţeaua se mai copiază de 2p − 1 = 1 ori.
Sunt două maniere de abordare:
A. Dacă transmiterea se face pe linii, apare o construcţie conformă cu cea a
reţelelor definite pentru codurile GAC. Reţeaua corespunzătoare codului cadru este
prezentată ı̂n (a), iar cea pentru codul balansat, ı̂n (b):
00/00
- t ²/11- t 0/00 - t ²/11
-
Q 3́
0/00
- t ²/11- t 0/00 - t ²/11 - 6 1/11Q´0/00
6 S 10/11 ´Q
¶
7
¶ - t ²/00- ´t 1/11-Q
st
Q ²/00
-
S
1/11 ¶0/00 ? ?
t S t t t
¶S 01/01 - t ²/10- t 0/01 - t ²/10 -
¶ S 6 6
1/11 ²/00 1/11 ²/00 Q 3́
´
? -t - t¶ -Swt - 1/10Q´0/01
´Q
11/10
- t ²/01- ´ t 1/10-Q
st
Q ²/01
-
?
(a) (b)
B. Dacă transmiterea datelor se face pe coloane (specific codurilor balansate),
reţeaua codului cadru este cea prezentată ı̂n Figura 19.1, poziţia (a); din ea se obţine
reţeaua (b) a codului balansat.
Exemplul 19.8 Să construim reţeaua de (de)codificare pentru (16, 9) - codul bal-
ansat definit ı̂n Exemplul 19.6. Conform procedurii, sunt necesare 8 subreţele, câte
224 PRELEGEREA 19. ALTE REPREZENTĂRI DE CODURI - BLOC
Figura 19.1:
000/0101 ²/0101
-t -
6
010/0110 -t ²/0110 -
00/0101 ²/0101
-t -
6 100/1001 -t ²/1001 -
t ?
t t ?
t
6 6
10/1001 ²/1010 001/0101 ²/1010
-t - -t -
6
011/0110 ²/1001
-t -
11/1010 ²/1010
? -t -
101/1001 -t ²/0110 -
(a)
? 111/1010 -t ²/0101 -
(b)
una pentru fiecare linie din tabelul de codificare. Deoarece cuvintele - cod sunt citite
pe coloane, fiecare subreţea are câte 5 coloane şi 4 stări.
Pentru a7 = a8 = a9 = 0 (prima linie din tabel) subreţeaua construită plecı̂nd de
la (16, 6) - codul cadru din Exemplul 19.6 are structura:
²¯ ²¯ ²¯
00 Z - 00 - 00
±° > ±° 3́±°
µ
¡ J Z
¡ A ½½ Z
7¢̧ AS Z
¶
´
´ ¶
@
Z ½ 7¢̧ @
A S Z´ ´ ¶¢
¡ AJ Z ¶¢
½ Z @
¡ A J½ Z¶ ¢ A S´ Z¶ ¢ @
¡ ½ J Z¢ ²¯ ´S ¢ ²¯
²¯½A J ¶¢ Z ~ ´ A S ¶¢ZZ ~ @
¡ 1 01
³
³ A ¶ - 01 A ¶ - 01 P @
¡ ³³ ³ ±° Z A¶J ¢ ½ ±° ¶S ¢ ½>±° PP P
> Q A
³ S Z¶A J¢ ½ ¶ 7 S Q¶A ¢S ½ ¶
¶ 7
¶ PP@@
¡
²¯³³ Z ½ Q ½ qR
P ²¯
00 S¶ A½ ¢ J ¶ S ¶ AQ ½¢ S¶ 00
±° P Z 1±°
PP
PP ¶S ½¢A Z¶ J ¶S ½¢A Q¶ S ³ ³³
@ ½ ½ Q ³ µ
¡
q²¯
PP ¶½ S¢ A¶ Z ~
Z J ²¯ ¶½ S¢ A¶ Q sS
w²¯ ³
@ 10 ¢S ¶ A -J ^
10 ¢S ¶ A - 10 ³³ ¡
±°¢ S >±° ¡
@ Z ¶ A ½ ½ Z ¢ ¶S A ´ 3́±° ¡
@ ¢Z¶ S ½ Z
¢ S
¶ ´ A ´
@ ¢ ¶ Z½ ½SA ¢ ¶ ZZ ¡
Z A ´ S A ¡
@ ¢¶ ½ Z S A ¢¶ ´ Z S A
R²¯
@ ¢¶ ½ ZS ¢ ´
wAU²¯ ZZ wAU²¯
S ¡
@
11 ½ ~ 11¶´
Z
- ~- 11 ¡
±° ±° ±°
19.2. CODURI BALANSATE 225
19.3 Exerciţii
19.1 Construiţi un (3, 2)(3, 2) – RLL cod tablou şi calculaţi parametrii săi (d0 , k 0 ).
19.2 Construiţi un (12, 8) - cod GAC cu restricţii RLL şi calculaţi pentru el
(d0 , k 0 ).
19.5 Definiţi un vector de modificare care transformă codul tablou (3, 2)(3, 2) ı̂ntr-
un cod RLL. Construiţi reţeaua acesui cod.
[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;
[4] G. Cullmann - Coduri detectoare şi corectoare de erori, Editura Tehnică, 1972;
[6] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[8] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[10] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
227
Prelegerea 20
Propoziţia 20.1
1. w(r) (−x) = w(r) (x);
2. w(r) (x + y) ≤ w(r) (x) + w(r) (y).
Propoziţia 20.2
1. d este o distanţă;
2. d este invariantă la translatare.
3. d(x, y) ≤ dH (x, y) unde dH este distanţa Hamming a două secvenţe numerice
reprezentate ı̂n baza r.
227
228 PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR
Demonstraţie: (1) Faptul că d este o distanţă se verifică imediat din Definiţia 20.1
şi Propoziţia 20.1.
(2) Deoarece d(x + z, y + z) = w(r) (x + z − y − z) = w(r) (x − y) = d(x, y) rezultă
că distanţa aritmetică este invariantă la translatare (proprietate pe care distanţa
Hamming nu o are).
(3) Este lăsat ca exerciţiu. Precizăm că cele două numere reprezentate ı̂n baza
r pot fi aduse la un număr egal de cifre completând eventual numărul mai scurt cu
0-uri (nesemnificative) ı̂n faţă. 2
Ideea folosirii AN - codurilor ı̂n aritmetica calculatorului este următoa-rea: să pre-
supunem că trebuie calculată suma n1 + n2 (n1 , n2 pozitive şi mici comparativ cu
b); fie S suma lor. Cele două numere se codifică ı̂n a · n1 , a · n2 ∈ Ca,b . Dacă
S ≡ 0 (mod a) atunci suma a fost efectuată corect şi ea este S div a. Dacă
nu, ı̂nseamnă că au apărut erori de calcul şi se ia ca rezultat acel număr n3 cu
proprietatea că d(S, an3 ) este minimă.
Pentru a corecta orice combinaţie de maxim t erori este necesar ca C să aibă
distanţa minimă ≥ 2t + 1, deci orice număr din C are ponderea minim 2t + 1.
Teorema 20.1 Fie a un număr ı̂ntreg fixat şi s = min{w(r) (a · n)|n 6= 0}. Atunci
s ≤ 2.
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
Definiţia 20.4 Un AN - cod ciclic de lungime n şi bază r este un subgrup multi-
plicativ C ⊆ Zrn −1 .
230 PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR
Evident, un astfel de subgrup este ideal principal ı̂n inelul Zrn −1 , deci există a, b ∈ Z
astfel ı̂ncât a · b = rn − 1 şi C = Ca,b , adică:
C = {a · k|k ∈ Z, 0 ≤ k < b}.
Dacă x ∈ Ca,b , atunci r · x (mod rn − 1) este tot ı̂n Ca,b deoarece acesta este grup
multiplicativ; pe de-altă parte noul număr este o permutare ciclică a lui x (ambele
fiind scrise ı̂n baza r). Numărul b poate fi asimilat polinomului de control al unui
cod ciclic.
Definiţia 20.5 Fie b, c ∈ Z , |b| < r, |c| < r. Perechea (b, c) se numeşte admisibilă
dacă este adevărată una din relaţiile:
(1) b · c = 0;
(2) b · c > 0 şi |b + c| < r;
(3) b · c < 0 şi |b| > |c|.
De remarcat că ambele perechi (b, c), (c, b) sunt admisibile numai ı̂n cazurile (1) sau
(2). Cazul (3) nu permite comutativitatea relaţiei de admisibilitate.
Exemplul 20.4 Pentru r = 2 este posibil numai cazul (1). Deci o reprezentare
∞
X
x= ci · 2i ı̂n care toate perechile (ci+1 , ci ) sunt admisibile, nu are doi coeficienţi
i=0
consecutivi nenuli.
20.1. CODURI ARITMETICE 231
∞
X
Definiţia 20.6 O reprezentare x = ci ri cu ci ∈ Z, |ci | < r şi ∃nx cu ci = 0 ∀i >
i=0
nx se numeşte N AF (non-adiacent form) dacă pentru orice i ≥ 0, perechea (ci+1 , ci )
este admisibilă.
Exemplul 20.5 Pentru r = 10 putem scrie:
96 = −4 · 100 + 0 · 101 + 1 · 102 (cazul (1)),
11 = 1 · 100 + 1 · 101 (cazul (2)),
38 = −2 · 100 + 4 · 101 (cazul (3)).
De remarcat că reprezentarea lui 96 = 6 · 100 + 9 · 101 nu este ı̂n forma N AF
deoarece perechea (9, 6) nu este admisibilă. La fel pentru reprezentările celorlaltor
numere.
Teorema 20.2 Orice număr ı̂ntreg x are o reprezentare N AF unică ı̂n baza r.
Dacă aceasta este ∞ X
x= ci · r i ,
i=0
atunci w(r) (x) = card ({i|i ≥ 0, ci 6= 0}).
∞
X
Demonstraţie: Fie bi · ri , (|bi | < r) o reprezentare a lui x ı̂n baza r, şi i cel
i=0
mai mic număr cu proprietatea că perechea (bi+1 , bi ) nu este admisibilă. Putem
presupune că bi > 0 (altfel se va lucra cu −x). Vom ı̂nlocui bi cu b0i = bi − r şi bi+1
cu b0i+1 = bi+1 + 1 (dacă bi+1 + 1 = r, atunci b0i+1 = 0 şi facem deplasarea obişnuită
de la adunare).
Dacă bi+1 > 0, atunci avem sau b0i+1 = 0, sau b0i · b0i+1 < 0 şi b0i+1 = bi+1 + 1 >
r − bi = |b0i | (deoarece perechea (bi+1 , bi ) nu era admisibilă).
Dacă bi+1 < 0, atunci sau b0i+1 = 0, sau b0i · b0i+1 > 0 şi |b0i + b0i+ | = r − bi − bi+1 < r
deoarece −bi+1 ≤ bi (perechea (bi+1 , bi ) nu era admisibilă).
Deci, (b0i+1 , b0i ) este admisibilă, şi se verifică similar dacă (b0i , bi−1 ) este admisibilă.
Procedeul continuă până se ajunge la i = 0.
Să arătăm acum că reprezentarea N AF este unică. Presupunem că există x ∈ Z
cu două astfel de reprezentări:
∞
X ∞
X
x= ci · r i = c0i · ri .
i=0 i=0
Considerăm – fără a micşora generalitatea – că c0 6= c00 şi c0 > 0; deci c00 = c0 − r.
Atunci pentru c01 sunt posibile trei valori: c1 + 1, c1 + 1 ± r. Dacă c01 = c1 + 1 − r,
atunci c1 ≥ 0, deci c0 + c1 ≤ r − 1. Deoarece c00 · c01 > 0, avem −c00 − c01 < r, de unde
r − c0 + r − c1 − 1 < r, deci c0 + c1 > r − 1, contradicţie. Celelalte două cazuri se
tratează similar. 2
Reprezentarea N AF a unui număr x se poate afla direct şi pe baza teoremei:
Teorema 20.3 Fie x ∈ Z, x ≥ 0. Considerăm reprezentările ı̂n baza r a numerelor
∞
X ∞
X
(r + 1) · x = ai · ri , x= bi · ri ,
i=0 i=0
unde ai , bi ∈ {0, 1, . . . , r − 1}. Atunci reprezentarea N AF pentru x este
∞
X
x= (ai+1 − bi+1 ) · ri .
i=0
232 PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR
Demonstraţie: Ştim că pentru două numere naturale nenule a, r, [a/r] reprezintă
câtul ı̂mpărţirii celor două numere, iar a − [a/r] · r - restul.
Din reprezentarea din enunţ, rezultă că fiecare coeficient ai se determină prin
adunarea coeficienţilor corespunzători ai numerelor x şi r · x, scrise ı̂n baza r. Să
definim secvenţa numerică αi , i ≥ 0 astfel:
" #
αi−1 + bi−1 + bi
α0 = 0, αi = .
r
Atunci, conform observaţiei de la ı̂nceputul demonstraţiei, ai = αi−1 + bi−1 + bi −
αi · r. Dacă notăm ci := ai − bi , avem ci = αi−1 + bi−1 − αi · r.
Mai rămâne de verificat faptul că (ci+1 , ci ) este o pereche admisibilă. Relaţia
|ci+1 + ci | < r rezultă imediat din definiţia lui αi . Să presupunem ci > 0, ci+1 < 0;
atunci αi = 0. Vom avea ci = αi−1 + bi−1 , ci+1 = bi − r şi condiţia |ci+1 | > |ci | este
echivalentă cu αi−1 + bi−1 + bi < r, adică αi = 0. Celălalt caz se arată analog. 2
Similar situaţiei din paragraful anterior, să considerăm acum cazul reprezentării
modulare. Vom lua deci m = rn − 1, (n ≥ 2).
Din Teoremele 20.2 şi 20.3 rezultă un rezultat similar pentru reprezentă- rile CN AF :
Teorema 20.6 Fie b un număr prim care nu divide r, cu proprietatea că grupul
multiplicativ Zb este generat de r şi −1. Fie n un număr ı̂ntreg pozitiv astfel ca
rn ≡ 1 (mod b) şi a = (rn − 1)/b. Atunci codul C ⊂ Z/(rn − 1) generat de a este
un cod echidistant cu distanţa Ã" # " #!
n r·b b
− .
b−1 r+1 r+1
s - g1 (X) x1p -
g0 (X)
? x1p , x2p
-
PN R
u0 ? - g1 (X) x2p -
g0 (X)
Codificatorul
Pentru codul convoluţional, matricea generatoare poate fi considerată (ı̂ntr-o vari-
antă simplificată, bazată pe structura de reţea a mesajelor) G = (g0 (X) g1 (X)).
Codificatorul unui turbo - cod va folosi ca matrice generatoare o formă echivalentă
recursivă: Ã !
T g1 (X)
GR = 1 .
g0 (X)
Din acest motiv, un codificator convoluţional pentru turbo - coduri este numit Cod-
ificator Sistematic Recursiv (RSE).
Un mesaj de informaţie u(X), este codificat de codul convoluţional ı̂n u(X)G =
(u(X)g0 (X) u(X)g1 ((X)). RSE va realiza aceeaşi ieşire pentru mesajul u0 (X) =
u(X)g0 (X) (se verifică imediat relaţia u(X)g0 (X)GR = u(X)G). Vom numi totuşi
”cuvânt - cod” perechea de polinoame u(X)G (deşi se mai efectuează o operaţie de
ı̂nmulţire pentru obţinerea mesajului u0 (X)).
Se observă că pentru un RSE, cuvântul cod are pondere finită dacă şi numai
dacă mesajul de intrare se divide cu g0 (X).
Corolarul 20.2 Pentru orice polinom netrivial g0 (X) ∈ Zq [X] există o infinitate
de mesaje sursă de pondere 2 care se codifică ı̂n cuvinte - cod de pondere finită.
Permutatorul
PN este un bloc de permutare. Cele N caractere care constituie intrarea ı̂n primul
codificator RSE sunt rearanjate ı̂nainte de a intra ı̂n al doilea codificator. Din
considerente practice este preferabil ca permutarea folosită să nu păstreze nici o
ordine anterioară a simbolurilor (deşi acest lucru este uneori dificil, mai ales pentru
cuvinte de pondere mică). De asemenea, N trebuie să fie suficient de mare (ı̂n
practică se foloseşte N ≥ 1000). Aceste două cerinţe – uzuale ı̂n criptografie – sunt
necesare ı̂n obţinerea de performanţe ridicate la decodificare.
Mecanismul de relaxare
Dacă pentru transmiterea de imagini din spaţiu sunt folosite coduri cu rate mici
de informaţie (fiecărui bit ı̂i corespund cel puţin 3 caractere cod), ı̂n alte situaţii
(comunicări prin satelit de exemplu) sunt preferabile rate mari (cel puţ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 elimină biţi de
control; astfel, pentru a obţine o rată de informaţie 1/2 se pot elimina toţi biţii de
control pari de la ı̂nceputul codului şi toţi biţii de control impari de la sfârşit.
le facem pentru cazul binar, cu simbolurile ±1. Decodificatorul va lucra după prin-
cipiul obişnuit al decodificării cele mai probabile.
Din păcate, utilizarea algoritmului Viterbi nu este posibilă din cauza operaţiei
de permutare folosită ı̂n decodificare. Totuşi, pentru subsecven-ţe stricte, un astfel
de algoritm poate da rezultate.
Primul algoritm de decodificare pentru turbo - coduri a fost propus de Berrou
ı̂n 1993 ([12]), bazat pe ideile din [2]. Numit BCJR, el foloseşte o decodificare
caracter-cu-caracter (spre deosebire de Viterbi care decodifica pe secvenţe bloc de
câte n caractere).
Vom folosi următoarele notaţii:
• yab = ya ya+1 . . . yb ;
S−
unde
sk ∈ S este starea codificatorului la momentul k,
S + este mulţimea perechilor (ordonate) (s0 , s) corespunzătoare tuturor stărilor
de tranziţie (sk−1 = s0 ) → (sk = s) generate de uk = +1,
20.2. TURBO - CODURI 237
S−
Condiţiile la limită pentru α̃k (s) şi β̃k (s) sunt cele de la αk (s) respectiv βk (s).
O altă versiune a algoritmului
à foloseşte
! informaţia
à apriori.
! Pentru acesta avem
P (y|uk = +1) P (uk = +1)
L(uk ) = log + log .
P (y|uk = −1) P (uk = −1)
Deoarece ı̂n mod normal P (uk = +1) = P (uk = −1), al doilea termen al sumei
este zero ı̂n decodificatoarele uzuale. Pentru un turbo - decodor care lucrează re-
cursiv, D1 primeşte informaţie suplimentară de la D2 , care serveşte ca informaţie
apriori. Similar, D2 primeşte de la D1 informaţie suplimentară, ş.a.m.d. Ideea
constă ı̂n faptul că D2 poate da lui D1 informaţii despre uk la care acesta nu are
acces (de exemplu caracterele de control generate de E2 ); acelaşi lucru ı̂l realizează
D1 pentru D2 .
Un circuit de decodificare bazat pe algoritmul BCJR este:
¾ PN−1 ¾ Le216
-
? Le12 - - D -
y1p PN−1
ys -s D1 - 2
6 6
? -
PN−1 -
y2p -
S-a notat cu PN−1 inversa matricii de permutare PN din circuitul de codificare. Le12
este informaţia suplimentară transmisă de la D1 la D2 , iar Le21 este cea transmisă de
la D2 la D1 . Deciziile finale de decodificare pot veni atât de la D1 cât şi de la D2 .
Mai rămâne de văzut cum se poate obţine această informaţie suplimentară care
circulă ı̂ntre cei doi decodificatori recursivi.
Definiţia lui γk (s0 , s) se poate rescrie
γk (s0 , s) = P (s|s0 )p(yk |s0 , s) = P (uk ) · p(yk |uk )
0
unde evenimentul uk corespunde à tranziţiei s !→ s. Dacă se notează:
P (uk = +1)
Le (uk ) = log ,
P (uk = −1)
P = P (uk = +1), P− = P (uk = −1), avem
q +
P− /P+ q
· P+ /P− = P+ dacă uk = +1,
1 + P− /P+
q
P− /P+ q
· P− /P+ = P− dacă uk = −1.
1 + P− /P+
În această
à situaţie se obţine
!
exp[−Le (uk )/2]
P (uk ) = e
· exp[uk · Le (uk )/2] = Ak · exp[uk · Le (uk )/2], şi (ream-
1 + exp[−L (uk )]
20.2. TURBO - CODURI 239
Algoritmul BCJR:
1. (Iniţializare): ( (
(1) 1 pentru s = 0 (1) 1 pentru s = 0
D1 : α̃0 (s) := β̃N (s) :=
0 pentru s 6= 0 0 pentru s 6= 0
Le21 (uk ) := (
0, k = 1, 2, . . . , N
(2) 1 pentru s = 0 (2) (2)
D2 : α̃0 (s) := , β̃N (s) := α̃N (s), ∀s.
0 pentru s 6= 0
Le12 (uk ) se determină din D1 după prima trecere, deci nu se iniţializează.
2. (A n-a iteraţie):
D1 : pentru k = 1, 2, . . . , N
- Se determină yk := yks yk1p unde yk1p sunt biţii de control recepţionaţi pentru
E1 (posibil perturbaţi de canal);
- Se determină γk (s0 , s) pentru toate tranziţiile posibile s0 → s;
(1)
- Se determină α̃k (s), ∀s.
(1)
pentru k = N, N − 1, . . . , 2 se determină β̃k−1 (s), ∀s;
pentru k = 1, 2, . . . , N se determină Le12 (uk ) cu valorile de probabilităţi
asociate lui D1 .
D2 : pentru k = 1, 2, . . . , N
- Se determină yk := yPs N [k] yk2p ;
- Se determină γk (s0 , s) pentru toate tranziţiile posibile s0 → s;
(2)
- Se determină α̃k (s), ∀s;
(2)
pentru k = N, N − 1, . . . , 2 se determină β̃k−1 (s), ∀s;
pentru k = 1, 2, . . . N se determină Le21 (uk ) cu valorile de probabilităti
asociate lui D2 ;
3. (După ultima iteraţie):
Pentru k = 1, 2, . . . , N
- Se determină L1 (uk ) := Lc · yks + Le21 (uP −1 [k] ) + Le12 (uk );
N
- Dacă L1 (uk ) > 0 atunci uk := +1 altfel uk := −1;
4. Stop.
20.3 Exerciţii
20.1 Demonstraţi Propoziţia 20.1.
20.3 Calculaţi w(2) , w(10) şi w(16) pentru numerele 100, 32412, 999, 1024.
∞
X
20.4 Fie x ∈ Z. Un cod Booth este o reprezentare x = ci 3i unde ci ∈ {−1, 0, 1}.
i=0
1. Să se reprezinte ı̂n codul Booth numerele 23, 455, 81, −6493;
2. Să se arate că pentru orice număr ı̂ntreg, codul Booth este unic.
[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;
[5] G. Cullmann - Coduri detectoare şi corectoare de erori, Editura Tehnică, 1972;
[7] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[9] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[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
Semnături electronice
• Unică: o anumită semnătură trebuie să poată fi generată numai de o singură persoană;
• Uşor de autentificat: orice destinatar legal şi orice arbitru (ı̂n cazul unor eventuale
dispute) să poată stabili autenticitatea semnăturii (indiferent după ce interval de timp);
• Imposibil de negat: nici un utilizator legal să nu-şi poată nega propria semnătură, sub
afirmaţia că nu este autentică;
• Uşor de generat.
Trebuie făcută totuşi distincţie ı̂ntre semnătura olografă şi cea digitală.
Iată câteva diferenţe notabile ı̂ntre cele două tipuri de semnături:
1
2 PRELEGEREA 1. SEMNĂTURI ELECTRONICE
• O semnătură scrisă de mână este o confirmare fizică a unui document, cu ajutorul unei foi
de hârtie care conţine două elemente: un mesaj (textul docu-mentului) şi o semnătură.
O astfel de legătură ı̂ntre mesaje şi semnături nu este posibilă ı̂ntr-un mediu de calcul;
• Orice copie a unui document electronic (inclusiv semnătura) este identică cu originalul.
În schimb copia unui document pe hârtie este diferită ca valoare de original. Aceasta
conduce la ideea că un document electronic nu este reutili-zabil. De exemplu, dacă Bob
trimite lui Alice un cec ı̂n valoare de 10 milioane lei, banca nu va accepta onorarea sa
decât o singură dată.
1. P, A, K sunt mulţimi finite, nevide, ale căror elemente se numesc mesaje, semnături
şi respectiv chei;
2. Există o aplicaţie biunivocă ı̂ntre Kşi S ×V; anume, pentru fiecare K ∈ K există o pereche
unică (sigK , verK ) unde sigK : P → A, verK : P × A → {T, F } au proprietatea:
∀x ∈ P, ∀y ∈ A, verK (x, y) = T ⇐⇒ y = sigK (x)
Pentru fiecare K ∈ K, funcţiile sigK şi verK trebuie să fie calculabile ı̂n timp polinomial;
verK este publică iar sigK este secretă. Pentru Oscar, imitarea unei semnături a lui Bob pentru
un mesaj x trebuie să fie imposibilă (din punct de vedere al complexităt ii calculului). Altfel
spus, pentru un x dat, numai Bob este capabil să calculeze o semnătură y astfel ca ver(x, y) = T .
Bineı̂nţeles, nici un protocol de semnătură nu este absolut sigur, deoarece Oscar poate
ı̂ncerca – folosind funcţia publică de verificare ver – toate semnăturile y posibile ale unui mesaj
x, până va găsi semnătura corectă.
Deci, dacă ar dispune de suficient timp, Oscar poate totdeauna să contrafacă semnătura
lui Bob.
Exemplul 1.1 Un prim exemplu de semnătură este folosirea ı̂n acest scop a sistemului de
criptare RSA. Se definesc
P = A = Zn , K = {(n, p, q, a, b) | n = pq, p, q prime, ab ≡ 1 (mod φ(n))}.
n şi b sunt publice, p, q, a sunt secrete.
Pentru K = (n, p, q, a, b) se definesc:
sigK (x) = xa (mod n)
verK (x, y) = T ⇐⇒ x ≡ y b (mod n)
1.3. SEMNĂTURA EL GAMAL 3
Aici Bob semnează un mesaj folosind cheia sa de decriptare din sistemul de criptare RSA; el
este singurul capabil să genereze o semnătură corectă deoarece dK = sigK este secretă. Funcţia
de verificare utilizează funcţia de criptare eK care este publică, deci oricine o poate verifica.
De remarcat că oricine poate genera o semnătură a lui Bob pentru un mesaj aleator x; Oscar
poate alege un y şi calculează x = ek (y); atunci y = sigK (x).
Acest lucru poate fi prevenit folosind mesaje x cu suficient de multă redondantă (cu anumită
semnificaţie). O altă modalitate de a evita acest atac este folosirea unor funcţii de dispersie
(hash); vom studia această manieră ı̂n prelegerea următoare.
Să vedem cum pot fi combinate procedeele de semnătură şi criptare. Presupunem că Alice
doreşte să trimită lui Bob un mesaj criptat şi semnat. Pentru un text clar x dat, Alice determină
semnătura y = sigAlice (x), după care cifrează x şi y folosind cheia publică a lui Bob : z =
eBob ((x, y)).
Textul criptat z este transmis lui Bob. Acesta foloseşte cheia sa secretă dBob şi obţine (x, y).
După aceasta, verifică semnătura lui Alice cu ajutorul cheii publice verAlice (x, y).
Ce se ı̂ntâmplă dacă Alice criptează ı̂nainte de a semna ? Ea va calcula z = eBob (x), y =
sigAlice (eBob (x)) şi va trimite lui Bob mesajul (z, y). Acesta decriptează z, obţine x şi verifică
y ca semnătură a lui z.
Pericolul constă ı̂n faptul că Oscar poate intercepta (z, y), ı̂nlocuieşte y cu propria sa
semnătură y 0 şi transmite lui Bob mesajul (z, y 0 ).
Din acest motiv se recomandă folosirea semnăturii ı̂nainte de criptare.
• Dacă Oscar alege aleator şi pe δ şi caută să obţină x, el va ajunge din nou la problema
logaritmului discret, adică la calculul logα β γ γ δ .
Oscar poate totuşi să semneze un mesaj aleator x ı̂n felul următor:
Fie numerele ı̂ntregi i, j (0 ≤ i ≤ p − 2, 0 ≤ j ≤ p − 2, (j, p − 1) = 1).
Se efectuează calculele:
γ = αi β j (mod p); δ = −γj −1 (mod p − 1); x = −γij −1 (mod p − 1)
(deoarece calculele sunt făcute modulo p − 1, există j −1 ).
(γ, δ) este o semnătură validă pentru x. Într-adevăr, se verifică
i j i j −1 i j −1 i j i j −1 i j −1
β γ γ δ ≡ β α β (αi β j )−α β j ≡ β α β α−ij α β β −α β ≡ α−ij α β ≡ α−γij ≡ αx
(toate calculele sunt făcute modulo p).
Să exemplificăm acest atac:
Exemplul 1.3 Fie din nou p = 467, α = 2, β = 132. Să presupunem că Oscar alege
i = 99, j = 179 ( deci j −1 = 151 (mod p − 1)); Oscar calculează:
γ = 299 132179 = 117 (mod 467)
δ = −117 × 151 = 41 (mod 466)
x = 99 × 41 = 331 (mod 466)
Deci (117, 41) este o semnătură a mesajului 331, ceea ce se poate verifica imediat, calculând
132117 11741 ≡ 303 (mod 467) şi 2331 ≡ 303 (mod 467).
Semnătura este deci validă.
Să mai arătăm o modalitate prin care Oscar poate utiliza un mesaj semnat anterior de Bob.
Să presupunem că (γ, δ) este o semnătură 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ĂTURĂ ELGAMAL 5
Calculăm:
l = γ h αi β j (mod p), y = δl(hγ − jδ)−1 (mod p − 1),
x0 = l(hx + iδ)(hγ − jδ)−1 (mod p − 1)
unde (hγ − jδ)−1 este calculat modulo p − 1. Se poate atunci verifica direct β l ly ≡
0
αx (mod p). Deci (l, y) este o semnătură validă a lui x0 .
Aceste două strategii construiesc semnături valide, dar se pare că nu este posibil ca cineva
să contrafacă semnătura unui mesaj ales de el, fără să rezolve o problemă de logaritmi discreţi.
Din acest motiv se consideră că nu există slăbiciuni ı̂n protocolul de semnătură El Gamal.
Să arătăm ı̂n final două maniere de a sparge acest protocol de semnătură, atunci când este
aplicat neglijent.
• Dacă se utilizează acelaşi k pentru mai multe mesaje. Aceasta ı̂i permite de asemenea lui
Oscar să determine a. El va proceda astfel:
Fie (γ, δi ) semnăturile mesajelor xi , i = 1, 2. Avem:
β γ γ δi ≡ αxi (mod p), i = 1, 2, deci αx2 −x1 ≡ γ δ2 −δ1 (mod p).
Înlocuind γ = αk se obţine ecuaţia de necunoscută k:
αx2 −x1 ≡ αk(δ2 −δ1 ) (mod p),
care este echivalentă cu x2 − x1 ≡ k(δ2 − δ1 ) (mod p − 1).
Dacă se ia d = (δ2 − δ1 , p − 1), din d | (p − 1) şi d | (δ2 − δ1 ) rezultă d | (x2 − x1 ).
Dacă notăm:
x2 − x1 δ2 − δ1 p−1
x0 = δ0 = p0 =
d d d
a. DSS se distinge ı̂n primul rând de El Gamal prin faptul că asigură o semnătură de 320
biţi pe un mesaj de 160 biţi, lucrând ı̂n Zp cu p de 512 biţi. Aceasta permite lucrul ı̂ntr-un
corp cu circa 2160 elemente. Ipoteza este aceea că ı̂n această bază, calculul logaritmilor
discreţi este foarte dificil.
b. În definirea lui δ semnul − s-a schimbat ı̂n +. Aceasta schimbă ecuaţia de verificare ı̂n:
αx β γ ≡ γ δ mod p.
Dacă (x + αγ, p − 1) = 1, atunci există δ −1 mod (p − 1) şi această ecuaţie se poate scrie
−1 −1
αxδ β γδ ≡ γ (mod p).
c. (idee a lui Schnorr). Să presupunem că q este un număr de 160 biţi astfel ı̂ncât q | (p−1) şi
α ∈ Zp∗ este o rădăcină primitivă de ordinul q a unitătii modulo p (pentru a găsi un astfel
(p−1)/q
de număr, se ia o rădăcină primitivă α0 ∈ Zp şi se construieşte α = α0 (mod p)). În
acest fel, β şi γ sunt de asemenea rădăcini de ordinul q ale unităţii. Deci exponenţii lui
α, β, γ se pot reduce modulo q, fără a modifica ecuaţia de verificare de mai sus.
Algoritmul de Schnorr foloseşte şi o funcţie de dispersie h : {0, 1}∗ → Zq (a se vedea
prelegerea următoare), pe baza căreia defineşte componentele semnăturii astfel:
γ = h(xkαk ), δ = k + αγ (mod q)
Pentru x ∈ {0, 1}∗ şi γ, δ ∈ Zq , procedura de verificare este
verK (x, (γ, δ)) = T ⇐⇒ h(xkαδ β −γ ) = γ
Relaţia de verificare este adevărată deoarece se obţine imediat αδ β −γ = αk (mod p)
Exemplul 1.4 Fie q = 101, p = 78q + 1 = 7879. 3 este rădăcină primitivă ı̂n Z7879 , deci se
poate lua α = 378 (mod 7879) = 170.
Dacă alegem de exemplu a = 75, obţinem β = αa (mod 7879) = 4567.
1.4. VARIANTE ALE PROTOCOLULUI DE SEMNĂTURĂ ELGAMAL 7
Să presupunem că Bob doreşte să semneze mesajul x = 1234 şi ia k = 50 (deci
k −1 (mod 101) = 99); el va avea:
γ = (17050 mod 7879) mod 101 = 2518 (mod 101) = 94
δ = (1234 + 75 × 94) × 99 (mod 101) = 97
Semnătura (94, 97) a mesajului 1234 se verifică prin calcul:
δ = 97−1 (mod 1010 = 25, e1 = 1234 × 25 (mod 1010 = 45, e2 = 94 × 25 (mod 101) = 27
−1
Răspunsul dat de N IST la această obiecţie a fost că este foarte puţin important ce calcul
este mai simplu, având ı̂n vedere sistemele actuale de calcul, tot mai performante.
Exemplul 1.6 Să considerăm curba eliptică y 2 = x3 + x + 6 definită peste Z11 . Alegem
parametrii protocolului de semnătură astfel: p = 11, q = 13, A = (2, 7), m = 7 şi B = (7, 2).
(a se vedea şi exemplul din prelegerea anterioară).
Să presupunem că avem un mesaj x cu SHA1 (x) = 4 şi Alice vrea să-l semneze folosind
valoarea aleatoare k = 3. Ea va calcula
(u, v) = 3 · (2, 7) = (8, 3), r = u (mod 13) = 8 şi s = 3−1 · (4 + 7 · 8) (mod 13) = 7.
Deci semnătura este (8, 7).
Bob verifică această semnătură efectuând următoarele 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) şi u (mod 13) = 8 = r.
Deci semnătura este validă.
1.5. PROTOCOALE DE SEMNĂTURĂ ”ONE-TIME” 9
Fie k > 0 un număr ı̂ntreg şi P = {0, 1}k . Dacă n este un număr ı̂ntreg cu proprietatea
2k ≤ C2nn
, fie B mulţimea numerelor ı̂ntregi din intervalul [1, 2n] şi
φ:P→B
o funcţie injectivă ı̂n mulţimea B a părţilor lui B de n elemente.
Dacă f : Y → Z este o funcţie neinversabilă, fie A = Y n .
Se aleg aleator valorile yi ∈ Y, 1 ≤ i ≤ 2n şi fie zi = f (yi ).
Cheia K este lista celor 2n valori y (secrete) şi a celor 2n valori z (publice).
Pentru K = {(yi , zi ) | 1 ≤ i ≤ 2n}, se definesc
sigK (x1 , . . . , xk ) = {yj | j ∈ φ(x1 , . . . xk )}
şi
verK (x1 , . . . , xk , a1 , . . . , an ) = T ⇐⇒ {f (ai ) | 1 ≤ i ≤ n} = {zj | j ∈ φ(x1 , . . . , xk )}
Avantajul protocolului Bos-Chaum este acela că scurtează semnătura. De exemplu, să
presupunem că vrem să semnăm un mesaj de şase biţi (k = 6); cum 26 = 64 şi C84 = 70,
putem lua n = 4. Aceasta permite semnarea mesajului cu numai patru valori y (ı̂n loc de
şase la Lamport). De asemenea, şi cheia este mai scurtă, cu numai opt valori z faţă de 12 la
semnătura Lamport.
Protocolul de semnătură Bos-Chaum necesită o funcţie injectivă φ care asociază fiecărei
secvenţe de k biţi x = (x1 , . . . , xk ) o submulţime de n elemente. Un exemplu de algoritm
simplu care realizează o astfel de asociere este:
k
X
x← xi 2i−1
i=1
φ(x) ← ∅
t ← 2n
e←n
while t > 0 do
t←t−1
if x > Cte then
x ← x − Cte
e←e−1
φ(x) ← φ(x) ∪ {t + 1}.
enddo
Dacă vrem să dăm o estimare generală a valorii lui n din protocolul Bos-Chaum, plecăm de
n (2n)!
la inegalitatea 2k ≤ C2n
n
ı̂n care se evaluează C2n = 2
cu formula lui Stirling, obţinându-se
√ (n!)
22n / πn. După simplificări şi logaritmare ı̂n baza 2 se ajunge la relaţia:
log2 nπ
k ≤ 2n −
2
Asimptotic, n este de ordinul lui k/2, deci protocolul de semnătură Bos-Chaum reduce
mărimea semnăturii lui Lamport cu aproximativ 50%.
• Semnătura nu poate fi validată fără aportul semnatarului Bob. Aceasta ı̂l protejează pe
Bob de difuzarea fără consimtământ a unui document pe care se pretinde că l-ar fi semnat.
Validarea se face urmând un protocol de ı̂ntrebări şi răspunsuri.
• Pentru a evita ca Bob să-şi nege propria semnătură, există un protocol de dezminţire pe
care Bob trebuie să-l urmeze pentru a arăta că o semnătură este falsă.
Refuzul de a folosi acest protocol este o confirmare a autenticităţii semnăturii.
Deci, un protocol de semnătură incontestabilă este format dintr-o funcţie de semnă-tură, un
protocol de verificare şi o procedură de dezminţire.
Algoritmul Chaum-van Antwerpen este:
Fie p = 2q + 1 un număr prim cu proprietatea că q este prim şi α ∈ Zp∗ un element de
ordin q. Pentru 1 ≤ a ≤ q − 1, se defineşte β ≡ αa mod p.
Fie G subgrupul de ordin q al lui Zp generat de α.
Se definesc P = A = G, K = {(p, α, a, β) | β ≡ αa (mod p)}.
Valorile p, α, β sunt publice iar a este secretă.
Pentru K = (p, α, a, β), x ∈ G se defineşte y = sigK (x) = xa mod p.
Pentru x, y ∈ G, protocolul de verificare se efectuează astfel:
4. Alice admite autenticitatea lui y dacă şi numai dacă d ≡ xe1 αe2 mod p.
A. Să explicăm ı̂ntâi rolul lui p şi q ı̂n acest protocol. Calculele sunt efectuate ı̂n Zp . Este
necesar totuşi ca anumite calcule să fie făcute ı̂ntr-un subgrup al său de ordin prim (notat cu
G). În particular este nevoie să calculăm inverse modulo q (ceea ce justifică de ce q = card(G)
trebuie să fie prim). Alegând p = 2q + 1 cu q prim, se asigură acest deziderat şi - ı̂n plus -
dimensiunea lui G este maximă, lucru de dorit deoarece mesajele de semnat sunt elemente din
G.
Să arătăm ı̂ntâi cum admite Alice autenticitatea semnăturilor valide. În calculul de mai
jos, exponenţii sunt reduşi modulo q.
−1 −1 −1
d ≡ ca (mod p) ≡ y e1 a β e2 a (mod p).
−1
Cum β ≡ αa (mod p), avem β a ≡ α (mod p).
−1
De asemenea, din y = xa (mod p) rezultă y a ≡ x (mod p).
Se ajunge deci la d ≡ xe1 αe2 (mod p).
Exemplul 1.8 Fie p = 467. 2 este o rădăcină primitivă, deci 22 = 4 este un generator al lui
G, grupul reziduurilor patratice modulo 467. Vom lua deci α = 4.
Să presupunem a = 101; avem β = αa mod 467 = 449.
Bob semnează deci mesajul x = 119 cu y = 119101 mod 467 = 129.
Să presupunem că Alice vrea să autentifice semnătura y şi că alege pentru asta e1 = 38, e2 =
397. Ea calculează c = 13, la care Bob răspunde cu d = 9. Alice verifică atunci relaţia
11938 4397 ≡ 9 (mod 467).
Semnătura este acceptată ca autentică.
12 PRELEGEREA 1. SEMNĂTURI ELECTRONICE
B. Să arătăm acum că Alice nu poate accepta o semnătură falsă drept autentică decât cu
o probabilitate neglijabilă.
Teorema 1.1 Dacă y 6≡ xa (mod p) atunci Alice admite pe y ca semnătură autentică a lui x
cu probabilitate 1/q.
Demonstraţie: Se observă că orice ı̂ntrebare c corespunde la exact q perechi (e1 , e2 ) posibile
(deoarece y şi β sunt elemente ale grupului G de ordin q prim şi ı̂n definiţia lui c, fiecare e1
determină un e2 unic). Când Bob primeşte c, el nu ştie ce pereche (e1 , e2 ) a fost folosită pentru
a-l construi. Vom arăta că dacă y 6≡ xa (mod p), orice răspuns d nu poate fi consistent decât
cu o singură pereche (e1 , e2 ).
Deoarece α generează G, orice element din G se scrie ca o putere (unică modulo q) a lui α.
Deci c = αi , d = αj , x = αk , y = αm cu i, j, k, m ∈ Zq şi operaţiile aritmetice efectuate modulo
p. Să considerăm sistemul:
c ≡ y e1 β e2 (mod p) d ≡ xe1 αe2 (mod p).
El este echivalent cu
i ≡ me1 + ae2 (mod q) j ≡ ke1 + e2 (mod q).
Cum prin ipoteză y 6≡ xa (mod p), rezultă m 6≡ ak (mod q).
Astfel, matricea sistemului modulo q admite un determinant nenul, deci sistemul are soluţie
unică. Altfel spus, pentru orice d ∈ G, nu există răspuns corect la ı̂ntrebarea c decât pentru
un singur cuplu (e1 , e2 ). Deci probabilitatea ca Bob să răspundă corect lui Alice ı̂n condiţiile
teoremei este 1/q. 2
C. Să construim acum procedura de dezminţire. Ea foloseşte de două ori protocolul de
verificare. Algoritmul este:
verK = T ⇐⇒ verK 0 = T.
Lema 1.3 Fie o cheie K, y = sigK (x) şi verK (x0 , y 0 ) = T pentru x0 6= x. Există atunci cel
puţin o cheie K 0 echivalentă cu K astfel ca
y = sigK 0 (x), y 0 = sigK 0 (x0 )
Teorema 1.4 Fiind date sigK (x) = y şi x0 6= x, Oscar nu poate calcula sigK (x0 ) decât cu
1
probabilitate .
q
De remarcat că rezultatul acestei teoreme nu depinde de puterea de calcul a lui Oscar;
securitatea provine din faptul că el nu poate distinge care din cele q chei posibile a fost utilizată.
Se poate explica acum noţiunea de semnătură fără eşec. S-a arătat că fiind dat un mesaj
x semnat cu y, Oscar nu poate calcula semnătura y 0 a lui Bob pe un alt mesaj x0 . Ar mai fi
posibilitatea ca Oscar să poată calcula o semnătură y” 6= sigK (x0 ) care să fie validă. Dar, dacă
1
ea ajunge ı̂napoi la Bob, acesta poate furniza cu probabilitate 1 − o probă de autentificare;
q
aceasta este valoarea a0 = logα β, cunoscută numai de autor.
Să presupunem că Bob are o pereche (x0 , y”) astfel ı̂ncât
verK (x0 , y”) = T şi y” 6= sigK (x0 ).
x0
Avem γ1 γ2 ≡ αy1 ” β y2 ” (mod p) unde y” = (y1 ”, y2 ”).
Bob poate calcula propria sa semnătură pentru x0 , pe care o notează y 0 = (y1 0 , y2 0 ) şi are
0 0 0
γ1 γ2x ≡ αy1 β y2 (mod p).
0 0
Deci αy”1 β y”2 ≡ αy1 β y2 (mod p). Scriind β = αa0 (mod p) se obţine:
0 0
αy”1 +a0 y”2 ≡ αy1 +a0 y2 (mod p) de unde y”1 + a0 y”2 ≡ y 01 + a0 y 02 (mod q)
sau y”1 − y 01 ≡ a0 (y 02 − y”2 ) (mod q). Evident y 02 6≡ y”2 deoarece y” este un fals.
Deci (y 02 − y”2 )−1 (mod q) există şi avem:
a0 = logα β = (y”1 − y 01 )(y 02 − y”2 )−1 (mod q).
Bineı̂nţeles, ı̂n verificarea probei de autentificare s-a presupus că nici Bob nu poate calcula
logaritmul discret logα β.
Ca o remarcă finală, acest procedeu este cu utilizare unică, deoarece cheia K a lui Bob poate
fi uşor determinată după două folosiri.
16 PRELEGEREA 1. SEMNĂTURI ELECTRONICE
Exemplul 1.10 Să presupunem p = 3467 = 2 × 1733 + 1. Numărul α = 4 are ordinul 1733 ı̂n
∗
Z3467 . Dacă se ia a0 = 1567 vom avea β = 41567 (mod 3467) = 514.
Reamintim că Bob cunoaşte α şi β dar nu a0 .
Să presupunem că Bob construieşte cheia sa cu a1 = 888, a2 = 1024,
b1 = 786, b2 = 999 deci
γ1 = 4888 5141024 (mod 3467) = 3405 γ2 = 4786 514999 (mod 3467) = 2281.
În acest moment Bob este pus ı̂n prezenţa semnăturii false (822, 55) a mesajului 3383.
Această semnătură este validă, deoarece condiţia de verificare este satisfăcută:
3405 × 22813383 ≡ 2282 (mod 3467) 4822 51456 ≡ 2282 (mod 3467).
Dar Bob ştie că aceasta nu este semnătura sa şi trebuie să dovedească acest lucru. El
calculează propria sa semnătură:
(888 + 3383 × 786 (mod 1733), 1024 + 3383 × 999 (mod 1733)) = (1504, 1291)
după care evaluează logaritmul discret
a0 = (822 − 1504)(1291 − 55)−1 (mod 1733) = 1567
care constituie probă de autentificare, şi arată că semnătura nu ı̂i aparţine.
1.8. EXERCIŢII 17
1.8 Exerciţii
1.1 Să presupunem că Bob utilizează semnătura El Gamal şi semnează mesajele x1 , x2 obţi-
nând (γ, δ1 ) respectiv (γ, δ2 ) (cu aceeaşi valoare a lui γ ı̂n ambele sem-nături). Se consideră ı̂n
plus că (δ1 − δ2 , p − 1) = 1.
• Calculează exponentul secret a prin compromisul spaţiu - timp al lui Shanks. Apoi deter-
mină valoarea aleatoare k utilizată ı̂n semnătura lui x.
1.3 Bob utilizează procedeul de semnătură El Gamal ca ı̂n Exemplul 1.1: p = 467, α = 2, β =
132. Să presupunem căel semnează mesajul x = 100 cu (29, 51). Calculaţi semnătura falsă pe
care o poate obţine Oscar cu h = 102, i = 45, j = 293. Autentificaţi semnătura rezultată cu
funcţia de verificare.
1.4 Arătaţi că a doua metodă de atac din semnătura El Gamal furnizează o semnă-tură corectă
care satisface funcţia de verificare.
1.5 Modificăm puţin protocolul de semnătură El Gamal. Cheia este construită astfel: Bob
alege o rădăcină primtivă α ∈ Zp∗ , un exponent secret a (0 ≤ a ≤ p−2), (a, p−1) = 1 şi β = αa .
Cheia este K = (α, a, β) unde α, β sunt publice, iar a este secretă. Fie x ∈ Zp un mesaj care
trebuie semnat. Bob calculează semnătura sigK (x) = (γ, δ) prin:
• Descrieţi cum se poate verifica cu cheia publică a lui Bob o semnătură (γ, δ) pe un mesaj
x;
• Descrieţi avantajul noului procedeu (fată de cel vechi) din punct de vedere al calculelor;
1.6 Bob utilizează procedeul DSS cu q = 101, p = 7879, α = 170, a = 75, β = 4567.
Determinaţi semnătura lui Bob pe mesajul x = 5001 utilizând valoarea aleatoare k = 49, şi
arătaţi cum poate fi verificată semnătura rezultată.
18 PRELEGEREA 1. SEMNĂTURI ELECTRONICE
1.7 În protocolul de semnătură Lamport, Bob semnează două mesaje x, x0 , ambele de câte k
biţi. Fie s = d(x, x0 ) numărul de coordonate ı̂n care diferă cele două mesaje. Arătaţi că Oscar
poate semna 2s − 2 mesaje noi.
1.9 În protocolul de semnătură Bos-Chaum, Bob semnează două mesaje x, x0 . Fie s =
card(φ(x) ∪ φ(x0 )). Arătaţi că Oscar poate semna acum Csn − 2 mesaje noi.
1.10 Bob utilizează protocolul de semnătură incontestabilă Chaum-van Antwerpen ca ı̂n Ex-
emplul 1.7; deci p = 467, α = 4, a = 101, β = 449. Să presupunem că Bob este confruntat
cu semnătura y = 25 a mesajului x = 157 şi doreşte să arate că ea este falsă. Presupunând că
Alice alege valorile aleatoare e1 = 46, e2 = 123, f1 = 198, f2 = 11 ı̂n protocolul de dezminţire,
calculaţi ı̂ntrebările c, d ale lui Alice şi răspunsurile C, D ale lui Bob; verificaţi că Alice
admite dezminţirea.
1.11 Arătaţi că clasele de echivalentă de chei ı̂n protocolul de semnătură fără eşec Pedersen
- van Heyst conţine q 2 chei.
1.12 Bob utilizează protocolul de semnătură fără eşec Pedersen - van Heyst cu p = 3467, α =
4, a0 = 1567, β = 514 (valoarea lui a0 nu este cunsocută de Bob).
• Presupunem sigK (42) = (1118, 1449) şi sigK (969) = (899, 471). Fără a utiliza valoarea
lui a0 , determinaţi valoarea lui K (cea utilizată ı̂n protocolul cu cheie one - time).
1.13 Bob foloseşte protocolul de semnătură fără eşec Pedersen - van Heyst cu p = 5087, α =
25, β = 1866. Cheia este K = (5065, 5076, 144, 874, 1873, 2345). Se presupune că Bob este
confruntat cu semnătura (2219, 458) contrafăcută pe mesajul 4785.
• Arătaţi cum poate Bob să calculeze proba de autenticitate plecând de la această semnătură.
Bibliografie
[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. Diffie, 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 efficient 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 N IST 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
33
34 PRELEGEREA 3. GENERATORI DE NUMERE PSEUDO - ALEATOARE
• (c, m) = 1;
Dezavantajul generatorilor liniari congruenţiali este acela că ei nu mai pot fi folosiţi ı̂n
criptografie; ştiind prima valoare, numerele pot fi găsite uşor. Criptanaliza a fost realizată de
Jim Reeds ı̂n 1977 (cu completări ı̂n 1979) şi Joan Boyar ı̂n 1982. Ea a spart şi generatorii
pătratici
xn+1 = (ax2n + bxn + c) (mod m)
şi cubici
xn+1 = (ax3n + bx2n + cxn + d) (mod m)
Alţi cercetători au extins metodele de atac pentru spargerea oricărui generator polinomial
congruenţial.
Acum, acest tip de generator de numere pseudo-aleatoare este folosit ı̂n aplicaţii necrip-
tografice; de exemplu, ı̂n simulare ele asigură o comportare statistică bună ı̂n majoritatea
testelor.
f (x0 ) = z1 z2 . . . zm .
Exemplul 3.3 Fie p = 383, q = 503; deci n = 192649. Alegând x0 = 1013552 (mod n) =
20749, generatorul BBS va produce şirul pseudo-aleator 11001110000100111010. Detaliind
i 0 1 2 3 4 5 6 7 8 9 10
si 20749 143135 177671 97048 89992 174051 80649 45663 69442 186894 177046
zi − 1 1 0 0 1 1 1 0 0 0
i 11 12 13 14 15 16 17 18 19 20
si 137922 123175 8630 114386 14863 133015 106065 45870 137171 48060
zi 0 1 0 0 1 1 1 0 1 0
Securitatea acestui generator se bazează pe dificultatea factorizării lui n. n poate fi făcut public,
oricine poate genera o secvenţă pseudo-aleatoare pe baza lui. Totuşi, dacă n nu se descompune
ı̂n factori, nimeni nu poate prezice ieşirea; nici măcar o afirmaţie de genul: Următorul bit este
1 cu probabilitate 51%.
Mai mult, fiind dată o parte a secvenţei, nu există nici o modalitate de a prezice bitul
anterior sau cel ulterior secvenţei.
38 PRELEGEREA 3. GENERATORI DE NUMERE PSEUDO - ALEATOARE
Algoritmul BBS este destul de lent, dar are unele implementări mai rapide. Astfel, dacă n
este lungimea lui xi , pot fi păstraţi ultimii blog2 xi c biţi.
În acest moment BBS este considerat cel mai bun generator de numere pseudo-aleatoare
pentru protocoale de generare şi distribuţie a cheii.
- bn bn−1 ... b2 b1 -
6
? ? ? ?
¾ Funcţie de ı̂ntoarcere
Funcţia de ı̂ntoarcere este o adunare modulo 2 (XOR) a anumitor biţi din registru; uneori ea
este numită configuraţie Fibonacci (vezi generatoarele Ranrot).
Exemplul 3.4 Să considerăm un 4 − LF SR dat de schema (poarta XOR s-a notat cu ⊕):
- s - - - s -
6
?
²¯
¾ + ¾ ?
±°
Funcţia de ı̂ntoarcere este formată dintr-un singur XOR ı̂ntre primul şi ultimul bit. Să pre-
supunem că iniţial cei patru biţi din registru sunt 1001. La fiecare tact se va obţine o nouă
configuraţie, anume:
0100, 0010, 0001, 1000, 1100, 1110, 1111, 0111, 1011, 0101, 1010, 1101, 0110, 0011
după care apare din nou 1001.
La ieşire va apare secvenţa 1001000111101011. Acest circuit asigură un generator de pe-
rioadă 16.
Să considerăm un polinom g(X) ∈ Z2 [X], grad(g(X)) = n şi fie m cel mai mic număr
astfel ca g(X)|X m + 1. Atunci secvenţa binară generată de un n − LF SR asociat lui g(X) are
perioada m (este o m - secvvenţă).
Dacă g(X) este un polinom ireductibil peste Z2 , atunci m = 2n − 1, iar aceasta este valoarea
maximă posibilă (egalează numărul de stări distincte posibile din n − LF SR). Toate detaliile
teoretice care justifică aceste afirmaţii se găsesc ı̂n [1].
Lema 3.1 Un polinom g(X) ∈ Z2 [X] este ireductibil dacă şi numai dacă
Demonstraţie: Exerciţiu.
În [5] pag. 376 este dat un tabel cu aproape 300 polinoame ireductibile de diverse grade.
Evident, un n − LF SR este un generator de secvenţe, dar proprietatea lor pseudo-aleatoare
este extrem de slabă; o stare internă oferă următorii n biţi din secvenţa de ieşire. Chiar dacă
funcţia de ı̂ntoarcere nu este cunoscută, ea poate fi determinată pe baza a 2n biţi de ieşire
(Algoritmul de decodificare Berlekamp - Massey). Totuşi, prin combinarea mai multor circuite
LF SR se pot obţine generatori de numere aleatoare acceptabili.
LF SR2 - 0
EM U X -
LF SR3 - 1
LF SR1 -
de ieşire. Apoi se numără de câte ori ieşirea din LF SR2 coincide cu ieşirea din generator. Dacă
nu s-a ghicit corect, cele două secvenţe coincid cam 50%; dacă s-a ghicit corect, ele coincid cam
75%.
Similar, ieşirea generatorului coincide cu cea din LF SR3 cam 75% din timp. Cu aceste
corelări secvenţa poate fi ghicită complet. Într-un articol din 1991, Zeng ş.a. ([8]) arată că
dacă polinoamele ireductibile au câte trei termeni iar cel mai mare LF RS este de lungime n,
atunci o secvenţăe 37n biţi la ieşirea din generator este suficientă pentru determinarea stărilor
interne din toţi LF SR.
Genratorul Geffe poate fi extins la 2k + 1 LF SR legaţi printr-un M U Xk . Acest lucru nu va
mări ı̂nsă securitatea generatorului.
LF SR2 a2 (t)
-
»
LF SR1 a1 (t)
- ¥¥ »
-6 ? -
- -
6 6 ¼ - b(t)
6 ¦¦ ¼
s - a3 (t)
LF SR3 -
CK s -6
Acest generator controlează ceasurile celor trei circuite. Astfel, ceasul de intrare ı̂n LF SR2
este controlat de ieşirea din LF SR1 ; ı̂n acest fel, LF SR2 şi schimbă starea la momentul
t numai dacă ieşirea din LF SR1 a fost 1 la momentul t − 1.
Nu se cunosc studii asupra complexităţii acestui generator. El totuşi nu a rezistat at-
acurilor corelate ([8]).
» LF SR2 -
LF SR1 s -
- ¡¥ »
- ? -6 ? -
6 ¼ -
6 » -
?XX
- -e 6 ¢¦ ¼
³³ -
s - -
¼ LF SR3
CK s - ? -6
Când ieşirea din LF SR1 este 1 e activează LF SR2 ; ı̂n caz contrar este activat LF SR3 .
Ieşirea din generator este un XOR dintre cele două ieşiri.
Acest generator are o perioadă mare. Există un atac prin corelare asupra sa (mai precis
asupra LF SR1 ), dar acesta nu a slăbit substanţial siguranţa sa.
3.5. ALTE GENERATOARE DE NUMERE PSEUDO-ALEATOARE 41
• Generator Gollmann: Este o legare serială ”ı̂n cascadă” a mai multor circuite LF SR,
ceasul fiecărui LF SR fiind controlat de circuitul anterior.
1 - -
¡¥ »6 » ¡ ¡¥ »
6 » ¡¥ ·
?
- -? -
s -?
LF SR1 - -s - LF SR2 - - LF SR2 - -...
- -
¢¦ ¼
6 ¼ ¢ ¢¦ ¼
6 ¼ ¢¦ ¸
6 ? -6 ? -6
CK s s s - ...
Dacă la momentul t − 1 ieşirea din LF SRi este 1, atunci la momentul t este activat
LF SRi+1 . Ieşirea din generator este ieşirea din ultimul LF SR. Dacă toate circuitele
liniare au aceiaşi lungime n, complecitatea unui generator Gollmann cu k LF SR-uri este
n · (2n − 1)k−1
1. n ←− 4;
2. while n ≤ M AX do
Suma intermediară S este stocată pe 64 biţi. Valoarea M AX este stabilită ı̂n funcţie de
lungimea secvenţei de numere pseudo-aleatoare generate.
Implementat ı̂n limbaj de asamblare, algoritmul este extrem de rapid, deoarece aici există
o instrucţiune de ı̂nmulţire a două numere ı̂ntregi pe 32 biţi fiecare, cu rezultatul pe 64 biţi.
Scris ı̂ntr-un limbaj de nivel ı̂nalt, algoritmul foloseşte numere ı̂n virgulă mobilă cu o mantisă
de 63 biţi.
Condiţia de inseparabilitate spune că pentru şiruri suficient de lungi nu există un algoritm
probabilist care să decidă dacă şirul a fost selectat urmând distribuţia Xn sau Yn . Intuitiv, nu
se poate face distincţie ı̂ntre distributia aleatoare şi cea uniformă.
Vom nota cu Un distribuţia uniformă pe {0, 1}n ; adică ∀α ∈ {0, 1}n ,
1
P rx∈Un (x = α) = n
2
Definiţia 3.4 Şirul {Xn } este pseudo-aleator dacă este inseparabil ı̂n timp polinomial de {Un }.
Algoritmul A din Definiţia 3.3 este numit test statistic ı̂n timp polinomial. Exemple de teste
statistice se găsesc ı̂n [3]. De asemenea, Marsaglia a construit ı̂n 1996 pachete de teste folosite
astăzi ca standard de securitate pentru generatorii de numere pseudo-aleatoare.
1. p > k;
2. {Gp }p este pseudo-aleator, unde Gp este distribuţia pe {0, 1}p obţinută astfel:
[1] A.Atanasiu - Teoria codurilor corectoare de erori, Editura Univ. Bucureşti, 2001;
[4] P. L´ Ecuyer - Random Numbers for Simulation, Comm ACM 33, 10(1990), 742-749, 774.
[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
4.1 Introducere
Am văzut că sistemele bazate pe chei publice nu necesită un canal sigur pentru transmiterea
unei chei private. Aceste avantaj este compensat ı̂nsă de faptul că un canal cu cheie publică este
mult mai lent decât unul cu cheie privată, el necesitând protocoale, procedee de autentificare
etc.
În această prelegere vom aborda această problemă, de stabilire a unor modalităţi de a
schimba mesaje ı̂ntre mai mulţi utilizatori, folosind protocoale rapide, fiecare având propria sa
cheie privată. Protocoalele vor consta din două părţi principale:
1. Distribuirea cheilor: un protocol prin care o persoană alege cheia privată şi o transmite
mai departe.
2. Punerea de acord: toţi participanţii stabilesc o cheie privată folosind un canal public.
Baza de comunicare constă dintr-o reţea (nesigură) care leagă n utilizatori. În general se
presupune că există o autoritate A numită arbitru, considerată apriori ca fiind onestă; ea
va verifica identităţile utilizatorilor, alegerea şi transmiterea cheilor iniţiale, precum şi alte
probleme curente.
Deoarece reţeaua nu este sigură, participanţii trebuie să prevadă unele atacuri din partea
lui Oscar. Acesta poate fi pasiv (adică doar să intercepteze mesaje) sau activ. Un adversar
activ este capabil să:
• modifice un mesaj ı̂n cursul transmisiei;
• transmită mesaje vechi;
• ı̂ncerce să se prezinte ca unul din utilizatorii reţelei.
Obiectivul lui Oscar este:
• Să ı̂i facă pe U şi V să accepte o cheie invalidă
• Să ı̂i facă pe U şi V să creadă că au schimbat chei ı̂ntre ei.
Scopul protocolului de distribuţie a cheilor sau al punerii de acord este ca ı̂n final cei doi
participanţi să deţină aceaşi cheie K, necunoscută de ceilalţi participanţi (exceptând eventual
A).
43
44 PRELEGEREA 4. PROTOCOALE DE DISTRIBUIRE A CHEILOR
Observaţii:
• Aplicaţia gU (x) de la pasul 3 este o aplicaţie afină, de forma gU (x) = aU + bu x, unde
aU = a + brU (mod p), bU = b + crU (mod p).
4.2. PREDISTRIBUIREA CHEILOR 45
• La pasul 4, U poate calcula cheia privată KU,V = f (rU , rV ) = gU (rV ), iar V – ı̂n mod
similar – KV,U = f (rU , rV ) = gV (rU ).
Exemplul 4.1 Să presupunem că sunt 3 utilizatori U, V, W şi p = 17. Cheile lor publice sunt
rU = 12, rV = 7, rW = 1.
Presupunem că arbitrul alege a = 8, b = 7, c = 2. Atunci
f (x, y) = 8 + 7(x + y) + 2xy
Polinoamele g sunt acum
gU (x) = 7 + 14x, gV (x) = 6 + 4x, gW (x) = 15 + 9x.
Cele trei chei private sunt KU,V = 3, KU,W = 4, KV,W = 10.
U poate calcula KU,V prin gU (rV ) = 7 + 14 · 7 = 3 (mod 17);
V poate calcula KV,U prin gV (rU ) = 6 + 4 · 12 = 3 (mod 17).
Să arătăm că nici un utilizator nu poate obţine informaţie asupra cheilor private ale celorlalţi
utilizatori.
Teorema 4.1 Protocolul Blom pentru k = 1 este necondiţionat sigur contra oricărui atac
individual.
Demonstraţie: Să presupunem că utilizatorul W doreşte să calculeze cheia KU,V = a + b(rU +
rV ) + crU rV mod p.
Valorile rU şi rV sunt publice, dar a, b, c sunt secrete. W cunoaşte propriile sale valori
aW = a + brW , bW = b + crW (mod p), care sunt coeficienţii propriului său polinom gW (x).
Vom arăta că informaţia deţinută de W este consistentă cu orice valoare posibilă m ∈ Zp a
cheii KU,V . Deci W nu poate obţine nici o informaţie asupra cheii KU,V . Să considerăm ecuaţia
matricială ı̂n Zp :
1 rU + rV rU rV a m
1 rW 0
b = aW
0 1 rW c bW
Prima ecuaţie este de fapt KU,V = m, iar celelalte două dau informaţia furnizată de gW (x)
despre a, b, c.
Determinantul matricii este
2
rW + rU rV − (rU + rV )rW = (rW − rU )(rW − rV )
unde toate calculele sunt efectuate ı̂n Zp . Cum rW este distinct de rU şi rV , acest determinant
este nenul, deci sistemul admite o soluţie unică (a, b, c). Cu alte cuvinte, orice valoare m ∈ Zp
este compatibilă cu informaţia deja deţinută de W . 2
O coaliţie ı̂ntre doi utilizatori W, X poate conduce la aflarea cheii KU,V . W şi X ştiu că:
aW = a + brW
bW = b + crW
aX = a + brX
bX = b + crX
Acesta este un sistem de 4 ecuaţii cu 3 necunoscute, din care se poate afla imediat soluţia
unică (a, b, c). După ce s-au aflat aceste trei valori, se poate construi polinomul f (x, y), din
care se poate determina mai departe restul informaţiei.
46 PRELEGEREA 4. PROTOCOALE DE DISTRIBUIRE A CHEILOR
Acest protocol poate fi generalizat pentru a rezista la atacul unei alianţe de k utilizatori.
Singura modificare se face la pasul 2, unde arbitrul foloseşte polinomul
k X
X k
f (x, y) = ai,j xi y j (mod p)
i=0 j=0
De remarcat că arbitrul nu trebuie să cunoască aU pentru a produce certificatul. Când U
intră ı̂n reţea, se generează un astfel de certificat, care poate fi păstrat ı̂n baza de date sau
poate fi comunicat chiar de U la fiecare utilizare. Semnătura lui A permite oricui să verifice
autenticitatea informaţiei pe care o conţine.
O cheie privată pentru U şi V este definită
Ea poate fi construită atât de U , prin KU,V = baVU (mod p) cât şi de V prin KU,V =
baUV (mod p) (reamintim, aU , aV sunt private, bU , bV sunt publice).
Exemplul 4.2 Să presupunem p = 25307 şi α = 2. Dacă luăm aU = 3578, vom avea bU =
23578 = 6113 (mod 25307), valoare pusă ı̂n certificatul lui U .
Să presupunem că V alege aV = 19956; atunci
bV = 219956 = 7984 (mod 25307).
U poate calcula cheia comună KU,V = 79843578 = 3694 (mod 25307).
Aceiaşi cheie este calculată şi de V :
KU,V = 611319956 = 3694 (mod 25307).
4.3. KERBEROS 47
Să studiem securitatea acestui protocol contra unui atac (activ sau pasiv). Semnătura lui
A pe certificate ı̂mpiedică producerea de informaţii publice false. Deci vor rămâne ı̂n discuţie
numai atacurile pasive, care se reduc la problema: W poate determina KU,V dacă nu este U
sau V ? Altfel spus: fiind date αaU şi αuV , ambele (mod p), se poate calcula αaU aV (mod p) ?
Aceasta este cunoscută şi sub numele de problema Diffie - Hellman, formulată astfel:
Fie I = (p, α, β, γ) unde p este număr prim, α ∈ Zp este primitiv, iar β, γ ∈ Zp∗ .
Se poate determina β logα γ (mod p) ?
(sau – echivalent, γ logα β (mod p))
Evident, securitatea protocolului Diffie - Hellman de predistribuire a cheii faţă de atacurile
pasive este echivalent cu dificultatea problemei Diffie - Hellman.
Dacă W poate calcula aU (sau aV ) plecând de la bU (bV ), el poate deduce KU,V aşa cum
face U (respectiv V ). Aceasta conduce la rezolvarea unei probleme de logaritm discret. Deci,
dacă problema logaritmului discret ı̂n Zp este dificilă, atunci protocolul de predistribuire a cheii
Diffie - Hellman nu poate fi atacat. Conjectura este aceea că problema Diffie - Hellman este
echivalentă cu problema logaritmului discret (aşa cum s-a conjecturat că spargerea sistemului
RSA este echivalentă cu factorizarea unui număr).
Teorema 4.2 A sparge sistemul de criptare El Gamal este echivalent cu a rezolva problema
Diffie - Hellman.
Demonstraţie: Să 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 ∈ Zp se face
alegând aleator un număr k ∈ Zp−1 ; apoi eK (x, p) = (y1 , y2 ) unde
y1 = α k (mod p), y2 = xβ k (mod p)
Pentru y1 , y2 ∈ Zp∗ , decriptarea este definită prin
dK (y1 , y2 ) = y2 (y1a )−1 (mod p)
Să presupunem că dispunem de un algoritm A care rezolvă problema Diffie - Hellman şi ı̂ncercăm
un atac asupra mesajului criptat (y1 , y2 ). Aplicând A asupra intrărilor p, α, y1 şi β avem:
A(p, α, y1 , β) = A(p, α, αk , αa ) = αka = β k (mod p)
De aici rezultă x = y2 (β k )−1 (mod p), deci se poate decripta mesajul (y1 , y2 ).
Invers, să presupunem că dispunem de un algoritm B de decrptare pentru sistemul El Gamal.
Deci B admite la intrare (p, α, β, y1 , y2 ) şi calculează
³ ´−1
x = y2 y1logα β (mod p).
Fiind dată o apariţie (p, α, β, γ) a problemei Diffie - Hellman, se poate calcula uşor
µ³ ´ ¶−1
logα β −1
B(p, α, β, γ, 1) −1
=1 γ = γ logα β (mod p)
2
4.3 Kerberos
Un punct slab ı̂n metodele de predistribuire a cheilor prezentate este acela că fiecare pereche
de utilizatori primeşte mereu aceeaşi cheie. Acest lucru, pe o perioadă de timp mai lungă
pericilitează confidenţialitatea cheii. Este mult mai indicat să se calculeze câte o cheie nouă
(freshness) pentru fiecare contact direct.
48 PRELEGEREA 4. PROTOCOALE DE DISTRIBUIRE A CHEILOR
În plus, dacă se utilizează o distribuţie a cheilor ı̂n direct, nici un utilizator nu va mai fi
nevoit să stocheze cheile de comunicare cu ceilalţi utilizatori (ı̂nafara cheii de comunicare cu
arbitrul, bineı̂nţ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 răspândite sisteme de gestiune a cheilor. Să prezentăm
protocolul de fabricare a cheilor de sesiune asigurat de acest sistem.
Fiecare utilizator U ı̂mparte cu arbitrul o cheie DES notată KU . Ultimele versiuni folosesc
modul CBC de implementare a sistemului DES.
ID(U ) reprezintă o informaţie publică care identifică utilizatorul U . La solicitarea lui U de
a comunica cu V , arbitrul efectuează următorii paşi:
• Generează o cheie K;
• Înregistrează ora T a cererii;
• Stabileşte o durată L de validitate a lui K; deci cheia de sesiune este validă ı̂n intervalul
de timp [T, T + L].
Aceste informaţii sunt transmise de A lui U , apoi V . Protocolul Kerberos este următorul:
1. A generează K, T şi L.
2. A calculează
m1 = eKU (K, ID(V ), T, L), m2 = eKV (K, ID(U ), T, L)
pe care le trimite lui U .
4. V află K, T, L, ID(U ) din dKV (m2 ) şi T, ID(U ) din dKV (m2 ). Verifică dacă cele
două valori pentru T şi ID(U ) sunt identice.
5. V calculează
m4 = eK (T + 1)
pe care ı̂l trimite lui U .
Fiecare din cele patru mesaje mi transmise are rolul său bine determinat. Astfel, m1 şi m2
servesc la transmiterea confidenţială a cheii K. La rândul lor, m3 şi m4 asigură o confirmare a
cheii; după primirea ei, U şi V sunt siguri că dispun de aceeaşi cheie de sesiune K.
Rolul lui T şi L este acela de protejare contra unui atac activ constând din ı̂nregistrarea
unor mesaje vechi şi retransmiterea lor ulterior.
Unul din slabiciunile sistemului Kerberos constă ı̂n imposibilitatea unei sincronizări a cea-
surilor utilizatorilor. În practică se admit anumite decalaje, stabilite de comun acord. În plus,
spargerea sistemului DES a condus la renunţarea treptată la sistemul Kerberos.
4.4. SCHIMBUL DE CHEI DIFFIE - HELLMAN 49
La sfârşitul protocolului, U şi V obţin aceeaşi cheie K = αaU aV (mod p). Procedeul este
asemănător cu cel de predistribuire a cheii, cu diferenţa că exponenţii aU şi aV se schimbă la
fiecare sesiune.
Acest protocol este ı̂nsă vulnerabil la un atac activ al unui intrus W , care se interpune ı̂ntre U
şi V ı̂n modul următor:
α aU - αaU
0
-
U ¾ α a0V W ¾ αaV V
W interceptează mesajele lui U şi V şi le ı̂nlocuieşte cu ale sale. La sfârşitul lui, W a stabilit
0 0
o cheie de comunicaţie αaU aV cu U şi o cheie αaU aV cu V . Când U doreşte să trimită un mesaj
lui V , el va utliliza cheia pe care o ı̂mparte cu W ; acesta poate decripta mesajul şi apoi să ı̂l
cripteze cu cheia comună cu V . Acesta primeşte mesajul, fără să realizeze că a fost citit de W .
Acelaşi lucru se ı̂ntâmplă ı̂n cazul unui mesaj trimis de V către U .
Este necesar deci ca utilizatorii să şi autentifice punerea de acord a protocolului de stabilire
a cheilor. Acesta va fi numit protocol de punere de acord autentificat. Un astfel de acord, bazat
pe schimbul de chei Diffie - Helmann este numit protocol ı̂ntre staţii (ST S) şi este construit de
Diffie, Van Oorschot şi Wiener. O variantă ST S simplificată este:
50 PRELEGEREA 4. PROTOCOALE DE DISTRIBUIRE A CHEILOR
1. U generează aleator un număr aU ∈ [0, p − 2]; apoi calculează numărul αaU (mod p)
pe care ı̂l trimite lui V ;
3. V calculează αaV (mod p), apoi K = (αaU )aV (mod p) şi yV = sigV (αaV , αaU ).
Trimite lui U mesajul (C(V ), αaV (mod p), yV ).
4. U calculează K = (αaV )aU (mod p) şi verifică C(V ) cu verA , apoi yV cu verV extras
din C(V );
În această schemă, numărul prim p şi elementul primitiv α ∈ Zp sunt publice. Fiecare utilizator
U dispune de un protocol privat de semnătură sigU şi unul public de verificare verU . Arbitrul
A are de asemenea asociate funcţiile sigA respectiv verA . Certificatul lui U este
C(U ) = (ID(U ), verU , sigA (ID(U ), verU ))
Informaţiile schimbate ı̂n cadrul protocolului ST S simplificat sunt schematizate de diagrama
următoare:
α aU -
¾ α , sigV (αaV , αaU )
aV
U V
sigU (αaU , αaV ) -
Prin acest protocol, un intrus W nu se mai poate interpune ı̂ntre U şi V . Într-adevăr, dacă W in-
0 0
terceptează αaU şi ı̂l ı̂nlocuieşte cu αaU , el va trebui să ı̂nlocuiască de asemenea şi sigV (αaV , αaU )
0
cu sigV (αaV , αaU ), ceea ce nu poate decât ı̂n cazul aU = a0U şi aV = a0V (pentru că nu cunoaşte
sigV ).
0 0
La fel, W nu poate ı̂nlocui sigU (αaU , αaV ) cu sigU (αaU , αaV ), pentru că nu cunoaşte sigV .
Varianta aceasta de protocol nu oferă totuşi o confirmare a cheii. Pentru aceasta trebuie
modificat yV = eK (sigV (αaV , αaU )) ı̂n pasul 3 şi yU = eK (sigU (αaU , αaV )) ı̂n pasul 5.
În acest fel, ca la Kerberos, se obţine o confirmare a cheii decriptând o parte cunoscută a
cheii de sesiune. Acesta este protocolul ST S complet.
3. U calculează K = saVU brVU (mod p), iar V calculează K = saUV brUV (mod p).
Exemplul 4.3 Să luăm p = 27803 şi α = 5. Dacă U alege aU = 21131, el va calcula bU =
521131 = 21420 (mod 27803), pe care ı̂l pune ı̂n certificatul său. La fel, dacă V alege aV = 17555,
va avea bV = 517555 = 17100 (mod 27803)
Presupunem că U selectează rU = 169; el va trimite lui V
sU = 5169 = 6268 (mod 27803).
Dacă V alege rV = 23456, el trimite lui U
sV = 523456 = 26759 (mod 27803).
Acum se poate calcula
KU,V = saVU brVU (mod p) = 2675921131 17100169 = 21600 (mod 27803)
Aceeaşi cheie 21600 o obţine şi V .
Semnătura arbitrului elimină posibilitatea interpunerii lui Oscar. Într-adevăr, dacă un intrus
W se interpune ı̂ntre U şi V , va avea loc scenariul
0
C(U ), αrU - C(U ), αrU -
0
U ¾ C(V ), αrV W ¾ C(V ), αrV V
0
În acest moment, U şi V vor calcula chei diferite: U calculează K = αrU aV +rV aU (mod p),
0
iar V calculeazăK = αrU aV +rV aU (mod p). În plus, nici una din cheile lui U sau V nu pot fi
calculate de W , pentru că aceasta ar solicita cunoaşterea exponentului secret aU respectiv aV .
Deci, deşi U şi V obţin chei distincte, nici una din ele nu poate fi calculată şi de W (ı̂n ipoteza
că problema logaritmului discret este dificilă). Altfel spus, U şi V sunt siguri că nici o altă
persoană nu poate calcula cheia. Această proprietate este numită autentificare implicită.
Pentru atacuri pasive, securitatea sistemului M T I se reduce tot la dificultatea problemei
Diffie - Hellman.
distincte). Cum grupul multiplicativ Zn∗ este izomorf cu Zp ×Zq , ordinul maxim al unui element
din Zn∗ este deci cmmmc(p − 1, q − 1) = 2p1 q1 . Fie α ∈ Zn∗ de ordin 2p1 q1 . Vom utiliza problema
logaritmului discret ı̂n subgrupul ciclic al lui Zn∗ , generat de α.
În acest protocol, factorizarea n = pq este cunoscută numai de către arbitru. Valorile n, α
sunt publice, iar p, q sunt secrete (deci şi p1 , q1 ). A alege un exponent de criptare RSA public,
să spunem e. Exponentul de decriptare d = e−1 (mod φ(n)) este secret.
Fiecare utilizator U are un identificator C(U ) şi primeşte de la A o cheie publică auto-
certificată pU conform următorului protocol:
3. A calculează pU = (bU − ID(U ))d (mod n), pe care ı̂l trimite lui U .
Exemplul 4.4 Să presupunem p = 839 şi q = 863. Vom avea n = 724057 şi φ(n) = 722356.
Elementul α = 5 are ordinul 2p1 q1 = φ(n)/2.
Dacă arbitrul A alege e = 84453 drept exponent de criptare, vom avea d = 125777.
Dacă ID(U ) = 500021 şi aU = 111899, vom avea bU = 488889 şi pU = 650704. În mod
similar, considerăm ID(V ) = 500022 şi aV = 123456, deci bV = 111692, pV = 683556.
Dacă U şi V vor să stabilească o cheie comună şi U alege numărul rU = 56381, iar V
numărul rV = 356935, vom avea sU = 171007, sV = 320688.
După protocol, cei doi vor dispune de cheia K = 42869.
4.4. SCHIMBUL DE CHEI DIFFIE - HELLMAN 53
0 0
V calculează deci cheia K 0 = αrU aV +rV aU (mod n), iar U calculează K = αrU aV +rV aU (mod n).
a0 0
W obţine K 0 calculând K 0 = sVU (peV + ID(V )))rU (mod n).
W şi V posedă deci aceeaşi cheie, ı̂n timp ce V crede că o ı̂mparte cu U . În acest moment,
W poate decripta mesajele trimise de V pentru U .
Prelegerea 5
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 Pi află un punct
(xi , yi ) de pe graficul acestui polinom.
Fie acum o submulţime {Pi1 , . . . , Pit } de participanţi care doresc să reconstituie cheia. Ei ştiu
valorile xij şi yij = a(xij ) pentru 1 ≤ j ≤ t; a(X) ∈ Zq [X] este polinomul (secret) folosit de D.
Cum gradul lui este cel mult t − 1, putem scrie
a(X) = a0 + a1 X + . . . + at−1 X t−1
unde a0 = K iar a0 , . . . , at−1 ∈ Zq sunt necunoscute. Ele se află rezolvând sistemul liniar
de t ecuaţii yij = a(xij ). Dacă ecuaţiile sunt independente, soluţia este unică, iar valoarea lui
a0 este chiar cheia K.
Exemplul 5.1 Să presupunem p = 17, t = 3, w = 5, iar xi = i, (1 ≤ i ≤ 5). Dacă
B = {P1 , P3 , P5 } vor să afle cheia aducând fiecare informaţiile 8, 10 şi respectiv 11, ei vor
scrie polinomul general a(X) = a0 + a1 X + a2 X 2 şi vor reduce problema la rezolvarea ı̂n Z17 a
sistemului liniar
a(1) =
a0 + a1 + a2 = 8
a(3) = a0 + 3a1 + 9a2 = 10
a(5) = a0 + 5a1 + 8a2 = 11
Acesta admite soluţia unică ı̂n Z17 : a0 = 13, a1 = 10, a2 = 2.
Deci valoarea căutată este K = 13.
Teorema 5.1 În sistemul confidenţial al lui Shamir, orice mulţime B de t participanţi poate
reconstitui ı̂n mod unic cheia K.
Evident, acesta este un polinom de grad cel mult t − 1, cu proprietatea yij = a(xij ), ∀j =
1, . . . , t. Cum un astfel de polinom este unic, rezultă că el este chiar polinomul căutat.
Un grup B de t participanţi poate calcula a(X) pe baza acestei formule. De fapt, nici nu
este nevoie se determine tot polinomul: este suficient să obţină K = a(0). Deci, ı̂nlocuind ı̂n
formulă pe X cu 0, avem
t
X Y xik
K= yij .
j=1 xik − xij
1≤k≤t
k 6= j
Dacă definim
Y xik
bj = (1 ≤ j ≤ t),
xik − xij
1≤k≤t
k 6= j
aceste valori pot fi precalculate şi făcute publice de către arbitru. Cheia este atunci o combinaţie
liniară de t componente:
t
X
K= bj yij .
j=1
Exemplul 5.2 Să revenim la Exemplul 5.1. Participanţii {P1 , P3 , P5 } pot calcula b1 , b2 , b3 ;
se obţine (calculele sunt făcute modulo 17):
x3 x5
b1 = = 3 ∗ 5 ∗ (−2)−1 ∗ (−4)−1 = 4.
(x3 − x1 )(x5 − x1 )
Similar, b2 = 3, b5 = 11. Cu componentele 8, 10 şi 11, cheia se determină imediat:
K = 4 ∗ 8 + 3 ∗ 10 + 11 ∗ 11 = 13 (mod 17)
Evident, t − 1 participanţi nu pot obţine cheia K. Chiar dacă pun ı̂n comun componentele lor,
ei pot determina valoarea K − y, unde y este componenta celui care lipseşte. Cum y este o
valoare aleatoare din Zm , nu se va obţine nici o informaţie suplimentară referitoare la cheie.
Acesta este deci un sistem confidenţial (t, t).
Exemplul 5.3 Fie P= {P1 , P2 , P3 , P4 } şi Γ0 = {{P1 , P2 , P4 }, {P1 , P3 , P4 }, {P2 , P3 }}. Vom avea
Γ= {{P1 , P2 , P4 }, {P1 , P3 , P4 }, {P2 , P3 }, {P1 , P2 , P3 }, {P2 , P3 , P4 }, {P1 , P2 , P3 , P4 }}.
Invers, fiind dat Γ, se vede imediat că Γ0 este mulţimea părţilor sale minimale.
În cazul structurilor confidenţiale de acces, baza este mulţimea submulţimilor formate cu t
participanţi.
1. xout ← K;
2. pentru orice poartă G din care iese un arc marcat x, iar arcele care intră sunt
nemarcate, execută:
(a) Dacă G este o poartă OR, atunci xV ← x pentru orice arc V care intră ı̂n G;
(b) Dacă G este o poartă AN D şi V1 , . . . , Vt sunt arcele care intră ı̂n G, atunci
i. Alege aleator xV,1 , . . . , xV,t−1 ∈ Zm ;
t−1
X
ii. Calculează xV,t = x − xV,i (mod m);
i=1
iii. Marchează arcul Vi cu xV,i , (1 ≤ i ≤ t).
Exemplul 5.4 Pentru mulţimea din Exemplul 5.3, avem Γ0 = {{P1 , P2 , P4 }, {P1 , P3 , P4 },
{P2 , P3 }}, deci se poate asocia expresia booleană
(P1 ∧ P2 ∧ P4 ) ∨ (P1 ∧ P3 ∧ P4 ) ∨ (P2 ∧ P3 ).
Circuitul monoton asociat este desenat mai jos; ı̂n paralel au fost marcate şi arcele, conforma
algoritmului descris:
x1 x2 x3 x4
u u u u
? -
¾ ?
¾ ? - ¾ ? -
a1 a2 K−a1 −a2 c1 K−c1 K−b1 −b2 ?
b2??b1
??? ??
½¼ ¹¸ ½¼
? K -K ¾ K ?
§???¦
¹¸
K ?
Aici a1 , a2 , b1 , b2 , c1 , c2 sunt numere alese aleator ı̂n Zm . Fiecare participant primeşte drept
componentă două numere:
1. a1 şi b1 pentru P1 ,
2. a2 şi c1 pentru P2 ,
3. b2 şi K − c1 pentru P3 ,
4. K − a1 − a2 şi K − b1 − b2 pentru P1 .
Fiecare submulţime autorizată poate calcula valoarea lui K. Astfel, {P1 , P2 , P4 } determină
K = a1 + a2 + (K − a1 − a2 ), submulţimea {P1 , P3 , P4 } calculează K = b1 + b2 + (K − b1 − b2 ),
iar {P2 , P3 } va calcula K = c1 + (K − c1 ).
Exemplul 5.5 Revenind la exemplul anterior, mulţimile maximal neautorizate sunt {P1 , P2 },
{P1 , P3 }, {P1 , P4 }, {P2 , P4 }, {P3 , P4 }. În fiecare caz, pentru determinarea cheii K lipseşte o
informaţie definită aleator. De exemplu, {P1 , P2 } deţin informaţiile a1 , a2 , b1 şi c1 . Pentru a
reconstitui cheia K ar avea nevoie cel puţin de numărul K − a1 − a2 , sau de K − c1 .
Sisteme cu aceeaşi structură de acces pot fi obţinute folosind şi alte circuite.
Exemplul 5.6 Să reluăm Exemplul 5.3 şi să rscriem expresia booleană sub formă normal con-
junctivă:
(P1 ∨ P2 ) ∧ (P1 ∨ P3 ) ∧ (P2 ∨ P3 ) ∧ (P2 ∨ P4 ) ∧ (P3 ∨ P4 )
Construind sistemul confidenţial corespunzător acestei expresii, vom avea următoarea distri-
buţie a componentelor (omitem detaliile):
1. P1 primeşte a1 şi a2 ;
1. P2 primeşte a1 , a3 şi a4 ;
1. P3 primeşte a2 , a3 şi K − a1 − a2 − a3 − a4 ;
1. P4 primeşte a4 şi K − a1 − a2 − a3 − a4 ;
Teorema 5.2 Fie C un circuit boolean monoton. Construcţia sa generează un sistem perfect
de partajare a secretului, a cărui structură de acces este Γ(C).
Demonstraţie: Vom folosi o recurenţă asupra numărului de porţi din circuitul C. Cazul când
C are o singură poartă este banal: dacă poarta este OR, fiecare participant conţine cheia K
şi structura de acces este mulţimea tuturor părţilor nevide ale lui P; dacă poarta este AN D şi
are t intrări, se obţine sistemul confidenţial (t, t) definit anterior.
Să presupunem că pentru j > 1, orice circuit C cu mai puţin de j porţi verifică teorema,
şi fie C un circuit cu j porţi. Vom considera ultima poartă G a acestui circuit (din care iese
rezultatul y). Ea nu poate fi decât OR sau AN D. Dacă G este o poartă OR, să considerăm cele
t arce care intră ı̂n G : Vi (1 ≤ i ≤ t). Acestea sunt arcele de ieşire din t circuite Ci ; conform
ipotezei de inducţie, fiecare astfel de circuit defineşte un sub-sistem de partajare a secretului,
cu structura de acces Γ(Ci ). Vom avea – evident
t
[
Γ(C) = Γ(Ci ).
i=1
Cum valoarea cheii se atribuie fiecărui arc Vi , sistemul va avea structura de acces Γ(C).
Procedeul este similar dacă G este o poartă AN D. În acest caz,
t
\
Γ(C) = Γ(Ci ).
i=1
Deoarece K este repartizată peste toate arcele Vi conform unui sistem confidenţial (t, t),
sistemul total va admite Γ(C) drept structură de acces. 2
Când o mulţime autorizată B doreşte aflarea cheii, ea trebuie să ştie circuitul utilizat de
arbitru pentru construirea sistemului şi să deducă de aici ce componente sunt necesare pentru
parcurgerea arcelor respective. Această informaţie trebuie să fie publică. Numai valoarea
componentelor trebuie să fie secretă.
f : P−→ S
Ea codifică matematic modalitatea de repartizare a informaţiilor ı̂ntre participanţi. f (Pi )
va fi componenta distribuită participantului Pi (1 ≤ i ≤ w).
Pentru fiecare K ∈ K, fie F K mulţimea tuturor distribuţiilor posibile ale cheii K. În general,
F K este publică. Definim [
F= FK.
K∈K
F este ansamblul complet al tuturor distribuţiilor posibile de chei. Rolul arbitrului va fi de
a selecta aleator un element f ∈ F K şi de a distribui componentele ı̂n conformitate cu această
alegere.
Pentru o submulţime B ⊆ P (autorizată sau nu) de participanţi, se defineşte S(B) =
{f |B | f ∈ F}, unde funcţia fB : B −→ S este restricţia distribuţiei de părţi f la submulţimea
B; ea este deci definită prin fB (Pi ) = f (Pi ), ∀Pi ∈ B.
Deci S(B) este mulţimea tuturor distribuţiilor posibile ale componentelor la elementele
submulţimii B.
Ne punem acum problema evaluării performanţelor sistemelor perfecte de partajare a se-
cretelor construite anterior, pe baza structurilor de acces monotone.
În cazul unui sistem confidenţial (t, w), circuitul boolean construit pe baza expresiei ı̂n forma
normal disjunctivă are 1 + Cwt porţi. Fiecare participant primeşte o componentă formată din
t−1
Cw−1 numere din Zm . Această partajare este foarte slabă comparativ cu sistemul confidenţial
al lui Shamir (t, w), care oferă acelaşi rezultat folosind componente formate dintr-un singur
număr.
Pentru măsurarea performanţelor sistemelor perfecte de partajare a secretelor, vom folosi
un instrument numit rată de informaţie.
Definiţia 5.4 Considerăm un sistem perfect de partajare a secretelor cu structura de acces Γ.
Rata de informaţie a unui participant Pi este prin definiţie
log2 (card(X))
ρi = .
log2 (card(S(Pi )))
S(Pi ) ⊆ S este mulţimea componentelor posibile pe care le poate primi participantul Pi . S-a
notat cu X = K mulţimea cheilor posibile.
Rata de informaţie a sistemului este
ρ = min{ρi | 1 ≤ i ≤ w}.
Exemplul 5.7 Să comparăm cele două sisteme date ca exemplu ı̂n paragraful anterior. Sis-
log2 m 1
temul din Exemplul 5.4 are rata de informaţie ρ = 2
= .
log2 m 2
log2 m 1
Pentru sistemul din Exemplul 5.6, avem ρ = = .
log2 m3 3
Primul sistem este deci mai bun.
În general, dacă se construieşte un sistem de partajare a secretelor plecând de la un circuit
monoton C, rata sa de informaţie se obţine folosind următoarea teoremă:
Teorema 5.3 Fie C un circuit boolean monoton. Există atunci un sistem perfect de partajare
a secretelor, cu structura de acces Γ(C), care admite
½ ¾
ca rată de informaţie
1
ρ = max
1≤i≤w ri
unde ri este numărul de arce de intrare ı̂n circuit (pentru valorile xi ).
5.5. SISTEMUL DE PARTAJARE AL LUI BRICKELL 63
Evident, este preferabilă o rată de informaţie cât mai mare. Valoarea ei este ı̂nsă limitată
superior, conform teoremei următoare:
Teorema 5.4 Pentru orice sistem perfect de partajare a secretelor cu structura de acces Γ,
rata de informaţie verifică inegalitatea ρ ≤ 1.
Exemplul 5.8 Să considerăm structura de acces cu numărul 9 din Tabelul 5.1; deci d = 2 şi
p ≥ 3. Definim k prin
k (P1 ) = (0, 1), k (P2 ) = (0, 1), k (P3 ) = (1, 1), k (P4 ) = (1, 2).
Aplicând Teorema 5.6 se obţine o structură perfectă de partajare a secretelor, ideală pentru
acest tip de acces.
Rămân de studiat opt structuri de acces. Se poate utiliza construcţia lui Brickell pentru patru
din ele: structurile 11, 14, 15 şi 16.
Exemplul 5.9 Pentru structura de acces 11 vom considera d = 3 şi p ≥ 3. Definiţia lui k este
k (P1 ) = (0, 1, 0), k (P2 ) = (1, 0, 1), k (P3 ) = (0, 1, −1), k (P4 ) = (1, 1, 0).
Calculând, se obţine k (P4 )− k (P1 ) = (1, 1, 0) − (0, 1, 0) = (1, 0, 0) şi
k (P2 )+ k (P3 )− k (P1 ) = (1, 0, 1) + (0, 1, −1) − (0, 1, 0) = (1, 0, 0).
Deci (1, 0, 0) ∈ hk (P1 ), k (P2 ), P(P3 )i şi (1, 0, 0) ∈ hk (P1 ), k (P4 )i.
Mai rămâne de arătat că (1, 0, 0) 6∈ hk (Pi ) | Pi ∈ Bi pentru orice mulţime maximală neau-
torizată B. Există numai trei astfel de mulţimi: {P1 , P2 }, {P1 , P3 }, {P2 , P3 , P4 }. Pentru fiecare
caz se arată că sistemul liniar asociat nu are soluţie. De exemplu, să considerăm sistemul
(1, 0, 0) = a2 k (P2 ) + a3 k (P3 ) + a4 k (P4 )
cu a2 , a3 , a4 ∈ Zp . Se obţine sistemul echivalent
a2 + a4 = 1
a3 + a4 = 0
a2 − a3 = 0
66 PRELEGEREA 5. SISTEME DE PARTAJARE A SECRETELOR
În mod similar se pot construi sisteme perfecte de partajare a secretelor ideale pentru structurile
15 şi 16.
Cele patru sisteme rămase nu admit construcţia unor astfel de sisteme.
Definiţia 5.5 Fie Γ o structură de acces cu baza Γ0 şi K un set de chei. O K - descompunere
ideală a lui Γ0 este un set {Γ1 , . . . , Γn } cu proprietăt ile
1. Γk ⊆ Γ0 (1 ≤ k ≤ n);
n
[
2. Γ k = Γ0 ;
k=1
Teorema 5.7 Fie Γ o structură de acces cu baza Γ0 , K un set de chei şi o K - descompunere
ideală {Γ1 , . . . , Γn } a lui Γ. Pentru fiecare participant Pi , fie Ri = card{k | Pi ∈ P k }.
Există atunci un sistem perfect de partajare a secretelor cu structură de acces Γ şi rată de
informaţie ρ = 1/R, unde R = max {Ri }.
1≤i≤w
Demonstraţie: Pentru 1 ≤ j ≤ s şi 1 ≤ k ≤ n se poate construi un sistem ideal cu baza Γj,k şi
mulţimea de chei K. Vom nota F j,k mulţimea corespunzătoare de distribuţii a componentelor.
Vom construi un sistem cu structura de acces Γ şi mulţimea de chei Ks . Mulţimea sa de
distribuţii de componente F se generează astfel: dacă arbitrul D doreşte să ı̂mpartă cheia
K = (K1 , . . . , Ks ) (pentru 1 ≤ k ≤ n), el va genera aleator o distribuţie de componente
f j,k ∈ F j,k
Kj , pe care le distribuie efectiv participanţilor din P j,k .
În continuare se repetă demonstraţia Teoremei 5.7. 2
Exemplul 5.11 Să considerăm structura de acces 5 din Tabelul 5.1, a cărei bază nu este un
graf multipartit complet.
Fie p un număr prim şi să considerăm două Zp - descompuneri:
Γ = {{P1 , P2 }}
D1 = {Γ1,1 , Γ1,2 } cu 1,1
Γ1,2 = {{P2 , P3 }, {P3 , P4 }}
şi
Γ = {{P1 , P2 }, {P2 , P3 }}
D2 = {Γ2,1 , Γ2,2 } cu 2,1
Γ2,2 = {{P3 , P4 }}
Aceste descompuneri corespund lui K2 şi K1,2 , deci sunt descompuneri ideale. Ambele oferă
o rată de informaţie ρ = 1/2. Dacă le vom combina conform Teoremei 5.8 cu s = 2, vom
obţine o rată de informaţie maximă ρ = 2/3.
Luând ca bază Teorema 5.6, putem obţine efectiv un astfel de sistem. D alege aleator
patru elemente b1,1 , b1,2 , b2,1 , b2,2 ∈ Zp . Pentru o cheie (K1 , K2 ) ∈ Zp2 , arbitrul va distribui
componentele astfel:
1. P1 primeşte b1,1 şi b2,1 ;
2. P2 primeşte b1,1 + K1 , b1,2 şi b2,1 + K2 ;
3. P3 primeşte b1,2 + K1 , b2,1 şi b2,2 ;
4. P4 primeşte b1,2 şi b2,2 + K2 .
(toate calculele sunt efectuate ı̂n Zp ).
Exemplul 5.12 Fie structura de acces 8 din Tabelul 5.1. Vom considera K= Zp pentru un
număr prim p ≥ 3. Vom utiliza două K - descompuneri ideale
Γ = {{P1 , P2 }}
D1 = {Γ1,1 , Γ1,2 } cu 1,1
Γ1,2 = {{P2 , P3 }, {P2 , P4 }, {P3 , P4 }}
şi
Γ = {{P1 , P2 }, {P2 , P3 }, {P2 , P4 }}
D2 = {Γ2,1 , Γ2,2 } cu 2,1
Γ2,2 = {{P3 , P4 }}
D1 corespunde lui K2 şi K3 , iar D2 – lui K2 şi K1,3 ; deci ambele sunt K - descompuneri.
Aplicând Teorema 5.8 cu s = 2 se va obţine ρ = 2/3. Similar exemplului precedent, o construcţie
efectivă se realizează astfel:
68 PRELEGEREA 5. SISTEME DE PARTAJARE A SECRETELOR
D alege aleator (şi independent) patru elemente b1,1 , b1,2 , b2,1 , b2,2 ∈ Zp . Pentru o cheie
(K1 , K2 ) ∈ Zp2 , arbitrul va distribui componentele astfel:
1. P1 primeşte b1,1 + K1 şi b2,1 + K2 ;
2. P2 primeşte b1,1 , b1,2 şi b2,1 ;
3. P3 primeşte b1,2 + K1 , b2,1 + K2 şi b2,2 ;
4. P4 primeşte b1,2 + 2K1 , b21 + K2 şi b2,2 + K2 .
(toate calculele sunt efectuate ı̂n Zp ).
Prelegerea 6
1. Securitatea:
Protocolul de tranzacţie trebuie să asigure un nivel de securitate ridicat, utilizănd tehnici
criptografice. Vor fi prevenite atacuri care ı̂ncearcă să modifice sau să reproducă informa-
ţia transmisă.
2. Anonimitatea:
Această trăsătură permite utilizatorului să rămână anonim ı̂n timpul desfăşurării proto-
colului de tranzacţie.
3. Portabilitatea:
Securitatea şi folosirea sistemului digital nu trebuie să fie dependente de caracteristicile
fizice ale calculatoarelor folosite. În plus, informaţia va putea fi transferată prin orice
reţea de calculatoare, fără să existe o reţea specială care să aiba drepturi separate.
69
70 PRELEGEREA 6. SISTEME ELECTRONICE DE PLATĂ
Protocolul de tranzacţie ı̂ntre două părti trebuie să se desfăşoare ı̂n orice moment, fără
autentificarea unei a treia părţi şi fără ca utilizatorii să fie conectaţi obligatoriu la o
instituţie financiară de control.
6. Divizibilitatea:
O monedă electronică obţinută de utilizator din contul său poate fi ı̂mpărţită ı̂n monezi
de valori mai mici, cu scopul de a fi folosite (separat sau nu) la diferite tranzacţii.
• Un comerciant (sau magazin) care va accepta banii electronici ai clientului, furnizând ı̂n
schimb anumite bunuri. Acesta se va nota S.
• O instituţie financiară (sau bancă, notată B) unde atât clientul, cât şi comerciantul au
conturi deschise. Este posibil să fie o reţea de bănci care comunică şi realizează tranzacţii
ı̂ntre ele, dar noi vom considera pentru simplificare existenţa unei singure bănci.
• Autentificarea utilizatorului: fiecare dintre cele două părţi implicate ı̂ntr-un protocol
trebuie să fie sigură de identitatea celeilalte părţi.
• Integritatea mesajului: destinatarul trebuie să verifice dacă mesajul primit a fost (sau
nu) modificat ı̂n tranzit.
David Chaum, iniţiatorul sistemelor electronice de plată, defineşte ı̂ncă două trăsături de
bază ale acestora:
2. B semnează mesajul x0 : y 0 = sigK (x0 ) = sigK (rb x) = (rb x)a (mod n) ≡ rxa (mod n) şi
trimite y 0 lui B.
La sfârşitul protocolului, U obţine (x, y = sigK (x)): un mesaj semnat valid, astfel ı̂ncât B nu
cunoaşte x.
Observăm ca funcţiile sigK şi verK sunt cele definite ı̂n protocolul de semnătura RSA:
sigK (x0 ) = (x0 )a (mod n)
verK (x0 , y 0 ) = T ⇔ x0 = (y 0 )b (mod n).
• un parametru t
Pentru securitate se recomandă ca q să aibă ı̂n reprezentarea binară minim 150 biţi, p – minim
512 biţi, iar parametrul t – ı̂n jur de 72 biţi.
Numerele (p, q, g) vor fi făcute publice.
Pentru a genera o pereche (cheie publică, cheie privată), un utilizator P alege aleator un
număr s < q şi calculează v = g −s (mod p). s va fi cheia sa privată, iar v cheia sa publică.
Protocolul de Autentificare:
Presupunând că P vrea să ı̂i demonstreze identitatea sa lui V, cei doi parcurg următorul
protocol:
1. P alege aleator un număr r (0 < r < q), calculează b = g r (mod p) pe care-l trimite
lui V.
Propoziţia 6.1 Executand de două ori protocolul de autentificare Schnorr cu acelaşi număr r
ales la pasul 1, ı̂n final V va fi ı̂n posesia cheii secrete s a lui P.
Introducem o funcţie de dispersie H fără coliziuni tari. Presupunem că U doreşte să obţină
de la B o semnătură asupra unui mesaj m. Similar protocolului de autentificare Schnorr, B va
avea cheia publică v şi cheia sa secretă s.
Protocolul de semnătură Schnorr
Propoziţia 6.2 Fie k ≥ 2 un număr natural şi q un număr prim. Pentru orice h ∈ Zq şi orice
(g1 , . . . , gk ) tuplu generator, există exact q k−1 reprezentări ale lui h ı̂n raport cu (g1 , . . . , gk ).
Demonstratie: Cum q este prim, orice element din Zq este primitiv, deci generator al grupului
multiplicativ Zq \ {1}.
Alegem primele k − 1 elemente ale unui k-tuplu (a1 , . . . , ak ) aleator in q k−1 moduri şi din
k
Y k−1
Y
relaţia ai
gi = h (mod q) determinăm gkak = h( giai )−1 (mod q) deci
i=1 i=1
Q ai −1
ak = loggk h( k−1
i=1 gi ) (mod q).
Logaritmul are sens, deoarece din definiţia tuplului generator, gk 6= 1.
Din problema logaritmilor discreţi, ak este unic determinat, deci există exact q k−1 reprezen-
tări ale lui h ı̂n raport cu (g1 , . . . , gk ). 2
Acest rezultat relativ simplu arată că fixând h şi un tuplu generator (g1 , . . . , gk ), printr-o
cautare exhaustivă ı̂n mulţimea k-tuplurilor peste Zq , probabilitatea de a obţine o reprezentare
qk−1 1
a lui h ı̂n raport cu (g1 , . . . , gk ) este = .
qk q
Astfel, suntem ı̂n măsură să enunţăm problema reprezentării ı̂n grupuri cu cardinalul număr
prim.
Problema reprezentării:
Fie q un număr prim, k ≥ 2 un număr natural, (g1 , . . . , gk ) un tuplu generator şi h ∈ Zq .
Să se găsească o reprezentare a lui h ı̂n raport cu (g1 , . . . , gk ) ı̂n Zq , ı̂n cazul ı̂n care aceasta
există.
Definiţia 6.3 Un algoritm probabilist este un algoritm care foloseşte numere aleatoare.
Probabilitatea de succes a unui algoritm probabilist este probabilitatea ca acesta să ofere un
răspuns corect.
Fie 0 ≤ ² < 1. Un algoritm tip Las-Vegas este un algoritm probabilist care pentru orice
apariţie a unei probleme, poate oferi un răspuns ı̂ntotdeauna corect, sau poate eşua şi să nu dea
nici un răspuns cu probabilitatea ². Probabilitatea de succes pentru un algoritm Las-Vegas este
1 − ².
Observaţia 6.1 Dacă construim un algoritm Las-Vegas pentru rezolvarea unei probleme, pu-
1
tem să ı̂l apelăm de un număr mediu de ori pentru a obţine răspuns, care este ı̂ntotdeauna
1−²
corect.
Teorema 6.1 Fie q un număr prim mare. Următoarele afirmaţii sunt echivalente:
76 PRELEGEREA 6. SISTEME ELECTRONICE DE PLATĂ
1. Există 0 < P1 ≤ 1 şi un algoritm probabilist polinomial ı̂n timp A1 care – având la intrare
un tuplu generator de lungime k şi un element h ∈ Zq – calculează o reprezentare a lui h
cu probabilitatea de succes cel puţin P1 .
2. Există 0 < P2 ≤ 1 şi un algoritm probabilist polinomial ı̂n timp A2 care – având la
intrare un tuplu generator de lungime k – calculează o reprezentare netrivială a lui 1 cu
probabilitatea de succes cel puţin P2 .
4. Există 0 < P4 ≤ 1 şi un algoritm probabilist polinomial ı̂n timp A4 care rezolvă prob-
lema logaritmilor discreţi (având la intrare g ∈ Zq \ {1} şi h ∈ Zq , calculează logg h) cu
probabilitatea de succes cel puţin P4 .
• (1) =⇒ (2);
Presupunând existenţa algoritmului A1 şi a lui P1 , fie (g1 , . . . , gk ) intrarea ı̂n algoritmul
A2 . Se introduc ı̂n A1 tuplul generator (g1 , . . . , gk ) şi h = 1. După executarea lui A1 ,
suntem ı̂n posesia unei reprezentări a lui 1 ı̂n raport cu (g1 , . . . , gk ) cu probabilitatea de
succes P2 = P1 .
• (1) =⇒ (3);
Alegem un element arbitrar h ∈ Zq \ {1} şi tuplul generator (g1 , . . . , gk ), intrare pentru
A3 . Se execută A1 care calculează o reprezentare a lui h cu probabilitatea de succes P1 .
Atunci există P3 = P1 .
• (4) =⇒ (1);
Există algoritmul A4 şi probabilitatea 0 < P4 ≤ 1. Construim algoritmul A1 care primeşte
la intrare tuplul generator (g1 , . . . , gk ) şi h ∈ Zq .
1. for i = 1, 2, . . . , k − 1 do
(a) Se generează aleator hi ∈ Zq∗ ;
(b) Se introduc gi , hi ı̂n A4 care calculează ai .
(c) if giai 6= hi (mod q) then STOP (eşec).
k−1
Y
2. Se calculează ak = loggk (h h−1
i ) (mod q);
i=1
3. STOP cu succes şi răspuns (a1 , . . . , ak ).
În cazul ı̂n care A1 se termină cu succes, la pasul 2 avem giai = hi (mod q), ∀i ∈
{1, . . . , k − 1} (deci ai = loggi hi (mod q), ∀i ∈ {1, . . . , k − 1}).
k−1
Y k−1
Y k−1
Y
ak = loggk (h h−1
i ) (mod q) ⇐⇒ gkak = h h−1
i (mod q) ⇐⇒ hi gkak =
i=1 i=1 i=1
k
Y ai
h (mod q) ⇐⇒ gi = h (mod q) ⇐⇒ (a1 , . . . , ak ) este o reprezentare a lui h.
i=1
1
Algoritmul se repetă de un număr mediu de ori pentru fiecare i ∈ {1, . . . , k − 1}
P4
pentru ca ı̂n pasul (b) să obţinem ai = loggi hi (mod q). Deci, algoritmul trebuie rulat
1
de un număr mediu de (k − 1) ori, ceea ce ı̂nseamnă că probabilitatea de succes a
P4
P4
algoritmului A1 este P1 = .
k−1
• (1) =⇒ (4);
În cazul ı̂n care algoritmul de mai sus se terimină cu succes, avem:
k
Y k
Y k
X
ai
h= gi = g ai ui (mod q) =⇒ logg h = ai ui (mod q).
i=1 i=1 i=1
1
Algoritmul se repetă de un număr mediu de ori pentru a obţine o reprezentare corectă
P1
a lui h ı̂n pasul 3. Deci probabilitatea de succes a algoritmului A4 este P4 = P1 .
• (2) =⇒ (4);
• (3) =⇒ (4);
6.5. PROBLEMA REPREZENTĂRII ÎN GRUPURI 79
1. i = 1.
2. Se generează aleator un k-tuplu (u1 , . . . , uk ) ∈ Zqk ;
se calculează gi1 = hui1 , gij = g uij (mod q) pentru j = 2, . . . , k.
3. Se generează aleator o permutare πi ∈ Sk ;
Se rulează algoritmul A3 cu intrarea (gi1 , . . . , giπi (k) ).
4. Fie (ai1 , . . . , aik ) ieşirea lui A3 ;
if (ai1 , . . . , aik) nu e o reprezentare a lui h ı̂n raport cu (gi1 , . . . , gik ) then STOP
(eşec).
5. i = i + 1 goto 1.
6. if u21 a2π−1 (1) = u11 a1π−1 (1) (mod q) then STOP (eşec).
2 1
7. Se calculează
k
X k
X
logg h = (u21 a2π−1 (1) − u11 a1π−1 (1))−1 ( u1j a1π−1 (j) − u2j a2π−1 (j) ) (mod q).
2 1 1 2
j=2 j=2
1
Pentru i = 1 algoritmul se repetă de un număr mediu de ori pentru a obţine o
P3
reprezentare (a11 , . . . , a1k ) a lui h0 .
1
Pentru i = 2 algoritmul se repetă ı̂n cazul cel mai defavorabil de un număr de k ori,
P3
deoarece trebuie repetat pasul 6 de cel mult k ori.
80 PRELEGEREA 6. SISTEME ELECTRONICE DE PLATĂ
1 k k
Astfel, algoritmul se repetă de cel mult = 2 ori până se obţine răspunsul ”succes”.
P3 P3 P3
P32
Deci probabilitatea de succes este cel puţin
k
Cu aceasta echivalenţa celor două probleme din punct de vedere al complexităţii este complet
demonstrată. Deoarece problema logaritmilor discreţi este NP - completă ı̂n Zq pentru valori
mari ale lui q prim, va rezulta că şi problema reprezentării ı̂n Zq este NP-completă.
Corolarul 6.1 Alegâng q prim asfel ı̂ncât problema logaritmilor discreţi este NP-completă, nu
există un algoritm polinomial ı̂n timp care, având la intrare un tuplu generator (g1 , . . . , gk )
scoate la ieşire un număr h ∈ Zq şi două reprezentări diferite ale lui h ı̂n raport cu (g1 , . . . , gk )
cu o probabilitate ne-neglijabilă.
Demonstraţie:
Presupunem, prin reducere la absurd, existenţa unui astfel de algoritm A. Construim
următorul algoritm:
k
Y ai −bi
Evident: gi = 1 (mod q), deci (a1 −b1 (mod q), . . . , ak −bk (mod q)) este o reprezentare
i=1
a lui 1 ı̂n raport cu (g1 , . . . , gk ).
Am construit astfel algoritmul A2 , polinomial ı̂n timp din teorema 6.1, ceea ce contrazice
presupunerea de NP-completitudine a problemei logaritmilor discreţi.
k
Y ai
Corolarul 6.2 Funcţia f : Zqk =⇒ Zq definitiă f (a1 , . . . , ak ) = gi este o funcţie de dispersie
i=1
fără coliziuni tari.
Demonstraţie:
Din Corolarul 6.1, este calculabil dificil să se obţină un număr h ∈ Zq şi două reprezentări
diferite ale acestuia (a1 , . . . , ak ) şi (b1 , . . . , bk ) ı̂n raport cu (g1 , . . . , gk ). Rezultă că este calculabil
dificil să obţinem x = (a1 , . . . , ak ) ∈ Zqk şi x1 = (b1 , . . . , bk ) ∈ Zqk asfel ı̂ncât f (x) = f (x1 ); adică
f este fără coliziuni tari.
Această funcţie de dispersie nu e suficient de rapidă pentru aplicaţii practice, dar constituie
un model teoretic sugestiv.
Teorema 6.2
1. (Completitudinea) Dacă P este ı̂n posesia reprezentării (a1 , . . . , ak ) a lui h ı̂n raport
cu (g1 , . . . , gk ) şi urmează protocolul pas cu pas, atunci V accepta ı̂n pasul 4.
2. (Consistenţa) Dacă P nu cunoaşte o reprezentare a lui h ı̂n raport cu (g1 , . . . , gk ), atunci
nu există o strategie pentru el astfel ı̂ncât V să accepte cu o probabilitate ne-neglijabilă.
3. (Ascunderea informaţiei) Chiar dacă V ar dispune de o putere de calcul nelimitată,
executând protocolul pas cu pas, nu va reuşi să afle ı̂n final reprezentarea cunoscută de P
cu o probabilitate ne-neglijabilă.
Demonstraţie:
1. Presupunând că protocolul este executat corect de ambele părţi, la pasul 4 avem:
k
Y k
Y k
Y k
Y k
Y
zhc = giwi hc = giwi ( giai )c = giwi +ai c = giri (mod q), deci V acceptă la pasul
i=1 i=1 i=1 i=1 i=1
4.
2. P nu cunoaşte o reprezentare a lui h ı̂n raport cu (g1 , . . . , gk ), deci nu poate să respecte
protocolul la pasul 3.
Distingem două situaţii:
• P urmează protocolul ı̂n pasul 1, deci P alege aleator w1 , . . . , wk ∈ Zq şi calculează
k
Y wi
z= gi (mod q).
i=1
După ce primeşte provocarea c a lui V, P trebuie să determine numerele r1 , . . . , rk
care să verifice relaţia din pasul 4:
k
Y k
Y k
Y
ri
zhc = gi (mod p) =⇒ giwi hc = giri (mod q) =⇒
i=1 i=1 i=1
k
Y k
Y (ri −wi )c−1
hc = giri −wi (mod q) =⇒ h= gi (mod q).
i=1 i=1
82 PRELEGEREA 6. SISTEME ELECTRONICE DE PLATĂ
Deci, dacă P reuşeşte să determine r1 , . . . , rk asfel ı̂ncât V să accepte la pasul 4,
el va cunoaşte o reprezentare a lui h ı̂n raport cu (g1 , . . . , gk ) şi anume: ((r1 −
w1 )c−1 , . . . , (rk − wk )c−1 ), ceea ce contrazice ipoteza.
• P nu urmează protocolul din pasul 1, deci P alege un număr z pentru care nu
cunoaşte o reprezentare ı̂n raport cu (g1 , . . . , gk ).
k
Y ri
În pasul 3, P trebuie să determine numerele r1 , . . . , rk astfel ı̂ncât zhc = gi
i=1
c
(mod q), problemă echivalentă cu determinarea unei reprezentări a lui zh ı̂n raport
cu (g1 , . . . , gk ). Cum problema reprezentării este NP-completă pentru p, q convenabil
alese şi protocolul se desfăşoară ı̂n timp real, nici ı̂n acest caz P nu are o strategie
cu o probabilitate de succes ne-neglijabilă pentru a-l convinge pe V să accepte.
cu x ales aleator. Pentru fiecare valoare a unei monezi trebuie folosit un alt exponent de criptare
b şi un exponent de decriptare corespunzator a. Identitatea utilizatorului trebuie inclusă ı̂n
moneda electronică asfel ı̂ncât dacă moneda este folosită corect, identitatea nu poate fi dedusă;
alfel identitatea poate fi calculată.
Pentru aceasta este folosită o tehnică numită Cut-and-Choose: când U doreşte să extragă
o monedă din bancă, construieşte un mesaj format din k perechi de numere (k este numărul de
candidaţi). Aceste numere au proprietatea că dintr-o pereche se poate calcula identitatea lui U
(de exemplu printr-un simplu XOR ı̂ntre cele două numere ale perechii), iar având la dispoziţie
un singur număr din fiecare pereche nu se poate deduce nici o informaţie. U concatenează cei
k candidaţi şi obţine o semnătură ”blind” de la B asupra mesajului trimis cu protocolul de
semnătură ”blind” RSA.
În momentul ı̂n care U doreşte să folosească moneda la magazinul S, primeşte o provocare
de la S de k biţi aleatori. Pentru fiecare bit, U răspunde cu primul număr al perechii core-
spunzătoare numărului bitului (dacă bitul este 0) sau cu al doilea număr – dacă bitul este 1.
(De exemplu, dacă provocarea este 0110 . . . , U răspunde cu primul număr din prima pereche, al
doilea număr din a doua pereche, al doilea număr din a treia pereche etc). Când S depozitează
moneda la bancă, ı̂i trimite lui B provocarea ı̂mpreună cu numerele trimise de U. B păstrează
ı̂ntr-o bază de date moneda ı̂mpreună cu provocarea şi răspunsul lui U.
Dacă U ı̂ncearcă refolosirea monezii, primeşte o nouă provocare aleatoare de k biţi, care
1
diferă de prima ı̂n cel puţin un bit cu o probabilitate destul de mare (1 − k ). Astfel pentru
2
bitul care diferă, U va revela ambele numere ale perechii corespunzătoare. Acum banca poate
calcula din cele două numere identitatea lui U.
83
84 PRELEGEREA 7. SISTEMUL ELECTRONIC DE PLATĂ BRANDS
Deşi este conceptual simplă, această schemă nu este eficientă, deoarece fiecare monedă tre-
buie ı̂nsoţită de 2k numere mari. Modelul Chaum-Fiat-Naor satisface primele patru proprietăţi
definite ı̂n prelegerea anterioară.
Okamoto şi Ohta au descris un sistem universal de plată care satisface toate cele şase
proprietăţi, dar – din păcate – este ineficient din punct de vedere al dimensiunii mesajelor
transmise. În schimb ei au avut ideea de a introduce proprietatea de divizibilitate a monezilor
electronice. Pentru fiecare monedă de valoare d se asociază un arbore binar etichetat astfel:
nodul rădăcină (de nivel 0) are valoarea d, cele două noduri de pe nivelul 1 au etichetele d/2 şi
d
– ı̂n general – nodurile de pe nivelul k sunt etichetate cu k . Dacă d = 2s , arborele are s + 1
2
nivele, cu frunzele având valoarea minimă 1.
Orice sumă mai mică decât d poate fi folosită după următoarele reguli:
1. Odată ce un nod este folosit, toţi succesorii şi predecesorii săi nu vor putea fi folosiţi la o
plată viitoare;
Aceste două reguli asigură folosirea unui singur nod pentru orice drum de la rădăcină la o
frunză, ceea ce face imposibilă folosirea unei valori mai mari decât valoarea rădăcinii d.
Exemplul 7.1 Să presupunem că U are o monedă ı̂n valoare de 4 unităţi. Se construieşte
arborele binar:
²¯
Γ0 ³±°
4a
³ ³ aa
³³
²¯ aa²¯
Γ00 2
±° 2 Γ01
±°
, l ½ Z
,
²¯ l²¯ ²¯
½ Z²¯
1
±° 1
±° 1
±° 1
±°
Γ000 Γ001 Γ010 Γ011
Pentru a realiza o plată de 3 unităţi, U foloseşte Γ00 şi Γ010 . Singurul nod care poate fi
utilizat la o plată viitoare este Γ011 ı̂n valoare de o unitate.
Dacă cel puţin una din cele două reguli este ı̂ncălcată, 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, fiecare utilizator U are o valoare secretă s care relevă identitatea sa, iar fiecare
nod i al arborelui are asignată o valoare secretă ti . Se construieşte dreapta y = sx + ti pentru
fiecare nod i. Când se face o plată utilizând un nod particular n, U va revela ti pentru toţi i
predecesori ai lui n. Magazinul S va trimite o provocare x1 la care U raspunde cu y1 = sx1 + tn .
Dacă acelaşi nod n este folosit a doua oară, U primeşte ı̂ncă o provocare x2 la care răspunde
cu y2 = sx2 + tn , deci U a revelat două puncte (x1 , y1 ), (x2 , y2 ) ale dreptei y = sx + tn , de unde
se poate calcula s şi apoi identitatea lui U.
Dacă se folosesc două noduri n şi m de pe acelaşi drum de la rădăcină la o frunză, pre-
supunem că n este succesor al lui m. Când se foloseşte nodul n se relevă tm ; apoi – dacă se
foloseşte nodul m – U răspunde la provocarea x1 a lui S cu y1 = sx1 + tm .
Deci şi ı̂n acest caz S poate calcula s şi identitatea lui U.
Un alt dezavantaj al acestei scheme ar fi că se pot realiza legături ı̂ntre plăţi, adică se poate
deduce dacă două plăţi provin din aceeaşi monedă şi deci, de la aceeaşi persoană.
7.2. INIŢIALIZAREA SISTEMULUI BRANDS 85
Protocoalele discutate până acum pot să detecteze identitatea utilizatorilor necinstiţi, fără
ı̂nsă a putea preveni utilizarea unei monezi de două 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 plăţilor. În plus, nici un protocol
de plată al utilizatorlui nu poate fi efectuat fără o informaţie secretă deţinută de observator.
Astfel, observatorul autorizează şi participă activ la toate tranzacţiile.
Totuşi, se poate ı̂ntâmpla ca utilizatorul să reuşească printr-o modalitate oarecare să afle
informaţia secretă a observatorului. În acest caz sistemul trebuie să asigure detectarea utiliza-
torului care a comis frauda, la fel ca ı̂n primele protocoale discutate.
Cele mai cunoscute şi utilizate protocoale de plată ”off-line” cu monezi electronice aparţin lui
Ştefan Brands. Primul sistem real de tip ”off-line”, numit ”DigiCash”, se bazează ı̂n totalitate
pe aceste protocoale.
3. Un generator d ∈ Gq .
Vom presupune pentru ı̂nceput că există ı̂n sistem monezi de o singură valoare, apoi vom
arăta cum se pot introduce monezi de valori diferite.
Securitatea acestei scheme constă ı̂n alegerea numerelor g, h, g1 , g2 , d astfel ı̂ncât nici un
utilizator să nu poată exprima oricare din aceste numere ca o combinaţie de puteri ale celorlalte.
Acest lucru este din punct de vedere al complexităţii la fel de dificil ca şi găsirea unei reprezentări
netriviale a lui 1 ı̂n raport cu (g, h, g1 , g2 , d) – o problemă NP-completă pentru p şi q convenabil
alese (prelegerea precedentă).
Când utilizatorul U ı̂şi deschide un cont ı̂n bancă, el generează aleator numerele u1 , u2 ∈ Zq∗
şi calculează I = g1u1 g2u2 (mod p). (u1 , u2 ) va constitui cheia secretă a lui U, iar I ∈ Gq va
fi pseudonimul folosit de B pentru identitatea reală a lui U. B stochează ı̂ntr-o bază de date
identitatea reală a lui U, numărul contului său şi I. Este important ca U să cunoască o singură
reprezentare a lui I ı̂n raport cu (g1 , g2 ). Dacă U utilizează o monedă de două ori, B poate să
determine (u1 , u2 ).
O monedă electronică este reprezentată sub forma (m, sigK (m)) cu anumite restricţii asupra
lui m, după cum vom vedea in continuare.
86 PRELEGEREA 7. SISTEMUL ELECTRONIC DE PLATĂ BRANDS
Se observă ca singura diferenţă faţă de schema lui Schnorr este trimiterea la pasul 1 a ı̂ncă
două numere: z şi b. sigK (m) = (z, a, b, r) va constitui semnătura asupra mesajului m.
Formal, protocolul de semnatura Chaum-Pedersen este:
P =Gq ,
A =G3q × Zq ,
K= {(p, q, g, h, x)| p, q prime, q|p − 1, h = g x (mod p)}.
Cheia (p, q, g, h) este publică, iar x este secretă.
∀K ∈ K , m ∈ Gq şi w ∈ Zq aleator, definim
sigK (m, w) = (z, a, b, r), unde z = mx (mod p), a = g w (mod p), b = mw (mod p),
c = H(m k z k a k b), r = w + cx (mod q).
verK (m, (z, a, b, r)) = T ⇐⇒ hc a = g r (mod p), z c b = mr (mod p).
Se observă că (z, a, b, r) nu este o semnătură validă asupra lui m deoarece r este un răspuns
la o provocare diferită de H(m||z||a||b). Dar U poate calcula r0 = ur + v (mod q) şi obţine
sigK (m0 ) = (z 0 , a0 , b0 , r0 ), o semnătură validă asupra lui m0 . Semnătura poate fi verificată de
oricine.
U acceptă la pasul 4 deoarece relaţiile sunt verificate la fel ca ı̂n protocolul anterior.
Demonstraţie: ( 0 0
0 0 0 0 0 hc a0 = g r (mod p)
Pentru K = (p, q, g, h, x, w), verK (m , (z , a , b , r )) = T ⇔ 0 0
(z 0 )c b0 = (m0 )r (mod p)
0 0
Dar r0 = 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 =
0 0 0 0 0
hc a0 (mod p) şi (m0 )r = (m0 )ucx (m0 )uw+v = (m0 )xc (m0 )w = (z 0 )c b0 (mod p),
deci sigK (m0 ) = (z 0 , a0 , b0 , r0 ). 2
0
Protocolul este de tip ”blind” deoarece B nu cunoaşte m , mesajul pentru care U a obţinut
o semnătură.
Propoziţia 7.2
1. Dacă U urmează protocolul pas cu pas, atunci perechea (m0 , sigK (m0 )) nu poate fi legată
de nici o execuţie specifică a protocolului.
2. Chiar dacă B află m0 , reprezentarea (s, t) a lui m0 ı̂n raport cu (m, g) cunoscută de U ı̂i
este ascunsa lui B ı̂n setul tuturor reprezentărilor lui m0 .
Demonstratie:
La finalul protocolului, B este ı̂n posesia următoarelor informaţii: w, z, a, b, c. Arătăm că
există q alegeri posibile pentru (s, u, v) care produc ı̂n final aceeaşi pereche (m0 , sigK (m0 )).
Fie s ∈ Zq fixat (sunt posibile q − 1 alegeri pentru s) şi m0 , sigK (m0 ) = (z 0 , a0 , b0 , r0 ) fixate.
Să analizăm ı̂n câte moduri putem alege u, v.
Se calculează ı̂n mod unic c0 = H(m0 ||z 0 ||a0 ||b0 ) (mod q). Deci uc = c0 (mod q) =⇒ u =
c0 c−1 (mod q), deci şi u este unic determinat.
88 PRELEGEREA 7. SISTEMUL ELECTRONIC DE PLATĂ BRANDS
m0 . 2
k+1
Y
1. U generează aleator tuplul (x1 , . . . , xk+1 ) şi trimite lui B h0 = gixi (mod p).
i=1
1. U ı̂i demonstrează lui B cunoaşterea reprezentării (u1 , u2 ) a lui I ı̂n raport cu (g1 , g2 )
prin protocolul din prelegerea anterioară.
Conform propoziţiilor 7.1 şi 7.2, ı̂n final U este ı̂n posesia unui mesaj semnat
(A, B, sigK (A, B)) = (z 0 , a0 , b0 , r0 )
care nu poate fi legat de nici o execuţie specifică a protocolului. În plus, m0 = AB (mod p).
Descompunerea lui m0 ı̂n A şi B a fost făcuta pentru ca U să poate să demonstreze ı̂n protocolul
de plată identitatea sa, fără a o dezvălui.
Dacă U urmează protocolul, atunci se va afla ı̂n final ı̂n posesia reprezentărilor lui m0 , A, B
ı̂n raport cu (g1 , g2 , d) care sunt (u1 s, u2 s, s), (x1 , y1 , z1 ) şi respectiv (x2 , y2 , z2 ). Din Corolarul
?.1 (prelegerea precedentă), U nu poate afla două reprezentări ale lui m0 ı̂n timp polinomial.
Cum (x1 + x2 , y1 + y2 , z1 + z2 ) este de asemenea o reprezentare a lui m0 rezultă că trebuie
ı̂ndeplinite simultan condiţiile (toate modulo q):
u1 s = x1 + x2 , u2 s = y1 + y2 , s = z1 + z2 .
Faptul că U acceptă ı̂n pasul 5 se deduce similar protocolului din ?.3.2.
90 PRELEGEREA 7. SISTEMUL ELECTRONIC DE PLATĂ BRANDS
2. S se asigură că AB 6= 1.
Apoi el verifică semnătura băncii:
( 0 0
0 0 g r = hc a0 (mod p)
verK (m , sigK (m )) = T ⇔ 0 0 cu c0 = H(AB||z 0 ||a0 ||b0 ||A).
(m0 )r = (z 0 )c b0 (mod p)
Dacă relaţiile sunt ı̂ndeplinite, S este convins că moneda a fost emisă de bancă şi
trimite lui U o provocare c ∈ Zq∗ \ {1}.
3. U răspunde cu
r1 = x1 + cx2 , r2 = y1 + cy2 , r3 = z1 + cz2
(toate calculele sunt modulo q).
4. S acceptă dacă şi numai dacă g1r1 g2r2 dr3 = AB c (mod p).
Teorema 7.1
1. (Completitudinea) Dacă U urmează protocolul pas cu pas şi protocolul de extragere a
monezii a fost executat corect, atunci S acceptă la pasul 4.
Demonstraţie:
2. U ar trebui să determine numerele r1 , r2 , r3 ∈ Zq asfel ı̂ncât g1r1 g2r2 dr3 = AB c (mod p),
ceea ce este echivalent cu determinarea unei reprezentări a lui AB c ı̂n raport cu (g1 , g2 , d),
care este o problemă 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Ă BRANDS 91
S acceptă ⇔ U cunoaşte câte o reprezentare a lui A şi B ı̂n raport cu (g1 , g2 , d) şi
este cinstit =⇒ U cunoaşte o reprezentare a lui m0 ı̂n raport cu (g1 , g2 , d).
Deci, dacă U nu cunoaşte o reprezentare a lui m0 ı̂n raport cu (g1 , g2 , d), nu are nici o
şansa să-l facă pe S să accepte la pasul 4.
3. B verifică validitatea semnăturii sigK (A, B), stochează A, B, sigK (A, B), c, r1 , r2 , r3
ı̂ntr-o bază de date şi creditează contul lui S cu valoarea monezii.
Teorema 7.2 Dacă moneda (A, B, sigK (A, B)) apare de două ori ı̂n baza de date a băncii,
atunci banca poate determina identitatea utilizatorului necinstit care a utilizat moneda de două
ori.
Demonstraţie:
Dacă moneda (A, B, sigK (A, B)) apare de două ori ı̂n baza de date, rezultă că banca dispune
de două seturi de răspunsuri ale lui U: (r1 , r2 , r3 ) şi (r1 0 , r2 0 , r3 0 ) corespunzătoare celor două
provocări c si c0 ale lui S.
Din relaţiile de verificare ale ( protocolului de plată rezultă:
g1r1 g2r2 dr3 = AB c (mod p) (1)
r1 0 r2 0 r3 0 c0
g1 g2 d = AB (mod p) (2)
0
Ridicând (1) la puterea c (şi (2) la puterea c, rezultă:
0 0 0 0 0
Ac B cc = g1r1 c g2r2 c dr3 c (mod p)
0 0 0 0
Ac B cc = g1r1 c g2r2 c dr3 c (modp)
Împărţind cele două relaţii rezultă:
0 0 0 0 0 0 0
Ac −c = g1r1 c −r1 c g2r2 c −r2 c dr3 c −r3 c (mod p) =⇒
(r c0 −r 0 c)(c0 −c)−1 (r2 c0 −r2 0 c)(c0 −c)−1 (r3 c0 −r3 0 c)(c0 −c)−1
A = g1 1 1 g2 d (mod p) (3)
(r1 −r1 0 )(c−c0 )−1 (r2 −r2 0 )(c−c0 )−1 (r3 −r3 0 )(c−c0 )−1
Analog se obţine: B = g1 g2 d (mod p) (4)
x1 y1 z1 x2 y2 z2
Dar A = g1 g2 d (mod p) (5) şi B = g1 g2 d (mod p) (6)
Cum nu se cunoaşte o reprezentare netrivială a lui 1 ı̂n raport cu (g1 , g2 , d), din (3),(4),(5)
şi (6)
(
rezultă (toate relaţiile sunt modulo q):
(r1 c0 − r1 0 c)(c0 − c)−1 = x1 (r2 c0 − r2 0 c)(c0 − c)−1 = y1 (r3 c0 − r3 0 c)(c0 − c)−1 = z1
(r1 − r1 0 )(c − c0 )−1 = x2 (r2 − r2 0 )(c − c0 )−1 = y2 (r3 − r3 0 )(c − c0 )−1 = z2
Ceea ce ı̂nseamnă că banca poate să calculeze:
u1 s = x1 + x2 = (r1 c0 − r1 0 c)(c0 − c)−1 + (r1 − r1 0 )(c − c0 )−1 (mod q) (7)
0 0 0 −1 0 0 −1
u2 s = y1 + y2 = (r2 c − r2 c)(c − c) + (r2 − r2 )(c − c ) = y2 (mod q) (8)
0 0 0 −1 0 0 −1
s = z1 + z2 = (r3 c − r3 c)(c − c) + (r3 − r3 )(c − c ) = z2 (mod q) (9)
0 −1 0 0
Din (9) =⇒ s = (c − c) (r3 (c − 1) − r3 (c − 1)) (mod q) =⇒
s−1 = (r3 (c0 − 1) − r3 0 (c − 1))−1 (c0 − c) (mod q) (10).
−1 0 −1 0 0 0 0
Din (7) şi (10) rezultă u1 = u1 ss = (c − c) (r1 (c − 1) − r1 (c − 1))(r3 (c − 1) − r3 (c −
1)) (c − c) = (r1 (c0 − 1) − r1 0 (c − 1))(r3 (c0 − 1) − r3 0 (c − 1))−1 (mod q)
−1 0
Teorema 7.3 În protocolul de extragere a monezilor, U nu poate să obţină o semnătură asupra
unui mesaj m0 pentru care cunoaşte o reprezentare ı̂n raport cu (g1 , g2 , d), dar care nu este o
putere a lui m.
Demonstraţie:
Presupunem – prin reducere la absurd – că U poate să obţină o semnătură asupra lui m0 , cu
m0 de forma m0 = ms g1r = g1u1 s+r g2u2 s ds (mod p), cu s, r ∈ Zq arbitrare. Celelalte cazuri pentru
forma lui m0 se vor rezolva analog.
Dacă U poate obţine o semnătură validă asupra lui m0 , rezultă că U poate să calculeze
sigK (m0 ) = (z 0 , a0 , b0 , r0 ) ı̂n timp polinomial.
Să vedem cât de difcilă este pentru U calcularea lui b0 .
0
b0 = (m0 )w = (m0 )uw+v = (ms g1r )uw+v = msuw msv (g1ru )w g1rv = bsu msv g1rv (g1ru )w (mod p).
Notăm g3 = g1ru =⇒ g3w = g1−rv m−sv b−su b0 (mod q), cu g1 , m, b, s, u, v, r, g3 cunoscute, iar w
necunoscut lui U (w este ales de B aleator la fiecare execuţie a protocolului). Deci calcularea
lui b0 este la fel de dificilă ca şi calcularea lui g3w .
Fie s ∈ Zp astfel ı̂ncât g3 = g s (mod p).
Presupunând că b0 se poate calcula ı̂n timp polinomial, rezulta că şi g3w se poate calcula ı̂n
timp polinomial.
Dar U cunoaşte g3 = g s , g w , g, m, mw şi reuşeşte să determine g ws = g3w , adică cheia Diffie-
Hellman unică pentru g w , g s .
Cum u şi w sunt alese aleator, avem că şi g w , g s = g3 = g1ru sunt aleatoare ı̂n Gq . Am
construit asfel un algoritm polinomial care are la intrare numerele aleatoare g s , g w şi calculează
cheia unică Diffie-Hellman, ceea ce reprezintă o contradicţie cu NP-completitudinea acestei
probleme.
De aici rezultă că b0 nu se poate calcula polinomial, deci U nu poate obţine o semnătură
asupra lui m0 care nu e multiplu de m. 2
Consecinţă: Din Teoremele 7.1 şi 7.3 deducem că U poate să obţină o semnătură asupra
lui m0 pe care o poate folosi ı̂ntr-un protocol de plata dacă şi numai dacă impunem următoarele
restricţii asupra lui m0 (care justifică calificativul ”restrictiv” dat acestui protocol de semnătură):
1. m0 este de forma ms m ∈ Gq ;
2. U cunoaşte o reprezentare a lui m0 ı̂n raport cu (g1 , g2 , d) care este multiplu al reprezentării
lui m.
1. Securitatea:
Din consecinţa anterioară rezultă că identitatea utilizatorului este inclusă ı̂n m0 (m0 =
ms = I s ds ); astfel, dacă utilizatorul foloseşte moneda o singură dată ı̂i este garantată
anonimitatea. În schimb, dacă moneda este folosită de două ori, se poate detecta identi-
tatea utilizatorului necinstit, cum am arătat ı̂n Teorema 7.2.
94 PRELEGEREA 7. SISTEMUL ELECTRONIC DE PLATĂ BRANDS
Cecuri electronice
2. Protocolul de plată:
Utilizatorul U doreşte să folosească la magazinul S o sumă de valoare mai mică sau egală
cu 2k − 1 (presupunem, pentru claritate, k ≥ 3 şi U utilizează suma de 5 = 1012 unităţi).
Atunci, U trebuie să ı̂i releve lui S: valorile A, B, semnătura pe care a obţinut-o de
la bancă asupra lui (A, B) şi numerele (a1 , a3 ), corespunzătoare reprezentării ı̂n binar a
valorii sumei.
3. Protocolul de depozit:
Magazinul S depozitează la bancă cecul electronic (A, B, sigK (A, B)) ı̂mpreună cu partea
folosită din cec: (a1 , a3 ). Banca stochează perechea (a1 , a3 ) ı̂ntr-o listă de recuperare.
95
96 PRELEGEREA 8. CECURI ELECTRONICE
Dacă banca acceptă, ea şterge din baza de date m şi creditează contul lui U cu suma
nefolosită din cec: 2k − 1 − 5 = 2k − 6.
Deoarece cecul este nedivizibil, un utilizator are dreptul să folosească un cec o singură
dată. Dacă nu a utilizat valoarea maximă a cecului, U trebuie să urmeze ı̂mpreună cu banca
protocolul de recuperare.
Vom construi mai târziu şi un sistem de cecuri cu proprietatea de divizibilitate.
Deschiderea unui cont se similar ca ı̂n sistemul de bază, utilizatorul U fiind cunoscut prin
pseudonimul său I = g1u1 g2u2 (mod p), cu u1 , u2 generate aleator ı̂n Zq .
Un cec electronic este de forma (m0 , sigK (m0 )) cu restricţia că există s ∈ Zq∗ cu m0 =
ms (mod p), unde m conţine de această dată atât identitatea utilizatorului care a extras cecul,
cât şi valoarea maximă a cecului:
2
Y k
Y
ui ai bi a
m=( gi )dz11 ( ei fi )d2k+1 (mod p)
i=1 i=1
| {z }| {z }
identitate valoare
Rolul generatorului d1 este acelaşi ca ı̂n sistemul de bază (să asigure că identitatea utiliza-
torului rămâne ascunsă dacă acesta este onest), iar rolul lui d2 va fi să ı̂mpiedice realizarea de
legături de către bancă după protocolul de recuperare.
1. U ı̂i demonstrează lui B cunoaşterea reprezentării (u1 , u2 ) a lui I ı̂n raport cu (g1 , g2 ),
prin protocolul din Prelegerea ? (cunoaşterea unei reprezentări).
Propoziţia 8.1 Dacă U urmează protocolul anterior, atunci perechile (m0 , sigK (m0 )) nu pot fi
legate de nici o execuţie specifică a protocolului.
Demonstraţia este similară celei de la Propozitia ?.2, arătând că există exact q valori posibile
pentru (s, u, v) care produc aceeaşi pereche (m0 , sigK (m0 )). 2
Propoziţia 8.2 În protocolul de extragere a monezilor, U nu poate să obţină o semnătură
asupra unui mesaj m0 pentru care cunoaşte o reprezentare ı̂n raport cu (g1 , g2 , d1 , e1 , f1 , . . . , ek ,
fk , d2 ), dar care nu este o putere a lui m.
Demonstraţia este similară celei de la Teorema ?.3, arătând că obţinerea unei semnături
pentru un mesaj m0 , unde m0 nu este multiplu de m, este echivalentă din punct de vedere
al complexităţii cu construcţia unui algoritm care rezolvă problema determinării cheii unice
Diffie-Hellman. 2
98 PRELEGEREA 8. CECURI ELECTRONICE
Observaţia 8.1 Cheia publică folosită de bancă pentru cecuri trebuie să difere de cheia publică
pentru monezi.
Aceasta deoarece, dacă ar fi egale, U ar putea să trimită la pasul 2 al protocolului de extragere
a cecului electronic, m1 = g1t cu t aleator in Zq şi să obţină o semnătură asupra lui m0 = ms
cu m = g1u1 +t g2u2 d1 (mod p). Apoi, U ar putea să folosească această semnătură ca o monedă şi
ar ı̂ncălca afirmaţiile demonstrate ı̂n Teorema ?.2, cu consecinţe asupra securităţii sistemului.
Să demonstrăm acest lucru.
Propoziţia 8.3 Dacă utilizatorul U foloseşte de două ori ı̂n sistemul de bază o monedă de
forma (m0 , sigK (m0 )) cu m0 = ms (mod p) şi m = g1u1 +t g2u2 d1 (mod p), t ales aleator ı̂n Zq∗ ,
atunci B nu are suficiente informaţii pentru a determina identitatea lui U cu o probabilitate
ne-neglijabilă.
Demonstraţie:
Similar demonstraţiei Teoremei ?.2, B poate calcula
(u1 + t)s = x1 + x2 = (r1 c0 − r1 0 c)(c0 − c)−1 + (r1 − r1 0 )(c − c0 )−1 (mod q),
u2 s = y1 + y2 = (r2 c0 − r2 0 c)(c0 − c)−1 + (r2 − r2 0 )(c − c0 )−1 = y2 (mod q),
s = z1 + z2 = (r3 c0 − r3 0 c)(c0 − c)−1 + (r3 − r3 0 )(c − c0 )−1 = z2 (mod q),
unde r1 , r2 , r3 , respectiv r1 0 , r2 0 , r3 0 sunt răspunsurile date de U ı̂n cele două protocoale de
plată ı̂n care acesta a utilizat moneda.
De aici, B deduce u2 şi u1 + t. Cum t a fost ales aleator de U ı̂n Zq∗ , B are q − 1 posibilităţi
1
de alegere pentru t, deci cunoaşte identitatea lui U cu probabilitatea 2
q−1
2. S se asigură că AB 6= 1.
( 0 0
0 0 g r = hc a0 (mod p)
Apoi el verifică semnătura băncii: verK (m , sigK (m ) = T ⇔ 0 0
(m0 )r = (z 0 )c b0 (mod p)
cu c0 = H(AB||z 0 ||a0 ||b0 ||A)
şi trimite lui U o provocare c ∈ Zq∗ \ {1}.
Pentru fiecare generator care apare ı̂n expresia sumei, U relevă puncte, iar pentru gener-
atorii care nu apar, U releva drepte.
4. S acceptă ⇐⇒
r13 + r14 6= 0 ... rj3 + rj4 6= 0
AB 6= 1
c
j
Y j
Y k
Y
r r r r
AB c = eri i1 firi3 eri i2 firi4 eri i1 firi2 g1(k+1)1 g2(k+1)2 d1(k+1)3 d2k+2 (mod p)
i=1 i=1 i=j+1
1. S demonstrează lui B cunoaşterea reprezentării identităţii sale ı̂n raport cu (g1 , g2 ), prin
protocolul din Prelegerea ?.
3. B verifică validitatea semnăturii sigK (A, B), stochează A, B, sigK (A, B), c, r1 , r2 , . . . , rk+2
ı̂ntr-o bază de date şi creditează contul lui S cu valoarea cecului.
În plus faţă de protocolul de depozit pentru monezi electronice, B introduce ı̂n lista de
recuperare termenii (ri1 + ri2 )(ri3 + ri4 )−1 (mod q), pentru 1 ≤ i ≤ j.
Propoziţia 8.4 Dacă moneda (A, B, sigK (A, B)) apare de două ori ı̂n baza de date a băncii,
atunci banca poate determina identitatea utilizatorului necinstit care a utilizat moneda de două
ori.
Demonstraţia acestei propoziţii este analogă cu demonstraţia Teoremei ?.2 pentru sistemul de
bază. 2
2. B verifică dacă m1 este asociat lui I ı̂n baza de date a cecurilor emise.
8.1. SISTEMUL DE PLATĂ CU CECURI NEDIVIZIBILE 101
4. B verifică dacă bi 6= 0, ∀i, j < i ≤ k si dacă ai (bi )−1 (mod q), (i = j + 1, . . . k) nu aparţin
listei de recuperare.
Daca B acceptă, se trece la pasul 5.
5. U ı̂i demonstreaza
lui
−1
B prin protocolul din Prelegerea ? cunoaşterea unei reprezentări a
k
Y
lui m1 eai i fibi (mod p) ı̂n raport cu (e1 , f1 , . . . , ej , fj , d2 ).
i=j+1
6. Dacă B acceptă proba lui U, el creditează contul lui U cu suma corespunzătoare şi imtro-
duce ai (bi )−1 , i = j + 1, . . . , k ı̂n lista de recuperare. Apoi şterge m1 din baza de date a
cecurilor emise
Teorema 8.2 Presupunând că protocoalele de extragere, de plată şi de depozit sunt executate
corect, dacă U este necinstit ı̂n protocolul de recuperare, atunci B nu acceptă să-i returneze
suma cerută la pasul 6.
Demonstraţie:
În cazul ı̂n care U este necinstit, ar fi două situaţii de analizat:
1. U a utilizat anterior cel puţin una din perechile (ai , bi ), j < i ≤ k.
În acest caz, ı̂n protocolul de depozit al cecurilor, banca a stocat ı̂n lista de recuperare
valoarea (ri1 + ri2 )(ri3 + ri4 )−1 = (αiA + αiB )(βiA + βiB )−1 = ai s(bi s)−1 = ai b−1
i . Deci
protocolul de recuperare se opreşte la pasul 4 şi B nu acceptă să-i returneze lui U valoarea
cerută de acesta.
2. U ı̂ncearcă să genereze perechi (ai 0 , bi 0 ), j < i ≤ k care nu au fost generate ı̂n protocolul
de extragere a cecurilor. În acest caz U ar trebui să determine numerele (ai 0 , bi 0 ), j <
−1
k
Y 0 0
i ≤ k astfel ı̂ncât să cunoască o reprezentare a lui m1 eai i fibi ı̂n raport cu
i=j+1
(e1 , f1 , . . . , ej , fj , d2 ). Acest lucru este echivalent pentru U cu determinarea numerelor
ai 0 , (1 ≤ i ≤ k + 1) şi bi 0 , (1 ≤ i ≤ k) astfel ı̂ncât:
−1 Ã k !
k
Y j
Y Y a0 b0
0 0 0 0 a 0 a 0
m1 eai i fibi a i b
= ei fi d2
i k+1
⇐⇒ m1 = ei fi
i i
d2k+1 (mod q).
i=j+1 i=1 i=1
Din punct de vedere al securităţii, sistemul de cecuri este echivalent cu sistemul de bază,
toate proprietăţile demonstrate pentru sistemul de bază rămânând valabile şi la sistemul de
cecuri.
Sistemul de cecuri nu este ı̂nsă eficient, deoarece orice cec poate fi utilizat o singură dată, iar
după protocolul de plată utilizatorul este obligat să urmeze ı̂mpreună cu banca protocolul de
recuperare. Aceste dezavantaj poate fi eliminat parţial folosind un protocol de cecuri divizbile.
1. La iniţializarea sistemului, banca generează toate numerele şi tuplurile generatoare folosite
ı̂n sistemul de cecuri nedivizibile. În plus, banca generează ı̂ncă un tuplu generator
(h1 , h2 , . . . , hk ) ∈ Gkq .
2. Un cec electronic este reprezentat sub forma (m0 , sigk (m0 )) cu restricţia că există s ∈ Zq∗
astfel ı̂ncât m0 = ms (mod p), unde forma lui m este de această dată:
k ³
Y ´
ai b i ai r ak+1
m = (g1u1 r g2u2 r d1 ) ei fi hi d2 (mod p),
i=1
cu a1 , . . . , ak+1 , b1 , . . . , bk , r alese aleator de U la pasul al doilea al protocolului de ex-
tragere.
Valoarea cecului este dată de termenii de forma eai i fibi hai i r (ı̂n acest caz ea este 2k − 1),
iar generatorii d1 şi d2 au acelaşi rol ca ı̂n sistemul de cecuri nedivizibile.
Să arătăm cum se modifică ı̂n acest caz protocoalele de extragere a cecurilor, de plată şi de
depozit.
1. U ı̂i demonstrează lui B cunoaşterea reprezentării (u1 , u2 ) a lui I ı̂n raport cu (g1 , g2 ) prin
protocolul din Prelegerea ?.
2. S se asigură că AB 6= 1.
( 0 0
0 0 g r = hc a0 (mod p)
Apoi S verifică semnătura bancii: verK (m , sigK (m ) = T ⇔ 0 0
(m0 )r = (z 0 )c b0 (mod p)
104 PRELEGEREA 8. CECURI ELECTRONICE
Pentru fiecare generator (ei , fi , hi ) care apare ı̂n expresia sumei, U relevă puncte pentru
exponenţii lui ei şi fi şi o dreaptă pentru exponentul lui hi , iar pentru generatorii care nu
apar, U nu relevă nimic.
ri1 , ri2 6= 0, i = 1, . . . , j
AB 6= 1
4. S acceptă ⇐⇒ j
r(k+1)1 r(k+1)2 r(k+1)3 Y r
c
AB = (g1
g2 d1 ) (eri i1 firi2 hri i3 ) d2k+2 rk+3 (mod p)
i=1
Propoziţia 8.5 (Completitudinea) Dacă U este onest ı̂n protocolul de plată, atunci S ac-
ceptă la pasul 4.
Demonstraţie:
Dacă protocolul este executat pas cu pas, la pasul 4 avem ri1 = ai s, ri2 = bi s, ∀i, (1 ≤ i ≤ j).
Cum ai 6= 0, bi 6= 0, s 6= 0 rezultă ri1 6= 0, ri2 6= 0, ∀i, (1 ≤ i ≤ j).
m0 = ms , s 6= 0 =⇒ m0 1 =⇒ AB 6= 1.
³ r j
´Y
(k+1)1 r(k+1)2 r(k+1)3 r
g1 g2 d1 (eiri1 firi2 hri i3 ) d2k+2 rk+3 =
i=1
³ j ³
´Y ´ k
Y ³ ´
= g1x1 +cx2 g2y1 +cy2 dz11 +cz2 eai i s fibi s hαi iA +cαiB dα2 A +cαB ai s bi s αiA +cαiB
ei fi hi =
i=1 i=j+1
k ³
" Ã k ! #c
Y ´ Y α
= (g1x1 g2y1 dz11 ) ai s bi s αiA
ei fi hi αA
d2 (g1x2 g2y2 dz12 ) iB
hi α B
d2 = AB c (mod p)
i=1 i=1
Teorema 8.3
1. Dacă U foloseşte de două ori aceeaşi parte a unui cec divizibil, B poate afla identitatea
sa.
2. Dacă U utilizează un cec de două ori, dar este onest (utilizează de fiecare dată părţi
nefolosite ale cecului), atunci probabilitatea ca B să afle identitatea lui U este neglijabilă.
Demonstraţie:
1. Presupunem – fără a restrânge generalitatea, că U utilizează ı̂n două protocoale de plată
distincte valoarea corespunzătoare generatorului (e1 , f1 , h1 ).
B se va afla ı̂n posesia următoarelor informaţii: A, B, c, r1 , rk+1 , rk+2 , rk+3 , c0 , r1 0 , rk+1 0 ,
rk+2 0 , rk+3 0 , unde c 6= c0 sunt
( cele două provocări trimise de S ı̂n două protocoale de plată.
r(k+1)1 = x1 + cx2 (mod q)
r(k+1)1 0 = x1 + c0 x2 (mod q)
Acesta este un sistem liniar cu determinantul c0 − c 6= 0; el admite soluţia unică:
(
x1 = (c−1 − (c0 )−1 )−1 (c−1 r(k+1)1 − (c0 )−1 r(k+1)1 0 ) (mod q)
x2 = (c − c0 )−1 (r(k+1)1 − r(k+1)1 0 ) (mod q)
Analog se determină:
(
y1 = (c−1 − (c0 )−1 )−1 (c−1 r(k+1)2 − (c0 )−1 r(k+1)2 0 ) (mod q)
y2 = (c − c0 )−1 (r(k+1)2 − r(k+1)2 0 ) (mod q)
(
z1 = (c−1 − (c0 )−1 )−1 (c−1 r(k+1)3 − (c0 )−1 r(k+1)3 0 ) (mod q)
z2 = (c − c0 )−1 (r(k+1)3 − r(k+1)3 0 ) (mod q)
(
α1A = (c−1 − (c0 )−1 )−1 (c−1 r13 − (c0 )−1 r13 0 ) (mod q)
α1B = (c − c0 )−1 (r13 − r13 0 ) (mod q)
Apoi se pot calcula:
(
u1 rs = x1 + x2 (mod q) (1) u2 rs = y1 + y2 (mod q) (2)
s = z1 + z2 (mod q) (3) a1 rs = α1A + α1B (4)
−1
Din r11 = a1 s şi din (4) rezultă r = (a1 rs)(a1 s)−1 = (α1A + α1B )r11 (mod q) (5).
Din (1), (2) şi (3) se pot calcula:
(
u1 r = (u1 sr)(s)−1 = (x1 + x2 )(z1 + z2 )−1 (mod q)
u2 r = (u2 sr)(s)−1 = (y1 + y2 )(z1 + z2 )−1 (mod q)
Din (5) va rezulta acum:
−1
u1 = (u1 r)r−1 = (x1 + x2 )(z1 + z2 )−1 [(α1A + α1B )r11 ] = (x1 + x2 )(z1 + z2 )−1 r11 (α1A +
α1B )−1 (mod q), u2 = (y1 + y2 )(z1 + z2 )−1 r11 (α1A + α1B )−1 (mod q).
Deci B a calculat identitatea lui U: (u1 , u2 ).
2. Valoarea unui cec fiind 2k − 1, putem presupune că U utilizează ı̂n primul protocol de
plată valoarea 2j − 1 (corespunzătoare generatorilor (e1 , f1 , h1 ), . . . , (ej , fj , hj )), iar ı̂n al
doilea protocol, valoarea 2k − 2j (corespunzătoare generatorilor (ej+1 , fj+1 , hj+1 ), . . . ,
(ek , fk , hk )). Atunci B se va afla ı̂n posesia informaţiilor:
106 PRELEGEREA 8. CECURI ELECTRONICE
Protocolul de recuperare este identic cu cel pentru sistemul de cecuri nedivizibile, Teorema
8.2 rămânând adevărată şi ı̂n cazul sistemului de cecuri care acceptă divizibilitatea.
Se observă că ı̂n protocolul de plată U trebuie să releve m0 , deci toate plăţile efectuate cu
părţi ale aceluiaşi cec pot fi legate ı̂ntre ele. Găsirea unei reprezentări a cecului astfel ı̂ncât să
nu poată fi realizate legături ı̂ntre plăţile făcute cu acelaşi cec rămâne o problemă deschisă.
Prelegerea 9
2. Validarea: verificarea datelor personale ale celor care doresc să voteze. Se permite
votarea numai pentru cei care au drept să voteze şi nu au votat deja.
4. Numărarea voturilor.
Pentru a avea ı̂ncredere ı̂n rezultatul alegerilor, oamenii trebuie să aibă dovezi că aceste sarcini
au fost ı̂ndeplinite ı̂n mod corect. Există ı̂nsă numeroase posibilităţi de corupere a sistemului
ı̂n timpul ı̂ndeplinirii fiecăreia din aceste sarcini. De exemplu:
• Autorităţile electorale pot trişa permiţând alegătorilor fără drept de vot să se ı̂nregistreze
la vot, iar alegătorilor ı̂nregistraţi să voteze de mai multe ori. De asemenea poate pierde
107
108 PRELEGEREA 9. PROTOCOALE DE VOT ELECTRONIC
1
sau adăuga voturi suplimentare.
• Alegătorii fără 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.
Atunci când se proiectează un sistem electronic de vot este esenţial să se implementeze modali-
tăţi prin care cele patru condiţii menţionate mai sus să fie ı̂ndeplinite fără a sacrifica intimitatea
alegătorilor sau a oferi posibilităţi de fraudă. În plus, mai trebuie ı̂ndeplinite câteva condiţii
specifice unui astfel de sistem. Conform cu [5], [6], un sistem de vot electronic trebuie să
satisfacă următoarele cerinţe:
2. Acurateţe: Oricine poate verifica validitatea voturilor şi se poate asigura că voturile nu
au fost schimbate, multiplicate sau eliminate de cineva (inclusiv de autorităţi).
5. Verificabilitate: Orice votant poate controla dacă votul său a fost numărat şi repartizat
candidatului pe care l-a votat.
6. Detectarea dublei votari: Dacă apare un vot dublu, organizatorii pot identifica per-
soana care a votat de mai multe ori.
În această prelegere vom prezenta câteva protocoale de vot care să ı̂ndeplinească cât mai multe
din aceste cerinţe.
2. Criptează perechea (mi , ri ) cu cheile publice ale tuturor alegătorilor ı̂n ordinea 1, . . . , N ,
obţinând secvenţa eN (eN −1 (. . . (e1 (mi , ri )) . . .).
3. Repetă pasul anterior, adăugând după fiecare criptare câte un număr aleator Ri distinct
(pe care-l trimite lui i). Se obţine
În timpul procesului de votare numărul de voturi este constant, deci pierderea sau adăugarea
unui vot este uşor de detectat.
Amestecul voturilor asigură anonimitatea.
De asemenea, voturile nu pot fi ı̂nlocuite; o astfel de ı̂ncercare pe parcursul primei runde este
depistată prin numărul aleator introdus incorect. Dacă alegătorul i ı̂nlocuieşte votul alegştorului
j (j > i), atunci alegătorul j va detecta acest lucru la ı̂nceputul celei de-a doua runde de
decriptări (pasul 5).
O ı̂ncercare de ı̂nlocuire pe parcursul celei de-a doua runde este depistată la decriptarea
finală când fiecare alegător ı̂şi verifică prpriul său număr ri .
Un defect major al acestui protocol constă ı̂n implementarea dificilă datorată numărului
mare de calcule, dependent de numărul de votanţi N .
7. AC asociază mesajele după ID, le decriptează, verifică autenticitatea voturilor şi publică
perechile (ID, m) pentru toţi participanţii la vot.
Acest sistem ı̂mpiedică atât alegătorii neautorizaţi să voteze, cât şi pe cei neautorizaţi să voteze
de două ori. Alegătorilor nu li se pot afla identitatea reală, deoarece fiecare ID se obţine printr-
un protocol de dezvăluire parţială a secretelor, deci AC nu ştie la cine a ajuns fiecare ID.
Există şi ı̂n acest protocol câteva neajunsuri. Primul – şi cel mai important – este acela că
o autoritate centrală reprezintă un punct de corupţie asupra căruia nu există control. ea poate
falsifica voturi ı̂n numele alegătorilor care se abţin, poate pierde voturi valide (nici un alegător
nu poate demonstra că a trimis ı̂ntr-adevar un vot). În plus, implementarea sa rămâne destul
de complexă.
O primă idee de ı̂mbunătăţire a sistemului a constat ı̂n introducerea mai multor autorităţi
centrale, dependente una de alta. De exemplu, se pot introduce două autorităţi: una care se
ocupă de legitimitatea alegătorilor (să ı̂i spunem AL - agentı̂e de legimitate), alta care se ocupă
de numărarea efectivă a voturilor (AT - agenţie de tabulare). Un vot valid trebuie să treacă
prin ambele agenţii pentru validare. Prima recunoaşte dreptul alegătorului de a vota (fără a
vedea conţinutul votului), eliberându-i un buletin. A doua agenţie primeşte votul ı̂mpreună cu
buletinul de validare. O variantă de astfel de protocol (ı̂n ipoteza că cele două agenţii nu se
aliază pentru falsificarea votării) este:
4. Fiecare votant alege aleator un ID (număr de validare) şi trimite spre AT un triplet
format din numărul de autentificare, ID şi votul său.
5. AT verifică numărul de autentificare şi – dacă este pe listă – ı̂l bifează şi publică votul
ı̂mpreună cu nunmărul de validare.
9.4. PROTOCOLUL MU-VARADHARAJAN 111
9.4.1 Iniţializarea
Vom nota cu p un număr prim mare şi cu t ştampila de timp. De asemenea, α k β va reprezenta
concatenarea secvenţelor α şi b.
Înainte de a incepe protocolul de vot:
• Fiecare participant V primeşte o pereche de chei RSA : (eV , dV ) şi un modul nV obţinut
prin ı̂nmulţirea a două numere prime mari. Reamintim, conform algoritmului RSA:
eV · dV ≡ 1 (mod φ(nV ))
• AS deţine un modul nAS şi o pereche de chei RSA (eAS , dAS ). nAS şi eAS sunt publice,
cunoscute de toti votanţii.
• Orice votant valid V are un certificat de votant CertV eliberat pe termen lung de CA.
Acesta este semnat de cheia secretă a lui CA, iar conţinutul lui include
– un număr serial,
– identitatea votantului V ,
– identitatea CA,
– cheia publică eV şi modulul nV ,
– intervalul de valabilitate,
– o ştampilă de timp.
112 PRELEGEREA 9. PROTOCOALE DE VOT ELECTRONIC
9.5.1 Atacul 1
La ı̂nceput V calculează g 0 , y 01 , y 02 , a0 cu relaţiile
g 0 = q c0 (mod p),
−1
y 01 = (g 0 )(k1 +k2 +c1 )c0 (mod p),
−1
y 02 = (g 0 )(k1 +2k2 +c2 )c0 (mod p),
−1
a0 = (g 0 )(r+c3 )c0 (mod p),
unde c0 , c1 , c2 , c3 sunt numere ı̂ntregi care evrifică condiţiile c1 + c2 + c3 = 0, c1 c2 c3 6= 0.
Acum V generează buletinul T 0 = a0 g 0 y 01 k y 02 k s k s01 k s02 k m unde (s01 , s02 ) este semnătura
votului m cu cheile (k1 + k2 + c1 )c−1 −1
0 respectiv (k1 + 2k2 + c2 )c0 ; anume
s01 = ((k1 + k2 + c1 )c−1 −1 0 −1
0 ) (ma − (r + c3 )c0 ) (mod p − 1)
s02 = ((k1 + 2k2 + c2 )c−1 −1 0 −1
0 ) (ma − (r + c3 )c0 ) (mod p − 1)
În faza de votare şi de colectare a buletinelor, V poate trimite către V S şi al doilea buletin
T 0 . V S verifică ı̂ntâi semnătura s, apoi validitatea lui a0 , y 01 , y 02 folosind ecuaţia
seAS = y1 y2 a (mod nAS ) = y 01 y 02 a0 (mod nAS )
În continuare V S verifică validitatea lui (s01 , s02 ) cu ecuaţiile (5) şi (6). Cum toate sunt
corecte, V S crede că T 0 este un buletin valid şi-l trimite lui T CS. Aici, pentru protejarea contra
dublei votări, T CS verifică parametrii a0 , g 0 , y 01 , y 02 şi decide că ei au fost folosiţi o singură dată.
Deci atacul funcţionează. Chiar dacă V S detectează că semnătura s a mai fost utilizată, el nu
va putea detecta identitatea votantului ilegal (cu (7) şi (8)).
9.5.2 Atacul 2
Similar primului atac, V alege ı̂ntâi aleator numărul h şi calculează
2 2 2 2
g 0 = g h , a0 = ah , y 01 = y1h , y 02 = y2h , s0 = sh
114 PRELEGEREA 9. PROTOCOALE DE VOT ELECTRONIC
Apoi, semnătura (s01 , s02 ) pentru m poate fi calculată cu o variantă a relaţiilor (3) şi (4)
folosind cheile (k1 + k2 )h respectiv (k1 + 2k2 )h:
s01 = (k1 + k2 )−1 h−1 (ma0 − hr) (mod p − 1),
s02 = (k1 + 2k2 )−1 h−1 (ma0 − hr) (mod p − 1).
Deci V poate genera un nou buletin de vot T 0 = a0 k g 0 k y 01 k y 02 k s0 k s01 k s02 k m.
V S este convins de validitatea lui T 0 pentru că relaţiile
2
(s0 )eAS = (y1 y2 a)h = y 01 y 02 a0 (mod nAS )
0 0
(y 01 )s1 a0 = (g 0 )a m (mod p)
0 0
(y 02 )s2 a0 = (g 0 )a m (mod p)
sunt verificate.
Cu aceste atacuri, un votant poate vota de oricâte ori vrea, fără să fie detectat.
3. V obţine k2 prin decriptarea lui w3 , iar pe baza lui poate determina y1 şi y2 . Mai departe,
V determină semnătura (s1 , s2 , s3 ) (eliminând factorii blind) conform relaţiilor
s1 = w4 b1−1 = (a · AS)dAS quad(mod nAS )
s2 = w5 b2−1 = (y1 · AS)dAS quad(mod nAS )
9.6. PROTOCOLUL MU-VARADHARAJAN MODIFICAT 115
s5 = x−1
2 (ma − r) (mod p − 1).
1. T CS verifică y1 , y2 , a pentru toate buletinele T pentru a vedea dacă apar de mai multe
ori.
2. Dacă aceste valori au aparut de două ori şi m = m0 se ia ı̂n considerare un singur buletin.
Dacă m 6= m0 rezultă că este un caz de dublă votare şi T CS află identitatea acestuia,
calculând
m0 a − ma
x1 = 0 (mod p − 1) şi
s4 − s4
m0 a − ma
x2 = 0 (mod p − 1).
s5 − s5
De aici, x2 − x1 = (2k1 + k2 ) − (k1 + k2 ) = k1 şi deci k2 = x1 − k1 . Cu ajutorul lui k2 se
poate afla cine a ı̂ncercat să trişeze.
116 PRELEGEREA 9. PROTOCOALE DE VOT ELECTRONIC
[1] J. Benaloh – Verifiable sectret-ballot elections, Ph.D thesis, Yale University, Technical report
561 (1987)
[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 Efficient 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
Criptogrfie şi securitate – Anul III Sem. 1 USH
Afisarea unei portiuni de text cu o dimensiune mai mare decat cea prestabilita se face prin:
C 45 b
a) <b> c) <sup>
b) <big> d) <bigger>
Alegeti culoarea data de codul de culoare #000000:
C 54 a
a) black c) red
b) white d) blue
Alegeti culoarea data de codul de culoare #ffffff:
C 53 b
a) black c) green
b) white d) gray
Aplicatiile de control a conexiunii folosesc protocolul:
C 3 a
a) ip c) icmp
b) udp d) igrp
B 3 Aplicatiile de control al conexiunii folosesc protocolul: TCP
Arhitecturile de retea cele mai cunoscute sunt modelul de referinta OSI (Open System Interconnection)
B 65
si TCP/IP (transmission control protocol / Internet Protocol).
Care din urmatoarele atribute apartine tagului font?
C 55 b
a) align c) size
b) width d) style
Care din urmatoarele programe foloseste campul TTL:
C 2 c
a) ping c) traceroute
b) telnet d) arp
B 2 Care program foloseste campul TTL: tracert/traceroute
Care program nu este un client de mail
C 22 b
a) Thunderbird c) Kmail
b) Sendmail d) Outlook
Care program nu este un client de mail
C 23 c
a) Thunderbird c) Postfix
b) Evolution d) Outlook
Care program nu este un client de mail
C 24 d
a) Thunderbird c) Outlook
b) Evolution d) Exim
Care program nu este un client de web
C 9 d
a) Mozilla firefox c) Safari
b) Opera d) Explorer
Pag. 1
Care program nu este un server de mail
C 25 c
a) Postfix c) Cyrus
b) Sendmail d) Exim
Care program nu este un server de web
C 8 a
a) firefox c) apache
b) lighhttp d) iis
B 13 Cate situri poate gazdui un server de web? oricare
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
B 95
k = 56 biti.
R: DES (DataEncryption Standard, Standardul de Criptare a Datelor)
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
B 98
software.
R: RC5
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
B 96
biti) a blocului.
R: IDEA (International Data Encryption Algorithm)
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.
B 97
R: SAFER (SAFER K-64 - Secure And Fast Encryption Rottine)
Comanda cat din sistemul de operare UNIX
C 64 a
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
Comanda cat din sistemul de operare UNIX
C 65 d
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
Comanda df din sistemul de operare UNIX
Pag. 2
Comanda head din sistemul de operare UNIX
Pag. 3
Comunicarea dintre un client si un server se realizeaza pe baza adresei de:
C 4 a
a) ip c) udp
b) mac d) web
B 5 Comunicarea directa dintre doua hosturi din aceiasi retea se realizeaza doar pe baza adresei de …. MAC
Comunicarea directa dintre doua hosturi din aceiasi retea se realizeaza doar pe baza adresei de:
C 5 a) ip c) email b
b) mac d) web
Multimea C contine siruri de simboluri dintr-un alfabet de definitie care poate diferi de alfabetul lui M
B 86
(spatiul mesajelor). Un element din C este numit text cifrat. Multimea C se numeste:
K este o multime numita spatiul cheilor . Un element al lui K este numit cheie. Fiecare element e din K
B 87
determina in mod unic o bijectie de la M (spatiul mesajelor) la C (spatiul textelor cifrate), notata Ee,
numita:
R: functie (transformarea) de criptare
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
B 88
(spatiul mesajelor) numita :
R: functie (transformare) de decripate
Concepte de baza ce apar in criptografie :
Multimea {Ee |e din K } a functiilor de criptare si o multime corespunzatoare D
d d in K a functii-
B 89 lor de decriptare, cu proprietatea ca pentru fiecare e din K exista o cheie unica din K astfel incat
Dd Ee1 , formeaza :
R: scheme de cripate
B 49 Configurare firewall-uri in mediul UNIX iptables
B 50 Configurare routere
Considerăm modul de utilizare CBC al cifrului bloc DES care aplică permutări biţilor unui vector de biţi
1 2 3 4
A 9
de lungime 4. Criptaţi textul clar x = 1011000101001010 folosind cheia şi blo-
2 3 4 1
cul iniţial IV = 1010
R: 0010 0110 0100 1101
Considerăm modul de utilizare CFB al cifrului bloc DES care aplică permutări biţilor unui vector de biţi
1 2 3 4
A 11
de lungime 4. Criptaţi textul clar x = 1011000101001010 folosind cheia şi blo-
2 3 4 1
cul iniţial IV = 1010
R: 1101 0101 1101 0010
Pag. 4
Considerăm modul de utilizare ECB al cifrului bloc DES care aplică permutări biţilor unui vector de biţi
1 2 3 4
A 8
de lungime 4. Criptaţi textul clar x = 1011000101001010 folosind cheia
2 3 4 1
R: 0111 0010 1000 0101
Considerăm modul de utilizare OFB al cifrului bloc DES care aplică permutări biţilor unui vector de biţi
1 2 3 4
A 10
de lungime 4. Criptaţi textul clar x = 1011000101001010 folosind cheia şi blo-
2 3 4 1
cul iniţial IV = 1010
R: 1110 1011 0001 0000
Considerăm sistemul de criptare RSA construit cu numerele prime p = 3; q = 5. Dacă exponentul de crip-
RSA 12C tare este e = 4 şi se doreşte codificarea textului clar m = 11, determinaţi textul criptat c.
R: 1
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:
B 92
R: multipla
3 2
Criptaţi un text clar la alegere folosind sistemul de criptare Hill cu matricea
A 2
3 5
R:
Daca in retea datele circula:
-într-un singur sens — simplex
B 57
-în ambele sensuri dar nu simultan — semi-duplex
-în ambele sensuri simultan — duplex
Daca transmiterea mesajului de la sursa la destinatie se poate face pe mai multe cai, trebuie ales un anu-
B 58 mit drum. Aceasta alegere se numeste dirijare sau …….
R: rutare
Deschiderea unui link intr-o fereastra noua se va produce prin accesarea unui link de forma:
C 57 b
a) <a href="url" new> c) <a href="url" target="new">
b) <a href="url" target="_blank"> d) <a href="url" target="_self">
3 2
Determinaţi inversa matricei (modulo 26)
A 1
3 5
R: [15 20;17 9]
DHCP provine de la
C 36 b
a) Detect Host Configuration Protocol c) Dynamic Host Connection Process
b) Dynamic Host Configuration Protocol d) Ddebug Host Configuration Problems
B 33 DHCP provine de la Dinamic Host Configuration Protocol
DNS provine de la
C 37 c
a) Domain Name Service c) Domain Name System
b) Dynamic Network Server d) Domain Name Service
B 34 DNS provine de la Domain Name System
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).
B 59
R: pereche
Pag. 5
Elementul inline generic potrivit cu o gama larga de utilizari, inclusiv pentru a atasa CSS
unei portiuni a unui rand este:
C 48 c
a) <div> c) <span>
b) <p> d) <tr>
Evidentierea unui fragment de text, prin afisarea acestuia cu stilul cursiv se face prin
utilizarea urmatorului element de fraza:
C 51 c
a) <em> c) <i>
b) <b> d) <c>
Evidentierea unui fragment de text, prin afisarea acestuia cu stilul aldin se face prin
utilizarea urmatorului element de fraza:
C 52 d
a) <strong> c) <aldine>
b) <em> d) <b>
Fie cifrul El-Gamal asociat numărului prim p = 11 şi rădăcinii primitive, modulo 7, 5. Cheia secretă a lui
Alice este 4, iar cea a lui Bob este 7. Alice primeşte de la Bob textul criptat (3,7) pe care îl decodifică şi
ELG 12B
găseşte mesajul clar ………....
R:10 x=m(textul clar)=2X
Fie cifrul El-Gamal asociat numărului prim p = 7 şi rădăcinii 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
ELG 12A
aceasta primeşte codificarea …………....
R: c=(c1,c2)=(2,4)
Fie d = 11 exponentul de decriptare al sistemului de criptare RSA construit cu numerele prime
RSA 12B p = 7; q = 11. Determinaţi exponentul de criptare e.
R: E=11
Fie d exponentul de decriptare al sistemului de criptare RSA construit cu numerele prime p = 3; q = 5.
RSA 12A Dacă exponentul de criptare este e = 7, determinaţi d.
R: D=7
Folosind sistemul de criptare Polybios codificaţi textul clar UNIVERSITATE.
A 3
R: EACDBDEBAEDCDDBDDEAADEAE (am eliminat w)
Folosind un sistem aditiv fluid binar de criptare se cere criptarea /decriptarea secvenţei de text clar
A 6
x = 101101, cunoscând cheia fluidă z = 1101.
R: 011010 (criptarea)
Folosind un sistem de criptre asincron cu auto-cheie, pentru k = 11, codificaţi /decodificaţi textul clar
A 7 SPIRU HARET.
R: DSARLSSJNG
Formal, un serviciu este specificat printr-un set de primitive (operatii) disponibile entitatii ca-
B 62 re foloseste acest serviciu. Acestea comanda serviciului sa execute anumite actiuni sau sa raporteze des-
pre actiunile executate de o entitate pereche.
HTML provine de la
C 31 c
a) HyperText Multi Language c) HyperText Markup Language
b) HyperTag Markup Language d) HighexTensible Markup Language
B 28 HTML provine de la Hyper Text Markup Language
HTTP provine de la
C 32 a
a) Hypertext Transfer Protocol c) Hypertext Transport Protocol
b) Hypertext Transmission Protocol d) Hyper Text Protocol
B 29 HTTP provine de la Hyper Text Transfer Protocol
IMAP provine de la
C 33 b
a) Instant Message Access Protocol c) Internet Mail Access Protocol
b) Internet Message Access Protocol d) Interior Message Access Protocol
Pag. 6
B 30 IMAP provine de la Internet Message Access Protocol
Inserarea textului în paragrafe se realizeaza folosind:
C 47 b
a) <blockquote> c) <div>
b) <p> d) <span>
Inserarea unei imagini se face prin:
C 61 b
a) <image src="image.gif"> c) <img href="image.gif>
b) <img src="image.gif"> d) <img>image.gif</img>
Inserarea unui hyperlink în limbajul HTML se face prin:
a) <a name="http://www.w3schools.com">W3Schools.com</a>
C 56 b
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>
În LAN-urile cu inel fiecare bit se propaga independent de ceilalti pe inel, fara sa astepte restul pachetu-
B 53 lui.
R: inel
În sistemul de criptare Vigenere, să consideram cuvântul cheie GRUPA. Criptăm cu această cheie textul
A 5 clar CRIPTOGRAFIE şi se obţine textul criptat ...
R: IICETUXLPFOV
Între doua nivele adiacente exista o interfata care defineste operatiile si serviciile primitive oferite de ni-
B 55 velul n nivelului n+1.
R: interfata
Întreruperea de rand în cadrul unui paragraf de text se realizeaza prin introducerea unui
element de tipul:
C 43 c
a) <p> c) <br>
b) <b> d) <hr>
Nivelul ...................... al modelului OSI stabileleste si întretine conexiunea între procese de pe masini
B 71 diferite, permite proceselor sa defineasca proprietatile dialogului si sa-l sincronizeze.
R: sesiune
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-
B 73
tocol pentru posta electronica), etc.
R: aplicatie
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),
B 72 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
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
B 76
si sa lucreze pe o masina situata la distanta.
R: telnet
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
B 77
pe o masina pe alta.
R: FTP
Nivelul aplicatie al modelului TCP/IP cuprinde toate protocoalele de nivel înalt. Unul dintre acestea este
B 78 protocolul de posta electronica
R: SMTP
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
B 79
gazdelor si adresele retelelor.
R: DNS
Pag. 7
Nivelul n de pe o masina comunica folosind anumite reguli si conventii numite ……………. cu nivelul
B 54 n de pe alta masina
R: protocoale
Nivelul fizic al modelului OSI are rolul de a transmite bitii de la o masina la alta printr-un canal
B 66 de comunicatie. Nivelul rezolva problemele de natura electrica: cum ar fi tensiunea si intensitatea curen-
tului.
Nivelul legaturi de date al modelului OSI cuprinde un subnivel de control al accesului la me-
B 68
diu care rezolva problema controlului accesului la canalul partajat pentru retelele cu difuzare.
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
B 69 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
Nivelul transport al modelului OSI are rolul de a transforma un mijloc de transmisie într-o li-
B 67
nie disponibila nivelului retea fara erori de transmisie.
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
B 70 la distanta. De asemenea, stabileste tipul de serviciu pe care îl furnizeaza nivelului imediat su perior si
utilizatorilor retelei.
R: transport
O linie în cadrul unui tabel se introduce prin:
C 58 b
a) <td> c) <table>
b) <tr> d) <th>
O lista de protocoale folosita de un sistem, câte u n protocol pentru fiecare nivel se numeste stiva
B 56
de protocoale.
O lista neordonata se introduce prin:
C 60 a
a) <ul> c) <dl>
b) <list> d) <ol>
O lista ordonata se introduce prin:
C 59 d
a) <dl> c) <ul>
b) <list> d) <ol>
Obiectivul esential al criptografiei care se refera la ascunderea informatiilor fata de toate persoanele,
B 81 mai putin cele autorizate, este:
R: confidentialitate
Obiectivul esential al criptografiei care se refera la evitarea alterarii neautorizate a datelor este:
B 82
R: intregritate
Obiectivul esential al criptografiei care se refera la identificarea unei persoane sau a originii unui mesaj
B 83 este:
R: autentificare
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,
B 90
dar nu poate obtine cheia, un cifru bloc este:
R: partial compromis
Obiectivul unui cifru bloc este de a asigura confidentialitatea. Obiectivul unui intrus este de a recupera
B 91 mesajul in clar din textul cifrat. Daca se poate gasi o cheie, un cifru bloc este:
R: total compromis
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-
B 80
matare continute în text si afiseaza pe ecran pagina formatata corespunzator .
R: browser
Pag. 8
Pentru a = 3; b = 5 se definesc funcţiile de criptare, respectiv decriptare, ale unui sistem de criptare afin:
e3,5 x 3 x 5
A 4 d3,5 y 9 y 9 26 - 5 mod26 9 y 7
Pag. 9
Se numeste retea de calculatoare o colectie interconectata de calculatoare autonome care sunt capabile
B 52 sa schimbe informatii intre ele si sa partajeze resurse.
R: retea
Serviciul care impiedica o entitate sa nege actiuni sau angajamente anterioare este:
B 84
R: non-repudierea
Serviciul secventelor de mesaje orientat pe conexiuni , este serviciul în care se mentine deli-
B 61 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.
SMTP provine de la
C 34 d
a) Simple Mail Transmission Protocol c) Simple Mail Transport Protocol
b) Simple Message Transfer Protocol d) Simple Mail Transfer Protocol
B 31 SMTP provine de la Simple Mail Transfer Protocol
Stilul de text ingrosat/aldin se poate aplica folosind:
C 46 b
a) <aldin> c) <bold>
b) <b> d) <big>
Tagul <span> nu accepta atributul:
C 49 b
a) width c) title
b) align d) style
Titlul unei pagini web afisat în bara de titlu a browserului se introduce prin:
C 42 d
a) <head> c) <h2>
b) <h1> d) <title>
Un cifru bloc ce repeta secvential o functie interna numita functie repetitiva se numeste cifru bloc ……
B 94
R: iterat
Un cifru simplu de perioada t peste un alfabet cu s caractere care foloseste o cheie de t caractere
k1k2…kt iar functia ce transforma textul in clar m1m2m3… in textul cifrat c1c2c3… este aplicata ca-
B 93 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
Un client ARP :
C 39 c
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
Un client de mail aduce mesajele prin protocolul:
C 20 c
a) xml c) imap
b) http d) smtp
Un client de mail aduce mesajele prin protocolul:
C 21 b
a) xml c) http
b) pop3 d) smtp
B 23 Un client de mail aduce mesajele prin protocolul: POP3/IMAP
B 24 Un client de mail aduce mesajele prin protocolul: POP3/IMAP
Un exemplu de MDA este
C 29 b
a) Thunderbird c) Sendmail
b) Cyrus d) Gmail
Un exemplu de MTA este
C 30 d
a) Outlook c) Gmail
b) Cyrus d) Postfix
Pag. 10
Un program de tip MUA se conecteaza la un MDA imap pe portul
C 28 b
a) 140 c) 23
b) 143 d) 110
B 27 Un program de tip MUA se conecteaza la un MDA imap pe portul 143
Un server de fisiere livreaza datele pe portul:
C 16 b
a) 19 c) 21
b) 20 d) 22
B 19 Un server de fisiere livreaza datele pe portul: 20
Un server de fisiere se ataseaza uzual la portul:
C 15 c
a) 19 c) 21
b) 20 d) 22
B 18 Un server de fisiere se ataseaza uzual la portul: 21
Un server de fisiere utilizeaza protocolul:
C 14 b
a) http c) ftps
b) ftp d) udp
B 17 Un server de fisiere utilizeaza protocolul: FTP
Un server de mail primeste conexiuni pe portul
C 26 c
a) 21 c) 25
b) 22 d) 80
B 25 Un server de mail primeste conexiuni pe portul 25
Un server de mail trimite mesajele prin protocolul:
C 19 d
a) xml c) imap
b) http d) smtp
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
Un server de web care accepta conexiuni securizate se ataseaza uzual la portul:
C 13 b
a) 88 c) 445
b) 443 d) 22
Un server de web de web poate gazdui:
C 7 c
a) Un singur site c) Oricat de multe situri
b) Cel mult doua situri d) Un numar limitat de situri
B 15 Un server de web se asculta uzual la portul 80
Un server de web se ataseaza uzual la portul:
C 12 c
a) 88 c) 80
b) 8080 d) 21
Un server de web serveste în mod uzual:
C 11 d
a) fisiere zip c) mesaje de e-mail
b) date din baza de date d) pagini html
Un server de web utilizeaza protocolul:
C 6 b
a) html c) imap
b) http d) ftp
Pag. 11
Un server de web utilizeaza protocolul:
C 10 a
a) https c) xml
b) pop3 d) html
B 12 Un server de web utilizeaza protocolul: HTTP
B 14 Un server de web utilizeaza protocolul: HTTP
Un server DNS :
Pag. 12
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=me (mod n)
Decriptare: m = cd (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 qi. In timp ce efectuam
fiecare pas al algoritmului, vom calcula si un numar auxiliar, pi. Pentru primii 2 pasi stim deja valorile : p0 = 0 and p1 = 1. Pentru
restul pasilor vom calcula recursiv pi = pi-2 - pi-1 qi-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 pk+2. (Daca restul nu e 1, atunci x nu admite un invers.)
EXEMPLU:
PAS 3: 4/3 = 1 rest 1 => x admite invers p3 = 1 - 25( 1) mod 26 = -24 mod 26 = 2
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 c1 folosind cheia lui privata si c2 folosind αA a
lui Alice pe care-l obtine din cheia ei publica.
c1 = αB mod p ; c2 = m(αA)k mod p ; c = (c1,c2) - Trimite textul cifrat c = (c1,c2) la utilizatorul Alice.
Decriptare : Pentru a determina textul clar m din textul cifrat c, utilizatorul Alice execută următoarele:
1. Utilizează cheia sa privată a pentru a calcula: f = c1p-1-A (mod p).
2. Determină textul clar m astfel: m = f*c2 (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 p0=0
7/1 = 7 rest 0 p1=1
p2=0 – 1*1 (mod 8) = -1 (mod 8) = 7
d=7
El-Gamal 3): p=11; α=2; csA=3; csB=4; A primeste de la B (y1,y2)=(5,3); txt. Clar x =?
z = y1p-1-A (mod p) = 511-1-3 (mod 11) = 57 (mod 11) = 3
x = z * y2 (mod p) = 3 * 3 (mod 11) = 9
El-Gamal 4): p=11; α=2; csA=4; csB=7; (y1,y2) = (3,7); txt clar x=?
Daca (y1,y2) = (3,7) este primit de B de la A, atunci:
f = y1p-1-B (mod p) = 311-1-7 (mod 11) = 33 (mod 11) = 5
x = f * y2 (mod p) = 5 * 7 (mod 11) = 2
Daca (y1,y2) = (3,7) este primit de A de la B, atunci:
f = y1p-1-A (mod p) = 311-1-4 (mod 11) = 36 (mod 11) = 3
x = f * y2 (mod p) = 3 * 7 (mod 11) = 10