Sunteți pe pagina 1din 87

UNIVERSITATEA DUNREA DE JOS GALAI FACULTATEA DE TIINE - CAHUL

SPECIALIZAREA MATEMATIC-INFORMATIC

LUCRARE DE LICEN
CRIPTATAREA I DECRIPTAREA DATELOR

Coordonator tiinific: Lect. ANSTSOAEI VASILE Absolvent: MAZUREAN EUGENIU

GALAI

2007

Cuprins
1. Introducere 4

1.1 Termeni Criptografici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Istoria criptografiei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2. Criptosisteme clasice 25 2.1 Cifrul lui Caezar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.1.1 Descriere general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.1.2 Descriere matematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.1.3 Algoritm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.1.4 Exemplu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2 Cifrarea afin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2.1 Descriere general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2.2 Descriere matematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2.3 Algoritm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.3 Codul Hill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.3.1 Descriere general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.3.2 Descriere matematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.3.3 Algoritm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3. Criptosisteme simetrice 32 3.1 Cifrare de tip flux (stream) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.1.1 Codul Vernam sau One Time Pad . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.1.2 SEAL - Software Encryption Algorithm . . . . . . . . . . . . . . . . . . . . . . 37 4. Sisteme de criptare prin chei publice (asimetrice) 41 4.1 Schimbul de chei Diffie-Hellman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.2 Sistemul RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.3 Semntura digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.4 Sisteme de certificare a cheilor publice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.5 Infrastructura cheilor publice (PKI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.6 Algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.6.1 Algoritmul DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.6.2 Variante de DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.6.3 Algoritmul AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.6.4 Algoritmul LUCIFER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.6.5 Algoritmul Blowfish . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.6.6 Dubla criptare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.6.7 Tripla criptare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.6.8 Concluzii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5. Aplicaie. Algoritmul Vigenere i implementarea lui 71 5.1 Codul Vigenere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.1.1 Descriere general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.1.2 Descriere matematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.1.3 Algoritm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.1.4 Exemplu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.1.5 Implementarea algoritmului Vigenere . . . . . . . . . . . . . . . . . . . . . . . . . 73 Bibliografie 86

Capitolul 1

Introducere
1.1 Termeni Criptografici
Scenariul cel mai des ntlnit n criptografie, dar i n viaa real presupune c exist dou persoane sau entiti care doresc s comunice dar se afl la capetele unui canal de comunicaie nesigur. i anume o ter persoan poate intercepta i ulterior avea acces la informaii care nu i sunt destinate. n acest scenariu prile comunicante (pentru a fi n concordan cu toate materialele din domeniu) se numesc Alice (expeditorul mesajelor) i Bob (destinatarul), cea de-a treia entitate o vom numi Eve i singurul ei scop n acest scenariu este de a afla secretele celor doi, Alice i Bob. Pentru a transmite informaii Alice are mai nti nevoie de un canal de comunicaie. Acesta poate fi o reea informatic, o reea telefonic sau pur i simplu clasicul sistem potal. Caracteristica principal care reunete toate aceste canale de comunicaie este faptul ca ele nu sunt sigure, informaia poate fi interceptat sau i mai ru poate fi modificat n timp ce parcurge drumul de la Alice la Bob. Unul din obiectivele criptografiei este de a produce mijloace prin care s se previn astfel de atacuri. Obiectivul fundamental si clasic al criptografiei este de a pune la dispoziia entitilor precum Alice i Bob posibilitatea de a comunica confidenial folosind metode criptografice. Adesea mesajul care se trimite este denumit text n clar i el poate fi un text obinuit, un ir de numere, sau un program executabil. Alice nainte de a trimite mesajul lui Bob cripteaz textul n clar pt i obine textul criptat tc. Textul criptat este cel ce va fi trimis lui Bob, acesta pentru a decripta mesajul si a obine textul in clar va avea nevoie de o cheie de decriptare. Eve, denumit i adversarul sau atacatorul are n continuare posibilitatea de a intercepta mesajul ns criptarea textului ar trebui s garanteze faptul c Eve nu va putea citi mesajul, adic nu va putea obine textul n clar din textul criptat, cunoscnd chiar i algoritmul folosit pentru criptare. Se spune adeseori c puterea unui criptosistem st n puterea cheii i nu n pstrarea secretului asupra algoritmului folosit. Pe lng obiectivul prezentat mai sus metodele criptografice trebuie s prezinte soluii pentru nc trei probleme de importan cel puin egal cu pstrarea secretului asupra informaiilor transmise:
1.

Autentificarea: destinatarul unui mesaj trebuie sa dispun de modaliti de a verifica identitatea expeditorului i originea mesajului. S presupunem ca Bob primete un mesaj, el trebuie s se conving de faptul c mesajul primit vine intr-adevr de la Alice.

2.

Integritatea datelor: destinatarul trebuie s dispun de modaliti de verificare a integritii mesajului primit. Dup ce a verificat c mesajul primit este de la Alice, Bob vrea s se asigure c mesajul este complet i nu au fost erori de transmisie sau modificri

voite din partea unui atacator, Eve.


3.

Non-repudierea: dup transmisia mesajului, trebuie ca expeditorul s nu poat nega faptul c mesajul a fost intr-adevr trimis de el sau destinatarul s nu poat nega faptul c a citit intr-adevr mesajul. Alice nu poate nega faptul c a trimis mesajul dup primirea mesajului de ctre Bob, iar acesta nu poate nega faptul c a citit mesajul din moment ce a trimis un rspuns.

Definiia 1.1.1. Criptografia este o tiin matematic folosit pentru a asigura confidenialitatea datelor prin nlocuirea lor (textului n clar) cu o versiune schimbat, obinut n urma unui proces de criptare, i din care versiune se pot obine datele iniiale utiliznd algoritmul criptografic potrivit i cheia necesara decriptrii. Definiia 1.1.2. Criptanaliza sau analiza criptografic este tiina care se ocup cu regsirea de informaii valide din informaii cifrate fr ca entitatea care dorete accesul la informaie s aib acest drept. n urma proceselor criptanalitice se pot expune eventuale slbiciuni ale algoritmului de criptare folosit sau ale cheii. Definiia 1.1.3. Criptologia este tiina care se ocup cu studiul criptografiei i criptanalizei. Criptarea informaiei este fcut prin intermediul unei funcii E care transform textul, sau informaia pt folosind o cheie k n textul criptat tc(neinteligibil pentru eventualii adversari). Altfel spus Alice pentru a trimite un mesaj ctre Bob va aplica funcia E de parametri pt i k i va obine textul tc: E(pt, k) = tc Textul astfel obinut va fi trimis prin intermediul canalului de comunicaie i prelucrat la primire de ctre Bob, care va utiliza o funcie D pentru decriptare i o cheie k astfel: D(k', tc) = pt Formaliznd putem defini acest sistem de asigurare a confidenialitii informaiei astfel: Definiia 1.1.4. Un criptosistem este un tuplu (P,C,K,E,D) care ndeplinete urmtoarele condiii: 1. P este un set finit de posibile texte n clar 2. C este un set finit de posibile texte cifrate 3. K este un set finit de posibile chei de cifrare
4.

Pentru fiecare k e K exist o regul de criptare ek E i o regul corespunztoare de decriptare dk D. Fiecare ek : P C i dk : C P funcioneaz astfel nct:

dk(ek(pt)) = pt pentru oricare text n clar pt P Criptosistemele se deosebesc n funcie de modul n care este folosit cheia de criptare/decriptare, astfel putem distinge dou sisteme criptografice: 1. Cu cheie simetric unde se folosete aceeai cheie pentru ambele proceduri, criptare i decriptare. Adesea aceste sisteme sunt numite cripto-sisteme cu cheie privata sau criptosisteme cu o singur cheie deoarece cheia folosit trebuie s rmn cunoscut exclusiv parilor comunicante i k = k!. 2. Cu cheie public unde se folosesc dou chei pentru criptare, respectiv decriptare. Aceste criptosisteme mai sunt numite i criptosisteme asimetrice. Cheile folosite se numesc cheie public i respectiv cheie privat. Criptosistemele cu cheie simetric se mpart n dou categorii n funcie de modul n care se face criptarea: algoritmi de tip stream sau algoritmi de tip block. Criptarea de tip stream presupune generarea unei secvene de bii cu o nfiare ct de aleatoare posibil pe baza unei chei. Secvena de bii este deci obinut n urma criptrii bit cu bit a textului n clar (biii textului n clar sunt adunai cu cei ai cheii). Este esenial pentru criptrile de tip stream ca dou mesaje s nu fie criptate cu acelai stream al cheii de criptare, n acest sens se ia msuri speciale. Exemple de algoritmi de tip stream: SEAL (Software-optimised Encryption Algorithm), RC4, A5, LEVIATHAN, Sober. Algoritmii de tip block presupun mprirea textului n clar n blocuri de bii care sunt criptate, criptarea blocurilor fcndu-se n mai multe runde. Majoritatea algoritmilor cu cheie simetric sunt de tip block cipher i folosesc diferite metode pentru a opera criptarea textului: modul ECB (Electronic Code Book) presupune criptarea fiecrui bloc separat i independent de celelalte modurile CBC (Cipher Block Chaining) i CFB (Cipher Feed Back ) presupun dependene ntre blocurile criptate la runda anterioar i cele de la runda curent n funcie de un vector de iniializare. modul OFB (Output Feedback Mode) poate fi interpretat c folosete o cifrare de tip block pentru a genera un stream care este apoi adunat bit cu bit cu textul n clar. Unii dintre algoritmi , spre exemplu DES (Data Encryption Standard) folosesc S-box-uri sau tabele, denumite i Substitution-box pentru a obine textul criptat, folosirea numelui de substituie este mai degrab nepotrivit din moment ce o astfel de "cutie" poate avea mai multe intrri dect ieiri sau mai multe ieiri dect intrri. Un exemplu de S-box poate fi transformarea identic (0 0,1 1,2 2,...) care n mod evident nu are nici un efect, n timp ce alte tipuri de

transformri au anumite efecte, cantitatea i calitatea fiind diferite pentru fiecare. Efectele cel mai des menionate includ efectul de avalan i nonliniaritatea funciei Booleene. Desigur este de ateptat ca structuri de cifrare diferite s dispun de caracteristici diferite ale tabelelor, de aceea discuii despre puterea S-box-urilor apar de fiecare dat la construirea unui nou cifru. Avalana este o proprietate a algoritmilor de tip block construii n mai multe runde, respectnd o mic schimbare a datelor de intrare. Schimbarea unui singur bit produce dup o rund multiple schimbri la nivel de bit, mai multe schimbri se produc dup nc o rund, pn cnd n cele din urm aproximativ jumate din bloc va fi schimbat, aceasta ca o analogie asupra unei avalane naturale unde un mic efect iniial produce un rezultat neateptat. "Pe msur ce datele de intrare trec prin straturi succesive, modelul care produce cifra 1 este amplificat i rezult o avalan imprevizibil. La final, rezultatul va conine, n medie, jumate cifre 0 i jumate cifre 1. .. " Feistel, H. 1973. Cryptography and Computer Privacy. Scientific American. Din punct de vedere matematic, n criptografia cu cheie public, fiecare entitate participant la transmisia i recepia de mesaje are o cheie personal k = (pk, sk) care este format din dou pri, pk este cheia public sau cheia de criptare i este fcut cunoscut tuturor celor care vor s trimit mesaje deintorului cheii sk. Cheia sk este inut secret i va fi folosit de ctre cel ce o deine pentru a decripta mesajele care ii sunt trimise. S spunem c Alice dorete s ii trimit un mesaj lui Bob, atunci ea va obine de la el, sau o ter persoan de ncredere, cheia lui public, va cripta mesajul cu cheia lui Bob, pk, i l va trimite. Bob va folosi cheia sa secret sk pentru a decripta i citi mesajul, avem deci: D (sk, E(pk, pt)) = pt Criptarea cu cheie public are nevoie de computaii complexe i este mai puin eficient dect criptarea cu cheie simetric, astfel criptrile simetrice sunt folosite pentru volume mari de date. nainte ca Alice i Bob s comunice, tiind c au un volum mare de informaii pe care vor s-l transmit ei vor fi nevoii s schimbe o cheie simetric, pentru aceasta criptarea cu chei publice este ideal. Acest tip de criptare mai este cunoscut i ca funcie one-way cu trapdoor deoarece oricine poate foarte uor folosi cheia publica pk pentru a cripta un mesaj, ns numai cel ce deine cheia privat sk l poate decripta. Definiia 1.1.5. O funcie one-way cu trapdoor este o funcie f(x) = y pentru care y este foarte uor de calculat, dar avnd pe y i cunoscnd funcia f este greu de calculat x. Cunoscnd ins o informaie secret k (denumit cheie) i avnd pe y sau valoarea lui f(x) este foarte uor s se calculeze x. Un alt tip de funcie one-way este one-way hash function care mai are multe alte nume, printre care: funcie de compresie, funcie de contracie, message digest, fingerprint,

cryptographic checksum, verificarea integritii mesajului (message integrity check, MIC), si cod pentru detectarea manipulrii mesajului (manipulation detection code, MDC). Funciile de hash exist de mult timp n criptografie i fac parte din pilonii principali n construcia multor protocoale criptografice. Definiia 1.1.6. O funcie de hash este o funcie, matematic sau de alt natur, care ia ca argument un ir de mrime variabil i ntoarce ca rezultat un ir de mrime fix denumit valoare hash. Ideea din spatele funciilor hash este aceea de a produce reprezentare exact de mrime fix a unor date de intrare ca apoi dup ce datele au fost transmise printr-un canal de comunicaie, la captul la care se afl destinatarul s se poat spune dac datele au fost modificate de-a lungul canalului de comunicaie. Acest lucru se poate face aplicnd din nou funcia de hash datelor primite i compararea rezultatului cu cel obinut naintea transmiterii. O funcie de hash trebuie de asemenea s produc o valoare unic de ieire pentru o singur valoare de intrare, adesea spunem c o funcie hash nu are coliziuni. Semnturile digitale sunt folosite n combinaie cu metodele criptografiei cu cheie public. La fel ca n viata obinuit, semnturile digitale trebuie s asigure non-repudierea, care este o trstur de baz n cazul n care spre exemplu se folosete o astfel de metod pentru a semna contracte, sau alte acte oficiale. S presupunem ca Alice vrea s semneze un contract pe care Bob i l-a propus, ea va aplica atunci algoritmul S, folosind cheia secret sk pentru a obine semntura S(sk, pt).La primirea semnturii Bob va utiliza algoritmul V pentru a verifica semntura V (pk, s, pt) = ok. Este de preferat a nu se semna ntreg textul n clar ci numai valoarea rezultat n urma aplicrii unei funcii hash asupra textului. Definiia 1.1.7. Un atac este o cale general pe care un criptanalist o poate urma pentru a "sparge" sau descoperi secretele protejate de un cifru sau sistem criptografic. Atacurile nu sunt algoritmi precii ci mai degrab moduri de abordare pentru construirea unor algoritmi care s sparg un sistem criptografic. Atacurile criptografice pot beneficia de constrngeri informaionale care pot reduce strategiile de atac ce pot fi folosite, atacatorul dispune de unele din informaiile de mai jos i poate alege strategia care se potrivete cel mai bine informaiilor pe care le deine: numai text criptat atacatorul dispune numai de text criptat, adesea informaiile statistice rezultate din textul criptat pot oferi detalii care pot conduce la spargerea cifrului. Dac o metod criptografic nu poate rezista acestui tip de atac este complet nesigur. Chiar dac Eve nu poate

folosi metode criptanalitice complicate Alice trebuie s presupun ca Eve poate s intercepteze mesajele. text n clar cunoscut atacatorul dispune de un volum considerabil de text n clar i textul criptat corespunztor. La o prim vedere s-ar prea c un astfel de fapt e imposibil de realizat, ins spre exemplu n cazul unor mesaje cu format standard Eve poate cunoate acest format. text n clar definit atacatorul poate trimite text n clar arbitrar i poate obine textul criptat corespunztor. Un text n clar bine ales poate dezvlui anumite detalii de interes pentru atacator. n acest caz se presupune c Eve are acces cel puin o dat la maina de criptare nainte de a putea criptanaliza sistemul. text criptat definit atacatorul poate trimite text criptat i apoi s obin versiunea decriptat. cheie aleas atacatorul poate specifica schimbri ale unui bit din cheie sau anumite relaii intre cheile de criptare folosite. cronometrare atacatorul poate cronometra duratele operaiilor de criptare i poate folosi aceste informaii pentru a afla detalii despre cheie sau datele criptate. analiza greelilor atacatorul poate include greeli arbitrare n mainria care execut criptarea i poate folosi aceste greeli pentru a expune detalii despre cheia folosita la criptare. man in the middle (intermediarul) se presupune c atacatorul poate in tercepta mesajele transmise i poate pretinde c este destinatarul mesajelor venite de ambele pari. Eve intercepteaz mesajele att de la Alice, ct i de la Bob i ntotdeauna pretinde a fi una din pri. Adeseori o strategie de atac este uor de ales i urmat dndu-se constrngerile informaionale enunate mai sus. Iat cteva strategii de atac: Brute Force sau cutarea exhaustiv a cheii presupune cutarea unei chei de decriptare pn atunci cnd textul rezultat n urma decriptrii cu una dintre chei are sens. CodeBook sau abordarea clasic a spargerii codurilor presupune colecionarea de transformri din text n clar n text cifrat i reciproc. Criptanaliz diferenial atacatorul trebuie s gseasc diferene statistice intre valorile cheilor i transformrile asupra textului criptat, iar apoi trebuie s utilizeze suficient text n clar pentru a putea recupera cheia de criptare. Criptanaliza liniar atacatorul trebuie s gseasc o aproximaie liniar a S-box-urilor care au utilizat bii din cheia unui cifru i s o foloseasc pentru a descoperi cheia. Programarea cheii atacatorul alege chei care produc efecte cunoscute n runde diferite ale criptrii. Birthday attack atacatorul folosete paradoxul zilei de natere, ideea este c atacatorul va gsi mai uor 2 valori care se potrivesc dect o valoare care s se potriveasc unei valori date. Codificare formal atacatorul trebuie s construiasc ecuaii pentru cheie folosind textul n

10

clar i pornind de la designul algoritmului. Dup ce ecuaiile sunt construite atacatorul trebuie s le rezolve. Corelaii de obicei la cifrrile de tip stream atacatorul trebuie s disting datele de elementele de confuzie. Dicionar este o mbuntire la atacul de tip brute force. Atacatorul trebuie s formeze o list de chei probabile i s le testeze una cte una. Reluare atacatorul trebuie s pstreze buci de mesaje criptate i s le trimit parilor comunicante cnd consider oportun. Definiia 1.1.8. Un protocol criptografic este o serie bine definit de pai care combin mai multe primitive criptografice, cum ar fi algoritmi de criptare/decriptare, funcii hash, sau generatoare pseudo-aleatoare de numere, pentru ndeplinirea unei sarcini. Dup cum se obinuiete ntr-un protocol este necesar s existe cel puin dou pri implicate. Pentru a ntri aceast afirmaie considerm o schem pentru generarea unei semnturi digitale. Mai nti partea implicat trebuie s aplice o funcie de hash mesajului dup care va folosi cheia privat pk pentru a semna valoarea hash obinut. Ambii pai sunt efectuai de o singur persoan, astfel nu putem numi aceast operaie un protocol criptografic. Situaii tipice de utilizare a protocoalelor criptografice sunt cele n care este nevoie s se fac o autentificare a utilizatorilor. Abordarea tradiional este aceea de a avea cte un nume de utilizator i o parol pentru fiecare din prile implicate. Daca se procedeaz aa, atunci cnd Alice va dori o autentificare va trebui s trimit numele de utilizator i parola ctre Bob, nu este nevoie s mai spunem ca acest tip de autentificare este susceptibil atacului de tipul "man in the middle", i anume Eve poate asculta comunicaia ntre cei doi i poate afla numele de utilizator i parola lui Alice. Un simplu protocol de tip "challenge-and-response" poate rezolva cu succes problema expus mai sus. Protocolul se bazeaz pe criptarea asimetric i presupunem c Bob deine un set de "cereri" suficient de mare pentru a nu repeta aceeai cerere, n vreme ce Alice are o cheie k = (pk, sk) pentru a se identifica. Protocolul decurge dup cum urmeaz:
1. Bob alege la ntmplare o cerere c pe care o trimite ctre Alice 2. Alice semneaz cererea c folosind cheia secret sk i funcia S pentru semntur S(sk, c) = s,

apoi va trimite rspunsul s napoi la Bob. 3. Bob va accepta rspunsul primit dac funcia de verificare V va returna un mesaj afirmativ n urma verificrii semnturii V(pk, s,c) = ok Protocolul nu este totalmente sigur ns rezolv problema unui atac de tipul man-in-themiddle, o asigur pe Alice c nimeni nu i cunoate cheia secret sk, nici Bob, cel care verific

11

semntura, Eve nu poate cpta nici un fel de informaie util n urma ascultrii canalului de comunicaie deoarece cererea c face parte dintr-o mulime rezonabil de mare nct s nu se repete, i n plus cererea este aleas aleator.

1.2

Istoria criptografiei
Criptografia este denumit "tiina scrierii secrete", ns n egal msur este o art. Avnd

aceast natur dual criptografia a aprut ca rspuns la nevoia oamenilor de a pstra anumite lucruri secrete, departe de eventuali dumani, adversari sau opozani pui a face ru prilor comunicante. Dezvoltarea ei ns nu a avut un ritm susinut, mai nti era nevoie ca oamenii s dobndeasc un anumit grad de cunoatere, n special n domeniul lingvistic, n ceea ce privete att limba scris dar i vorbit. Odat atins acest grad criptografia a aprut n mod spontan. Desigur, acolo unde exist secrete exist i oameni dispui s le afle, astfel o tiin, s spunem invers criptografiei a aprut, i anume analiza criptografic, al crei obiect de studiu este descifrarea mesajelor. Inventarea criptografiei nu a inut n mod deosebit i nu a fost limitat la o singur civilizaie sau form de guvernare. Oricnd nevoia de confidenialitate a aprut, criptografia a fost calea aleas pentru a rezolva problema confidenialitii. Odat cu trecerea timpului, noiunea de "cel mai bun sistem criptografic" a suferit multe modificri i adeseori civilii au fost cei care au adus mbuntiri eseniale acestei noiuni. n urmtoarele pagini vom ncerca s redm o scurt istorie a criptografiei. Istoria cunoscut a criptografiei ncepe acum aproximativ 4000 de ani cnd un scrib egiptean folosete pentru prima dat hieroglife uor modificate pentru a ilustra povestea stpnului su. Prin aceasta el deschide drumul ctre "scrierea secret", dei sistemul folosit de el pentru a scrie hieroglifele respective nu poate fi considerat un sistem criptografic n accepiunea modern a acestei noiuni. Inscripiile fcute de el n jurul anului 1900 .e.n. n camera mormntului nobilului Khnumhotep se ntind pe aproximativ 20 de coloane din cele 222, care sunt incluse ntr-o seciune care enumera monumentele ridicate de stpnul su n numele faraonului Amenemhet II. Este posibil ca intenia sa s nu fi fost aceea de a folosi o scriere secret ci mai degrab de a ataa o oarecare not de importan lucrurilor nfptuite de nobilul su stpn. Totui prin faptul c a modificat forma hieroglifelor, scribul a produs o transformare deliberat a scrierii, aceasta fiind o trstur esenial a criptografiei. Pe msur ce a trecut timpul scrierea s-a dezvoltat i mormintele ce venerau pe cei disprui au devenit locuri unde hieroglifele transformate au devenit din ce n ce mai complicate. Uneori nlocuirea formelor uzuale ale hieroglifelor, cum ar fi o fa reprezentnd /r/ printr-o form diferit cum ar fi o fa din profil, era folosit. Uneori sunetele hieroglifelor erau diferite, dar imaginile lor se asemnau. Iar uneori era folosit principiul rebusului, i anume o imagine reprezenta o liter, de

12

exemplu o nav cu pnze, "kenthey", reprezint un alt cuvnt egiptean khentey care nseamn "cel ce conduce la", aceasta fcnd parte din titlul care i se ddea zeului Amon, "cel ce conduce la Karnak". Dac se adaug la aceasta elementul secretizrii se obine al doilea element al criptografiei. n cazul egiptenilor ns elementul secretizrii venea din dorina lor de a face scrierea necunoscut trectorilor i de a-i opri pentru moment din drumul lor pentru a reflecta asupra epitafurilor nscrise pe pietrele mormintelor. n Egipt ns la acea vreme exista un interes sporit pentru viaa de apoi, oamenii au nceput, dup primele schimbri ale formelor hieroglifelor, s fie tot mai puin interesai de acestea, astfel textele gravate pe pereii mormintelor ncep s devin uor criptice, asemeni unor ghicitori. Desigur aceste prime semne ale criptografiei nu pot fi comparate cu tiina exact care este acum criptografia, ns toate lucrurile mari au un nceput modest. n Mesopotamia este gsit o tabli care dateaz din anul anul 1500 .e.n. i care conine o formul criptat pentru fabricarea sticlei pentru vase. Mesopotamia a mers pe un drum oarecum paralel cu Egiptul n ceea ce privete criptografia, urmnd ns sa se desprind odat cu primii scribi care i scriau numele folosind cifre. Aceasta se pare a fi ns mai degrab o form de amuzament sau de mndrie dect una de cifrare exact. Primul sistem criptografic cu ntrebuinare militar a fost inventat ns de spartani, cei mai rzboinici dintre greci. n secolul 5 .e.n. ei au inventat un dispozitiv denumit "skytale", primul aparat inventat pentru a fi folosit n criptarea prin transpoziie. Modul de funcionare era simplu, dar totui ingenios. Se folosea un cilindru pe care se nfura pergamentul sau pielea pe care se dorea s se scrie, scrierea se fcea normal de la stnga la dreapta de-a lungul nlimii cilindrului, pergamentul era apoi ndeprtat i mesajul trimis. Pentru recompunerea mesajului iniial trebuia folosit un cilindru de aceeai grosime.

Figura 1.1: Skytale, dispozitivul folosit de spartani pentru criptarea mesajelor Polybius, un scriitor grec, a inventat un sistem care a fost mai apoi adoptat pentru transmiterea la distan a mesajelor folosind tore. El a aranjat toate literele ntr-un ptrat, numerotnd liniile i coloanele. Ptratul su arta n forma urmtoare, desigur el a folosit

13

literele greceti: Fiecare liter este acum identificat prin 2 cifre, de exemplu f=21, b=12, aceste numere se doreau transmise prin intermediul torelor, astfel 2 tore n stnga i una n dreapta ar fi nsemnat f. Polybius nu a spus niciodat pentru ce anume era folosit acest sistem de criptare prin substituie.

Figura 1.2: Ptratul lui Polybius Un sistem criptografic prin substituie i este atribuit lui Iulius Cezar, acest fapt ne este relatat de Suetonius care spune c Iulius Cezar obinuia sa-i scrie lui Cicero i altor apropiai ai si folosind un cifru n care literele erau nlocuite cu alte litere care ncepeau cu 3 poziii mai la dreapta n alfabet. Astfel a devenea d , b devenea e etc. Pn i astzi un astfel de cifru se numete "cifrul lui Cezar" chiar dac literele sunt deplasate cu mai mult de 3 poziii. n urmtorii aproximativ 1000 de ani criptografia a stagnat, majoritatea textelor se limitau la substituia literelor, scrierea lor pe vertical, nlocuirea punctelor cu vocale etc. Nici una dintre scrierile aprute n aceast perioad nu coninea o metod complex de cifrare. Anul 1518 aduce cu el apariia primei cri tiprite de criptologie. Ea aparinea unui clugr benedictin ale crui cercetri n tiine oculte i alchimie au fcut din el o figur marcant a vremurilor n care a trit. Numele su era Johannes Trithemius, iar cartea sa, Polygraphiae libri sex, loannis Trithemii abbatis Peapolitani, quondam Spanheimensis, ad Maximilianum Caesarem ("ase volume despre poligrafie de Johannes Trithemius, abate de Wurzburg, fost de Spanheim, pentru mpratul Maximilian"), tiprit cu caractere gotice, coninea o form elementar de substituie polialfabetic, deoarece alfabetele dup care se fcea criptarea erau expuse pe mai multe linii, fiecare rnd oferind un nou alfabet de criptare. Fiecare linie alfabetul era deplasata la dreapta cu cte o poziie, tabloul pe care l forma era un ptrat deoarece nu puteau fi mai multe linii dect numrul de litere din alfabet. Tabloul inventat de Johannes Trithemius produce pentru fiecare liter criptat un nou alfabet, acest alfabet este ns la baz tot "cifru Cezar". Johannes Trithemius a folosit acest tabel n cea mai simpl form posibil, el codifica prima liter a textului n clar cu primul alfabet, a doua liter cu al doilea alfabet, etc.

14

Figura 1.3: Tabloul lui Johannes Trithemius Charles Wheatstone a fost unul din oamenii geniali ai secolului 19, lui i se datoreaz ceea ce e azi cunoscut sub numele de cifrul Playfair i aceasta datorit faptului c prietenul su Lyon Playfair l-a prezentat mai multor oficiali n Ianuarie 1854. Cifrul este primul din istoria criptografiei care folosete dou litere astfel nct rezultatul s depind de ambele. Un ptrat care coninea literele alfabetului a fost special construit pentru acest cifru, ptratul se bazeaz pe cuvntul PALMERSTON, acesta fiind numele unuia dintre oficialii crora le-a fost prezentat cifrul. Ptratul coninea 5x5 celule, iar dup PALMERSTON literele rmase sunt aezate alfabetic. Metoda de criptare este urmtoarea: mai nti se desparte textul n clar n grupuri de cte 2 litere, acolo unde exist 2 litere alturate identice ele vor fi desprite i se

Figura 1.5: Aezarea literelor n ptratul Playfair va scrie un x ntre ele. Literele i i j sunt privite ca fiind aceeai liter. Perechile de litere pot fi n una din 3 situaii: literele se afl pe aceeai linie, coloan sau nu se ntmpl niciuna din cele

15

dou. Pentru situaia n care literele se afl pe aceeai linie, ele vor fi nlocuite cu literele imediat urmtoare spre dreapta, spre exemplu a i m , ele vor fi criptate prin L i E, os = NT, le=MP Dac literele se gsesc pe aceeai coloan ele vor fi nlocuite prin litere imediat urmtoare de sub ele, de exemplu ac=SI, fy=QM, br=HB, etc. Dac literele textului n clar nu apar n niciuna din situaiile anterioare atunci s presupunem c avem de textul n clar ao , se ia litera aprut la intersecia liniei lui a cu coloana lui o , anume M, care va fi prima liter a textului criptat, a doua liter se obine mergnd pe coloana literei a i pe linia lui o, vom avea a doua liter a textului criptat care este S. Decriptarea mesajului este asemntoare criptrii, daca ac=SI atunci SI=ac. Aceast nou metod introdus de Playfair i Wheatstone avea tot dreptul s genereze entuziasm att autorilor ct i diplomailor i oficialilor care urmau s o utilizeze. Punctele forte erau: rezistena sporit la analiza frecvenei literelor, prin criptare se njumtea numrul elementelor disponibile analizei frecvenei asupra textului criptat. De exemplu un text de 100 de litere producea 50 de diagrafe criptate. Sistemul ADFGVX este poate unul dintre cele mai faimoase sisteme criptografice din istoria criptografiei. Numele su provine de la faptul c numai acele 6 litere apreau n textul criptat, dei la nceput, cnd primele mesaje au fost interceptate, 5 martie 1918, codul nu coninea dect 5 litere, ADFGX. Germania ncepuse s neleag c dac rzboiul avea s mai dureze un rezultat favorabil avea tot mai puine anse. Comandamentul German nu putea s nu recunoasc valoarea incalculabil a elementului surpriz, astfel pentru a-i spori ansele de victorie ntr-o conferin a experilor germani n criptologie cifrul ADFGVX avea s fie ales. Responsabilitatea spargerii lui i-a revenit lui Georges Painvin, cel mai bun criptograf al Bureau de Chiffre al Franei, care a primit primele mesaje n varianta cu 5 caractere a codului. A pornit de la ideea c textul criptat nu putea fi rezultatul unui tablou polialfabetic, deoarece ar fi fost o abordare stngace, mai putea s verifice doar ideea unui tabel de substituie supus unei transpoziii. Painvin nu avea o cantitate satisfctoare de text criptat pentru a realiza o analiz a frecvenei, pentru a determina dac se folosea o cheie diferit n fiecare zi. Altfel spus nu avea nici una din informaiile de baz asupra mesajelor criptate. Primele ncercri de decriptare au fost descurajatoare, analiza frecvenei indica schimbarea cheii tabelului n fiecare zi. Dup 1 aprilie francezii au interceptat un numr de 18 mesaje ADFGX totaliznd 512 grupuri de cte 5 litere. Dou dintre mesaje fuseser transmise n cte 3 pri, primele dou pri ale mesajelor aveau mici buci de text identice, acest fapt fiind observat de Painvin n data de 4 aprilie. Aceast identitate putea proveni de la faptul c se utilizase aceeai cheie pentru tabelul de transpoziie i bucile de text erau literele de pe liniile de sus ale tabelului. Painvin a mprit criptogramele n segmente care deveneau astfel coloanele tabelului de transpoziie. Observnd c unele coloane erau mai lungi Painvin a presupus c ele fuseser aezate n stnga tabelului i

16

numerele indicate de coloanele respective trebuie s fi fost primele din cheia de transpoziie. Se puteau face acum primele aproximri asupra cheii. Alturnd coloanele i numrnd perechile de litere, Painvin nu a putut distinge caracteristici importante n majoritatea cazurilor cercetate. Dar n unele cazuri rezultatele obinute indicau o substituie monoalfabetic, aceasta datorit faptului c unele coloane fuseser alturate. Dup 48 de ore Painvin a reuit s decripteze primele mesaje. Din punctul de vedere al germanilor criptarea era foarte uor de realizat i dei textul criptat era dublul celui n clar prin faptul c se utilizau doar 5 caractere viteza de transmisie a mesajelor cretea. Succesul repurtat de Painvin avea s fie ntrerupt de o schimbare adus de germani sistemului de criptare. ncepnd cu 1 iunie ei au adugat o a 6-a liter extinznd tabloul de criptare la dimensiunea 6x6. Painvin a nceput s lucreze la noul cifru n aceeai zi de la ora 17:00, ocupndu-se de trei mesaje aparinnd aceluiai interval orar i care fuseser transmise de acelai expeditor. Observnd c dou dintre mesaje difer doar prin 2 caractere , unul avnd 106 caractere, cellalt 108, Painvin a presupus c textele n clar puteau fi identice, difereniindu-se doar prin o modificare asupra adresei interne a celui din urm. n continuare era nevoie de un aranjament al coloanelor astfel nct din coloanele tabelului de criptare s rezulte identitatea criptogramelor. Painvin a terminat decriptarea mesajelor la ora 19:00 pe 2 iunie , dar "mesajul cel mare" nu fusese nc descifrat, el urma s apar pe 3 iunie.

Figura 1.7: Tabelul cifrului ADFGVX descoperit de Painvin Acesta a fost un succes nsemnat pentru Painvin, el mrturisind bucuria pe care a simito descifrnd mesajul german i recunoscnd c nimic nu se compar cu momentul decriptrii unui mesaj de o asemenea importan. Desigur un asemenea efort l-a lsat pe Painvin extenuat, el slbind aproximativ 15 kilograme n timpul evenimentelor mai sus menionate, singurul efort depus fiind s stea la biroul su. Arthur Scherbius este inventatorul faimoasei maini criptografice Enigma, folosit de-a lungul celui de-al doilea rzboi mondial de ctre naziti. Enigma era o main care ngloba att componente mecanice ct i electrice. Partea mecanic era compus n primele versiuni din 3 rotoare care erau fixate pe un ax, iar mecanismul intern producea micarea celor 3 discuri, care

17

n funcie de rotaiile lor, stabilite dup o formul produceau diferite transformri criptografice dup fiecare apsare de tast. Transformarea criptografic n sine era determinat prin intermediul unui circuit electric care atunci cnd era activat aprindea un led care indica litera rezultat n urma procesului de criptare. Spre exemplu dac un operator dorea s cripteze cuvntul "an" el trebuia s apese A pe tastatura mainii i ca rezultat ledul corespunztor literei S putea s se aprind. Totul depindea de cheia de intrare folosit, care era fixat de fiecare dat pe rotoare, nainte ca operatorul s nceap tastarea mesajului. Fiecare rotor avea o cablare complex, curentul circulnd de la un rotor la altul ctre un dispozitiv denumite reflector responsabil cu devierea curentului napoi prin rotoare, dar pe o alt rut, iar n final ctre un led care indica litera rezultat n urma criptrii (primele aparate Enigma nu dispuneau de un reflector). Elementul principal al Enigmei era rotorul, mai precis

Figura 1.8: Funcionarea mecanismului reflector sistemul de rotoare. Un rotor coninea cele 26 de litere ale alfabetului i era nconjurat de un inel pentru a se putea fixa uor prima liter din cheie. Fiecare rotor avea aproximativ 10 cm diametru, fiind un disc fcut dintr-un material temo-rezistent care era traversat de o serie de pini. Pe cealalt fa a discului pinii formau contacte electrice. Rotoarele erau montate pe un ax astfel nct alturate pinii s fie n contact cu celalalt disc i s formeze un circuit electric. Enigma fusese proiectat s fie un dispozitiv sigur chiar dac circuitul electric format de rotoare era cunoscut unui inamic.

18

Figura 1.9: Rotoarele Enigmei Pentru a se evita implementarea unui simplu algoritm de substituie, unele rotoare se ntorceau numai la apsri consecutive ale tastelor. Se asigura astfel transformarea criptografic diferit pentru fiecare poziie a rotoarelor producndu-se o substituie polialfabetic. Fiecare rotor avea un inel zimat care n anumite momente era blocat, permind astfel ca urmtorul rotor s poat fi incrementat la apsarea unei taste. La sistemele care aveau numai un inel zimat rotirea celui de-al doilea rotor se producea dup 26 de caractere ale rotorului din stnga sa, n mod similar se rotea i rotorul din dreapta. Rotorul din mijloc se mai putea roti simultan cu rotorul din dreapta, deci rotorul din mijloc fcea "dublu pas" rezultnd o perioad redus dup care textul criptat putea ncepe s se repete. Istoric vorbind mesajele criptate cu Enigma s-au limitat la mai puin de 200 de caractere, neexistnd astfel posibilitatea de a se repeta textul criptat. Cu excepia primelor 2 modele, ultimul rotor era urmat de un reflector invenie brevetat i prezent doar la aparatele Enigma. Mainile Enigma dispuneau i de un panou vertical care coninea intrri ce reprezentau literele alfabetului, astfel nct dac dou astfel de intrri erau conectate printr-un fir cele dou litere erau transpuse. Spre exemplu dac A i B erau conectate atunci A i B erau interschimbate att la intrare ct i la ieire. n general 10 perechi de litere erau schimbate pentru a face mai grea munca criptanalitilor care descoperiser o metod uoar de spargere a cifrului aparatelor care nu dispuneau de acest panou. Folosirea Enigmei implica divizarea armatei naziste ntr-un anumit numr de reele fiecare dispunnd de propriile configurri ale aparatelor Enigma. Pentru fiecare astfel de reea criptarea i decriptarea mesajelor era stabilit de un cod special. Codul se refera la ordinea rotoarelor, modul lor de selectare, configurarea mesajelor (n unele reele exista un rotor n plus a crui poziionare era schimbat la fiecare mesaj) i conexiunile de pe panoul vertical al Enigmei.

19

Figura 1.10: Enigma Toate aceste caracteristici trebuiau s fie identice pentru ca expeditorul i destinatarul s poat comunica. Operatorii aparatelor Enigma primeau n fiecare lun o carte care coninea configurrile necesare. Spre exemplu, unele reele utilizau un sistem de 5 rotoare din care cu aparatul se foloseau doar 3, o astfel de carte ar fi putut conine numerele rotoarelor i ordinea n care trebuiau aezate pe ax. O alt configurare s-ar fi putut referi la litera care trebuia s fie litera curent de pe rotor n momentul nceperii criptrii sau decriptrii. Toate aceste configurri pentru un aparat care avea n total 6 rotoare din care se utilizau numai 3 simultan i care puteau fi aezate n 6 poziii diferite (permutri) conduceau la 105,456 posibile alfabete de criptare. S nu uitm c fiecare rotor putea fi blocat de o setare a inelului, iar aceasta aduga mai multe

20

variaii. Descrierea matematic a algoritmului poate fi specificat prin intermediul permutrilor, transformrile literelor fiind un produs de permutri. Considerm un aparat Enigma cu 3 rotoare aparinnd forelor armate aeriene naziste. Fie P transformarea produs de panoul vertical, U transformarea produs de reflector, S,M,D transformrile produse de rotorul din stng, mijloc, dreapt. Atunci criptarea E poate avea urmtoarea formul: E = PDMSUS-1M-1D-1P-1 Dup fiecare apsare a unei taste rotoarele i modific poziia, schimbnd transformarea. De exemplu dac rotorul D se rotete i poziii transformarea devine piDp-i unde p este permutarea ciclic, ea transform A n B , B n C i aa mai departe. n mod similar rotorul din stnga i din mijloc pot fi reprezentate prin j i k rotaii, funcia de criptare devenind: E = P(piDp-i)(pjMp-j)(pkSp-k)U(piD-1p-i)(pjM-1p-j)(pkS-1p-k)P-1 Utilizarea criptografiei n perioada interbelic nu s-a limitat numai la domeniul militar, primele exemple care susin acest lucru pot fi cazurile anchetate de Paza de Coast american n timpul prohibiiei din anii 1920, 1930. Criptografia a fost utilizat n acea perioad de contrabanditii de alcool ca element de ascundere a activitilor lor ilegale. nceputurile criptografiei pe acest domeniu al contrabandei sunt modeste, iniial se utilizau pentru codificarea mesajelor codurile comerciale uzuale cum ar fi ABC Code, ediia 6. Pe msur ce reelele i sporeau activitatea era normal s fie adoptate alte proceduri de comunicaie, astfel dup 1930 aproape fiecare nav de pe coasta Pacificului avea propriul cod. Traficul de mesaje realizat n acei ani era foarte mare pentru perioada aceea de timp. Consolidated Exporters Corporation, o companie care reuise s-i elimine competiia i s stabileasc filiale n locurile strategice din pacific, transmitea peste dou sute de mesaje zilnic ctre navele sale. Pe coasta de est situaia era asemntoare, aici se nregistrau undeva ntre 20 i 50 de mesaje zilnic n zonele portuare New York i Florida. Modul de operare al contrabanditilor presupunea criptarea mesajelor n 5 pai: 1. Textul n clar era criptat folosind un cod comercial, ABC Code, sau Acme. 2. Se aduga 1000 la valorile obinute. 3. Valorile obinute erau cutate n alt cod comercial 4. Erau transcrise noile valori. 5. Textul obinut era criptat din nou folosind o substituie monoalfabtic. Responsabil cu descifrarea mesajelor contrabanditilor era Elizabeth S. Friedman, soia lui William Friedman, care intr-un raport menioneaz: "Unele dintre acestea [criptograme] sunt de o complexitate care nu a fost nici ncercat de nici un guvern pentru cele mai secrete mesaje ale sale". Pe de o parte complexitatea mesajelor se datora reelelor complicate n care erau implicai contrabanditii, iar pe cealalt codurile folosite de ei erau de o diversitate demoralizant.

21

Era criptografiei moderne ncepe cu adevrat odat cu publicarea lucrrii "Communication Theory of Secrecy Systems" de ctre Claude Elwood Shannon n jurnalul tehnic al Bell Systems n anul 1949, cu aceast lucrare practic se pun bazele matematice ale criptografiei. La foarte scurt timp dup apariia acestei cri Shannon public mpreun cu Warren Weaver, "Mathematical Theory of Communication" i cu aceasta criptografia dispare din privirile publicului, i se mut pe terenul organizaiilor guvernamentale i al altor organizaii care prefer s nu publice rezultatele muncii lor. Anii 1960 sunt marcai de lucrul echipei conduse de Dr. Horst Feistel la primul "block cipher", denumit Lucifer. Se pare c numele provenea de la un joc de cuvinte, sistemul la care lucra Feistel naintea lui Lucifer se numea "Demon" i era o prescurtare a cuvntului englezesc "Demonstration" deoarece sistemul de operare folosit nu accepta nume mai mari. Acest sistem criptografic a fost dezvoltat la laboratoarele Watson Research Lab din cadrul IBM i mai trziu a dus la dezvoltarea DES. Lucifer face parte din grupul de criptosisteme care folosesc Feistel rounds pentru criptarea datelor, adic se aplic un pas de criptare de mai multe ori unui bloc de bii. n principiu acest cifru este o reea substituiepermutare care folosete s-boxes de 4 bii care sunt selectate n funcie de cheia de criptare. S-a demonstrat c prima versiune a cifrului era susceptibil atacurilor criptanalitice care foloseau texte n clar alese. O versiune ulterioar a fost propus, aceasta folosea blocuri de 64 de bii i cheia de criptare de 56 de bii, aceast versiune fiind special conceput pentru a rezista criptanalizei difereniale. Una din variantele propuse ale cifrului Lucifer este varianta propus de Arthur Sorkin n Cryptologia 8 (1984). Aceasta folosete 16 runde de criptare, iar cheia i blocul de text n clar au ambele 128 bii. Funcia Feistel corespunztoare opereaz pe un bloc de 64 bii ai textului n clar, 64 bii ai cheii i 8 bii de control ai interschimbrii. Blocul de 64 bii corespunztor textului n clar este tratat ca o serie de 8 octei, iar dac bitul de control corespunztor unu octet particular al blocului textului n clar este 0 atunci jumtile de cte 4 bii ale octetului sunt interschimbate, altfel dac bitul de control este 1 jumtile sunt lsate neschimbate. Se opereaz apoi asupra fiecrui octet cu un s-box de dimensiuni 4x4 (4 bii la intrare 4 la ieire), pentru aceast operaie este nevoie de dou s-box-uri S0 i S1, S0 opereaz pe primii 4 bii ai octetului iar S1 pe ultimii 4. Rezultatele operaiilor sunt apoi concatenate i se aplic un XOR folosind subcheia. Urmeaz o etap de permutri desfurat n dou pri, prima parte presupune permutarea fiecrui byte dup o permutare fixat iar apoi biii sunt schimbai intre octei. Folosirea de subchei presupune un algoritm de programare a cheii care este foarte simplu, cei 128 bii ai cheii sunt introdui ntr-un registru, iar la fiecare rund se extrag din partea stng primii 64 de bii ai subcheii i 8 bii pentru biii de control ai interschimbrii, dup ncheierea rundei registrul este shiftat la stnga cu 56 de bii. Urmaul direct al algoritmului Lucifer este DES ( Data Encryption Standard ) care a fost

22

propus n urma unui studiu al National Bureau of Stan-dards (NBS) redenumit actualmente National Institute of Standards and Technology (NIST) studiu ce arta c USA are nevoie de un standard pentru criptarea comunicaiilor guvernului, comunicaii ce aveau ca obiect informaii sensibile ns nu strict secrete. Astfel pe 15 Mai 1973 dup o consultare prealabil cu National Security Agency (NSA), NBS a lansat o cerere oficial pentru propuneri din partea societii civile a unui cifru ce avea s ndeplineasc cerine stricte, niciuna din propunerile primite nu s-a dovedit viabil. Ca urmare o a doua cerere a fost lansat la 27 August 1974 , de aceast dat IBM a rspuns cererii cu un cifru bazat pe Lucifer, dezvoltat de o echip de criptanaliti ce includea pe Dr. Horst Feistel, Walter Tuchman, Don Coppersmith, Alan Konheim, Carl Meyer, Mike Matyas, Roy Adler, Edna Grossman, Bill Notz, Lynn Smith, i Bryant Tuckerman. Implicarea NSA n dezvoltarea DES a creat multe suspiciuni. Aceste suspiciuni au fost susinute i de ctre pionierii criptografiei cu cheie public Martin Hellman i Whitfield Diffie care susineau c scurtarea cheii de criptare i modificarea s-box-urilor de ctre NSA, ddea ageniei americane posibilitatea de a citi mesajele criptate fr efort. Aceste afirmaii erau susinute de faptul c unul din membrii echipei IBM care crease algoritmul declarase c s-box-urile fuseser trimise la Washington i se ntorseser sub o cu totul alt form. Pe de alt parte se cutau dovezi c algoritmul ar fi fost special modificat astfel nct sa nu reziste unui atac brute force din partea NSA despre care se credea c ar fi putut face acest lucru cu civa ani naintea comunitii academice. Spargerea DES a costat 220.000$, aceasta fiind realizat n anul 1998 cu ajutorul unui super-calculator care a reuit s sparg cifrul n mai puin de 3 zile. Acesta a fost momentul hotrtor cnd NIST a solicitat algoritmi criptografici din partea publicului, dei n paralel cu DES exista triple-DES o variant mbuntit care cripta de 3 ori textul n clar. Cererea NIST a avut ca rezultat, dup doi ani de analiz i dezbateri alegerea algoritmului Rijndael, care devenea Advanced Encryption Standard (AES), nlocuitorul DES. Anul 1976 avea sa marcheze nceputul criptografiei cu cheie public. Aa cum s-a ntmplat n multe alte cazuri din lumea tiinific mai muli cercettori lucrau n mod independent la un sistem criptografic prin care se urmrea schimbul de informaii criptate fr a fi nevoie ca prile comunicante s dispun de cunotine anterioare. Echipele cunoscute n literatura de specialitate erau Whitfield Diffie i Martin Hellman de la Universitatea Stanford i Ralph Merkle de la Universitatea California din Berkeley. Cele dou grupuri se ocupau fiecare de criptarea cu cheie public respectiv distribuia de chei publice cnd au aflat fiecare despre progresele celeilalte pri au decis s conlucreze dup cum spune Martin Hellmann: "Fiecare aveam o parte cheie a puzzle-ului i este adevrat c atunci cnd unul din noi spunea prima dat X, altul spunea prima dat Y i aa mai departe, a fost combinaia dintre avansri i regrese care a permis apariia descoperirii." Lucrarea care enun primele idei cu privire la criptografia cu

23

cheie public sau criptografia asimetric este "New directions n cryptogtaphy", i avea ca autori pe Diffie i Hellman i a aprut n noiembrie 1976 n ediia IEEE Transactions on Information Theory. Lucrarea coninea referiri la ideile lui Merkle, concepte ale criptografiei cu cheie public, incluznd semnturile digitale i exemple de algoritmi care urmau s fie implementai. Publicarea ideilor lor a revoluionat cercetarea n criptografie care pn la acea dat fusese supus multor restricii att reale ct i presupuse din partea guvernului american i a ageniilor guvernamentale. Implicarea guvernului n sistemele criptografice nu se limiteaz numai la statul american, un exemplu de astfel de implicare este reliefat ntr-un articol din ziarul New York Times. Conform unui document publicat pe site-ul su de internet de Government Communications Headquarters, o organizaie britanic, descrie rolul pe care l-a avut n descoperirea sistemelor cu cheie public. Documentul detaliaz cum trei angajai ai guvernului britanic au descoperit sistemul de criptare cu cheie public cu civa ani naintea lui Hellman i Diffie. James Ellis este autorul documentului, matematician i criptograf, decedat cu mai puin de o lun naintea apariiei articolului din New York Times. Ellis susine c o abordare mai practic a fost propus de Clifford Cocks, dar care n esen se asemna mult cu algoritmul propus de Rivest, Shamir i Adleman, de asemenea un algoritm asemntor cu cel propus de Diffie i Hellman a fost descoperit de Malcolm Williamson. Cu siguran istoricii vor cerceta aceste afirmaii, ns n ultim instan scrierea unei cri corecte din punct de vedere istoric pe aceast tem ine de declasificarea informaiilor deinute de mai multe guverne. Inspirai de ideile revoluionare ale lucrrii Diffie-Hellman, Ronald Rivest, Adi Shamir i Len Adleman au discutat posibilitatea realizrii unui sistem criptografic care s realizeze criptarea cu cheie public. ntr-o zi de aprilie Ronald Rivest a avut ideea criptosistemului, el a notat totul pe o foaie pe care a trimis-o n ziua urmtoare colegilor si. Astfel a luat natere criptosistemul RSA, conceput de ce trei care erau profesori la MIT la acea dat. RSA este un cifru ce utilizeaz o pereche de chei, una public i una privat (secret) i se bazeaz pe problema logaritmului discret, adic pe dificultatea extragerii logaritmului dintr-un numr foarte mare. Algoritmul i-a fost prezentat lui Martin Gardner pentru a fi publicat n revista Scientific American, articolul publicat includea i o ofert din partea autorilor, oricine era interesat de detaliile tehnice ale algoritmului era invitat s trimit un plic auto-adresat, timbrat pentru a primi un raport complet asupra algoritmului. S-au primit mii de cereri din toate colurile lumii. NSA nu a fost desigur mulumit de acest lucru deoarece l considera o posibil ameninare la adresa siguranei naionale a SUA i a cerut oprirea imediat a trimiterilor potale. ns ulterior s-a dovedit ca NSA nu avea nici o susinere legal pentru cererea sa i trimiterile au continuat.Ca rspuns din partea societii civile la acest incident au fost apoi nfiinate dou ziare internaionale care aveau ca obiect noutile criptografice, Cryptologia i

24

The Journal of Cryptology. Publicarea algoritmului RSA nu a avut ca scop evidenierea constrngerilor ce veneau din partea ageniilor guvernamentale ci mai degrab faptul c autorii doreau s-i fac ideea cunoscut, acest lucru avnd sa fie n detrimentul lor deoarece nu au putut obine un brevet de invenie internaional asupra algoritmului.

25

Capitolul 2

Criptosisteme clasice
2.1 Cifrul lui Caezar
2.1.1 Descriere general
Pentru a putea comunica informaii private, oamenii au gsit adesea metode de la cele mai simple pn la cele mai complexe. Pentru a face o astfel de metod s funcioneze este nevoie ca partenerii de comunicaie s se pun deacord asupra unei metode de secretizare a informaiei transmise. Spre exemplu dac un mesaj codificat ajunge la destinatar i acesta nu cunoate o metod prin care s-l poat decodifica i citi informaia care i este transmis, atunci mesajul i este complet inutil. Una dintre formele cele mai simple de codificare a mesajelor despre care se spune c ar fi fost folosit de mpratul roman, Iulius Caesar, pentru a comunica cu generalii si este deplasarea la dreapta sau stnga a alfabetului cu un numr de poziii, fiecare liter fiind transformat n litera anterior existent pe poziia respectiv. n cazul de fa se spune c Iulius Caesar folosea o deplasare cu 3 poziii la dreapta a alfabetului, producnd astfel o transformare care a fost foarte eficient n vremea aceea deoarece foarte puini dintre inamicii si puteau citi sau scrie, fr s mai lum n calcul metodele criptanalitice. Presupunnd c Caesar ar fi avut un duman care nu ar fi fost analfabet, acesta ar fi avut destul de puine anse pentru a rezolva cifrul fiindc din cte se tie cele mai vechi metode criptanalitice descoperite n care se relateaz despre metoda analizei frecvenei dateaz din jurul anului 1000 e.n. i au fost descoperite n lumea arab. n ciuda faptului c este un cifru relativ uor de "spart" a supravieuit o perioad destul de ndelungat, fiind folosit de armata rus pn n jurul anului 1915, aceasta refuznd nlocuirea lui cu alte metode mai complexe datorit faptului c soldaii rui nu puteau stpni foarte bine aceste metode. Desigur, criptanalitii germani i austrieci nu au ntmpinat dificulti deosebite n descifrarea mesajelor secrete ale armatei ruse. O complicare a acestui cifru ar putea fi transformarea sa ntr-un cifru de tip substituie polialfabetic n care dup criptarea unei litere alfabetul folosit s fie din nou deplasat cu un numr de poziii.

2.1.2

Descriere matematic
Acest mod de criptare poate fi definit i reprezentat n aritmetica modulo n,

transformnd mai nti literele alfabetului n cifre dup cum urmeaz: A = 0, B = 1,..., Z = 25. Definiia 2.1.1. Fie a i b doi ntregi i n un ntreg pozitiv. Atunci scriem a = b(mod n) daca n | (b a). Fraza a = b(mod n) este numit congruen i va fi citit "a este congruent cu b modulo n", ntregul n fiind numit modul.

26

Dac vom divide pe a i b prin n, vom obine un ct i un rest unde restul va fi ntre 0, n 1 , de aici stabilim urmtoarele relaii a = q1 n + r1 i b = q2n + r2, unde r1 i r2 ntre 0, n 1 , iar conform definiiei, trebuie s aib loc relaia r1 = r2. Expresia a mod n este interpretat ca fiind reducerea lui a modulo n. Aritmetica modulo n (adunarea(+), multiplicarea(*)) este definit analog ca n Z cu diferena c rezultatul este redus modulo n. Urmtoarele proprieti pot fi demonstrate foarte uor:
1. 2. 3. 4. 5. 6. 7. 8. 9.

a, b Zn, a + b Zn a, b Zn, a + b = b+ a a, b,c Zn, (a + b) + c = a + (b + c) 0 este element neutru pentru adunare, adic a Zn, a + 0 = 0 + a = a exist un invers pentru fiecare a Zn care este m-a. Astfel a+(m-a) = (m- a) + a = 0 a,b Zn, a*b Zn a, b Zn, a * b= b * a a, b,c Zn, (a * b) * c = a * (b * c) 1 este element neutru pentru multiplicare, adic a Zn,a*1 = 1*a = a

10. multiplicarea este distributiv fa de adunare a, b,c Zn, (a+b) *c = a * c + b * c Pentru a defini codul lui Caesar vom considera cazul alfabetului englezesc care conine 26 de caractere i din acest motiv se va lucra n Z26. Definiia 2.1.2. Un sistem ciptografic bazat pe deplasare n Z26 este definit astfel: P = C = K = Z26. Pentru 0 < K < 25, definim: ek(x) = (x + K)mod 26 dk(y) = (y K)mod 26 unde x,y e Z26 i x reprezint textul n clar i y textul criptat.

2.1.3

Algoritm
Pentru criptarea efectiv a unui text se va face mai nti o conversie de forma a 0, b

1, c 2,..., z 25 i trecerea valorilor ntr-un vector de ntregi care va reprezenta mesajul, fie el n forma n clar sau forma criptat. Algoritmul 2.1.1. Criptarea cu cifrul lui Caezar
1. 2.

criptare_Caesar(Mn,k) i0

3. while (i<=n)
3.1. Ci Mi +k

3.2.

i++

4. return Cn

27

Algoritmul 2.1.2. Decriptarea cu cifrul lui Caezar


1.

decriptare_Caesar(Cn,k)

2. i 0 3. while (i<=n)
3.1.

Mi Ci -k i++

3.2.

4. return Mn

2.1.4 Exemplu
Exemplul 2.1.1. Criptarea cu cifrul lui Caezar Text n clar: ATACATI Cheie: +3 FLANCUL DREPT

Text criptat: DWDFDWL IODQFXO GUHSW Exemplul 2.1.2. Decriptarea cu cifrul lui Caezar Text criptat: WULPLWH DUPDWD Cheie: Text n clar: -3 TRIMITE ARMATA

2.2 Cifrarea afin


2.2.1 Descriere general

Cifrarea afin este un caz particular al cifrrii prin substituie, fiind o cifrare monoalfabetic i simetric. Acest tip de cifrare este vulnerabil la toate tipurile de atacuri care sunt posibile pentru cifrarea prin substituie precum i la alte tipuri de atacuri. Principala slbiciune a cifrului const n faptul c dac atacatorul poate descoperi textul n clar a dou caractere (prin analiza frecvenei, brute force, sau pur i simplu ghicind) poate apoi obine cheia rezolvnd un sistem de dou ecuaii cu dou necunoscute.

2.2.2

Descriere matematic

Teorema 2.2.1. Congruena ax b(mod n) are soluie unic pentru x Zn pentru b e Zn dac i numai dac cmmdc(a, n) = 1. Definiia 2.2.1. Fie a 1 i m 2 dou numere ntregi. Dac cmmdc(a,n)=1 spunem c a i m sunt numere relativ prime ntre ele. Numrul de numere relativ prime ntre ele din Zn este definit ca fiind (m) (funcia Euler) Definiia 2.2.2. Fie a Zn, inversul lui a fa de operaia de multiplicare n Zn se noteaz cu a-

28

mod n i este un element a' care satisface relaia aa' = a'a = 1(mod n). Pentru m fixat se

folosete notaia a-1 care nlocuiete a-1 mod n. Definiia 2.2.3. Un sistem criptografic afin cu n=26 (Z26) este definit ca fiind P = C = Z26 i K = {(a, b) Z26 x Z26 : cmmdc(a, 26) = 1} Pentru k = (a, b) Z26 definim funcia de criptare: ek(x) = (ax + b)mod26 i funcia pentru decriptare dk(y) = a-1 (y b)mod26 unde x, y Z26

2.2.3

Algoritm
Algoritmul criptrii afine este o modificare trivial a algoritmului criptrii prin metoda

lui Caesar. i n acest caz se cere o conversie prealabil a textului identic metodei de criptare a lui Caesar. Vom presupune implementat procedura cmmdc pentru calcularea celui mai mare divizor comun, folosit pentru a verifica faptul c a i lungimea alfabetului folosit sunt numere prime ntre ele, n caz contrar mesajul criptat nu va putea fi decriptat. Algoritmul 2.2.1. Criptare afin
1.

criptare_afina(Mn,k,lung_alfabet) incheie_procedura

2. if (cmmdc(a,lung_alfabet)>1) 2.1
3.

i < 0 Ci = a* Mi + b i++

4. while(i<n)
4.1.

4.2.

5. return Ci Algoritmul 2.2.2. Decriptare afin


1. 2. 3.

decriptare_afina(Cn,k,lung_alfabet) A 1/a B -b/a criptare_afina(Cn,k,lung_alfabet)

4. k (A, B)
5.

29

2.3 Codul Hill


2.3.1 Descriere general
Exist dou metode de baz prin care se poate evita un atac criptanalitic prin analiza frecvenei asupra unui text criptat. Prima metod presupune criptarea polialfabetic a textului, i anume pentru aceeai liter a alfabetului textului n clar s existe mai multe litere diferite n textul criptat. Aceast soluie a fost oferit de criptosistemul Vigenere i alte criptosisteme polialfabetice. A doua abordare este criptarea textului n clar prin mprirea sa n grupuri de n litere i criptarea grupului spre deosebire de criptarea liter cu liter. Sistemul Playfair ascunde relativ bine comportamentul specific al literelor, dar un sistem care s fie capabil s cripteze un numr variabil de litere ar fi fost de preferat. n 1929 Lester S. Hill a propus un sistem algebric capabil s cripteze grupuri de cte n litere, unde n este un ntreg pozitiv. La vremea respectiv calculele aferente criptrii i decriptrii ar fi putut fi fcute pe o foaie de hrtie fr prea mult greutate pentru grupuri de pn la 5 litere. Dincolo de aceast cifr dificultatea calculelor ar fi devenit o povar. Odat cu dificultatea efecturii calculelor crete i dificultatea spargerii cifrului, se pare c un astfel de sistem care ar fi folosit grupuri de 10 litere ar fi destul de greu de spart. Se pare ca Hill mpreun cu un partener, Weisner au depus o cerere de brevetare a unei maini mecanice (denumit Message Protector) care folosea matrici involuntare (A = A-1) pentru a uura munca criptrii i decriptrii mesajelor. Dispozitivul inventat de ei este descris n specificaiile tehnice ca fiind mai degrab un identificator de authenticitate. mpreun cu maina venea o metod prin care inventatorii propuneau unitilor bancare o modalitate prin care s verifice dac datele de pe cecuri au fost modificate. Ideea lor nu a avut succes, majoritatea potenialilor clieni nefiind interesai de o main care putea s multiplice matrici. Codul Hill implementat de maina pe care a brevetat-o presupune ca toate calculele s fie fcute modulo 26. nainte de a ncepe criptarea efectiv literele alfabetului vor fi numerotate, fiecare primind numere de la 0 la 25 inclusiv. Pentru criptarea textului se alege aleator o matrice inversabil (Kn K) de dimensiune n x n care va reprezenta cheia de criptare. Textul n clar va fi mprit n grupuri de mrime n care vor fi considerate matrici (Mn P)de dimensiune n x 1. Pentru a cripta mesajul vom considera Cn C definit astfel: Cn = An x Mn(mod26). Decriptarea se va face calculnd inversa matricii An astfel Dn = A-1 x Cn(mod 26)

2.3.2

Descriere matematic
Acest mod de criptare se bazeaz pe aritmetica modulo-n a matricilior ptratice din Z26.

n cadrul aritmeticii modulo-n a matricilor ptratice adunarea i multiplicarea (notate + i respectiv, *) sunt definite analog operaiilor din Mmxm(Z). Diferena const n faptul c rezultatul

30

este redus modulo-n. La fel ca n cazul utilizrii cifrului Caesar literele alfabetului trebuie transformate n cifre din intervalul [0, 25]. nainte de a defini acest tip de criptosistem trebuie introduse cteva noiuni din aritmetica matricilor modulo-n. Definiia 2.3.1. Fie matricile A i B aparinnd Mmxm(Zn) spunem c A B dac ntre aij A i bij B exist relaia aij = bij, cu i,j = 1, m. Definiia 2.3.2. Fie A o matrice, A Mmxm(Zn) spunem despre matricea A c este inversabil dac exist o matrice B Mmxm(Zn) astfel nct: AB BA I B se va numi inversa lui A i vom nota acest lucru prin A-1 = B mod n. Definiia 2.3.3. Fie A o matrice, A Mmxm(Zn) determinantul matricii A este: det(A) = a(mod n). Teorema 2.3.1. Daca A este o matrice aparinnd Mmxm(Zn), A este inversabil dac i numai dac cmmdc(det( A), n) = 1. Definiia 2.3.4. Un criptosistem bazat pe cifrul Hill, unde lungimea alfabetului este n = 26(Z26), este definit pentru P = C = Z26 i K = {A Mmxm(Z26) : cmmdc(det(A), 26) = 1} pentru cheia k = A K, textul n clar p P scris sub form de vector cu m componente definim funcia de criptare ek(x) = Ax(mod26) i funcia pentru decriptare dk(y) = A-1y(mod 26) unde x,y Mmx1(Zn).

2.3.3

Algoritm
Pentru algoritmii de mai jos se presupune c literele textului n clar dar i ale textului

criptat sunt puse intr-o coresponden cu cifrele de la 0 la 25 de forma: a 0, b 1, ... , z 25. Dup crearea acestei corespondene textul n clar trebuie scris sub forma a t vectori obinui prin mprirea textului n clar n grupuri de cte m elemente. Dac pentru ultimul vector avem un numr de elemente mai mic dect m vom repeta ultima liter pentru completarea vectorului. Algoritmul pentru criptare este urmtorul, (toate operaiile sunt modulo-n): Algoritmul 2.3.1. Criptare Hill 1. criptare_hill(Mn,k,n) 2. if cmmdc(det(Mn),n)>1 2.1 incheie_procedura

31

3. for(i = 1,m) 3.1 while(col<t) 3.1.1 for(j = 1,m) 3.1.1.1 Ci,j = Ai,j *Mj,t 3.1.2 col++ 4. return Ci,j Algoritmul pentru decriptare este asemntor cu cel pentru criptare cu singura diferen ca de data aceasta se folosete matricea A-1 care trebuie calculat apriori, ea fiind nmulit cu matricea Cn, matricea textului criptat. Algoritmul 2.3.2. Decriptare Hill
1. 2.

decriptare_hill(Cn,k,n) for(i = 1,m) while(col<t) for(j = 1,m)


1 Mij = Ai , j * Cj,t

3. 3.1 3.1.1 3.2 4.

col++ return Mi,j

32

Capitolul 3

Criptosisteme simetrice
Criptosistemele bazate pe cheie simetric asigur confidenialitatea mesajelor transmise ntre doi parteneri de comunicaie prin folosirea aceleiai chei att pentru criptare ct i pentru decriptare. Acest fapt este motivul pentru care aceste criptosisteme sunt numite cu cheie simetric sau criptosisteme cu cheie privat. Un presupus adversar, Eve, care va intercepta un mesaj transmis ntre cei doi parteneri de comunicaie nu va putea obine informaii semnificative despre textul transmis chiar dac cunoate detalii despre algoritmul folosit att timp ct nu cunoate cheia folosit pentru criptare. Ne propunem n acest capitol s analizm diferenele dintre dou categorii ce aparin de criptosistemele cu cheie simetric sau cheie privat. Diferenele ntre cele dou categorii pleac de modul n care se face criptarea, i anume dac textul n clar este criptat caracter cu caracter sau bit cu bit este vorba de un cifru de tip stream sau flux. Dac datele sunt criptate sub form de blocuri de text sau bii, atunci acest cifru este un cifru de tip block.

Schema de aplicare a unui algoritm simetric Definiia 3.0.5. Un criptosistem cu cheie simetric este un tuplu de forma (P,C,K,E,D) care ndeplinete urmtoarele cerine:
1.

P este un set finit de posibile texte n clar

2. C este un set finit de posibile texte criptate 3. K este un set finit de posibile chei de criptare 4. Pentru fiecare cheie k K exist o regul de criptare ek E i o regul corespunztoare de

33

decriptare dk D. Fiecare ek : P C i dk : C P funcioneaz astfel nct: dk(ek(x)) = x pentru orice text n clar x P. Algoritmii folosii pentru a calcula ek(x), unde x P este un text n clar, i dk(y), unde y C este un text criptat, sunt fcui publici, deci oricine poate cripta sau decripta un mesaj dac deine cheia potrivit. Pentru a stabili un criptosistem cu cheie privat Alice i Bob trebuie s foloseasc o cheie comun care va fi folosit att pentru a cripta, dar i pentru a decripta. Aceast cheie trebuie pstrat secret astfel nct adversari precum Eve s nu o poat accesa. Desigur o cerin imperativ a unui astfel de criptosistem este ca atunci cnd se cunoate textul criptat, y P, s fie imposibil s se calculeze rezultatul funciei dk(y). Dintre toate criptosistemele cunoscute, cele cu cheie simetric sunt printre cele mai rapide, acest fapt le face foarte potrivite pentru a cripta volume mari de date. Dac Alice i Bob vor dori s schimbe mai multe imagini fr ca Eve s poat s le vad, ei vor trebui mai nti s schimbe o cheie a unui algoritm de criptare cu cheie simetric. Pentru aceasta trebuie mai nti s stabileasc un canal de comunicaie securizat. Aa cum se va arta n capitolele urmtoare se pot folosi criptosisteme bazate pe cheie public pentru transmiterea cheii simetrice pentru ca apoi cei doi s dispun de o posibilitate de criptare rapid. Putem spune deci c cele dou criptosisteme se complementeaz reciproc pentru a oferi modele de securitate pentru medii nesigure de comunicaie.

3.1 Cifrare de tip flux (stream)


Un cifru de tip stream este un algoritm de criptare cu cheie simetric. Astfel de algoritmi pot fi concepui s fie extrem de rapizi, mult mai rapizi dect oricare alt algoritm te tip bloc. n timp de algoritmii de tip bloc lucreaz cu blocuri de bii, algoritmii de tip stream opereaz cu uniti mai mici de date, de obicei la nivel de bit. Criptarea anumitor poriuni de text n clar cu un algoritm de tip bloc va avea ca rezultat acelai text criptat atunci cnd se folosete aceeai cheie, cu un algoritm de tip flux de date aceste subdiviziuni ale textului vor varia n textul criptat, acest lucru depinznd de momentul n care vor fi ntlnite n textul n clar atunci cnd se desfoar procesul de criptare. Un cifru de tip flux genereaz ceea ce se cheam un flux al cheii de criptare, iar criptarea este obinut prin combinarea fluxului cheii de criptare cu textul n clar. De obicei se folosete operaia XOR la nivel de bit. Generarea cheii de cifrare poate fi fcut independent de textul n clar sau de textul criptat, n acest caz se spune c cifrul de tip flux este sincron. n cazul n care generarea cheii de criptare se face dependent de mesaj cifrul se numete asincron. Majoritatea algoritmilor sunt de primul tip.

34

Definiia 3.1.1. Fie K mulimea de chei posibile i P mulimea mesajelor posibile. n acest caz elementele lui P se vor numi caractere. Un cifru de tip stream este definit prin ek : P x K C unde ek are forma: ek(p, k) = c = c1c2c3 ... funcia ek cripteaz mesajul p = p1p2p3 . . . P ca fiind un ir de caractere c = c1c2c3... C folosind o cheie k = k1k2k3. . . K. Inversa funciei ek este funcia dk definit astfel: dk(c, k) = p1p2p3 . . . = p care pentru aceleai elemente enumerate va avea ca rezultat textul n clar. n mod tipic caracterele din P i cheile din K sunt cifre binare sau octei, pentru a pstra compatibilitatea cu sistemele de operare, unde intrrile i ieirile sunt realizate prin intermediul fluxurilor de date. Desigur fluxul cheii de criptare trebuie pstrat secret. Deseori nu cheia de criptare este cea care este cunoscut de ambele pri implicate n comunicaie ci o cheie secret din care se poate genera cheia de criptare.

3.1.1

Codul Vernam sau One Time Pad

Descriere general Este poate unul dintre cele mai faimoase exemple de cifru care este teoretic imposibil de "spart". Cifrul a fost inventat de Gilbert Vernam, inginer la AT&T, i perfecionat mpreun cu Joseph Mauborgne, cpitan n cadrul armatei S.U.A.. n acest cifru textul n clar este combinat cu o cheie obinut aleator. Mai precis fiecare caracter sau fiecare bit al mesajului, mpreun cu fiecare bit al cheii, este supus operaiei XOR pe bii. Astfel lungimea cheii trebuie s fie cel puin egal cu lungimea mesajului. Din punct de vedere teoretic nu exist nici o posibilitate de a decripta mesajul fr a cunoate cheia. Cheia este deci un element de securitate important n cadrul acestui cifru, ea poate fi folosit o singur dat i obinut n mod complet aleator. Altfel cifrul poate fi compromis foarte uor. Dac n generarea cheii se folosete un algoritm care genereaz biii cheii respectnd o structur atunci securitatea cifrului este redus considerabil, deoarece n acest caz criptograma rezultat respect o structur i poate fi supus unor atacuri criptanalitice. Cheia este folosit numai o singur dat pentru a cripta i decripta un mesaj, de aici numele de "one time pad". Spre exemplu dac aceeai cheie ar fi folosit pentru dou mesaje atunci un atacator care se presupune ar fi interceptat cele dou mesaje ar putea foarte uor calcula c c din cele dou criptograme i ar obine cheia, lucru care inevitabil conduce la obinerea de informaii despre textul n clar. Pe lng aceasta sunt dezavantaje evidente ale cifrului Vernam n ceea ce privete generarea cheii de criptare i transportul cheii ntre prile comunicante. Totui cele mai practice metode de criptare folosesc conceptele prezente n acest cifru. Generatorul aleator este nlocuit cu un

35

generator pseudo-aleator, cheile obinute n urma utilizrii unui astfel de generator sunt asemntoare cu cele ale generatoarelor aleatoare cu diferena c sunt obinute n urma unui algoritm determinist. n practic astfel de generatoare se bazeaz pe modurile de operare ale cifrurilor de tip bloc i pe regitrii de deplasare cu feedback sau revenire. Avantajul acestui cifru const n faptul c poate fi dovedit a fi sigur. Presupunnd c un atacator poate intercepta un mesaj care conine un bit. Alice i Bob vor s schimbe mesajul da=1, nu=0. Anterior transmiterii mesajului Alice i Bob au schimbat cheia k obinut n urma unei experiene aleatoare. Mai nti se presupune c oricare din mesaje poate fi transmis, fie da, fie nu. Adversarul, Eve intercepteaz criptograma c care n mod evident cripteaz fie da, fie nu. Din moment ce cheia a fost aleas aleator Eve nu poate dect s ghiceasc coninutul mesajului deoarece exista anse ca mesajul s fie da i anse ca mesajul s fie nu. ns Eve tia aceste lucruri nainte s intercepteze mesajul. Deci nu a obinut nici o informaie semnificativ n urma interceptrii mesajului. Acest lucru rmne valabil i n cazul n care una din posibiliti are probabilitate mai mare de a se ntmpla. Un mare dezavantaj al cifrului Vernam const n faptul c nu protejeaz mesajul mpotriva eventualelor modificri survenite pe parcursul transmisiei. Dac un atacator va modifica mesajul astfel nct dup decriptare s aib sens, destinatarul nu va putea observa acest lucru. Descriere matematic Definiia 3.1.2. Un criptosistem bazat pe cifrul Vernam este un tuplu de forma (P,C,K,E,D) care trebuie s ndeplineasc urmtoarele condiii: 1. P este un set finit de posibile texte n clar 2. C este un set finit de posibile texte criptate
3. 4.

K este un set finit de posibile chei de criptare P=K=C={0,1} i funcia de criptare este definit astfel ek : {0,1} x {0,1} {0,1} ek(p, k) = p k unde p este un mesaj din P i k este o cheie din K. Pentru funcia de decriptare dk : {0,1} x {0,1} {0,1} considerm c din C si avem: dk(c, k) = c k pentru aceste operaii p este de forma p = p1p2p3 . . ., k este deforma k = k1k2k3... i c este deforma c = c1c2c3.. .. Prin semnul am simbolizat XOR pe bii (sau exclusiv).

Algoritm Algoritmul 3.1.1. Algoritm criptare Vernam


1. 2.

criptare_vernam(Pn, Kn) i0

3. while(i<=n)

36

3.1.

Ci Pi Ki

4. return C Algoritmul 3.1.2. Algoritm decriptare Vernam 1. decriptare_vernam(Cn, Kn) 2. i 0 3. while(i<=n) 3.1. Pi Ci Ki Algoritmul de mai sus ar putea fi nlocuit cu un apel al funciei de criptare pentru textul criptat i cheia Kn, deoarece n principiu se fac acelai operaii. Exemplu nainte de a prezenta un exemplu vom presupune c literele alfabetului sufer o conversie de forma celor de la criptosistemele clasice: a 0, b 1, c 2,..., z 25. Exemplul 3.1.1. Criptare Vernam Presupunem c Alice dorete s transmit mesajul "TRIMIT AJUTOR" folosind un canal de comunicaie nesigur. Att ea ct i Bob se presupune c au obinut printr-o metod necunoscut un set de chei generate absolut aleator i c una dintre aceste chei este "AFVKGHOPERTS". Pentru a cripta mesajul ei vom proceda n felul urmtor, operaiile sunt n aritmetica modulo-26. Text n clar Cheie Text n clar Cheie Text criptat T R I M I T A J U T O R 4. return P

A F V K G H O P E R T S 19 17 8 12 8 19 0 9 10 19 14 17 0 5 21 10 6 7 14 15 4 17 19 18 T W D W O A O Y O K H J

Criptograma 19 22 3 22 14 0 14 24 14 10 7 9

Exemplul 3.1.2. Decriptare Vernam Pentru a obine textul n clar din textul criptat de mai sus pur i simplu scdem din valorile literelor criptogramei valorile literelor cheii. Acolo unde valorile vor fi negative, innd cont de faptul c lucrm n aritmetica modulo-26 aceste valori for semnifica 26 V, unde V este valoarea negativ. Text criptat Cheie T A W F D V W K O G A H O O Y P O E K R H T J S

37

Criptograma 19 22 Cheie Text n clar 0 T 5 R

22 14 6 I

0 7 T

14 24 14 10 14 15 0 A J 9 10 U

21 10 I M

4 17 19 18 -7 -12 -9 T O R

Text n clar 19 17 -18 12

8 -7

3.1.2

SEAL - Software Encryption Algorithm

Descriere general Algoritmul prezentat n continuare se afl la a treia versiune. Proiectul SEAL a nceput n vara anului 1992 i creatorii si au dorit s ofere un rspuns la cerinele existente atunci pe pia cu privire la un algoritm sigur, rapid i cu implementare software eficient. n construcia algoritmului s-a avut n vedere faptul c algoritmul trebuia s funcioneze excepional pe un set restrns de cerine minime ale sistemului, mai degrab dect sa funcioneze acceptabil pentru o gam larg de componente hardware. Singurul aspect important cu adevrat era viteza cu care se fcea criptarea, desigur neignornd elementul de securitate. n total au fost luate n considerare 9 propuneri pentru ce avea s fie cifrul SEAL. Pentru fiecare din cele 9 propuneri cei doi autori ai cifrului urmau un drum asemntor n ceea ce privete testarea securitii cifrului. Phillip Rogaway pregtea specificaiile criptosistemului dup care i le prezenta lui Don Coppersmith, acesta ncerca diverse atacuri criptanalitice mpotriva cifrului. Atacurile erau concepute de aa natur pentru a se putea pune deacord asupra ideilor principale pe care cifrul trebuia s le urmeze. Desigur rezultatele atacurilor erau analizate de Rogaway i slbiciunile cifrului eliminate. Prima versiune a cifrului a fost prezentat prima dat n decembrie 1993. Versiunea prezentat n continuare este versiunea 3.0, de aceea vom nelege c acronimul SEAL desemneaz versiunea 3.0 a acestui cifru. SEAL este o familie de funcii pseudo-aleatoare: sub controlul unei chei, mai nti preprocesat ntr-un set de tabele, algoritmul produce dintr-o secven de 32 de bii, denumit "index de poziie", un flux de bii al cheii de criptare, care n mod esenial poate fi de lungime arbitrar. Criptarea se face apoi n maniera cifrului Vernam, aplicnd operatorul XOR fluxului cheii i mesajului n clar. La fel ca n cazul cifrului Vernam, fluxul cheii trebuie folosit o singur dat. SEAL este un cifru rapid n comparaie cu ali algoritmi din clasa sa. Pe un procesor pe 32 de bii SEAL poate cripta un octet de text la fiecare 4 cicli de ceas. Acest fapt l face de 10 ori mai rapid dect DES. n aplicaiile tipice care au nevoie de criptografia implementat n software, criptarea datelor este necesar atunci cnd doi parteneri doresc s comunice pe durata unei sesiuni. n aceste cazuri cheia de criptare k este determinat n faza de stabilire a sesiunii. De obicei

38

aceast faz dureaz cteva milisecunde i nu este o operaie critic n ceea ce privete timpul trecut pn la ncheierea ei. Este deci acceptabil, n cazul majoritii aplicaiilor, ca n faza de stabilire a sesiunii s se piard cteva milisecunde pentru stabilirea conexiunii dintre cheia k(varianta scurt a cheii) i o reprezentare a unei transformri criptografice specializate a acestei chei. Aplicaiilor care au nevoie de o faz de stabilire a acestor parametri mai rapid nu le este indicat folosirea acestui cifru. Descriere matematic Funcia SEAL este un tip de obiect criptografic denumit familie de funcii pseudoaleatoare(PRF). Sub controlul unei chei k de lungime 160 bii, SEAL produce dintr-un un ir de caractere, n, de 32 de bii, un ir de caractere de lungime L, SEAL(k, n, L). irul L poate fi orict de mare, n funcie de cerinele aplicaiei care implementeaz algoritmul, mrimi ale lui L cuprinse ntre civa octei i cteva mii de octei sunt ns anticipate. Desigur mrimea cheii k poate fi mai mare, ns ea va fi adus la forma k = SHA 1(k'), unde k este cheia de mrime arbitrar, iar SHA-1 este funcia de hash cu acelai nume. SEAL fiind parte a familiei de funcii pseudo-aleatoare, SEAL(k, , L) ar trebui s "arate ca o funcie aleatoare". Afirmaia precedent se refer la faptul c alegnd aleatoriu o cheie k din {0, 1}160, adversarul, Eve, va trebui s ghiceasc dac outputul pe care l deine este rezultatul funciei SEAL(k, , L) sau este rezultatul unei funcii cu adevrat aleatoare R(). Scopul algoritmului este acela de a obine o probabilitate apropiat de cu care Eve poate ghici corect. n cazul unu cifru de tip flux, criptarea unui mesaj nu depinde numai de cheia k i mesajul p, dar i de "poziia" n a mesajului n cadrul fluxului de date. Criptarea mesajului p la poziia n este dat de {n, x SEAL(k, n, L)), unde L = | x |. n cadrul altor aplicaii n ar putea fi indexul unor date de pe un disc. Cifrul este bazat pe tabele dup care se va face criptarea. Cheia k va fi folosit doar pentru generarea acestor tabele. Tabelele vor fi specificate folosind o funcie G. Pentru k un ir de caractere cu lungimea de 160 bii i i un ntreg cuprins n intervalul 0 < i < 232, Ga(i) este o valoare pe 160 de bii. Funcia G este funcia de compresie din Secure Hash Algorithm SHA-1. Reindexm funcia G pentru a construi o funcie a crei imagine este un cuvnt de 32 de bii. Funcia este definit astfel: a(i) = Hiimod5 unde
5 5 5 5 H 0 j || H15 j +1 || H 2 j +2 || H 3 j +3 || H 4 j + 4

= Ga(j)

unde j = [i/5]. Astfel un tabel al valorilor funciei este identic cu un tabel al valorilor funciei G citit de la dreapta la stnga i de sus n jos. Definim: T[i] = a(i) S[j] = a(0x1000 + j) R[k] = a(0x2000 + k) pentru 0 < i < 512 pentru 0 < j < 256 pentru 0 < k < 256.

39

Pentru a cripta un kilobyte din SEAL(k, n, L) sunt necesare 4 cuvinte din R, aadar dac cineva a dat variabilei Lmax valoarea maxim posibil pentru L, atunci va calcula R[k] pentru 0 < k < 4[Lmax/8192]. Pentru mrimea maxim permis de 64 Kilooctei vor fi necesare 207 apeluri ale funciei de compresie SHA-1. O rund a acestui cifru se refer la execuia liniilor 1 8 n timp ce o iteraie presupune execuia liniilor 1 11. Sunt deci 8 runde pentru fiecare iteraie executat. Algoritm Exemplu

Figura 3.1: Funcia de iniializare a cifrului SEAL

40

Figura 3.2: Funcia SEAL

41

Capitolul 4

Sisteme de criptare prin chei publice (asimetrice)


Spre deosebire de sistemele de criptare bazate pe chei secrete, care presupun o singur cheie cunoscut de emitor i receptor, sistemele bazate pe chei publice folosesc dou chei: una public i alta privat. Cheia public este pus la dispoziia oricrei persoane care dorete s transmit un mesaj criptat. Cheia privat este utilizat pentru decriptarea mesajului, iar nevoia de a face schimb de chei secrete este eliminat. Pentru nelegerea sistemului, sunt necesare urmtoarele lmuriri:

cheie public nu poate decripta un mesaj criptat; se recomand ca o cheie privat s nu deriveze dintr-o cheie public; un mesaj care a fost criptat printr-o anumit cheie poate fi decriptat cu alt cheie; cheia privat nu este fcut public.

Dac notm cu C un text criptat i cu P un text clar (P este notaia consacrat pentru plain text), iar Kp este cheia public i Ks cheia privat (secret), procesul este ilustrat astfel: C = Kp(P) i P = Ks(C). i invers este adevrat: C = Ks(P) i P = Kp(C). Criptografia prin chei publice este posibil n aplicaiile care funcioneaz ntr-un singur sens. O funcie n sens unic este aceea care este uor de calculat ntr-o direcie, dar este dificil de calculat n sens invers. Pentru o astfel de funcie, dac y = f(x), este simplu de determinat valoarea lui y dac se cunoate x, dar este foarte dificil s-l determini pe x cunoscndu-l pe y. ntr-o astfel de situaie se afl cutrile telefonice. Este uor s gseti numrul cuiva dac tii numele i adresa, dar este foarte dificil s gseti pe cineva ntr-o carte de telefon cunoscndu-i doar numrul de telefon. Pentru ca funciile cu sens unic s fie utile n contextul criptografiei bazate pe chei publice ele trebuie s aib o trap, adic un mecanism secret care s permit realizarea cu uurin a funciei inverse funciei n sens unic. Printr-o astfel de modalitate se poate obine x dac se d y. n contextul criptografiei bazate pe chei publice este foarte dificil s se calculeze cheia privat din cheia public dac nu se tie trapa. De-a lungul anilor s-au dezvoltat mai muli algoritmi pentru cheile publice. Unii dintre ei se folosesc pentru semntura digital, pentru criptare sau n ambele scopuri. Din cauza calculelor numeroase solicitate de criptarea prin chei publice, aceasta este de la 1.000 la 10.000 de ori mai nceat dect criptografia prin chei secrete. Astfel, au aprut

42

sistemele hibride care folosesc criptografia prin chei publice pentru transmiterea sigur a cheilor secrete utilizate n criptografia prin chei simetrice. Dintre algoritmii importani ai cheilor publice, amintim Diffie-Hellman, RSA, El Gamal Knapsak i curba eliptic, foarte utilizai fiind primii doi algoritmi.

Schema de aplicare a unui algoritm asimetric

4.1 Schimbul de chei Diffie-Hellman


Metoda schimbului de chei Diffie-Hellman, cunoscut i ca metoda de distribuie a cheilor publice, poart numele a doi specialiti de la Standford University, Whitfield Diffie i Martin Hellman. n anul 1976, ei au inventat o metod prin care dou pri pot cdea de comun acord s comunice prin mesaje secrete fr s fie nevoie de o ter parte, de un schimb off-line sau de transmiterea vreunei valori secrete ntre ele. Independent, Ralph Merkle a venit cu o soluie de distribuie a cheilor publice, numai c metoda propus implica substaniale cheltuieli pentru efectuarea calculelor i a transmisiei. Varianta realizat de Diffie i Hellman a fost numit sistemul distribuiei cheilor publice sau al schimburilor de chei publice. Metoda Diffie-Hellman se bazeaz pe conceptul perechii de chei public-privat. Protocolul ncepe cu fiecare parte care genereaz independent cte o cheie privat. n pasul urmtor, fiecare calculeaz cte o cheie public, aceasta fiind o funcie matematic a cheilor private respective. Urmeaz schimbul de chei publice. n final, fiecare dintre cele dou persoane calculeaz o funcie a propriei chei private i a cheii publice a celeilalte persoane. Matematica este cea care va face s se ajung la aceeai valoare, care este derivat din cheile lor private. Ele vor folosi valoarea ca pe cheie a mesajului. Diffie i Hellman folosesc exponenierea n aritmetica modular pentru a calcula cheile

43

publice i cheia mesajului. Aritmetica modular este ca i aritmetica standard, cu excepia faptului c folosete numere numai n intervalul 0 la N, numit modulo. Atunci cnd o operaie produce un rezultat care este mai mare sau egal cu N, N este sczut repetat din rezultat pn cnd valoarea se ncadreaz n intervalul 0 la N-1 (ca i cum s-ar mpri la N i se ia n seam restul). De exemplu, 3+4 mod 5 = 2. Dac rezultatul este negativ, N se adaug acestuia pn cnd se va ncadra n intervalul 0 la N-1. De exemplu, 3-8 mod 7 = -5 mod 7 = 2. n aritmetica modular, exponenierea este o funcie ntr-un singur sens. Aceasta nseamn c este uor de calculat un numr y = gx mod N pentru o valoare secret x, ns este mult mai dificil s se calculeze x din y, dac numerele sunt suficient de mari, ca de exemplu o lungime de cteva sute de cifre (noi presupunem c g i N sunt cunoscute). Aceasta este referit ca i problema logaritmului discret pentru c x este logaritm din y n baza g (mod N), iar numerele sunt finite i ntregi. Cu metoda Diffie-Hellman a schimbului de chei publice, Alice i Bob stabilesc cheia mesajului secret dup cum urmeaz. Alice genereaz o cheie secret xa i Bob o cheie secret xb. Dup aceasta, Alice calculeaz o cheie public ya, care este g ridicat la puterea xa modulo p, unde p este un numr prim (adic nu poate fi descompus n produsul a dou numere), g fiind mai mic dect p. Identic, Bob calculeaz o cheie public yb, prin ridicarea lui g la puterea xb modulo p. Ei vor schimba valorile publice ale acestora. Apoi, Alice ridic cheia public a lui Bob la puterea exponentului su, xa modulo p, n timp ce Bob ridic cheia public a lui Alice la exponentul su, xb modulo p. Amndoi vor obine acelai rezultat, g ridicat la puterea xa i xb, iar rezultatul obinut va fi folosit de amndoi drept cheia K a mesajului. Matematic, totul se va exprima astfel: ya = gxa mod p yb = gxb mod p K = yaxb mod p = ybxa mod p = gxa*xb mod p Dei n practic se folosesc numere foarte lungi, de cteva sute de cifre, pentru a ajuta la nelegerea modului de funcionare, vom folosi numere mici. Exemplul 1 S presupunem c p = 7, g = 3, cheia lui Alice xa = 1 i a lui Bob xb = 2 Vom avea:

Alice calculeaz cheia sa public: ya = gxa mod p = 31 mod 7 = 3 Bob calculeaz cheia sa public: yb = gxb mod p = 32 mod 7 = 2 Alice calculeaz K = ybxa mod p = 21 mod 7 = 2 Bob calculeaz K = yaxb mod p = 32 mod 7 = 2 sau

K = gxa*xb mod p = 32x1 mod 7 = 9 mod 7 = 2. Exemplul 2 S presupunem c p = 5, g = 4, cheia lui Alice xa = 3 i a lui Bob xb = 2

Alice calculeaz cheia sa public: ya = gxa mod p = 43 mod 5 = 4

44

Bob calculeaz cheia sa public: yb = gxb mod p = 42 mod 5 = 1 Alice calculeaz K = ybxa mod p = 13 mod 5 = 1 Bob calculeaz K = yaxb mod p = 42 mod 5 = 1 sau

K = gxa*xb mod p = 43x2 mod 5 = 4096 mod 5 = 1. Se observ c n ambele cazuri K ia valori identice, 2, respectiv 1. Metoda Diffie-Hellamn, precum i variantele ei sunt utilizate n cteva protocoale de securitate a reelelor i n produse comerciale, inclusiv la AT&T 3600 Telephone Security Device, la Fortezza card o variant de carduri criptate, i la Pretty Good Privacy pentru criptarea e-mail-urilor i a unor fiiere.

4.2 Sistemul RSA


RSA provine de la numele de familie ale inventatorilor si, Rivest, Shamir i Adleman. Pe vremea cnd Diffie i Hellman au inventat metoda distribuiei prin chei publice, acetia au gndit i la un alt concept mult mai performant, dar n-au gsit soluia implementrii lui criptografia prin chei publice. Prin aceasta, fiecare persoan are o pereche de chei public i privat, unic, pe termen lung. Componenta public, transmisibil prin Internet i partajat cu toat lumea, este folosit pentru criptarea datelor, n timp ce componenta privat, greu de calculat pe baza cheii publice, este folosit pentru decriptare. Criptografia prin chei publice este numit i criptografie prin dou chei i criptografie asimetric. Metodele convenionale, descrise anterior, care apeleaz la o singur cheie, sunt referite ca i criptografie printr-o singur cheie, criptografie prin cheie privat, criptografie prin cheie secret, criptografie simetric i criptografie convenional. La scurt timp dup ce Diffie i Hellman au lansat ideea revoluionar a criptografierii prin chei publice, trei profesori de la MIT (Massachusetts Institute of Technology), Ronald Rivest, Adi Shamir i Leonard Adleman, au venit cu soluia implementrii ei. Varianta propus se numea RSA. Concomitent, Hellman i Merkle au inventat o alt metod, numit trapdoor knapsacks, bazat pe alt model matematic. Oricum, modelul lor a fost spart la nceputul anilor 1980. Pentru a transmite un mesaj cu text clar ctre Bob, folosind sistemul cheilor publice, gen RSA, Alice genereaz cheia K a mesajului i o folosete prin intermediul criptosistemului convenional, cum ar fi DES, pentru criptarea mesajului. Utiliznd criptografia prin chei publice, ea, de asemenea, cripteaz K, sub cheia public a lui B, denumit KBobpub. Apoi, ea transmite att cheia criptat, ct i mesajul criptat ctre Bob. Bob, la rndul su, apeleaz la propria lui cheie privat, denumit KBobpriv, pentru a decripta cheia K a mesajului, apoi el folosete cheia K pentru decriptarea mesajului. Modelul este redat sub form grafic n figura 4.1.

45

Teoretic, Alice poate s transmit textul ctre Bob folosind doar criptarea prin cheia public a lui Bob, apelnd doar la criptografia prin cheie public. n practic, ns, nu se ntmpl aa datorit ncetinirii procesului de transmitere prin mulimea calculelor de efectuat. E mult mai rapid s foloseti o metod convenional de mare vitez pentru criptarea mesajului, rezervnd metoda cheii publice doar pentru distribuia cheii. n plus, nu se consider o practic prea inspirat s foloseti aceeai cheie pentru criptarea mesajelor de-a lungul unei mari perioade de timp, din cauza sporirii anselor de a fi atacat. Perechea de chei public i privat este uneori numit cheia cheii de criptare, pentru a o deosebi de cheia mesajului (cheia datelor criptate).

Fig. 4.1 Alice transmite un mesaj lui Bob folosind o combinaie de cheie singular i criptografiere prin cheie public Ca i Diffie-Hellman, sistemul RSA calculeaz exponenierile n aritmetica modular folosind numere cu lungimea de cteva sute de cifre. n RSA, totui, fiecare persoan are un modulo N personal, care este produsul a dou numere prime secrete. Cheia K a mesajului este criptat prin ridicarea ei la puterea exponentului public a lui Bob (eb), modulo Nb, iar decriptarea se efectueaz prin ridicarea ei la puterea exponentului privat al lui Bob (db), modulo Nb. presupunnd c C va prelua valoarea cheii textului criptat, aceasta se va exprima matematic astfel: C = Keb mod Nb (criptarea lui K) K = Cdb mod Nb (decriptarea) Pentru ca exponentul folosit la decriptare (db) s poat reface exponenierea cu eb la criptare, formula eb * db = 1 mod (pb-1)(qb-1) trebuie s fie realizat; n care Nb = pb * qb pentru numerele prime pb i qb. n aceste condiii, oricine tie eb, pb i qb poate s foloseasc formula pentru a deduce db. Din acest motiv, pb i qb nu se divulg, chiar dac eb i Nb sunt fcut publice. Calcularea factorilor primi ai lui Nb se consider a fi, din punct de vedere matematic, nerezolvabil pentru

46

numere foarte mari. Vom folosi valori mici ale numerelor din exemplul urmtor pentru a uura nelegerea mecanismului. S presupunem c Bob a ales numerele prime secrete pb = 5 i qb = 3, de unde rezult c Nb = pb * qb = 5 * 3 = 15. Apoi alege exponentul secret db = 29 i l calculeaz pe eb dup formula eb * db = 1 mod (pb-1)(qb-1), ceea ce va conduce la eb * 29 = 1 mod (4 * 2), 29 * eb = 1 mod 8. Prin ncercri succesive rezult eb = 5. Dac Alice dorete s transmit cheia K = 2 ctre Bob, ea o va cripta cu exponenierea din cheia public a lui Bob, efectund calculele: C = Keb mod Nb = 25 mod 15 = 32 mod 15 = 2 Cnd Bob obine cheia criptat o va decripta folosindu-i cheia secret drept exponent, prin calculul: K = Cdb mod Nb = 229 mod 15 = 2 (Se aplic mod (2 ** 29, 15)). Se observ c s-a obinut valoarea K = 2 a cheii transmis de Alice.

4.3 Semntura digital


Inventarea criptografiei prin chei publice a adus dou importante mutaii valoroase. Prima, discutat anterior, permite transmiterea unui secret ctre o alt persoan fr s fie nevoie de o a treia persoan de ncredere sau de un canal de comunicaie off-line pentru a transmite cheia secret. A doua mutaie s-a produs pe planul calculrii semnturii digitale. O semntur digital este un bloc de date (alctuit din cifre binare, ceea ce n englez nseamn binary digit, de unde i digital exprimat printr-un ir de cifre) ce se ataeaz unui mesaj sau document pentru a ntri ncrederea unei alte persoane sau entiti, legndu-le de un anumit emitor. Legtura este astfel realizat nct semntura digital poate fi verificat de receptor sau de o ter persoan i nu se poate spune c a fost uitat. Dac doar o cifr binar nu corespunde, semntura va fi respins n procesul de validare. Semntura digital stabilete autenticitatea sursei mesajului. Dac o persoan nu-i d n vileag cheia personal privat nimeni nu poate s-i imite semntura. O semntur digital nu nseamn i recunoaterea dreptului de proprietate asupra textului transmis, ci ea atest faptul c persoana semnatar a avut acces la el i l-a semnat. Documentul poate fi i sustras de undeva. Totui, atunci cnd semnarea este cuplat cu crearea documentului, semntura poate oferi o prob evident a originii documentului. n aceast categorie intr fotografiile luate cu camere digitale bazate pe chei private. n acest caz, proba este de necontestat. Aa se procedeaz cnd se intenioneaz realizarea proteciei mpotriva manipulrii imaginilor cu ajutorul calculatorului. La fel pot fi camerele video, radio-receptoarele i ali senzori care pot semna ieirea pentru a-i certifica originea.

47

Dei semntura digital este implementat prin sistemul criptografiei cu chei publice, transformrile ce au loc sunt diferite de cele de la criptare. n timp ce la criptare fiecare parte are o pereche de chei public-privat, n cazul semnturii digitale, componenta privat este ntrebuinat pentru semnarea mesajelor, iar cea public este folosit de o alt parte pentru a verifica semntura. Modul de funcionare este redat n figura 4.2. Dup prezentarea suplimentar a algoritmilor semnturii digitale s parcurgem paii dialogului purtat de Alice cu Bob. Alice intenioneaz s semneze un mesaj. Ea va ncepe prin calcularea unei valori rezumat a mesajului, care este determinat printr-o funcie public de dispersie (hashing). n acest moment nu se folosesc chei. n pasul urmtor, ea va utiliza o cheie privat pentru semntur KSAlicepriv, pentru a calcula o transformare criptografic a valorii rezumat a mesajului. Rezultatul, care este semntura sa pe mesaj, se ataeaz mesajului. Din acest moment, mesajul semnat poate fi transmis altei persoane, inclusiv Bob, sau poate fi stocat ntr-un fiier.

Fig. 4.2 Alice transmite ctre Bob un mesaj semnat i criptat. Mesajul este criptat printr-o singur cheie de criptare, iar cheia prin criptarea cu cheie public. Mesajul este semnat cu sistemul semnturii digitale prin cheie public S presupunem c Bob va recepiona mesajul ei. El poate s valideze semntura lui Alice fcnd apel la cheia ei public pentru semntur, KSAlicepub, ce va fi folosit ca intrare ntr-o funcie criptografic prin care se va testa dac valoarea rezumat determinat de el este aceeai cu valoarea codificat prin semntura lui Alice. Dac da, va accepta semntura. Se observ c

48

nici o cheie de-a lui Bob nu este folosit n procesul de validare a semnturii transmise de Alice, ci doar cheile ei. n schimb, cnd Alice transmite cheia unui mesaj secret ctre Bob, ea va folosi doar cheile lui Bob. Dac Alice dorete s transmit un mesaj ctre Bob, mesaj care s fie semnat i criptat, procesul presupune utilizarea cheilor pentru semntur ale lui Alice (KSAlicepriv, KSAlicepub), cheilor lui Bob de criptare a cheii (KBobpub) i o cheie a mesajului, K. n sintez, iat paii:

Alice genereaz o cheie aleatoare a mesajului, K. Alice cripteaz mesajul M cu cheia K, obinnd mesajul criptat, MC; Alice cripteaz cheia K folosind cheia public a lui Bob de criptare a cheii, KBobpub, rezultnd cheia criptat, KC; Alice proceseaz o semntur S folosind cheia sa privat pentru semntur, KSAlicepriv; Alice transmite ctre Bob KC, MC i S; Bob folosete cheia sa privat de criptare a cheii, KBobpriv, pentru a decripta KC i a obine K; Bob folosete K pentru decriptarea MC i obinerea textului-clar, M; Bob folosete cheia public pentru semntur a lui Alice, KSAlicepub, pentru validarea semnturii S.

Tot acest proces este folosit de sistemul de criptare e-mail-uri, aa c Alice i Bob nu vor efectua operaiunile enunate, ci le face calculatorul. Pentru a dispune de aceste servicii este necesar contactarea unor firme specializate. Microsoft recomand Verisign, cu site-ul www.verisign.com, dei sunt mai multe oferte. Oricum e necesar obinerea unui ID digital. La click-ul pe Sign apare semnul sigiliului special pentru semntur, iar la comanda Send, vi se ofer un meniu prin care putei ncepe dialogul pentru obinerea ID-ului digital pentru semntur, prin click pe butonul Get Digital ID. Pentru a studia cadrul legal al utilizrii semnturii electronice n Romnia, putei obine informaiile dorite de pe site-ul www.legi.internet.ro/lgsemel.htm.

4.4 Sisteme de certificare a cheilor publice


Un sistem criptografic bazat pe chei publice poate fi compromis de o persoan (A) care transmite o cheie public altei persoane (B) ctre un alt partener (C). n acest caz (C) va folosi cheia public a lui (B) pentru a cripta mesajul, cu intenia de a ajunge napoi la (B), numai c (A), folosindu-i propria cheie privat, va face ca receptorul s fie el, reuind astfel s decripteze mesajul care era adresat lui (B). Pentru a se evita o astfel de ciudenie, se recurge la procesul certificrii, prin care

49

persoanele sunt legate de cheile lor publice. Documentul oferit de o Autoritate de Certificare acioneaz ca orice alt act emis de un notar i se efectueaz dup aceleai reguli, adic pe baza verificrii identitii persoanei solicitante, concretizndu-se prin atribuirea unei chei publice pentru persoana respectiv. Unitatea de certificare semneaz certificatul cu propria cheie privat. Din aceast cauz, persoana este verificat ca emitor dac este necesar cheia ei public pentru deschiderea sesiunii de transmitere a mesajelor criptate i/sau semnturilor electronice. Certificatul conine numele subiectului, cheia lui public, numele autoritii de certificare, perioada de valabilitate a certificatului. Pentru a verifica semntura autoritii de certificare, cheia ei public trebuie s fie verificat ncruciat cu o alt autoritate de certificare. n SUA formatul certificatelor este reglementat prin standardul X.509. Certificatele sunt pstrate ntr-un Registru (Repository), alturi de lista certificatelor revocate. n principiu, operaiunile pentru obinerea certificatelor digitale i validarea tranzaciilor sunt redate n figura 4.3.

Fig. 4.3 Prezentarea unei tranzacii cu certificate digitale

4.5 Infrastructura cheilor publice (PKI)


Infrastructura cheilor publice (PKI Public Key Infrastructure) i propune s rezolve probleme manageriale din domeniul cheilor publice, integrnd semnturi i certificate digitale cu o mare diversitate de alte servicii specifice comerului electronic, prin care se solicit oferirea integritii, controlului accesului, confidenialitii, autentificrii i a nerepudierii tranzaciilor electronice. Infrastructura cheilor publice cuprinde certificatele digitale, autoritile de certificare, autoritile de nregistrare, politici i proceduri cu chei publice, revocarea certificatelor, nerepudierea, marcarea timpului, certificarea ncruciat, aplicaii de securitate, LDAP (Lightweight Directory Acces Protocol). LDAP ofer un format standard de accesare a directoarelor certificatelor. Aceste directoare sunt stocate pe serverele LDAP dintr-o reea, serverele de pe aceste reele oferind chei publice

50

i certificate X.509 pentru companii. n SUA, majoritatea certificatelor sunt emise de Verisign, Inc., recomandat i de Microsoft. Compania ofer trei clase de certificate personale, numite digital IDs, toate legate de e-mail:

clasa 1 de certificate verific adresa e-mail a utilizatorului, fr s solicite alte elemente de autentificare. Dup exprimarea interesului pentru un certificat, sistemul trimite o confirmare cu un PIN pe adresa de e-mail a persoanei. Utilizatorul se ntoarce la site-ul anterior (al companiei) i ofer PIN-ul, dup care este generat un ID digital i se memoreaz n calculatorul utilizatorului.

clasa 2 de certificate cere utilizatorului s mai introduc i Social Security Number (codul oferit de Internal Revenue Service), adresa i seria carnetului de ofer; clasa 3 de certificate digitale este destinat companiilor ce public software, oferindule un grad mult mai mare de securitate, dar exist i o variant pentru persoane fizice ocupate cu transferuri bancare, contracte .a. Este o clas mult mai sigur.

Oricum, realizarea unei infrastructuri a cheilor publice la nivel internaional, dar i naional, este o mare problem, nu din punct de vedere tehnic sau managerial, ci al legislaiei.

4.6 Algoritmi
4.6.1 Algoritmul DES
Algoritmul DES (Data Encryption Standard) a fost dezvoltat pentru guvernul Statelor Unite i pentru folosin public. El a fost dezvoltat plecnd de la algoritmul Lucifer conceput n Laboratoarele IBM. n mai 1973, revista Federal Register a sintetizat principiile care trebuie s stea la baza proiectrii unui algoritm criptografic standard: algoritmul trebuie s asigure un nalt nivel de securitate; algoritmul trebuie s fie complet specificat i simplu de neles; securitatea algoritmului trebuie s fie asigurat de cheie i nu trebuie s depind de pstrarea secret a algoritmului; algoritmul trebuie s fie disponibil tuturor utilizatorilor; algoritmul trebuie s fie adaptabil pentru diverse aplicaii; algoritmul trebuie s fie implementabil pe dispozitivele electronice; algoritmul trebuie s fie eficient n utilizare; algoritmul trebuie s poat fi validat; algoritmul trebuie s fie exportabil.

DES a fost oficial adoptat ca standard federal n 23 noiembrie 1976, iar n 1977 specificaiile sale au fost fcute publice. Privire general asupra algoritmului

51

Algoritmul DES este o combinaie complex folosind dou blocuri fundamentale n criptografie: substituia i permutarea (transpoziia). Acest cifru bloc accept un bloc de 64 de bii la intrare i genereaz un bloc cifrat de 64 de bii. DES este un algoritm simetric. Acelai algoritm i aceeai cheie sunt folosii att la criptare ct i la decriptare. Algoritmul este constituit din 16 cicluri repetate ale blocurilor fundamentale. Textul iniial este descompus n blocuri de 64 de bii. Cheia este de 64 bii din care doar 56 sunt efectivi, ceilali fiind bii de paritate. Folosirea substituiei provoac confuzie prin sistematica substituire a unor bii cu alii. Transpoziiile provoac difuzie prin re-ordonarea biilor. Algoritmul folosete numai operaii clasice aritmetice i logice cu numr de pn la 64 de bii, ceea ce face relativ uor de implementat att software ct mai ales hardware: unul din scopurile declarate ale algoritmului fiind uoara lui implementare hardware ntr-un cip specializat. Parcurgerea celor 16 cicluri are loc dup schema din figura 4.6.1. La intrarea datele sunt mprite n blocuri de 64 bii, care sunt transformate folosind cheia de 64 de bii. Cei 64 de bii sunt permutai prin permutarea iniial. n continuare, urmeaz operaiile ce constituie un ciclu. Blocul de 64 de bii este separat n dou, jumtatea stng i jumtatea dreapt, fiecare de 32 de bii. Cheia este deplasat la stnga cu un numr de bii i permutat: ea se combin cu partea dreapt care apoi se combin cu partea stng; rezultatul devine noua parte dreapt; vechea parte dreapt devine noua parte stng (vezi fig. 4.6.2). Dup repetarea acestui ciclu de 16 ori se face permutarea final care este invers permutrii iniiale. Pentru combinarea unei secvene de 32 bii cu cheia de 64 bii se folosesc expandri de la 32 bii la 48 bii i reducerea cheii de la 64 bii la 48 bii prin alegerea anumitor bii, operaii ce le numim permutare expandat i permutare aleas (fig. 4.6.3). n fiecare ciclu practic au loc patru operaii separate. nti partea dreapt este expandat de la 32 la 48 bii; apoi este combinat cu o form a cheii; rezultatul este substituit i condensat n 32 bii, cei 32 bii sunt permutai i apoi combinai cu partea stng pentru a da o nou parte dreapt (fig. 4.6.4).

52

Intrare permutare iniial

Substituie Permutare

Cheia

Ciclul 1

Substituie Permutare

Cheia

Substituie Ciclul 16 Permutare

Cheia

Imaginea inversat a permutrii iniiale Ieire

Fig. 4.6.1 Detalii pentru folosirea algoritmului DES

53

Date permutate

Jumtatea stng S

Jumtatea dreapt

Cheie deplasat

Cheie permutat

Noua jumtatea stng (vechea jumtate dreapt)

Noua jumtatea dreapt

Fig. 4.6.2 Manipularea cheii n algoritmul DES

Permutare

Permutare aleas

Permutare expandat

Fig. 4.6.3 Manipularea permutrii n algoritmul DES

Cheia este mprit cu dou pri de 28 bii deplasate la stnga cu un numr de bii apoi reunite i 48 din cei 56 de bii sunt permutai i folosii ca o cheie de 48 de bii de-a lungul ciclului. Cheia dintr-un ciclu este combinat printr-o funcie sau exclusiv cu partea dreapt expandat. Rezultatul este operat n 8 cutii-S care efectueaz substituia. O cutie-S este o tabel n care 6 bii de date sunt nlocuii de 4 bii. Permutrile sunt efectuate de tabele numite cutii-P.

54

D 32 bii

S 32 bii Permutare expandat

Cheia 28 bii
Deplasare

28 bii
Deplasare

permutare aleasa de 58 bii 48 bii

4.6.4 Ciclul n algoritmul DES Permutarea expandat este definit n tabelul ce urmeaz: Bit se mut la Bit se mut la Bit se mut la Bit se mut la 1 2,48 9 12,14 17 24,26 2 3 10 15 18 27 3 4 11 16 19 28 4 5,7 12 17,19 20 29,31 5 6,8 13 18,20 21 30,32 6 9 14 21 22 33 7 10 15 22 23 34 8 11,13 16 23,25 24 35,37

25 36,38

26 39

27 40

28 41,43

29 42,44

30 45

31 46

32 47,1

Tabelul 4.6.1 Definirea permutrii expandate n DES Consideraii asupra algoritmului DES Cu algoritmul DES se poate face att codificarea ct i decodificarea unui mesaj. Rezultatul este adevrat pentru c ciclul j deriv din ciclul (j-1) astfel: S j = Dj 1 D j = S j 1 (+) f ( D j 1 ,k j ) (1) (2)

unde (+) este operaia sau exclusiv, f este funcia rezultat din operaiile dintr-un ciclu. Aceste ecuaii arat c rezultatul fiecrui ciclu depinde numai de ciclul precedent. Descriind ecuaiile pentru D j-1 i S j-1 avem :

55

Dj 1 = S j i S j 1 = D j (+) f ( D j 1 ,k j ) S j 1 = D j (+) f ( S j ,k j )

(3) (4)

nlocuind (3) n (4) avem: (5)

Ecuaiile (3) i (5) arat c aceleai valori pot fi obinute n cicluri ulterioare. Aceast proprietate face algoritmul DES reversibil. Deci putem face codificarea unor date i decodificarea lor folosind acelai algoritm fcnd observaia c la decodificare cheia se ia n ordine invers. Datorit lungimii cheii de lucru i a operaiilor elementare pe care le folosete algoritmul, nu se ridic probleme deosebite ntr-o implementare software; singura observaie este c, datorit modulului de lucru (cu secvene de date, cu tabele) practic algoritmul este lent ntr-o implementare software. Modul de concepere l face ns perfect implementabil hard (ntr-un cip) ceea ce s-a i realizat, existnd multiple variante de maini hard de codificare. Criptanaliza Dei DES a fost cel mai celebru algoritm al secolului XX este considerat la aceast or nesigur pentru multe aplicaii. Pare paradoxal, dar aceasta este consecina mririi considerabile a puterii de calcul de la confirmarea DES ului ca un standard criptografic i pn in anul 2000. Slbiciunea pleac de la lungimea prea mic a cheii de 56 de bii. Varianta algoritmului cunoscut ca triplu-DES este cea care este considerat sigur i la aceast or. Insecuritatea DES-ului pleac de la premiza c un atac n for are anse de reuit n condiiile puterii de calcul disponibile astzi ( a se vedea atacurile EFF1 ); pn n 2004 cel mai eficient atac este datorat criptanalizei liniare care folosind 243 texte cunoscute genereaz o complexitate temporal de 239-43 (Junod 2001); n condiiile unui atac cu text ales complexitatea poate fi redus de patru ori (Knudsen i Mathiassen, 2000).

Electronic Frontier Foundation

56

O istorie cronologic a DES ului este prezentat n urmtorul tabel: Data 15 mai 27 august 17 martie august septembrie noiembrie 15 ianuarie Anul Evenimentul

1973 NBS public prima cerere pentru un algoritm standard pentru criptare 1974 NBS public a doua cerere pentru un algoritm standard pentru criptare 1975 DES este publicat n Federal Register2 pentru comentarii 1976 Se organizeaz primul workshop despre DES 1976 Al doilea workshop despre fundamentele matematice ale DES-ului 1976 DES este aprobat ca un standard 1977 DES este publicat n FIPS PUB 46 1983 DES este reconfirmat pentru prima dat

22 ianuarie

1988 DES este reconfirmat pentru a doua oar ca FIPS 46-1 Biham i Shamir public primul atac teoretic cu o complexitate mai mic dect atacul 1992 n for brut : criptanaliza diferenial ; metoda cerea un numr nerealist (247) de texte alese

30 decembrie 1993 DES este reconfirmat pentru a treia oar ca FIPS 46-2 1994 iunie iulie ianuarie 1997 1998 1999 Prima criptanaliz experimental folosind criptanaliza liniar (Matsui, 1994) Proiectul DESCHALL sparge pentru prima dat n public un mesaj criptat cu DES EFF gsete o cheie pentru DES n 56 de ore EFF folosind putere de calcul distribuit gsete o cheie pentru DES n 22 de ore i 15 minute DES este reconfirmat pentru a patra oar ca FIPS 46-3 cu specificaia preferinei pentru Triplu DES

25 octombrie 1999

26 noiembrie 2001 AES este publicat n FIPS 197 26 mai 26 iulie 2002 Standardul AES devine efectiv 2004 Retragerea standardului FIPS 46-3 (i a celor conexe) este propus n Federal Register

Tabelul 4.6.2 Cronologia evenimentelor algoritmului DES

Publicaie a NIST (National Institute of Standards and Technology)

57

4.6.2 Variante de DES


DES multiplu Unele implementri de DES folosesc triplul-DES. Deoarece DES nu este un grup, textul cifrat rezultat este mult mai greu de spart folosind cutarea exhaustiv: 2112 ncercri n loc de 256 ncercri. DES cu sub-chei independente O alt variant const n folosirea unei sub-chei diferite pentru fiecare trecere, n loc de a o genera dintr-o singur cheie de 56 de bii. Deoarece n fiecare din cele 16 treceri se folosete o cheie de 48 de bii, rezult c lungimea cheii pentru aceast variant este de 768 bii, ceea ce va crete semnificativ dificultatea unui atac n for mpotriva algoritmului, acesta avnd complexitatea de 2768. Totui, un atac de tip ntlnire la mijloc este posibil, ceea ce reduce complexitatea atacului la 2384; nc destul de lung pentru orice nevoie imaginabil de securitate. Aceast variant poate fi analizat folosind criptanaliza diferenial i poate fi spart cu 261 texte n clar date. Se pare c nici o modificare n planificarea cheilor nu conduce la ntrirea semnificativ a algoritmului DES. DESX DESX este o variant DES dezvoltat de RSA Data Security, care a fost inclus nc din 1968 n programul de securitate pentru pot electronic MailSafe. DESX folosete o tehnic numit albire, pentru a ascunde intrrile i ieirile DES. n plus fa de cheia DES de 56 de bii, DESX are o cheie suplimentar de albire de 64 de bii. Aceti 64 de bii sunt operai XOR cu textul n clar nainte de prima trecere DES. 64 de bii suplimentari, calculai ca o funcie bijectiv de toi cei 120 de bii ai cheii DES, sunt operai XOR cu textul cifrat naintea ultimei treceri. Albirea l face pe DESX mult mai puternic dect DES fa de un atac n for; atacul necesit (2120)/n operaii cu n texte n clar cunoscute. De asemenea se mbuntete securitatea mpotriva criptanalizei liniare i difereniale; atacul necesit 261 texte n clar date i 260 de texte n clar cunoscute. CRYPT(3) CRYPT(3) este o variant de DES ntlnit n sistemele UNIX. Este folosit n mod obinuit pentru parole, dar uneori i pentru criptare. Diferena ntre CRYPT(3) i DES este c CRYPT(3) are o permutare de chei cu 212 posibiliti, astfel nct s nu permit folosirea cipurilor DES la construcia unui dispozitiv hardware de spart parole.

58

DES generalizat DES-ul generalizat (GDES) a fost proiectat s mreasc viteza DES-ului i s ntreasc algoritmul. Mrimea total a blocului crete, n timp ce suma calculelor rmne constant. GDES opereaz pe blocuri de text n clar de lungime variabil. Blocurile criptate sunt mprite n q sub-blocuri; numrul exact depinde de mrimea total a blocului. n general q este egal cu lungimea blocului mprit la 32. Funcia f este calculat o dat la fiecare trecere, pe ultimul bloc din dreapta. Rezultatul este operat XOR cu toate celelalte pri, care sunt apoi rotite spre dreapta. GDES are un numr variabil de treceri, n. Exista o mic modificare la ultima trecere, astfel nct procesele de criptare i decriptare difer doar prin ordinea sub-cheilor. De fapt, pentru q=2 i n=16 se obine algoritmul DES. Biham i Shamir arat c, folosind criptanaliza diferenial, GDES cu q=8 i n=16 este vulnerabil cu doar ase texte n clar date. Dac se folosesc i sub-chei independente, sunt necesare 16 texte n clar date. Pentru q=8 i n=64, GDES e mai slab dect DES; sunt necesare 249 texte n clar date pentru a-l sparge. De fapt, orice schem GDES este mai rapid dect DES, dar este de asemenea mai puin sigur. RDES RDES este o variant care nlocuiete schimbarea stnga-dreapta de la sfritul fiecrei treceri cu o schimbare dependent de cheie. Schimbrile sunt fixe, depinznd doar de cheie. Aceasta nseamn c cele 15 schimbri dependente de cheie se petrec cu 2 15 posibiliti i c aceast variant nu rezist la criptanaliza diferenial. O idee mai bun este ca schimbarea s aib loc doar n partea dreapt, la nceputul fiecrei treceri, iar schimbarea s depind de datele de intrare i nu de cheie. n RDES-1 se practic o schimbare dependent de date de cuvinte pe 16 bii la nceputul fiecrei treceri. n RDES-2 exist o schimbare de octei dependent de date la nceputul fiecrei treceri, dup o schimbare ca n RDES-1. Se poate continua n acelai mod pn la RDES-4. RDES-1 este sigur att fa de criptanaliza liniar ct i fa de cea diferenial.

4.6.3 Algoritmul AES


n ianuarie 1997, NIST3 a organizat un concurs de criptografie deschis cercettorilor din ntreaga lume, avnd ca subiect crearea unui nou standard, care urma s se numeasc AES4. Regulile concursului erau: - algoritmul s fie un cifru bloc simetric;
3 4

National Institute of Standards and Technology SUA Advanced Encryption Standard Standard de Criptare Avansat

59

- proiectul trebuia s fie public; - AES trebuia s suporte chei de 128, 192 i 256 bii; - algoritmul trebuia s se poat implementa att hardware ct i software; - AES trebuia s fie un standard public sau oferit cu licen ne discriminatorie. n august 1998 NIST a selectat cinci finaliti pe criterii de securitate, eficien, flexibilitate i cerine de memorie. Finalitii au fost: 1. 2. 3. 4. 5. Rijndael (Joan Daemen i Vincent Rijmen, 86 de voturi) Serpent (Ross Anderson, Eli Biham, Lars Knudsen, 56 voturi) Twofish (echipa condus de Bruce Schneier, 31 voturi) RC6 (RSA Laboratories, 23 voturi) MARS (IBM, 13 voturi) n octombrie 2000 NIST a stabilit ctigtorul. Acesta este algoritmul Rijndael, dezvoltat de doi tineri cercettori belgieni, Joan Daemen i Vincent Rijmen i care devine standard guvernamental al SUA. Se sper ca Rjindael s devin standardul criptografic dominant n lume pentru urmtorii 10 ani. Rijndael permite lungimi de chei i mrimi de blocuri de la 128 de bii la 256 de bii, n pai de cte 32 de bii. Lungimea cheii i lungimea blocului pot fi alese n mod independent, dar n practic se vor folosi dou variante: bloc de 128 bii cu cheie de 128 bii i bloc de 128 bii cu cheie de 256 bii. Standardul comercial va deveni cel mai probabil varianta 128/128. O cheie de 128 bii permite un spaiu al cheilor de 2128 chei. Preliminarii matematice Rijndael se bazeaz pe teoria cmpului Galois, n sensul c anumite operaiuni sunt definite la nivel de octet iar octeii reprezint elemente n cmpul finit GF(28). Cum toate reprezentrile cmpului finit GF(28) sunt izomorfe, se poate alege reprezentarea clasic polinomial, cu impact pozitiv asupra complexitii implementrii. Octetul b, format din biii b7, b6, b5, b4, b3, b2, b1 i b0, este considerat ca fiind un polinom de gradul 7 cu coeficieni 0 sau 1: b7 x7 + b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1 x + b0 Operaiunea de adunare este definit ca suma a dou polinoame n care coeficienii se adun modulo 2 i care corespunde operrii XOR a celor doi octei corespondeni. Sunt ndeplinite axiomele grupului abelian: operaia este intern, asociativ, comutativ, exist element neutru i element invers

60

Operaiunea de nmulire corespunde produsului a dou polinoame modulo, un polinom ireductibil de grad 8 i care pentru AES este m(x) = x8 + x4 + x3 + x + 1 nmulirea este intern (rezultatul este un polinom de grad strict mai mic ca 8), asociativ i exist element neutru. Elementul invers se determin cu algoritmul lui Euclid, iar distributivitatea celor doua operaii se verific. Concluzia este c mulimea celor 256 de valori posibile ale unui octet, mpreun cu cele dou operaiuni definite mai sus formeaz un corp algebric finit, respectiv GF(28). Proiectarea AES n proiectarea AES s-a inut cont de trei criterii: - rezistena mpotriva tuturor atacurilor cunoscute; - viteza i compactitatea codului pe un mare numr de platforme; - simplicitatea proiectrii. Ca i DES, AES folosete substituie i permutri, ca i runde multiple. Numrul de runde depinde de mrimea cheii i de mrimea blocului, fiind 10 n cazul 128/128 i mrindu-se pn la 14 pentru cazul 256/128. Spre deosebire de DES, toate operaiile sunt la nivel de octet, pentru a permite implementri eficient hardware i software. Descrierea AES n algoritmul AES rezultatul cifrat intermediar este numit vector state, care poate fi reprezentat ca un tabel cu patru linii i patru coloane, acestea fiind numerotate ncepnd de la 0. Vectorul state se iniializeaz cu blocul de 128 bii de text n clar (n ordinea coloanelor, cu primii patru octei n coloana 0) i va fi modificat la fiecare pas al calculului, prin substituii, permutri i alte transformri, rezultnd n final blocul de 128 bii de text cifrat. Cheia de 128 de bii este expandat n 11 tabele 4x4 notate rk(0), rk(1),...., rk(10). Expandarea este realizat prin rotiri repetate i operaii XOR asupra unor grupuri de bii din cheia original. nainte de a ncepe cele 10 runde, cheia rk(0) se opereaz XOR cu vectorul state. Calculul principal const n execuia a 10 runde, folosind cheia rk(i) la iteraia i. Fiecare rund const n patru pai. Pasul 1 realizeaz o substituie octet cu octet asupra vectorului state folosind o cutie S. Pasul 2 rotete la stnga fiecare din cele 4 rnduri ale vectorului state: rndul 0 este rotit

61

cu 0 octei, rndul 1 este rotit cu 1 octet, rndul 2 este rotit cu 2 octei i rndul 3 este rotit cu 3 octei, realiznd difuzia datelor. Pasul 3 amestec fiecare coloan din vectorul state independent de celelalte, prin nmulirea coloanei cu o matrice constant, multiplicarea fiind realizat folosind cmpul finit Galois GF(28). n fine, pasul 4 opereaz XOR cheia rk din runda respectiv cu vectorul state. Deoarece fiecare pas este reversibil, decriptarea se poate realiza prin rularea algoritmului de la coad la cap, sau prin rularea algoritmului de criptare nemodificat, dar folosind tabele diferite. Avantaje AES Avantajele AES relativ la implementare sunt: AES se poate implementa pe un procesor Pentium Pro i va rula cu o vitez mai mare dect orice alt cifru bloc; AES se poate implementa pe un dispozitiv Smart Card, folosind un spaiu redus de memorie RAM i un numr redus de cicluri; transformarea din cadrul unei runde este paralel prin proiectare, ceea ce constituie un avantaj pentru viitoarele procesoare; AES nu folosete operaiuni aritmetice, ci doar operaii la nivel de iruri de bii.

Simplitatea proiectrii AES:


-

AES nu folosete componente criptografice externe, cum ar fi cutii S, bii aleatori sau iruri de cifre din dezvoltarea numrului ;

AES nu i bazeaz securitatea pe interaciuni obscure sau greu de neles ntre operaiuni aritmetice; proiectarea clar a AES nu permite ascunderea unei trape.

Lungimea variabil a blocului lungimile de bloc de 192 i 256 bii permit construirea unei funcii hash iterative folosind AES ca funcie de compresie. Extensii: proiectarea permite specificarea de variante cu lungimi de blocuri i lungimi de chei aflate ntre 128 i 256 bii, n pai de cte 32 de bii;

62

dei numrul de runde n AES este fixat n specificaiile algoritmului, el poate modificat ca un parametru n cazul unor probleme de securitate.

Limitrile AES Limitrile AES sunt n legtur cu algoritmul de decriptare: - algoritmul de decriptare este mai puin pretabil la implementarea pe un dispozitiv Smart Card, deoarece necesit mai mult cod i mai multe cicluri; - implementarea software a AES folosete cod i/sau tabele diferite pentru algoritmul de criptare, respectiv decriptare; - implementarea hardware a AES a algoritmului de decriptare refolosete doar parial circuitele care implementeaz algoritmul de criptare.

4.6.4 Algoritmul LUCIFER


n 1960, IBM iniiaz un program de cercetare n criptografia computerizat numit Lucifer. Astfel se numete i algoritmul cifru bloc dezvoltat n cadrul acestui program n 1970. n realitate exist cel puin doi algoritmi cu acest nume. Lucifer este o reea de permutri i substituii, cu blocuri construite ntr-o manier asemntoare cu DES. n DES, ieirea funciei f este operat XOR cu intrarea fazei anterioare pentru a forma intrarea fazei curente. n cazul lui Lucifer, cutiile-S au intrri i ieiri de 4 bii; intrarea este o permutare a biilor ieirii din faza anterioar, iar intrarea din prima faz este chiar textul n clar. Un bit cheie este folosit pentru a alege ntre cutia-S actual din dou posibile Lucifer implementeaz aceasta printr-o cutie-T cu 9 bii la intrare i 8 la ieire). Lucifer are 16 faze, blocuri de 128 de bii i o manipulare a cheii mai simpl dect DES-ul. Folosind criptografia diferenial mpotriva primei forme de Lucifer, Biham i Shamir au artat c Lucifer cu 8 faze i 32 de bii poate fi spart cu 40 de texte n clar alese i 229 pai; acelai atac poate sparge Lucifer cu 8 faze i 128 bii cu 60 de texte n clar alese i 2 53 pai. Aceste atacuri folosesc cutii-S DES tari. Folosind criptografia diferenial mpotriva celei de a doua forme de Lucifer, s-a artat c cutiile-S sunt mai slabe dect n DES. Analize ulterioare au artat c peste jumtate din chei nu sunt sigure, ceea ce conduce la posibilitatea de a sparge Lucifer cu 128 de bii, cu orice numr de faze, cu 233 texte n clar alese, sau cu 265 texte n clar cunoscute cu chei alese. n concluzie, a doua form de Lucifer este mai slab. Sentimentul c Lucifer este mai sigur dect DES datorit lungimii mai mari a cheii i lipsei de rezultate publicate este nejustificat.

63

4.6.5 Algoritmul Blowfish


Blowfish este un algoritm proiectat pentru a fi implementat pe procesoare puternice, care ncearc s respecte urmtoarele criterii: 1. 2. 3. Rapiditate Blowfish cripteaz date pe procesoare de 32 de bii la o rat de 26 de tacturi pe octet. Compact Blowfish poate rula n mai puin de 5K de memorie. Simplitate Blowfish folosete doar operaii simple: adunare, operare XOR i cutare n tabel, cu operanzi de 32 de bii. Algoritmul este uor de analizat, ceea ce evit erorile de implementare. 4. Securitate variabil lungimea cheii este variabil, putnd crete pn la 448 de bii. Blowfish este optimizat pentru aplicaii n care cheia nu trebuie s se schimbe des, cum ar fi legturi de comunicaie sau un criptor automat pentru fiiere. Este semnificativ mai rapid dect DES cnd este implementat pe procesoare de 32 de bii dotate cu memorie cache mare, cum ar fi Pentium. Blowfish nu este potrivit pentru comutarea de pachete, cu schimbri dese de cheie, ca funcie hash one-way sau n aplicaii smart-card, unde memoria este insuficient. Descrierea algoritmului Blowfish Blowfish este un cifru bloc care opereaz cu blocuri de 64 de bii si are cheie de lungime variabil. Algoritmul const n dou pri: expandarea cheii i criptarea datelor. Expandarea cheii convertete o cheie de pn la 448 de bii n mai multe matrice de sub-chei totaliznd 4168 de bii. Criptarea datelor rezid ntr-o funcie simpl iterat de 16 ori. Fiecare ciclu este format dintr-o permutare dependent de cheie i o substituie dependent i de cheie i de date. Toate operaiile sunt adunri i operri XOR pe cuvinte de 32 de bii. Singurele operaii suplimentare sunt patru cutri ntr-un tabel indexat, pe ciclu. Blowfish folosete un numr mare de sub-chei. Aceste sub-chei trebuie precalculate nainte de orice criptare sau decriptare de date. Tabelul P este format din 16 chei de 32 de bii: P1, P2, , P18

64

Patru cutii-S de 32 de bii are 256 de intrri fiecare: S1,0, S1,1, . , S1,255 S2,0, S2,1, . , S2,255 S3,0, S3,1, . , S3,255 S4,0, S4,1, . , S4,255 Blowfish este o reea Feistel cu 16 cicluri. Intrarea este x, un element de 64 bii de date. Pentru criptare: Se mparte x n dou pri de cte 32 de bii: xL i xR For i = 1 to 16: xL = xL Pi xR = F(xL) xR se schimb xL i xR ntre ele End for se schimb xL i xR ntre ele xR = xR P17 xL = xL P18 se recombin xL i xR Funcia F funcioneaz astfel: Se mparte xL n patru sferturi a cte 8 bii: a, b, c, d F(xL) = ((S1,a + S2,b mod 232) S3,c) + S4,d mod 232 Decriptarea are loc similar cu criptarea, cu diferena c P1, P2, , P18 sunt folosite n ordine invers. O implementare a algoritmului Blowfish care s asigure o cretere de vitez trebuie s menin toate cheile n memoria cache. Sub-cheile sunt calculate folosind algoritmul Blowfish, care const n urmtorii pai:
1.

Se iniializeaz tabelul P i cele patru cutii-S, n ordine, cu un ir fix. Acest ir este format din cifrele hexazecimale ale lui .

65

2.

Se opereaz XOR P1 cu primii 32 de bii ai cheii, se opereaz P2 cu urmtorii 32 de bii ai cheii i tot aa pn la P18, astfel nct ntreg tabelul P s fie operat XOR cu biii din cheie.

3.
4.

Se cripteaz un ir format din zerouri cu algoritmul Blowfish, folosind subcheile descrise n paii 1 i 2. Se nlocuiesc P1 i P2 cu ieirea din pasul 3. Se cripteaz ieirea din pasul 3 folosind algoritmul Blowfish cu sub-cheile modificate. Se nlocuiesc P3 i P4 cu ieirea din pasul 5. Se continu procesul, nlocuind toate elementele din tabelul P i apoi cele patru cutii-S n ordine, cu ieirea algoritmului Blowfish.

5.
6.

7.

n total, 521 de iteraii sunt necesare pentru a genera toate sub-cheile necesare. Aplicaiile pot memora sub-cheile pentru a nu trebui s le calculeze de fiecare dat. Securitatea algoritmului Blowfish n cazul algoritmului Blowfish cu cutii-S cunoscute i r cicluri, tabelul P poate fi determinat cu 28r+1 texte n clar alese. Atacul funcioneaz doar pe variantele cu un numr redus de cicluri i este complet ineficient n cazul algoritmului Blowfish cu 16 cicluri.

4.6.6 Dubla criptare


Un mod evident de mbuntire a securitii algoritmilor bloc este criptarea unui bloc de dou ori, folosind dou chei diferite. Mai nti se cripteaz blocul cu prima cheie, apoi se cripteaz textul cifrat rezultat folosind a doua cheie. Decriptarea este procesul invers: C = EK2 (EK1 (P)) P = DK1 (DK2 (C)) Dac algoritmul bloc este un grup, exist ntotdeauna un K3, astfel nct C = EK2 (EK1 (P)) = EK3 (P) n caz contrar, blocul de text cifrat rezultat dintr-o dubl criptare ar trebui s fie mult mai greu de decriptat folosind cutarea exhaustiv. n loc de 2n ncercri (unde n este lungimea n

66

bii a cheii), vor fi necesare 22n ncercri. Dac algoritmul are chei de 64 de bii, vor fi necesare 2128 ncercri pentru a gsi cheia. n cazul atacului cu texte n clar cunoscute, Merkle i Hellman au demonstrat c schema cu dubl criptare poate fi spart n 2n+1 criptri i nu n 22n. Atacul se numete ntlnire la mijloc; el funcioneaz prin criptarea de la un capt, decriptarea la captul cellalt i potrivirea rezultatelor n mijlocul textului criptat. n acest atac, criptanalistul cunoate P1, C1, P2 i C2, astfel nct C1 = EK2 (EK1 (P1)) C2 = EK2 (EK1 (P2)) Pentru fiecare K posibil, se calculeaz EK(P1) i se memoreaz rezultatul. Dup terminarea tuturor calculelor, se calculeaz DK(C1) pentru fiecare K i se caut un rezultat identic n memorie. Dac se gsete un astfel de rezultat, fie K2 cheia curent i K1 cheia folosit pentru rezultatul din memorie. Se cripteaz P2 cu K1 i K2; dac se obine C2 este aproape sigur (cu o probabilitate de 1 din 22m-2n, unde m este mrimea blocului), c cele dou chei sunt valide. Dac nu, se continu cutarea. Numrul maxim de cutri este 2 x 2n, adic 2n+1. Acest atac necesit un spaiu mare de memorie: 2n blocuri. Pentru un algoritm de 56 de bii, aceasta nseamn 256 blocuri de 64 de bii, adic 1017 octei. Este o cantitate considerabil de memorie, dar demonstreaz c dubla criptare nu duce la dublarea securitii. n cazul ns al unei chei de 128 de bii, cantitatea de memorie necesar este de 10 39 octei, ceea ce nseamn c un atac de tip ntlnire la mijloc nu este fezabil. O alt metod de dubl criptare, numit Davies-Price, este o variant de CBC: Ci = EK1 (Pi EK2(Ci-1)) Pi = DK2 (Ci ) EK2(Ci-1)) care prezint aceeai vulnerabilitate fa de un atac de tip ntlnire la mijloc.

4.6.7 Tripla criptare


Tripla criptare cu dou chei O idee mai bun, propus de Tuchman, opereaz pe un bloc de trei ori folosind dou chei: se ncepe cu prima cheie, se continu cu a doua cheie i se termin folosind din nou prima cheie, n sensul c expeditorul cripteaz cu prima cheie, decripteaz cu a doua cheie i n final

67

cripteaz cu prima cheie. Destinatarul decripteaz cu prima cheie, apoi cripteaz cu a doua cheie i n final decripteaz cu prima cheie: C = EK1 (DK2(EK1 (P))) P = DK1(EK2 (DK1 (C))) Aceasta poart numele de mod EDE (encrypt-decrypt-encrypt); dac algoritmul bloc are o cheie de n bii, aceast schem conduce la o cheie de 2n bii. Aceast form curioas de criptare-decriptare-criptare a fost proiectat de IBM, pentru a pstra compatibilitatea cu implementarea convenional a algoritmului: dac cele dou chei sunt identice, tripla criptare se reduce la o singur criptare cu o singur cheie. K1 i K2 alterneaz, pentru a preveni posibilitatea de a folosi un atac de tip ntlnire la mijloc. Dac C = EK2 (EK1 (EK1 (P ))), atunci criptanalistul poate calcula EK1 (EK1 (P )) pentru toate valorile K1 posibile, dup care pornete atacul. Ar fi necesare doar 2n+2 criptri. Tripla criptare cu dou chei nu permite un atac de tip ntlnire la mijloc de genul celui ntlnit n cazul dublei criptri, dar Merkle i Hellman au proiectat un alt gen de atac, care poate sparge tripla criptare cu dou chei n 2n-1 pai folosind 2n blocuri de memorie. Pentru fiecare K2 posibil, se decripteaz 0 i se memoreaz. Apoi, se decripteaz cu fiecare K1 posibil, pentru a-l gsi pe P. Se cripteaz triplu P pentru a-l afla pe C, dup care se decripteaz C cu K1. Dac aceast decriptare este o decriptare a lui 0 folosind K2 (din memorie) atunci perechea K1, K2 este o posibil candidat. Dac aceast posibilitate nu se verific, se continu cutarea. Acesta este un atac cu texte n clar alese, care necesit o mare cantitate de texte n clar alese i anume 2m, n timp ce memoria i durata sunt de ordinul 2n. Nu este foarte practic, dar subliniaz o slbiciune a algoritmului. Paul van Oorschot i Michael Wiener au convertit aceasta la un atac cu 2p texte n clar cunoscute. Exemplul presupune modul EDE:
1. 2.

Se ghicete valoarea intermediar a. Se calculeaz i memoreaz pentru fiecare K1 posibil, a doua valoare intermediar b, cnd prima valoare intermediar este a, folosind textul n clar cunoscut: b = DK1 (C)

3.

Se caut n tabelul memorat, pentru fiecare K2 posibil, elemente cu aceeai valoare intermediar b: b = EK2 (a)

68

4.

Probabilitatea de succes este p/m, unde p este numrul de texte n clar cunoscute i m este mrimea blocului. Dac nu se gsesc elementele cutate la pasul 3, se alege o nou valoare pentru a i se reia de la pasul 1.

Acest atac necesit 2n+m/p timp operaional i p spaiu de memorie. Pentru DES, aceasta nseamn 2120/p. Pentru p mai mare ca 256, acest atac este mai rapid dect cutarea exhaustiv. Tripla criptare cu trei chei Aceast variant presupune o lungime total a cheii mai mare, dar memorarea cheii nu constituie o problem. C = EK3 (DK2(EK1 (P))) P = DK1(EK2 (DK3 (C))) Cel mai bun atac cere 22n pai i 2n blocuri de memorie si este de tip ntlnire la mijloc. Tripla criptare cu trei chei independente este echivalent din punct de vedere al securitii, cu dubla criptare.

4.6.8 Concluzii
Criptografia cu chei simetrice i cea cu chei publice prezint diverse avantaje i dezavantaje pe care le prezentm n continuare: (i) Avantaje ale criptografiei cu chei simetrice 1. 2.
3.

Algoritmii folosii permit gestionarea unor volume mari de date, cu vitez relativ bun. n special atunci cnd este vorba de implementri hard. Cheile folosite pentru algoritmii simetrici sunt relativ scurte. Algoritmii simetrici pot fi folosii ca primitive pentru a construi soluii criptografice incluznd generatoarele de numere pseudo-aleatoare i funciile hash. Algoritmii cu chei simetrice se pot compune pentru a produce algoritmi mai puternici.

4.

(ii) Dezavantajele criptografiei cu chei simetrice


1.

ntr-o comunicaie cheia trebuie s rmn secret n ambele capete. ntr-o reea cu muli utilizatori numrul cheilor care trebuie gestionate devine o problem major.

2.

69

3.

Pentru o comunicaie ntre dou pri, practica criptografic impune schimbul cheilor frecvent, uneori chiar la fiecare sesiune, ceea ce n condiiile unui canal nesigur de comunicaie este o alt problem.

(iii) Avantajele criptografiei cu chei publice 1. 2. 3.


4.

Dintre cele dou chei folosite n algoritmii cu chei publice doar una trebuie inut secret. Administrarea cheilor ntr-o reea poate fi fcut cu un singur administrator de ncredere. n general perechile de chei publice/secrete pot fi folosite pe o perioada lung de timp fr a fi schimbate. ntr-o reea de dimensiuni mari numrul de chei necesare este considerabil mai mic dect n cazul criptografiei simetrice.

(iv) Dezavantajele criptografiei cu chei publice 1. 2. 3. Viteza algoritmilor cu chei publice (chiar i a celor mai performani) este de cteva ori mai mic dect a celor cu chei secrete. Dimensiunea cheilor folosite este mai mare (1024 pentru RSA n comparaie cu 64 sau 128 n cazul algorimilor de tip bloc). Pentru nici un algoritm cu chei publice nu s-a demonstrat c ar fi sigur; securitatea lor se bazeaz prezumia de dificultate a unui set de probleme de teoria numerelor. 4. Istoria criptografiei cu chei publice este relativ scurt (din 1970) .

Utilizarea algoritmilor n sisteme de criptare disponibile n Internet Aplicaiile i protocoalele folosite n Internet au nevoi diferite de securitate, n funcie de care se utilizeaz diverse sisteme criptografice. Se observ c nu exist un algoritm unic bun pentru orice situaie n funcie de noile rezultate obinute n proiectarea criptografic, dar i n criptanaliz, se renun la unii algoritmi sau se dezvolt variante mbuntite din punct de vedere al securitii. n Internet, sistemele criptografice pot fi grupate n dou mari categorii: protocoale de reea i programe/protocoale folosite pentru criptarea mesajelor trimise prin pota electronic (tabelul 4.6.3). Nr. Sistem 1 PCT (Private Communications Technology) Caracteristici Protocol criptare transmisii TCP/IP Principalii algoritmi RSA RC4 MD5

70

2 3 4 5 6 7 8

SSL (Secure Socket Layer) S-HTTP SecureHyperText Transfer Protocol SET (Secure Electronic Transaction) CyberCash Ipsec, Ipv5 DNSSEC (Domain Name System Security) Kerberos

Protocol criptare transmisii TCP/IP Protocol pentru criptarea cererilor i rspunsurilor HTML Protocol criptare transmisii de instruciuni de plat prin Internet Protocol criptare transmisii instruciuni de plat prin Internet Protocol de nivel sczut pentru criptarea pachetelor IP Sistem pentru securizarea DNS Securitate n reea pentru aplicaiile de nivel nalt Protecie pentru Telnet la transferul de fiiere Format pentru criptarea potei electronice Aplicaie pentru criptarea potei electronice

RSA RC4 MD5 RSA DES RSA MD5 RC2 RSA MD5 RC2 DiffieHellman RSA MD5 DES RSA DiffieHellman Des Triple DES Specificaii utilizator MD5 IDEA RSA

SSH (Secure Shell) S/MIME Secure Multipurpose Internet Mail Extension PGP (Pretty Good Privacy)

10 11

Tabelul 4.6.3 Algoritmi de criptare utilizai n aplicaiile din Internet

71

Capitolul 5

Aplicaie. Algoritmul Vigenere i implementarea lui


5.1 Codul Vigenere
5.1.1 Descriere general
Cifrul a fost inventat de ctre Giovan Batista Belaso i descris n cartea sa "La cifra del. Sig. Giovan Batista Belaso" n 1553, fiind o versiune simplificat a unui cifru de substituie polialfabetic, inventat de Leon Batista Alberti n jurul anului 1465. A fost atribuit eronat lui Blaise de Vigenere n secolul 19, care a inventat un cifru asemntor cu o singur diferen ins, i anume modul n care cheia de criptare era generat. Aceasta ncepea cu un cuvnt scurt la care se aduga textul n clar iar apoi procedura de criptare se aseamn cu cea a lui Giovan Batista Belaso. Cifrul Vigenere aa cum este el cunoscut a fost folosit din secolul 16 pentru a dezvolta criptosisteme pn n epoca modern, el stnd la baza mainii criptografice germane Enigma, folosit n cel de-al doilea rzboi mondial. Combinat cu un sistem de criptare prin deplasare codul Vigenere este un sistem criptografic puternic, dar totui susceptibil la o analiz a frecventei codul poate fi spart. Puterea sa a stat n faptul c, utilizndu-se substituii polialfabetice mai multe litere din textul n clar puteau fi criptate cu aceeai liter n textul criptat. Aceasta a fost o trstur puternic a acestui cifru de-a lungul secolului 16. Codificarea prin acest cifru presupune existena unei chei de cifrare i a unui tabel ce conine literele alfabetului aezate pe linii, n total 26 de linii, literele de pe linia n sunt deplasate cu o poziie la dreapta fa de literele de pe linia n1, tabelul este prezentat n figura 2.1. Criptarea se realizeaz scriind textul n clar pe o linie, sub el se scrie cheia, repetnd cheia dac este mai mic dect textul n clar. Fiecare liter din textul n clar va fi criptat cutnd n tabelul polialfabetic din figura 5.1 litera care se afl la intersecia liniei care ncepe cu litera din cheie i coloanei care conine ca prim liter, litera din textul n clar. Decriptarea mesajului se face gsind poziia literei criptate pe linia indicat de cheia de criptare, prima liter de pe acea coloan fiind considerat liter a textului n clar.

5.1.2

Descriere matematic

Definiia 5.1.1. Considerm m un ntreg pozitiv pentru care definim P = C = K = (Z26)m , iar pentru o cheie k = (k 1 , k2,..., km) funciile de criptare respectiv decriptare au urmtoarea form ek(x1, x2, . . ., xm) = Pi + Ki(mod26) = (x1 + k1, x2 + k2,..., xm + km) i dk(y1, y2, . . ., ym) = Ci - Ki(mod26) = (y1 - k1, y2 - k2, . . ., ym - km)

72

Figura 5.1: Tabelul folosit pentru criptarea Vigenere

5.1.3 Algoritm
Algoritmul 5.1.1. Criptare prin metoda Vigenere 1. criptare_Vigenere(P,K) 2. while(i<lungime_mesaj) 2.1.
2.1.1.

for(j=0, lungime_cheie) Ci Pi +Ki i++ i++

2.1.2. 2.2. 3. return Ci

Algoritmul 5.1.2. Decriptare prin metoda Vigenere 1. decriptare_Vigenere(C,K) 2. while(i<lungime_mesaj) 2.1.


2.1.1.

for(j=0, lungime_cheie) Pi Ci Ki i++ 2.2. i++

2.1.2. 3. return Pi

5.1.4

Exemplu

S presupunem c vrem s criptm fraza "HELLO WORLD" folosind cheia "SECRET". Se scrie textul n clar, i anume "HELLO WORLD" pe o linie iar sub el cheia. Cutam apoi n

73

tabel linia care are pe prima poziie litera din textul n clar i la intersecia sa cu coloana ce conine litera textului cheii vom gsi litera corespunztoare textului cifrat. Un exemplu de criptare este prezentat n figura 5.2.

Figura 5.2: Exemplu de text criptat prin metoda Vigenere

5.1.5

Implementarea algoritmului Vigenere

Programul cripteaz i decripteaz textul introdus de la tastatur sau dintr-un fiier.

Figura 5.3: Interfaa programului

74

Figura 5.4: Meniul programului Utilizatorul poate alege din meniul programului una din opiunile:
1.

Criptare fiier: Se cere cheia pentru criptarea textului. Utilizatorul apas space pentru confirmarea cheii. Dup introducerea i confirmarea cheii utilizatorul indic numele fiierului unde sunt datele de criptat i numele fiierului n care vor fi nscrise datele criptate.

2.

Decriptare fiier: Este cerut cheia cu ajutorul creia a fost criptat textul. Utilizatorul apas space pentru confirmarea cheii. Dup introducerea i confirmarea cheii utilizatorul indic numele fiierului unde sunt datele criptate i numele fiierului n care vor fi nscrise datele decriptate.

3.

Criptare text de la tastatur: Este cerut cheia pentru criptarea textului. Utilizatorul apas space pentru confirmarea cheii. Dup introducerea i confirmarea cheii utilizatorul tasteaz textul care trebuie criptat, totodat vznd rezultatul criptrii.

4.

Decriptare text de la tastatur: Este cerut cheia cu ajutorul creia a fost criptat textul. Utilizatorul apas space pentru confirmarea cheii. Dup introducerea i confirmarea cheii utilizatorul tasteaz textul care trebuie decriptat, totodat vznd rezultatul decriptrii

9. Informaii despre program 0. Ieire

75

n continuare este prezentat codul algoritmului Vigenere n limbajul C++. // Criptare si decriptare folosind algoritmul Vigenere // -- Mazurean Eugeniu -#include <stdio.h> #include <conio.h> #include <ctype.h> // pentru functiile isalpha() si islower() #include <stdlib.h> // pentru macro-ul toupper() #include <time.h> // pentru masurarea timpului necesar prelucrarii #include <string.h> // pentru functia memset() #define #define care se #define TINDEX long int MAXBUFFERLENGTH 4096// lungimea maxima a unui buffer citeste din fisier KBBUFFER 1024

typedef char BUFFER[MAXBUFFERLENGTH]; char parola[20]; char lungimeParola=0; char indexParola=0; // reprezinta pozitia caracterului din cheia care va fi folosit pentru // prelucrarea urmatorului caracter din fisierul de intrare char numeFisierIntrare[20]; char numeFisierIesire[20]; void citireParola(void){ char ch; // caracterul citit de la tastatura int contor=0; // numarul de caractere in cheie printf("=========================\n"); printf("Introduceti cheia (space pentru confirmare): "); while(' ' != (ch=getch()) || contor==0) // daca caracterul citit e diferit de spatiu sau cheia are 0 caractere atunci { if(isalpha(ch)) // daca caracterul citit e litera { if(islower(ch)) ch = toupper(ch); // daca caracterul e litera mica o transformam in litera mare putch(ch); // se poate inlocui cu putc('*') pentru privacy parola[contor] = ch - 'A'; // atribuim caracterului ce se afla pe pozitia corespunzatoare valorii contorului // din cuvintul cheia caracterul citit -'A' contor++; // incrimentam numarul de caractere in cuvintul cheia

76

} } lungimeParola = contor; printf("\n"); printf("Ati introdus cheia: ["); for(int i=0;i<lungimeParola;i++){ // tiparim cheia la ecran putch(parola[i] + 'A'); } printf("]\n"); } void citireDateDeIntrare(void){ // in functia asta se citeste cheia si numele fisierului de intrare citireParola(); printf("\nIntroduceti numele fisierului ce contine datele de prelucrat: ");// tiparire la ecran scanf("%s", &numeFisierIntrare); // citirea datelor printf("Ati introdus numele de fisier: [%s]\n", numeFisierIntrare); printf("\nIntroduceti numele fisierului de iesire: "); scanf("%s", &numeFisierIesire); printf("Ati introdus numele de fisier: [%s]\n", numeFisierIesire); } void afiseazaEroareDeDeschidereFisier(char *numeFisier) { fprintf(stderr, "\nEROARE - Nu se poate deschide fisierul [%s] !\n", numeFisier); printf("\n"); printf("Apasati o tasta pentru a continua: "); getch();// asteapta pina nu se apasa orce tasta } int prelucrareDateC(){ // pentru criptare // returneaza 1 daca s-a produs o eroare FILE *fisierIntrare, *fisierIesire; if((fisierIntrare=fopen(numeFisierIntrare, "rb")) == NULL){ // daca nu s-a putut deschide fisierul, se afiseaza eroare afiseazaEroareDeDeschidereFisier(numeFisierIntrare); return 1; }; if((fisierIesire=fopen(numeFisierIesire, "wb")) == NULL){ afiseazaEroareDeDeschidereFisier(numeFisierIesire); return 1; }; BUFFER buffer;

77

TINDEX bytes_read=0; // indica numarul de bytes utili din variabila [buffer] TINDEX bytes_to_write=0; // indica nr. de bytes care se vor scrie la iesire TINDEX i=0; signed char temp=0; time_t timp1, timp2; timp1 = time(NULL); do { bytes_read = fread(buffer, 1, MAXBUFFERLENGTH, fisierIntrare); /* S-au citit in variabila [buffer] un numar de maxim MAXBUFFERLENGTH bytes din fisierul de intrare. [bytes_read] indica numarul efectiv de bytes cititi in variabila [buffer]. Daca in fisier ramasesera mai putin de MAXBUFFERLENGTH bytes, atunci avem (bytes_read < MAXBUFFERLENGTH) */ bytes_to_write = 0; for ( i=0; i<bytes_read; i++ ) { // prelucrez, pe rand, fiecare din caracterele citite in buffer temp = buffer[i]; // octetul curent de prelucrat este preluat in variabila [temp] if(! ((temp<'A'||temp>'Z')&&(temp<'a'||temp>'z') )) { // pt ca "<" e mai rapid decat "<=" // se iau in considerare doar octetii care reprezinta litere if(temp>'Z') temp -= 32; // pentru ca 'a' - 'A' == 32 // daca este caracter uppercase, se face conversia lui in lowercase // incepe zona specifica CRIPTARII temp += parola[indexParola]; /* parola[indexParola] este caracterul din cheia care este folosit pentru "criptarea caracterului din

78

temp" */ if(temp>'Z') temp -= 26; // se finalizeaza operatia de adunare modulo 26 cu "caracterParola" //s-a terminat zona specifica CRIPTARII // variabila [temp] contine acum "caracterul criptat" buffer[bytes_to_write]=temp; // adaug "caracterul criptat" in "bufferul de scriere la iesire" bytes_to_write++; /* se incrementeaza contorul care inregistreaza nr. de caractere "existente pana acum in bufferul de scriere la iesire" */ indexParola++; // pentru prelucrarea urmatoarei litere din mesaj se va folosi urmatoarea litera din cheie if(indexParola==lungimeParola) indexParola = 0; // daca a fost folosita ultima litera din cheie, // pentru prelucrarea urmatoarei litere din mesaj se va folosi prima litera din cheia } else if (temp == ' ') { buffer[bytes_to_write]=temp; bytes_to_write++; } } if(bytes_to_write!=0){ // daca in buffer au existat bytes ce reprezentau litere fwrite(buffer, 1, bytes_to_write, fisierIesire); // se scriu "caracterele prelucrate" in fisierul de iesire } } while (bytes_read == MAXBUFFERLENGTH); // daca a fost bytes_read < MAXBUFFERLENGTH inseamna ca s-a atins EOF. timp2 = time(NULL); printf("\nTimp prelucrare: %f secunde\n", difftime(timp2, timp1)); indexParola = 0; fclose(fisierIntrare); fclose(fisierIesire); return 0; }

79

int prelucrareDateD(){ // pentru decriptare // returneaza 1 daca s-a produs o eroare FILE *fisierIntrare, *fisierIesire; if((fisierIntrare=fopen(numeFisierIntrare, "rb")) == NULL){ afiseazaEroareDeDeschidereFisier(numeFisierIntrare); return 1; }; if((fisierIesire=fopen(numeFisierIesire, "wb")) == NULL){ afiseazaEroareDeDeschidereFisier(numeFisierIesire); return 1; }; BUFFER buffer; TINDEX bytes_read=0; // indica numarul de bytes utili din variabila [buffer] TINDEX bytes_to_write=0; // indica nr. de bytes care se vor scrie la iesire TINDEX i=0; signed char temp=0; time_t timp1, timp2; timp1 = time(NULL); do { bytes_read = fread(buffer, 1, MAXBUFFERLENGTH, fisierIntrare); /* S-au citit in variabila [buffer] un numar de maxim MAXBUFFERLENGTH bytes din fisierul de intrare. [bytes_read] indica numarul efectiv de bytes cititi in variabila [buffer]. Daca in fisier ramasesera mai putin de MAXBUFFERLENGTH bytes, atunci avem (bytes_read < MAXBUFFERLENGTH) */ bytes_to_write = 0; for ( i=0; i<bytes_read; i++ ) { // prelucrez, pe rand, fiecare din caracterele citite in buffer temp = buffer[i]; // octetul curent de prelucrat este preluat in variabila [temp]

80

if(!( (temp<'A'||temp>'Z')&&(temp<'a'||temp>'z') )) { // pt ca "<" e mai rapid decat "<=" // se iau in considerare doar octetii care reprezinta litere if(temp>'Z') temp -= 32; // pentru ca 'a' - 'A' == 32 // daca este caracter uppercase, se face conversia lui in lowercase

// incepe zona specifica DECRIPTARII temp -= parola[indexParola]; /* parola[indexParola] este caracterul din cheie care este folosit pentru "criptarea caracterului din temp" */ if(temp<'A') temp += 26; // se finalizeaza operatia de adunare modulo 26 cu "26 - caracterParola" // s-a terminat zona specifica DECRIPTARII // variabila [temp] contine acum "caracterul criptat" buffer[bytes_to_write]=temp; // adaug "caracterul criptat" in "bufferul de scriere la iesire"

bytes_to_write++; /* se incrementeaza contorul care inregistreaza nr. de caractere "existente pana acum in bufferul de scriere la iesire" */ indexParola++; // pentru prelucrarea urmatoarei litere din mesaj se va folosi urmatoarea litera din cheie if(indexParola==lungimeParola) indexParola = 0; // daca a fost folosita ultima litera din cheie, // pentru prelucrarea urmatoarei litere din mesaj se va folosi prima litera din cheie } else if (temp == ' ') { buffer[bytes_to_write]=temp;

81

bytes_to_write++; } } if(bytes_to_write!=0){ // daca in buffer au existat bytes ce reprezentau litere fwrite(buffer, 1, bytes_to_write, fisierIesire); // se scriu "caracterele prelucrate" in fisierul de iesire } } while (bytes_read == MAXBUFFERLENGTH); // daca a fost bytes_read < MAXBUFFERLENGTH inseamna ca s-a atins EOF. timp2 = time(NULL); printf("\nTimp prelucrare: %f secunde\n", difftime(timp2, timp1)); indexParola = 0; fclose(fisierIntrare); fclose(fisierIesire); return 0; } void afiseazaHelpul(void){ printf("=========================\n"); printf("Informatii despre program\n"); printf("\n"); printf("- Programul implementeaza algoritmul Vigenere pentru criptarea si decriptarea datelor.\n"); printf("- Datele se pot citi de la tastatura sau dintr-un fisier.\n"); printf("- Sunt luate in considerare doar caracterele a-z, AZ din textul de la intrare. Caracterele a-z sunt convertite in A-Z.\n"); printf("- Rezultatele sunt afisate la ecran sau sunt scrise intr-un fisier, in functie de modul in care s-a facut introducerea datelor (de la tastatura, respectiv dintr-un fisier).\n"); printf("\n"); printf("Apasati o tasta pentru a continua: "); getch(); } void criptare(void){ printf("===========================\n"); printf("Incepe functia de criptare.\n"); citireDateDeIntrare();

82

prelucrareDateC(); printf("\nS-a terminat functia de criptare.\n"); printf("\n"); printf("Apasati o tasta pentru a continua: "); getch(); } void decriptare(void){ printf("=============================\n"); printf("Incepe functia de decriptare.\n"); citireDateDeIntrare(); prelucrareDateD(); printf("\nS-a terminat functia de decriptare.\n"); printf("\n"); printf("Apasati o tasta pentru a continua: "); getch(); } char selMeniulPrincipal(void){ char ch=0; //clrscr(); printf("\n"); printf("***************************\n"); printf("VIGENERE - Meniul Principal\n"); printf("\n"); printf("1. Criptare fisier\n"); printf("2. Decriptare fisier\n"); printf("3. Criptare text de la tastatura\n"); printf("4. Decriptare text de la tastatura\n\n"); printf("9. Informatii despre program\n"); printf("0. Iesire\n"); printf("\n"); printf("Selectati optiunea: "); while(ch!='1'&&ch!='2'&&ch!='3'&&ch!='0'&&ch!='9'&&ch!='4'){ ch=getch(); } putch(ch); printf("\nAti selectat optiunea %c.\n", ch); return ch; } void demonstratie (int operatie) { // am variabilele parola, indexParola, lungimeParola // aici nu mai e necesara viteza int charcount = 0,i,buffindex=0; int pcount=0;

83

char ch; char readbuff[KBBUFFER],prelbuff[KBBUFFER],finbuff[KBBUFFER],pwdbuf f[KBBUFFER]; clrscr(); indexParola=0; memset(readbuff,0,KBBUFFER); memset(prelbuff,0,KBBUFFER); memset(finbuff,0,KBBUFFER); memset(pwdbuff,0,KBBUFFER); printf("Vom demonstra %scriptarea pe un text introdus de la tastatura\n",(operatie)?(char *)"de":(char *)""); citireParola(); //* scot cursorul clipitor asm { mov ah,0x01; mov cx,0x2020; int 0x10; } //*/ // voi scrie de la caracterul 20 printf("\nIntroduceti textul - apasati ENTER pentru a termina \n"); printf("Apasati sageata stanga-dreapta pentru a vedea tot textul introdus\n"); gotoxy(1,10);printf("Ati introdus:"); gotoxy(1,12);printf("Am preluat:"); gotoxy(1,14);printf("Cheia este:"); gotoxy(1,16);printf("Textul %scriptat:",(operatie)?(char *)"de":(char *)""); while ( ((ch = getch()) != '\r') && (charcount<KBBUFFER) ) { if (charcount == KBBUFFER) printf("\a"); // backspace = 0x0E sau 14 if (ch == '\b') { if (charcount>=50) buffindex=charcount-50; if (charcount > 0) { charcount--; readbuff[charcount]=0; prelbuff[charcount]=0; pwdbuff[charcount]=0; finbuff[charcount]=0; } if (indexParola>0) indexParola--; else indexParola=lungimeParola-1;

84

// }

pcount--; indexParola %= lungimeParola;

else if (ch == 0) { ch=getch(); if (ch == 75) //stanga if (buffindex>0) buffindex--; if (ch == 77) // dreapta if (buffindex<charcount-50) buffindex++; continue; } else if (isprint(ch)) { readbuff[charcount] = (char)ch; prelbuff[charcount] = (char) (isalpha(ch)) ? toupper(ch) : ' '; if((ch>='A' && ch<='Z')||(ch>='a' && ch<='z')) { if(ch>='A' && ch<='Z') ch-='A'; else ch-='a'; if (operatie==0) ch=(ch+parola[indexParola]+26)%26+'A'; else ch=(ch-parola[indexParola]+26)%26+'A'; pwdbuff[charcount]=parola[pcount % lungimeParola]+'A'; indexParola++; indexParola %= lungimeParola; pcount++; } else { ch=' '; // ca sa nu se vada pwdbuff[charcount] = ' '; } finbuff[charcount] = (char)ch; charcount++; if (charcount>=50) buffindex=charcount-50; }

//

85

gotoxy(20,10); for (i=0;i<50;i++) putch(readbuff[buffindex+i]); gotoxy(20,12); for (i=0;i<50;i++) putch(prelbuff[buffindex+i]); gotoxy(20,14); for (i=0;i<50;i++) putch(pwdbuff[buffindex+i]); gotoxy(20,16); for (i=0;i<50;i++) putch(finbuff[buffindex+i]); }// am iesit din bucla while printf("\n"); // pun cursorul clipitor asm { mov ah,0x01; mov cx,0x1D1F; int 0x10; } //*/ indexParola=0; } void main(void){ char optiune=0; clrscr(); while(optiune!='0'){ optiune = selMeniulPrincipal(); if(optiune=='1'){ criptare(); } if(optiune=='2'){ decriptare(); } if(optiune=='9'){ afiseazaHelpul(); } if (optiune == '3'){ demonstratie(0); } if (optiune == '4'){ demonstratie(1); } } printf("\n\nProgram terminat.\n\n"); }

86

Bibliografie
[1] [2] Nicolae Constantinescu, Bazele Criptografiei. Adrian. Atanasiu, Noiuni de baz ale criptografiei, Revista de Informatic i Matematic (RIM) nr. 4 (febr. 2002), 5 (iunie 2002); publicaie on-line, adresa http://portal.ols.ro/hasdeu. [3] [4] [5] [6] [7] Dumitru OPREA, Protecia i securitatea informaiilor, Polirom, Iai 2003. Lars Klander, "Anti-hacker. Ghidul securitii reelelor de calculatoare", 679 p., ALL Educaional, Bucureti 1998. Andrew S. Tanenbaum, "Reele de calculatoare", Ed. Computer Press Agora, 1997. Monica Ene-Pietrosanu, Microsoft Romnia, Windows Security. J. Daemen, R. Govaertes, J. Vandewalle, A Framework for the Design of the One-Way Hash Functions including Cryptanalysis of Damagards One-Way Function based on Cellular Automaton. Advances in Cryptology, ASIACRYPT 91 82-98, 1991 [8] [9] [10] [11] Bruce Schneier, Applied Cryptography, Second Edition: Protocols, Algorthms, and Source Code in C (cloth), 1996. G. Tsudik, Message authentication with one-way hash functions. Proceedings of Infocom 1992. http://www.biblioteca.ase.ro/downres.php?tc=7316 Capitolul 5 Criptografia modern. http://euro.ubbcluj.ro/~alina/cursuri/internet-teorie/5-3.htm criptografiei moderne. Caracteristici ale

87