Sunteți pe pagina 1din 22

Masterat E- Business

Securitatea sistemelor de
E-Business
- Curs 4 -

Lector. Dr. Ana-Maria Ghiran


anamaria.ghiran@econ.ubbcluj.ro
Algoritmi de criptare

Algoritmi de criptare:

 1. cu aceeaşi cheie pentru criptare şi decriptare -


Algoritmi cu cheie simetrică sau secretă (K)
c=EK(m)
m=DK(c)

 2. cu cheie pereche (o cheie pentru criptare, KA şi complementul


acesteia, KB pentru decriptare) –
Algoritmi cu cheie asimetrică sau publică
c=EKA(m)
m=DKB(c)
Algoritmii cu cheie simetrică
 Algoritmii cei mai cunoscuţi cu cheie simetrică:
• DES (Data Encryption Standard), foloseşte o cheie de 54 biţi
considerată în prezent prea scurtă
• 3DES- cunoscut ca şi triple-DES, extensie a algoritmului DES,
folosind o lungime triplă a cheii de criptare pe 168 biţi
• AES (Advanced Encryption Standard). înlocuitor al standardului
DES, propus în 2000. AES foloseşte cifrul Rijndael
• Twofish.
• Blowfish.
• IDEA (International Data Encryption Algorithm). un cifru bloc ce nu
este foarte folosit datorită patentării
• RC5
Algoritmul DES

 DES – Data Encription Standard


 Algoritmul a fost proiectat pentru a permite ca decriptarea să
se facă cu aceeaşi cheie ca şi criptarea, o proprietate
necesară în orice algoritm cu cheie secretă.

 Pentru decriptare paşii sunt parcurşi în ordine inversă.

 Foloseşte blocuri de 64 de biţi şi chei de 64 biţi (56+8 biţi


pentru control)
 Are 19 runde distincte (16 runde în care sunt aplicate
subcheile)
Algoritmul DES
 Prima rundă este o permutare
iniţială independentă de
cheie, aplicată asupra textului
clar de 64 de biţi.
 Ultima rundă este exact
inversa acestei permutări
 Penultima rundă schimbă cei
mai din stânga 32 de biţi cu
cei mai din dreapta 32 de biţi.
 Cele 16 runde rămase sunt
funcţional identice, dar sunt
parametrizate de funcţii de
cheie diferite.
Algoritmul DES
 Funcţia Feistel operează la un
moment dat pe jumătate de bloc (32
biţi) şi constă din patru etape:
 1. Extindere – jumătatea de bloc de
32 de biţi este extinsă la 48 de biţi
folosind permutarea de extindere,
prin dublarea a jumătate (16) din biţi;
 2. Mixarea cheii – rezultatul este
combinat cu o sub-cheie (derivată la
fiecare rundă din cheia principală)
utilizând operaţia XOR;
 3. Substituţie – după mixarea sub-
cheii, au loc înlocuiri bazate pe
transformări neliniare asigurate
dintr-un tabel;
 4. Permutare – în final ieşirile sunt
rearanjate folosind o permutare fixă.
Algoritmul DES
 Algoritmul care generează subcheile.
 Inițial, se selecteaza 56 de biți din cheia
principală prin permutarea PC-1
 Chiar înainte de începerea fiecărei iteraţii,
cheia este partiţionată în două unităţi de
câte 28 de biţi, fiecare dintre ele este rotită
la stânga cu un număr de biţi depinzând de
numărul iteraţiei.
 Ki este derivat din această cheie rotită prin
aplicarea unei transpoziţii pe 56 de biţi
asupra ei (PC2) La fiecare rundă este
extrasă şi permutată o altă submulţime de
48 de biţi din cei 56 de biţi.
Algoritmul DES

 Triple DES:
 e un standard bazat pe algoritmul DES
 rulează DES de 3 ori
 poate folosi cele 3 runde ale aplicării DES cu 3 chei diferite,
mai mici: preia mesajul şi îl criptează cu prima cheie (k1),
apoi îl decriptează cu cheia a doua (k2) şi în utima parte îl
criptează cu cheia (k3) - pentru motive de compatibilitate cu
DES (în care cele 3 chei sunt la fel k=k1=k2=k3)
Algoritmul AES

 In ianuarie 1997 NIST a lansat un concurs pentru un nou


standard:
 • Algoritmul trebuie să fie un cifru bloc simetric.
 • Tot proiectul trebuie sa fie public
 • Trebuie să fie suportate chei de 128, 192, şi de 256 biţi
 • Trebuie să fie posibile atat implementări hardware cat şi
software
 • Algoritmul trebuie să fie public sau oferit cu licenţă
nediscriminatorie
• În noiembrie 2001 Rijndael a devenit standard guvernamental al
S.U.A. publicat ca Standard Federal de Procesare a Informaţiilor
Algoritmul AES

 Autorii algoritmului AES au definit un algoritm de criptare


pe blocuri în care lungimea blocului și a cheii puteau fi
independente, de 128 de biți, 192 de biți, sau 256 de biți.

 Specificația AES standardizează toate cele trei
dimensiuni posibile pentru lungimea cheii, dar
restricționează lungimea blocului la 128 de biți.

 AES are 10 iterații la o cheie de 128 de biți, 12 pentru o


cheie de 192 de biți și 14 pentru cea de 256 de biți.
Algoritmul AES

 Cheia şi blocul sunt scrise sub formă de matrice (tablou)


denumit stare sau eng. state iar operaţiile sunt specifice
operaţiilor pe matrice
 Blocul 128biti = 8biti x 16 = 1 byte x 4 x 4
 Unitatea de bază pentru operaţii va fi byte-ul: ex a00, a01 etc
a00 a01 a02 a03
a10 a11 a12 a13
 Paşi importanţi:
a20 a21 a22 a23
 - pasul SubBytes a30 a31 a32 a33
 pasul ShiftRows
 pasul MixColumns
 pasul AddRoundKey:
Algoritmul AES

 Pasul SubBytes: fiecare byte din matricea blocului de


intrare este înlocuit cu altul după un anumit cifru de
substituţie
a00 a01 a02 a03 b00 b01 b02 b03
a10 a11 a12 a13 b10 b11 b12 b13
a20 a21 a22 a23 b20 b21 b22 b23
a30 a31 a32 a33 b30 b31 b32 b33

a00 S b00
Algoritmul AES

 Pasul ShiftRows: deplasează incremental la stânga


fiecare linie din matrice – pentru prima linie cu 0 poziţii,
pentru a doua linie cu o poziţie, a treia cu 2 poziţii iar ultima
cu 3
a00 a01 a02 a03 a00 a01 a02 a03
a10 a11 a12 a13 a11 a12 a13 a10
a20 a21 a22 a23 a22 a23 a20 a21
a30 a31 a32 a33 a33 a30 a31 a32
Algoritmul AES

 Pasul MixColumns: operează coloană după coloană,


înmulţind matricea cu o matrice formată din valori de la 1 la
3 a.î: înmulţirea cu 1 înseamnă că nu sunt modificări,
înmulţirea cu 2 înseamnă deplasare la stânga, înmulţirea cu
3 înseamnă deplasare la stânga şi apoi XOR cu valoarea
nemodificată

2 3 1 1 a00 a01 a02 a03


1 2 3 1 a10 a11 a12 a13
1 1 2 3 a20 a21 a22 a23
3 1 1 2 a30 a31 a32 a33
Algoritmul AES

 Pasul AddRoundKey: o cheie derivată pentru fiecare


rundă este adăugată matricii de stare prin operaţia XOR

a00 a01 a02 a03


a10 a11 a12 a13
a20 a21 a22 a23
a30 a31 a32 a33 b00 b01 b02 b03
b10 b11 b12 b13
b20 b21 b22 b23
k00 k01 k02 k03
b30 b31 b32 b33
k10 k11 k12 k13
k20 k21 k22 k23
k30 k31 k32 k33
Algoritmii cu cheie publică
 Au apărut iniţial din dorinţa de a găsi o modalitate de a transmite cheia
secretă partajată în algoritmii cu cheie simetrică.

 1976 Diffie şi Hellman de la Universitatea Stanford, au propus un tip nou de


algoritm în care cheile de criptare şi decriptare sunt diferite, iar cheia de
decriptare KB nu poate fi dedusă din cheia de criptare KA: Protocolul de
schimb al cheilor Diffie-Hellman

 Una dintre chei poate fi făcută publică KA (cea cu care se criptează mesajul),
iar perechea acesteia va fi cunoscută doar de către cel care doreşte să
descifreze mesajul (cheie privată - KB)

 Algoritmul RSA (denumit după inventatorii săi Ron Rivest, Adi Shamir şi
Leonard Adleman) a devenit aproape sinonim cu criptografia cu cheie publică.
Algoritmii cu cheie publică
 Ideea pe care se bazează este dată de dificultatea de a factoriza
numerele foarte mari.

 Dezavantajul major al acesteia este că necesită chei de cel puţin 1024


de biţi (spre deosebire de 128 biţi pentru algoritmii cu cheie simetrică)
pentru o securitate bună -> solicită putere computaţională mare

A fost precedat de protocolul Diffie –Hellman (1976) ce permite


punerea în acord, prin intermediul chiar a unor medii de comunicaţii
nesecurizate (Internet), asupra unor chei secrete care ar putea fi folosite
ulterior in algoritmii cu cheie simetrică.
Autorii au propus un tip nou de algoritm în care cheile de criptare şi
decriptare sunt diferite, iar cheia de decriptare KB nu poate fi dedusă din
cheia de criptare KA.
Protocoale de schimb a cheilor:

 Diffie-Hellman (D-H): e un protocol prin care două părţi ce


nu se cunosc anterior pot conveni asupra unei chei secrete
1. se convine asupra unui număr prim
p mare şi asupra unui număr întreg
g (ground), ce va fi baza
2. Alice alege un număr secret întreg
a şi calculează cu numărul prim p
şi numărul g: ga mod p, rezultat pe
care îl transmite lui Bob
3. Bob alege şi el un număr secret b
şi realizează aceleaşi calcule: gb
mod p, şi apoi transmite rezultatul
lui Alice
4. Alice şi Bob vor putea calcula o
cheie secretă k, ce va fi o
combinaţie între datele publice,
secretul lui Alice şi secretul lui Bob
Preluare [wikipedia]
Algoritmul RSA
Funcţionare RSA:
• Se aleg două numere prime mari, p şi q, (de obicei de 1024 biţi);
• Se calculează n = p × q şi z = (p - 1)×(q-1);
• Se alege un număr e, mai mic decat n, care este relativ prim
cu z. Il notăm cu e intrucat va fi utilizat pentru criptare;
• Se găseşte d astfel incat e × d – 1 este divizibil cu z. Il notăm
cu d intrucat va fi utilizat pentru decriptare. Cu alte cuvinte
pentru e dat, d trebuie să satisfacă condiţia e × d mod z = 1.
• Cheia publică va fi formată din perechea de numere (n, e), iar
cheia secretă din perechea de numere (n, d).

• Se imparte textul clar (privit ca şir de biţi) in blocuri, astfel incat fiecare mesaj de text
clar, m, să intre in intervalul 0 < m < n.
• Pentru a cripta mesajul m, se calculează c = m e mod n, unde c reprezintă mesajul
cifrat.
• Pentru a decripta mesajul cifrat c, se calculează m = c d mod n.
Cifruri stream
Folosesc operaţia XOR bit cu bit; aplică pseudo generatoare de numere
aleatoare asupra unui şir de biţi iniţial (seed) care va constitui cheia de criptare /
decriptare din algoritm. Şirul de iniţializare nu trebuie folosit de mai multe ori

1. One time pad: necesită o cheie de dimensiune egală cu mesajul, a fost


demonstrat a avea caracteristica unui algoritm de criptare perfect – “perfect
secrecy”

2. RC4(Rivest Cipher 4) foloseşte o cheie fixă ca dimensiune pentru


generarea infinită a altor chei
 Foloseşte un şir S numit state table (tablou de stări) ale cărui valori se
schimbă mereu pentru a genera şirul de chei

A nu se confunda cu alte cifruri precum RC2, RC5 , RC6 care sunt cifruri block
Cifruri stream

 Tipuri de cifruri stream:


1. cifru stream sincron: şirul de numere pseudo-
aleatoare este generat independent de mesajul în clar
sau cifrat; expeditorul şi destinatarul trebuie să fie
sincronizaţi în timp pentru ca decriptarea să se poată
realiza

2. cifru stream autosincron: destinatarul se va


autosincroniza cu generatorul cheii după recepţia a N
biţi din textul cifrat foloseşte N digits din mesajul
criptat pentru a genera şirul cheii.
Cifruri stream
 Odată cu iniţializarea şirului S se execută următorul cod pentru a genera
fiecare byte nou din cheie
 i = (i + 1) mod 256
 j = (j + S[i]) mod 256
 swap (S[i], S[j])
 t = (S[i]+S[j]) mod 256
 K = S[t]

 contorul i parcurge toate intrările din tabloul de stare la fiecare 256 de paşi,
corespunzători celor 256 de bytes ai cheii
 contorul j adaugă propria valoare la valoarea conţinută de poziţia i din
tabloul de stare şi se actualizează
 intrările i şi j sunt schimbate între ele
 contorul t este setat la suma intrărilor de pe i şi j
 bitul din poziţia t ajunge ca bit în cheie

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