Documente Academic
Documente Profesional
Documente Cultură
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:
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.
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ă).
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).
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).
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.
q=1900871281664822113126851573935413975471896789968515493666638539088027103
802104498957191261465571.
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).
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
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 / ptT*} – 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, kK;
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 ptP};
C spaţiul (mulţimea) mesajelor cu text criptat unde:
C={ct / există kK, aP, ct = Ek (a)}.
Pentru ca un sistem de criptare să fie considerat bun, el trebuie săindeplinească trei criterii:
1. Fiind date ek şi ptP să fie uşor de calculat ek (pt).
2. Fiind date dk şi ctC 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Ă
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:
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.
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,
decriptarea:
k 3 k11 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ă.
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 %
%).
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
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
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:
Î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:
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:
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
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:
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
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.
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.
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
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.
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
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.
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
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.
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):
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
(IIFKVIVVM
MI în litere)
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
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
METODE DE CRIPTANALIZĂ
2. Cifrul ADFGVX
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
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
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 :
Textul clar este scris pe linii, sub fiecare caracter fiind scrise coordonatele corespunzătoare:
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
26
III. CRIPTARE CU CHEIE SIMETRICĂ
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.
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
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
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:
30
A
Algoritmul DEES are următtorii paşi:
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
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
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
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:
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:
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:
Kn E(Rn-1).
36
Exemplu:
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.
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
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
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.
40
Cifrul AE
ES (Advanced Encryptiion Standarrd)
3.2. M
MODURI DE
D OPERAR
RE A CRIP
PTĂRILOR SIMETRICE
Criptare ECB
Decripptare ECB
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)
42
Criptare OFB
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)
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.
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.
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 xnu sse
poate găssi x ' astfel în
ncât H xH x 'şi
iii) rezisttenţă la coliiziune (collision resistannce) nu se pooate găsi o ppereche x, x' astfel încât H
xH 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
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
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
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Ă
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.
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 .
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.
pe mod n C
Decriptarea
C d ( pe )d ped p1k ( r 1)( s1) p1 p k ( r 1)( s1) p p ( r 1)( s 1) p 1 p mod n
k k
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.
53
4.2. Cifrul El Gamal
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.
Logaritmi discreţi
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
55
III. Decriptarea.
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 849105 mod997 (849105 )1 mod997 5581 mod997 620mod997
zy x 19 620mod997 813
56
4.3. Cifrul Rabin
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
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
O curbă eliptică E peste mulţimea Zp constă din elemente (numite puncte) de tipul
(x,y) ce satisfac ecuaţia
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
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ă.
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:
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)
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.
62
V. Tehnici i mecanisme de
identificare i autentificare
Autentificarea unui proces necesită existenŃa uneia sau mai multor elemente după
cum urmează:
63
Protocolul de autentificare cu parole simple se desfă oară în 3 pa i:
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:
64
diminuat. Lista parolelor cu care operează sistemul este inutil, deoarece funcŃiile hash nu
pot fi inversate pentru a se putea recupera parolele.
Î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.
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
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).
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.
Figura 3
69
Tehnici i mecanisme de identificare i autentificare 132
Figura 4
Exemplu de ierarhii
de certificate X.509
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ă.
Protocolul one-way
Protocolul two-way
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);
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:
Protocolul de
autentificare
Kerberos
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:
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.
AC = [C , Adr , TimeStamp ]
{
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 ]
{ }
C → S : E K S (TC , S ), E KC , S ( AC )
AC = [C , Adr , TimeStamp ]
{
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.
Figura 6
Ierarhia
regiunilor
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.
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.
78
Figura 7
Geometria mâinii
Figura 8
79
Scanarea retinei
Scanarea irisului
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).
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.
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.
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!”
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.
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 )
Vi +1 = ( E K ( E K (Ti ) ⊕ Ri )
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
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:
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.
88