Pentru aceasta aplicatie am ales urmatorii 4 algoritmi de criptare: RSA, ElGamal, AES si SHA. RSA: Algoritm inventat in 1977 de catre Ron Rivest, Adi Shamir si Leonard Adleman (RSA) bazat pe o cheie publica. Este folosit in protocoale ca: -IPSEC/IKE - IP data security -TLS/SSL - transport data security (web) -PGP - email security -SSH - terminal connection security -SILC - conferencing service security -Multe altele Securitatea in RSA este garantata de problema factorizarii.Acest algoritm foloseste numere de peste 1000 de biti lungime. Pentru implementarea acestui algoritm avem nevoie de: -Multi precizie aritmetica -Generator de numere random -Generator de numere prime Algoritm propriu zis: -Generarea cheii 1.generarea a doua numere p si q prime si verificarea daca p!=q 2.Calcularea lui n=pq 3.Calcularea lui Φ=(p-1)(q-1) 4.Alegerea lui e astfel incat 1<e<Φ si e si Φ sa fie prime intre ele 5.Calcularea lui d, d= 6.Cheia publica este {n, e}, cheia privata este d -Criptarea c = memod n, decriptarea: m = cdmod n -Semnatura digitala: s = H(m)dmod n, verificare: m' = semod n,daca m' = H(m) semnatura e corecta. H este o functie hash cunoscuta. Daca cheile nu exista, acestea trebuie generate. Din pacate acest proces cere un timp mare de procesare insa dupa ce sunte generate odata cheile mai pot fi folosite.Primul pas in generare este gasirea a doua numere prime, distincte p si q.Aceste doua numere trebuie sa aiba aceeasi lungime in biti si sa nu fie egale.Se calculeaza n = pq si Φ= (p - 1)(q - 1). Urmatorul pas este gasirea lui e care impreuna cu n va forma cheia publica. e trebuie sa indeplineasca conditiile: 1<e<Φ si cmmmc(e,Φ)=1.De obicei e este mic insa e de preferat e>16 bit. Calcularea cheii private, , d= . Calcularea cheilor private este cea mai importanta parte din algoritmul RSA. Numerele prime trebuie neaparat sa fie prime, altfel algoritmul nu va functiona sau nu e sigur.E important ca e sa nu fie selectat prea mic si , deasemenea ca d sa nu fie calculat prea mic, cu toate ca daca d este mai mic decriptarea este mai rapida. Criptarea se face intotdeauna cu cheia privata care trebuie sa fie autentica. Mesajul care trebuie criptat ,m, este reprezentat ca un numar, 0<m<n-1. Daca m este mai mare decat n , acesta va fi impartit in blocuri mai mici. Mesajul criptat , c, va fi c = mod n, unde n si e repreyinta cheia publica, m mesajul de criptat si c este mesajul criptat. Cheia privata d este folosita pentru decriptare, m = mod n. ElGamal: Acest algoritm a fost inventat in 1984 de catre Taher Elgamal. Se bazeaza pe criptarea cu cheie asimetrica. Algoritmul: -generarea cheii -criptarea propriu zisa -decriptarea Generarea cheii: -generareaeficienta a descrierii unui grup ciclic multiplicativ G ce ordin q cu generator g -alegerea lui x random astfel incat x sa fie din . -calcularea lui h, -cheia publica o constituie h,G,q,g iar cheia privata x Criptarea: -cheia publica este (G,q,g,h) -se alege y random din intervalul si apoi se calculeaza -se calculeaza s, , s nu se pastreaza, se va calcula de fiecare data -mesajul m se converteste in m’care apartine lui G -se calculeaza -textul criptat va fi (c1,c2) AES: AES (de la Advanced Encryption Standard - în limba engleză, Standard Avansat de Criptare), cunoscut şi sub numele de Rijndael, este un algoritm standardizat pentru criptarea simetrică, pe blocuri, folosit astăzi pe scară largă în aplicaţii şi adoptat ca standard de organizaţia guvernamentală americană NIST. Standardul oficializează algoritmul dezvoltat de doi criptografi belgieni, Joan Daemen şi Vincent Rijmen şi trimis la NIST pentru selecţie sub numele Rijndael. Algoritmul În propunerea avansată NIST, cei doi autori ai algoritmului Rijndael 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. Astfel, intrarea şi ieşirea algoritmilor de criptare şi decriptare este un bloc de 128 de biţi. În publicaţia FIPS numărul 197, operaţiile AES sunt definite sub formă de operaţii pe matrice, unde atât cheia, cât şi blocul sunt scrise sub formă de matrice. La începutul rulării cifrului, blocul este copiat într-un tablou denumit stare (în engleză state), primii patru octeţi pe prima coloană, apoi următorii patru pe a doua coloană, şi tot aşa până la completarea tabloului. Algoritmul modifică la fiecare pas acest tablou de numere denumit state, şi îl furnizează apoi ca ieşire. Funcţionarea sa este descrisă de următorul pseudocod: Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)]) begin byte state[4,Nb] state = in AddRoundKey(state, w[0, Nb-1]) for round = 1 step 1 to Nr–1 SubBytes(state) ShiftRows(state) MixColumns(state) AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) end for SubBytes(state) ShiftRows(state) AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1]) out = state end Aici, Nb este numărul de coloane al stării, în varianta standardizată acesta fiind întotdeauna 4. Se observă din descrierea algoritmului că o anumită secvenţă este realizată iterativ, de un număr de Nr ori. Acest Nr depinde de lungimea cheii şi este 10, 12 sau 14, pentru chei pe 128, 192, respectiv 256 biţi.
Ne pare rau, pe moment serviciile de acces la documente sunt suspendate.