Transcript Capitol10

Sisteme criptografice
Introducere
Integritatea si autenticitatea
Confidentialitatea
Criptografia cu cheie publica
Introducere
• Metodele criptografice protejeaza traficul
din retea
• Criptologia este stiinta creerii si descifrarii
codurilor secrete
• Criptografia se ocupa cu dezvoltarea si
utilizarea codurilor
• Criptanaliza se ocupa cu descifrarea
codurilor
• Comunicatiile securizate implica
autentificarea, integritatea si
confidentialitatea
• Autentificarea garanteaza ca mesajul nu
este un fals si vine de la cine sustine ca
vine
• Integritatea garanteaza ca nimeni nu a
interceptat mesajul si l-a modificat
• Confidentialitatea garanteaza ca daca
mesajul este capturat nu poate fi descifrat
Integritatea si autenticitatea
•
•
•
•
•
Hash criptografic
Integritatea cu MD5
Integritatea cu SHA-1
Autenticitatea cu HMAC
Managementul cheilor
Hash criptografic
• Functia hash ia datele binare, numite mesaj, si
produce o reprezentare condensata, numita
valoare hash sau message digest
• Hashing-ul este bazat pe o functie matematica
• Functia hashing criptografica este folosita pentru
verificarea si asigurarea integritatii datelor si
pentru verificarea autentificarii
• Valorile hash criptografice sunt numite si digital
fingerprints
• h=H(x)
– H – functia hash
– x – intrarea
– h – valoarea hash
• Proprietati ale functiilor hash criptografice
– Intrarea poate avea orice lungime
– Iesirea are o lungime fixa
– H(x) este usor de calculat
– H(x) este intr-un singur sens si nu este
reversibil
– H(x) este fara coliziuni
• Functiile hash asigura ca datele nu sunt
schimbate accidental
• Functiile hash nu asigura ca datele nu
sunt schimbate deliberat
• Functii hash:
– Message Digest 5 (MD5)
– Secure Hash Algorithm 1 (SHA-1)
Integritatea cu MD5
• Dezvoltat de Ron Rivest
• Secventa complexa de operatii binare care
produce o valoare hash (digest) pe 128 biti
• Lungimea mesajului este de asemenea
codata in valoarea hash
• Implica 64 pasi
• Este putin mai rapid decat SHA-1
• Considerat mai putin sigur decat SHA-1
Integritatea cu SHA-1
• Algoritmul SHA a fost dezvoltat de catre U.S.
National Institute of Standards and Technology
(NIST)
• Algoritmul SHA este specificat in Secure Hash
Standard (SHS)
• SHA-1 corecteaza o greseala din SHA
• Similar cu MD5
• Implica 80 pasi
• Produce o valoare hash (digest) pe 160 biti
• Este putin mai lent decat MD5
• Considerat mai sigur decat MD5
• NIST a publicat patru functii hash
aditionale in familia SHA, cunoscute ca si
SHA-2: SHA-224 (224 biti), SHA-256 (256
biti), SHA-384 (384 biti) si SHA-512 (512
biti)
• NIST a dezvoltat SHA-3, un algoritm de
hashing criptografic mai sigur
Autenticitatea cu HMAC
• Keyed-hash message authentication code
(HMAC sau KHMAC) este un tip de
message authentication code (MAC)
• Un HMAC este calculat folosind un
algoritm care combina o functie hash
criptografica cu o cheie secreta
• Functiile hash sunt baza mecanismului de
protectie al HMAC-urilor
• Doar transmitatorul si receptorul cunosc
cheia secreta
• Iesirea functiei hash depinde de datele de
intrare si de cheia secreta
• Doar partile care au acces la cheia secreta
pot calcula valoarea hash a functiei HMAC
• Furnizeaza autentificarea originii datelor
• Functii HMAC:
– Keyed MD5 (HMAC-MD5), bazat pe
algoritmul de hashing MD5
– Keyed SHA-1 (HMAC-SHA-1), bazat pe
algoritmul de hashing SHA-1
Managementul cheilor
• Generarea
– De obicei automata
– Este necesara utilizarea unor bune
generatoare de numere aleatorii
• Verificarea
– Unele chei sunt mai bune decat altele
– Aproape toti algoritmii criptografici au cateva
chei slabe care nu ar trebui folosite
– Cu ajutorul procedurilor de verificare a cheilor,
cheile slabe pot fi regenerate
• Pastrarea
– Cheile pot fi pastrate in memorie
– Daca sunt scrise pe disk, un Tojan Horse
poate avea acces la chei
• Schimbul
– Mecanism securizat de schimb al cheilor
• Revocarea si Distrugerea
– Revocarea notifica toate partile interesate ca
o cheie a fost compromisa si nu ar mai trebui
folosita
– Distrugerea sterge vechile chei in asa fel incat
previne recuperarea acestora de catre
atacatori
• Termeni folositi pentru descrierea cheilor
– Lungimea cheii este masura in biti
– Spatiul cheii (keyspace) este numarul de
posibilitati care pot fi generate de catre o
anumita lungime a cheii
• O cheie avand n biti lungime produce un
spatiu care are 2^n valori ale cheii posibile
• Tipuri de chei criptografice care pot fi
generate:
– Chei simetrice
– Chei asimetrice
– Semnaturi digitale
– Chei hash
• Chei mai scurte
– Mai putin sigure
– Procesare mai rapida
• Chei mai lungi
– Mai sigure
– Procesare mai lenta
Confidentialitatea
•
•
•
•
•
Criptarea
Data Encryption Standard
3DES
Advanced Encryption Standard
Schimbul de chei Diffie-Hellman
Criptarea
• Criptarea poate furniza confidentialitate la
mai multe nivele ale modelului OSI
incorporand diferite instrumente si
protocoale:
– Legatura de date
– Retea - IPsec
– Sesiune - Secure Sockets Layer (SSL),
Transport Layer Security (TLS)
– Aplicatie - secure email, secure database
session (Oracle SQL*net), secure messaging
(Lotus Notes sessions)
• Abordari pentru asigurarea securitatii
datelor:
– Protectia algoritmului
– Protectia cheilor. Algoritmii sunt publici. Cheile
criptografice asigura secretizarea datelor.
Cheile criptografice sunt secvente de biti care
sunt introduse intr-un algoritm de criptare
impreuna cu datele
• Clase de algoritmi de criptare care
protejeaza cheile:
– Simetrici
– Asimetrici
• Fiecare difera in folosirea cheilor
• Algoritmi de criptare simetrici
– Folosesc aceeasi cheie pentru criptarea si
decriptarea datelor
– Cheia se mai numeste secret key
– Cheia trebuie sa fie pre-shared
– Cheia pre-shared este cunoscuta de catre
transmitator si receptor inainte ca orice
comunicatie criptata sa inceapa
– Algoritmii de criptare pot avea chei de
lungime mai scurta
– Executie mai rapida
– Algoritmii simetrici necesita mai putina putere
de calcul decat algoritmii asimetrici
• Algoritmi de criptare asimetrici
– Folosesc chei diferite pentru criptarea si
decriptarea datelor
– Mesaje securizate pot fi schimbate fara
necesitatea detinerii unei chei pre-shared
– Trebuiesc folosite chei de lungime foarte mare
– Necesita resurse de calcul semnificative
– Executie mai lenta
– Algoritmii asimetrici sunt de sute sau mii de
ori mai lenti decat algoritmii simetrici
Data Encryption Standard
•
•
•
•
•
•
DES
Algoritm de criptare simetric
Uzual opereaza in mod bloc
Cripteaza datele in blocuri de 64 biti
Secventa de permutari si substitutii
Acelasi algoritm si cheie sunt folosite atat pentru
criptare cat si pentru decriptare
• Lungimea cheii fixa, 64 biti, 56 biti folositi pentru
criptare, 8 biti pentru paritate
3DES
• Tehnica aplicarii DES de trei ori unui bloc se
numeste 3DES
• 3DES foloseste o metoda numita 3DES-EncryptDecrypt-Encrypt (3DES-EDE) pentru criptare
– Mesajul este criptat folosind prima cheie de 56 biti K1
– Datele sunt decriptate folosind a doua cheie de 56 biti
K2
– Datele sunt criptate folosind a treia cheie de 56 biti K3
• Procedura 3DES-EDE furnizeaza criptare cu o
lungime a cheii de 168 biti
• Daca cheile K1 si K3 sunt egale lungimea cheii
este de 112 biti
• Pentru decriptarea mesajului este folosit opusul
metodei 3DES-EDE
– Mesajul criptat este decriptat folosind cheia K3
– Datele sunt criptate folosind cheia K2
– Datele sunt decriptate folosind cheia K1
• 3DES este foarte sigur insa foloseste intens
resursele de calcul
• Din acest motiv a fost dezvoltat algoritmul de
criptare AES, la fel de sigur ca si 3DES dar cu
rezultate mult mai rapide
Advanced Encryption Standard
• In 1997 a fost anuntata initiativa AES
• U.S. National Institute of Standards and
Technology (NIST) a selectat cifrul bloc Rijndael
ca si algoritm AES
• Cifrul Rijndael, dezvoltat de Joan Daemen si
Vincent Rijmen, are lungimea blocului si a cheii
variabile
• Lungimea cheii: 128, 192 sau 256 biti
• Lungimea blocului de date: 128, 192 sau 256 biti
• Toate noua combinatiile de lungimi ale cheii si
blocului sunt posibile
Schimbul de chei Diffie-Hellman
• Whitfield Diffie si Martin Hellman au
inventat algoritmul Diffie-Hellman (DH)
• Algoritmul DH este baza majoritatii
metodelor moderne de schimb automat al
cheilor si este unul dintre cele mai comune
protocoale folosite in retelistica
• Nu este un mecanism de criptare
• Este o metoda pentru schimbul securizat
al cheilor care cripteaza datele
• Este un algoritm matematic care permite
la doua calculatoare sa genereze un
shared secret identic
• Noua shared key nu este niciodata
schimbata intre transmitator si receptor
• DH este folosit in IPsec VPN, SSL, TLS
sau SSH
• Algoritmul DH este folosit pentru a crea
chei care vor fi utilizate de catre algoritmi
de criptare simetrici ca si DES, 3DES sau
AES
1. Pentru a porni un schimb DH, partea A si partea
B trebuie sa aleaga doua numere care nu sunt
secrete. Primul numar, g, este un numar baza
(numit si generator). Al doilea numar, p, este un
numar prim folosit ca modul. Aceste numere
sunt publice si sunt alese dintr-un tabel de
valori cunoscute. Tipic, g este un numar foarte
mic si p este un numar prim mai mare.
2. Partea A genereaza un numar secret Xa si
partea B genereaza un numar secret Xb.
Partea A
Shared
1
5,23
Secret
2
Partea B
Calc
6
3
5
5 ^ 6 mod 23 = 8
19 ^ 6 mod 23 = 2 19
Shared
1
5,23
Secret
2
Calc
15 5 ^ 15 mod 23 = 19
4
8 8 ^15 mod 23 = 2
6
3. Folosind g, p and Xa, partea A calculeaza o
valoare publica, Ya, folosind algoritmul DH.
Trimite Ya la partea B.
• Ya = g ^ Xa modulo p
4. Folosind g, p and Xb, partea B calculeaza o
valoare publica, Yb, folosind algoritmul DH.
Trimite Yb la partea A.
• Yb = g ^ Xb modulo p
Partea A
Shared
1
5,23
Secret
2
Partea B
Calc
6
3
5
5 ^ 6 mod 23 = 8
19 ^ 6 mod 23 = 2 19
Shared
1
5,23
Secret
2
Calc
15 5 ^ 15 mod 23 = 19
4
8 8 ^15 mod 23 = 2
6
5. Partea A foloseste algoritmul DH folosind Yb ca
numar baza
• Z = Yb ^ Xa modulo p
6. Partea B foloseste algoritmul DH folosind Ya ca
numar baza
• Z = Ya ^ Xb modulo p
Partea A
Shared
1
5,23
Secret
2
Partea B
Calc
6
3
5
5 ^ 6 mod 23 = 8
19 ^ 6 mod 23 = 2 19
Shared
1
5,23
Secret
2
Calc
15 5 ^ 15 mod 23 = 19
4
8 8 ^15 mod 23 = 2
6
Schimbul de chei Diffie-Hellman
• Ambele parti ajung la acelasi rezultat, Z
• Aceasta valoare este un shared secret intre parti
si poate fi folosit de un algoritm de criptare ca
shared secret key intre parti
Partea A
Shared
1
5,23
Secret
2
Partea B
Calc
6
3
5
5 ^ 6 mod 23 = 8
19 ^ 6 mod 23 = 2 19
Shared
1
5,23
Secret
2
Calc
15 5 ^ 15 mod 23 = 19
4
8 8 ^15 mod 23 = 2
6
Criptografia cu cheie publica
•
•
•
•
Criptarea asimetrica
Semnaturi digitale
Rivest, Shamir si Adleman
Infrastructura cheilor publice
Criptarea asimetrica
• Algoritmii simetrici, numiti si algortimi cu
cheie publica, sunt proiectati astfel incat
cheia folosita pentru criptare este diferita
de cheia folosita pentru decriptare
• Algoritmii asimetrici sunt folositi pentru a
schimba mesaje secrete fara sa fi avut un
secret comun inaintea schimbului
Cheie criptare
Mesaj
necriptat
Criptare
Cheie decriptare
Mesaj
criptat
Decriptare
Mesaj
decriptat
• Algoritmii simetrici folosesc doua chei: o
cheie publica si o cheie privata. Ambele chei
pot cripta, pentru decriptare este necesara
cheia complementara.
• Algoritmii asimetrici furnizeaza
autentificarea, integritatea si
confidentialitatea.
Cheie criptare
Mesaj
necriptat
Criptare
Cheie decriptare
Mesaj
criptat
Decriptare
Mesaj
decriptat
• Confidentialitatea cu algoritmi asimetrici
este obtinuta cand procesul de criptare
este realizat cu cheia publica si procesul
de decriptare este realizat cu cheia privata
• Criptare cu cheie publica + decriptare cu
cheie privata = confidentialitate
• Confidentialitatea este obtinuta deoarece
un singur host are cheia privata
• Autentificarea cu algoritmi asimetrici este
obtinuta cand procesul de criptare este
realizat cu cheia privata si procesul de
decriptare este realizat cu cheia publica
• Criptare cu cheie privata + decriptare cu
cheie publica = autentificare
• Autentificarea este obtinuta deoarece un
singur host are cheia privata
• Pentru asigurarea confidentialitatii,
autentificarii si integritatii este necesara
combinatia a doua faze de criptare
• Faza 1 – confidentialitatea
– Partea A doreste sa transmita un mesaj partii
B asigurand confidentialitatea mesajului
– Partea A foloseste cheia publica a partii B
pentru criptarea mesajului
– Doar partea B poate decripta mesajul,
folosind propria cheie privata
• Faza 2 – autentificarea si integritatea
– Partea A doreste sa asigure autentificarea si
integritatea mesajului
– Partea A foloseste propria cheie privata
pentru a cifra un hash al mesajului
– Partea B poate folosi cheia publica a partii A
pentru a verifica daca mesajul nu a fost
modificat
– In plus, aceasta verifica daca partea A este cu
siguranta transmitatorul mesajului deoarece
nimeni altcineva nu are cheia privata a partii A
Semnaturi digitale
• Folosite in urmatoarele situatii:
– Pentru a furniza dovada sursei datelor, care
pot fi generate doar de o singura parte
– Pentru a autentifica un utilizator folosind cheia
privata a acelui utilizator si semnatura pe care
o genereaza
– Pentru a dovedi autenticitatea si integritatea
certificatelor PKI
– Pentru a furniza un esantion de timp
(timestamp) sigur folosind o sursa de timp de
incredere
• Furnizeaza trei servicii de securitate
– Autenticitatea datelor semnate digital
– Integritatea datelor semnate digital
– Non-repudierea tranzactiei
Autenticitate
Semnatura
digitala
Integritate
Non-repudiere
• Pasii procesului semnaturii digitale:
1.Dispozitivul transmitator (semnatarul) creaza
un hash al documentului
2.Dispozitivul transmitator cripteaza hash-ul cu
cheia privata a semnatarului
3.Hash-ul criptat (semnatura) este adaugat la
document
4.Dispozitivul receptor (verificatorul) accepta
documentul cu semnatura digitala si obtine
cheia publica a dispozitivului transmitator
• Pasii procesului semnaturii digitale
(continuare):
5. Dispozitivul receptor decripteaza semnatura
folosind cheia publica a dispozitivului
transmitator. Acest pas dezvaluie presupusa
valoare hash a dispozitivului transmitator
6. Dispozitivul receptor face un hash al
documentului receptionat, fara semnatura
sa, si compara acest hash cu hash-ul
semnatura decriptat. Daca hash-urile sunt
identice, documentul este autentic
• Folosite pentru a asigura autenticitatea si
integritatea codurilor software
• Algoritmi folositi pentru a efectua semnaturi
digitale
– Rivest, Shamir si Adleman (RSA)
– Digital Signature Algorithm (DSA)
• In 1994 U.S. NIST a selectat DSA ca si Digital
Signature Standard (DSS).
• Acum DSS incorporeaza doua posibilitati
suplimentare
– Digital Signature Using Reversible Public Key
Cryptography (care foloseste RSA)
– Elliptic Curve Digital Signature Algorithm (ECDSA)
• Generarea semnaturii cu DSA este mai rapida
decat verificarea semnaturii cu DSA
• Verificarea semnaturii cu RSA este mai rapida
decat generarea semnaturii cu RSA
Rivest, Shamir si Adleman
• RSA este unul dintre cei mai comuni
algoritmi asimetrici
• Cheile RSA au lungimi cuprinse intre 512 si
2048 biti
• Algoritmul RSA este bazat pe o cheia
publica si o cheie privata
• Cea mai comuna metoda pentru generarea
semnaturilor
• Larg folosita in sisteme e-commerce si
protocoale Internet
• Folosita doar pentru a proteja cantitati de
date mici
Infrastructura cheilor publice
• Public key infrastructure – PKI
• PKI este framework-ul de servicii pentru suportul
tehnologiilor bazate pe chei publice pe scara
larga
• PKI este un set de componente tehnice,
organizationale si legale pentru stabilirea unui
sistem care permite folosirea pe scara larga a
criptografiei cu cheie publica
• PKI creaza, administreaza, stocheaza, distribuie
si revoca certificate digitale
• Certificatele sunt informatii publice care contin
legatura intre numele si cheile publice al entitatilor
• Autoritate de certificate - certificate authority (CA)
• CA este o entitate terta parte de incredere care
emite certificate
• Certificatul unui utilizator este semnat intotdeauna
de un CA
• Fiecare CA are de asemenea un certificat
continand cheia sa publica, semnat de el insusi
(CA certificate sau self-signed CA certificate)