Sunteți pe pagina 1din 89

CURS

TEHNICI DE SECURIZARE A INFORMAȚIEI

TEHNICI DE SECURIZARE ȘI CRIPTARE


I. INTRODUCERE

1.1. SECURITATEA INFORMAŢIEI

Securitatea informaţiei este domeniul care se ocupă de studiul mecanismelor de


protecţie a informaţiei, în scopul asigurării unui nivel de încredere în informație, şi este corect
a spune că nivelul de încredere în informaţie depinde de nivelul mecanismelor de securitate
care îi garantează protecţia în fața riscurilor care apar asupra securităţii ei. Tehnicile de
asigurare a securităţii informaţiei adresează informaţie indiferent de natura ei şi este
important de remarcat că informaţia are valoare în special atunci când este subiect al
schimbului sau procesării, deci tocmai atunci când este vulnerabilă în faţa unor părţi ce nu pot
fi considerate de încredere. Astfel, fără a exclude valoarea informaţiei stocate, valoarea
informaţiei creşte evident în acțiunea de schimb sau de procesare şi este evident că o
informaţie complet izolată nu conduce la riscuri de securitate foarte mari dar în acelaşi timp
nici nu poate aduce foarte multe beneficii având în general valoare scăzută.

Securitatea Sistemelor Informatice (INFOSEC) înseamnă protecţia sistemelor informatice


împotriva accesului neautorizat sau a modificării informaţiei, fie stocată, procesată sau în
tranzit, şi împotriva refuzului de servicii către utilizatorii autorizaţi sau asigurării de servicii
către utilizatorii neautorizaţi, incluzând acele metode necesare detectării, documentării şi
respingerii acestor ameninţări.

Nu există nici un diagnostic general şi nici o reţetă universală pentru a face securitate. Există
totuşi câteva întrebări relevante în faţa cărora trebuie să dăm un răspuns înainte de a proiecta
o potenţială soluţie de securitate, iată câteva dintre acestea:

 Cum ajunge adversarul la sistem?


 Care sunt obiectivele de securitate ce trebuie asigurate în sistem?
 Care este nivelul de securitate la care trebuie să răspundă sistemul?

Desigur perspectivele deschise de aceste întrebări nu sunt nici pe departe exhaustive şi nici
suficient de detaliate. De exemplu, poate că fără a introduce problematici noi, putem nuanţa
aceste trei întrebări prin altele cum ar fi: ce trebuie protejat? Care sunt ameninţările şi
vulnerabilităţile? Care sunt implicaţiile în cazul distrugerii sau pierderii echipamentului? Care
este valoarea echipamentului pentru organizaţie? Ce poate fi făcut pentru a minimiza
expunerea la pericole?

Este de remarcat că în cadrul răspunsului la prima întrebare putem distinge două situaţii:
situaţia în care adversarul ajunge personal la sistem şi situaţia în care ajunge pe cale
electronică la sistem. Pentru prima situaţie soluţiile de tratare se încadrează în categoria
soluţiilor de securitate fizică. Pentru cea de a doua situaţie vorbim de securitate electronică,
tehnicile criptografice joacă un rol fundamental în acest context. Este de remarcat că aceste
două tipuri distincte de soluţii de securitate pot adesea să se contopească, de exemplu un lacăt

1
ataşat unei uşi este un dispozitiv de securitate fizică, dar unui astfel de lacăt i se poate ataşa
un dispozitiv de autentificare bazat pe tehnici criptografice, cum ar fi de exemplu un smart-
card.

Entitatea care comite un atac o vom numi în limbaj de securitate adversar (mai rar se
foloseşte termenul de atacator, și mai rar cel de intrus). Lista potenţialilor adversari poate fi
un punct de pornire în evaluarea riscurilor. Cu privire la aceştia interesează câteva coordonate
cum ar fi: resursele de calcul, resursele financiare, resursele intelectuale, motivaţia,
amploarea şi natura pagubelor care le pot cauza. Fără a face o enumerare exhaustivă a
acestora şi fără a insista pe detaliile cu privire la coordonatele anterior amintite, aceasta ar fi o
potenţială listă:

i) Hackerii dispun de resurse de calcul şi financiare scăzute şi atacă sisteme în general doar
motivaţi de dorinţa de a brava sau pentru amuzament.
ii) Clienţii unei reţele au putere de calcul limitată şi sunt motivaţi de interese economice, de
exemplu: fraudarea valorii facturate în reţeaua termo-electrică etc.
iii) Comercianţii dispun de putere de calcul modestă şi de resurse financiare apreciabile
având interes în aflarea sau manipularea secretelor pentru câştigarea avantajelor financiare.
iv) Crima organizată are putere de calcul modestă şi putere financiară ridicată având interes
în alterarea parametrilor la care funcţionează sistemele pentru câştigarea unor avantaje
financiare.
v) Teroriştii dispun de putere ridicată de calcul şi financiară fiind motivaţi de raţiuni politico-
religioase cu scopul de a răspândii panică şi pagube de ordin financiar.
vi) Guvernele statelor adversare, dispun de putere de calcul şi financiară ridicată, şi mai mult,
de operatori pricepuţi şi antrenaţi cu experienţă în domeniu. Scopul acestora este în general
de a afecta infrastructurile în atacuri complexe de natură fizică sau electronică.
vii) Oamenii din sistem sunt persoane care deţin informaţii de detaliu şi au acces la
elementele cheie în funcţionare, sunt motivaţi în general de interese sau nemulţumiri de ordin
salarial/financiar.
viii) O combinaţie a variantelor de mai sus este cel mai periculos tip de adversar; în practică
este posibilă orice combinaţie şi aceasta are cele mai mari şanse de succes într-un atac.

1.2. OBIECTIVE DE SECURITATE

În ceea ce priveşte obiectivele de securitate care trebuie asigurate în sistem acestea


variază într-un diapazon destul de larg. În ceea ce priveşte criptografia în general, şi nu
securitatea în ansamblu, putem distinge patru obiective majore de securitate care sunt
recunoscute de orice autor în domeniu: confidenţialitate, integritate, autenticitate și non-
repudiere.

2
Confidenţialitatea înseamnă asigurarea faptului că informaţia rămâne accesibilă doar
părţilor autorizate în acest sens. Acesta este cel mai vechi obiectiv al criptologiei. În rândul
necunoscătorilor este încă larg răspândită opinia că noţiunea de criptografie este sinonimă cu
cea de confidenţialitate. Sigur opinia este eronată pentru că criptografia se ocupă şi de
asigurarea obiectivelor ce sunt enumerate în continuare şi care nu au nici o legătură cu
păstrarea secretă a informaţiei. În ceea ce priveşte asigurarea acestui obiectiv prin tehnici
criptografice, el este îndeplinit cu ajutorul funcţiilor de criptare. În general datorită eficienţei
se folosesc funcţii simetrice (cu cheie secretă), dar scenarii practice conduc în general la
orchestrarea acestora cu funcţii asimetrice (cu cheie publică).

Integritatea se referă la asigurarea faptului că informaţia nu a fost alterată pe parcursul


transmisiei sau de către un posibil adversar. Funcţiile criptografice utilizate în acest scop sunt
funcţiile hash care fac ca modificarea unui singur bit de informaţie să poată fi detectată.
Menţionăm că în principiu este greşită utilizarea funcţiilor de criptare simetrice şi asimetrice
în acest scop, instrumentul criptografic dedicat fiind funcţiile hash (şi codurile MAC sau
semnăturile digitale în contextul mai larg al autentificării). Desigur, există și funcţii simetrice
şi asimetrice de criptare care pot asigura şi integritatea dar alegerea lor pentru acest scop
trebuie făcută cu precauţie.

Autentificarea are două coordonate distincte: autentificarea entităţilor şi autentificarea


informaţiei. Autentificarea entităţilor se referă la existenţa unei garanţii cu privire la
identitatea unei anume entităţi. Autentificarea informaţiei se referă la determinarea sursei de
provenienţă a informaţiei – în mod implicit aceasta garantează şi integritatea informaţiei
deoarece dacă informaţia nu mai are integritate, deci un potenţial adversar a alterat-o, atunci
nici sursa ei de provenienţă nu mai este aceeaşi. Însă doar integritatea informaţiei nu implică
şi autenticitatea ei deoarece nu garantează identitatea sursei de proveniență. Autentificarea se
realizează în general prin protocoale care pot avea la bază întreg arsenalul de funcţii
criptografice: funcţii hash, MAC, criptări simetrice şi asimetrice, semnături digitale.
Autentificarea include de cele mai multe ori și un factor temporal care implică o garanţie cu
privire la momentul de timp la care entitatea de care este legată a depozitat-o (deoarece în
absența unei garanții temporale, informaţia putea fi replicată şi depusă de orice altă entitate
pierzându-se astfel o valență a autentificării).

Non-repudierea (sau nerepudierea) previne o entitate în a nega o acţiune întreprinsă (acţiune


materializată desigur în transmisia unei informaţii). Aceasta înseamnă că dacă la un moment
dat o entitate neagă ca ar fi emis o anume informaţie, entitatea care a primit informaţia
respectivă poate demonstra unei părţi neutre că informaţia provine într-adevăr de la entitatea
în cauză. Non-repudierea se realizează prin utilizarea semnăturilor digitale.

3
1.3. ATACURI ASUPRA CANALULUI DE COMUNICARE

Un atac este o agresiune asupra unui obiectiv de securitate. Există o gamă foarte largă de
atacuri şi diverse clasificări ale acestora în funcţie de diverse criterii. De exemplu în [31]
acestea sunt clasificate în: atacuri nedirecţionate ce constau în infiltrări în sistem în scopul
exploatării oricărei vulnerabilităţi găsite şi atacuri direcţionate ce au un scop precis care
constă în exploatarea unei anumite părţi a sistemului (de exemplu extragerea unei anumite
informaţii, furtul unei parole etc.). O clasificare ceva mai clasică a atacurilor, preferată de
majoritatea cărţilor de securitate cum ar fi [80] este în: atacuri pasive și atacuri active.

Atacurile pasive sunt citirea mesajelor şi analiza de trafic. Diferenţa între cele două
atacuri este că la analiza de trafic nu este necesară citirea efectivă a mesajelor transmise ci
doar observarea unor modele în comunicare, de exemplu ce natură are informația trimisă, e
vorba de un download pentru un film, o convorbire telefonica prin Internet, etc. Este
important de remarcat că aceste atacuri sunt violări ale obiectivului numit confidenţialitate.

Atacurile active sunt cele de: modificarea informaţiei vehiculate între două entităţi care
presupune alterarea detectabilă sau nu a informaţiei, impostura (impersonarea sau
mascaradarea) care înseamnă a pretinde o altă identitate decât cea reală, retransmisie care
înseamnă a transmite o informaţie care a fost transmisă anterior de un participant şi
întreruperea legăturii care înseamnă efectiv tăierea canalului de comunicare (adică Denial
Of Services - DoS). Este important de remarcat, din punct de vedere al obiectivelor de
securitate, că primele trei atacuri sunt o agresiune a obiectivului de autenticitate iar ultimul o
agresiune a disponibilităţii.Desigur, există şi alte atacuri asupra securităţii unui sistem pentru
a căror contracarare nu se folosesc în general tehnici criptografice, ele fiind contracarate prin
alte mijloace. Exemple de cauze ale unor astfel de atacuri sunt: i) viruşi informatici care duc
în general la distrugerea software-ului prin infiltrare în fişiere existente şi fac imposibilă
funcţionarea sistemului prin execuţia unor acţiuni dăunătoare, ii) programe tip „Cal Troian”
sunt programe folosite în scopul obţinerii accesului la anumite informaţii, de exemplu aflarea
parolelor în sisteme de operare perimate gen Win98, iii) programe tip „Vierme” care sunt
programe care se propagă automat fără controlul unui utilizator şi în general afectează rata de
transfer a reţelei (spre deosebire de viruşi nu se infiltrează în fişiere existente).

1.4. CRIPTOGRAFIA ŞI ROLUL EI

Riscurile de securitate, ca orice alte riscuri de altfel, trebuie acoperite cu garanţii de


securitate. Atunci când obiectul manipulat este informaţia singura, criptografia este una din
puținele garanţii demonstrabile. Deci rolul acesteia este de a oferi garanţii în faţa riscurilor de
securitate ale informației. Criptografia este comun utilizată într-o gamă largă de aplicaţii din
zona: instituţiilor medicale, publice, private, bancare şi chiar în cele mai comune aplicaţii pe
care le folosim zi de zi: telefonie mobilă, servicii de e-mail, editoare de documente, etc.

4
Criptografia este definită ca fiind studiul tehnicilor matematice referitoare la aspecte de
securitatea informaţiei precum confidenţialitate, integritate, autentificarea entităţilor,
autentificarea provenienţei datelor.
Totuşi o astfel de definiţie nu este completă. Pe de o parte deoarece criptografia nu este în
totalitate matematică (chiar dacă marea ei parte este), de exemplu criptarea cuantică face mai
mult apel la cunoştinţe de fizică decât de matematică sau implementarea criptografiei ţine
mai mult de ştiinţa calculatoarelor decât de matematică. Pe de altă parte pentru că nu ţine
cont de fondul problemei. Ron Rivest a făcut o remarcă pe cât de simplă pe atât de profundă
în ceea ce priveşte criptografia şi această remarcă poate fi considerată o excelentă definiţie a
criptografiei: criptografia înseamnă comunicare în prezenţa adversarilor.
Domeniul criptografiei se ocupă de construcţia funcţiilor criptografice. Diverse funcţii
criptografice vor fi descrise în capitolele următoare, iar pe moment putem să ne formăm o
imagine intuitivă asupra unei funcţii criptografice ca fiind o funcţie care depinde de un
parametru numit cheie şi se aplică unui mesaj („plaintext”) pentru a obţine un mesaj criptat
numit criptotext („ciphertext”)– aceasta este ceea ce în principiu numim funcţie de criptare.
Totodată obiectivul criptografiei este şi cel de a construi inversa acestei funcţii cu ajutorul
căreia din criptotext alături de cheie se poate recupera mesajul original – aceasta fiind ceea ce
numim funcţie de decriptare. Toate acestea sunt sugerate în Figura 1.7. Subliniem că această
imagine este doar intuitivă deoarece nu toate funcţiile criptografice au cheie, şi mai mult, nu
toate funcţiile criptografice admit o inversă.
Domeniul care are ca obiectiv recuperarea din criptotext a mesajului şi a cheii se
numeşte criptanaliză şi este ceea ce în limbaj comun numim spargerea funcţiilor
criptografice care din punct de vedere intuitiv poate fi văzută ca inversarea acestora.
Subliniem însă că în general a sparge o funcţie criptografică presupune acţiuni mult mai
simple decât inversarea ei, imaginea creată având din nou doar valoare intuitivă. Criptografia
şi criptanaliza sunt cele două ramuri ale domeniului numit criptologie.
Evoluţia criptografiei, şi mai mult sau mai puţin a oricărui alt domeniu, poate fi văzută ca
urmând următorul drum: Teorie, Practică, Standarde. Fără a reduce rolul aplicaţiilor practice
şi a standardelor care ne fac viaţa mai uşoară este de remarcat că standardele acoperă doar
probleme care sunt implementate practic, implementările practice urmează doar probleme
fundamentate teoretic în prealabil iar teoria reprezintă baza cea mai solidă şi consistentă a
domeniului. Mai mult, soluţiile de vârf ale domeniului se găsesc în teorie şi doar rar în
implementările practice, care tratează în general aspecte demult cunoscute (de exemplu
curbele eliptice sunt utilizate în practică doar în ultimii ani, în ciuda faptului că au fost
propuse de Miller şi Kobliz încă din 1985).

GARANȚIA OFERITĂ DE CRIPTOGRAFIE: NIVELUL DE SECURITATE

Între întrebările din primul subcapitol enunțam și o întrebare cu privire la nivelul de


securitate (uneori numit nivel de încredere). Nivelul de securitate cuantifică efortul
computațional necesar spargerii unei funcții criptografice. Nivelul de securitate al unei
primitive criptografice este o funcţie care scade odată cu timpul, aceasta datorându-se atât

5
creşterii nivelului tehnologic cât şi descoperiri unor noi atacuri asupra funcției. De exemplu
dacă o informaţie criptată folosind algoritmul DES (standard în criptarea simetrică începând
din 1976) putea oferi un nivel ridicat de încredere în urmă cu 30 de ani, astăzi o astfel de
informaţie poate fi uşor recuperată prin spargerea codului în doar câteva zile pe o mașină de
calcul actuală. Cerințele curente sunt în general definite prin intermediul standardelor. În
particular, pentru cazul tehnicilor criptografice, care sunt frecvent folosite pentru asigurarea
obiectivelor de securitate anterior amintite, există standarde pentru marea parte a funcţiilor
criptografice şi a dimensiunii cheilor pentru acestea. De exemplu Guvernul USA prin
documentaţiile Federal Information Processing Standards (FIPS) impune standarde pentru
funcţii hash, criptare simetrică, semnătură digitală; totuşi aceste standarde nu acoperă nici pe
departe toate mecanismele. În Tabelul 1.1 sunt prezentate dimensiunile de chei recomandate
pentru câţiva algoritmi frecvent utilizaţi în practică. În Tabelul 1.2 sunt prezentate
recompensele oferite de RSA-Security pentru spargerea unor chei de RSA. Prin comparaţie
între cele două tabele se poate observa că o cheie de RSA de 1024 biţi este recomandată de
primul tabel pentru folosire până în 2010, în timp ce RSA-Security oferă o recompensă de
100.000 dolari pentru spargerea unei astfel de chei (în realitate costurile de spargere ale unei
astfel de chei fiind de sute sau mii de ori mai mari). Pentru a forma o imagine mai clară
asupra dimensiunii acestor numere, iată valoarea numărului RSA-640:

n=3107418240490043721350750035888567930037346022842727545720161948823206440
518081504556346829671723286782437916272838033415471073850191954852900733772
4822783525742386454014691736602477652346609.

Cei doi factori primi ai săi sunt:


p=1634733645809253848443133883865090859841783670033092312181110852389333100
104508151212118167511579,

q=1900871281664822113126851573935413975471896789968515493666638539088027103
802104498957191261465571.

Nivelul de securitate al funcţiilor criptografice este frecvent clasificat după


următoarele categorii: securitate necondiţionată, securitate bazată pe complexitate,
securitate demonstrată. Această clasificare nu se referă la o cuantificare numerică a
nivelului de securitate ci la garanţia pe care acesta se bazează. Încercăm să explicăm aceste
trei noţiuni. Securitate necondiţionată au acele criptosisteme care nu pot fi sparte, indiferent
de puterea de calcul de care dispune adversarul (one-time pad este un astfel de sistem).
Discutăm de securitate bazată pe complexitate atunci când nivelul de securitate este dat de
complexitatea (timpul de calcul ilustrat în număr de paşi) al unui algoritm care poate rezolva
problema şi acest algoritm este cea mai bună cale de a rezolva problema. Noţiunea de
securitate demonstrabilă (provable security) se foloseşte cu privire la acele criptosisteme
despre care se poate demonstra că spargerea lor conduce la rezolvarea altei probleme care se
ştie că este greu de rezolvat.

6
Tabelul 1.1
Securitate AES RSA Curbe eliptice Durata de
la nivel de (dimensiunea (dimensiunea (valoarea utilizare
biţi cheii) modulului) ordinului bazei) recomandată
80 x 1024 160‐223 Până în 2010
112 x 2048 224‐255 Până în 2030
128 128 3072 256‐383 După 2030
192 192 7680 384‐511 x
256 256 15360 512+ x

De asemenea, în ceea ce priveşte nivelul de securitate se face uneori o diferenţiere între două
nivele de securitate distincte numite: securitate slabă – este securitatea care răspunde unor
garanţii în faţa vulnerabilităţilor ce pot fi exploatate de adversari neinteligenţi (cum ar fi erori
introduse de mediu care pot fi corectate prin mecanisme redundante precum codurile de
corecţie a erorilor CRC) şi securitate puternică care răspunde unor garanţii în faţa unor
vulnerabilităţi ce pot fi exploatate de adversari inteligenţi (precum omul, sau agenţii software
inteligenţi). Securitatea puternică este în mare măsură asigurată de tehnicile criptografice, dar
nu exclusiv, de exemplu viruşii informatici pot fi consideraţi agenţi inteligenţi care
exploatează sisteme dar criptologia nu oferă încă soluţii prea bune în acest sens.
Nu este deloc simplu a fixa o terminologie în acest domeniu străin oarecum de limba română.
Vorbim de funcţii criptografice, de exemplu funcţii de criptare, funcţii de semnare digitală,
sau alternativ în loc de funcţie folosim termenul de algoritm, deci algoritm criptografic,
algoritm de criptare, etc. În general însă pentru a asigura operațiile necesare avem nevoie de
perechi de funcţii (algoritmi), de exemplu avem nevoie de o funcţie de criptare dar şi de una
de decriptare, mai mult chiar şi de o funcţie de generare a cheii. Din acest motiv vorbim de
sisteme criptografice, prin acestea desemnând o colecţie de una sau mai multe funcţii. De
exemplu un sistem criptografic cu cheie secretă este colecţie de trei funcţii: o funcţie de
generare a cheii, o funcţie de criptare şi o funcţie de decriptare. În engleză însă, mai frecvent
decât termenul de sistem se foloseşte termenul scheme, de exemplu vorbim de symmetric
encryption scheme desemnând colecţia de trei algoritmi anterior menţionaţi. La fel există
asymmetric encryption scheme şi digital signature scheme. Pentru uniformitate cu
terminologia în engleză, vom folosi termenul de schemă criptografică şi în particular
schemă de criptare simetrică, schemă de criptare asimetrică şi schemă de semnătură
digitală pentru a desemna un sistem format din unul sau mai mulţi algoritmi care asigură
funcţionalităţile necesare (criptare, decriptare, semnare, etc.). Se foloseşte de asemenea
frecvent în criptografie noţiunea de funcţie one-way pentru a desemna o funcţie care este
greu (imposibil în limite rezonabile de timp) de inversat din punct de vedere computaţional.
Un caz particular îl joacă funcţiile one-way cu trapă, adică acele funcţii care devin eficient
de inversat dacă se cunoaşte o informaţie suplimentară numită trapă. În esenţă toate schemele
criptografice se bazează pe funcţii one-way, lucru uşor de dedus de altfel (de exemplu
funcţiile one-way cu trapă stau la baza oricărei scheme de criptare).

În general, o schemă criptografică şi echivalent un sistem criptografic, sau simplu


criptosistem, este un ansamblu format din trei algoritmi: un algoritm de generare a cheilor

7
(cheie dee criptare şi cheie de deccriptare), unn algoritm dee criptare şi un algoritm de decriptarre
alături dee mulţimile din care prrovin intrărille lor – aceest lucru estee sugerat înn Figura 1.11.
Noţiuneaa de criptosiistem aşa cuum a fost annterior definiită nu este ddeloc rigidă ea putând dde
fapt să ssurprindă toate primitivvele criptogrrafice ce voor fi descrisee în continuuare, fiind uun
simplu exxerciţiu de imaginaţie
i a gândi scennariile pentruu care algoriitmul de gennerare a cheeii
poate să lipsească saus algoritm mii de criptaare sau deccriptare îndeeplinesc altee roluri decât
criptarea sau decriptaarea efectivăă a informaţiei, etc.
Aşa cum m am spus, see foloseşte frecvent,
fr fărăă a pierde diin semnificaţţii, termenull de funcţie în
î
locul celuui de algorittm, de exemmplu spunem m funcţie de criptare sauu funcţie de decriptare cu c
e folosită şi noţiunea de primitivvă
referire la algoritmii de criptare şi decriptaree. Totodată este
criptografică, aceastta având un sens larg, deesemnând orrice bloc connstructiv.

Sistem Criptografic

Există o ppaletă largă de funcţii şii sisteme cripptografice înn literatura de


d specialitatte, acestea poot
fi clasificcate ca aparrţinând la treei mari cateegorii: criptoosisteme cu cheie secreetă (sau cheie
simetricăă), criptosissteme cu ch heie publicăă (sau cheie asimetriccă) şi cripto osisteme fărră
cheie. Crriptosistemelle cu cheie simetrică
s utillizează aceeaaşi cheie penntru criptaree şi decriptarre;
avantajull lor este că necesită resuurse de calcuul reduse în timp ce dezzavantajul esste necesitateea
unei cheei secrete cunoscute
c d participaanţii la com
de municare (ddeci un seccret partajatt).
Criptosisstemele cu cheie asimetrică prresupun uttilizarea dee chei differite pentrru
criptare/ddecriptare; avantajul
a estte posibilitattea de a efecctua transmiisii pe canalle nesigure în î
absenţa uunor secrete partajate iaar dezavantajjul este puteerea de calcuul relativ riddicată de carre
este nevooie. În principiu securiitatea nu se poate consstrui decât înn prezenţa funcţiilor diin
ambele ccategorii. Pee lângă cripptosistemele cu cheie simetrică
s şi asimetrică mai există şi
criptosisttemele fără cheie. O taxxonomie a crriptosistemellor este sugeerată în figurra următoaree.

8
Tipuri de sistteme criptogrrafice

Inn continuare sunt date nooţiunile funddamenatle cuu care se opeerază in crop ptologie.
O mulţim me nevidă T se numeşte alfabet.
a
Elementeele alfabetului T se num mesc litere. Una
U şi aceeaaşi literă poaate intra intr--un cuvant ded
mai multte ori. O connsecutivitate finită de elemente din allfabetul T see numeşte cuuvânt.
Numărull de elementee ale alfabetuului se numeeşte lungimeea alfabetuluui.
Un cuvannt ce nu conţţine nici o litteră se numeeşte cuvant nul.
n
Lungimeaa cuvantului, notată cu w, este num mărul de literre in acest ccuvant, undee fiecare literră
se considderă de cate ori
o se intalneeşte in el.
Vom nota cu T* mullţimea tuturoor cuvintelorr alfabetului T.
Submulţiimile mulţim mii T* le vom m numi limbaje (formalee) peste T.
Un mesajj in forma saa originară se numeşte teext clar (uneeori text in cllar, in englezză plaintext))
şi il vom nota cu pt sau cu m (de la „messagee” - mesajul)).
Rescriereea textului clar,
c folosinnd o metodăă cunoscută numai de eexpeditor (eeventual şi de d
destinataar), se numeşşte criptare (sau
( cifrare) a mesajuluii.
Text cripptat sau text cifrat (in engleză cipphertext) se numeşte texxtul obţinutt in rezultatuul
operaţiei de criptare a textului pllan. Textul criptat
c il vom
m nota cu ct sau cu c (dee la „cipher”” -
cifrul). Textul
T cifrat se
s mai numeeşte criptogrramă.
Procesul retransform mării criptogrramei in textuul original eeste numit deecriptare.
Un canall este o cale pentru fluxuul de informaaţii.
Destinataarul primeştte printr-un canal textull criptat şi il i decripteazză, ştiind meetoda folosită
pentru crriptare, obţinnand mesajull iniţial. In liiteratura de specialitate expeditorul
e de obicei este
numit Allice iar desttinatarul estte numit Boob. Deci, Allice şi Bob trebuie să stabilească
s i
in
prealabil detaliile mo odalităţii de criptare şi de
d decriptaree. Aşadar, crriptarea estee o metodă de d
camuflarre a textului clar
c in aşa feel incat subsstanţa să nu sufere
s modifficări semanttice.
Criptareaa se foloseşte pentru a fi siguri că innformaţia esste inaccesibbilă oricărei persoane
p carre
nu deţinee instrumentul necesar decriptării, chiar dacă oricine poatte vedea daatele in form mă
criptograafică. Oricum m nu va inţellege nimic, care
c să condducă spre desscifrarea tex xtului originaal.
Persoanaa care intercceptează cripptograma şi incearcă săă obţină texxtul clar aplicand diversse
metode, iinsă fără a avvea cheia dee decriptare, este numită criptanalistt.

9
În criptografia modernă un sistem de criptare este definit ca o structură cu cinci
componente (P, C, K, E, D):
P = {pt / ptT*} – spaţiul (mulţimea) textelor in clar, scrise pentru un alfabet nevid T (în
mod obişnuit T={0,1});
K – spaţiul (mulţimea) cheilor de criptare k, kK;
Familia funcţiilor de criptare dependentă de chei şi de un algoritm de criptare E
Ek : P C, Ek = {ek / ek (p) = c şi ek este injectivă};
Familia funcţiilor de decriptare dependentă de chei şi de un
algoritm de decriptare D
Dk : C P , Dk = { dk / dk (ek (pt))= pt pentru orice pt฀P};
C spaţiul (mulţimea) mesajelor cu text criptat unde:
C={ct / există kK, aP, ct = Ek (a)}.

Pentru ca un sistem de criptare să fie considerat bun, el trebuie săindeplinească trei criterii:
1. Fiind date ek şi ptP să fie uşor de calculat ek (pt).
2. Fiind date dk şi ctC să fie uşor de determinat dk (ct).
3. Să fie imposibil de determinat pt din ct, fără a cunoaşte dk.
4. Textul criptat trebuie să fie un text banal, fără suspiciuni.

Această condiţie nu mai poate fi considerată importantă şi este utiliză astăzi doar de un
subdomeniu strict al criptografiei, numit steganografie – ştiinţa despre transmiterea secretă a
informaţiei prin păstrarea secretului a insuşi faptului transmiterii acestei informaţii.
Metodele de criptare pot fi divizate pe categorii in felul următor:
a) In funcţie de tipul operaţiilor folosite:
Bazate pe substituţii
Bazate pe transpoziții
b) In funcţie de tipul de chei folosite:
Sisteme Simetrice (single-key, secret-key, private-key)
Sisteme Asimetrice (two-key, public-key)
c) Metoda prin care datele sunt procesate:
Cu cifruri bloc
Cu cifruri fluide (flux, şir, “stream”)
Cifrurile clasice foloseau substituţia sau transpoziţia. Printre metodele moderne de criptare
deosebim două direcţii principale: sistemele cu cheie secretă (sau sisteme simetrice) in care
ek este bijectivă şi sisteme cu chei publice (sau sisteme asimetrice) – sistemele in care ek nu
este bijectivă.

10
Există două tipuri de sisteme simetrice: sisteme care se bazează pe algoritmi de tip bloc şi
sisteme care se bazează algoritmi de tip şir (sau flux, in engleză stream cipher). Algoritmii de
tip bloc acţionează asupra blocurilor de text clar şi text cifrat. Algoritmii de tip şir se aplică
şirurilor de text clar şi text cifrat, la nivel de bit sau octet.

Algoritmii moderni de tip bloc criptează mesajul in blocuri de 64 – 265 biţi. Pentru acesta se
aplică o funcţie matematică intre un bloc de biţi ai mesajului in clar şi cheie (care poate varia
ca mărime), rezultand acelaşi număr de biţi pentru mesajul criptat. Funcţia de criptare este
realizată astfel incat să indeplinească următoarele cerinţe:
ştiind un bloc de biţi ai textului clar şi cheia de criptare, sistemul să poată genera rapid un
bloc al textului criptat;
ştiind un bloc de biţi ai textului criptat şi cheia de criptare/decriptare, sistemul să poată
genera rapid un bloc al textului clar;
ştiind blocurile textului clar şi ale textului criptat, să fie dificil de generat cheia.
Cifrurile şir (sau cifruri fluide) la fel formează o clasă importantă de algoritmi de criptare.
Ceea ce le caracterizează şi le diferenţiază faţă de cifrurile bloc este faptul că cifrurile şir
procesează informaţia in unităţi oricat de mici, chiar bit cu bit, aplicand funcţia XOR intre
biţii cheii şi biţii de cifrat, iar funcţia de criptare se poate modifica in cursul criptării.
Cifrurile şir sunt algoritmi cu memorie, in sensul că procesul de criptare nu depinde doar de
cheie şi de textul clar, ci şi de starea curentă. In cazul in care probabilitatea erorilor de
transmisie este mare, folosirea cifrurilor şir este avantajoasă deoarece au proprietatea de a nu
propaga erorile. Ele se folosesc şi in cazurile in care datele trebuie procesate una cate una,
datorită lipsei de spaţiu de memorie.

11
II. CRIPTOGRAFIA CLASICĂ

Criptografia clasică este criptografia dinaintea calculatorului, de unde şi denumirea de


criptografie pre-computaţională. In criptografia clasică, algoritmii erau bazaţi pe caracter şi
constau dintr-o serie de transformări elementare (substituţii, transpoziţii) ale caracterelor
textului clar. Unii mod securitatea algoritmului. In criptografia modernă bazată pe calculator
(criptografie computaţională), lucrurile s-au complicat, dar multe dintre ideile criptografiei
clasice au rămas nemodificate.
Criptografia clasică se incadrează in clasa criptografiei cu chei simetrice.
Cifrul de substituţie (substitution cipher) este cifrul bloc la care fiecare caracter sau grup de
caractere ale textului clar m este substituit cu un alt caracter sau grup de caractere in textul
cifrat c, descifrarea făcanduse prin aplicarea substituţiei inverse asupra textului cifrat. In
criptografia clasică există patru tipuri de cifruri de substituţie. Deosebim cifruri cu substituţie
monoalfabetică şi polialfabetică.

2.1. CIFRURI CU SUBSTITUŢIE MONOALFABETICĂ


Cifruri de substituţie monoalfabetică (monoalphabetic ciphers) sunt cifrurile in care fiecare
caracter al textului in clar m este inlocuit cu un caracter corespunzător in textul cifrat c. În
continuare sunt prezentate cateva dintre cele mai cunoscute cifruri de substituţie
monoalfabetică.

1. Cifrul lui Cezar este un cifru cu substituţie în care fiecare literă a alfabetului este
înlocuită cu altă literă aflată la o distanţă fixă de litera iniţială. Astfel, pentru o deplasare cu
trei poziţii, A devine D, B devine E, C devine F, ...., Z devine C (pentru cazul alfabetului
englez format din următoarele 26 de litere: ABCDEFGHIJKLMNOPQRSTUVWXYZ).

Criptarea se poate deci scrie din punct de vedere matematic ca o funcţie E, astfel:

C=E(P)=(P+k) mod 26

unde P este un număr ce corespunde unei litere a alfabetului (spre exemplu A=0, B=1, ....,
Z=25) iar k, numit şi cheia cifrului, este un număr întreg între 0 şi 25 (în cazul nostru 3).

Folosind această metodă avem următoarea pereche text clar – text criptat:

Text clar: AZI ESTE MARTI


Text criptat: DCL HVWH PDUWL

Decriptarea se realizează cu următoarea funcţie:

P=D(C)=(C-k) mod 26

unde C este un număr corespunzător unei litere din textul cifrat iar k este cheia de cifrare.

Această metodă de criptare este vulnerabilă la atacuri ce utilizează frecvenţa de


apariţie a literelor într-un text, ştiut fiind faptul că, în orice limbă, anumite caractere sunt mai
frecvent utilizate decât altele.

12
2. Cifrul AFIN este o generalizare a cifrului lui Cezar, cheia de criptare fiind formată din
două numere (k1, k2) iar cheia de decriptare din numerele (k3, k4) astfel:

 criptarea:

C=E(P)=(k1*P+k2) mod 26,

cu condiţiile: ‐ c.m.m.d.c (k1, 26)=1

 decriptarea:
 k 3  k11 mod26
P=D(C)=(k3*C-k4) mod 26 unde  1
k 4  (k1  k2)mod26

Orice cheie k a cifrului afin este determinată complet de valorile intregi (k1, k2) pentru care
cmmdc(k1, 26) = 1. Sunt posibile 12 valori pentru k1: 1, 3, 5, 7, 9, 11, 15, 19, 21, 23, 25 şi 26
valori pentru k2, care se iau independent de k1, cu o singură excepţie k1 = 1, k2 = 0 (care se
exclude deoarece nu conduce la nici o criptare). Aşadar mulţimea cheilor in acest caz este
alcătuită din
12・26 – 1 = 311
chei diferite, număr suficient de slab pentru atacul prin forţa brută.

Criptanaliza sistemelor de criptare monoalfabetice

Punctul slab al sistemelor de criptare monoalfabetice constă în frecvenţa de apariţie a


caracterelor în text. Dacă un text criptat este suficient de lung şi se cunoaşte limba în care este
scris textul clar, sistemul poate fi spart printr-un atac bazat pe frecvenţa apariţiei literelor într-
o limbă.

Sunt construite diverse structuri de ordine relative la frecvenţa apariţiei literelor în


fiecare limbă europeană. De obicei, cu cât un text criptat este mai lung, cu atât frecvenţa
literelor folosite se apropie de această ordonare generală. O comparare între cele două relaţii
de ordine (cea a caracterelor din textul criptat şi cea a literelor din alfabetul limbii curente)
conduce la realizarea câtorva corespondenţe (literă text clar – literă text criptat), ceea ce
stabileşte în mod univoc cheia de criptare. Pentru sistemul Cezar este suficientă stabilirea
unei singure perechi; pentru sistemul afin trebuiesc două perechi etc.

Pentru limba română, un tabel al literelor cele mai frecvent întâlnite este

13
(restul caaracterelor auu în mod norrmal o frecvvenţă de aparriţie sub 1 %
%).

Exemplu u: Să considerăm că s-a interceptat următorul


u texxt, criptat cuu un sistem monoalfabeti
m ic
(nu se ştiie exact ce siistem a fost utilizat).
u

lqakc spp gcxk aca pcmgqb kq q kxc pkersmpqsb vkk vsmgxkbc mkacpc tccacpbqlqs vvk
cgele cmmtxq ms noccxgsb mbxccsp vk exsgk
k oxcbqsbcbbk texbslk spclbk
s gcxk
k cmgqpvkccq
bxkgcbeexslk qxbslkk xktxknkp pbcq tkpbxxq mbxcsps qp cfkxbssmakpb mq qtcxcbex vccx
lsatkvk pq
p bxkrqscq mc zsk txxkc gqxsemss psgs mc mk
m cmbktbk k mc czlk accxk lqgxq vvk
lc gkl gq
q gcxk fkpkccq sp gepbcgb

În prima etapă, vom număra de câte


c ori aparee în text fieccare caracter.. Se obţine taabelul

Caracteer c k x b s q g p m l e p a v b n o f z
F
Frecvenţă 39 388 27 25 233 20 19 18 18 11 9 8 7 7 2 2 2 2 2

Deci caraacterele celee mai frecvennte sunt c şi k. Pe de-altăă parte, cele mai frecvennte caractere
din limbaa română sun nt a, i şi e (teextul nu estee destul de mare
m pentru a putea face o distincţie
netă). În mod cert, a  {c, k}. Suunt patru opţţiuni posibilee, din care trrei se eliminââ rapid.
Rămâne de abordat c = A, k = E. E

Vom nota cu litere mari


m caractereele din textuul clar; prin înlocuirea
î lui c cu A, a luui k cu E,
textul devvine

lqaEA sp gAxE aAa pAmggqb Eq ExA E pEersmmpqsb vE vsmgxEbA A mEaApA


tAaApbqqlqs vE Aggele Amtxq
q ms noAxggsb mbxAsp p vE exsgE
E oxAbqsbA AbE texbsllE
spAlbE gAxE AmggqpvEAq bxxEgAbexslk k gqxbslE xE
EtxEnEpbAAq tEpbxq mbxAsps qpq
maEpb mqttAxAbex vA
AfExbsm Ax lsatEvE pq
p bxErqsAAq mA zsE txEA gqxseems psgs mA
mE AmbbEtbE mA AzlE
A aAxE lqgxq vE lA
A gEs gq gA
AxE fEpEAqq sp gepbAggb

14
Cuvântull ExA de pe p primul râând are caraacterul din mijloc
m (x) de
d frecvenţăă ridicată (227
apariţii); deci el trebuuie să coresppundă unei litere
l frecvennte din limbaa română şi – în plus – să
s
aibă semnificaţie semantică.
s C
Concluzie: aacest cuvânnt este ERA A. Deci x = R. Facem m
substituţiia şi se obţin
ne textul:

lqaEA ssp gARE aAa pAmggqb Eq ERAE pEersm


mpqsb vE vsmgREb bA mEaApA
tAaApbq
qlqs vE Agele AmtRq ms noARggsb mbRAsp p vE eRsgE
E oRAbqsbA AbE teRbsllE
spAlbE gARE AmgqpvEAq
A q bREgAb beRsleR gq qRbslE RE EtREnEpbAAq tEpbRRq
mbRAspps qp AfERRbsmaEpb mqtARAbeR
m R vAR lsattEvE pq bRRErqsAq mA
m zsE tREA
gqRsemss psgs mA mE
m AmbEtbbE mA AzlE
E aARE lqggRq vE lA ggEs gq gARE
E fEpEAq sp
s
gepbAgb
b

În acest text, cuvâântul REtRE EnEpbAq are corespoondent în liimba român nă numai pe p
REPREZ ZENTA{I,MM, U}. De aiici se obţin decriptările
d t = P, n = Z
Z, p = N şi b = T. În finnal
se obţinee textul:

LUMEAA IN CARE MAM NASSCUT EU ERA


E NEOBIISNUIT DE
E DISCRETTA SEMANA
PAMANNTULUI DED ACOL
LO ASPRU U SI ZGGARCIT S STRAIN DE D ORIC
CE
GRATUUITATE PORTILE
P INALTE CARE ASCUNDEA
A AU TRECATORILOR
CURTIL
LE REPREZENTAU PENTRU
P STRAINI UN
N AVERTIISMENT SU UPARATOR
DAR LIMPEDE NU U TREBUIA
AU SA FIE
E PREA CU
URIOSI NIC
CI SA SE ASTEPTE
A SA
AFLE MARE
M lUCR
RU DE LA CEI
C CU CA ARE VENEAAU IN CON
NTACT

Pentru aalte aplicaţiii, oferim taabelele de frecvenţă a literelor ppentru princcipalele limbbi
europenee (am reţinutt din fiecare limbă numai cele mai frrecvente nouuă litere):

15
2.2. C
CIFRURI CU
C SUBSTITUŢIE PO
OLIALFABE
ETICĂ

1. Cifrull VIGENER
RE

Numele sistemului vinev de la baaronul franccez Blaise dee Vigenere (1523−15966) diplomat la
curtea reegelui Henry y III. A fosst consideratt mult timp unul din ceele mai bunne sisteme de d
criptare. Cifrul Vigen nère este o generalizaree a cifrului lui Cezar. Acceastă metoddă de criptarre
este o forrmă simplă de d substituţiie polialfabeetică în care un grup de n caractere din
d textul claar
este înloccuit (substituuit) de un alt grup de n caractere înn textul cifrrat. Pentru criptarea
c unuui
text se uutilizează tabbelul de mai jos, cunosscut şi sub numele
n de Tabelul
T Vigeenère. El este
format diin cele 26 dee caractere ale alfabetuluui englez:

(ABCDE EFGHIJKLM MNOPQRST TUVWXYZ Z) aranjate astfel: pe prima linie caracterele


alfabetuluui în ordine alfabetică, pep linia 2 se află linia 1 rotită
r spre stâânga cu o po
oziţie, pe linia
3 se află linia 2 rotităă spre stângaa cu o poziţiee ş.a.m.d.

Tabeluul Vigenère

Fiecare linie
l a tabeluului poate fif considerată un alfabett utilizat penntru criptaree. Procesul de
d
criptare uutilizează divverse linii alle tabelului în funcţie de cheia utilizaată.

Criptareaa se face astffel: Se alege drept cheie un cuvânt ooarecare (de preferinţă câât mai lung) –
spre exem mplu cuvânttul LUNI. See scrie textuul clar şi sub acesta se sccrie cheia pâână se terminnă
mplu textul: AZI
tot textull. Spre exem A ESTE MIERCUR RI se scrie aastfel:

16
Text clar: A Z I E S T E M I E R C U R I
Cheie: LUN I LUNI LUNI LUN

Textul criptat se obţine astfel: Se caută în prima linie a tabelului caracterul corespunzător din
textul clar şi în prima coloană a tabelului caracterul corespunzător din cheie. Caracterul din
textul cifrat se află în tabel la intersecţia dintre coloana şi linia corespunzătoare celor două
caractere (din textul clar şi respectiv, cheie). În exemplul nostru obţinem:

Text clar: A Z I E S T E M I E R C U R I
Cheie: LUN I LUNI LUNI LUN
Text cifrat: L T V M D N R U T Y E K F L V

Decriptarea se face astfel: Se scrie textul criptat şi sub acesta se scrie cheia până se termină
tot textul. Se caută în prima coloană caracterul corespunzător din cheie. Pe linia acestui
caracter se caută caracterul corespunzător din textul cifrat iar caracterul din textul clar se
găseşte pe prima linie a tabelului în această coloană. În cazul exemplului nostru, avem:

Text cifrat: L T V M D N R U T Y E K F L V
Cheie: LUN I LUNI LUNI LUN
Text clar: A Z I E S T E M I E R C U R I

Criptarea se poate scrie din punct de vedere matematic ca o funcţie E, astfel:

E(P)=(P+K) mod 26

unde:
P =(p1, p2, ..., pn) – grup de n caractere din textul clar
K =(k1, k2, ..., kn) – cheia utilizată pentru criptare
Decriptarea se poate scrie din punct de vedere matematic ca o funcţie D, astfel:
D(C)=(C‐K) mod 26
unde:
C =(c1, c2, ..., cn) – grup de n caractere din textul criptat
K =(k1, k2, ..., kn) – cheia utilizată pentru criptare
Criptanaliza sistemului Vigenere

Sistemul Vigenere a fost utilizat secole de-a rândul, fiind considerat ca fiind unul din cele mai
sigure sisteme de criptare. În 1917 de exemplu, prestigioasa revistă ”Scientific American” îl
considera imposibil de atacat. Numai că acest sistem a fost spart de Friedrich Kasiski încă din
1863.

Fie x = x0x1 . . . xn−1 textul criptat cu cheia K = k0k1 . . . kp−1. Putem aranja acest text sub
forma unei matrici cu p linii şi n/p coloane, astfel

17
Elementeele de pe primma linie au ffost criptate după formula
xpr  apr  k0 (mod26)
(
adică cu un sistem Cezar (k0 fiinnd o valoare fixată din Z26 2 ). În mod similar
s şi cellelalte linii.
Deci, daccă s-ar cunooaşte lungim
mea p a cheiii, problema s-ar reducee la criptanaaliza a p texte
criptate cu
c Cezar – siistem de cripptare monoallfabetic.
Sunt cunnoscute douăă metode peentru aflareaa lungimii cheii: testul lui Kasiski şi indexul de d
coincidennţe.
Prima meetodă constăă în studiul textului
t cripttat şi aflareaa de perechi de segmente de cel puţiin
3 caracteere (aceastăă lungime este
e propusăă de Kasiski) identice. Pentru fieccare astfel de d
pereche, se determinăă distanţa dintre segmennte.
După ce s-au găsit maim multe astfel
a de distanţe, valoaarea lui p vaa fi cel mai mare divizoor
comun all lor (sau – eventual
e un ddivizor al acestuia).
Considerrăm următoruul text criptaat cu cifrul Vigenere:
V

DVLOEGOGLCGIWWAFRSCKARVSSRAAKRSTUHDA
QLNCJTSRUJVCWEAWKOHZTIEUARIQLNCJCIKA
QVAGKASJTSGRWDAGKRCWAOLNSZPCVZWZCSCE
PIERVMWYAWVMWEEGTU

Textul esste destul dee scurt (146 litere) şi nuu se mai ştie nici un textt trimis anterrior. Folosinnd
metoda KKasiski, se găseşte secveenţa QLNCJJ care apare pe p rândul al doilea.
Distanţa dintre celee două apaariţii este 27. De aseemenea, appar două cu uvinte foarrte
asemănăttoare: AQLN N şi AOLN, având între ele distanţa 57.
Deci puteem bănui că avem de-a face
f cu un cuuvânt cheie de
d lungime cmmdc(27,
c 5 = 3.
57)

Rescriem
m textul pe co
oloane, fiecaare coloană având
a trei ellemente. Anuume:

DOOCWFCR SA SHQCSJWWHI AQCIQGSSWGCOSCWSPRWWWG


VEGGWRKVRKTD LJRVE K ZERLJKVKJGDKWLZVZCIV Y V E T
LGL I A SA SAR UANTUCAO TUI NCAAATRARANP ZCEEMAM E U
Numărânnd frecvenţa apariţiei liteerelor pe fieccare linie, obbţinem tabeluul

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

În limba română, priimele litere ca


c frecvenţăă sunt A−E− −I, aflate la ddistanţă egallă una de altta.
Deci vomm căuta pe fiecare liniee tripletele de
d litere situuate pe poziţţiile (k, k+44, k+8) avânnd

18
frecvenţăă semnificatiiv de mare (maximă în cazul
c unui teext lung). Peentru linia 3, alegerea este
simplă: eea este chiar A−E−I (16 aapariţii din 449 posibile), deci o deplaasare 0 în coodul Cezar.

unt două possibilităţi: O − S −W (depplasare 14) saau S −W − A


Pentru prrima linie, su

(deplasarre 18), ambeele cu câte 188 apariţii.

par şi pentru a doua liniee: C − G − K (deplasare 2) cu 10 apaariţii, sau R −


Tot douăă variante ap
V − Z (deeplasare 14) cu 13 apariţţii.

Deplasărrile dau exacct codificările cheii. Deeci trebuie luuate în conssiderare patrru variante de
d
cuvânt chheie: OCA, ORA, SCA A sau SRA. Cum C de obiccei cuvântull cheie are o semnificaţţie
semantică (pentru a putea
p fi reţinnut mental uşşor), putem presupune
p căă el este OCA sau ORA.

O simplăă verificare reţine


r drept cuvânt
c cheie ORA, care conduce la decriptarea
d c
corectă

a textuluii (spaţiile şi semnele de punctuaţie se


s pun coresppunzător):

PELANG
GAPLOPIIIFARASOT
TADESEAA
AMTRECUTTMACUNO
OSTEAUVEECINIITOT
TI
TUNUM
MAICUNOSSCUTACEAASTAESTEPRIMASTR
ROFAAUN
NEINPOEZIIICELEBRE
E
DEMIHA
AIEMINESSCU

A doua mmetodă de afflare a lungim mii cheii de criptare într-un sistem Vigenere
V se bazează
b pe uun
concept ddefinit în 19220 de Wolfee Friedman înn 1920: indeexul de coinccidenţe.
Definiţie: Dacă x = x1x2 . . . xn esste o secvennţă de n caracctere alfabettice, se numeeşte ”index de d
coincidennţe” al lui x probabilitaatea ca două caractere din x, alesee aleator, săă fie identicce.
Această valoare
v otează Ic(x).
se no
Să notămm cu fi frecveenţa de apariiţie în x a carracterului litteral codificaat i (0  i  25).
Două liteere din x pott fi alese în Cn2 moduri.. Din acesteaa, sunt C 2fi moduri
m ca am
mbele să aibbă
aceiaşi coodificare i (00  i  25). De aici se poate deduce formula

Să presuupunem că x este un texxt în limba română. Dinn tabelul freecvenţelor de d apariţie ale
literelor, notând pi probabilitateea de apariţţie a caractterului codifficat cu i (00  i  255),
valoarea pe care o puutem estima pentru indexxul de coinciidenţe este

Motivaţiee: Probabilittatea ca douăă elemente aleatoare


a să fie ambele eegale cu caraacterul de cood
i este pi2 (0  i  25). Afirrmaţia este valabilă pentru orice criptare cu
c un sistem
m
monoalfaabetic. Să presupunem
p acum că amm aranjat teextul criptat x = x0x1 . . . xn−1 într--o
matrice cu
c p linii şi n/p
n coloane ((unde p este un număr înntreg pozitiv arbitrar), asstfel

19
Dacă p eeste chiar luungimea cheiii, atunci fieecare valoare Ic(xi) trebuuie să fie ap
propiată de 00,
0788. În caz contrarr, şirul xi vaa arăta multt mai aleatoor, fiind obţţinut prin am mestecul unei
secvenţe de caracteree criptate cuu chei diferitte. Pentru o secvenţă coomplet aleatooare, valoareea
indexuluii de coincideenţe este

Valorile 0, 0788 ¸si 0,0 0384 vor constitui puunctele de exxtrem pe caree le poate luua Ic. Vom luua
deci diveerse valori peentru p, pânăă vom găsi una
u care să se apropie câât mai mult ded 0, 788 şi nnu
de 0, 3844. Aceea poaate fi consideerată – cu suuficientă siguuranţă – că este lungimeaa cheii.

În etapa a doua, vom


m încerca să aflăm
a efectivv cheia K = k0k1 . . . kp−1.

Dacă nottăm n1 = n/p


p lungimea secvenţei xi, atunci disstribuţia de pprobabilitatee ale celor 226
litere în xi este

Secvenţaa xi a fost obbţinută printrr-o criptare Cezar


C cu o deplasare
d ki. Deci, situaţţia ideală este
când disttribuţia de prrobabilitate a deplasării

este cât m
mai apropiatăă de distribuuţia de probaabilitate p0, p1, . . . , p25 a limbii romââne. Fie un
întreg m (0  i  25)); definim exxpresia

Dacă m = kj (0  j  p-1), ne puttem aştepta ca

Dacă m  kj , atuncii Fm va fi sem mnificativ mai


m mic decâât această valloare. Deci, după cel muult
25 încerccări, se poatee afla deplasarea kj şi decci a j-a literăă din cheie.

20
2.3. CIFRURI CU SUBSTITUŢIE POLIGRAFICĂ

Sunt cifruri în care textul clar este împărţit în blocuri de o anumită lungime care sunt
substituite. Spre exemplu un cifru care criptează blocuri de câte două litere se numeşte cifru
bigrafic.

1. Sistemul de criptare Playfair

Sistemul a fost inventat 1854 de englezul Charles Wheatstone. Cel care îl promovează şi îl
susţine pentru a fi adoptat ca cifru oficial al Marii Britanii este baronul Lyon Palyfayr şi acest
sistem de criptare capătă numele baronului.

Ideea de bază este următoarea: Din cele 26 litere ale alfabetului se elimină una de frecvenţă
minimă; să spunem Q. Restul literelor se aranjează arbitrar sub forma unui pătrat 5×5. Să
exemplificăm sistemul pentru tabloul

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

Acest tabel va forma atât cheia de criptare cât şi cea de decriptare.


Regulile de criptare/de-criptare sunt:
• Textul clar este separat în blocuri de câte două caractere (ignorând spaţiile). Condiţia este ca
nici un bloc să nu conţină aceiaşi literă, iar textul să fie de lungime pară. Aceste deziderate se
realizează uşor modificând puţin textul clar (se introduce o literă de frecvenţă mică între cele
două litere egale, respectiv ca ultim caracter).
• Fiecare bloc se criptează astfel: dacă cele două litere nu sunt plasate în tabel pe aceiaşi linie
sau coloană (de exemplu A şi E), se cercetează colţurile dreptunghiului determinat de cele
două litere (în cazul nostru A, F,O,E). Perechea AE este criptată în FO. Ordinea este
determinată de ordinea liniilor pe care se află literele din textul clar. Astfel, EA se criptează
în OF, SF în ZB etc.
Dacă cele două litere se găsesc pe aceaşi linie (coloană), se merge ciclic cu o poziţie la
dreapta (respectiv jos). Deci CA se criptează în AX, WX în UG, CA în AX etc.
De exemplu, textul clar AFARA PLOUA se criptează: XHHPPDPEPX. Se observă că cele
patru apariţii ale caracterului A au fost criptate cu X, H, P şi din nou X.
Regulile de bază pot fi modificate sau completate după necesităţi. Astfel, se poate adăuga din
loc în loc câte o literă falsă (cu frecvenţă foarte redusă, cum ar fi X, Y ) care să modifice
textul criptat. Pătratul 5 × 5 poate fi înlocuit cu un dreptunghi 4 × 6 sau 3 × 8, cu schimbările
corespunzătoare în alegerea literelor care se elimină.

21
Pentru a păstra cheiaa în siguranţţă, se recom mandă memorrarea acesteia. Cum o astfel
a de cheie
este extreem de greu de d memorat, se foloseştee un cuvânt cheie c sau o propoziţie
p cuu toate literele
distincte.. Acesta cuvvânt este scrris la începuutul tablouluii. Spaţiile răămase sunt completate
c c
cu
restul liteerelor alfabeetului, scrise în ordinea apariţiei
a lor.

Astfel, înn preajma prrimului răzbboi mondial, armata rom


mână foloseaa un dreptun
nghi 3 × 8 diin
care lipseeau literele Q şi K. Cuvântul cheie era
e ROMAN NESC. Un asstfel de tabloou putea aveea
de exempplu forma

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

Palyfair rezistă la attacuri bazatee pe frecvennţa apariţiei, dar nu şi laa cele prin text
t clar alees.
Implementări actualee folosesc reeprezentarea binară a liteerelor şi fac un pas supliimentar: duppă
ce s-a obbţinut o pereeche criptatăă, aceasta se combină prrintr-un XOR R (adunare modulo
m 2) cu
c
perecheaa criptată anterior.

2. Cifrull HILL

Criptaree
Fiecare liiteră este traatată ca o cifr
fră din baza 26:
2 A = 0, B =1 ş.a.m.d. Un bloc de n litere este
consideraat ca un vecttor cu n dimeensiuni, şi multiplicat
m cuu o matrice n × n, modullo 26.
Componeentele matriccei reprezinttă cheia, caree trebuie alese astfel încâât matricea să
s fie
inversabiilă (pentru a asigura posiibilitatea deccriptării). Coonsiderăm mmesajul 'ACTT', şi cheia dee
mai jos

(sau GY
YBNQKURP
P în litere):

Deoarecee 'A' este 0, 'C'


' este 2 şi 'T' este 19, mesajul
m este vectorul:

Deci vecttorul criptat este dat de:

care coreespunde textuul criptat 'PO


OH'. Acum, presupunem
m că mesajul nostru este 'CAT',
' sau:

De aceasstă dată, vecttorul criptat este dat de:

22
care coreespunde cripptotextului 'F
FIN'. Fiecaree literă s-a schimbat.
s Ciifrul Hill aree proprietateea
de difuziie a lui Shan
nnon, iar unn cifru Hill n-dimensiona
n al are proprrietatea de difuzie peste n
simbolurri simultan.

Decriptarre

Pentru a putea decriipta, transfoormăm criptootextul în vvector şi apooi îl înmulţiim cu inverssa


matricei cheie. (Exisstă metode standard
s de calculare
c a inversei
i uneei matrici; veezi inversareea
matriceloor pentru dettalii.) Găsim
m că, în , inversa mattricei din exeemplul de mai
m sus este:

(IIFKVIVVM
MI în litere)

Luând crriptotextul dee mai sus, 'P


POH', obţinem
m:

care reprezintă cuvânntul 'ACT'.

Complicaaţia care poaate apărea este


e faptul căă nu toate matricele
m au inverse. Există o metoddă
directă dde determinaare a acestei proprietăţi. Dacă determ minantul unei matrice este
e 0, sau arre
factori coomuni cu mo odulul (adicăă factori ca 2 sau 13, în cazul moduulului 26), attunci matriceea
nu poate fi folosită în
î cifrul Hilll. Din fericirre, dacă bazza nu are facctori mici, ceele mai multe
matrice au
a inverse. De
D exemplu, matricea cheie:

25 este ccoprim cu 266, deci nu estee nici o problemă. Riiscul ca deteerminantul să s aibă factoori
comuni ccu modulul poate
p fi elim
minat prin aleegerea unui modul
m prim.. În consecinnţă, o variantă
utilă de ccifru Hill adaaugă încă 3 simboluri
s peentru a creştee modulul laa 29.

23
2.4. CIFRURI CU TRANSPOZIŢIE

Un cifru cu transpoziţie este o metodă de criptare prin care poziţiile caracterelor dintr-un text
sunt modificate conform unui anumit algoritm şi astfel textul criptat este o permutare a
textului clar. Din punct de vedere matematic pentru criptare este folosită o funcţie bijectivă ce
modifică poziţia caracterelor din textul clar iar inversa acestei funcţii este folosită pentru
decriptare.

1. Transpoziție simplă

În transpoziţia pe coloane mesajul este scris pe rânduri de lungime şi apoi citite coloană cu
coloană într-o anumită ordine dată de o cheie. Spre exemplu pentru criptarea textului AZI
ESTE MIERCURI folosind cheia CASTEL avem

CASTEL
2 1 56 3 4
AZIES T
EMIERC
URI

Textul criptat obţinut este: ZMR AEU SR TC III EE.

De obicei este folosită o dublă transpoziţie folosind aceeaşi cheie sau chei diferite. Spre
exemplu, textul anterior este criptat încă o dată folosind cheia BRAD obţinem:
BRA D
2 4 1 3
ZMRA
E US R
TC I I
I E E

Se obţine textul criptat RSIE ZETI ARI MUCE.


Decriptarea se face în ordine inversă criptării.

METODE DE CRIPTANALIZĂ

Deoarece transpoziţia nu afectează frecvenţa de apariţie a caracterelor dintr-o anumită limbă,


textul cifrat va avea aceeaşi distribuţie a caracterelor ca şi limbajul obişnuit. Un astfel de cifru
este uşor de spart după ce se determină lungimea cheii.
Transpoziţia este de obicei folosită în combinaţie cu alte metode. Spre exemplu un cifru cu
substituţie combinat cu un cifru cu transpoziţie înlătură slăbiciunile ambelor tipuri de
criptare.

2. Cifrul ADFGVX

Cifrul ADFGVX este o combinaţie între un cifru cu transpoziţie şi unul cu substituţie şi


se numeşte astfel deoarece utilizează numai aceste 6 litere (ADFGVX) pentru criptarea unui
mesaj clar. Textul clar este substituit cu perechi de câte două litere după care este realizată o
transpoziţie folosind o cheie oarecare.

24
Exemplu:
Tabelul utilizat pentru substituţie este următorul:

A D F G V X
A K Z W R 1 F
D 9 B 6 C L 5
F Q 7 J P G X
G E V Y 3 A N
V 8 O D H 0 2

X U 4 I S T M

Considerăm următorul text clar: AZI ESTE MIERCURI şi cheia CASTEL.


Criptarea se face astfel: În tabelul de mai sus se caută caracterele care apar în textul
clar. Spre exemplu caracterul A se află la intersecţia liniei G cu coloana V, deci se va înlocui
cu GV. Lui Z îi corespunde perechea AD ş.a.m.d.
Textul substituit este: G V A D X F G A X G X V G A X X X F G A A G D G X A
AGXF

Transpunerea se face astfel: Folosind textul anterior se creează un tabel cu şase coloane care
are cheia CASTEL pe prima linie:

CAST E L
GVADXF
GAXGXV
GAXXXF
GAAGDG
XAAGXF

Textul cifrat se obţine prin citirea acestui tabel pe coloane în ordinea alfabetică a primei linii,
astfel: prima coloană este cea care are pe prima linie litera A: VAAAA; a doua este coloana
corespunzătoare lui C: GGGGX, ş.a.m.d. Se obţine textul transpus: VAAAA GGGGX
XXXDX FVFGF AXXAA DGXGG

Această metodă de criptare (substituţie + transpoziţie) devine şi mai puternică în cazul în care
este combinată cu fracţionarea.
Fracţionarea este un stagiu preliminar care divide fiecare simbol din textul clar în mai multe
simboluri din textul cifrat. Un astfel de exemplu îl constituie cifrul TRIFID.

2. Cifrul TRIFID

- Fiecare element este fracţionat în 3 elemente


- Utilizează 3 tabele

25
Tabel 1 Tabel 2 Tabel 3

1 2 3 1 2 3 1 2 3

1 F J O 1 V Z L 1 E U Q

2 R X C 2 G D P 2 N H A

3 Y B S 3 M W T 3 . K I

Teoretic, mesajul este convertit în coordonatele din aceste tabele. Practic este mai
uşor de a transforma aceste tabele în următorul tabel :

F 111 C 132 W 223 U 321

R 112 S 133 L 231 H 322

Y 113 V 211 P 232 K 323

J 121 G 212 T 233 Q 331

X 122 M 213 E 311 A 332

B 123 Z 221 N 312 I 333

O 131 D 222 . 313

Textul clar este scris pe linii, sub fiecare caracter fiind scrise coordonatele corespunzătoare:

AZI ESTE MIERCURI


323 3123 2 33 1 13 1 3
323 1331 1 31 1 32 1 3
213 1331 3 31 2 21 2 3

Cifrele sunt citite pe linii şi sunt grupate câte 3, obţinând textul criptat:

323 312 323 311 313 323 133 113 113 213 213 133 133 122 123
K N K E . K S Y Y M M S S X B

Decriptarea se face prin inversarea procedurii anterioare.

26
III. CRIPTARE CU CHEIE SIMETRICĂ

În construcţia funcţiilor criptografice simetrice există două operaţii universal utilizate:


i) Substituţia înseamnă înlocuirea unor simboluri sau grupuri de simboluri prin alte
simboluri sau grupuri de simboluri şi creează confuzie.
ii) Transpoziţia (sau permutarea) – înseamnă permutarea (amestecarea) simbolurilor din
cadrul unui bloc şi creează difuzie (numită uneori şi difuziune).

Aceste două noţiuni au fost introduse pentru prima dată de Claude Shannon în 1949 şi
reprezintă concepte fundamentale în construcţia schemelor moderne de criptare simetrică.
Toate schemele moderne conţin casete de substituție S-Box şi permutare P-box pentru a crea
confuzie şi difuzie. Se foloseşte termenul de cifru produs (product cipher) pentru a desemna
un cifru obţinut din combinarea a două sau mai multe proceduri care conduc la un
criptosistem mai sigur decât utilizarea individuală a acestora. Astfel, o reţea de substituţii (S)
şi permutări (P), denumită în general reţea-SP (SP-network), este unul dintre cele mai simple
cazuri de cifruri produs. Standardul în criptarea simetrică, valabil până în 2001, a fost DES
(Data Encryption Standard). DES este un cod construit pe o reţea Feistel cu 16 runde care
transformă mesaje de 64 de biţi în criptotext de 64 de biţi.

3.1. CIFRUL ”DES”(DATA ENCRYPTION STANDARD) SIMPLU

Cel mai utilizat algoritm de criptare simetric este algoritmul DES (Data Encryption
Standard) adoptat în 1977 de către Biroul Naţional de Standarde, acum Institutul Naţional de
Standarde şi Tehnologie (NIST) din SUA.
• Sistemul DES este primul standard dedicat protecţiei criptografice a datelor de
calculator.
În criptografie un cifru de tip bloc este un cifru cu cheie simetrică ce operează asupra
unui grup de biţi de lungime fixă, numit bloc. La criptare textul clar este împărţit în blocuri
de lungime fixă (de exemplu 8 biţi) şi se obţine un text criptat de aceeaşi lungime cu textul
clar folosind o cheie simetrică. Decriptarea utilizează aceeaşi cheie ca şi criptarea.
Cifrul DES simplu criptează un bloc de 8 biţi folosind o cheie K de 10 biţi. Algoritmul
de criptare presupune utilizarea a cinci funcţii executate în ordinea următoare:
1. O permutare iniţială PI
2. O funcţie f K 1
3. O funcţie de interschimbare SW ce comută între ele cele două jumătăţi ale textului
4. O funcţie fK 2
5. O permutare finală PF ce este inversa permutării iniţiale.
Mai întâi, folosind cheia iniţială K se generează două subchei K1 şi K2 pe 8 biţi folosind
următorul algoritm:

27
Algoritm generare subchei

1. Se alege o cheie K pe 10 biţi


2. Lui K i se aplică permutarea următoare (notată P10):
3.
 1 2 3 4 5 6 7 8 9 10 
P10 :  
 3 5 2 7 4 10 1 9 8 6 
4. Se împarte K în două jumătăţi: KL şi KR
5. Se face o rotire la stânga cu o poziţie pentru KL şi KR
6. Se unesc KL şi KR şi se obţine K’
7. Se determină subcheia K1 din K’ conform tabelului P8:
8.
1 2 3 4 5 6 7 8
P8 :  
 6 3 7 4 8 5 10 9 
9. Se face o rotire la stânga cu două poziţii pentru KL şi KR
10. Se unesc KL şi KR şi se obţine K’’
11. Se determină subcheia K1 din K’’ conform tabelului P8

După ce au fost obţinute subcheile K1 şi K2, textul este împărţit în blocuri de 8 biţi care sunt
criptaţi după următorul algoritm:

Algoritm de criptare:

1 2 3 4 5 6 7 8
1. Se face o permutare iniţială PI a textului M: PI :  
2 6 3 1 4 8 5 7
2. Se împarte textul în două jumătăţi de câte 4 biţi: M= L | R
 1 2 3 4 5 6 7 8
3. Jumătatea R se extinde la 8 biţi conform tabelului E: E : 
 4 1 2 3 2 3 4 1
Se obţine RE.
4. Se face operaţia XOR între K1 şi RE şi se obţine un şir de 8 biţi care se pun într-un tabel
f f f f 
notat cu F format din 2 linii şi 4 coloane: F   00 01 02 03 
 f10 f11 f12 f13 
5. Cele două linii ale lui F se utilizează pentru a adresa doua tabele S0 şi S1 numite cutii S:
1 0 3 2 0 1 2 3
   
3 2 1 0 2 0 1 3
S0   , S1  
0 2 1 3 3 0 1 0
   
3 1 3 2 2 1 0 3
Prima linie a lui F este utilizată pentru a adresa pe S0 astfel:
- perechea f00f03 indică linia lui S0;
- perechea f01f02 indică coloana lui S0.

28
A douua linie a luii F este utilizzată pentru a adresa pe S1 astfel:
- perechea f10f13 1 indică linia lui S1;
- perechea f11f12 1 indică colo oana lui S1.
Se obbţin două nuumere (unul din S0 celăllalt din S1) care exprim mate în binarr ne dau patrru
biţi notaţi
n Sk1.
1 2 3 4 
6. Sk1 se permuttă conform taabelului P4: P4 :   . Se obţine Sk1
p

 2 4 3 1 
7. Se face XOR între L şi Skp1 . Rezultatuul se noteazăă tot L.
8. Se interschimmbă L cu R (ffuncţia SW).
9. Se concateneaază L cu R.
10. Se repetă paşii de la 2 la 7.
7
11. Se concateneaază L cu R.
12. Se apliică o permuutare f
finală conform tabeluluui:
1 2 3 4 5 6 7 8
P  PI 1  
PF 
 4 1 3 5 7 2 8 6

Aceşti algoritmi poatte fi sintetizaaţi în următooarele figuri

Decriptarrea se face similar cu criiptarea, toatee operaţiile efectuându-s


e se în ordine inversă.
i

29
• DES este un cifru bloc, cu lungimea de 64 biţi prelucraţi în conjuncţie cu o cheie
formată din 56 biţi.
• Mai sunt folosiţi 8 biţi pentru detectarea erorilor de transmisie. Această cheie este
păstrată de către toţi membrii grupului care, astfel, pot cifra/descifra datele transmise
de la unii la alţii.
• Privit în ansamblu, algoritmul DES este o combinaţie a două tehnici elementare de
criptare: confuzie şi difuzie
Construcţia fundamentală a unui bloc DES este o combinaţie unică a acestor tehnici (o
substituţie urmată de o permutare) asupra textului clar, bazată pe cheie.
• Această construcţie este cunoscută ca rundă. Algortimul DES este compus din 16
runde.
• Algoritmul este bazat pe un set de permutări, substituţii şi sumă mod 2, aplicate
iterativ de 16 ori, pe un bloc de date de 64 biţi, prin folosirea de fiecare dată a unei
chei diferite de 48 biţi, extrase iniţial dintr-o cheie de 56 biţi.
• Datele sunt împărţite în blocuri de 64 biţi şi criptate fără a modifica lungimea lor.

Cifrarea constă din trei categorii de prelucrări care se fac asupra blocului cu text clar de la
intrare:

1. Blocul de date este supus unei permutări iniţiale, IP.


2. Blocul permutat trece printr-un calcul complex care depinde de cheie şi care constă din 16
iteraţii funcţional identice. Considerând cei 64 biţi ai unui bloc supuşi unei iteraţii “i”, se
notează cu L şi R cele două jumătăţi de 32 de biţi, stînga şi dreapta, care-l compun. Fie
i-1 i-1
K cheia pentru iteraţia “i” şi un bloc de 48 de biţi aleşi din cei 56 de biţi ai cheii. Prelucrările
i
unei iteraţii sunt:
L =R
i i-1
R = L ⊕ f(R ,K )
i i-1 i-1 i
3. Ultima iteraţie este diferită de celelalte, fiind definită de ecuaţiile:
L =R
16 15
R = L ⊕ f(R ,K ).
16 15 15 16

30
A
Algoritmul DEES are următtorii paşi:

Pasul 1: Crearea a 16 sub bchei, fiecarre subcheie ffiind de lunggime 48 de biţi.


b
Cheia de 64 de d biţi este permutată
p onform tabeelului PC‐1. Deoarece
co D prrimul elemen nt
din tabel este „57”, înseamnă
î căă al 57‐lea bit din cheia originală
o K devine primul bit din cheia
permutattă K’ . Al 49 9‐lea bit din cheia originală devine aal 2‐lea bit all cheii permutate. ... Al 4
4‐
ea bit al cheii originaale devine ultimul bit în cheia perm mutată. De no otat este fap
ptul că numai
56 de biţţi ai cheii origginale apar în
î cheia perm mutată.

P
PC-1
557 49 41 33 25 117 9
1 58 50 42 34 266 18
1 2
10 59 51 43 35 27
1 11
19 3 60 52 444 36
663 55 47 39 31 2
23 15
7 62 54 46 38 300 22
1 6
14 61 53 45 377 29
221 13 5 28 20 12 4

31
Exemplu:
Din cheia originală de 64 de biţi:
K = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001
Avem permutarea pe 56 de biţi
K’ = 1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111
Această cheie se împarte în două jumătăţi C0 şi D0 fiecare de câte 28 de biţi
Exemplu:
Din cheia K’ luăm:
C0 = 1111000 0110011 0010101 0101111
D0 = 0101010 1011001 1001111 0001111

Cu C0 şi D0 definite creăm şaisprezece blocuri de Cn şi Dn unde 1  n  16 . Fiecare pereche


de blocuri Cn şi Dn este formată din perechile anterioare Cn-1 şi Dn-1 pentru n=1,2,…..16
utilizând următorul tabel de deplasări la stânga ale blocului anterior. Pentru a efectua o
deplasare la stânga mutăm fiecare bit cu 1 la stânga cu excepţia primului bit care este
transferat la sfârşitul blocului.

Numărul Numărul de
iteraţiei deplasări la stânga
1 1
2 1
3 2
4 2
5 2
6 2
7 2
8 2
9 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

Acest lucru înseamnă de exemplu că C3 şi D3 sunt obţinute din C2 şi D2 prin două


deplasări la stânga şi C16 şi D16 sunt obţinute din C15 şi D15 prin o singură deplasare la stânga.
În toate cazurile, prin deplasare la stânga se înţelege o rotire cu un bit spre stânga

Exemplu: Din perechea originală C0 şi D0 obţinem:

32
C0 = 1111000011001100101010101111
D0 = 0101010101100110011110001111
C1 = 1110000110011001010101011111
D1 = 1010101011001100111100011110
C2 = 1100001100110010101010111111
D2 = 0101010110011001111000111101
C3 = 0000110011001010101011111111
D3 = 0101011001100111100011110101
C4 = 0011001100101010101111111100
D4 = 0101100110011110001111010101
C5 = 1100110010101010111111110000
D5 = 0110011001111000111101010101
C6 = 0011001010101011111111000011
D6 = 1001100111100011110101010101
C7 = 1100101010101111111100001100
D7 = 0110011110001111010101010110
C8 = 0010101010111111110000110011
D8 = 1001111000111101010101011001
C9 = 0101010101111111100001100110
D9 = 0011110001111010101010110011
C10 = 0101010111111110000110011001
D10 = 1111000111101010101011001100
C11 = 0101011111111000011001100101
D11 = 1100011110101010101100110011
C12 = 0101111111100001100110010101
D12 = 0001111010101010110011001111
C13 = 0111111110000110011001010101
D13 = 0111101010101011001100111100
C14 = 1111111000011001100101010101
D14 = 1110101010101100110011110001
C15 = 1111100001100110010101010111
D15 = 1010101010110011001111000111
C16 = 1111000011001100101010101111
D16 = 0101010101100110011110001111

Acum formăm cheile Kn pentru 1  n  16 , aplicând următorul tabel de permutări


fiecărei perechi concatenate CnDn. Fiecare pereche are 56 de biţi dar PC-2 foloseşte doar 48
de biţi dintre aceştia.

PC-2
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

33
Astfel, primul bit al lui Kn este al 14‐lea bit din CnDn, al 2‐lea bit al lui Kn este al 17‐lea bit din
CnDn şi aşa mai departe, terminându‐se cu al 48‐ulea bit al lui Kn fiind al 32‐lea bit din CnDn.

Exemplu:

Pentru prima cheie avem:

C1D1 = 1110000 1100110 0101010 1011111 1010101 0110011 0011110 0011110

Care, după ce aplicăm permutarea PC‐2, devine

K1 = 000110 110000 001011 101111 111111 000111 000001 110010

Pentru celelalte chei avem:

K2 = 011110 011010 111011 011001 110110 111100 100111 100101


K3 = 010101 011111 110010 001010 010000 101100 111110 011001
K4 = 011100 101010 110111 010110 110110 110011 010100 011101
K5 = 011111 001110 110000 000111 111010 110101 001110 101000
K6 = 011000 111010 010100 111110 010100 000111 101100 101111
K7 = 111011 001000 010010 110111 111101 100001 100010 111100
K8 = 111101 111000 101000 111010 110000 010011 101111 111011
K9 = 111000 001101 101111 101011 111011 011110 011110 000001
K10 = 101100 011111 001101 000111 101110 100100 011001 001111
K11 = 001000 010101 111111 010011 110111 101101 001110 000110
K12 = 011101 010111 000111 110101 100101 000110 011111 101001
K13 = 100101 111100 010111 010001 111110 101011 101001 000001
K14 = 010111 110100 001110 110111 111100 101110 011100 111010
K15 = 101111 111001 000110 001101 001111 010011 111100 001010
K16 = 110010 110011 110110 001011 000011 100001 011111 110101

Pasul 2: Criptarea blocurilor de date de 64 de biţi.

Mai întâi se realizează o permutare iniţială IP de 64 biţi a mesajului M. Aceasta rearanjează


biţii conform următorului tabel, unde intrările în tabel arată noul aranjament al biţilor faţă de
ordinea iniţială. Astfel, al 58-lea bit la lui M devine primul bit al lui IP . Al 50-lea bit bit la
lui M devine al doilea bit al lui IP ... al 7-lea bit al lui M devine ultimul bit al lui IP.

34
IP
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

Exemplu:
Aplicând permutarea iniţială blocului M obţinem
M = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110
1111
IP = 1100 1100 0000 0000 1100 1100 1111 1111 1111 0000 1010 1010 1111 0000 1010
1010
Aici al 58-ulea bit al lui M este „1” care devine primul bit al lui IP. Al 50-lea bit al lui
M este „1” care devine al 2-lea bit al lui IP. Al 7-lea bit al lui M este „0” care devine ultimul
bit al lui IP.
Următoarea operaţie constă în divizarea blocului permutat IP in două jumătăţi de 32
de biţi L0 şi R0.
Exemplu:
Din IP obţinem L0 jumătatea stângă şi R0 jumătatea dreptă.
L0 = 1100 1100 0000 0000 1100 1100 1111 1111
R0 = 1111 0000 1010 1010 1111 0000 1010 1010
Acum se realizează 16 iteraţii pentru 1  n  16 , folosind o funcţie f care operează pe blocuri
de date: un bloc de 32 de biţi şi o cheie Kn de 48 de biţi pentru a produce un bloc de 32 de
biţi. Pentru n luând ia valori de 1 la 16 avem:
Ln = Rn‐1
Rn = Ln‐1  f(Rn‐1,Kn)

Rezulta un bloc final pentru (n = 16) L16R16. La fiecare iteraţie se iau cei 32 de biţi din
dreapta ai rezultatului anterior şi îi transformăm in cei 32 de biţi din stânga ai pasului curent.
Pentru cei 32 de biţi din pasul curent facem XOR celor 32 de biţi din stânga ai pasului
anterior cu calculul lui f.

35
Exemplu:
Pentru n=1 avem:

K1 = 000110 110000 001011 101111 111111 000111 000001 110010


L1 = R0 = 1111 0000 1010 1010 1111 0000 1010 1010
R1 = L0  f(R0,K1)
unde prin simbolul  se înţelege operaţia XOR (bit + bit modulo 2).
Rămâne de explicat cum funcţionează funcţia f. Trebuie mai întâi sa mărim fiecare bloc Rn-1
de la 32 de biţi la 48 de biţi . Acest lucru este realizat folosind o tabelă de selecţie care repetă
unii dintre biţi în Rn-1 . Folosirea acestei tabele de selecţie o vom numi funcţia E .
Deci E(Rn-1) are un bloc de intrare pe 32 de biţi şi un bloc de ieşire pe 48 de biţi. Fie
E cu 48 de biţi la ieşire, pe care îi scriem in 8 blocuri de câte 6 biţi fiecare, care sunt obţinuţi
selectând biţii din intrare în ordinea indicată de următorul tabel:

Tabelul de selecţie al funcţiei E


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

Deci primii trei biţi ai E(Rn-1) sunt biţii poziţionaţi în poziţiile 32, 1 şi 2 in Rn-1 in
timp ce ultimii 2 biţi ai E(Rn-1) sunt sunt biţii în poziţiile 32 şi 1.

Exemplu:

Calculăm E(R0) din R0 după cum urmează:

R0 = 1111 0000 1010 1010 1111 0000 1010 1010


E(R0) = 011110 100001 010101 010101 011110 100001 010101 010101
(De notat este faptul că fiecare bloc care a avut iniţial la ieşire 4 biţi s-a mărit la 6 biţi
pe ieşire)

În continuare vom face XOR ieşirii E(Rn-1) cu cheia Kn :

Kn  E(Rn-1).

36
Exemplu:

Pentru K1 , E(R0) avem :

K1 = 000110 110000 001011 101111 111111 000111 000001 110010


E(R0) = 011110 100001 010101 010101 011110 100001 010101 010101
K1  E(R0) = 011000 010001 011110 111010 100001 100110 010100 100111.

Până în acest moment am reuşit să mărim Rn-1 de la 32 de biţi la 48 de biţi şi am


aplicat XOR rezultatului cu cheia Kn . Acum avem 48 de biţi sau opt grupuri de şase biţi.
Acum cu fiecare grup de 6 biţi facem următorul lucru: îi folosim ca adrese în tabele numite
„cutii S” . Fiecare adresă de 6 biţi ne va da o adresă în altă „cutie”. La adresa respectivă se
află un număr format din 4 biţi. Acest număr pe 4 biţi va înlocui originalul de 6 biţi. În acest
fel transformăm cele opt grupuri de 6 biţi în opt grupuri de patru biţi pentru a avea un total
de 32 de biţi.
Scriem rezultatul anterior, care are 48 de biţi, de forma:
Kn  E(Rn-1) =B1B2B3B4B5B6B7B8,

Unde Bi este un grup de 6 biţi. Acum calculăm

S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8)

Unde Si(Bi) face referire la ieşirea i a cutiei S. Fiecare funcţie S1, S2,..., S8, i-a ca intrare un
bloc pe 6 biţi si ca ieşire un bloc pe 4 biţi.

Tabelul pentru a determina S1 se află explicat mai jos:

S1

Număr Coloană
Nr.
Rând. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

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

Daca S1 este funcţia definită în acest tabel si B este un bloc pe 6 biţi , atunci S1 (B) să află
astfel: Primul şi ultimul bit al lui B reprezintă în baza 2 raza zecimală de la 0 la 3 (în binar de

37
la 00 la 11). Fie acel număr i . Cei 4 biţi din mijloc ai lui B reprezintă un număr în baza 2 în
raza zecimală de la 0 la 15 (în binar de la 0000 la 1111). Fie acel număr j . Privim în tabel
numărul din rândul i si coloana j , este numărul raza zecimală de la 0 la 15 şi este
reprezentat unic pe 4 biţi. Acel bloc este ieşirea S1 (B) a lui S1 pentru intrarea B.
De exemplu pentru blocul de intrare B = 011011 , primul bit este „0” iar ultimul
este „1” indicând 01 ca rând. Acesta este rândul 1. Cei 4 biţi din mijloc sunt „1101”. Acesta
este echivalentul binar al zecimalului 13, deci coloana este coloana 13.
În rândul 1 coloana 13 apare 5. Acesta determină ieşirea; 5 in binar este 0101, deci ieşirea
este 0101. Deci S1(011011) = 0101.
Tabelele care definesc funcţiile de la S1,...,S8 sunt următoarele:
S1
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

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

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

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

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

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

38
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

Exemplu:
In prima rundă obţinem ca ieşire a celor 8 cutii S :
K1 + E(R0) = 011000 010001 011110 111010 100001 100110 010100 100111.
S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8) = 0101 1100 1000 0010 1011 0101 1001
0111

În ultima parte în calcularea funcţiei f facem o permutare P a ieşirii cutiei S şi obţinem


valoarea finală a lui f .
f = P(S1(B1)S2(B2)...S8(B8))

Permutarea P este definită în tabelul de mai jos. P produce o ieşire pe 32 de biţi din o
intrare pe 32 de biţi, efectuând o permutare a biţilor blocului de intrare.
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
Exemplu:
Din ieşirea celor opt cutii S
S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8) = 0101 1100 1000 0010 1011 0101 1001
0111
Obţinem:
f = 0010 0011 0100 1010 1010 1001 1011 1011
R1 = L0 + f(R0 , K1 )
= 1100 1100 0000 0000 1100 1100 1111 1111
+ 0010 0011 0100 1010 1010 1001 1011 1011
= 1110 1111 0100 1010 0110 0101 0100 0100

39
În următoarea parte vom avea L2 = R1, care este blocul pe care decât ce l-am calculat, şi acum
trebuie să calculăm R2 =L1 + f(R1, K2), si de încă 16 ori. La sfârşit vom avea blocurile L16 şi
R16 Acum inversăm ordinea celor două blocuri într-un bloc de 64 de biţi R16L16 şi aplicăm o
ultimă permutare IP-1 ca în următorul tabel:

IP-1
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
Adică, ieşirea algoritmului are pe prima poziţie bitul 40, pe a doua bitul 8, ş.a.m.d.
Exemplu:
Dacă procesăm toate cele 16 blocuri folosind metoda descrisă mai sus, avem la a 16-a
rundă:
L16 = 0100 0011 0100 0010 0011 0010 0011 0100
R16 = 0000 1010 0100 1100 1101 1001 1001 0101
Inversăm ordinea celor două blocuri şi aplicăm o ultimă permutare lui
R16L16 = 00001010 01001100 11011001 10010101 01000011 01000010 00110010 00110100
IP-1 = 10000101 11101000 00010011 01010100 00001111 00001010 10110100 00000101

Care în format hexazecimal este 85E813540F0AB405.

Aceasta este forma criptată a lui M = 0123456789ABCDEF: adică, C =


85E813540F0AB405.
Decriptarea este inversul criptării, urmărind aceiaşi paşi dar in ordine inversă, trebuind să
inversăm ordinea în care sunt aplicate cheile.

Cifrul DES triplu

Cifrul DES triplu este cifrul DES aplicat de trei ori folosind două chei de 56 de biţi.
- Mai întâi textul clar este criptat folosind prima cheie ;

- Se urmează paşii folosiţi la decriptare folosind cea de-a doua cheie. Deoarece nu este
cheia corectă textul este încurcat şi mai mult.

- Textul obţinut este criptat din nou utilizând prima cheie rezultând textul criptat final.

Spaţiul cheilor este de 2112.

40
Cifrul AE
ES (Advanced Encryptiion Standarrd)

Deoarece cifrrul DES devvenise vulneerabil din caauza lungim


D mii prea micci a cheii, s--a
recomanddat utilizareaa 3DES, un algoritm carre constă în esență în applicarea de trrei ori a DES S.
Deși 3D DES s-a dovedit a fi un algoritm a puuternic, el este relaativ lent în î
implemenntările softw ware, motiv pentru
p care s-a
s lansat în 1997 o cererre de propunneri pentru uun
algoritm care să-l înnlocuiască. S-a S pornit de d la 21 de propuneri
p accceptate inițțial, apoi priin
eliminării numărul loor a fost reddus la 15, și apoi la 5, ddin care a fostfo ales în cele
c din urm

algoritmuul propus dee doi criptoggrafi belgienni, Joan Daeemen și Vinccent Rijmen. Criteriile pe p
baza căroora au fost evaluate
e proppunerile penntru AES au fost securittatea (rezisteența la atacuuri
criptanaliitice), costurrile (eficiențța computațiională, compplexitatea sppațială) și paarticularitățiile
algoritmuului (flexibilitatea, sim mplitatea, șii ușurința de
d realizare a implem mentărilor attât
software cât și hardw ware).

3.2. M
MODURI DE
D OPERAR
RE A CRIP
PTĂRILOR SIMETRICE

Cel mai simpplu mod de aplicare al criptării sim


C metrice, nummit electron nic codeboook
(ECB), dar
d este nesiggur. Chiar dacă
d d criptare a blocului esste sigură, reezultatul poate
funcţia de
fi în anuumite cazuri o criptare nesigură.
n Acceasta deoarrece acelaşi bloc de text se va cripta
întotdeauuna în acelaşşi bloc de criiptotext, rezuultatul fiind aşadar prediictibil.

Criptare ECB

Decripptare ECB

Pentru a evitta această problemă


p dee securitate modul de ffuncţionare cipher blocck
chainingg (CBC) folooseşte ieşireaa blocului annterior la inttrarea blocullui ce urmeaază a fi criptat
făcând unn XOR cu acesta.
a Astfeel, rezultatull fiecărui blooc se propaggă şi influennţează până la

41
ultimul bbloc rezultattul criptării. Avantajul este
e că cripttotextul va arăta
a perfectt aleator, fărră
repetiţii ccauzate de reepetarea intrrării.

Criptare CBC

Decripptare CBC

Există diversse variaţiuni pentru înlăănţuirea bloccurilor. Dinttre acestea, cipher feed
E d-
back (CFB) criptează IV-ul în loc de blocc de mesaj cu care se face XOR şi ş se propaggă
rezultatull mai departe.

CRIPTAREA
A ÎN MODUL DE FUNC
CŢIONARE CIPHER FE
EEDBACK (CFB)

În mod siimilar lucreaază output feed-back


f (O
OFB) cu dife ferenţa că se propagă mai departe doaar
rezultatull IV-ului criiptat nu rezuultatul criptărrii în sine. Modurile
M CFB şi OFB auu avantajul de
d
a transfoorma codul bloc
b într-un cod stream unde proceesarea criptărrii se face bitb cu bit priin
operatoruul XOR. Av vantajul lui O OFB faţă dee CFB este faptul că peermite proceesarea stream m-
ului de chheie chiar daacă mesajul nun este încă disponibil, decid permitee procesarea în avans ceeea
ce oferă avantaje com mputaţionalee. OFB are şi avantajul că permite decriptarea chiar dacă sse
pierd dinn blocurile crriptate.

42
Criptare OFB

O altă vaariantă este Propagating


P g Cipher Block Chainin ng (PCBC) care propaggă mai deparrte
atât textuul de la intrarre cât şi cripptotextul rezuultat din fieccare bloc.

CRIPTA
AREA ÎN MODUL
M D FUNCŢIIONARE PROPAGAT
DE P TING CIPH
HER BLOCK
CHAININ
NG (PCBC))

DECRIPTAREA ÎN
N MODUL DE FUNCŢ
ŢIONARE PROPAGAT
TING CIPH
HER BLOCK
CHAININ
NG (PCBC))

Foarte înntâlnit în prractică şi cuu un nivel ded securitatee crescut (fiiind tolerantt la pierdereea
blocuriloor intermediaare) este Counter Mode (CM) caare foloseşte un countter, de obicei
concatennat cu o valooare aleatoarre numită salt. Counteruul este criptaat şi apoi se face XOR cu c
textul ce se doreşte criptat. Dezzavantajul esste necesitateea de a păsttra un countter sincron ded
partea ceelor care efecctuează cripttarea respecttiv decriptareea.

43
CRIPTA
AREA ÎN MO
ODUL DE FUNCŢIONA
F ARE COUN
NTER MODE
E (CM)

TIPURI DE ATAC ASUPRA FUNCȚIILO F OR DE CRIIPTARE


Am stabiilit că criptan naliza este domeniul
d carre se ocupă de studiul attacurilor asu upra funcţiiloor
criptograafice. În priincipiu atacuul unei funncţii criptogrrafice are la l bază expploatarea unnei
vulnerabiilităţi ce se datorează
d înn general uneei proprietăţi matematicee a codului care nu a foost
luată în ccalcul în proccesul de proiectare.
Este în ggeneral utilă remarca că printr-un atac criptanaliitic se urmărreşte fie recu uperarea unuui
mesaj criiptat fie a chheii utilizatee (subliniem m că algoritmmul de criptaare este binee cunoscut de d
adversar,, în prezentt iese din discuţie
d secuuritatea obţinnută prin obbscuritatea algoritmuluii).
Această remarcă oferă o însă mai
m degrabbă o perspeectivă ideallizată asuprra unui ataac
criptanaliitic. A recuppera întregul mesaj criptaat este o conndiţie mult prea restrictiv vă, în realitate
criptosisttemul poate fi spart muult mai uşor. Astfel, estte unanim reecunoscut că în cele m mai
multe cazzuri practicee recuperareaa unui singuur bit din mesaj poate avea consecinţţe dezastroasse
asupra seecurităţii. Înn acest conttext este necesară definnirea unor oobiective dee securitate şi
atacuri avvansate, mullt mai compllexe decât reecuperarea unei u chei sauu a unui mesaaj (acest lucrru
va fi făcuut în relaţie cu
c criptosisteemele asimeetrice într-unn capitol urm mător).
Totodatăă atacurile trrebuie gândiite ca fiind cauzate
c de adversari
a care au acces la maşina de d
criptare ssau decriptaare, deoarecee în practicăă aceasta esste situaţia ggenerală. Dee exemplu, în î
cazul criiptosistemelo or cu cheie publică oriicine are accces la cheiaa de criptarre (maşina de d
criptare fiind disponnibilă în mood nerestricttiv) iar semnnarea digitaală se face pe p baza cheeii
secrete (aastfel maşina de decriptaare este expusă prin oricce semnăturră efectuată).. Lucrurile nnu
stau diferrit nici în cazzul criptosistemelor sim metrice, deoarrece în cazull maşinii Eniigma războiuul
a oferit pprilejul de a captura
c maşiini de criptarre sau decripptare, accesuul fiind astfell posibil.
Convenim m astfel să clasificăm
c attacurile dupăă cum urmeaază în funcţiie de accesull la maşina de d
criptare ssau decriptarre:
i) Mesaj ales (choseen-plaintext attack) – addversarul aree acces pe o perioadă fixă de timp la
maşina dde criptare caare acceptă să s cripteze orice mesaj (ppână la mom mentul la carre primeşte uun
c trebuie să îl spargă)).
anume crriptotext pe care

44
ii) Mesajj ales adapttiv (adaptivee chosen-plaaintext) - advversarul are acces nelim
mitat la maşinna
de criptarre care accep
ptă să criptezze orice messaj.

iii) Cripttotext ales (chosen


( ciphheretext) – adversarul
a arre acces pe o perioadă fiixă de timp la
maşina dde decriptare care acceptă să de cripteze
c oricce mesaj (pâână la mom mentul la carre
primeşte un anume criptotext pe care trebuie să îl spargă).
iv) Cripttotext ales adaptiv
a (Addaptive chosen-chipertexxt) - adversaarul are accees nelimitat la
maşina ded decriptare care acceptăă să criptezee orice mesajj.
În atacurrile adaptive se presupunne că adversaarul are accees nelimitat la
l maşina criiptografică cu
c
o singurăă restricţie: atât
a adversarrul cât şi maaşina cunosc un anume ccriptotext ţinntă, iar maşinna
criptograafică refuză să opereze asupra acestuia, în schhimb este dispusăd să lu
ucreze pentrru
adversar asupra oricăărui alt criptootext.
Atacurilee în care advversarul nu are
a acces la maşina
m de criptare/decriiptare, sunt şi
ş ele de douuă
tipuri: dooar criptoteext cunoscu ut (ciphertexxt only), în ccare adversaarul are la diispoziţie doaar
criptotexxtul, şi mesaaj cunoscut (known-plaiintext) în caare adversaruul cunoaşte şi ş criptotextuul
şi mesajuul şi doreştee recuperareea cheii. Aceestea sunt considerate
c m
modele de atac
a învechite
deoarece în practică un adversarr se bucură de premize mai bune de d atât. Reziistenţa în faţa
acestora este o cerinţţă elementarăă.

3.3. F
FUNCŢII CRIPTOGRA
AFICE FĂR
RĂ CHEIE: FUNCŢII H
HASH

DEFINIŢIE ŞI PRO
OPRIETĂŢ
ŢI

O funcţiie hash estee o funcţie care primeşşte ca intraree mesaje dee dimensiun ne variabilă şi
returneazză un mesaj de lungime fixă din carre mesajul iniţial nu poaate fi recupeerat. Funcţiile
hash nu folosesc nicci un fel de cheie, şi le vom nota ccu reprezentând funcţia hash aplicată
mesajuluui . Figura 3.1 prezintă sschema blocc a unei funccţii hash. Ieşirea unei fu
uncţii hash sse
mai numeşte şi etichetă (tag).

Fiigura 3.1 SC
CHEMA BLO
OC A UNEII FUNCŢII H
HASH.

O funcţiee hash trebuiie să răspunddă la următoarele propriietăţi de seccuritate:

45
i) rezisteenţa imagin nii (preimagee resistance)): având y o ieşire a fuuncţiei nu see poate găsi x
astfel înccât y H(x),
ii) rezisttenţă secundară a imaaginii (seconndary preim mage resistannce) având x,H x xnu sse
poate găssi x ' astfel în
ncât H xH x 'şi

iii) rezisttenţă la coliiziune (collision resistannce) nu se pooate găsi o ppereche x, x' astfel încât H
xH xx '.

Din puncct de vederee computaţioonal, proprieetatea de baază a unei fuuncţii hash este
e eficienţţa.
Scopul eeste de a connstrui funcţiii cât mai siimplu de immplementat (cod
( compacct) şi cât m
mai
rapide. Înn timp ce diimensiunea intrării poate fi oricât, la
l ieşire taguul are in genneral 128-2556
biţi, mai rar până în 512
5 biţi.

FUNCŢIII HASH FR
RECVENT UTILIZAT
TE ÎN PRAC
CTICĂ: MD
D5 ŞI FAM
MILIA SHA

Standardul cuurent (încă) şi


ş probabil cea
c mai utilizzată gamă dee funcţii hassh este familia
SHA2 (S Secure Hash Algorithm) pentru caree dimensiuneea ieşirii estte 224, 256, 384, 512 biiţi
indiferennt de dimensiunea dateloor de intrare.. Varianta m
mai veche de funcţie din familia SHA A,
şi încă fo
folosită, estee SHA-1. Trrebuie spus că în practiică este încăă foarte freccventă funcţţia
MD5 (poosibil chiar maim utilizată decât SHA22).

Menţionăăm însă fapttul că funcţiile hash MD D5 şi SHA-11 nu mai ofeeră rezistenţăă secundară a
imaginii şi sunt decii nesigure (îîn ciuda aceestui fapt elee sunt încă folosite
f în multe
m aplicaţţii
datorită eficienţei
e în
n special). DeD remarcat că nu oricee categorie de aplicaţii este pusă în î
pericol dde aceasta şii utilizarea lor
l este încăă posibilă daar trebuie făăcută cu preccauţie. Pentrru
implemenntări contem mporane se recomandă
r d
desigur foloosirea SHA-2256 şi nicid decum a MD D5
sau SHA A-1.

În practiccă, pentru construcţia fuuncţiilor hassh se foloseşşte conceptuul de funcţiee hash iterattă.
Aceasta presupune
p spargerea inttrării în bloccuri de dimeensiune fixă care sunt trrecute printr--o
funcţie de
d compresiee în cadrul căreia
c se efe
fectuează operaţii speciffice. Una dinntre metodele
specifice de construccţie este connstrucţia Meerkle-Damgaard (descrisăă de Merklee în 1979) pe p
care o preezentăm în Figura
F 3.2.

CONSTR
RUCTIA ME
ERKLE-DA
AMGARD A UNEI FUN
NCTII HASH
H

46
MD5 a ffost construitt de Ron Rivvest în 19911 şi urmeazăă construcţiaa Merkle- Daamgard. MD D5
opereazăă cu blocuri de
d mesaj de câte 512 biţii. Mesajul inniţial se conccatenează cuu un bit de 1 şi
apoi cu numărul neecesar de 0--uri. Ultimiii 64 de biţii din mesajuul preprocessat reprezinntă
lungimeaa mesajului iniţial.
i

Algoritmmul MD5 constă în 64 de d iteraţii, grupate


g în 4 runde de ccâte 16 iteraaţii, în fiecarre
rundă foolosindu-se unau din 4 funcţii
f nelinniare de mai jos (4x16= =64). Figurra 3.3 descrrie
această sstructură. Fieecare rundă se efectueazză de 16 ori deoarece blocul procesaat este de 5112
biţi, în tiimp ce funccţia de rundăă proceseazăă 32 de biţii la un mom ment dat (166x32=512). ÎÎn
figură se observă 4 blocuri
b de sttare (A, B, C,
C D), acesteaa au câte 322 de biţi. Celle 4 constante
predefiniite de câte 322 de biţi joaccă rol de vecctor de iniţializare (IV) şşi sunt:

A= 0x67452301,
B= 0xefccdab89,
C= 0x98bbadcfe,
D= 0x10325476.
Funcţia de
d rundă are la bază una din cele 4 fuuncţii definitte după cum
m urmează:

STRUCT
TURA ITER
RATĂ A LUII MD5

47
3.4. GENERATOARE DE NUMERE ALEATOARE ŞI PSEUDO-ALEATOARE
Generatoarele de numere aleatoare sunt un bloc constructiv indispensabil pentru
criptografie deoarece securitatea unui criptosistem depinde în primul rând de calitatea cheilor
cu care se efectuează criptarea (chei alese întotdeauna plecând de la valori aleatoare). Un
generator de numere aleatoare este un dispozitiv hard sau soft care generează o secvenţă de
numere care nu urmează nici un fel de model şi deci nu pot fi prezise.
În această secţiune nu dorim o prezentare de detaliu a unor astfel de funcţii, dar încercăm să
prezentăm câteva alternative constructive. Generatoare de numere pseudo-aleatoare se găsesc
implementate în orice mediu de programare dar ele trebuie atent alese pentru a asigura un
nivel de securitate real pentru criptosistemele implementate. Dacă generatorul de numere
aleatoare este slab, indiferent de rezistenţa teoretică a criptosistemului care utilizează cheile
acesta va putea fi cu uşurinţă spart în practică (un caz tipic este generatorul utilizat de
Netscape în primele variante de SSL).
Dificultatea practică nu stă neapărat în construcţia unor astfel de generatoare (se cunosc
alternative eficiente şi sigure) ci mai degrabă în a defini ce proprietăţi trebuie să
îndeplinească acestea. Mai exact, având un black-box care generează numere, cum putem
stabili dacă acesta este sau nu un generator de numere aleatoare. De exemplu, având
secvenţele „1, 7, 3” şi „3, 3, 3” care din cele două secvenţe este mai aleatoare?
Ei bine, dacă în grabă cineva ar putea zice că prima este mai aleatoare ca a doua, de fapt, la
ieşirea unui generator de numere aleatoare ambele pot fi obţinute iar o catalogare după doar 3
ieşiri este lipsită de fundament. Amintim în acest context şi paradoxul numit „eroarea
jucătorului” (gambler's fallacy). Acesta poate fi ilustrat prin următoarea întrebare: dacă un
jucător a dat cu zarul de 3 ori consecutiv 6, probabilitatea ca a 4-a oara să dea 6 este 1/6 sau
mai mică? Răspunsul corect este 1/6 deoarece evenimentul celei de a 4-a aruncări cu zarul
este independent de celelalte şi deci are tot probabilitatea 1/6. Sunt mulţi însă cei care cred că
probabilitatea este mai mică a patra oară.
Pentru a stabili calitatea unui generator sunt necesare fişiere de zeci, sute de mega-bytes sau
chiar mai mult. Problema reală este însă faptul că este posibil a construi un generator de
numere aleatoare care să treacă orice test şi totuşi să poată fi predictibil!
Există două tipuri de generatoare: hard şi soft. Generatoarele hard se numesc în general
generatoare de numere aleatoare iar cele soft se numesc pseudo-aleatoare. Cele hardware se
bazează pe dificultatea modelării (sau necunoaşterea exactă a modelului) procesului fizic din
dispozitivul hard, ceea ce face ca ieşirea să nu poată fi prezisă. Cele software, sunt programe
care pe baza unei valori de iniţializare (numită „seed”) produc secvenţe de numere aparent
aleatoare. Pentru scopuri practice, un generator software poate fi la fel de bun ca unul
hardware! În general cele software sunt ieftine şi rapide, iar cele hardware mai lente dar mai
sigure. Din punct de vedere algoritmic, dezideratul constructiv este de a construi un generator
de numere aleatoare astfel încât să nu existe nici un algoritm în timp polinomial care având
ieşirile generatorului de numere pseudo-aleatoare şi un generator de numere aleatoare să
poată decide care este generatorul de numere pseudo-aleatoare cu probabilitate mai mare de
½ ( proprietate care numeşte „computational indistinguishability”).

48
GENERA ATORUL LIINEAR CON NGRUENŢ ŢIAL
Cel maii simplu şii eficient generator
g d numere aleatoare eeste generaatorul lineaar
de
congruen
nţial (linear congruentiaal generator). Acesta se bazează
b pe ggenerarea şirrului recurennt:

unde a,c, n sunt parrametrii fixaaţi şi X0 estte valoarea de iniţializaare. Acest generator
g este
simplu de implementtat dar nu esste sigur din punct de veedere criptoggrafic! Adicăă, prin calcule
matematiice pot fi afllaţi parametrrii, având la dispoziţie suuficiente vallori de ieşiree. Este însă uun
d bun pentruu scopuri noon-criptograffice. Perioadda maximă a acestuia este
generatorr suficient de
n.
Un caz particular se obţine
o prin setarea
s lui c=
=0 ceea ce duuce la

Acest geenerator se numeşte


n geneeratorul Lehhmer (uneori referit şi ca generatorul Park-Millerr).
Alegeri uzuale
u mere prime de forma 2k-1 deoareece acestea conduc la o
penttru sunt num
perioadă maximă (deesigur dacă şşi ceilalţi parrametrii suntt bine aleşi).

GENERA
ATOARE LFSR

Registrelle de deplassare liniară LFSR (Lin near Feedb back Shift R Register) reeprezintă unna
dintre cele mai eficieente metodee de generaree a unor seccvenţe pseuddo-aleatoare.. Atenţie, nici
acestea nnu sunt destu ul de sigure pentru
p scopuuri criptograffice. Dar, suunt simplu dee implementtat
şi utile înn diverse altte aplicaţii. Două
D exempple sunt coduurile CRC şii, în criptogrrafie, codurile
de criptarre stream.
Există doouă tipuri de d registre: LFSR stan ndard (num mite şi Fibonacci) undee valorile diin
registre sse însumeazză modulo 2 (XOR) penntru a obţine feed-backkul şi LFSR R Galois undde
valorile sse însumeazăă modulo 2 (XOR) succcesiv pentru a obţine valloarea din fiiecare registrru
în parte. Figura 5.11 ilustrează cele două tipuri de registru.r Cele două connstrucţii sunnt
echivalennte, dar variianta Galoiss are avantaj ajul că poatee fi paralelizzată deoarecce se execută
XOR inddependent la fiecare regiistru în timp ce în celălaalt caz se exeecută XOR asupra a tuturoor
valorilor..

IMPLEMEENTARE LFSR
R FIBONACC ALOIS (JOS) A POLINOMULUI X6+X5+1
CI (SUS) ŞI GA +

49
IV. ALGORITMI CRIPTOGRAFICI CU CHEIE PUBLICĂ

Un moment important în evoluţia criptografiei moderne l-a constituit crearea, în anul


1976, de către Whitfield Diffie şi Martin Hellman, cercetători la Univeritatea Stanford din
California, a unui principiu diferit de acela al cifrării simetrice. Ei au pus bazele criptografiei
asimetrice cu chei publice. În locul unei singure chei secrete, criptografia asimetrică foloseşte
două chei diferite, una pentru cifrare, alta pentru descifrare. Deoarece este imposibilă
deducerea unei chei din cealaltă, una din chei este făcută publică, fiind pusă la îndemâna
oricui doreşte să transmită un mesaj cifrat. Doar destinatarul, care deţine cea de-a doua cheie,
poate descifra şi utiliza mesajul. Tehnica cheilor publice poate fi folosită şi pentru
autentificarea mesajelor prin semnătură digitală, fapt care i-a sporit popularitatea.
Criptarea asimetrică, o notăm similar cu cea simetrică, pentru claritate însă schimbăm
cheia k cu PK (Public Key), astfel avem c=EPK(m) (aceasta semnificând criptarea cu cheia a
mesajului. Decriptarea se face folosind cheia privată SK ca m=SSK(c) (în general se foloseşte
noţiunea de cheie privată şi nu secretă).Criptarea cu cheie publică comparativ cu cea cu cheie
secretă are ca dezavantaj viteza şi prezintă două avantaje majore: i) nu necesită schimbul
prealabil de chei secrete, deci comunicaţia poate fi efectuată şi pe un canal nesigur fără să
existe secrete partajate şi ii) numărul de chei partajate la comunicarea între n entităţi este
minim (o cheie publică şi o cheie privată pentru fiecare entitate).
Un criptosistem cu cheie publică îl definim după cum urmează:
Definiţia 6.1. (Schemă de criptare cu cheie publică). O schemă de criptare cu cheie publică
(criptosistem cu cheie publică) constă în trei algoritmi:
1) algoritmul de generare a cheilor PKE.Gen(1k) -> (PK SK) care primeşte ca
parametru nivelul de securitate k şi returnează perechea cheie publică-privată (PK,
SK) ,
2) algoritmul de criptare PKE.Enc(m,PK) care primeşte mesajul m şi cheia publică PK
şi returnează criptotextul c=EPK(m)
3) algoritmul de decriptare PKE.Dec(c,SK) care primeşte criptotextul c şi cheia privată
SK şi returnează mesajul m .

Toate criptosistemele cu cheie publică relevante în practică se bazează fie pe


problema factorizării întregilor fie pe problema logaritmului discret. Aceasta din urmă a
început să fie mai frecvent utilizată în ultimul deceniu pe grupurile curbelor eliptice.

Cele mai utilizate tipuri de sisteme de criptare cu algoritmi cu cheie publică sunt
următoarele:
- sisteme de cifrare exponenţială RSA (Rivert-Shamir-Adleman);
- cifrul EL GAMAL;
- cifrul Rabin.
- criptarea bazată pe curbe eliptice

50
4.1. Cifrul RSA

Cel mai renumit criptosistem cu cheie publică este RSA, numit astfel după numele
celor trei care l-au dezvoltat: Ron Rivest, Adi Shamir, şi Leonard Adleman. Algoritmul lor a
fost anunţat pentru prima oară în Martin Gardner's "Mathematical Games" în august 1977.
Articolul lor iniţial, “O metodă pentru obţinerea semnăturilor digitale şi ale criptosistemelor
de cod public” a fost publicat in 1978 in revista Communications of the Association for
Computing Machinery.

Să ne amintim că, criptosistemele cu cheie publică sunt proiectate de funcţii


matematice care sunt relativ uşor de calculat, dar pentru care inversa este foarte dificil de
determinat fără informaţii adiţionale (cheia privată).

Pentru RSA partea relativ uşoară este găsirea unor numere prime mari şi a perechilor
de numere care se multiplică. Partea grea o constituie factorizarea numerelor mari. Bazele
matematice au fost puse de matematicianul francez Pierre de Fermat. Un rezultat cunoscut ca
Mica teoremă a lui Fermat afirmă că pentru oricare număr prim r şi oricare număr întreg a,
r 1
care nu este divizibil cu r, a  1mod r .

În prezent, ceea ce este folosit în mod direct este un corolar al acestei teoreme, şi
anume un rezultat mai general datorat matematicianului elveţian Leonard Euler. În forma în
care acesta este folosit în criptosistemul RSA, acest corolar afirmă că dacă r şi s sunt numere
prime şi a, un număr întreg care nu are divizori comuni cu r sau cu s, atunci
a(r 1)( s 1)  1mod rs .

Criptosistemul RSA operează în modul următor:


Criptarea
- Se aleg două numere prime mari, notate r şi s.
- Produsul lui r şi s este notat n=rs şi t=(r-1)(s-1). În practică numerele prime r şi s sunt
două numere cu aproximativ 100 de cifre fiecare şi deci produsul lor n are aproximativ
200 de cifre. Pentru exemplele noastre vom folosi numere prime mici, să zicem r=53,
s=61 și n=rs=3233
- Se selectează un număr întreg e care are un invers modulo (r-1)(s-1). Acesta este denumit
exponent de criptare. Pentru exemplul nostru, vom alege e  37 care are un invers
modulo (r-1)(s-1).
t = (r  1)(s  1)  (53  1)(61  1)  52  60  3120
- Apoi se construieşte inversul multiplicativ e modulo (r-1)(s-1) număr care este
exponentul de decriptare şi este notat d . Pentru exemplul nostru d=253
- Cheia publică constă din două numere: (n, e). Acestea două sunt disponibile oricui care
ar dori să trimită un mesaj criptat lui A.

51
- Exponentul de decriptare d secret împreună cu n formează cheia privată.
Pentru ca cineva să criptanalizeze un mesaj trimis lui A folosind cheia sa publică, ar
trebui să fie capabil să construiască cheia sa privată d care este inversul lui e modulo (r-1)(s-
1). Acest lucru poate fi făcut uşor daca r şi s sunt cunoscute, dar pentru a obţine r şi s,
criptanalistul ar avea nevoie să factorizeze cheia publică n, lucru foarte dificil dacă n este
foarte mare, iar r şi s au aproximativ acelaşi ordin de mărime.

Să zicem că B doreşte să trimită un mesaj „martie” lui A, folosind cheia publică a lui
A. La început mesajul trebuie transformat într-un şir de numere. În practică codul ASCII este
folosit în mod obişnuit; noi vom folosi uzualul nostru a = 01, b = 02, …, z = 26. Astfel
„martie” va fi transformat intr-un şir 130118200905. Şirul este spart în blocuri in care fiecare
este mai mic decât modulul 3233 in cazul nostru.

Vom avea blocuri de câte patru cifre.


1301 1820 0905
Textul cifrat este obţinut ridicând fiecare bloc de text simplu la exponentul e modulo n.

pe mod n  C

130137 mod 3233 = 3027


182037 mod 3233 = 0635
090537 mod 3233 = 1699

Mesajul pe care B il transmite lui A este

3027 0635 1699

Decriptarea

Decriptarea depinde de corolarul lui Euler la teorema lui Fermat. Să ne amintim că


acest corolar afirmă că a(r 1)( s 1)  1mod rs . Deoarece n=rs, aceasta înseamnă că
a ( r 1)( s 1)  1mod n . Acum e şi d sunt inversele modulo (r  1)(s  1) ; adică
ed  1mod(r  1)( s  1) sau ed  1  k(r  1)(s  1) . Textul cifrat este C  p e mod n .

C d  ( pe )d  ped  p1k ( r 1)( s1)  p1 p k ( r 1)( s1)  p  p ( r 1)( s 1)   p 1  p mod n
k k

care este textul clar.


Iată decriptarea pentru exemplul nostru:

52
C d mod n  p
3027 253 mod3233  1309
0635253 mod 3233  0423
1699253 mod3233  0125

Astfel mesajul criptat 1309 0423 0125 se decriptează in 1309 0423 0125 care in textul
simplu înseamnă „martie”.
Aspecte practice ale RSA
Utilitate: Cu toate îmbunătăţirile de implementare (multiplicare modulară rapidă,
exponenţiere modulară pentru decriptare rapidă), RSA este mult mai lent decât algoritmii mai
mult sau mai puţin clasici cu cheie simetrică.
Practic, RSA se foloseşte la:
– transmitere de chei pentru algoritmi de criptare cu cheie simetrică
– criptarea unor cantităţi relativ mici de informaţie

Alegerea modulului n
n se alege de cel puţin 1024 de biţi pentru o securitate pe termen mai lung.

Alegerea numerelor prime r și s


r şi s trebuie alese astfel ca factorizarea lui n să fie practic imposibilă. Condiţii:
(1) r şi s să fie suficient de mari şi cam de aceeaşi lungime în biţi.
Dacă n are o lungime de 1024, r şi s se iau cam de 512 biţi.
Aceasta pentru a evita cei mai performanţi algoritmi de factorizare.
(2) diferenţa r-s să nu fie prea mică.
Dacă r  s , atunci p  n şi metoda Fermat de factorizare se poate aplica cu succes. Dacă r
şi s se aleg aleator, atunci probabilitatea ca diferenţa r-s să fie mică este redusă.
(3) se recomandă alegerea unor numere prime tari, adică:
(i) r-1 are un factor prim mare, notat cu t
(ii) r+1 are un factor prim mare
(iii) t-1 are un factor prim mare.
Condiţiile (i) şi (ii) se cer pentru a evita factorizarea cu anumiţi algoritmi.

Alegerea exponentului de criptare e


Pentru creşterea vitezei de criptare, e se alege pe cât posibil mic sau cu puţine cifre 1 în
scrierea sa binară. O valoare utilizată este e = 216 + 1 = 65537 (16 ridicări la pătrat modulare
şi o multiplicare modulară, deoarece are doar 2 cifre 1 în scrierea sa binară). Aceasta
protejează şi împotriva atacurilor descrise anterior, deoarece este puţin probabil ca mesajul să
fie trimis către 216 +1 utilizatori.

53
4.2. Cifrul El Gamal

În 1985 Tahir El Gamal a publicat un criptosistem cu cheie publică bazat pe problema


logaritmului discret. Algoritmul este ceva mai complicat decât RSA, dar el poate fi mai uşor
generalizat.
Logaritmi
Un logaritm este un exponent. Un alt mod de a exprima că 2 ridicat la puterea 5 este 32 este
acela că cinci este logaritmul lui 32 în baza 2
2  2  2  2  2  25  log 2 32  5
Logaritmul este exponentul 5.
Este relativ uşor să ridici numerele la o putere; de exemplu:
320  3  ...  3  3486784401
douazeci de factori

Este mai greu să găseşti logaritmul; de exemplu, care este logaritmul în baza 2 al numărului
8589934592?
2?  8589934592
Pentru numere reale putem găsi răspunsul prin încercări. De exemplu, 210=1024.
Avem nevoie de un exponent mai mare (adică de un logaritm mai mare). 220=1048576; avem
nevoie de un exponent şi mai mare. 230=1073741824; în continuare avem nevoie de un
logaritm mai mare de atât; 240=1099511627776 . Observăm că acesta este prea mare.
Încercăm 235=34359735368 , si acesta este prea mare. In sfârşit vedem că 233=8589934592,
deci logaritm în baza 2 al numărului 8589934592 este 33.

Criptosistemul El Gamal şi sistemul cu schimb de cheie Diffie-Hellman se bazează pe


dificultatea problemei logaritmului discret.

Logaritmi discreţi

Matematica discretă se referă la operarea cu mulţimi de numere care au proprietatea


ca fiecare număr al mulţimii să fie înconjurat de o vecinătate care nu conţine nici un alt
număr din acea mulţime.

Problema logaritmului discret se referă la problema găsirii a unui logaritm modulo un


număr întreg.

Problema logaritmului discret

Problema logaritmului discret solicită o soluţie la o problemă de genul următor:


2?  9mod11

54
La fel ca multiplicarea modulo p, ridicarea la puteri modulo p amestecă rezultatele. De
exemplu puterile lui 2 modulo 11 sunt:
21  2 mod11
22  4mod11
23  8mod11
24  5mod11
25  10 mod11
26  9mod11
27  7 mod11
28  3mod11
29  6mod11
210  1mod11

Deci răspunsul la problema noastră este 6: 26  9mod11 .


Deoarece puterile nu cresc aşa cum o face exponentul nu mai putem să facem o
căutare prin încercări aşa cum am făcut mai înainte. Nu se cunoaşte nici un algoritm pentru
calcularea logaritmilor discreţi. Cu excepţia cazurilor speciale, singurul mod de a determina
logaritmul discret este prin încercare şi eroare. Pentru valori mai ale lui p, există prea multe
posibilităţi pentru a fi viabilă folosirea „forţei brute” (verificarea tuturor variantelor).
Se observă că în acest exemplu zece puteri ale bazei 2 sunt reprezentanţii celor zece
clase de echivalenţă nonzero modulo 11 - 1,2,3,4,5,6,7,8,9,10. Această proprietate se poate
descrie spunând că 2 este element primitiv (sau rădăcină primitivă). Întotdeauna există cel
puţin un element primitiv. Deoarece toate cele 10 numere întregi nonzero modulo 11 apar ca
puteri ale lui 2, ar fi nevoie de 10 incercări pentru a descoperii logaritmul.

Algoritmul de criptare este următorul:


I. Generarea de cheie.
I.1. Se alege un număr prim mare aleator p şi un generator g al grupului Z *p .
I.2. Se alege un număr aleator x, 1  x  p  2 şi se calculează gx mod p.
I.3. Cheia publică o constituie tripletul (p, g, q=gx mod p) iar cheia privată x.
II. Criptarea.
II.1. Se reprezintă mesajul ca un număr întreg m, 0  m  p  1 .
II.2. Se alege un număr aleator k, 1  k  p  2 .
II.3. Se calculează:
- y= gk mod p
- z=m (gx)k mod p=m qk mod p

II.4. Textul cifrat îl reprezintă perechea c=(y, z).

55
III. Decriptarea.

III.1. Folosind cheia privată x, se calculează y-x mod p


III.2. Mesajul iniţial m se obţine calculând
y-xz mod p= g-kx m (gx)k mod p = m mod p =m

Exemplu: Criptarea El Gamal


Pentru a păstra calculul la un nivel care poate fi realizat pe calculator, vom lua un
exemplu care foloseşte un text simplu.
Vom selecta numărul prim p=997 şi alegem g=7 ca element primitiv. Mesajul trebuie
să fie un număr întreg mod p deci în exemplul nostru trebuie să fie unul din următoarele:
1,2,…,996. Mesajul nostru pe care vrem să-l criptăm este m=813.
Cel care primeşte mesajul selectează un număr întreg pozitiv x şi se calculează
q  g x mod p
Să zicem x=105, rezultă q  g x mod p  7105 mod 997  989 .
Cheia publică este p=997, g=7 şi q=989.
Cheia privată este x=105.

Pentru valori mari ale numărului prim p, cheia privată este greu de determinat din cheia
publică.
Cel care trimite mesajul criptat alege un număr întreg pozitiv k şi calculează
y  gk mod p .
z  mq k mod p .
Să zicem că cel care trimite alege k=87.
y  787 mod997  849
z  813  98987 mod997  19
Mesajul cifrat trimis este (y, z)=( 849, 19).
Decriptarea El Gamal
Cum se decriptează mesajul?
Trebuie să ţinem cont că cel care primeşte mesajul are unele informaţii adiţionale – şi anume
cheia privată x. Cel care trimite mesajul „posedă” această informaţie însă ascunsă în numărul
q  g x mod p . Cel care trimite mesajul criptat nu poate afla numărul x fără să rezolve
problema logaritmului discret .
.
Folosind textul cifrat şi cheia privată, cel care primeşte calculează zy  x mod p .
zy  x mod p  mq k (g k ) x mod p  m(qg  x )k mod p  m(1)k mod p  m
Pentru exemplul nostru ,
y  x  849105 mod997  (849105 )1 mod997  5581 mod997  620mod997
zy  x  19  620mod997  813

56
4.3. Cifrul Rabin

Se bazează pe dificultatea determinării rădăcinii pătrate modulo n. Pentru generarea


de cheie se aleg două numere prime distincte mari p şi q astfel încât p=3 mod 4 şi q=3 mod 4
şi se calculează n=p*q.
Cheia publică este n iar cheia privată este formată din perechea (p, q).

Criptarea se realizează în modul următor:


- se reprezintă mesajul ca un număr întreg m, unde 0  m  n  1
- textul cifrat se obţine cu relaţia c=m2 mod n.

Pentru decriptare se utilizează următoarea lemă:


LEMĂ: Găsirea rădăcinilor pătrate ale lui a mod n, unde n=pq, p şi q numere prime, se face
astfel:
- se determină cele două rădăcini pătrate r şi –r ale lui a mod p şi cele două rădăcini
pătrate s şi –s ale lui a mod q;
- se determină u şi v astfel încât up+vq=1;
- cele patru rădăcini pătrate ale lui a mod n sunt x mod n şi  y mod n unde
x=rvq+usp mod n şi y=rvq-usp mod n.
Dacă m1, m2, m3, m4 sunt cele patru rădăcini pătrate ale lui c mod n calculate cu ajutorul
lemei anterioare, se decide care dintre aceste mesaje este cel corect utilizând redundanţa (de
exemplu ultimii k biţi ai mesajului se repetă). Redundanţa previne şi anumite atacuri.

Exemplu:
Se aleg două numere prime p=7 şi q=11. (p=3 mod 4 şi q =3 mod 4).
n= p*q=7*11=77

Cheia publică este 77 iar cheia privată perechea (7, 11).


Presupunem că avem de criptat mesajul m=20;
Se calculează mesajul criptat
c=202 mod 77 = 15.
Pentru decriptare mai întâi se calculează r şi s. Se poate demonstra că
p 1
c mod p = c 4
mod p
q 1
c mod q = c 4
mod p
Se obţine
7 1
r= c 4
mod 7=152 mod 7=1
111
s= c 4
mod 11=153 mod 11=9

57
Utilizând algoritmul extins al lui Euclid numerele u şi v astfel încât up+vq=1. Se obţin
următoarele relaţii:

11=1*7+4 1=4-1*3;
7=1*4+3; 1=4-1*(7-1*4)=2*4-7;
4=1*3+1; 1=2*(11-1*7)-7=2*11-3*7;
Deci u= -3 şi v=2.
Acum se pot calcula x şi y:
m1=x=rvq+usp mod n =1*2*11+(-3)*9*7 mod 77 = 13
şi
m2=y=rvq-usp mod n=1*2*11-(-3)*9*7 mod 77 = 57
Celelalte două rădăcini sunt:
m3=-x=77-13=64
m4=-y=77-57=20

Soluţia căutată este m4=20 şi ea poate fi găsită studiind redundanţa.

4.4. Criptografia bazată pe matematica curbelor eliptice

O curbă eliptică E peste mulţimea Zp constă din elemente (numite puncte) de tipul
(x,y) ce satisfac ecuaţia

y2=(x3+ ax+b ) mod p (1)

unde a, b fac parte din grupul Zp astfel încât 4*a3+27*b2≠ 0 (mod p), iar p este un număr
prim.

Operaţia de bază în criptografia pe curbe eliptice este adunarea a două puncte. Dacă
avem punctele P1(x1, y1) şi P2(x2, y2) atunci suma P1+P2 este un punct P3(x3, y3) (notăm P1+
P2= P3), unde:

x3  (m2  x1  x2 )mod p
y3  (y1  m(x1  x3 ))mod p
(2)
y1  y2
m mod p
x1  x2

unde m este panta dreptei ce trece prin punctele (P1, P2).

58
Dacă P1= P2 atunci av
vem următoarele relaţii:
x3  (m2  2 x1 )mod p
y3  ( y1  m(x1  x3 ))modp
(3)
2
3x  a
m 1
modp
m
2 y1
M
Multiplicareaa unui puncct cu o connstantă este o adunare repetată. Sppre exempluu,
3*P=P+PP+P.
Puunctele caree aparţin uneei curbe elipptice și îndeeplinesc conndiția (1) se determină în
î
modul urrmător:

A
Algoritmul 1
- Se ia un element
e x dinn Zp;
- Se calculeează z=(x3+ ax+b ) mod p;
- Se verifică daacă există z mod p în mulțimeea Zp. Acest lucru se verrifică folosinnd
p 1
relația z 2
mod p  1 . Dacă această
a relațție este adevărată atunci există do
ouă elemente
y1,2   z mod p din
d mulțimeaa Zp. Pentruu cazul în care
c mod 4, elementele y1,2 sse
p=3 m
p 1
calculeaază cu relațiaa: y1  z 4
m
modp și y2  p  y1 .
- Perechile (x, y) reprezintăă puncte pe curba
c elipticcă.

Exemplu u curba elipttică y 2  x 3  x  5 pestte Z19 avem


ul 1: Pentru m următoarele perechi de
d
puncte :
(0, 9), (00, 10), (1, 8), (1, 11), (3,, 4), (3, 15), (4, 4), (4, 15),
1 (11, 6), (11, 13), (12
2, 4), (12 155),
(13, 7), (13, 12).

Criptareaa folosind cu
urbele elipticce se realizeaază în felul următor
u :

59
Algoritmul 2
- Se alege un punct P1(x1, y1) de pe curba eliptică și o cheie secretă q;
- Se calculează punctul P2(x2, y2), unde P2=q*P1;
- Textul care se criptează M se transformă într-un punct de pe curba eliptică;
- Se alege un număr aleator 0  k  DE (unde DE reprezintă numărul de puncte de pe curba
eliptică) iar criptarea se face calculând punctele P3(x3, y3) și P4(x4, y4) astfel:

P3=k*P1 și P4=M+k*P2. (Textul cifrat este format din punctele P3 și P4).


- Decriptarea se realizează cu relația: M=P2-q*P1
Observație: – P(x,y)=P(x, –y )

Exemplul 2: Folosind curba eliptică de la exemplul 1, dorim să criptăm textul M(3, 4).
Considerăm P1(0, 9) și cheia secretă q=7. Punctul P2=7*P1. Aplicând relațiile (3) se obține
P2(12, 15).
Alegem aleator k=8 și vom obține:
P3=8*(0, 9)=(12, 4)
P4=M+k*P2=(3, 4)+8*(12, 15)=(0, 10)
Deci textul criptat este format din perechile de numere (12, 4) , (0, 10).
Decriptarea se realizează cu relațiile: M=(0, 10)-7*(12, 14)=(3, 4)

4.5. Securitatea sistemelor de criptare cu cheie publică

În majoritatea sistemelor de criptare, aparatul matematic folosit este bazat pe teoria


numerelor, teoria funcţiilor recursive şi teoria probabilităţilor. Pe o scară mult mai restrânsă
apar funcţiile eliptice, teoria automatelor, calcul neconvenţional (cuantic, molecular etc).
Sistemele de criptare cu cheie publică au un avantaj major faţă de sistemele clasice: aici nu
mai este necesar efortul transmiterii cheii. Un contact prealabil între Alice şi Bob pentru a
pune la punct detaliile sistemului de criptare este inutil.
Un sistem de criptare cu cheie publică nu oferă însă o securitate absolută. Aceasta se
datorează faptului că Oscar poate oricând să dispună de atacuri pasive sau active.
Anume:
• Dacă criptanalistul dispune de un text criptat y, el poate căuta exhaustiv un text clar x astfel
ca eK(x) = y. Singura apărare contra unui astfel de atac constă în gradul de complexitate al
sistemului.
• Un criptanalist activ poate efectua cu succes un atac de tipul meet in the middle. Să
presupunem că A şi B doresc să stabilească un contact. Ei fac publice cheile de criptare eA
respectiv eB. Dacă contactul este nepersonalizat, C poate controla mesajele schimbate între
cei doi, în felul următor:

60
1. C ”opaacizează” printr-un mijlooc oarecare aceste
a chei, şi trimite luii Alice cheiaa eB1 ca din
partea luii B; substituuie – similar – pentru Bobb cheia e1A .
2. Fie m mesajul pe care
c A vrea să l B. Ea va cripta şi va trimite y1 = eB1 (m).
s îl trimită lui
mintim, toate canalele sunnt nesigure) şi află m = dB1 (y1).
3. C interrceptează meesajul (ream
4. C recriiptează y = eB (m) şi trim
mite y lui Boob.
Bineînţelles, C poatee modifica sau întârziaa mesajul m dacă doreeşte. Din această cauzză,
aproape în toate sistemele de criptare cuu cheie pubblică apare necesitatea autentificărrii
mesajuluui sau a expeeditorului, prrecum şi aceeea a confiddenţialităţii. C Confidenţiallitatea asigurră
accesul laa informaţie doar părţiloor autorizate de a avea accest acces.
Autentifiicarea este procesul
p prinn care un callculator (proogram de callculator sau alt utilizatoor)
încearcă să confirme unui destinatar că mesaajul primit de d acesta vine (sau nu vin ne) din parteea
sa.
Metodelee prin care un expeditor uman se poaate autentificca sunt clasifficate în:
1. ”ceva ce utilizatoorul este” (dde exemplu amprente digitale,d de rretină, de voce, secvennţă
ADN, reccunoaşterea semnăturii, identificatorri biometricii).
2. ”ceva de utilizatoorul are” (dee exemplu card ID, datee de securitaate soft pe calculator
c saau
telefon).
3. ”ceva ce utilizatoru ul ştie” (de exemplu
e o parola, un nuumăr de identtificare - PINN).
4. Orice combinaţie între metoddele anterioarre (de exem mplu un card bancar cu PIN P asigură o
dublă auttentificare).
Alt termeen frecvent utilizat
u este cel
c de integrritate. El se referă
r la validitatea datellor.
Integritattea este siguuranţa că daatele la caree se referă un u utilizator pot fi acceesate şi pot fi
modificaate numai de cei autorizaaţi să o facă.
În generaal integritateea poate fi coompromisă înn două moduuri:
1. Prin alterare
a intennţionată (de exemplu modificarea
m u
unui cont baancar, a uneii adrese de e- e
mail, a unnui documennt de indetitaate);
2. În modd accidental (transmisii perturbate
p dee zgomote dde canal, zgârrierea hardddiscului).
Să presuppunem că A şi B sunt dooi utilizatori,, cu posibile conflicte dee interese.
când A trrimite un meesaj lui B, am mbele părţi trebuie să se asigure că:
• Mesajuul nu este trimmis de o terţăă persoană care
c pretindee a fi A;
• B să nuu poată obligga pe A să ţinnă cont de mesaje
m n aparţin, iar A să poaată recunoaşte
care nu-i
public prropriile mesaaje.

61
Într-o oarecare măsură, cele două condiţii sunt contradictorii: conform primei condiţii, B
trebuie să ştie ceva despre modul de criptare al lui A, care îi va permite să autentifice
mesajul, iar conform celei de-a doua condiţii, el nu trebuie să ştie prea mult.

Comparaţie între criptarea simetrică şi cea cu cheie publică

Avantaje ale sistemelor de criptare cu cheie simetrică:


1. Pot transmite volume mari de date. Există implementări hard care pentru unele sisteme de
criptare pot asigura rate de criptare de sute de mega-octeţi pe secundă (sunt şi implementări
soft cu rate de mega-octeţi pe secundă).
2. Cheile sunt relativ scurte.
3. Pot fi folosite ca bază de construcţie a diverselor mecanisme de criptare, cum ar fi
generatori de numere pseudo-aleatoare, generatori de funcţii de dispersie, scheme de
semnătură.
4. Prin compunere pot conduce la sisteme de criptare puternice.
5. Au o istorie bogată în evenimente şi experienţă.
Dezavantaje ale sistemelor de criptare cu cheie simetrică:
1. Cheia trebuie să rămână permanent secretă în (cel puţin) două locuri distincte.
2. Cu cât lungimea unui mesaj criptat este mai mare, cu atât el este mai uşor de spart.
3. În reţele mari, o gestionare a cheilor devine extrem de dificilă.
4. Necesită un canal sigur de comunicare, cel puţin pentru transmiterea cheii. Acest lucru
devine dificil mai ales pentru sistemele care necesită schimbări frecvente ale cehilor de
criptare/decriptare.
Avantaje ale sistemelor de criptare cu cheie publică
1. Sistemul este ideal pentru transmiterea informaţiei prin canale nesigure.
2. Sistemele cu cheie publică sunt simplu de definit şi elegante matematic.
3. Doar cheia de decriptare trebuie ţinută secretă, la un singur punct (destinatar).
4. în funţie de modul de utilizare, o pereche de chei (publică, privată) poate fi păstrată o
perioadă mai lungă de timp.
5. Conduc la aplicaţii de mare întindere: semnături electronice, algoritmi de autentificare,
componente de comerţ electronic etc.
Dezavantaje ale sistemelor de criptare cu cheie publică:
1. Sunt semnificativ mai lente decât sistemele simetrice.
2. Sunt necesare chei de lungimi mult mai mari.
3. Nu se poate garanta securitatea absolută a nici unei scheme de criptare cu cheie publică.
4. Implementarea trebuie realizată cu foarte mare grijă. Sisteme cu grad ridicat teoretic de
securitate pot fi sparte uşor printr-o implementare neglijentă.
După cum se observă, cele două clase de sisteme de criptare dispun de o serie de avantaje
complementare. Acest lucru face ca ele să fie folosite combinat.Multe sisteme de criptare
încep comunicarea transmiţând via un sistem cu cheie publică, cheia unui sistem simetric. În
faza a doua, mesajele sunt criptate folosind sistemul simetric de criptare. Aceasta asigură o
viteză mult mai mare de transmitere şi un spor de autenticitate a mesajelor.

62
V. Tehnici i mecanisme de
identificare i autentificare

Autentificarea define te un utilizator (uman sau proces) pe baza acreditării sau


altei dovezi de identitate. Autentificarea determină cine sau ce folose te sistemul sau
resursele i contorizează atacurile ascunse. Prin asigurarea identităŃii unui utilizator,
sistemul poate urmări acŃiunile acestuia. Atât controlul accesului cât i disponibilitatea se
bazează pe identificarea utilizatorului. Sunt două mari clasificări importante ale
autentificării:

• autentificarea entităŃilor perechi (Peer Entity Authentication) asigură, în


momentul realizării unei conexiuni, că o entitate este întradevăr ceea ce
pretinde a fi i că dialogul nu reprezintă o reluare a unei înregistrări mai vechi;
• autentificarea originii datelor (Data Origin Authentication) asigură faptul că
sursa datelor este autentică, fără a conferi însă i protecŃia împotriva duplicării
sau modificării unităŃilor de date.

Autentificarea poate implica un schimb de identităŃi i acreditări între utilizator i


computer, între programele clientului i programele serverului sau între programele
serverului i programele clientului. Pe durata autentificării, o parte verifică identitatea
celeilalte părŃi. În anumite cazuri, ambele părŃi se pot autentifica reciproc, operaŃiune
intitulată autentificare mutuală. Pentru numerotare i realizarea managementului de
securitate, fiecare utilizator trebuie să aibă un nume sau un identificator unice.
Autentificarea unui utilizator uman necesită existenŃa uneia sau mai multor
elemente după cum urmează:

• ceva cunoscut (parola);


• ceva posedat (cheie fizică sau smart card);
• anumită caracteristică fixă (amprenta degetului, a vocii sau a retinei);
• anumită informaŃie contextuală (adresa sursă a cererii).

Autentificarea unui proces necesită existenŃa uneia sau mai multor elemente după
cum urmează:

• acreditare (parola, cheie);


• informaŃie contextuală (numele sistemului).

5.1 Autentificarea prin parole


În mod tradiŃional, fiecare utilizator, la conectarea în reŃea furnizează numărul
(numerele) de autentificare i parola. În acest scop pot fi folosite mai multe tipuri de
protocoale.

5.1.1 Protocolul de autentificare cu parole simple

63
Protocolul de autentificare cu parole simple se desfă oară în 3 pa i:

1. utilizator → sistem: identitate utilizator (nume de login)


2. utilizator → sistem: parolă
3. stop. Utilizatorul este acceptat, dacă parola este validă.

Există, desigur, riscul ca un utilizator să găsească parola unui alt utilizator, care
are mai multe drepturi în reŃea. O metodă simplă de găsire a parolei altui utilizator constă
în a crea un program on-line, similar ca afi are cu cel de verificare a identităŃii. Victima
va testa parola, crezând că este procesul normal de identificare.
Alte variante ale acestei metode, mai sigure, pot fi următoarele:

• să se folosească parole lungi, din care utilizatorul să fie întrebat numai câteva
caractere, mereu altele;
• să se folosească fraze de identificare (această metodă este tratată pe larg în
subcapitolul 6.1)
• să se folosească liste de parole, astfel încât utilizatorul să nu folosească mereu
acela i ir de caractere drept parolă. Acest lucru conduce la următorul protocol:

5.1.2 Protocolul de autentificare cu parole variabile

1. utilizator → sistem: identitate utilizator (nume de login)


2. utilizator → sistem: parolăi+1
3. stop. Utilizatorul este acceptat dacă parolai+1 este validă.

Există însă o serie de dezavantaje ale acestui model:

• utilizatorul trebuie să reŃină o listă lungă de parole, trebuie să o noteze i deci


există riscul pierderii ei;
• în cazul unei erori în procesul de autentificare, utilizatorul nu tie dacă trebuie
să folosească aceea i parolă din nou sau următoarea.
• dacă parolele sunt asignate centralizat, utilizând un generator pseudo-aleator
liniar de secvenŃă de numere x(1), ..., x(n) iar utilizatorul prime te ca parolă
secvenŃa x(i), ..., x(i+jk), întreaga secvenŃă x(1), ..., x(n) poate fi detectată prin
cunoa terea numai a lui x(i), ..., x(i+jk).

5.1.3 Protocolul de autentificare bazat pe funcŃii hash

Roger Needham i Mike Guy au realizat că sistemul gazdă nu are nevoie să


cunoască parola; el trebuie doar să fie capabil să diferenŃieze parolele valide de cele
invalide. Acest lucru se poate realiza u or cu ajutorul unei funcŃii hash one-way. În loc să
stocheze parole, sistemul gazdă stochează rezumatele parolelor.

• utilizator → sistem: parolă


• sistemul calculează rezumatul parolei
• sistemul compară rezultatul cu valoarea stocată.

Deoarece sistemul gazdă nu mai memorează un tabel (o listă) cu parolele tuturor


utilizatorilor, riscul ca cineva să spargă sistemul i să fure lista cu parole este mult

64
diminuat. Lista parolelor cu care operează sistemul este inutil, deoarece funcŃiile hash nu
pot fi inversate pentru a se putea recupera parolele.

5.2 Autentificarea prin cerere/răspuns (handshaking)


Modelul cerere/răspuns se bazează pe o funcŃie f cunoscută doar de un anumit
utilizator i de sistem. În procesul de autentificare se emite un număr pseudo-aleator x i
în acela i timp se calculează y=f(x). Utilizatorul aplică procedura numărului x i
returnează f(x), care este comparat cu y. Poate fi parcurs următorul protocol de
autentificare:

1. sistem → utilizator: x;


2. sistemul calculează y=f(x);
3. utilizator → sistem: f(x);
4. stop. Utilizatorul este acceptat dacă y=f(x).

Se observă că sistemul nu schimbă date secrete, dar procedura f este greu e


determinat prin interpolare având doar perechi (x,f(x)). Acest protocol este mai greu de
folosit pentru autentificarea unor utilizatori, fiind indicat pentru a autentifica alte
calculatoare din reŃea.

5.3 Autentificarea cu ajutorul cartelelor inteligente


Un alt mecanism de autentificare îl reprezintă “răspunsul la provocare” (chalenge-
response). Principiul după care funcŃionează mecanismul este următorul:

• utilizatorul î i introduce numele de login;


• sistemul generează un număr aleator (provocarea) i îl trimite utilizatorului;
• utilizatorul criptează provocarea cu o cheie cunoscută i de sistem (stabilită
dinainte) i trimite rezultatul;
• sistemul criptează, la rândul său, numărul aleator cu cheia corespunzătoare
numelui introdus de utilizator i compară cu răspunsul primit. În caz de
coincidenŃă, utilizatorul este acceptat în sistem.

Un altfel de sistem este SNK-004, produs de Digital Pathways. Sistemul folose te


o cartelă inteligentă pentru a memora cheia utilizatorului i a implementa algoritmul de
criptare DES. Pentru a utiliza o astfel de cartelă, utilizatorul trebuie să introducă un PIN
(Personal Identification Number), înscris în memoria acesteia.

5.4 Semnăturile digitale


Semnăturile au fost utilizate de-a lungul timpului pentru identificarea creatorilor i
emiŃătorilor unui document, datorită următoarelor caracteristici;

• semnătura este autentică. Semnătura convinge pe cel ce recepŃionează


documentul că semnatarul a semnat deliberat documentul respectiv;
• semnătura nu poate fi falsificată. Semnătura reprezintă dovada că semnatarul,
i nimeni altcineva, a semnat deliberat documentul;
65
• semnătura este nereutilizabilă. Semnătura face parte din documentul respectiv;
nimeni un poate muta semnătura pe alt document;
• documentul semnat este nealterabil; după ce documentul este semnat, el nu
mai poate fi modificat;
• semnătura nu poate fi repudiată. Semnătura i documentul sunt lucruri fizice.
Semnatarul nu poate susŃine ulterior că nu a semnat documentul respectiv.

În realitate, nici una dintre aceste caracteristici ale semnăturilor nu este complet
adevărată. Semnăturile pot fi falsificate, pot fi copiate electronic de pe o hârtie i aplicate
pe altul, iar documentele pot fi modificate după semnare.
Semnăturile olografe nu pot fi folosite pentru semnarea documentelor pe
calculator, datorită u urinŃei cu care pot fi copiate i depuse pe alte documente. De aceea,
a apărut conceptul de semnătură digitală.
O semnătură digitală este o valoare unică pe care programe special concepute o
ata ează unui document. Spre deosebire de semnătura olografă – care depinde numai de
emitent – semnătura digitală se bazează pe sisteme criptografice (de obicei cu chei
publice) i depinde atât de emiŃător cât i de conŃinutul mesajului semnat (de aceea se
spune că semnăturile digitale sunt dinamice, în sensul că sunt unice pentru fiecare
document pe care se aplică). Ca urmare, ea oferă o siguranŃă deplină asupra autenticităŃii
documentelor recepŃionate.

5.4.1 Semnarea documentelor cu ajutorul criptografiei cu chei publice

Există algoritmi cu chei publice care pot fi utilizaŃi pentru semnături digitale. La
unii algoritmi – cum ar fi, de exemplu, RSA – atât cheia publică cât i cea privată pot fi
folosite pentru criptare. Prin criptarea unui document cu cheia secretă se obŃine o
semnătură digitală sigură. În alte cazuri – DSA este un exemplu – există un algoritm
separat pentru semnături digitale, care nu poate fi folosit pentru criptare.
Modul în care se face crearea i verificarea semnăturilor digitale este prezentat în
figura 1. Mai întâi, se creează valoarea hash a mesajului (acest pas este opŃional, dar este
foarte indicat, întrucât oferă o serie de avantaje foarte importante, cum ar fi, de exemplu,
integritatea datelor). După crearea valorii hash, programul de semnare criptează valoarea
folosind cheia privată a semnatarului. În final, programul scrie o versiune semnată a
fi ierului, care de obicei conŃine informaŃii despre programul de semnare i indicatori de
început i sfâr it ai fi ierului.
Pentru a verifica semnătura (vezi figura 2), receptorul mesajului rulează un
program pentru decriptarea valorii hash a semnăturii, folosind cheia publică a
emiŃătorului. După ce decriptează valoarea hash, programul o memorează într-o locaŃie
temporară. Programul receptorului aplică apoi fi ierului aceea i funcŃie hash utilizată de
emiŃător pentru crearea valorii hash, apoi compară valoarea hash calculată cu cea
decriptată. Dacă valorile sunt identice, programul receptorului informează utilizatorul că
semnătura este exactă.

66
Figura 1

Crearea
semnăturii
digitale

Figura 2

Verificarea
semnăturii
digitale

Acest protocol prezintă toate caracteristicile urmărite prin semnătura digitală:

• semnătura este autentică; când destinatarul verifică mesajul cu cheia publică a


semnatarului, tie că semnatarul l-a semnat;
• semnătura nu poate fi falsificată; numai semnatarul î i cunoa te cheia privată;
• semnătura este nereutilizabilă; semnătura este o funcŃie a documentului i nu
poate fi transferată altui document;
• documentul este nealterabil; dacă există cea mai mică modificare în document,
semnătura nu mai poate fi verificată cu cheia publică a semnatarului;
• semnătura nu poate fi repudiată. Destinatarul nu are nevoie de ajutorul
semnatarului pentru a-i verifica semnătura.

FuncŃia hash este folosită pentru a face economie de timp, având în vedere faptul
că, în practică, algoritmii criptografici cu cheie publică sunt uneori ineficienŃi pentru
semnarea documentelor lungi. Astfel, în loc să se semneze un document, se semnează
rezumatul acestuia. Mai există însă i alte avantaje. În primul rând, semnătura poate fi
Ńinută separat de document. Apoi, memoria necesară la recepŃie pentru stocarea

67
documentului i semnăturii este mult mai mică. De asemenea, dacă mesajul este alterat
(intenŃionat sau nu), documentul nu va trece de verificarea semnăturii efectuată de
destinatar.
Adesea, pentru ca documentele semnate să nu poată fi reutilizate (cum ar fi de
exemplu cecurile digitale), semnăturilor digitale li se poate aplica un reper de timp
(timestamp).

5.4.2 Semnăturile multiple

Un document digital poate fi semnat de către două (sau mai multe) persoane (să le
numim A i B). Dacă nu se folose te funcŃia hash, există două opŃiuni. Una este ca A i B
să semneze copii separate ale documentului. Mesajul rezultat va fi de mai bine de două
ori mai lung decât documentul original. A doua este ca A să semneze prima documentul,
iar B să semneze semnătura lui A. Acest mecanism funcŃionează, dar este imposibil de
verificat semnătura lui A fără a verifica mai întâi semnătura lui B.
Dacă se folose te funcŃia hash, semnătura multiplă este u or de realizat.
Semnarea rezumatului de către A i B se poate face atât în paralel, cât i în serie.

5.4.3 Semnături digitale cu criptare

Prin combinarea semnăturilor digitale cu criptografia cu chei publice, se poate


dezvolta un protocol [1] care să combine securitatea dată de criptare cu autentificarea
prin semnătură digitală. Acest mecanism se poate asemui cu o scrisoare, în care
semnătura dovede te autenticitatea iar plicul oferă confidenŃialitatea.

1. A semnează mesajul cu cheia sa privată.


S A (M )
2. A criptează mesajul semnat cu cheia publică a lui B i îl trimite lui B
E B (S A (M ))
3. B decriptează mesajul cu cheia sa privată
DB (E B (S A (M ))) = S A (M )
4. B verifică semnătura cu cheia publică a lui A i reface mesajul
V A (S A (M )) = M

Semnarea înaintea criptării pare un lucru natural. Dacă A scrie o scrisoare, ea o


semnează mai întâi, iar apoi o pune în plic. Dacă ar pune scrisoarea în plic nesemnată, i
apoi ar semna plicul, B nu poate fi sigură că plicul nu a fost schimbat. i în
corespondenŃa electronică semnarea înaintea criptării este o practică prudentă.

5.5 Modelul de autentificare ISO


În funcŃionarea sistemelor cu chei publice este necesar un sistem de generare,
circulaŃie i autentificare a cheilor folosite de utilizatori. Să ne imaginăm situaŃia când o
persoană - să zicem B – dore te să se dea drept altcineva – A – i vrea să semneze în fals
în numele lui A; falsificatorul (B) poate face acest lucru u or, generându-Ńi propria sa
pereche de chei i punând-o pe cea publică în fi ierul public, în locul celei autentice a lui
A. documente semnate de B cu cheia sa secretă vor fi verificate cu cheia sa publică ce
pare a fi a lui A i orice persoană se va în ela de autenticitatea documentelor semnate în
numele lui A.
68
Tehnici i mecanisme de identificare i autentificare 131

5.5.1 Certificate i AutorităŃi de Certificare

Problema fundamentală este deci aceea a încrederii absolute în cheile publice,


cele cu care se face verificarea semnăturilor digitale. Acestea trebuie să fie disponibile în
reŃea, astfel ca orice client să poată obŃine cheia publică a unui emitent de document
semnat. În acest context, soluŃia tehnică există: crearea unei infrastructuri internaŃionale,
bazată pe AutorităŃi de certificare (Certification Authority - CA), care să permită
obŃinerea cu u urinŃă i într-o manieră sigură a cheilor publice ale persoanelor cu care se
dore te să se comunice prin INTERNET (sau în reŃeaua proprie). Aceste autorităŃi
urmează să distribuie, la cerere, certificate de chei autentificate.
Un certificat de cheie publică este o structură de date folosită pentru a se putea
asocia în mod sigur, o cheie publică cu un utilizator. Inevitabil, pot exista mai multe
autorităŃi de certificare, pe criterii de interes i naŃionale. Ca urmare, a fost necesar ca
ISO să definească, în cadrul standardului X.509, protocoalele de autentificare în reŃea i,
în special, structura de certificate de chei publice. Fiecare utilizator dispune de un nume
distinct, atribuit de către o CA sigură. Aceasta emite persoanei i un certificat ce conŃine,
în principal, numele i cheia publică.

Figura 3

Structura unui certificat X.509

Figura 3 indică structura completă a unui certificat X.509. în structura


certificatului există următoarele câmpuri:

• versiune – permite să se facă distincŃie între versiuni succesive ale formatelor


de certificat, identificând structura acestuia;
• număr serial – identifică în mod unic certificatul, între cele emise de aceea i
CA;
• identificatorul algoritmului – identifică algoritmul folosit pentru calcularea
semnăturii digitale la acel certificat, împreună cu parametrii necesari (de
exemplu RSA-MD5);
• emitent – conŃine numele CA care a creat certificatul, garantând pentru
legătura corectă între cheia publică i subiect;

69
Tehnici i mecanisme de identificare i autentificare 132

• perioada de valabilitate – cuprinde intervalul de timp – data de început i cea


de sfâr it - în care certificatul este valabil;
• subiect – conŃine numele utilizatorului care reprezintă subiectul certificării,
proprietarul cheii publice cuprinse în certificat;
• cheia publică a subiectului – conŃine cheia publică a subiectului proprietar al
certificatului;
• semnătură - conŃine semnătura digitală a certificatului, aplicată de către CA
emitentă, folosind cheia sa privată; ea poate fi verificată oriunde, folosind
cheia publică a autorităŃii emitente, lucru care creează siguranŃa privind
autenticitatea cheii.

ObŃinerea cheii publice a unui utilizator constă în validarea semnăturii digitale a


certificatului acestuia, care se face cu cheia publică a CA emitent. Însă obŃinerea cheii
publice a CA emitent este o problemă similară de validare a certificatului acestuia. Ca
urmare, procesul de validare a certificatelor este recursiv i se bazează pe un arbore (o
ierarhie) de certificate (vezi figura 4).

Figura 4

Exemplu de ierarhii
de certificate X.509

Să presupunem că utilizatorul A a primit un document semnat de la un alt


utilizator, B, i dore te verificarea autenticităŃii documentului. Mai întâi, A trebuie să
obŃină cheia publică (certificatul) lui B. Apoi, se verifică autenticitatea certificatului.
Acest lucru este simplu dacă cei doi folosesc acela i CA. A verifică simplu semnătura
autorităŃii (CA) asupra certificatului lui B.
Lucrurile se complică în cazul în care cei doi folosesc autorităŃi CA diferite pentru
emiterea certificatelor lor. Să ne imaginăm o ierarhie (arbore) de certificare, ca în figura
7.4, în care fiecare CA certifică i alte CA i utilizatorii proprii. În rădăcină există o
autoritate master. Fiecare CA are un certificat propriu, semnat de CA de deasupra sa. În
figura considerată drept exemplu, certificatul utilizatorului A este certificat de CAA, iar al
lui B de către CAB. A cunoa te cheia publică a autorităŃii sale, CAA. CAC are un certificat
semnat de CAA, astfel că A îl poate verifica. CAD are certificatul semnat de CAC iar CAE
este emis i semnat de CAD.
Mutându-se în sus în arborele de certificare către un punct comun, în acest caz
CAD, i apoi coborând către B, A poate verifica fiecare certificat de CA parcurs i, în
final, autenticitatea certificatului lui B.

70
Certificatele pot fi memorate în baze de date din diferite puncte din reŃea (în cazul
INTERNET-ului, în diferite puncte din lume). Ele pot fi schimbate între utilizatorii care
comunică. Atunci când un certificat expiră, el trebuie ters din directoarele
corespunzătoare, însă autoritatea CA emitentă trebuie să menŃină o copie a certificatului
(pentru cazul în care ar interveni ulterior o dispută).
De asemenea, un certificat poate fi revocat fie datorită compromiterii cheii
utilizatorului, a cheii CA emitent sau datorită faptului că CA nu mai dore te certificarea
acelui utilizator. Fiecare CA trebuie să dispună de o listă de certificate revocate dar încă
neexpirate. Dacă, de exemplu, A prime te un certificat, A trebuie să verifice mai întâi, că
acesta nu este revocat, fie într-o bază de date de certificate revocate din reŃea fie într-o
listă locală.

5.5.2 Protocoale de autentificare

Să presupunem că A vrea să comunice cu B. Mai întâi A trebuie să apeleze o bază


de date pentru a obŃine ceea ce se nume te o cale de autentificare, adică toate certificatele
corespunzătoare căii din arbore, de la a la B, inclusiv certificatul lui B. Din acest moment A
poate iniŃia un protocol de autentificare one-way, two-way sau three-way.
Protocolul one-way reprezintă o sigură comunicare, de la A la B. El stabile te
identitatea lui A i a lui B i integritatea informaŃiei transmisă de A lui B.
Protocolul two-way adaugă un răspuns de la B. Stabile te că B, i nu un impostor,
a trimis răspunsul. Asigură de asemenea secretizarea ambelor comunicaŃii.
Ambele protocoale utilizează repere de timp (timestamps). Protocolul three-way
adaugă un nou mesaj de la A i elimină necesitatea reperelor de timp.

Protocolul one-way

1. A generează un număr aleator, RA;


2. A construie te un mesaj, M = (T A , R A , I B , d ) , unde TA reprezintă reperul de
timp al lui A, IB este identitatea lui B, iar d este un segment arbitrar de date.
Datele pot fi criptate cu cheia publică a lui B, EB, pentru securitate;
3. A trimite (C A, D A (M )) lui B, unde CA reprezintă certificatul lui A, iar DA cheia
privată a lui A;
4. B verifică CA i obŃine EA (cheia publică a lui A). B se asigură că certificatul nu
a expirat;
5. B folose te EA pentru a decripta DA(M). Astfel se verifică atât semnătura lui A,
cât i integritatea mesajului semnat;
6. B verifică IB pentru siguranŃă;
7. B verifică reperul de timp din M i confirmă că mesajul este actual;
8. OpŃional, B poate verifica RA din M comparându-l cu numerele vechi dintr-o
bază de date, pentru a se asigura că mesajul nu este unul reluat.

Protocolul two-way

Constă dintr-un protocol one-way de la A la B i apoi un altul similar de la B la A.


După executarea pa ilor de la (1) la (8), protocolul two-way continuă astfel:

9. B generează un număr aleator, RB;


10. B construie te un mesaj, M '= (TB , RB , I A , R A , d ) , unde TB reprezintă reperul
de timp al lui B, IA este identitatea lui A, iar d este un segment arbitrar de date.
Datele pot fi criptate cu cheia publică a lui A, EA, pentru securitate;
71
Tehnici i mecanisme de identificare i autentificare 134

11. B trimite DB(M’) lui A;


12. A folose te EB pentru a decripta DB(M’). Astfel se verifică atât semnătura lui
B, cât i integritatea mesajului semnat.
13. A verifică IA pentru siguranŃă;
14. A verifică TB din M i confirmă că mesajul este actual;
15. OpŃional, A poate verifica RB din M comparându-l cu numerele vechi dintr-o
bază de date, pentru a se asigura că mesajul nu este unul reluat.

Protocolul three-way

Are acelea i rezultate ca i protocolul two-way, dar fără a folosi repere de timp.
Pa ii de la (1) la (15) sunt identici, cu TA=TB=0.

16. A verifică versiunea recepŃionată a lui RA, comparând-o cu cea trimisă la pasul
(3);
17. A trimite DA(RB) lui B;
18. B folose te EA pentru a decripta DA(RB). Astfel se verifică atât semnătura lui A,
cât i integritatea mesajului semnat.
19. B verifică versiunea recepŃionată a lui RB, comparând-o cu cea trimisă la pasul
(10);

5.6 Protocolul de autentificare Kerberos

Problema autentificării utilizatorilor i programelor în reŃele devine critică,


datorită numeroaselor posibilităŃi de ocolire sau în elare a mecanismelor clasice bazate
pe parole. Un utilizator care cere acces la un sistem multiuser sau la un serviciu
INTERNET va trebui să se autentifice, de cele mai multe ori folosind o parolă. Însă
sistemele bazate pe parole sunt vulnerabile la atacuri prin încercări repetate sau la
ascultarea conexiunilor pe care se transmit parolele.
De asemenea, o staŃie de lucru este sub controlul total al utilizatorului
(utilizatorilor) săi. Acesta poate schimba sistemul de operare sau poate schimba chiar
ma ina însă i. Un serviciu de reŃea care se dore te sigur nu se poate baza pe delegarea
staŃiilor de lucru în a îndeplini autentificarea. De aceea, ultimii ani au dus la cercetarea i
implementarea unor servicii de autentificare unor servicii de autentificare bazate pe
protocoale criptografice.
În acest context, cel mai folosit serviciu de autentificare este Kerberos
Authentication Server. El a fost creat în cadrul proiectului Athena, la MIT (Massachusets
Institute of Technology). El permite utilizatorilor să comunice în reŃea pentru a- i
dezvălui identitatea i pentru a se autentifica, prevenind situaŃiile de ascultare a liniilor.
Kerberos realizează secretizarea datelor prin criptare. De asemenea, Kerberos furnizează
autentificarea în timp real într-un mediu distribuit nesecurizat.
Kerberos este tehnologie nord americană; din cauza restricŃiilor de export, nu este
disponibil în afara SUA. Pentru a rezolva această problemă i pentru a furniza
companiilor europene un produs compatibil, un alt proiect a fost dezvoltat în Europa.
acest produs se nume te SESAME i este complet compatibil cu Kerberos versiunea 5.
Protocolul Kerberos este în totalitate implementat în arhitectura securităŃii
sistemului de operare Windows 2000 în vederea autentificării i controlului accesului.

72
5.6.1 FuncŃionarea Kerberos-ului
Modelul Kerberos se bazează pe un protocol de autentificare cu o autoritate de
încredere numită terŃ de încredere (trusted third party). Kerberos funcŃionează prin
furnizarea de tichete către utilizatori sau servicii, care sunt folosite pentru identificare, i
a unor chei criptografice, necesare pentru o comunicaŃie sigură în reŃea. Un tichet, care
este o secvenŃă de câteva sute de octeŃi, poate fi folosit în aproape orice protocol de reŃea.
Cele mai multe implementări de Kerberos folosesc TCP/IP. Kerberos este folosit în
protocoale la nivel aplicaŃie, precum Telnet sau FTP, pentru a furniza securitatea
comunicaŃiilor cu host-ul. Mecanismele de flux de date, precum SOCK-STREAM sau
RPC, îl pot folosi, de asemenea, ca sistem implicit de autentificare.
La un nivel scăzut, Kerberos poate fi folosit pentru comunitatea comunicaŃiilor
host-host în protocoale precum IP, UDP sau TCP/IP – de i astfel de implementări sunt
rare.
Kerberos are două obiective principale: autentificarea i distribuŃia cheilor de
cifrare. El furnizează următoarele servicii:

• autentificare mutuală i comunicaŃie sigură între 2 entităŃi ale unei reŃele


deschise;
• distribuie chei secrete, oferind mecanisme pentru propagarea sigură a acestor
chei secrete prin reŃea;
• furnizează diferitelor servicii de pe calculatoare host posibilitatea identificării
sigure a utilizatorilor individuali.

Într-un sistem Kerberos, există un server de autentificare Kerberos care


furnizează managementul centralizat al cheilor i al funcŃiilor administrative. Server-ul
are o bază de date care conŃine toate cheile secrete ale utilizatorilor. El generează chei de
sesiune, ori de câte ori doi utilizatori doresc să comunice sigur i autentifică identitatea
unui utilizator care cere servicii reŃea. Dacă server-ul este compromis, integritatea
întregului sistem este compromisă deoarece server-ul este considerat ca a treia parte de
încredere în protocoalele implicate. Fiecare utilizator i fiecare serviciu folosesc câte o
cheie în comun cu Centrul de DistribuŃie Kerberos (KDC); aceste chei acŃionează ca
ni te chei master de distribuŃie a cheilor de sesiune.
Kerberos este folosit în cadrul mai multor universităŃi (inclusiv MIT i Carnegie –
Mellon) i a fost adoptat în partea standard din kit-ul de distribuŃie al sistemului de operare
DEC Ultrix. Kerberos se bazează pe o schemă simetrică de cifrare. În cadrul protocolului său
sunt necesare O(n2) perechi de chei master, fiecare entitate comunicantă folosind o cheie
master pentru comunicaŃiile cu Kerberos. Kerberos deŃine toate cheile master ale
comunicaŃiilor. Kerberos este un sistem de autentificare (nu unul de autorizare) în care
parolele sunt folosite drept chei, nefiind niciodată transmise în clar în reŃea.

5.6.2 Protocolul de autentificare

În cadrul protocolului Kerberos sunt implicate următoarele entităŃi în schema de


autentificare (vezi figura 5):

• Serverul de autentificare Kerberos;


• Entitatea de acordare a tichetului TGS – Ticket Granting Server;
• Clientul C, care trebuie autentificat pentru a i se acorda acces la un serviciu
furnizat de server-ul S;
• Server-ul S, la care se cere acces din partea clientului.
73
Figura 5

Protocolul de
autentificare
Kerberos

În descrierea protocolului Kerberos se vor folosi următoarele notaŃii:

• KA,B – cheia de sesiune pentru comunicaŃiile entităŃilor A i B;


• E K A ( X ) – cifrarea informaŃiei X, cu funcŃia simetrică E, de exemplu DES,
folosind cheia master KA a entităŃii A;
• AC – autentificatorul lui C;
• TC,TGS – Tichetul lui C pentru accesul la server-ul TGS;
• TC,S – tichetul lui C pentru accesul la serverul S;
• Adr – adresa IP a clientului;
• TimeStamp – marca de timp curent a tichetului;
• LifeTime – perioada de valabilitate a tichetului.

Kerberos furnizează evidenŃa identităŃilor principale, care reprezintă fie un


utilizator fie un serviciu de pe un anumit calculator. O identitate principală constă dintr-
un triplet de forma:
[primary name, instance, realm]
unde:

• primary name este, în cazul unor utilizatori persoane, numele de conectare


(login). Pentru un serviciu, acest câmp conŃine nume-serviciu;
• instance este, pentru persoane, fie nul, fie conŃine un anumit atribut al acestora
(de exemplu root). În cazul serviciilor, acest câmp conŃine numele ma inii;
• realm este folosit pentru a se face distincŃie între diferite domenii de
autentificare. În general, se acceptă acest lucru pentru ca baza de date
Kerberos să nu fie gigantică.

Toate mesajele Kerberos conŃin o sumă de control care este verificată după
descifrare. Dacă suma de control este validă, receptorul constată că a fost folosită cheia
corectă la cifrare. IdentităŃile principale trebuie să obŃină, în faza iniŃială, un tichet pentru
servicii de la un server special, numit TGS (Ticket Granting Server). Un tichet conŃine
informaŃia de identificare a identităŃii principale, cifrată cu cheia privată a serviciului.
Iată o descriere a protocolului Kerberos, format din cei 6 pa i, ilustraŃi în figura 7.5:

• Pasul 1: Clientul C cere un certificat – numit tichet – de la Kerberos, transmiŃându-i


mesajul cu identificatorii lui C i TGS:

C → Kerberos : {C , TGS }

74
Clientul trimite o cerere de autentificare server-ului cerând, de fapt, “acreditarea”
pentru un server de aplicaŃie dat.

• Pasul 2: Kerberos autentifică utilizatorul prin cifrare cu cheia sa master, KC, i


previne eventualele reluări de mesaje vechi prin utilizarea unei mărci de timp.
Kerberos va transmite tichetul pentru accesul lui C la TGS. Acest tichet include o
nouă cheie de sesiune, KC,TGS, care va fi utilizată pentru schimbul de mesaje dintre C
i TGS. Tichetul are următoarea structură:

TC ,TGS = [TGS , C , Adr , TimeStamp, LifeTime, K C ,TGS ]


{ (
Kerberos → C : E K C K C ,TGS , E KTGS (TC ,TGS ) )}
În transmisia către C, Kerberos cifrează tichetul cu cheia KTGS, ceea ce face ca numai
TGS să poată citi tichetul, C neputând să-l modifice sau să-l falsifice.

• Pasul 3: Utilizatorul C se identifică către TGS, prin prezentarea tichetului său,


împreună cu autentificatorul AC, de forma:

AC = [C , Adr , TimeStamp ]

Autentificatorul este cifrat cu cheia de sesiune KC,TGS distribuită de Kerberos. C va


cere lui TGS un alt tichet, necesar pentru accesul la serviciul S:

{
C → TGS : S , E KTGS (TC ,TGS ), E KC ,TGS ( AC ) }
• Pasul 4: TGS verifică valabilitatea tichetului prin decriptare i folose te marca de
timp pentru a detecta eventualele reluări de mesaje vechi. În continuare, TGS va
furniza lui C tichetul de acces la S, cifrat cu cheia lui S. Ca urmare, S este singurul
care va putea să-l interpreteze. Tichetul va include o cheie de sesiune nouă, care va fi
folosită în schimbul ulterior de mesaje dintre C i S:

{ (
TGS → C : E KC ,TGS E K S (TC , S ), K C ,S )}
Tichetul are următoarea structură:
TC , S = [S , C , Adr , TimeStamp, LifeTime, K C , S ]

• Pasul 5: Utilizatorul poate acum accesa serviciul dorit pe server-ul S, prezentând


acestuia tichetul, împreună cu un autentificator:

{ }
C → S : E K S (TC , S ), E KC , S ( AC )

unde autentificatorul are structura:

AC = [C , Adr , TimeStamp ]

• Pasul 6: Dacă se face o autentificare bidirecŃională, server-ul poate răspunde prin:

{
S → C : E KC , S (TimeStamp + 1) }
75
Cheia clientului, KC, este derivată printr-o transformare neinversabilă din parola
testată de utilizator. Server-ul trebuie să posede cheile private ale entităŃilor pentru a
putea decripta tichetele. Aceste chei stau într-o locaŃie sigură de pe calculatorul server-
ului.
Autentificatorii sunt recalculaŃi i recifraŃi de fiecare dată când se folose te un
tichet. Fiecare tichet are încorporată o anumită perioadă de valabilitate. Odată trecut acest
timp, clientul trebuie să obŃină un nou tichet de la TGS. Dacă i tichetul de acces la TGS a
expirat, trebuie cerut altul de la Kerberos, folosind cheia KC.

5.6.3 Autentificarea între domenii

Kerberos împarte reŃeaua în domenii de securitate sau regiuni, numite realms-uri.


Fiecare regiune (realm) are propriul server de autentificare i implementează propria
politică de securitate. Aceasta permite organizaŃiilor care folosesc Kerberos să aibă
diferite niveluri de securitate, pentru diversele clase de informaŃii din cadrul organizaŃiei.
O regiune poate accepta autentificare i de la clienŃi din cadrul altor regiuni. De
aceea, realm-urile sunt ierarhice. Aceasta înseamnă că fiecare regiune poate avea regiuni
“copii” i fiecare regiune poate avea un “părinte”. Această structură permite regiunilor
care au un contact direct să partajeze informaŃia de autentificare. Astfel, este posibil ca
un utilizator să se identifice într-o regiune Kerberos i să se conecteze la un calculator
aparŃinând unei alte regiuni, fără a mai fi necesară autentficarea la aceasta, de i logic cele
două regiuni nu sunt în contact direct.
Exemplificând, să presupunem că o organizaŃie Company_A.com a instalat
Kerberos i a creat două regiuni departamentale: West i East (vezi figura 6). Dacă un
utilizator se autentifică în regiunea West.Company_A.com i dore te să folosească
informaŃii din East.Company_A.com, nu este nevoie de reautentificare. Identitatea
utilizatorului este schimbată între regiuni prin intermediul regiunii părinte
Company_A.com. Deoarece ambele regiuni sunt părŃi ale aceleia i organizaŃii, ele pot
avea încredere una în cealaltă.

Figura 6

Ierarhia
regiunilor
Kerberos

Pe de altă parte, dacă un utilizator se autentifică la Company_B.com i dore te să


folosească informaŃii din East.Company_A.com, Kerberos poate cere utilizatorului să se
reautentifice la un server de autentificare, fără a partaja cu Company_A.com informaŃia
necesară reautentificării. Deoarece Kerberos-ul furnizează autentificare i criptare sigură,
comunicaŃia poate fi făcută în siguranŃă prin INTERNET. Dacă două companii doresc să
76
accepte autentificarea una celeilalte, cele două servere Kerberos, Company_A.com i
Company_B.com, trebuie să partajeze o cheie de criptare comună.
Conectarea la un server care iese din domeniul de autentificare propriu este, deci,
mai complicată. Un tichet obi nuit nu este suficient, deoarece KDC-ul local nu cunoa te
cheia secretă a server-ului de la distanŃă. De aceea, se folose te un mecanism suplimentar
de autentificare între domenii. KDC-ul local trebuie să folosească în comun cu KDC-ul
distant o cheie secretă. Această cheie este folosită pentru a semna cererea locală i a o
adresa KDC-ului distant. Acesta folose te informaŃia pentru a construi un tichet pentru
accesul la unul din server-ele domeniului său. Ca urmare, fiecare KDC ar trebui să deŃină
chei de comunicaŃie cu toate celelalte KDC-uri. Pentru a evita această situaŃie, se
folose te o structură de autentificare ierarhică. Un KDC departamental va conversa
numai cu KDC-ul universităŃii, iar acesta, la rândul său, va dialoga cu KDC-ul regional.
Numai KDC-ul regional va trebui să deŃină cheile tuturor KDC-urilor regionale cu care le
poate intra în legătură.

5.6.4 Ce nu face Kerberos

De i Kerberos este foarte util i mult folosit pentru autentificare, el are o serie de
slăbiciuni pe care trebuie să le evidenŃiem.

• Kerberos este proiectat pentru autentificări utilizator-host i nu host-host. Ca urmare,


folosirea acestui protocol de autentificare cere ca fiecare host să reŃină cheile secrete
(master) KA ale tuturor celorlalte host-uri; însă se tie că multe dintre ele reprezintă
medii foarte nesigure pentru memorarea pe termen lung a unor informaŃii secrete.
Dacă un intrus ar fura o cheie primară, s-ar putea pretinde utilizator principal i ar
putea ataca orice server;
• O altă problemă este legată de tichet i de cheia de sesiune. Din nou, calculatoarele
multiuser nu sunt bune pentru a păstra chei secrete în ele; oricine care poate citi o
cheie de sesiune, poate să o folosească pentru a se legitima drept o altă persoană. De
asemenea, tichetul poate fi obŃinut prin ascultarea liniei i, ca urmare, se pot obŃine
accese la server-e fără drepturi reale;
• Autentificatorii reprezintă i ei o problemă vulnerabilă. Dacă host-ul nu Ńine o
evidenŃă a autentificatorilor folosiŃi anterior, un intrus poate folosi un autentificator
vechi, desigur însă în limitele unor intervale de timp de expirare. De asemenea, se pot
face anumite penetrări făcând host-ul să aibă marcată o dată curentă mai veche;
• Cea mai importantă problemă o reprezintă modul în care se obŃine tichetul iniŃial.
Aceasta deoarece cererea tichetului pentru TGS nu conŃine în protocol nici un fel de
informaŃie de autentificare, cum ar fi, de exemplu, numele cifrat al utilizatorului.
Mesajul răspuns al lui Kerberos este potrivit unui atac: un atacator situat la distanŃă în
INTERNET poate să- i construiască o colecŃie de tichete cifrate i poate să încerce un
asalt cu ele. Ultima versiune a protocolului Kerberos (v5) conŃine mecanisme pentru
a preveni acest lucru;
• Kerberos nu rezolvă atacurile de tip “ghicire a parolei”. Dacă un utilizator a ales o
parolă simplă, atacatorul poate reu i într-un atac de tipul celui cu dicŃionarul;
• Kerberos nu rezolvă problemele de atacuri la servicii. Astfel de protocoale sunt
necesare atunci când un intrus împiedică o aplicaŃie să funcŃioneze în pa ii de
autentificare specificaŃi. Detectarea i soluŃionarea unor astfel de atacuri – unele
dintre lele părând a fi o defecŃiune obi nuită a sistemului – sunt lăsate în seama
administratorului sau a utilizatorilor.

77
5.6.5 Distribuitori de Kerberos comercial
Următoarele firme oferă versiuni comerciale de Kerberos:

• CyberSAFE;
• Cygnus Support;
• Digital Equipment corporation;
• Emulex Network Systems;
• Open Vision Technologies, Inc.;
• TGV, Inc.

5.7 Metode biometrice de autentificare


Sistemele biometrice verifică identitatea unui utilizator prin unele caracteristici
unice, nealterabile, cum ar fi amprenta digitală, geometria mâinii, caracteristicile ochiului
(retinei sau irisului), amprenta vocală, geometria feŃei i altele.
Tehnicile biometrice tind tot mai mult să înlocuiască vechile tehnici de
identificare. PIN-urile au fost unele dintre primele identificatoare care ofereau o
recunoa tere automată. Aceasta însemna, însă, recunoa terea PIN-ului, i nicidecum a
persoanei care îl folosea. Acest lucru este valabil i pentru cartelele inteligente. Cartelele
pierdute pot fi înlocuite, dar mâinile, ochii i faŃa nu se pot pierde, fura, uita sau
împrumuta.
Iată care sunt cele mai “populare” metode biometrice (unele dintre ele sunt destul
de dificil de realizat în practică, chiar dacă sunt foarte interesante din punct de vedere
tehnic).

Verificarea amprentei digitale

ExperŃii consideră că probabilitatea ca două amprente digitale să fie identice este


de 1 la un miliard. Deoarece aceste caracteristici nu se modifică pe timpul vieŃii, ele sunt
ideale pentru identificarea persoanelor.
Există o mare varietate de abordări ale verificării amprentelor digitale. Unele
dintre ele încearcă să implementeze metodele tradiŃionale de potrivire a detaliilor
minuscule, altele sunt dispozitive cu potrivire completă a modelului amprentei, iar altele
reprezintă abordări originale (detecŃie cu ultrasunete, determinarea spectrului
hemoglobinei din sângele care pulsează în deget, etc.).
AplicaŃiile privind accesul pe staŃiile de lucru se bazează din ce în ce mai mult pe
recunoa terea amprentelor digitale, datorită costului relativ redus, dimensiunii reduse
(pot fi integrate u or chiar pe tastatură) i integrării facile.
De exemplu, sistemul Kriptic Pilot, produs de Applied Biometrics Products, Inc.,
ata abil la calculatoare cu sistem de operare Windows, cu dimensiunile 8.26 x 5.72 x 2.54 cm,
conŃine o bază locală de date cu capacitate de memorare a 16 amprente diferite, la preŃul
de 69 USD (vezi figura 7).

78
Figura 7

Sistemul Kriptic Pilot


de recunoa tere
a amprentei digitale

Geometria mâinii

A a cum sugerează i numele, geometria mâinii constă în măsurarea


caracteristicilor fizice ale mâinii i degetelor utilizatorului, din perspectivă
tridimensională. Este una dintre cele mai utilizate metode, oferind o balanŃă bună a
performanŃelor i este relativ u or de utilizat. Această metodă este pretabilă acolo unde
există baze mai extinse de utilizatori sau utilizatori care accesează sistemul mai rar.
AcurateŃea poate fi foarte ridicată dacă se dore te. De exemplu, sistemul ID3D HandKey,
produs de Recognition Systems, Inc., este poate cel mai răspândit sistem folosit pentru
recunoa terea geometriei mâinii (vezi figura 7.8). Un astfel de sistem realizează peste 90
de măsurători ale dimensiunilor mâinii i degetelor în numai o secundă, folosind o
cameră digitală CCD cu rezoluŃie de 32.000 de pixeli, este capabil să memoreze 27.000
de utilizatori i costă aproximativ 2150 USD.

Figura 8

Sistemul ID3D HandKey


de recunoa tere a
geometriei mâinii

79
Scanarea retinei

O tehnologie disponibilă este aceea a scanării retinei (a modelului vaselor de


sânge care irigă retina) cu ajutorul unui fascicul luminos de intensitate redusă. Scanarea
retinei s-a dovedit a fi foarte precisă, dar este necesar ca utilizatorul să privească într-un
receptor i să focalizeze un anumit punct, lucru ce presupune un contact cu dispozitivul
de citire, nefiind astfel recomandat din punct de vedere igienic. Un exemplu de astfel de
dispozitiv este Icam 2001, produs de firma EyeDentify, al cărui timp de verificare este
între 1.5 i 4 secunde (în funcŃie de numărul de utilizatori din baza de date) i care are un
preŃ de aproximativ 2650 USD.

Scanarea irisului

Pentru scanarea irisului se utilizează o cameră CCD (asemănătoare cu o cameră


video convenŃională), nefiind necesar un contact direct cu dispozitivul de scanare. Un
exemplu de astfel de dispozitiv este System 2000EAC, produs de Iriscan, cu un timp de
verificare de 2 secunde (pentru o bază de date de 10000 de utilizatori) i un preŃ de
achiziŃie de aproximativ 5950 USD.

Verificarea vocii

Există diferenŃe între verificarea i recunoa terea vocii. Metodele de recunoa tere
automată a unui cuvânt rostit sunt destul de răspândite, ceea ce este mai puŃin accesibil
este capabilitatea de a recunoa te persoana care roste te respectivul cuvânt. Tehnicile de
recunoa tere a vocii se concentrează asupra caracteristicilor spectrului vocal, i sunt încă
în cercetare. Un astfel de sistem este VACS (Voice Access Control System), produs de
Texas Instruments, cu timp de verificare 1.5 secunde i disponibil la un preŃ de 21.000
USD (pentru 16 echipamente).

Recunoa terea facială

Este o tehnică ce prezintă un interes deosebit i ale cărei capabilităŃi au fost


adesea subapreciate. Una este să se compare două imagini statice (singurul lucru pe care
sunt capabile anumite sisteme să-l execute – nu este i cazul sistemelor biometrice) i alta
este să detecteze i ă se verifice identitatea unui individ din cadrul unui grup. Sistemele
de recunoa tere facială au avut până acum un succes limitat în practică. Totu i, continuă
să se realizeze progrese în acest domeniu i este interesant de urmărit ce ne va aduce
viitorul.

Există i alte metode biometrice de recunoa tere incluzând simŃul olfactiv, lobul
urechii i alŃi parametri. De i acestea sunt interesante din punct de vedere tehnic, nu sunt
considerate în acest stagiu drept soluŃii aplicabile.

80
VI. Managementul cheilor
În realitate, managementul cheilor este cea mai dificilă parte a criptografiei.
Proiectarea algoritmilor criptografici i a protocoalelor de securitate nu este u oară, dar
pentru aceasta există largi grupuri de cercetare. Păstrarea secretului cheilor este mult mai
dificil de realizat.
Criptanali tii atacă adesea atât criptosistemele simetrice cât i cele cu chei publice
prin managementul cheilor acestora. De ce s-ar chinui un atacator să încerce să spargă un
algoritm criptografic, când ar putea să obŃină u or cheile în cazul unor proceduri
neglijente de stocare a acestora? De ce să cheltuiască 10 milioane de dolari pentru a
construi o ma ină de criptanaliză, când ar putea să cheltuiască 1000 de dolari pentru a
mitui un funcŃionar. Această metodă este mult mai ieftină decât construirea unor ma ini
uria e de criptanaliză i angajarea unor criptanali ti de geniu. Atacatorul poate fura
cheile. El poate aresta sau răpi pe cineva care cunoa te cheile. Este mult mai u or găsirea
slăbiciunilor oamenilor decât ale criptosistemelor.
Operatorii trebuie să- i protejeze cheile în aceea i măsură cu datele pe care le
criptează. Din nefericire, multe produse comerciale declară pur i simplu “Utilizăm DES”
i uită de orice altceva. Rezultatele nu sunt foarte impresionante.
De exemplu, programul DiskLock pentru Macintosh (versiunea 2.1), vândut în
majoritatea magazinelor de software, susŃine securitatea criptării cu DES. El criptează
fi iere utilizând DES, iar implementarea algoritmului este corectă. Totu i, DiskLock
stochează cheile DES împreună cu fi ierele criptate. Astfel, dacă tii unde să cauŃi cheile
i vrei să cite ti un fi ier criptat cu DES cu ajutorul programului DiskLock, trebuie doar
să folose ti cheia fi ierului criptat i să îl decriptezi. Nu contează că acest program
utilizează criptarea DES – implementarea nu oferă securitate.

6.1 Generarea cheilor


Securitatea unui algoritm constă în cheie. Dacă se utilizează o procedură
ineficientă din punct de vedere criptografic pentru generarea cheilor, atunci întregul
sistem va fi slab. Un atacator nu va avea nevoie să criptanalizeze algoritmul de criptare;
va putea criptanaliza algoritmul de generare a cheilor.

SpaŃii reduse ale cheilor

DES are o cheie de 56 de biŃi. Implementat corect, orice ir de 56 de biŃi poate


constitui o cheie; există astfel 256 (1016) chei posibile. Norton Discreet pentru MS-DOS
(versiunea 8.0, precum i cele anterioare) permite numai chei ASCII, forŃând fiecare bit
de ordin mare al fiecărui octet să fie zero. Programul converte te de asemenea literele
mici în majuscule (astfel al cincilea bit al fiecărui octet este întotdeauna opusul celui de-
al aselea bit) i ignoră bitul de ordin mic al fiecărui octet, rezultând astfel numai 240 chei
posibile. Această procedură de generare a cheilor a făcut ca algoritmul DES implementat
de acest program să fie de zece mii de ori mai u or de spart decât o implementare
corectă.
Tabelul 1 prezintă numărul de chei posibile în cazul diferitor constrângeri asupra
irului de intrare. Tabelul 2 prezintă timpul necesar unei căutări exhaustive prin toate
aceste chei, considerând un milion de încercări pe secundă.

81
Tabelul 1
Numărul cheilor posibile în cazul diferitor spaŃii ale cheilor
4 octeŃi 5 octeŃi 6 octeŃi 7 octeŃi 8 octeŃi
7 8 9
Litere mici (26): 460.000 1.2*10 3.1*10 8.0*10 2.1*1011
Litere mari i digiŃi (36): 1.700.000 6.0*107 2.2*109 7.8*1010 2.8*1012
Caractere alfanumerice (62): 1.5*107 9.2*108 5.7*1010 3.5*1012 2.2*1014
Caractere printabile (95): 8.1*107 7.7*109 7.4*1011 7.0*1013 6.6*1015
Caractere ASCII (128): 2.7*108 3.4*1010 4.4*1012 5.6*1014 7.2*1016
Caractere ASCII pe 8 biŃi (256): 4.3*109 1.1*1012 2.8*1014 7.2*1016 1.8*1019

Tabelul 2
Căutarea exhaustivă pt. diferite spaŃii ale cheilor (considerând 106 încercări/sec)
4 octeŃi 5 octeŃi 6 octeŃi 7 octeŃi 8 octeŃi
Litere mici (26): 0.5 sec 12 sec 5 min 2.2 ore 2.4 zile
Litere mari i digiŃi (36): 1.7 sec 1 min 36 min 22 ore 33 zile
Caractere alfanumerice (62): 15 sec 15 min 16 ore 41 zile 6.9 ani
Caractere printabile (95): 1.4 min 2.1 ore 8.5 zile 2.2 ani 210 ani
Caractere ASCII (128): 4.5 min 9.5 ore 51 zile 18 ani 2300 ani
Caractere ASCII pe 8 biŃi (256): 1.2 ore 13 zile 8.9 ani 2300 ani 580.000 ani

Prin testarea unui milion de chei pe secundă (fie cu o ma ină, fie cu mai multe
ma ini în paralel) este posibilă spargerea cheilor reprezentate cu litere mici i cu
majuscule i numere cu lungimi de până la 8 octeŃi, a cheilor reprezentate alfanumeric cu
lungimi de până la 7 octeŃi, a celor reprezentate cu caractere printabile i caractere ASCII
cu lungimi de până la 6 octeŃi, i a celor reprezentate cu caractere ASCII pe 8 biŃi cu
lungimi de până la 5 octeŃi.
Ma inile din ziua de astăzi au însă puteri de calcul mult mai mari. S-a reu it ca
prin legarea în paralel a zeci de mii de ma ini să se găsească o cheie DES (56 biŃi)
reprezentată cu caractere ASCII pe 8 biŃi în mai puŃin de 20 de ore. i nu trebuie uitat
faptul că puterea de calcul se dublează aproape anual.

Alegerea unor chei slabe

Când cineva î i alege o cheie proprie, alege în general o cheie slabă. Este mult
mai posibilă alegerea cheii “Mihai” decât a cheii “*9 )$H/A.”. Acest fapt nu se datorează
întotdeauna experienŃei reduse în domeniul securităŃii; pur i simplu “Mihai” este mai
u or de reŃinut decât “*9 )$H/A.”. Nici cel mai sigur algoritm din lume nu poate fi prea folositor
dacă utilizatorul obi nuie te să aleagă drept cheie numele soŃiei sau să- i noteze cheile pe
bucăŃele de hârtie Ńinute în portmoneu. Un atac brut inteligent nu încearcă toate cheile posibile
într-o anumită ordine, ci încearcă iniŃial cheile evidente.
Acest atac poartă numele de dictionary attack (atac cu dicŃionarul), deoarece atacatorul
folose te un dicŃionar al cheilor obi nuite. Daniel Klein a reu it să spargă 40% dintre parolele
unui computer obi nuit utilizând acest sistem [20]. El nu a încercat parolă după parolă pentru a
obŃine accesul, ci a copiat fi ierul cu parola criptată, realizând atacul offline.
Un atac cu dicŃionarul este mult mai puternic atunci când este utilizat împotriva
unui fi ier cu chei i nu a unei singure chei. Un singur utilizator poate fi suficient de
inteligent să î i aleagă o cheie bună. Dacă o mie de persoane î i aleg, fiecare în parte, o
cheie proprie ca parolă pentru un sistem de calculatoare, există mari anse ca cel puŃin o
persoană să î i aleagă o cheie existentă în dicŃionarul atacatorului.

82
Chei aleatoare

Chei bune sunt irurile de biŃi aleatoare generate de unele procese automate. Dacă
cheia are lungimea de 64 de biŃi, fiecare cheie posibilă de 64 de biŃi trebuie să aibă
aceea i probabilitate. BiŃii cheii trebuie generaŃi fie de către o sursă aleatoare de
încredere, fie de către un generator de biŃi pseudoaleator. Dacă aceste procese automate
nu sunt accesibile, se poate folosi metoda monedei sau a zarului.
Acest lucru este important, dar nu trebuie concentrate eforturile în direcŃia
stabilirii dacă zgomotul surselor audio este mai aleator decât zgomotul corodării
radioactive. Nici una dintre aceste surse de zgomot aleator nu este perfectă, dar sunt
probabil suficient de bune. Este importantă utilizarea unui generator de numere aleatoare
pentru generarea cheii, dar este mult mai importantă utilizarea unor algoritmi buni de
criptare i a unor proceduri bune de management al cheilor.
AnumiŃi algoritmi de criptare au chei slabe: chei specifice care sunt mai puŃin
sigure decât alte chei. DES are doar 16 chei slabe din 256, astfel că ansele generării unei
astfel de chei este extrem de mică. S-a spus că un criptanalist nu va cunoa te faptul că a
fost utilizată o cheie slabă, astfel că nu va avea nici un avantaj datorită utilizării
accidentale a acesteia. S-a mai spus de asemenea că neutilizarea cheilor slabe oferă o
informaŃie de criptanaliză. Oricum, testarea celor câteva chei slabe este atât de u oară
încât pare a fi o imprudenŃă neexecutarea acesteia.
Generarea cheilor pentru sistemele criptografice cu chei publice este mai dificilă,
deoarece adeseori cheile trebuie să aibă anumite proprietăŃi matematice (legate de
primalitate, resturi, etc.).
Generarea unei chei aleatoare nu este întotdeauna posibilă. Uneori este necesar
să-Ńi aminte ti cheia. Dacă trebuie generată o cheie u or de reŃinut, ea trebuie să fie
neclară. Ideal ar fi ceva u or de memorat, dar dificil de ghicit. Iată câteva sugestii:
• Perechi de cuvinte separate printr-un semn de punctuaŃie, de exemplu
“ oarece * pisică”
• iruri de litere reprezentând acronimul unei fraze mai lungi; de exemplu,
“Animalul meu preferat este Câinele!” generează cheia “AmpeC!”

Fraze de identificare (pass phrases)

O soluŃie mai bună este folosirea unei întregi fraze în locul unui cuvânt, i
convertirea frazei respective într-o cheie. Aceste fraze poartă numele de fraze de
identificare (pass phrases). O tehnică numită key crunching (comprimarea cheii)
converte te fraza într-o cheie aleatoare. Se poate folosi o funcŃie one-way hash pentru
transformarea unui text de lungime arbitrară într-un ir de biŃi pseudoaleator.
De exemplu, un text u or de reŃinut (am ales un text în limba engleză deoarece în
literatura de specialitate am găsit studii statistice avansate doar asupra limbii engleze):
My name is Ozymandias, king of kings. Look on my works, my mighty, and dispair.

poate fi comprimat în această cheie de 64 de biŃi:


e6c1 4398 5ae9 0a9b
Dacă fraza este suficient de lungă, cheia rezultată va fi aleatoare. Sensul exact
pentru “suficient de lungă” este deschis interpretărilor. Teoria informaŃiei spune că limba
engleză are aproximativ 1.3 biŃi de informaŃie pe caracter. Pentru o cheie de 64 de biŃi, o
frază de identificare de aproximativ 49 de caractere, sau 10 cuvinte obi nuite din limba
engleză, ar fi suficiente. Ca regulă nedemonstrată, se poate considera că sunt necesare
cinci cuvinte pentru fiecare 4 octeŃi ai cheii.
Această tehnică poate fi folosită chiar pentru a genera chei private pentru sisteme
criptografice cu chei publice: textul poate fi comprimat într-un rezumat aleator, iar
83
rezumatul introdus într-un sistem determinist care să genereze perechi de chei publice/
chei private.
Atunci când se alege o frază de identificare, trebuie ales ceva original i u or de
reŃinut. Nu trebuie alese fraze din literatură - exemplul din “Ozymandias” este unul
nerecomandat. Atât operele complete ale lui Shakespeare cât i dialogurile din Războiul
stelelor, de exemplu, sunt accesibile i pot fi folosite într-un atac cu dicŃionarul. Trebuie
ales ceva obscur, dar personal. Se recomandă introducerea semnelor de punctuaŃie i a
majusculelor; de asemenea a numerelor i a simbolurilor non-alfanumerice. O sugestie
[1] este aceea de a se utiliza o frază care să fie un “mare nonsens”: ceva care poate fi u or
reŃinut dar greu de scris.
În ciuda celor scrise aici, obscuritatea, neclaritatea, nu pot substitui adevăratul
aleatorism. Cele mai bune chei sunt cele aleatoare, oricât ar fi de dificil de reŃinut.

Standardul X9.17 de generare a cheilor

Standardul ANSI X9.17 specifică o metodă de generare a cheilor (vezi figura 1).
Aceasta nu generează chei u or de reŃinut; este mai pretabilă pentru generarea cheilor de
sesiune sau numerelor pseudoaleatoare din sistem. Algoritmul criptografic utilizat pentru
generarea cheilor este triplu DES, dar poate la fel de bine să fie oricare alt algoritm.

Figura 1

Generarea
cheilor conform
standardului
ANSI X9.17

Fie EK(X) criptarea lui X cu triplu DES utilizând cheia K. Aceasta este o cheie
specială rezervată pentru generarea cheilor secrete. V0 este un rezumat secret de 64 de
biŃi. T este o tampilă de timp. Pentru generarea unei chei aleatoare Ri, se calculează:
Ri = E K ( E K (Ti ) ⊕ Vi )

Pentru a genera Vi+1 se calculează:

Vi +1 = ( E K ( E K (Ti ) ⊕ Ri )

Pentru a transforma Ri într-o cheie DES, se aranjează pur i simplu fiecare al


optulea bit pentru a deveni bit de paritate. Dacă este necesară o cheie de 64 de biŃi, se
utilizează ca atare. Dacă este necesară o cheie de 128 de biŃi, se generează o pereche de
chei i se concatenează.

Standardul DoD de generare a cheilor

Departamentul de Apărare al SUA (DoD) recomandă utilizarea DES în modul


OFB pentru a genera chei aleatoare. Se generează o cheie DES din vectorii de
întrerupere, regi trii de i contoarele sistemului. Se generează un vector de iniŃializare din
84
ceasul sistemului, ID-ul sistemului, din dată i oră. Ca text clar se utilizează un ir de 64
de biŃi: opt caractere tastate de un administrator de sistem, de exemplu. Rezultatul este
cheia secretă.
6.2 SpaŃii neliniare ale cheilor
Să presupunem că o organizaŃie de criptografie militară construie te un nou
echipament criptografic pentru dotarea trupelor proprii. Este de dorit utilizarea unui
algoritm cât mai puternic, dar apare posibilitatea ca echipamentul respectiv să fie capturat
de către inamic. Ultimul lucru pe care această organizaŃie l-ar putea dori este ca inamicul
să poată utiliza echipamentul pentru a- i proteja propriile secrete.
Dacă algoritmul poate fi pus într-un modul închis, iată care ar fi soluŃia. Se pot
folosi chei de o anumită formă, secretă; toate celelalte chei vor determina modulul să
cripteze i să decripteze utilizând un algoritm foarte slab. Acest lucru se poate face astfel
încât ansele ca cineva care nu cunoa te această formă specială să găsească o cheie
corectă să fie extrem de mici.
Acesta se nume te spaŃiu neliniar al cheilor, întrucât nu toate cheile sunt la fel de
puternice (opusul este spaŃiul liniar). O metodă simplă de a realiza aceasta este de a crea
cheile din două părŃi: cheia propriu-zisă i un ir ales criptat cu acea cheie. Modulul
decriptează irul cu cheia; dacă rezultă irul ales, utilizează cheia în mod normal, dacă
nu, utilizează un alt algoritm, care este slab. Dacă algoritmul are o cheie de 128 de biŃi i
un bloc de 64 de biŃi, cheia totală ca avea 192 de biŃi; aceasta oferă algoritmului un
număr de chei eficace de 2128, dar face ca ansele de a alege aleator o cheie bună să fie de
1 la 264.
Acest lucru se poate face chiar mai inteligent. Se poate proiecta un algoritm astfel
încât anumite chei să fie mai puternice decât altele. Un algoritm poate să nu aibă chei
slabe, dar poate avea un spaŃiu al cheilor neliniar.
Acest principiu poate funcŃiona doar dacă algoritmul este secret iar inamicul nu
poate să-i aplice a a-numitul reverse-engineering, sau diferenŃa dintre puterile cheilor
este suficient de subtilă astfel încât inamicul să nu o bănuiască.
6.3 Transferul cheilor
În cazul în care doi utilizator, fie ace tia A i B, folosesc un algoritm de criptare
simetric pentru a comunica în siguranŃă, ei vor avea nevoie de aceea i cheie. Dacă A va
genera o cheie utilizând un generator pseudoaleator, el va trebui să o transmită lui B – i
aceasta în mod confidenŃial. Dacă cei doi se pot întâlni undeva, A îi poate da lui B o copie
a cheii. În caz contrar, apar probleme. Criptografia cu chei publice rezolvă această
problemă într-un mod interesant cu un minim prearanjament, dar această tehnică nu este
întotdeauna accesibilă. Unele sisteme utilizează canale alternative considerate sigure. A îi
poate transmite cheia lui B printr-un mesager de încredere. O poate transmite de
asemenea prin po ta certificată (garantată). Sau poate folosi un alt canal de comunicaŃie
cu B, sperând că nimeni nu ascultă acel canal.
A îi poate transmite cheia lui B prin canalul folosit pentru comunicaŃie - cel pe
care îl folosesc pentru transmisiile criptate. Acesta este un lucru total gre it; dacă
respectivul canal garantează criptarea, transmisia cheii de criptare în clar pe acela i canal
oferă posibilitatea oricui ar asculta canalul respectiv să decripteze toate comunicaŃiile.
Standardul X9.17 specifică două tipuri de chei: chei pentru criptarea cheilor i
chei de date. Cheile pentru criptarea cheilor criptează alte chei în vederea distribuirii
acestora. Cheile de date criptează mesajele. Aceste chei pentru criptarea cheilor trebuie
distribuite manual (sau pot fi integrate într-un dispozitiv de siguranŃă, de exemplu un
smartcard), dar se distribuie mai rar. Cheile de date sunt distribuite mult mai des.

85
O altă soluŃie privind distribuirea cheilor este împărŃirea cheii în câteva părŃi
diferite i trimiterea fiecăreia dintre aceste părŃi pe canale diferite. O parte poate fi trimisă
prin telefon, una prin po tă, una prin porumbei călători, i a a mai departe (vezi figura 2).
Atâta timp cât un adversar poate colecta toate părŃile mai puŃin una i nu va putea ti care
este cheia, această metodă va funcŃiona în toate cazurile (exceptând câteva cazuri
extreme).

Figura 2

DistribuŃia
cheilor
prin canale
paralele

DistribuŃia cheilor în reŃele mari

Cheile de criptare a cheilor folosite de perechi de utilizatori funcŃionează bine în


reŃele mici, dar pot deveni împovărătoare dacă reŃelele devin mari. Întrucât fiecare
pereche de utilizatori trebuie să modifice cheile, numărul total de modificări ale cheilor
necesare într-o reŃea de n persoane este de n(n-1)/2.
Într-o reŃea de ase persoane, sunt necesare 15 schimbări ale cheilor. Într-o reŃea
de 1000 de persoane, sunt necesare aproape 500.000 de schimbări ale cheilor. În aceste
cazuri, crearea unui server central pentru chei (sau a mai multor servere) spore te
eficienŃa operaŃiilor.
6.4 Verificarea cheilor
Când B recepŃionează o cheie, de unde poate ti că acea cheie provine de la A i
nu de la cineva care pretinde a fi A? Dacă a îi transmite cheia personal, problema este
rezolvată. Dacă A îi transmite cheia printr-un curier, B trebuie să aibă încredere în acesta.
Dacă cheia este criptată, atunci B trebuie să spere că numai A are cheia de criptare a
cheii. Dacă A folose te un protocol de semnătură digitală pentru a semna cheia, B trebuie
să aibă încredere în baza de date cu chei publice când verifică semnătura (trebuie de
asemenea să spere că A î i Ńine cheia secretă). Dacă un Centru de DistribuŃie a Cheilor
(KDC) semnează cheia publică a lui A, B trebuie să spere că copia cheii publice KDC pe
care o deŃine nu a fost modificată.
În concluzie, un atacator care controlează întreaga reŃea (să-i zicem M) poate să-l
facă pe B să creadă orice îi place. M poate să-i transmită un semnal criptat i semnat
86
pretinzând că este A. Când B încearcă să acceseze baza de date cu chei publice pentru a
verifica semnătura lui A, M poate substitui propria a cheie publică. M poate inventa
propriul său KDC i să modifice adevăratul KDC pentru chei publice în beneficiul său.
Acest argument a fost folosit de unii autori pentru a susŃine faptul că criptografia
cu chei publice este inutilă. Din moment ce singura metodă prin care A i B se pot asigura
că cheile lor nu au fost modificate este să se întâlnească faŃă în faŃă, criptografia cu chei
publice nu întăre te deloc securitatea.
Acest punct de vedere este oarecum naiv. Teoretic este adevărat, dar realitatea
este mult mai complicată. Criptografia cu chei publice, folosită pentru semnături digitale
i KDC de încredere, face mult mai dificilă înlocuirea unei chei cu alta. B nu poate fi
niciodată absolut sigur că M nu controlează întreaga reŃea, dar acest lucru solicită mult
mai multe resurse decât cele la care au acces marea majoritate a atacatorilor.
B poate de asemenea să verifice cheia lui A prin telefon, unde îi poate auzi vocea.
Recunoa terea vocii este o foarte bună metodă de autentificare. Dacă este vorba despre o
cheie publică, A poate pur i simplu să o recite. Dacă este vorba despre o cheie secretă, se
poate folosi o funcŃie hash pentru verificarea cheii.

Detectarea erorilor pe timpul transmisiei cheilor

Uneori cheile le pot să fie perturbate în timpul transmisiei. Deoarece o cheie


modificată poate să însemne megaocteŃi de text cifrat indecriptabil, toate cheile ar trebui
transmise utilizându-se anumite metode de detecŃie i corectare a erorilor. Una dintre cele mai
utilizate metode este de a cripta o valoare constantă cu cheia, i de a transmite primii 2
până la 4 octeŃi din textul cifrat împreună cu cheia. Dacă constantele criptate se potrivesc,
atunci cheia a fost transmisă fără erori. Probabilitatea existenŃei unei erori nedetectate se
află în gama 216 la 232.

Detectarea erorilor cheilor pe timpul decriptării

Uneori, cel care recepŃionează cheia poate să dorească să verifice dacă o anumită
cheie din posesia sa este cheia corectă de decriptare simetrică. Dacă mesajul de text clar
este de tip ASCII, el poate decripta i citi mesajul. Dacă textul clar este aleator, există alte
trucuri.
O metodă naivă este de a ata a un bloc de verificare (un antet cunoscut) textului
clar înainte de criptare. La recepŃie se decriptează antetul i se verifică dacă corespunde.
Această metodă funcŃionează foarte bine, dar îi oferă atacatorului un text clar cunoscut,
ajutându-l să criptanalizeze sistemul. Face de asemenea ca atacurile asupra cifrurilor cu
cheie scurtă (cum ar fi DES).
Există o metodă mai bună de a face acest lucru:

• Se generează un VI (diferit de cel utilizat pentru mesaj).


• Se folose te acest VI pentru generarea unui bloc mare de biŃi: de ex. 512.
• Se face rezumatul rezultatului cu o funcŃie hash.
• Se utilizează aceia i biŃi ai rezumatului (să zicem 32) pentru valoare de control
(checksum) a cheii.

Această metodă oferă atacatorului foarte puŃine informaŃii. Dacă acesta încearcă
să folosească cei 32 de biŃi a valorii hash pentru a realiza un atac în forŃă, va trebui să
realizeze criptări multiple plus un rezumat pentru fiecare cheie; atacul asupra cheii ar fi
mai rapide.

87
6.5 Stocarea cheilor
Să presupunem că un utilizator A criptează fi iere pe care le va folosi ulterior.
Întrucât numai el este implicat în acest proces, el este singurul responsabil în ceea ce
prive te cheia . Unele sisteme abordează această problemă într-un mod foarte simplist:
Cheia va fi memorată de către A i nicidecum de către sistem. A este responsabil pentru
memorarea cheii i folosirea ei de fiecare dată când este necesară criptarea sau
decriptarea vreunui fi ier.
O soluŃie în acest sens este stocarea cheii într-o cartelă magnetică, o cartelă de
plastic cu un cip ROM implantat (numită cheie ROM), ori o cartelă inteligentă. Această
tehnică poate fi transformată într-una i mai sigură n spargerea cheii în două jumătăŃi,
una memorându-se în terminal iar cealaltă în cheia ROM. Astfel, pierderea cheii ROM nu
compromite cheia criptografică - aceasta se schimbă i totul revine la normal.
Cheile greu de memorat pot fi stocate sub formă criptată, folosindu-se o metodă
similară cu cea a cheilor pentru criptarea cheilor. De exemplu, o cheie privată RSA poate
fi criptată cu o cheie DES i stocată pe disc. Pentru recuperarea cheii RSA, utilizatorul
trebuie doar să introducă cheia DES într-un program de decriptare.
Dacă cheile sunt generate în mod deterministic (cu ajutorul un generator
criptografic de secvenŃe pseudoaleatoare), este mai u or de regenerat cheile dintr-o parolă
u or de memorat de fiecare dată când este necesar. Ideal este ca cheile să nu apară în
formă clară în afara dispozitivului de criptare.

6.6 Chei compromise


Toate protocoalele, tehnicile i algoritmii prezentaŃi în această lucrare prezintă
siguranŃă numai dacă cheile (cele private dacă este vorba despre un sistem cu chei
publice) rămân secrete.
Dacă este compromisă (pierdută, furată etc.) o cheie dintr-un criptosistem
simetric, această cheie trebuie schimbată cât mai urgent, în speranŃa ca pierderile să fie
minime. Dacă este vorba despre o cheie privată, problema este mult mai gravă; cheia
publică pereche se află probabil pe servere din întreaga reŃea. Cel care găse te cheia
privată pierdută se poate substitui, efectiv, celui care a pierdut-o.
Este vital ca tirea compromiterii unei chei private să se propage cât mai rapid în
întreaga reŃea.
Să presupunem că utilizatorul A tie că cheia sa privată a fost compromisă. Dacă
cheile sunt gestionate de un KDC, A trebuie să-l informeze despre compromiterea cheii
sale private. Dacă nu există KDC, atunci A trebuie să-i informeze toŃi
corespondenŃii care ar putea recepŃiona mesaje de la el.
Dacă A nu cunoa te exact momentul compromiterii cheii, lucrurile se
complică. A poate solicita anularea unui contract deoarece persoana care i-a furat
cheia a semnat contractul respectiv în locul său. Dacă sistemul permite acest lucru,
atunci oricine poate solicita anularea unui contract, susŃinând că i s-a furat cheia
înainte de semnarea contractului. În acest caz este necesară existenŃa unui
“judecător” care să decidă.
Aceasta este o problemă serioasă i pune în evidenŃă pericolele care există în
cazul folosirii unei singure chei. Este de preferat utilizarea unor chei diferite pentru
diferite aplicaŃii – doar că apare problema deŃinerii mai multor chei fizice.

88

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