Você está na página 1de 237

See

discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/308791446

Securitatea Informatiei vol 1 (Criptografie)

Book April 2007

CITATIONS READS

0 762

1 author:

Adrian Constantin Atanasiu


University of Bucharest
63 PUBLICATIONS 285 CITATIONS

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Reaction Systems View project

P Systems View project

All content following this page was uploaded by Adrian Constantin Atanasiu on 03 October 2016.

The user has requested enhancement of the downloaded file.


Securitatea Informatiei

Vol. 1
(Criptografie)

Adrian Atanasiu

Editura INFODATA Cluj


3

Prefata
Criptografia este stiinta comunicarii informatiei sub o forma securizata. Istoria ei
este veche si fascinanta. Mesaje ascunse sunt descoperite n Biblie; Herodot mentioneaza
o serie de procedee de steganografie folosite de vechii greci; Cezar foloseste un sistem
de criptare care i poarta numele; decriptarea telegramei Zimmermann a dus la intrarea
Statelor Unite n conflictul din 1914-1918. Si n fine cine nu a auzit de celebra masina
de criptat Enigma ?
Societatea actuala, cu un volum de date care se multiplica rapid, a dat noi valente si a
creat noi oportunitati de dezvoltare a criptografiei. Utilizarea Internetului a sporit si mai
mult importanta asigurarii securitatii informatiei, dar si a autentificarii ei. Acum dome-
niul si-a largit competentele si s-a extins atat de mult ncat a fost necesara redefinirea
sa. Criptografia a devenit numai un capitol a ceea ce se numeste astazi Securitatea
informatiei. Alte capitole care merita fi mentionate sunt: protocoale de semnatura elec-
tronica, comert electronic (Digital Business), infrastructura cu chei publice(PKI), arhi-
tectura de securitate a sistemelor de calcul (hard si soft), securitatea retelelor, securitatea
fluxului informational, securitatea bazelor de date, standarde si protocoale de gestiune
a cheilor, 0 - knowledge, partajarea secretelor, criptografie vizuala, watermarking, crip-
tografie nestandard (cuantum si moleculara), standarde de testare si certificare, protocoale
criptografice n medii juridice. Si zona de interes nu este nici pe departe epuizata. Unele
subiecte se dezvolta rapid si genereaza la randul lor domenii noi. De exemplu, retelele
wireless sau smart-cardurile necesita abordari separate, datorita interesului tot mai mare
pe care l ridica n societatea actuala. Deci, asa cum n anii 60 Knuth avea n vedere o
prezentare a artei programarii calculatoarelor, asa ar fi interesant de construit o enciclo-
pedie a artei securitatii informatiei. O enciclopedie care se mbogateste zilnic.
Lucrarea de baza este un suport de curs predat la Facultatea de Matematica si Infor-
matica a Universitatii Bucuresti. Mult timp acest curs a fost optional; dupa trecerea la
sistemul Bologna, s-a luat n considerare importanta domeniului si interesul permanent al
studentilor, astfel ncat studiul criptografiei a fost trecut n curicula generala. Materia are
n vedere atat o prezentare structurata istoric, cat si o abordare preponderent teoretica,
capabila sa asigure baza fundamentala de cunostinte absolventilor care ulterior vor lucra
n domeniul securitatii informatiei.
Dupa prezentarea sistemelor simple de criptare (monoa-lfabetice, polia-lfabetice, me-
4

canice, fluide), studiul sistemelor de criptare bloc se ncheie cu prezentarea principalelor


sisteme utilizate astazi: DES (Data Encryption Standard) si AES (Advanced Encryption
Standard). Toate sistemele sunt analizate din trei puncte de vedere: criptare, decriptare,
criptanaliza, un rol deosebit de important avand acesta din urma. Nici un sistem de
criptare nu este acceptat daca nu se demonstreaza (teoretic) ca rezista la principalele
tipuri de atac: criptanaliza liniara, criptanaliza diferentiala, compromis spatiu - timp,
atac meet-in-the middle, atacuri bazate pe frecventa. De aceea, discutiile asupra acestor
tipuri de atac sunt detaliate.
O parte importanta a lucrarii se refera la criptografia cu chei publice, construita fun-
damental pe o conjectura: P versus NP, tema primei probleme a mileniului. Mai exact,
sistemele de criptare din aceasta zona se bazeaza pe probleme N P - complete (problema
factorizarii, problema logaritmului discret, problema rucsacului) care asigura construirea
de functii polinomial neinversabile. Sistemele prezentate aici RSA, El Gamal, Merkle-
Hellman, McElliece si bazeaza securitatea pe dificultatea acestor probleme. In plus,
construirea unei aritmetici pe multimea punctelor unei curbe eliptice a dat posibilitatea
utilizarii acestei baze pentru adaptarea de sisteme criptografice avand o serie de avantaje:
lungime mica a cheilor, viteza mare de criptare/decriptare, securitate sporita.
Volumul se ncheie cu un capitol dedicat generatorilor de numere pseudo-aleatoare,
componenta care nsoteste toate sistemele de criptare cu cheie publica, precum si unele
sisteme simetrice de criptare (DES de exemplu).
Acesta este continutul primului volum al lucrarii materia predata timp de un semes-
tru. Va urma un al doilea volum, dedicat unor protocoale criptografice cunoscute. Anume,
protocoale de semnatura electronica, de gestiune a cheilor, de partajare a secretelor, de
comert electronic, de vot electronic, de securitate a postei electronice. Fiecare astfel de
subiect poate constitui tema unui curs separat. In plus, vor mai fi prezentate: modalitatea
de constructie a functiilor de dispersie criptografica (hash) precum si probleme N P -
complete care stau la baza noilor sisteme problema reprezentarii, problema dualitatii
(perechile Weil - Tate din domeniul curbelor eliptice).
Autorul roaga pe cei care s-au lasat sedusi de domeniul acesta fascinant, au citit cartea
de fata si au de facut observatii, corecturi sau sugestii sa i se adreseze direct pe adresa
aadrian@gmail.com. Orice propunere constructiva este bine venita.
Capitolul 1

Sisteme de criptare

1.1 Caracteristicile unui sistem de criptare


Criptografia este o componenta a unui domeniu mult mai larg, numit securitatea infor-
matiei. Obiectivele generale pe care le are n vedere un serviciu de securitate a informatiei
pot fi sumarizate n:

1. Confidentialitate (privacy): proprietatea de a pastra secretul informatiei, pentru ca


aceasta sa fie folosita numai de persoanele autorizate.

2. Integritatea datelor: proprietatea de a evita orice modificare (inserare, stergere,


substitutie) neautorizata a informatiei.

3. Autentificare: Proprietatea de a identifica o entitate conform anumitor standarde.


Este compusa din

(a) Autentificarea unei entitati;


(b) Autentificarea sursei informatiei;

4. Non - repudierea: Proprietatea care previne negarea unor evenimente anterioare.

Celelalte obiective legate de securitatea informatiei (autentificarea mesajelor, semnaturi,


autorizare, validare, controlul accesului, certificare, timestamping, confirmarea receptiei,
anonimitate, revocare) pot fi derivate din acestea.

Definitia 1.1. Criptografia este studiul metodelor matematice legate de securitatea infor-
matiei, capabile sa asigure confidentialitatea, autentificarea si non-repudierea mesajelor,
precum si integritatea datelor vehiculate ([?]).

5
6 CAPITOLUL 1. SISTEME DE CRIPTARE

Termenul criptografie nseamna scriere secreta1 . Domeniul cuprinde atat operatia de


criptare (cifrare) a unui text, cat si eventualele ncercari de descifrare si de aflare a cheii
de criptare. In unele lucrari, cadrul general de lucru este numit criptologie, termenul de
criptografie desemnand numai operatia de cifrare si descifrare legala.
Situatia generala de care se ocupa criptografia este urmatoarea:

Expeditor - Destinatar
6

Criptanalist

Expeditorul (personalizat n majoritatea lucrarilor cu apelativul Alice) doreste sa trimita


destinatarului (numit Bob) un mesaj printr-un canal de comunicatie, canal cu un grad
ridicat de nesiguranta2 . Aceasta insecuritate o prezinta un adversar criptanalist (Oscar)
care doreste din diverse motive sa cunoasca si eventual sa modifice continutul
mesajului, desi acesta nu i este destinat.
Aceasta confidentialitate solicitata de Alice si Bob se rezolva de obicei prin rescrierea
mesajului sub o forma care sa nu poata fi nteleasa de nici o persoana care l-ar putea
intercepta. Transformarea respectiva se numeste criptare.
In general, hackerul Oscar poate avea doua tipuri de comportament:

Pasiv: el se multumeste sa intercepteze mesajele si sa le citeasca, folosindu-le n


scop personal;

Activ: doreste sa modifice mesajele, sa le schimbe ordinea sau sa introduca propriile


sale mesaje, n intentia de a fi acceptat de Bob drept Alice. In acest caz, mesajul va
trebui sa verifice nafara de conditia de confidentialitate si pe cea de autenticitate:
Bob trebuie sa fie sigur ca mesajul primit a fost de la Alice.
In unele cazuri, problema se poate complica prin faptul ca exista anumite mesaje pe
care Alice neaga ca i apartin, desi le-a trimis chiar ea. In acest caz trebuie prevazute
anumite protocoale care sa ntareasca proprietatile de autentificare; proprietati care
sa o sileasca pe Alice sa si recunoasca propriile mesaje (non-repudiere).

In toate aceste scenarii nu exista personaje pozitive sau negative. Orice serviciu de
criptare/decriptare are si o sectie de criptanaliza. Se pot da numeroase exemple din
istorie care sa arate rolul pozitiv al lui Oscar n anumite situatii. In general, ntr-un
1
Cuvantul inventat n 1658 de fizicianul englez Thomas Browne este format din cuvintele grecesti
cryptos ascuns si grafie scriere.
2
Canalul de comunicatie poate suferi si perturbari de ordin fizic: zgomote, stergeri, demodulari etc;
studiul detectarii si corectarii erorilor de de transmitere a informatiei constituie tema altui domeniu al
securitatii informatiei, numit Teoria Codurilor.
1.1. CARACTERISTICILE UNUI SISTEM DE CRIPTARE 7

triplet (expeditor, destinatar, criptanalist) nimeni nu are ncredere n nimeni. Variantele


studiate n care Alice are ncredere n Bob sau invers, sunt mult mai simple si de aceea
extrem de rare.
Pentru a ncepe un studiu sistematic al domeniului, sa stabilim ntai terminologia
folosita uzual:
Un mesaj n forma sa originara este numit text clar. Expeditorul rescrie acest mesaj
folosind o metoda cunoscuta numai de el (eventual si de destinatar); spunem ca el cripteaza
(sau cifreaza) mesajul, obtinand un text criptat. Destinatarul primeste textul cifrat si l
decripteaza stiind metoda folosita pentru criptare; deci Alice si Bob trebuie sa stabileasca
ntr-o etapa preliminara detaliile modalitatii de criptare si de decriptare.
Algoritmul care realizeaza operatiile descrise se numeste sistem de criptare. Formal,
Definitia 1.2. Un sistem de criptare este o structura (P, C, K, E, D), unde:
P= {w | w V } este multimea textelor clare, scrise peste un alfabet nevid V
(uzual V = {0, 1}).
C= {w | w W } este multimea textelor criptate, scrise peste un alfabet nevid
W (uzual W = V ).
K este o multime de elemente numite chei.
Fiecare cheie K K determina o metoda de criptare eK E si o metoda de
decriptare dK D. eK : P C si dK : C P sunt functii cu proprietatea
dK (eK (w)) = w, w P.
In general se considera C= { | m P, k K, = eK (m)}.
Functia eK este evident injectiva (de remarcat ca aceasta conditie de injectivitate nu
este obligatorie pentru functia de decriptare dK ).
Daca eK este bijectiva (si deci dK = e1
K ), sistemul de criptare se numeste simetric
sau sistem de criptare bloc.
Observatia 1.1. Intr-un sistem de criptare simetric cu P = C, functia de criptare este o
permutare. Altfel spus, daca multimea textelor clare coincide cu cea a textelor criptate, o
criptare cu un sistem simetric nu face altceva decat o rearanjare (permutare) a textelor.
Un mesaj de intrare x este descompus n
x = x 1 x 2 . . . xn , xi P.
Apoi fiecare xi este criptat folosind regula de criptare eK , specificata de o cheie fixata
K K.
Deci Alice calculeaza yi = eK (xi ) (1 i n) si obtine textul criptat
y = y1 y2 . . . yn , yi C
pe care l trimite prin canalul de comunicatie. Bob primeste mesajul y = y1 y2 . . . yn ,
pe care l decripteaza folosind functia dK : xi = dK (yi ) (1 i n).
8 CAPITOLUL 1. SISTEME DE CRIPTARE

Pentru ca un sistem de criptare sa fie considerat bun, trebuie ndeplinite trei criterii
(enuntate de Francis Bacon n sec. XV II):

1. Fiind date eK si P, este usor de determinat eK ();

2. Fiind date dK si w C, este usor de determinat dK (w);

3. este imposibil de determinat din w, fara a cunoaste dK .

Ultimul criteriu defineste sub o forma vaga ideea de securitate a sistemului.


La aceste criterii, Bacon adauga si o a patra regula:

4 Textul criptat trebuie sa fie un text banal, fara suspiciuni.

Aceasta ultima conditie este utilizata astazi doar de unele subdomenii al criptografiei,
cum ar fi steganografie sau watermarking.
In termeni de complexitate, prin usor se ntelege folosirea unui algoritm polinomial
de grad mic preferabil algoritm liniar; o problema se considera imposibila daca pentru
rezolvarea ei nu se cunosc decat algoritmi de complexitate exponentiala.

Observatia 1.2. Intreaga disciplina numita criptografie se bazeaza pe o conjectura no-


tata prescurtat P6= N P 3 (pentru detalii a se vedea [?]). P reprezinta clasa problemelor
rezolvabile prin algoritmi a caror complexitate este marginita superior de o functie poli-
nomiala n lungimea datelor de intrare. Modelul standard de calculabilitate este masina
Turing. N P este clasa problemelor rezolvabile prin algoritmi nedeterministic polinomiali
(care sunt inclusi n algoritmii de complexitate cel putin exponentiala). Evident, P N P,
dar se pare ca problema egalitatii este nedecidabila (n termeni matematici). Oricum,
pentru cei interesati, site-ul [?] este dedicat unei informari actualizate permanent a rezul-
tatelor si ncercarilor de rezolvare a acestei probleme.

Exemplul 1.1. Unul din primele sisteme de criptare cunoscute este sistemul de criptare
Cezar. Conform istoricului Suetoniu, el a fost folosit de Cezar n corespondenta sa.
Sa consideram alfabetul latin scris, n ordine
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Fie k un numar ntreg din intervalul [0, 25]. El se va numi cheie de criptare. Re-
scriem alfabetul latin permutat ciclic, ncepand nsa cu litera avand numarul de ordine
k (litera A are numarul de ordine 0). Aceasta noua scriere o asezam sub prima scriere,
astfel (am presupus k = 2):
ABCDEFGHIJKLMNOPQRSTUVWXYZ
CDEFGHIJKLMNOPQRSTUVWXYZAB
3
Aceasta este prima din cele cinci probleme ale mileniului, pentru rezolvarea carora se acorda premii
de cate un milion dolari.
1.1. CARACTERISTICILE UNUI SISTEM DE CRIPTARE 9

Daca Alice are un text clar pe care vrea sa-l cripteze cu sistemul Cezar, ea va proceda
astfel:
Sa presupunem ca mesajul care trebuie criptat este NIMIC NOU. Alice va aseza sub
fiecare litera a acestui text, litera aflata pe linia a doua din tabelul de sus, astfel:
NIMICNOU
PKOKEPQW
Textul criptat obtinut este P KOKEP QW (din motive suplimentare de securitate,
spatiile dintre cuvinte se ignora de obicei).
La primirea textului, Bob care stie ca este vorba de sistemul de criptare Cezar
va proceda astfel: el cunoaste (fiind destinatar legal) cheia de criptare ek . Cheia sa de
decriptare este dk = e26k . Pe baza ei Bob va putea construi cele doua linii ale tabelului,
dupa care va proceda ca Alice: scrie textul criptat pe prima linie, iar pe a doua linie
determina literele corespunzatoare, conform tabelului.
In cazul k = 2, Bob va folosi drept cheie numarul e262 = e24 , iar tabelul (litera 24
corespunde lui Y) este
ABCDEFGHIJKLMNOPQRSTUVWXYZ
YZABCDEFGHIJKLMNOPQRSTUVWX
Literele P KOKEP QW determina pe a doua linie textul N IM ICN OU .
Sa rescriem sistemul Cezar n termenii Definitiei ??. Deoarece textele clare si cele
criptate folosesc alfabetul latin, vom efectua n prima etapa o operatie 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

In acest fel putem opera matematic pe un inel finit foarte simplu: Z26 . Vom avea
P = C = K= Z26 . Pentru un K K ales arbitrar (si m P, C) ,
eK (m) = m + K (mod 26)
si
dK () = K (mod 26)
La nivel conceptual, exista doua tehnici de constructie a sistemelor de criptare, definite
de Claude Shannon n 1949:
Confuzie: Scopul este de a bloca orice informatie obtinuta prin analize statistice
sau redondante ale textului criptat.
O modalitate simpla de a obtine un grad ridicat de confuzie se bazeaza pe utilizarea
de substitutii. De exemplu, n cazul secventelor binare, putem complementa unele
subsecvente folosind anumite formule predefinite.
10 CAPITOLUL 1. SISTEME DE CRIPTARE

Difuzie: Aceasta tehnica disipeaza redondanta specifica textului clar prin gene-
ralizarea ei la tot textul criptat. Practic, o modificare a unui singur caracter din
textul clar provoaca multiple modificari n textul criptat. Deci pentru distingerea
unei redondante din textul clar este necesara studierea unei cantitati apreciabile de
text criptat.
O rafinare a conceptelor de confuzie si difuzie conduce la ideea de secret perfect (perfect
secrecy). Un sistem de criptare are proprietatea de secret perfect daca din textul criptat,
Oscar nu poate obtine nici o informatie referitoare la textul clar.
Aceasta idee poate fi formulata matematic astfel:
Definitia 1.3. Un sistem de criptare este perfect secret daca

P r[x|y] = P r[x]

pentru orice x P, y C.
Altfel spus, probabilitatea aposteriori ca textul clar x sa fie criptat n textul receptionat
y este identica cu probabilitatea apriori ca textul clar sa fie x.
Urmatoarea teorema caracterizeaza proprietatea de secret perfect pentru majoritatea
sistemelor de criptare simetrice:
Teorema 1.1. Fie (P, C, K, E, D) un sistem de criptare cu card(K) = card(C) = card(P).
El asigura un secret perfect daca si numai daca toate cheile sunt utilizate cu probabilitati
egale si x P, y C exista o cheie unica K K cu y = eK (x).
Demonstratia acestei teoreme poate fi gasita detaliat n [?].

1.2 Criptanaliza sistemelor de criptare


Definitia 1.4. Procesul de determinare a unei chei K folosind un text criptat (asociat
eventual cu alte informatii auxiliare) se numeste criptanaliza.
Deci decriptarea si criptanaliza au n final acelasi scop: aflarea textului clar. Diferenta
consta n faptul ca n criptanaliza acesta trebuie aflat fara a sti cheia de decriptare.
Exista o regula de aur a creatorilor de sisteme de criptare:
Nu subestimati niciodata pe criptanalist.
care s-a verificat din punct de vedere istoric pentru toate sistemele create pana n prezent:
acestea sau au fost sparte sau trebuie sa se revizuiasca periodic pentru a rezista atacurilor
permanente ale intrusilor.
Sa studiem putin pozitia unui criptanalist (Oscar). Se presupune ntotdeauna ca el
are la dispozitie facilitati de calcul excelente, adesea superioare celor de care dispun cei
doi parteneri Alice si Bob.
1.2. CRIPTANALIZA SISTEMELOR DE CRIPTARE 11

In secolul XIX francezul Auguste Kerckhoffs lanseaza o ipoteza fundamentala (numita


Principiul lui Kirkoff):
Criptanalistul stie toate detaliile sistemului de criptare folosit, inclusiv algoritmii si
implementarile lor.4
Ca o consecinta, securitatea unui sistem de criptare se bazeaza n totalitate pe cheie.

Definitia 1.5. Un atac este un algoritm eficient care pentru un sistem de criptare
fixat gaseste elemente protejate care pot fi determinate (mult mai) rapid decat au fost
specificate de autori.

Evident, unele atacuri pot sa nu contrazica securitatea sistemului ci doar sa prevada


anumite slabiciuni posibile, de care utilizatorii trebuie sa tina cont.
In general, scopul criptografiei este desemnarea de algoritmi (protocoale, scheme, ser-
vicii) de criptare siguri (din punct de vedere al complexitatii), n timp ce criptanaliza
se concentreaza pe construirea de atacuri asupra sistemelor de criptare, avand ca scop
determinarea cheilor de criptare.
Ulterior, atacurile potential reusite furnizeaza criterii de constructie a sistemelor de
criptare, si vor face parte implicit din criptografie.
Criteriile de constructie obtinute dintr-un atac permit realizarea de sisteme de criptare
imune (rezistente) la atacul respectiv.
Criptografia ncearca sa demonstreze ca produsele obtinute sunt sigure, folosind toata
informatia cunoscuta despre atacurile posibile.
Criptanaliza examineaza cu atentie toate slabiciunile (faliile) unui sistem si ncearca
sa construiasca atacuri bazate pe aceste slabiciuni, pentru a demonstra ca sistemul nu
este sigur (si deci poate fi spart de Oscar).
In general este imposibil de demonstrat ca un sistem rezista la orice fel de atac, n
timp ce opusul sau este totdeauna posibil: este suficient de descris un atac.
Se considera ca metodele de atac (cum ar fi furtul, mituirea, presiuni fizice si psihice
asupra persoanelor implicate n construirea si utilizarea sistemului de criptare) care nu
sunt legate direct de slabiciunile sistemului de criptare, nu intra n domeniul criptanalizei.

In general un sistem de criptare poate fi neconditionat sigur sau conditionat sigur.


Un sistem neconditionat sigur este imun la orice tip de atac. In acest caz, securitatea sa
depinde de dificultatea de a rezolva problema matematica pe care se bazeaza construirea
cheii (de criptare/decriptare).

4
Acesta este unul din cele sase principii enuntate de Kerckfoffs pentru domeniul militar. Pentru detalii,
se poate utiliza wikipedia.org/wiki/Kerckhoffsprinciple.
12 CAPITOLUL 1. SISTEME DE CRIPTARE

In general, un criptanalist este pus n fata urmatoarelor situatii, care i solicita strategii
diverse de urmat:

1. Stie numai textul criptat w; n acest caz atacurile sunt direct legate de lungimea
textului.
Cel mai simplu atac n acest caz consta n parcurgerea tuturor cheilor posibile si
verificarea textului criptat, pana se gaseste cheia corecta. Este atacul prin forta
bruta si el reuseste totdeauna, pentru ca exista ntotdeauna o cheie n K, care a fost
folosita la criptare.
Un atac prin forta bruta poate fi modelat foarte simplu sub forma unui oracol, care
pentru orice cheie K K, raspunde daca este corecta sau nu.

Oracol

6
Da/Nu k
?

Atac - Cheie

Principala ntrebare care se pune n aceasta situatie este: daca ncercam sa ghicim
una din n chei posibile, care este numarul mediu de ncercari pana gasim cheia ?

Teorema 1.2. Pentru a ghici o cheie din n variante posibile sunt necesare n medie
(n + 1)/2 ncercari.

De exemplu, pentru un sistem de criptare cu card(K) = 256 , se folosesc aproximativ


255 ncercari pana se gaseste cheia corecta.

Demonstratie. Daca sistemul are n chei posibile, atunci probabilitatea de a ghici


corect din prima ncercare este 1/n. Pentru a ghici din doua ncercari trebuie sa
fi dat gres cu prima ncercare si apoi eliminand cheia care nu este corecta sa
ncercam alta cheie din restul
  n 1 chei posibile. Deci probabilitatea de a ghici
de
1 1
din doua ncercari este 1 n n1 = n1 . Similar, probabilitatea de a ghici cheia
corecta n exact 3, 4, . . . , n ncercari este 1/n.
1.2. CRIPTANALIZA SISTEMELOR DE CRIPTARE 13

Numarul mediu de ncercari se obtine prin nmultirea numarului k de ncercari cu


probabilitatea de ghicire a cheii corecte n k ncercari si apoi sumarea dupa k. Deci

1 1 1 1 n(n + 1) 1 n+1
1 + 2 . . . + (n 1) + n = =
n n n n 2 n 2

Deci, n cazul cand numarul cheilor posibile este mic (n Exemplul ?? sunt numai
26 chei), aceasta cheie se poate afla foarte usor dupa un numar mic de ncercari. De
aceea sunt folosite obligatoriu sisteme de criptare cu card(K) foarte mare. Pentru
o cheie care ocupa n biti sunt necesare n medie 2n1 ncercari (daca nu exista nici
o informatie suplimentara). O extindere a lungimii cheii la n + 1 biti dubleaza deci
spatiul de cautare. In momentul de fata, tehnica de calcul ofera atacuri prin forta
bruta eficiente pentru cheile de lungimi mai mici de 128 biti; asa ca majoritatea
sistemelor de criptare actuale folosesc n general chei de 1024 biti sau chiar mai
mult5 .

Atacul prin forta bruta poate fi mbunatatit semnificativ cu alte informatii legate
de sistem, informatii care pot reduce numarul cheilor posibile.
Multe atacuri folosesc diverse strategii pentru a reduce semnificativ spatiul cheilor
posibile, dupa care se foloseste atacul prin forta bruta.

2. Stie cel putin o pereche de caractere (text clar, text criptat); din cunoasterea catorva
perechi (x, eK (x)) cu x P Oscar va ncearca sa decripteze ntregul text criptat
interceptat.

Exemplul 1.2. La sistemul de criptare Cezar, o singura pereche (a, eK (a)), dezva-
luie imediat cheia si implicit duce la decriptare.

Exemplul 1.3. Aceasta a fost situatia n care s-a aflat orientalistul francez Jean
Francois Champollion, cand a descifrat hieroglifele folosind piatra de la Rosetta (vezi
[?]).

3. Oscar cunoaste criptarea unor texte clare selectate de el; este atacul cu text clar
ales, luat n considerare de majoritatea studiilor de criptanaliza. Aceasta situatie
este adesea superioara celei din cazul precedent; sa exemplificam acest lucru.

Exemplul 1.4. Fie sistemul de criptare Hill, creat n 1929 de Lester Hill.
Definim un numar ntreg fixat d (d 2). Se construiesc multimile
5
Exceptii fac sistemele de criptare simetrice si cele bazate pe curbe eliptice, datorita conceptelor
teoretice speciale pe baza carora sunt construite.
14 CAPITOLUL 1. SISTEME DE CRIPTARE

P= C= (Z26 )d , K= {M | M Md (Z26 ), det(M ) 6= 0}.

Deci o cheie de criptare este o matrice M patrata nesingulara de dimensiune d, cu


elemente din Z26 , iar M 1 formeaza cheia de decriptare.
Textul clar w se mparte n blocuri de lungime d : w = 1 2 . . . n , |i | = d
(ultimul bloc se completeaza eventual cu 0 pana 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 foloseste relatia dM (i ) = i M 1 (mod 26).
! !
3 3 1 15 17
Sa luam de exemplu d = 2 si cheia M = , cu inversa M = .
2 5 20 9
Daca textul clar este w = F RAC, vom avea
1 = (F R) = (5 17), 2 = (A C) = (0 2)
Din relatiile
!
3 3
1 = 1 M (mod 26) = (5 17) = (23 22) = (X W )
2 5
!
3 3
2 = 2 M (mod 26) = (0 2) = (4 10) = (E K)
2 5
se obtine textul criptat x = XW EK.
Sa ne situam acum pe pozitia lui Oscar: presupunem ca am gasit dimensiunea d = 2
si ncercam sa aflam matricea M (sau echivalent M 1 ), stiind perechea (text
clar, text criptat)= (F RAC, XW EG).
Deci Oscar se afla acum n fata urmatoarei probleme: trebuie sa determine matricea
!
a b
M= cu a, b, c, d {0, 1, . . . , 25}, astfel ca
c d
! ! !
5 17 a b 23 22
= .
0 2 c d 4 10

!
5 17
Pentru a putea afla aceasta matrice, Oscar trebuie sa afle inversa lui A = .
0 2
Cum det(A) = 10 si cmmdc(10, 26) > 1, rezulta ca 101 (mod 26) nu exista; deci A
nu este inversabila.
Sa presupunem acum ca Oscar lucreaza n ipoteza (3); alege un text clar a carui
matrice este inversabila si i afla criptarea.
1.3. EXERCITII 15

!
1 17
Fie BRAD acest text clar, a carui matrice asociata este A = .
0 3
!
11 10
Oscar solicita criptarea lui BRAD si primeste LKGP , de matrice B = .
6 15
Deci el dispune de perechea (BRAD, LKGP ).
!
1 3
Oscar determina ntai A1 = . Apoi, din ecuatia A M = B, va gasi
0 9
solutia ! ! !
1 1 3 11 10 3 3
M =A B = =
0 9 6 15 2 5

4. Stie cheia de criptare; acum Oscar va cunoaste cheia eK si ncearca sa determine dK


nainte de interceptarea mesajelor criptate.
Aceasta este situatia tipica sistemelor de criptare cu cheie publica: cheia de criptare
eK este cunoscuta public cu mult nainte de a fi folosita pentru criptare. Deci
criptanalistul are la dispozitie destul de mult timp pentru prelucrarea ei si orice
clarificare n perioada de pre-atac (cand timpul este ieftin) are o valoare deosebita;
dupa ce se primesc mesaje criptate, timpul devine scump, si el trebuie sa fie scurtat
cat mai mult.

1.3 Exercitii
1.1. Textul clar NUMAR este criptat n Orice vant nu bate seara. Sa se descrie sistemul
de criptare folosit.
1.2. Folosind atacul prin forta bruta, decriptati mesajul WYPTBSJBYZ criptat cu un
sistem Cezar.
1.3. Sa presupunem ca Cezar trimite un mesaj criptat unuia din generalii sai, iar acest
mesaj este format dintr-o singura litera. Ce puteti spune despre securitatea mesajului ?
1.4. Fie p un numar prim. Aratati ca numarul matricilor 2 2 inversabile peste Zp este
(p2 1)(p2 p).
1.5. Cate matrici 2 2 sunt inversabile peste Zn pentru n = 6, 9, 26 ?
1.6. Sa 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
16 CAPITOLUL 1. SISTEME DE CRIPTARE

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

1.8. Determinati inversele matricilor (modulo 26):



! ! 10 5 12 1 11 12
2 5 11 8
, , 3 14 21 , 4 23 2

9 5 3 7
8 9 11 17 15 9

1.9. Textul clar conversation este criptat n HIARRTNUYTUS folosind un sistem


de criptare Hill bazat pe o matrice neinversabila n n.
Determinati n si apoi matricile de criptare si decriptare.

1.10. Fie n (n 2) un numar ntreg. Un patrat latin de ordin n este un tablou L de


dimensiune n n, cu elemente din multimea {1, 2, . . . , n}, astfel ca fiecare numar apare
o singura data pe fiecare linie si fiecare coloana din L. Aratati ca el defineste un sistem
de criptare cu P = C = K, n care criptarea lui x cu cheia k este L(k, x).
Asigura un astfel de sistem de criptare un secret perfect ?
Capitolul 2

Sisteme simetrice de criptare

In general, sistemele de criptare clasice se numesc si sisteme simetrice. Motivul este acela
ca Alice si Bob detin aceeasi informatie relativa la sistemul de criptare folosit. In plus,
odata cu aflarea cheii de criptare eK , cheia de decriptare dK se obtine imediat, fiind functia
inversa.
Sistemele de criptare simetrice se mpart n doua clase mari: cifruri de permutare si
cifruri de substitutie.

2.1 Cifruri de permutare


La aceste sisteme de criptare, textul clar se mparte n blocuri de n (n 2) caractere,
dupa care fiecarui bloc i se aplica o permutare Sn (multimea permutarilor de n
elemente). Elementele n si sunt fixate. este cheia de criptare, iar 1 va fi cheia de
decriptare.
!
1 2 3
Exemplul 2.1. Sa presupunem ca avem cheia de criptare . Atunci un text
2 1 3
clar, de exemplu FLOARE ALBASTRA se mparte n grupuri de cate trei caractere (s-a
considerat si caracterul spatiu, notat )
FLO ARE AL BAS TRA
Textul criptat va fi
LFO RAE A L ABS RTA
sau eliminand gruparile, LFORAEA LABSRTA.

Exemplul 2.2. Un sistem celebru de criptare cu permutari este sistemul Richelieu (pre-
zentat si n literatura de Jules Verne, n romanul Mathias Sandorf). Dam un exemplu de
utilizare a unui astfel de sistem.
Fie cartonul 6 6, n care zonele hasurate constituie gauri.

17
18 CAPITOLUL 2. SISTEME SIMETRICE DE CRIPTARE

Vrem sa criptam textul clar


EMINESCU A FOST UN MARE POET NATIONAL
Vom scrie acest text sub forma unui tabel cu sase linii si sase coloane, astfel:
E M I N E S
C U A F
O S T U N
M A R E P
O E T N A
T I O N A L
Aplicand cartonul peste acest text, vor ramane vizibile 9 caractere: MNS TA AN (citite
de la stanga la dreapta si de sus n jos).
Vom roti acum cartonul cu 90o n sensul acelor de ceasornic. El va arata

Asezand acum peste text, raman vizibile caracterele F MPTNIL (primul caracter a fost
un spatiu si l-am marcat cu pentru a-l face vizibil).
La a treia rotire a cartonului se obtine similar textul ICSUEETOA, iar la a patra
EEUAOURO
Deci textul criptat este
MNS TA AN F MPTNILICSUEETOAEEUAOURO
Operatia de decriptare se realizeaza similar.
Sa dam o definitie matematica acestei clase de sisteme de criptare.
Definitia 2.1. Fie n un numar natural nenul. Un cifru de permutare este un sistem
(P, C, K, E, D) unde P= C= (Z26 )n , K= Sn .
Pentru o cheie (permutare) Sn

e (a1 a2 . . . an ) = a(1) a(2) . . . a(n)

d (b1 b2 . . . bn ) = b1 (1) b1 (2) . . . b1 (n)


2.2. CIFRURI DE SUBSTITUTIE 19

Lema 2.1. Un cifru de permutare este un sistem de criptare Hill.

Demonstratie. Pentru fiecare permutare Sn putem construi o matrice de permutare


M = (mi,j ) definita
mi,j = 1 i = (j)
Se verifica usor faptul ca sistemul de criptare Hill cu matricea M este echivalent cu un
cifru de permutare bazat pe cheia . Mai mult, M1 = M1 .
!
1 2 3
Exemplul 2.3. Sa reluam Exemplul ??. Permutarii i corespunde matricea
2 1 3

0 1 0
de permutare 1 0 0

.
0 0 1
Operatia de criptare este imediata. De exemplu, criptarea textului F LO este

0 1 0
(5 11 14) 1 0 0 = (11 5 14)

0 0 1

adica LF O.

2.2 Cifruri de substitutie


Cifrurile de substitutie sunt cele mai utilizate sisteme de criptare simetrice; ele se ntalnesc
si azi, exemple standard fiind sistemele DES si AES.
Un astfel de cifru consta n nlocuirea fiecarui caracter din V cu alt caracter (din W ).
Exista doua clase mari de cifruri de substitutie: sisteme monoalfabetice si polialfabetice.

2.2.1 Sisteme de criptare monoalfabetice


Un astfel de sistem substituie fiecare caracter cu alt caracter totdeauna acelasi, indiferent
de pozitie. Atunci cand cele doua alfabete coincid (V = W ), sistemele monoalfabetice
sunt cazuri particulare de cifruri de permutare.
Vom trece n revista cateva astfel de sisteme.

Sistemul de criptare Cezar


Sistemul de criptare Cezar este un sistem monoalfabetic: odata stabilita cheia de criptare
eK , fiecare caracter cod x se nlocuieste prin caracterul cod x + k (mod 26) (a se vedea
Capitolul I). Decriptarea se realizeaza dupa formula dK (x) = x k (mod 26).
20 CAPITOLUL 2. SISTEME SIMETRICE DE CRIPTARE

Observatia 2.1. In cartea sa De bello gallico, Cezar aminteste de un sistem de criptare,


fara sa dea detalii. Mai tarziu, Suetoniu n Viata lui Iuliu Cezar descrie sistemul.
Cezar folosea un sistem de criptare n care nlocuia literele romane cu cele grecesti si aplica
deplasarea k = 3. Nepotul lui Cezar, mparatul Augustus a folosit acelasi sistem, bazat pe
deplasarea k = 1. Sistemul Cezar a fost utilizat mult timp. Armata rusa apela frecvent
la el n 1915, ca nlocuitor pentru sistemele sale proprii de criptare, prea sofisticate la
nivelul trupelor de camp. Un sistem Cezar cu k = 13 este sistemul ROT 13, aparut n
comunitatea Internet n 1984 sau 1985 si implementat pe sistemele UNIX ([?],[?],[?])
Evident, Cezar este un sistem generat de permutarile ciclice din S26 . Fiind numai
26 chei posibile, el este extrem de vulnerabil la atacul prin forta bruta. Pentru a-i mari
rezistenta, s-a utilizat si o varianta, numita sistem Cezar cu cheie, definita astfel:
Se considera un cuvant (cheie), preferabil cu toate caracterele distincte (n caz contrar,
literele identice se folosesc doar la prima aparitie). Acest cuvant se aseaza la nceputul
alfabetului. Dupa ce se termina, sirul se completeaza cu literele care nu existau n cuvantul
cheie, n ordine alfabetica.
Exemplul 2.4. Sa presupunem ca s-a ales cuvantul 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 rand, iar pentru criptare
caracterele corespondente de pe randul al doilea. Astfel, STUDENT se cripteaza n
QSUTOJS, ARGINT n MPCEJS etc.
Sistemul Cezar cu cheie rezista mai bine la atacul cu forta bruta, numarul cheilor fiind
acum apropiat de card(S26 ) = 26!.

Sistemul de criptare afin


Sistemul de criptare afin este o generalizare a sistemului Cezar. Vom avea P = C= Z26 ,
K= {(a, b) | a, b Z26 , cmmdc(a, 26) = 1}, iar functiile de criptare si decriptare (pentru
o cheie K = (a, b)) sunt

eK (x) = ax + b (mod 26), dK (y) = a1 y + a1 (26 b) (mod 26)

Conditia ca a sa fie prim cu 26 asigura existenta lui a1 n Z26 .


Exemplul 2.5. De exemplu, pentru a = 3, b = 5 functia de criptare este eK (x) = 3x + 5,
care poate fi reprezentata prin tabelul:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
5 8 11 14 17 20 23 0 3 6 9 12 15 18 21 24 1 4 7 10 13 16 19 22 25 2

sau scris direct pentru caractere


A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
F I L O R U X A D G J M P S V Y B E H K N Q T W Z C
2.2. CIFRURI DE SUBSTITUTIE 21

Astfel, textul clar PRIMAVARA TARZIE se cripteaza n YEDPFQFEF KDECDR.


Deoarece 31 = 9 (mod 26), decriptarea se realizeaza matematic folosind functia
dK (x) = 9x + 7 (sau practic inversand cele doua linii ale tabelului de mai sus).
Conditia cmmdc(a, 26) = 1 asigura de asemenea injectivitatea aplicatiei eK .
De exemplu, pentru eK (x) = 10x + 1, A si N se transforma ambele n B, iar O nu apare
ca imagine n alfabetul substitutiei.

Sa studiem spatiul cheilor K. Orice cheie K K este determinata complet de valorile


ntregi (a, b) cu (a, 26) = 1. Sunt posibile 12 valori1 pentru a : 1, 3, 5, 7, 9, 11, 15, 19, 21, 23,
25. Pentru b sunt posibile 26 valori, care se iau independent de a, cu singura exceptie
a = 1, b = 0 (care se exclude deoarece nu conduce la nici o criptare). Deci card(K) = 311,
numar suficient de mic pentru reusita unui atac prin forta bruta.

Sistemul de criptare Polybios


Sistemul Cezar nu este cel mai vechi sistem de criptare. Un sistem mai vechi a fost
descris de Polybios (istoric grec mort cu 30 ani naintea nasterii lui Cezar). Initial acesta
a fost doar un sistem maritim de semnalizare cu torte; ulterior i s-a dat o semnificatie
criptografica.
Sa consideram alfabetul latin, din care eliminam o litera de frecventa cat mai redusa2 ;
fie aceasta W . Cele 25 litere ramase le asezam ntr-un patrat 5 5 (numit careu Polybios)
n felul urmator:
A B C D E
A A B C D E
B F G H I J
C K L M N O
D P Q R S T
E U V X Y Z
In operatia 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 afla a.
Astfel, textul clar MERGEM ACASA este criptat n
CCAEDCBBAECCAAACAADDAA.
Deci sistemul de criptare Polybios este o substitutie monoalfabetica cu alfabetul W =
{AA, AB, AC, . . . , EE} de 25 caractere.
Sunt diverse variante ale sistemului Polybios. Astfel, daca se folosesc drept coordonate
cifrele 1, 2, 3, 4, 5 n loc de A, B, C, D, E, sistemul a fost folosit n penitenciarele rusesti3 ,
iar ulterior de catre prizonierii americani din Vietnam. Este foarte simplu de nvatat
1
Pentru un numar dat n exista (n) numere mai mici decat n si prime cu n, unde phi este functia
Euler. In particular (26) = 12.
2
In limba engleza litera eliminata este de obicei J.
3
Alfabetul cirilic are 33 litere, deci n acest caz s-a utilizat un careu 6 6.
22 CAPITOLUL 2. SISTEME SIMETRICE DE CRIPTARE

si poate fi aplicat folosind diverse semne drept coordonate (cifre, puncte, figuri, batai
de toba etc). A fost utilizat de asemenea n cadrul altor sisteme de criptare, cum ar fi
sistemul nihilist, cifrul ADFGVX (utilizat de armata germana n primul razboi mondial)
sau sistemul Bifid, inventat de Dellastell n 1901 (pentru detalii, se vedea [?]).

Sistemul cavalerilor de Malta

Ordinul cavalerilor de Malta folosea un sistem de criptare monoalfabetic bazat pe stilizarea


unei cruci. Astfel, sa consideram careurile:

A: B: C: J. K. L. S T U
D: E: F : M. N. O. V W X
G: H: I: P. Q. R. Y Z

Liniile care ncadreaza fiecare caracter (inclusiv spatiul), mpreuna cu punctele (doua, unul
sau zero) indica substitutia caracterului respectiv. Astfel, textul clar DUPA DOUAZECI
DE ANI se cripteaza n

: . : : . : : : : : : : . :

2.2.2 Criptanaliza sistemelor de criptare monoalfabetice

Punctul slab al sistemelor de criptare monoalfabetice consta n frecventa de aparitie a


caracterelor n text. Daca un text criptat este suficient de lung si se cunoaste limba
n care este scris textul clar, sistemul poate fi spart printr-un atac bazat pe frecventa
aparitiei literelor ntr-o limba.
Sunt construite diverse structuri de ordine relative la frecventa aparitiei literelor n
fiecare limba europeana. De obicei, cu cat un text criptat este mai lung, cu atat frecventa
literelor folosite se apropie de aceasta ordonare generala. O comparare ntre cele doua
relatii de ordine (cea a caracterelor din textul criptat si cea a lterelor din alfabetul limbii
curente) conduce la realizarea catorva corespondente (litera text clar litera text criptat),
ceea ce stabileste n mod univoc cheia de criptare. Pentru sistemul Cezar este suficienta
stabilirea unei singure perechi; pentru sistemul afin trebuiesc doua perechi etc.
Pentru limba romana, un tabel al literelor cele mai frecvent ntalnite este
2.2. CIFRURI DE SUBSTITUTIE 23

Litera Frecventa
A 13, 04 % Litera Frecventa
I 12, 89 % L 4, 58 %
E 11, 75 % O 3, 85 %
R 7, 39 % D 3, 68 %
T 6, 62 % M 3, 33 %
N 6, 44 % P 2, 91 %
U 6, 44 % F 1, 50 %
S 5, 50 % V 1, 26%
C 5, 47 %
(restul caracterelor au o n mod normal o frecventa de aparitie sub 1 %).
Exemplul 2.6. Sa consideram ca s-a interceptat urmatorul text, criptat cu un sistem
monoalfabetic (nu se stie exact ce sistem a fost utilizat).
lqakc sp gcxk aca pcmgqb kq kxc pkersmpqsb vk vsmgxkbc mkacpc tcacpbqlqs
vk cgele cmtxq ms nocxgsb mbxcsp vk exsgk oxcbqsbcbk texbslk spclbk gcxk
cmgqpvkcq bxkgcbexslk gqxbslk xktxknkpbcq tkpbxq mbxcsps qp cfkxbsmakpb
mqtcxcbex vcx lsatkvk pq bxkrqscq mc zsk txkc gqxsems psgs mc mk cmbktbk
mc czlk acxk lqgxq vk lc gkl gq gcxk fkpkcq sp gepbcgb
In prima etapa, vom numara de cate ori apare n text fiecare caracter. se obtine tabelul
Caracter c k x b s q g p m l e p a v b n o f z
Frecventa 39 38 27 25 23 20 19 18 18 11 9 8 7 7 2 2 2 2 2

Deci caracterele cele mai frecvente sunt c si k. Pe de-alta parte, cele mai frecvente
caractere din limba romana sunt A, I si E (textul nu este suficient de mare pentru a putea
face o distinctie neta). In mod cert, A {c, k}. Sunt patru optiuni posibile, din care trei
se elimina rapid. Ramane de abordat c A, k E.
Vom nota cu litere mari caracterele din textul clar; prin nlocuirea lui c cu A, a lui k
cu E, textul devine
lqaEA sp gAxE aAa pAmgqb Eq ExA pEersmpqsb vE vsmgxEbA mEaApA tAaApbqlqs
vE Agele Amtxq ms noAxgsb mbxAsp vE exsgE oxAbqsbAbE texbslE spAlbE gAxE
AmgqpvEAq bxEgAbexslk gqxbslE xEtxEnEpbAq tEpbxq mbxAsps qp AfExbsmaEpb
mqtAxAbex vAx lsatEvE pq bxErqsAq mA zsE txEA gqxsems psgs mA mE AmbEtbE
mA AzlE aAxE lqgxq vE lA gEs gq gAxE fEpEAq sp gepbAgb
Cuvantul ExA de pe primul rand are caracterul din mijloc (x) de frecventa ridicata (27
aparitii); deci el trebuie sa corespunda unei litere frecvente din limba romana si n plus
sa aiba semnificatie semantica. Concluzie: acest cuvant este ERA. Deci x R. Facem
substitutia si se obtine textul
lqaEA sp gARE aAa pAmgqb Eq ERA pEersmpqsb vE vsmgREbA mEaApA tAaApbqlqs
vE Agele AmtRq ms noARgsb mbRAsp vE eRsgE oRAbqsbAbE teRbslE spAlbE gARE
AmgqpvEAq bREgAbeRsleR gqRbslE REtREnEpbAq tEpbRq mbRAsps qp AfERbsmaEpb
mqtARAbeR vAR lsatEvE pq bRErqsAq mA zsE tREA gqRsems psgs mA mE AmbEtbE
mA AzlE aARE lqgRq vE lA gEs gq gARE fEpEAq sp gepbAgb
24 CAPITOLUL 2. SISTEME SIMETRICE DE CRIPTARE

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


REP REZEN T A{I, M, U }. De aici se obtin corespondentele t P, n Z, p N
si b T (pentru ultimul caracter - q, nu facem deocamdata nici o optiune). Noul text
va fi
lqaEA sp gARE aAa NAmgqT Eq ERA NEersmNqsT vE vsmgRETA mEaANA PAaANTqlqs
vE Agele AmPRq ms ZoARgsT mTRAsN vE eRsgE oRATqsTATE PeRTslE sNAlTE gARE
AmgqNvEAq TREgATeRsleR gqRTslE REPREZENTAq PENTRq mTRAsNs qN AfERTsmaENT
mqPARATeR vAR lsaPEvE Nq bRErqsAq mA zsE PREA gqRsems Nsgs mA mE AmTEPTE
mA AzlE aARE lqgRq vE lA gEs gq gARE fENEAq sN geNTAgT
Lucrurile ncep acum sa se simplifice: P EN T Rq este corect numai pentru q U ,
AmT EP T E pentru m S. Apoi N ASgU T da g C, SU P ARAT eR da e O,
iar din f EN EAU deducem f V . Facand aceste nlocuiri, se obtine textul
lUaEA sp CARE MAM NASCUT EU ERA NEOrsSNUsT DE vsSCRETA SEaANA PAaANTUlUs
DE ACOlO ASPRU Ss ZoARCsT STRAsN vE ORsCE oRATUsTATE PORTslE sNAlTE CARE
ASCUNvEAU TRECATORslOR CURTslE REPREZENTAU PENTRU STRAsNs UN AfERTsSaENT
SUPARATOR vAR lsaPEvE NU bRErqsAU SA zsE PREA CURsOms NsCs SA SE ASTEPTE
mA AzlE aARE lUCRU vE lA CEs CU CARE VENEAU sN CONTACT
Ultimele caractere se deduc imediat: l L, a M, r B, s I, v D.
Textul clar final este:
LUMEA IN CARE MAM NASCUT EU ERA NEOBISNUIT DE DISCRETA SEMANA PAMANTULUI
DE ACOLO ASPRU SI ZGARCIT STRAIN DE ORICE GRATUITATE PORTILE INALTE CARE
ASCUNDEAU TRECATORILOR CURTILE REPREZENTAU PENTRU STRAINI UN AVERTISMENT
SUPARATOR DAR LIMPEDE NU TREBUIAU SA FIE PREA CURIOSI NICI SA SE ASTEPTE
SA AFLE MARE lUCRU DE LA CEI CU CARE VENEAU IN CONTACT
(textul provine din romanul Viata ca o corida de Octavian Paler).
Evident, daca se stia sistemul de criptare (afin, Cezar etc) criptanaliza se simplifica
mult.
Pentru alte aplicatii, oferim tabelele de frecventa a literelor pentru principalele limbi
europene4 (am retinut din fiecare limba numai cele mai frecvente noua litere):
Engleza Frecventa Germana Frecventa Franceza Frecventa Spaniola Frecventa
E 12, 31 % E 18, 46 % E 15, 87 % E 13, 15 %
T 9, 59 % N 11, 42 % A 9, 42 % A 12, 69 %
A 8, 05 % I 8, 02 % I 8, 41 % O 9, 49 %
O 7, 94 % R 7, 14 % S 7, 90 % S 7, 60 %
N 7, 19 % S 7, 04 % T 7, 26 % N 6, 95 %
I 7, 18 % A 5, 38 % N 7, 15 % R 6, 25 %
S 6, 59 % T 5, 22% R 6, 46 % I 6, 25 %
R 6, 03 % U 5, 01% U 6, 24 % L 5, 94 %
H 5, 14 % D 4, 94% L 5, 34 % D 5, 58 %

4
Datele statistice pentru toate tabelele inclusiv limba romana sunt din anul 1994.
2.2. CIFRURI DE SUBSTITUTIE 25

Exista o situatie ipotetica n care criptanaliza unui sistem monoalfabetic este imposibila:
atunci cand P= V si nu dispunem de nici o alta informatie (decat eventual sistemul de
criptare). Acest caz corespunde nsa unei codificari; adevarata criptare a avut loc atunci
cand mesajele inteligibile au fost translatate n cuvinte din V .

2.2.3 Sisteme de criptare polialfabetice


Diferenta dintre aceste sisteme de criptare si cele monoalfabetice consta n faptul ca
substitutia unui caracter variaza n text, n functie de diversi parametri (pozitie, context
etc.). Aceasta conduce binenteles la un numar mult mai mare de chei posibile. Se
considera ca primul sistem de criptare polialfabetic a fost creat de Leon Battista n 1568
([?]). Unele aplicatii actuale folosesc nca pentru anumite sectiuni astfel de sisteme de
criptare.

Sistemul homofonic
Sistemul de criptare homofonic este un sistem intermediar ntre sistemele mono si cele
polialfabetice. Principalul lui scop este de a evita atacul prin frecventa de aparitie a
caracterelor. Se pare ca a fost utilizat prima oara n 1401 de catre ducele de Mantua.
Fiecarui caracter a P i se asociaza o multime H(a) C astfel ncat:
1. H(a) H(b) = a 6= b;
2. Daca 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 cauta o multime H(a) astfel ca y H(a).
Exemplul 2.7. Sa consideram P= {a, b} si H(a) = {001, 010}, H(b) = {000, 011, 101,
111}. Pentru criptarea textului ab se poate folosi oricare din secventele
001000, 001011, 001101, 001111, 010000, 010011, 010101, 010111.
Sistemul homofonic este mult mai rezistent la un atac bazat numai pe textul criptat,
dar cedeaza usor la un atac cu text clar ales.

Sistemul de criptare Playfair


Sistemul a fost inventat 1854 de Sir Charles Wheatstone. Cel care l promoveaza si l
sustine pentru a fi adoptat ca cifru oficial al Marii Britanii este baronul Lyon Playfair de
St. Andrews. Guvernul prefera alta varianta, dar acest sistem de criptare capata numele
baronului.
Ideea de baza este urmatoarea:
Din cele 26 litere ale alfabetului se elimina una de frecventa minima; sa spunem Q.
Restul literelor se aranjeaza arbitrar sub forma unui patrat 5 5.
Sa exemplificam sistemul pentru tabloul
26 CAPITOLUL 2. SISTEME SIMETRICE DE CRIPTARE

S Y D W Z
R I P U L
H C A X F
T N O G E
B K M J V
Acest tabel va forma atat cheia de criptare cat si cea de decriptare.
Regulile de criptare/decriptare sunt:
Textul clar este separat n blocuri de cate doua caractere (ignorand spatiile). Condi-
tia este ca nici un bloc sa nu contina aceiasi litera, iar textul sa fie de lungime para.
Aceste deziderate se realizeaza usor modificand putin textul clar (se introduce o
litera de frecventa mica ntre cele doua litere egale, respectiv ca ultim caracter).
Fiecare bloc se cripteaza astfel: daca cele doua litere nu sunt plasate n tabel pe
aceeasi linie sau aceeasi coloana (de exemplu A si E), se cerceteaza colturile drep-
tunghiului determinat de cele doua litere (n cazul nostru A, F, O, E). Perechea AE
este criptata n F O. Ordinea este determinata de ordinea liniilor pe care se afla
literele din textul clar. Astfel, EA se cripteaza n OF , SF n ZB etc.
Daca cele doua litere se gasesc pe aceeasi linie (coloana), se merge ciclic cu o pozitie
la dreapta (respectiv jos). Deci CA se cripteaza n AX, W X n U G, CA n AX
etc.
De exemplu, textul clar AFARA PLOUA se cripteaza n XHHPPDPEPX. Se observa ca
cele patru aparitii ale caracterului A au fost criptate cu X, H, P si din nou X.
O permutare ciclica a liniilor si coloanelor tabloului nu modifica criptarea. De exemplu,
patratul
P U L R I
A X F H C
O G E T N
M J V B K
D W Z S Y
obtinut prin deplasarea cu doua pozitii spre stanga si o pozitie n sus, este echivalent cu
cel initial (ambele asigura aceiasi cheie de criptare).
Regulile de baza pot fi modificate sau completate dupa necesitati. Astfel, se poate
adauga din loc n loc cate o litera falsa (cu frecventa foarte redusa, cum ar fi X, Y ) care
sa modifice textul criptat. Patratul 5 5 poate fi nlocuit cu un dreptunghi 4 6 sau
3 8, cu schimbarile corespunzatoare n alegerea literelor care se elimina.
Pentru a pastra cheia n siguranta, se recomanda memorarea acesteia. Cum o astfel
de cheie este extrem de greu de memorat, se foloseste un cuvant cheie sau o propozitie cu
toate literele distincte. Acesta cuvant este scris la nceputul tabloului. Spatiile ramase
sunt completate cu restul literelor alfabetului, scrise n ordinea aparitiei lor5 .
5
In definitia initiala a sistemului, Wheatstone pleca de la cuvantul Holmes.
2.2. CIFRURI DE SUBSTITUTIE 27

Astfel, n preajma primului razboi mondial, armata romana folosea un dreptunghi


3 8 din care lipseau literele Q si K. Cuvantul 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 si sistemul anterior, Playfair rezista la atacuri bazate pe frecventa aparitiei, dar


nu si la cele prin text clar ales.
Implementari actuale folosesc reprezentarea binara a literelor si fac un pas suplimentar:
dupa ce s-a obtinut o pereche criptata, aceasta se combina printr-un XOR (adunare
modulo 2) cu perechea criptata anterior.
O varianta a sistemului de criptare Playfair este Playfair dublu, sistem folosit de Ger-
mania n al doilea razboi mondial. Regulile sunt urmatoarele:

1. Se folosesc doua careuri 5 5 alipite.

2. Textul clar se scrie pe doua randuri (completand eventual ultimul rand cu un ca-
racter de frecventa mica). Fiecare coloana va furniza o pereche de doua litere.

3. Intr-o pereche de litere (X, Y ), X este un element din primul careu, iar Y un
element din al doilea careu.

4. Daca X si Y sunt varfurile unui dreptunghi, se ia ca rezultat perechea formata


din celelalte doua varfuri. Daca X si Y se afla pe aceeasi linie, se iau urmatoarele
caractere (din fiecare careu) similar sistemului Playfair simplu. Fie (Z, U ) perechea
obtinuta (Z este din al doilea careu, iar U din primul careu).

5. Se considera perechea (U, Z) si se reia pasul (4), obtinandu-se n final textul criptat
(P, Q).

Exemplul 2.8. Sa consideram careurile Playfair definite de cuvintele ROM AN ESC si


respectiv P REDOM IN AN T (s-a eliminat litera K):

R O M A N P R E D O
E S C B D M I N A T
F G H I J B C F G H
L P Q T U J L Q S U
V W X Y Z V W X Y Z

Sa criptam textul clar


DOAR O VORBA SA ITI SPUN
28 CAPITOLUL 2. SISTEME SIMETRICE DE CRIPTARE

In prima faza, el va fi scris pe doua linii (Q este caracter de completare):

D O A R O V O R B A
S A I T I S P U N Q

Fiecare pereche de litere este criptata n doua etape:


DS AU OT, OA DS AU, AI RB P F,
RT OE DM, OI RS DL, V S Y L W T,
OP RM P E, RU OL RP, BN AD ON,
AQ ET M S.
Mesajul criptat este deci
OAPDDWPROMTUFMLTEPNS

Sistemul Playfair dublu asigura o securitate sporita comparativ cu cel simplu. Mo-
tivul: sunt folosite doua careuri (n loc de unul), plus un parametru suplimentar (lungimea
textului clar).

Sistemul de criptare Vigenere


Numele sistemului6 vine de la baronul francez Blaise de Vigenere (1523 1596) diplomat
la curtea regelui Henry III. A fost considerat mult timp unul din cele mai bune sisteme
de criptare.
Prezentarea sistemului
Consideram ca si la sistemele anterioare cele 26 litere ale alfabetului, numerotate
de la 0 (pentru A) pana la 25 (pentru Z), conform tabelului:
A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12

N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25
+
Definim P = C= Z26 , K= Z26 .
O cheie K K este un cuvant avand codificarea numerica k0 k1 . . . kp1 .
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.9. Sa consideram cuvantul cheie F OCAR; deci p = 5 si K = 5 14 2 0 17.


Daca vrem sa criptam cu aceasta cheie textul clar NU POT VENI AZI, vom proceda
astfel:
6
Sursa [?] indica drept real inventator al sistemului pe Giovan Batista Belaso n 1553.
2.2. CIFRURI DE SUBSTITUTIE 29

Codificarea textului este a = 13 20 15 14 19 21 4 13 8 0 25 8.


Sub fiecare numar din a se aseaza cate un numar din K; cand cheia se termina, ea
se reia ciclic, pana se termina a. Deci vom avea
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 contine suma modulo 26 a numerelor de pe primele doua linii; acesta este
textul criptat rezultat.
Decriptarea se realizeaza similar, scazand (modulo 26) din codul caracterului criptat,
codul caracterului corespunzator din cheie.
O varianta a sistemul Vigenere este sistemul Beaufort (amiral englez, de asemenea
autorul unei scale a vanturilor care i poarta numele); aici relatia de criptare () este
nlocuita cu
xi = ki (mod p) ai (mod 26), (i 0)
Avantajul sistemului Beaufort consta n faptul ca ecuatia de criptare se aplica si la
decriptare (ai = ki (mod p) xi ).
Alta varianta este sistemul Autoclave, atribuit matematicianului Cardano (autorul
formulelor de rezolvare pentru ecuatiile de gradul 3 si 4). Aici cheia se foloseste o singura
data, la nceput, dupa care este utilizat drept cheie textul clar.
Exemplul 2.10. Sa luam cuvantul cheie COV OR si textul clar A VENIT TOAMNA.
Putem aranja sistemul de criptare sub forma unui tabel (s-au trecut doar caracterele, nu
si codificarile lor):
Text clar: A V E N I T T O A M N A
Cheie: C O V O R A V E N I T T
Text criptat C J Z B Z T O S N U G T
Sistemul Vigenere a fost utilizat secole de-a randul, fiind considerat ca fiind unul din
cele mai sigure sisteme de criptare. In 1917 de exemplu, prestigioasa revista Scientific
American l considera imposibil de atacat. Numai ca acest sistem a fost spart de Kasiski
nca din 1863 (si independent de Babbage n 1854).

Criptanaliza sistemului Vigenere


Fie x = x0 x1 . . . xn1 textul criptat cu cheia K = k0 k1 . . . kp1 . Putem aranja acest text
sub forma unei matrici cu p linii si dn/pe coloane, astfel
x0 xp x2p . . .
x1 xp+1 x2p+1 . . .
..
.
xp1 x2p1 x3p1 ...
30 CAPITOLUL 2. SISTEME SIMETRICE DE CRIPTARE

Elementele de pe prima linie au fost criptate dupa formula

xpr = apr + k0 (mod 26), (k 0)

adica folosind un sistem Cezar (k0 fiind o valoare fixata din Z26 ). In mod similar si
celelalte linii.
Deci, daca s-ar cunoaste lungimea p a cheii, problema s-ar reduce la criptanaliza a p
texte criptate cu Cezar sistem de criptare monoalfabetic.
Sunt cunoscute doua metode pentru aflarea lungimii cheii: testul lui Kasiski si indexul
de coincidente.
Prima metoda consta n studiul textului criptat si aflarea de perechi de segmente de
cel putin 3 caractere (aceasta lungime este propusa de Kasiski) identice. Pentru fiecare
astfel de pereche, se determina distanta dintre segmente.
Dupa ce s-au gasit mai multe astfel de distante, valoarea lui p va fi cel mai mare divizor
comun al lor (sau eventual un divizor al acestuia).

Exemplul 2.11. Oscar intercepteaza urmatorul text criptat, despre care banuie ca s-a
folosit Vigenere:

D V L O E G O G L C G I W W A F R S C K A R V S S R A A K R S T U H D A
Q L N C J T S R U J V C W E A W K O H Z T I E U A R I Q L N C J C I K A
Q V A G K A S J T S G R W D A G K R C W A O L N S Z P C V Z W Z C S C E
P I E R V M W Y A W V M W E E G T U

Textul este destul de scurt (146 litere) si nu se mai stie nici un text trimis anterior.
Folosind metoda Kasiski, Oscar gaseste secventa QLN CJ care apare pe randul al doilea.
Distanta dintre cele doua aparitii este 27. De asemenea, apar doua cuvinte foarte asema-
natoare: AQLN si AOLN , avand ntre ele distanta 57.
Deci putem banui ca avem de-a face cu un cuvant cheie de lungime cmmdc(27, 57) = 3.
Rescriem textul pe coloane, fiecare coloana avand trei elemente. Anume:
D O O C W F C R S A S H Q C S J W W H I A Q C I Q G S S W G C O S C W S P R W W W G
V E G G W R K V R K T D L J R V E K Z E R L J K V K J G D K W L Z V Z C I V Y V E T
L G L I A S A S A R U A N T U C A O T U I N C A A A T R A R A N P Z C E E M A M E U

Numarand frecventa aparitiei literelor pe fiecare linie, obtinem tabelul


A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Linia 1 2 0 6 1 0 1 3 2 2 1 0 0 0 0 3 1 3 2 7 0 0 1 8 0 0 0
Linia 2 0 0 1 2 4 0 3 0 1 3 6 3 0 0 0 0 0 4 0 2 0 6 2 0 1 3
Linia 3 11 0 3 0 3 0 1 0 2 0 0 2 2 3 1 1 0 3 2 3 4 0 0 0 0 1

In limba romana, primele litere ca frecventa sunt AE I, aflate la distanta egala una
de alta. Deci vom cauta pe fiecare linie tripletele de litere situate pe pozitiile (k, k+4, k+8)
avand frecventa semnificativ de mare (maxima n cazul unui text lung). Pentru linia 3,
alegerea este simpla: ea este chiar A E I (16 aparitii din 49 posibile), deci o deplasare
0 n sistemul de criptare Cezar.
2.2. CIFRURI DE SUBSTITUTIE 31

Pentru prima linie, sunt doua posibilitati: O S W (deplasare 14) sau S W A


(deplasare 18), ambele cu cate 18 aparitii.
Tot doua variante apar si pentru a doua linie: C G K (deplasare 2) cu 10 aparitii,
sau R V Z (deplasare 14) cu 13 aparitii.
Deplasarile dau exact codificarile cheii. Deci trebuie luate n considerare patru vari-
ante de cuvant cheie: OCA, ORA, SCA sau SRA. Cum de obicei cuvantul cheie are
o semnificatie semantica (pentru a putea fi retinut mental usor), putem presupune ca el
este OCA sau ORA.
O simpla verificare retine drept cuvant cheie ORA, care conduce la decriptarea corecta
a textului (spatiile si semnele de punctuatie se pun corespunzator):
PELANGAPLOPIIFARASOTADESEAAMTRECUTMACUNOSTEAUVECINIITOTITUNUMAICUNOSCUT
ACEASTAESTEPRIMASTROFAAUNEINPOEZIICELEBREDEMIHAIEMINESCU

A doua metoda de aflare a lungimii cheii de criptare ntr-un sistem Vigenere se bazeaza
pe un concept definit n 1920 de Wolfe Friedman: indexul de coincidente ([?]).
Definitia 2.2. Daca x = x1 x2 . . . xn este o secventa de n caractere alfabetice, se numeste
index de coincidente al lui x probabilitatea ca doua caractere din x, alese aleator, sa fie
identice. Aceasta valoare se noteaza Ic (x).
Sa notam cu fi frecventa de aparitie n x a caracterului literal codificat i (0 i 25).
Doua litere din x pot fi alese n Cn2 moduri. Din acestea, sunt Cf2i moduri ca ambele sa
aiba aceiasi codificare i (0 i 25). Putem atunci sa deducem formula
25 25
Cf2i
X X
fi (fi 1)
i=0 i=0
Ic (x) = =
Cn2 n(n 1)
Sa presupunem ca x este un text n limba romana. Din tabelul frecventelor de aparitie ale
literelor, notand pi probabilitatea de aparitie a caracterului codificat cu i (0 i 25),
valoarea pe care o putem estima pentru indexul de coincidente este
25
p2i = 0, 0788
X
Ic (x)
i=0
Motivatie: Probabilitatea ca doua elemente aleatoare sa fie ambele egale cu caracterul de
cod i este p2i (0 i 25). Afirmatia este valabila pentru orice criptare cu un sistem
monoalfabetic.
Sa presupunem acum ca am aranjat textul criptat x = x0 x1 . . . xn1 ntr-o matrice cu
p linii si dn/pe coloane (unde p este un numar ntreg pozitiv arbitrar), astfel
x 0 = x0 xp x2p . . .
x 1 = x1 xp+1 x2p+1 . . .
..
.
xp1 = xp1 x2p1 x3p1 ...
32 CAPITOLUL 2. SISTEME SIMETRICE DE CRIPTARE

Daca p este chiar lungimea cheii, atunci fiecare valoare Ic (xi ) trebuie sa fie apropiata de
0, 0788. In caz contrar, sirul xi va arata mult mai aleator, fiind obtinut prin amestecul
unei secvente de caractere criptate cu chei diferite. Pentru o secventa complet aleatoare,
valoarea indexului de coincidente este
2
1 1

Ic 26 = = 0, 0384
26 26
Valorile 0, 0788 si 0, 0384 vor constitui punctele de extrem pe care le poate lua Ic . Vom lua
deci diverse valori pentru p, pana vom gasi una care sa se apropie cat mai mult de 0, 788 si
nu de 0, 384. Aceea poate fi considerata cu suficienta siguranta drept lungimea cheii.
In etapa a doua, vom ncerca sa aflam efectiv cheia K = k0 k1 . . . kp1 .
Daca notam n1 = bn/pc lungimea secventei xi , atunci distributia de probabilitate ale
celor 26 litere n xi este
f0 f1 f25
, ,...,
n1 n1 n1
Secventa xi a fost obtinuta printr-o criptare Cezar cu o deplasare ki . Deci, situatia ideala
este cand distributia de probabilitate a deplasarii
fki fki +1 (mod 26) fk +25 (mod 26)
, ,..., i
n1 n1 n1
este cat mai apropiata de distributia de probabilitate p0 , p1 , . . . , p25 a limbii romane.
Fie un ntreg m (0 m 25); definim expresia
25
X pi fi+m
Fm =
i=0 n1
25
p2i = 0, 0788.
X
Daca m = kj (0 j p 1), ne putem astepta ca Fm
i=0
Daca m 6= kj , atunci Fm va fi semnificativ mai mic decat aceasta valoare. Deci, dupa
cel mult 25 ncercari, se poate afla deplasarea kj si deci a j-a litera din cheie.
2.3. EXERCITII 33

2.3 Exercitii
2.1. Folosind atacul prin forta bruta, decriptati mesajul WYPTBSJBYZ criptat cu un
sistem Cezar.
2.2. O cheie K este auto-cheie daca dK = eK . Gasiti toate auto-cheile sistemului de
criptare Cezar.
2.3. Demonstrati ca ntr-un cifru de permutare, este o auto-cheie daca si numai daca

(i, j) [(i) = j = (j) = i]

Gasiti toate auto-cheile unui cifru de permutare cu n = 2, 3, 4, 5, 6.


2.4. Consideram urmatorul cifru de permutare: Se fixeaza numerele naturale p, q. Textul
clar se mparte n blocuri de cate p q caractere. Fiecare astfel de bloc se scrie pe liniile
unei matrici de p linii si q coloane. Criptarea blocului se realizeaza scriind aceste matrici
pe coloane.
M A I N
De exemplu, pentru p = 3, q = 4, textul clar MAINI CURATE se scrie I C U R
A T E X
(textul s-a completat cu litera X). Textul criptat va fi MIAACTIUENRX.
Decriptati urmatorul text DJNOUDNAINPAPANONZ criptat ntr-un mod similar.
2.5. Sa se decripteze mesajul
N T I N I I I D D N R I R T E E A D
U M I I G R A D V O B E M C I I I E
Z S R U A U C M L T A I T U I T N I
D A A L E A R A C R I A S Z T E E E
I G P S A D E A P R E Z S T C A O
A E R I D R E D D E I E S E E P E L
stiind ca a fost criptat cu matricea Richelieu definita n Exemplul ??.
2.6. Demonstrati ca functia de criptare afina eK (x) = ax + b (mod 26) este injectiva daca
si numai daca cmmdc(a, 26) = 1.
2.7. Textul clar este scris peste alfabetul V = {a, b, c, d}. Se foloseste un sistem de criptare
monoalfabetic dat de regulile a bb, b aab, c bab, d a. Sa se arate ca
functia de criptare este injectiva.
Dar pentru: a ab, b ba, c a, d c ?
2.8. Se definesc doua sisteme de criptare cu P= {a, b}, C= {c, d} si regulile
a ccd, b c pentru primul sistem,
a c, b dcc la al doilea sistem.
Ce cuvinte sunt criptate la fel n cele doua sisteme ?
34 CAPITOLUL 2. SISTEME SIMETRICE DE CRIPTARE

2.9. S-a receptionat mesajul


ARAU RIRU IT AA U RIR EESU U RAP IU T E IRI
Despre el, criptanalistul are urmatoarele informatii: s-a folosit un careu de criptare
tip Polybios, precum si cuvantul cheie ST ROP .
Sa se decripteze mesajul.

2.10. In sistemele de criptare simple, orice cheie de criptare poate fi reprezentata ca o


compunere de cateva chei generatoare. La sistemul Cezar, o astfel de cheie este e1 . Aratati
ca la sistemul afin sunt necesare cel putin doua chei generatoare.

2.11. Decriptati urmatorul mesaj

TKLCP OCTLE TSSZC XCMEB CVKMK CCSBX KGQBA CGQPE MBKCQ FKGSP
SSBEB SBQPQ ACSGQ PEMGQ BLCOK CAQLB CQGKM BXCLQ GKCTX SFKCA
CBCBV KVKME LQAKP BXXCO CPBKL KOKCB QPQAC SSPBK LKM

criptat cu un sistem afin.

2.12. O varianta a sistemului AUTOCLAVE este utilizarea textului criptat (n loc de text
clar) dupa prima aplicare a cheii. La care din cele doua variante de AUTOCLAVE este
criptanaliza mai usoara ?

2.13. Cate chei are un sistem de criptare afin n care card(V ) = 30, 100 sau 1225 ?

2.14. Fie K = (5, 21) o cheie ntr-un sistem de criptare afin peste Z29 .
(a) Exprimati functia de decriptare sub forma dK (y) = ay + b unde a, b Z29 ;
(b) Aratati ca eK (dK (x)) = x, x Z29 .

2.15. Fie K = (a, b) o cheie ntr-un sistem afin peste Zn . Demonstrati afirmatia:
K este auto-cheie daca si numai daca a1 a (mod n) si b (a + 1) 0 (mod n).
Aflati toate auto-cheile dintr-un sistem afin peste Z15 .
Sa presupunem ca n = pq unde p si q sunt numere prime distincte. Aratati ca numarul
auto-cheilor din sistemul afin peste Zn este n + p + q + 1.

2.16. Fiind dat unn numar ntreg n (n 1), sa se arate ca multimea tuturor functiilor de
criptare Vigenere (definite pentru toate cheile de lungime fixata n) formeaza o structura
algebrica de grup.

2.17. Fiind date doua sisteme de criptare (P, C, K, E, D) si (P 0 , C 0 , K0 , E 0 , D0 ) cu P 0 = C,


definim produsul lor ca fiind sistemul (P, C 0 , K K0 , E E 0 , D0 D), unde criptarea unui
text clar m P este eK2 (eK1 (m)) (K1 K, K2 K0 ), iar decriptarea unui mesaj y C 0
este dK1 (dK2 (y)).
Care este produsul a doua sisteme de criptare Vigenere cu chei de lungimi diferite ?
Capitolul 3

Sisteme mecanice de criptare

Sistemele de criptare pot fi aduse la un grad mai mare de complexitate si securitate daca
se folosesc mijloace mecanice de criptare. Astfel de mecanisme special construite vor usura
pe de-o parte operatiile de criptare/decriptare, iar pe de-alta parte vor fi capabile sa
creeze un numar mult mai mare de chei posibile.

3.1 Sistemul Skitala


Skitala (baston n greceste) este o unealta folosita pentru realizarea unui sistem de
criptare cu permutari. El este sub forma aproximativ cilindrica, n jurul lui fiind nfasurata
o banda de hartie. Mesajul se scrie n mod normal pe aceasta banda, dupa care hartia
este desfacuta. La primire se foloseste un bat asemanator pe care se nfasoara sulul de
hartie, mesajul devenind din nou inteligibil (pentru detalii, a se vedea [?], [?]). Conform
istoricilor greci, spartanii foloseau ncepand cu sec. V .H. acest mod de comunicare,
n timpul campaniilor militare1 . El avea avantajul de a fi rapid si nu comporta erori de
transmitere. Dezavantajul este acela ca este usor de spart.

Exemplul 3.1. Sa presupunem ca dimensiunile batului permit scrierea a 4 randuri, cu


5 caractere pe fiecare rand. Fie VINO MAINE LA INTALNIRE textul care trebuie
criptat. Ignorand spatiile, mesajul va apare scris sub forma

1
Skitala a fost mentionata prima oara de poetul grec Archilochus (sec. VII .H). Desi apare ulterior
si n alte texte, abia la mijlocul secolului III .H. Apollonius din Rhodos specifica limpede utilizarea lui
ca mijloc de criptare. De remarcat ca pentru perioada respectiva, sistemele de criptare folosite de greci
erau de tip steganografic. O descriere a modului de operare este data apoi de Plutarh (50-120 A.D.).

35
36 CAPITOLUL 3. SISTEME MECANICE DE CRIPTARE

________________________
| | V | I | N | O | M |
|__| A | I | N | E | L |__
| A | I | N | T | A | |
| L | N | I | R | E | |
|___|___|___|___|___|__|
Dupa derularea de pe skitala, mesajul scris pe banda de hartie este:
VAALIIINNNNIOETRMLAE.
La decriptare, banda va fi rulata din nou si fiecare a patra litera va fi pe aceeasi linie.
Criptanaliza este foarte simpla. Se iau pe rand valorile n = 2, 3, 4, . . .. Pentru o astfel
de valoare fixata, se formeaza n randuri de tipul
i, n + i, 2n + i, 3n + i, . . . (i = 1, 2, . . . , n)
care ulterior se concateneaza. Exista o valoare a lui n pentru care textul astfel format este
inteligibil.

3.2 Cilindrul Jefferson


Ideea de masina de criptare apare clar prima data la Thomas Jefferson, primul secretar
de Stat al Statelor Unite; acesta a inventat un aparat de criptat numit roata de criptare,
folosit pentru securitatea corespondentei cu aliatii n special cei francezi2 .
Un cilindru Jefferson este format din n discuri de dimensiuni egale (initial n = 26
sau n = 36, dar valoarea este nerelevanta pentru descrierea sistemului) asezate pe un ax.
Discurile se pot roti independent pe ax, iar pe muchea fiecaruia sunt inscrise cele 26 litere
ale alfabetului, ntr-o ordine aleatoare (dar diferita pentru fiecare disc).
La criptare, textul clar se mparte n blocuri de n caractere. Fiecare astfel de bloc
se scrie pe o linie (generatoare) a cilindrului, rotind corespunzator fiecare disc pentru a
aduce pe linie caracterul cautat. Oricare din celelalte 25 linii va constitui blocul de text
criptat.
Pentru decriptare este necesar un cilindru identic, n care se scrie pe o linie textul
criptat (de n caractere) si apoi se cauta printre celelalte 25 linii un text cu semnificatie
semantica. Probabilitatea de a avea un singur astfel de text creste cu numarul de discuri
din cilindru.
O mica diferenta apare daca textul clar nu are nici o semnificatie semantica (s-a
folosit o dubla criptare). Atunci trebuie convenita dinainte o anumita distanta de criptare
s (1 s 25).
2
Thomas Jefferson a folosit acest aparat n perioada 1790 1802, dupa care se pare ca ideea s-a
pierdut. Devenit presedinte, Jefferson a fost atras de sistemul Vigenere, pe care l considera mai sigur
si-l recomanda secretarului sau de stat James Madison ca nlocuitor al sistemului pe care l inventase
anterior.
3.2. CILINDRUL JEFFERSON 37

Ordinea discurilor poate fi de asemenea schimbata. De exemplu, un cilindru cu n = 10


discuri poate realiza 10! = 3.628.800 texte criptate diferite pentru acelasi text clar.
Cilindrul Jefferson realizeaza o substitutie polialfabetica de perioada n. Daca ar fi
privit ca un sistem de criptare Vigenere, lungimea cheii este enorma (de multe ori nn , n
functie de modalitatile de aranjare a alfabetelor pe discuri), si deci metoda de atac a lui
Kasiski este inaplicabila.

Exemplul 3.2. Sa consideram n = 10 si fie cilindrul, n care am desfasurat literele de


pe cele 10 discuri:

1 2 3 4 5 6 7 8 9 10
1 A A A A A A A A A A
2 R R P N V S P E I I
3 I O S I O O U S R H
4 E S Y M T R H U E E
5 K U L O Y P I P S T
6 O V U C L M S B L O
7 B I K U E U E L B M
8 C J B L B B N C C U
9 U L R T C D R D D C
10 D B C Y D Y Y H F D
11 J V D B G E D I N F
12 T C T F F C B J Y G
13 L G F G K V F F T J
14 N K G S N H G O G P
15 P N O H H F V G H Q
16 W P N J U K J K J B
17 Q Q E D P L K M K N
18 M T H E Q Q M N M V
19 S H M K R I T Q P W
20 V E Q P S J O R Q X
21 X D V Q W N L V V L
22 Z Y W V X G W W W Y
23 G W X X M T Q Y O K
24 H X Z R I W X X U R
25 Y Z I Z J X Z T X S
26 F M J W Z Z C Z Z Z

Cu ajutorul lui, textul clar TREI CULORI construit pe una din liniile generatoare ale
cilindrului va genera urmatoarele linii (oricare din ele putand fi folosit drept text criptat):
38 CAPITOLUL 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 X F Z Y O K H X R
U Z G W L R M I Z S
D M O A E P T J A Z
J A N N B M O F I A
Daca se considera o dubla criptare cu distanta s = 3, atunci textul clar AAAAAAAAAA
va fi criptat cu cilindrul anterior n ESYMTRHUEE.
Cilindrul Jefferson a fost reinventat ulterior de mai multe ori, cea mai notabila fiind
se pare masina de criptat M 94, care a fost utilizata pana la nceputul celui de al doilea
razboi mondial.

3.3 Masini de criptat


Prima jumatate a secolului XX este dominata de masinile de criptat, o combinatie ntre
masinile de scris si sisteme de criptare mecanice bazate pe discuri.

3.3.1 Enigma
Poate cea mai celebra masina de criptat a fost masina germana Enigma. Sub acest nume
se afla o varietate larga de modele de masini de criptat electro-mecanice, care asigura o
criptare polialfabetica de tip Vigenere sau Beaufort.
3.3. MASINI DE CRIPTAT 39

Ea a fost proiectata la Berlin n 1918, de inginerul german Arthur Scherbius. Primul


model (A) este prezentat la Congresele Uniunii Postale Internationale din 1923 si 1924.
Modele ulterioare sunt folosite n mai multe tari europene si asiatice (Suedia, Olanda,
Marea Britanie, Japonia, Italia, Spania, SUA, Polonia, Elvetia) n scopuri comerciale,
militare sau diplomatice. Din 1926 ncepe sa fie preluata si de armata germana, care
dupa 1928 si defineste propriile modele (G, I, K).
In total au fost construite circa 100.000 masini Enigma, din care 40.000 n timpul
razboiului. Dupa 1945 aliatii au capturat toate masinile de pe teritoriul german, acestea
fiind nca mult timp considerate sigure. Abia n 1970 au aparut primele informatii despre
decriptarea de catre aliati (Biuro Szyfrow - Polonia si Bletchley Park - Anglia) a unui
mare numar de mesaje criptate prin modelul militar Enigma si transmise prin radio n
timpul razboiului.
O descriere completa a masinii este destul de lunga; recomand pentru detalii [?], [?].
In linii mari, ea are urmatoarele componente:
Tastatura: Este o componenta mecanica formata din:
Un pupitru de taste (similar unei masini de scris);
n discuri adiacente, care se rotesc n jurul unui ax. La marea majoritate a
modelelor Enigma, n = 3; sunt nsa si versiuni cu n = 5, 6 sau n = 7 discuri.
Pe fiecare disc sunt scrise cele 26 caractere alfabetice (la care uneori se mai
adauga trei caractere speciale);
Un mecanism de avans (similar ceasurilor mecanice) care permite la apasarea
unei taste rotirea unuia sau mai multor discuri cu un numar de pozitii. Sunt
folosite mai multe variante; cea mai frecventa consta n rotirea cu o pozitie a
discului din dreapta, la fiecare apasare a unei taste, acompaniata n anumite
situatii de rotirea discurilor vecine.
Circuite electrice: Criptarea unui caracter se realizeaza electric. Componenta meca-
nica este conceputa n asa fel ncat sa formeze un circuit electric. La apasarea unei
taste circuitul se nchide si lumineaza una sau mai multe lampi, indicand litera de
iesire.
Reflector (Umkehrwalze): Este o componenta specifica masinilor de criptat Enigma
(introdusa n 1926 la sugestia lui Willy Korn). Scopul ei este de a realiza un sistem
de criptare Beaufort (masina sa poata fi capabila de a cripta si decripta mesaje).
In majoritatea variantelor, reflectorul este asezat pe ax dupa ultimul disc (din
stanga); el realizeaza o substitutie (fixata), dupa care reintroduce noul caracter
prin discuri n sens invers, dar pe alt drum. Deci o masina Enigma cu n discuri va
realiza criptarea unui caracter prin 2n + 1 substitutii.
O consecinta a acestei proprietati este aceea ca un caracter nu va fi niciodata criptat
n el nsusi, slabiciune exploatata adesea cu succes de criptanalisti.
40 CAPITOLUL 3. SISTEME MECANICE DE CRIPTARE

Tabela de conexiuni (Steckerbrett)3 : Este o componenta (pozitionata n fata, sub


tastele literelor) n care se pot face conexiuni ntre perechi de litere, prin intermediul
unor cabluri (similar centralelor telefonice vechi). Deci la un mesaj sunt posibile
maxim 13 conexiuni. De exemplu, daca printr-un cablu sunt conectate literele S
si W , de cate ori este tastat S, semnalul este comutat pe W nainte de a intra pe
discuri.
Introdusa n 1930, aceasta componenta asigura un plus de securitate si a fost prin-
cipalul obstacol n criptanaliza.

Starea initiala a unei masini Enigma se refera la:

Ordinea discurilor (Walzenlage): alegerea numarului de discuri si ordinea lor de


utilizare;

Pozitia initiala a discurilor: pozitionarea n mod independent a fiecarui disc, diferita


pentru fiecare mesaj;

Initializarea inelului de caractere (Ringstellung): pozitionarea alfabetului relativ la


primul disc.

Initializarea conexiunilor (Steckerverbindungen): conexiunile dintre litere n cadrul


tabelei de conexiuni.

Matematic, Enigma cripteaza fiecare litera dupa o procedura care poate fi exprimata prin
produs de permutari. Sa presupunem ca avem o masina Enigma cu 3 discuri si fie P
transformarea tabelei de conexiuni, U reflectorul, S, M, D actiunile celor 3 discuri
(din stanga, mijloc si respectiv dreapta). Atunci criptarea e poate fi scrisa sub forma:

e = P DM SU S 1 M 1 D1 P 1

Dupa fiecare apasare a unei taste, discurile se rotesc schimband transformarea. De exem-
plu, daca discul din dreapta se roteste cu i pozitii, atunci transformarea devine i Di ,
where este permutarea ciclica stanga a vectorului (A, B, C, . . . , Z). Similar, discurile
din mijloc si stanga pot fi reprezentate prin j respectiv k rotiri ale lui M respectiv S.
Atunci functia de criptare poate fi descrisa astfel:

e = P (i Di )(j M j )(j Sk )U (j S 1 k )(j M 1 j )(i D1 i )P 1

Decriptarea se efectueaza dupa aceeasi formula.


Sa calculam numarul de variante posibile pentru criptarea unui mesaj. Vom considera
o masina Enigma cu 3 discuri. Atunci numarul de situatii initiale posibile este 262626 =
3
plugboard n engleza.
3.3. MASINI DE CRIPTAT 41

17.576. Cum cele 3 discuri pot fi permutate n 6 moduri, numarul variantelor se ridica la
6 17.576 = 105.456.
Pentru fiecare din acestea, o tabela de conexiuni cu 13 perechi de litere conectate
ridica numarul variantelor la 150.738.274.937.250.
La acestea se adauga si modul de pozitionare al inelului de caractere la mecanismul
discurilor, care mai ridica ordinul de marime al variantelor cu aproximativ 105 . Aceste
estimari arata ca Enigma era cea mai sigura masina de criptat a momentului respectiv.
Sa detaliem functionarea unei masini Enigma (din punct de vedere matematic):
Fiecare disc poate fi reprezentat ca un set de permmutari pentru litere codificate
cu valori ntre 0 si 25; fie 1 , 2 , 3 permutarile de pe cele trei discuri (de la dreapta
spre stanga).
Fie r1 , r2 , r3 setarile initiale de pe cele trei discuri (caracterele situate initial pe
pozitiile accesibile ale discurilor).
Pentru simplificare, vom ignora rolul tabelei de conexiuni.
Vom nota cu substitutia reflectorului (reprezentata ca un set de permutari ntre
perechi de caractere.
Sa urmarim pe un exemplu un traseu care pleaca de la semnalul de intrare (un caracter
din textul clar), trece prin cele trei discuri si reflector si da ca rezultat caracterul criptat
(a se vedea figura).
Reflector
Disc 3 Disc 2 Disc 1
0
b- Tabela de
e- Text
6 Q >


H
HH conexiuni 
>
Q  HH 0 criptat
c0- a
Q  j -
QQ
s a0

c  HH
Y
  a aHH

 HH
Y
HH 
 Text clar
d  H b 

=
 +


Exemplul 3.3. Sa presupunem ca cele permutarile celor trei discuri sunt:


1 = (0 15 6 10 14 8 19 17 22 18 11)(1 2 9 13 21 25)(3 4 23 5 24 7 12 16 20)
2 = (0 7 9 4 6 18 23 25 8)(1 17 19)(2 20 10)(3 12)(5 11 13 21)(14 22 15 16 24)
3 = (0 2 4 7 16 17 19 5)(1 6 3 8 21 24 11 13 9 10 25 12 14 15)(18 23 20 22)
Substitutia este definita
= (0 4)(1 7)(2 9)(3 16)(5 20)(6 8)(10 19)(11 17)(12 25)(13 18)(14 24)(15 22)(21 23).
42 CAPITOLUL 3. SISTEME MECANICE DE CRIPTARE

Deci, cu 1 , 0 este mutat n 15, 15 este mutat n 6, 25 este mutat n 1 etc.


Inversele celor trei permutari (folosite pe drumul de ntoarcere) sunt:
11 = (11 18 22 17 19 8 14 10 6 15 0)(25 21 13 9 2 1)(20 16 12 7 24 5 23 4 3)
21 = (8 25 23 18 6 4 9 7 0)(19 17 1)(10 20 2)(12 3)(21 13 11 5)(24 16 15 22 14)
31 = (5 19 17 16 7 4 2 0)(15 14 12 25 10 9 13 11 24 21 8 3 6 1)(22 20 23 18)
Setarile initiale sunt r1 = 22 (deci primul rotor are vizibila litera V ), r2 = 7, r3 = 12.
Substitutiile celor trei discuri sunt date matematic de formulele

b = [a + r1 (mod 26)]1 , c = [b + r2 (mod 26)]2 , d = [c + r3 (mod 26)]3 ,

unde x = y, y fiind elementul care urmeaza lui x n permutarea . Astfel, de exemplu


31 = 4, 82 = 0 etc.
Aceasta notatie permite sa scriem de asemenea

e = d .

In continuare, semnalul parcurge cele trei discuri n sens invers:


1 1 1
c0 = e3 r3 (mod 26), b0 = (c0 )2 r2 (mod 26), a0 = (b0 )1 r1 (mod 26).

Dupa criptarea unui caracter, cele trei discuri sunt resetate dupa regula:
r1 := r1 + 1 (mod 26); daca noua valoare r1 = 0 atunci r2 := r2 + 1 (mod 26); daca
noua valoare r2 = 0, atunci r3 := r3 + 1 (mod 26).
Pentru exemplificare, sa criptam litera K (al carei cod numeric este 10).
a = 10;
b = [a + r1 (mod 26)]1 = [10 + 22 (mod 26)]1 = 61 = 10;
c = [b + r2 (mod 26)]2 = [10 + 7 (mod 26)]2 = 172 = 22;
d = [c + r3 (mod 26)]3 = [22 + 12 (mod 26)]3 = 83 = 21.
Trecerea prin reflector da e = d = 21 = 23.
Acum se parcurg cele trei discuri n sens invers:
1 1
c0 = e3 r3 (mod 26) = 233 12 (mod 26) = 18 12 (mod 26) = 6;
1 1
b0 = (c0 )2 r2 (mod 26) = 62 7 (mod 26) = 4 7 (mod 26) = 23;
1 1
a0 = (b0 )1 r1 (mod 26) = 231 22 (mod 26) = 4 22 (mod 26) = 8.
Deci criptarea caracterului K este I (litera corespunzatoare codului 8).
Setarile pentru criptarea urmatorului caracter sunt r1 := 23, r2 = 7, r3 = 12.

Detalii despre modul de constructie al masinii de criptat Enigma se pot gasi n [?], [?] si
mai ales din punct de vedere al criptanalizei n [?].
3.3. MASINI DE CRIPTAT 43

3.3.2 C 36 (M 209 C)
Masina C 36 este conceputa de inginerul suedez Boris Hagelin, la solicitarea armatei
americane de a avea o masina de criptat portabila, usor de manuit, care sa poata fi folosita
dupa un instructaj sumar. Este cunoscuta si sub numele de M 209 C, la baza fiind
un model creat de Hagelin n Suedia la sfarsitul anilor 0 30. Ea ncepe sa fie produsa
dupa cateva modificari legate de design n 1940 si nlocuieste treptat masina de criptat
M 94. Se apreciaza ca n timpul razboiului au fost produse circa 140.000 masini de
criptat C 36.
Nu au fost specificate masuri speciale de securitate; C 36 nu a fost realizata pentru
a fi criptografic sigura, ea fiind destinata zonelor militare tactice, unde era nevoie doar de
o siguranta de cateva ore fata de o eventuala criptanaliza.
Vom da o prezentare matematica a principiilor sale de constructie; pentru alte detalii,
a se vedea [?] si [?].

Definitia 3.1. Se numeste matrice lug o matrice binara M627 n care fiecare din cele 27
coloane contine cel mult doi de 1.

Exemplul 3.4. ([?]). Toate exemplificarile referitoare la M 209 vor fi facute 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

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


avand elemente din multimea {0, 1, 2}. Numarul de elemente nenule din v M se numeste
ponderea lui v n raport cu M .
O configuratie de nceput se obtine prin asezarea unul sub altul (aliniati la stanga) a
sase vectori binari de lungimi 17, 19, 21, 23, 25, 26.

Exemplul 3.5. Structura


0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0
0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1
formeaza o posibila configuratie de nceput.
Spre deosebire de matricea lug, la configuratia de nceput nu exista restrictii privind
numarul de 1.
44 CAPITOLUL 3. SISTEME MECANICE DE CRIPTARE

Plecand de la o configuratie de nceput, se pot genera o infinitate de vectori de dimen-


siune 6 n felul urmator:
1. Primii 17 vectori sunt coloanele complete ale configuratiei de nceput.
2. Fiecare vector linie se repeta ciclic din momentul cand s-a terminat.
Pe baza acestor elemente se poate descrie sistemul de criptare al masinii C 36. Rea-
mintim, codificarea numerica a literelor este de la A 0 pana la Z 25; toate calculele
se vor face modulo 26.
Fie x codul celui de-al i-lea caracter din textul clar si h ponderea celui de-al i-lea
vector generat de configuratia de nceput n raport cu matricea lug. Atunci
y = h x 1.
Exemplul 3.6. Sa consideram textul clar
NU PUTEM REUSI DECAT IMPREUNA
mpreuna cu matricea lug si configuratia de nceput din exemplele anterioare. Codifi-
carea numerica a textului este
13 20 15 20 19 4 12 17 4 20 18 8 3 4 2 0 19 8 12 15 17 4 20 13 0.
Dupa ignorarea spatiilor libere4 , lungimea textului clar este 25.
Vom calcula ponderile primilor 25 vectori si vom aranja totul sub forma unui tablou:

h 10 17 16 9 9 9 7 0 0 0 0 12 0
x 13 20 15 20 19 4 12 17 4 20 18 8 3
h x 1 22 20 0 14 15 4 20 8 21 5 7 3 22
W W A O P E U I V F H D W
h 0 18 7 0 0 18 7 9 9 19 14 9
x 4 2 0 19 8 12 15 17 4 20 13 0
h x 1 21 15 6 6 17 5 17 17 4 24 0 8
V P G G R F R R E Y A I
Deci textul criptat este
WWAOPEUIVFHDWVPGGRFRREYAI
Matricea lug si configuratia de nceput formeaza cheia pentru masina C 36. De
fapt, masina nsasi este o realizare fizica a acestui sistem: ea opereaza conform cu o cheie
stabilita anterior prin fixarea unor roti dintate si a unui disc (pentru detalii vezi [?]).
Observatia 3.1. Ecuatia de decriptare este identica cu cea de criptare:
x = h y 1.
Deci din acest punct de vedere sistemul de criptare este de tip Beaufort si masina C 36
poate fi folosita atat pentru criptare cat si pentru decriptare.
4
In aplicatiile practice, spatiul se nlocuieste uneori cu o litera de frecventa redusa.
3.4. EXERCITII 45

Deoarece liniile din configuratia de nceput au lungimi numere prime ntre ele, vectorii
generati ncep sa se repete sigur dupa 171921232526 = 101.405.850 pasi; deci cuvantul
cheie poate fi considerat mai lung decat orice text clar. Sunt nsa cazuri cand aceasta
perioada poate fi mai scurta. De exemplu, daca configuratia de nceput contine numai 1,
se va genera un singur vector, deci perioada este 1. De asemenea se obtin perioade scurte
pentru matrici lug cu foarte putini 1 sau configuratii de nceput n care raportul dintre
numarul de 0 si 1 este disproportionat.
Nu exista o conditie matematica pentru existenta a exact 6 linii n configuratia de
nceput. Acest numar a fost ales ca un compromis ntre securitatea criptografica si
usurinta de a cripta. In general perioada creste cu numarul de linii.
Masina de criptat M 209 avea si ea o serie de slabiciuni (un atac cu texte clare alese
care au anumite componente comune poate duce la informatii asupra matricii lug), astfel
ca n 1943 criptanalistii germani puteau decripta mesajele. Totusi din punct de vedere
militar tactic ea a fost considerata perfect adaptata necesitatilor si a fost folosita de
armata americana pana dupa razboiul din Coreea (1953 1956).
Ulterior, Hagelin a elaborat un model mbunatatit: masina C 52. Aceasta avea o
perioada de 2.756.205.443; discurile puteau si scoase si reinserate n alta ordine; exista un
disc al carui alfabet putea fi permutat.
C 52 a facut parte din ultima generatie de masini de criptat clasice, noua tehnologie
(cea a computerelor) permitand dezvoltarea altor mecanisme cu o putere de calcul mult
mai mare.

3.4 Exercitii
3.1. Sa se cripteze, folosind sistemul skitala pe 6 randuri, primul vers din Iliada:
CANTA ZEITA MANIA CE-APRINSE PE-AHIL PELEIANUL

3.2. Se intercepteaza trei zile la rand cate un mesaj:


(a) U KM V U IEE LBIM KP HN KGM R M V U I EV M I KHKN KM N K RI;
(b) DOSX DEKK N CES OW Y P OHSI SXDE KXSE OY OP OSP O IE;
(c) JBV Z JKOO P U KV BQF W BY V E V ZJK OZV K BF BW BV W B EK.
Despre aceste mesaje stim ca:
- Reprezinta acelasi text clar;
- Sunt criptate folosind un cilindru Jefferson avand trei discuri identice;
- Criptarea s-a facut n prima zi cu deplasarea 1, n a doua zi cu deplasarea 2, iar n
a treia zi cu deplasarea 3.
Sa se decripteze mesajul initial si sa se reconstituie cilindrul Jefferson cu care s-a facut
criptarea.

3.3. Se da matricea
46 CAPITOLUL 3. SISTEME MECANICE DE CRIPTARE

0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 1 1
0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0
0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 0 0 1 0
1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0
0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1
Nu se cunoaste matricea lug, dar din textul criptat
CSDZ RGGV P SLA BCBU P T EU SHDO HBN O CDT O Y BM S
N U KD GAAY W ZRS W P V
s-au putut decripta primele 20 caractere:
CU M QIT IQAST ERN IQASAQV EIQST A
Sa se decripteze restul textului.

3.4. Masina Enigma asigura un cifru de substitutie sau un cifru de transpozitie ?


De ce ?

3.5. Utilizand discurile, reflectorul si setarile initiale din Exemplul ??, sa se cripteze
textul clar
MASINA DE CRIPTARE.

3.6. Utilizand discurile, reflectorul si setarile initiale din Exemplul ??, sa se decripteze
textul
YDDMYU.
Capitolul 4

Sisteme fluide de criptare

4.1 Sisteme sincrone si auto-sincronizabile


In sistemele de criptare prezentate pana acum, elementele succesive ale textului clar erau
criptate folosind aceeasi cheie K. Deci, daca

x = x1 x2 x3 . . .

este textul clar, textul criptat este

y = y1 y2 y3 . . . = eK (x1 )eK (x2 )eK (x3 ) . . .

Sistemele de criptare de acest tip se numesc sisteme de criptare bloc (block cyphers).
Alta maniera utilizata este aceea a sistemelor de criptare fluide (stream cyphers).
Definitia 4.1. Fie M= (P, C, K, E, D) un sistem de criptare. O secventa de simboluri
k1 k2 k3 . . . K+ se numeste cheie fluida.
Definitia 4.2. M= (P, C, K, E, D) este un sistem fluid de criptare daca cifreaza un text
clar
x = x1 x2 x3 . . .
n
y = y1 y2 y3 . . . = ek1 (x1 )ek2 (x2 )ek3 (x3 ) . . .
unde
k = k1 k2 k3 . . .
este o cheie fluida din K+ .
Problema principala este de a genera o cheie de criptare fluida (teoretic infinit).
Aceasta se poate realiza fie aleator, fie pe baza unui algoritm care pleaca de la o secventa
mica de chei de criptare. Un astfel de algoritm se numeste generator de chei fluide.

47
48 CAPITOLUL 4. SISTEME FLUIDE DE CRIPTARE

Exemplul 4.1. (sistemul de criptare Vernam):


In acest sistem xi , ki , yi {0, 1}. Criptarea se realizeaza conform formulei

yi = xi ki (i 1).

Daca cheia fluida este aleasa aleator si nu mai este folosita ulterior, sistemul de
criptare Vernam se numeste one - time pad.
Un sistem de criptare one-time pad este teoretic imposibil de spart1 (deci asigura un
secret perfect). Intr-adevar, fiind dat un text criptat cu un astfel de sistem, Oscar nu
are nici o informatie privind cheia fluida sau textul clar. Dificultatea consta nsa atat n
lungimea cheii (egala cu cea a textului clar), cat si n modalitatea de transmitere a ei ntre
Alice si Bob.
Pentru sistemul Vernam exista o modalitate de atac cunoscuta sub numele de crip-
tanaliza diferentiala (notiunea va fi prezentata detaliat n Capitolul 6). Anume:
Daca y1 y2 . . . yn si y 01 y 02 . . . y 0n sunt doua texte criptate cu aceiasi chee fluida k1 k2 . . . kn ,
atunci
yi = xi ki , y 0i = x0i ki (1 i n)
deci yi y 0i = xi x0i , si cheia nu mai este necesara, ci doar informatia privind lungimea
sa; redundanta ultimei relatii va permite criptanaliza.
Sistemele de criptare fluide sunt clasificate n sisteme sincrone si auto-sincronizabile.
Definitia 4.3. Un sistem de criptare fluid sincron este o structura (P, C, K, L, E, D),
unde:
P, C, K sunt multimi finite nevide ale caror elemente se numesc texte clare, texte
criptate si respectiv chei;
L este o multime finita nevida numita alfabet de chei;
g : K L+ este un generator de chei fluide: pentru
k K, g(k) = k1 k2 k3 . . . L+
este o cheie fluida (teoretic infinita);
z L exista o regula de criptare ez E si o regula de decriptare dz D astfel ca
x P, dk (ek (x)) = x
Exemplul 4.2. Sistemul de criptare Vigenere poate fi definit ca un sistem de criptare
fluid sincron. Fie m lungimea cuvantului cheie din sistemul Vigenere. Definim
P = C = L =Z26 , K =(Z26 )m ,
ez (x) = x + z (mod 26), dz (y) = y z (mod 26)
In anii 0 90 comunicarea ntre Moscova si Washington era securizata n acest mod, transportul cheii
1

de criptare fiind asigurat de curieri diplomatici.


4.1. SISTEME SINCRONE SI AUTO-SINCRONIZABILE 49

Cheia z1 z2 z3 . . . este definita


(
ki daca 1im
zi =
zim daca im+1
Ea va genera din cheia fixa K = (k1 , k2 , . . . , km ), cheia fluida
k1 k2 . . . km k1 k2 . . . km k1 k2 . . .

Procesul de criptare cu un sistem fluid sincron poate fi reprezentat ca un automat


descris de relatiile

qi+1 = (qi , K), zi = g(qi , K), yi = h(zi , xi )

unde q0 este starea initiala care poate fi determinata din cheia K, este functia de
tranzitie a starilor, g este functia care produce cheia fluida zi , iar h este functia de iesire
care produce textul criptat yi pe baza textului clar xi si a cheii fluide zi .
- qi - qi
qi+1 6 qi+1 6
 xi  yi

  

?  ? 
? 
?
6 - g - h - yi g - h1 - xi
K  6 zi 
K 6 -

6 zi 

(a) Criptare (b) Decriptare

Observatia 4.1.

Un sistem de criptare bloc poate fi privit ca un caz particular de sistem de criptare


fluid, n care i 1, zi = K.

(sincronizare): In sistemele de criptare fluide sincrone, Alice si Bob trebuie sa-si


sincronizeze cheia fluida pentru a putea obtine o criptare/decriptare corecta. Daca
n timpul transmisiei sunt inserati sau eliminati biti din textul criptat, atunci de-
criptarea esueaza si ea poate fi reluata numai pe baza unor tehnici de resincronizare
(cum ar fi de exemplu reinitializarea sau plasarea unor marcatori speciali la intervale
regulate n textul transmis).

Modificarea unui bit din textul criptat (fara a se elimina sau adauga nimic) nu va
afecta decriptarea altor caractere (nepropagarea erorii).

Un adversar activ care elimina, insereaza sau retrimite componente ale mesajului
criptat, va provoca desincronizari si deci va fi detectat la receptie. De asemenea, el
poate face modificari n textul criptat si sa observe cum vor afecta ele textul clar.
Rezulta ca un text criptat cu un sistem fluid sincron necesita mecanisme separate
de autentificare si de garantare a integritatii datelor.
50 CAPITOLUL 4. SISTEME FLUIDE DE CRIPTARE

Definitia 4.4. Un sistem aditiv fluid binar de criptare este un sistem fluid sincron n
care P = C = L =Z2 iar functia de iesire h este (XOR).

Un astfel de sistem este reprezentat mai jos:


xi yi

K - Generator zi- ? - y
i K - Generator zi- ? - x
i
chei fluide chei fluide

(a) Criptare (b) Decriptare

Definitia 4.5. Un sistem de criptare fluid este auto-sincronizabil (sau asincron) daca
functia de generare a cheii fluide depinde de un numar fixat de caractere criptate anterior.

Deci comportamentul unui astfel de sistem poate fi descris de ecuatiile

qi = (yit , yit+1 , . . . , yi1 ), zi = g(qi , K), yi = h(zi , xi )

unde q0 = (yt , yt+1 , . . . , y1 ) este starea initiala (cunoscuta), K este cheia, g este functia
de generare a cheii fluide, iar h este functia de iesire care cripteaza textul clar xi . Cele mai
cunoscute sisteme auto-sincronizabile sunt registrii liniari cu feedback (LF SR), utilizati la
generarea secventelor de numere pseudo-aleatoare (n criptografie) si la generarea codurilor
ciclice (n teoria codurilor). Mai multe informatii despre LF SR pot fi gasite n Capitolul
12.

Exemplul 4.3. (Criptare cu auto-cheie)2 :


Fie P = C = L =Z26 . Se defineste cheia fluida astfel:

z1 = K, zi = yi1 = ezi1 (xi1 ) (i 2).

Pentru un element oarecare al cheii z Z26 , se defineste


ez (x) = x + z (mod 26)
dz (y) = y z (mod 26)
Sa consideram K = 13 si sa criptam textul clar BU CU REST I.
Transformat n secventa numerica vom avea

(x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 ) = (1, 20, 2, 20, 17, 4, 18, 19, 8)

In faza de criptare, vom calcula pe rand:


y1 = e13 (x1 ) = 1 + 13 (mod 26) = 14; y2 = e14 (x2 ) = 20 + 14 (mod 26) = 8;
y3 = e8 (x3 ) = 2 + 8 (mod 26) = 10; y4 = e10 (x4 ) = 20 + 10 (mod 26) = 4;
2
Se pare ca sistemul este atribuit lui Vigenere.
4.1. SISTEME SINCRONE SI AUTO-SINCRONIZABILE 51

y5 = e4 (x5 ) = 17 + 4 (mod 26) = 21; y6 = e21 (x6 ) = 4 + 21 (mod 26) = 25;


y7 = e25 (x7 ) = 18 + 25 (mod 26) = 17; y8 = e17 (x8 ) = 19 + 17 (mod 26) = 10;
y9 = e10 (x9 ) = 8 + 10 (mod 26) = 18;
Deci textul criptat este (14, 8, 10, 4, 21, 25, 17, 10, 18) sau n litere: OIKEV ZRKS.
Pentru decriptare, vom avea:
x1 = d13 (y1 ) = 14 13 (mod 26) = 1; x2 = d14 (y2 ) = 8 14 (mod 26) = 20; s.a.m.d.
Se observa ca textul decriptat poate fi obtinut de oricine, aproape n totalitate, fara a
cunoaste nici o cheie (aceasta fiind necesara doar pentru decriptarea primului caracter).
Deci gradul sau de securitate este nul.
Ceva mai dificil este sistemul n care generarea cheii fluide se realizeaza cu ecuatia
zi = xi1 (i 2).
In acest caz, BU CU REST I se cripteaza n OV W W LV W LB (pentru K = 13).
Nici acest sistem de criptare cu auto-cheie nu este sigur, deoarece evident sunt
posibile doar 26 chei.

Proprietati ale sistemelor de criptare fluide auto-sincronizabile:

1. Auto-sincronizare: Deoarece functia de decriptare h1 depinde numai de un numar


fixat de caractere criptate anterior, desincronizarea rezultata eventual prin nsera-
rea sau stergerea de caractere criptate se poate evita. Astfel de sisteme de criptare
pot restabili proprietatea de sincronizare, afectand (eventual) doar un numar finit
de caractere din textul clar.

2. Propagarea limitata a erorii: Daca starea unui sistem fluid auto-sincronizabil de-
pinde de s caractere anterioare, atunci modificarea (eventual stergerea sau nse-
rarea) unui caracter din textul criptat poate duce la decriptarea incorecta a maxim
s caractere; dupa aceea decriptarea redevine corecta.

3. Difuzia textelor clare: Deoarece fiecare caracter din textul clar influenteaza ntregul
text criptat care urmeaza, eventualele proprietati statistice ale textului clar sunt
dispersate prin textul criptat. Deci, din acest punct de vedere, sistemele de criptare
auto-sincronizabile sunt mai rezistente decat cele sincronizabile, la atacurile bazate
pe redondanta textului clar.

4. Rezistenta la criptanaliza activa: Din proprietatile de mai sus rezulta ca este destul
de dificil de depistat un atac venit din partea unui adversar activ (care poate modi-
fica, nsera sau sterge caractere) auto-sincronizarea readucand decriptarea n faza
normala. De aceea sunt necesare mecanisme suplimentare pentru a asigura auten-
tificarea si integritatea datelor.
52 CAPITOLUL 4. SISTEME FLUIDE DE CRIPTARE

4.2 Exemple de sisteme fluide de criptare


4.2.1 SEAL
SEAL (Software - optimized Encryption ALgorithm) este un sistem de criptare aditiv
binar (Definitia ??), definit n 1993 de Don Coppersmith si Philip Rogaway. Este unul
din cele mai eficiente sisteme implementabile pe procesoare de 32 biti.
La un astfel de sistem este importanta descrierea generatorului de chei fluide (care se
aduna modulo 2 cu textul clar). SEAL este o functie pseudo-aleatoare care scoate o cheie
fluida de L biti folosind un numar n de 32 biti si o cheie secreta a de 160 biti.
Fie A, B, C, D, Xi , Yj cuvinte de 32 biti. Vom folosi urmatoarele notatii:

1. A: complementul lui A (bit cu bit);

2. A B, A B, A B: operatiile OR, AN D si XOR (definite pe biti);

3. A << s: rotirea ciclica a lui A spre stanga cu s pozitii;

4. A >> s: rotirea ciclica a lui A spre dreapta cu s pozitii;

5. A + B (mod 232 ): suma lui A si B (considerate ca numere ntregi fara semn);

6. f (B, C, D) = (B C) (B D);
g(B, C, D) = (B C) (B D) (C D)
h(B, C, D) = B C D.

7. A||B: concatenarea (alaturarea) lui A cu B;

8. (X1 , X2 , . . . , Xn ) (Y1 , Y2 , . . . , Yn ): atribuire simultana (variabila Yi ia valoarea


Xi simultan pentru toate valorile lui i = 1, 2, . . . , n).
4.2. EXEMPLE DE SISTEME FLUIDE DE CRIPTARE 53

Algoritmul de generare a tabelei G pentru SEAL 2.03 :


Intrare: Un sir a de 160 biti si un ntreg i (0 i < 232 ).
Iesire: Ga (i) sir de 160 biti.
Algoritm 1:

1. Se definesc constantele (de 32 biti):


y1 = 5A827999, y2 = 6ED9EBA1, y3 = 8F 1BBCDC, y4 = CA62C1D6

2. a. X0 i;
b. for j 1 to 15 do Xj 00000000;
c. for j 16 to 79 do Xj ((Xj3 Xj8 Xj14 Xj16 ) << 1);
d. (M0 , M1 , M2 , M3 , M4 ) (H0 , H1 , H2 , H3 , H4 ) where a = H0 H1 H2 H3 H4 ;
e. (Runda 1): for j 0 to 19 do
t ((M0 << 5) + f (M1 , M2 , M3 ) + M4 + Xj + y1 );
(M0 , M1 , M2 , M3 , M4 ) (t, M0 , M1 << 30, M2 , M3 );
f. (Runda 2): for j 20 to 39 do
t ((M0 << 5) + h(M1 , M2 , M3 ) + M4 + Xj + y2 );
(M0 , M1 , M2 , M3 , M4 ) (t, M0 , M1 << 30, M2 , M3 );
g. (Runda 3): for j 40 to 59 do
t ((M0 << 5) + g(M1 , M2 , M3 ) + M4 + Xj + y3 );
(M0 , M1 , M2 , M3 , M4 ) (t, M0 , M1 << 30, M2 , M3 );
h. (Runda 4): for j 60 to 79 do
t ((M0 << 5) + h(M1 , M2 , M3 ) + M4 + Xj + y4 );
(M0 , M1 , M2 , M3 , M4 ) (t, M0 , M1 << 30, M2 , M3 );
i. (H0 , H1 , H2 , H3 , H4 ) (H0 + M0 , H1 + M1 , H2 + M2 , H3 + M3 , H4 + M4 );

Ga (i) = H0 ||H1 ||H2 ||H3 ||H4 .

3
Algoritmul SEAL 1.0 este bazat pe functia de dispersie SHA, iar SEAL 2.0 pe functia SHA 1.
54 CAPITOLUL 4. SISTEME FLUIDE DE CRIPTARE

SEAL(a, n) (Generatorul de chei fluide pentru SEAL 2.0):

Intrare: a cheia secreta (160 biti), n [0, 232 ) ntreg, L - lungimea solicitata
pentru cheia fluida.
Iesire: cheia fluida y, |y| = L0 , unde L0 este primul multiplu de 128 din [L, ).

1. Se genereaza tabelele T, S, R avand ca elemente cuvinte de 32 biti.


Fie constanta Y = 000007F C si functia
Fa (i) = Hii (mod 5) unde H0i H1i H2i H3i H4i = Ga (bi/5c).
a. for i 0 to 511 do T [i] Fa (i);
b. for j 0 to 255 do S[j] Fa (00001000 + j);
c. for k 0 to 4 d(L 1)/8192e 1 do R[k] Fa (00002000 + k);

2. Descrierea procedurii Initialize(n, l, M1 , M2 , M3 , M4 , n1 , n2 , n3 , n4 ) cu intrarile


n (cuvant) si l (ntreg). Iesirile sunt M1 , M2 , M3 , M4 , n1 , n2 , n3 , n4 (cuvinte).
M1 n R[4 l], M2 (n >> 8) R[4 l + 1],
a.
M3 (n >> 16) R[4 l + 2], M4 (n >> 24) R[4 l + 3].
b. for j 1 to 2 do
P M1 Y, M2 M2 + T [P/4], M1 (M1 >> 9),
P M2 Y, M3 M3 + T [P/4], M2 (M2 >> 9),
P M3 Y, M4 M4 + T [P/4], M3 (M3 >> 9),
P M4 Y, M1 M1 + T [P/4], M4 (M4 >> 9),
(n1 , n2 , n3 , n4 ) (M4 , M1 , M2 , M3 );
P M1 Y, M2 M2 + T [P/4], M1 (M1 >> 9),
P M2 Y, M3 M3 + T [P/4], M2 (M2 >> 9),
P M3 Y, M4 M4 + T [P/4], M3 (M3 >> 9),
P M4 Y, M1 M1 + T [P/4], M4 (M4 >> 9),

3. l 0, y  (sirul vid);

4. repeat
a. Initialize(n, l, M1 , M2 , M3 , M4 , n1 , n2 , n3 , n4 );
b. for i 1 to 64 do
P M1 Y, M2 M2 + T [P/4], M1 (M1 >> 9), M2 M2 M1 ;
Q M2 Y, M3 M3 + T [Q/4], M2 (M2 >> 9), M3 M3 M2 ;
4.2. EXEMPLE DE SISTEME FLUIDE DE CRIPTARE 55

P (P + M3 ) Y, M4 M4 + T [P/4], M3 (M3 >> 9), M4 M4 M3 ;


Q (Q + M4 ) Y, M1 M1 + T [Q/4], M4 (M4 >> 9), M1 M1 M4 ;
P (P + M1 ) Y, M2 M2 + T [P/4], M1 (M1 >> 9);
Q (Q + M2 ) Y, M3 M3 + T [Q/4], M2 (M2 >> 9);
P (P + M3 ) Y, M4 M4 + T [P/4], M3 (M3 >> 9);
Q (Q + M4 ) Y, M1 M1 + T [Q/4], M4 (M4 >> 9);
y y||(M2 + S[4 i 4])||(M3 S[4 i 3])||(M4 + S[4 i 2])||(M1 S[i 1]).
if |y| L then return(y) STOP
else if i (mod 2) = 1 then (M1 , M3 ) (M1 + n1 , M3 + n2 )
else (M1 , M3 ) (M1 + n3 , M3 + n4 )
c. l l + 1.

Observatia 4.2. ([?]) In majoritatea aplicatiilor pentru SEAL 2.0 se foloseste L 219 .
Algoritmul functioneaza si pentru valori mai mari, dar devine ineficient deoarece creste
mult dimensiunea tabelei R. O varianta este concatenarea cheilor fluide
SEAL(a, 0)||SEAL(a, 1)||SEAL(a, 2)|| . . .
Deoarece n < 2 , se pot obtine astfel chei fluide de lungimi pana la 251 , pastrand
32

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 (astazi RSA Security). Destinat scopurilor comerciale, el a fost secret,
fiind accesibil numai dupa semnarea unui protocol de confidentialitate. In septembrie
1994 nsa, un anonim publica codul sau sursa pe o lista de discutii, dupa care RC4 se
raspandeste rapid, starnind o serie de polemici referitor la drepturile intelectuale. Se
considera ca astazi exista mai multe implementari ilegale.
RC4 este un sistem aditiv fluid de criptare.
Printre sistemele care folosesc RC4 se pot aminti SQL (Oracle), Lotus Notes, AOCE
(Apple Computer), WEP WPA CipherSaber Secure Sockets Layer (optional) sau Secure
Shell (optional)4 RC4 este utilizat pentru criptarea fisierelor n protocoale cum ar fi RSA
SecurPC sau n standarde de comunicatii (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 foloseste o stare interna (secreta)
formata din doua componente:

Un tablou de 256 octeti: S[0], S[1], . . . S[255], numit S box.


4
Cand un sistem de criptare este marcat optional, nsemna ca el este una din variantele oferite pentru
implementare.
56 CAPITOLUL 4. SISTEME FLUIDE DE CRIPTARE

Doi pointeri de cate 8-biti (notati i respectiv j).


S boxul este initializat cu o cheie de lungime variabila de obicei ntre 40 si 256
biti, folosind un algoritm numit KSA (key - sheduling algorithm).
In faza a doua, cheia fluida este generata folosind algoritmul P RGA (pseudo-random
generation algorithm).

Algoritmul PRGA de generare a cheii fluide


i j
0 1 2 S[i]+S[j] ? ? 254 255

S ...  ... ... ...


6
?- ?
?
K  ?

Continuturile S[i] si S[j] (unde i, j sunt date de cei doi pointeri) se aduna modulo 256,
iar octetul K de la adresa S[i] + S[j] este introdus n cheia fluida. In plus cei doi octeti
sunt interschimbati.
Procedeul este reluat atat timp cat este nevoie. La fiecare reluare, starea celor doi
pointeri se modifica (i este incrementat cu 1 iar j este incrementat cu S[i]). In acest fel,
fiecare locatie din S box este modificata cel putin odata la 256 iteratii.
Formal:
i := 0
j := 0
while GeneratingOutput:
i := (i + 1) mod 256
j := (j + S[i]) mod 256
swap(S[i],S[j])
output S[(S[i] + S[j]) mod 256]

Algoritmul KSA de initializare


KSA este utilizat pentru initializarea S boxului. Fie n (1 n 255) numarul de
octeti din cheie5 . Initial n S se introduce permutarea identica. Ulterior se realizeaza 256
transpozitii. Formal
for i := 0 to 255 do S[i] := i
j := 0
for i := 0 to 255 do
j := (j + S[i] + key[i mod n]) mod 256
swap(S[i],S[j])
5
In majoritatea implementarilor n este n intervalul [5, 16].
4.2. EXEMPLE DE SISTEME FLUIDE DE CRIPTARE 57

Implementarea sistemului RC4 este foarte simpla: se lucreaza cu octeti si sunt necesari
256 octeti pentru S box, n octeti de memorie pentru cheie, plus trei variabile ntregi
i, j, k. Operatiile folosite sunt XOR si AN D (sau pe unele platforme simpla adunare
pe biti, fara transport).

Securitatea RC4
Conform cu Bruce Schneier ([?]), sistemul are circa 256! 2562 = 21700 stari posibile; el
este rezistent la criptanaliza diferentiala si liniara, iar ciclurile sunt mai mari de 10.100.
Totusi, securitatea RC4 este slaba din mai multe puncte de vedere si criptografii nu
recomanda sistemul pentru aplicatiile actuale.
Cheia fluida generata are o usoara preferinta pentru anumite secvente de octeti.
Aceasta a permis construirea unui atac (Fluhrer si McGrew), care separa cheia fluida
dintr-o secventa aleatoare de maxim 1 GB.
In 2001, Fluhrer, Mantin si Shamir descopera ca din toate cheile RC4 posibile, primii
octeti de iesire nu sunt aleatori, oferind informatii importante despre cheie.
La majoritatea sistemelor de criptare, o masura de securitate necesara este alegerea
unui numar aleator nou6 care sa fie folosit pentru criptarea fiecarui mesaj. In acest fel,
criptarea de doua ori a aceluiasi mesaj va genera texte diferite.
O solutie sigura (care functioneaza pentru orice sistem de criptare) este de a folosi o
cheie pe termen lung din care, prin amestec cu un nonce (dupa un algoritm prestabilit), se
obtine cheia necesara unei criptari. Multe aplicatii nsa care folosesc RC4 fac o simpla
concatenare a cheii cu nonce. Aceasta slabiciune este exploatata de Fluhrer, Mantin si
Shamir pentru a sparge ulterior sistemul de criptare W EP (wired equivalent privacy)
folosit pe retelele fara fir 802.11.
Ulterior implementarile sistemului RC4 s-au aparat eliminand primii octeti (uzual
1024) din cheia fluida, nainte de a o folosi.

4.2.3 Sistemul A5/1


A5/1 este un sistem de criptare fluid utilizat pe scara larga n retelele de telefonie mobila
GSM 7 . Construit n 1987 special pentru Europa si SUA (o versiune intentionat mai slaba
A5/2 a fost definita n 1989 pentru export n alte zone geografice), el a fost facut public
dupa ce n 2000 s-a demonstrat vulnerabilitatea sa ([?]).
A5/1 este un automat finit bazat pe trei registri seriali cu feedback (LF SR) sincroni.
Cei trei registri R1 , R2 , R3 contin 19, 22 si respectiv 23 flip - flopuri de date (unitati de
memorie de un bit). La un tact, fiecare registru poate ramane pe loc sau si poate deplasa
continutul spre stanga, aducand pe ultima pozitie o combinatie liniara de alti biti. Cele
6
Un astfel de numar poarta numele de nonce (new number)
7
Inafara algoritmului de criptare A5/1, retelele GSM folosesc si un algoritm de autentificare A3/8.
58 CAPITOLUL 4. SISTEME FLUIDE DE CRIPTARE

trei combinatii liniare sunt definite astfel:


R1 [0] R1 [13] R1 [16] R1 [17] R1 [18]
R2 [0] R2 [20] R2 [21]
R3 [0] R3 [17] R3 [20] R3 [21] R3 [22]

 
6
h-+?
?+?
- h -+?
h -

+h
 ? 
6
h
6 ?
-+
? -

 
6
h-+?
?+?
- h h
-+? -
Automatul A5/1
Pentru a decide ce registri se deplaseaza la un tact, se folosesc trei biti de tact (cei
notati ). La fiecare tact se determina valoarea majoritara din acesti biti; un registru se
deplaseaza (si scoate o valoare) daca bitul sau de tact are aceeasi valoare cu cea majoritara.
Deci, la fiecare pas, cel putin doi registri vor suferi o deplasare.
La fiecare tact, valoarea emisa de automat este
k = R1 [18] R2 [21] R3 [22]
Apoi y se combina prin XOR cu bitul curent din mesajul de informatie (similar sistemului
one-time-pad).
Exemplul 4.4. Sa presupunem ca cei trei registri sunt (bitii de tact au fost marcati):
R1 = 0110 1011 1010 1001 011,
R2 = 1010 1100 0010 1101 1001 11,
R3 = 1100 0101 1011 0010 1010 010
Sa urmarim comportarea automatului cativa tacti:
1. Tact 1: Iesire: y 0 1 1 = 0.
Bit majoritar: 0. Se deplaseaza R2 si R3 . Noua stare este:
R1 = 0110 1011 1010 1001 011,
R2 = 0101 1000 0101 1011 0011 11,
R3 = 1000 1011 0110 0101 0100 100
2. Tact 2: Iesire: y 0 0 1 = 1.
Bit majoritar: 1. Se deplaseaza R1 si R2 . Noua stare este:
R1 = 1101 0111 0101 0010 110,
R2 = 1011 0000 1011 0110 0111 11,
R3 = 1000 1011 0110 0101 0100 100
4.2. EXEMPLE DE SISTEME FLUIDE DE CRIPTARE 59

3. Tact 3: Iesire: y 1 1 1 = 1.
Bit majoritar: 0. Se deplaseaza R1 si R3 . Noua stare este:
R1 = 1010 1110 1010 0101 101,
R2 = 1011 0000 1011 0110 0111 11,
R3 = 0001 0110 1100 1010 1001 000

4. Tact 4: Iesire: y 1 1 0 = 0.
Bit majoritar: 1. Se deplaseaza toti registrii. Noua stare este:
R1 = 0101 1101 0100 1011 011,
R2 = 0110 0001 0110 1100 1111 11,
R3 = 0010 1101 1001 0101 0010 000

Deci cheia fluida de criptare este z = 01100 . . .

A5/1 necesita deci si o intializare a starii interne, bazata pe o cheie de criptare K de


64 biti si anumiti parametri GSM stocati ntr-o constanta Count de 22 biti. Deoarece
sistemul GSM transmite mesajele n pachete de cate 114 biti, A5/1 va genera chei fluide
de 114 biti; deci este necesara o initializare a automatului la fiecare pachet nou primit.
Algoritmul de initializare este:

1. Se reseteaza toti registrii.

2. for i 0 to 63 do

2.1. R1 [0] R1 [0] K[i];


2.2. R2 [0] R2 [0] K[i];
2.3. R3 [0] R3 [0] K[i];
2.4. Deplasare stanga toti registrii;

3. for i 0 to 21 do

3.1. R1 [0] R1 [0] Count[i];


3.2. R2 [0] R2 [0] Count[i];
3.3. R3 [0] R3 [0] Count[i];
3.4. Deplasare stanga toti registrii;

4. for i 0 to 99 do
Functioneaza un tact automatul A5/1, cu ignorarea iesirii.
60 CAPITOLUL 4. SISTEME FLUIDE DE CRIPTARE

4.3 Exercitii
4.1. Presupunem ca definim o cheie fluida ntr-un sistem sincronizabil n felul urmator:
Fie K K, L un alfabet al cheilor si o multime finita de stari. Se defineste o stare
initiala q0 . Apoi, pentru i 1, se defineste recursiv
qi = f (qi1 , K)
unde f : K . De asemenea, i 1, elementul zi din cheia fluida este definit
prin
zi = g(qi , K)
unde g : K L.
Aratati ca orice cheie fluida rezultata n acest mod are o perioada de lungime maxim
card().

4.2. Criptati mesajul 10110101 folosind automatul A5/1 din Exemplul ?? (considerand
starea initiala cea dinaintea Tactului 1).

4.3. Construim urmatorul sistem de criptare cu cheie fluida:


Fie S26 o permutare fixata; cheia este K Z26 .
Secventa de chei fluide este definita zi = (K + i 1) mod 26 (i 1)
Functia de criptare este ez (x) = ((x + z) mod 26)
iar cea de decriptare dz (y) = ( 1 (y) z) mod 26.
Sa presupunem ca permutarea fixata este
 
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
=
23 13 24 0 7 15 14 6 25 16 22 1 19 18 5 11 17 2 21 12 20 4 10 9 3 8

Folosind un atac prin forta bruta, sa se decripteze mesajul BST KXOU XM W JK


Capitolul 5

Sisteme simetrice de criptare


moderne

5.1 Sistemul de criptare DES


5.1.1 Retele Feistel
In cadrul firmei IBM, Horst Feistel descrie n anii 0 60 principiile unei structuri pentru
sistemele de criptare, cu influente majore asupra sistemelor ulterioare. Structura este
cunoscuta sub numele de retea Feistel. Avantajul major al unei astfel de de structuri
este acela ca operatiile de criptare si decriptare sunt similare, (chiar identice n unele
cazuri); aceasta permite o reducere substantiala a marimii codului (sau circuitelor) care
implementeaza sistemul de criptare.
Dupa cum s-a vazut o cerinta solicitata de securitatea fata de atacuri bazate pe analiza
textului criptat este aceea ca textul criptat sa creeze difuzie si confuzie. Problema consta
n faptul ca, desi se stie de mult cum sa se construiasca functii cu caracter aleator, pana la
retelele Feistel nu se cunosteau algoritmi de constructie pentru functii bijective aleatoare.
Solutia adusa de acesta este foarte eleganta:

S D
s

fn
  ?
?
XX
XX 
XX
  XX
z
XX ?


? ?
L R

61
62 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

Sa presupunem ca avem o functie f : {0, 1}n {0, 1}n aproape aleatoare (care da
impresia ca cei n biti din imaginea lui f sunt alesi fara nici o regula). Algoritmul de
criptare va opera cu blocuri de 2n biti, pe care i mparte n doua jumatati, sub forma
(S, D). Imaginea criptata a unui bloc printr-o retea Feistel este tot un bloc de 2n biti:
(L, R), unde L = D si R = S f (D).
Aceasta transformare este bijectiva: din perechea (L, R) se poate regasi (S, D) prin
D = L, S = R f (L).
De remarcat ca functia f nu este obligatoriu inversabila. De cele mai multe ori ea se
compune din operatii simple care sunt executate rapid de calculator.
Exemple de astfel de operatii folosite:
Permutari de biti (adesea implementate sub forma unor tabele de permutare, numite
P box).

Functii simple neliniare (implementate sub forma unor tabele de substitutie, numite
S box).

Operatii liniare (deplasari, adunari, XOR)


Toate aceste operatii pot fi implementate direct pe structuri hardware, ceea ce le face
extrem de rapide.
Cum dupa criptare, jumatatea din dreapta a blocului nu a suferit nici o transformare
(doar o deplasare spre stanga), reteaua Feistel se aplica de mai multe ori fiecare aplicatie
fiind numita runda.
Retelele Feistel apar prima oara la sistemul de criptare Lucifer, construit pentru IBM
de o echipa condusa de Horst Feistel si Don Coppersmith. Succesul a fost asigurat odata
cu desemnarea sistemului DES ca standard oficial de criptare.
Multe sisteme de criptare moderne sunt bazate pe acest gen de retele, structura si
proprietatile lor fiind intens exploatate de comunitatea criptografica.
O lista a celor mai cunoscute sisteme de criptare bazate pe structurile Feistel cuprinde:
Blowfish, Camellia, CAST-128, DES, FEAL, KASUMI, LOKI97, Lucifer, MAGENTA,
MISTY1, RC5, TEA, Triple DES, Twofish, XTEA. In plus, CAST-256, MacGuffin, RC2,
RC6, Skipjack utilizeaza diverse generalizari ale retelelor Feistel.
Abia dupa afirmarea sistemului AES a inceput o perioada de declin a dominatiei
structurilor de tip Feistel n construirea sistemelor de criptare.

5.1.2 Consideratii generale privind sistemul de criptare DES


In mai 1973, Biroul National de Standarde din SUA a lansat n Registrul Federal (jurnalul
oficial al guvernului) un apel la construirea unui sistem de criptare oficial care sa se
numeasca Data Encryption Standard (DES). Firma IBM a construit acest sistem
publicat n Registrul Federal la 17 martie 1975, modificand sistemul Lucif er, pe care
5.1. SISTEMUL DE CRIPTARE DES 63

deja l testa. Dupa dezbateri publice, DES a fost adoptat oficial la 17 ianuarie 1977 ca
standard de criptare. De atunci, el a fost re-evaluat la fiecare 5 ani, fiind n acest moment
cel mai popular sistem de criptare cu cheie simetrica. Spargerea sa n iulie 1998 a coincis
(ntamplator ?) cu durata sa oficiala de utilizare pe teritoriul SU A.

5.1.3 Descrierea sistemului DES


Sistemul DES cripteaza un bloc de text clar de 64 biti ntr-un text criptat tot de 64 biti,
utilizand o cheie de 56 biti. Algoritmul cuprinde 3 etape:

1. Fie textul clar initial, de 64 biti. Lui i se aplica o permutare IP initiala


fixata, obtinandu-se 0 = IP () = L0 R0 . L0 este format din primii 32 biti ai
lui 0 , iar R0 din ultimii 32 biti.

2. Se efectueaza 16 runde (iteratii) ale unei functii care se va preciza. La fiecare


runda se calculeaza Li Ri (1 i 16) dupa regula

Li = Ri1
Ri = Li1 f (Ri1 , Ki )

unde f este o functie care se va preciza, iar K1 , K2 , . . . , K16 sunt secvente de


48 biti calculati din cheia K. Se spune ca K1 , K2 , . . . , K16 sunt obtinuti prin
diversificarea cheii (key shedule).

3. Blocului R16 L16 i se aplica inversa permutarii initiale pentru a obtine textul
criptat = IP 1 (R16 L16 ).

Observatia 5.1. Sistemul de ecuatii care definesc criptarea la fiecare runda poate fi in-
versat imediat, pentru a obtine ecuatiile rundelor de decriptare. Acestea sunt:

Ri1 = Li , Li1 = Ri f (Li , Ki )

Functia de criptare f (A, J) are ca argumente doua secvente binare: una de 32 biti,
iar a doua de 48 biti. Rezultatul este o secventa de 32 biti. Etapele de calcul ale functiei
sunt:

1. Argumentul A este extins la 48 biti folosind o functie de expansiune E. E(A)


cuprinde bitii lui A asezati ntr-o anumita ordine, unii bitii fiind scrisi de doua ori.

2. Se calculeaza B = E(A) J; rezultatul se descompune n 8 subsecvente de cate 6


biti fiecare: B = B1 B2 B3 B4 B5 B6 B7 B8 .
64 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

3. Se folosesc 8 S boxuri S1 , S2 , . . . , S8 , fiecare din ele fiind un tablou de dimensiuni


4 16 cu elemente numere ntregi din intervalul [0, 15]. Pentru o secventa Bj =
b1 b2 b3 b4 b5 b6 se calculeaza un sir de 4 biti Sj (Bj ) astfel: bitii b1 b6 dau reprezentarea
binara a indicelui unei linii r (0 r 3) din Sj ; ceilalti patru biti b2 b3 b4 b5 dau
reprezentarea binara a indicelui unei coloane c (0 c 15) din tablou. Atunci
Cj = Sj (Bj ) = [Sj (r, c)]2 (1 j 8). ([x]2 este reprezentarea n baza 2 a numarului
ntreg x).
4. Secventa C = C1 C2 C3 C4 C5 C6 C7 C8 de lungime 32 se rearanjeaza folosind o
permutare fixata P . Rezultatul final este f (A, J) = P (C).
Mai ramane sa specificam functiile particulare folosite de sistemul DES:
Permutarea initiala IP este:
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7

Permutarea inversa IP 1 este:


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
Functia de expansiune E este definita de tabloul:
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
5.1. SISTEMUL DE CRIPTARE DES 65

Cele opt cutii S (S boxuri) sunt:

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
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
66 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

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

Permutarea fixata P este:


16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25

Mai ramane de prezentat procesul de diversificare al cheii K. De fapt, K este o secventa


de 64 biti, din care 56 definesc cheia, iar 8 (bitii de pe pozitiile 8, 16, 24, . . . , 64) sunt biti
de paritate, aranjati n asa fel ncat fiecare octet sa contina un numar impar de 1. Acesti
8 biti sunt ignorati n procesul de diversificare.
1. Din cheie se elimina bitii de paritate, iar asupra celorlalti se aplica o permutare
P C1 , obtinandu-se P C1 (K) = C0 D0 (C0 sunt primii 28 biti din secventa, iar D0
ceilalti 28 biti). Permutarea P C1 este

57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4

2. Pentru i = 1, 2, . . . , 16 se calculeaza

Ci = LSi (Ci1 )
Di = LSi (Di1 )

si Ki = P C2 (Ci Di ).
LSi este o rotatie circulara la stanga cu una sau doua pozitii, n functie de valoarea
lui i: o pozitie daca i = 1, 2, 9, 16, altfel rotirea este de doua pozitii.
P C2 elimina bitii 9, 18, 22, 25, 35, 38, 43, 54 si rearanjeaza ceilalti biti sub forma:
5.1. SISTEMUL DE CRIPTARE DES 67

14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32

Decriptarea se realizeaza plecand de la textul criptat si utilizand acelasi algoritm, n


ordine inversa; se vor folosi n ordine cheile K16 , . . . , K1 .

Exemplul 5.1. ([?]) Sa consideram textul clar Now is time for all reprezentat ca o
secventa de caractere ASCII scrise n hexazecimal. Daca se face o criptare DES folosind
cheia K = 0123456789ABCDEF , se obtine
= 4E6F 772069732074 68652074696D6520 666F 7220616C6C20
= 3F A40E8A984D4815 6A271787AB8883F 9 893D51EC4B563B53

5.1.4 Chei slabe


In cazul K1 = K16 , algoritmul de generare va genera o secventa de chei palindromice:
Ki = K17i (1 i 8). Acestea sunt chei slabe.

Definitia 5.1. O cheie DES slaba este o cheie K cu proprietatea eK (eK ()) = , P.
O pereche de chei (K1 , K2 ) este semi-slaba DES daca eK1 (eK2 ()) = , P.

In DES sunt 4 chei slabe si 6 perechi de chei semi-slabe, date de tabelele urmatoare:

Chei slabe (hex) C0 D0


0101010101010101 028 028
F EF EF EF EF EF EF EF E 128 128
1F 1F 1F 1F 0E0E0E0E 028 128
E0E0E0E0F 1F 1F 1F 1 128 028

C0 D0 P erechi de chei semi slabe (hex) C0 D0


(01)14 (01)14 01F E01F E01F E01F E, F E01F E01F E01F E01 (10)14 (10)14
(01)14 (10)14 1F E01F E00EF 10EF 1, E01F E01F F 10EF 10E (10)14 (01)14
(01)14 0 28
01E001E001F 101F 1, E001E001F 101F 101 (10)14 028
(01)14 128 1F F E1F F E0EF E0EF E, F E1F F E1F F E0EF E0E (10)14 128
028 (01)14 011F 011F 010E010E, 1F 011F 010E010E01 028 (10)14
128 (01)14 E0F EE0F EF 1F EF 1F E, F EE0F EE0F EF 1F EF 1 128 (10)14

Posibilitatea ca printr-o alegere aleatoare a cheii sa se obtina o cheie slaba sau semi-slaba
este deci 252 . Multi utilizatori solicita un test pentru depistarea cheilor slabe, test care
nu afecteaza semnificativ timpul de criptare.
68 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

De remarcat ca fiind data o cheie semi-slaba K, cealalta cheie din pereche poate fi
obtinuta sectionand K n doua parti egale si rotind fiecare jumatate cu 8 biti.
Pentru fiecare cheie slaba K exista 232 puncte fixe: texte clare cu proprietatea
eK () = .
Pentru fiecare cheie semi-slaba K din partea superioara a tabelului exista 232 puncte
anti-fixe: texte clare cu eK () = . Aceste patru chei semi-slabe se numesc si chei anti
- palindromice, deoarece subcheile generate sunt complementare: K1 = K 16 , K2 = K 15
etc.

5.1.5 Controverse legate de DES


Inca de la lansarea sa, DES a fost supus la numeroase critici. O prima obiectie a fost
legata de folosirea S boxurilor. Toate calculele din DES sunt liniare, cu exceptia acestor
S boxuri. Deci, de fapt toata securitatea sistemului se bazeaza pe acestea. Dar, nimeni
(cu exceptia autorilor) nu stie cum sunt concepute cutiile. Multe persoane au fost convinse
ca ele ascund diverse trape secrete care permit celor de la Agentia Nationala de Securitate
(N SA - serviciul american care raspunde de problemele legate de securitatea nationala)
sa decripteze orice mesaj.
Ca urmare, N SA afirma n 1976 ca Sboxurile au fost construite pe baza urmatoarelor
criterii:

1. Fiecare linie este o permutare a numerelor 0, . . . , 15 ;

2. Nici un S box nu este o functie liniara sau afina;

3. La modificarea unui bit din operand, un S box provoaca modificarea cel putin a
doi biti din rezultat;

4. Pentru fiecare cutie S si (secventa de lungime 6), S() si S( 001100) difera


prin cel putin doi biti.

Alte doua proprietati au fost mentionate ca fiind consecinte ale criteriilor de constructie:

5. Pentru orice cutie S si orice , S() 6= S( 11ab00), oricare ar fi a, b {0, 1};

6. Pentru orice cutie S, daca un bit din operand este mentinut constant si se urmarste
un bit al rezultatului, numarul de valori care produc 0 este apropiat de numarul
de valori care produc 1. Intr-adevar, daca bitul fixat este unul din cei doi biti care
determina linia cutiei S, exista conform criteriului 1. 16 valori care produc 0 si
16 valori care produc 1; pentru ceilalti biti, aceasta nu este adevarat, dar numarul
de valori care produc 0 (sau 1) este cuprins totdeauna ntre 13 si 19.
5.1. SISTEMUL DE CRIPTARE DES 69

Nici un alt criteriu referitor la S boxuri nu a mai fost recunoscut public.


Cea mai pertinenta critica referitoare la DES se refera la marimea prea mica (numai
256 ) a spatiului cheilor. Ca urmare s-au conceput numeroase masini dedicate atacurilor
prin forta bruta, care sa caute cheia. Fiind dat un text clar de 64 biti si textul sau
criptat , se verifica toate cheile K posibile (aproximativ 255 ), pana se obtine eK () =
(de remarcat ca solutia exista totdeauna, dar nu este unica).

5.1.6 Moduri de implementare ale DES -ului


In istoria sa, sistemul de criptare DES a cunoscut patru moduri de implementare, moduri
extinse ulterior la toate sistemele de criptare:

Modul ECB (Electronic Codebook Mode) corespunde metodei descrise anterior: fiind
dat un text clar x = 1 2 . . ., fiecare bloc i de 64 biti este criptat cu cheia K dupa
formula
i = eK (i ), (i 1)
procedeul conducand la textul criptat y = 1 2 . . .

In modul CBC (Cypher Block Chaining Mode), fiecare bloc de text criptat i este
combinat printr-un XOR cu textul clar urmator i+1 , nainte de criptarea acestuia.
Operatia decurge conform schemei:

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

Se defineste un bloc cu valoarea initiala V I = 0 , dupa care blocurile se cripteaza


dupa formula
i = eK (i1 i ) (i 1)

Functia de decriptare
i = i1 dK (i ) (i 1)
nu mai este recursiva. De aceea, decriptarea se poate efectua mai rapid (comparativ
cu operatia de criptare), printr-un proces de calcul paralel.
70 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

Modurile OF B si CF B sunt construite conform sistemelor de criptare cu chei fluide:


se genereaza cheia fluida, care se combina apoi cu textul clar (similar sistemului
one-time-pad). OF B (Output Feedback Mode) este o criptare sincronizabila aditiva:
componentele cheii fluide sunt obtinute prin criptarea iterativa a unui bloc initial
V I de 64 biti; se defineste 0 = V I si se calculeaza 1 , 2 , . . . dupa formula

i = eK (i1 ), (i 1)

Secventa blocurilor de text clar x = 1 , 2 , . . . este criptata apoi conform relatiei

i = i i , (i 1)

In modul CF B (Cypher Feedback Mode) se ncepe cu 0 = V I (bloc initial de 64


biti) si se calculeaza cheia fluida i criptand din nou blocul de text criptat obtinut
anterior:
i = eK (i1 ) (i 1)
Ca si la modul OF B, n faza a doua avem

i = i i (i 1)

De remarcat ca functia de criptare eK este folosita aici atat la procesul de criptare


cat si la cel de decriptare.
1 2 1 - 2 -

? 
? 
? 
?
V I = 0 - eK -  + -. . .
+ - eK - V I = 0 - eK -  ?. . .
? eK - + -
+ - 
6 6
? ? ? ?
Criptare 1 - 2 - Decriptare 1 2

Si n modul de implementare CF B este posibila o decriptare n paralel, datorita


formulei
i = i eK (i1 ) (i 1)

Desi descrierile au fost gandite pentru blocuri de marime 64, modurile OF B si CF B


pot fi extinse imediat la blocuri de k biti (1 k 64).

Cele patru moduri de implementare prezinta diverse avantaje si dezavantaje. Astfel,


la ECB si OF B, modificarea unui bloc de text clar i provoaca modificarea unui singur
bloc de text criptat, i . In anumite situatii, acest fapt constituie un defect. Modul OF B
este utilizat adesea pentru transmisiile prin satelit.
5.1. SISTEMUL DE CRIPTARE DES 71

In modurile CBC si CF B dimpotriva, modificarea unui bloc i de text clar antreneaza


modificari n toate blocurile de texte criptate, ncepand cu i . De aceea, aceste moduri
sunt adaptate n particular problemelor de autentificare a mesajelor (M AC - Message
Authentication Code). Un M AC este adaugat la un text clar cu scopul de a-l convinge
pe Bob ca textul primit a fost scris de Alice si nu a fost alterat de Oscar. El garanteaza
astfel integritatea (sau autenticitatea) mesajului, dar nu si confidentialitatea sa.
Sa descriem cum este utilizat modul CBC la constructia unui M AC. Se pleaca de la
blocul initial V I n care toti bitii sunt 0. Se construieste 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 . Cand Bob primeste mesajul 1 , 2 , . . . , n , el
genereaza 1 , . . . , n folosind cheia (secreta) K si verifica daca n este identic cu mesajul
M AC primit.
De remarcat ca Oscar nu poate construi un M AC deoarece nu cunoaste cheia K
utilizata de Alice si Bob; orice modificare a mesajelor clare este depistata astfel usor.
Se poate realiza si o combinare a integritatii cu confidentialitatea, n felul urmator:
Alice utilizeaza cheia K1 pentru a calcula un M AC bazat pe 1 , . . . , n ; fie n+1 acest
M AC. Apoi, ea cripteaza mesajul 1 , . . . , n+1 n 1 , . . . , n+1 folosind o a doua cheie
K2 . Cand Bob primeste mesajul, el decripteaza n prima faza (cu cheia K2 ), apoi verifica
cu cheia K1 daca n+1 este M AC-ul lui 1 , . . . , n .
Sau ca alta varianta Alice poate utiliza K1 pentru criptarea mesajului 1 , . . . , n ;
apoi, pentru 1 , . . . , n determina M AC-ul n+1 folosind cheia K2 . Bob va face ntai veri-
ficarea corectitudinii data de M AC si daca totul este n ordine va trece la decriptare.

5.1.7 Parole U N IX
O aplicatie interesanta a sistemului de criptare DES este algoritmul de criptare al paro-
lelor din sistemul U N IX 1 , algoritm numit UNIX crypt.
w
56
 ? -

? ? ? 88
0 0
0 - DES -
DES - ... -
DES
- -
64 64 64 64 64
/etc/passwrd
6 6 6 6
 - 12
12
6
-
Salt
1
Sistem dezvoltat de compania Bell Laboratories.
72 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

Versiunea criptata a unei parole este stocata ntr-o baza de date /etc/passwrd (a
carei confidentialitate nu este obligatoriu asigurata). Atunci cand un utilizator da parola,
sistemul o cripteaza si o compara cu varianta din baza de date. Modul de criptare este
format din urmatoarele etape:
1. Parola este trunchiata la primele opt caractere ASCII (sau completata cu 0 daca
parola are mai putin de 8 caractere). Fiecare caracter da 7 biti, formand o cheie
DES de 56 biti.
2. Se realizeaza o criptare n serie prin 25 sisteme DES, textul clar initial fiind 00 . . . 0.
3. Cei 64 biti obtinuti dupa ultima criptare se combina cu 12 biti dati de Salt si cu
un bit suplimentar, formand 11 caractere printabile de cate 7 biti. Bitii de paritate
completeaza parola criptata pana la 88 biti.
Sistemul U N IX ofera pentru criptare un pachet de 12 biti numit Salt generat de
sistemul de ceas al sistemului la momentul creerii parolei si stocat n baza de date, n
cadrul parolei criptate. Acesti biti sunt folositi pentru modificarea functiei de expansiune
E din DES, oferind 212 = 4096 variante. Anume: fiecare bit din Salt este asociat cu o
pereche fixata din blocul de 48 biti din E. Daca el este 1, atunci bitii din E asociati lui
sunt interschimbati; altfel, sunt lasati pe loc.
Aceasta modificare previne utilizarea de implementari ale sistemului DES externe
sistemului U N IX.

5.1.8 Sisteme de criptare nrudite cu DES


Triplu DES (3DES)
Triplu DES (cunoscut si sub numele 3DES sau mai rar DES ede) este un sistem
derivat din DES, propus de Walter Tuchman (seful echipei IBM care a construit DES).
Numele oficial este F IP S Pub 46 3.
Formal, 3DES este definit prin formula

c = DESk3 (DESk1
2
(DESk1 (m))),

unde:
m este un bloc de text clar (64 biti),
c este blocul de text criptat rezultat,
k1 , k2 , k3 sunt chei DES (de 56 biti),
DESk : criptarea DES cu cheia k,
DESk1 : decriptarea DES cu cheia k.
Introducerea la pasul 2 a decriptarii nu afecteaza securitatea algoritmului. Avantajul
consta n utilizarea pentru 3DES a unei implementari DES (astfel, cele doua sisteme pot
inter-opera).
5.1. SISTEMUL DE CRIPTARE DES 73

Uneori dar destul de rar se foloseste pentru Triplu DES o criptare n lant de trei
criptari DES (numita si DES eee):

c = DESk3 (DESk2 (DESk1 (m))).

Criptarea n trei pasi (ede sau eee) este esentiala pentru protejarea contra unui atac
de tipul meet-in-the-middle. In cazul unei duble criptari, acest atac este destul de eficient.
Intr-adevar, sa consideram un sistem de criptare bloc unde marimea cheii este n. O
criptare dubla cu doua chei diferite va folosi de fapt o cheie de lungime 2n. Pentru un
text clar dat m, sa presupunem ca putem stoca eK (m), pentru toate cheile K posibile.
Fie x un text criptat dupa formula x = ek2 (ek1 (m)), unde cheile k1 si k2 sunt secrete.
Pentru fiecare cheie p exista o cheie unica q astfel ca dp (x) = eq (m). In particular exista
exact 2n chei posibile determinate de perechea (m, x), chei care pot fi gasite n aproximativ
O(2n ) pasi.
Daca numarul cheilor care pot fi stocate este de ordinul 2p < 2n , algoritmul poate fi
modificat pentru a afla toate cheile posibile, n circa O(22np ) pasi.

Observatia 5.2. Pentru oricare din situatiile


k1 = k2 , k2 = k3 , k1 = k2 = k3 ,
DES ede se reduce la un simplu DES, lucru utilizat frecvent pentru a verifica
compatibilitatea sistemului.

Cheia pentru Triplu DES are 3 56 = 168 biti, la care se adauga 3 8 = 24 biti de
paritate; n total sunt 192 biti.
O varianta, numita 3DES cu doua chei foloseste k1 = k3 ; aici marimea de stocare
a cheii va fi de numai 128 biti (din care 16 biti de paritate). Acest mod este nsa sensibil
la anumite atacuri cu text clar ales, propuse de Merkle si Hellman (1981) si mai tarziu
de Van Oorschot si Wiener (1991).
Sistemul de criptare 3DES nu este nca spart, dar utilizarea sa este ngreunata din
cauza vitezei mici de criptare. Totusi multe sisteme continua sa foloseasca 3DES; ca
exemple mai recente sunt cardurile bancare (Mastercard si partial Visa) care din 2002
sunt configurate pe baza acestui sistem de criptare. De asemenea, sistemul de telefonie
mobila Zapp foloseste 3DES ca sistem de criptare.

DES X
DES X (sau mai simplu DESX) este o varianta a sistemului de criptare DES,
dezvoltata pentru a rezista mai bine unui atac prin forta bruta.
Dupa cum am vazut, sistemul DES opereaza cu o cheie de 56 biti; deci sunt numai
256 chei posibile, unele din acestea fiind chei slabe. Pentru a evita un atac direct, in 1984
Rivest propune cresterea marimii cheii K fara a modifica substantial algoritmul.
74 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

DESX foloseste doua chei suplimentare K1 , K2 de cate 64 biti si efectueaza criptarea


unui bloc de text clar x dupa formula

DESXK,K1 ,K2 (x) = K2 DESK (x K1 )

Marimea cheii creste deci la 56 + 2 64 = 184 biti.

IDEA
Prima aparitie a sistemului IDEA are loc n 1990, sub denumirea P ES (Proposed En-
cryption Standard). Deoarece n acelasi an, Biham si Shamir publica sistemul de atac
al DES-ului prin criptanaliza diferentiala, n 1991 autorii (Xuejia Lai si James Massey)
modifica 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 schimba n IDEA
(International Data Encryption Standard Algorithm).
In opinia lui Bruce Schneider, n 1996 IDEA constituia cel mai sigur sistem de criptare
utilizabil fara restrictii. Este o componenta a sistemului de securitate prin posta elec-
tronica P GP , unde asigura criptarea datelor.
Sistemul este foarte asemanator cu DES. Astfel, el este un sistem simetric care
opereaza cu blocuri de texte clare de 64 biti, folosind o cheie de 128 biti.
Textul clar de 64 biti este despartit n 4 sublocuri X1 , X2 , X3 , X4 , de cate 16 biti
fiecare. Aceste patru componente formeaza intrarea la prima runda a algoritmului. In
total sunt 8 runde, care folosesc operatiile de adunare, nmultire (modulo 216 ) si XOR;
toate pe 16 biti. De asemenea sunt implicate si 16 subchei a cate 16 biti fiecare. Intre
runde, subblocurile 2 si 3 sunt schimbate ntre ele. Dupa runda 8, cele patru subblocuri
sunt combinate cu 4 subchei, formand iesirea.
O runda contine 14 operatii, anume:

1. Se nmulteste X1 cu prima subcheie;


2. Se aduna X2 cu a doua subcheie;
3. Se aduna X3 cu a treia subcheie;
4. Se nmulteste X4 cu a patra subcheie;
5. Ce s-a obtinut la pasii 1 si 3 se combina prin XOR;
6. Ce s-a obtinut la pasii 2 si 4 se combina prin XOR;
7. Se nmulteste rezultatul pasului 5 cu subcheia 5;
8. Se aduna rezultatele pasilor 6 si 7;
9. Se nmulteste rezultatul pasului 8 cu subcheia 6;
10. Se aduna rezultatele pasilor 7 si 9;
11. Ce s-a obtinut la pasii 1 si 9 se combina prin XOR;
12. Ce s-a obtinut la pasii 3 si 9 se combina prin XOR;
13. Ce s-a obtinut la pasii 2 si 10 se combina prin XOR;
14. Ce s-a obtinut la pasii 4 si 10 se combina prin XOR.
5.2. ALTE SISTEME DE CRIPTARE ULTERIOARE DES 75

Rezultatele pasilor 11 14 formeaza iesirea dintr-o runda; cele patru subblocuri (dupa ce
subblocurile 2 si 3 sunt interschimbate) formeaza intrarea n runda urmatoare.
Dupa ultima runda, are loc o transformare finala:
1. Se nmulteste X1 cu prima subcheie;
2. Se aduna X2 cu a doua subcheie;
3. Se aduna X3 cu a treia subcheie;
4. Se nmulteste X4 cu a patra subcheie.
Cela patru subblocuri obtinute n final formeaza textul criptat.
Prelucrarea subcheilor se face dupa urmatorul algoritm:
1. Cheia de 128 biti este desfacuta n 8 subchei a cate 16 biti fiecare;
2. Primele 6 subchei sunt folosite la prima runda, iar urmatoarele doua, la runda
a doua;
3. Cheia este rotita spre stanga cu 25 biti si se desface din nou n 8 subchei, folosite
la rundele 2 si 3 (cate patru subchei);
4. Se repeta pasul 3 cat timp este necesar.
Operatia de decriptare se realizeaza urmand aceiasi pasi, cu singura diferenta ca subcheile
se introduc n ordine inversa.
Comparativ cu DES, IDEA prezinta unele avantaje. Astfel, implementarile realizate
permit o viteza dubla de criptare n IDEA fata de DES.
Lungimea cheii (128) biti, asigura o securitate sporita la atacurile prin forta bruta:
pentru a gasi cheia prin ncercari, ar fi necesare cam 2127 teste; deci cu un chip care
testeaza un miliard de chei pe secunda, ar trebui cam 1013 ani o perioada mai lunga
decat varsta Pamantului.
Autorii au afirmat (fara sa demonstreze) ca IDEA rezista atacurilor prin criptanaliza
diferentiala. Un studiu al subcheilor a aratat ca exista unele chei slabe, care permit spar-
gerea 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
fiecarei subchei generate printr-un XOR cu 0x0D, unde x este o cifra hexazecimala
aleasa aleator.

5.2 Alte sisteme de criptare ulterioare DES


La sfarsitul anilor 0 90 se decide nlocuirea sistemului de criptare DES. Motivele sunt
multiple, dar mentionam numai doua:
In iulie 1998 sistemul DES pe 56 biti este spart de catre organizatia Electronic
Frontier Foundation; s-a folosit un calculator construit special n acest scop, iar
timpul necesar spargerii a fost de 3 zile.
76 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

In luna septembrie a aceluiasi an, administratia americana acorda companiilor pro-


ducatoare de soft de securitate permisiunea de a exporta implementari ale algorit-
mului DES bazate pe chei de criptare de 56 biti.
In legatura cu aceste evenimente, pe 20 august 1998 N IST (National Institute of Stan-
dards and Technology) anunta (n cadrul unei conferinte speciale) un set de 15 algoritmi
candidati sa nlocuiasca DES 2 . Este ales si numele noului sistem de criptare: AES
(Advanced Encryption Standard). Cei 15 algoritmi au fost trimisi de membri din co-
munitatea criptografica mondiala. Criteriile stabilite de N IST pentru noul sistem au
fost:
Sa fie un sistem de criptare simetric pe blocuri de 128 biti.
Sa accepte chei de lungime 128, 192 si 256 biti;
Sa nu aiba chei slabe;
Sa fie eficient atat pe platforme Intel Pentium Pro cat si pe alte platforme software
sau hardware;
Sa poata fi implementat atat pe procesoare de 32 biti cat si pe smart - carduri
(procesoare de 8 biti);
Sa fie cat mai simplu.
Sa fie mai rapid decat DES si sa ofere o securitate mai mare decat 3DES.
A doua conferinta AES are loc n martie 1999; dupa analiza rezultatelor algoritmilor
propusi, N IST selecteaza 5 algoritmi: M ars, RC6, Rijndael, Serpent si T wof ish. Aces-
tia sunt supusi testelor si discutiilor publice, folosind drept criterii de evaluare: securitate,
cost, implementare.
In mai 2000 N IST anunta drept sistem castigator sistemul de criptare Rijndael,
care devine oficial AES.
Inainte de a prezenta sistemul AES vom face o scurta trecere n revista a sistemelor
de criptare finaliste n aceasta competitie.

5.2.1 Mars
Sistemul M ARS este propus de firma IBM , autorii sai fiind un grup condus de Don
Coppersmith. Cateva detalii de constructie:
Algoritmul este format din trei componente, fiecare din ele asigurand protectie pen-
tru anumite tipuri de atac.
2
Acestia sunt (n ordine alfabetica) 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.
5.2. ALTE SISTEME DE CRIPTARE ULTERIOARE DES 77

Lucreaza pe procesoare de 32 biti, putand fi implementat atat n format big-endian,


cat si n little endian3 .

La intrare textul clar este spart n grupuri de 128 biti (4 cuvinte de cate 32 biti).
Prima si a treia parte a algoritmului amesteca acesti biti folosind o cheie de dimen-
siune variabila (ntre 128 si 448 biti) si un S box de 512 elemente. Componenta
din mijloc este formata din 16 runde si foloseste n plus o o functie de expandare E.

Operatiile folosite sunt: adunari, scaderi, XOR-uri, rotatii (fixe sau dependente de
date) si nmultiri; toate calculele se fac modulo 32. Constructia S boxului s-a
facut pe baza unui algoritm public, plecand de la o serie de conditii initiale clare.

Notatiile folosite n algoritm:

D[0], D[1], D[2], D[3] cuvinte (de 32 biti), initializate cu textul clar; n final aici
va fi blocul de text criptat; se noteaza D[i : j] octetul j din D[i] (j = 0, 1, 2, 3).

K[] cheia expandata; secventa de 40 cuvinte;

S[] S box de 512 cuvinte; S0[] va contine primele 256 elemente, iar S1[]
ultimele 256 cuvinte.

Faza I (Mixare preliminara):


1. for i 0 to 3 do D[i] D[i] + K[i];
2. for i 0 to 7 do
2.1. D[1] D[1] S0[D[0, 0]];
2.2. D[1] D[1] + S1[D[0, 1]];
2.3. D[2] D[2] + S0[D[0, 2]];
2.4. D[3] D[3] S1[D[0, 3]];
2.5. D[0] D[0] >>> 24;
2.6. if i {0, 4} then D[0] D[0] + D[3];
2.6. if i {1, 5} then D[0] D[0] + D[1];
2.7. (D[0], D[1], D[2], D[3]) (D[3], D[0], D[1], D[2]).

3
Fie a1 a2 a3 a4 un cuvant pe 4 octeti, unde ai este un numar ntreg din intervalul [0, 255].
1. In arhitectura big-endian (o statie SPARK de exemplu), un cuvant reprezinta ntregul a1 224 +
a2 216 + a3 28 + a4 .
2. In arhitctura little-endian (cum este familia Intel 80xxx) un cuvant reprezinta ntregul a4 224 +
a3 216 + a2 28 + a1 .
78 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

Faza II (Transformari bazate pe cheie):


1. for i 0 to 15 do
1.1. (o1, o2, o3) E(D[0], K[2i + 4], K[2i + 5]);
1.2. D[0] <<< 13;
1.3. D[2] D[2] + o2;
1.4. if i < 8 then
1.4.1. D[1] D[1] + o1;
1.4.2. D[3] D[3] o3;
else
1.4.3. D[3] D[3] + o1;
1.4.4. D[1] D[1] o3;
1..5. (D[0], D[1], D[2], D[3]) (D[3], D[0], D[1], D[2]).
Faza III (Mixare finala):
1. for i 0 to 7 do
1.1. if i {2, 6} then D[0] D[0] D[3];
1.2. if i {3, 7} then D[0] D[0] D[1];
1.3. D[1] D[1] S1[D[0, 0]];
1.4. D[2] D[2] S0[D[0, 3]];
1.5. D[3] D[3] S1[D[0, 2]];
1.6. D[3] D[3] S0[D[0, 1]];
2.5. D[0] D[0] <<< 24;
2.7. (D[0], D[1], D[2], D[3]) (D[3], D[0], D[1], D[2]).
2. for i 0 to 3 do D[i] D[i] K[36 + i];
3. Output(D[0], D[1], D[2], D[3]).

Mai trebuie precizate functia E si modalitatea de expandare a cheii K.


E(inp, cheie1, cheie2);
1. M inp + cheie1; (M este variabila auxiliara)
2. R (inp <<< 13) cheie2; (R este variabila auxiliara)
3. i cei mai mici noua biti din M ;
4. L S[i]; (L este variabila auxiliara)
5. R (R <<< 5);
6. r cei mai mici cinci biti din R;
7. M (M <<< r);
8. L L R;
9. R (R <<< 5);
10. L L R;
11. r cei mai mici cinci biti din R;
12. L (L <<< r);
13. output(L, M, R).
5.2. ALTE SISTEME DE CRIPTARE ULTERIOARE DES 79

Expandarea cheii:
Aceasta procedura expandeaza 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 si un vector fixat Z
de 4 cuvinte.
1. Z A4A8D57B 5B5D193B C8A8309B 73F 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 do
T [i] (T [i] + S[cei mai mici noua biti 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 biti din K[i];
4.2. w K[i] cu cei mai din dreapta doi biti setati pe 1;
4.3. for p 2 to 30 do
if (w[p 1] = w[p] = w[p + 1]) (w[p] e ntr-o secventa de 10 biti consecutivi egali)
then M [p] 1;
4.4. r cei mai din dreapta cinci biti din K[i 1];
4.5. X (Z[j] <<< r);
4.6. K[i] w (X M ).
5. output(K[]).
Cele 512 cuvinte ale S boxului au fost generate n asa fel ncat sa verifice conditiile:
- Nu are valorile 00000000 si F F F F F F F F ;
- Orice doua valori difera prin cel putin 4 biti;
- Nu exista doua valori a, b astfel ca a = b sau a = b;
- Diferentele de scadere sau XOR ntre orice doua valori sunt maxime.
Pentru alte detalii privind securitatea sistemului M ARS (algoritmul de decriptare,
moduri de implementare, componentele S boxului etc), a se vedea [?].

5.2.2 RC6
Sistemul de criptare RC6 este o versiune a lui RC5, elaborata de laboratoarele RSA
(sub coordonarea lui Ron Rivest) cu scopul de a ndeplini criteriile AES. Este un sistem
simplu, fara atacuri practice cunoscute (sunt elaborate doar cateva atacuri teoretice),
complet parametrizat: versiunea generala este RC6w/r/b unde marimea cuvintelor este
w, numarul de runde este r, iar b este marimea (n octeti) a cheii de criptare. Versiunea
pentru AES are w = 32, r = 20.

Algoritmul lucreaza pe blocuri de lungime w folosind sase operatii:


80 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

+, , (toate modulo 2w ),

a <<< b (rotirea lui a spre stanga cu un numar de pozitii dat cei mai putin semni-
ficativi log2 w biti din b),

a >>> b (operatie similara spre dreapta).

Algoritmul de criptare:
Intrare:
- Textul clar stocat n cuvintele A, B, C, D;
- Numarul r de runde;
- Cheia S[0, . . . 2r + 3];
Iesire: Textul criptat stocat n A, B, C, D.
Algoritm:
1. B B + S[0];
2. D D + S[1];
3. for i 1 to r do
3.1. t (B (2 B + 1)) <<< log2 w;
3.2. u (D (2 D + 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 si modalitati de implementare pot fi gasite n [?].
Algoritmul de diversificare a cheii S este identic cu cel de la RC5. In [?] acesta este
prezentat mpreuna cu un cod pentru RC5, scris n C + +.
Cheia initiala are b octeti (0 b 255) si este stocata ntr-un tablou L cu c = db/4e
cuvinte (completand ultimul cuvant cu 0 daca este necesar).
In prima faza tabloul S este initializat folosind un generator liniar congruential4 :
1. S[0] P ;
2. for i 1 to 2(r + 1) 1 do S[i] (S[i 1] + Q) mod 232
P = B7E15163 si Q = 9E3779B9 sunt constante bazate pe reprezentarea binara a
lui e si .

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


4
A se vedea Capitolul 12 dedicat generatorilor de numere pseudoaleatoare.
5.2. ALTE SISTEME DE CRIPTARE ULTERIOARE DES 81

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

5.2.3 Serpent
Sistemul de criptare Serpent a fost propus de Ross Anderson (Universitatea Cambridge),
Eli Biham (Institutul Tehnion, Haifa) si Lars Knudsen (Universitea Bergen). El cripteaza
texte clare de 128 biti n blocuri de aceeasi lungime, n 32 runde, folosind 33 chei de
criptare de runda, de lungime 128 biti 5 . Ea se extinde la 256 biti punand n fata 1 pentru
primul bit, apoi 0 pentru ceilalti biti atat cat este necesar.
Algoritmul de criptare cuprinde 3 pasi:
Intrare: P (textul clar)
Iesire: C (Textul criptat)
Algoritm:

1. B0 IP (P ) (IP - permutare initiala);

2. for i 0 to 31 do Bi+1 Ri (Bi );


where Ri (X) L(Si (Xi Ki )), 0 i 30,
R31 (X) S7 (X31 K31 ) K32 .
Se aplica 32 runde formate din: un XOR cu cheia de runda Ki , o trecere
printr-un S box si o transformare liniara L; n ultima runda, transformarea
liniara este nlocuita cu nca o combinare cu o a doua cheie de runda;
S reprezinta aplicarea n paralel a 32 copii ale S boxului Si mod 8 .

3. C F P (B32 ) (F P permutare finala).

Observatia 5.3. S boxurile lucreaza pe 4 biti, ca si la DES 6 . Fiecare runda foloseste


un singur S box n 32 copii. De exemplu, runda R0 foloseste S0 n 32 exemplare; o copie
pentru bitii 0 3 din B0 K0 ntorcand primii patru biti dintr-un tablou intermediar,
a doua copie pentru bitii 4 7 din B0 K0 ntoarce bitii 4 7 din vectorul intermediar
s.a.m.d.
5
Lungimea cheii date de utilizator este variabila, nsa algoritmul descris foloseste chei de lungime
128, 192 sau 256 biti.
6
O varianta initiala, Serpent0 folosea aceleasi S boxuri ca DES.
82 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

Apoi vectorul intermediar obtinut trece prin transformarea liniara, producand B1 .


Analog, R1 foloseste 32 S boxuri identice S1 pentru bitii din B1 K1 produand un
vector intermediar care dupa trecerea prin L da B2 etc.
Detalii asupra IP, F P , continutul si modul de generare al S boxurilor, precum si o
criptanaliza amanuntita pot fi gasite n [?], [?].
De remarcat ca la fiecare etapa IP (Bi ) = Bi , IP (Ki ) = Ki .

Transformarea liniara L:
Blocul de 128 biti dintr-o runda este spart n patru cuvinte (X0 , X1 , X2 , X3 ) = Si (Bi Ki ).
Se aplica apoi urmatorii pasi:

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 <<< nseamna rotire spre stanga, iar << este deplasare spre stanga.
In ultima runda, transformarea L este nlocuita cu B32 S7 (B31 K31 ) K32 .

Generarea cheilor de runda:


Fiecare runda necesita 132 fragmente de cate 32 biti. In prima faza se completeaza cheia
furnizata de utilizator pana la 256 biti. Apoi ea se extinde pana la 33 subchei de cate 128
biti K0 , K1 , . . . , K32 n modul urmator:
Cheia K se descompune n opt cuvinte w8 , . . . , w1 care se extind la o cheie interme-
diara w0 , . . . , w131 prin formula
wi (wi8 wi5 wi3 wi1 i) <<< 11
unde este partea fractionara a raportului de aur (constanta 9E3779B9).
Cheile de runda sunt calculate din cheia intermediara folosind S boxurile:
(k0 , k1 , k2 , k3 ) S3 (w0 , w1 , w2 , w3 )
(k4 , k5 , k6 , k7 ) S2 (w4 , w5 , w6 , w7 )
(k8 , k9 , k10 , k11 ) S1 (w8 , w9 , w10 , w11 )
(k12 , k13 , k14 , k15 ) S0 (w12 , w13 , w14 , w15 )
(k16 , k17 , k18 , k19 ) S7 (w16 , w17 , w18 , w19 )
......
(k124 , k125 , k126 , k127 ) S4 (w124 , w125 , w126 , w127 )
(k128 , k129 , k130 , k131 ) S3 (w128 , w129 , w130 , w131 )
5.2. ALTE SISTEME DE CRIPTARE ULTERIOARE DES 83

Cheile de runda se regrupeaza n

Ki (k4i , k4i+1 , k4i+2 , k4i+3 )

5.2.4 Twofish
Sistemul Twofish este propus de un colectiv condus de Bruce Schneier, fiind unul din
putinele sisteme free (implementarea este disponibila la adresa [?]).
Algoritmul cripteaza blocuri de 128 biti, folosind o cheie de lungime variabila.
Algoritmul de criptare:
Intrare: P = p0 p1 . . . p15 un bloc de text clar de 128 biti (pi - octeti)
Iesire: C - bloc text criptat, de 128 biti.
Algoritm:
1. P se sparge n patru cuvinte P0 , P1 , P2 , P3 dupa sistemul little-endian:
3
p4i+j 28j ,
X
Pi (0 j 3)
j=0
2. R0,i Pi Ki , (0 i 3)
3. for r 0 to 15 do
3.1. (Fr,0 , Fr,1 ) F (Rr,0 , Rr,1 , r);
3.2. Rr+1,0 (Rr,2 Fr,0 ) >>> 1;
3.3. Rr+1,1 (Rr,3 <<< 1) Fr,1 ;
3.4. Rr+1,2 Rr,0
3.5. Rr+1,3 Rr,1
4. Ci R16,(i+2) mod 4 Ki+4 , (0 i 3)
Cb i c
$ %
5. ci 8(i mod 4) mod 28 , (0 i 15)
4

2
(cele patru cuvinte din textul criptat sunt scrise ca o secventa de 16 octeti n sistemul
little-endian: C = c0 c1 . . . c15 ).
De remarcat ca operatia de la pasul 2 este numita whitening si a fost introdusa n mod
independent de Merkle pentru Khuf u/Khaf re, respectiv Rivest pentru DES X.

Functia F
F (R0 , R1 , r) este o functie ternara care ntoarce doua valori (F0 , F1 ). Varianta propusa
este bazata la randul ei pe o alta functie g.
1. T0 g(R0 ) 2. T1 g(R1 <<< 8)
3. F0 (T0 + T1 + K2r+8 ) mod 232 4. F1 (T0 + 2 T1 + K2r+9 ) mod 232

Functia unara g constituie esenta sistemului de criptare Twofish:


84 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

1. xi bX/28i c mod 28 (0 i 3)
(cuvantul de intrare X este spart n patru octeti)
2. yi si [xi ], (0 i 3)
(octetii sunt trecuti prin patru S boxuri dependente de cheie)
z0 01 EF 5B 5B y0

z 5B EF EF 01
y1

3. 1

z2 EF 5B 01 EF y2

z3 EF 01 EF 5B y3
3
zi 28i .
X
4. Z (Z este valoarea rezultata).
i=0

Observatia 5.4. La pasul 3 se face o corespondenta ntre octeti si elementele corpului


GF (28 ), unde s-a tinut cont de izomorfismul GF (28 ) GF (2)[X]/v(X)
(v(X) = X 8 + X 6 + X 5 + X 3 + 1 este un polinom primitiv peste Z2 ).
7 7
i 8
ai 2i .
X X
Elementul a = ai X GF (2 ) se identifica cu octetul
i=0 i=0
Elementele matricii 4 4 au fost scrise ca valori hexazecimale ale octetilor, folosind
aceasta corespondenta.

Diversificarea cheii
Sistemul Twofish este definit pentru chei de lungime N unde standardul este N = 128, 192
sau 256. Se pot folosi nsa chei de orice lungime mai mica de 256; daca se da o astfel de
cheie, ea este extinsa prin completare cu 0 la cea mai apropiata lungime standard.
Din cheia M a utilizatorului, prin diversificare se obtin 40 cuvinte K0 , K1 , . . . , K39 si
patru S-cutii folosite la functia g.
Fie k N/64. Cheia M consta din 8k octeti m0 , m1 , . . . , m8k1 . Se calculeaza
vectorii Me , Mo , S astfel:
3
m4i+j 28j ,
X
1. Mi (0 j 2k 1)
j=0
2. Me (M0 , M2 , . . . , M2k2 ), Mo = (M1 , M3 , . . . , M2k1 );
3
si,j 28j ,
X
3. S = (Sk1 , Sk2 , . . . , S0 ) unde Si (0 i k 1)
j=0

Octetii si,j se obtin printr-o codificare cu un cod Reed-Solomon, pe baza formulei


5.2. ALTE SISTEME DE CRIPTARE ULTERIOARE DES 85

m8i

m8i+1


si,0 01 A4 55 87 5A 58 DB 9E m8i+2



si,1 A4 56 82 F 3 1E C6 68 E5 m8i+3
=

si,2 02 A1 F C C1 47 AE 3D 19 m8i+4



si,3 A4 55 87 5A 58 DB 9E 03
m8i+5

m8i+6


m8i+7
Pentru generarea S boxurilor si a cuvintelor cheii expandate se foloseste functia h,
definita astfel:
Argumente: X (cuvant) si L = (L0 , L1 , . . . , Lk1 ) o lista de k cuvinte.
Rezultatul: Z (cuvant).
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 octeti)
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 si q1 sunt permutari pe 8 biti, definite detaliat n [?].
6. Z se obtine aplicand pasii 3 si 4 din definitia functiei g.

In acest moment putem defini:

S boxurile din functia g sub forma

g(X) = h(X, S)

Pentru i = 0, 1, 2, 3, S boxul si (dependent de cheie) se formeaza prin aplicarea


lui h de la xi la yi , n care lista L este vectorul S derivat din cheie.

Cuvintele cheii expandate:


Fie 224 +216 +28 +20 , Ai h(2i, Me ), Bi (h((2i+1), Mo ) <<< 8
Atunci

K2i (A + i + Bi ) mod 232 , K2i+1 ((Ai + 2Bi ) mod 232 ) <<< 9


86 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

5.3 Sistemul de criptare AES


Din 2000, sistemul de criptare Rijndael creat de olandezii Joan Daemen si Vincent Rijman
devine oficial sistemul AES.7 Similar sistemulelor anterioare (inclusiv DES), si acest
sistem cripteaza blocuri de text clar de lungime fixa, folosind subchei ale unei chei generate
aleator. Lungimile folosite sunt de 128, 192 sau 256 biti.

5.3.1 Descrierea sistemului AES


Definitia 5.2. Un rezultat intermediar al sistemului de criptare se numeste stare.

Vom reprezenta starea unui bloc sub forma unui tablou cu 4 linii si Nb coloane, ale
carui elemente sunt octeti; deci valoarea lui Nb se determina usor: Nb = N/32, unde N
este lungimea blocului text care se cripteaza.
Similar, o cheie de criptare se va reprezenta printr-un tablou 4 Nk , unde Nk = K/32
(K fiind lungimea cheii).

Exemplul 5.2. O stare cu Nb = 6 si o cheie cu Nk = 4 au forma urmatoare:

a0,0 a0,1 a0,2 a0,3 a0,4 a0,5 k0,0 k0,1 k0,2 k0,3
a1,0 a1,1 a1,2 a1,3 a1,4 a1,5 k1,0 k1,1 k1,2 k1,3
a2,0 a2,1 a2,2 a2,3 a2,4 a2,5 k2,0 k2,1 k2,2 k2,3
a3,0 a3,1 a3,2 a3,3 a3,4 a3,5 k3,0 k3,1 k3,2 k3,3

Uneori, aceste blocuri se reprezinta grupate sub forma unui vector n care fiecare
element este coloana unei stari (deci, avand o lungime de 4 octeti). In functie de marimea
N a blocului de criptare (respectiv K a cheii), un astfel de vector are 4, 6 sau 8 cuvinte.
Octetii unui cuvant se noteaza cu a, b, c si respectiv d; astfel, octetul 0 este a, octetul 1
este b s.a.m.d.
Intrarea si iesirea din sistemul AES sunt definite sub forma unor vectori avand drept
componente octeti, numerotati de la 0 la 4Nb 1. Un vector de intrare/iesire are deci
16, 24 sau respectiv 32 componente, numerotate 0 . . . 15, 0 . . . 23 sau 0 . . . 31.
Similar, cheia de criptare este definita ca un vector de 16, 24 sau 32 octeti, numerotati
de la 0 la 4Nk 1 (unde Nk = 128, 192 si respectiv 256).
Octetii care formeaza intrarea n sistem (textul clar, daca se foloseste modul de criptare
ECB) completeaza pe coloane un tablou ca n Exemplul ??, numit starea initiala. Similar
se procedeaza cu cheia de criptare.
Procedeul este identic la sfarsit, cand se obtine blocul criptat prin liniarizarea pe
coloane a starii finale rezultate dupa criptare.
7
Rijndael a castigat obtinand 86 voturi, contra Serpent cu 59, Twofish cu 31, RC6 cu 23 si Mars cu
13 voturi. Principalul atu: desi Serpent este considerat mai sigur, Rijndael are mai putine transformari
si este mai rapid.
5.3. SISTEMUL DE CRIPTARE AES 87

Relatiile dintre indexul n al unui element (octet) din reprezentarea liniara si coordo-
natele (i, j) ale aceluiasi octet din reprezentarea matriciala sunt
i = n (mod 4); j = bn/4c; n = i + 4 j.
In plus, i este indicele octetului n cadrul unui cuvant care contine acel octet, iar j
este indicele cuvantului n cadrul blocului care l contine.
Criptarea se realizeaza n Nr runde, unde Nr depinde de Nb si Nk . Valorile lui Nr sunt
date n tabelul:
Nr Nb = 4 Nb = 6 Nb = 8
Nk = 4 10 12 14
Nk = 6 12 12 14
Nk = 8 14 14 14
Fiecare runda are la intrare o stare si foloseste o cheie de runda. Cu exceptia rundei finale,
o runda este formata din patru transformari, notate pe scurt:

ByteSub(Stare);

ShiftRow(Stare);

MixColumn(Stare);

AddRoundKey(Stare, Cheie).

Ultima runda contine numai trei transformari, fiind eliminata MixColumn(Stare). Sa


vedem cum sunt definite aceste transformari:
ByteSub(Stare): Este o substitutie neliniara care opereaza pe octeti. Tabela de
substitutie (S - box, daca folosim termenul consacrat din DES) este o matrice
inversabila formata din compunerea a doua transformari:
1. Fiecare octet nenul este nlocuit cu inversul sau 1 GF (28 ); octetul 00
este lasat nemodificat.
2. Rezultatul este modificat printr-o transformare afina peste Z2 :

y0 1 0 0 0 1 1 1 1 x0 1

y1


1 1 0 0 0 1 1 1
x1
1



y2


1 1 1 0 0 0 1 1
x2
0

y3 1 1 1 1 0 0 0 1 x3 0

=
+

y4 1 1 1 1 1 0 0 0 x4 0




y5


0 1 1 1 1 1 0 0
x5
1

y6 0 0 1 1 1 1 1 0 x6 1


y7 0 0 0 1 1 1 1 1 x7 0
88 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

Transformarea ByteSub se aplica tuturor octetilor starii de intrare n runda, rezul-


tatul fiind o alta stare de iesire din runda.
Inversa transformarii se obtine aplicand fiecarui octet transformarea afina inversa,
dupa care se ia inversul multiplicativ din GF (28 ) (daca octetul nu este nul).

ShiftRow(Stare): La acest pas, liniile starii sunt permutate ciclic spre stanga. Numa-
rul de octeti 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 si sunt date de tabelul

Nb C1 C2 C3
4 1 2 3
6 1 2 3
8 1 3 4

Exemplul 5.3. Aplicand transformarea ShiftRow starii din Exemplul ?? (unde


Nb = 6), se obtine starea

a0,0 a0,1 a0,2 a0,3 a0,4 a0,5


a1,1 a1,2 a1,3 a1,4 a1,5 a1,0
a2,2 a2,3 a2,4 a2,5 a2,0 a2,1
a3,3 a3,4 a3,5 a3,0 a3,1 a3,2

Inversa transformarii ShiftRow consta n permutarea ciclica spre stanga cu Nb Ci


octeti pentru linia i (1 i 3); n acest fel, fiecare octet aflat pe pozitia j n linia
i se deplaseaza pe pozitia j + Nb Ci (mod Nb ).

MixColumn(Stare): In aceasta transformare, coloanele starii sunt considerate sub


forma unor polinoame de gradul 3 cu coeficienti n GF (28 ).
Fiecare astfel de polinom este nmultit cu

c(X) = 0 030 X 3 + 0 010 X 2 + 0 010 X + 0 020

n algebra polinoamelor modulo X 4 + 1; polinomul c(X) este prim cu X 4 + 1, deci


va fi inversabil.
Aceasta transformare poate fi reprezentata si sub forma unei nmultiri matriciale,
care transforma starea coloana cu coloana; anume:

b0 02 03 01 01 a0

b1 01 02 03 01 a1
=

b2 01 01 02 03 a2


b3 03 01 01 02 a3
5.3. SISTEMUL DE CRIPTARE AES 89

Operatia inversa este similara: fiecare coloana este transformata prin nmultire 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

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


ntre starea curenta si cheia de runda. Cheia de runda are lungimea Nb si este
dedusa din cheia de criptare pe baza unui procedeu pe care l descriem mai jos.
Formal, transformarea are loc conform figurii (pentru Nb = 6):

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

unde bi,j = ai,j ki,j (0 i 3, 0 j 5).


Transformarea AddRoundKey si inversa ei sunt identice.

Algoritmul de criptare AES este format din:

1. O transformare AddRoundKey initiala;

2. Nr 1 runde;

3. O runda finala.

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


algoritm de obtinere a cheilor de runda.

5.3.2 Prelucrarea cheii de criptare


Toate cheile de runda se obtin din cheia de criptare printr-o prelucrare separata, formata
din doua componente: extinderea cheii si alegerea cheii de runda.
Principiile de baza ale prelucrarii sunt:

Numarul total al bitilor din toate cheile de runda este Nb (Nr + 1).
90 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

Cheia de criptare este extinsa ntr-o Cheie Expandata.

Cheia de runda se obtine luand primii Nb octeti din Cheia Expandata, care nu au
fost folositi pentru alte chei.

Extinderea cheii
Cheia expandata (notata W [Nb (Nr + 1)]) este un tablou liniar ale carui elemente sunt
cuvinte. Primele Nk cuvinte sunt cheia de criptare; celelalte cuvinte se obtin recursiv din
cuvintele definite anterior. Functia de extindere a cheii depinde de valoarea lui Nk ; exista
o versiune pentru Nk 6 si 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;
}
}
In acest algoritm (scris n C + +), SubByte(W ) este o functie care ntoarce un cuvant
n care fiecare octet este rezultatul aplicarii S boxului definit la transformarea ByteSub
fiecarui octet din cuvantul de intrare. RotByte(w) ntoarce un cuvant n care octetii sunt
rotiti ciclic la stanga (pentru intrarea (a, b, c, d) iesirea este (b, c, d, a)).
Esenta algoritmului este urmatoarea: primele Nk cuvinte sunt completate cu cheia de
criptare. In continuare, fiecare cuvant W [i] este egal cu W [i 1] W [i Nk ]. Pentru
cuvintele care sunt pe pozitii multipli de Nk , nainte de aceasta operatie, lui W [i 1] i se
aplica o permutare ciclica spre stanga a octetilor, urmata de aplicarea unui S box. In
plus, rezultatul este XOR - at nca odata, cu o constanta de runda.
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 + +)
{
5.4. EXERCITII 91

temp = W [i 1];
if (i % Nk == 0)
temp = SubByte(RotByte(temp)) Rcon(i/Nk );
else if (i % Nk == 4)
temp = SubByte(temp)
W [i] = W [i Nk ] temp;
}
}
La aceasta schema apare conditia suplimentara: daca i 4 este multiplu de Nk , pro-
cedura SubByte este aplicata lui W [i 1] nainte de XOR.
Constantele de runda sunt independente de Nk si sunt definite prin
Rcon[i] = (RC[i], 0 000 , 0 000 , 0 000 )
unde RC[i] = i1 unde este un element generator al lui GF (28 ).

Selectarea cheii de runda


Cheia rundei i este formata din secventa de cuvinte
W [Nb i] . . . W [Nb (i + 1) 1].
Ca o remarca, aceasta cheie poate fi calculata treptat, pe masura ce se ajunge la runda
respectiva.
Pentru alte detalii privind securitatea sistemului, a se vedea [?], [?]

5.4 Exercitii
5.1. Sa se arate ca procesul de decriptare folosind DES se realizeaza folosind tot sistemul
de criptare, dar inversand ordinea de aplicare a subcheilor.
5.2. Sa notam DES(, K) textul criptat cu cheia K. Daca = DES(, K) si 0 =
DES(c(), c(K)), unde c(i1 i2 . . . in ) = in in1 . . . i1 , sa se arate ca 0 = c().
5.3. Sa presupunem ca cheia (de 56 biti) a unui algoritm DES este
11011001 01111101 01100101 00010011 01010110 01100110 00110100
Determinati cheia K1 pentru prima runda.
5.4. Presupunem ca R1 = 10011100011010111101001010100011 Gasiti primii 4 biti din
R2 , daca subcheia pentru runda a doua este
K2 = 011101010111001011100101010001010010001101010110.
5.5. Se poate defini un cod de autentificare al mesajului (M AC) utilizand un mod CF B
sau CBC. Fiind data o secventa de blocuri 1 , 2 , . . . , m de texte clare, se defineste valoa-
rea initiala IV = 1 . Criptarea lui 2 , . . . , n cu cheia K n modul CF B da 1 , . . . , n1
(sunt numai n 1 blocuri de text criptat). Se defineste M AC ca fiind eK (n1 ). Sa se
arate ca el coincide cu rezultatul M AC prezentat anterior, folosind modul CBC.
92 CAPITOLUL 5. SISTEME SIMETRICE DE CRIPTARE MODERNE

5.6. Daca o secventa de texte clare 1 , 2 , . . . , n produce prin criptare 1 , 2 , . . . , n , iar


blocul i este transmis gresit (apar erori de canal), sa se arate ca numarul de blocuri care
vor fi decriptate gresit este 1 n modul ECB sau OF B si 2 n modul CBC sau CF B.

5.7. Alice transmite mesajul format din 6 blocuri de cate 64 biti: c1 , c2 , c3 , c4 , c5 , c6 ,


criptate cu DES implementat n modul CF B. Oscar schimba ordinea blocurilor n
c1 , c2 , c4 , c3 , c5 , c6 . Ce mesaje va putea decripta corect Bob ?

5.8. Construiti coduri de autentificare a mesajelor (M AC) capabile sa autentifice mesajele


primite printr-un sistem fluid de criptare. (Indicatie: a se vedea [?], paragraf 9.5.4)

5.9. In urma aplicarii transformarii ByteSub din algoritmul AES s-a obtinut octetul
10010111. Ce octet a intrat n transformarea ByteSub ?

5.10. Dupa transformarea Shif tRow s-a obtinut matricea

00000001 00000000 00000001 00000010



00000000 00000100 00000010 00000001
C=
00000010 00000000 00000000 00000001


00000100 00000001 00000001 00000001

Aceasta matrice este introdusa n transformarea M ixColumn. Ce matrice se obtine ?

5.11. Primele patru coloane ale matricii cheii expandate W sunt

00110001 01011010 01101001 00000010




01100010 00110100 01110010 00000001

10110010 00110010 11100011 00000001


01000100 00110001 10110011 00000000

Calculati a cincea coloana din W .

5.12. Fie b un octet si b = b + 11111111 (complementul lui b). Pentru o cheie fixata, daca
AES cripteaza b n g, va cripta el b n g ?
Capitolul 6

Atacuri asupra sistemelor de criptare


bloc

6.1 Consideratii generale


In acest capitol vom trece n revista principalele tipuri de atac dezvoltate asupra sistemelor
de criptare bloc. Majoritatea lor au fost create initial pentru criptanaliza sistemului DES,
devenind ulterior standarde de securitate pentru toate sistemele de criptare. Tipuri de
criptanaliza mai vechi cum sunt criptanaliza diferentiala sau liniara au generat ulterior
modalitati noi de atac (mixt, boomerang, rectangle etc) pentru anumite tipuri de cripto-
sisteme, adesea semnificativ mai puternice.

6.2 Compromisul spatiu - timp


Este un tip de atac bazat pe un compromis ntre complexitatea spatiu si complexitatea
timp a atacurilor prin forta bruta, care poate fi utilizat destul de eficient n unele atacuri
cu text clar ales.
Aici Oscar va dispune de o pereche (, ) cu = eK (), si cauta sa determine cheia
K.
Nu vom folosi o structura particulara de implementare a unui sistem, dar ne vom referi
n mod implicit la sistemul DES; mai exact, stim ca textele clare si cele criptate sunt de
64 biti, iar cheia are 56 biti.
O cautare exhaustiva consta n a ncerca toate cele 256 chei posibile. Aceasta operatie
nu necesita memorie, dar sunt necesare n medie 255 chei pentru a o gasi pe cea buna.
Sau, fiind dat un text clar , Oscar poate forma anterior (n faza de precalcul) o tabela
cu 256 perechi (k , K), ordonata dupa K = eK (). Atunci cand Oscar obtine mesajul
(criptat din textul clar ), el va cauta n tabela si va afla imediat cheia K. Astfel, aflarea
cheii va necesita un timp de calcul neglijabil (complexitate logaritmica), dar un spatiu de

93
94 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

memorie gigantic si un timp de precalcul important. Aceasta varianta nu aduce nici un


avantaj din punct de vedere al timpului total, pentru aflarea unei singure chei. Avantajul
apare atunci cand este necesara cautarea mai multor chei, deoarece tabela precalculata a
fost construita o singura data.
Compromisul spatiu - timp permite obtinerea unui timp de calcul (precalculul nu se
include) inferior celui unei cautari exhaustive, cu un spatiu de memorie inferior celui nece-
sar retinerii tuturor cheilor. Algoritmul foloseste o functie de reducere R, care micsoreaza
o secventa de 64 biti la una de 56 biti (de exemplu, R poate sterge pur si simplu 8 biti
din secventa initiala).
Fie un text clar de 64 biti; se defineste g(K0 ) = R(eK0 ()) pentru orice secventa K0
de 56 biti (rezultatul g(K0 ) este de asemenea de lungime 56).
Algoritmul mai foloseste doi parametri ntregi pozitivi m, t. In faza de precalcul, Oscar
defineste m secvente arbitrare de 56 biti fiecare, notate X(i, 0), 1 i m. Apoi, folosind
relatia de recurenta
X(i, j) = g(X(i, j 1)), 1 i m, 1 j t,
Oscar determina valorile X(i, j), 1 j t, formand cu ele o matrice Xmt .
Din aceste valori, Oscar pastreaza ntr-o tabela T numai 2m perechi
(X(i, 0), X(i, t)), 1im
(deci sunt memorate numai prima si ultima coloana a matricii X).
In momentul atacului, Oscar obtine textul criptat al textului clar ales de el
(reamintim, este vorba de un atac cu text clar ales). El va cauta cheia K n cele t coloane
ale matricii X, consultand tabela T .
Sa presupunem K = X(i, t j) pentru un j (1 j t) dat (K este n una din cele t
coloane ale lui X). Vom avea g j (K) = X(i, t), si
g j (K) = g j1 (g(K)) = g j1 (R(eK ())) = g j1 (R()).
Sa calculam sirul j (1 j t) definit prin relatia de recurenta
(
R() daca j = 1
j =
g(j1 ) daca 2 j t
Daca K = X(i, t j), vom avea j = X(i, t).
De remarcat ca reciproca nu este adevarata: nu este suficient ca j = X(i, t) pentru a
avea K = X(i, tj), deoarece functia de reducere R nu este injectiva (R reduce un spatiu
de 264 valori n unul de 256 valori, deci fiecare valoare provine n general din 28 = 256
elemente). Trebuie verificata egalitatea = eX(i,tj) (), pentru a decide daca X(i, t j)
este ntr-adevar cheia.
Valoarea X(i, t j) nu este disponibila n memorie, dar ea se poate recalcula n t j
pasi, plecand de la X(i, 0).
Oscar va folosi deci urmatorul algoritm:
6.3. ATACUL MEET-IN-THE-MIDDLE 95

1. 1 R()
2. for j 1 to t do
2.1. if i cu j = X(i, t) then
2.1.1. calculeaza X(i, t j) = g tj (X(i, 0))
2.1.2. if = eX(i,tj) () then K X(i, t j), ST OP
2.2. j+1 g(j )

Analizand probabilitatea de succes a algoritmului, se poate arata ca daca mt2 N =


256 , atunci probabilitatea sa gasim cheia K n cele t coloane ale matricii X este de circa
0, 8mt/N . Coeficientul 0, 8 provine din faptul ca valorile X(i, t) pot sa nu fie distincte. O
sugestie este de a alege m t N 1/3 si de a construi N 1/3 tabele, fiecare cu alta functie
de reducere R. Astfel, spatiul de memorie necesar este de 112 N 2/3 biti (trebuie pastrati
2N 2/3 valori de 56 biti). Timpul de precalcul este liniar O(N ).
Timpul de calcul al atacului este mai dificil de evaluat. De remarcat ca pasul 2.1
poate fi implementat n cel mai rau caz ntr-un timp O(log m), utilizand arbori binari de
cautare. Daca acest pas esueaza (deci nu se gaseste nici o valoare), timpul de calcul este
O(N 2/3 ). Ceilalti pasi care urmeaza cresc acest timp doar cu un factor constant.

6.3 Atacul meet-in-the-middle


Este un atac cu text clar ales, dezvoltat n 1981 de Merkle si Hellman ca raspuns la ideea
unei duble criptari cu doua chei diferite, conform schemei
K1 K2
? ?
m - e x - e - y

Lema 6.1. Pentru un sistem de criptare bloc, o dubla criptare poate fi atacata folosind
O(2n ) operatii si O(2n ) spatiu de memorie, unde n este lungimea cheii.

Demonstratie: Fie (, ) o pereche (text clar, text criptat) obtinuta pe baza schemei de
mai sus.

1. Pentru fiecare din cele 2n chei posibile se calculeaza xi = eKi ();

2. Se stocheaza (xi , Ki ) sortate (sau indexate) dupa xi .

3. Pentru fiecare din cele 2n chei posibile:

(a) Se calculeaza xj = dKj ();


(b) Se cauta in lista creata la pasul anterior o pereche (xi , Ki ) cu xi = xj ;
96 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

4. O pereche de chei posibile este (Ki , Kj );


(deoarece eKi () = dKj (), deci eKj (eKi ()) = ).
Algoritmul se reia cu alte perechi (, ), pana ce perechea de chei folosite este determinata
n mod unic.
Exemplul 6.1. Un atac direct asupra unei duble criptari cu DES ar necesita un timp
de ordin 2112 si un spatiu neglijabil. Daca se foloseste un atac meet-in-the-middle, timpul
va fi 256 iar spatiul 256 . Strategii complementare de genul compromisului spatiu - timp pot
duce la variante de genul: 2p spatiu, 2q timp, unde p + q = 112 ([?]).

6.4 Criptanaliza diferentiala


Unul din cele mai cunoscute atacuri ale DES-ului este criptanaliza diferentiala, introdusa
de Biham si Shamir n 1991 ([?],[?],[?]). Cu toate ca nu da o modalitate practica de
spargere a functiei DES n 16 tururi, ea furnizeaza atacuri eficace pentru variantele de
DES cu un numar redus de runde. De exemplu, un DES cu 8 runde poate fi spart n
cateva minute cu un P C obisnuit. Ulterior, criptanaliza diferentiala a fost extinsa ca
metoda standard de atac pentru toate sistemele de criptare bloc.

6.4.1 Privire generala


Un atac prin criptanaliza diferentiala exploateaza faptul ca anumite diferente dintre texte
clare sa genereze cu probabilitate semnificativa diferente fixate ntre mesajele criptate
corespunzatoare.
Astfel, sa consideram un sistem de criptare pe blocuri de n biti, cu intrarea (textul
clar) = (a1 , a2 , . . . , an ) si iesirea (textul criptat) = (b1 , b2 , . . . , bn ).
Fie 0 si 00 doua blocuri de intrare, iar 0 , respectiv 00 blocurile de iesire cores-
punzatoare. Diferenta dintre bitii de intrare este data de
= 0 00 = (a1 , a2 , . . . an )
unde ai = ai 0 ai 00 , iar ai 0 si ai 00 reprezinta al i-lea bit din 0 , respectiv 00 .
Similar,
= 0 00 = (b1 , b2 , . . . , bn )
este diferenta dintre mesajele de iesire (unde bi = bi 0 bi 00 ).
Intr-un sistem de criptare ideal, probabilitatea ca, fiind data o diferenta de intrare
, sa apara o anumita diferenta de iesire , este 1/2n (unde n este marimea blocului
de criptare).
Criptanaliza diferentiala exploateaza situatia cand pentru o anumita diferenta de in-
trare , o diferenta de iesire apare cu o probabilitate pD semnificativ mai mare decat
1/2n . Perechea (, ) pentru care exista o astfel de situatie se numeste diferentiala.
6.4. CRIPTANALIZA DIFERENTIALA 97

In esenta, criptanaliza diferentiala este un atac cu text clar ales: Oscar alege perechi
de intrari (0 , 00 ), care verifica o anumita diferenta , stiind ca pentru aceasta valoare
, exista o diferentiala (, ).
Cel mai important pas consta n construirea unei diferentiale (, ), folosind bitii
textului clar pentru , si intrarea n ultima runda a sistemului de criptare pentru .
Aceasta se poate realiza examinand diverse diferentiale caracteristice. O diferentiala
caracteristica este o secventa (1 , 2 , . . . , n ) unde (i , i+1 ) este o diferentiala
a rundei i din sistemul de criptare (deci 1 = , n = ).
Pe baza unei diferentiale caracteristice putem exploata informatia care intra n ultima
runda a sistemului, pentru a afla o parte din bitii cheii.
Deci, o prima problema consta n construirea de diferentiale caracteristice. Pentru
aceasta vom examina si exploata diverse particularitati ale S - boxurilor.
Practic, vom considera toate diferentele de intrare si iesire din fiecare S-box, deter-
minand perechile (, ) cu probabilitati mari. Combinand aceste perechi de la o runda
la alta, astfel ca diferentele dintre doua iesiri dintr-o runda sa coincida cu diferentele din-
tre doua intrari n runda urmatoare, vom determina o diferentiala ntre doua texte clare si
intrarile a doua texte n ultima runda. In final, bitii ultimei sub-chei vor dispare (deoarece
sunt folositi n ambele texte si prin diferentiere cu operatia XOR se anuleaza reciproc).

6.4.2 Analiza componentelor unui sistem de criptare


Sa examinam perechile de diferente ale unui S-box.
Vom considera un 4 4 S-box, cu intrarea = (a1 , a2 , a3 , a4 ) si iesirea = (b1 , b2 , b3 , b4 ).

a1 a2 a3 a4

? ? ? ?

4 4 S-box

? ? ? ?
b1 b2 b3 b4
Figura 1: Modelul unui 4 4 S - box

Toate perechile de diferente (, ) ale unui astfel de S - box vor fi examinate;


fixam o diferenta si calculam probabilitatile de aparitie pentru toate diferentele de
iesiri , peste multimea perechilor de intrare (0 , 00 ) cu 0 00 = .
98 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

Deoarece ordinea perechilor nu este relevanta, pentru un 4 4 S-box sunt necesare


doar cele 16 valori posibile ale unei intrari 0 ; a doua intrare 00 va fi calculata cu formula
00 = 0 .
Toata constructia acestei sectiuni va fi exemplificata folosind prima linie a primului
S-box din DES (am considerat cel mai semnificativ bit din notatia hexazecimala ca fiind
cel mai din stanga bit al S-boxului):

Intrare 0 1 2 3 4 5 6 7 8 9 A B C D E F
Iesire E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7

Tabela 1. Reprezentarea (in hexazecimal) a unui S - box


Fiecare pereche (intrare, iesire) poate fi considerata ca un 4 4 S-box cu intrari si
iesiri pe 4 biti.
Putem calcula diferenta de iesire pentru orice pereche de intrare (0 , 00 = 0 ).
De exemplu, Tabela 2 prezinta valorile (binare) pentru , , si valorile pentru
perechile de intrare (, ), unde are valorile
1011 (hex B), 1000 (hex 8) si 0100 (hex 4).

= 1011 = 1000 = 0100


0000 1110 0010 1101 1100
0001 0100 0010 1110 1011
0010 1101 0111 0101 0110
0011 0001 0010 1011 1001
0100 0010 0101 0111 1100
0101 1111 1111 0110 1011
0110 1011 0010 1011 0110
0111 1000 1101 1111 1001
1000 0011 0010 1101 0110
1001 1010 0111 1110 0011
1010 0110 0010 0101 0110
1011 1100 0010 1011 1011
1100 0101 1101 0111 0110
1101 1001 0010 0110 0011
1110 0000 1111 1011 0110
1111 0111 0101 1111 1011
Tabela 2. Perechi de diferente ntr-un S - box

De exemplu, pentru = 0000 si = 1011 avem 0 = = 1011. Iesirea (n


binar) pentru intrarea 0 este, conform Tabelei 1, 0 = 1100 (hex C), deci = 0 =
1110 1100 = 0010, valoare care apare pe coloana a treia din tabela.
6.4. CRIPTANALIZA DIFERENTIALA 99

Analizand Tabela 2, vedem ca numarul aparitiilor lui = 0010 pentru = 1011


(coloana 3) este 8 din 16 valori posibile (deci probabilitate 8/16). Similar, numarul de
aparitii = 1011 pentru = 1000 este 4 (din 16), iar numarul de aparitii ale lui
= 1010 pentru = 0100 este 0 (din 16).
Putem aduna toate datele unui S - box ntr-o tabela de distributie a diferentelor, n
care liniile reprezinta valorile , iar coloanele valorile (toate n hexazecimal).
Revenind la exemplul nostru, tabela de distributie a diferentelor pentru S-boxul din
Tabela 1, este data de Tabela 3:
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 2 0 0 0 2 0 2 4 0 4 2 0 0
2 0 0 0 2 0 6 2 2 0 2 0 0 0 0 2 0
3 0 0 2 0 2 0 0 0 0 4 2 0 2 0 0 4
4 0 0 0 2 0 0 6 0 0 2 0 4 2 0 0 0
5 0 4 0 0 0 2 2 0 0 0 4 0 2 0 0 2
6 0 0 0 4 0 4 0 0 0 0 0 0 2 2 2 2
7 0 0 2 2 2 0 2 0 0 2 2 0 0 0 0 4
8 0 0 0 0 0 0 2 2 0 0 0 4 0 4 2 2
9 0 2 0 0 2 0 0 4 2 0 2 2 2 0 0 0
A 0 2 2 0 0 0 0 0 6 0 0 2 0 0 4 0
B 0 0 8 0 0 2 0 2 0 0 0 0 0 2 0 2
C 0 2 0 0 2 2 2 0 0 0 0 2 0 6 0 0
D 0 4 0 0 0 0 0 4 2 0 2 0 2 0 2 0
E 0 0 2 4 2 0 0 0 6 0 0 0 0 0 2 0
F 0 2 0 0 6 0 0 0 0 4 0 2 0 0 2 0
Tabela 3. Tabela de distributie a diferentelor

Fiecare element al tabelei reprezinta numarul de aparitii ale diferentei de iesire ,


fiind data diferenta de intrare .
Observatia 6.1.
1. Inafara de situatia speciala ( = 0, = 0), cea mai mare valoare din tabela este
8; ea corespunde lui = B si = 2. Deci, pentru o pereche de intrari arbitrare
cu = B, probabilitatea ca = 2 este 8/16 = 1/2.
2. Cea mai mica valoare din tabela este 0; n acest caz, probabilitatea de aparitie a
valorii pentru corespunzator, este 0.
3. Suma elementelor pe fiecare linie este 2n = 16; similar, suma pe fiecare coloana este
tot 2n = 16.
100 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

4. Toate valorile din tabel sunt numere pozitive pare; motivul este acela ca o pereche
de valori de intrare/iesire (0 , 00 ) are aceeasi diferenta ca si perechea (00 , 0 ).

5. Pentru un S - box injectiv, o diferenta de intrare = 0 va duce la o diferenta de


iesire = 0.
Ca o consecinta, prima linie si prima coloana vor fi 0, cu exceptia intersectiei lor,
unde va fi valoarea 2n = 16.

Daca s-ar putea construi un S - box ideal, care sa nu ofere nici o informatie de
tip diferential ntre intrari si iesiri, atunci toate valorile din tabela sa de distributie a
diferentelor vor fi egale cu 1, iar probabilitatea de aparitie a unei diferente atunci
cand diferenta de intrare este , va fi 1/2n = 1/16.
Totusi pe baza proprietatilor aratate n Observatia ??, un astfel de S - box ideal nu
este posibil.

6.4.3 Retea substitutie - permutare


O retea substitutie - permutare (Substitution Permutation Network SP N ) este un sistem
de criptare bloc, format din mai multe runde, fiecare runda continand o substitutie si o
permutare. Cheia este expandata n mod similar sistemelor uzuale si fiecare cheie de
runda va fi XOR-ata cu mesajul la nceputul fiecarei runde.
Un SP N pastreaza proprietatile generale folosite n construirea sistemelor de criptare
uzuale (inclusiv DES si AES).
In prezentarea criptanalizei diferentiale (si apoi a celei liniare) vom utiliza un SP N
care cripteaza un text clar de 16 biti ntr-un mesaj de 16 biti. Cheia are de asemenea 16
biti si este expandata n 5 sub-chei de runda, de cate 16 biti fiecare. La fiecare runda, cei
16 biti de intrare sunt XOR - ati cu cheia de runda, apoi sunt separati n patru blocuri
de cate 4 biti, iar fiecare bloc trece prin cate un S - box. La sfarsitul rundei, cei 16 biti
sunt permutati.
In cazul nostru, vom folosi acelasi S - box pentru toate blocurile si toate rundele;
anume S - boxul definit de Tabela 1 (prima linie din S1 - boxul definit n DES).
Permutarea utilizata este aceiasi pentru toate rundele:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16

Tabela 4: O permutare utilizata n construirea unui SP N


6.4. CRIPTANALIZA DIFERENTIALA 101

Figura 2 prezinta schematic structura unui SP N :

... text clar


m1 ... m16

XOR cu sub-cheia K1

S11 S12 S13 S14 runda 1

XOR cu sub-cheia K2

S21 S22 S23 S24 runda 2

XOR cu sub-cheia K3

S31 S32 S33 S34


runda 3






XOR cu sub-cheia K4

runda 4
S41 S42 S43 S44

XOR cu sub-cheia K5

y1 ... text criptat ... y16

Figura 2: Structura generala a unui SPN.


102 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

6.4.4 Diferentiala caracteristica ntr-un SP N


In aceasta sectiune vom construi o modalitate de atac prin criptanaliza diferentiala asupra
unui SP N , avand ca scop aflarea unui set de biti din sub-cheia folosita n ultima runda.
Sa consideram SP N -ul din Figura 2.
Vom nota cu Ui intrarea n S - boxurile din runda i, iar cu Vi iesirea din S - boxuri
n runda i.
Sa ncepem cu doua texte clare, a caror diferenta este

U1 = [0000 1011 0000 0000]

Deci singurul S - box activ n prima runda este S12 (celelalte S - boxuri sunt inactive:
intrarea este 0, deci si iesirea va fi tot 0). Folosind Tabela 2, obtinem diferenta de iesire

V1 = [0000 0010 0000 0000]

Altfel spus,
S12 : = B16 = 1011 = = 216 = 0010 cu probabilitate 8/16 = 1/2.
Urmarind acum permutarea de la sfarsitul primei runde, gasim mesajul de intrare n
S - boxurile celei de-a doua runde:

U2 = [0000 0000 0100 0000]

cu probabilitate 1/2.
In a doua runda, singurul S - box activ este S23 . Vom avea perechea de diferente
S23 : = 416 = 0100 = = 616 = 0110 cu probabilitate 6/16 = 3/8.
Am obtinut deci iesirea

V2 = [0000 0000 0110 0000]

iar permutarea de la sfarsitul rundei a doua va da

U3 = [0000 0010 0010 0000]

cu probabilitate 3/8.
In a treia runda sunt active doua S - boxuri: S32 si S33 :
S32 : = 216 = 0010 = = 516 = 0101 cu probabilitate 6/16 = 3/8,
S33 : = 216 = 0010 = = 516 = 0101 cu probabilitate 6/16 = 3/8.
Deci, iesirea din S - boxurile din runda a treia este

V3 = [0000 0101 0101 0000]

iar intrarea n runda a patra (dupa efectuarea permutarii) este

U4 = [0000 0110 0000 0110]


6.4. CRIPTANALIZA DIFERENTIALA 103

Cu alte cuvinte,

U1 = [0000 1011 0000 0000] = V3 = [0000 0101 0101 0000]

si
V3 = [0000 0101 0101 0000] = U4 = [0000 0110 0000 0110]
Rezulta

U1 = [0000 1011 0000 0000] = U4 = [0000 0110 0000 0110]

Tabela 3 de distributie a diferentelor poate conduce la ideea unor probabilitati condi-


tionale independente (notiune fara utilizare n matematica, dar extrem de intuitiva n
aceasta situatie):
P r[|] = (, )
Pe baza acestei relatii, diferentialele pot fi compuse. Astfel, pentru cazul studiat mai sus,
vom avea
1 3 3 3 27
(0000 1011 0000 0000, 0000 0110 0000 0110) = =
2 8 8 8 1024
Altfel spus, diferentiala caracteristica (0000 1011 0000 0000, 0000 0110 0000 0110) apare
cu probabilitatea 27/1024.
Sa vedem cum pot fi extrasi acum bitii din cheie, pe baza acestei informatii.

6.4.5 Extragerea bitilor din cheie


Dupa ce am obtinut diferentiala caracteristica a rundelor, putem construi un atac din
care sa rezulte o parte din bitii care formeaza cheia de criptare.
Intr-un sistem de criptare bloc cu N runde, vom ataca runda N 1 . Astfel, n cazul
retelei SP N , vom putea extrage biti din sub-cheia K5 atacand a patra runda.
Pentru o decriptare a textului obtinut dupa ultima runda, trebuie sa mergem n sens
invers: anume, realizam un XOR ntre textul criptat si sub-cheia ultimei runde care este
influentata de diferentialele nenule iar apoi trecem datele n sens invers prin S-boxuri.
Operatia XOR o realizam folosind toate valorile posibile ale sub-cheii.
Rezumand, vom face un XOR ntre textul criptat cu toate sub-cheile posibile, dupa
care vom aplica inversele S-boxelor.
Aceasta cautare a cheii poate fi mult redusa daca luam numai perechile bune
(perechile pentru care se obtin diferentiale caracteristice).
De exemplu, o pereche buna a fost obtinuta n sectiunea precedenta: ea are U41 =
U43 = 0000 iar U42 si U44 contin diferentiale nenule (Uij reprezinta intrarea n S - boxul
j din runda i).
104 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

Decriptarea este obtinuta pentru toate perechile de mesaje criptate care corespund
perechilor de texte clare avand diferenta de intrare fixata .
Figura 3 traseaza modalitatea de decriptare pentru diferentiala caracteristica detaliata
n sectiunea precedenta.

= [0000 1011 0000 0000]

S11 S12 S13 S14

S21 S22 S23 S24





S31 S32 S33 S34


XXX
XXX aa
  XXX aa
 XXX a


 XXX aaa
X

? ? ? ?
U4,5 ,...,U4,8 U4,13 ,...U4,16
S41 S42 S43 S44

K5,5 , . . . , K5,8 K5,13 , . . . , K5,16

Figura 3: Diferentiala caracteristica, cu ca diferenta de intrare


6.4. CRIPTANALIZA DIFERENTIALA 105

Pentru fiecare sub-cheie posibila, ai carei biti sunt influentati de diferentele nenule
din diferentiale, definim cate un counter. Acesti counteri sunt incrementati atunci cand
intrarea n ultima runda coincide cu valoarea prevazuta de diferentiala caracteristica.
In final, sub-cheia cu valoare maxima a counterului atasat va fi considerata drept cea
corecta; restul bitilor din sub-cheie vor fi gasiti cu o cautare prin forta bruta.
In exemplul din Figura 2, diferentiala caracteristica a influentat S - boxurile S42 si S44
din ultima runda; deci pentru orice pereche de mesaje criptate ncercam toate cele
256 variante pentru [K5,5 . . . K5,8 , K5,13 . . . K5,16 ], si de cate ori diferenta la intrarea n
ultima runda determinata de decriptare este

U4 = [0000 0110 0000 0110]

va fi incrementat counterul asociat.

6.4.6 Criptanaliza diferentiala pentru DES


Intr-un astfel de atac se ignora permutarea initiala IP si inversa sa (ele nu joaca nici un
rol n criptanaliza). Ne vom margini la un DES restrans pe n (n 16) runde.
Deci textul clar este L0 R0 , iar cel criptat Ln Rn (vom ignora de asemenea inversarea
finala dintre Ln si Rn ).
Pentru criptanaliza diferentiala vom considera doua texte clare L0 R0 , L0 R0 si textele
criptate corespunzatoare Ln Rn respectiv Ln Rn .
Diferentele sunt L0 0 R0 0 = L0 R0 L0 R0 si Ln 0 Rn 0 = Ln Rn Ln Rn .

Definitia 6.1. Fie Sj (1 j 8) un S - box din sistemul de criptare DES. Pentru


orice pereche (Bj , Bj ) de siruri de 6 biti, vom defini XOR-ul de intrare pentru Sj prin
Bj 0 = Bj Bj , iar XOR-ul de iesire prin Sj (Bj ) Sj (Bj ).

De remarcat ca un XOR de intrare este o secventa de 6 biti, iar un XOR de iesire


este o secventa de 4 biti.

Definitia 6.2. Pentru orice Bj 0 Z26 se noteaza (Bj 0 ) multimea perechilor (Bj , Bj )
care prin XOR dau B 0j .

Observatia 6.2.

O multime (Bj 0 ) contine 26 = 64 elemente;

(Bj 0 ) = {(Bj , Bj Bj 0 )| Bj Z26 }.

Pentru fiecare pereche din (Bj 0 ) vom calcula XOR-ul de iesire al lui Sj si construim
o tabela de distributii ale valorilor obtinute (sunt 64 iesiri pe un spatiu de 24 = 16 valori
posibile). Pe aceasta tabela se va baza atacul de criptanaliza diferentiala.
106 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

Exemplul 6.2. Sa consideram primul S - box S1 si XOR-ul de intrare 110100. Vom


avea:

(110100) = {(000000, 110100), (000001, 110101), . . . , (111111, 001011)}.

Pentru fiecare pereche din (110100) vom calcula XOR-ul de iesire al lui S1 . De exemplu,
S1 (000000) = E16 = 1110, S1 (110100) = 916 = 1001 deci XOR-ul de iesire S1 al perechii
(000000, 110100) este 0111.
Efectuand acest calcul pentru toate cele 64 perechi din (110100), vom obtine distribu-
tia urmatoare a XOR-urilor de iesire pentru S1 :

0000 0001 0010 0011 0100 0101 0110 0111


0 8 16 6 2 0 0 12

1000 1001 1010 1011 1100 1101 1110 1111


6 0 0 0 0 8 0 6

In Exemplul ?? au aparut numai 8 din cele 16 valori de iesire posibile. In general,


daca se fixeaza un S - box Sj si un XOR de intrare diferit de 000000, se constata ca vor
apare aproximativ 75 80 % din valorile posibile de iesire.

Definitia 6.3. Pentru 1 j 8 si secventele Bj 0 , Cj 0 de 6 respectiv 4 biti, 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 )).

Distributia data n Exemplul ?? da valorile N1 (110100, C1 0 ), C1 0 Z24 . Toate aceste


valori se gasesc n Tabela 5.

Pentru fiecare din cele 8 S - boxuri exista 64 XOR-uri de intrare posibile; deci n total
vor fi 512 date de distribuit, lucru usor de realizat cu un calculator.
Reamintim ca intrarea ntr-un S - box la runda i este B = E J, unde E = E(Ri1 )
este rezultatul expandarii lui Ri1 , iar J = Ki este un subsir reordonat al cheii K. XOR-ul
de intrare (al celor 8 S - boxuri) este deci

B B = (E J) (E J) = E E .

De remarcat ca XOR-urile de intrare nu depind de sub-cheia J, pe cand XOR-urile de


iesire depind.
6.4. CRIPTANALIZA DIFERENTIALA 107

XOR de iesire intrari posibile


0000
0001 000011, 001111, 011110, 011111, 101010, 101011, 110111, 111011
0010 000100, 000101, 001110, 010001, 010010, 010100, 011010, 011011
100000, 100101, 010110, 101110, 101111, 110000, 110001, 111010
0011 000001, 000010, 010101, 100001, 110101, 110110
0100 010011, 100111
0101
0110
0111 000000, 001000, 001101, 010111, 011000, 011101, 100011, 101001
101100, 110100, 111001, 111100
1000 001001, 001100, 011001, 101101, 111000, 111101
1001
1010
1011
1100
1101 000110, 010000, 010110, 011100, 100010, 100100, 101000, 110010
1110
1111 000111, 001010, 001011, 110011, 111110, 111111
Tabela 5: Distributia valorilor intrare/iesire pentru S1

Sa detaliem pe grupuri de cate 6 biti, cuvintele cu care se lucreaza:

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

In mod similar se scriu B si E . Sa presupunem acum ca se stiu valorile Ej si Ej pentru


un j (1 j 8) dat, precum si valoarea XOR de iesire Cj 0 = Sj (Bj ) Sj (Bj ) a lui Sj .
Vom avea
Ej Jj INj (Ej 0 , Cj 0 )
unde Ej 0 = Ej Ej .
Fie multimea testj definita astfel:

testj (Ej , Ej , Cj 0 ) = {Bj Ej | Bj INj (Ej 0 , Cj 0 )}

(s-au luat toate XOR-urile lui Ej cu elemente din INj (Ej 0 , Cj 0 )).
Din aceste consideratii rezulta imediat teorema:

Teorema 6.1. Daca Ej , Ej sunt subsecvente construite pentru intrarea n S - boxul Sj ,


iar Cj 0 este XOR-ul de iesire al lui Sj , atunci bitii sub-cheii Jj apar n testj (Ej , Ej , Cj 0 ).

Cum se poate remarca, exista exact Nj (Ej 0 , Cj 0 ) secvente de 6 biti n testj (Ej , Ej , Cj 0 );
valoarea corecta Jj este una din acestea.
108 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

Exemplul 6.3. Sa consideram E1 = 000001, E1 = 110101, C1 0 = 1101. Deoarece


N1 (110100, 1101) = {000110, 010000, 010110, 011100, 100010, 101000, 110010} are 8 ele-
mente, exista 8 secvente posibile pentru J1 , cumulate n test1 (000001, 110101, 1101) =
{000111, 010001, 010111, 011101, 100011, 100101, 101001, 110011}.
Daca se ia un alt triplet (E1 , E1 , C1 0 ), vom obtine alta multime test1 cu valori pentru
J1 , deci valoarea corecta se va gasi n intersectia lor.

Atacul unui DES definit pe trei runde


Sa vedem cum se aplica aceste idei pentru un DES construit pe 3 runde. Incepem cu o
pereche de texte clare L0 R0 si L0 R0 , criptate n L3 R3 respectiv L3 R3 . Vom avea
R3 = L2 f (R2 , K3 ) = R1 f (R2 , K3 ) = L0 f (R0 , K1 ) f (R2 , K3 ).
Constructia pentru R3 este similara. Deci
R3 0 = L0 0 f (R0 , K1 ) f (R0 , K1 ) f (R2 , K3 ) f (R2 , K3 ).
Sa presupunem ca s-a ales R0 = R0 , deci R0 0 = 00 . . . 0.
Atunci f (R0 , K1 ) = f (R0 , K1 ) si deci R3 0 = L0 0 f (R2 , K3 ) f (R2 , K3 ).
R3 0 se poate calcula pe baza textelor criptate, iar L0 0 pe baza textelor clare; deci se
poate determina f (R2 , K3 ) f (R2 , K3 ) = R3 0 L0 0 .
Avem f (R2 , K3 ) = P (C), f (R2 , K3 ) = P (C ) unde C respectiv C sunt iesirile cores-
punzatoare din cele 8 S - boxuri (reamintim, P este o permutare fixata din descrierea
sistemului DES). Deci P (C) P (C ) = R3 0 L0 , de unde

C 0 = C C = P 1 (R3 0 L0 0 ).

Acesta este XOR-ul de iesire din cele opt S - boxuri, dupa a treia runda.
R2 = L3 si R2 = L3 sunt cunoscute (componente ale textelor criptate); deci se poate
calcula
E = E(L3 ), E = E(L3 )
folosind functia de expansiune E. Aceste valori sunt intrarile n S - boxuri la runda a
treia. Se cunosc deci E, E , C 0 la a treia runda si se poate trece asa cum am vazut la
constructia multimilor test1 , test2 , . . . , test8 de valori posibile pentru J1 , J2 , . . . , J8 .
Un algoritm pentru aceasta metoda este formalizat mai jos. Atacul foloseste mai multe
triplete E, E , C 0 . Se utilizeaza opt tabele de valori si se determina astfel cei 48 biti ai
subcheii K3 de la a treia runda. Cheia de 56 biti se calculeaza apoi printr-o cautare
exhaustiva a celor 28 = 256 posibilitati pentru cei 8 biti ramasi necunoscuti.

Intrare: L0 R0 , L0 R0 , L3 R3 , L3 R3 cu R0 = R0 .
1. C 0 P 1 (R3 0 L0 0 )
2. E E(L3 ), E E(L3 )
3. for j := 1 to 8 do testj (Ej , Ej , Cj ).
6.5. CRIPTANALIZA LINIARA 109

6.5 Criptanaliza liniara


Criptanaliza liniara este mpreuna cu cea diferentiala unul din atacurile de baza
utilizate contra sistemelor de criptare bloc.
Autorul ei este Mitsuru Matsui, care a aplicat-o prima oara n 1992, ca un atac asupra
sistemului de criptare FEAL ([?]). Ulterior, Matsui a publicat un atac similar asupra
sistemului DES, probabil prima criptanaliza experimentala prezentata public asupra unui
sistem de criptare bloc ([?],[?],[?]).
Practic, un atac asupra sistemului DES nu este nsa viabil, el necesitand 243 texte
clare cunoscute.
Ulterior au fost construite diverse rafinari ale atacurilor prin criptanaliza liniara,
folosind aproximari liniare multiple sau aproximari locale cu expresii neliniare.

6.5.1 Modalitatea generala de atac


Criptanaliza liniara este un atac cu text clar ales si foloseste o relatie liniara de aproximare
pentru descrierea sistemului de criptare bloc. Fiind dat un numar suficient de mare de
perechi (text clar, text criptat) se pot obtine informatii despre cheie, cu o probabilitate
acceptabila.
Vom ilustra acest atac folosind aceiasi structura SP N definita n Figura 2 pentru
criptanaliza difererentiala. El este construit plecand de la prima linie din S1 - boxul DES
(privita ca un 4 4 S - box) si permutarea definita n Tabela 4.
Ideea de baza este de a aproxima statistic functionarea unei portiuni din sistemul de
criptare printr-o expresie liniara (fata de operatia XOR). O astfel de expresie este de
forma
ai1 ai2 . . . aiu bj1 bj2 . . . bjv = 0 (1)
unde ai reprezinta al i-lea bit al intrarii = (a1 , a2 , . . .), iar bj reprezinta al j-lea bit
al iesirii = (b1 , b2 , . . .).
Scopul criptanalizei liniare este de a determina expresii de forma (1), cu o probabilitate
mare sau mica de aparitie (deci cat mai diferita de 1/2).
Evident, rezistenta unui sistem de criptare la criptanaliza liniara este cu atat mai mare
cu cat astfel de relatii sunt mai putine. Existenta unei relatii de tip (1) cu probabilitate
mare sau mica denota o abilitate scazuta a sistemului de criptare privind difuzia datelor
criptate.
In general, daca alegem aleator valori pentru u + v biti si le plasam ntr-o relatie de
tip (1), probabilitatea ca relatia sa fie verificata va fi 1/2. Cu cat o astfel de probabilitate
va fi mai departata de 1/2, cu atat va fi mai usor pentru criptanalist sa atace sistemul
folosind relatia respectiva.
110 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

Daca o expresie de tip (1) are loc cu probabilitate pL pentru texte clare si texte criptate
alese aleator, vom nota tendinta1 relatiei respective prin L = pL 1/2.
Cu cat magnitudinea tendintei |pL 1/2| este mai mare, cu atat mai putine texte clare
va avea nevoie un atac ca sa reuseasca.
Observatia 6.3. Daca pL = 1, atunci expresia liniara (1) reprezinta n totalitate com-
portarea sistemului de criptare; deci acesta nu va asigura nici o securitate.
Daca pL = 0, atunci (1) reprezinta o relatie afina n sistemul de criptare, de asemenea
indiciul unei slabiciuni catastrofice.
Daca operatia de adunare folosita este mod 2 (deci XOR), atunci o functie afina este
complementara unei functii liniare. Atat aproximarile liniare cat si cele afine, indicate de
pL > 1/2 respectiv pL < 1/2, sunt folosite n egala masura de criptanaliza liniara.
In mod natural apare ntrebarea:
Cum pot fi gasite expresii statistic liniare (deci utilizabile n criptanal-
iza liniara) ?
Evident, problema se pune relativ la componenta neliniara a sistemelor de criptare, deci
relativ la S - boxuri. Cand evaluam proprietatile neliniare ale unui S - box, este posibil sa
gasim aproximari liniare ntre seturi de biti de intrare si de iesire din S - box. Ulterior, este
posibil sa concatenam astfel de aproximari liniare ale diverselor S - boxuri, astfel ncat
sa eliminam bitii intermediari (aflati n interiorul sistemului de criptare) si sa obtinem o
expresie liniara cu tendinta semnificativa ntre seturi de biti din textul clar si biti de
intrare n ultima runda.

6.5.2 Lema Piling-Up


Fie X1 , X2 doua variabile aleatoare. Relatia X1 X2 = 0 este o expresie liniara, echiva-
lenta cu X1 = X2 . Similar, X1 X2 = 1 este o expresie afina echivalenta cu X1 6= X2 .
Sa consideram o probabilitate definita
(
p1 , daca i = 0
P r[X1 = i] =
1 p1 daca i = 1
si (
p2 , daca i = 0
P r[X2 = i] =
1 p2 daca i = 1
Daca cele doua variabile aleatoare sunt independente, atunci


p 1 p2 , daca i = 0, j =0
p1 (1 p2 ), daca i = 0, j =1


P r[X1 = i, X2 = j] =

(1 p1 )p2 , daca i = 1, j =0
(1 p1 )(1 p2 ), daca i = 1, j =1

1
n engleza bias.
6.5. CRIPTANALIZA LINIARA 111

si se poate arata imediat ca


P r[X1 X2 = 0] = P r[X1 = X2 ] = P r[X1 = 0, X2 = 0] + P r[X1 = 1, X2 = 1] =
p1 p2 + (1 p1 )(1 p2 )
Pentru a simetriza formulele, introducem o noua variabila numita tendinta definita
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. (Piling - up): Fie X1 , X2 , . . . Xn variabile aleatoare independente si pentru
1 i1 < i2 < . . . < ik n, fie i1 ,i2 ,...ik tendinta variabilei aleatoare Xi1 Xi2 . . . Xik .
Atunci
k
i1 ,i2 ,...ik = 2k1
Y
ij .
j=1
sau echivalent:
k
P r[X1 . . . Xk = 0] = 1/2 + 2k1
Y
i
i=1

Demonstratie. Prin inductie dupa k. Pentru k = 1 egalitatea este banala. Pentru k = 2


se verifica usor relatia i1 ,i2 = 2i1 i2 .
Presupunem egalitatea adevarata pentru k = p si sa o aratam pentru k = p + 1. Din
p
faptul ca tendinta lui Xi1 . . . Xip este 2p1
Y
ij rezulta
j=1
p
1 p1
Y
P r[Xi1 . . . Xip = 0] = + 2 ij si
2 j=1
p
1
P r[Xi1 . . . Xip = 1] = 2p1
Y
ij
2 j=1
De aici putem calcula

P r[Xi1 . . .
Xip Xip+1 = 0] =
p p p+1
1 1 1 1 1
   
+ 2p1 p1
ip+1 = + 2p
Y Y Y
ij + ip+1 + 2 ij ij .
2 j=1 2 2 j=1 2 2 j=1

Corolarul 6.1. Fie i1 ,i2 ,...,ik tendinta variabilei aleatoare Xi1 . . . Xik .

1. Daca j cu ij = 0 atunci i1 ,i2 ,...,ik = 0.

2. Daca ij = 1/2, (j = 1, . . . , k) atunci i1 ,i2 ,...,ik = 1/2.

Exemplul 6.4. Sa consideram patru variabile aleatoare independente X1 , X2 , X3 , X4 . Fie


P r[X1 X2 = 0] = 1/2 + 1,2 si P r[X2 X3 = 0] = 1/2 + 2,3 .
112 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

Suma X1 X3 poate fi obtinuta adunand X1 X2 cu X2 X3 . Deci

P r[X1 X3 = 0] = P r[(X1 X2 ) (X2 X3 ) = 0].

Deci prin combinarea expresiilor liniare se vor obtine expresii liniare noi.
Considerand ca variabilele aleatoare X1 X2 si X2 X3 sunt independente, putem
aplica lema Piling - Up, pentru a determina

P r[X1 X3 = 0] = 1/2 + 21,2 2,3

Deci 1,3 = 21,2 2,3 .

6.5.3 Relatii de aproximare a S - boxurilor


Sa folosim S - boxul 4 4 definit de Figura 1.
Vom lua ca exemplu expresia liniara a2 a3 b1 b3 b4 = 0 sau echivalent
a2 a3 = b1 b3 b4 , unde (a1 , a2 , a3 , a4 ) este reprezentarea n binar a intrarii din
Figura 1, iar (b1 , b2 , b3 , b4 ) este reprezentarea binara a iesirii. Aplicand la intrare toate
cele 24 = 16 valori posibile si examinand valorile de iesire corespunzatoare, se poate
observa (din Tabela 6) ca expresia este verificata pentru 12 din cele 16 cazuri.
Deci tendinta de probabilitate este 12/16 1/2 = 1/4.

(a1 , a2 , a3 , a4 ) (b1 , b2 , b3 , b4 ) a2 a3 b1 b3 b4 a1 a4 a3 a4 b1 b4
(0, 0, 0, 0) (1, 1, 1, 0) 0 0 0 0 1
(0, 0, 0, 1) (0, 1, 0, 0) 0 0 1 1 0
(0, 0, 1, 0) (1, 1, 0, 1) 1 0 0 1 0
(0, 0, 1, 1) (0, 0, 0, 1) 1 1 1 0 1
(0, 1, 0, 0) (0, 0, 1, 0) 1 1 0 0 0
(0, 1, 0, 1) (1, 1, 1, 1) 1 1 1 1 0
(0, 1, 1, ) (1, 0, 1, 1) 0 1 0 1 0
(0, 1, 1, 1) (1, 0, 0, 0) 0 1 1 0 1
(1, 0, 0, 0) (0, 0, 1, 1) 0 0 1 0 1
(1, 0, 0, 1) (1, 0, 1, 0) 0 0 0 1 1
(1, 0, 1, 0) (0, 1, 1, 0) 1 1 1 1 0
(1, 0, 1, 1) (1, 1, 0, 0) 1 1 0 0 1
(1, 1, 0, 0) (0, 1, 0, 1) 1 1 1 0 1
(1, 1, 0, 1) (1, 0, 0, 1) 1 0 0 1 0
(1, 1, 1, 0) (0, 0, 0, 0) 0 0 1 1 0
(1, 1, 1, 1) (0, 1, 1, 1) 0 0 0 0 1

Tabela 6: Exemple de aproximari liniare ale unui S - box


6.5. CRIPTANALIZA LINIARA 113

Similar, pentru relatia a1 a4 = b2 tendinta de probabilitate este 0, iar pentru a3 a4 =


b1 b4 tendinta este 2/16 1/2 = 3/8.
In general se pot construi 28 = 256 expresii liniare cu (a1 , a2 , a3 , a4 ) si (b1 , b2 , b3 , b4 ).
Pentru fiecare din ele se poate da o reprezentare uniforma de tipul:
4 4
! !
M M
xi ai y i bi
i=1 i=1

unde xi , yi {0, 1}, (1 i 4) iar operatiile folosite sunt AN D () si XOR ().


Vectorii binari (x1 , x2 , x3 , x4 ) numiti sume de intrare si (y1 , y2 , y3 , y4 ) (sume de iesire)
vor fi codificati prin cifre hexazecimale.
Astfel, fiecare din cele 256 expresii liniare se va scrie n mod unic ca o pereche de doua
cifre hexazecimale.
a1 a2 a3 a4 b 1 b 2 b 3 b 4
0 0 0 0 1 1 1 0
0 0 0 1 0 1 0 0
0 0 1 0 1 1 0 1
0 0 1 1 0 0 0 1
0 1 0 0 0 0 1 0
0 1 0 1 1 1 1 1
0 1 1 0 1 0 1 1
0 1 1 1 1 0 0 0
1 0 0 0 0 0 1 1
1 0 0 1 1 0 1 0
1 0 1 0 0 1 1 0
1 0 1 1 1 1 0 0
1 1 0 0 0 1 0 1
1 1 0 1 1 0 0 1
1 1 1 0 0 0 0 0
1 1 1 1 0 1 1 1
Exemplul 6.5. Expresia a1 a4 b2 va avea suma de intrare (1, 0, 0, 1) care este 9 n
hexazecimal, iar suma de iesire este (0, 1, 0, 0), care este 4 n hexazecimal. Deci perechea
atasata variabilei este (9, 4).
Pentru o expresie avand suma de intrare x = (x1 , x2 , x3 , x4 ) si suma de iesire y =
(y1 , y2 , y3 , y4 ), fie NL (x, y) numarul octetilor binari (x1 , x2 , x3 , x4 , y1 , y2 , y3 , y4 ) cu
4 4
! !
M M
x i ai y i bi = 0
i=1 i=1

Tendinta unei astfel de expresii (alese aleator) este


NL (x, y) 8
(x, y) = .
16
114 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

O enumerare completa a tuturor tendintelor pentru S - boxul folosit de sistemul nostru


de criptare, este data de tabela de aproximari liniare (pentru a evita fractiile, nu s-a
efectuat mpartirea la 16):

0 1 2 3 4 5 6 7 8 9 A B C D E F
0 +8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 2 2 0 0 2 +6 +2 +2 0 0 +2 +2 0 0
2 0 0 2 2 0 0 2 2 0 0 +2 +2 0 0 6 +2
3 0 0 0 0 0 0 0 0 +2 6 2 2 +2 +2 2 2
4 0 +2 0 2 2 4 2 0 0 2 0 +2 +2 4 +2 0
5 0 2 2 0 2 0 +4 +2 2 0 4 +2 0 2 2 0
6 0 +2 2 +4 +2 0 0 +2 0 2 +2 +4 2 0 0 2
7 0 2 0 +2 +2 4 +2 0 2 0 +2 0 +4 +2 0 +2
8 0 0 0 0 0 0 0 0 2 +2 +2 2 +2 2 2 6
9 0 0 2 2 0 0 2 2 4 0 2 +2 0 +4 +2 2
A 0 +4 2 +2 4 0 +2 2 +2 +2 0 0 +2 +2 0 0
B 0 +4 0 4 +4 0 +4 0 0 0 0 0 0 0 0 0
C 0 2 +4 2 2 0 +2 0 +2 0 +2 +4 0 +2 0 2
D 0 +2 +2 0 2 +4 0 +2 4 2 +2 0 +2 0 0 +2
E 0 +2 +2 0 2 4 0 +2 2 0 0 2 4 +2 2 0
F 0 2 4 2 2 0 +2 0 0 2 +4 2 2 0 +2 0
Tabela 7: Tabela de aproximari liniare
Exemplul 6.6. Tendinta relatiei liniare a3 a4 = b1 b4 (intrare hex 3 si iesire hex 9) este
6/16 = 3/8; deci probabilitatea ca aceasta relatie liniara sa aiba loc este 1/2 3/8 =
1/8.
Din constructia de mai sus se pot obtine imediat cateva proprietati:
Probabilitatea ca pentru o intrare 0 sa obtinem o anumita suma nevida de biti de
iesire este 1/2 (deoarece pentru un S - box bijectiv, orice combinatie liniara de biti
de iesire trebuie sa contina un numar egal de 0 si 1).
Daca suma bitilor de iesire este 0, atunci suma bitilor de intrare este 0; deci o
tendinta +1/2 si o valoare +8 n Tabela 7. In consecinta, prima linie din Tabela 7
este 0, cu exceptia primului element. Aceeasi proprietate o are si prima coloana.
Suma elementelor pe o linie sau coloana este 8 (usor de verificat).

6.5.4 Construirea aproximarilor liniare pentru un sistem bloc


Odata ce au fost stabilite aproximari liniare pentru S - boxurile unui SP N , putem merge
mai departe, determinand o aproximare liniara de forma (1) pentru ntreg sistemul de
6.5. CRIPTANALIZA LINIARA 115

criptare bloc. Aceasta se va realiza prin concatenarea aproximarilor liniare ale S -boxurilor
consecutive.
Dupa ce s-a obtinut o aproximare liniara bazata pe biti din textul clar si biti care intra
n ultima runda a criptarii, vom putea ataca sistemul gasind un sebset de biti din cheia
folosita n ultima runda.
Ca si la criptanaliza diferentiala, vom ilustra acest procedeu printr-un exemplu.
Sa consideram conform Figurii 4 aproximari liniare pentru S12 , S22 , S32 si S34 .
Anume:
S12 : a1 a3 a4 = b2 cu probabilitate 12/16 si tendinta +1/4;
S22 : a2 = b2 b4 cu probabilitate 4/16 si tendinta 1/4;
S32 : a2 = b2 b4 cu probabilitate 4/16 si tendinta 1/4;
S34 : a2 = b2 b4 cu probabilitate 4/16 si tendinta 1/4.
Reamintim, Ui (Vi ) va reprezenta un bloc de 16 biti care formeaza intrarea (iesirea)
din S - boxuri la runda i, iar Ui,j (Vi,j ) va representa al j-lea bit din blocul Ui (Vi ) (bitii
sunt numerotati de la 1 la 16).
Similar, Ki va reprezenta sub-cheia care se combina prin XOR cu bitii de intrare n
runda i (o exceptie: sub-cheia K5 se combina prin XOR cu bitii de iesire din runda 4).
Deci U1 = P K1 unde P = (P1 , . . . , P16 ) reprezinta textul clar (de 16 biti). Folosind
aproximarea liniara de la prima runda, avem
V1,6 = U1,5 U1,7 U1,8 = (P5 K1,5 ) (P7 K1,7 ) (P8 K1,8 ) (2)
cu probabilitate 3/4.
Aproximarea din runda 2 va da relatia

V2,6 V2,8 = U2,6

cu probabilitate 1/4. Deoarece U2,6 = V1,6 K2,6 , putem gasi o aproximare de forma

V2,6 V2,8 = V1,6 K2,6

cu probabilitate 1/4.
Combinand aceasta relatie cu (2) (care are loc cu probabilitate 3/4), se obtine
V2,6 V2,8 P5 P7 P8 K1,5 K1,7 K1,8 K2,6 = 0 (3)
cu probabilitate 1/2 + 2(3/4 1/2)(1/4 1/2) = 3/8 (deci o tendinta 1/8) obtinuta
prin aplicarea Lemei ??.

Observatia 6.4. In toata aceasta sectiune folosim prezumtia ca aproximarile S - boxurilor


sunt independente; ipotetic, aceasta ipoteza nu este foarte corecta, dar practic ea este
valabila pentru aproape toate sistemele de criptare bloc.
116 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

P5 P7 P 8

K1,5 K1,7 K1,8

S11 S12 S13 S14

K2,6

S21 S22 S23 S24

K3,6 K3,14

S31 S32 S33 S34

K4,6 K4,8 K4,14 K4,16

? ?
U4,6 U4,8 U4,14 U4,16
S41 S42 S43 S44

K5,5 K5,6 K5,7 K5,8 K5,13 ... K5,16

Figura 4: Exemplu de aproximare liniara


Pentru runda 3, retinem ca
V3,6 V3,8 = U3,6
cu probabilitate 1/4 si
V3,14 V3,16 = U3,14
tot cu probabilitate 1/4.
Deci, pentru ca U3,6 = V2,6 K3,6 si U3,14 = V2,8 K3,14 , aplicam din nou Lema ?? si
obtinem
6.5. CRIPTANALIZA LINIARA 117

V3,6 V3,8 V3,14 V3,16 V2,6 K3,6 V2,8 K3,14 = 0 (4)


cu probabilitate 1/2 + 2(1/4 1/2)2 = 5/8 (deci, cu o tendinta +1/8).
Combinam acum relatiile (3) si (4) pentru a ncorpora toate cele patru aproximari ale
S - boxurilor. Vom avea
V3,6 V3,8 V3,14 V3,16 P5 P7 P8 K1,5 K1,7 K1,8 K2,6 K3,6 K3,14 = 0.
Tinem cont ca U4,6 = V3,6 K4,6 , U4,8 = V3,14 K4,8 , U4,14 = V3,8 K4,14 , U4,16 =
V3,16 K4,16 si putem rescrie aceasta relatie sub forma
U4,6 U4,8 U4,14 U4,16 P5 P7 P8 K = 0
unde
K = K1,5 K1,7 K1,8 K2,6 K3,6 K3,14 K4,6 K4,8 K4,14 K4,16
De remarcat ca K este o valoare fixata (0 sau 1), dependenta de cheia sistemului de
criptare.
Aplicand Lema ??, aceasta expresie are loc cu probabilitate 1/2 + 23(3/4 1/2)(1/4
1/2)3 = 15/32 (deci o tendinta 1/32).
Deoarece K este fixat, deducem ca relatia
U4,6 U4,8 U4,14 U4,16 P5 P7 P8 = 0 (5)
are loc cu probabilitate 15/32 sau (1 15/32) = 17/32 (dupa cum K = 0, respectiv 1).
Am obtinut deci o aproximare liniara a primelor trei runde ale sistemului de criptare,
cu o tendinta 1/32, remarcabil de buna pentru construirea unui atac.
Sa vedem cum o putem folosi aceasta tendinta pentru a determina o parte din bitii
cheii.

6.5.5 Extragerea bitilor cheii


Dupa ce am aflat o aproximare liniara pentru N 1 runde dintr-un sistem de criptare
cu N runde, aproximare avand o tendinta semnificativ de mare, putem ataca sistemul
cautand biti din ultima sub-cheie. In cazul nostru, avand o aproximare liniara pentru 3
runde, este posibil sa gasim biti din subcheia K5 .
Vom numi sub-cheie tinta setul de biti din ultima sub-cheie, asociati S - boxurilor
active din ultima runda (S - boxuri influentate de bitii utilizati n aproximarea liniara
gasita). Pentru fiecare valoare posibila a sub-cheii tinta este definit un contor (initializat
cu zero).
Procesul este similar celui folosit la criptanaliza diferentiala. Anume, pentru toate
valorile posibile ale sub-cheii tinta, bitii din textul criptat sunt XOR-ati cu bitii din
sub-cheia tinta si rezultatul este trecut n sens invers prin S - boxurile corespunzatoare.
Aceasta procedura este efectuata pentru perechile (text clar, text criptat) folosite n
atac. Daca aproximarea liniara este verificata pentru bitii din textul clar folosit si pentru
rezultatul obtinut de procedura, contorul asociat sub-cheii respective este incrementat.
118 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

Sub-cheia tinta al carei contor difera cel mai mult de jumatatea numarului de perechi
de texte folosite, este cel mai probabil cea corecta. Aceasta rezulta din faptul ca pentru
sub-cheia tinta respectiva, tendinta este maxima. Daca valoarea acestui contor este mai
mare sau mai mica decat 1/2 depinde de faptul daca aproximarea folosita este o relatie
liniara sau afina (lucru care depinde la randul sau de valorile necunoscute ale bitilor
sub-cheii folositi implicit n aproximare).
Pentru o sub-cheie incorecta rezultata dintr-o alegere aleatoare, aproximarea asociata
este verificata n general cu o probabilitate foarte apropiata de 1/2.
Exemplul 6.7. ([?]). Expresia liniara (5) afecteaza intrarile n S - boxurile S42 si S44
din ultima runda. Deci, pentru fiecare pereche (text clar, text criptat) ales pentru atac,
vom ncerca toate cele 28 = 256 valori ale sub-cheii tinta [K5,5 , . . . , K5,8 , K5,13 , . . . , K5,16 ].
Pentru fiecare valoare a sub-cheii tinta vom incrementa contorul respectiv ori de cate
ori relatia (5) este verificata (valorile [U4,5 , . . . , U4,8 , U4,13 , . . . , U4,16 ] sunt determinate tre-
cand datele n sens invers prin sub-cheia tinta si S - boxurile S24 si S44 ).
Contorul care difera cel mai mult de jumatate din numarul de perechi (text clar, text
criptat) folosite n atac va indica sub-cheia tinta prezumtiv corecta. Valorile bitilor din
sub-cheie folositi n calculul lui K vor indica daca tendinta este pozitiva sau negativa.
Cand K = 0, aproximarea liniara (5) va servi ca estimare cu probabilitate < 1/2, iar
cand K = 1, relatia (5) va avea loc cu probabilitate > 1/2.

K5,5 . . . K5,8 , K5,13 . . . K5,16 |tendinta| K5,5 . . . K5,8 , K5,13 . . . K5,16 |tendinta|
1C 0.0031 2A 0.0044
1D 0.0078 2B 0.0186
1E 0.0071 2C 0.0094
1F 0.0170 2D 0.0053
20 0.0025 2E 0.0062
21 0.0220 2F 0.0133
22 0.0211 30 0.0027
23 0.0064 31 0.0050
24 0.0336 32 0.0075
25 0.0106 33 0.0162
26 0.0096 34 0.0218
27 0.0074 35 0.0052
28 0.0224 36 0.0056
29 0.0054 37 0.0048
Tabela 8. Rezultate experimentale pentru un atac liniar

In [?] este simulat un atac folosind 10000 perechi cunoscute (text clar, text crip-
tat) si urmand procedura de criptare pentru valorile sub-cheii partiale [K5,5 , . . . , K5,8 ] =
0010 (hex 2) respectiv [K5,13 , . . . , K5,16 ] = 0100 (hex 4). Contorul care difera cel mai mult
6.5. CRIPTANALIZA LINIARA 119

de valoarea 5000 corespunde asa cum este de asteptat valorii sub-cheii tinta [2, 4] hex,
confirmand ca atacul a gasit corect bitii respectivi ai cheii.
Tabela 8 prezinta doar partial rezultatele relative la contori (un tabel complet va avea
256 linii, cate una pentru fiecare valoare posibila a sub-cheii tinta ). Valorile din tabel
indica magnitudinea tendintei, conform formulei |tendinta| = |cont 5000|/10000, unde
cont corespunde contorului asociat valorii respective date sub-cheii tinta.
Dupa cum se vede, cea mai mare tendinta apare pentru valoarea
[K5,5 . . . K5,8 , K5,13 . . . K5,16 ] = [2, 4],
rezultat care ramane valabil pentru toata tabela cu 256 valori.
Valoarea 0.0336 gasita experimental este foarte apropiata de valoarea estimata 1/32 =
0.03125. De remarcat ca n tabel apar si alte valori destul de mari ale tendintei (desi
teoretic, ele ar trebui sa fie foarte apropiate de zero). Ele rezulta printre altele din
alegerea aleatoare a perechilor de test, a proprietatilor particulare ale S - boxurilor, a
impreciziei ipotezei de independenta (ceruta de Lema ??).

6.5.6 Criptanaliza liniara pentru DES


Cea mai buna aproximare liniara pentru un S - box din DES este

a2 b 1 b 2 b 3 b 4 = 0

asociata lui S5 . Aceasta relatie are probabilitatea 12/64.


Daca se analizeaza componentele liniare ale functiei f , va rezulta ca aceasta relatie
conduce la aproximarea
a15 f (, K)7 f (, K)18 f (, K)24 f (, K)29 K22 = 0 (6)
avand tot probabilitatea 16/24. Relatia (6) poate fi folosita cu succes pentru un atac
contra sistemului DES cu 3 runde.
Pentru a ataca un DES complet (cu 16 runde) sunt folosite aproximarile liniare:




a15 f (X, K)7 f (X, K)18 f (X, K)24 f (X, K)29 K22 = 0
a27 a28 a30 a31 f (X, K)15 K42 K43 K45 K46 = 0




a29 f (X, K)15 K44 = 0
a15 f (X, K)7 f (X, K)18 f (X, K)24 K22 = 0





a12 a16 f (X, K)7 f (X, K)18 f (X, K)24 K19 K23 = 0

Atacul unui DES n 3 runde


Pentru atacul unui DES n 3 runde vom folosi structura din Figura 5 (care defineste un
astfel de sistem DES simplificat), mpreuna cu aproximarea (6).
120 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

.H .L

K1
+k
? 
f 


? ?
X2

+k K2
? 
 f 


? ?
X2

+k
?


f  K3
? 
?
.H .L

Figure 5: Structura unui DES cu 3 runde


Ele conduc la relatia

.L15 (.H7 X27 ) (.H18 X218 ) (.H24 X224 ) (.H29 X229 ) K122 = 0

avand probabilitatea tot 12/64 (s-a notat sub-cheia de la runda i cu Ki).


Bitul K122 din cheie este constant si poate fi eliminat din relatie (el doar face distinctia
dintre valorile de probabilitate 12/64 sau 1 12/64, diferenta care nu ne intereseaza).
De remarcat ca blocul X2 trece neschimbat prin runda a doua, deci va fi o intrare
n ultima runda. Rezulta ca va trebui sa parcurgem aceasta runda n sens invers si sa
determinam cei 4 biti din X2 care apar n relatia (6). Din Figura 5 avem

X2 = .H f (.L, K3),

unde singura necunoscuta este sub-cheia K3.


Trebuie sa gasim cei patru biti [X27 , X218 , X224 , X229 ] folosind doar o sub-cheie. Daca
studiem functia f , vedem ca acesti biti apar dupa o permutare si o trecere prin S - boxuri.
Cum sunt numai 4 biti, ei nu pot iesi decat din maxim 4 S - boxuri diferite. Pentru a
calcula fiecare din aceste S - boxuri sunt necesari 6 biti din cheie. Deci, n total sunt
necesari 24 biti din sub-cheia K3, pentru a gasi cei patru biti din X2.
Folosind o cautare exhaustiva vom lua toate cele 224 valori posibile ale bitilor din
sub-cheie pentru toate perechile (text clar, text criptat) si vom verifica daca relatia
(6) este verificata. Valorile pentru care (6) se verifica n minim jumatate din cazuri, dau
bitii probabil corecti din K3.
6.5. CRIPTANALIZA LINIARA 121

Atacul unui DES n 16 runde


Pentru a ataca un sistem DES complet vor fi necesare toate cele cinci relatii descrise
anterior. Utilizarea lor ca aproximari ale functiilor f pentru un DES redus la 15 runde,
conduce la aproximarea liniara:
.H[7, 8, 24] .L[12, 16] .H 15 [7, 18, 24, 29] .L15
15 key = 0 (7)
unde .L15 si .H 15 sunt componentele stanga/dreapta ale textului criptat prin acest
DES redus, iar key este o valoare fixata, rezultata printr-un XOR ntre mai multi biti
de cheie din diverse runde. Conform cu Matsui, aceasta este cea mai buna aproximare a
unui DES n 15 runde, iar tendinta ei este 1.1922 .
Putem extinde acest DES redus la un sistem DES normal, pe 16 runde, prin adau-
garea unei ultime runde.
Deoarece runda 15 nu va mai fi ultima, va trebui sa inversam sub-blocurile .L15 si
.H 15 . Sa notam .H 15 = X.L15 si .L15 = X.H 15 .
Vom obtine din (7) urmatoarea aproximare (omitand key ):
.H[7, 8, 24] .L[12, 16] X.L15 [7, 18, 24, 29] X.H15
15
=0 (8)
Relatia (8) va fi aproximarea care trebuie verificata dupa trecerea n sens invers prin
ultima runda (a 16-a) din DES.
Fie .L si .H componentele stanga/dreapta ale textului criptat obtinut dupa runda
16. Putem trece prin ultima runda n sens invers, pentru a gasi blocurile X.L15 respectiv
X.H 15 de intrare n ultima runda. Din constructia sistemului DES avem:

X.L15 = .L

si
X.H 15 = .H f (X.L15 , K16) = .H f (.L, K16)
Inlocuind n (8), putem verifica daca aproximarea respectiva are loc pentru o sub-cheie
K16 data, verificand pur si simplu egalitatea
15
.H[7, 18, 24] .L[12, 16] .L[7, 18, 24, 29] .H15 f (.L, K16)15 = 0

Singura componenta care nu este data de o pereche (text clar, text criptat) folosita n
atac, este bitul f (.L, K16)15 . Acest bit este afectat de un singur S - box al lui f , deci
sunt necesari numai 6 biti din K16 pentru a verifica egalitatea (8) (remintim, S - boxurile
DES folosesc intrari de 6 biti).
Putem obtine n acest fel 6 biti din cheie. Restul bitilor se vor obtine folosind eventual
un atac prin forta bruta.
In [?] Matsui foloseste simetria rundelor DES pentru a gasi alta aproximare liniara
similara cu (7), avand aceeasi tendinta. Pe baza ei se pot gasi alti 6 biti din cheie. Deci, n
total pot fi descoperiti 12 biti din cheie. In [?], Matsui mbunatateste algoritmul, folosind
122 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

o aproximare pentru un DES pe 14 runde, obtinand n final 26 biti din sub-cheia K16
(care are n total 48 biti).
Dupa estimarea lui Matsui, atacul originar necesita 247 perechi (text clar, text criptat)
pentru a avea succes cu probabilitate mare, iar atacul mbunatatit reduce acest numar
la 243 perechi. Cercetari experimentale ulterioare ([?]) sugereaza ca sunt suficiente 241
perechi pentru ca atacul mbunatatit al lui Matsui sa dea rezultate.

6.6 Comparare ntre criptanaliza diferentiala


si liniara
Intre cele doua tipuri de criptanaliza exista multe similaritati remarcabile. Astfel:

Diferentialele caracteristice corespund aproximarilor liniare. Tabelele de distributie


a diferentelor sunt nlocuite cu tabelele de aproximare liniara.

Regula de combinare a diferentialelor caracteristice: substituie diferentele si nmul-


teste probabilitatile corespunde regulii de combinare a aproximarilor liniare (Lema
piling-up): substituie elementele comune si nmulteste tendintele.

Algoritmii de cautare pentru cea mai buna caracteristica sau cea mai buna aproxi-
mare liniara sunt n esenta identici.

Cele mai importante distinctii ntre cele doua metode de atac sunt:

Criptanaliza diferentiala lucreaza cu blocuri de biti, n timp ce criptanaliza liniara


lucreaza n esenta cu un singur bit.

Tendinta unei aproximari liniare este un numar cu semn. Deci, fiind date doua
aproximari cu aceleasi structuri de intrare si iesire, aceiasi probabilitate, dar semne
opuse, aproximarea rezultata va avea tendinta zero (datorita faptului ca cele doua
aproximari se vor anula reciproc).

6.7 Exercitii
6.1. Fie S - boxul S : {0, 1}3 {0, 1}3 definit prin tabela

x 0 1 2 3 4 5 6 7
S (x) 0 2 3 4 5 6 7 1

Se dau doua mesaje s1 , s2 {0, 1}3 . Sa se afle cheia k {0, 1}3 stiind ca
s1 k = 5, s2 k = 3, S (s1 ) S (s2 ) = 2.
6.7. EXERCITII 123

6.2. Sa se construiasca aproximari liniare pentru S - boxul din exercitiul precedent.

6.3. Fie X1 , X2 , X3 variabile aleatoare independente cu valori n {0, 1} de tendinte 1 , 2


respectiv 3 . Demonstrati ca X1 X2 si X2 X3 sunt indepedente daca si numai daca
1 = 0, 3 = 0 sau 2 = 1/2.

6.4. Pentru fiecare din cele opt S - boxuri DES calculati tendinta variabilei aleatoare
X2 Y1 Y2 Y3 Y4 .

6.5. S - boxul DES S4 are cateva proprietati specifice:

1. Aratati ca a doua linie din S4 poate fi obtinuta din prima linie folosind operatia

(y1 , y2 , y3 , y4 ) (y2 , y1 , y4 , y3 ) (0, 1, 1, 0)

2. Aratati ca orice linie din S4 poate fi transformata n orice alta linie printr-o operatie
similara.

6.6. Fie S : {0, 1}m {0, 1}n un S - box. Demonstrati ca:

1. NL (0, 0) = 2m ;

2. NL (a, 0) = 2m 1, a [0, 2m 1];


m 1 2n 1
2X
NL (a, b) {2n+2m1 , 2n+2m1 + 2n+m1 }.
X
3.
a=0 b=0

6.7. Un S - box S : {0, 1}m {0, 1}n este balansat daca

|s1 (y)| = 2nm

pentru orice y {0, 1}n .


Demonstrati urmatoarele afirmatii despre NL pentru un S - box balansat:

1. NL (0, b) = 2m 1, b [0, 2n 1];


n 1
2X
2. a [0, 2 1],m
NL (a, b) = 2m+n1 2n1 + i2n
b=0

unde i este un numar ntreg din intervalul [0, 2mn ].

6.8. Fie S - boxul definita:


x 0 1 2 3 4 5 6 7 8 9 A B C D E F
S (x) 8 4 2 1 C 6 3 D A 5 E 7 F B 9 0
Determinati tabela de aproximatie liniara.
124 CAPITOLUL 6. ATACURI ASUPRA SISTEMELOR DE CRIPTARE BLOC

6.9. Fie un sistem de criptare P = C = K care asigura un secret perfect; deci, din
eK () = eK1 () rezulta K = K1 . Notam P= Y = {1 , 2 , . . . , N }. Fie un bloc de text
clar fixat. Definim functia g : Y Y prin g() = e (). Definim un graf orientat
avand ca noduri multimea Y si ca arce (i , g(i )) (1 i N ).

1. Aratati ca este o reuniune de cicluri orientate disjuncte.

2. Fie T un parametru de timp fixat. Consideram o multime Z = {1 , . . . , m } Y ,


astfel ca pentru orice i Y, i este ntr-un ciclu de lungime cel mult T , sau
exista un element j 6= i astfel ca distanta de la i la j (n ) este cel mult T .
Demonstrati ca exista o astfel de multime cu card(Z) 2N/T (deci card(Z) este
de complexitate O(N/T ).

3. Pentru fiecare j Z, definim g 1 (j ) ca fiind acel element i astfel ca g T (i) =


j , unde g T este functia g aplicata de T ori.
Construiti tabela X a perechilor (j , g 1 (j )), ordonate dupa prima coordonata.
Un algoritm care gaseste cheia K astfel ca = eK (), este urmatorul:

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

Aratati ca el determina K n maxim T etape (compromisul spatiu - timp este deci


O(N )).

4. Dati un algoritm care construieste o multime Z n timp O(N T ), fara a folosi tablouri
de marine N .
Capitolul 7

Sisteme de criptare cu cheie publica

7.1 Consideratii generale


In sistemele de criptare clasice, Alice si Bob si aleg o cheie secreta K care defineste
regulile de criptare (eK ) si decriptare (dK ). In aproape toate cazurile dK si eK coincideau
sau se puteau deduce imediat una din alta. Astfel de sisteme sunt numite sisteme cu
cheie privata (sau sisteme simetrice) deoarece publicarea lui eK face sistemul extrem de
vulnerabil.
Un punct slab al sistemelor cu cheie privata este acela ca necesita o comunicare pre-
alabila a cheii ntre Alice si Bob printr-un canal sigur, nainte de transmiterea mesajului
criptat. Practic, n conditiile cererii tot mai mari de securizare a comunicatiilor, acest
lucru este din ce n ce mai dificil de realizat.
Obiectivul sistemelor de criptare cu cheie publica este acela de a face imposibil
(asupra acestui termen vom reveni) de obtinut cheia dK plecand de la eK . Astfel, regula
de criptare eK poate fi facuta publica, fiind accesibila oricui. Avantajul consta n faptul
ca Alice (sau oricare alta persoana) poate trimite lui Bob un mesaj criptat cu eK fara
a intra n prealabil n contact direct. Bob este singura persoana capabila sa decripteze
textul, utilizand informatia sa secreta dK .
Ideea de sistem de criptare cu cheie publica apare n 1976 si este prezentata de Diffie si
Hellman (vezi [?])1 . De atunci au aparut diverse astfel de sisteme, a caror securitate este
bazata pe probleme calculatorii (N P complete). Cele mai cunoscute sisteme de criptare
cu cheie publica sunt:

Sistemul RSA: se bazeaza pe dificultatea descompunerii n factori primi a numerelor


mari (de sute de cifre). Este sistemul cel mai larg utilizat n acest moment.
1
Se pare ca prima idee de cheie publica este schitata n ianuarie 1970 de catre britanicul James
Ellis membru n Communication-Electronic Security Group n articolul The possibility of non-secret
encryption. Informatia este facuta publica de catre British Government Communications Headquarters
abia in 1997.

125
126 CAPITOLUL 7. SISTEME DE CRIPTARE CU CHEIE PUBLICA

Sistemul El Gamal: se bazeaza pe dificultatea calculului logaritmului discret ntr-un


corp finit.

Sistemul Merkle - Hellman: primul sistem definit cu cheie publica, bazat pe problema
{0, 1} a rucsacului.

Sistemul McEliece: este bazat pe teoria algebrica a codurilor, decodificarea unui cod
liniar fiind de asemenea o problema N P - completa.

Curbe eliptice: Sunt sisteme de criptare care si desfasoara calculele pe multimea


punctelor unei curbe eliptice (n locul unui inel finit Zn ).

7.2 Functii neinversabile


O observatie importanta este aceea ca un sistem cu cheie publica nu este sigur n mod
neconditionat; oricine putand sa efectueze criptari are posibilitatea sa gaseasca anu-
mite puncte slabe care sa i permita sa si decripteze mesajele. Ideea de baza folosita este
aceea de functie neinversabila. Sa clarificam putin acest aspect.

Exemplul 7.1. Ne putem imagina usor strazile cu sens unic dintr-un oras. Astfel, este
usor ca mergand pe astfel de strazi sa ajungi de la punctul A la punctul B, dar este
imposibil sa ajungi de la B la A. In acest mod, criptarea este privita ca directia A B;
desi este foarte usor de parcurs drumul n aceasta directie, nu te poti ntoarce napoi spre
A (adica sa decriptezi mesajul).

Exemplul 7.2. Sa consideram cartea de telefon a unui oras mare2 ; cu ajutorul ei este
foarte usor sa gasim numarul de telefon al unei anumite persoane. In schimb, este extrem
de greu - practic imposibil - sa afli persoana care are un anumit numar de telefon. Te
afli n situatia parcurgerii secventiale a (cel putin) unui volum gros, ceea ce conduce la o
crestere exagerata a timpului.
Aceasta da o sugestie de constructie a unui sistem de criptare cu cheie publica. Cripta-
rea se face independent de context, litera cu litera. Pentru fiecare litera a textului clar se
alege un nume care ncepe cu acest caracter si numarul de telefon al persoanei respective
va constitui criptarea. Sistemul este homofonic; doua aparitii diferite ale aceleiasi litere
vor fi codificate foarte probabil cu numere diferite.
De exemplu, textul clar SOLIST se poate cripta astfel:

2
O carte de telefon expirata va duce la cresterea dificultatii decriptarii ilegale.
7.2. FUNCTII NEINVERSABILE 127

S Simion Pavel 6394502


O Olaru Stefan 7781594
L Lambru Stelian 6300037
I Ilie Romeo 3134971
S Solovean Raluca 6281142
T Tecuceanu Paul 3359962

Deci, textul criptat va fi


639450 277815 946300 037313 497162 811423 359962.
De remarcat ca metoda este nedeterminista; din acelasi text clar se pot obtine enorm
de multe texte criptate. Pe de-alta parte, orice text criptat conduce la un text clar unic.
Bob va avea la dispozitie pentru decriptare o carte de telefon ordonata crescator dupa
numere. Aceasta i va permite sa decripteze mesajele cu un algoritm de complexitate
O(log n).

In general, o functie neinversabila f trebuie sa verifice doua conditii:

Fiind dat x, f (x) este usor de calculat;

Calculul lui x din f (x) este imposibil.

De remarcat ca, din punct de vedere strict matematic, nu se cunosc astfel de functii. A
demonstra ca exista functii neinversabile este echivalent cu a demonstra relatia P =
6 N P,
conjectura care sta la baza ntregii teorii criptografice (a se vedea [?], [?]). De aceea,
termenii folositi sunt relativi la complexitatea calculatorie. Astfel, o problema este:

1. usoara daca se poate rezolva cu un algoritm cel mult liniar;

2. grea daca se poate rezolva cu un algoritm polinomial neliniar;

3. imposibila daca este N P - completa.

Am listat la nceput o serie de probleme N P - complete care stau la baza principalelor


sisteme de criptare cu cheie publica.

Exemplul 7.3. Sa consideram problema rucsacului (a se vedea sistemul de criptare


Merkle Hellman prezentat n Capitolul 11). Ea consta dintr-un vector A = (a1 , a2 , . . . , an )
cu n elemente numere ntregi, pozitive, distincte, si un numar ntreg pozitiv k. Trebuiesc
aflati acei ai din A (daca exista) a caror suma este k. Numele intuitiv dat problemei este
evident. De exemplu, fie
A = (43, 129, 215, 473, 903, 302, 561, 1165, 696, 1523) si k = 3231.
Se determina 3231 = 129 + 473 + 903 + 561 + 1165, care este o astfel de solutie (vom
da mai tarziu o definitie formala riguroasa a problemei).
In principiu o solutie se poate gasi parcurgand sistematic toate submultimile lui A si
verificand daca suma elementelor lor este k. In cazul de sus, aceasta nseamna 210 1 =
1023 submultimi (fara multimea vida), dimensiune acceptabila ca timp de lucru.
128 CAPITOLUL 7. SISTEME DE CRIPTARE CU CHEIE PUBLICA

Ce se ntampla nsa daca A are cateva sute de componente ? In acest caz se cunoaste
faptul ca problema rucsacului este N P - completa.
Cu ajutorul lui A se poate defini o functie f astfel:
Fie x [0, 2n 1]; x poate fi reprezentat n binar ca un cuvant de lungime n (com-
pletand eventual n fata cu 0 - uri). f (x) va fi numarul obtinut din A prin nsumarea
tuturor numerelor ai aflate pe pozitiile marcate cu 1 n reprezentarea binara a lui x.
Formal,
f (x) = A BxT
unde Bx este reprezentarea binara a lui x, scrisa ca un vector coloana.
Sa definim acum un sistem de criptare bazat pe problema rucsacului. Textul clar
este codificat initial n binar si segmentat apoi n blocuri de cate n biti (eventual ultimul
bloc este completat la sfarsit cu zerouri). Fiecare bloc rezultat este apoi criptat calculand
valoarea corespunzatoare a functiei f .
Pentru alfabetul latin sunt suficienti 5 biti pentru codificarea binara a literelor si a
spatiului. Mai exact, daca asociem literelor A - Z reprezentarile binare ale numerelor
1 26, vom avea:

00000 A 00001 B 00010


C 00011 D 00100 E 00101
F 00110 G 00111 H 01000
I 01001 J 01010 K 01011
L 01100 M 01101 N 01110
O 01111 P 10000 Q 10001
R 10010 S 10011 T 10100
U 10101 V 10110 W 10111
X 11000 Y 11001 Z 11010

Sa consideram un text clar; FLOARE DE COLT de exemplu. Cum fiecare caracter se


codifica n 5 biti, n fiecare bloc intra doua caractere:
FL OA RE D E CO LT.
Codificand cu ajutorul vectorului rucsac A definit anterior, se obtin sapte blocuri de
cate 10 biti:

0011001100 0111100001 1001000101 0000000100 0000000101 0001101111 0110010100

care conduc la textul criptat:


(2414, 3243, 3204, 1165, 1118, 5321, 1811).

Sa consideram sistemul de criptare definit n Exemplul ??. Daca l privim ca un sistem


clasic (cu cheie privata), criptanalistul trebuie sa afle vectorul de baza A si apoi sa rezolve
problema rucsacului.
7.3. TRAPA SECRETA 129

Daca el foloseste un atac cu text clar ales, l va afla usor pe A: este suficient sa trimita
n texte clare cu cte un singur 1 iar restul 0. Problema apare n momentul rezolvarii
problemei rucsacului; aici atat Bob cat si Oscar sunt pusi n fata acelaiasi probleme N P
- complete. Ori, practic, doar Oscar trebuie sa rezolve o problema dificila, nu si Bob.
O alta problema ridicata de acest sistem de criptare: este obligatoriu ca un text criptat
sa determine n mod unic un text clar. Aceasta nseamna ca nu trebuie sa existe doua
submultimi ale lui A care sa aiba aceeasi suma. Astfel, daca se ia A = (17, 103, 50, 81, 33),
textul criptat (131, 33, 100, 234, 33) poate fi decriptat n doua moduri: SAUNA si FAUNA.

7.3 Trapa secreta


Pentru ca Bob sa nu fie pus n aceasi situatie ca si Oscar, el trebuie sa dispuna de
un procedeu care sa i permita sa transforme problema N P - completa publica, ntr-o
problema usoara. Acest procedeu este numit trapa secreta. In primul exemplu, trapa
secreta era cartea de telefon ordonata dupa numerele de telefon, nu dupa abonati. Sa
vedem care este trapa secreta n sistemul de criptare definit n Exemplul ??:

Exemplul 7.4. Sunt clase de probleme ale rucsacului usor de rezolvat; una din ele o
formeaza vectorii cu crestere mare.
Spunem ca vectorul rucsac A = (a1 , a2 , . . . , an ) este super-crescator daca
j1
X
j 2, aj > ai .
i=1

In acest caz, pentru a rezolva problema rucsacului este suficient sa parcurgem vectorul
A de la dreapta spre stanga. Cunoscand valoarea k, cercetam ntai valoarea de adevar
a relatiei k an . Daca raspunsul este FALSE, an nu poate apartine sumei pe care o
cautam. Daca nsa se obtine TRUE, an trebuie sa fie n suma, deoarece toate elementele
ai ramase nu pot depasi n suma pe k.
Vom defini
(
k daca an > k
k1 =
k an daca an k
si repetam procedeul pentru k1 si an1 . Algoritmul se va opri la valoarea a1 .
Sa presupunem ca avem vectorul rucsac super-crescator

A = (1, 3, 5, 11, 21, 44, 87, 175, 349, 701)

si vrem sa decodificam mesajul 278. Vom parcurge 10 pasi, sumarizati n Tabelul 1.


130 CAPITOLUL 7. SISTEME DE CRIPTARE CU CHEIE PUBLICA

Numar Componenta lui A Bit rezultat


278 701 0
278 349 0
278 175 1
103 87 1
16 44 0
16 21 0
16 11 1
5 5 1
0 3 0
0 1 0
Tabelul 1:
In final se obtine secventa binara 00110 01100 (aflata pe ultima coloana) care - conform
codificarii din Exemplul ?? corespunde perechii de litere F L.
Daca se foloseste nsa public o astfel de informatie, orice utilizator inclusiv Oscar
poate decripta mesajele folosind un algoritm liniar. Ori s-a presupus (Capitolul 1) ca,
pentru orice intrus, ncercarea de aflare a mesajului clar trebuie sa conduca la rezolvarea
unei probleme N P - complete.
Exemplul 7.5. Pentru sistemul bazat pe problema rucsacului, Bob va proceda astfel: va
m
X
alege un numar m (m > ai ) numit modul si un numar t, cmmdc(m, t) = 1 numit
i+1
multiplicator. Exista atunci un numar s astfel ca t s 1 (mod m).
Plecand de la vectorul super-crescator A = (a1 , a2 , . . . , an ) Bob genereaza vectorul
B = (b1 , b2 , . . . , bn ) unde bi = t ai (mod m).
Vectorul B este declarat public pentru criptare, iar m, t si s vor forma trapa secreta a
lui Bob.
Astfel, daca luam m = 1590 si t = 43, vectorul super-crescator
A = (1, 3, 5, 11, 21, 44, 87, 175, 349, 701)
devine
B = (43, 129, 215, 473, 903, 302, 561, 1165, 697, 1523),
adica cel prezentat n Exemplul ??. In plus, s = t1 = 37.3
Cum se va proceda: Cel care doreste sa trimita lui Bob un mesaj criptat va folosi
vectorul rucsac B si va cripta mesajul x n y = B BxT , conform Exemplului ??.
La receptie, Bob va calcula ntai z = s y (mod m), dupa care va decripta mesajul z
folosind vectorul super-crescator A. Se poate arata usor ca solutia este chiar x.
Astfel, de exemplu Alice poate cripta mesajul F L n 2414 (cf. Exemplului ??). La
primirea acestui numar, Bob va determina ntai s 2414 = 37 2414 (mod 1590) = 278. In
Exemplul ?? s-a vazut ca decriptarea mesajului 278 cu vectorul A conduce la textul clar
F L.
3
Pentru calculul inversului unui numar se poate folosi algoritmul lui Euclid extins, prezentat n Anexa.
7.4. SECURITATEA SISTEMELOR DE CRIPTARE CU CHEIE PU-BLICA 131

Putem trasa acum cateva principii generale de construire a unui sistem de criptare cu
cheie publica ([?]):

1. Se ncepe cu o problema dificila P ; rezolvarea lui P este imposibila n conformitate


cu teoria complexitatii (nu se cunoaste nici un algoritm determinist de complexitate
polinomiala care sa rezolve P ).

2. Se selecteaza o subproblema P1 a lui P , rezolvabila n timp polinomial (preferabil


liniar).

3. Se aplica o transformare problemei P1 astfel ncat sa se obtina o problema P2 care


sa nu semene cu P1 dar sa fie foarte apropiata de problema P .

4. Se face publica problema P2 si se descrie algoritmul de criptare bazat pe aceasta.


Informatia referitoare la modul n care se obtine P1 din P2 este o trapa secreta.

5. Se construiesc detaliile sistemului de criptare, astfel ncat principiile de lucru sa


difere esential pentru destinatar fata de criptanalist; astfel, n timp ce primul va
folosi trapa secreta si va rezolva problema P1 , al doilea va trebui sa rezolve problema
P2 , imposibila datorita asemanarii ei cu problema P .

In functie de aceste principii generale, apar n detalii de constructie multe alte probleme
pe care constructorii sistemelor de criptare trebuie sa le rezolve.

7.4 Securitatea sistemelor de criptare cu cheie pu-


blica
In majoritatea sistemelor de criptare, aparatul matematic folosit este bazat pe teoria nu-
merelor, teoria functiilor recursive si teoria probabilitatilor. Pe o scara mult mai restransa
apar functiile eliptice, teoria automatelor, calcul neconventional (cuantic, molecular etc).
Sistemele de criptare cu cheie publica au un avantaj major fata de sistemele clasice:
aici nu mai este necesar efortul transmiterii cheii. Un contact prealabil ntre Alice si Bob
pentru a pune la punct detaliile sistemului de criptare este inutil.
Un sistem de criptare cu cheie publica nu ofera nsa o securitate absoluta. Aceasta se
datoreaza faptului ca Oscar are oricand posibilitatea sa lanseze atacuri pasive sau active.
Anume:

Daca un text criptat y este interceptat de criptanalist, acesta poate cauta exhaustiv
un text clar x astfel ca eK (x) = y. Singura aparare contra unui astfel de atac consta
n gradul de complexitate al sistemului.
132 CAPITOLUL 7. SISTEME DE CRIPTARE CU CHEIE PUBLICA

Un criptanalist activ poate efectua cu succes un atac numit man-in-the-middle (a


nu se confunda cu meet-in-the-middle prezentat n capitlul anterior).
Sa presupunem ca Alice si Bob doresc sa stabileasca un contact. Ei fac publice
cheile de criptare eA respectiv eB . Daca contactul este nepersonalizat, Oscar poate
controla mesajele schimbate ntre cei doi, n felul urmator:

e1B (eA , eB ) e1A


Alice  - Bob
6 6
6

y1 = e1B (m) - ?
y = eB (m) -
? Oscar

1. Oscar opacizeaza printr-un mijloc oarecare aceste chei, si trimite lui Alice
cheia e1B ca din partea lui Bob; substituie similar pentru Bob cheia eA cu
e1A .
2. Fie m mesajul pe care Alice vrea sa l trimita lui Bob. Ea va cripta si va trimite
y1 = e1B (m).
3. Oscar intercepteaza mesajul (reamintim, toate canalele sunt nesigure) si afla
m = d1B (y1 ).
4. Oscar recripteaza y = eB (m) si trimite y lui Bob.

Binenteles, daca doreste, Oscar poate modifica, interschimba sau ntarzia mesajele
interceptate.
Din aceasta cauza, n toate sistemele de criptare cu cheie publica apare necesitatea
autentificarii mesajului sau a expeditorului, precum si aceea a confidentialitatii.
Definitia 7.1. Confidentialitatea4 asigura accesul la informatie doar partilor autorizate
de a avea acest acces.
Definitia 7.2. Autentificarea5 este procesul prin care un calculator (program de calculator
sau alt utilizator) ncearca sa confirme unui destinatar ca mesajul primit de acesta vine
(sau nu vine) din partea sa.
Metodele prin care se poate autentifica un expeditor uman, sunt clasificate n:
1. ceva ce utilizatorul este (de exemplu amprente digitale, de retina, de voce, secventa
DNA, recunoasterea semnaturii, identificatori biometrici).
2. ceva de utilizatorul are (de exemplu card ID, date de securitate soft aflate pe
calculator sau telefon).
4
conform International Standards Organization (ISO).
5
de la grecescul authentes autor.
7.4. SECURITATEA SISTEMELOR DE CRIPTARE CU CHEIE PU-BLICA 133

3. ceva ce utilizatorul stie (de exemplu un password, o parola, un numar de identi-


ficare - PIN).

4. Orice combinatie ntre metodele anterioare (de exemplu un card bancar cu PIN
asigura o dubla autentificare).

Alt termen frecvent utilizat este cel de integritate. El se refera la validitatea datelor.

Definitia 7.3. Integritatea este siguranta ca datele la care se refera un utilizator pot fi
accesate si eventual modificate numai de cei autorizati sa o faca.

In general integritatea poate fi compromisa n doua moduri:

1. Prin alterare intentionata (de exemplu modificarea unui cont bancar, a unei adrese
de e-mail, a unui document de identitate);

2. In mod accidental (transmisii perturbate de zgomote de canal, zgarierea harddiscu-


lui)6 .

Sa presupunem ca Alice si Bob sunt doi utilizatori, cu posibile conflicte de interese.


Cand Alice trimite un mesaj lui Bob, ambele parti trebuie sa se asigure ca:

Mesajul nu este trimis de o terta persoana care pretinde a fi Alice;

Bob sa nu poata obliga pe Alice sa tina cont de mesaje care nu-i apartin, iar Alice
sa nu poata repudia propriile mesaje.

Intr-o oarecare masura, cele doua conditii sunt contradictorii: conform primei conditii,
Bob trebuie sa stie ceva despre modul de criptare al lui Alice, care i va permite sa
autentifice mesajul, iar conform celei de-a doua conditii, el nu trebuie sa stie prea mult.
O modalitate frecvent utilizata pentru autentificarea mesajelor este folosirea codurilor de
autentificare.

Exemplul 7.6. MAC-ul (Message Authentication Code) definit n cadrul sistemului de


criptare DES este o varianta prin care se poate asigura atat autenticitatea cat si integri-
tatea mesajului.

Daca se solicita si autentificarea partenerilor, atunci se foloseste de obicei semnatura


electronica.
6
De recuperarea informatiei pierduta n acest mod se ocupa Teoria Codurilor detectoare si corectoare
de erori.
134 CAPITOLUL 7. SISTEME DE CRIPTARE CU CHEIE PUBLICA

Exemplul 7.7. Sa presupunem ca Alice vrea sa trimita lui Bob mesajul m. Daca se
foloseste un sistem de criptare cu cheie publica n care functiile de criptare/decriptare
sunt comutative, iar (eA , dA ), (eB , dB ) sunt perechile (cheie publica, cheie privata) ale
celor doi parteneri, ei pot urma urmatorul protocol:
1. Alice trimite lui Bob y1 = eA (m);
2. Bob trimite lui Alice y = eB (y1 );
3. Alice trimite lui Bob dA (y) = eB (m);
4. Bob calculeaza dB (eB (m)) = m si afla mesajul.
Se observa ca sunt verificate cele doua conditii de autentificare si n plus protocolul
rezista unui atac de tip man-in-the-middle.
Daca dorim sa folosim un singur contact, Alice poate trimite mesajul y = eB (dA (m)).
La receptie, Bob va folosi propria sa cheie pentru decriptare, impreuna cu cheia publica a
lui Alice. Metoda merge si pentru sisteme de criptare necomutative.

7.5 Comparatie ntre criptarea simetrica si cea cu


cheie publica
Avantaje ale sistemelor de criptare cu cheie simetrica:
1. Pot transmite volume mari de date. Exista implementari hard care pentru unele
sisteme de criptare asigura rate de criptare de sute de mega-octeti pe secunda (sunt
si implementari soft cu rate de mega-octeti pe secunda).
2. Cheile sunt relativ scurte.
3. Pot fi folosite ca baza de constructie a diverselor mecanisme de criptare, cum ar fi
generatori de numere pseudo-aleatoare, generatori de functii de dispersie, scheme
de semnatura.
4. Prin compunere pot conduce la sisteme de criptare puternice.
5. Au o istorie bogata n evenimente si experienta.
Dezavantaje ale sistemelor de criptare cu cheie simetrica:
1. Cheia trebuie sa ramana permament secreta n (cel putin) doua locuri distincte.
2. Cu cat lungimea unui mesaj criptat este mai mare, cu atat el este mai usor de spart.
3. In retele mari, o gestionare a cheilor devine extrem de dificila.
4. Necesita un canal sigur de comunicare, cel putin pentru transmiterea cheii. Acest
lucru devine dificil mai ales pentru sistemele care necesita schimbari frecvente ale
cheilor de criptare/decriptare.
7.6. EXERCITII 135

Avantaje ale sistemelor de criptare cu cheie publica:

1. Sistemul este ideal pentru transmiterea informatiei prin canale nesigure.

2. Sistemele cu cheie publica sunt simplu de definit si elegante matematic.

3. Doar cheia de decriptare trebuie tinuta secreta, la un singura adresa (destinatar).

4. In functie de modul de utilizare, o pereche de chei (publica, privata) poate fi pastrata


o perioada mai lunga de timp.

5. Conduc la aplicatii de mare ntindere: semnaturi electronice, algoritmi de autentifi-


care, componente de comert electronic etc.

Dezavantaje ale sistemelor de criptare cu cheie publica:

1. Sunt semnificativ mai lente decat sistemele simetrice.

2. Sunt necesare chei de lungimi mult mai mari.

3. Nu se poate garanta securitatea absoluta a nici unei scheme de criptare cu cheie


publica.

4. Implementarea trebuie realizata cu foarte mare grija. Sisteme cu grad teoretic ridi-
cat de securitate pot fi sparte usor printr-o implementare neglijenta.

Dupa cum se observa, cele doua clase de sisteme de criptare dispun de o serie de avantaje
complementare. Acest lucru face ca ele sa fie folosite combinat.

Exemplul 7.8. Multe sisteme de criptare ncep comunicarea transmitand via un sistem cu
cheie publica, cheia unui sistem simetric. In faza a doua, mesajele sunt criptate folosind
sistemul simetric de criptare. Aceasta asigura o viteza mult mai mare de transmitere si
un spor de autenticitate a mesajelor.

7.6 Exercitii
7.1. Justificati modul n care un sistem de criptare simetric asigura conditiile de confiden-
tialitate, autentificare si integritate.

7.2. Construiti exemple de functii neinversabile.

7.3. Fie f (x) si g(x) doua functii neinversabile. Dati un argument auristic pentru a
arata ca nici una din functiile f (x) + g(x), f (x) g(x), f (g(x)) nu este n mod obligatoriu
neinversabila.
136 CAPITOLUL 7. SISTEME DE CRIPTARE CU CHEIE PUBLICA

7.4. Alice si Bob aleg public un nunar prim p. Dupa aceea, fiecare alege si pastreaza
secret cate doua numere (eA , dA ) respectiv (eB , dB ) astfel ca eX dX 1 (mod p 1).
Daca Alice doreste sa transmita lui Bob mesajul m, se va urma protocolul:

1. Alice trimite lui Bob textul x = meA ;

2. Bob raspunde cu mesajul y = xeB ;

3. Alice trimite napoi mesajul z = y dA .

Aratati ca Bob este capabil sa decripteze mesajul si discutati problemele de securitate


implicate.
Capitolul 8

Sistemul de criptare RSA

8.1 Descrierea sistemului RSA


Sistemul de criptare RSA (Rivest - Shamir - Adleman) este n acest moment cel mai
cunoscut si utilizat sistem cu cheie publica1 . Aceasta se datoreaza n primul rand modali-
tatii foarte simple de criptare si decriptare, care se realizeaza similar cu aceleasi module
de calcul (proprietate ntalnita la multe sisteme simetrice: Beaufort, Enigma, AES etc).
Iata n ce consta sistemul de criptare RSA:
Fie p, q numere prime impare distincte si n = pq.
Indicatorul sau Euler este (n) = (p 1)(q 1).
Fie P = C= Zn . Se defineste
K= {(n, p, q, a, b)| n = pq, ab 1 (mod (n))}
Pentru K = (n, p, q, a, b) se definesc (x, y Zn ):
eK (x) = xb (mod n)
si
dK (y) = y a (mod n)
Valorile n si b sunt publice, iar p, q si a sunt secrete.
Deoarece ab 1 (mod (n)), avem ab = t(n) + 1.
Atunci, pentru un x Zn = Zn \ {0}, putem scrie (toate calculele se fac n Zn ):
 t
(xb )a xt(n)+1 x(n) x 1t x x.
Pentru x = 0 afirmatia este banala.

Exemplul 8.1. Sa presupunem ca Bob alege p = 101, q = 113. Atunci n = 11413,


(n) = 11200. Deoarece 11200 = 26 52 7, un numar b poate fi utilizat ca exponent de
1
Sistemul este prezentat n 1977 de Ron Rivest, Adi Shamir si Len Adleman n cadrul unui proiect
de cercetare la MIT. Totusi, dupa declasificarea n 1997 a unor documente din Marea Britanie, se pare
ca matematicianul Clifford Cocks a elaborat n 1973 un sistem echivalent, prezentat ntr-un document
intern GCHQ (Government Communications Headquarters).

137
138 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA

criptare daca si numai daca nu este divizibil cu 2, 5 sau 7 (deci Bob poate sa nu factorizeze
(n); este suficient sa verifice daca cmmdc((n), b) = 1 folosind algoritmul lui Euclid).
Fie de exemplu b = 3533. Avem atunci b1 = 6597 (mod 11200).
Deci, exponentul (secret) de decriptare este a = 6597.
Bob face public n = 11413 si b = 3533.
Daca Alice doreste sa-i transmita lui Bob mesajul m = 9726, ea calculeaza

97263533 (mod 11413) = 5761

si trimite prin canal textul criptat c = 5761. Cand Bob primeste acest numar, el determina

57616597 (mod 11413) = 9726.

Securitatea sistemului de criptare RSA se bazeaza pe ipoteza ca functia de criptare


eK (x) = xb mod n este neinversabila din punct de vedere al complexitatii, deci este imposi-
bil pentru Oscar sa o determine. Trapa secreta de care dispune Bob pentru decriptare
este descompunerea n = pq. Deoarece Bob stie aceasta factorizare, el poate calcula
(n) = (p 1)(q 1) si apoi determina exponentul de decriptare a folosind algoritmul lui
Euclid extins (a se vedea Anexa).

8.2 Implementarea sistemului RSA


Pentru a realiza criptarea, Bob trebuie sa efectueze urmatorii pasi (fiecare din ei va fi
detaliat mai tarziu):

Tabelul 8.1:

1. Genereaza doua numere prime mari p, q.

2. Calculeaza n = pq si (n) = (p 1)(q 1).

3. Alege aleator un numar b (1 < b < (n)) astfel ca cmmdc(b, (n)) = 1.

4. Calculeaza a = b1 mod (n) folosind algoritmul lui Euclid extins.

5. Face public n si b.

Un atac evident al sistemului consta n ncercarea de factorizare a lui n. Daca se


realizeaza aceasta, este usor de determinat (n) = (p 1)(q 1) si de calculat exponentul
de decriptare a plecand de la b.
8.2. IMPLEMENTAREA SISTEMULUI RSA 139

Deci, pentru ca sistemul RSA sa fie sigur, este necesar ca n sa fie suficient de mare
pentru ca factorizarea sa sa fie imposibila (din punct de vedere al complexitatii). Algorit-
mii de factorizare actuali pot descompune rapid numere de pana la 200 cifre zecimale. Se
recomanda de aceea pentru siguranta sa se lucreze cu numere prime p si q de cel putin
300 cifre fiecare, deci n va avea peste 500 cifre. Aproape toate implementarile actuale ale
sistemului folosesc chei de 1024 2048 biti2 .
Cu intentia ca vom reveni asupra problemelor legate de numere prime mari, sa studiem
ntai operatiile necesare pentru criptare si decriptare. Orice astfel de calcul se bazeaza
pe o exponentiere modulo n. Cum n este foarte mare, vom utiliza aritmetica numerelor
mari pentru lucrul n Zn , timpul de calcul necesar fiind direct proportional cu numarul
de biti ai lui n.
Daca n ocupa k biti n memorie (deci k = [log2 n] + 1), prin metode de calcul uzuale
se ajunge la concluzia ca suma a doua numere de k biti se face n O(k), iar nmultirea n
O(k 2 ). La fel si reducerea modulo n. Deci, pentru x, y Zn , numarul xy mod n se poate
determina prin calcule de complexitate O(k 2 ). Vom numi aceasta operatie multiplicare
modulara.
Sa cercetam acum exponentierea modulara xc mod n. O modalitate de calcul consta n
efectuarea de c1 multiplicari modulare proces foarte ineficient pentru c mare, deoarece
algoritmul devine de complexitate exponentiala.
Exista nsa un algoritm de exponentiere rapida, care realizeaza xc mod n cu complexi-
tate O(k 3 ) (deci polinomial). Acesta utilizeaza descompunerea binara a lui c,
s1
ci 2i
X
c=
i=0

unde s (s k) este numarul de biti ai lui c, iar ci {0, 1}.


Exponentierea se face doar prin ridicari la patrat si maxim s nmultiri 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 8.2. Sa reluam datele din Exemplul ??. Calculul lui 97263533 mod 11413 se
efectueaza cu algoritmul de sus n numai 12 pasi; anume:

2
Un numar n de maxim 256 biti poate fi factorizat de un PC obisnuit n cateva ore, folosind un soft
free. Daca n are pana la 512 biti, el poate fi factorizat folosind o retea de cateva sute de calculatoare,
conform unei scheme prezentate n 1999. In 2003 a fost pusa sub semnul ntrebarii securitatea modulelor
de 1024 biti.
140 CAPITOLUL 8. 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, trebuie generate ntai numerele prime
p, q despre care vom discuta n sectiunea urmatoare. Etapa a doua (din Tabelul ??)
se efectueaza evident n O((log2 n)2 ). Etapele 3 si 4 folosesc algoritmul lui Euclid extins.
Ca rezultat general, calculul celui mai mare divizor comun dintre a si b (cmmdc(a, b)) cu
a > b se poate realiza cu complexitatea O((log2 a)2 ).
In general, un algoritm RSA este cam de 1000 ori mai lent decat DES pentru o
implementare harwdare si cam de 100 ori la o implementare software. In [?] se dau cateva
tabele cu astfel de valori comparative, la nivelul anului 1995.

8.3 Teste de primalitate probabiliste


In realizarea sistemului de criptare RSA trebuie sa generam aleator numere prime cu
numar mare de cifre. Practic, se realizeaza secvente de numere, a caror primalitate se
testeaza, pana se ajunge la un numar prim. Pentru teste se folosesc algoritmi probabilisti,
al caror avantaj este rapiditatea (complexitatea lor este log n) dar care pot afirma uneori
primalitatea unor numere care nu sunt prime. Aceste erori se pot reduce la o marja
acceptabila prin multiplicarea testelor.
Problema generarii aleatoare este posibila din urmatorul considerent. Un rezultat din
teoria numerelor (numit Teorema rarefierii numerelor prime) afirma ca sunt circa n/log n
numere prime mai mici decat n. Astfel, pentru un modul de 512 biti, un numar p de 256
biti are o probabilitate 1/logp 1/177 de a fi prim. Deci se fac n medie cam 177 generari
de numere p pentru a obtine un numar prim (daca se foloseste si faptul ca se genereaza
numai numere impare, aceasta reduce la jumatate numarul de ncercari). Rezulta ca este
practic sa se construiasca numere mari, care sunt probabil prime, pe baza carora sa se
realizeze criptarea RSA. Vom detalia acest procedeu.
Definitia 8.1. O problema de decizie este o problema care pune o ntrebare al carui
raspuns este dicotomic (Da/Nu).
8.3. TESTE DE PRIMALITATE PROBABILISTE 141

Un algoritm probabilist este un algoritm care foloseste numere aleatoare.


Definitia 8.2. Un algoritm Monte - Carlo pozitiv este un algoritm probabilist care rezolva
o problema de decizie n care orice raspuns pozitiv este corect, dar pentru care un raspuns
negativ poate fi incorect.
In mod similar se defineste algoritmul Monte - Carlo negativ.
Un algoritm Monte - Carlo pozitiv are o probabilitate de eroare  daca pentru orice
problema al carei raspuns ar trebui sa fie pozitiv, algoritmul da un raspuns negativ cu
probabilitatea cel mult .
Problema de decizie folosita aici, numita Problema de descompunere este
Fiind dat un numar ntreg n, se poate el descompune n produs de alte numere suprau-
nitare mai mici ?
Vom prezenta n aceasta sectiune doi algoritmi de tip Monte Carlo pozitiv care rezolva
aceasta problema de de decizie.

8.3.1 Algoritmul Solovay - Strassen


Sa reamintim ntai cateva notiuni matematice:
Definitia 8.3. Fie p 3 numar prim si a Zp . Spunem ca a este rest (reziduu) patratic
modulo p daca ecuatia x2 a (mod p) are solutie n Zp .
In caz contrar, un numar a 6= 0 nu este rest patratic.
Exemplul 8.3. Resturile patratice modulo 11 sunt 1, 3, 4, 5, 9 Aceasta deoarece n Z11
avem (1)2 = 1, (5)2 = 3, (2)2 = 4, (4)2 = 5, (3)2 = 9.
Problema resturilor patratice consta n a decide daca un numar n dat este sau nu un
rest patratic. Un algoritm determinist pentru rezolvarea acestei probleme se bazeaza pe
Teorema 8.1. (Criteriul lui Euler). Daca p 3 este prim, un numar a este rest patratic
modulo p daca si numai daca
p1
a 2 1 (mod p)
Demonstratie. Sa presupunem a x2 (mod p). Cum xp1 1 (mod p) (Teorema lui
Fermat) pentru x 6 0 (mod p),vom avea
p1 p1
a 2 (x2 ) 2 xp1 1 (mod p).
p1
Invers, fie a 2 1 (mod p) si b Zp un element primitiv (de ordin p 1). Atunci
a bi (mod p) pentru un anumit i. Calculam
p1 p1 i(p1)
1a 2 (bi ) 2 b 2 (mod p).
Ordinul p 1 al lui b va divide i(p 1)/2. Deci i este par si radacinile patrate ale lui a
sunt bi/2 .
142 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA

Definitia 8.4. Daca p 3 este prim, pentru orice numar a 0 se defineste simbolul
Legendre prin

! 0 daca a 0 (mod p)
a


= 1 daca a este rest patratic modulo p
p
1


daca a nu este rest patratic modulo p

Teorema ?? asigura ca a(p1)/2 1 (mod p) daca si numai daca a este rest patratic
modulo p. Daca a este multiplu de p, evident a(p1)/2 0 (mod p). In sfarsit, daca a nu
este rest patratic modulo p, avem a(p1)/2 1 (mod p) deoarece ap1 1, a(p1)/2 6
1 (mod p) si 1 este singura radacina patrata diferita de 1 modulo p. Este deci adevarata
teorema urmatoare:

Teorema 8.2. Daca p este numar prim impar, atunci


!
a p1
a 2 (mod p)
p

Simbolul lui Legendre se poate generaliza astfel:

Definitia 8.5. Fie n = pe11 . . . pekk un numar impar descompus n factori primi. Daca
a 0 este un numar ntreg, se defineste simbolul Jacobi prin
k
!ei
a a
  Y
=
n i=1 pi

6278
 
Exemplul 8.4. Sa calculam simbolul Jacobi . Descompunerea n factori primi a
9975
2
lui 9975 este 9975 = 3 5 7 19. Avem atunci
6278 2 6278
   2    
6278 6278 6278 2 3 6 8
       
= = =
9975 3 5 7 19 3 5 7 19
2
= (1)(1) (1)(1) = 1

Fie n > 1 un numar impar.


a
 
n1
Daca n este prim, atunci pentru orice a, avem a 2 (mod n).
n
Invers, daca n nu este prim, este posibil ca egalitatea de sus sa fie falsa. Daca
congruenta se verifica, spunem ca n este numar Euler pseudo - prim pentru baza a.
De exemplu, 91 este pseudo-prim pentru baza 10 deoarece
10
 
= 1 = 1045 (mod 91).
91
Putem enunta acum testul de primalitate Solovay - Strassen pentru un numar impar n:
8.3. TESTE DE PRIMALITATE PROBABILISTE 143

1. Se genereaza aleator un numar a Zn ;


a
 
2. x ;
n
3. if x = 0 then n nu este prim
n1
4. y a 2 (mod n);

5. if x y (mod n) then n este prim,


else n nu este prim.

n1
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 fara a factoriza pe n (altfel
n
ne nvartim ntr-un cerc vicios !!).
Acest lucru se poate realiza folosind cateva proprietati. Anume:

Lema 8.1. Fie n un ntreg pozitiv impar. Atunci


x y
   
1. Daca x y (mod n) atunci = ;
n n
(
2 1 daca n 1 (mod 8)
 
2. =
n 1 daca n 3 (mod 8)

xy x y
     
3. = ;
n n n
Lema 8.2. Fie m, n doua numere ntregi pozitive impare. Atunci
 
n

m
 daca m 3 (mod 4), n 3 (mod 4)
= m
n n

m
altfel

Lasam ca exercitiu demonstratiile celor doua leme.


7411
 
Exemplul 8.5. Sa calculam simbolul Jacobi . Vom avea succesiv:
9283
4 
7411 9283 1872 2 117 117
         
= = = = =
9283  7411  7411  7411 7411 7411
7411 40 2 3 5 5 117 2
        
= = = = = = = 1
117 117 117 117 117 5 5
144 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA

 
O analiza sumara arata ca se poate calcula simbolul Jacobi m n
folosind cel mult
2
O(log n) reduceri modulare, fiecare n timp O((log n) ). Deci complexitatea poate fi
estimata la O((log n)3 )3 .
Se poate arata ca numarul de baze a pentru care un numar neprim n este pseudo -
prim Euler, este cel mult n/2. Aceasta duce la concluzia ca testul de primalitate Solovay
- Strassen este un algoritm Monte Carlo pozitiv pentru problema de descompunere, cu
probabilitate de eroare 1/2.
Un studiu referitor la complexitatea aplicarii acestui test de primalitate si a proba-
bilitatii de eroare se poate gasi n [?].

8.3.2 Algoritmul Miller - Rabin


Acest algoritm este cunoscut si sub numele de testul de tare pseudo - primalitate. Forma
sa este:

1. Se descompune n 1 = 2k m unde m este impar;

2. Se alege aleator ntregul a [2, n 2];

3. b am (mod n)

4. if b 1 (mod n) then n este prim, Stop;

5. for i 0 to k 1 do
5.1. if b 1 (mod n) then n este prim, Stop,
else b b2 (mod n)

6 n nu este prim, Stop

Evident, algoritmul este polinomial, de complexitate O((log n)3 ).

Teorema 8.3. Algoritmul Miller - Rabin este un algoritm Monte Carlo pozitiv pentru
problema de descompunere.

Demonstratie. Sa presupunem prin absurd ca algoritmul raspunde ca un numar prim n


se poate descompune, adica am 6 1 (mod n). Vom urmari sirul de valori pe care le ia b.
k1
Cum la fiecare iterare b este ridicat la patrat, acest sir este am , a2m , . . . , a2 m .
Vom avea deci
i
a2 m 6 1 (mod n) pentru 0 i k 1.
3
O analiza mai detaliata poate reduce aceasta complexitate la O((log n)2 ).
8.3. TESTE DE PRIMALITATE PROBABILISTE 145

k k1
Deoarece n este prim, teorema lui Fermat da a2 m 1 (mod n). Deci a2 m este o
radacina patrata a lui 1 modulo n.
Din faptul ca n este prim, singurele radacini patrate ale lui 1 sunt 1. Aceasta
afirmatie se poate arata astfel:
x este radacina patrata a lui 1 modulo n daca si numai daca n|(x 1)(x + 1). Cum n
este prim, avem n|(x 1) (deci x 1 (mod n)) sau n|(x + 1) (adica x 1 (mod n)).
k1 k1
Cum prin ipoteza a2 m 6 1 (mod n), avem a2 m 1 (mod n).
k2
Atunci a2 m trebuie sa fie radacina patrata a lui 1, diferita de 1, deci
k2
a2 m 1 (mod n).
Procedand iterativ, se ajunge la am 1 (mod n), ceea ce contrazice faptul ca algorit-
mul nu s-a oprit la Pasul 4.

Daca n este un numar impar neprim, atunci maxim 1/4 din numerele a Zn conduc
la un rezultat fals. In [?] se apreciaza ca numarul maxim de astfel de valori este (n)/4,
pentru n 6= 9.
De exemplu, pentru n = 91 (neprim), multimea valorilor a pentru care algoritmul
da raspuns incorect este {9, 10, 12, 16, 17, 22, 29, 38, 53, 62, 69, 74, 75, 79, 81, 82}. Pentru
n = 105 orice valoare a lui a conduce la un rezultat corect.
Deci, algoritmul Miller-Rabin este un algoritm Monte-Carlo pozitiv de probabilitate
 = 1/4.
In general se considera ca testul Miller - Rabin este mai bun decat Solovay - Strassen.
Cateva motive:

1. Solovay - Strassen este mai complex computational.

2. Implementarea lui Solovay - Strassen este mai dificila din cauza calculului simbolului
Jacobi.

3. Probabilitatea de eroare pentru Solovay - Strassen este 1/2, pe cand la Miller -


Rabin ea se reduce la 1/4.

4. Deoarece orice valoare a lui a pentru care testul Miller - Rabin este gresit este
un numar Euler pseudo-prim (vezi Exercitiul ??), un test Miler - Rabin nu este
niciodata inferior unui test Solovay - Strassen.

Deoarece orice implementare a unui sistem RSA trebuie nsotita de un generator de


numere prime mari, sunt necesare constructii care sa genereze rapid astfel de numere.
Bruce Schneier propune urmatoarea varianta ([?]):

1. Se genereaza un numar aleator p de n biti.

2. Se verifica daca primul si ultimul bit sunt 1.


146 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA

3. Se verifica daca p nu este divizibil cu numere prime mici (3, 5, 7, 11, . . .)4 .
4. Se aplica testul Miller - Rabin cu o valoare aleatoare a. Daca p trece testul, se
ia alta valoare pentru a. Cinci teste sunt suficiente. Pentru viteza, se recomanda
sa se ia valori mici pentru a. Daca p esueaza la unul din cele cinci teste, se reia
algoritmul.
Se apreciaza ca utilizarea pasului 3, cu o testare a tuturor numerelor prime pana la 256
elimina aproape 80% din cazurile nefavorabile.

8.4 Securitatea sistemului RSA


Vom trece n revista cateva modalitati de atac ale sistemelor de criptare RSA.
Ca o prima observatie, RSA nu rezista la un atac de tipul man-in-the middle, strategia
fiind cea prezentata n cazul general al sistemelor de criptare cu cheie publica. De aceea,
un sistem RSA este nsotit permanent de un certificat generat conform unui protocol
P KI (Public Key Infrastructure) si binenteles de un generator de numere prime.

8.4.1 Informatii despre p si q


Evident, cunoasterea lui (n) este suficienta pentru spargerea sistemului. In acest caz,
totul se reduce la rezolvarea n N N a sistemului
(
pq = n
(p 1)(q 1) = (n)
sau - dupa substitutie - a ecuatiei
X 2 (n (n) + 1)X + n = 0
Deci, daca Oscar determina (n), el poate factoriza n si sparge sistemul.
Cu alte cuvinte, calculul lui (n) nu este mai simplu decat factorizarea lui n.
De asemenea, o slabiciune consta n alegerea unor numere p, q prime apropiate unul
de altul. In acest caz (cu p >q), vom avea (p q)/2 un numar foarte mic, iar (p + q)/2
un numar foarte apropiat de n. In plus,
(p + q)2 (p q)2
n= ,
4 4
deci membrul stang este patrat perfect.
Atunci, pentru factorizarea lui n se testeaza toate numerele ntregi x > n pana se
gaseste unul astfel ncat x2 n este patrat perfect; fie acesta y 2 . Atunci vom avea imediat
p = x + y, q = x y.
4
Multe implementari testeaza divizibilitatea cu numerele prime mai mici decat 256. Eficienta este
crescuta daca se merge pana la 2000
8.4. SECURITATEA SISTEMULUI RSA 147


Exemplul 8.6. Pentru n = 97343 se gaseste n = 311, 998. Apoi 3122 n = 1, ceea ce
conduce la factorizarea p = 313, q = 311.

Deci, n general este recomandabil ca cele doua numere prime p si q sa difere n


reprezentarea binara prin numarul de biti.

8.4.2 Exponentul de decriptare


Factorizarea modulului stiind exponentul de decriptare
Daca exista un algoritm care calculeaza exponentul de decriptare a fara a-l cunoaste pe
(n), acesta poate fi utilizat ca oracol5 ntr-un algoritm probabilist care descompune n.
Deci, se poate spune ca daca a este descoperit, secretul factorizarii lui n este compromis;
atunci Bob va trebui sa schimbe nu numai exponentul de decriptare, ci si modulul n.
Algoritmul de descompunere care va fi descris este de tip Las Vegas.

Definitia 8.6. Fie  (0  < 1). Un algoritm tip Las Vegas este un algoritm probabilist
care, pentru orice aparitie a unei probleme, poate oferi un raspuns totdeauna corect
sau poate esua si sa nu dea nici un raspuns, cu probabilitate .

Observatia 8.1. Un algoritm Las Vegas poate sa nu dea raspuns; dar daca da acest
raspuns este sigur corect. Algoritmii Monte Carlo n schimb dau totdeauna raspuns, desi
acesta uneori este incorect.

Deci, daca avem un algoritm Las Vegas pentru rezolvarea unei probleme, putem sa l
apelam de mai multe ori, pana se obtine un raspuns. Probabilitatea ca el sa nu raspunda
la m tentative consecutive este m .
Sa consideram un algoritm ipotetic A care calculeaza exponentul de decriptare a
plecand de la exponentul de criptare b. Se poate descrie atunci un algoritm Las Vegas
care utilizeaza A ca oracol. El este bazat pe studiul radacinilor patrate ale unitatii modulo
n, cand n = pq, p si q fiind numere prime impare.
In acest caz x2 1 (mod p) are ca singure solutii x 1 (mod p). La fel, x2
1 (mod q) are solutiile x 1 (mod q).
Din Teorema chineza a resturilor (a se vedea Anexa 2) rezulta ca congruenta x2
1 (mod n) este echivalenta cu x2 1 (mod p) si x2 1 (mod q).
Vom avea deci patru radacini patrate ale unitatii modulo n, care pot fi calculate cu
Teorema chineza a resturilor. Doua sunt solutiile triviale 1 (mod n), iar celelalte
numite netriviale sunt opuse modulo n.

Exemplul 8.7. Fie n = 403 = 13 31. Cele patru radacini patrate ale lui 1 modulo 403
sunt 1, 92, 311 si 402.
5
program care raspunde numai cu Da/Nu la o ntrebare - tip a utilizatorului
148 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA

Sa presupunem acum ca x este o radacina patrata netriviala a lui 1 modulo n, deci o


solutie a ecuatiei 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(x1, n) = q sau invers cmmdc(x+1, n) = q, cmmdc(x
1, n) = p. Acest cel mai mare divizor comun se poate calcula fara a sti descompunerea
lui n, aplicand algoritmul de mai jos, care foloseste A ca oracol:
1. Se genereaza 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 (esec);
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 (esec);
else x cmmdc(v0 + 1, n), Stop (p = x sau q = x).
Deci, cunoasterea unei radacini patrate netriviale a lui 1 modulo n determina descom-
punerea lui n printr-un calcul de complexitate polinomiala.
Exemplul 8.8. Fie n = 89855713, b = 34986517, a = 82330933 si sa consideram ca s-a
generat aleator w = 5. Vom avea:
ab 1 = 23 360059073378795.
La pasul 6 se obtine v = 85877701, iar la pasul 8.2, v = 1. La pasul 9 se va obtine
atunci cmmdc(85877702, n) = 9103.
Acesta este un factor al lui n; celalalt este n/9103 = 9871.
Trebuie demonstrata urmatoarea afirmatie:
Afirmatia 8.1. Procedeul descris este un algoritm.
Demonstratie. Ca o prima observatie, daca exista suficienta sansa si w este multiplu de
p sau q, atunci el se factorizeaza imediat (pasul 2).
Daca w este prim cu n, atunci se calculeaza succesiv wr , w2r , . . . prin ridicari succesive
t
la patrat, pana se ajunge la un t cu w2 r 1 (mod n). Deoarece ab 1 = 2s r
s
0 (mod (n)), se stie ca w2 r 1 (mod n). Deci bucla while va efectua maxim s iteratii.
La sfarsitul buclei se va gasi o valoare v0 6 1 (mod n) cu v02 1 (mod n). Daca
v0 1 (mod n), algoritmul esueaza; altfel, v0 este o radacina patrata netriviala a lui 1
modulo n care la pasul 12 permite descompunerea lui n.
Se poate arata ([?]) ca acest algoritm se termina cu succes cu probabilitate 1/2.
8.4. SECURITATEA SISTEMULUI RSA 149

Atacul lui Wiener


In [?] este dezvoltat un atac asupra sistemului de criptare RSA n care exponentul de
decriptare a este mic; mai exact, trebuie verificate conditiile

3a < n1/4 , q < p < 2q.

Deci, daca n are j biti, atunci atacul va fi eficient pentru orice sistem de criptare RSA n
care a are mai putin de j/4 1 biti, iar p si q au valori suficient de apropiate6 .
Din conditia a b 1 (mod (n)) rezulta ca exista un numar ntreg t astfel ca

a b t (n) = 1.

Relatia se poate rescrie


b t 1
=

a (n)

(n)
a

Pe de-alta parte, din n = p q > q 2 rezulta q < n; deci

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

Pe baza acestor relatii, putem evalua



b t a b t n 1 + t ((n) n) 3t n 3t
= = < =

an an an

n a a n

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



b t 1 1
< < .

an 1/4 3 a2

n a

Rezulta ca valoarea fractiei t/a este foarte apropiata de valoarea lui b/n. Din teoria
fractiilor continue se stie ca orice aproximare suficient de buna a lui b/n este una din
convergentele dezvoltarii n fractie continua a lui b/n. Sa descriem acest procedeu.

Definitia 8.7. O fractie continua (finita) este un m-tuplu [q1 , q2 , . . . , qm ] de numere natu-
rale care reprezinta notarea expresiei

1
q1 + 1
q2 + q3 +...+ q1
m

6
Bob poate fi tentat sa aleaga astfel de parametri, pentru cresterea vitezei de decriptare; reamintim,
RSA este un sistem relativ lent.
150 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA

Fie a, b doua numere ntregi pozitive prime ntre ele si (q1 , q2 , . . . , qm ) secventa caturilor
a
obtinute prin aplicarea algoritmului lui Euclid. Se verifica usor ca = [q1 , q2 , . . . , qm ].
b
Vom spune ca [q1 , q2 , . . . , qm ] este dezvoltarea n fractie continua a lui a/b.
Acum, pentru fiecare j (1 j m) definim Cj = [q1 , q2 , . . . , qj ] ca fiind a j-a
convergenta a lui [q1 , q2 , . . . , qm ]. Fiecare Cj se poate scrie ca un numar rational cj /dj ,
unde valorile cj si dj se pot defini recursiv astfel:


1 daca j = 0
0 daca j = 0
cj = q 1 daca j = 1 dj = 1 daca j = 1
qj cj1 + cj2 daca j 2 qj dj1 + dj2 daca j 2


Exemplul 8.9. Sa dezvoltam numarul rational 34/99 n fractie continua. Folosind algo-
ritmul lui Euclid se obtine [0, 2, 1, 10, 3], care este notarea fractiei
34 1
=0+
99 2 + 1+ 1 1
10+ 1
3

Convergentele acestei fractii sunt:


[0] = 0
[0, 2] = 1/2
[0, 2, 1] = 1/3
[0, 2, 1, 10] = 11/32
[0, 2, 1, 10, 3] = 34/99
Este adevarata urmatoarea teorema ([?],[?]):
Teorema 8.4. Daca cmmdc(a, b) = cmmdc(c, d) = 1 si
a c 1

<

b d 2 d2
atunci c/d este una din convergentele dezvoltarii n fractie continua a lui a/b.
Sa revenim acum la sistemul de criptare RSA. In conditiile 3a < n1/4 si q < p < 2q,
putem da urmatorul algoritm de factorizare a lui n:

1. Plecand de la n si b (publice), se afla dezvoltarea n fractie continua a lui b/n


(folosind algoritmul lui Euclid).

2. Se parcurg pe rand convergentele acestei dezvoltari. Daca exista convergenta t/a


ab1
care verifica t|(a b 1), se calculeaza (n) = .
t
3. Cu n si (n) se afla p si q, conform metodei din sectiunea 8.4.1.
8.4. SECURITATEA SISTEMULUI RSA 151

Daca sunt ndeplinite ipotezele de la nceputul acestui paragraf, Teorema ?? asigura


existenta unei convergente care satisface pasul 2 al algoritmului.
Tinand cont de observatiile anterioare, algoritmul lui Wiener poate fi detaliat:

Intrare: [q1 , q2 , . . . , qm ] dezvoltarea n fractie continua a lui b/n.


Algoritm:
1 c0 1, c1 q1 , d0 0, d1 1;
2. for j 1 to m do
2.1. if cj |(dj b 1) then
2.1.1. m (dj b 1)/cj ;
2.1.2. Fie p, q radacinile ecuatiei x2 (n m + 1)x + n = 0
2.1.3. if p, q Zn then return(p, q);
2.2. j j + 1;
2.3. cj qj cj1 + ck2 , dj qj dj1 + dj2 ;
3. return(esec);

Exemplul 8.10. Sa presupunem ca n = 160523347, b = 60728973. Dezvoltarea n fractie


continua a lui b/n este

[0, 2, 1, 1, 1, 4, 12, 102, 1, 1, 2, 3, 2, 2, 36]

1 1 2 3 14
Primele convergente sunt: 0, , , , , ...
2 3 5 8 37
Primele cinci convergente nu verifica conditia de divizibilitate. Pentru 14/37 avem
nsa:
37 60728973 1
m= = 160498000.
14
Rezolvand ecuatia x2 25348x + 160523347 = 0 obtinem radacinile 12347 si 13001. Deci
avem factorizarea
160523347 = 12347 13001

8.4.3 Informatie partiala despre textul clar


Sa studiem putin informatia din textul clar care ar putea trada sistemul de criptare RSA.
Stiind ca y = eK (x), vom considera doua exemple de informatie partiala data de y despre
x:

1. par(y) - da valoarea ultimului bit din scrierea binara a lui x;

2. jum(y) - va da 0 daca 0 x < n/2, 1 daca n/2 x n 1.


152 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA

Vom arata ([?]) ca orice algoritm care poate calcula par(y) sau jum(y) poate fi utilizat ca
oracol pentru regasirea textului clar x. Altfel spus, a calcula una din aceste functii este
la fel de dificil cu a decripta tot textul y.
Faptul ca cele doua functii sunt polinomial echivalente rezulta din

jum(y) = par(y eK (2) mod n) par(y) = jum(y eK (21 ) mod n)

si din relatia eK (x1 x2 ) = eK (x1 )eK (x2 ).


Sa aratam acum cum se poate calcula x = dK (y) cu ajutorul unui oracol care da
valoarea jum(y):

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]

La pasul 2 se calculeaza yi = jum(y (eK (2))i ) = jum(eK (x 2i )) pentru 0 i [log2 n].


Se observa ca
n
 
jum(eK (x)) = 0 x 0,
 2  
n n 3n

jum(eK (2x)) = 0 x 0, ,
 4 2 4  
n n 3n n 5n 3n 7n
  
jum(eK (4x)) = 0 x 0, , , , , etc.
8 4 8 2 8 4 8
In acest mod, x se poate localiza printr-o cautare binara, realizata la pasii 7 11.

Exemplul 8.11. Fie n = 1457, b = 779, iar textul criptat este y = 722. Calculam
eK (2) = 946. Sa presupunem ca oracolul jum din pasul 2.1. da urmatoarele raspunsuri:

i 0 1 2 3 4 5 6 7 8 9 10
yi 1 0 1 0 1 1 1 1 1 0 0
Cautarea binara este realizata n tabelul:
8.4. SECURITATEA SISTEMULUI RSA 153

i jos mijloc sus


0 0, 00 728, 50 1457, 00
1 728, 50 1092, 75 1457, 00
2 728, 50 910, 62 1092, 75
3 910, 62 1001, 69 1092, 75
4 910, 62 956, 16 1001, 69
5 956, 16 978, 92 1001, 69
6 978, 92 990, 30 1001, 69
7 990, 30 996, 00 1001, 69
8 996, 00 998, 84 1001, 69
9 998, 84 1000, 26 1001, 69
10 998, 84 999, 55 1000, 26
998, 84 999, 55 999, 55

Textul clar este deci x = [999, 55] = 999.

8.4.4 Algoritmi de descompunere n factori primi


Sunt extrem de numeroase lucrarile care trateaza descompunerea numerelor n factori
primi. De aceea aici vom face doar o trecere n revista a celor mai cunoscuti algoritmi de
factorizare.
Astfel, cel mai simplu pare a fi ciurul lui Eratostene care consta n ncercarea
de
mparti numarul n impar prin toate numerele ntregi impare din intervalul [3, n]. Pentru
n < 1012 tehnica este destul de eficienta.

Metoda p 1
Un algoritm simplu care se poate aplica uneori si la numere mari este metoda p 1
enuntata de Pollard n 1974. In esenta, el foloseste trei variabile de intrare: numarul
n (impar) care trebuie descompus, o margine B si un numar oarecare g [2, n 1].
Descrierea algoritmului este:
Intrare: n, B, g.
1. a g
2. for j = 2 to B do a 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 gasit divizor al lui n

Sa vedem cum functioneaza acest algoritm:


Presupunem ca p este un divizor prim al lui n si ca toti divizorii primi ai lui p 1 la
puterile la care apar n descompunerea lui p 1 sunt mai mici decat B. Atunci p 1|B!.
La terminarea ciclului de la pasul 2, avem

a g B! (mod n) deci a g B! (mod p)


154 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA

deoarece p|n. Cum g p1 1 (mod p), conform teoremei lui Fermat (n afara de cazul
cand p|g) si cum (p 1)|B!, se obtine a 1 (mod p).
Deci, la pasul 3 se ajunge la p|(a 1) si p|n, de unde rezulta p|d = cmmdc(a 1, n).
Numarul d este un divizor netrivial al lui n (n afara de cazul a = 1 la pasul 3).
Avand un divizor netrivial d, procesul se poate itera.

Exemplul 8.12. Sa consideram n = 15770708441. Aplicand metoda p 1 cu B = 180,


se gaseste a = 11620221425, iar d = 135979. Se ajunge la descompunerea finala
15770708441 = 135979 115979.
Descompunerea a reusit deoarece 135978 are numai factori primi mici:
135978 = 2 3 131 173. Luand deci B 173 se obtine 135978|B!.

Observatia 8.2. Conditia ca metoda sa functioneze este ca divizorii primi la puterile


la care apar n descompunerea lui p 1 sa fie mai mici decat b. Daca s-ar solicita ca
doar divizorii primi sa verifice aceasta conditie, rezultatul ar fi fals. Astfel, sa consideram
p = 17 si B = 3. Atunci p 1 = 24 . Vom avea 2 < 3 dar 16 nu este un divixor al lui 3 !!

Pentru valori relativ mici ale lui B algoritmul


este de complexitate polinomial scazuta
(O(BlogB(log n)3 )). Daca B creste pana la n, el va reusi totdeauna, dar nu va fi mai
rapid decat ciurul lui Eratostene.
Deci slabiciunea metodei rezida n faptul ca n trebuie sa admita un divizor p cu
proprietatea ca p 1 sa aiba numai factori primi mici.
Pentru a rezista la acest atac, se recomanda folosirea numerelor prime tari.

Definitia 8.8. Se numeste numar prim tare un numar prim p care verifica conditiile:
1. p 1 are un divizor prim mare r;
2. p + 1 are un divizor prim mare;
3. r 1 are un divizor prim mare.

Exista diversi algoritmi pentru generarea numerelor prime tari. Pentru exemplificare
am ales algoritmul lui Gordon:

1. Se genereaza aleator doua numere prime mari distincte s, t.


2. Se alege un numar aleator i0 . Se afla primul numar prim de forma 2 i t + 1, unde
i i0 , i0 + 1, . . .. Fie r = 2 i t + 1 acest numar prim.
3. p0 2 (sr2 (mod r)) s 1;
4. Se alege un numar aleator j0 . Se afla primul numar prim de forma p0 + 2 j r s,
unde j j0 , j0 + 1, . . .. Fie p = p0 + 2 j r s acest numar prim.
5. return(p)

Teorema 8.5. Numarul p generat de algoritmul Gordon este un numar prim tare.
8.4. SECURITATEA SISTEMULUI RSA 155

Demonstratie. Cum r 6= s, vom avea sr1 1 (mod r) (Fermat). Deci p0 1 (mod r) si


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 numarul prim t divide pe r 1.

Practic, generarea unui numar prim tare se realizeaza n trei pasi:


(i) Cu un generator de numere aleatoare, se genereaza numerele s, t, i0 , j0 ;
(ii) Se testeaza daca s si t sunt numere prime, folosind algoritmul Miller - Rabin;
(iii) In caz afirmativ, se aplica algoritmul lui Gordon, bazat de asemenea pe algoritmul
Miller - Rabin.
De multe ori, pentru criptarea RSA este suficient sa se foloseasca numere prime mari
p1
p cu proprietatea ca este de asemenea numar prim.
2
Exemplul 8.13. In practica este folosit frecvent exponentul de criptare b = 3. In acest
caz nsa, este necesar ca p 1 si q 1 sa nu fie divizibile cu 3. Rezultatul este o criptare
extrem de rapida, deoarece se foloseste o singura nmultire modulara si o singura ridicare
la patrat modulara.
De asemenea este utilizat frecvent si exponentul b = 216 + 1 = 65537. Acest numar are
numai doi de 1 n reprezentarea binara, asa ca o criptare foloseste 16 ridicari la patrat
modulare si o singura nmultire modulara.

Algoritmul lui Dixon si sita patratica


Algoritmul lui Dixon se bazeaza pe o idee extrem de simpla: daca se pot afla doua
numere x, y cu x 6 y (mod n) dar x2 y 2 (mod n), atunci cmmdc(x y, n) este un
divizor netrivial al lui n.
Metoda utilizeaza o baza B de factori primi mici. Se cauta ntai mai multe numere
x pentru care divizorii primi ai lui x2 mod n sunt n B. Se formeaza apoi produse cu
aceste numere, n asa fel ncat fiecare factor prim al patratului produsului sa apara de un
numar par de ori. Aceasta conduce la o relatie x2 y 2 (mod n) care va da eventual
o descompunere a lui n.

Exemplul 8.14. Fie n = 15770708441 si alegem multimea B= {2, 3, 5, 7, 11, 13}. Se-
lectam
83409341562 3 7 (mod n)
120449429442 2 7 13 (mod n)
27737000112 2 3 13 (mod n)
Daca se ia produsul acestor trei congruente, se ajunge la

(8340934156 12044942944 2773700011)2 (2 3 7 13)2 (mod n)


156 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA

Reducand continutul parantezelor modulo n, se obtine


95034357852 5462 (mod n).
Vom calcula acum cmmdc(9503435785 546, 15770708441) = 115759,
care va da un divizor 115759 al lui n.

Fie B= {p1 , p2 , . . . , pB }; consideram un numar C putin mai mare decat B (o posi-


bilitate este C = B + 10) si presupunem ca am gasit C relatii de forma

x2j p1 1j p2 2j . . . pBBj , (1 j C).

Pentru fiecare j se considera vectorul binar (elementele sale se iau modulo 2)

j = (1j , . . . , Bj ) Z2B .

Daca se poate determina o submultime, formata din astfel de vectori, a caror suma modulo
2 sa fie (0, 0, . . . , 0), atunci patratul produsului elementelor xj corespunzatoare va avea n
B toti divizorii reprezentati de un numar par de ori.

Exemplul 8.15. Revenind la Exemplul ??, cei trei vectori care se construiesc sunt
1 = (0, 1, 0, 1, 0, 0), 2 = (1, 0, 0, 1, 0, 1), 3 = (1, 1, 0, 0, 0, 1).
Se verifica imediat ca 1 + 2 + 3 (0, 0, 0, 0, 0, 0) (mod 2).

Evident, a cauta o submultime de C vectori de suma nula modulo 2 revine la a cauta o


relatie de dependenta liniara (n Z2 ) ntre acesti vectori. Daca C > B, o asemenea relatie
exista si poate fi gasita usor prin eliminare gaussiana.
Ar mai fi de vazut cum se pot obtine acei xj pentru care x2j admit descompuneri n
factori primi din baza B. Sunt mai multe metode posibile pentru aceasta; de exemplu,
ciurul patratic construit de Pomerance foloseste numere ntregi de forma

xj = j + [ n], j = 1, 2, . . . .

De remarcat ca daca B este mare, este foarte posibil ca un ntreg xj sa se descompuna


n B, dar numarul acestor xj trebuie sa creasca pentru a cauta relatiile de dependenta.
Se arata ca alegerea optima pentru Bqeste n jur de

e logn log logn .

8.4.5 Alte tipuri de atac


Atac bazat pe proprietati multiplicative ale criptarii RSA
Fie m1 , m2 doua texte clare si c1 respectiv c2 textele criptate corespunzatoare. Vom avea

(m1 m2 )b mb1 mb2 c1 c2 (mod n)


8.4. SECURITATEA SISTEMULUI RSA 157

Aceasta proprietate de homomorfism a criptarii poate oferi unui adversar activ posibili-
tatea unui atac cu text clar ales.
Sa presupunem ca Oscar vrea sa decripteze mesajul c = mb (mod n) trimis de Bob lui
Alice, iar Alice are amabilitatea sa i decripteze lui Oscar orice text criptat primit (nafara
de c, bineinteles).
Atunci Oscar va alege un numar aleator x Zn , va calcula c1 = c xb (mod n) si 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 x1 (mod n).
Acest tip de atac este prevenit de obicei impunand anumite structuri speciale asupra
textelor clare.

Atac bazat pe un exponent mic de criptare


Asa cum s-a aratat n Exemplul ??, pentru marirea vitezei de criptare se prefera exponenti
mici de criptare (cum este b = 3). Aceasta alegere are unele slabiciuni, care permit atacuri
n anumite conditii.
Astfel, sa presupunem ca Alice doreste sa trimita acelasi text clar m la trei destinatari
diferiti, care au modulele ni , dar acelasi exponent de criptare b = 3. Deci textele criptate
vor fi ci = m3 (mod ni ) i = 1, 2, 3. Oscar le intercepteaza si rezolva sistemul
x c1 (mod n1 ), x c2 (mod n2 ), x c3 (mod n3 )
folosind teorema chineza a resturilor, care asigura existenta unui x [0, n1 n2 n3 ).
Deoarece m3 < n1 n2 n3 , va rezulta ca x = m3 .
Deci Oscar va afla textul clar m extragand radacina de ordinul 3 din solutia x.
In general, exponenti mici de criptare asigura o securitate redusa pentru mesajele mici
m: daca m < n1/b atunci textul clar poate fi dedus din textul criptat c = mb calculand
radacina de ordin b a lui c.
Folosirea unui modul comun de criptare de catre mai multi utilizatori permite de
asemenea un atac usor. Sa presupunem ca Alice trimite acelasi mesaj m catre doi utiliza-
tori care au cheile publice b1 , b2 dar acelasi modul n. Deci
c1 mb1 (mod n), c2 mb2 (mod n).
Fara a micsora generalitatea, putem presupune ca cmmdc(b1 , b2 ) = 1. Oscar va folosi
algoritmul lui Euclid pentru a determina numerele ntregi r, s astfel ca
r b1 + s b2 = 1
Unul din numerele r sau s este negativ; sa presupunem ca este r (pentru s negativ se
procedeaza analog). Atunci Oscar obtine textul clar m folosind egalitatea
(c1
1 )
r
cs2 m (mod n)
158 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA

Atacuri ciclice
Fie c = mb (mod n) un text criptat si k un ntreg pozitiv astfel ca
k
cb c (mod n)

(un astfel de k exista totdeauna, deoarece criptarea RSA este de fapt o permutare n
spatiul Zn al textelor clare). Rezulta ca
k1
cb m (mod n)
i
Aceasta observatie conduce la un atac ciclic: Oscar calculeaza cb (mod n) pentru
k
i = 1, 2, . . . pana gaseste un k astfel ca cb c (mod n). Atunci va decripta c n
k1
cb m (mod n).
Un atac ciclic generalizat consta n aflarea celui mai mic ntreg pozitiv k astfel ca
k
cmmdc(cb c, n) > 1. Vom avea implicatia
k k
cb c (mod p), cb 6 c (mod q) = k=p

si similar
k k
cb 6 c (mod p), cb c (mod q) = k=q
In ambele cazuri s-a obtinut factorizarea lui n.
Pe de-alta parte, daca
k k k
cb c (mod p), cb c (mod q) = k = n si cb c (mod n)
k1
In acest caz s-a reusit decriptarea m = cb (mod n).
Folosirea unor numere prime tari asigura o protectie suficienta pentru acest gen de
atac.

8.5 Sisteme de criptare nrudite cu RSA


8.5.1 Sistemul de criptare Rabin
Sistemul de criptare Rabin (propus n 1979) este o varianta a sistemului RSA, care ofera
o securitate de calcul echivalenta. Descrierea sa este:

Fie n = pq unde p, q sunt numere prime distincte, p, q 3 (mod 4). Se ia


P = C= Zn si K= {(n, p, q, B) | 0 B n 1}.
Pentru cheia K = (n, p, q, B) se definesc: s
B2 B
eK (x) = x(x + B) (mod n) dK (y) = +y
4 2
8.5. SISTEME DE CRIPTARE INRUDITE CU RSA 159

Observatia 8.3. Numerele prime n cu n 3 (mod 4) se numesc numere Blum.

Exista patru texte clare distincte care se pot cripta n acelasi text. Sa detaliem aceasta
afirmatie:
Fie una din cele patru radacini patrate modulo n ale unitatii, si x Zn . Efectuam
calculele
B 2
 2
B B B
     
2
eK x + = x+ = x2 + Bx = eK (x)
2 2 2 2
(calculele s-au realizat n Zn , iar mpartirea la 2 si 4 s-a facut prin nmultirea n Zn cu
21 respectiv 41 ).
Cele patru texte clare care se cifreaza n eK (x) sunt
x, x B, (x + B/2) B/2 si (x + B/2) B/2,
unde este o radacina patrata netriviala modulo n a unitatii.
Verificarea este imediata.
In general, daca nu dispune de informatii suplimentare, Bob nu are nici un mijloc de
a distinge care din cele patru mesaje este cel corect.
Sa vedem cum se realizeaza decriptarea. Bob primeste mesajul criptat y si ncearca
sa sa determine x astfel ca x2 + Bx y (mod n).
Aceasta este o ecuatie de gradul doi n x. Termenul de gradul 1 se poate elimina
folosind substitutia x1 = x + B/2 (sau echivalent x = x1 B/2).
Se ajunge la ecuatia
B2
x21 + y (mod n).
4
Notand membrul drept cu C, aceasta ecuatie se scrie x21 C (mod n). Deci decriptarea
se reduce la extragerea radacinilor patrate modulo n; operatie echivalenta cu rezolvarea
sistemului
x21 C (mod p) x21 C (mod q)
care, prin combinarea solutiilor fiecarei ecuatii va da patru radacini patrate modulo n.
Intr-o criptare corecta, C este totdeauna un rest patratic modulo p si q. Daca p
3 (mod 4), exista o formula simpla pentru extragerea radacinilor patrate dintr-un rest
patratic C modulo p. Avem (calculele se fac modulo p):
 2
C (p+1)/4 C (p+1)/2 C (p1)/2 C C

(s-a folosit Teorema ??). Cele patru radacini sunt deci

C (p+1)/4 (mod p), C (q+1)/4 (mod q)

Acestea, prin combinare folosind teorema chineza a resturilor, dau cele patru radacini
patrate ale lui C.
160 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA

Observatia 8.4. Nu se cunoaste un algoritm polinomial determinist pentru extragerea


radacinilor patratice modulo p pentru p 1 (mod 4); n aceasta situatie exista doar
algoritmi Las Vegas.

Dupa determinarea acestor radacini x1 , se afla x = x1 B/2, rezultat care da formula


de decriptare din enuntul metodei Rabin.

Exemplul 8.16. Fie n = 77 = 7 11 si B = 9. Functia de criptare este


eK (x) = x2 + 9x (mod 77)
iar cea de decriptare q
dK (y) = 1 + y 43 (mod 77).
Sa presupunem ca Bob vrea sa decripteze textul y = 22. El va trebui sa determine
radacinile patrate ale lui 23 modulo 7 si 11. Cum aceste doua module sunt congruente cu
3 modulo 4, se poate aplica formula aratata anterior:

23(7+1)/4 22 4 (mod 7) 23(11+1)/4 13 1 (mod 11).

Utilizand teorema chineza a resturilor, se obtin radacinile patrate ale lui 23 modulo 77:

11 2 a + 7 8 b (mod 77)

unde a = 4, b = 1. Calculand, se obtin valorile 10, 32. Cele patru texte clare
posibile (calculate modulo 77) vor fi deci:

10 43 = 44, 67 43 = 24, 32 43 = 66, 45 43 = 2.

Se verifica imediat ca toate aceste patru texte clare se cripteaza n 22.

Sa studiem acum securitatea sistemului de criptare Rabin. Sa presupunem ca exista


un algoritm de decriptare A; acesta poate fi atunci utilizat ntr-un algoritm Las Vegas
care descompune modulul n cu probabilitate 1/2; algoritmul este urmatorul:

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 (esec)
else cmmdc(x1 + r, n) = p sau q, Stop

B
 
Sa observam ntai ca y = eK r , deci la pasul 3 se decripteaza x sub forma r B/2.
2
Cum la pasul 5. avem x21 r2 (mod n), rezulta x1 r (mod n) sau x1 r (mod n),
unde este o radacina netriviala modulo n a unitatii.
8.6. EXERCITII 161

In al doilea caz, n|(x1 r)(x1 + r) si 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, adica o descompunere
a lui n.
Sa calculam probabilitatea de succes a algoritmului ([?]), din n 1 extrageri posibile
ale lui r. Pentru doua resturi nenule r1 , r2 , se defineste

r1 r2 r12 r22 (mod n)

Aceasta este evident o relatie de echivalenta. Toate clasele de echivalenta din Zn au cate
patru elemente, fiecare clasa fiind de forma [r] = {r, r}. In algoritmul anterior, doua
valori dintr-o clasa de echivalenta conduc la acelasi y.
Sa consideram un x1 calculat plecand de la valoarea x returnata de oracolul A pentru
un y dat. x1 este un element din [r]. Daca x1 = r, algoritmul esueaza; daca x1 = r, el
reuseste sa descompuna n. Cum r este aleator, cele patru posibilitati sunt echi-probabile,
deci algoritmul da reusita n 50% din cazuri.

8.6 Exercitii
8.1. Demonstrati lemele ?? si ??.
8.2. Fie p, q numere prime impare distincte si n = pq. Definim
(p 1)(q 1)
(n) =
cmmdc(p 1, q 1)

Folosim un sistem de criptare RSA n care s-a facut modificarea a b 1 (mod (n)).
(a) Demonstrati ca operatiile de criptare si decriptare sunt operatii inverse si n acest
sistem.
(b) Daca p = 37, q = 79 si b = 7, calculati valoarea exponentului a atat n acest
sistem cat si n sistemul RSA normal.
8.3. O modalitate curenta de a mari viteza de decriptare foloseste teorema chineza a
resturilor. Sa presupunem ca n = pq si dK (y) = y a (mod n). Definim dp = d (mod (p
1)), dq = d (mod (q 1)) si Mp = q 1 (mod p), Mq = p1 (mod q).
Vom considera algoritmul

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

(a) Demonstrati ca valoarea x returnata este de fapt y d (mod n).


162 CAPITOLUL 8. SISTEMUL DE CRIPTARE RSA

(b) Pentru p = 1511, q = 2003 calculati dp , dq , Mp , Mq si apoi decriptati textul y =


152702 folosind algoritmul din acest exercitiu.

8.4. Pentru n = 837, 851 1189 aflati numarul de baze b pentru care numarul n este Euler
pseudo-prim.

8.5. Scrieti un program pentru calculul simbolului Jacobi, folosind Lemele ?? si ??. Sin-
gura operatie de factorizare permisa este mpartirea la 2. Valori de test:
610 20964 1234567
     
, ,
987 1987 11111111
8.6. Sa se arate ca orice numar a pentru care testul Miller - Rabin da rezultat fals este un
numar Euler pseudo-prim. Reciproca este adevarata daca si numai daca n 3 (mod 4).

8.7. Fie p un numar prim impar si cmmdc(a, p) = 1.


a) Sa presupunem ca i 2 si b2 a (mod pi1 ). Demonstrati ca exista un x Zp unic
astfel ca x2 a (mod pi ) si x b (mod pi1 ).
Gasiti o modalitate eficienta de calcul a lui x.
(b) Aplicati punctul anterior n urmatoarea situatie: plecand de la congruenta 62
17 (mod 19), aflati radacinile patrate ale lui 17 modulo 192 si modulo 193 .
(c) Aratati ca numarul solutiilor congruentei x2 a (mod pi ) este 0 sau 2, (i 1).

8.8. Folosind metoda p 1 si diverse margini B, factorizati 262063 si 9420457. Cat este
B pentru fiecare caz ?

8.9. Fie n = 317940011 si b = 7753781. Descompuneti n n factori, folosind algoritmul


lui Wiener.

8.10. Consideram algoritmul lui Rabin cu p = 199, q = 211, n = pq si B = 1357.


(a) Criptati mesajul 32767;
(b) Determinati cele 4 mesaje clare care duc la textul criptat y = eK (32767).
Capitolul 9

Sistemul de criptare El Gamal

9.1 Descrierea algoritmului de criptare El Gamal


Sistemul de criptare El Gamal1 , prezentat n 1985 (vezi [?]) de Taher ElGamal, se bazeaza
pe problema logaritmului discret (P LD), care este urmatoarea:

Fie p numar prim si , Zp , 6= 0.


Sa se determine a Zp1 astfel ca

a (mod p).

Acest ntreg a daca exista este unic si se noteaza log .



Exemplul 9.1. Fie p = 11 si = 6. Toate elementele din Z11 pot fi exprimate ca puteri
ale lui :
a 0 1 2 3 4 5 6 7 8 9
6a (mod 11) 1 6 3 7 9 10 5 8 4 2
De aici rezulta imediat tabelul logaritmilor n baza 6:

1 2 3 4 5 6 7 8 9 10
log6 0 9 2 8 6 1 3 7 4 5

Pentru = 3 nsa nu vom avea totdeauna solutie. Deoarece


a 0 1 2 3 4 5 6 7 8 9
a
3 (mod 11) 1 3 9 5 4 1 3 9 5 4

valorile {2, 6, 7, 8, 10} nu pot fi exprimate ca logaritmi n baza 3. Altfel spus, ecuatia
log3 x = nu are solutie n Z11 pentru aceste valori ale lui .
1
Implementari ale sistemului sunt continute n softuri pentru GNU Privacy Guard si PGP pentru a
lista doar cele mai cunoscute aplicatii.

163
164 CAPITOLUL 9. SISTEMUL DE CRIPTARE EL GAMAL

Observatia 9.1. Pentru problema logaritmului discret, 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). Teorema lui Fermat asigura p1 1 (mod p).

La o alegere convenabila a lui p, P LD este N P - completa. Pentru siguranta, p se


alege de minim 512 biti2 iar p 1 sa aiba cel putin un divizor prim mare. Pentru un
astfel de modul p, spunem ca problema logaritmului discret este dificila n Zp . Utilitatea
acestei cerinte rezida n faptul ca, desi este foarte dificil de calculat un logaritm discret,
operatia inversa de exponentiere este foarte simpla (dupa cum s-a vazut la sistemul
RSA).
Sistemul de criptare El Gamal este urmatorul:

Fie p numar prim pentru care P LD este dificila n Zp , si fie Zp primitiv.


Definim P= Zp , C= Zp Zp si K= {(p, , a, ) | a (mod p)}.
Valorile p, , sunt publice, iar a este secret.
Pentru K = (p, , a, ) si k Zp1 aleator (secret) se defineste

eK (x, k) = (y1 , y2 )

unde y1 = k (mod p), y2 = x k (mod p).


Pentru y1 , y2 Zp se defineste

dK (y1 , y2 ) = y2 (y1a )1 (mod p)

Verificarea este imediata:

y2 (y1a )1 x k (ka )1 x k ( k )1 x (mod p)

Sistemul este evident nedeterminist: criptarea depinde de x si de o valoare aleatoare


aleasa de Alice. Exista deci mai multe texte criptate corespunzatoare unui anumit text
clar.

Exemplul 9.2. Sa alegem p = 2579, = 2, a = 765. Prin calcul se obtine =


2765 (mod 2579) = 949.
Sa presupunem ca Alice vrea sa trimita mesajul x = 1299. Ea alege aleator k (sa
spunem k = 853) si calculeaza y1 = 2853 = 435, apoi y2 = 1299 949853 = 2396 (toate
calculele se fac modulo 2579).
Cand Bob primeste mesajul criptat y = (435, 2396), el va determina

x = 2396 (435765 )1 = 1299 (mod 2579).


2
Pentru o securitate pe termen lung se recomanda 1024 biti ([?]).
9.2. CALCULUL LOGARITMULUI DISCRET 165

Observatia 9.2.
1. Un dezavantaj al sistemului El Gamal consta n dublarea lungimii textului criptat
(comparativ cu lungimea textului clar).
2. Daca (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 dedusa o
criptare pentru 2m1 (sau 2m2 ). Acest lucru face sistemul El Gamal permeabil la un atac
cu text clar ales.
3. Indicatia ca pentru criptarea a doua texte diferite sa se foloseasca valori diferite ale
parametrului k este esentiala: astfel, sa prsupunem ca mesajele m1 , m2 au fost criptate n
(y1 , y2 ) respectiv (z1 , z2 ) folosind acelasi k. Atunci y2 /z2 = m1 /m2 si cunoasterea unuia
din mesaje l determina imediat pe celalalt.

9.2 Calculul logaritmului discret


In aceasta sectiune vom presupune ca p este numar prim, iar este o radacina primitiva
de ordinul p 1 a unitatii. Aceste doua valori fiind fixate, P LD se poate reformula astfel:

Fiind dat un Zp , sa se determine exponentul a Zp1 astfel ca a (mod p).

Evident aceasta problema se poate rezolva printr-o cautare directa (se calculeaza puterile
lui ) n timp O(p) si folosind O(1) memorie. Pe de-alta parte, daca se calculeaza anterior
ntr-o tabela toate valorile (a, a mod p), aflarea valorii cautate se poate face n O(1), dar
cu un spatiu de complexitate O(p).
Toti algoritmii construiti pentru calculul logaritmului discret folosesc un compromis
spatiu - timp.

9.2.1 Algoritmul Shanks


q 
Fie m = p 1 . Algoritmul Shanks este:

1. Se construieste lista L1 = {(j, mj (mod p)) | 0 j m 1};


2. Se construieste lista L2 = {(i, i (mod p)) | 0 i m 1};
3. Se determina perechile (j, y) L1 , (i, y) L2 (identice pe a doua pozitie);
4. Se defineste log = m j + i (mod (p 1))
De remarcat ca prin alegerea perechilor (j, y) L1 , (i, y) L2 vom avea
mj = y = i , deci mj+i = .
Invers, pentru orice putem scrie log = m j + i cu 0 i, j m 1; deci cautarea
de la pasul 3 se termina totdeauna cu succes.
Implementarea acestui algoritm se poate face n timp O(m) si spatiu O(m).
166 CAPITOLUL 9. SISTEMUL DE CRIPTARE EL GAMAL

Exemplul 9.3. Fie p = 809 si sa determinam 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, 1) (1, 99) (2, 93) (3, 308) (4, 559)


(5, 329) (6, 211) (7, 664) (8, 207) (9, 268)
(10, 644) (11, 654) (12, 26) (13, 147) (14, 800)
(15, 727) (16, 781) (17, 464) (18, 632) (19, 275)
(20, 528) (21, 496) (22, 564) (23, 15) (24, 676)
(25, 586) (26, 575) (27, 295) (28, 81)

Lista L2 a cuplurilor (i, 525 (3i )1 (mod 809)), 0 i 28 este:

(0, 525) (1, 175) (2, 328) (3, 379) (4, 396)
(5, 132) (6, 44) (7, 554) (8, 724) (9, 511)
(10, 440) (11, 686) (12, 768) (13, 256) (14, 355)
(15, 388) (16, 399) (17, 133) (18, 314) (19, 644)
(20, 754) (21, 521) (22, 713) (23, 777) (24, 259)
(25, 356) (26, 658) (27, 489) (28, 163)

Parcurgand (eventual simultan) cele doua liste se gaseste (10, 644) L1 , (19, 644) L2 .
Se poate scrie deci
log3 525 = 29 10 + 19 = 309.
Se verifica usor ca 3309 525 (mod 809).

9.2.2 Algoritmul Pohlig - Hellman


Mai ntai, un rezultat matematic:

Lema 9.1. Fie x Zp un element primitiv. Atunci

xm xn (mod p) m n (mod (p 1))

Demonstratie. Relatia xm xn (mod p) se poate rescrie xmn 1 (mod p). Dar


conform Teoremei lui Fermat xp1 1 (mod p) si xi 6 1 (mod p) pentru 0 < i < p 1.
Deci p 1|m n, sau m n 0 (mod (p 1)), relatie echivalenta cu m n (mod (p
1)).

Revenind la sistemul de criptare El Gamal, sa consideram descompunerea n factori


primi
k
ci
Y
p1= qi .
i=1
9.2. CALCULUL LOGARITMULUI DISCRET 167

Daca s-ar putea calcula a (mod qici ) pentru toti i = 1, . . . , k, atunci folosind Teorema
chineza a resturilor s-ar putea determina a mod (p 1).
Fie q un numar prim astfel ca p 1 0 (mod q c ) si p 1 6 0 (mod q c+1 ). Sa aratam
cum se poate calcula atunci x a (mod q c ) pentru orice x, (0 x q c 1).
Sa descompunem ntai x n baza q folosind egalitatea
c1
ai q i ,
X
x= (0 ai q 1).
i=0

Atunci se poate scrie a = x + q c s pentru un anumit numar ntreg pozitiv s.


La primul pas trebuie calculat a0 . Se porneste de la observatia ca
(p1)/q (p1)a0 /q (mod p).
c s)/q
Pentru a arata aceasta, deoarece (p1)/q (p1)(x+q (mod p), este suficient sa se
c
verifice ca (p1)(x+q s)/q (p1)a0 /q (mod p).
Aceasta relatie este adevarata daca si numai daca
(p 1)(x + q c s) (p 1)a0
(mod (p 1)),
q q
ceea ce se poate verifica prin calcul direct:
c1
(p 1)(x + q c s) (p 1)a0
!
p1 p 1
(x + q c s a0 ) = ai q i + q c s a0 =
X
=
q q q q i=0
p 1 c1 c1
! !
ai q i + q c s = (p 1) ai q i1 + q c1 s 0 (mod (p 1)).
X X
=
q i=1 i=1

Putem acum sa ncepem calculul lui (p1)/q (mod p). Daca (p1)/q 1 (mod p),
atunci a0 = 0. Altfel se calculeaza n Zp = (p1)/q , 2 , . . . pana se obtine un numar
ntreg pozitiv i pentru care i (p1)/q . Atunci a0 = i.
Daca c = 1, algoritmul se termina; altfel, (c > 1), se cauta valoarea lui a1 . Pentru
aceasta se defineste
1 = a0
si se noteaza x1 = log 1 (mod q c ).
c1
(p1)/q 2
ai q i , se va ajunge la relatia 1
X
Deoarece (evident) x1 = (p1)a1 /q (mod p).
i=1
(p1)/q 2
Se calculeaza atunci 1 (mod p) si se cauta i astfel ca
(p1)/q 2
i 1 (mod p).
Se ia a1 = i.
Daca c = 2, s-a terminat; n caz contrar, se mai efectueaza c 2 pasi pentru deter-
minarea coeficientilor a2 , . . . , ac1 .
168 CAPITOLUL 9. SISTEMUL DE CRIPTARE EL GAMAL

Formal, algoritmul Pohlig - Hellman este urmatorul:

1. Se calculeaza i = (p1)i/q (mod p), 0 i q 1;


2. 0 ;
3. for j = 0 to c 1 do
(p1)/q j+1
3.1 j (mod p);
3.2. Se cauta i astfel ca = i ;
3.3. aj i;
j
3.4. j+1 j aj q mod p.

c1
ai q i .
X
Algoritmul calculeaza a0 , a1 , . . . , ac1 unde log (mod q c ) =
i=0

Exemplul 9.4. Fie p = 29. Avem n = p 1 = 28 = 22 71 .


Sa alegem = 2, = 18 si ne punem problema determinarii lui a = log2 18. Pentru
aceasta se va calcula a (mod 4) si a (mod 7).
Sa ncepem cu q = 2, c = 2. Avem (toate calculele se efectueaza modulo 29):
0 = 1, 1 = 28/2 = 214 = 28, deci = 28/2 = 1814 = 28, de unde rezulta a0 = 1.
28/4
1 = 0 1 = 9, 1 = 97 = 28. Cum 1 = 28, rezulta a1 = 1.
Avem deci a 3 (mod 4).
Sa consideram acum q = 7, c = 1. Vom avea (modulo 29):
28/7 = 184 = 25, 1 = 28/7 = 24 = 16, apoi 2 = 24, 3 = 7, 4 = 25, deci a0 = 4
si a 4 (mod 7).
Se obtine sistemul a 3 (mod 4), a 4 (mod 7), de unde folosind teorema chineza
a resturilor a 11 (mod 28). Deci, log2 18 = 11 n Z29 .

9.2.3 Algoritmul Pollard Rho


Fie p un numar prim si Zp un element de ordin n (n < p). Vom considera G Zp
subgrupul ciclic generat de . Ne punem problema calcularii lui log , unde G este
arbitrar.
Fie Zp = S1 S2 S3 o partitie a lui Zp n trei multimi de dimensiuni aproximativ
egale; consideram functia

f : G Zn Zn G Zn Zn

definita prin

(x, a, b + 1) daca x S1
f (x, a, b) = (x2 , 2a, 2b) daca x S2
x S3


(x, a + 1, b) daca
Pe baza acestei functii vom genera recursiv triplete (x, a, b) cu proprietatea x = a b .
9.2. CALCULUL LOGARITMULUI DISCRET 169

Fie (1, 0, 0) tripletul initial (el are aceasta proprietate). In continuare


(
(1, 0, 0) daca i=0
(xi , ai , bi ) =
f (xi1 , ai1 , bi1 ) daca i1

In etapa a doua, se compara tripletele (x2i , a2i , b2i ) si (xi , ai , bi ) pana se gaseste o valoare
a lui i pentru care x2i = xi . In acel moment,

a2i b2i = ai bi .

Notand c = log , relatia poate fi rescrisa

a2i +cb2i = ai +cbi .

Cum are ordinul n, rezulta

a2i + cb2i ai + cbi (mod n)

sau
c(b2i bi ) ai a2i (mod n).
Daca cmmdc(b2i bi , n) = 1, atunci se poate obtine c:

c = (ai a2i ) (b2i bi )1 (mod n)



Exemplul 9.5. Sa consideram p = 809 si = 89; ordinul lui n Z809 este n = 101. Se
verifica usor ca = 618 G89 . Vom calcula log89 618.
Sa presupunem ca alegem partitia
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, . . . se obtin urmatoarele 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)
170 CAPITOLUL 9. SISTEMUL DE CRIPTARE EL GAMAL

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

O formalizare a algoritmului Pollard Rho pentru calculul logaritmului discret3 este:

Algoritm Pollard Rho(Zp , n, , )


1 Se defineste partitia Zp = S1 S2 S3 ;
2. (x, a, b) f (1, 0, 0), (x1 , a1 , b1 ) f (x, a, b)
3. while x 6= x1 do
3.1. (x, a, b) f (x, a, b);
3.2. (x1 , a1 , b1 ) f (x1 , a1 , b1 ), (x1 , a1 , b1 ) f (x1 , a1 , b1 );
4. if cmmdc(b1 b, n) > 1 then return(Esec)
else return((a a1 ) (b1 b)1 (mod n))
procedure f (x, a, b)
1. if x S1 then f ( x, a, (b + 1) (mod n));
2. if x S2 then f (x x, 2 a (mod n), 2 b (mod n));
3. if x S3 then f ( x, (a + 1) (mod n), b);
4. return(f ).
end procedure

In cazul cmmdc(b1 b, n) = d > 1, congruenta c (b1 b) a a1 (mod n) are d


solutii posibile. Daca d este destul de mic, aceste solutii se pot afla, iar o simpla cautare
exhaustiva printre ele va determina solutia corecta.

9.2.4 Metoda de calcul a indicelui


Aceasta metoda seamana cu unul din cei mai buni algoritmi de descompunere n factori.
Vom da doar o descriere informala a acestui algoritm.
Se foloseste o baza de divizori B compusa din B numere prime mici. Prima etapa
consta n aflarea logaritmilor elementelor din baza B.
In a doua etapa, folosind acesti logaritmi, se va determina logaritmul discret al lui .
I: Se construiesc C = B + 10 congruente modulo p de forma
a a a
xj p1ij p22j . . . pBBj (mod p), (1 j C).

Cu aceste C ecuatii de necunoscute log pi (1 i B) se ncearca aflarea unei solutii


unice modulo (p 1). In caz de reusita, primul pas este ncheiat.
3
Un algoritm similar Pollard Rho poate fi construit pentru factorizarea unui numar. Detalii se gasesc
de exemplu n [?].
9.3. SECURITATEA P LD FATA DE INFORMATII PARTIALE 171

Problema ar fi cum sa se gaseasca aceste C congruente. O metoda elementara consta


din trei pasi: alegerea aleatoare a unui x, calculul lui x (mod p) si verificarea daca acest
numar are toti divizorii n B.
II: Acum se poate determina log cu un algoritm de tip Las Vegas. Se alege aleator
un numar ntreg s (1 s p 2) si se determina = s (mod p).
Se ncearca apoi descompunerea lui n baza B. Daca acest lucru este posibil, se
obtine o relatie de forma
s pc11 pc22 . . . pcBB (mod p)
care poate fi transformata n
log + s c1 log p1 + . . . + cB log pB (mod (p 1)).
De aici - prin evaluarea membrului drept, se poate determina log .
Exemplul 9.6. Fie p = 10007 si = 5 (element primitiv). Sa consideram B= {2, 3, 5, 7}
ca baza de divizori. Cum evident log5 5 = 1, trebuie determinati doar trei logaritmi de
baza.
Trei numere aleatoare norocoase pot fi 4063, 5136, 9865.
Pentru x = 4063 calculam 54063 (mod 10007) = 42 = 2 3 7, care conduce la congruenta
log5 2 + log5 3 + log5 7 4063 (mod 10006).
In mod similar se obtin 55136 (mod 10007) = 54 = 2 33 , 59865 (mod 10007) = 189 =
33 7.
Pe baza lor se obtin alte doua relatii:
log5 2 + 3log5 3 5136 (mod 10006),
3log5 3 + log5 7 9865 (mod 10006).
Rezolvarea acestui sistem de trei ecuatii n Z10006 conduce la solutia unica
log5 2 = 6578, log5 3 = 6190, log5 7 = 1301.
Sa presupunem acum ca se cauta log5 9451. Daca se genereaza aleator numarul
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 verifica usor ca 56057 9451 (mod 10007).

9.3 Securitatea P LD fata de informatii partiale


In aceasta sectiune vom considera un tip de atac care ncearca sa determine valoarea unuia
sau mai multor biti din reprezentarea binara a logaritmilor discreti.
Mai exact se ncearca calculul lui Li (): al i-lea bit (numarand de la cel mai putin bit
semnificativ) din scrierea n binar a lui log peste Zp ; deci 1 i dlog2 (p 1)e.
172 CAPITOLUL 9. SISTEMUL DE CRIPTARE EL GAMAL

Afirmatia 9.1. L1 () poate fi calculat printr-un algoritm de complexitate polinomiala.


Demonstratie. Sa consideram functia f : Zp Zp definita

f (x) = x2 (mod p).


Notam RP (p) multimea resturilor patratice modulo p:
RP (p) = {x | y Zp , x y 2 (mod p)}.
Pe baza observatiilor
1. f (x) = f (p x),
2. x2 y 2 (mod p) x = y (mod p)
rezulta card(RP (p)) = (p 1)/2 (deci exact jumatate din elementele lui Zp sunt resturi
patratice).
Sa presupunem acum ca Zp este primitiv. Deci i RP (p) pentru i par. Cum
(p 1)/2 astfel de puteri sunt distincte, rezulta
p3
 
RP (p) = 2i 0 i

.
2
Deci este rest patratic daca si numai daca log este par, adica L1 () = 0.
Conform Teoremei 8.1 (Capitolul 8), este rest patratic daca si numai daca
p1
2 1 (mod p)
fapt care poate fi testat cu un algoritm de complexitate polinomiala. Deci putem da o
formula pentru calculul lui L1 ():
(
0 daca (p1)/2 1 (mod p)
L1 () =
1 altfel

Afirmatia 9.2. Daca p 1 = 2s (2t + 1), atunci


1. Calculul lui Li () pentru 1 i s este usor.
2. Orice algoritm (sau oracol) care poate calcula Ls+1 () permite rezolvarea problemei
logaritmului discret n Zp .
Prima parte a afirmatiei este simpla.
Vom demonstra a doua parte pentru cazul s = 1. Mai exact,vom arata ca daca p este
prim si p 3 (mod 4), atunci orice oracol care da L2 () poate fi folosit la rezolvarea
problemei logaritmului discret n Zp .
Se stie (algoritmul de criptare al lui Rabin, Capitolul 8) ca daca este rest patratic n
Zp si p 3 (mod 4), atunci radacinile patrate ale lui modulo p sunt (p+1)/4 (mod p).
9.3. SECURITATEA P LD FATA DE INFORMATII PARTIALE 173

Lema 9.2. Daca p 3 (mod 4) si 6= 0, atunci L1 (p ) = 1 L1 ().

Demonstratie. Fie a (mod p). Atunci a+(p1)/2 (mod p). Deoarece p


3 (mod 4), numarul (p 1)/2 este impar. Deci L1 () 6= L1 (p ).

Fie acum = a pentru un exponent par a, necunoscut. Atunci

(p+1)/4 a/2 (mod p).

Cum L2 () = L1 (a/2 ), valoarea L2 () poate determina care din cele doua variante (cu +
sau ) este corecta. Acest lucru este folosit de urmatorul algoritm care da valoarea loga-
ritmului discret log (s-a presupus ca valoarea L2 () se poate afla, folosind de exemplu
un oracol):

Algoritm aflare bit(p, , )


1. x0 L1 ();
2. /x0 (mod p)
3. i 1;
4. while 6= 1 do
4.1. xi L2 ();
4.2. (p+1)/4 (mod p);
4.3. if L1 () = xi then
else p ;
xi
4.4. / (mod p);
4.5. i i + 1;
5. return(xi1 , xi2 , . . . , x0 ).

In final, se obtine
xj 2j .
X
log =
j0

Exemplul 9.7. Fie p = 19, = 2, = 6. Deoarece numerele sunt foarte mici, se pot
determina usor valorile pentru L1 si L2 ; ele sunt cele din 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
174 CAPITOLUL 9. SISTEMUL DE CRIPTARE EL GAMAL

Pe baza acestor informatii, aplicam algoritmul. Se obtine:


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.

9.4 Generalizarea sistemului de criptare El Gamal


Sistemul de criptare El Gamal se poate construi pentru orice grup (n locul grupului
multiplicativ Zn ) n care problema logaritmului (definita corespunzator) este dificila.
Fie (G, ) un grup finit. Problema logaritmului discret (P LD) se defineste n G astfel:

Fie G si H = {i | i 0} subgrupul generat de . Daca H, sa se determine


un a (unic) (0 a card(H) 1) cu a = , unde a = | {z. . . }
a ori

Definirea sistemului de criptare El Gamal n subgrupul H n loc de Zn este usor de


realizat; anume:

Fie (G, ) un grup si G pentru care P LD n H = {i | i 0} este dificila.


Fie P= G, C= G G si K= {(G, , a, ) | = a }.
Valorile , sunt publice iar a este secret.
Pentru K = (G, , a, ) si un k Zcard(H) aleator (secret), se defineste

eK (x, k) = (y1 , y2 ) unde y1 = k , y2 = x k .

Pentru y = (y1 , y2 ), decriptarea este

dK (y) = y2 (y1a )1 .

De remarcat ca pentru criptare/decriptare nu este necesara cunoasterea ordinului card(H)


de marime al subgrupului; Alice poate alege aleator un k, (0 k card(G) 1) cu care
cele doua procese functioneaza fara probleme.
Se poate observa de asemenea ca G nu este neaparat abelian (H n schimb este, fiind
subgrup ciclic).
Sa studiem acum problema logaritmului discret generalizat. Deoarece H este sub-
grup ciclic, orice versiune a problemei este echivalenta cu P LD ntr-un grup ciclic.
In schimb, se pare ca dificultatea problemei depinde mult de reprezentarea grupului
utilizat.
9.5. EXERCITII 175

Astfel n grupul aditiv Zn , problema este simpla; aici exponentierea a este de fapt
nmultirea cu a modulo n. Deci, P LD consta n aflarea unui numar ntreg a astfel ca

a (mod n).

Daca se alege astfel ca cmmdc(, n) = 1 ( este generator al grupului), are un


invers multiplicativ modulo n, care se determina usor cu algoritmul lui Euclid extins.
Atunci,
a = log = 1 (mod n).
Sa vedem cum se reprezinta P LD n grupul multiplicativ Zp cu p prim. Acest grup
este ciclic de ordin p 1, deci izomorf cu grupul aditiv Zp1 . Deoarece P LD se poate
rezolva usor ntr-un grup aditiv, apare ntrebarea daca putem rezolva aceasta problema
n Zp reducand-o la Zp1 .
Stim ca exista un izomorfism : Zp Zp1 , deci pentru care

(xy mod p) = ((x) + (y)) (mod (p 1).)

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

a (mod p) a(a) () (mod (p 1)).

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


Deci, daca se gaseste o metoda eficace pentru calculul izomorfismului , se obtine un
algoritm eficace pentru calculul logaritmului discret n Zp .
Problema este ca nu se cunoaste nici o metoda generala de constructie a lui pentru
un numar prim p oarecare. Desi se stie ca cele doua grupuri sunt izomorfe, nu exista nca
un algoritm eficient pentru constructia explicita a unui astfel de izomorfism.
Aceasta metoda se poate aplica problemei logaritmului discret ntr-un grup finit ar-
bitrar. Implementarile au fost realizate n general pentru Zp , GF (2p ) (unde P LD este
dificila) sau curbe eliptice.

9.5 Exercitii
9.1. Implementati algoritmul Shanks pentru aflarea logaritmului discret. Aplicatii pentru

aflarea log106 12375 n Z24691 si log6 248388 n Z458009 .

9.2. Numarul p = 458009 este prim si = 2 are ordinul 57251 n Zp . Folosind algoritmul
Pollard Rho, calculati log2 56851 n Zp .
Luati valoarea initiala x0 = 1 si partitia din Exemplul ??.
176 CAPITOLUL 9. SISTEMUL DE CRIPTARE EL GAMAL

9.3. Fie p un numar prim impar si k un numar pozitiv. Grupul multiplicativ Zpk are
ordinul pk1 (p 1) si este ciclic. Un generator al acestui grup este numit element
primitiv modulo pk .
(a) Daca este un element primitiv modulo p, aratati ca cel putin unul din numerele
, + p este element primitiv modulo p2 .
(b) Descrieti cum se poate poate verifica eficient ca 3 este o radacina primitiva modulo
29 si modulo 292 . Aratati ntai ca daca este o radacina primitiva modulo p si modulo
p2 , atunci ea este radacina primitiva modulo pj pentru orice j ntreg.
(c) Gasiti un ntreg care este radacina primitiva modulo 29 dar nu este radacina
primitiva modulo 292 .

(d) Folositi algoritmul Pohlig - Hellman pentru a calcula log3 3344 n Z24389 .
9.4. Sa implementam sistemul de criptare El Gamal n GF (33 ). Polinomul x3 + 2x2 + 1
este ireductibil peste Z3 [x] si deci GF (33 ) = Z[ x]/(x3 + 2x2 + 1). Asociem cele 26 litere
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
P x2 + 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
Sa presupunem ca Bob foloseste = x si p = 11 ntr-un sistem de criptare El Gamal.
Apoi alege = x + 2. Decriptati mesajul

(K, H) (P, X) (N, K) (H, R) (T, F ) (V, Y ) (E, H) ((F, A) (T, W ) (J, D) (U, J)

9.5. Fie p = 227. Elementul = 2 este primitiv n Zp .


(a) Calculati 32 , 40 , 59 si 156 modulo p si apoi factorizati-le pentru baza de factori
{2, 3, 5, 7, 11}.
(b) Folosind faptul ca log2 2 = 1, calculati log2 3, log2 5, log2 7, log2 11 folosind facto-
rizarea anterioara.
(c) Sa presupunem ca vrem sa calculam log2 173. Inmultim 173 cu valoarea aleatoare
177
2 (mod p). Factorizati rezultatul peste baza de factori data mai sus si determinat
log2 173.
9.6. Implementati algoritmul Pohlig - Hellman de calcul al logaritmului discret n Zp ,
unde p este numar prim si primitiv. Folositi programul pentru a afla log5 8563 n Z28703
si log10 12611 n Z31153 .
Capitolul 10

Sisteme de criptare bazate pe curbe


eliptice

Toate sistemele de criptare prezentate pana n acest moment se bazeaza pe operatii efec-
tuate ntr-un inel multiplicativ Zn ; securitatea lor s-a redus n general la probleme mate-
matice N P - complete.
In 1985, Victor Miller si Neal Koblitz propun independent unul de altul o crip-
tografie n care baza de calcul sa fie multimea punctelor unei curbe eliptice. Se pare ca
sunt doua motive pentru care aceasta modalitate este exploatata cu tot mai mult succes:

Este asigurata o eficienta sporita a algoritmilor (din punct de vedere timp/spatiu).


Conform N SA (National Security Agency), criptografia pe curbe eliptice asigura o
securitate sporita, precum si performante superioare tehnicilor de criptare cu cheie
publica cunoscute pana acum.
O estimare oferita de N IST a marimii cheilor (n biti) pentru un nivel echivalent
de securitate arata astfel:
Sistem simetric RSA Sistem pe curbe eliptice
80 1024 160
112 2048 224
128 3072 256
192 7680 384
256 15360 521

Ofera variante de implementare superioare pentru noi aparate matematice de calcul


(cum ar fi de exemplu aplicatiile biliniare).

Vom aborda n acest capitol o scurta prezentare a curbelor eliptice, precum si a princi-
palelor directii de studiu referitoare la ECC (Elliptic Curve Cryptography).

177
178 CAPITOLUL 10. SISTEME DE CRIPTARE BAZATE PE CURBE ELIPTICE

10.1 Aritmetica curbelor eliptice


Pentru nceput, sa definim notiunea de curba eliptica.
Definitia 10.1. O curba eliptica E peste un corp K este definita de ecuatia
E: y 2 + a1 xy + a3 y = x3 + a2 x2 + a4 x + a6 (1)
unde a1 , a2 , a3 , a4 , a6 K si 6= 0, unde este discriminantul lui E, definit prin
= d22 d8 8d34 27d26 + 9d2 d4 d6 , (2)
= a21 + 4a2 ,


d2
d4 = 2a4 + a1 a3 ,


iar


d6 = a23 + 4a6 ,
d8 = a21 a6 + 4a2 a6 a1 a3 a4 + a2 a23 a4 .

Daca L este o extensie oarecare a lui K, atunci multimea punctelor curbei E pe L este

E(L) = {(x, y) L L | y 2 + a1 xy + a3 y x3 + a2 x2 + a4 x + a6 = 0}
[
{O}

unde O este punctul de la infinit1 .


Elementele lui E(L) se numesc punctele L - rationale ale curbei E.
In general vom lucra cu un corp K = Zp , unde p este un numar prim. Prin extensie,
vom numi curba eliptica peste Zp multimea (x, y) Zp Zp a solutiilor ecuatiei
y 2 + a1 xy + a3 y x3 + a2 x2 + a4 x + a6 (mod p)
si dintr-un punct la infinit O.
Observatia 10.1.
1. Ecuatia (1) este numita ecuatie Weierstrass.

2. Conditia 6= 0 asigura lucrul cu o curba eliptica neteda (fara puncte n care


curba are doua sau mai multe tangente distincte).
In functie de valorile caracteristicii p a corpului K, se disting urmatoarele cazuri:
1. p = 2. Apar doua subcazuri:

(a) Daca a1 6= 0, atunci curba eliptica E poate fi adusa (prin schimbari de variabile)
la forma
y 2 + xy = x3 + ax + b (3)
unde a, b K. O asemenea curba se numeste non-supersingulara, iar discri-
minantul ei este = b.
1
Elementul O este introdus pentru a satisface forma proiectiva a ecuatiei (1) si pentru a permite
construirea unei structuri algebrice convenabile pe E(L).
10.1. ARITMETICA CURBELOR ELIPTICE 179

(b) Daca a1 = 0, atunci ecuatia curbei E poate fi adusa la forma


y 2 + cy = x3 + ax + b (4)
unde a, b, c K. O asemenea curba este numita supersingulara, iar discrimi-
nantul ei este = c4 .

2. p = 3. Apar si aici doua subcazuri:

(a) Daca a21 6= a2 , atunci curba eliptica E se poate transforma n


y 2 = x3 + ax2 + b (5)
cu a, b K. Curba este numita non-supersingulara, iar discriminantul ei este
= a3 b.
(b) Daca a21 = a2 , atunci E se aduce la forma
y 2 = x3 + ax + b (6)
cu a, b K. Curba este supersingulara, de discriminant = a3 .

3. Pentru p > 3, curba eliptica E poate fi adusa (prin schimbari de variabile) la forma

y 2 = x3 + ax + b (7)

unde a, b K. Descriminantul ei este = 16(4a3 + 27b2 ).

Marea majoritate a curbelor eliptice utilizate n protocoale criptografice sunt definite


pentru cazul p > 3 sau (ntr-o masura mai mica) pentru curbele non-supersingulare.
In continuare vom lucra cu definitia (7) a unei curbe eliptice (cazul corpurilor de
caracteristica p > 3).
O astfel de curba eliptica E se poate structura ca un grup abelian finit. Legea de
compozitie (notata aditiv) este definita astfel:
Fie P, Q E(L), P = (x1 , y1 ), Q = (x2 , y2 ).
Daca x2 = x1 , y2 = y1 , atunci P + Q = O; altfel, P + Q = (x3 , y3 ) unde

x3 = 2 x1 x2 , y3 = (x1 x3 ) y1 ,
iar
y2 y1 daca P 6= Q
x2 x1
= 2
3x1 +a daca P = Q
2y1

Se mai defineste P + O= O+P = P, P E.


Verificarea proprietatilor de grup este banala. Elementul neutru este O.
De remarcat ca inversa lui (x, y) (notata (x, y)) este (x, y).
180 CAPITOLUL 10. SISTEME DE CRIPTARE BAZATE PE CURBE ELIPTICE

Operatia poate fi explicata mult mai sugestiv geometric.


Fie P = (x1 , y1 ) si Q = (x2 , y2 ) doua puncte distincte pe curba eliptica E. Suma
R = P + Q este definita astfel: linia P Q taie curba ntr-un al treilea punct. R este
simetricul acestui punct fata de axa xx0 (figura (a)).
y y

P =(x1 ,y1 )

Q=(x2 ,y2 ) x
x
P =(x1 ,y1 )

R=(x3 ,y3 ) R=(x3 ,y3 )

(a) Adunarea P + Q = R (b) Dublarea: P + P = R

Daca P si Q coincid, atunci tangenta n P va taia din nou curba eliptica E. R este
simetricul acestui nou punct fata de axa xx0 (figura (b)).

Exemplul 10.1. Fie E curba eliptica y 2 = x3 + x + 5 peste Z19 . Sa calculam la nceput


punctele lui E. Aceasta se face astfel: x Z11 se calculeaza z = x3 + x + 5 (mod 19);
apoi se testeaza daca z este rest patratic.
In caz afirmativ, deoarece 19 3 (mod 4), exista o formula (a se vedea sistemul de
criptare Rabin, Capitolul 8) care conduce direct la calculul radacinilor patrate ale lui z :
z (19+1)/4 (mod 19) = z 5 (mod 19).
Rezultatele sunt stranse n tabelele urmatoare (toate calculele se realizeaza modulo 19):

a 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
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
10.1. ARITMETICA CURBELOR ELIPTICE 181

Curba eliptica E admite deci 15 puncte; cum ordinul grupului nu este numar prim,
grupul nu este ciclic. Vom alege un element primitiv drept generator. Fie acesta =
(0, 9). Calculam puterile lui (de fapt multiplii, grupul fiind aditiv). Pentru 2 se
calculeaza ntai (modulo 19):

= (3 02 + 1)(2 9)1 = 1 181 = 18.

Acum se pot determina


x3 = 182 0 0 = 361 1 (mod 19), y3 = 18 (0 1) 9 = 27 11 (mod 19),
deci 2 = (1, 11).
Multiplul urmator este 3 = 2 + = (1, 11) + (0, 9). Avem:
= (9 11) (0 1)1 = 2, deci
x3 = 22 1 0 = 3, y3 = 2 (1 3) 11 = 15 4 (mod 19),
de unde rezulta 3 = (3, 4).
In mod similar se obtin toate punctele curbei eliptice E:
= (0, 9) 2 = (1, 11) 3 = (3, 4) 4 = (4, 4) 5 = (13, 12)
6 = (11, 6) 7 = (12, 15) 8 = (12, 4) 9 = (11, 13) 10 = (13, 7)
11 = (4, 15) 12 = (3, 15) 13 = (1, 8) 14 = (0, 10) 15 = O
De remarcat ca de exemplu (3, 4) nu este element primitiv, avand ordinul 5.
O curba eliptica definita pe Zp (p > 3 prim) are aproximativ p puncte. Numarul
punctelor din E(Zp ) este numit ordinul lui E peste Zp . O teorema a lui Hasse ([?])
stabileste un interval pentru acest numar:

p + 1 2 p card(E(Zp )) p + 1 + 2 p

Valoarea t = 2 p se numeste urma lui E peste Zq , iar intervalul [p + 1 t, p + 1 + t]
este numit interval Hasse.
Calculul efectiv al lui card(E(Zp )) este destul de dificil si vom trece peste el2 . Exista
un algoritm al lui Schoof ([?], pag 137-140) de numarare a punctelor unei curbe eliptice,
dar complexitatea lui este destul de mare: O(log 6 p) (O(log 9 p) n versiunea originala)
nmultiri si inversiuni, si O(log 3 p) spatiu de memorie. In plus implementarea sa este
destul de greoaie si nu a fost realizata complet pana n prezent.
In cazul curbelor eliptice construite peste extensii, se poate da urmatoarea teorema:
Teorema 10.1. Fie p = q m . Exista o curba eliptica E definita peste Zp , cu card(E(Zp )) =
p + 1 t daca si numai daca este verificata una din conditiile:
t 6 0 (mod q) si t2 4p.
2
Nu se cunoaste nici o formula care sa dea valoarea card(E(Zp )); exista o conjectura Birch and
Swinnerton-Dyer n legatura cu acest subiect, conjectura inclusa printre cele sapte probleme ale mileniului
(mpreuna cu problema P versus N P ).
182 CAPITOLUL 10. SISTEME DE CRIPTARE BAZATE PE CURBE ELIPTICE

m este impar si

t = 0, sau
t2 = 2p si q = 2, sau
t2 = 3p si q = 3.

m este par si

t2 = 4p, sau
t2 = p si q 6 1 (mod 3), sau
t = 0 si q 6 1 (mod 4).

O informatie utila referitoare la structura de grup a lui E(Zp ) este data de teorema
urmatoare:
Teorema 10.2. (Teorema lui Ruck) Fie E o curba eliptica peste Zp cu p > 3 numar prim.
Atunci exista doua numere ntregi n1 , n2 astfel ca E(Zp ) sa fie izomorfa cu Zn1 Zn2 , iar

n2 |n1 , n2 |(p 1).

Demonstratia poate fi gasita n [?], pag. 107.


O consecinta a acestei teoreme este evaluarea card(E(Zp )) = n1 n2 . Daca n2 = 1,
atunci E(Zp ) este grup ciclic. Daca n2 > 1, atunci spunem ca E(Zp ) are rangul 2. Daca
valoarea lui n2 este mica (n2 4), spunem ca E(Zp ) este aproape ciclic. Cum n2 divide n1
si p 1, se asteapta ca E(Zp ) sa fie ciclic sau aproape ciclic pentru majoritatea curbelor
eliptice peste Zp .

10.2 Sisteme de criptare construite pe curbe eliptice


Pe spatiul curbelor eliptice se pot realiza diverse tehnici de criptare cu cheie publica; unele
din ele sunt doar adaptari ale sistemelor deja prezentate, altele sunt aplicatii specifice.
Principala atractie a sistemelor construite pe curbe eliptice consta n dimensiuni mici
ale cheilor, ceea ce le face aplicabile pe sisteme portabile (smart-carduri de exemplu).
In general, sistemele de criptare se bazeaza pe problema logaritumuluin discret si sunt
inspirate de algoritmul El Gamal.
Exemplul 10.2. Sa vedem cum se realizeaza o criptare El Gamal pentru curba eliptica
definita n Exemplul ??.
Fie = (0, 9) si sa presupunem ca exponentul secret este a = 7. Atunci = 7 =
(12, 15), iar operatia de criptare este:

eK (x, k) = (k (0, 9), x + k (12, 15)), unde x E, 0 k 14.


10.2. SISTEME DE CRIPTARE CONSTRUITE PE CURBE ELIPTICE 183

Pentru decriptare se foloseste operatia

dK (y1 , y2 ) = y2 7y1

Sa presupunem ca Alice vrea sa cripteze mesajul x = (3, 4) (care este un punct din
E); daca ea alege aleator valoarea k = 8, va calcula
y1 = 8 (0, 9) = (12, 4), si
y2 = (3, 4) + 8 (12, 15) = (3, 4) + (4, 15) = 3 + 8 7 = 3 + 11 = 14 = (0, 10)
(coeficientii se calculeaza modulo 15).
Deci y = ((12, 4), (0, 10)). Dupa receptie, Bob decripteaza mesajul astfel:
x = (0, 10) 7 (12, 4) = 14 7 8 = 3.

10.2.1 Sistemul Menezes - Vanstone


In acest sistem de criptare de fapt o varianta a lui El Gamal curba eliptica este utilizata
pentru mascare, domeniile de valori al textelor clare si criptate fiind mult mai largi.
Prezentarea algoritmului este:

Fie E o curba eliptica peste Zp (p > 3 prim) care contine un subgrup ciclic H n
care problema logaritmului discret este dificila.
Alegem P= Zp Zp , C= E Zp Zp si
K= {(E, , a, ) | E, a Zp , = a }.
Valorile , sunt publice, iar a este secret.
Pentru K = (E, , a, ), k Zcard(H) ales aleator (secret) si 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 defineste

dK (y) = (y1 c1 1
1 (mod p), y2 c2 (mod p)),

unde a y0 = (c1 , c2 ).

Exemplul 10.3. Revenind la curba y 2 = x3 + x + 5 peste Z19 definita n Exemplul ??,


criptarea Menezes - Vanstone autorizeaza 18 18 = 324 texte clare, fata de numai 15 n
sistemul El Gamal adaptat.
Sa luam din nou = (0, 9) si exponentul a = 7. Atunci = 7 = (12, 15).
Daca Alice doreste sa transmita textul clar x = (x1 , x2 ) = (5, 11) (de remarcat ca
acesta nu este un punct din E) si alege k = 4, ea va ncepe prin a calcula

y0 = k = 4 (2, 7) = (4, 4)sik = 4(12, 15) = (1, 8)

deci c1 = 1, c2 = 8.
184 CAPITOLUL 10. SISTEME DE CRIPTARE BAZATE PE CURBE ELIPTICE

Apoi se calculeaza (modulo 19):

y1 = c1 x1 = 1 5 = 5 si y2 = c2 x2 = 8 11 = 12.

Alice trimite deci lui Bob mesajul criptat y = (y0 , y1 , y2 ) = ((4, 4), 5, 12).
Dupa receptie, Bob calculeaza (c1 , c2 ) = a y0 = 7 (4, 4) = 7 4 = 13 = (1, 8),
apoi

x = (y1 c1 1 1 1
1 (mod 19), y2 c2 (mod 19)) = (5 1 , 12 8 ) = (5, 12 12) = (5, 11).

10.3 Problema logaritmului discret pe curbe eliptice


Dupa cum am vazut anterior, principalele sisteme de criptare pe curbe eliptice folosesc
problema logaritmului discret. In cazul curbelor eliptice, ea se enunta n felul urmator:
Problema logaritmului discret pe curbe eliptice (ECDLP):
Fiind data o curba eliptica E peste corpul Zp , un punct P E(Zp ) de ordin n si
Q [P ] = {sP | 1 s n 1}, sa se determine k astfel ncat Q = kP .
Numarul k este numit logaritmul discret al lui A n baza P : k = logP Q.
Vom prezenta o serie de atacuri generale asupra ECDLP , atacuri care nu exploateaza
eventuale slabiciuni particulare ale anumitor curbe eliptice. Deoarece ele au fost detaliate
pentru sistemele de criptare El Gamal sau RSA, vom detalia doar modalitatea lor de
scriere n cazul curbelor eliptice.

10.3.1 Atacul Pohlig - Hellman


Cea mai simpla metoda de atac este prin forta bruta: se calculeaza R = kP pentru
k = 1, 2, 3, . . ., verificandu-se permanent egalitatea R = Q. Atunci cand egalitatea este
verificata, s-a gasit valoarea k = logP Q. Algoritmul nu solicita multa memorie, dar timpul
de rulare este O(n), unde n este ordinul lui P .
Pohlig si Hellman au observat ca problema logaritmului discret ntr-un grup G are
acelasi ordin de dificultate ca si problema logaritmului discret n cel mai mare subgrup
prim din G. Ca o consecinta pentru criptografia pe curbe eliptice, se vor selecta curbe
eliptice E cu proprietatea card(E(Zp )) = n = h s, unde s este un numar prim mare, iar
h este un numar foarte mic (de obicei h = 1, 2 sau 4). In acest caz, ECDLP este dificila.
Ideile de baza ale atacului Pohling - Hellman (adaptate criptografiei pe curbe eliptice)
sunt:
10.3. PROBLEMA LOGARITMULUI DISCRET PE CURBE ELIPTICE 185

Fie n = pe11 pe22 . . . perr .


1. Se calculeaza ki = k (mod pei i ) (1 i r).
2. Se rezolva sistemul de congruente

x ki (mod pei i ) (1 i r).

Teorema chineza a resturilor asigura existenta unei solutii unice k = x [0, n 1].
Sa aratam ca determinarea fiecarui ki se poate reduce la aflarea exponentului ei ntr-un
subgrup ciclic [P ] de ordin pi ; pentru simplificare, vom nota pi cu p.
i 1
eX
Sa reprezentam ki n baza p; vom avea ki = zj pj , unde zj [0, p 1].
j=0
Pentru determinarea lui z0 :

Se calculeaza P0 = (n/p)P, Q0 = (n/p)Q;


!
n n
Deoarece ordinul lui P0 este p, avem Q0 = Q = k P = kP0 z0 P0 (mod p)
p p
Deci z0 = logP0 Q0 poate fi obtinut rezolvand o instanta ECDLP n grupul ciclic [P ].
!
n
La pasul urmator se determina Q1 = 2
(Q z0 P ). Vom avea:
!
p ! !
n n n n
Q1 = (Q z0 P ) = 2 (k z0 ) P = (k z0 ) 2 P = (z0 + z1 p z0 ) 2 P =
!
p2 p p p
n
= z1 P z1 P0 (mod p)
p
Valoarea z1 = logP0 Q1 se poate obtine deci rezolvand o instanta ECDLP n [P ].
In general, daca numerele z0 , z1 , . . . , zt1 au fost calculate, atunci zt = logP0 Qt , unde
n  
Qt = Q z0 P z1 pP z2 p2 P . . . zt1 pt1 P .
pt+1
Pentru detalii referitoare la corectitudinea algoritmului, se poate relua sectiunea 9.2.2
care trateaza algoritmul Pohlig - Hellman n varianta generala.

10.3.2 Atacul BSGS (Baby-Step/Giant-Step)


Ca o consecinta a atacului Pohlig Hellman, ne putem concentra atentia asupra rezolvarii
problemei logaritmului discret n grupuri ciclice de ordin prim. Atacul BSGS este atacul
Shanks (prezentat n sectiunea 9.2.1) adaptat pentru curbe eliptice.
Fie G = [P ] un subgrup ciclic de ordin p (p prim) al unui grup E(Zq ) al unei curbe
eliptice. Fiind dat Q G, problema cere aflarea unei valori k (1 k < p) astfel ncat
Q = kP .
186 CAPITOLUL 10. SISTEME DE CRIPTARE BAZATE PE CURBE ELIPTICE

Consideram reprezentarea

k = k0 + k1 b pc

unde k0 , k1 [0, b pc).


1. Se calculeaza lista A = {(Pi , i) | Pi = iP, 0 i < b pc} (faza Baby -
Step).

2. Fie R = b pcP . Se calculeaza lista B = {(Qj , j) | Qj = Q jR, 0 j <

b pc} (faza Giant - Step).
Cele doua liste sunt ordonate crescator dupa prima componenta.

3. Se cauta (Pi , i) A, (Qj , j) B astfel ca Pi = Qj .


Daca asa ceva exista, atunci k0 = i, k1 = j.


Justificare: Avem iP = Q jb pcP , deci (i + jb pc)P = Q.
Dupa cum se stie, complexitatea spatiu si complexitatea timp a unui astfel de atac

sunt ambele egale cu O(b pc). Shoup ([?]) arata ca atacul BSGS este cea mai rapida
metoda pentru rezolvarea problemei logaritmului discret ntr-un grup cutie neagra3 .

10.3.3 Atacul Pollard Rho


Ideea de baza n algoritmul Pollard Rho consta n gasirea a doua perechi distincte (c1 , d1 ),
(c2 , d2 ) de numere ntregi din Zp astfel ncat

c1 P + d1 Q = c2 P + d2 Q.

De aici va rezulta (c1 c2 )P = (d2 d1 )Q = (d2 d1 )kP , deci

(c1 c2 ) (d2 d1 )k (mod p),

si valoarea k = logP Q se obtine imediat prin

k = (c1 c2 )(d2 d1 )1 (mod p)

O metoda ingenioasa de aflare a unor astfel de perechi consta n selectarea aleatoare a


doua valori c, d Zp si memorarea ntr-o tabela a tripletului (c, d, cP + dQ). Procedeul se
repeta (tabela se completeaza eventual sortata dupa a treia componenta), pana se obtine
a doua oara un punct cP + dQ.
3
Un grup cutie neagra este un grup n care nu se foloseste nici o structura prestabilita pentru
reprezentarea elementelor sale.
10.3. PROBLEMA LOGARITMULUI DISCRET PE CURBE ELIPTICE 187

q
Neajunsul acestui atac consta n necesitatea de stocare a p/2 triplete.
Algoritmul Pollard Rho gaseste perechile (c1 , d1 ), (c2 , d2 ) cam n acelasi timp ca si
metoda de mai sus, dar folosind o cantitate neglijabila de memorie. Ideea similara celei
din sectiunea 9.2.3 este de a defini o functie recursiva f : [P ] [P ] astfel ncat, fiind
dat X [P ] si c, d Zp cu X = cP + dQ, sunt usor de calculat X 0 = f (X) si c0 , d0 Zp
cu X 0 = c0 P + d0 Q.
In plus, f ar trebui sa aiba caracteristicile unei functii aleatoare.
Algoritmul Pollard Rho este:
Intrare: P E(Zq ), ord(P ) = p numar prim, si Q [P ].
Iesire: k = logP Q.
1. Selecteaza numarul L al ramificatiilor (n 9.2.3 s-a definit apriori L = 3).
2. Selecteaza o functie de partitie H : [P ] {1, 2, . . . , L} cu proprietatea
card(H 1 (i)) ' p/L, (1 i L).
3. for j 1 to L do
3.1. Selecteaza (aleator) aj , bj Zp .
3.2. Calculeaza Rj = aj P + bj Q.
4. Selecteaza (aleator) c0 , d0 Zp si calculeaza X 0 = c0 P + d0 Q.
5. X X 0 , c c0 , d d0 .
6. repeat
6.1. Calculeaza j = H(X 0 ).
X 0 X 0 + Rj , c0 c0 + aj (mod p), d0 d0 + bj (mod p).
6.2. for i 1 to 2 do
6.2.1. Calculeaza j = H(X).
X X+Rj , c c+aj (mod p), d d+bj (mod p).
until X 0 = X.
7. if d0 = d then return(esec)
else return k = (c0 c)(d d0 )1 (mod p).
8. Stop
Dupa cum se observa, algoritmul Pollard Rho este un algoritm probabilist de tip Las
Vegas. Probabilitatea de esec este neglijabila.

Exemplul 10.4. Sa consideram L = 32 si fie {S1 , S2 , . . . , S32 } o partitie a lui [P ] definita


astfel: daca X [P ] si ultimii ultimii 5 biti semnificativi ai primei coordonate a lui X
reprezinta numarul j, atunci H(X) = j + 1. Multimile Sj = {X | H(X) = j} au acelasi
numar de elemente pentru orice j = 1, 2, . . . , 32.

Sa detaliem putin algoritmul Pollard Rho:


Fie aj , bj Zp . Se defineste functia f : [P ] [P ] prin

f (X) = X + aj P + bj Q unde j = H(X).


188 CAPITOLUL 10. SISTEME DE CRIPTARE BAZATE PE CURBE ELIPTICE

Se observa ca daca X = cP + dQ, atunci f (X) = X 0 = c0 P + d0 Q unde c0 = c + aj (mod p)


si d0 = d + bj (mod p).
Acum, pentru un punct arbitrar X0 [P ] se poate determina o secventa de puncte
{Xi }i0 definita Xi = f (Xi1 ) pentru i 1.
Cum toate aceste puncte sunt din grupul finit [P ], la un moment dat secventa va
ncepe sa se repete (si sa cicleze). Deci exista un t minim pentru care Xt = Xt+s cu s 1.
Valoarea t se numeste lungimea cozii, iar s lungimea ciclului. q q
Daca f este o functie cu proprietati aleatoare, atunci t ' p/8, s ' p/8, deci
q
secventa va ncepe sa se repete dupa aproximativ p/2 termeni.
Algoritmul lui Floyd de aflare a doua puncte Xi , Xj cu Xi = Xj si i 6= j, exploreaza
perechile de puncte de forma (Xi , X2i ) pana gaseste un indice i cu Xi = X2i . Dupa
calcularea unei perechi, perechea anterioara de puncte poate fi eliminata; astfel memoria
utilizata este de marime neglijabila. Numarul n al perechilor calculate pana se obtine
egalitatea Xi = X2i verifica relatia t n t + s. Daca f este o functie aleatoare, atunci

n ' 1, 0308 p, deci numarul de operatii pe grupul curbelor eliptice este 3 p.

10.4 Factorizari bazate pe curbe eliptice


In cadrul sistemului de criptare RSA la sectiunea 8.4.4. a fost prezentata metoda p 1 de
factorizare a unui numar. Ideea sa era de a efectua operatii ntr-un grup Zp sensibil mai
mic decat grupul multiplicativ Zn (unde p este un divizor al lui n) n care sunt definite
toate calculele. Aceasta conceptie de a restrange de facto domeniul de calcul poate fi
extinsa si la alte grupuri, n particular la grupul definit pe multimea punctelor unei curbe
eliptice. Metoda folosita este numita ECM (Elliptic Curve Method) si este descrisa mai
jos.
Sa generam aleator doua numere a, b Zn , si sa construim curba Ea,b de ecuatie
y 2 x3 + ax + b (mod n) (8)
Vom considera pe aceasta curba diverse calcule modulo p (desi p nu se cunoaste),
calcule ascunse de calculele modulo n. Ordinul grupului Ea,b (Zp ) este un numar aleator

n intervalul [p + 1 2 p, p + 1 + 2 p]. Daca acest ordin are divizorii primi (la puterile
cu care apar) mai mici decat marginea B stabilita de metoda p 1, putem aplica aceasta
metoda (adaptata la grupul definit pe E(Zn )), cu o complexitate de O(B) operatii arit-
metice. Succesul ei corespunde deci probabilitatii ca ordinul grupului Ea,b (Zp ) sa aiba toti
divizorii primi mai mici decat B. Aceasta probabilitate este estimata n [?] la uu unde
log p
u= .
log B
Exemplul 10.5. Sa ncercam factorizarea numarului n = 44023 (pentru care metoda
p 1 definita n 8.4.4. esueaza).
10.5. EXERCITII 189

Prima problema care apare este alegerea unui punct (initial) X pe curba (8). Aceasta
alegere nu este simpla, deoarece trebuie sa rezolvam o ecuatie algebrica modulo un numar
n a carui factorizare nu se cunoaste. Pentru a evita aceasta dificultate, n loc de a alege
a, b si apoi X, vom genera ntai a, X si ulterior b.
Sa alegem a = 13 si X = (x, y) = (23482, 9274). Vom avea imediat

b = y 2 x3 ax 21375 (mod 44203)

Conform metodei p1, vom calcula Xi = i!X = (xi , yi ) pentru i = 1, 2, . . . pana se ajunge
la un punct Xi 6= O (n Ea,b (Zn )), care este punctul de la infinit n Ea,b (Zp ). Aceste lucru
se poate ntampla la aparitia unei operatii imposibile de obicei mpartirea la un element
neinversabil. Elementele neinversabile din Zn conduc, prin calcularea unui cel mai mare
divizor comun, la un factor al lui n (deci la factorizare).
Determinarea lui X1 este usoara: X1 = X = (23482, 9274). Urmeaza:
X2 = 2X1 = (18935, 21838),
X3 = 3X2 = 2X2 + X2 = (15187, 29168),
X4 = 4X3 = 2(2X3 ) = (10532, 5412)
si ajungem la X5 = 5X4 = 2(2X4 ) + X4 .
Aici calculam ntai 2X4 = (30373, 40140), apoi 2(2X4 ) = (27556, 42335).
In momentul cand vrem sa adunam acest punct cu X4 , ajungem la calculul valorii
42335 5412
= (mod 44023)
27556 10532
care nu se poate efectua, deoarece 27556 10532 = 17024 nu este inversabil modulo n.
Atunci cand ncercam sa calculam inversul folosind algoritmul lui Euclid extins, ajungem
la cmmdc(17024, 44023) = 133, care este un factor al lui n = 44023.

10.5 Exercitii
10.1. Sa se verifice propietatile de grup ale operatiei aditive definite pe E(L).
10.2. Fie E curba eliptica y 2 = x3 + x + 28 peste Z71 .
1. Determinati numarul de puncte din E(Z71 );

2. Aratati ca grupul E(Z71 ) nu este ciclic;

3. Care este ordinul maxim al unui element din E(Z71 ) ? Gasiti un astfel de element.
10.3. Fie E curba eliptica y 2 = x3 + x + 13 definita pe Z31 . Se poate arata ca E(Z31 ) are
34 puncte si ca (9, 10) este de ordinul 34 n E. Sistemul de criptare Mezenes - Vanstome

definit pe E admite ca spatiu al textelor clare Z34 Z34 . Fie a = 25 exponentul secret al
lui Bob.
190 CAPITOLUL 10. SISTEME DE CRIPTARE BAZATE PE CURBE ELIPTICE

1. Calculati = a ;

2. Decriptati textul urmator:

((4, 9), 28, 7)((19, 28), 9, 13)((5, 22), 20, 17)((25, 16), 12, 27)

3. Daca presupunem ca fiecare text clar reprezinta doua caractere alfabetice, convertiti
acest text clar n engleza (s-a folosit corespondenta A 1, . . . , Z 26).

10.4. Fie E curba eliptica y 2 = x3 + x + 6 peste Z11 .


(a) Sa se calculeze punctele lui E(Z11 ).
(b) Se aleg parametrii = (2, 7) si a = 7. Folosind sistemul de criptare El Gamal, sa
se cripteze mesajul x = (10, 9) cu valoarea aleatoare k = 3.
(c) Folosind sistemul de criptare Menezes - Vanstone si aceiasi parametri, sa se crip-
teze mesajul x = (9, 1).

10.5. Fie p > 3 un numar prim impar si a, b Zp . Daca ecuatia x3 + ax + b 0 (mod p)


are trei radacini distincte n Zp , aratati ca grupul curbei eliptice corespunzatoare (E, +)
nu este ciclic.

10.6. Fie E o curba eliptica definita peste Zp unde p > 3 este un numar prim. Sa
presupunem ca n = card(E) este prim si fie P E, P 6= O.
(a) Aratati ca logP (P ) = n 1.
(b) Dati un algoritm de calcul pentru n de complexitate O(p1/4 ) folosind teorema lui
Hasse si algoritmul BSGS.

10.7. Fie curba eliptica y 2 = x3 + 9x + 17. Un generator al lui E(Z23 ) este P = (16, 5).
Sa se calculeze logaritmul punctului Q = (4, 5).

10.8. O reprezentare binara (an1 , an2 , . . . , a0 ) a numarului ntreg a este n forma ne-
adiacenta (forma N AF ) daca nu exista doua valori consecutive nenule.
(a) Dati un algoritm de reprezentare a numerelor ntregi n forma N AF . Aplicati
acest algoritm pentru numerele 87, 112, 2047.
(b) Folosind reprezentarea N AF a lui 87, calculati 87P , unde P = (2, 6) este un punct
pe curba eliptica y 2 = x3 + x + 26 definita peste Z27 .
Capitolul 11

Alte sisteme de criptare cu cheie


publica

11.1 Sistemul de criptare Merkle - Hellman


Sistemul de criptare Merkle - Hellman sau sistemul de criptare rucsac a fost prezentat n
linii mari n Capitolul 7, ca exemplificare pentru ideea de criptare cu cheie publica (aparut
n 1978 n [?], a fost oficial primul astfel de sistem de criptare). In aceasta sectiune vom
face o analiza a sistemului, nsotita de un atac cu succes asupra variantei initiale.

11.1.1 Considerente generale


Numim vector rucsac un tablou unidimensional A = (a1 , a2 , . . . , an ) (n 3) cu elemente
numere ntregi pozitive distincte.
O aparitie a problemei rucsacului este o pereche (A, x) unde A este un vector rucsac,
iar x - un numar ntreg pozitiv.
O solutie a aparitiei problemei (A, x) este un vector B = (ai1 , . . . , aik ) de elemente din
k
X
A astfel ca x = ai j .
j=1
Cea mai obisnuita abordare a problemei rucsacului este de a decide daca o anumita
aparitie (A, x) a problemei rucsacului are solutie sau nu. Varianta utilizata n criptografie
consta n obtinerea acestei solutii pentru (A, x), stiind ca ea exista. Ambele probleme
sunt N P - complete.
Dupa cum am vazut n Capitolul 7, un vector rucsac este folosit pentru criptarea unui
bloc C de n biti realizand suma acelor elemente din A a caror pozitie corespunde lui 1 n
C. Matematic, privind C ca un vector coloana, criptarea este realizata de produsul scalar

x=AC

191
192 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA

Decriptarea revine la a determina C stiind x sau pentru varianta cu cheie publica a


sistemului de criptare rucsac de a afla C din A si x.

Exemplul 11.1. Fie n = 6 si vectorul rucsac A = (3, 41, 5, 1, 21, 10). Atunci textul clar
C1 = (1, 1, 0, 0, 1, 0) este criptat n x1 = 65, iar C2 = (1, 0, 1, 1, 0, 1) n x2 = 19. Pentru
vectorul A astfel definit, multimea textelor criptate este inclusa n intervalul [0, 81].

Pentru a putea fi utilizat n criptare, un vector rucsac A trebuie sa fie injectiv: pentru
orice x N , aparitia problemei rucsacului (A, x) are cel mult o solutie.

Exemplul 11.2. Pentru vectorul rucsac A = (14, 28, 56, 82, 90, 132, 197, 284, 341, 455)
textul criptat x = 515 se poate obtine din trei texte clare distincte:
(1, 1, 0, 0, 0, 1, 0, 0, 1, 0), (0, 1, 1, 0, 1, 0, 0, 0, 1, 0), (1, 0, 0, 1, 1, 1, 1, 0, 0, 0).

Sunt anumiti vectori A pentru care toate aparitiile (A, x) sunt usor de rezolvat. Am
vazut ca vectorii cu crestere mare au aceasta proprietate.

Definitia 11.1. Un vector rucsac A = (a1 , a2 , . . . , an ) este crescator (super-crescator)


daca
j1
X
j 2, aj > aj1 (respectiv aj > ai ).
i=1

Evident, orice vector super-crescator este crescator.


Pentru un vector rucsac A = (a1 , . . . , an ) definim max(A) = max{aj | 1 j n}.
Fie A un vector rucsac, m > max(A) si t (0, m) astfel ca cmmdc(t, m) = 1. Daca
B = (b1 , b2 , . . . , bn ) este un vector definit prin

bi t ai (mod m) (1 i n)

spunem ca B rezulta din A prin nmultire modulara n raport cu perechea (m, t).
Dupa cum stim, conditia cmmdc(t, m) = 1 asigura existenta unui element u (1, m)
(obtinut prin algoritmul lui Euclid extins), astfel ca t u 1 (mod m).
Deci va avea loc si proprietatea reciproca: vectorul rucsac A rezulta din B prin
nmultire modulara n raport cu (m, u)1 .
n
X
Daca relatia m > max(A) este nlocuita cu conditia m > ai , spunem ca B rezulta
i=1
din A prin nmultire modulara tare n raport cu (m, t). In acest caz nu va mai rezulta
n
X
valabilitatea proprietatii inverse, deoarece inegalitatea m > bi nu mai este adevarata
i=1
totdeauna. Se poate spune nsa, evident, ca A rezulta din B prin nmultire modulara n
raport cu (m, u).
1
Evident, m > max(B), pentru ca bi < m pentru orice i = 1, . . . , n.
11.1. SISTEMUL DE CRIPTARE MERKLE - HELLMAN 193

Constructia sistemului de criptare rucsac este imediata:

1. Bob alege numerele m, t prime ntre ele, precum si vectorul super-crescator


n
X
A = (a1 , . . . , an ), astfel ca m > ai .
i=1

2. Determina vectorul rucsac B obtinut din A prin inmultire modulara tare n


raport cu (m, t).

3. Face public B si pastreaza drept cheie secreta elementele A, m, t si u


t1 (mod m).

Daca Alice doreste sa cripteze un mesaj, va proceda n felul urmator:

1. Sparge mesajul n blocuri Bx Z2n (n lungimea vectorului B), unde x [0, 2n 1)


are Bx drept reprezentare binara.

2. Calculeaza y = B BxT si l trimite lui Bob.

In acest fel, un criptanalist va trebui sa rezolve aparitia (B, y) a problemei rucsacului.


Bob va determina ntai x u y (mod m), dupa care va rezolva aparitia (A, x).
Aceasta simplificare este asigurata de lema:

Lema 11.1. Presupunem ca A = (a1 , a2 , . . . , an ) este un vector super-crescator, iar B


rezulta din A prin nmultire modulara tare n raport cu (m, t). Fie u t1 (mod m), y
un ntreg arbitrar si x u y (mod m). Atunci asertiunile urmatoare sunt adevarate:

1. Problema rucsacului (A, x) este rezolvabila n timp liniar. Daca solutia exista, ea
este unica.

2. Problema rucsacului (B, y) are cel mult o solutie.

3. Daca exista o solutie pentru (B, y), atunci ea este egala cu solutia aparitiei (A, x).

Demonstratie. Am aratat n Capitolul 7 ca orice aparitie a problemei rucsacului avand


A super-crescator poate fi rezolvata printr-un algoritm liniar (Exemplul 7.4), parcurgand
A de la dreapta spre stanga. Metoda arata de asemenea si faptul ca exista cel mult o
solutie.
Pentru celelalte doua sertiuni, sa presupunem ca vectorul D Z2n este solutie a
aparitiei problemei rucsacului (B, y); deci y = B DT . Atunci

x u y = u B DT = u (t A) DT A DT (mod m)
194 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA

Pentru ca m depaseste suma componentelor lui A, trebuie sa avem A DT < m. Cum de


asemenea x < m (din definitia lui x), deducem x = A DT . Deci vectorul D este unica
solutie a aparitiei problemei (A, x) a rucsacului.
Deoarece s-a folosit o solutie arbitrara a lui (B, y), va rezulta si asertiunea (3).
Exemplul 11.3. Fie n = 10 si vectorul super-crescator
A = (103, 107, 211, 430, 863, 1718, 3449, 6907, 13807, 27610)
Alegem modulul m = 55207 (care este mai mare decat suma componentelor lui A) si t =
25236. Deoarece cmmdc(t, m) = 1, algoritmul lui Euclid extins va calcula u = t1 = 1061.
Ca rezultat al nmultirii modulare tari n raport cu (m, t) se obtine vectorul rucsac
B = (4579, 50316, 24924, 30908, 27110, 17953, 32732, 16553, 22075, 53620)
Acest vector B este cheia publica de criptare, n timp ce elementele A, t, m, u formeaza
trapa secreta.
Folosind cheia publica B, sa criptam textul clar PELIN DE MAI.
In prima faza acesta se mparte n perechi de cate doua litere, care se codifica n
secvente binare de 10 biti (folosind codificarea propusa n Capitolul 7). Obtinem
PE 10000 00101 74.752
LI 01100 01001 161.592
N 01110 00000 106.148
DE 00100 00101 95.097
MA 01101 00001 155.970
I 01001 00000 77.426
Pe ultima coloana sunt scrise criptarile blocurilor de cate doua litere (aflate pe prima
coloana).
Sa decriptam primul bloc: 74.752 (cu celelalte se procedeaza analog). Avem
74752 1061 = 79311872 = 1436 55207 + 34620
Consideram aparitia problemei rucsacului (A, 34.620). Solutia se obtine parcurgand
vectorul A de la dreapta spre stanga:
Numar Componenta lui A Bit
35.620 27.610 1
7.010 13.807 0
7.010 6.907 1
103 3.449 0
103 1.718 0
103 863 0
103 430 0
103 211 0
103 107 0
103 103 1
11.1. SISTEMUL DE CRIPTARE MERKLE - HELLMAN 195

Citind ultima coloana din tabel, de jos n sus, obtinem 10000 00101, care este codificarea
binara pentru perechea de litere P E.
Sa ncercam sa procedam invers: sa criptam textul clar P E folosind vectorul A. Se
obtine, evident, 34.620. Aplicam nmultirea modulara tare n raport cu (55.207, 25.236) si
avem
34620 25236 = 873670320 = 15825 55207 + 19545
Dar aparitia (B, 19.545) nu are solutie, lucru evident pentru ca, n B, singurele numere
mai mici decat 19.545 sunt 4.579, 19.953 si 16.553, iar 19.545 nu se poate obtine din nici
o combinatie a lor.

Exemplul 11.4. Datele din Exemplul ?? sunt simple, putand fi prelucrate si cu un


calculator de buzunar. Criptarile reale folosesc numere mult mai mari. Tot n exem-
ple se foloseste frecvent si varianta n = 20, m = 53939986, t = 54377 (cu inversa
t1 = u = 17521047). Un exemplu de vector super-crescator cu 20 componente este
A = (101, 102, 206, 412, 823, 1.647, 3.292, 6.584, 13.169, 26.337, 52.676, 105.352, 210.703,
421.407, 842.812, 1.685.624, 3.371.249, 6.742.497, 13.484.996, 26.969.992)

11.1.2 Criptanaliza sistemului de criptare rucsac


Ne aflam n fata urmatoarei probleme de criptanaliza: se stie un vector rucsac B =
(b1 , b2 , . . . , bn ) folosit drept cheie publica de criptare n maniera descrisa anterior. Se
stie de asemenea ca B este obtinut dintr-un vector super-crescator A printr-o nmultire
modulara tare n raport cu un modul m si un nmultitor t. Nu cunoastem A, m, t; vrem
sa le aflam. Daca determinam m si u = t1 , putem gasi imediat vectorul super-crescator
A si decripta mesajele interceptate. Calculul lui u plecand de la t (sau invers) se bazeaza
pe Algoritmul extins al lui Euclid si nu prezinta nici o dificultate.
In aceasta sectiune vom dezvolta metoda de criptanaliza a lui Adi Shamir ([?]).
Algoritmul opereaza n timp polinomial, gradul polinomului de complexitate fiind
determinat de numarul si marimea componentelor vectorului B. Shamir face o analiza
detaliata asupra stabilirii acestui grad, analiza care poate fi studiata n [?].
Atacul are ca prim scop gasirea valorilor m si u. O prima observatie: nu este necesara
aflarea exact a valorilor pe care le-a definit Bob pentru sistemul de criptare. Orice pereche
(m, u) care, plecand de la vectorul B duce la un vector super-crescator A, poate fi utilizata
la decriptare. Astfel de perechi se numesc perechi trapa. Odata gasita o astfel de pereche
trapa, Lema ?? devine valabila si se poate ncepe decriptarea. Existenta cel putin a unei
perechi trapa este asigurata de faptul ca sistemul de criptare rucsac se bazeaza pe o astfel
de constructie.
In aflarea unei perechi trapa, vom considera graful functiei fi (u) = bi u (mod m)
pentru i = 1, 2, . . . , n. Acesta este format din segmente de linii paralele, rupte n
punctele u = p m/bi , p = 1, 2, . . .
196 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA

6bi u

- u
m

In particular, a1 b1 u (mod m). Pentru ca a1 este prima componenta ntr-un vector


super-crescator, iar m depaseste suma tuturor componentelor, elementul a1 trebuie sa fie
foarte mic n comparattie cu m. Deci valoarea lui u trebuie sa fie suficient de aproape
de un minim al grafului y = f1 (u), corespunzator lui b1 . O exprimare explicita cat
de aproape trebuie sa fie de acest minim trebuie sa tina cont de anumite considerente
relative la marimile a1 , b1 si m. De obicei raportul bi /ai este foarte mare pentru valori
mici ale lui i (binenteles, Bob poate tine seama de acest lucru si sa construiasca sistemul
n asa fel ncat aceasta remarca sa nu fie valabila; atunci nsa vor apare alte particularitati
de care un bun criptanalist se poate folosi).
Similar, observam ca valoarea lui u din perechea trapa (m, u) trebuie sa fie destul de
apropiata de un minim al grafului lui f2 (u). Aceasta duce, pe baza inegalitatii triunghi-
ului, la concluzia ca doua minime ale lui f1 (u) si f2 (u) trebuie sa fie apropiate. Putem
proceda n acest fel si pentru alte valori. Faptul ca valoarea lui u este apropiata de un
minim al fiecarei curbe fi (u) implica faptul ca aceste minime sunt apropiate unul de altul.
Deci, n loc sa aflam pe u, vom cauta puncte de acumulare ale minimelor curbelor
fi (u). Ele vor duce la determinarea unor intervale de valori reale, n care se afla astfel de
minime. In final se va alege un u dintr-un astfel de interval.
Prin argumente si calcule euristice, Shamir arata ca n general sunt suficiente patru
astfel de curbe pentru aflarea unei multimi rezonabil de mica de astfel de intervale (sau
echivalent puncte de acumulare).
Sa traducem aceste idei sub o forma matematica.
Primul obstacol: nu stim nici o valoare a lui m (care apare n perechea trapa). Vom
considera temporar valoarea m = 1. Aceasta particularizare este de fapt o normalizare a
graficelor si nu afecteaza localizarea punctelor de acumulare care ne intereseaza.
Algoritmul consta din doua parti: n prima etapa vom afla o multime de numere ntregi
p cu proprietatea ca al p-lea punct de minim al curbei f1 (u) este punct de acumulare.
Pentru a evita generarea unui numar prea mare de valori p, se fixeaza o limita: un
parametru r care sa indice numarul maxim de valori posibile permise. Daca prima parte
a algoritmului genereaza mai mult de r valori, el se va termina cu esec.
In etapa urmatoare vom explora pe rand punctele de acumulare gasite anterior. Unul
din teste va reusi, deoarece valoarea lui u folosita de Bob n sistemul de criptare desem-
neaza un astfel de punct de acumulare.

I. Coordonata u a celui de-al p-lea punct de minim al curbei f1 (u) este p/b1 (reamintim,
momentan m = 1). Deci conditia ca minimele curbelor f1 (u) si f2 (u) sa fie apropiate
11.1. SISTEMUL DE CRIPTARE MERKLE - HELLMAN 197

este
p q
e < < e, 1 p b1 1, 1 q b2 1
b1 b2
unde e este o valoare rezonabil de mica. Inmultind aceasta relatie cu b1 b2 se obtine
< b2 p b1 q < , 1 p b1 1, 1 q b2 1.
Consideram s astfel de puncte de minim si scriem s 1 inegalitati de acest tip,
pentru b1 , b2 ,q
. . . , bs . Relativ la o valoare estimativa a lui , Shamir arata ca daca
se alege < b1 /2, atunci probabilitatea ca algoritmul sa esueze este mai mica de
(2/r)s1 .
Prima parte a algoritmului rezolva acest sistem de inecuatii, afland toate valorile
lui p pentru care exista q, . . . astfel ncat sa fie satisfacute cele s 1 inecuatii.
II. Fie p un punct de minim fixat arbitrar. Toate punctele de discontinuitate ale curbe-
p p+1
 
lor fi (u) (1 i n) aflate n intervalul , sunt ordonate crescator. Con-
b1 b1
sideram xj , xj+1 doua puncte consecutive de discontinuitate. Atunci n intervalul
[xj , xj+1 ] fiecare curba fi (u) este un segment reprezentat prin fi (u) = bi u cji , unde
cji este o constanta care depinde de valorile lui i, j si p.
Construim sistemul de inecuatii liniare


xj u xj+1


Xn
(bi u cji ) < 1
i=1


(b u cj ) + . . . + (b cji1 ) < bi u cji ,

i1 u (2 i n)

1 1

Solutia acestui sistem este un subinterval (posibil vid) al lui [xj , xj+1 ].
O conditie necesara si suficienta ca doua numere u, m sa formeze o pereche trapa
este sa existe un p si un j astfel ca u/m sa apartina unui astfel de subinterval.
Intr-adevar, n sistemul de sus, a doua inecuatie asigura un m mai mare decat suma
componentelor, iar ultimele n 1 inecuatii reprezinta conditia de super-crestere.
Deci etapa a doua face o cautare exhaustiva printre perechile (p, j), unde p este dat
de prima etapa a algoritmului, iar j este un index al listei ordonate de puncte de
discontinuitate din intervalul dat de p. Cautarea se face pana la aflarea unui interval
nevid (solutie care exista totdeauna). La un astfel de interval corespunde cel putin
o pereche trapa.
Exemplul 11.5. Sa presupunem ca vectorul public este B = (7, 3, 2) (exemplul este
extrem de simplu, dar va permite detalierea algoritmului).
Prima etapa a algoritmului solicita rezolvarea unui sistem de doua inegalitati duble:
< 3p 7q < , < 2p 7r < , (1 p 6, 1 q 2, r = 1).
198 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA

q q
Valoarea recomandata pentru este b1 /2 = 7/2 = 1, 87. Aceasta alegere nu da nsa
nici o solutie pentru p (de fapt, pe exemple mici, orice rezultat asimptotic poate fi eronat).
Vom trece la etapa a doua, considerand drept candidati pentru testare toate valorile lui p.
Deci mpartim intervalul (0, 1) n subintervalele
1 1 2 2 1 1 3 3 1 1 4 4 2 2 5 5 6 6
                
0, , , , , , , , , , , , , , , , , , ,1 .
7 7 7 7 3 3 7 7 2 2 7 7 3 3 7 7 7 7
In fiecare din aceste subintervale, cele trei curbe sunt de forma fi (u) = bi u cji (i =
1, 2, 3, iar indicele j indica intervalul). Toate intervalele sunt deschise, pentru ca nici un
punct de discontinuitate nu va corespunde unei perechi trapa.
Pentru fiecare subinterval consideram inecuatiile


(7u i1 ) + (3u i2 ) + (2u i3 ) < 1
7u i1 < 3u i2
(7u i1 ) + (3u i2 ) < 2u i3

cu 0 i1 6, 0 i2 2, 0 i3 1. Acest sistem se poate rescrie

12u < i, 4u < j, 8u < k

unde s-a notat i = 1 + i1 + i2 + i3 , j = i1 i2 , k = i1 + i2 i3 .


Listam ntr-un tabel toate variantele posibile:
                   
0, 17 1 2
,
7 7
2 1
,
7 3
1 3
,
3 7
3 1
,
7 2
1 4
,
2 7
4 2
,
7 3
2 5
,
3 7
5 6
,
7 7
6
7
,1
i1 0 1 2 2 3 3 4 4 5 6
i2 0 0 0 1 1 1 1 2 2 2
i3 0 0 0 0 0 1 1 1 1 1
i 1 2 3 4 5 6 7 8 9 10
j 0 1 2 1 2 2 3 2 3 4
k 0 1 2 3 4 3 4 5 6 7
12u < i PT PT NU NU NU NU PT NU PT NU
4u < j NU PT DA NU DA NU DA NU PT DA
8u < k NU NU NU PT DA NU NU NU PT PT
Pentru fiecare subinterval am notat: DA daca inegalitatea din prima coloana este
adevarata, NU daca nu este adevarata, si P T daca este partial adevarata (verifi-
cata doar la unul din capete). Un interval genereaza perechi trapa numai daca pe coloana
sa apar numai DA sau PT.
In cazul nostru, singurul interval valid este (5/7, 6/7). Alegem numere rationale u/m
din acest interval, care sa verifice cele trei inecuatii. Cautand cei mai mici numitori
posibili, primul numar rational care verifica este 8/11. Deci luam u = 8 si m = 11.
Atunci relatia ai bi u (mod 11) transforma vectorul B = (7, 3, 2) n vectorul cu crestere
mare A = (1, 2, 5).
Evident, aceasta nu este singura solutie posibila. Alte solutii pot fi de exemplu:
11.1. SISTEMUL DE CRIPTARE MERKLE - HELLMAN 199

(u, m) = (41, 56) care transforma B n vectorul super-crescator A = (7, 11, 26),
(u, m) = (61, 84) care conduce la vectorul super-crescator A = (7, 15, 38),
(u, m) = (223, 308) care conduce la vectorul super-crescator A = (25, 35, 138).
Exemplul 11.6. Sa consideram vectorul rucsac public
B = (43, 129, 215, 473, 903, 302, 561, 1165, 697, 1523)
Este mult prea
 dificil
 sa scriem lista completa a punctelor de discontinuitate din toate
p p+1
intervalele 43 , 43 ; de exemplu, numai functia f10 (u) (pentru p = 1253) are 35 puncte
de discontinuitate. Totusi, B contine destul de multe slabiciuni criptografice pentru a
permite scurtarea algoritmului de atac.
Inegalitatile din prima etapa pot fi scrise sub forma
|129p 43q| , |215p 43r| , |473p 43s|
Pentru ca 129, 215 si 473 sunt multipli de 43, rezulta ca p = 1 este un candidat  posi- 
1 2
bil. Nu mai cautam alte valori pentru p si restrangem investigatia la intervalul 43 , 43 .
Considerand si puncte de discontinuitate
 ale
 altor curbe n acest interval, vom putea res-
1 36
trange subintervalul solutiilor la 43 , 1523 . Cele 10 curbe sunt definite aici sub forma
segmentelor de dreapta de ecuatii
f1 (u) = 43u 1, f2 (u) = 129u 3, f3 (u) = 215u 5, f4 (u) = 473u 11,
f5 (u) = 903u 21 f6 (u) = 302u 7, f7 (u) = 561u 13, f8 (u) = 1165u 27,
f9 (u) = 697u 16, f10 (u) = 1523u 35.
10
X
Inecuatia a doua (care se refera la marimea modulului) este fi (u) < 1 sau
i=1
6011u 139 < 1, care duce la solutia u < 140/6011.  Pentru  ca 140/6011 < 36/1523,
1 140
gasim un nou interval mai restrans al solutiilor: 43 , 6011 .
Listam inecuatiile care exprima conditia de super-crestere, mpreuna cu solutiile lor:
129u 3 > 43u 1 u > 1/43
215u 5 > 172u 4 u > 2/43
473u 11 > 387u 9 u > 1/43
903u 21 > 860u 20 u > 1/43
302u 7 > 1763u 41 u < 34/1461
561u 13 > 2065u 48 u < 35/1504
1165u 27 > 2626u 61 u < 34/1461
697u 16 > 3791u 88 u < 72/3094
1523u 35 > 4488u 104 u < 69/2965
Cea mai mica margine superioara
 dintre toate aceste solutii este 72/3094 = 36/1547.
1 36
In final se obtine intervalul 43 , 1547 . Alegand numarul 37/1590 din acest interval se
obtine vectorul super-crescator A din Exemplul 7.4., Capitolul 7. Pentru numarul 72/3095
se obtine vectorul super-crescator A = (1, 3, 5, 11, 21, 79, 157, 315, 664, 1331).
200 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA

11.1.3 Vectori rucsac cu densitate mare


Spargerea sistemului de criptare rucsac definit de Merkle si Hellman nu nseamna re-
zolvarea problemei rucsacului, ci numai exploatarea slabiciunii provenite din modul de
alegere a cheii secrete. Ulterior au fost generate si alte constructii de cripto-sisteme ruc-
sac. In aceasta setiune prezentam un astfel de sistem, prezentat de Arto Salomaa ([?]).
In varianta Merkle - Hellman, sistemul de criptare rucsac se baza pe vectori cu den-
sitate mica, n sensul ca elementele vectorului erau foarte rare n raport cu numarul lor.
Noul sistem propune o constructie bazata pe vectori rucsac cu densitate mare.
Fie p un numar prim si h 1. Un element este algebric de gradul h peste Zp daca
satisface o ecuatie polinomiala P (x) = 0 de gradul h si nici o ecuatie de grad mai mic
(adica P (x) este un polinom ireductibil peste Zp ). Considerand atunci extensia Galois
GF (ph ), elementele sale pot fi reprezentate sub forma
h1
cj j
X
x= (0 cj p 1)
j=0

Exemplul 11.7. Fie p = 3, h = 2 si o radacina a ecuatiei X 2 X 1 = 0. Elementele


corpului GF (32 ) pot fi exprimate n functie de astfel:

GF (32 ) = {0, 1, 2, , + 1, + 2, 2, 2 + 1, 2 + 2}

Similar aritmeticii modulare definite pe Zp , putem folosi notiunea de logaritm discret


si n extensiile Galois GF (ph ). Un element este un generator al lui GF (ph ) \ {0} daca
pentru orice x GF (ph ) \ {0} exista un ntreg i [0, ph 1] astfel ca x = i . Deci
i = log x.
Exemplul 11.8. Pentru extensia GF (32 ) construita n Exemplul ??, este un gene-
rator. Logaritmii elementelor nenule din aceasta extensie sunt:

x 1 2 + 1 + 2 2 2 + 1 2 + 2
log x 8 4 1 2 7 5 3 6

Tot un generator al lui GF (32 ) \ {0} este si 2 + 1. Tabela de logaritmi n aceasta baza
este
x 1 2 + 1 + 2 2 2 + 1 2 + 2
log2+1 x 8 4 3 6 5 7 1 2

In 1936 a fost enuntata o problema interesanta, cu aplicatii n domeniu. Anume, fiind


date numerele ntregi pozitive n si h, exista un vector A = (a1 , a2 , . . . , an ) cu elemente
nenegative distincte, astfel ncat toate sumele de exact h componente de elemente (nu
neaparat distincte) din A, sunt diferite. Un astfel de vector A este usor de construit,
luand ai = hi1 (1 i n). Constructia corespunde vectorilor rucsac cu densitate mica
11.1. SISTEMUL DE CRIPTARE MERKLE - HELLMAN 201

(categorie n care intra si vectorii super-crescatori). In cazul vectorilor rucsac cu densitate


mare (unde valorile componentelor lui A cresc doar polinomial n n), Bose si Chowla au
dat o rezolvare, prezentata n Lema urmatoare:

Lema 11.2. Fie p un numar prim si h un numar ntreg, (h 2). Atunci exista un vector
rucsac A = (a1 , a2 , . . . , ap ) care satisface conditiile

1. 1 ai ph 1, (1 i p),

2. Daca x, yi (1 i p) sunt numere ntregi nenegative cu


p
X p
X
(x1 , x2 , . . . , xp ) 6= (y1 , y2 , . . . , yp ) iar xi = yi = h,
i=1 i=1

p
X p
X
atunci ai xi 6= ai y i .
i=1 i=1

Demonstratie. Sa consideram extensia Galois GF (ph ); fie un element algebric de grad


h peste Zp , iar g un generator al lui GF (ph ) \ {0}. Definim

ai = logg ( + i 1), (1 i p)

Conditia (1) este evident satisfacuta. Pentru a arata si (2), sa presupunem prin absurd
p
X p
X
ca exista numerele xi , yi (1 i p) care verifica ipoteza, dar ai x i = ai yi . Deci
i=1 i=1
Pp Pp
ai xi ai yi
g i=1 =g i=1

sau
( + 0)x1 . . . ( + p 1)xp = ( + 0)y1 . . . ( + p 1)yp .
Tinand cont si de ipoteza, aceasta expresie este un polinom n de grad cel mult h 1,
ceea ce contrazice faptul ca este algebric de gradul h.
Demonstratia ramane valabila si pentru p = q n , q numar prim. De asemenea, se poate
nlocui concluzia Lemei ?? cu un rezultat mai tare:
p p
(mod ph 1)
X X
ai xi 6 ai y i
i=1 i=1

Pe baza acestor rezultate, sa construim un sistem de criptare rucsac. Textul clar va


contine cuvinte (blocuri) de p biti, astfel ncat n fiecare bloc sunt exact h biti egali cu 1.
In general, un text clar arbitrar nu poate fi segmentat n astfel de blocuri; totusi, se pot
defini codificari convenabile premergatoare ale textului clar. O astfel de codificare este
asigurata de rezultatul urmator:
202 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA

Lema 11.3. Fie n 3 si h < n. Atunci exista o aplicatie injectiva a multimii secventelor
binare de lungime blog2 Cnh c n multimea secventelor binare de n biti n care apar h de 1.
Demonstratie. Sa consideram secventele binare de lungime blog2 Cnh c ca reprezentari bina-
re de numere a.
- Ordonam crescator secventele binare de lungime n avand h de 1.
- Stabilim o corespundenta ntre secventa binara asociata numarului a si al (a + 1) -
lea bloc binar astfel ordonat.
Aplicatia definita de aceasta corespondenta este injectiva; n plus, deoarece Cnh < 2n ,
nu sunt epuizate toate secventele binare.
Exemplul 11.9. Fie n = 5 si h = 2. Atunci blog2 C52 c = 3; deci putem codifica blocuri
de 3 biti. Corespondenta se realizeaza dupa tabelul:
0 0 0 0 0 0 1 1
0 0 1 0 0 1 0 1
0 1 0 0 0 1 1 0
0 1 1 0 1 0 0 1
1 0 0 0 1 0 1 0
1 0 1 0 1 1 0 0
1 1 0 1 0 0 0 1
1 1 1 1 0 0 1 0
Secventele 10100 si 11000 raman neutilizate.
Sa descriem acum sistemul de criptare:

Se alege un numar prim p si fie h < p. Se alege algebric de gradul h peste


Zp si un generator g al lui GF (ph ) \ {0}.

Se calculeaza A = (a1 , a2 . . . , ap ) definit prin


ai = logg ( + i 1), (1 i p) (1)

Se defineste vectorul B = (b1 , b2 , . . . , bp ) prin bi = a(i) + d,


unde Sp este o permutare, iar d (0 d ph 2) este o constanta arbitrara.

Cheia publica de criptare este B, p, h. Trapa secreta consta din , g, d, .


Fie C o secventa binara de lungime p n care suma elementelor este h. Considerat sub
forma unui vector, C este criptat prin produsul scalar
e(C) = B C T (mod ph 1)
Protocolul de decriptare urmat de Bob este:
11.1. SISTEMUL DE CRIPTARE MERKLE - HELLMAN 203

Daca x este mesajul criptat, n prima faza se determina y = xhd (mod ph 1).

Se calculeaza g y n GF (ph ). Acesta este un polinom n , de grad cel mult h 1.


Pe de alta parte, satisface o ecuatie de forma h = r(), unde r(X) Zq [X]
este un polinom de grad cel mult h 1.

Polinomul s() = h + g y r() se descompune n factori liniari peste Zp (lucru


posibil deoarece s() este un produs de puteri ale lui g, fiecare exponent fiind de
forma (1)). Fie s() = (+i1 1)(+i2 1) . . . (+ih 1) aceasta descompunere.

Pozitia elementelor 1 din textul clar este data de valorile


( 1 (i1 ), 1 (i2 ), . . . , 1 (ih )).

Unicitatea decriptarii este asigurata de Lema ??.


Exemplul 11.10. Pentru facilitarea ntelegerii, vom face abstractie de permutarea si
deplasarea d. Fie extensia GF (32 ) definita n Exemplele ?? si ??, n care verifica ecuatia
X 2 = X +1, iar 2+1 este generatorul extensiei. Deoarece logaritmii elementelor , +1
si + 2 sunt 3, 6 si respectiv 5, se obtine cheia publica de criptare A = (3, 6, 5) (n acest
exemplu B = A). In plus, p = 3 si h = 2.
Un text clar este compus din vectori binari cu 3 componente, n care suma componen-
telor este 2.
Sa consideram vectorii (2, 0, 0) si (0, 1, 1). Ei sunt criptati n numerele 6 respectiv 3
(calculele se efectueaza modulo ph 1 = 8).
La decriptare, Bob:
- calculeaza ntai puterile (2 + 1)6 = + 1 si (2 + 1)3 = .
- La ambele expresii, aduna 2 1, rezultand polinoamele 2 respectiv 2 a =
( + 1)( + 2).
- Se deduc textele clare (2, 0, 0) respectiv (0, 1, 1).
Exemplul 11.11. Sa relam elementele principale din Exemplul ! ??, si sa construim vec-
1 2 3
torul public, aplicand lui A permutarea = urmata de deplasarea d = 7.
2 3 1
Vectorul rezultat este B = (5, 4, 2); acesta, mpreuna cu p = 3 si h = 2 constituie cheia
publica. Trapa secreta este formata din , d, polinomul X 2 X 1 si generatorul 2 + 1.
Atunci, textul clar (0, 1, 1) este criptat n 6.
La receptie, Bob calculeaza ntai 6 2 7 (mod 8) = 0.
Pe urma determina 2 + (2 + 1)0 1 = 2 = ( + 2), care ! conduce la vectorul
1 2 3
(1, 0, 1). Acestuia i se aplica permutarea inversa 1 = pentru a obtine textul
3 1 2
clar (0, 1, 1).
204 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA

11.2 Sistemul de criptare McEliece


Sistemul de criptare McEliece propus n 1978 este destul de apropiat de problema
rucsacului. El utilizeaza drept cadru teoria codurilor liniare (pentru detalii vezi [?]); aici,
n general decodificarea unui cod liniar binar corector de erori este o problema N P - com-
pleta. Pentru unele clase de coduri sunt construiti algoritmi de decodificare polinomiali;
o astfel de clasa o formeaza codurile Goppa, care constituie baza sistemului de criptare
McEliece.

Definitia 11.2. Fie k, n N (k n). Un (n, k) - cod liniar binar este un subspatiu liniar
C Z2n de dimensiune k.
O matrice generatoare a lui C este o matrice binara k n ale carei linii formeaza o
baza a lui C.
Pentru a Z2n se defineste ponderea w(a) = numarul de elemente nenule din a.
Pentru a, b Z2n a = (a1 , . . . , an ), b = (b1 , . . . , bn ), se defineste distanta Hamming
prin d(a, b) = w(a b).
Pentru un (n, k) - cod liniar binar C, distanta minima este

dC = min{d(a, b) | a, b C, a 6= b}

Un (n, k, d) - cod este un (n, k) - cod de distanta minima d.

Rolul unui cod corector de erori este de a corija modificari aleatoare care apar n
transmiterea unui set de date (binare) printr-un canal. In linii mari, acesta functioneaza
astfel: daca a este un mesaj de informatie de k biti, Alice l codifica ntr-un cuvant de n
biti b = aG, unde G este matricea generatoare a codului.
Bob primeste un mesaj r Z2n (eventual r = b) si cauta un cuvant b1 C cu d(r, b1 )
minim posibil. Va decodifica r n b1 dupa care va calcula un mesaj de informatie a1 astfel
ca b1 = a1 G. Cazul ideal este acela cand b1 = b, a1 = a (adica erorile au fost acoperite
corect). Se cunoaste ca, daca numarul de erori care apar nu depaseste (d 1)/2, acest
procedeu corecteaza efectiv erorile.
Daca Bob cauta cuvantul - cod cel mai apropiat comparand r pe rand cu fiecare element
din C, cum sunt 2k astfel de cuvinte, algoritmul va fi exponential, deci nefunctional.
Majoritatea algoritmilor de decodificare se bazeaza pe notiunea 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 carei linii formeaza o baza a unui spatiu liniar
ortogonal. Evident, G H T = 0.
Pentru un cuvant r Z2n , se numeste sindrom secventa de n k biti definita H rT .

Teorema 11.1. a este un cuvant - cod daca si numai daca H aT = 0.


In plus, daca a C, e Z2n si r = a + e, atunci H rT = H eT .
11.2. SISTEMUL DE CRIPTARE MCELIECE 205

Pentru demonstratie se poate consulta de asemenea [?].


e poate fi considerat drept vectorul de erori care au aparut n transmiterea mesajului
a. Teorema anterioara afirma ca sindromul depinde doar de erori, nu si de cuvantul - cod
transmis.
Aceasta observatie sugereaza o metoda de decodificare bazata pe sindrom. Se cal-
culeaza ntai s = H rT . Daca s = 0, decodificarea lui r este tot r. Altfel, se ncearca
toate cuvintele de pondere 1. Pentru fiecare astfel de cuvant e se calculeaza H eT . Daca
s-a gasit un e cu H eT = s, r se decodifica n r e. In caz contrar se ncearca vectorii de
pondere 2, 3, . . . , [(d 1)/2]. Daca nu s-a gasit nici un cuvant e cu H eT = s, se deduce
ca au aparut mai mult de [(d 1)/2] erori n cursul transmisiei.
Metoda prezentata functioneaza pentru toate codurile liniare. Pentru anumite clase
speciale de coduri exista algoritmi polinomiali de decodificare si corectare a erorilor; n
cazul general nsa problema este N P - completa.
Algoritmul de criptare McElliece se bazeaza pe aceasta idee. Trapa sa secreta o con-
stituie o clasa de coduri pentru care exista algoritmi eficace de decodificare codurile
Goppa. In plus, exista un numar mare de coduri Goppa neechivalente, avand aceiasi
parametri.
Algoritmul de criptare McEliece este urmatorul:

Fie G matricea generatoare a unui (n, k, d) - cod Goppa cu n = 2m , d = 2t + 1, k =


n m t.
Se definesc:
- S matrice inversabila k k peste Z2 ,
- P matrice de permutare n n (matrice n care pe fiecare linie si coloana exista
o valoare 1, iar restul elementelor sunt 0).
Fie P= Z2k , C= Z2n , K= {(G, S, P, G0 ) | G0 = S G P }.
G0 este publica iar G, S, P sunt secrete.
Pentru K = (G, S, P, G0 ) se defineste

eK (a, e) = a G0 + e

unde e Z2n este un cuvant aleator de pondere t.


Bob decripteaza un mesaj b Z2n astfel:
1. Calculeaza b1 = b P 1 ;
2. Decodifica b1 obtinand b1 = a1 + e1 unde a1 C;
3. Calculeaza a0 Z2k astfel ca a0 G = a1 ;
4. Calculeaza a = a0 S 1 .

De remarcat ca sistemul McElliece este primul sistem de criptare cu cheie publica care
a folosit alegerea unei valori aleatoare n procesul de criptare, idee reluata de ulterior de
sistemul El Gamal.
206 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA

Corectitudinea algoritmului de decriptare:


Deoarece b1 = b P 1 = (a G0 + e) P 1 = (a S G P + e) P 1 = (a S) G + e P 1
iar e P 1 este un vector de pondere cel mult t, algoritmul de decodificare al codului de
matrice generatoare G poate decodifica corect pe b1 si obtine un mesaj sursa a0 = a S.
La ultimul pas se afla mesajul initial a = a0 S 1 .
Nu vom intra n detalii privind definitia codurilor Goppa ([?]). Acestea pot fi privite
nsa drept coduri liniare cu parametrii n = 2m , d = 2t + 1, k = n m t. Pentru o
implementare practica referitor la criptare, McEliece sugereaza m = 10, t = 50, ceea ce
corespunde unui (1024, 524, 101) - cod Goppa2 . Un text clar este o secventa de 524 biti,
iar un text criptat este o secventa de 1024 biti. Cheia publica este o matrice binara de
dimensiuni 524 1024.

Exemplul 11.12. Vom exemplifica algoritmul pe un (8, 2, 5) - cod Goppa (deci n =


23 , k = 2, d = 5). Acest cod - extrem de mic (are doar 4 cuvinte) este generat de
matricea
!
0 0 1 1 1 1 1 1
G=
1 1 0 0 1 0 1 1

Sa presupunem ca Bob alege matricile


! !
1 0 1 0
S= cu S 1 =
1 1 1 1
si
0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0



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

1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
1
P = cu P =

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



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

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


0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
Matricea publica generata este deci
!
0 1 0 1 0 1 1 1 1
G =SGP =
1 1 0 1 0 1 1 0

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

b = a G0 + e = (1, 1, 1, 1, 0, 0, 1, 0).
2
O analiza a securitatii recomanda parametrii n = 1024, t = 38, k 644.
11.3. EXERCITII 207

Dupa receptionarea mesajului, Bob calculeaza ntai


b1 = b P 1 = (1, 1, 1, 1, 1, 0, 0, 0),
pe care l scrie sub forma a1 + e1 unde a1 = (1, 1, 1, 1, 0, 1, 0, 0) este un cuvant - cod,
iar e1 = (0, 0, 0, 0, 1, 1, 0, 0) 6= e (din cauza nmultirii cu P 1 ).
Bob calculeaza apoi mesajul a0 = (1, 1), singurul cu proprietatea a0 G = a1 .
Ultimul pas este determinarea lui a = S 1 a0 = (0, 1), care este textul clar expediat
de Alice.

Algoritmul McElliece s-a dovedit sigur. Acest lucru rezulta din analiza celor doua
tipuri de atac posibile:

1. Din informatia publica, Oscar ncearca sa afle matricea G sau o matrice G1 a unui
cod Goppa echivalent (avand aceeasi parametri). Nu se cunoaste nici un algoritm
eficient pentru un astfel de demers.

2. Oscar ncearca sa afle mesajul clar a direct din textul criptat b. El ia aleator k
coloane din matricea publica G0 . Notand G0k , bk , ek restrictiile lui G0 , b respectiv e
la aceste k coloane, vom avea a G0k = bk + ek . Daca bk = 0 si G0k este nesingulara,
atunci a poate fi aflat rezolvand sistemul liniar a G0k = bk . Probabilitatea ca cei
k
k biti selectati sa nu faca parte din eroare (deci ek = 0) este Cnt /Cnk , neglijabila
pentru valorile alese ale parametrior n, k, t.

Interesant, dar aceasta securitate este mult diminuata daca se foloseste alta clasa de coduri
liniare n locul codurilor Goppa.
Totusi, n ciuda securitatii sale si a vitezei relativ mari de criptare/decriptare sistemul
McElliece nu este folosit practic. Cauza principala o constituie cheia sa excesiv de mare.
De exemplu, pentru n = 1024, t = 38, k 644, cheia are aproximativ 219 biti.

11.3 Exercitii
11.1. Folosind vectorul rucsac public B = (228, 325, 346, 485, 556, 525) criptati textul clar
CASA DE P IAT RA.

11.2. Se stiu parametrii m = 523, u = 28 si vectorul public


B = (355, 131, 318, 113, 21, 135, 215).

1. Aflati vectorul rucsac super-crescator A = (a1 , a2 , a3 , a4 , a5 , a7 );

2. Decriptati mesajul (113, 689, 379, 350, 346, 697, 355, 355).

11.3. Folosind vectorul rucsac public B = (102, 238, 3400, 284, 1044, 2122, 425) criptati
textul clar F RU N ZA DE ST EJAR.
208 CAPITOLUL 11. ALTE SISTEME DE CRIPTARE CU CHEIE PUBLICA

11.4. Se stiu parametrii m = 3989, u = 352 si vectorul public


B = (102, 238, 3400, 284, 1044, 2122, 425).

1. Aflati vectorul rucsac super-crescator A = (a1 , a2 , a3 , a4 , a5 , a7 );

2. Decriptati mesajul (1753, 2122, 5624, 1566, 1809, 3450, 2360, 1049, 0).

11.5. Plecand de la criptanaliza vectorului rucsac din din Exemplul ??, sa se construiasca
vectorul super-crescator corespunzator valorii 720/30949.

11.6. Fie A = (a1 , a2 , . . . , an ) un vector rucsac. Un ntreg pozitiv x este reprezentat de


A daca si numai daca x poate fi exprimat ca o suma de ai n care fiecare element din A
apare cel mult odata. Daca A este un vector injectiv, atunci este clar ca 2n 1 valori
ntregi sunt reprezentate de A. Acesta este cel mai mare numar posibil de valori. Care
este cel mai mic numar posibil de valori (n functie de n) ?

11.7. Folosind parametrii din Exemplul ?? criptati mesajele x = (1, 1) si y = (1, 0).
Capitolul 12

Generatori de numere pseudo -


aleatoare

12.1 Numere aleatoare si numere pseudo-aleatoare


Aproape toate sistemele de criptare si protocoalele folosite n criptografie au un punct
central comun: alegerea unor numere arbitrare, necunoscute apriori, imprevizibile; denu-
mirea standard este de numere aleatoare sau numere generate aleator. In general nu
se poate vorbi de un singur numar aleator decat ntr-un context statistic. Termenul corect
este acela de sir de numere aleatoare.
Folosirea calculatorului reduce termenul de numere aleatoare la un sir de biti generati
aleator, grupati dupa o anumita regula. Matematic, nu exista o modalitate mai scurta de
a specifica sirul decat secventa nsasi.

Definitia 12.1. Un generator de numere aleatoare, sau generator real aleator (GA)
este un dispozitiv sau un algoritm care produce o secventa de numere independente si
nepredictibile (care nu ofera informatii asupra valorilor ulterioare).

In majoritatea cazurilor, un GA produce secvente binare, care ulterior sunt convertite


n numere ntregi.
Statistica ofera destul de putine informatii despre bitii generati aleator. De exemplu,
se stie ca 0 trebuie sa apara la fel de frecvent ca 1, ca 00 trebuie sa apara de doua ori
mai rar decat 0 (sau 1) si la fel de des ca 11, 10, 01. Exista si teste statistice (distributie
normala standard, distributie 2 - Kolmogorov) care estimeaza cat de aleatoare sunt
numerele dintr-un secventa.
In criptografie este esential ca un numar aleator sa nu poata fi aflat. Un numar perfect
aleator este acela pe care Oscar nu-l poate ghici decat prin forta bruta. O parte destul de
importanta din criptanaliza se bazeaza pe exploatarea imperfectiunilor unor functii care
genereaza numere aleatoare.

209
210 CAPITOLUL 12. GENERATORI DE NUMERE PSEUDO - ALEATOARE

O generare de numere pur aleatoare se realizeaza prin colectarea si procesarea de date


obtinute dintr-o sursa de entropie exterioara calculatorului. Sursa de entropie poate fi
foarte simpla, ca de exemplu variatiile miscarii mouse-ului, sau intervalul de timp dintre
apasarea a doua taste. Surse foarte bune de entropie pot fi cele radioactive sau cele care
folosesc zgomote din atmosfera.
Proprietatea de a fi aleator a fost introdusa n domeniul tehnicii de calcul cu ajutorul
generatorilor de numere pseudo-aleatoare.
Definitia 12.2. Fie m, k (0 < k < m) numere ntregi. Un (k, m) generator de numere
pseudo-aleatoare este o aplicatie recursiva
f : Z2k Z2m
calculabila n timp polinomial.
In aplicatii, m = h(k) unde h este o functie polinomiala.
Un generator de numere pseudo-aleatoare trebuie sa satisfaca anumite cerinte:
Sa fie simplu si rapid.

Sa produca siruri de numere de lungime arbitrara care sa nu contina repetitii.


Deoarece un calculator nu poate genera decat numere mai mici decat un numar
dat, nu se poate construi un generator cu perioada infinita. Generatorul trebuie sa
aiba totusi o perioada de repetitie cat mai mare.

Sa produca numere independente unul de altul (sau cu o corelare cat mai vaga).

Sa genereze numere cu o repartitie uniforma n spatiul valorilor.


Putem defini un generator de numere pseudo-aleatoare folosind arhitectura calculatorului.
Astfel, daca S = (Q, f ) este un circuit secvential cu m = card(Q) stari si functie de
tranzitie f : Q Q, atunci secventa

xn = f (xn1 ), x0 oarecare,

este o secventa de numere pseudo-aleatoare.


Un astfel de generator este cu atat mai eficient cu cat satisface mai bine cerintele
anterioare.

12.2 Generatori simpli de numere pseudo-aleatoare


12.2.1 Generatori liniari congruentiali
Un astfel de generator (construit de Lehmer n 1949) este definit de formula

xn+1 = axn + b (mod m)


12.2. GENERATORI SIMPLI DE NUMERE PSEUDO-ALEATOARE 211

Valorile a (multiplicatorul), b (incrementul) si m (modulul) sunt constante. Cheia de


generare este valoarea initiala x0 .
Cand b = 0, generatorul se numeste multiplicativ.
Perioada maxima a unui generator liniar este evident m. Ea poate fi atinsa pentru
anumite valori ale perechii (a, b) (de exemplu daca cmmdc(b, m) = 1).
Un generator liniar congruential de perioada m se numeste generator de perioada maxi-
mala. O analiza a strategiei de selectie a valorilor pentru a asigura o perioada maximala
se poate gasi n [?] si [?]. O analiza teoretica detaliata a generatorilor liniari congruentiali
se gaseste n [?].
In Tabelul 1 se afla listati cativa generatori de perioada maximala.
a b m a b m
105 1283 6075 1277 24749 117128
211 1663 7875 2311 25367 120050
421 1663 7875 3877 29573 139968
430 2531 11979 8121 28411 134456
171 11213 53125 9301 49297 233280
141 28411 134456 2416 374441 1771875
421 17117 81000 17221 107839 510300
1093 18257 86436 84589 45989 217728
Tabelul 1
Avantajul generatorilor liniari congruentiali este viteza de calcul.
O generalizare a relatiei de recurenta este

xn+k = (ak xn + (ak 1)c/b) (mod m)

care da un generator de perioada maximala cand:


cmmdc(c, m) = 1;
b = a 1 este multiplu de p, pentru orice numar prim p care divide m;
b (mod 4) = 0 daca m (mod 4) = 0.
Dezavantajul generatorilor liniari congruentiali este acela ca ei nu mai pot fi folositi n
criptografie; stiind prima valoare, numerele pot fi gasite usor. Criptanaliza a fost realizata
de Jim Reeds n 1977 (cu completari n 1979) si Joan Boyar n 1982. Ea a spart si
generatorii patratici
xn+1 = (ax2n + bxn + c) (mod m)
si cubici
xn+1 = (ax3n + bx2n + cxn + d) (mod m)
Alti cercetatori au extins metodele de atac pentru spargerea oricarui generator poli-
nomial congruential.
212 CAPITOLUL 12. GENERATORI DE NUMERE PSEUDO - ALEATOARE

Acum, acest tip de generator de numere pseudo-aleatoare este folosit cu predilectie n


aplicatii necriptografice; de exemplu, n simulare el asigura o comportare statistica buna
n majoritatea testelor.

12.2.2 Generatori Ranrot


Clasa generatorilor Ranrot a fost definita de danezul Agner Fog n 1997 ([?]), initial
pentru algoritmi de tip Monte Carlo. Ei se bazeaza pe generatoare de numere Fibonacci,
completate cu operatia de deplasare ciclica pe biti. Sunt cunoscute si studiate trei variante
de generatoare Ranrot:
Tip A: xn = ((xnj + xnk ) (mod 2b ))  r;

Tip B: xn = ((xnj  r1 ) + (xnk  r2 )) (mod 2b );

Tip B3: xn = ((xni  r1 ) + (xnj  r2 ) + (xnk  r3 )) (mod 2b );

Tip W: zn = ((ynj  r3 ) + (ynk  r1 )) (mod 2b/2 ),


yn = ((znj  r4 ) + (znk  r2 )) (mod 2b/2 ),
xn = yn + zn 2b/2 .
S-au folosit urmatoarele conventii:
1. Toate numerele x sunt ntregi binare pe b biti;

2. 0 < i < j < k n numere ntregi;

3.  s este rotatia secventei spre dreapta cu s pozitii;

4. 0 ri b 1 pentru primele doua tipuri, 0 bi b/2 pentru tipul W .


Valorile sunt calculate ntr-un vector (buffer) de k elemente, numit stare Sn .
Starea initiala este
S1 = (x1 , x2 , . . . , xk )
iar trecerea de la o stare la alta se realizeaza printr-o deplasare spre stanga de forma
(xnk , xnk+1 , . . . , xn1 ) (xnk+1 , . . . , xn1 , xn )
unde xn este calculat conform formulei specifice tipului sau.
Fie p = cmmdc(j, k). Daca p > 1, atunci sistemul se poate descompune n p sisteme
independente. Deci o prima conditie de performanta este cmmdc(j, k) = 1, ceea ce asigura
inter-dependenta tuturor numerelor din stare.
Din acelasi motiv, la tipul W trebuie ca numarul k j sa fie prim.
Din modul de implementare al adunarii binare rezulta o scurgere de informatie (prin
bitul de transport - carry) de la bitii cei mai putin semnificativi catre cei mai semnificativi,
informatie care nu se transfera n sens contrar. Pentru eliminarea acestui neajuns s-au
12.2. GENERATORI SIMPLI DE NUMERE PSEUDO-ALEATOARE 213

ncercat diverse variante, cum ar fi adunarea transportului la bitul cel mai putin semni-
ficativ (n loc de cel mai semnificativ) operatie care mbunatateste lungimea perioadei,
dar nu si caracterul aleator. Varianta considerata a fost aceea de deplasare ciclica a bitilor
sumei rezultate. In plus, pentru ca toate elementele din S sa ramana interdependente,
trebuie ca cel putin un r sa fie nenul. Din experimente a rezultat ca cele mai bune valori
b b 2b
pentru numarul de pozitii rotite este aproape de pentru tipul A, aproape de si
2 3 3
b b 3b
pentru tipul B si aproape de , , pentru tipul B3.
4 2 4
Lungimea maxima a unei perioade la un generator Ranrot este (2k 1) 2b1 .
Nu se cunoaste nca un algoritm de obtinere de generatori Ranrot de perioada maxi-
mala; cei cunoscuti au fost gasiti prin testari. Cel mai mare generator analizat are 232
stari.
Exemplul 12.1. Un generator Ranrot de tipul A cu j = 1, k = 4, b = 7, r = 4 are 24
cicluri de perioade 1, 5, 9, 11, 14, 21, 129, 6576, 8854, 16124, 17689, 135756, 310417, 392239,
488483, 1126126, 1355840, 1965955, 4576377, 7402465, 8393724, 57549556, 184256986.
Importanta restrictiilor impuse diverselor tipuri de generatori Ranrot este listata n
Tabelul 2.
Regula A B B3 W
cmmdc(j, k) = cmmdc(j, i) = cmmdc(k, i) = 1 *** *** *** ***
1<i<j <k1 ** * * *
k j impar - - - ***
un r 6= 0 *** *** *** **
toti r 6= 0 *** ** * -
r distincti - ** ** **
r>1 *** ** * *
cmmdc(r, b) = 1 * * * *
cmmdc(b, k) = 1 * * * *
Tabelul 2
S-a notat cu: o regula fara importanta, - importanta minora, - nerespectarea ei
duce la aparitia unor cicluri de perioada mica, - regula importanta.
Si acesti generatori sunt usor de spart, deoarece starea initiala se poate deduce usor
din k valori consecutive ale lui x. Daca nsa parametrii nu se cunosc, generatorii Ranrot
pot fi folositi cu succes n criptografie, avand o securitate sporita.
Exemplul 12.2. Sa consideram o varianta de generator Ranrot:
xn = ((xn1  r1 ) + (xn2  r2 ) + . . . + (xnk  rk ) + h) (mod 2b )
unde h este un numar ntreg arbitrar din [0, 2b ]. Pentru fiecare r sunt bk valori posibile.
Astfel, pentru k = 17, b = 32 numarul de variante distincte este 1, 6 1035
Exista un sistem de criptare (Power Crypto) bazat pe generatorul Ranrot de tip B3.
214 CAPITOLUL 12. GENERATORI DE NUMERE PSEUDO - ALEATOARE

12.2.3 Generatorul Blum - Blum - Shub


Cel mai simplu si se pare cel mai eficient generator de numere pseudo - aleatoare este
Blum - Blum - Shub (numit si generator rezidual patratic).
Definitia 12.3. Fie p, q doua numere prime. Daca
p 3 (mod 4), q 3 (mod 4)
atunci numarul n = pq se numeste ntreg Blum.
Algoritmul Blum - Blum - Shub (BBS pe scurt) de generare de numere pseudo-
aleatoare (prezentat ca un (k, m) generator) este:
Fie n = pq un ntreg Blum, unde p, q sunt numere prime pe k/2 biti.
Fie x0 un reziduu patratic modulo n. Se defineste secventa
xi+1 = x2i (mod n)
Daca zi = xi (mod 2) pentru 1 i m, atunci numarul aleator generat este

f (x0 ) = z1 z2 . . . zm .

Generarea bitilor nu este de fapt recursiva, deoarece zi (1 i m) se poate calcula direct


cu formula
2i (mod (p1)(q1))
zi = x0 (mod 2)
Exemplul 12.3. Fie p = 383, q = 503; deci n = 192649. Alegand x0 = 1013552 (mod n)
= 20749, generatorul BBS va produce sirul pseudo-aleator 1100111000010011101.
Detaliind
i 0 1 2 3 4 5 6 7 8 9
xi 20749 143135 177671 97048 89992 174051 80649 45663 69442 186894
zi 1 1 0 0 1 1 1 0 0
i 10 11 12 13 14 15 16 17 18 19
xi 177046 137922 123175 8630 114386 14863 133015 106065 45870 137171
zi 0 0 1 0 0 1 1 1 0 1
Securitatea acestui generator se bazeaza pe dificultatea factorizarii lui n. n poate fi
facut public; oricine poate genera o secventa pseudo-aleatoare pe baza lui. Totusi, daca
n nu se descompune n factori, nimeni nu poate prezice iesirea; nici macar o afirmatie de
genul: Urmatorul bit este 1 cu probabilitate 51%.
Mai mult, fiind data o parte a secventei, nu exista nici o modalitate de a prezice bitul
anterior sau cel ulterior secventei.
Algoritmul BBS este destul de lent, dar are unele implementari mai rapide. Astfel,
daca n este lungimea lui xi , pot fi pastrati ultimii blog2 xi c biti.
In acest moment BBS este considerat cel mai bun generator de numere pseudo-
aleatoare pentru protocoale de generare si distributie a cheii.
12.3. CIRCUITE LINIARE 215

12.3 Circuite liniare


Circuitele liniare1 sunt folosite pe scara larga n teoria codurilor detectoare si corectoare
de erori (codurile ciclice si codurile convolutionale) precum si n unele sisteme de criptare
liniare (AES de exemplu). Avantajul lor consta n modalitatea extrem de rapida de
calcul.
Teoria circuitelor liniare a fost stabilita n 1965 ([?]) de Ernst Selmer, seful biroului de
criptografie al guvernului norvegian. Pentru detalii si rezultate teoretice poate fi consultat
cartea de teoria codurilor [?].
Un LF SR (Linear Feedback Shift Register) este un circuit liniar format dintr-un regis-
tru serial si o functie de ntoarcere (feedback). Daca registrul este compus din n flip-flopuri
de date (DF F ), vom avea un n LF SR.

- bn bn1 ... b2 b1 -
6
? ? ? ?
 Functie de ntoarcere

Functia de ntoarcere este o adunare modulo 2 (XOR) a anumitor biti din registru; uneori
ea este numita configuratie Fibonacci (vezi generatoarele Ranrot).
Exemplul 12.4. Sa consideram un 4 LF SR dat de schema:
- s - - - s -

6
?
 +

 ?

Functia de ntoarcere este formata dintr-un singur XOR ntre primul si ultimul bit. Sa
presupunem ca initial cei patru biti din registru sunt 1001. La fiecare tact se va obtine o
noua configuratie, anume:
0100, 0010, 0001, 1000, 1100, 1110, 1111, 0111, 1011, 0101, 1010, 1101, 0110, 0011
dupa care apare din nou 1001.
La iesire va apare secventa 1001000111101011. Acest circuit asigura un generator de
perioada 16.
Un n LF SR poate avea maxim 2n 1 stari distincte (starea 00 . . . 0 este exclusa
deoarece ea formeaza un ciclu de lungime 1, neinteresant pentru generarea de numere
pseudo-aleatoare).
Fie g(X) Z2 [X], g(X) = 1 + g1 X + . . . + gn X n polinomul asociat unui n LF SR,
unde gi = 1 daca si numai daca bitul i participa la o adunare modulo 2. Astfel, n
Exemplul ?? polinomul este g(X) = 1 + X + X 4 .
1
Termenul din engleza este Shift Register.
216 CAPITOLUL 12. GENERATORI DE NUMERE PSEUDO - ALEATOARE

Sa consideram un polinom g(X) Z2 [X], grad(g(X)) = n si fie m cel mai mic numar
astfel ca g(X)|X m + 1. Atunci secventa binara generata de un n LF SR asociat lui g(X)
are perioada m (este o m - secventa).
Daca g(X) este un polinom ireductibil peste Z2 , atunci m = 2n 1, iar aceasta este
valoarea maxima posibila (egaleaza numarul de stari distincte posibile din n LF SR).
Toate detaliile teoretice care justifica aceste afirmatii se gasesc n [?].
Lema 12.1. Un polinom g(X) Z2 [X] este ireductibil daca si numai daca
1. Are un numar impar de termeni;

2. Cel putin un termen este de forma X 2p+1 .


Demonstratie: Exercitiu.
In [?] pag. 376 este dat un tabel cu aproape 300 polinoame ireductibile.
Evident, un n LF SR este un generator de secvente, dar proprietatea lor pseudo-
aleatoare este extrem de slaba; o stare interna ofera urmatorii n biti din secventa de
iesire. Chiar daca functia de ntoarcere nu este cunoscuta, ea poate fi determinata pe
baza a 2n biti de iesire (Algoritmul de decodificare Berlekamp - Massey, [?]). Totusi, prin
combinarea mai multor circuite LF SR se pot obtine generatori acceptabili de secvente
pseudo - aleatoare.

12.4 Generatori bazati pe LF SR


12.4.1 Generatorul Geffe
Generatorul Geffe combina ntr-o forma neliniara trei LF SR, conform schemei urmatoare2 :

LF SR2 - i0
EM U X -

LF SR3 - i1
6

LF SR1 -

LF SR1 formeaza functia de selectie a multiplexorului elementar, intrarile fiind asigurate


de celelalte doua LF SR-uri. Daca a1 , a2 , a3 sunt iesirile din cele trei LF SR-uri, iesirea
din generatorul Geffe este data de relatia
2
Pentru notiunile elementare de arhitectura calculatorului se poate folosi referinta [?].
12.4. GENERATORI BAZATI PE LF SR 217

b = (a1 a2 ) (a1 a3 )
Perioada generatorului este cel mai mic multiplu comun al perioadelor celor trei
LF SR-uri. Deci, daca cele trei polinoame care definesc circuitele au grade prime ntre
ele, perioada generatorului Geffe este produsul celor trei perioade.
Din punct de vedere criptografic generatorul nu rezista unui atac prin corelare. Iesirea
din generator coincide cu iesirea din LF SR2 cam 75% din timp. Deci, daca definitiile
polinomiale ale circuitelor sunt cunoscute se poate ghici valoarea initiala din LF SR2 si
genera secventa sa de iesire. Apoi se numara de cate ori iesirea din LF SR2 coincide cu
iesirea din generator. Statistic, daca nu s-a ghicit corect, cele doua secvente coincid cam
50%; daca s-a ghicit corect, ele coincid cam 75%.
Similar, iesirea generatorului coincide cu cea din LF SR3 cam 75% din timp.
Cu aceste corelari secventa poate fi ghicita complet. Intr-un articol din 1991, Zeng s.a.
([?]) arata ca daca polinoamele ireductibile au cate trei termeni iar cel mai mare LF SR
este de lungime n, atunci o secventa de 37n biti la iesirea din generator este suficienta
pentru determinarea starilor interne din cele trei circuite LF SR.
Generatorul Geffe poate fi extins la 2k + 1 LF SR legati printr-un M U Xk . Acest lucru
nu va mari nsa securitatea generatorului.

12.4.2 Generatori Stop-and-Go


Cel mai cunoscut este generatorul Beth - Piper (dupa numele autorilor); structura
sa este urmatoarea:

LF SR2 a2 (t)

-
LF SR1 a1 (t)
-  
-6 ? -
6
-
 -
- b(t)
 
6
s
6
-
LF SR3 a3 (t)
-

CK s -6

Acest generator controleaza ceasurile celor trei circuite. Astfel, ceasul de intrare n
LF SR2 este controlat de iesirea din LF SR1 ; n acest fel, LF SR2 si schimba starea
la momentul t numai daca iesirea din LF SR1 a fost 1 la momentul t 1.
Nu se cunosc studii asupra complexitatii acestui generator. El totusi nu a rezistat
atacurilor corelate ([?]).

Stop-and-Go alternativ: Aceasta varianta foloseste trei LF SR de lungimi diferite,


legate ntr-un circuit de forma:
218 CAPITOLUL 12. GENERATORI DE NUMERE PSEUDO - ALEATOARE

 LF SR2 -
LF SR1 s

-
-

- ? -6 ? -

6 -
-
e  
6
?XX
- - 6

s -
LF SR3
-

-

CK s - ? -6

Cand iesirea din LF SR1 este 1 ea activeaza LF SR2 ; n caz contrar este activat
LF SR3 . Iesirea din generator este un XOR dintre cele doua iesiri.
Acest generator are o perioada mare. Exista un atac prin corelare asupra sa (mai
precis asupra LF SR1 ), dar acesta nu i-a slabit substantial securitatea.

Generator Gollmann: Este o legare seriala n cascada a mai multor circuite LF SR,
ceasul fiecarui LF SR fiind controlat de circuitul anterior.
1
      
- -
s
6 6
-...
?
- -
? -
?
LF SR1 s LF SR2 LF SR2
- -
- - - - - -
        
-
6
s s s
6
...
? -6 ? -6
CK 6 -

Daca la momentul t 1 iesirea din LF SRi este 1, atunci la momentul t este activat
LF SRi+1 . Iesirea din generator este iesirea din ultimul LF SR. Daca toate circuitele
liniare au aceiasi lungime n, complexitatea unui generator Gollmann cu k LF SR-uri
este n (2n 1)k1 .

12.5 Alti generatori de numere pseudo-aleatoare


12.5.1 Generatorul Blum - Micali
Fie g un numar prim, p un numar prim impar si x0 o valoare initiala. Se genereaza
numerele
xi+1 = g xi (mod p)
p1
Iesirea din generator este 1 daca xi < si 0 altfel.
2
Securitatea acestui sistem se bazeaza pe problema logaritmului discret. Daca p este
suficient de mare astfel ca problema logaritmului discret sa fie dificila, generatorul este
sigur.

12.5.2 Generatorul RSA


Sistemul de criptare RSA poate fi folosit si pentru generare de numere aleatoare.
Fie n = pq un modul obtinut prin produsul a doua numere prime mari, un numar e
astfel ca cmmdc(e, (n))) = 1 si x0 (x0 < n) o valoare initiala. Se defineste
12.5. ALTI GENERATORI DE NUMERE PSEUDO-ALEATOARE 219

xi+1 = xei (mod n)


Iesirea din generator este zi = xi (mod 2).
Securitatea generatorului se bazeaza pe dificultatea spargerii sistemului RSA. Daca
n este suficient de mare, sistemul este sigur.

12.5.3 Generatorul Mother-of-all


Este un generator propus de George Marsaglia.
Initial se aleg cinci numere ntregi x0 , x1 , x2 , x3 , c (nu toate nule), stocate pe 32 biti
fiecare.
Algoritmul este:

1. n 4;

2. while n M AX do

(a) S 2111111111 xn4 + 1492 xn3 + 1776 xn2 + 5115 xn1 + c;


S
 
(b) xn S (mod 232 ), c 32 ;
2
(c) n n + 1;

Suma intermediara S este stocata pe 64 biti. Valoarea M AX este stabilita n functie


de lungimea secventei de numere pseudo-aleatoare generate.
Implementat n limbaj de asamblare, algoritmul este extrem de rapid, deoarece aici
exista o instructiune de nmultire a doua numere ntregi pe 32 biti, cu rezultatul pe 64
biti. Scris ntr-un limbaj de nivel nalt, algoritmul foloseste numere n virgula mobila cu
o mantisa de 63 biti.

12.5.4 Generatorul 1/P


Fie P un numar prim impar si b un generator al lui ZP . Secventa pseudo-aleatoare
produsa de generatorul 1/P cu intrarea (b, P ) este sirul de cifre zecimale din reprezentarea
numerica a fractiei 1/P n baza b.
Secventa obtinuta este periodica de perioada P 1 : 1/P = q1 q2 . . . qP 1 qP . . .

Exemplul 12.5. Fie b = 10 si P = 7. Secventa pseudo-aleatoare produsa de genera-


torul 1/P cu intrarea (10, 7) este 142857142 . . ., deoarece 1/7 = 0, 142857142 . . . Evident,
lungimea perioadei este P 1 = 6.

Desi generatorul 1/P are o serie de proprietati care l situeaza printre generatorii
performanti din punct de vedere al distributiei datelor, criptografic este slab.
220 CAPITOLUL 12. GENERATORI DE NUMERE PSEUDO - ALEATOARE

Astfel, notand cu s numarul de cifre din reprezentarea binara a lui P , se pot demonstra
urmatoarele rezultate ([?]):
- Daca se stie P si o secventa de caractere din sir egala cu s, aceasta se poate extinde
la dreapta si la stanga.
- Daca se stiu orice 2s + 1 elemente consecutive din sir, se poate reconstitui valoarea
lui P .

12.5.5 Generatorul AN SI X9.17


AN SI X9.17 este un standard F IP S folosit pentru generarea de chei pseudo-aleatoare
si vectori de initializare (V I) din modurile de operare DES. El foloseste sistemul de
criptare 3DES.
Intrare: - s: secventa aleatoare secreta de 64 biti;
- K: cheia de criptare pentru 3DES;
- m: numar ntreg (lungimea secventei generate).
Iesire: m secvente de cate 64 biti.
Algoritm:
1. I = eK (s);
2. for i 1 to m do
2.1. xi eK (s I);
2.2. s eK (xi I).
3. output(x1 , x2 , . . . , xm ).

12.6 Securitatea generatorilor de numere


pseudo-aleatoare
Proprietatea de aleatorism a secventelor se masoara prin teste statistice. Un generator de
secvente pseudo-aleatoare trece testele statistice daca se comporta asemanator sau identic
cu un generator real aleator.
Din punct de vedere criptografic, securitatea generatorului depinde de eficienta compu-
tationala a algoritmului folosit, precum si de posibilitatea ca un adversar cunoscand doar
secventa pseudo-aleatoare rezultata sa determine parametrii secreti ai algoritmului.
Se poate spune ca din punct de vedere criptografic este mai important sa se puna n
evidenta slabiciunile criptografice ale unei secvente pseudo-aleatoare decat proprietatile
sale statistice (un sir poate fi bun din punct de vedere statistic, dar sa prezinte numeroase
defecte de securitate criptografica).
Astfel, apare o relatie de inter-dependenta ntre existenta unui test statistic eficient
(care poate fi folosit la diferentierea dintre un geneator si un generator real aleator)
si existenta unui posibil atac criptografic (de genul atacului prin corelare) care poate
sparge generatorul.
12.6. SECURITATEA GENERATORILOR DE NUMERE PSEUDO-ALEATOARE 221

Definitia 12.4. Un generator G este nediferentiabil (n timp) polinomial daca nu exista


nici un text statistic eficient care sa poata decide ca G este diferit de un generator real
aleator (GA).
Lema 12.2. Daca generatorul G este nediferentiabil polinomial, atunci nu exista nici un
algoritm de complexitate polinomiala (eficient) care sa-l poata sparge.
Demonstratie. Presupunem prin absurd ca exista un algoritm A care poate sparge gene-
ratorul G. Atunci vom construi un test simplu pentru a diferentia G de un generator real
aleator, fapt care contrazice ipoteza.
Fie o secventa suficient de lunga obtinuta din G. Atunci A() va da parametrii
necunoscuti ai lui G; pe baza lor se calculeaza urmatoarea iesire ipotetica din G. Daca
acest rezultat apriori difera de valoarea reala produsa de G, putem trage concluzia ca G
este un GA; altfel, G nu va fi un generator real aleator.
Exemplul 12.6. Pentru generatorul 1/P se poate construi un test statistic simplu care
determina daca pentru un numar prim arbitrar de n cifre binare o secventa de 3n
numere a fost extrasa din 1/P sau a fost generata aleator. Astfel, pentru generarea lui
P se utilizeaza 2n + 1 elemente (din cele 3n). Apoi, folosind acest P se genereaza 3n
cifre, care se compara cu secventa data. Daca cele doua secvente se potrivesc, atunci (cu
1
o probabilitate de cel putin 1 2n1 ) sirul a fost produs de generatorul 1/P .

12.6.1 Teste statistice


Exista pachete de teste utilizate ca standarde pentru evaluarea securitatii generatorilor
de numere pseudo-aleatoare. Cele mai cunoscute sunt DIEHARD (15 teste elaborate
de George Marsaglia) si N IST (16 teste elaborate de Institutul de Standarde din SU A).
Testele propuse se concentreaza pe o mare varietate de tipuri de non-aleatorism care pot
exista ntr-o secventa. Astfel, cateva aspecte pe care testele ncearca sa le puna n evidenta
sunt:
Verifica daca numarul de 0 si de 1 din secventa sunt aproximativ egale.
Calculeaza si analizeaza frecventa bigramelor, trigramelor etc (sabloane de lungime
fixata).
Determina frecventa de aparitie a bitului 1 n cadrul blocurilor de M caractere
consecutive (M fixat).
Analizeaza numarul de iteratii din secventa (prin iteratie se ntelege o subsecventa
contigua de biti identici).
Calculeaza rangul submatricilor create din secventa testata; scopul este de a verifica
independenta liniara a subsirurilor de lungime fixata. Acest test apare atat n
pachetul DIEHARD cat si n N IST .
222 CAPITOLUL 12. GENERATORI DE NUMERE PSEUDO - ALEATOARE

Determina numarul de aparitii ale unor secvente tinta fixate, pentru a detecta gene-
ratorii care produc prea multe aparitii ale unor sabloane neperiodice.

Calculeaza frecventa secventelor de o anumita lungime.

Cerceteaza daca secventa poate fi comprimata semnificativ fara pierderi de informa-


tie; un sir care poate fi comprimat este considerat nealeator.

Calculeaza abaterea maxima de la 0 a sumelor partiale ale secventei (n care 0 este


nlocuit cu 1), pentru a determina daca suma cumulativa a unui subsir este prea
mare sau prea mica n comparatie cu cea corespunzatoare a unui sir aleator (unde
aceste sume sunt apropiate de zero). Tot aici se urmareste de cate ori sumele partiale
au valoarea 0.

Testele au o valoare direct proportionala cu lungimea n a secventei testate. In general


ordinul de marime al lui n este n intervalul [103 , 107 ]. Pentru secvente de lungime mai
mica testele sunt neadecvate si nu dau o estimare corecta de aleatorism.

12.7 Exercitii
12.1. Se da generatorul liniar congruential

xn+1 axn + b (mod 15)

Pentru ce valori ale perechii (a, b) Z15 Z15 acest generator are perioada maxima ?

12.2. Folositi generatorul BBS cu parametrii p = 7, q = 11, x0 = 2 pentru a genera o


secventa pseudo-aleatoare de lungime 30.

12.3. Folositi generatorul RSA cu parametrii p = 7, q = 11, x0 = 2 si e = 3 pentru a


genera o secventa pseudo-aleatoare de lungime 30. Comparati secventa obtinuta cu cea
gasita n exercitiul anterior.

12.4. Construiti LF SRi (i = 1, 2, 3) de polinoame generatoare 1 + X + X 3 , 1 + X + X 4


si respectiv 1 + X 2 + X 5 . Pe baza lor construiti generatori Geffe si Stop-and-Go.
Plecand de la secventele initiale 011, 1011 respectiv 00101, generati secvente pseudo-
aleatoare cu fiecare din acesti generatori. Ce perioade au aceste secvente ?
Anexa 1

Algoritmul lui Euclid extins

Dupa cum se stie, algoritmul lui Euclid constituie o modalitate eficace de determinare a
celui mai mare divizor comun a doua numere ntregi pozitive. El poate fi extins pentru a
determina si inversele elementelor dintr-un corp finit Zn .
Sa reamintim ntai algoritmul lui Euclid (forma clasica):
Fie r0 , r1 N .
Se efectueaza secventa de mpartiri succesive:
r0 = q1 r1 + r2 0 < r2 < r1
r1 = q2 r2 + r3 0 < r3 < r2
..
. (1)
rm2 = qm1 rm1 + rm 0 < rm < rm1
rm1 = qm rm .
Deoarece cmmdc(r0 , r1 ) = cmmdc(r1 , r2 ) = . . . = cmmdc(rm1 , rm ) = rm , rezulta ca
cel mai mare divizor comun dintre r0 si r1 este rm .
Sa definim acum sirul t0 , t1 , . . . , tm astfel:
t0 = 0, t1 = 1
tj = tj2 qj1 tj1 (mod r0 ), j 2 (2)

Teorema 1.1. Pentru 0 j m avem rj tj r1 (mod r0 ) unde rj si tj sunt definite de


(1) respectiv (2).

Demonstratie. Se foloseste o inductie dupa j.


Pentru j = 0 si j = 1 afirmatia este banala.
Presupunem afirmatia adevarata pentru j = i 1 si j = i 2 (i 2) si sa o aratam
pentru j = i. Toate calculele se fac modulo r0 .
Conform ipotezei de inductie, ri2 = ti2 r1 , ri1 = ti1 t1 .
Acum:
ri = ri2 qi1 ri1 = ti2 r1 qi1 ti1 r1 = (ti2 qi1 ri1 )r1 = ti r1 .

223
224 ANEXA 1. ALGORITMUL LUI EUCLID EXTINS

Corolarul 1.1. Daca (r0 , r1 ) = 1 atunci tm = r11 (mod r0 ).

Se poate da acum algoritmul extins al lui Euclid, care pentru n > 1 si b Zn va


determina b1 mod n (daca exista).

Algoritmul lui Euclid extins:


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 inversa mod n.
else b1 (mod n) = t.

Exemplul 1.1. Sa calculam 281 mod 75, folosind algoritmului lui Euclid extins. Vom
avea pe rand:
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

Deci 281 mod 75 = 67.


Anexa 2

Teorema chineza a resturilor

Teorema 2.1. Se dau numerele p1 , p2 , . . . , pr prime ntre ele si fie n = p1 p2 . . . pr . Atunci


sistemul de ecuatii
x ai (mod pi ), 1ir
are solutie comuna n intervalul [0, n 1].

Demonstratie. Pentru fiecare i, cmmdc(pi , n/pi ) = 1; deci exista numerele yi astfel ncat
n
yi 1 (mod pi ).
pi
n
De asemenea, pentru j 6= i, deoarece pj |cmmdc(n/pi ), avem yi 0 (mod pj ).
pi
Alegem
r
X n
x= yi ai (mod n).
i=1 pi

Pentru orice i, x este o solutie a ecuatiei x ai (mod pi ) deoarece n Zpi avem


n
x = y i ai = ai .
pi
n
Exemplul 2.1. Fie r = 3, p1 = 7, p2 = 11, p3 = 13, deci n = 1001. Notand mi = ,
pi
avem m1 = 143, m2 = 91 si m3 = 77.
Folosind algoritmul lui Euclid, se obtine y1 = 5, y2 = 4, y3 = 12.
Solutia generala 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 da
x = 715 5 + 364 3 + 924 10 (mod 1001) = 13907 (mod 1001) = 894.
Verificarea se realizeaza reducand x modulo 7, 11 si 13.

225
226 ANEXA 2. TEOREMA CHINEZA A RESTURILOR

2.1 Exercitii
2.1. Folositi algoritmul lui Euclid extins pentru a calcula inversele

171 (mod 101), 3571 (mod 1234), 31251 (mod 9987)

2.2. Calculati cmmdc(57, 93) si aflati numerele ntregi s, t astfel ca

57s + 93t = cmmdc(57, 93).

2.3. Fie functia g : Z105 Z3 Z5 Z7 definita

g(x) = (x mod 3, x mod 5, x mod 7).

Gasiti o formula pentru g 1 si utilizati-o pentru a calcula g 1 (2, 2, 3).

2.4. Rezolvati sistemul de congruente


x 12 (mod 25),
x 9 (mod 26),
x 23 (mod 27)
2.5. Rezolvati sistemul de congruente
13x 4 (mod 99),
15x 56 (mod 101)
Bibliografie

[1] Anderson R. s.a. - Serpent: A proposal for the Advanced Encryption Standard,
http://www.ftp.cl.cam.ac.uk/ftp/users/rja14/serpent.pdf

[2] Atanasiu A. - Teoria codurilor corectoare de erori, Editura Univ. Bucuresti, 2001;

[3] Atanasiu, A. - Arhitectura calculatorului, Editura Infodata, Cluj, 2006;

[4] Blum L., Blum M., Shub M. - Comparision of two pseudo-random number generators,
Advanced in Cryptology, CRYPTO 82

[5] D. Bayer, S. Haber, W. Stornetta; Improving the efficiency and reliability of digital
time-stamping. Sequences II, Methods in Communication, Security and Computer
Science, Springer Verlag (1993), 329-334.

[6] Biham E., Shamir A. - Differential Cryptanalysis of DES - like Cryptosystems, Jour-
nal of Cryptology, vol. 4, 1 (1991), pp. 3-72.

[7] Biham E., Shamir A. - Differential Cryptanalysis of the Data Encryption Standard,
Springer-Verlag, 1993.

[8] Biham E., Shamir A. - Differential Cryptanalysis of the Full 16-Round DES, Pro-
ceedings of Crypto92, LNCS 740, Springer-Verlag.

[9] Biham E. - On Matsuis Linear Cryptanalysis, Advances in Cryptology - EURO-


CRYPT 94 (LNCS 950), Springer-Verlag, pp. 341-355, 1995.

[10] Biryukov A., Shamir A., Wagner D. - Real Time Cryptanalysis of A5/1 on a PC,
Fast Software Encryption - FSE 2000, pp 118.

[11] Bruen A., Forcinito M - Cryptography, Information Theory, and Error - Correction,
Wiley Interscience 2005.

[12] Collard Brigitte - Secret Language in Graeco-Roman antiquity (teza de doctorat)


http : //bcs.f ltr.ucl.ac.be/F E/07/CRY P T /Intro.html

227
228 BIBLIOGRAFIE

[13] Cook S., http : //www.claymath.org/millennium/P vs N P/Of f icial P ro


blem Description.pdf

[14] Coppersmith D. s.a. - MARS - a candidate cypher for AES,


http://www.research.ibm.com/security/mars.pdf

[15] Daemen J., Rijmen V. - The Rijndael Block Cipher Proposal,


http://csrc.nist.gov/CryptoToolkit/aes/

[16] Damgard I.B. - A design principle for hash functions, Lecture Notes in Computer
Science, 435 (1990), 516-427.

[17] Diffie D.W., Hellman M.E. - New Directions in Cryptography, IEEE Transactions on
Information Theory, IT-22, 6 (1976), pp. 644-654

[18] Diffie D.W., Hellman M.E. - Multiuser cryptographic techniques, AFIPS Conference
Proceedings, 45(1976), 109 112

[19] L Ecuyer P. - Random Numbers for Simulation, Comm ACM 33, 10(1990), 742-749,
774.

[20] Enge A. - Elliptic Curves and their applications to Cryptography, Kluwer Academic
Publ, 1999

[21] El Gamal T. - A public key cryptosystem and a signature scheme based on discrete
algorithms, IEEE Transactions on Information Theory, 31 (1985), 469-472

[22] Fog A. - http://www.agner.org/random/theory;

[23] Gibson J. - Discrete logarithm hash function that is collision free and one way. IEEE
Proceedings-E, 138 (1991), 407-410.

[24] Heyes H. M. - A Tutorial on Linear and Differential Cryptanalysis.

[25] van Heyst E., Petersen T.P. - How to make efficient fail-stop signatures, Lecture
Notes in Computer Science, 658(1993), 366 377

[26] Junod P. - On the complexity of Matsuis attack, in SAC 01: Revised Papers from the
8th Annual International Workshop on Selected Areas in Cryptography, pp 199211,
London, UK, 2001. Springer-Verlag.

[27] Kahn D. - The Codebreakers, MacMillan Publishing Co, New York, 1967

[28] Kelly T. - The myth of the skytale, Cryptologia, Iulie 1998, pp. 244 - 260.

[29] Konheim A. - Computer Security and Cryptography, Wiley Interscience, 2007.


BIBLIOGRAFIE 229

[30] Knuth D. - The art of computer Programming, vol 2 (Seminumerical Algorithms)

[31] Lenstra, H.W. - Factoring Integers with Eiipltic Curves, Annals of Mathematics, vol.
126, pp. 649-673, 1987.

[32] Matsui M, Yamagishi A. - A new method for known plaintext attack of FEAL cipher.
Advances in Cryptology - EUROCRYPT 1992.

[33] Matsui M. - Linear Cryptanalysis Method for DES Cipher, Advances in Cryptology
- EUROCRYPT 93, LNCS 765, Springer-Verlag, pp. 386-397, 1994.

[34] Matsui M. - The first experimental cryptanalysis of the Data Encryption Standard, in
Y.G. Desmedt, editor, Advances in Cryptology - Crypto 4, LNCS 839, SpringerVerlag
(1994), 1- 11.

[35] Matsui M. - New Structure of Block Ciphers with Provable Security against Differen-
tial and Linear Cryptalaysis, Fast Software Encryption, LNCS 1039, Springer-Verlag,
1996, pp. 205-218.

[36] Merkle R. C., Hellman M. - Hiding Information and Signatures in Trapdoor Knap-
sacks, IEEE Trans. IT 24(5), Sept 1978, pp. 525530.

[37] Merkle R.C. - A fast software one-way functions and DES, Lecture Notes in Com-
puter Science, 435 (1990), 428-446

[38] Menezes A., Oorschot P., Vanstome S. - Handbook of Applied Cryptography, CRC
Press 1996.

[39] Preneel B., Govaerts R., Vandewalle J. - Hash functions based on block ciphers: a
syntetic approach; Lecture Notes in Computer Science, 773 (1994), 368-378

[40] Rivest R. s.a - The RC6T M Block Cipher,


ftp://ftp.rsasecurity.com/pub/rsalabs/rc6/rc6v11.pdf

[41] Rivest R.L. - The MD4 message digest algorithm; Lecture Notes in Computer Sci-
ence, 537, (1991), 303-311

[42] Rivest R., Shamir A., Adleman A. - A Method for Obtaining Digital Signatures and
Public-Key Cryptosystems, Communications of the ACM, Vol. 21 (2), 1978, pages
120126.

[43] Rosing, M - Implementing Elliptic Curve Cryptography, Manning, 1998

[44] Salmon, D. - Data Privacy and Security, Springer Professional Computing, 2003

[45] Salomaa A. - Criptografie cu chei publice, Ed. Militara, Bucuresti 1994


230 BIBLIOGRAFIE

[46] Schneier B. - Applied Cryptography, John Wiley and Sons, 1995

[47] Schneier B s.a. - Twofish, http://www.counterpane.com/twofish.html

[48] Shamir, A. - A polynomial time Algorithm for breaking the basic Merkle - Hellman
cryptosystem,
http://dsns.csie.nctu.edu.tw/research/crypto/HTML/PDF/C82/279.PDF

[49] Shoup, V. - Lower bounds for discrete logarithm and related problems, Advanced in
Cryptology, EUROCRYPT 97, Springer - Verlag LNCS 1233, pp. 313-328, 1997.

[50] Selmer E.S. - Linear Recurrence over Finite Field, Univ. of Bergen, Norway, 1966;

[51] Sibley E.H. - Random Number Generators: Good Ones are Hard to Find, Comm
ACM 31, 10(1988), 1192-1201.

[52] Smid M.E., Branstad, D.K. - Response to comments on the N IST proposed digital
signature standard, Lecture Notes in Computer Science, 740(1993), 76 88

[53] Stinton D., Cryptography, Theory and Practice, Chapman& Hall/CRC, 2002

[54] Wiener M.J. - Cryptanalysis of short RSA secret exponents, IEEE Trans on Informa-
tion Theory, 36 (1990), 553-558

[55] Williams H.C. - Some public-key criptofunctions as intractable as factorisation, Cryp-


tologia, 9 (1985), 224-237.

[56] Zeng K.G., Yang C.H., Wei D.Y., Rao T.R.N.- Pseudorandom Bit Generators in
Stream Cipher Cryptography, IEEE Computer, 24 (1991), 8.17.

[57] Secure hash Standard; National Bureau of Standards, FIPS Publications 180, 1993

[58] http : //en.wikipedia.org/wiki/Enigma machine

[59] http : //en.wikipedia.org/wiki/M 209

[60] http://en.wikipedia.org/wiki/Caesar cipher# History and usage

[61] http://psychcentral.com/psypsych/Polybius square

[62] http://www.answers.com/topic/vigen-re-cipher

[63] http://en.wikipedia.org/wiki/Rosetta stone

[64] Serpent homepage, http://www.cl.cam.ac.uk/ rja14/serpent.html

[65] P versus NP homepage, http://www.win.tue.nl/ gwoegi/P-versus-NP.htm


BIBLIOGRAFIE 231

[66] http://www.win.tue.nl/ gwoegi/P-versus-NP.htm

[67] http://en.wikipedia.org/wiki/Complexity classes P and NP


232 BIBLIOGRAFIE

Cuprins

Prefata 3

Capitolul 1: Sisteme de criptare 5


1.1. Caracteristicile unui sistem de criptare 5
1.2. Criptanaliza sistemelor de criptare 10
1.3. Exercitii 15

Capitolul 2: Sisteme simetrice de criptare 17


2.1. Cifruri de permutare 17
2.2. Cifruri de substitutie 19
2.2.1. Sisteme de criptare monoalfabetice 19
Sistemul de criptare Cezar 19
Sistemul de criptare afin 20
Sistemul de criptare Polybios 21
Sistemul cavalerilor de Malta 22
2.2.2. Criptanaliza sistemelor de criptare monoalfabetice 22
2.2.3. Sisteme de criptare polialfabetice 25
Sistemul homofonic 25
Sistemul de criptare Playfair 25
Sistemul Vigenere 28
2.3. Exercitii 33

Capitolul 3: Sisteme mecanice de criptare 35


3.1. Sistemul skitala 35
3.2. Cilindrul Jefferson 36
3.3. Masini de criptat 38
3.3.1. Enigma 38
3.3.2. C-36 43
3.3. Exercitii 45

Capitolul 4: Sisteme fluide de criptare 47


4.1. Sisteme sincrone si auto-sincronizabile 47
4.2. Exemple de sisteme fluide de criptare 52
4.2.1. SEAL 52
4.2.2. RC4 55
4.2.3. Sistemul A5/1 57
4.3. Exercitii 60

Capitolul 5: Sisteme simetrice de criptare moderne 61


BIBLIOGRAFIE 233

5.1. Sistemul de criptare DES 61


5.1.1. Retele Feistel 61
5.1.2. Consideratii generale privind sistemul de criptare DES 62
5.1.3. Descrierea sistemului DES 63
5.1.4. Chei slabe 67
5.1.5. Controverse legate de DES 68
5.1.6. Moduri de implementare ale DES-ului 69
5.1.7. Parole U N IX 71
5.1.8. Sisteme de criptare nrudite cu DES 72
Triplu DES 72
DES X 73
IDEA 74
5.2. Alte sisteme de criptare ulterioare DES 75
5.2.1. M ARS 76
5.2.2. RC6 79
5.2.3. Serpent 81
5.2.4. Twofish 83
5.3. Sistemul de criptare AES 86
5.3.1. Descrierea sistemului AES 86
5.3.2. Prelucrarea cheii de criptare 89
5.4. Exercitii 91

Capitolul 6: Atacuri asupra sistemelor de criptare bloc 93


6.1. Consideratii generale 93
6.2. Compromisul spatiu - timp 93
6.3. Atacul meet - in - the - middle 95
6.4. Criptanaliza diferentiala 96
6.4.1. Privire generala 96
6.4.2. Analiza componentelor unui sistem de criptare 97
6.4.3. Retea substitutie - permutare (SP N ) 100
6.4.4. Diferentiala caracteristica ntr-un SP N 102
6.4.5. Extragerea bitilor cheii 103
6.4.6. Criptanaliza diferentiala pentru DES 105
6.5. Criptanaliza liniara 109
6.5.1. Modalitatea generala de atac 109
6.5.2. Lema Piling - up 110
6.5.3. Relatii de aproximare a S - boxurilor 112
6.5.4. Construirea aproximarilor liniare pentru un sistem bloc 114
6.5.5. Extragerea bitilor cheii 117
6.5.6. Criptanaliza liniara pentru DES 119
6.6. Comparatie ntre criptanaliza diferentiala si liniara 122
234 BIBLIOGRAFIE

6.7. Exercitii 122

Capitolul 7: Sisteme de criptare cu cheie publica 125


7.1. Consideratii generale 125
7.2. Functii neinversabile 126
7.3. Trapa secreta 129
7.4. Securitatea sistemelor de criptare cu cheie publica 131
7.5. Comparatie ntre criptarea simetrica si cea cu cheie publica 134
7.6. Exercitii 135

Capitolul 8: Sistemul de criptare RSA 137


8.1. Descrierea sistemului RSA 137
8.2. Implementarea sistemului RSA 138
8.3. Teste de primalitate probabiliste 140
8.3.1. Algoritmul Soloway - Strassen 141
8.3.2. Algoritmul Miller - Rabin 144
8.4. Securitatea sistemului RSA 146
8.4.1. Informatii despre p si q 146
8.4.2. Exponentul de decriptare 147
Factorizarea modulului stiind exponentul de decriptare 147
Atacul lui Wiener 149
8.4.3. Informatie partiala despre textul clar 151
8.4.4. Algoritmi de descompunere n factori primi 153
Metoda p 1 153
Algoritmul lui Dixon si sita patratica 155
8.4.5. Alte tipuri de atac 156
Atac bazat pe proprietatile multiplicative ale RSA 156
Atac bazat pe exponent mic de criptare 157
Atacuri ciclice 158
8.5. Sisteme de criptare nrudite cu RSA 158
8.5.1. Sistemul de criptare Rabin 158
8.6. Exercitii 161

Capitolul 9: Sistemul de criptare El Gamal 163


9.1. Descrierea algoritmului de criptare El Gamal 163
9.2. Calculul logaritmului discret 165
9.2.1. Algoritmul Shanks 165
9.2.2. Algoritmul Pohlig - Hellman 166
9.2.3. Algoritmul Pollard - Rho 168
9.2.4. Metoda de calcul a indicelui 170
9.3. Securitatea P LD fata de informatii partiale 171
BIBLIOGRAFIE 235

9.4. Generalizarea sistemului de criptare El Gamal 174


9.5. Exercitii 175

Capitolul 10: Sisteme de criptare bazate pe curbe eliptice 177


10.1. Aritmetica curbelor eliptice 178
10.2. Sisteme de criptare construite pe curbe eliptice 182
10.2.1. Sistemul Menezes - Vanstome 183
10.3. Problema logaritmului discret pe curbe eliptice 184
10.3.1. Atacul Pohlig - Hllman 184
10.3.2. Atacul BSGS (Baby-Step/Giant-Step) 185
10.3.3. Atacul Pollard - Rho 186
10.4. Factorizari bazate pe curbe eliptice 188
10.5. Exercitii 189

Capitolul 11: Alte sisteme de criptare cu cheie publica 191


11.1. Sistemul de criptare rucasc (Merkle - Hellman) 191
11.1.1. Considerente generale 191
11.1.2. Criptanaliza sistemului de criptare rucsac 195
11.1.3. Vectori rucsac cu crestere mare 200
11.2. Sistemul de criptare McElliece 204
11.3. Exercitii 207

Capitolul 12: Generatori de numere pseudo-aleatoare 209


12.1. Numere aleatoare si pseudo-aleatoare 209
12.2. Generatori simpli de numere pseudo-aleatoare 210
12.2.1. Generatori liniari congruentiali 210
12.2.2. Generatori Ranrot 212
12.2.3. Generatorul Blum - Blum - Shub 214
12.3. Circuite liniare (LF SR) 215
12.4. Generatori bazati pe LF SR 216
12.4.1. Generatorul Geffe 216
12.4.2. Generatori Stop-and-Go 217
12.5. Alti generatori de numere pseudo-aleatoare 218
12.5.1. Generatorul Blum - Micali 218
12.5.2. Generatorul RSA 218
12.5.3. Generatorul Mother-of-all 219
12.5.4. Generatorul 1/P 219
12.5.5. Generatorul AN SI X9.14 220
12.6. Securitatea generatorilor de numere pseudo-aleatoare 220
12.6.1. Teste statistice 221
12.7. Exercitii 222
236 BIBLIOGRAFIE

Anexa 1: Algoritmul lui Euclid extins 223

Anexa 2: Teorema chineza a resturilor 225


2.1 Exercitii 226

Bibliografie 227

Cuprins 232

View publication stats

Você também pode gostar