Presentation is loading. Please wait.

Presentation is loading. Please wait.

Implementarea securitatii in sistemele informatice folosind Java

Similar presentations


Presentation on theme: "Implementarea securitatii in sistemele informatice folosind Java"— Presentation transcript:

1 Implementarea securitatii in sistemele informatice folosind Java
Student: Dragoi Alexandru Master IISC

2 Cuprins Introducere Arhitectura de baza Criptografie
Infrastructura de chei publice Autentificarea Securizarea comunicatiei Descrierea aplicatiei

3 Introducere Platforma Java a fost proiectata punandu-se un accent mare pe securitate Cu cat platforma a crescut ca dimensiuni in timp, arhitectura specifica securitatii in Java a evoluat pentru a oferi suport setului tot mai mare de servicii. In ziua de astazi, arhitectura corespunzatoare securitatii include un set mare de interfete de dezvoltare (API-uri), unelte si implementari ai celor mai folositi algoritmi de securitate, mecanisme si protocoale API-uri ofera pe de o parte dezvoltatorilor un framework de securitate simplu de inteles pentru dezvoltarea aplicatiilor, si, pe de alta parte furnizeaza utilizatorilor si administratorilor metode de folosire si administare in siguranta a aplicatiilor API-ul de Java security acopera o gama larga de domenii: infrastructura criptografica si de chei publice ofara o baza pentru dezvoltarea unor aplicatii securizate; interfetele pentru autentificare si control al accesului permit aplicatiilor sa respinga accesul neautorizat si sa protejeze datele Serviciile dezvoltate de catre furnizori sunt integrate in platforma de dezvoltare Java cu ajutorul unei interfete standard, ceea ce usureaza modul in care aplicatiile obtin aceste servicii fara a cunoaste detalii despre implementarea acestora. Dezvoltatorii trebuie sa se concentreze numai asupra integrarii lor mai degraba decat sa dezvolte mecanisme complexe de securitate.

4 Arhitectura de baza (1) Setul de interfete acopera zone importante cum ar fi infrastructura bazata pe chei publice, autentificarea, comunicarea securizata si controlul accesului si a fost dezvoltata in jurul urmatoarelor principii: Independenta in implementare – nu este nevoie sa implementeze securitate in aplicatii.Serviciile de securitate sunt implementate in furnizori si sunt integrate in platforma de dezvoltare via interfetei standard. O aplicatie se poate baza pe mai multi furnizori independenti pentru a oferi securitate Interoperabilitatea implementarii – furnizorii sunt interoperabili intre aplicatii. Mai exact o aplicatie nu este legata de un furnizor specific si nici furnizorii nu sunt legati de o aplicatie specifica. Extensibilitatea algoritmilor – serviciile de securitate implementate de catre furnizori sut larg folosite in ziua de azi. In ciuda acestui fapt, unele aplicatii se pot baza pe anumite standarde care nu sunt inca implementate sau pe servicii proprietare. Platforma Java suporta instalarea furnizorilor doriti care implementeaza acele servicii.

5 Arhitectura de baza (2) Furnizorii de servicii de securitate
Clasa java.security.Provider incapsuleaza notiunea de furnizor de servicii; specifica numele furnizorului si listeaza serviciile de securitate pe care le implementeaza Serviciile pe care un furnizor le poate implementa includ: - algoritmi (de ex. DSA, RSA, MD5, SHA-1) - generarea cheilor, conversii si managementul facilitatiilor (cheile specifice algoritmilor) Aplicatiile se bazeaza pe metoda getInstance pentru a obtine serviciul de securitate de la un furnizor; spre exemplu crearea unui message digest (functie de hash criptografica care ia un bloc arbitrar de date si returneaza un bloc String-alfanumeric de date de lungine fixa– valoare de hash, astfel incat o schimbare neintentionata/intentionata a datelor sa modifice valoarea de hash ) reprezinta un tip de serviciu pe care un provider il poate oferi disponibil O aplicatie invoca metoda getInstance din clasa java.security.MessageDigest pentru a obtine o implementare a unui algoritm de hash specific (message digest), cum este MD5: MessageDigest md = MessageDigest.getInstance("MD5"); Se poate cere o implementare specifica unui anumit provider, indicand in plus ca paramentru numele acestuia, ca in exemplul urmator: MessageDigest md = MessageDigest.getInstance("MD5", "ProviderC");

6 Arhitectura de baza (3) Furnizorii de servicii de securitate
Figurile 1 si 2 ilustreaza aceste optiune de a cere o anumita implementare a algoritmului de hash MD5 in ambele figuri exista trei furnizori care implementeaza diversi algoritmi de message digest In figura 1, o aplicatie cere implementarea algoritmului MD5 fara a specifica numele furnizorului. Astfel, furnizorii sunt cautati in ordinea preferintei si implementarea primului furnizor care ofera algoritmul respectiv, Provider B, este returnata In figura 2, aplicatia cere implementarea MD5 de la un furnizor specificat explicit, Provider C Fig. 1 Cautarea furnizorului Fig. 2 Cererea implementarii de la un furnizor specificat

7 Criptografie Java criptography reprezinta un framework pentru dezvoltarea functionalitatiilor legate de criptografie in platforma Java. Incude API-uri pentru majoritatea serviciilor criptografice, incluzand: - algoritmi message digest - algoritmi de semnatura digitala - criptarea simetrica si asimetrica - message authentication codes (MAC’s) Interfetele specifice criptografiei sunt bazate pe furnizori, permitand multiple implementari interoperabile. Unii furnizori pot efectua operatii criptografice in software; altii pot realiza operatii pe un token hardware (de exemplu pe dispozitive smartcard) Platforma Java include furnizori predefiniti pentru cei mai utilizati algoritmi criptografici, incluzand algoritmii RSA si DSA de semnatura, algoritmii de criptare DES, AES si ARCFOUR, si algoritmii de hash MD5 si SHA-1. Acesti furnizori implementeaza algoritmii criptografici in cod Java.

8 Infrastructura de chei publice
Infrastructura de chei publice (PKI) este un termen folosit pentru un framework care permite un schimb de informatii securizat bazat pe arhitectura de chei publice (se folosesc algoritmi de chei asimetrice in locul sau laolalta cu algoritmii de chei simetrice). Permite persoanelor/organizatiilor sa utilizeze cetificatele digitale si ofera mijloace de verificare a autenticitatii certificatelor. Platforma Java incude suport pentru certificate digitale X.509 si pentru CRL-uri. Clasele asociate cu PKI-urisunt localizate in pachetele java.security si java.security.cert Stocarea certificatelor si a cheilor Platforma Java permite o stocare persistenta a cheilor si a certificatelor via depozitelor de certificate si chei clasa java.security.KeyStore reprezinta un depozit de chei, permitand stocarea cheilor criptografice si/sau a certificatelor digitale de tip trusted (pentru a fi utilizate ulterior in validarea cu ajutorul certificatelor) clasa java.security.CertStore care reprezinta un depozit de certificate. Un CertStore poate stoca si certificate Furnizorul SunPKCS11 include o implementare KeyStore PKCS11. Acest lucru inseamna ca certificatele si cheile pastrate intr-un hardware securizat (spre exemplu intr-un smartcard) pot fi accesate si utilizate de aplicatiile Java via API-ului KeyStore. Ca o observatie cheile din smartcard-uri nu le este permis sa parasesca dispozitivul. In aceste cazuri obiectul java.security.Key returnat de API-ul KeyStore ar putea fi o simpla referinta la cheie (acest lucru insemnand ca nu contine explicit cheia).

9 Autentificarea Autentificarea reprezinta procesul de determinare a identitatii unui utilizator Platforma Java contine API-uri care permit aplicatiilor sa foloseasca autentificarea prin modulele de login Aplicatiile pot apela clasa LoginContext (din pachetul javax.security.login) care reprezinta o configuraratie. Configuratia specifica care modul de login va realiza autentificarea Deoarece aplicatiile comunica numai cu API-ul de LoginContext, ele pot ramane independente de modulele introduse. Modulele pot fi adaugate si modificate intr-o aplicatie fara a trebui sa modifici aplicatia in sine Fig. 3 Modulele de autentificare introduse in framework-ul de autentificare

10 Securizarea comunicatiei
Datele care circula in retea pot si accesate de cineva care nu este destinatarul mesajelor. Cand datele contin informatii confidentiale (cum ar fi parole sau numere de carti de credit) , atunci ele trebuie facute neinteligibile pentru persoanele neutorizate Este de asemenea important sa te asiguri ca datele sunt trimise cui trebuie (destinatarilor intentionati) si ca ele nu au fost modificate (intentionat sau neintentionat) in timpul transportului lor SSL/TLS Platforma Java contine API-uri pentru implementarea protocoalelor SSL si TLS care includ functionalitati pentru criptarea datelor, pastrarea integritatii mesajelor, autentificarea serverelor si optional, autentificarea la nivel de client Aplicatiile pot utiliza SSL si TLS pentru a realiza un pasaj securizat prin care datele pot parcurge drumul intre doi parteneri de comunicare, utilizand orice tip de protocol cum ar fi HTTP peste TCP/IP Clasa javax.net.ssl.SSLSocket reprezinta un socket de retea care incapsuleaza suportul de SSL/TLS peste un socket normal de flux de date (java.net.Socket).

11 Descrierea aplicatiei
Aplicatia de fata verifica integritatea fisierelor dintr-un director specificat ca parametru in linia de comanda, pe baza calculului functiei de hash (message digest) inainte si dupa o presupusa modificare a fisierelor Valorile sunt apoi comparate si, in functie de rezultat, se poate spune care dintre fisiere au fost modificate intre timp Valoarea functiei de hash reprezinta un bloc fix de date calculat be baza unui bloc de date digitale de lingime variabila, in scopul de a detecta eventualele erori care pot fi introduse in timpul transmisiei informatiei si a stocarii Integritatea datelor poate fi verificata la un moment ulterior prin recalcularea hash-ului si compararea cu cel existent; daca cele doua valori nu corespund, se poate spune ca datele au fost modificate cu siguranta (intentionat sau nu) Procedura care sta in spatele verificarii integritatii este functia de hash. Un algoritm bun de hash va raporta un rezultat diferit cu o mare probabilitate atunci cand datele sunt corupte

12 Descrierea aplicatiei (2)
Fig. 4 Functia de hash criptografica SHA-1

13 Descrierea aplicatiei (3)
In figura de mai sus sunt ilustrate cateva din rezultatele pe care le poate produce o functie de hash criptografica (mai exact SHA-1) A se observa ca cele mai mici modificari in valoare mesajului de intrare (in cazul de fata asupra cuvantului “over”) pot produce schimbari drastice asupra rezultatului de iesire (message digest). O functie buna de hash are patru proprietati semnificative: este foarte usor a se calcula valoarea de hash din orice mesaj dat; este imposibil sa reconstruiesti mesajul initial dintr-un hash dat; este imposibil sa modifici un mesaj fara a-i schimba hash-ul; este imposibil sa gasesti doua mesaje diferite care au acelasi hash

14 Descrierea aplicatiei (4)
Aplicatia consta in doua etape: una pentru generarea unui raport asupra fisierelor dintr-un folder dat; a doua parte consta in compararea fisierelor din folderul respectiv cu raportul generat anterior si afisarea fisierelor noi adaugate, lipsa sau modificate Parametrii din linia de comanda necesari pentru generarea raportului sunt: -p Calea catre directorul asupra caruia vrem sa verificam integritatea -f Calea catre fisierul-raport care va fi generat si utilizat ulterior pentru comparatie. -r Calea catre fisierul care va contine output-ul comparatiei – aplicabil numai pentru operatia de comparare -o Tipul operatiei -verbose Pentru a afisa mai multe detalii la output Operatia poate fi: g Generare a raportului c Compare folosind fisierul-raport Ordinea parametriilor in linia de comanda nu este importanta.

15 Descrierea aplicatiei (5)
Exemplu pentru generarea fisierului-raport: java JavaIntegrityChk -p C:\Users\alex\Desktop\TestFolder\DH -f C:\Users\alex\Desktop\TestFolder\integrity.txt -o g –verbose Fig. 5 Continutul fisierului integrity.txt

16 Descrierea aplicatiei (6)
Exemplu pentru comparare: java JavaIntegrityChk -p C:\Users\alex\Desktop\TestFolder\DH -f C:\Users\alex\Desktop\TestFolder\integrity.txt –r C:\Users\alex\Desktop\TestFolder\compare.txt -o c –verbose Fig. 6 Output-ul la comparare

17 Bibliografie 1. Java SE Security Documentation, 2. Sun Introduction to Public-Key Criptography, 3. Java Authentication and Authorization Service (JAAS) Reference Guide, 4. Cryptographic hash functions,

18 Va multumesc !


Download ppt "Implementarea securitatii in sistemele informatice folosind Java"

Similar presentations


Ads by Google