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
The sending device inputs the message into a hashing algorithm and computes its fixed-length digest or fingerprint.
The fingerprint is attached to the message and both are sent to the receiver in plaintext.
The receiving device removes the fingerprint from the message and inputs the message into the same hashing algorithm.
If the resulting hash is equal to the one that is attached to the message, the message has not been altered during transit.
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
Data
Received Data
Pay to Terry Smith $100.00 One Hundred and xx/100 Dollars
HMAC (Authenticated Fingerprint)
Secret Key
4ehIDx67NMop9
Pay to Terry Smith $100.00 One Hundred and xx/100 Dollars
4ehIDx67NMop9
Pay to Terry Smith $100.00 One Hundred and xx/100 Dollars
HMAC (Authenticated Fingerprint)
Secret Key
4ehIDx67NMop9
If the generated HMAC matches the sent HMAC, then integrity and authenticity have been verified. If they don’t match, discard the message.
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
• Algoritmi de criptare simetrici – 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
• Algoritmi de criptare asimetrici – Trebuie 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 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.
3. Folosind g, p si 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 si Xb, partea B calculeaza o valoare publica, Yb, folosind algoritmul DH. Trimite Yb la partea A. • Yb = g ^ Xb modulo p
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
• 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
Criptografia cu cheie publica • • • •
Criptarea asimetrica Semnaturi digitale Rivest, Shamir si Adleman Infrastructura cheilor publice
Criptarea asimetrica • Algoritmii asimetrici, 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
• Algoritmii asimetrici 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.
• 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
• 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)
• Public-Key Infrastructure X.509 (PKIX) – Workgroup IETF – Promovarea and standardizarea PKI in Internet
• X.509 – Set de standarde – Formate de date comune – Protocoale legate de PKI
• PKI-urile pot forma diferite topologii de incredere: – Single-root PKI (Root CA) – Hierarchical CA – Cross-certified CA
• Single-root PKI (Root CA)
• Hierarchical CA
• Cross-certified CA
• Procesul de inscriere PKI – CA emitent poate fi: • Root CA • Subordinate CA
– PKI poate folosi registration authorities (RAs) pentru a accepta cereri de inscriere in PKI – Sarcinile RA • Autentificarea utilizatorilor la inscrierea in PKI • Generarea cheilor pentru utilizatorii care nu pot genera propriile chei • Distribuirea certificatelor dupa inscriere