Sunteți pe pagina 1din 49

2 Tehnici de securizare a datelor !

i programelor curs "


CURS NR.1
1. Introducere
1.1. Securitatea datelor
Primele sisteme de calculatoare au fost foarte mari, rare !i foarte scumpe.
n mod natural, acele organiza#ii care le de#ineau aveau tendin#a de a proteja ct mai
bine bazele de date. Securitatea era concentrat$ pe spargeri fizice, mpotriva
sustragerii sau distrugerii componentelor de calculator, a pachetelor de discuri, a
benzilor magnetice, a cartelelor perforate, etc.
n anii 80, odat$ cu introducerea pe scar$ larg$ a calculatoarelor personale,
oameni de toate vrstele au devenit utilizatori de calculatoare. Calculatoarele au
ap$rut frecvent att la locurile de munc$ ct !i acas$. Prin reducerea permanent$ a
pre#urilor, calculatoarele au devenit mai accesibile, !i, ca !i consecin#$, tot mai
multe organiza#ii au automatizat opera#iunile lor. n era interconect$rii sistemelor
electronice, o er$ a viru!ilor !i a hackerilor, a fraudelor electronice de diferite tipuri,
problema protec#iei informa#iei devine evident$, dar totodat$ devine !i mult mai
complicat$ !i mai dificil$ dect n trecut. Acest lucru este valabil n special n cazul
sistemelor partajate cum ar fi sistemele multiutilizator, sistemele interconectate
printr-o re#ea de date sau linii telefonice publice, sisteme care au avut o cre!tere
exploziv$ n ultimii ani. S-a sim#it tot mai mult nevoia de creare a unor unelte !i
programe specializate pe protec#ia resurselor, fi!ierelor, datelor !i diferitelor tipuri
de informa#ii. Programele de acest tip au rolul de a nu permite dezv$luirea
informa#iei unor persoane neautorizate ct !i protec#ia acestora de intru!i.
Ansamblul acestor unelte realizate pentru protec#ia datelor poart$ numele generic
de securitatea calculatoarelor.
Al doilea aspect care a afectat n mod important securitatea datelor a fost
introducerea sistemelor distribuite care folosesc facilit$#i de comunicare prin re#ea
pentru transmisia datelor ntre un terminal !i server, precum !i ntre dou$ sau mai
multe servere. Securitatea re#elei este necesar$ pentru a proteja aceste transmisii.
1.2. Aspecte legate de securitatea informa!iei
Pentru a fixa !i evalua eficient nevoile legate de securitatea unei
organiza#ii, pentru a alege diferite produse !i metode de securitate, administratorul
responsabil de securitate are nevoie de ni!te procedee sistematice pentru a defini !i
satisface aceste cerin#e de securitate. O abordare a acestei probleme este s$
consider$m trei aspecte ale securit$#ii informa#iei:
Atacuri asupra securit!"ii: Orice ac#iune care compromite
securitatea informa#iei aflat$ n proprietatea unei organiza#ii.
Mecanisme de securitate: Un mecanism care este proiectat pentru
detectarea, prevenirea !i recuperarea informa#iei dup$ un atac
asupra securit$#ii.
Servicii de securitate: Un serviciu care intensific$ securitatea
echipamentelor de procesare de date !i a informa#iilor transferate
ntre acestea. Serviciile de securitate au rolul de a monitoriza
atacurile, precum !i de a face uz de unul sau mai multe mecanisme
de securitate pentru a anihila aceste atacuri.
Nu exist$ un singur mecanism care s$ satisfac$ toate serviciile de securitate
!i care s$ execute toate func#iile acestora. Pe parcursul acestui curs se va prezenta o
varietate larg$ de mecanisme care intr$ n joc. Totu!i se poate spune c$ exist$ un
element care st$ la baza celor mai multe mecanisme de securitate folosite. Acest
element este criptografia !i tehnicile de criptare. Ele sunt cele mai des folosite
tehnici pentru asigurarea securit$#ii informa#iei. Deci, unul din scopurile principale
ale acestui curs este prezentarea tehnicilor de criptare.
1.3. Servicii de securitate
Securitatea datelor este o problem$ foarte complex$ care se complic$ tot
mai mult cu progresul tehnologic, dar pe scurt, ea poate fi totu!i ncadrat$ n cteva
cuvinte:
Confiden"ialitate Nerepudiere
Autenticitate Controlul accesului
Integritate Disponibilitate
Confiden"ialitatea este serviciul care are rolul de a proteja datele de
atacurile pasive, adic$ de interceptarea datelor de persoane neautorizate. Se pot
identifica mai multe nivele de protec#ie a acestui serviciu. Cel mai larg nivel a
acestuia protejeaz$ datele transmise de to#i utilizatorii unui sistem. Se pot defini !i
nivele mai restrnse care protejeaz$ doar un utilizator, un mesaj sau chiar unele
por#iuni dintr-un mesaj. Acestea pot fi mai pu#in folositoare dect abordarea pe
scar$ larg$ !i sunt deseori mai complexe !i mai costisitor de implementat. A doua
problem$ legat$ de confiden#ialitate este protec#ia fluxului informa#ional de analiza
traficului. Acest lucru implic$ ca atacatorul s$ nu poat$ identifica sursa, destina#ia,
frecven#a, lungimea !i alte caracteristici ale datelor transmise prin re#ea.
Serviciul de autenticitate este legat de garantarea autenticit$#ii
comunica#iei. n cazul unui singur mesaj, cum ar fi un semnal de avertisment,
func#ia serviciului de autenticitate este de a garanta destinatarului c$ sursa
Tehnici de securizare a datelor !i programelor curs " 3 4 Tehnici de securizare a datelor !i programelor curs "
mesajului este aceea care se pretinde a fi. n cazul unei interac#iuni, cum ar fi
conectarea unui terminal la un server, dou$ aspecte sunt implicate. n primul rnd la
ini#ierea conect$rii serviciul trebuie s$ se asigure c$ cele dou$ p$r#i sunt autentice,
adic$ sunt ceea ce pretind a fi. n al doilea rnd, serviciul trebuie s$ se asigure c$
comunica#ia nu interfereaz$ cu o a treia parte care s-ar putea preface ca fiind una
din cele dou$ p$r#i participante la transmisie, ob#innd informa#ii nelegitime.
Integritatea: n acest caz cea mai folositoare !i mai direct$ abordare este
protec#ia total$. Serviciul de integritate trebuie s$ asigure recep#ionarea mesajelor
a!a cum au fost transmise f$r$ copierea, inser#ia, modificarea, rearanjarea sau
retransmiterea acestora. Acest serviciu include !i protec#ia mpotriva distrugerii
datelor. El mai poate include !i recuperarea datelor dup$ un atac.
Nerepudierea mpiedic$ att expeditorul ct !i destinatarul de a nega
transmiterea sau recep#ionarea unui mesaj. Cnd un mesaj este trimis, destinatarul
poate dovedi c$ mesajul a fost trimis de pretinsul expeditor. Similar, cnd un mesaj
este recep#ionat, expeditorul poate dovedi c$ mesajul a fost recep#ionat de realul
destinatar.
n contextul securit$#ii re#elelor, controlul accesului este abilitatea de a
limita !i controla accesul la sisteme gazd$ !i aplica#ii prin leg$turi de comunica#ie.
Pentru a realiza acest control, fiecare entitate care ncearc$ s$ ob#in$ acces la un
sistem trebuie mai nti identificat$ !i autentificat$ dup$ care i se aplic$ drepturile
de acces individuale.
O varietate mare de atacuri poate produce pierderea sau reducerea
disponibilit!"ii. Unele dintre aceste atacuri pot fi nvinse prin contram$suri
automate cum ar fi criptarea sau autentificarea.
1.4. Modelul unei re!ele sigure
n continuare se va prezenta un model general de re#ea care respect$
cerin#ele securit$#ii comunica#iei. S$ presupunem c$ un mesaj trebuie transmis ntre
dou$ p$r#i. Pentru ca aceast$ tranzac#ie s$ aib$ loc, cele dou$ p$r#i trebuie s$
coopereze. Se stabile!te un canal logic de comunica#ie, definind ruta dintre surs$ !i
destina#ie, precum !i folosirea n comun a protocoalelor de comunica#ie. Aspectele
securit$#ii intr$ n joc cnd este necesar$ sau dezirabil$ protejarea informa#iei fa#$
de un oponent care poate prezenta o amenin#are la securitatea acesteia. Toate
tehnicile legate de securitate au dou$ componente:
Transform$ri specifice pentru securizarea mesajului transmis. O
astfel de transformare este criptarea mesajului, astfel nct acesta s$
devin$ neinterpretabil pentru oponent. De asemenea, se mai pot
include secven#e care pot fi folosite pentru identificarea sursei.
P$r#ile participante trebuie s$ mpart$ o informa#ie secret$ care s$
ajute destinatarul la reinterpretarea mesajului. Aceasta poate fi o
cheie de criptare care va fi folosit$ la decriptarea informa#iei.
O a treia parte poate fi implicat$ n desf$!urarea tranzac#iei. De exemplu, a
treia parte poate fi r$spunz$toare n distribuirea informa#iei secrete folosite pentru
descifrarea mesajelor sau poate avea rolul de a garanta autenticitatea mesajelor !i a
celor dou$ p$r#i participante la tranzac#ie.
n general, modelul trebuie s$ ndeplineasc$ patru sarcini pentru a proiecta
un serviciu de securitate:
". Proiectarea unui algoritm care efectueaz$ transform$rile necesare
astfel nct informa#ia transmis$ s$ nu poat$ fi interpretat$ de
oponent.
2. Generarea unei informa#ii secrete care s$ fie folosit$ mpreun$ cu
algoritmul proiectat.
3. Dezvoltarea de metode pentru distribuirea !i partajarea informa#iei
secrete.
4. Specificarea protocolului de comunica#ie folosit de algoritm !i
informa#ia secret$ pentru a ob#ine efectele dorite ale serviciului de
securitate.
Informational
Canal
specifice securitatii
Transformari
Sursa Destinatie
secreta
Informatie
Mesaj
A treia parte
de incredere
(ex:distribuitor
de informatie secreta)
Oponent
secreta
Informatie
Mesaj
specifice securitatii
Transformari
Figura #.#. Modelul unei re#ele sigure
De asemenea mai exist$ un alt model de securitate diferit de cel prezentat
mai sus. Al doilea model are ca scop principal protejarea sistemelor de intru!i care
doresc s$ ob#in$ acces neautorizat n sistem. Un intrus poate fi un hacker, adic$ o
persoan$ r$u-inten#ionat$ care are satisfac#ia de a sparge !i de a p$trunde n sisteme
Tehnici de securizare a datelor !i programelor curs " 5 6 Tehnici de securizare a datelor !i programelor curs "
la care nu i este permis accesul. Pe lng$ intru!ii umani exist$ !i intru!i de natur$
software cum ar fi viru!ii sau viermii care pot p$trunde n sistem att prin
introducerea lor direct$ (cazul dischetelor infectate) ct !i prin re#ea.
Figura #.2. Sistem cu protec#ie la acces
Mecanismele de securitate necesare pentru a combate accesul nedorit se
mpart n dou$ categorii largi. Prima func#ie major$ a acestor mecanisme este aceea
de gardian. Aceast$ func#ie include proceduri de loginare bazate pe parole pentru a
interzice accesul persoanelor neautorizate precum !i rolul de a detecta !i anihila
orice form$ de virus, vierme sau alte atacuri similare. A doua func#ie a acestor
mecanisme este aceea de a anihila sau recupera orice distrugere provocat$ de
atacuri dac$ acestea totu!i au loc.
1.5. Atacuri
n general informa#iile care circul$ prin re#ea au un flux normal, adic$ de la
sursa acesteia spre destina#ie. Atacurile de securitate asupra unui sistem de
calculatoare sau o re#ea se caracterizeaz$ cel mai bine ca fiind acele ac#iuni care
intercepteaz$, modific$, distrug sau ntrzie fluxul normal de informa#ii. O
clasificare a atacurilor poate fi observat$ n figura ".3.
Pe scurt aceste tipuri de atac pot fi descrise n felul urm$tor:
ntreruperea: O component$ a sistemului este distrus$, devine
indisponibil$ sau inutilizabil$ total sau pentru o anumit$ perioad$
de timp. Acest tip de atac este un atac asupra disponibilit$#ii.
Exemple de astfel de atacuri ar fi: distrugerea unor echipamente
hardware, t$ierea liniilor de comunica#ie, distrugerea sistemului de
fi!iere sau tehnici de supranc$rcare a sistemului, care duc la
blocarea comunica#iilor sau a ntregului sistem numite atacuri prin
refuzul serviciilor (denial of service).
Interceptarea: O parte neautorizat$ ob#ine acces la o component$
a sistemului. Acesta este un atac asupra confiden#ialit$#ii. Partea
neautorizat$ poate fi o persoan$, un program sau un calculator.
Exemple de astfel de atacuri ar fi copierea ilegal$ a unor fi!iere !i
programe sau taparea liniilor de comunica#ie.
Modificarea: Partea neautorizat$ ob#ine nu numai acces la o
component$ din sistem, dar !i falsific$ informa#ia ob#inut$. Acesta
este un atac asupra integrit$#ii. Exemplele includ modificarea unor
valori din fi!iere de date, modificarea unor programe sau
transmiterea unor mesaje false prin re#ea.
Construirea: Partea neautorizat$ p$trunde n sistem !i imit$ unele
componente din acesta. Un atac de acest tip este un atac asupra
autenticit$#ii. Exemple de acest gen sunt: introducerea unor mesaje
false n re#ea care sunt interpretate ca mesaje reale !i inventarea
unor fi!iere care pot induce n eroare utilizatorii reali.
informatiei
Sursa Destinatia
(a) Fluxul normal al informatiei
(b) Intrerupere (c) Interceptie
(d) Modificare (e) Construire
informatiei
Figura #.3. Clasificarea atacurilor
O alt$ clasificare a atacurilor ar fi atacuri pasive !i atacuri active ceea ce se
observ$ !i din figura ".4.
Tehnici de securizare a datelor !i programelor curs " 7 8 Tehnici de securizare a datelor !i programelor curs "
Figura #.4. Atacuri pasive !i atacuri active
Atacurile pasive au scopul de a intercepta !i monitoriza transmisiile, scopul
fiind ob#inerea informa#iilor care sunt transmise. Exist$ dou$ tipuri de atac pasiv:
interceptarea mesajelor !i analiza traficului.
Metoda intercept$rii mesajelor este simplu de n#eles. O conversa#ie
telefonic$, un mesaj e-mail sau un fi!ier care poate con#ine informa#ii pre#ioase este
interceptat !i apoi interpretat.
Al doilea tip de atac pasiv este mult mai subtil. n esen#$ !i acesta are
acela!i rol de interceptare a informa#iei. Pentru a mpiedica interpretarea mesajelor
n general se folose!te o metod$ de mascare a con#inutului informa#iei. Chiar dac$
aceasta este interceptat$, oponentul nu poate interpreta informa#ia. Tehnica cea mai
folosit$ de mascare a con#inutului informa#iei este criptarea. Totu!i !i prin criptare
oponentul poate ghici locul, identitatea !i tipul comunic$rii ntre cele dou$ p$r#i
dup$ frecven#a, lungimea !i modelul mesajelor trimise.
Cealalt$ categorie major$ a atacurilor sunt atacurile active. Acestea implic$
modificarea fluxului normal de informa#ii !i chiar realizarea unor transmisii false.
Atacurile active se mpart n patru subdiviziuni: mascarad$, retransmisie,
modificarea mesajelor !i atacuri prin refuzul serviciilor.
O mascarad$ are loc atunci cnd o entitate pretinde c$ este o alt$ entitate.
Acest tip de atac este combinat !i cu alte tipuri de atac activ. De exemplu,
secven#ele de autentificare pot fi capturate !i retransmise dup$ o autentificare
valid$, efectuat$ de o entitate autorizat$ cu scopul de a ob#ine privilegii
suplimentare pentru a intra n rolul unei entit$#i care are aceste privilegii.
Retransmiterea implic$ capturarea pasiv$ a datelor !i retransmiterea lor
pentru a ob#ine un efect neautorizat.
Modificarea reprezint$ simpla alterare sau ntrzierea unui mesaj autentic
pentru a produce un efect neautorizat. Un exemplu n acest sens este modificarea
unor drepturi de acces pentru a facilita accesul unor persoane neautorizate la
informa#ii protejate.
Atacurile prin refuzul serviciilor inhib$ folosirea !i administrarea normal$ a
facilit$#ilor de comunica#ie. Aceste atacuri pot avea o #int$ precis$, de exemplu prin
suprimarea mesajelor transmise c$tre o anumit$ destina#ie. O alt$ form$ a acestui
atac este t$ierea liniilor de comunica#ie sau scoaterea din uz a re#elei prin
supranc$rcarea ei cu mesaje.
Atacurile active reprezint$ opusul atacurilor pasive. Atta timp ct atacurile
pasive sunt dificil de detectat, fiind totu!i disponibile mecanisme de prevenire,
atacurile active nu pot fi total prevenite deoarece ar fi necesare protec#ii fizice ale
c$ilor de comunica#ie. n schimb, scopul este de a detecta atacurile active, de a le
anihila !i recupera informa#iile afectate de acestea.
1.6. Criptologia
Criptologia transform! informa"ia original! ntr-o informa"ie secret!
(codificat!), care de obicei are o nf!"i#are neinteligibil!, aparent ntmpl!toare.
Informa"ia transformat!, n form! criptat!, se nume#te informa"ie secret!.
Criptologia este reversibil!. Dup! transmisie, cnd informa"ia a ajuns la
destina"ie, opera"ia invers! o transform! pe cea secret! n cea original!.
%tiin#a criptologiei se nume!te criptografie, format$ din cuvntul grec
kryptos care nseamn$ ascuns !i graphia nsemnnd scriere. Procesul de
ncercare de a decripta (descifra) o informa#ie criptat$ f$r$ ajutorul unei chei
(pentru a sparge un mesaj codificat) se nume!te criptanaliz!.
Criptanaliza se ocup$ cu studiul transform$rii unui text neinteligibil napoi
n cel inteligibil f$r$ a cunoa!te cheia de criptare. De asemenea mai este numit$ !i
spargere de coduri.
Tehnica sau metoda selectat$ pentru criptare determin$ ct de simplu sau
complex va fi procesul de transformare. Cele mai multe tehnici utilizate au la baz$
simple formule matematice, care se aplic$ de mai multe ori sau se combin$ ntre
ele. Unele formule folosesc o valoare secret$, numit$ cheie, pentru criptarea sau
decriptarea textului. Cheia arat$ ca o parol$ (nu este o parol$ obi!nuit$ pentru c$ nu
d$ direct accesul la informa#ie) !i de obicei este cunoscut$ numai de cel care trimite
sau prime!te mesajul respectiv. Aceast$ cheie este folosit$ de algoritmul respectiv
pentru a transforma informa#ia pe o cale particular$. Cu ajutorul cheii potrivite
informa#ia poate fi codificat$ (criptat$) sau poate fi decodificat$ (descifrat$ sau
decriptat$).
2 Tehnici de securizare a datelor !i programelor curs 2
CURS NR.2
2. Criptarea conven!ional" clasic"
Criptarea conven"ional# numit# de asemenea !i criptare simetric# sau
criptare cu o singur# cheie a fost singurul tip de criptare folosit naintea dezvolt#rii
cript#rii cu cheie public#, dar r#mne totu!i cea mai r#spndit# dintre cele dou#.
Capitolul ncepe cu prezentarea unui model general de criptare conven"ional#, care
va descrie o vedere de ansamblu asupra modului !i contextului n care ace!ti
algoritmi sunt folosi"i, urmnd ca mai apoi s# fie prezenta"i algoritmi de criptare
dezvolta"i nainte de apari"ia calculatoarelor moderne.
Text
simplu
Text criptat
Cheie secreta impartita
de expeditor si destinatar
Algoritm de criptare
(ex: DES)
Cheie secreta impartita
de expeditor si destinatar
Algoritm de decriptare
(inversul algoritmului
Text
simplu
de criptare)
Figura 2.1. Modelul simplificat al cript#rii conven"ionale
2.1. Modelul cript!rii conven"ionale
Figura 2.$ ilustreaz# procesul de criptare conven"ional. Mesajul original
inteligibil, numit !i text simplu, este convertit ntr-o secven"# aparent aleatoare !i
f#r# sens, numit# text cifrat. Procesul de criptare presupune un algoritm de criptare
!i o cheie de criptare. Aceast# cheie este o valoare independent# de textul care se
dore!te a fi criptat. Odat# produs, textul criptat trebuie transmis destinatarului. La
recep"ie acest text criptat trebuie transformat n textul original folosind un algoritm
de decriptare bazat pe aceea!i cheie folosit# la criptare. Securitatea cript#rii
conven"ionale depinde de mai multe aspecte. n primul rnd algoritmul de criptare
trebuie s# fie destul de puternic pentru a face imposibil# o decriptare numai pe baza
textului criptat. Pe lng# aceasta, securitatea cript#rii conven"ionale mai depinde !i
de securitatea cheii de criptare, nu a algoritmului. Astfel oponentului i va fi
imposibil# decriptarea mesajului pe baza textului criptat cnd se mai cunoa!te doar
algoritmul de criptare. Cu alte cuvinte nu este nevoie de p#strarea n secret a
algoritmului ci numai a cheii de criptare. Acest lucru ofer# un avantaj foarte mare
cript#rii conven"ionale !i a ajutat la r#spndirea ei pe scar# larg#.
Pentru a n"elege mai bine procesul de criptare, se vor prezenta elementele
principale ale cript#rii conven"ionale, elemente ce se pot observa !i din figura 2.2.
Mesajului
Sursa
Cripotanalist
cheii
Sursa
Destinatie
X X
X
^
K
^
Y
Canal de comunicatie sigur
K
de criptare
Algoritm
de decriptare
Algoritm
Figura 2.2. Modelul cript#rii conve"ionale
O surs# produce un mesaj de tip text simplu (un !ir de caractere) X =
[X
$
,X
2
,,X
M
]. Cele M elemente din X sunt ni!te litere ale unui alfabet finit. n
zilele noastre mult mai folosit este alfabetul binar [0,$]. Pentru criptare trebuie
generat# o cheie de forma K = [K
$
,K
2
,,K
J
]. Dac# cheia este generat# de sursa
mesajului aceasta trebuie transmis# destinatarului printr-un canal de comunica"ie
sigur. O alternativ# este ca o a treia parte s# genereze cheia care s# fie transmis#
celor dou# p#r"i folosind o metod# cu grad nalt de securitate.
Cu mesajul X !i cheia de criptare K ca intrare, algoritmul de criptare
formeaz# textul criptat Y = [Y
$
,Y
2
,,Y
N
]. Astfel putem scrie:
Y = E
K
(X)
Aceast# nota"ie indic# faptul c# Y este produs folosind algoritmul E pe
baza textului X cu o func"ie specific# determinat# de valoarea cheii K. Destinatarul,
aflat n posesia cheii, poate inversa procesul de transformare:
X = D
K
(Y)
Tehnici de securizare a datelor !i programelor curs 2 3 4 Tehnici de securizare a datelor !i programelor curs 2
unde D este algoritmul de decriptare.
Un oponent, observnd Y !i presupunnd c# cunoa!te algoritmul de criptare
(E) !i decriptare (D), va ncerca s# reconstituie X sau K sau ambele. n cazul n care
oponentul este interesat doar de un singur mesaj, acesta !i va concentra eforturile
n reconstituirea lui X. De obicei oponentul este interesat s# decripteze !i alte
mesaje pe viitor, caz n care el va dori s# reconstituie cheia de criptare K.
Sistemele criptografice sunt clasificate n general dup# trei propriet#"i
independente:
! Tipul opera!iilor folosite pentru transformarea textului
simplu n text criptat. To"i algoritmii de criptare sunt
baza"i pe dou# principii generale: substitu"ia, n care fiecare
element din textul simplu (bit, liter#, grup de bi"i sau litere)
este schimbat ntr-un alt element !i transpozi"ia, n care
fiecare element din textul necriptat este rearanjat. Cerin"a
principal# este ca nici o parte din informa"ie s# nu se piard#
pentru ca opera"ia de criptare s# fie reversibil#. Cele mai
multe sisteme criptografice combin# cele dou# metode:
substitu"ia !i transpozi"ia.
! Num"rul de chei folosite. Dac# ambii participan"i la
tranzac"ie, adic# sursa !i destina"ia, folosesc aceia!i cheie,
atunci sistemul este numit simetric sau criptare
conven"ional#. Dac# sursa !i destina"ia folosesc chei diferite
pentru criptare, respectiv decriptare, sistemul este numit
asimetric sau criptare cu chei publice.
! Metoda prin care textul este procesat. Un cifru-bloc
proceseaz# la intrare un bloc de elemente la un moment dat,
producnd la ie!ire cte un bloc pentru fiecare bloc de
intrare. Un cifru continuu proceseaz# un singur element la
intrare, producnd ca ie!ire tot un singur element, procesul
de criptare avnd un flux continuu.
Procesul prin care se ncearc# descoperirea lui X sau K, adic# a textului
necriptat, respectiv a cheii de criptare, se nume!te criptanaliz# (criptoanaliz#).
Strategia folosit# de criptanalist depinde de natura procesului de criptare folosit !i
de informa"ia disponibil# acestuia.
Exist# o mare varietate de atacuri criptoanalitice bazate pe volumul de
informa"ie disponibil criptanalistului (criptoanalistului). Cea mai dificil# situa"ie
este atunci cnd singurul lucru disponibil este textul criptat. n unele cazuri nici
m#car algoritmul folosit nu este cunoscut, dar acest lucru este foarte rar. Analistul
poate aborda problema folosind o analiz# prin for"# brut#, ncercnd toate cheile
posibile. Astfel analistul trebuie s# se bazeze pe textul criptat aplicndu-i diferite
teste statistice. Pentru a folosi aceast# abordare, analistul trebuie s# aib# o idee
general# despre tipul textului care a fost criptat, cum ar fi limba n care a fost scris
sau tipul acestuia: fi!ier executabil, cod surs#, etc. Ap#rarea mpotriva atacurilor
bazate numai pe textul criptat este cea mai u!oar#, deoarece oponentul are la
dispozi"ie, de obicei, prea pu"in# informa"ie.
O alt# form# de criptanaliz# este cnd oponentul cunoa!te unele secven"e
din textul original. De exemplu, multe fi!iere cu formate specifice con"in un header
sau o secven"# care este prezent# n toate fi!ierele de un anumit tip. Astfel de fi!iere
pot fi fi!ierele Postscript, HTML, etc. De asemenea mesajele mai pot con"ine
banere ale firmelor care le-au produs sau, n cazul unui cod surs#, unele informa"ii
de copyright. Atacurile de acest gen se numesc atacuri bazate pe cunoa!terea unei
secven"e din mesajul original.
n unele cazuri oponentul cunoa!te chiar !i textul original !i este interesat
n aflarea cheii de criptare pentru interpretarea unor mesaje pe viitor.
Un algoritm relativ slab nu va "ine piept nici m#car unei analize bazate
numai pe mesajul criptat. n general, algoritmii sunt proiecta"i pentru a rezista unei
analize bazate pe cunoa!terea unor secven"e din mesajul original.
O metod# de criptare este de securitate necondi"ionat# dac# textul criptat
generat de aceasta nu con"ine destul# informa"ie pentru a determina textul original,
indiferent de volumul de text decriptat care este n posesia atacatorului. De
asemenea, nu conteaz# puterea de calcul !i timpul de care dispune oponentul,
mesajul nu poate fi decriptat deoarece informa"ia necesar# nu este acolo. Cu
excep"ia unei metode numite one-time pad nu exist# metod# de criptare care s#
fie de o securitate necondi"ionat#.
De obicei, utilizatorii algoritmilor de criptare au dou# cerin"e generale
asupra acestora:
! Costul spargerii codului s# dep#!easc# valoarea informa"iei criptate;
! Timpul necesar spargerii codului s# dep#!easc# timpul de via"# al
informa"iei, adic# timpul pn# cnd informa"ia are valoare.
Un algoritm de criptare care satisface aceste dou# cerin"e este numit
algoritm cu securitate computa"ional#.
Este foarte greu de estimat timpul necesar pentru a decripta un mesaj.
Pentru a avea o idee general#, se prezint# urm#torul tabel care arat# pentru diferite
metode de criptare num#rul de chei posibile !i timpul necesar decript#rii pentru
dou# puteri de calcul diferite n cazul folosirii for"ei brute:
Tehnici de securizare a datelor !i programelor curs 2 5 6 Tehnici de securizare a datelor !i programelor curs 2
M#rimea cheii
(bi"i/caractere)
Num#rul de
chei posibile
Timpul necesar pentru $
decriptare/s
Timpul necesar pentru
$0
6
decript#ri/s
32 bi"i 2
32
=4,3$0
9
2
3$
s= 35,8 min 2.$5 milisecunde
56 bi"i 2
56
=7,2$0
$6
2
55%
s = $$42 ani $0,0$ ore
$28 bi"i 2
$28
=3,4$0
38
2
$27
s = 5,4$0
24
ani 5,4$0
$8
ani
26 caractere 26!=4$0
26
2 x $0
26
s = 6,4$0
$2
ani 6,4$0
6
ani
Criptarea pe 56 de bi"i este folosit# n algoritmul DES (Data Encryption
Standard). n tabel este prezentat# !i metoda codurilor de substitu"ie care folose!te o
cheie de 26 de caractere (toate literele posibile din alfabetul latin) n care toate
permuta"iile posibile ale celor 26 de caractere pot servi ca !i cheie. A treia coloan#
arat# timpul necesar decript#rii la o putere de calcul de $ decriptare/s care este
magnitudinea puterii de calcul folosite n zilele noastre. Prin folosirea paralel# a mii
de procesoare se pot ob"ine, totu!i, performan"e mult mai ridicate. Coloana a patra
prezint# timpul necesar pentru decriptare n cazul folosirii unei puteri de calcul care
poate procesa $0
6
decript#ri/s. Dup# cum se observ# n acest caz, algoritmul DES
nu mai poate fi considerat sigur, timpul necesar decript#rii fiind doar de $0 ore.
2.2. Algoritmi de criptare clasici
n cadrul lucr#rilor de laborator se prezint# cteva metode de criptare
folosite naintea erei calculatoarelor, numite tehnici de criptare clasice. Studiul
acestor tehnici vor ajuta la mai buna n"elegere a cript#rii conven"ionale deoarece
aceste tehnici clasice stau la baza metodelor de criptare moderne folosite n zilele
noastre, precum !i a tipurilor de atacuri criptoanalitice care trebuie anticipate.
2 Tehnici de securizare a datelor !i programelor curs 3
CURS NR.3
3. Algoritmi moderni de criptare
3.1. Scurt istoric
Elementele constituente ale unui algoritm modern de criptare, luate n
succesiunea lor fireasc", de la simplu la complex, sunt opera#iile elementare pe bi#i
(conjunc#ii, disjunc#ii, complement"ri, deplas"ri, suma modulo 2, permut"ri, rota#ii
etc.), cutiile S, func#ia-ciclu !i n final criptosistemul iterat propriu-zis. Aceste
elemente se reg"sesc !i la DES (Data Encryption Standard), unul din cei mai
utiliza#i algoritmi de criptare moderni. DES-ul a fost creat de speciali!tii firmei
IBM n $974 !i adoptat ca !i standard n criptologie al guvernului SUA, dup" multe
!i aprinse discu#ii, n $977. Acest standard odat" adoptat, s-a estimat c" va avea o
via#" scurt" !i "nchis"" de numai circa $0-$5 ani. A fost aprobat de NBS (National
Bureau of Standard) pentru uz comercial !i de NSA (National Security Agency)
pentru uz guvernamental n protec#ia unor date nu neap"rat categorisite ca fiind
secrete, dar care totu!i se consider" c" sunt sensibile la publicare. Discu#iile au luat
forma unei dezbateri publice, mai ales n jurul dimensiunii cheii !i aceasta a fost
baza majorit"#ii contesta#iilor aduse sistemului. Dezbaterile au fost a##ate !i de
deconspirarea faptului c" proiectul final al IBM-ului a fost puternic influen#at de
sugestiile celor de la NSA, care au cerut n plus ca unele din p"r#ile cruciale ale
proiect"rii sistemului s" r"mn" secrete. Poate !i nedeconspirarea complet" a lor a
dus la continuarea pn" azi a acestor critici. n orice caz, ra#iunea economic" a
criticii a fost aceea c" algoritmul era deja nvechit n momentul public"rii !i
adopt"rii lui ca standard. Dac" privim retrospectiv aceste controverse, criticii s-au
temut tot timpul de fragilitatea sistemului, iar proiectan#ii au r"mas permanent
conservatori n ceea ce prive!te securitatea lui.
Par#ial din cauza controverselor publice, dar mai mult din cauza costului,
reac#ia economicului fa#" de DES a fost ini#ial lent". De abia n $982, cnd DES-ul
a fost rev"zut !i reatestat ca standard federal pentru nc" 5 ani, el a fost unanim
acceptat !i configurat n forma sa final". Paradoxal, din $987, cnd NSA !i-a retras
girul s"u pentru algoritm, pentru uzul guvernamental, DES-ul a devenit practic
indispensabil. Aceasta de!i, n locul s"u, NSA a propus un nou sistem de algoritmi
secre#i cu restric#ii la distribuire !i publicare. Totu!i DES-ul a fost reconfirmat de
secretarul american al comer#ului (ac#ionnd la recomandarea NBS-ului) pn" n
$993. Decizia a fost una pragmatic". Criptografia a devenit o verig" a securit"#ii
proces"rii datelor !i pentru majoritatea cazurilor practice criptografia contemporan"
este sinonim" cu DES-ul. Lipsa unei alternative interna#ionale acceptabile, costul
nalt al tuturor refacerilor de soft !i hard !i lipsa oric"rei percep#ii publice a
pericolului de spargere atenueaz" impactul retragerii de c"tre NSA a avizului de
folosire. Suportul comercial a fost precump"nitor !i nu exist" ra#iuni atr"g"toare
pentru a-l schimba. Acesta este motivul pentru care DES-ul r"mne de baz" !i azi.
Una din solu#iile americane este dispozitivul criptografic Type II,
proiectat nc" din $987. Algoritmii sunt secre#i, dar au fost proiecta#i de cei mai
buni sp"rg"tori de coduri din lume. Ace!tia l-au implementat n cadrul institu#iilor
financiare canadiene. Se !tie pu#in despre caracteristicile !i performan#ele sale. Nu
exist" interes interna#ional pentru a accepta un standard nou, f"r" o consultare
public" !i nici dorin#a de a face public un astfel de sistem, nici m"car din partea
institu#iilor financiare de stat, interesul existnd mai degrab" pentru
compartimentele de rela#ii externe, unde este posibil ca acesta s" fie introdus !i
adoptat de institu#iile financiare americane, dac" DES-ul nu va mai fi readoptat ca
un standard criptografic american.
Revenind la DES, s" reamintim c" de la adoptarea sa n $977, acesta a fost
cel mai folosit sistem criptografic din lume. A fost utilizat att de sistemul public,
ct !i de cel privat, fiind recunoscut ca un mijloc general de realizare a securit"#ii.
n particular, a fost cel mai mult folosit de institu#iile financiare pentru a-!i asigura
o protec#ie sigur" asupra tuturor aspectelor legate de re#elele proprii de comunica#ii
!i de confiden#ialitatea transmisiilor. Larga sa folosire, de!i are precedente istorice,
nu i scute!te pe utilizatori de spectrul unui dezastru n cazul unor tipuri de atacuri
cu probabilitate m"rit" de succes. Oricum DES-ul a fost !i este un real succes
comercial pentru realizatori. Dup" ce America de Nord l-a recunoscut !i impus ca
standard criptologic, el s-a impus n aceea!i calitate !i pe plan mondial. Cei care l-
au contestat la nceput (este un nonsens s" accep#i standarde n criptologie) au
devenit mai trziu perseveren#i n spargerea sa, adaptndu-!i metodele odat" cu
evolu#ia nivelului tehnico-!tiin#ific.
Azi nu exist" mijloace economice pentru spargerea DES-ului. Costul
spargerii sale este n general mai mare dect riscurile cu care acesta este folosit
pentru protec#ie. n limbaj de securitate, folosirea n continuare a DES-ului nu poate
fi n ntregime evitat". Exist" acum tehnici posibile de spargere, iar raportul
cost/spargere va descre!te, probabil chiar exponen#ial, n urm"torii ani.
Criptanaliza diferen#ial" (DC) este primul atac care este capabil s" sparg"
ntregul algoritm cu $6-cicluri al DES-ului, cu o complexitate mai mic" dect 255.
Atacul poate fi aplicat la o mare varietate de substitu#ii de tip DES; se poate ar"ta
c" aproape orice modificare structural" a DES-ului conduce la sl"birea
criptosistemului. De exemplu, un algoritm DES de 8 cicluri este att de slab, nct
poate fi spart de un calculator personal n 2 minute. Evident, acest tip de atac se
poate aplica !i la alte versiuni de criptosisteme cu ciclu m"rginit: FEAL, KHARE,
REDOC-II, LOKI !i LUCIFER !i la func#iile hash de tip SNEFRU !i N-Hash.
n opinia speciali!tilor, algoritmul DES este ast"zi dep"!it moral n special
datorit" lungimii reduse a cheii sale - 56 de bi#i. Cu toate c" s-au dezvoltat variante
DES care s" rezolve acest neajuns (de exemplu algoritmul Triple DES), mai trebuie
#inut cont !i de faptul c" algoritmul DES a fost ini#ial proiectat pentru criptare
Tehnici de securizare a datelor !i programelor curs 3 3 4 Tehnici de securizare a datelor !i programelor curs 3
hardware, de!i majoritatea aplica#iilor care-l folosesc actualmente l implementeaz"
software, eficien#a sc"znd considerabil.
Din aceste motive, n septembrie $997, Institutul Na#ional pentru Standarde
!i Tehnologii al SUA (NIST) a lansat un concurs mondial pentru desemnarea
algoritmului care va nlocui DES ca standard de criptare. Acesta algoritm se
nume!te Standard de Criptare Avansat" (AES - Advanced Encryption Standard) !i
n ultima runda a concursului au ajuns urm"torii algoritmi: Rijndael (Belgia),
Twofish (SUA), RC6 (SUA), MARS (SUA) !i Serpent (Israel, Marea Britanie,
Norvegia). Cerin#a esen#ial" era ca AES s" fie mai rapid dect Triple DES !i cel
pu#in la fel de sigur: s" aib" o lungime a blocului de date de $28 de bi#i !i o cheie
de 256 de bi#i. Standardul AES era destinat n special procesoarelor Intel Pentium
dar unul din criteriile de evaluare era ca algoritmul s" aib" flexibilitatea de a fi
implementat !i pe alte platforme.
Concursul a fost c!tigat (octombrie 2000) de algoritmul Rijndael care
devine astfel AES, adic" noul standard de criptare.
3.2. Principiile codurilor bloc
Un cod continuu este acel cod care cripteaz" datele de intrare bit cu bit sau
byte cu byte, adic" cripteaz" un singur bit sau byte la un moment dat. Exemple
clasice de astfel de coduri sunt codul Viginere sau codul Vernam. Un cod bloc
folose!te o alt" tehnic" de criptare, n care este procesat un bloc de n unit"#i din
datele de intrare tratat ca un ntreg !i produce la ie!ire un bloc criptat de aceea!i
lungime. n general s-a depus mult mai mult efort n studierea codurilor bloc,
deoarece acestea par s" fie aplicabile ntr-o gam" mult mai larg" de aplica#ii dect
codurile continue. A!adar aproape toate aplica#iile folosite pentru comunicare n
re#ea folosesc o metod" de criptare cu coduri bloc, fiind bazate pe codul Feistel.
Mai nti se vor prezenta motivele pentru care a fost introdus !i s-a
r"spndit a!a de mult codul dezvoltat de Horst Feistel.
Substitu!ie reversibil" Substitu!ie ireversibil"
Original Criptat Original Criptat
00 $$ 00 $$
0$ $0 0$ $0
$0 00 $0 0$
$$ 0$ $$ 0$
Tabelul 3.#.
Un cod bloc opereaz" cu secven#e de n bi#i din mesajul original !i
produce un mesaj criptat de n bi#i. Astfel exist" 2
n
posibilit"#i de criptare pentru ca
opera#ia s" fie reversibil", adic" unui anumit bloc de ie!ire s"-i corespund" un unic
bloc de intrare. S" consider"m exemplul prezentat n tabelul 3.$, pentru a n#elege
mai clar acest lucru pentru o transformare cu n = 2.
n cazul al doilea secven#a 0$ din mesajul criptat corespunde mai multor
elemente din datele de intrare ($0, $$). La decriptare nu se va !ti care dintre acestea
dou" corespund secven#ei 0$ din mesajul criptat.
n continuare se prezint" un tabel care ilustreaz" o posibil" substitu#ie
folosit" pentru un cod de 4 bi#i. Acest lucru presupune c" pentru 4 bi#i de intrare
exist" 2
4
= $6 posibile variante care sunt substituite cu $6 posibilit"#i de ie!ire,
substitu#iile fiind unice pentru orice criptare reversibil".
Original Criptat
Decimal Binar Decimal Binar
0 0000 $4 $$$0
$ 000$ 4 0$00
2 00$0 $3 $$0$
3 00$$ $ 000$
4 0$00 2 00$0
5 0$0$ $5 $$$$
6 0$$0 $$ $0$$
7 0$$$ 8 $000
8 $000 3 00$$
9 $00$ $$ $0$0
$0 $0$0 6 0$$0
$$ $0$$ $2 $$00
$2 $$00 5 0$0$
$3 $$0$ 9 $00$
$4 $$$0 0 0000
$5 $$$$ 7 0$$$
Tabelul 3.2.
Dar apare o problem" practic" a acestei abord"ri: folosirea unui bloc de
dimensiune mic", ca cel prezentat anterior, echivaleaz" cu un sistem criptografic
clasic de substitu#ie, care prezint" vulnerabilit"#i la analize statistice. Solu#ia ar fi
folosirea unui bloc mai mare, dar aceasta prezint" probleme de implementare !i de
performan#". ntr-o astfel de transformare tabela de substitu#ie este ns"!i cheia de
criptare. Dup" cum se observ" !i din exemplul de mai sus pentru un bloc de 4 bi#i
dimensiunea cheii este de 64 bi#i. n general pentru un bloc de n bi#i dimensiunea
Tehnici de securizare a datelor !i programelor curs 3 5 6 Tehnici de securizare a datelor !i programelor curs 3
cheii va fi de n x 2
n
bi#i. n cazul unui bloc de 64 bi#i dimensiunea cheii va fi de 64
x 2
64
= 2
70
= $0
2$
bi#i, adic" o valoare enorm".
Avnd n vedere aceste dificult"#i, Feistel a prezentat necesit"#ile de
implementare a unei codific"ri ideale de tip bloc n cazul utiliz"rii unor blocuri
mari. El a propus folosirea combinat" a dou" sau mai multe coduri de baz" n a!a
fel nct rezultatul ob#inut s" fie mai puternic din punct de vedere criptografic dect
oricare din codurile componente. n particular el a propus folosirea unor coduri care
alterneaz" substitu#ia cu transpozi#ia. De fapt aceasta este o aplica#ie practic" a
tehnicii propuse de Claude Shannon care alterneaz" func#iile de confuzie !i difuzie.
Func#ia de difuzie are rolul de a face rela#ia dintre mesajul original !i mesajul
criptat ct mai complex" !i de a ascunde informa#ia statistic" din mesajul criptat.
Efectul de difuzie se ob#ine prin aplicarea unei func#ii n care un bit din mesajul
original afecteaz" valoarea a mai multor bi#i din mesajul criptat. Un exemplu de
difuzie este criptarea mesajului M = [M
$
, M
2
, , Mn] printr-o func#ie de mediere:
26 mod
$

=
+
=
k
i
i j j
M Y
ad"ugnd k litere succesive pentru a ob#ine litera criptat" Y
j.
Astfel se ob#ine
disiparea informa#iei statistice din mesajul original. Pe de alt" parte efectul de
confuzie caut" s" fac" ct mai complex" rela#ia dintre mesajul criptat !i cheia de
criptare, efect ob#inut prin algoritmi de substitu#ie complec!i.
3.3. Structura codului Feistel
Figura 3.$ ilustreaz" structura !i modul de func#ionare a codului Feistel.
Algoritmul are ca intrare un bloc de lungime 2w !i cheia K. Blocul de intrare este
divizat n dou" jum"t"#i L
0
!i R
0.
Cele dou" jum"t"#i trec prin n ture (runde) de
procesare !i apoi sunt combinate pentru a forma blocul de ie!ire criptat. Fiecare tur"
i are ca intrare L
i
!i R
i
derivate din tura anterioar", la fel ca !i subcheia K
i
derivat"
din cheia K. n general subcheile K
i
sunt diferite ntre ele !i diferite de cheia K.
Fiecare tur" are aceea!i structur". Se efectueaz" o substitu#ie pe jum"tatea
din stnga. Acest lucru este ob#inut prin aplicarea unei func#ii F p"r#ii din dreapta,
iar apoi se efectueaz" o opera#ie XOR (sau-exclusiv) pe bi#i ntre partea din stnga
!i rezultatul func#iei F. Func#ia F are aceea!i structur" pentru fiecare tur", dar are ca
parametru subcheia K
i
. Dup" efectuarea substitu#iei se execut" o permuta#ie
schimbnd cele dou" jum"t"#i ntre ele. Aceast" structur" este o form" particular" a
re#elei substitu#ie-permuta#ie (SPN Substitution-Permutation Network ) propus" de
Shannon.
Figura 3.#. Re#eaua clasic" Feistel
Realizarea exact" a re#elei Feistel depinde de alegerea urm"toarelor
caracteristici !i parametrii:
! Lungimea blocului: Un bloc de dimensiune mare nseamn" securitate mai
mare dar reduce viteza de criptare/decriptare. Un bloc de 64 sau $28 bi#i este
rezonabil !i este folosit aproape universal de algoritmii care folosesc coduri
bloc.
! Lungimea cheii: O cheie de lungime mare spore!te securitatea dar poate
reduce viteza de criptare/decriptare. Chei de 64 bi#i sau mai scurte sunt
Tehnici de securizare a datelor !i programelor curs 3 7 8 Tehnici de securizare a datelor !i programelor curs 3
considerate inadecvate n zilele noastre, cheile de $28 sau 256 bi#i devenind
uzuale.
! Num"rul de ture: Esen#a codului Feistel este c" o singur" tur" nu ofer" destul"
securitate, turele multiple sporind securitatea. Un num"r rezonabil de ture este
$6.
! Algoritmul de generare a subcheii: O complexitate mare a algoritmului
conduce la o dificultate mare la criptanaliz".
! Func!ia tur" (F): Se poate spune acela!i lucru ca !i despre algoritmul de
generare a subcheii: o complexitate mare a algoritmului conduce la o dificultate
mare la criptanaliz".
! Criptare/decriptare software rapid": n multe cazuri func#iile de criptare
sunt ncapsulate n aplica#ii sau utilitare care servesc ca introducere pentru
implementarea lor hardware. Astfel viteza execu#iei algoritmului devine de
mare interes.
! Analiz" u$oar": Acest fapt nu se refer" la o criptanaliz" u!oar" ci la
simplitatea analiz"rii modului de func#ionare a algoritmului. Un algoritm u!or
de analizat !i de explicat are un avantaj mare, deoarece astfel se pot observa !i
corecta mai u!or vulnerabilit"#ile acestuia, iar mbun"t"#irea ulterioar" este mai
u!oar".
3.3.1. Decriptarea algoritmului Feistel
Procesul de decriptare al algoritmului Feistel este n esen#" identic cu cel de
criptare. Se folose!te ca intrare mesajul criptat, dar subcheile K
i
se folosesc n
ordine invers". n prima tur" se va folosi subcheia K
n
, apoi K
n-$
!i a!a mai departe,
K
$
fiind folosit" n ultima tur". Acest lucru este foarte folositor deoarece nu este
nevoie de doi algoritmi separa#i, unul pentru criptare !i altul pentru decriptare.
Pentru a vedea dac" algoritmul executat cu cheile n ordine invers" produce
rezultatul corect consider"m figura 3.2 care prezint" procesul de criptare n partea
stng" !i algoritmul de decriptare n partea dreapt". Pentru o claritate mai mare s-a
folosit nota#ia LE !i RE pentru datele care trec prin algoritmul de criptare, !i LD !i
RD pentru datele care trec prin algoritmul de decriptare. Diagrama arat" c" la
fiecare tur" valorile intermediare ale procesului de decriptare sunt identice cu
valorile corespunz"toare procesului de criptare dar cu cele dou" jum"t"#i schimbate
ntre ele.
Faptul c" algoritmii de criptare !i decriptare sunt identici se datoreaz" !i
propriet"#ii operatorului XOR care sunt urm"toarele:
[ ] [ ] C B A C B A =
0 = D D
E E = 0
Figura 3.2. Criptarea !i decriptarea Feistel
Presupunnd c" vrem s" cript"m o secven#" P cu cheia K folosind acest
operator atunci criptarea va fi:
C K P =
Iar decriptarea va fi:
( ) P P K K P K K P K C = = = = 0 ) (
n concluzie putem folosi acela!i algoritm pentru criptare !i decriptare,
rezultatul ob#inut fiind corect.
2 Tehnici de securizare a datelor i programelor curs 4

CURS NR.4
3.4. DES (Data Encryption Standard)
Securitatea criptosistemelor iterate i proprietile funciilor hash au fost
principalele zone active ale cercetrilor criptologice din ultimii ani. Cel mai
cunoscut, datorit impactului asupra publicului larg, a fost criptosistemul DES, care
a rmas o lung perioad de timp imbatabil la toate atacurile aprute n literatura de
specialitate.
3.4.1. Metoda de criptare
DES-ul cuprinde dou tipuri de componente: algoritmul i cheia.
Algoritmul DES publicat conine un numr de transformri simple, care folosesc
tehnici de transpoziie i substituii alternative. Acest algoritm folosete o singur
cheie, datele fiind codificate i decodificate cu aceast cheie (trebuie s fie inut n
secret de organizaia care trimite i de organizaia care primete datele criptate).
Cheia DES cuprinde opt bytes (n total 8x8=64 bii), fiecare byte coninnd
7 bii din cheie i unul de paritate. n timpul codificrii, algoritmul DES mparte
mesajul n blocuri de 64 de bii. El lucreaz n acelai timp numai cu un singur
bloc, pe care l mparte n jumtate (n dou cuvinte cu 32 de bii L
i
i R
i
). Acestea
sunt amestecate de 16 ori, sub controlul cheii, rezultnd 64 de bii codificai.
Dup cum se poate observa din figura 3.3 algoritmul DES poate fi mprit
n trei componente:

a) Permutarea iniial;
b) Cele 16 runde de codificare propriu-zis (nucleul algoritmului);
c) Permutarea final (inversa permutrii iniiale).

a) Permutarea iniial se desfoar naintea primei runde DES i este descris n
tabelul urmtor:
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
Tabelul 3.3. Permutarea iniial

Figura 3.3. Codificarea DES

Tehnici de securizare a datelor i programelor curs 4 3 4 Tehnici de securizare a datelor i programelor curs 4

Astfel, cei 64 de bii ai mesajului iniial (notai prin numerele
corespunztoare poziiei lor n cadrul blocului) sunt rearanjai (primul este bitul 58,
al doilea bitul 50,, ultimul fiind bitul 7 din mesajul iniial).

b) Cele 16 runde de codificare propriu-zis (nucleul algoritmului)

O rund de codificare are la baz relaiile:

1
=
i i
R L

) , (
1 1 i i i i
K R f L R

=


i este prezentat n figura 3.4:


Figura 3.4. O singur rund din algoritmul DES

b1) Generarea subcheilor K
i
Din figur putem observa c funcia f depinde de subcheia K
i
, care este
generata de generatorul de subchei, prezentat n figura 3.5.


Figura 3.5. Generatorul de subchei

Generatorul de subchei produce 16 subchei a cte 48 de bii. Pentru a crea
aceste subchei trebuie s se parcurg urmtorii pai:

1. Formeaz cheia K de 56 bii din cheia principal de 64 bii selectnd
i permutnd cei 56 de bii (cei opt bii de paritate sunt neglijai).
2. mparte K n dou pri de 28 de bii (l
0
i r
0
).
3. Definete l
i
i r
i
(1 i 16) n urmtorul fel:

=
=

cazuri celelalte pentru l Shift Shift


i pentru l Shift
l
i
i
i
)), ( (
16 , 9 , 2 , 1 ), (
1
1

=
=

cazuri celelalte pentru r Shift Shift


i pentru r Shift
r
i
i
i
)), ( (
16 , 9 , 2 , 1 ), (
1
1

unde funcia Shift este o deplasare circular la stnga cu un bit.
Tehnici de securizare a datelor i programelor curs 4 5 6 Tehnici de securizare a datelor i programelor curs 4

4. Obinem K
i
din concatenarea l
i
r
i
selectnd mai nti 48 de bii (din 56
ct are concatenatul l
i
r
i
) i realiznd mai apoi o permutare a lor
conform tabelului 3.4 (Permutare&Compresie- P&C).

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
Tabelul 3.4. Permutare & Compresie

b2) Implementarea funciei f(R,K)

Funcia f are la intrare 32 de bii de date (R) i 48 de bii ai cheii (K) i
returneaz 32 de bii de date (figura 3.6).

S
1
S
2
S
3
S
4
S
5
S
6
S
7
S
8
R (32 bits)
48 bits
E
+
K (48 bits)
P
32 bits
Figura 3.6. Calculul funciei f(R,K)

Intrarea este extins la 48 bii folosind o tabel care definete permutaia i
extinderea (tabelul 3.5), fapt ce implic duplicarea a 16 bii din intrare.

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
Tabelul 3.5. Permutare & Extindere (E)
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 5 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 8 2 6 8 0 13 3 4 14 7 5 11

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

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

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


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

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

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

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


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

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

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

2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
Tabelul 3.6. cutiile S

Tehnici de securizare a datelor i programelor curs 4 7 8 Tehnici de securizare a datelor i programelor curs 4

Celor 48 bii rezultai li se aplic un operator XOR (sau exclusiv) cu
subcheia K
i
. Rezultatul de 48 bii este trecut mai apoi printr-o bloc de cutii S care
produce o ieire pe 32 bii.
Modul de funcionare al cutiilor S (S-boxes) din funcia f este ilustrat n
tabelul 3.6. Substituia const din 8 cutii S, fiecare din ele acceptnd o intrare pe 6
bii i producnd o ieire pe 4 bii. Primul i ultimul bit din intrare formeaz un
numr binar de 2 bii care selecteaz una din cele patru substituii definite de cele
patru rnduri n tabelul S
i
. Cei patru bii din mijloc selecteaz una din cele 16
coloane din tabel. Valoarea zecimal din celula selectat este convertit intr-o
reprezentare binar pe 4 bii care este de fapt ieirea.
n final, ieirii i se aplic o funcie de permutaie (notat n figura 3.6 cu P):

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
Tabelul 3.7. Permutare (P)

c) Permutarea final (Inversa permutrii iniiale)
Aceast permutare este descris n tabelul 3.8:

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
Tabelul 3.8. Permutarea final

n finalul acestui paragraf s considerm, ca aplicaie, codificarea a dou
cuvinte care difer numai printr-un singur bit. Se observ c la sfritul codificrii
diferena dintre cele dou cuvinte codificate este foarte mare (nu difer numai de un
bit):

Intrare: ...............................................................*
Permutare: .......................................*........................
Runda 1: .......*........................................................
Runda 2: .*..*...*.....*........................*........................
Runda 3: .*..*.*.**..*.*.*.*....**.....**.*..*...*.....*.................
Runda 4: ..*.*****.*.*****.*.*......*.....*..*.*.**..*.*.*.*....**.....**
Runda 5: *...**..*.*...*.*.*.*...*.***..*..*.*****.*.*****.*.*......*....
Runda 6: ...*..**.....*.*..**.*.**...*..**...**..*.*...*.*.*.*...*.***..*
Runda 7: *****...***....**...*..*.*..*......*..**.....*.*..**.*.**...*..*
Runda 8: *.*.*.*.**.....*.*.*...**.*...*******...***....**...*..*.*..*...
Runda 9: ***.*.***...**.*.****.....**.*..*.*.*.*.**.....*.*.*...**.*...**
Runda 10: *.*..*.*.**.*..*.**.***.**.*...****.*.***...**.*.****.....**.*..
Runda 11: ..******......*..******....*....*.*..*.*.**.*..*.**.***.**.*...*
Runda 12: *..***....*...*.*.*.***...****....******......*..******....*....
Runda 13: **..*....*..******...*........*.*..***....*...*.*.*.***...****..
Runda 14: *.**.*....*.*....**.*...*..**.****..*....*..******...*........*.
Runda 15: **.*....*.*.*...*.**.*..*.*.**.**.**.*....*.*....**.*...*..**.**
Runda 16: .*..*.*..*..*.**....**..*..*..****.*....*.*.*...*.**.*..*.*.**.*
Ieire: ..*..**.*.*...*....***..***.**.*...*..*..*.*.*.**.*....*.*.*.**.
Figura 3.7.

Tabelul 3.9 arat rezultatele obinute pentru dou mesaje la care difer doar
un singur bit:

Schimbri n text Schimbri n cheie
Tura Numrul de bii
schimbai
Tura Numrul de bii
schimbai
0 1 0 0
1 6 1 2
2 21 2 14
3 35 3 28
4 29 4 32
5 34 5 30
6 32 6 32
7 31 7 25
8 29 8 24
9 42 9 40
10 44 10 38
11 32 11 31
12 30 12 33
13 30 13 28
14 26 14 26
15 29 15 34
16 34 16 35
Tabelul 3.9.

2 Tehnici de securizare a datelor !i programelor curs 5
CURS NR.5
3.4.2. Cteva considera!ii privind atacul prin c"utare exhaustiv"
Spargerea DES-ului este un proces foarte simplu, dar adeseori ndelungat:
se ncepe cu un bloc de text clar mpreun" cu criptotextul corespunz"tor !i se
ncearc" toate cheile posibile, pn" cnd se ajunge la cheia adev"rat". Exist"
evident metode pentru a se ajunge la aceasta, dar nici o metod" optim" nu este
cunoscut", nici m"car criptanaliza diferen#ial" nu rezolv" problema de o manier"
satisf"c"toare. Au fost dezvoltate diverse atacuri analitice pentru variante
simplificate ale algoritmului, dar multe din ele au cerut mai mult timp dect pentru
c"utarea exhaustiv", pentru varianta DES general". Exist" tehnici posibile de
spargere, iar costul pe solu#ie a sc"zut exponen#ial n ultimii $0 ani. Oricum analiza
securit"#ii DES-ului trebuie s" #in" cont de cel pu#in 4 elemente:
Num!rul total de chei existente: dimensiunea cheilor DES-ului a fost
fixat" la 56 bi#i. Aceasta nseamn" c" exist" 2
56
sau 72.057.037.927.936 chei
distincte posibile !i reprezint" dimensiunea spa#iului cheilor. n $977, c"utarea ntr-
un astfel de spa#iu costa 20.000.000 $, la nivelul tehnologiei de atunci.
Timpul necesar pentru c!utare: pentru a realiza aceast" c"utare printr-o
procedur" combinat" software-hardware, la nivelul anilor '77, Diffie !i Hellman au
imaginat un calculator format din $.048.576 procesoare de spargere a DES-ului,
lucrnd n paralel. Explica#iile matematice sunt simple. Exist" 86.400 secunde ntr-
o zi. Exist" 2
56
, deci aproximativ 72 x $0$5 chei posibile. Pentru a controla toate
cheile n timp de 24 h trebuie s" avem posibilitatea de a controla 834 miliarde
chei/sec. Fiecare cip de c"utare trebuie s" poat" testa 800.000 chei diferite pe
secund".
Acest fapt ar putea stimula NBS-ul s" dezvolte o industrie ntreag" pentru a
realiza atacul prin c"utare exhaustiv". Concluziile tehnice spun c" pn" n $990 nu
au existat condi#ii hardware pentru a ob#ine viteza necesar" spargerii prin aceast"
metod". De exemplu cip-urile produse pn" n $984 erau capabile s" execute circa
250.000 cript"ri DES/secund". Pn" n $987 se ajunsese deja la 5$2.000
cript"ri/secund", iar prognozele ar"tau c" sunt posibile cip-uri de pn" la $.000.000
cript"ri/secund", folosind aceea!i tehnologie de proiectare a circuitelor integrate.
Cu noile tehnologii de proiectare se estimeaz" cip-uri cu o rat" de prelucrare de
32.000.000 cript"ri/secund".
Num!rul de procesoare necesare spargerii
DES-ului prin c!utare exhaustiv!
Viteza procesorului
Chei testate / sec.
An Lun" S"pt"mn" Zi
$.000.000 2.300 27.400 $$9.200 834.000
2.000.000 $.$50 $3.700 59.600 4$7.000
4.000.000 ($990) 600 6.850 29.800 208.500
32.000.000 ($995) 75 850 3.700 26.$00
256.000.000 (2000) 9 $07 500 3.300
Tabelul 3."0. Num"rul de procesoare de vitez" dat", necesare
spargerii DES-ului, prin c"utare exhaustiv", ntr-o perioad" precizat".
Speciali!tii estimeaz" c" astfel de cip-uri vor fi func#ionale n anul 2002,
ele avnd la baz" cercet"rile din domeniul semiconductorilor din perioada de dup"
$980. La nivelul anilor $99$-92, folosind nivelul respectiv din domeniul
semiconductorilor, au fost posibile cip-uri capabile s" controleze 4.000.000 chei pe
secund". Cu tehnologia actual" se estimeaz" c" se poate ajunge la 2.000.000
cript"ri/secund", iar n urm"torii $0 ani este posibil" o prelucrare de nivelul a
256.000.000 chei pe secund". Astfel, cu 4.000 astfel de cipuri, c"utarea exhaustiv"
n spa#iului cheilor n 24 ore este posibil". n tabelul 3.$0 se prezint" sintetic cu
num"rul de procesoare, de vitez" dat", necesare spargerii DES-ului prin c"utare
exhaustiv".
Atacurile software asupra DES-ului pun o serie de pericole totu!i limitate,
dar care trebuie avute n vedere. Software-ul pentru DES lucreaz" att de ncet nct
c"utarea exhaustiv" este practic imposibil", dar destul de rapid ca s" poat" fi folosit
de cineva care sper" s" aib" !i pu#in noroc n criptanaliz".
Predic#ia din $977 a NBS-ului s-a adeverit: pentru cteva zeci de milioane
de dolari, este posibil s" se baleeze spa#iul cheilor pentru DES n mai pu#in de o zi.
n $977 aceste ipoteze au p"rut exagerate !i p"reau a dep"!i anumite limite de
credibilitate tehnologic". n $990 au mai r"mas numai re#ineri de natur" economic".
Timpul disponibil pentru c!utare: n orice perioad", atacul DES-ului,
prin c"utare exhaustiv", garanteaz" teoretic o eventual" solu#ie, dar pentru a fi
credibil trebuia s" ofere o probabilitate rezonabil" de stabilire a cheii reale, ntr-un
interval de timp acceptabil. Evident acest lucru este func#ie !i de ct de repede pot
fi controlate cheile, dar depinde de asemenea de perisabilitatea datelor (ct de mult
timp r"mn acestea secrete). Tranzac#iile financiare tipice sunt mult mai "lume!ti".
Autenticitatea comunic"rii, cnd este necesar", adesea nu are un termen mai mare
de ordinul zilelor. Principalul scop al criptografiei, n acest caz, este garantarea
integrit"#ii informa#iei, mai degrab" dect asigurarea secretului s"u. (Motivul de
mai sus se poate nscrie n acelea care fac improbabil" renun#area total" la DES n
Tehnici de securizare a datelor !i programelor curs 5 3 4 Tehnici de securizare a datelor !i programelor curs 5
viitorul apropiat - se pot vedea n acest sens lucr"rile dedicate subiectului la
conferin#ele EUROCRYPT).
Perioada de men#inere a categoriei de secret la un anumit nivel este
esen#ial" !i condi#ioneaz" probabilitatea de spargere a DES-ului. Din analizele
f"cute se poate vedea c" ar fi ideal" o schimbare frecvent" a cheilor, cel mai bine cu
fiecare tranzac#ie. Acest lucru reduce riscul atacului n timp. Este evident c" nimic
nu asigur" protec#ia datelor care au fost deja criptate !i nu ofer" nici o garan#ie c"
ini#iatorul atacului nu are succes. Dac" informa#ia trebuie re#inut" c#iva ani se pot
executa atacuri succesive. Dac" un singur transfer este suficient - de exemplu, un
transfer al unei sume mari de dolari - chiar !i pentru a transmite milioane de dolari,
DES-ul poate p"rea o rezolvare bun".
CIP " Mhz 2 Mhz 4 Mhz 32 Mhz 256 Mhz Total
Pre#/buc. 25 250 E/S N N N
An 2.300 $.$50 N N N $28.574
Lun" 27.400 $3.700 N N N $.53$.706
S"pt"mn" $$9.200 59.600 N N N 6.663.482
$
9
9
0
Zi 834.000 4$7.000 N N N 46.622.0$7
Pre#/buc. E/D 25 250 E/S N N
An N $.$50 600 N N 65.670
Lun" N $3.700 6.850 N N 765.853
S"pt"mn" N 59.600 29.800 N N 3.33$.74$
$
9
9
5
Zi N 4$7.000 208.500 N N 23.3$$.009
Pre#/buc. E/D E/D 25 250 E/S N
An N N 600 75 N $6.77$
Lun" N N 6.850 850 N $90.763
S"pt"mn" N N 29.800 3.700 N 830.$36
2
0
0
0
Zi N N 208.500 26.$00 N 5.83$.943
Legend!: E = exist", D = dep"!it, S = prea scump, N = nu e cazul;
Tabelul 3."". Costuri investi#ional-structurale
Costul aferent c!ut!rii: pentru a realiza o estimare a costului spargerii
DES-ului, trebuie f"cute unele ipoteze simplificatoare. Bazndu-ne pe anumite
considera#ii tehnice din tabelul 3.$$, vom admite c" costul unor tehnologii date va
descre!te tot att de repede, pe ct se face nlocuirea lor. Cu alte cuvinte, dac" azi
un cip cost" $00 USD, el va costa 7.83 USD peste 5 ani. Cip-urile considerate n
prezent exotice vor trece peste $0 ani n fabrica#ie de serie (ast"zi implementarea
unor solu#ii bazate pe aceste cip-uri ar fi prea costisitoare pentru a le pune acum n
practic"). Pentru a fi mai concre#i, un pre# de 25 USD pentru un procesor presupune
o tehnologie electronic" eficient", admi#nd un factor de multiplicare egal cu $0
pentru fiecare genera#ie de tehnologie (de regul" la 5 ani apar nout"#ile !i sunt de $0
ori mai rapide) !i sc"derea de $0 ori a pre#ului (n afara implica#iilor infla#iei) la
fiecare 5 ani. Baza de 25 USD include costul proiect"rii pl"cii, software-ului de
control !i manopera. Pre#ul rezultat este o medie a solu#iei tehnologice !i a
celorlalte solu#ii implicate pentru calculul economic. Calculul detaliat se face n
tabelul 3.$$ (pre#urile sunt n USD). n practic", aceste costuri nu sunt suficiente
pentru a executa un atac extern, deoarece unele activit"#i suplimentare de analiz"
prealabil" !i proiectare cer constituirea de costuri suplimentare externe. Nivelul
acestora este mare !i cunoa!terea sistemelor bancare !i a procedurilor similare este
deseori restrictiv".
n continuare, se prezint" !i un tabel-sintez" cu acelea!i calcule de investi#ii
necesare spargerii DES-ului n USD.
Anul An Lun! S!pt!mn! Zi
$990 $29.000 $.532.000 6.664.000 46.622.000
$995 52.000 600.000 2.6$$.000 $8.265.000
2000 $0.300 $$7.000 5$0.000 3.580.000
Tabelul 3."2. Investi#ii necesare spargerii DES-ului prin
c"utare exhaustiv"
Practic, dup" 2000 suntem n fa#a unui colaps al tehnologiilor curente de
securitate bazate pe criptosistemul DES. Aceast" realitate nu surprinde: DES-ul a
fost proiectat acum 20 de ani, dar a fost prev"zut s" reziste numai $5. Dac" viru!ii
calculatoarelor pot crea panic" printre utilizatorii acestora, cum este afectat"
ncrederea publicului prin denigrarea DES-ului? Care va fi prima indica#ie a unei
fraude catastrofale? Ea poate apare practic oriunde n lume! Dac" DES-ul este spart
printr-un atac oarecare, va urma un efect de avalan!" n ntreaga lume. Implica#iile
de toate felurile - economice, tehnologice, politice, !tiin#ifice, juridice, diplomatice
etc. - ale unui astfel de eveniment sunt foarte greu de evaluat !i vor avea loc la
scar" planetar", dat" fiind dimensiunea folosirii DES-ului la aceast" or". Am v"zut
c" problema de baz" a algoritmului este c" dimensiunea cheii este prea mic" n fa#a
unei c"ut"ri exhaustive care se poate face cu o for#" din ce n ce mai mare. Prin
urmare exist" trei strategii care pot fi urmate individual sau n combina#ie.
S! nu se fac! nimic - aceast" manier" i conduce pe utilizatori la m"rirea
gradului de expunere la atacuri !i poate fi acceptat" dac" ace!tia !i permit s" se
complac" n situa#ii sporite de risc. Ei trebuie s" evalueze raportul dintre riscul
asumat !i costul securit"#ii. Aceast" manier" nu rezolv" nici problema folosirii
interne, nici a aplica#iilor inter-institu#ii !i poate conduce la cazuri de deteriorare
fundamental" a rela#iilor de afaceri ntre institu#ii !i clien#ii lor, posibil chiar la
nivel guvernamental. n orice caz, n aceast" situa#ie credibilitatea sistemelor
electronice de plat" (de exemplu automatele bancare ATM) r"mne la un nivel
din ce n ce mai sc"zut.
Tehnici de securizare a datelor !i programelor curs 5 5 6 Tehnici de securizare a datelor !i programelor curs 5
nlocuirea DES-ului - orice nlocuire a DES-ului trebuie s" fie acceptat"
interna#ional !i, de asemenea, s" fie de uz interna#ional; n plus noul algoritm
trebuie s" fie cel pu#in la fel de u!or de folosit ca !i DES-ul. Pn" la apari#ia AES
singurii algoritmi care satisf"ceau primele dou" cerin#e erau cei din domeniul
cheilor publice, cum ar fi RSA. Totu!i, algoritmii cu chei publice nu sunt la fel de
opera#ionali ca DES-ul. Securitatea lor este probabil - dar nu dovedit - de un ordin
de m"rime mai mare dect acela al DES-ului. Odat" cu finalizarea (n anul 2000)
concursului pentru noul standard AES, se pare c" s-a g"sit o solu#ie eficient" pentru
nlocuirea DES.
Extinderea DES-ului - DES-ul poate fi extins folosind tehnici de criptare
tripl" cu chei de lungime dubl". Se poate ar"ta c" acest triplu DES nu este identic
cu un algoritm simplu cu $$2 bi#i pentru cheie. Aceast" diferen#" poate fi exploatat"
teoretic, folosind o metod" de expandare, dar atacul este nepractic (cere metode de
tip TCA, 72 cvadrilioane de opera#ii !i 562 bilioane de MB pentru stocare). Noul
sistem poate fi prezentat gradual, deoarece compatibilitatea cu echipamentele
existente poate fi men#inut" setnd ambele jum"t"#i ale unei chei egale. Deoarece
lungimea blocului de date r"mne aceea!i, se asigur" !i compatibilitatea
opera#ional" cu interfe#ele existente. Facilit"#ile din gestiunea cheilor vor fi cele
mai afectate. Tot schimbul cheii, derivarea !i supervizarea acesteia trebuie s" fie de
lungime dubl". n forma sa simpl", folosind o cheie scurt" de 56 bi#i DES-ul este
totu!i posibil de a fi spart, a!a cum s-a v"zut mai nainte. Multe sisteme financiare
de pl"#i au emis deja cerin#e suplimentare pentru a se proteja mpotriva unui astfel
de pericol. Dac" se folose!te o cheie simpl" din ra#iuni de performan#" sau
economice, impactul spargerii DES-ului trebuie diminuat la o valoare redus", finit"
!i ct mai rapid !i u!or diminuabil". n practic", pericolul poate fi redus la o singur"
tranzac#ie prin folosirea unei chei unice pentru fiecare tranzac#ie. Cheile de lungime
redus" sunt de asemenea acceptate pentru tranzac#ii cu termen de existen#" mai
scurt dect timpul necesar spargerii unei chei cu aceast" lungime. n timp ce
valorile subn#elese ale tranzac#iei sunt suficient de mari, totu!i folosirea cheilor cu
lungime dubl" poate fi luat" n considerare.
Atacurile software asupra DES-ului sunt un pericol limitat, dar nepl"cut.
Nimeni nu ncearc" s" sparg" DES-ul folosind software-ul (excep#ie f"cnd cazurile
n care intervine hot"rtor factorul !ans"). Software-ul actual este att de lent, nct
din punct de vedere economic atacul prin c"utare exhaustiv" va fi imposibil pentru
anii care urmeaz". Pericolul atacului software nu este acela c" el poate avea loc, ci
c" el devine posibil. Nu se cer condi#ii hardware suplimentare !i noile genera#ii de
microprocesoare realizeaz" implement"ri software care pot avea avantajul
construirii lor n scopuri de performan#". Se poate lucra destul de repede n paralel,
ceea ce uneori duce la succes.
Procesor Viteza/nr.bi#i Cript!ri DES/secund!
8088 4.7 Mhz/8 bi#i 370
68000 7.6 Mhz/$6 bi#i 900
80286 6.0 Mhz/$6 bi#i $.$00
68020 $6 Mhz/32 bi#i 3.500
68030 $6 Mhz/32 bi#i 3.900
68030 50 Mhz/32 bi#i 9.600
IBM 3033 Mainframe $5.900
68040 25 Mhz/32 bi#i $6.000
68040 40 Mhz/32 bi#i 23.200
IBM 3090 Mainframe 32.000
Tabelul 3."3. Performan#e software n spargerea DES-ului
Software-ul DES s-a maturizat pn" la punctul c" doar unele mbun"t"#iri
minore relativ la performan#ele sale pot fi a!teptate prin recodificare. Tabelul 3.$3
prezint" o estimare a rapidit"#ii software-ului de executare a DES-ului pe diverse
calculatoare. Vitezele mai mari se ob#in prin utilizarea unor microprocesoare rapide
!i prin folosirea proces"rii paralele. De exemplu, experiment"ri recente au folosit
a!a-zi!ii timpi mor#i colectivi ai unei re#ele de 40 de sta#ii de lucru pentru a testa
234 cript"ri DES ntr-o zi. Cu seria Motorola 6800, cre!terea vitezei a fost de circa
6 ori n $0 ani. La aceast" rat", n urm"torii 2-3 ani, se vor vedea cipuri lucrnd
software DES cu o rat" de 64.000 cript"ri/secund". La sfr!itul deceniului ne putem
a!tepta s" vedem un singur cip sau mul#imi de cipuri capabile s" execute DES cu o
rat" de 256.000 cript"ri/ secund".
Un pericol !i mai mare, eventual dublat !i de !ans", poate fi imaginat dup"
cum urmeaz". S" consider"m o re#ea universitar", format" dintr-un num"r mare de
sta#ii de lucru, care opereaz" mpreun". Ele pot fi oriunde mpr"!tiate n lume,
activitatea lor putnd fi controlat" !i coordonat", eventual prin sistemul de po!t"
electronic". Presupunem c" fiecare sta#ie este capabil" s" execute cript"ri DES, nu
conteaz" prin ce metode (procesor unic de capacitate !i viteze mari, procesoare
paralele etc.). n acest caz calculele teoretice !i eventual chiar practice de baleere a
spa#iului cheilor pentru DES se fac n cu totul alte condi#ii, estimarea timpului
necesar spargerii criptosistemului poate conduce la ni!te concluzii efectiv
ngrijor"toare.
3.5. Triple DES ( DES triplu sau 3DES)
Datorit" posibilei vulnerabilit"#i a DES-ului printr-un atac de for#" brut" s-a
c"utat g"sirea unei alternative. O abordare este dezvoltarea unui algoritm complet
nou, iar alta, care nu necesit" o nou" investi#ie n software !i echipamente, ar fi cea
care folose!te o criptare multipl" a algoritmului DES folosind mai multe chei.
Tehnici de securizare a datelor !i programelor curs 5 7 8 Tehnici de securizare a datelor !i programelor curs 5
Cea mai simpl" form" a cript"rii multiple are dou" stagii de criptare
folosind dou" chei (Double DES). Din mesajul original P !i cheile K
$
,K
2
este
generat mesajul criptat C:
C = E
K2
[E
K$
[P]]
Decriptarea necesit" aplicarea cheilor n ordine invers":
P = D
K$
[D
K2
[C]]
Pentru DES aceast" tehnic" implic" aparent o cheie de 56 x 2 = $$2,
rezultnd o cre!tere dramatic" a puterii criptografice, dar acest lucru trebuie
examinat mai atent.
Presupunem c" pentru oricare pereche de chei K
$
!i K
2
se poate g"si o cheie
K
3
care s" satisfac" rela#ia:
E
K2
[E
K$
[P]] = E
K3
[P]
n acest caz o criptare dubl", sau o criptare con#innd oricte stagii de
criptare multipl" folosind algoritmul DES este inutil" deoarece rezultatul ob#inut
este echivalent cu un singur stagiu de criptare. Se poate considera criptarea cu DES
ca fiind o mapare a unui bloc de 64 bi#i ntr-un alt bloc de 64 bi#i. n fond maparea
poate fi v"zut" ca o permutare. Dac" consider"m cele 2
64
posibile blocuri de intrare,
criptarea DES cu o cheie specific" va mapa fiecare bloc de intrare ntr-un unic bloc
de 64 bi#i la ie!ire. Cu alte cuvinte dac" dou" blocuri de intrare sunt mapate n
aceea!i bloc de ie!ire decriptarea va fi imposibil". Cu 2
64
intr"ri posibile se pot
genera (2
64
)! map"ri diferite. Pe de alt" parte DES define!te o mapare pentru fiecare
cheie diferit" pentru un num"r total de map"ri (2
56
<$0
$7
). Prin urmare este rezonabil
s" admitem c" dac" DES este folosit de dou" ori cu dou" chei diferite, atunci el va
produce una din multele map"ri care nu sunt definite printr-un singur stagiu a
acestui algoritm.
Totu!i mai exist" o alt" cale de a ataca aceast" schem". Metoda nu depinde
de vreo particularitate a DES-ului fiind aplicabil" oric"rui cod bloc. Algoritmul
cunoscut sub numele meet-in-the-middle (ntlnire la mijloc) se bazeaz" pe
urm"toarea observa#ie:
C = E
K2
[E
K$
[P]]
X = E
K$
[P] = D
K2
[C]
Presupunem o pereche (P, C) cunoscut". n primul rnd se cripteaz" P cu
toate valorile posibile ale cheii K
$
, rezultatele fiind stocate ntr-un tabel ordonat
dup" valorile lui X. Apoi se decripteaz" C cu toate valorile posibile ale cheii K
2
. La
fiecare decriptare se compar" rezultatul ob#inut cu tabelul pentru a g"si o pereche
echivalent". Dac" echivalen#a este g"sit", cheile K
$
!i K
2
sunt testate din nou pe o
alt" pereche (P,C). n acest caz exist" 2
$$2
posibilit"#i. De obicei se folosesc dou"
perechi (P,C), spa#iul cheilor fiind redus la 2
56
posibilit"#i. n acest caz este posibil
ca atacul s" se termine cu succes.
O metod" de a combate atacul meet in the middle este folosirea a trei
stagii de criptare cu chei diferite, care m"re!te spa#iul cheilor la 2
$$2
posibilit"#i,
f"cnd criptanaliza impractic" chiar !i pe viitor. Acest mecanism necesit" o cheie
de 56 x 3 = $68 de bi#i. Ca o alternativ" pentru criptarea tripl", Tuchman a propus o
metod" care folose!te 2 chei. Func#ia urmeaz" o secven#" de criptare-decriptare-
criptare. Nu exist" nici o semnifica#ie criptografic" n folosirea decript"rii ca al
doilea stagiu. Singurul avantaj este acela c" utilizatorii algoritmului Triple DES pot
decripta mesaje criptate de utilizatorii algoritmului DES simplu.
C=E
K$
[D
K2
[E
K$
[P]]]
C=E
K$
[D
K$
[E
K$
[P]]]=E
K$
[P]
E E
K
1
P
K
2
C
X
Criptare
D D
K
2
C
K
1
P
X
Decriptare
(a) Criptare dubla
E D E
K
1
P
K
2
K
1
C
A B
D E D
K
1
C
K
2
K
1
P
(b) Criptare tripla
B A
Criptare
Decriptare
Figura 3.8. Criptare multipl"
Triple DES cu dou" chei este o alternativ" popular" pentru DES !i a fost
adoptat ca standard n distribu#ia cheilor. La ora actual" nu exist" vreo metod"
practic" de criptanaliz" pentru acest algoritm. Totu!i unii speciali!ti sus#in c" este
de preferat folosirea a trei chei de criptare.
C=E
K3
[D
K2
[E
K$
[P]]]
Pentru a p"stra compatibilitatea cu versiunile anterioare se poate egala
K
$
=K
2
sau K
3
=K
2
.
Numeroase aplica#ii Internet au adoptat folosirea algoritmului Triple DES
cu trei chei printre care PGP (Pretty Good Privacy) !i S/MIME (Secure Multi-
Purpose Internet Mail Extension). Pn" n prezent nu a fost raportat nici un atac
criptografic reu!it asupra algoritmului Triple DES.
2 Tehnici de securizare a datelor !i programelor curs 6
CURS NR.6
3.6. Algoritmul IDEA
Algoritmul IDEA (International Data Encryption Algorithm) este un cod
bloc simetric dezvoltat de Xuejia Lai !i James Massey de la Institutul Federal al
Tehnologiei din Elve"ia n anul #990. El este patentat n Europa !i n Statele Unite,
dar poate fi utilizat gratuit n aplica"ii necomerciale. IDEA este unul dintre
algoritmii care a fost propus pentru a nlocui DES. Acesta este unul dintre cei mai
reu!i"i algoritmi din cei propu!i (pn$ n prezent nu a fost raportat nici un atac
pentru decriptare reu!it). De exemplu IDEA este inclus n PGP (Pretty Good
Privacy) care a contribuit la r$spndirea acestuia.
3.6.1. Principii de proiectare
IDEA este un cod bloc care folose!te o cheie de #28 bi"i pentru a cripta
blocuri de date de 64 de bi"i. Detaliile de proiectare a acestui algoritm sunt
prezentate n cele ce urmeaz$:
! Lungimea blocului: Lungimea blocului trebuie s$ fie destul de
mare pentru a mpiedica analiza statistic$. Pe de alt$ parte
complexitatea implement$rii algoritmului de criptare cre!te
exponen"ial cu lungimea blocului. Folosirea unui bloc de 64 bi"i
este n general destul de puternic$.
! Lungimea cheii: Lungimea cheii trebuie s$ fie destul de mare
pentru a preveni c$utarea exhaustiv$.
! Confuzia: Leg$tura dintre mesajul original !i cheie n mesajul
criptat trebuie s$ fie ct mai complicat$. Obiectivul este de a
complica ct mai mult determinarea unor statistici din mesajul
criptat care au leg$tur$ cu mesajul original. n acest scop IDEA
folose!te trei opera"ii diferite spre deosebire de DES care se
bazeaz$ pe operatorul XOR !i pe cutiile S (S-boxes).
! Difuzia: Fiecare bit din mesajul original trebuie s$ influen"eze to"i
bi"ii mesajului criptat !i orice schimbare din cheie s$ influen"eze
orice bit din mesajul criptat. Aceast$ tehnic$ ascunde structura
statistic$ a mesajului original. Din acest punct de vedere, IDEA
este foarte eficace.
Revenind la ultimele dou$ puncte, confuzia este ob"inut$ prin trei opera"ii
diferite. Fiecare dintre aceste opera"ii este aplicat$ pe dou$ segmente de intrare de
#6 bi"i, producnd o singur$ ie!ire pe #6 bi"i. Aceste opera"ii sunt:
! XOR (sau-exclusiv) pe bi"i.
! Adunarea de ntregi modulo 2
#6
(modulo 65 536) cu intr$ri !i ie!iri
tratate ca ntregi pe #6 bi"i f$r$ semn.
! Multiplicarea de ntregi modulo 2
#6
+# (modulo 65 537) cu intr$ri !i
ie!iri tratate ca ntregi pe #6 bi"i f$r$ semn.
Tabelul 3.#4 ilustreaz$ cele trei opera"ii pe numere de 2 bi"i:
adunarea multiplicarea
sau-exclusiv
0 00 0 00 0 00 # 0# 0 00
0 00 # 0# # 0# 0 00 # 0#
0 00 2 #0 2 #0 3 ## 2 #0
0 00 3 ## 3 ## 2 #0 3 ##
# 0# 0 00 # 0# 0 00 # 0#
# 0# # 0# 2 #0 # 0# 0 00
# 0# 2 #0 3 ## 2 #0 3 ##
# 0# 3 ## 0 00 3 ## 2 #0
2 #0 0 00 2 #0 3 ## 2 #0
2 #0 # 0# 3 ## 2 #0 3 ##
2 #0 2 #0 0 00 0 00 0 00
2 #0 3 ## # 0# # 0# # 0#
3 ## 0 00 3 ## 2 #0 3 ##
3 ## # 0# 0 00 3 ## 2 #0
3 ## 2 #0 # 0# # 0# # 0#
3 ## 3 ## 2 #0 0 00 0 00
Tabelul 3.14.
Aceste opera"ii sunt incompatibile n urm$torul sens:
#. Nici o pereche din cele trei opera"ii nu sunt distributive. De exemplu:
2. Nici o pereche din cele trei opera"ii nu sunt asociative. De exemplu:
Folosirea acestor trei operatori combina"i produce o transformare complex$
a intr$rii, f$cnd criptoanaliza mult mai dificil$ dect n cazul algoritmului DES.
n IDEA difuzia este ob"inut$ printr-un bloc de algoritmi cunoscut sub
numele de structur$ multiplicativ$/adi"ional$ (multiplication addition-MA), ilustrat$
Tehnici de securizare a datelor !i programelor curs 6 3 4 Tehnici de securizare a datelor !i programelor curs 6
n figura 3.9. Aceast$ structur$ are ca intrare dou$ secven"e de #6 bi"i, derivate din
mesajul original !i dou$ subchei de #6 bi"i derivate din cheia de criptare, producnd
la ie!ire dou$ secven"e de #6 bi"i. S-a determinat c$ fiecare bit de ie!ire depinde de
to"i bi"ii deriva"i din mesajul original !i de to"i bi"ii subcheii. Aceast$ structur$
particular$ este repetat$ de opt ori n algoritm, producnd o difuzie efectiv$.
F
1
F
2
Z
5
Z
6
G
1
G
2
Figura 3.9. Structura Multiplicativ/Aditiv$ (MA)
3.6.2. Considera!ii de implementare
IDEA este facil de implementat att software ct !i hardware.
Implementarea hardware (de obicei n VLSI) este proiectat$ pentru a ob"ine o
vitez$ foarte mare, n schimb cea software este mult mai flexibil$ !i mai ieftin$.
Principii de proiectare a implement$rii software:
! Se folosesc subblocuri: algoritmul poate opera cu subblocuri de 8, #6,
32 bi"i. Dimensiunea tipic$ este de #6 bi"i.
! Se folosesc opera!ii simple: implementarea celor trei opera"ii ce
intervin n algoritmul IDEA se face pe baza opera"iilor primitive la
nivel de bit (adunare, deplasare, etc.).
Principii de proiectare a implement$rii hardware:
! Criptarea "i decriptarea sunt similare. Ele difer$ doar prin ordinea
folosirii subcheilor astfel nct acela!i dispozitiv poate fi folosit att
pentru criptare, ct !i pentru decriptare.
! Structur# modular#: algoritmul trebuie s$ aib$ o structur$ modular$
care s$ faciliteze implementarea VLSI. IDEA este construit din dou$
blocuri modulare de baz$ repetate de mai multe ori.
3.6.3. Criptarea utiliznd algoritmul IDEA
Schema bloc pentru criptarea IDEA este ilustrat$ n figura 3.#0. Ca !i n
orice schem$ de criptare, exist$ dou$ intr$ri: mesajul original !i cheia de criptare. n
acest caz, primul are lungimea de 64 bi"i, iar cheia este de #28 bi"i.
Urm$rind partea stng$ a figurii, se observ$ c$ algoritmul const$ din 8 ture
(runde) urmate de o transformare final$. Cei 64 bi"i de la intrare sunt diviza"i n 4
subblocuri de cte #6 bi"i. Fiecare tur$ are ca intrare 4 subblocuri de #6 bi"i
producnd la ie!ire tot 4 subblocuri de #6 bi"i. Aceea!i regul$ este valabil$ !i pentru
transformarea final$, diferen"a fiind doar la ie!ire unde cele 4 subblocuri sunt
concatenate pentru a forma mesajul criptat. De asemenea fiecare tur$ folose!te !ase
subchei de #6 bi"i, iar transformarea final$ doar 4 subchei, n total fiind folosite 52
subchei. n partea dreapt$ a figurii se observ$ c$ toate aceste subchei sunt generate
din cheia original$ de #28 bi"i.
Mesaj original X (64-biti)

Z
1
Z
6
Mesaj criptat Y (64-biti)
W
11
W
12
W
13
W
14

Z
7
Z
12
Tura 2
Z
49
Z
52

Transformare finala

Z
43
Z
48
Tura 8
X
1
X
2
X
3
X
4
W
21
W
22
W
23
W
24
W
71
W
72
W
73
W
74
W
81
W
82
W
83
W
84
Y
1
Y
2
Y
3
Y
4
Cheia de criptare Z (128-biti)
Z
1
Z
52

Generator Subchei
16
Tura 1
Figura 3.10. Schema bloc a algoritmului IDEA
Tehnici de securizare a datelor !i programelor curs 6 5 6 Tehnici de securizare a datelor !i programelor curs 6
3.6.4. Detaliile unei singure ture (runde)
Algoritmul folosit pentru o singur$ tur$ este prezentat n figura 3.##, care
ilustreaz$ prima tur$, restul turelor fiind identice dar cu parametri diferi"i. Se poate
observa u!or c$ IDEA deriv$ din algoritmul clasic Feistel, tura ncepnd cu o
transformare care combin$ cele patru subblocuri de la intrare cu cele patru subchei,
folosind opera"ii de adunare !i nmul"ire. Cele patru blocuri de ie!ire ale acestei
transform$ri sunt combinate n dou$ blocuri de #6 bi"i folosind operatorul XOR,
care servesc ca intrare structurii MA. Aceasta are ca intrare pe lng$ cele dou$
blocuri !i dou$ subchei producnd la ie!ire dou$ blocuri de #6 bi"i. n final cele
patru blocuri ob"inute din prima transformare sunt combinate cu cele dou$ blocuri
de ie!ire ale structurii MA, folosind operatorul XOR pentru a produce cele patru
ie!iri. Trebuie notat c$ dou$ ie!iri generate par"ial din intr$rile X
2
!i X
3
sunt
interschimbate pentru a produce al doilea !i al treilea bloc de ie!ire (W
#2
!i W
#3
).
Acest lucru spore!te amestecul bi"ilor f$cnd algoritmul mai rezistent la
criptanaliz$ diferen"ial$.

X
1
X
2
X
3
X
4
Z
1
Z
2
Z
3
Z
4
Z
6
Z
5
W
11
W
12
W
13
W
14
MA
Figura 3.11. Detaliile unei singure ture (tura #)
Al nou$lea stagiu numit transformare final$ este identic cu transformarea
efectuat$ la nceputul fiec$rei ture, diferen"a fiind doar c$ blocul al doilea !i al
treilea de la intrare sunt interschimbate naintea aplic$rii operatorilor matematici.
Acest lucru are ca efect refacerea interschimb$rii de la sfr!itul ultimei ture.
Motivul pentru care a fost introdus$ aceast$ interschimbare suplimentar$ este
folosirea aceluia!i algoritm !i pentru decriptare. Acest ultim stagiu de transformare
necesit$ doar patru subchei, spre deosebire de restul stagiilor care necesit$ !ase
subchei ca intrare.

W
81
W
82
W
83
W
84
Z
49
Z
50
Z
51
Z
52
Y
1
Y
2
Y
3
Y
4
Figura 3.12. Transformarea final$
3.6.5. Generarea subcheilor
Toate subcheile sunt generate din cheia original$ de #28 bi"i. Primele opt
subchei, notate Z
#
,Z
2
,,Z
8
, sunt extrase direct din cheie ncepnd cu Z
#
de la bi"ii
cei mai semnificativi ai cheii. Z
2
corespunde urm$torilor #6 bi"i !i a!a mai departe.
Dup$ aceasta, cheii i se aplic$ o deplasare circular$ la stnga cu 25 de pozi"ii, dup$
care se extrag nc$ opt subchei. Procedura se repet$ pn$ la extragerea celor 52 de
subchei.
Aceast$ metod$ ofer$ o tehnic$ efectiv$ de a varia bi"ii subcheilor folosite
n cele opt ture. Este de notat faptul c$ prima subcheie folosit$ n fiecare tur$
folose!te un set diferit de bi"i din cheia original$. Dac$ se noteaz$ cheia ini"ial$ cu
Z[#..#28] atunci primele chei folosite n fiecare tur$ se vor nota astfel:
Z
1
= Z [1..16] Z
25
= Z[76..91]
Z
7
= Z [94..112] Z
31
= Z[44..59]
Z
13
= Z [90..105] Z
37
= Z[34..52]
Z
19
= Z [83..98] Z
43
= Z[30..52]
Tehnici de securizare a datelor !i programelor curs 6 7 8 Tehnici de securizare a datelor !i programelor curs 6
Cei 96 bi"i folosi"i pentru subchei ntr-o tur$ sunt, cu excep"ia primei linii a
ultimei ture, neal$tura"i. Motivul acestui fenomen este c$ doar !ase subchei sunt
folosite ntr-o tur$, fiind generate opt subchei la fiecare rota"ie a chei ini"iale.
Z
1
Z
2
Z
3
Z
4
Z
5
Z
6
Z
7
Z
8
Z (128 bits)
Z
16
Z
9
Z
10
Z
11
Z
12
Z
13
Z
14
Z
15
Z
15
Z
22
Z
23
Z
24
Z
17
Z
18
Z
19
Z
20
Z
21
Z
29
Z
30
Z
31
Z
32
Z
25
Z
26
Z
27
Z
28
Z
28
Z
35
Z
36
Z
37
Z
38
Z
39
Z
40
Z
33
Z
34
Z
42
Z
43
Z
44
Z
45
Z
46
Z
47
Z
48
Z
41
Z
49
Z
50
Z
51
Z
52
Figura 3.13. Generarea subcheilor n algoritmul IDEA
3.6.6. Decriptarea IDEA
Procesul de decriptare este n esen"$ identic cu procesul de criptare.
Decriptarea este ob"inut$ folosind mesajul criptat ca intrare a structurii de criptare,
dar folosind subcheile n ordine diferit$. Subcheile de decriptare U
#
, U
2
, , U
52
deriv$ din subcheile de criptare dup$ cum se prezint$ n tabelul 3.#5.
Criptare Decriptare
T
u
r
a
$irul subcheilor Mod de ob!inere a
"irului subcheilor
pentru criptare din
cheia Z
$irul subcheilor Mod de ob!inere a
"irului subcheilor
pentru decriptare din
subcheile Zi
# Z#Z2Z3Z4Z5Z6 Z[#..96] U#U2U3U4U5U6 Z49
-#
-Z50-Z5#Z52
-#
Z47Z48
2 Z7Z8Z9Z#0Z##Z#2 Z[97..#28;26..89] U7U8U9U#0U##U#2 Z43
-#
-Z45-Z44Z46
-#
Z4#Z42
3 Z#3Z#4Z#5Z#6Z#7Z#8 Z[90..#28;#..25;5#..82] U#3U#4U#5U#6U#7U#8 Z37
-#
-Z39-Z38Z40
-#
Z35Z36
4 Z#9Z20Z2#Z22Z23Z24 Z[83..#28;#..50] U#9U20U2#U22U23U24 Z3#
-#
-Z33-Z32Z34
-#
Z29Z30
5 Z25Z26Z27Z28Z29Z30 Z[76..#28;#..43] U25U26U27U28U29U30 Z25
-#
-Z27-Z26Z28
-#
Z23Z24
6 Z3#Z32Z33Z34Z35Z36 Z[44..75;#0#..#28;#..36] U3#U32U33U34U35U36 Z#9
-#
-Z2#-Z20Z22
-#
Z#7Z#8
7 Z37Z38Z39Z40Z4#Z42 Z[37..#00;#26..#28;#..29] U37U38U39U40U4#U42 Z#3
-#
-Z#5-Z#4Z#6
-#
Z##Z#2
8 Z43Z44Z45Z46Z47Z48 Z[30..#25] U43U44U45U46U47U48 Z7
-#
-Z9-Z8Z#0
-#
Z5Z6
9 Z49Z50Z5#Z52 Z[23..86] U49U50U5#U52 Z#
-#
-Z2-Z3Z4
-#
Tabelul 3.15.
Cu Z
j
-#
s-a notat inversul multiplicativ modulo (2
#6
+#), adic$:
iar cu Z
j
s-a notat inversul aditiv modulo (2
#6
), adic$:
Transformare
W
11
W
12
W
13
W
14
I
21
I
22
I
23
I
24
I
11
I
12
I
13
I
14
Sub-criptare
W
21
W
22
W
23
W
24
X
1
X
2
X
3
X
4
T
u
r
a

2

T
u
r
a

1
W
71
W
72
W
73
W
74
I
81
I
82
I
83
I
84
W
81
W
82
W
83
W
84
T
u
r
a

8
Y
1
Y
2
Y
3
Y
4
Transformare finala
J
81
J
82
J
83
J
84
V
71
V
72 V
73
V
74
X
1
X
2
X
3
X
4
V
81
V
82
V
83
V
84
T
u
r
a

8
V
11
V
12
V
13
V
14
J
11
J
12
J
13
J
14
J
21
J
22
J
23
J
24
Y
1
Y
2
Y
3
Y
4
V
21
V
22
V
23
V
24
T
u
r
a

2
T
u
r
a

1
Z
1
,..,Z
4
Z
5
,Z
6
Z
7
,..,Z
10
U
49
,..,U
52
Z
11
,Z
12
Z
43
,..,Z
46
Z
47
,Z
48
Z
49
,..,Z
52
U
47
,U
48
U
43
,..,U
46
U
11
,U
12
U
7
,..,U
10
U
5
,U
6
U
1
,..,U
4
Transformare
Sub-criptare
Sub-criptare
Transformare
Sub-criptare
Transformare
Transformare
Transformare
Sub-criptare Sub-criptare
Transformare finala
Figura 3.14. Procesul de criptare !i decriptare IDEA
3.6.7 Exemplu de criptare cu IDEA
Date ini"iale:
! mesajul original (un bloc de 64 bi"i) - 690f 5b0d 9a26 939b
Tehnici de securizare a datelor !i programelor curs 6 9 #0 Tehnici de securizare a datelor !i programelor curs 6
! cheia (#28 bi"i) - 7ca##045 4a#a 6e57 0#a# d6d0 3977 6742
Etapele cript$rii (cele 9 ture) sunt prezentate n cele ce urmeaz$ (vor fi
avute n aten"ie figurile 3.## !i 3.#2):
Tura 1:
Intrarea: 690f 5b0d 9a26 939b
!irul subcheilor: 7ca" "045 4a"a 6e57 0"a" d6d0
Rezultatele celor "4 opera#ii intermediare (vezi fig. 3.""):
234a 6b52 e440 840f c70a ef5d 3606 2563 03"" 39"7 205b e75" 5245 bd"8
Ie$irea: 205b e75" 5245 bd"8
Tura 2:
Intrarea: 205b e75" 5245 bd"8
!irul subcheilor: 3977 6742 8a94 34dc ae03 43ad
Rezultatele celor "4 opera#ii intermediare (vezi fig. 3.""):
460a 4e93 dcd9 3995 9ad3 7706 d"3d 4843 4b2d "c6a 0d27 97f4 52f9 25ff
Ie$irea: 0d27 97f4 52f9 25ff
Tura 3:
Intrarea: 0d27 97f4 52f9 25ff
!irul subcheilor: a072 eece 84f9 4220 b95c 0687
Rezultatele celor "4 opera#ii intermediare (vezi fig. 3.""):
3320 86c2 d7f2 74"0 e4d2 f2d2 57cb 4a9d 04e4 5caf 37c4 d3"6 da6d 28bf
Ie$irea: 37c4 d3"6 da6d 28bf
Tura 4:
Intrarea: 37c4 d3"6 da6d 28bf
!irul subcheilor: 5b40 e5dd 9d09 f284 4""5 2869
Rezultatele celor "4 opera#ii intermediare (vezi fig. 3.""):
8920 b8f3 7776 69e3 fe56 d""0 7266 4376 "0c0 8326 99e0 67b6 3bd5 eac5
Ie$irea: 99e0 67b6 3bd5 eac5
Tura 5:
Intrarea: 99e0 67b6 3bd5 eac5
!irul subcheilor: 0eb6 8"cb bb3a "3e5 0882 2a50
Rezultatele celor "4 opera#ii intermediare (vezi fig. 3.""):
9c69 e98" f70f 8efb 6b66 677a b63b "db5 f5a8 abe3 69c" 02a7 4262 25"8
Ie$irea: 69c" 02a7 4262 25"8
Tura 6:
Intrarea: 69c" 02a7 4262 25"8
!irul subcheilor: d372 b80d 9776 7427 ca"" 0454
Rezultatele celor "4 opera#ii intermediare (vezi fig. 3.""):
d39a bab4 d9d8 75d4 0a42 cf60 ba4a 89aa d"75 8bbf 02ef 08ad 3"0b fe6b
Ie$irea: 02ef 08ad 3"0b fe6b
Tura 7:
Intrarea: 02ef 08ad 3"0b fe6b
!irul subcheilor: a"a6 e570 "a"d 6d03 4f94 2208
Rezultatele celor "4 opera#ii intermediare (vezi fig. 3.""):
3420 ee"d 4b28 "deb 7f08 f3f6 c"24 b5"a 04bd c5e" 309d 4f95 2bfc d80a
Ie$irea: 309d 4f95 2bfc d80a
Tura 8:
Intrarea: 309d 4f95 2bfc d80a
!irul subcheilor: a943 4dca e034 3ada 072e ece8
Rezultatele celor "4 opera#ii intermediare (vezi fig. 3.""):
3df3 9d5f 0c30 0ada 3"c3 9785 44a5 dc2a 7253 b6f8 4fa0 7e63 2ba7 bc22
Ie$irea: 4fa0 2ba7 7e63 bc22
Tura 9 (vezi figura 3.12):
Intrarea: 4fa0 2ba7 7e63 bc22
!irul subcheilor: ""52 869b 95c0 6875
Ie$irea: "bdd b242 "423 7ec7
Deci mesajul criptat va fi: #bdd b242 #423 7ec7
2 Tehnici de securizare a datelor !i programelor curs 7


CURS NR.7
3.7. Algoritmul Blowfish
Blowfish este un cod bloc simetric dezvoltat de Bruce Schneier. Algoritmul
a fost proiectat (1993) s" satisfac" urm"toarele propriet"#i:

! Rapid: Blowfish cripteaz" date pe microprocesoare de 32 bi#i la o
vitez" de 18 cicluri de ceas pe byte.
! Compact: Blowfish poate rula n mai pu#in de 5K memorie.
! Simplu: Blowfish are o structur" simplu de implementat !i u!or de
analizat
! Securitate variabil!: Lungimea cheii este variabil" !i poate ajunge
pn" la 448 bi#i. Acest lucru permite o alegere ntre vitez" mare !i
securitate puternic".

Blowfish cripteaz" blocuri de 64 bi#i avnd ca ie!ire tot blocuri de 64 bi#i.
Acest algoritm este implementat ntr-o gam" larg" de aplica#ii fiind supus unei
examin"ri minu#ioase, dar securitatea sa a r"mas de neatins.

3.7.1.Generarea subcheilor !i a cutiilor S ( S-boxes)
Blowfish folose!te o cheie ntre 32 !i 448 bi#i, cheia fiind un multiplu de
32. Cheia este folosit" pentru a genera 18 subchei de 32 bi#i !i patru cutii S de
dimensiunea 8 x 32. Spa#iul total de memorie pentru a stoca cutiile S !i cele 18
subchei este de 4168 bytes.
Cheia este stocat" ntr-un !ir notat cu K, unde elementele K
i
sunt cuvinte de
32 bi#i:
K
1
, K
2
, , K
j
1!j!14, cu
32
cheii lungimea
j "
Subcheile sunt stocate n !irul P:

P
1
, P
2
, , P
18

De asemenea sunt patru cutii S cu 256 intr"ri de 32 bi#i:
S
1.0
, S
1.1
, , S
1.255
S
2.0
, S
2.1
, , S
2.255

S
3.0
, S
3.1
, , S
3.255

S
4.0
, S
4.1
, , S
4.255

Pa!ii folosi#i pentru generarea !irului P !i a cutiilor S sunt urm"torii:
1. Se ini#ializeaz" !irul P !i apoi cele patru cutii S folosind, n ordine, bi#ii din
partea frac#ionar" a constantei #. Bi#ii cei mai din stnga a p"r#ii frac#ionare a lui
# devin P
1
!i a!a mai departe. De exemplu, n hexazecimal avem:
P
1
=243F6A88
P
2
=85A308D3

S
4.254
=578FDFE3
S
4.255
=3AC372E6
2. Se execut" un sau-exclusiv pe bi#i ntre !irurile P !i K refolosind cuvinte din !irul
K dac" este nevoie, iar rezultatul este memorat n !irul P. De exemplu, pentru o
cheie de 32 bi#i (j=1), vom avea: P
1
=P
1
$K
1
, P
2
=P
2
$K
1
... P
18
=P
18
$K
1
, iar pentru
o cheie de lungime maxim" (j=14): P
1
=P
1
$K
1
, P
2
=P
2
$K
2
... P
14
=P
14
$K
14
,
P
15
=P
15
$K
1
, ... P
18
=P
18
$K
4.

3. Se cripteaz" un bloc de 64 bi#i care con#ine numai zerouri folosind valorile
curente ale !irului P !i a cutiilor S, nlocuind P
1
!i P
2
cu ie!irea rezultat".
4. Se cripteaz" ie!irea pasului 3 folosind valorile curente ale !irului P !i a cutiilor S,
nlocuind P
3
!i P
4
cu ie!irea rezultat".
5. Se continu" procesul folosind algoritmul Blowfish pn" sunt nlocuite toate
valorile !irului P ct !i cele din cutiile S.
Un total de 521 de execu#ii ale algoritmului sunt necesare pentru a ob#ine
valorile finale a !irului P !i a cutiilor S. Din acest motiv Blowfish nu este potrivit
pentru aplica#ii n care cheia se schimb" frecvent. Pentru o execu#ie mai rapid" este
de preferat stocarea !irului P !i a cutiilor S, dect regenerarea lor la fiecare execu#ie
a algoritmului. Stocarea datelor nu este potrivit" pentru aplica#ii care nu au
suficient" memorie cum ar fi Smart-cardurile, deoarece necesit" mai mult de 4K
memorie.
3.7.2. Criptarea !i decriptarea
Blowfish folose!te dou" opera#ii de baz":
! Adunarea: adunarea cuvintelor notat" cu + !i este efectuat" modulo 2
32

! Sau exclusiv pe bi#i: Acesta este notat XOR
Mesajul original este divizat n dou" jum"t"#i de 32 bi#i notate LE
0
!i RE
0
.
Se vor folosi variabilele LE
i
!i RE
i
pentru cele dou" jum"t"#i dup" ce tura i s-a
terminat. Algoritmul poate fi definit de urm"torul pseudocod:
For I=1 to 16 do
RE
I
= (LE
I-1
)XOR(P
I
)
LE
I
= (F[RE
I
])XOR(RE
I-1
)
Next
LE
17
= (RE
16
)XOR(P
18
)
RE
17
= (LE
16
)XOR(P
17
)
Tehnici de securizare a datelor !i programelor curs 7 3 4 Tehnici de securizare a datelor !i programelor curs 7


Figura 3.15. Criptarea !i decriptarea Blowfish


Figura 3.16. Detaliile unei singure ture a algoritmului Blowfish

Rezultatul este con#inutul variabilelor LE
17
!i RE
17
. Structura func#iei F este
prezentat" n figura 3.16. Intrarea de 32 bi#i n func#ia F este divizat" n 4 bytes.
Dac" not"m ace!ti bytes cu a,b,c,d atunci func#ia F se define!te n felul urm"tor:

F [a,b,c,d] = ((S
1.a
+ S
2.b
) XOR (S
3.c
)) + S
4.d

Decriptarea ilustrat" n figura 3.14b deriv" din algoritmul de criptare. n
acest caz mesajul criptat de 64 bi#i este mp"r#it n jum"t"#ile LD
0
!i RD
0
.
Decriptarea Blowfish folose!te subcheile n ordine invers", dar spre deosebire de
al#i algoritmi bloc, decriptarea se face n aceea!i direc#ie algoritmic" ca !i criptarea.
Folosind acelea!i nota#ii ca !i pentru criptare, decriptarea poate fi definit" prin
urm"torul pseudocod:

For I=1 to 16 do
RD
I
= (LD
I-1
)XOR(P
19-I
)
LD
I
= (F[RD
I
])XOR(RD
I-1
)
Next
LD
17
= (RD
16
)XOR(P
1
)
RD
17
= (LD
16
)XOR(P
2
)
3.7.3. Propriet"#i
n acest algoritm cutiile S sunt dependente de cheie. Al#i algoritmi, ca de
exemplu RC5, sunt implementa#i ca o func#ie dintr-o rund" s" fie dependent" de
date. n algoritmul Blowfish, toate cutiile S !i subcheile sunt produse ale unor
procese de aplicare repetat" a nsu!i algoritmului Blowfish. Aceasta modific" foarte
mult bi#ii !i de aceea criptanaliza lui este att de grea.
Cea mai importanta caracteristic" a acestei metode este viteza de criptare.
n tabelul 3.16 sunt prezenta#i comparativ (n ciclii ma!ina), pe un calculator
Pentium, diferi#i algoritmi implementa#i n C, din care reiese rapiditatea metodei
Blowfish.

Algoritmul Ciclii ma!in"
pe o rund"
Num"rul rundelor Num"rul ciclurilor de
ma!in" pe un byte codificat
Blowfish 9 16 18
RC5 12 16 23
DES 18 16 45
IDEA 50 8 50
Tabelul 3.16. Compara#ii de vitez" pe un Pentium
Tehnici de securizare a datelor !i programelor curs 7 5 6 Tehnici de securizare a datelor !i programelor curs 7


Pentru a sublinia nc" o dat" puterea criptografic" a algoritmului Blowfish
se prezint" cteva motiva#ii referitoare la proiectarea algoritmului, date de autorul
s"u Bruce Schneier:
! Un atac cu for#" brut" (exhaustiv) este mult mai dificil dect
pare, deoarece procesul de generare a subcheilor ia foarte mult
timp. Un total de 522 execu#ii a algoritmului de criptare sunt
necesare pentru a testa o singur" cheie.
! Func#ia F d" algoritmului Blowfish cel mai bun efect de
avalan!" pentru o re#ea Feistel.
! Fiecare bit de intrare a func#iei F este folosit ca intrare pentru o
singur" cutie S, n contrast cu DES unde mai mul#i bi#i sunt
folosi#i ca intrare n dou" cutii S, ceea ce defavorizeaz" DES n
cazul unui atac criptanalitic diferen#ial.
! Spre deosebire de al#i algoritmi func#ia F din Blowfish nu este
dependent" de tur".
Dup" cum s-a mai precizat anterior Blowfish este practic invulnerabil n
fa#a unui atac exhaustiv datorit" lungimii variabile a cheii care poate fi pn" la 448
bi#i.
3.8. Algoritmul RC2
RC2 este un algoritm simetric de codificare realizat de Ron Rivest, !i
publicat n 1997 (ulterior lui RC5 publicat n 1994). Aceast" metod" folose!te
blocuri cu 64 de bi#i din textul original !i din textul codificat, lungimea cheii
variaz" ntre 8 !i 1024 bi#i. Algoritmul a fost realizat astfel nct s" fie u!or
implementat pe procesoare cu 64 de bi#i.
Metoda RC2 produce din cheia original" 128 de bytes (1 byte = 8 bi#i) de
subchei care sunt notate cu L[0], L[1], ..., L[127], sau dac" folosim notarea cu
cuvinte de 16 bi#i: K[0], K[1], ..., K[63].
3.8.1. Criptarea !i decriptarea
RC2 folose!te urm"toarele opera#ii primitive:
! Adunarea: Adunarea cuvintelor, notat" cu +, este n modulo 2
32
.
Opera#ia invers" la decodificare va fi notat" cu -, !i este n
modulo 2
32
.
! Sau-exclusiv pe bi"i: Aceast" opera#ie este notat" cu $.
! Complement: Opera#ie notat" cu ~.
! #i: Opera#ie notat" cu &.
! Rota"ia circular!: Rota#ia circular" a unui cuvnt x la stnga cu y
bi#i este notat" cu x<<<y. Rota#ia la dreapta este notat" cu x>>>y.
Algoritmul de codificare ncepe cu mp"r#irea intr"rii de 64 de bi#i n patru
blocuri de 16 bi#i: R[0], R[1], R[2], R[3]. La sfrsit, blocul codificat (de 64 de bi#i)
se realizeaz" prin din lipirea valorilor finale ale acestor patru blocuri R[0], R[1],
R[2], R[3]. Algoritmul are n total 18 runde de dou" tipuri:

a) Prima este de forma:
R[0] = R[0] + K[j] + (R[3] & R[2]) + ((~R[3] & R[1]);
R[0] = R[0] <<< 1;
j = j +1;
R[1] = R[1] + K[j] + (R[0] & R[3]) + ((~R[0] & R[2]);
R[1] = R[1] <<< 2;
j = j +1;
R[2] = R[2] + K[j] + (R[1] & R[0]) + ((~R[1] & R[3]);
R[2] = R[2] <<< 3;
j = j +1;
R[3] = R[3] + K[j] + (R[2] & R[1]) + ((~R[2] & R[0]);
R[3] = R[3] <<< 5;
j = j +1;
unde, K[j] este primul cuvnt subcheie care nc" nu a fost folosit. Aceast"
amestecare poate fi descris" n cuvinte n urm"torul fel: urm"toarea subcheie K[j]
este adunat" cu R[i]. Dup" aceasta R[i-1] (indexul este calculat n modulo 3), ~R[i-
1], R[i-2], R[i-3] sunt folosite pentru a crea dou" cuvinte mixte care vor fi adunate
cu R[i].

b) Acest tip de amestecare este foarte simplu:
R[0] = R[0] + K[R[3] & 63];
R[1] = R[1] + K[R[0] & 63];
R[2] = R[2] + K[R[1] & 63];
R[3] = R[3] + K[R[2] & 63];
Deci, la fiecare R[i] este adunat un cuvnt subcheie. Num"rul cuvintelor de
subcheie este 64 !i de aceea se iau n considerare numai 6 bi#i din R[i-1].
Algoritmul RC2 este definit n urm"torul fel:
1. Se ini#ializeaz" j = 0.
2. Se execut" 5 runde de tip a (j = 20).
3. Se execut" o rund" de tip b.
4. Se execut" 6 runde de tip a (j = 44).
5. Se execut" o rund" de tip b.
6. Se execut" 5 runde de tip a (j = 64).
Fiecare rund" de tip a folose!te patru subchei. n total sunt 16 runde de tip
a, deci toate subcheile sunt folosite o singur" dat". n rundele de tip b sunt folosite
subchei dependente de valoarea datelor.
Algoritmul de decodificare este realizat exact ca cel de codificare, numai c"
rularea algoritmului !i folosirea subcheilor se face n ordine invers".
2 Tehnici de securizare a datelor !i programelor curs 8
CURS NR.8
3.9. Algoritmul RC5
RC5 este un algoritm de criptare simetric dezvoltat de Ron Rivest ("994)
avnd urm#toarele caracteristici:
! Se poate implementa att hardware ct !i software: RC5 folose!te doar
instruc$iuni de baz# implementate n majoritatea microprocesoarelor.
! Rapid: Pentru a ob$ine acest lucru RC5 este un algoritm simplu orientat pe
cuvinte. Opera$iile de baz# se fac la un moment dat cu cuvinte ntregi de date.
! Adaptabil la procesoare care folosesc cuvinte de lungime diferit": Num#rul
de bi$i dintr-un cuvnt este un parametru pentru RC5.
! Num"rul de ture (runde) este variabil: Num#rul de ture este al doilea
parametru pentru RC5, utilizatorul avnd posibilitatea de a alege fie o vitez# de
criptare mare, fie o securitate mai ridicat#.
! Cheie de lungime variabil": Lungimea cheii este al treilea parametru pentru
RC5.
! Simplitate: RC5 are o structur# simpl#, u!or de implementat.
! Necesit" o cantitate redus" de memorie: Acest lucru face ca algoritmul RC5
s# fie adecvat pentru Smart-carduri !i alte dispozitive cu memorie restrns#.
! Securitate nalt": RC5 este destinat s# asigure o nalt# securitate criptografic#
cu parametrii variabili.
RC5 este de fapt o familie de algoritmi de criptare determina$i de urm#torii
parametrii:
Parametru Defini#ie Valori admise
w Dimensiunea cuvntului. RC5
cripteaz# blocuri de 2 cuvinte
"6, 32, 64
r Num#rul de ture (runde) 0, ", , 255
b Num#rul de octe$i din cheia secret# K 0, ", , 255
Tabelul 3.$7.
RC5 cripteaz# blocuri de 32, 64, "28 bi$i rezultnd blocuri de aceea!i
lungime. Lungimea cheii este ntre 0 !i 2040 bi$i. O versiune specific# de RC5 este
notat# RC5-w/r/b. De exemplu RC5-32/$2/$6 folose!te cuvinte de 32 bi$i (blocuri
de 64 bi$i), "2 ture !i o cheie de criptare de "6 octe$i ("28 bi$i). Rivest a propus ca
versiunea RC5-32/$2/$6 s# fie considerat# cea nominal#.
3.9.1. Extinderea cheii
RC5 execut# un set complex de opera$ii pentru a produce cele t subchei
avnd la baz# cheia original#. Dou# subchei sunt folosite n fiecare tur# la care se
mai adaug# nc# dou# care sunt folosite pentru o opera$ie care nu face parte din
ture. n acest caz num#rul necesar de subchei este de t = 2r +2, unde r este num#rul
de ture. Fiecare subcheie este de lungimea unui cuvnt adic# w bi$i.
Figura 3.$7. Generarea cheii RC5
Figura 3."7 ilustreaz# tehnica folosit# pentru generarea subcheilor. Acestea
sunt stocate ntr-un !ir S de forma S[0], S["], , S[t-"]. Folosind ca parametrii r !i
w la intrare !irul este ini$ializat cu o secven$# pseudoaleatoare. Cheia K[0..b-"] este
convertit# ntr-un !ir de c cuvinte cu lungimea w, notat L[0..c-"]. Pentru acest lucru
se ini$ializeaz# elementele lui L cu zero dup# care bi$ii lui L sunt nlocui$i cu cei a
lui K ncepnd din partea stng# pn# acesta se umple. Dac# b nu este un multiplu a
lui w atunci bi$ii lui L r#ma!i n plus se las# pe zero. n final se trece la amestecarea
bi$ilor, aplicat# !irurilor L !i S, la sfr!it rezultnd valorile finale a lui S.
3.9.2. Criptarea RC5
RC5 folose!te trei opera$ii de baz# !i inversele lor:
! Adunarea: Adunarea notat# + !i inversa ei sc#derea ambele efectuate modulo
2
w
! Sau-exclusiv pe bi$i notat XOR.
! Deplasarea circular# la stnga: Deplasarea circular# la stnga a cuvntului x cu
y bi$i se noteaz# x<<<y; Inversa ei este deplasarea circular# la dreapta notat# x
>>> y.
Tehnici de securizare a datelor !i programelor curs 8 3 4 Tehnici de securizare a datelor !i programelor curs 8
Figura 3.$8. Criptarea cu algoritmul RC5
Figura 3."8 ilustreaz# procesul de criptare care nu este o structur# clasic#
Feistel. Mesajul original este stocat ini$ial n doi regi!tri de lungimea w nota$i A !i
B. Se vor folosi variabilele LE
i
!i RE
i
pentru datele rezultate dup# tura i. Algoritmul
poate fi definit de urm#torul pseudocod:
LE
0
=A +S[0];
RE
0
=B +S[1];
For i=1 to r do
Lei
i
=(((LE
i-1
)XOR(RE
i-1
)<<<RE
i-1
) +S[2i];
RE
i
=(((RE
i-1
)XOR(LE
i
)<<<LE
i
) +S[2i+1];
Next
Mesajul criptat este con$inut de variabilele LE
r
!i RE
r
. Fiecare din cele r
ture const# dintr-o substitu$ie !i o permuta$ie, ambele folosind cuvinte de date !i o
substitu$ie care depinde de cheie. Este de notat simplitatea excep$ional# a
algoritmului care poate fi definit n !ase rnduri de cod. De asemenea trebuie notat
c# cei doi regi!tri sunt reactualiza$i n fiecare tur#. Astfel o tur# a RC5 este
asem#n#toare cu dou# ture de DES.
3.9.3. Decriptarea RC5
Figura 3.$9. Decriptarea cu algoritmul RC5
Decriptarea folose!te acela!i algoritm ca !i criptarea. n acest caz mesajul
criptat de lungime 2w este atribuit celor dou# variabile LD
r
!i RD
r
. Se folosesc
Tehnici de securizare a datelor !i programelor curs 8 5 6 Tehnici de securizare a datelor !i programelor curs 8
variabilele LE
i
!i RE
i
pentru a nota datele ce intr# n tura i. Algoritmul de decriptare
poate fi descris n felul urm#tor:
For i=r down to 1 do
RD
i-1
=((RD
i
S[2i+1]>>>LD
I
)XOR(LD
i
));
LD
i-1
=((LD
i
S[2I]>>>RD
i-1
)XOR(RD
i-1
));
Next
B =RD
0
S[1];
A =LD
0
S[0];
Cele mai semnificative tr#s#turi ale algoritmului RC5 sunt simplitatea
algoritmului !i folosirea rota$iilor care depinde de valoarea datelor. Aceste rota$ii
sunt singura parte nelinear# a algoritmului. Rivest crede c# datorit# rota$iilor
variabile care depind de valoarea datelor procesate de algoritm, criptanaliza liniar#
!i cea diferen$ial# devin foarte dificile. Un num#r de studii au confirmat acest lucru.
3.10. Algoritmul RC6
RC6 a fost propus n anul "998 ca !i candidat pentru Advanced Encryption
Standard (AES) de c#tre un colectiv condus de Ronald L. Rivest. De!i nu a c!tigat
competi$ia pentru AES, acest algoritm criptografic poate fi considerat ca fiind unul
de referin$#. RC6 a fost dezvoltat avnd ca baz# de plecare RC5, c#ruia i s-au adus
modific#ri n scopul cre!terii gradului de securitate !i nu n ultimul rnd al
mbun#t#$irii performan$elor.
La momentul public#rii sale, RC5 s-a impus nu numai pentru simplitatea sa
ci !i pentru faptul c# permitea analiza am#nun$it# asupra sistemului de securitate
oferit de folosirea intensiv# a datelor dependente de rota$ii. De!i nici un atac practic
asupra lui RC5 nu a fost raportat, studii de specialitate furnizeaz# informa$ii despre
atacuri teoretice interesante bazate n general pe faptul c# mul$imea de rota$ii din
RC5 nu depinde de to$i bi$i mesajului. RC6 a fost proiectat s# resping# astfel de
atacuri, !i de bun# seam#, s# resping# toate atacurile cunoscute furniznd un
algoritm compact !i credibil.
Filozofia RC5 a fost aceea de a exploata opera$iile (de exemplu rota$iile)
eficient implementate pe procesoarele moderne. RC6 continu# aceast# tendin$# !i
profit# de faptul c# multiplicarea cu ntregi pe 32 sau 64 bi$i este acum
implementat# pe majoritatea procesoarelor. Acest lucru permite algoritmului RC6
s# ruleze n mai pu$ine runde, dar cu o securitate mult sporit#.
3.10.1. Descrierea algoritmului
Ca !i RC5, RC6 este o familie n ntregime parametrizat# de algoritmi de
criptare. O versiune a lui RC6 este notat# RC6-w/r/b, unde dimensiunea cuvntului
este de w bi$i, criptarea const# ntr-un num#r de runde r, iar b denot# lungimea cheii
de criptare n bi$i. Valorile tipice ale parametrilor sunt: w=32, r=20 !i
b{"6,24,32}.
Pentru toate variantele RC6-w/r/b se opereaz# cu module de patru bi$i,
c#rora li se asociaz# urm#toarele !ase opera$ii de baz# (logaritmul n baza 2 a lui w
va fi notat cu lg w):
! a+b adunare de ntregi modulo 2
w
! a-b sc#dere de ntregi modulo 2
w
! a b sau exclusiv pentru cuvinte de w bi$i
! axb multiplicare modulo 2
w
! a<<<b rotirea la stnga a cuvntului a de w bi$i cu un num#r de bi$i egal cu
valoarea dat# de cei mai pu$in semnificativi lg w bi$i din b.
! a>>>b rotirea la dreapta a cuvntului a de w bi$i cu un num#r de bi$i egal cu
valoarea dat# de cei mai pu$in semnificativi lg w bi$i din b.
3.10.1.1 Extinderea cheii
Pentru a genera cele t=2r+4 subchei necesare cript#rii/decript#rii, RC6
execut# un set complex de opera$ii aplicate cheii originale. Fiecare subcheie este de
lungimea unui cuvnt de w bi$i. Acestea sunt stocate ntr-un !ir S de forma S[0],
S["], , S[2r+3]. Folosind ca parametrii r !i w la intrare, !irul este ini$ializat cu o
secven$# pseudoaleatoare bazat# pe constantele hexazecimale P
32
=B7E"5"63 !i
Q
32
=9E3779B9. Cheia K[0..b-"] este convertit# ntr-un !ir de c cuvinte cu lungimea
w, notat L[0], L["], ..., L[c-"]. Pentru acest lucru se ini$ializeaz# elementele lui L cu
zero dup# care bi$ii lui L sunt nlocui$i cu cei a lui K ncepnd din partea stng#
pn# acesta se umple. Dac# b nu este un multiplu a lui w atunci bi$ii lui L r#ma!i n
plus se las# pe zero. n final se trece la amestecarea bi$ilor, aplicat# !irurilor L !i S,
la sfr!it rezultnd valorile finale ale lui S.
n pseudocod, acest proces de extindere a cheii ar putea fi descris astfel:
S[ 0 ] =P
w
for i =1 to 2r +3 do
S [ i ] =S [ i 1 ] +Q
w
A =B =i =j =0
v =3 x max {c , 2r +4 }
for s =1 to v do
{
A =S [ i ] =( S [ i ] +A +B ) <<<3
B =L [ j ] =( L [ j ] +A +B ) <<<( A +B )
i =( i +1) mod ( 2r +4 )
j =( j +1 ) mod c
}
3.10.1.2.Criptarea !i decriptarea
n vederea cript#rii, RC6 utilizeaz# patru regi!trii de cte w bi$i A, B, C, D,
care con$in ini$ial mesajul original, iar n final vor con$ine mesajul criptat.
Tehnici de securizare a datelor !i programelor curs 8 7 8 Tehnici de securizare a datelor !i programelor curs 8
Figura 3.20. Criptarea RC6
Procedura de criptare este descris# prin urm#torul pseudocod:
B =B +S [ 0 ]
D =D +S [ 1 ]
for i =1 to r do
{
t =( B x ( 2B +1 ) ) <<<lg w
u =( D x ( 2D +1 ) ) <<<lg w
A =( ( A t ) <<<u ) +S [ 2i ]
C =( ( C u ) <<<t ) +S [ 2i +1 ]
( A , B , C , D ) =( B , C , D , A )
}
A =A +S [ 2r +2 ]
C =C +S [ 2r +3 ]
Decriptarea RC6 este similar#, pseudocodul fiind prezentat n cele ce
urmeaz#:
C =C - S [ 2r +3 ]
A =A - S [ 2r +2 ]
for i =r downto 1 do
{
( A , B , C , D ) =( D , A , B , C )
u =( D x ( 2D +1 ) ) <<<lg w
t = ( B x ( 2B +1 ) ) <<<lg w
C =( ( C - S [ 2i +1 ] ) >>>t ) u
A =( ( A S [ 2i ] ) >>>u ) t
}
D =D S [ 1 ]
B =B S [ 0 ]
3.10.1.3. Considera"ii de implementare. Flexibilitatea algoritmului
RC6.
A!a cum se poate observa din descrierea algoritmului RC6, acesta este
deosebit de compact. Se estimeaz# c# pentru un procesor Intel Pentium Pro, o
implementare rapid# n limbaj de asamblare a algoritmului RC6 ar necesita un cod
de sub 256 de bi$i pentru fiecare dintre sarcinile algoritmului !i anume generarea
cheii, criptarea !i decriptarea.
Spre deosebire de al$i algoritmi de criptare RC6 nu folose!te tabele de
c#utare n timpul codific#rii. Criptarea !i decriptarea n RC6 folosesc o combina$ie
de chei pe "76 de bi$i !i foarte putin# memorie adi$ional#; pentru a genera o
combina$ie de chei pe "76 de bi$i n RC6 este nevoie de ceva mai mult dect pentru
o matrice auxiliar# de aproximativ aceea!i m#rime ca !i cheia utilizatorului. n plus,
din moment ce combina$ia de chei este pe doar "76 de bi$i, este posibil#
preprocesarea !i memorarea acestor combina$ii pentru sute de chei. Deci trecerea de
la o cheie la alta necesit# doar schimbarea pointerului c#tre combina$ia necesar#,
crescnd astfel viteza.
Dup# cum s-a observat RC6 ofer# utilizatorului o mare flexibilitate n ceea
ce prive!te dimensiunea cheii de criptare, num#rul de ture !i cerin$ele pie$ei ar
putea ncuraja o extensie a RC6 la blocuri de alte dimensiuni. De o mare importan$#
ar putea fi dimensiunea de 256 de bi$i care ar avea avantajul unei dimensiuni a
cuvntului de 64 de bi$i !i performan$ele oferite de arhitectura sistemelor din noua
genera$ie.
De asemenea structura lui RC6 permite un anumit grad de paralelism ntre
rutinele de codificare !i decodificare. Cum procesoarele tind s# includ# un
paralelism intern ct mai mare, implementarea RC6 va cre!te progresiv.
RC6 este un algoritm bloc sigur, compact !i simplu. Ofer# performan$e
bune !i o flexibilitate considerabil#. Mai mult, simplitatea lui permite anali!tilor s#
cizeleze !i s# mbun#t#$easc# rapid estim#rile asupra securit#$ii sale.
2 Tehnici de securizare a datelor !i programelor curs 9
CURS NR.9
3.11. Algoritmul Serpent
Algoritmul Serpent, unul dintre candida"ii importan"i pentru Advanced
Encryption Standard (AES), a fost proiectat de c#tre Ross Anderson, Eli Biham !i
Lars Knudsen !i prezentat pentru prima dat# n 24 martie 2000. Ideea de baz# a fost
de a realiza un "algoritm de criptare pentru secolul 2$", adic# un algoritm care s# se
dovedeasc# folositor pentru foarte mult timp, oferind securitate !i fiabilitate.
Ini"ial s-a decis folosirea cutiilor S din algoritmul DES, care au fost studiate
mult timp !i ale c#ror propriet#"i erau cunoscute, ntr-o structur# optimizat# pentru
implementarea eficient# pe procesoare moderne, care s# permit# n acela!i timp
aplicarea analizei deja f#cute asupra algoritmului DES. Rezultatul proiect#rii a fost
un algoritm denumit Serpent_0 care era la fel de rapid ca DES !i mai sigur ca
Triple DES, !i care permitea folosirea unei chei pe $92 sau 256 de bi"i. Acest
proiect a fost prezentat la a 5-a conferin"# interna"ional# Fast Software Encryption
FSE-98 pentru a l#sa timp opiniei publice s#-!i spun# p#rerea. De atunci
performan"ele algoritmului au fost mbun#t#"ite, au fost selectate noi cutii S, mai
puternice, !i a fost u!or modificat modelul cheii de criptare. Noul proiect numit
Serpent rezist# tuturor tipurilor de atacuri cunoscute, inclusiv celor bazate pe
tehnici diferen"iale !i liniare.
Algoritmul de criptare Serpent a fost inspirat de ideile recente ale
implement#rii pe bit. Oricum, spre deosebire de implementarea pe bit a DES, care
cripteaz# n paralel 64 de blocuri diferite pentru a c!tiga vitez#, Serpent este
proiectat s# permit# criptarea eficient# pe bit a unui singur bloc. Aceasta permite
folosirea opera"iilor obi!nuite deci nu este nevoie de schimbarea mediului de lucru
pentru cre!terea vitezei.
nalta performan"# a algoritmului Serpent este determinat# de structura sa
care permite procesarea n paralel. Astfel se pot realiza, n acela!i timp, o
decodificare !i o criptare cu chei diferite, structura Serpent permi"nd ca acest lucru
s# se fac# foarte eficient pe un procesor cu unitate aritmetico-logic# pe 32 de bi"i
(cum ar fi cele din seria Intel MMX) !i aproape la fel de eficient pe un procesor pe
64 de bi"i (cum ar fi DEC Alpha).
3.11.1. Criptarea !i decriptarea
Serpent lucreaz# n 32 de ture folosind 4 cuvinte de 32 de bi"i (dimensiunea
blocului este de $28 de bi"i). Toate valorile folosite n algoritm sunt reprezentate ca
!iruri de bi"i. Indicii bi"ilor sunt numerota"i de la bitul 0 la 3$ ntr-un cuvnt de 32
de bi"i, de la bitul 0 la $27 ntr-un bloc de $28 de bi"i, de la 0 la 255 ntr-o cheie pe
256 de bi"i. Pentru procesarea intern# se consider# primul cuvnt ca fiind cel mai
pu"in semnificativ !i ultimul cuvnt ca fiind cel mai semnificativ, bitul 0 fiind cel
mai pu"in semnificativ bit al cuvntului 0. Extern, fiecare bloc este reprezentat ca
num#r hexazecimal pe $28 de bi"i.
Serpent cripteaz# un text simplu P pe $28 de bi"i ntr-un text cifrat C n 32
de ture sub controlul a 33 de subchei pe $28 de bi"i (K
0
,,K
32
). Lungimea cheii
utilizator este variabil# pe $28, $92 sau 256 bi"i; cheile scurte cu mai pu"in de 256
de bi"i sunt aduse la lungimea cheilor de 256 bi"i ad#ugnd un bit "$" n partea mai
semnificativ#, urmat de at"ia bi"i "0" c"i sunt necesari pentru a ajunge la 256.
Criptarea const# din urm#toarele etape:
! permutare ini"ial# IP;
! 32 de ture, fiecare constnd dintr-o opera"ie de amestecare a cheii, o
trecere prin cutiile S !i (n toate turele cu excep"ia ultimei) o
transformare liniar#. n ultima tur# transformarea liniar# este nlocuit#
printr-o opera"ie de amestecare adi"ional# a cheii;
! permutare final# FP.
Permut#rile ini"ial# !i final# nu au nici o nsemn#tate n criptare, fiind
folosite doar pentru a simplifica implementarea algoritmului !i pentru a mbun#t#"i
eficien"a prelucr#rii.
Permutarea ini"ial# IP este aplicat# unui text simplu P rezultnd B
0
care
este intrarea n prima tur#. Turele sunt notate de la 0 la 3$, prima fiind tura 0 !i
ultima 3$. Ie!irea primei ture (tura 0) este B
1
, ie!irea celei de-a doua ture (tura $)
este B
2
, ie!irea turei i este B
i+1
!i a!a mai departe pn# la ie!irea ultimei ture (n care
transformarea liniar# este nlocuit# de o amestecare adi"ional# a cheii) care va fi
B
32
. n acest moment este aplicat# permutarea final# FP !i rezult# textul cifrat C.
Fiecare tur# R
i
(i {0,,3$}) folose!te o singur# cutie S multiplicat#. De
exemplu R
0
folose!te S
0
, 32 de copii ale ei fiind aplicate n paralel. Deci prima
copie a lui S
0
ia bi"ii 0,$,2 !i 3 din B
0
K
0
ca intrare !i returneaz# la ie!ire primii
patru bi"i ai unui vector intermediar; urm#toarea copie a lui S
0
are ca intrare bi"ii 4-
7 din B
0
K
0
!i returneaz# urm#torii patru bi"i ai unui vector intermediar !i a!a mai
departe. Vectorul intermediar este apoi transformat folosind transformarea liniar#,
rezultnd B
1
. n acela!i mod, R
1
folose!te 32 de copii ale lui S
1
n paralel pe B
1
K
1
!i prelucreaz# ie!irea folosind transformarea liniar#, rezultnd B
2
. n ultima tur#
aceast# transformare liniar# este nlocuit# de o combinare adi"ional# a cheii:
B
32
:= S
7
(B
3$
K
3$
) K
32
.
Motivul principal pentru alegerea transform#rii liniare este de a minimiza
efectul de avalan!#. Cutiile S au proprietatea c# un singur bit de intrare determin#
schimbarea a doi bi"i la ie!ire. nseamn# c# modificarea unui singur bit la intrare va
provoca un num#r maxim de schimb#ri ale bi"ilor dup# 2 sau mai multe ture. Deci
fiecare bit al textului simplu influen"eaz# to"i bi"ii de date dup# trei ture. Chiar dac#
cineva ar alege cteva subchei !i ar lucra n sens invers, totu!i este garantat c#
fiecare bit al cheii influen"eaz# fiecare bit de date peste !ase ture.
Tehnici de securizare a datelor !i programelor curs 9 3 4 Tehnici de securizare a datelor !i programelor curs 9
Setul de opt cutii S este folosit de patru ori. Dup# folosirea lui S
7
n tura 7,
se folose!te din nou S
0
n tura 8, apoi S
1
n tura 9 !i a!a mai departe. Ultima tur# R
31
este pu"in diferit# de celelalte: se aplic# S
7
pe B
31
K
31
!i se face un SAU
EXCLUSIV cu K
32
. Rezultatul B
32
este apoi permutat cu FP ob"inndu-se textul
cifrat.
Deci cele 32 de ture folosesc 8 cutii S diferite, fiecare transformnd 4 bi"i
de intrare n 4 bi"i la ie!ire. Fiecare cutie S este folosit# n exact 4 ture !i n fiecare
din acestea de 32 de ori n paralel.
Ca !i n algoritmul DES, permutarea final# este inversul permut#rii ini"iale.
Algoritmul poate fi descris formal de urm#toarele rela"ii:
! B
0
:=IP(P) // intrarea n prima tur# este rezultatul permut#rii ini"iale
aplicate asupra textului original
! B
i+1
:=R
i
(B
i
) // intrare n tura i+$= ie!irea turei i
! C:=FP(B
32
) // textul codificat este rezultatul permut#rii finale aplicate
ie!irii din ultima tur#
unde: R
i
(X)=L(!
i
(XK
i
)) i=0,,30
R
i
(X)=!
i
(XK
i
)K
32
i=31
!
i
fiind S
i mod 8
aplicat de 32 de ori n paralel !i L fiind transformarea liniar#.
Cu toate c# fiecare tur# a acestui algoritm ar putea p#rea mai slab# dect o
tur# a DES, nu este cazul. De exemplu, probabilitatea g#sirii celei mai bune func"ii
liniare ntre 6 ture n cazul algoritmului DES este de 2
-20
n timp ce la Serpent este
mai pu"in de 2
-58
.
Deci Serpent este un algoritm aproximativ la fel de rapid ca DES dar mult
mai sigur dect Triple DES.
n cazul decript#rii algoritmul este acela!i n esen"#, doar c# vor fi utilizate
cutiile S inverse, inversa transform#rii liniare, precum !i subcheile n ordine
invers#.
3.11.1.1 Permutarea in"ial#
Permutarea ini"ial# (PI) are la baz# tabelul 3.$8:
0 32 64 96 $ 33 65 97 2 34 66 98 3 35 67 99
4 36 68 $00 5 37 69 $0$ 6 38 70 $02 7 39 7$ $03
8 40 72 $04 9 4$ 73 $05 $0 42 74 $06 $$ 43 75 $07
$2 44 76 $08 $3 45 77 $09 $4 46 78 $$0 $5 47 79 $$$
$6 48 80 $$2 $7 49 8$ $$3 $8 50 82 $$4 $9 5$ 83 $$5
20 52 84 $$6 2$ 53 85 $$7 22 54 86 $$8 23 55 87 $$9
24 56 88 $20 25 57 89 $2$ 26 58 90 $22 27 59 9$ $23
28 60 92 $24 29 6$ 93 $25 30 62 94 $26 3$ 63 95 $27
Tabelul 3.18. Permutarea ini"ial#
Tabelul prezentat indic# pozi"ia urm#toare (cea rezultat# n urma aplic#rii
permut#rii ini"iale) a bitului de ie!ire. Pozi"ia se num#r# de la stnga la dreapta !i de
sus n jos.
3.11.1.2 Structura unei ture
Structura unei ture este urm#toarea:
B
i+$
:=R
i
(B
i
) unde R
i
(X)=L(%
i
(XK
i
)) cu i=0,,30
Se aplic# subcheia asupra textului, dup# care se face o trecere prin cutiile S
!i o transformare liniar#. Acest lucru se ntmpl# n toate turele cu excep"ia ultimei.
n ultima tur# transformarea liniar# este nlocuit# de o combinare adi"ional#
a cheii, astfel:
B
32
:= S
7
(B
3$
K
3$
) K
32
.
3.11.1.2.1 Cutiile S
Cutiile S ale algoritmului Serpent sunt permut#ri pe 4 bi"i, generarea lor
fiind realizat# n urm#toarea manier#: se folose!te o matrice cu 32 de module
fiecare cu cte $6 intr#ri. Matricea este ini"ializat# cu cele 32 de linii ale cutiilor S
din algoritmul DES !i transformat# schimbnd intr#rile din modulul r dependent de
intr#rile modulului (r+1) !i de un !ir ini"ial reprezentnd o cheie. Dac# matricea
rezultat# are propriet#"ile dorite (diferen"iale !i liniare) se salveaz# matricea ca !i
cutie S Serpent. Se repet# procedura pn# cnd au fost generate toate cele 8 cutii S.
S# spunem c# serpent[.] este o matrice con"innd cei mai pu"in
semnificativi 4 bi"i ai !irului de $6 caractere ASCII "sboxesforserpent". Fie
sbox[.][.] o matrice de dimensiune (32x$6) con"innd cele 32 linii ale celor 8 cutii
S, unde sbox[r][.] nseamn# linia r. Urm#torul pseudocod genereaz# cutiile S
Serpent:
index:=0
repeat
currentsbox:=index modulo 32;
for i:=0 to 15 do
j:=sbox[(currentsbox+1) modulo 32][serpent[i]];
swapentries(sbox[currentsbox][i], sbox[currentsbox][j]);
if sbox[currentsbox][.] are propriet!"ile dorite, se salveaz!;
index:=index+1;
pn! cnd s-au generat 8 cutii S;
Un exemplu clasic de cutii S este prezentat n tabelul 3.$9, cutiile S inverse
fiind prezentate n tabelul 3.20.
Tehnici de securizare a datelor !i programelor curs 9 5 6 Tehnici de securizare a datelor !i programelor curs 9
S0 3 8 $5 $ $0 6 5 $$ $4 $3 4 2 7 0 9 $2
S1 $5 $2 2 7 9 0 5 $0 $ $$ $4 8 6 $3 3 4
S2 8 6 7 9 3 $2 $0 $5 $3 $ $4 4 0 $$ 5 2
S3 0 $5 $$ 8 $2 9 6 3 $3 $ 2 4 $0 7 5 $4
S4 $ $5 8 3 $2 0 $$ 6 2 5 4 $0 9 $4 7 $3
S5 $5 5 2 $$ 4 $0 9 $2 0 3 $4 8 $3 6 7 $
S6 7 2 $2 5 8 4 6 $$ $4 9 $ $5 $3 3 $0 0
S7 $ $3 $5 0 $4 8 2 $$ 7 4 $2 $0 9 3 5 6
Tabelul 3.19. Cutiile S (de la S
0
la S
7
)
InvS0 $3 3 $$ 0 $0 6 5 $2 $ $4 4 7 $5 9 8 2
InvS1 5 8 2 $4 $5 6 $2 3 $$ 4 7 9 $ $3 $0 0
InvS2 $2 9 $5 4 $$ $4 $ 2 0 3 6 $3 5 8 $0 7
InvS3 0 9 $0 7 $$ $4 6 $3 3 5 $2 2 4 8 $5 $
InvS4 5 0 8 3 $0 9 7 $4 2 $2 $$ 6 4 $5 $3 $
InvS5 8 $5 2 9 4 $ $3 $4 $$ 6 5 3 7 $2 $0 0
InvS6 $5 $0 $ $3 5 3 6 0 4 9 $4 7 2 $2 8 $$
InvS7 3 0 6 $3 9 $4 $5 8 5 $2 $$ 7 $0 $ 4 2
Tabelul 3.20. Cutiile S inverse folosite pentru decodificare (de la InvS0 la InvS7)
3.11.1.2.2 Generarea cheii
Generarea cheii se poate face n mod standard sau pe bit. n cele ce
urmeaz# se descrie al doilea mod.
Acest algoritm necesit# $32 de cuvinte pe 32 bi"i pentru construirea cheii.
Ini"ial cheile scurte cu mai pu"in de 256 bi"i sunt aduse la lungimea cheilor de 256
bi"i ad#ugnd un bit "$" n partea mai semnificativ#, urmat de at"ia bi"i "0" c"i
sunt necesari pentru a ajunge la 256. Apoi se extinde aceast# cheie la 33 de subchei
pe $28 de bi"i K
0
,,K
32
, n modul urm#tor:
Scriem cheia K ca 8 cuvinte pe 32 de bi"i w
-8
,,w
-1
!i le extindem ntr-o
cheie intermediar# w
0
,,w
31
dup# urm#toarea rela"ie recurent#:
w
i
:= (w
i-8
w
i-5
w
i-3
w
i-1
" i)<<<11
unde " este partea frac"ionar# a raportului ( ) 2 / $ 5 + . Subcheile turelor sunt acum
calculate din cheia intermediar# folosind cutiile S n modul bit cu bit. Folosim
cutiile S pentru a transforma cheia intermediar# w
i
n cuvinte k
i
ale cheii turei astfel:
{k
0
, k
1
, k
2
, k
3
}:= S
3
(w
0
, w
1
, w
2
, w
3
)
{k
4
, k
5
, k
6
, k
7
}:= S
2
(w
4
, w
5
, w
6
, w
7
)
{k
8
, k
9
, k
10
, k
11
}:= S
1
(w
8
, w
9
, w
10
, w
11
)
{k
12
, k
13
, k
14
, k
15
}:= S
0
(w
12
, w
13
, w
14
, w
15
)
{k
16
, k
17
, k
18
, k
19
}:= S
7
(w
16
, w
17
, w
18
, w
19
)

{k
124
, k
125
, k
126
, k
127
}:= S
4
(w
124
, w
125
, w
126
, w
127
)
{k
128
, k
129
, k
130
, k
131
}:= S
3
(w
128
, w
129
, w
130
, w
131
)
Apoi reordon#m valorile pe 32 de bi"i k
j
ca subchei provizorii pe $28 de bi"i
K
i
(cu i{0,r}) dup# cum urmeaz#:
K
i
:= {k
4i
, k
4i+1
, k
4i+2
, k
4i+3
}
Dac# se implementeaz# algoritmul n forma ini"ial#, atunci n acest
moment, pentru a ob"ine subcheile K
i
din cele provizorii K
i
trebuie aplicat#
permutarea ini"ial# IP cheii turei pentru a plasa bi"ii cheii n coloana corect#:
K
i
=IP(K
i
)
3.11.1.2.3 Transformarea liniar#
Cei 32 de bi"i din fiecare cuvnt de ie!ire al cutiilor S sunt combina"i liniar:
X
0
, X
$
, X
2
, X
3
:= S
i
(B
i
K
i
)
X
0
:= X
0
<<<$3
X
2
:= X
2
<<<3
X
$
:= X
$
X
0
X
2
X
3
:= X
3
X
2
(X
0
<<3)
X
$
:= X
$
<<<$
X
3
:= X
3
<<<7
X
0
:= X
0
X
$
X
3
X
2
:= X
2
X
3
(X
$
<<7)
X
0
:= X
0
<<<5
X
2
:= X
2
<<<22
B
i+1
:=X
0
, X
$
, X
2
, X
3
unde <<< nseamn# rotire la stnga (de ex. <<< 3 = rotire la stnga cu 3 pozi"ii) !i
<< deplasare la stnga (de ex. << 3= deplasare la stnga cu 3 pozi"ii).
3.11.1.3 Permutarea final#
Permutarea final# (FP) este inversa permut#rii ini"iale, n tabelul urm#tor fiind date
pozi"iile finale ale bi"ilor procesa"i:
0 4 8 $2 $6 20 24 28 32 36 40 44 48 52 56 60
64 68 72 76 80 84 88 92 96 $00 $04 $08 $$2 $$6 $20 $24
$ 5 9 $3 $7 2$ 25 29 33 37 4$ 45 49 53 57 6$
65 69 73 77 8$ 85 89 93 97 $0$ $05 $09 $$3 $$7 $2$ $25
2 6 $0 $4 $8 22 26 30 34 38 42 46 50 54 58 62
66 70 74 78 82 86 90 94 98 $02 $06 $$0 $$4 $$8 $22 $26
3 7 $$ $5 $9 23 27 3$ 35 39 43 47 5$ 55 59 63
67 7$ 75 79 83 87 9$ 95 99 $03 $07 $$$ $$5 $$9 $23 $27
Tabelul 3.21. Permutarea final#
Tehnici de securizare a datelor !i programelor curs 9 7 8 Tehnici de securizare a datelor !i programelor curs 9
3.11.2. Considera"ii de implementare
Implementarea se face pe bit. Ideea de baz# este c# a!a cum se poate folosi
un procesor pe un bit pentru a implementa un algoritm ca DES f#cnd o descriere
hardware a sa !i folosind o serie de instruc"iuni logice pentru a genera fiecare
poart#, la fel se poate folosi un procesor pe 32 de bi"i pentru a prelucra 32 de
blocuri DES diferite n paralel. Aceast# implementare este mult mai eficient# dect
cea conven"ional#, n care un procesor pe 32 bi"i era mai mult blocat executnd
opera"ii pe 6, 4 sau chiar pe un bit.
n continuare se prezint# o descriere a algoritmului Serpent pentru
implementarea pe bit. Algoritmul de codificare const# din 32 de ture, textul simplu
devenind prima dat# text intermediar B
0
=P dup# ce au fost aplicate cele 32 de ture,
fiecare tur# i{0,,31} costnd din trei opera"ii:
$. Mixarea cheii: n fiecare tur#, o subcheie pe $28 de bi"i este aplicat# datei
intermediare curente B
i
2. Cutiile S: Combina"ia pe $28 de bi"i a intr#rii !i cheii este considerat# ca patru
cuvinte pe 32 de bi"i. Cutia S, care este implementat# ca o secven"# de opera"ii
logice (a!a cum trebuie s# fie n hardware), este aplicat# acestor patru cuvinte
ob"inndu-se ca rezultat o ie!ire de patru cuvinte. Unitatea centrala de
prelucrare trebuie deci s# prelucreze cele 32 de copii ale cutiei S simultan,
rezultnd S
i
(B
i
K
i
).
3. Transformarea liniar#.
3.11.3. Securitatea
A!a cum s-a men"ionat versiunea ini"ial# a Serpent folosea cutiile S din
algoritmul DES. Estim#rile au indicat c# num#rul de texte simple (combina"ii de
litere) necesare pentru orice tip de atac ar fi mult peste 2
$00
. Studiind felul n care
aceste cutii S lucreaz# n structura Serpent s-a ajuns la concluzia c# erau u!or de
g#sit cutii S care s# mbun#t#"easc# estimarea la 2
256
!i dorin"a de a oferi cel mai
bun algoritm a dus la modificarea acestor cutii S n cele prezentate anterior. Un alt
motiv pentru acest# schimbare a fost faptul c# folosind 8 cutii S n loc de 32 se
reduce num#rul por"ilor logice ceea ce conteaz# pentru o implementare hardware
performant# !i reduce semnificativ dimensiunea codului pentru implementarea
compact# folosit# la smart card-urile cu cost redus.
Printr-o estimare de 2
256
se n"elege c# un atac diferen"ial sau liniar
mpotriva oric#rei chei ar cere acest num#r de texte, presupunnd c# ele ar fi
disponibile. Aceast# concluzie se trage din procesarea probabilit#"ilor relevante
asupra tuturor cheilor. Exist# desigur diferen"e de probabilitate mai mari pentru
cheile fixe, n aceste cazuri pot apare diferen"e de 2
-$20
!i acestea ar putea fi teoretic
g#site prin c#utare exhaustiv#. Asemenea diferen"e se pot g#si !i la al"i algoritmi,
din moment ce numai blocul de $28 de bi"i necesar influen"eaz# probabilitatea lor.
n plus, dac# este selectat# o cheie pe $28 sau $92 de bi"i atunci costurile teoretice
ale c#ut#rii cheii ar fi reduse.
Concluzia analizei este c# nu exist# nici o indica"ie a vreunui tip de atac
rapid posibil !i se crede c# un astfel de atac ar necesita o nou# baz# teoretic#.
2 Tehnici de securizare a datelor !i programelor curs "0
CURS NR.10
3.12. AES (Advanced Encryption Standard)
n data de 2 ianuarie "997, Institutul Na#ional pentru Standarde !i
Tehnologii (NIST) al SUA a anun#at ini#ierea procesului de dezvoltare a unui nou
standard criptografic (AES Advanced Encryption Standard) care s$ nlocuiasc$
clasicul DES. Acest nou algoritm trebuia s$ fie disponibil tuturor doritorilor !i s$
cripteze blocuri de date de minimum "28 bi#i, iar cheia de criptare s$ poat$ avea
dimensiuni de "28, "92 !i 256 bi#i.
n august "998, NIST anun#$ c$ un grup de "5 algoritmi au r$mas n
competi#ie, num$rul lor fiind mai apoi diminuat la 5 (MARS, RC6, Rijndael,
Serpent !i Twofish) n aprilie "999.
n cele din urm$ (2 octombrie 2000) a fost selectat drept c!tig$tor
algoritmul Rijndael propus de c$tre Joan Daemen !i Vincent Rijmen (Belgia).
Acest algoritm devine astfel noul standard AES.
AES se remarc$ prin simplitate !i prin performan#e criptografice ridicate,
fiind u!or de implementat att software ct !i hardware.
3.12.1. Prezentarea algoritmului AES
3.12.1.1. Nota!ii
Algoritmul AES codific$ blocuri de date de "28 bi#i. Not$m num$rul de
cuvinte pe 32 bi#i ale blocului de date Nb=4;
Lungimea cheii K poate fi de "28, "92 sau 256 bi#i, aceast$ lungime fiind
exprimat$ prin Nk= 4, 6 sau 8, adic$ num$rul de cuvinte de 32 bi#i ai cheii.
Tabelul 3.22 prezint$ variantele posibile de implementare ale AES,
mpreun$ cu num$rul de runde efectuat n procesul de criptare.
Variant$ AES Nk Nb num$r de runde
AES-"28 4 4 "0
AES-"92 6 4 "2
AES-256 8 4 "4
Tabelul 3.22. Variante de implementare AES
Att blocul de date de intrare (in) ct !i cel de ie!ire (out), ambele pe "28
bi#i sunt reprezentate ca tablouri n care octe#ii sunt completa#i pe coloan$ (figura
3.2"). Analog este format !i un tablou de calcul numit tablou de stare.
octe!ii intr"rii octe!ii st"rii octe!ii ie#irii
in
0
in
4
in
8
in
"2
s
0,0
s
0,"
s
0,2
s
0,3
out
0
out
4
out
8
out
"2
in
"
in
5
in
9
in
"3
s
",0
s
","
s
",2
s
",3
out
"
out
5
out
9
out
"3
in
2
in
6
in
"0
in
"4
s
2,0
s
2,"
s
2,2
s
2,3
out
2
out
6
out
"0
out
"4
in
3
in
7
in
""
in
"5
!
s
3,0
s
3,"
s
3,2
s
3,3
!
out
3
out
7
out
""
out
"5
Figura 3.21. Tablourile intr$rii, st$rii !i ie!irii
Att pentru criptare ct si pentru decriptare, algoritmul AES utilizeaz$ un
num$r precizat de runde ce con#in 4 tipuri de transform$ri realizate pe octet:
" substitu#ie, utiliznd cutii S;
" rota#ia aplicat$ asupra liniilor tabloului de stare;
" combinarea datelor din fiecare coloan$ a st$rii;
" adunarea unei subchei dependente de rund$.
3.12.1.2. Criptarea AES
Criptarea se desf$!oar$ conform pseudocodului prezentat n figura 3.22.
Cipher (byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])
begin
byte state[4,Nb]
state =in
AddRoundKey(state,w) // vezi 3.12.1.2.4
for round =1 step 1 to Nr-1
SubBytes(state) // vezi 3.12.1.2.1
ShiftRows(state) // vezi 3.12.1.2.2
MixColumns(state) // vezi 3.12.1.2.3
AddRoundKey(state,w+round*Nb)
end for
SubBytes(state)
ShiftRows(state)
AddRoundKey(state,w+Nr*Nb)
out =state
end
Figura 3.22. Pseudocodul cript$rii AES
Algoritmul demareaz$ prin copierea intr$rii (in) n tabloul st$rii (state).
Dup$ o prim$ adunare a subcheii, urmeaz$ transform$rile caracteristice rundelor cu
specificarea c$ ultima rund$ (cea situat$ imediat dup$ ncheierea buclei for) este
diferit$ prin faptul c$ nu include transformarea MixColumns( ). n final, tabloul
st$rii (state) este copiat n cel al ie!irii (out). Transform$rile ce intervin
(SubBytes(), ShiftRows( ), MixColumns( ) !i AddRoundKey( )) !i care ac#ioneaz$
asupra tabloului de stare (state) sunt descrise n paragrafele urm$toare.
Tehnici de securizare a datelor !i programelor curs "0 3 4 Tehnici de securizare a datelor !i programelor curs "0
Mai trebuie men#ionat faptul c$ !irul w[ ] (vezi figura 3.22), con#ine
subcheile generate de c$tre generatorul de subchei prezentat n paragraful 3."2.".3.
3.12.1.2.1. Transformarea SubBytes( )
Aceast$ transformare realizeaz$ o mapare a tabloului de stare actual n cel
de stare viitor (figura 3.23) utiliznd o cutie S specific$ (figura 3.24).
Figura 3.23. Maparea realizat$ de SubBytes( )
Figura 3.24. Descrierea substitu#iei octetului xy (in hexazecimal) utiliznd
cutia S
Pentru a ar$ta modul n care se desf$!oar$ aceast$ transformare neliniar$,
s$ consider$m spre exemplificare c$ s
","
={5e}. Atunci x=5 !i y=e, iar rezultatul
ob#inut va fi s
","
={58}.
3.12.1.2.2. Transformarea ShiftRows( )
n aceast$ transformare, octe#ii din liniile tabloului de stare sunt roti#i spre
stnga astfel: cu 0 octe#i pentru linia ", cu " octet pentru linia 2, cu 2 octe#i pentru
linia 3 !i respectiv cu 3 octe#i pentru linia 4, dup$ cum se observ$ n figura 3.25.
Figura 3.25. Transformarea ShiftRows( )
3.12.1.2.3. Transformarea MixColumns( )
Aceast$ transformare opereaz$ asupra tabloului de stare n modul coloan$-
cu-coloan$ (figura 3.26) !i poate fi descris$ printr-o scriere matricial$ astfel:

c
c
c
c
c
c
c
c
s
s
s
s
s
s
s
s
, 3
, 2
, "
, 0
, 3
, 2
, "
, 0
02 0" 0" 03
03 02 0" 0"
0" 03 02 0"
0" 0" 03 02
'
'
'
'
pentru 0 c < Nb,
sau, pe componente, astfel:

c c c c c
s s s s s
, 3 , 2 , " , 0 , 0
) } 03 ({ ) } 02 ({ ' =
c c c c c
s s s s s
, 3 , 2 , " , 0 , "
) } 03 ({ ) } 02 ({ ' =
) } 03 ({ ) } 02 ({ '
, 3 , 2 , " , 0 , 2 c c c c c
s s s s s =
) } 02 ({ ) } 03 ({ '
, 3 , 2 , " , 0 , 3 c c c c c
s s s s s =
Figura 3.26. MixColumns( ) opereaz$ pe coloane
Tehnici de securizare a datelor !i programelor curs "0 5 6 Tehnici de securizare a datelor !i programelor curs "0
3.12.1.2.4. Transformarea AddRoundKey( )
Prin aceast$ transformare, coloanelor tabloului de stare actual li se aplic$ o
opera#ie sau-exclusiv cu o subcheie dependent$ de rund$ (figura 3.27), rezultnd
tabloul de stare viitor:
] [ ] , , , [ ] ' , ' , ' , ' [
* , 3 , 2 , " , 0 , 3 , 2 , " , 0 c Nb round c c c c c c c c
w s s s s s s s s
+
= pentru 0 c < Nb,
unde [w
i
] reprezint$ o subcheie din !irul w[ ] al subcheilor, iar round este num$rul
rundei actuale, cu 0 round < Nr.
Figura 3.27. Transformarea AddRoundKey( )
3.12.1.3. Generarea subcheilor
Algoritmul AES utilizeaz$ cheia K pentru a genera subcheile printr-o
procedur$ specific$ (figura 3.28), care genereaz$ un total de Nb(Nr+") cuvinte pe
32 bi#i. Rezultatul acestei proceduri este un !ir de cuvinte [w
i
] pe 32 bi#i, cu 0 i <
Nb(Nr+").
KeyExpansion(byte key[4 * Nk], word w[Nb * (Nr +1)], Nk)
begin
i=0
while (i <Nk)
w[i] =word[key[4*i],key[4*i+1],key[4*i+2],key[4*i+3]]
i =i +1
end while
i =Nk
while (i <Nb * (Nr +1))
word temp =w[i - 1]
if (i mod Nk =0)
temp =SubWord(RotWord(temp)) xor Rcon[i / Nk]
else if (Nk =8 and i mod Nk =4)
temp =SubWord(temp)
end if
w[i] =w[i - Nk] xor temp
i =i +1
end while
end
Figura 3.28. Pseudocodul pentru generarea subcheilor
SubWord( ) este o func#ie care mapeaz$ un cuvnt de 32 bi#i (4 octe#i) ntr-
un cuvnt de aceia!i lungime prin aplicarea cutiei S (figura 3.24) exact ca n cazul
func#iei SubBytes( ).
RotWord( ) este o func#ie care realizeaz$ o permutare ciclic$ asupra unui
cuvnt de intrare [a
0
,a
"
,a
2
,a
3
], rezultnd un cuvnt [a
"
,a
2
,a
3
,a
0
].
Rcon[i] este un vector de forma [{02}
i-"
,{00},{00},{00}] cu i lund valori
ncepnd cu " !i nu cu 0.
Examinnd figura 3.28, se observ$ c$ primele Nk cuvinte ale cheii extinse
sunt practic identice cu cheia original$ K. Toate cuvintele urm$toare w[i] sunt
ob#inute prin aplicarea unei opera#ii sau-exclusiv ntre precedentul cuvnt w[i-"] !i
cuvntul w[i-Nk]. Pentru cuvinte aflate n pozi#ii multiplu de Nk, nainte de
aplicarea opera#iei sau-exclusiv asupra w[i-"] se aplic$ o transformare suplimentar$
de tipul: SubWord(RotWord( ) ) XOR Rcon[i].
3.12.1.4. Decriptarea AES
Decriptarea se desf$!oar$ conform pseudocodului prezentat n figura 3.29.
InvCipher(byte in[4 * Nb], byte out[4 * Nb], word w[Nb * (Nr +1)])
begin
byte state[4,Nb]
state =in
AddRoundKey(state, w +Nr * Nb) // vezi 3.12.1.2.4
for round =Nr - 1 step -1 to 1
InvShiftRows(state) // vezi 3.12.1.4.1
InvSubBytes(state) // vezi 3.12.1.4.2
AddRoundKey(state, w +round * Nb)
InvMixColumns(state) // vezi 3.12.1.4.3
end for
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w)
out =state
end
Figura 3.29. Pseudocodul decript$rii AES
Algoritmul este foarte asem$n$tor cu cel de criptare (figura 3.22), cu
particularitatea c$ func#iile SubBytes( ), ShiftRows( ), MixColumns( ) sunt
nlocuite cu func#iile InvSubBytes( ), InvShiftRows( ), InvMixColumns( ). Aceste
noi func#ii sunt prezentate n paragrafele urm$toare.
Tehnici de securizare a datelor !i programelor curs "0 7 8 Tehnici de securizare a datelor !i programelor curs "0
3.12.1.4.1. Transformarea InvShiftRows( )
Figura 3.30. Transformarea InvShiftRows( )
n aceast$ transformare (inversa transform$rii ShiftRows( )), octe#ii din
liniile tabloului de stare sunt roti#i spre dreapta astfel: cu 0 octe#i pentru linia ", cu "
octet pentru linia 2, cu 2 octe#i pentru linia 3 !i respectiv cu 3 octe#i pentru linia 4,
dup$ cum se observ$ n figura 3.30.
3.12.1.4.2. Transformarea InvSubBytes( )
Aceast$ transformare (inversa transform$rii SubBytes( )) realizeaz$ o
mapare a tabloului de stare actual n cel de stare viitor (figura 3.3") utiliznd o cutie
S specific$ (figura 3.32).
Figura 3.31. Maparea realizat$ de InvSubBytes( )
Figura 3.32. Descrierea substitu#iei octetului xy (in hexazecimal) utiliznd cutia
invers$ S
Pentru a ar$ta modul n care se desf$!oar$ aceast$ transformare neliniar$,
s$ consider$m spre exemplificare c$ s
","
={5e}. Atunci x=5 !i y=e, iar rezultatul
ob#inut va fi s
","
={9d}.
3.12.1.4.3. Transformarea InvMixColumns( )
Aceast$ transformare (inversa transform$rii MixColumns( )) opereaz$
asupra tabloului de stare n modul coloan$-cu-coloan$ (analog cu figura 3.26) !i
poate fi descris$ printr-o scriere matricial$ astfel:

c
c
c
c
c
c
c
c
s
s
s
s
e d b
b e d
d b e
d b e
s
s
s
s
, 3
, 2
, "
, 0
, 3
, 2
, "
, 0
0 09 0 0
0 0 09 0
0 0 0 09
09 0 0 0
'
'
'
'
pentru 0 c < Nb,
sau, pe componente, astfel:
) } 09 ({ ) } 0 ({ ) } 0 ({ ) } 0 ({ '
, 3 , 2 , " , 0 , 0 c c c c c
s s d s b s e s =
) } 0 ({ ) } 0 ({ ) } 0 ({ ) } 09 ({ '
, 3 , 2 , " , 0 , " c c c c c
s d s b s e s s =
) } 0 ({ ) } 0 ({ ) } 09 ({ ) } 0 ({ '
, 3 , 2 , " , 0 , 2 c c c c c
s b s e s s d s =
) } 0 ({ ) } 09 ({ ) } 0 ({ ) } 0 ({ '
, 3 , 2 , " , 0 , 3 c c c c c
s e s s d s b s =
2 Tehnici de securizare a datelor !i programelor curs ""
CURS NR.11
4. Algoritmi de criptare cu chei publice
Dezvoltarea metodelor de criptare cu chei publice este cea mai mare !i
poate singura revolu#ie adev$rat$ din istoria criptografiei. De la nceputurile sale !i
pn$ nu demult, criptografia se baza pe opera#ii elementare de substitu#ie !i
permuta#ie. Dup$ folosirea acestor algoritmi mai mult de un mileniu, s-au inventat
ma!inile rotative, care au fost un pas important n istoria criptografiei. Odat$ cu
apari#ia calculatoarelor s-au dezvoltat algoritmi mult mai complec!i, cel mai
proeminent fiind DES, culminnd cu algoritmul AES. Cu toate c$ ma!inile rotative
!i DES au fost un progres imens n istoria criptografiei, ele folosesc doar opera#ii
simple de substitu#ie !i permutare.
Criptografia cu chei publice se ndep$rteaz$ radical de tot ceea ce a fost
nainte. Algoritmii cu chei publice sunt baza#i pe func#ii matematice, spre deosebire
de cei conven#ionali care sunt baza#i pe substitu#ie !i permuta#ie. Un alt aspect
important al cript$rii cu chei publice este criptarea asimetric$, care implic$
folosirea a dou$ chei separate pentru criptare !i decriptare, n contrast cu criptarea
conven#ional$ care folose!te aceea!i cheie att pentru criptare ct !i pentru
decriptare. Folosirea a dou$ chei are repercusiuni majore n mai multe domenii cum
ar fi: confiden#ialitatea, distribu#ia cheilor, autentificare.
4.1. Principiile cript!rii cu chei publice
Conceptul cript$rii cu chei publice a evoluat din ncercarea rezolv$rii a
dou$ din cele mai semnificative probleme asociate cu criptografia conven#ional$.
Prima dintre acestea este distribu#ia cheilor, adic$ sursa mesajului trebuie s$
transmit$ cheia destinatarului, lucru ce ridic$ mari probleme deoarece aceasta nu
poate fi criptat$ !i poate fi interceptat$ de oponent. Cheia se mai poate distribui
printr-un centru de distribu#ie a cheilor de criptare (KDC - Key Distribution
Center), dar nici acesta nu rezolv$ total problema. Whitfield Diffie !i Martin
Hellman au afirmat c$ folosirea centrelor de distribu#ie a cheilor suprim$ dreptul la
confiden#ialitate al utilizatorilor, ace!tia fiind nevoi#i s$ transmit$ cheile de criptare
centrului de distribu#ie, care poate fi compromis printr-un atac, cheile de criptare
intrnd astfel n posesia atacatorului.
A doua problem$ care !i-a pus-o W. Diffie este aceea a semn$turilor
digitale. Odat$ cu r$spndirea pe scar$ larg$ a criptografiei, a ap$rut nevoia
semn$rii documentelor electronice, semn$turi care trebuie s$ fie echivalente cu cele
de pe un document de hrtie. Acest lucru nseamn$ c$ destinatarul mesajului poate
determina dac$ acesta este trimis de persoana care se pretinde a fi. Totu!i
semn$turile digitale nu se rezum$ doar la att, avnd o r$spndire larg$ n comer#ul
electronic.
4.1.1. Sistemele criptografice cu chei publice
Figura 4.1. Modelul simplificat al criptarii cu chei publice
Algoritmii cu chei publice folosesc o cheie pentru criptare !i o alt$ cheie
pentru decriptare. Ace!ti algoritmi au urm$toarea caracteristic$ major$:
! Imposibilitatea de a determina cheia de decriptare numai pe baza
algoritmului !i a cheii de criptare.
n plus unii algoritmi, cum ar fi RSA, au !i urm$toarea caracteristic$:
! Se pot folosi ambele chei pentru criptare, dar numai una pentru
decriptare.
Tehnici de securizare a datelor !i programelor curs "" 3 4 Tehnici de securizare a datelor !i programelor curs ""
Figura 4." ilustreaz$ procesul de criptare cu chei publice. Pa!ii esen#iali
sunt urm$torii:
". Cele dou$ p$r#i care doresc s$ comunice trebuie s$ genereze cte o
pereche de chei, pentru a fi folosite la criptarea !i decriptarea
mesajelor.
2. Fiecare parte public$ cheia de criptare ntr-o list$ public$ (aflat$ la
dispozi#ia ter#ilor) sau ntr-un fi!ier. Aceasta este cheia public$.
Perechea ei se p$streaz$ secret$.
3. Dac$ A dore!te s$-i transmit$ un mesaj lui B, el cripteaz$ mesajul
folosind cheia public$ a lui B.
4. Cnd B recep#ioneaz$ mesajul, acesta l decripteaz$ folosind cheia sa
privat$. Nici un alt utilizator nu poate decripta mesajul, deoarece doar
B cunoa!te cheia privat$.
Cu aceast$ abordare to#i participan#ii au acces la cheile publice, iar cheile
private se genereaz$ local de fiecare sistem, f$r$ nevoia de a fi distribuite. Att timp
ct un sistem !i controleaz$ cheia privat$ mesajele trimise c$tre acest sistem sunt n
siguran#$. Un sistem !i poate schimba oricnd cheia privat$, dup$ care trebuie s$
publice cheia public$ asociat$ acesteia, pentru a o schimba pe cea veche.
mesajului
Sursa
Criptanalist
perechii de
Sursa
Destinatie
X X
^
Y
KRb
KUb
de criptare
Algoritm
de decriptare
Algorithm
KRb
^
X
Sursa A Destinatia B
chei
Figura 4.2. Criptosistem cu chei publice: confiden#ialitate
n continuare se vor descrie mai am$nun#it elementele cript$rii cu chei
publice, care sunt prezentate n figura 4.2. O surs$ A dore!te s$ transmit$ un mesaj
X=[X
"
,X
2
,,X
M
] c$tre destina#ia B. Cele M elemente ale lui X sunt litere dintr-un
alfabet finit. n acest caz B genereaz$ perechea de chei, una public$ KU
b
!i una
privat$ KR
b
, care este cunoscut$ numai de c$tre B. Dup$ generarea cheilor, cheia
public$ se transmite pentru a fi accesibil$ lui A.
Mesajul X !i cheia de criptare KU
b
procesate de algoritm formeaz$ mesajul
criptat Y = [Y
"
, Y
2
, , Y
N
].
Y = E
KUb
(X)
Destinatarul, aflat n posesia cheii private poate inversa transformarea:
X = D
KRb
(Y)
Un oponent care intercepteaz$ Y !i are acces la cheia KU
b
, dar nu are acces
la KR
b
, poate ncerca s$ refac$ X !i/sau KR
b
. Se presupune c$ oponentul cunoa!te
algoritmul de criptare E !i cel de decriptare D. Dac$ oponentul este interesat numai
de un singur mesaj, atunci el !i va concentra eforturile pentru a descoperi X, dar n
general oponentul este interesat nu numai de con#inutul mesajului, ci !i de
posibilitatea decript$rii mesajelor pe viitor. n acest ultim caz el va dori s$
descopere cheia privat$ de decriptare KR
b.
Dac$ schema din figura 4.2 relev$ confiden#ialitatea, figura 4."b !i 4.3
ilustreaz$ cum se poate folosi criptarea cu chei publice pentru autentificare:
X X
^
Y
KRa
KRa
KUa
mesajului
Sursa
chei
Criptanalist
perechii de
Sursa
Destinatie
de criptare
Algoritm
de decriptare
Algorithm
Sursa A Destinatia B
Figura 4.3. Criptosistem cu chei publice: autentificare
Y = E
KRa
(X)
X = D
KUa
(Y)
n acest caz A preg$te!te un mesaj pentru a fi transmis lui B !i l cripteaz$
folosind cheia sa privat$ (K
Ra
). B poate decripta mesajul folosind cheia public$ a lui
A (K
Ua
). Deoarece mesajul a fost criptat folosind cheia privat$ a lui A, numai acesta
putea scrie mesajul. Astfel ntregul mesaj criptat serve!te ca o semn$tur$ digital$.
n plus este imposibil$ modificarea mesajului f$r$ a avea acces la cheia privat$ a lui
A. n concluzie mesajul este autentificat att din punctul de vedere al sursei ct !i
din punct de vedere a integrit$#ii acestuia.
n schema precedent$ ntregul mesaj era criptat, dar documentul trebuie
stocat n form$ necriptat$ pentru a putea fi folosit practic. Se poate p$stra o copie
Tehnici de securizare a datelor !i programelor curs "" 5 6 Tehnici de securizare a datelor !i programelor curs ""
criptat$, pentru ca sursa !i con#inutul mesajului s$ poat$ fi verificate n cazul unei
dispute.
O cale mult mai eficient$ pentru a ob#ine acela!i rezultat este criptarea doar
a unui bloc scurt de bi#i care este ata!at documentului. Un astfel de bloc se nume!te
autentificator !i are proprietatea c$ nu permite schimbarea con#inutului
documentului f$r$ ca autentificatorul s$ fie schimbat. Dac$ autentificatorul este
criptat cu cheia privat$ a sursei, atunci acesta serve!te ca semn$tur$ verificnd
originea !i con#inutul mesajului. Este de notat c$ metoda descris$ mai sus nu
furnizeaz$ confiden#ialiate mesajului. Astfel mesajul transmis nu poate fi modificat
dar poate fi citit de oricine. Pentru a rezolva aceast$ problem$ se poate folosi o
criptare dubl$: Z = E
KUb
[E
KRa
(X)]
X = D
KUa
[D
KRb
(Z)]
X
KUb KRb
KRa KUa
Y Z Y X
mesajului
Sursa
chei
perechii de
Sursa
Destinatie
de criptare
Algoritm
de decriptare
Algorithm
Sursa A
de criptare
Algoritm
de decriptare
Algorithm
chei
perechii de
Sursa
Destinatia B
Figura 4.4. Criptosistem cu chei publice: confiden#ialitate !i autentificare
Se ncepe prin criptarea mesajului cu cheia privat$ a sursei. Astfel este
furnizat$ semn$tura digital$. Apoi se cripteaz$ din nou mesajul rezultat cu cheia
public$ a destinatarului. Mesajul criptat final nu poate fi decriptat dect de
destinatarul dorit, care este singura persoan$ aflat$ n posesia cheii private necesare.
Deci, confiden#ialitatea este asigurat$. Aceast$ metod$ are dezavantajul c$
algoritmul (care este foarte complex) trebuie folosit de patru ori, m$rind timpul de
procesare a informa#iei. Figura 4.4 prezint$ acest sistem cu criptare dubl$.
4.1.2. Aplica"ii ale sistemelor cu chei publice
Sistemele criptografice cu chei publice sunt caracterizate prin utilizarea
unui algoritm care folose!te dou$ chei: una public$ !i una privat$. n func#ie de
aplica#ie, sursa folose!te fie cheia sa privat$ fie cheia public$ a destinatarului, sau
ambele. Sistemele cu chei publice pot fi ncadrate n trei categorii principale:
! Criptare/Decriptare: Sursa cripteaz$ mesajul cu cheia public$ a
destinatarului.
! Semn!turi digitale: Sursa semneaz$ (cripteaz$) mesajul cu cheia sa
privat$. Semnarea este realizat$ prin criptarea total$ sau par#ial$ a mesajului.
! Distribu"ia de chei: Dou$ p$r#i coopereaz$ pentru a schimba o cheie de
sesiune. Exist$ diferite abord$ri posibile, implicnd cheia privat$ a unuia sau a
ambilor participan#i.
Unii algoritmi sunt potrivi#i pentru toate cele trei aplica#ii. n schimb al#i
algoritmi sunt potrivi#i doar pentru una sau dou$ aplica#ii de acest gen. Tabelul
urm$tor arat$ aplica#iile suportate de algoritmii descri!i n aceast$ lucrare:
Algoritmul Criptare/Decriptare Semn!turi digitale Distribu"ia cheilor
RSA Da Da Da
Diffie-Hellman Nu Nu Da
DSS Nu Da Nu
4.1.3. Criptoanaliza sistemelor cu chei publice
Ca !i criptarea conven#ional$, sistemele cu chei publice sunt vulnerabile n
fa#a unui atac exhaustiv. Contram$sura este aceea!i: folosirea unor chei de
dimensiune mare. Totu!i trebuie avut n vedere c$ aceste sisteme cu chei publice
depind de folosirea unor func#ii matematice inversabile, a c$ror complexitate cre!te
exponen#ial cu num$rul de bi#i ai cheii. Astfel cheia trebuie s$ fie destul de lung$
pentru a mpiedica un atac cu for#$ brut$ (exhaustiv), dar destul de mic$ pentru o
criptare !i decriptare practic$. n practic$ dimensiunea cheii care a fost propus$
pentru a rezista unui atac cu for#$ brut$ este prea mare !i face procesul de
criptare/decriptare prea lent. Acesta este motivul pentru care criptarea cu chei
publice este folosit$ cu prec$dere n distribuirea cheilor !i a semn$turilor digitale.
Un alt tip de atac este acela de a g$si o cale de a deduce cheia privat$
numai pe baza algoritmului !i a cheii publice. Nu a fost dovedit pn$ acum c$ un
astfel de atac este imposibil din punct de vedere matematic pentru un anumit
algoritm care folose!te chei publice. n acest caz orice algoritm, incluznd
popularul RSA, este suspect. Istoria criptanalizei arat$ c$ o problem$ care pare
imposibil de solu#ionat dintr-o anumit$ perspectiv$, poate avea o solu#ie dac$
problema este privit$ dintr-un unghi total diferit.
n final mai exist$ o form$ de atac care este particular sistemelor cu chei
publice. Acesta este n esen#$ un atac bazat pe mesaje probabile. S$ presupunem c$
mesajul criptat con#ine o cheie DES pe 56 bi#i. Oponentul poate cripta toate cheile
DES posibile folosind cheia public$ a sursei !i compar$ rezultatul cu mesajul pe
care dore!te s$-l decripteze. n acest caz nu conteaz$ dimensiunea cheii din sistemul
cu chei publice, atacul reducndu-se la un atac cu for#$ brut$ pe 56 bi#i. Un astfel de
atac poate fi comb$tut prin ad$ugarea unor secven#e aleatoare mesajului original.
2 Tehnici de securizare a datelor !i programelor curs "2
CURS NR.12
4.2. Algoritmul RSA
Conceptul de criptografie cu chei publice publicat de Diffie !i Hellman, a
provocat speciali!tii n domeniu pentru dezvoltarea unui algoritm care satisface
cerin#ele unui sistem criptografic cu chei publice. Unul dintre primii algoritmi
dezvolta#i n acest scop a fost cel dezvoltat de Ron Rivest, Adi Shamir !i Len
Adleman to#i de la MIT (Massachussets Institute of Technology) !i a fost publicat
n "978. De la bun nceput RSA (a!a a fost numit dup$ numele autorilor) !i-a
c!tigat suprema#ia, fiind singurul algoritm care folose!te chei publice, r$spndit pe
scar$ larg$.
Algoritmul RSA este un cod bloc, n care mesajul original !i cel criptat sunt
ntregi ntre 0 !i n-" pentru un n dat. n continuare se va prezenta func#ionarea RSA
ncepnd cu descrierea sa, dup$ care se vor prezenta aspectele computa#ionale !i
cele criptografice pe care le implic$ acest algoritm.
4.2.1. Descrierea algoritmului
Metoda dezvoltat$ de Rivest, Shamir !i Adleman folose!te expresii
exponen#iale, astfel nct mesajul original este criptat n blocuri care au o valoare
binar$ ce trebuie s$ fie mai mic$ dect un n dat. n acest caz dimensiunea blocului
poate fi cel mult log
2
(n), n practic$ dimensiunea blocului fiind de 2
k
bi#i,
unde 2
k
<n2
k+"
. Criptarea !i decriptarea au urm$toarea form$ pentru un bloc de
intrare M !i un bloc de ie!ire C:
C = M
e
mod n
M = C
d
mod n = (M
e
)
d
mod n = M
ed
mod n
Sursa !i destina#ia trebuie s$ cunoasc$ valoarea lui n. Sursa cunoa!te
valoarea lui e !i numai destina#ia cunoa!te valoarea lui d. Deci, acest sistem este un
criptosistem cu chei publice unde cheia public$ este KU = {e,n} !i cheia privat$
este KR={d,n}. Pentru ca acest algoritm s$ satisfac$ cerin#ele sistemelor cu chei
publice, el trebuie s$ ndeplineasc$ urm$toarele condi#ii:
". Exist$ valori ale lui e, d, n astfel nct M
ed
mod n=M, pentru toate
valorile a lui M < n.
2. M
e
!i C
d
se pot calcula u!or pentru toate valorile lui M < n.
3. Este nefezabil$ determinarea lui d pe baza lui e !i n.
Pentru nceput ne vom focaliza aten#ia asupra primei condi#ii. n primul
rnd trebuie s$ g$sim o rela#ie de forma:
M
ed
mod n = M
Un corolar al teoremei lui Euler furnizeaz$ r$spunsul: fiind date dou$
numere prime p, q !i doi ntregi n, m astfel nct n=pq !i 0<m<n !i un ntreg
oarecare k, exist$ urm$toarea rela#ie:
m
k(n) + "
mod n = m
k(p-")(q-") +"
mod n = m mod n
unde (n) este func#ia Euler, care reprezint$ num$rul de ntregi pozitivi mai mici
dect n !i relativ primi cu acesta. Se poate scrie c$ (pq) = (p-")(q-"). Astfel
putem ob#ine rela#ia dorit$, dac$
ed=k (n) + "
Aceasta este echivalent cu a spune c$:
ed mod (n) "
Aceasta nseamn$ c$ e !i d sunt inver!ii multiplicativi modulo (n), acest
lucru fiind adev$rat doar dac$ d !i prin urmare !i e sunt relativ prime fa#$ de (n).
Echivalent, cmmdc ((n),d)=".
Componentele algoritmului RSA sunt urm$toarele:
p,q dou! numere prime privat, alese
n=pq public, calculat
e, cu cmmdc( (n),e )="; "<e< (n)
public, ales
d, calculat a. d e mod (n) "
privat, calculat
Cheia privat$ const$ din {d,n} !i cheia public$ const$ din {e,n}. S$
presupunem c$ un utilizator A !i-a publicat cheia public$ !i c$ un utilizator B
dore!te s$ transmit$ mesajul M lui A. Atunci B calculeaz$ C=M
e
mod n !i transmite
C. La recep#ionarea mesajului criptat utilizatorul A reface transformarea calculnd
M=C
d
mod n.
Figura 4.5 prezint$ pe scurt algoritmul RSA, iar figura 4.6 prezint$
procesul de criptare !i decriptare folosind acest algoritm pentru un exemplu
concret. Se execut$ urm$torii pa!i:
! Se selecteaz$ dou$ numere prime, p=7 !i q="7.
! Se calculeaz$ n=pq=7"7 = ""9.
! Se calculeaz$ (n)=(p-")(q-")=96.
! Se selecteaz$ e astfel nct e s$ fie relativ prim fa#$ de %(n)=96 !i mai
mic dect (n); n acest caz e=5.
! Se determin$ d astfel nct de mod 96=" !i d<96. Valoarea corect$ a
lui d este d=77, deoarece 77 x 5 = 385 = 496 +".
Tehnici de securizare a datelor !i programelor curs "2 3 4 Tehnici de securizare a datelor !i programelor curs "2
Cheile rezultate sunt cheia public$ KU={5,""9} !i cheia privat$
KR={77,""9}. Exemplul din figura 4.6 arat$ folosirea cheilor pentru un mesaj de
intrare M="9. Pentru criptare, "9 este ridicat la puterea a cincea rezultatul fiind
2477099, care se mparte la ""9, mesajul criptat fiind 66 (restul mp$r#irii). La
decriptare se ob#ine mesajul ini#ial ("9): 66
77
mod ""9 = "9.
Generarea cheilor
Alege p, q (p !i q sunt numere prime)
Calculeaz$ n = p q
Calculeaz$ (n)=(p-")(q-")
Alege ntregul e astfel nct cmmdc((n),e)="; "<e<(n)
Calculeaz$ d astfel nct de mod (n)="
Cheia public$ KU={e,n}
Cheia privat$ KR={d,n}
Criptare
Mesaj necriptat: M<n
Mesaj criptat: C=M
e
mod n
Decriptare
Mesaj criptat: C
Mesaj necriptat: M=C
d
mod n
Figura 4.5. Algoritmul RSA prezentare pe scurt
Figura 4.6. Exemplu de criptare !i decriptare cu algoritmul RSA
4.2.2. Aspecte computa!ionale
n continuare se vor descrie elementele necesare implement$rii
algoritmului RSA. De fapt sunt dou$ aspecte care trebuie studiate: generarea
cheilor !i procesul de criptare/decriptare.
4.2.2.1. Criptarea "i decriptarea
Att criptarea ct !i decriptarea n RSA implic$ ridicarea la putere a unui
ntreg modulo n. Folosind proprietatea aritmeticii modulo putem reduce num$rul de
astfel de opera#ii, calculul devenind mai simplu:
[(a mod n) x (b mod n) ] mod n = (a x b) mod n
O alt$ problem$ este eficien#a calculului exponen#ial deoarece RSA
lucreaz$ cu exponen#i mari. Pentru a vedea cum poate fi mbun$t$#it calculul s$
consider$m c$ se dore!te ridicarea lui x la puterea "6. O abordare direct$ necesit$
"5 nmul#iri:
X
"6
=X X X X X X X X X X X X X X X X
Putem ob#ine acela!i rezultat doar cu patru nmul#iri dac$ ridic$m la p$trat
fiecare rezultat par#ial ( X
2
, X
4
, X
8
, X
"6
).
Mai general, s$ presupunem c$ dorim s$ determin$m valoarea lui a
m
, a !i m
fiind ntregi pozitivi. Dac$ exprim$m pe m ca un num$r binar b
k
b
k-"
b
0
, atunci
avem:

0
2
i
b
i
m
!i atunci:
( )

,
_



0
2
2
0
i
i
i
b
i
b
m
a a a
( ) ( )
[ ]

1
]
1

0
2
0
2
mod mod mod
i
i
i
i
b b
m
n a n a n a
Acum, se poate scrie algoritmul pentru calculul lui a
m
mod n ilustrat n
figura 4.7.
c=0;d=1;
for i=k downto 0
do c=2c;
d=(dd) mod n;
if b
i
=1
then c=c+1;
d=(da) mod n;
return d;
Figura 4.7. Algoritmul pentru calcularea a
b
mod n
4.2.2.2. Generarea cheilor
naintea folosirii sistemului cu chei publice fiecare participant trebuie s$
genereze o pereche de chei. Acest lucru implic$ urm$toarele opera#ii:
! Determinarea celor dou$ numere prime p,q;
Tehnici de securizare a datelor !i programelor curs "2 5 6 Tehnici de securizare a datelor !i programelor curs "2
! Alegerea lui e sau d !i calcularea celuilalt.
n primul rnd s$ consider$m alegerea lui p !i q. Deoarece valoarea lui
n=pq va fi cunoscut$ oric$rui poten#ial oponent, trebuie prevenit$ descoperirea lui p
!i q, prin metode exhaustive, numerele prime fiind alese dintr-un set suficient de
mare. Pe de alt$ parte metoda folosit$ pentru g$sirea acestor numere trebuie s$ fie
destul de eficient$. n prezent nu exist$ tehnici pentru a produce numere prime
aleatoare destul de mari. Procedura folosit$ n general este alegerea unui num$r
impar aleator de ordinul de m$rime dorit, care se testeaz$ dac$ este num$r prim.
Dac$ nu este atunci procedura se repet$ pn$ se g$se!te un num$r prim. O varietate
mare de teste au fost dezvoltate pentru a preciza dac$ un num$r este prim,
majoritatea fiind probabilistice. Aceste teste vor determina probabilitatea ca un
num$r s$ fie prim. Unul dintre cei mai populari algoritmi folosi#i este algoritmul
Miller-Rabin. Testarea unui ntreg n se face prin efectuarea unor calcule care
implic$ n !i un ntreg a care este ales aleator. Dac$ n nu trece testul atunci el nu este
prim. Dac$ n trece testul atunci el poate fi prim sau neprim. n continuare se mai
efectueaz$ nc$ o serie de teste pentru diferite valori ale lui a. Dac$ n trece toate
testele atunci se poate afirma c$ n este prim. Pe scurt, procedura alegerii num$rului
prim se poate descrie n patru pa!i dup$ cum urmeaz$:
". Se alege un num$r aleator n impar.
2. Se alege un ntreg aleator a < n.
3. Se efectueaz$ testul probabilistic pentru a determina dac$ n este prim
folosind un algoritm cum ar fi algoritmul Miller-Rabin.
4. Dac$ n a trecut un num$r suficient de teste atunci se accept$ n, dac$ nu
se revine la pasul 2.
Dup$ alegerea numerelor prime p !i q procesul de generare a cheii se
termin$ prin alegerea lui e n func#ie de care se calculeaz$ d, sau invers (se alege d
!i se calculeaz$ e). Considernd prima posibilitate num$rul e trebuie ales astfel
nct cmmdc ((n), e) = ", dup$ care se calculeaz$ d, astfel nct de mod (n) = ".
Pentru determinarea celui mai mare divizor comun se poate folosi algoritmul lui
Euclid.
4.2.3. Securitatea algoritmului RSA
Exist$ trei forme de atac asupra algoritmului RSA:
". For#$ brut$: implic$ ncercarea tuturor cheilor posibile.
2. Atacuri matematice: Exist$ multe abord$ri, dar toate se reduc la
descompunerea unui produs n factori primi.
3. Atacuri temporizate: Aceste atacuri depind de timpul necesar
decript$rii unui mesaj criptat.
Aceste forme de atac vor fi dezb$tute pe rnd, n cele ce urmeaz$:
". Atacurile prin for#$ brut$ (exhaustive) se combat exact n acela!i fel ca !i pentru
orice alt sistem criptografic, prin folosirea unei chei suficient de mari. Avnd n
vedere complexitatea opera#iilor folosite pentru criptare !i decriptare, cheia trebuie
s$ fie de o dimensiune rezonabil$ pentru a nu ncetini prea mult procesul de
criptare-decriptare.
2. n cazul algoritmului RSA s-a depus un efort semnificativ pentru a rezolva
problema factorilor primi, aceasta fiind echivalent$ cu descompunerea lui n n doi
factori primi. Determinarea lui (n) reprezint$ exact acela!i lucru. Pentru un n
mare problema este destul de grea, dar nu pe ct pare. n "977 cei trei inventatori a
lui RSA au publicat ntr-o revist$ !tiin#ific$ american$ un mesaj criptat, oferind
"00$ celui care reu!e!te s$ decripteze mesajul. Cei trei au prezis c$ mesajul nu va fi
decriptat cel pu#in pentru 40 de cvadrilioane de ani. ns$ n aprilie "994, un grup de
pe Internet a reu!it s$ decripteze mesajul dup$ doar opt luni de lucru, mesajul fiind
criptat cu o cheie de "29 cifre zecimale. ntre timp RSA Laboratories a lansat
provoc$ri pentru decriptarea unor mesaje ce foloseau chei de diferite dimensiuni.
Ultima provocare este RSA-"30, care folose!te o cheie de "30 cifre zecimale.
Tabelul urm$tor prezint$ rezultatele ob#inute. Nivelul efortului depus este m$surat
n MIPS-years (adic$ pentru un procesor de un milion de instruc#iuni pe secund$
care ruleaz$ timp de un an, adic$ aproximativ 3 x "0
"3
instruc#iuni executate).
Nr. de cifre
zecimale
Nr. aproximativ
de bi#i
Data
decript!rii
MIPS-years
"00 332 Aprilie "99" 7
""0 365 Aprilie "992 75
"20 398 Iunie "993 830
"29 428 Aprilie "994 5000
"30 43" Aprilie "996 500
Pentru a mpiedica n viitor atacurile de acest gen s-a convenit folosirea
unei chei de 2048 bi#i pentru algoritmul RSA.
3. Un ultim tip de atac folosit pentru RSA este atacul temporizat. Paul Kocher a
demonstrat n "996 c$ se poate determina cheia privat$ m$surnd timpul necesar
pentru decriptarea mesajelor. Aceste atacuri nu sunt aplicabile doar algoritmului
RSA ci tuturor sistemelor cu chei publice. Acest tip de atac este alarmant din dou$
motive: abordeaz$ problema dintr-un punct de vedere total diferit !i este bazat doar
pe mesajul criptat. Un astfel de atac este similar cu ghicirea cifrului unui seif,
observnd ct timp necesit$ introducerea acestuia. Pentru a combate acest tip de
atac se pot lua urm$toarele contram$suri:
! Timpul necesar ridic$rii la putere constant. Asigurarea unui timp
constant pentru fiecare opera#ie de ridicare la putere. Acest lucru
reduce din performan#a algoritmului.
! ntrziere aleatoare: se poate ob#ine o performan#$ mai bun$ prin
ad$ugarea unor ntrzieri aleatoare fiec$rei opera#ii.
! Dezorientarea: multiplicarea mesajului criptat cu un num$r aleator
naintea ridic$rii la putere. RSA Data Security implementeaz$ aceast$
tr$s$tur$ n multe din produsele sale.
2 Tehnici de securizare a datelor !i programelor curs "3
CURS NR.13
4.3. Administrarea cheilor
Exist# dou# aspecte distincte legate de distribu$ia cheilor n sistemele
criptografice cu chei publice:
! Distribu$ia cheilor publice.
! Folosirea cript#rii cu chei publice pentru a distribui chei secrete.
4.3.1. Distribu!ia cheilor publice
n literatura de specialitate se prezint# o serie de propuneri pentru
distribuirea cheilor publice. Aceste propuneri se pot grupa n felul urm#tor:
! Anun$ public.
! List# disponibil# publicului.
! Autoritate pentru distribu$ia cheilor publice.
! Certificate pentru chei publice.
4.3.1.1. Anun!ul public al cheilor
Esen$a cript#rii cu chei publice este c# una dintre cele dou# chei de criptare
nu este secret# (este public#). Astfel, dac# exist# un algoritm acceptat pe scar# larg#
folosit de foarte mul$i utilizatori, cum ar fi RSA, orice participant poate trimite
propria cheie public# unui alt participant sau poate trimite cheia unei comunit#$i
mai mari. De exemplu utilizatorii PGP (Pretty Good Privacy) care folosesc RSA
pot ad#uga cheia lor public# fiec#rui mesaj trimis n forumuri publice, cum ar fi
grupurile de discu$ii de pe USENET sau ata!at fiec#rui e-mail.
Cu toate c# aceast# metod# convine multor utilizatori fiind foarte practic#,
ea are un dezavantaj mare. Oricine poate falsifica un anun$ public. Un utilizator
care pretinde c# este utilizatorul A poate trimite cheia public# unui participant sau
poate transmite mesajul unei comunit#$i mult mai mari. Pn# realul utilizator A
descoper# falsul !i anun$# restul participan$ilor, falsificatorul poate decripta toate
mesajele adresate lui A !i poate folosi cheia fals# pentru autentificare.

KUa
KUa
KUa
KUa
KUb
KUb
KUb
KUb

A B
Figura 4.8. Distribu$ia direct#, necontrolat# a cheilor publice
4.3.1.2. List" disponibil" publicului
Un grad mai nalt de securitate poate fi ob$inut prin men$inerea unei liste
dinamice a cheilor, disponibil# publicului. Men$inerea !i distribuirea cheilor publice
este responsabilitatea unei p#r$i de ncredere sau a unei organiza$ii. O astfel de
schem# include urm#toarele elemente:
". Autoritatea men$ine lista cu structura [nume, cheie public#] pentru
fiecare participant.
2. Fiecare participant se nregistreaz# n list# prin intermediul autorit#$ii.
nregistrarea se face personal sau printr-o form# de comunicare sigur#
!i autentificat#.
3. Un participant !i poate schimba cheia oricnd, fie c# acest lucru se
dore!te datorit# folosirii anterioare a cheii pentru un volum prea mare
de date, fie din cauza divulg#rii ntr-un fel sau altul a cheii private
aferente.
4. Periodic, autoritatea distribuie ntreaga list# sau actualiz#ri ale acesteia.
De exemplu se poate tip#ri ntreaga list#, ea fiind asem#n#toare unei
c#r$i de telefon.
5. Participan$ii pot de asemenea s# acceseze lista pe cale electronic#.
Pentru acest lucru, o form# de comunicare sigur# !i autentificat# este
obligatorie ntre autoritate !i participan$i.
Aceast# schem# ofer# siguran$# mai mare dect anun$ul public al cheilor,
dar totu!i are vulnerabilit#$i. Dac# oponentul ob$ine cheia privat# a autorit#$ii, el
poate contraface cheile publice sau poate decripta mesajele trimise oric#rui
participant.
Tehnici de securizare a datelor !i programelor curs "3 3 4 Tehnici de securizare a datelor !i programelor curs "3
Index pt.
chei publice
KUa KUb
A B
Figura 4.9. Distribuirea cheilor printr-o list# accesibil# publicului
4.3.1.3. Autoritate pentru distribu!ia cheilor publice
(1) Request || Time
1
(2) E
KRauth
[ KUb || Request || Time
1
]
(3) E
KUb
[ID
A
|| N
1
]
(7) E
KUb
[ N
2
]
(6) E
KUa
[N
1
|| N
2
]
(4) Request || Time
2
(5) E
KRauth
[ KUa || Request || Time
2
]
A
Chei publice
Autoritate
B
Figura 4.10 . Distribu$ia cheilor folosind o autoritate pentru chei publice
Se poate ob$ine o securitate mai puternic# pentru distribu$ia cheilor publice
printr-un control mai restrns al distribu$iei acestora. Un scenariu tipic este ilustrat
n figura 4."0. Ca !i nainte o autoritate central# men$ine dinamic cheile tuturor
participan$ilor. n plus fiecare participant cunoa!te cheia public# a autorit#$ii, care
va fi folosit# pentru autentificarea p#r$ilor participante. Pentru a primi o cheie se
urmeaz# pa!ii descri!i n continuare:
". A trimite un mesaj datat autorit#$ii con$innd o cerere pentru cheia
public# curent# a lui B.
2. Autoritatea r#spunde cu un mesaj criptat cu cheia sa privat#, mesaj pe
care A l poate decripta fiind n posesia cheii publice a autorit#$ii.
Astfel A poate fi sigur c# mesajul primit este autentic, mesajul fiind
criptat cu cheia privat# a autorit#$ii KR
auth
. Mesajul include
urm#toarele:
! Cheia public# a lui B, KU
b.
! Cererea original# pentru ca A s# determine dac# aceasta nu a
fost modificat#.
! Datarea mesajului, astfel A poate determina dac# mesajul
primit nu este un mesaj vechi de la autoritate, con$innd o
cheie diferit# de cheia curent# a lui B.
3. A salveaz# cheia public# a lui B !i i transmite acestuia un mesaj care
con$ine un identificator !i un anun$, care este folosit pentru
identificarea tranzac$iei.
4. B recep$ioneaz# cheia public# a lui A de la autoritate n aceea!i
manier# cum A a recep$ionat cheia lui B.
Aceast# metod# de distribuire a cheilor nu este adecvat# dac# cheile se
schimb# frecvent, deoarece folose!te un num#r mare de pa!i.
4.3.1.4. Certificate pentru chei publice
O alternativ# pentru distribu$ia cheilor este folosirea unor certificate
folosite de participan$i pentru distribu$ia cheilor f#r# a contacta autoritatea care
distribuie cheile publice. Fiecare certificat con$ine o cheie public#, precum !i alte
informa$ii necesare pentru autentificarea lui. Participan$ii schimb# cheile prin
transmiterea certificatelor, fiecare participant avnd posibilitatea de a verifica
autenticitatea certificatului prin intermediul autorit#$ii de distribuire a cheilor. Acest
model de distribuire a cheilor trebuie s# corespund# urm#toarelor cerin$e:
". Orice participant poate citi certificatul pentru a determina numele !i
cheia public# a proprietarului.
2. Orice participant poate verifica dac# certificatul este original, fiind
eliberat de autoritatea pentru chei publice.
3. Numai autoritatea pentru chei publice poate elibera sau actualiza
certificatele.
4. Orice participant poate verifica dac# certificatul este actual.
Figura 4."" ilustreaz# procesul de distribu$ie a cheilor prin certificate.
Participan$ii contacteaz# autoritatea pentru chei publice cernd eliberarea unui
Tehnici de securizare a datelor !i programelor curs "3 5 6 Tehnici de securizare a datelor !i programelor curs "3
certificat prin transmiterea cheii publice. Pentru un participant A autoritatea
elibereaz# certificatul sub forma:
C
A
= E
KRauth
[T, ID
A
, KU
a
]
unde KR
auth
este cheia privat# a autorit#$ii. n continuare A poate transmite
certificatul altor participan$i, care citesc !i verific# certificatul dup# cum urmeaz#:
D
KUauth
[C
A
] = D
KUauth
[E
KRauth
[T, ID
A
, KU
a
]] = (T, ID
A
, KU
a
)
unde ID
A
este numele participantului !i T este data la care a fost eliberat
certificatul.
Destinatarul decripteaz# mesajul cu cheia public# a autorit#$ii, totodat#
fiind verificat# !i autenticitatea certificatului.
CA = E
KRauth
[ Time
1
, ID
A
, KUa ]
(1) CA
(2) CB
CB = E
KRauth
[ Time
2
, ID
B
, KUb ]
KUa
KUb
A B
Certificate
Autoritate
pentru
Figura 4.11 . Distribuirea cheilor folosind certificate
4.3.2. Distribu!ia cheilor secrete cu ajutorul cheilor publice
Odat# ce cheile publice au fost distribuite, se poate comunica n siguran$#.
Totu!i mul$i utilizatori nu vor dori s# foloseasc# exclusiv criptarea cu chei publice
datorit# vitezei reduse la criptare/decriptare. Astfel criptarea cu chei publice este
v#zut# mai mult ca un vehicul pentru distribu$ia cheilor secrete folosite n criptarea
conven$ional#.
Aceast# metod# este ilustrat# n figura de mai jos fiind necesari urm#torii
pa!i:
". A genereaz# o pereche de chei [KU
a
, KR
a
] !i transmite un mesaj lui B
constnd din cheia public# KU
a
!i un identificator ID
A.
2. B genereaz# o cheie secret# K
S
!i o transmite lui A criptat# cu cheia
public# a lui A.
3. A decripteaz# mesajul D
KRa
[E
KUa
[K
S
]] pentru a ob$ine cheia secret#
K
S
. Deoarece numai A poate decripta mesajul, A !i B vor fi singurii
cunosc#tori a cheii secrete K
S.
Dup# ce cheia K
S
a fost livrat# n siguran$# A !i B pot comunica folosind
criptarea conven$ional#. Aceast# metod# de distribuire a cheii secrete folosit# n
criptarea conven$ional# este foarte atractiv# deoarece riscul compromiterii cheii
este minim.
Totu!i !i aceast# metod# este vulnerabil# prin atacuri active. Dac# un
oponent E are control asupra canalului de comunica$ie, atunci el poate compromite
transmisia ntre A !i B n urm#torul mod:
". A genereaz# o pereche de chei [KU
a
, KR
a
] !i transmite un mesaj lui B
constnd din cheia public# KU
a
!i identificatorul ID
A.
2. E intercepteaz# mesajul, creeaz# propria pereche de chei [KU
e
, KR
e
] !i
transmite un mesaj lui B ce const# din KU
e
!i ID
A
.
3. B genereaz# cheia secret# K
S
!i transmite E
KUe
[K
S
].
4. E intercepteaz# mesajul !i afl# cheia secret# K
S
prin decriptarea
mesajului D
KRe
[E
KUe
[K
S
]].
5. E transmite E
KUa
[K
S
] lui A.
Rezultatul este c# ambii participan$i A !i B au intrat n posesia cheii
secrete, ne!tiind c# E cunoa!te !i el cheia. Astfel E poate decripta toate mesajele
criptate cu acea cheie secret#.
(1) KU
a
|| ID
A
(2) E
KUa
[K
s
]
A B
Figura 4.12. Distribuirea cheilor secrete cu ajutorul cheilor publice
4.4. Algoritmul Diffie-Hellman
Primul algoritm publicat care folosea chei publice a fost acela dezvoltat de
W. Diffie !i M.Hellman definind astfel criptografia cu chei publice. Algoritmul este
numit Diffie-Hellman key exchange ("976) !i este folosit n numeroase produse
comerciale.
Scopul algoritmului este ca doi utilizatori s# poat# schimba o cheie secret#
n siguran$#, algoritmul fiind limitat la schimbul cheilor secrete.
Tehnici de securizare a datelor !i programelor curs "3 7 8 Tehnici de securizare a datelor !i programelor curs "3
Acest algoritm se bazeaz# pe dificultatea calcul#rii logaritmilor discre$i,
ace!tia fiind defini$i n urm#torul fel. n primul rnd de define!te a - r#d#cina
primitiv# a unui num#r prim p, ca fiind un num#r a c#rui puteri genereaz# to$i
ntregii de la " la p-" prin aplicarea operatiei (mod p). Adic# dac# a este r#d#cina
primitiv# a unui num#r p atunci numerele:
a mod p, a
2
mod p, , a
p-"
mod p
sunt distincte !i constau din ntregii de la " la p-" ntr-o anumit# permutare.
Pentru un ntreg b !i o r#d#cin# primitiv# a a unui num#r p se poate g#si un
unic exponent astfel nct:
b = a
i
mod p , unde 0i (p-")
Exponentul i se calculeaz# prin logaritm discret (prezentat n literatura de
specialitate ca fiind deosebit de dificil de determinat) !i este notat ind
a,p
(b).
Elemente Publice Globale
q numar prim
< q si radacina primitiva lui q
Generarea cheii utilizatorului A
Alege X
A
X
A
< q
Calculeaza Y
A
Y
A
=
X
A
mod q
Generarea cheii utilizatorului B
Alege X
B
X
B
< q
Calculeaza Y
B
Y
B
=
X
B
mod q
Generarea cheii secrete de utilizatorul A
K = (Y
B
)
X
A
mod q
Generarea cheii secrete de utilizatorul B
K = (Y
A
)
X
B
mod q
Figura 4.13. Algoritmul Diffie-Hellman
Schimbul de chei tip Diffie-Hellman este rezumat n figura 4."3. Aceast#
schem# necesit# dou# numere publice, un num#r prim q !i un ntreg care este
r#d#cina primitiv# a lui q. S# presupunem c# utilizatorul A dore!te s# transmit# o
cheie secret# utilizatorului B. Utilizatorul A alege un ntreg aleator X
A
< q !i
calculeaz# Y
A
=
XA
mod q . Similar utilizatorul B alege un ntreg aleator X
B
< q !i
calculeaz# Y
B
=
XB
mod q. Fiecare parte p#streaz# secret# valoarea lui X !i face
public# valoarea lui Y. Utilizatorul A calculeaz# cheia K = (Y
B
)
XA
mod q, iar
utilizatorul B calculeaz# K = (Y
A
)
XB
mod q. Aceste dou# calcule produc rezultate
identice.
K = (Y
B
)
XA
mod q
= (
XB
mod q)
XA
mod q
= (
XB
)
XA
mod q
=
XBXA
mod q
= (
XA
)
XB
mod q
= (
XA
mod q)
XB
mod q
= (Y
A
)
XB
mod q
Astfel cele dou# p#r$i au schimbat cheia secret#. Deoarece X
A
!i X
B
sunt
private, un oponent are la dispozi$ie doar elementele q, a, Y
A
!i Y
B
, oponentul fiind
for$at s# calculeze logaritmul discret pentru a afla cheia. De exemplu atacnd cheia
secret# a lui B, oponentul trebuie s# calculeze urm#toarea expresie:
X
B
= ind
a,q
(Y
B
)
Securitatea algoritmului Diffie-Hellman const# n dificultatea calcul#rii
logaritmilor discre$i. Calculul acestor logaritmi pentru numere prime mari este
considerat imposibil.

S-ar putea să vă placă și