Sunteți pe pagina 1din 11

PROIECT TEHNOLOGII DE

PRELUCRARE A INFORMATIEI

CRIPTARE DE IMAGINI
IN TIMP REAL

Indrumator: Student:
Conf. Dr. Ing.Terebes Romulus Cabulea Cosmin
Gr. 2141/2
Tehnici de criptare a informaţiei
CRIPTARE DE IMAGINI

Criptare: procesul de conversie a datelor (fişiere, imagini, semnale),într-un format


neinteligibil pentru persoane neautorizate-ca urmare a acestui tip de prelucrare un mesaj în
clar (M –plaintext)este transformat într-un mesaj criptat (C-ciphertext) cu ajutorul unei chei
de criptareşi (opţional) cu ajutorul unui algoritm criptografic

Schema bloc a unui sistem de criptare (criptosistem):

Unde avem :
S – sursa
R – receptor
K – spatiul cheilor de criptare
E – algoritm de criptare
D – algoritm de decriptare
Ke – cheie de criptare
Kd – cheie de decriptare

Clasificarea criptosistemelor:
--cu chei simetrice (cu cheie secretă) Ke=Kd=K - cifruri bloc n=32...128
- cifruri secvenţiale (stream ciphers)

Cifrurile blo coperează pe subdiviziuni ale mesajului în clar (lungimi tipice 32-128)
iar blocurile de intrare se procesează individual prin operaţii elementare de substituţie şi
permutare,pot opera şi pe blocuri multiple si sunt (în general) construite pornind o structură
canonică (cifruFeistel)
Criptare

Decriptare se face prin prelucrare inversă:


Standardul AES

Standardul AES (Advanced Encription Standard) reprezintă un algoritm criptografic


folosit pentru protecţia datelor electronice, aprobat de FIPS (Federal Information Processing
Standards Publications). Algoritmul AES este un cifru bloc simetric capabil să cripteze sau să
decripteze informaţia folosind chei criptografice pe 128,192, respectiv 256 de biţi . Acest
standard de criptare a intrat în aplicare începând cu 26 Mai 2002.
Standardul implementează algoritmul Rijndael care are posibilitatea de a procesa
blocuri de date de 128 de biţi folosind chei de 128,192 şi respectiv 256 de biţi. Algoritmul
Rijndael este capabil sa lucreze şi cu alte lungimi ale blocurilor de date şi ale cheilor
criptografice, dar acestea nu sunt adoptate în standardul AES. Din punct de vedere al
dimensiunii cheii criptografice, cele trei versiuni ale algoritmului sunt cunoscute şi sub
numele de “AES-128”, “AES-192” şi“AES-256”.

TERMENI

Bloc – secvenţă de biţi care conţine intrarea, ieşirea, matricea de stare şi cheia ciclică.
Blocurile pot fi interpretate de asemenea ca şi vectori de biţi.
Criptare – o serie de transformări care convertesc datele necriptate în date criptate folosind o
cheie
Cheia de criptare – cheie criptografică, folosită de algoritmul de extindere a cheii pentru a
genera cheia ciclică. Poate fi privită ca şi o matrice nepătratică de octeţi, având 4
rânduri şi Nk coloane.
Date criptate – datele de ieşire ale operaţiei de criptare sau datele de intrare ale decriptării
Extinderea cheii – rutină care generează un set de chei ciclice din cheile de criptare
Date necriptate – datele de intrare ale criptării sau datele de ieşire ale decriptării
Cheia ciclică – valori derivate din cheia de criptare, folosind rutina de extindere a cheii; este
aplicată apoi matricii de stare în cadrul criptării sau decriptării
Matrice de stare – rezultat intermediar al criptării care se poate reprezenta ca şi o matrice
nepătratică de octeţi cu 4 linii şi Nb coloane
Matrice de substituţie (S-Box) – tabel neliniar de substituţie utilizat în substituţiile octeţilor şi
cadrul rutinei de extindere a cheii pentru substituirea fiecărui octet
Algoritmul AES se bazeaza pe permutari si substitutii.
Permutarile sunt interschimbari ale pozitiilor bitilor dintr-un bloc criptat, iar substitutiile
inlocuiesc un caracter din mesajul in clar cu un alt caracter in mesajul criptat. Operatia de
substitutie introduce confuzie iar cea de permutare induce difuzie.

Operaţiile interne ale algoritmului AES se realizează pe o matrice bidimensională de


octeţi numită matrice de stare. Matricea de stare este formată din 4 rânduri de , fiecare
conţinând Nb octeţi, unde Nb este egal cu lungimea blocului împărţită la 32. Un element din
matricea de stare se notează cu sr,c sau s[r,c] (rândul r şi coloana c). Elementele sunt repretate
în baza 16 (hexazecimal).
În cadrul criptării respectiv decriptării, vectorii de intrare (in 1..15 ) sunt copiaţi în
matricea de stare după regula: s[r,c] = in[r + 4c]
după care toate prelucrările necesare obţinerii vectorilor de ieşire (out 1..15 se vor
efectua pe matricea de stare
Elementele vectorilor de ieşire sunt copiaţi din matricea de stare la finalul criptării
Intrarea, ieşirea şi matricea de stare
după regula:
out[s+4c] = s[r,c]
Elementele matricii de stare, care sunt constituite din 4 octeţi, se pot rescrie sub forma
unor cuvinte de 32 de biti sub forma:
wi = s 0,i s 1,i s 2,i s 3,i
Runda AES - succesiune de operatii asupra unei stari folosind subchei de runda
distincte obtinute în urma unei operatii de expandare a cheii initiale (generare de subchei de
aceeasi lungime, 128). Utilizarea de runde multiple cu chei distincte imbunatateste
proprietatile de difuzie ale cifrului.
Prin expandare cei 128 debiti ai cheii sunt transformati in 1408 biti ce intervin in
operatii de SAU-EXLUSIV.

Pentru algoritmul AES lungimea secvenţei de intrare, a celei de ieşire şi a matricii de


stare este de 128 de biţi.
. Numărul ciclurilor necesare executării algoritmului depinde de mărimea cheii, ca şi în
tabelul de mai jos.

Lungimea cheii Mărimea blocului Numărul de cicluri


AES-128 4 4 10
AES-192 6 4 12
AES-256 8 4 14

Algoritmul AES utilizează o funcţie ciclică atât pentru criptare cât şi pentru
decriptare, care execută patru transformări diferite pe octet:
1) octeţii se substituie folosind un tabel predefinit de substituţie,
2) liniile din matricea de stare sunt deplasate folosindu-se diferite valori de offset,
3) datele cuprinse în fiecare coloană a matricii de stare sunt amestecate între ele
4) adăugarea cheii ciclice la matricea de stare.
Funcţia SubBytes()-substitutie octeti
Această funcţie execută o transformare neliniară prin care sunt substituiţi octeţii din
matricea de stare prin utilizarea tabelului de substituţie S-box. Acest tabel este inversabil şi
este construit prin compunerea a două transformări pe biţi:
1) se ia inversul faţă de înmulţire în GF(28), elementul {00}fiind de sine stătător,
2) se aplică transformarea peste GF(2), obţinându-se noul element
Fiecare octet este calculat astfel:
Stare intrare: Stare iesire:

95 2
a

Figura următoare ilustrează efectul funcţiei SubBytes() asupra matricii de stare:


Efectul Funcţiei SubBytes()

Funcţia ShiftRows()-Rotire randuri– opereaza la nivel de rand al matricii de stare. Pasul


consta in simpla deplasare ciclica a octetilor de pe randuri, astfel:
- Primul rand nu se deplaseaza

- Al doilea rand se deplaseaza la stanga cu o pozitie

- Al treilea rand se deplaseaza la stanga cu doua pozitii

- Al patrulea rand se deplaseaza la stanga cu 3 poziti

Rezultatul acestui pas este ca fiecare coloana din tabloul stare rezultat este compusa din
octeti de pe fiecare coloana a starii initiale.
Criptarea presupune rotiri catre stanga iar decriptarea presupune rotiri catre dreapta.
Octetii din ultimele 3 randuri din variabila stare sunt permutati ciclic cu un anumit
numar de octeti (offset). Primul rand nu este permutat, r=0.

Efectul Funcţiei ShiftRows()

Funcţia MixColumns()-Amestec coloane

Fiecare coloana a tabloului de stare este considerata un polinom de gradul patru peste
campul Galois. Fiecare coloana, tratata ca un polinom, este inmultita modulo x4 + 1 cu
polinomul a(x) = 3x3 + x2 + x + 2. In acest pas, fiecare cloana este inmultita cu un polinom
notat mai jos cu c(x).

In termeni de multiplicare matriciala, operatia de amestec coloane arata astfel:


Unde primul vector coloana contine elementele rezultate in urma inmultirii, iar al doilea
vector coloana contine elementele inaintea aplicarii pasului.
Rezultatul are proprietatea ca fiecare element al sau depinde de toate elementele de pe
coloana starii dinaintea efectuarii pasului. Combinat cu pasul ShiftRows, acest pas asigura ca
dupa cateva iteratii, fiecare octet din stare depinde de fiecare octet din starea initiala (tabloul
populat cu octetii mesajului in clar). Acesti doi pasi, impreuna, sunt principala sursa de
difuzie in algoritmul Rijndael.
Coeficientii polinomului a(x) sunt toti 1, 2 si 3, din motive de prformanta, criptarea
fiind mai eficienta atunci cand coeficientii sunt mici. La decriptare, coeficientii pasului
corespunzator acestuia sunt mai mari si deci decriptarea este mai lenta decat criptarea. S-a
luat aceasta decizie pentru ca unele din aplicatiile in care urma sa fie folosit algoritmul
implica numai criptari, nu si decriptari, deci criptarea este folosita mai des.

AddRoundKey()-Adunare cheie runda

Se efectueaza o operatie de SAU EXCLUSIV pe biti intre octetii starii si cei ai cheii
de runda (o cheie care este unica pentru fiecare iterartie, chie calculata pe baza cheii secrete).
CBC-Cipher BlockChainingMode –fiecare bloc criptat criptat cu aceeaşi cheie; metoda
presupune suplimentar o operaţie SAU EXCLUSIV între blocul criptat curent şi mesajul în
clar următor.
Dezavantaj CBC:
-erorile aparute in procesul de transmisie intr-un bloc criptat afecteaza si blocurile
urmatoare.

-vector de iniţializare –asigură aleatorizarea în debutul procesului de criptare CBC;


-în absenţa acestuia mesaje în clar identice ar conduce la mesaje criptate identice
-vectorul de iniţializare trebuie transmis receptorului (de obicei în mod EBC)
Bibliografie

 CURS Conf. Dr. Ing.Terebes Romulus


 M. Borda – Teoria transmiterii informaţiei
 http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf
 http://www.hoozi.com/Articles/AESEncryption.htm

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