Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


APLICATIE DE CRIPTARE DE IMAGINI FOLOSIND ALGORITMUL AES

algoritmi



+ Font mai mare | - Font mai mic



UNIVERSITATEA TEHNICA DIN CLUJ-NAPOCA

FACULTATEA DE ELECTRONICA SI TELECOMUNICATII



Specializarea Telecomunicatii

APLICATIE DE CRIPTARE DE IMAGINI FOLOSIND ALGORITMUL AES

Proiect de semestru

1. Tema proiectului

Aplicatia de fata isi propune realizarea unei aplicatii de criptare a unor imagini salvate in format bitmap, criptare realizata pe plane de biti. Algoritmul de criptare folosit in acest caz este algoritmul Advanced Encryption Standard (AES), algoritmul folosit pentru generarea cheii de criptare este algoritmul Blum-Blum-Shub, iar imaginea criptata este salvata in format bitmap.

2. Descrierea aplicatiei

Aplicatia realizata de mine este o aplicatie care ofera utilizatorului o interfata grafica extrem de intuitiva, pentru a fi cat mai usor de utilizat. Ea ofera, de asemenea, un meniu extrem de usor de folosit, fiind intuitiv in ceea ce priveste functionalitatea butoanelor.

Interfata grafica a aplicatiei este prezentata mai jos. Ea ofera un meniu de tip pop-up, doua butoane, trei controale de tip radio button si 24 de controale de tip check box. Aceasta interfata este prezentata in figura 1.

Fig. 1. Interfata grafica a aplicatiei

Meniul "Fisier" al aplicatiei ofera trei submeniuri: "Deschide", "Cripteaza" si "Inchide". Primul meniu ofera posibilitatea alegerii unei imagini in format bitmap pentru criptare, cel de-al doilea efectueaza criptarea propriu-zisa iar cel de-al treilea inchide aplicatia. Acest meniu este prezentat in figura 2.

Butoanele de pe interfata grafica au functii intuitive, fiind intitulate sugestiv. Astfel, butonul "Deschide" ofera posibilitatea alegerii unui fisier bitmap de criptat. Butonul "Cripteaza" realizeaza efectiv criptarea imaginii.

Controalele de tip Radio Button ofera utilizatorului control asupra lungimii cheii de criptare. Aceasta poate avea trei valori, lunginea cheii de criptare poate fi 128, 192 sau 256 biti.

Controalele de tip Combo Box sunt destinate selectiei planului de biti dorit a fi criptat. De asemenea, se poate alege un plan de biti corespunzator unei singure culori din imagine. In momentul de fata, trebuie facuta o mentiune. Aplicatia nu poate cripta decat imagini cu 24 de biti pe pixel, adica nuanta de rosu a pixelului este reprezentata pe 8 biti, nuanta de verde a pixelului este reprezentata pe 8 biti si nuanta de albastru a pixelului este reprezentata pe 8 biti.

Fig. 2. Interfata grafica a aplicatiei, meniul "Fisier

La apasarea butonului "Deschide", se deschide o casuti de dialog care permite deschiderea unui fisier de intrare, de criptat, fisier bitmap. Acest fisier este deschis de aplicatie, si este afisat intr-o fereastra separata. Un exemplu de imagine deschisa este prezentat in figura 3.

Fig. 3. Interfata grafica, un fisier deschis

La apasarea butonului "Cripteaza", se declanseaza procesul efectiv de criptare a imaginii. Dupa ce acest proces este incheiat, se deschide o casuta de dialog in care user-ul are posibilitatea alegerii unui nume sub care sa fie salvat fisierul bitmap criptat, si a unei locatii in care sa fie salvat acest fisier. Aceasta facilitate este prezentata in figura 4.

Fig. 4. Interfata grafica, salvarea imaginii criptate

3. Descrierea algoritmilor implicati in implementarea aplicatiei

Acest subcapitol isi propune sa ofere cateva detalii asupra diferitilor algoritmi implicati in aplicatie. Acesti algoritmi sunt de fapt doi, si anume algoritmul Blum-Blum-Shub de generare a unei chei de criptare pentru algoritmul de criptare, si algoritmul AES, care este folosit pentru criptaera propriu-zisa. De asemenea, trebuie descris si modul de descompunere a imaginii bitmap, pentru a fi criptata.

3.1. Algoritmul Blum-Blum-Shub

Acest algoritm este folosit pentru generarea unei secvente de biti pseudoaleatoare, secventa folosita ca si cheie de criptare de catre algoritmul AES. Acest algoritm este destul de simplu de implementat, dar este extrem de eficace pentru scopul acesta, de a genera o cheie de criptare pseudoaleatoare. Anume, daca se genereaza numere (secvente de biti, pana la urma) in intervalul [0..n-1], un observator nu poate prezice numarul care urmeaza a fi generat cu o probabilitate mai mare de 1/n.

Algoritmul functioneaza destul de simplu, fiind prezentat in cele ce urmeaza. Initial, se genereaza doua numere prime Blum, p si q. Numerele prime Blum sunt numere prime, pentru care restul impartirii lor la 4 este 3. Pasul urmator este alegerea unui numar, seed, din intervalul [1..p*q]. Se calculeaza:

;

Mai departe se calculeaza:

Paritatea unui numar se defineste ca fiind restul impartirii numarului xi la 2. Secventa de iesire este z1, z2, zn.

3.2. Algoritmul AES

Algoritmul AES este un algoritm de criptare simetric, bloc. Aceasta inseamna ca la criptare si la decriptare se foloseste aceeasi cheie, si ca procesul de criptare se desfasoara pe blocuri de biti. In cazul acestui algoritm, sunt specificate diferite lungimi pentru cheia de criptare, si anume 128, 192 sau 256 de biti. De asemenea, lungimea unui bloc de date care se cripteaza este de 128 de biti.

Acest algoritm foloseste, in principal, trasformari pe biti. Aceste transformari sunt: sunstitutia octetilor de date cu valori specificate, rotirea valorilor din fiecare linie a matricii intermediare, mixarea elementelor de pe coloanele acestei matrici, si adaugarea unei chei circulare. Aceasta stare intermediara este reprezentata ca si o matrice de 4 X 4 octeti. Pseudocodul acestui algoritm este:

Functie Criptare

Start

Adaugare Cheie Circulara

Pentru runda 1 pana la Nr - 1

Substitutie Octeti;

Rotire Linii;

Mixare Coloane;

Adaugare Cheie Circulara

sfarsit pentru

Substitutie Octeti;

Rotire Linii;

Mixare Coloane;

Adaugare Cheie Circulara

Sfarsit functie

Functiile descrise in acest pseudocod sunt descrise mai jos. Substitutia de octeti este, de fapt, inlocuirea valorii din marticea intermediarp cu o valoare citita din un tabel standardizat. Rotirea liniilor se desfasoara in felul descris in cele ce urmeaza. Prima linie este neschimbata. A doua linie este rotita de la stanga la dreapta cu un octet, a treia linie este rotita cu doi octeti, iar a patra linie etse rotita cu trei octeti. Functia de mixare coloane este mai complicata, implica calculul elementelor din coloane in functie de elementele vechi si formulele de mai jos:

Functia de adaugare cheie circulara este, de fapt, o operatie sau-exclusiv realizata intre matricea de stare si cheia de criptare expandata. Algoritmul de expandare, precum si alte detalii despre algoritmul AES se pot gasi in si

3.3. Descompunerea imaginii bitmap

Imaginea bitmap este descompusa in plane de biti. Acest lucru inseamna ca imaginea este parcursa pixel cu pixel, si se citeste valoarea corespunzatoare bitului care se doreste a fi criptat. Am decis ca aplicatia sa suporte doar imagini cu 24 de biti pe pixel, adica fiecare culoare (rosu, albastru si verde) este reprezentata pe cate un octet. Deci, din aceste imagini se pot extrage 24 de plane de biti.

4. Implementarea software

Aplicatia de fata a fost realizata folosind Microsoft Visual C++ 6.0. Acest mediu de dezvoltare a fost ales datorita facilitatilor oferite pentru crearea interfetelor grafice. De asemenea, a fost ales si datorita experientei autorului in limbajul de programare C++.

Aplicatia este formata din mai multe module. Aceste module sint: modulul de generare a cheii de criptare folosind generatorul Blum-Blum-Shub, modulul de prelucrare a imaginilor bitmap, modulul care implementeaza algoritmul de criptare AES si interfata grafica. Asupra acestui ultim modul nu se va insista, deoarece nu este interesant, el fiind generat mai mult autoamt de catre mediul de dezvoltare. Interesante sunt celelalte trei module.

Fiecare dintre cele trei module au fost implementate in clase separate. Astfel, proiectul contine clasele BlumBlumShub, Bitmap si AESImpl.

Diagrama UML a clasei BlumBlumShub (salvata in fisierul bbs.cpp), care implementeaza algoritmul de generare a cheilor de criptare, este data in figura 5.

Fig. 5. Diagrama UML, clasa BlumBlumShub

Diagrama UML a clasei Bitmap (salvata in fisierul bitmap.cpp) este data in figura 6. Aceasta clasa implementeaza metode care se folosesc pentru a prelucra o imagine bitmap, a extrage diferite informatii din un fiser bitmap, de a extrage planele de biti si de a salva imaginea criptata.

Fig. 6. Diagrama UML, clasa Bitmap

Figura 6 prezinta diagrama UML a clasei AESImpl (in fisierul aesimplementation.cpp), care implementeaza algoritmul de criptare AES.

Fig. 7. Diagrama UML, clasa AESImpl

Aceasta clasa ofera toate metodele necesare pentru criptarea unui bloc de 128 de biti, cu o cheie generata anterior.

Aceste module sunt implementate in fisiere .cpp separate, fiecare dintre ele avand fisiere header. In organizarea proiectului, aceste module se gasesc in directoare separate. Modulul de generare a cheii de criptare folosind generatorul Blum-Blum-Shub se gaseste in directorul BBS, modulul de prelucrare a imaginilor bitmap este aflat in directorul Bitmap, iar modulul care implementeaza algoritmul de criptare AES este salvat in directorul AES.

5. Concluzii

Aplicatia de fata realizeaza cu succes operatia de criptare, folosind algoritmul AES. Ea poate fi insa extinsa, si anume sa poata realiza criptarea si altor imagini decat cele cu 24 de biti pe pixel. Aceasta limitare deriva din faptul ca anumite imagimi bitmap pot fi comprimate, si anume pot avea un numar mai mic de biti pe pixel, prin folosirea unor palete de culori. De fapt, aceste palete codeaza anumite culori. Aceasta limitare poate fi depasita prin dezvoltarea modulului de prelucrare a imaginilor bitmap.

O alta evolutie a acestei aplicatii este optimizarea ei. In acest moment, aplicatia este consumatoare de resurse, tocmai datorita acestui algoritm de descompunere in plane de biti.

6. Bibliografie

Cryptographic Secure Pseudo-Random Bits Generation: The Blum-Blum-Shub Generator, Pascal Junod, August 1999.

[2]. A Specification for the AES Algorithm, by Joan Daemen & Vincent Rijmen

[3]. Federal Information Processing Standards Publication 197, November 26, 2001 Announcing the ADVANCED ENCRYPTION STANDARD (AES)



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2447
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved