Sunteți pe pagina 1din 7

1.

Algoritmi clasici

Cifruri cu chei private DES (Data Encryption Standard)


n anul 1972, NBS (National Bureau of Standars) contientizeaz necesitatea uniu algoritm criptografic puternic care s protejeze informaii non-secrete. Algoritmul trebuia s fie ieftin, disponibil tuturor i foarte sigur. IBM a nceput s studieze acest algoritm care, dup mai multe modificri realizate de NBS i NSA (National Security Agency) a fost publicat n 1977, numindu-se DES. DES cripteaz i decripteaz datele n blocuri de 64 bii, folosind o cheie de lungime 64 bii. Din cei 64 de bii ai cheii, doar 56 sunt folosii propriu-zis de algoritm, restul de 8 fiind folosii ca bii de paritate. Blocul de text n clar de la intrare este de 64 bii, rezultnd la ieire un bloc de 64 bii de text cifrat. Datorit faptului c opereaz pe blocuri de aceeai dimensiune i folosete att permutarea ct i substituia, DES este considerat n egal msur un cifru bloc i un cifru produs (un cifru bloc care itereaz mai multe operaii simple n urma crora rezult un cifru mai puternic). DES este alctuit din 16 pai identici de procesare, numii runde, care produc textul cifrat. n urma studiilor s-a concluzionat c numrul de runde este exponenial proporional cu timpul necesar aflrii cheii secret folosind atacul de tip for brut. Pe msur ce crete numrul de runde, securitatea algoritmului crete exponenial.

Fig. 1. Algoritmul DES (2) Paii de procesare: (2) 1. Textul n clar este mprit n blocuri de 64 bii. 2. Din cheia de 56 bii se genereaz 16 chei de 48 bii. Cheia de 56 bii folosit pentru criptare este n realitate folosit doar la generarea primei sub-chei i nu este folosit n mod direct pentru criptarea datelor. 3. Textul n clar, o dat mprit n blocuri, este supus unui proces de permutare bazat pe un table care specific modul n care biii sunt permutai: bitul unul este mutat pe poziia bitului 40, bitul 2 pe poziia 23 etc. 4. Dup realizarea permutrii, biii sunt trecui prin cele 16 runde, folosind cte una din cele 16 sub-chei generate.

5. Cei 64 bii creai la pasul 3 sunt pasai unei runde, unde sunt mprii n 2 blocuri de cte 32 bii i procesai cu cheia corespunztoare rundei respective. 6. Pasul 4 este repetat de 16 ori. Rezultatul unei runde este livrat urmtoarei runde. 7. Dup terminarea celei de-a 16-a runde, cele 2 jumti de cte 32 bii sunt lipite, rezultnd un bloc de 64 bii. 8. Blocul de 64 bii este din nou permutat, folosind funcia invers celei de la pasul 3.

3DES
Cnd s-a constatat c cheile de 56 bii folosite de DES nu sunt suficiente pentru a proteja datele mpotriva atacurilor de tip for brut, 3DES a fost soluia pentru mrirea spaiului cheilor fr a schimba algoritmul. 3DES, numit i Triple DES, este un cifru bloc care aplic de 3 ori DES.

Fig. 2. Triple DES Utilizarea celor trei pai este important pentru a evita atacurile meet-in-the-middle. Triple DES, cu 3 chei diferite de 56 bii are o lungime a cheii de 168 bii. Datorit atacurilor meet-in-the-middle, securitatea efectiv este doar de 112 bii. Cel mai eficient atac asupra 3DES cu trei chei necesit aproximativ aproximativ 232 texte clare cunoscute, 2113 pai, 290 criptri DES individuale, i 288 uniti de stocare. (3)

AES(Advanced Encryption Standard)/Rijndael

Acest standard precizeaz algoritmul Rijndael, un cifru simetric de tip bloc care poate procesa blocuri de date de 128 biti, folosind chei cu lungimi de 128, 192 sau 256 bii. n publicaia FIPS nr. 197 (4), operaiile sunt definite sub forma unor operaii pe matrice. La nceput, blocul este copiat ntr-un tablou numit state, cte 4 octei pe o coloan ( dupa relaia s[r, c] = in[r + 4c]).

Fig. 3. Tabloul state (4) Algoritmul modific la fiecare pas acest tablou state, i l furnizeaz apoi ca ieire. Funcionarea sa este descris de urmtorul pseudocod (4): 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 Nr1 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 Nb reprezint numrul de coloane ale tabloului state(n varianta standard este egal cu 4), Nr are o valoare egal cu 10, 12 sau 14, n funcie de lungimea cheii (128,192,256). Metoda SubBytes este un cifru de substituie, metoda ShiftRows const n deplasarea ciclic a octeilor de pe rnduri, astfel: primul rnd nu se deplaseaz; al doilea rnd se deplaseaz la stnga cu o poziie; al treilea rnd se deplaseaz la stnga cu dou poziii; al patrulea se deplaseaz la stnga cu trei poziii. (4) n pasul MixColumns fiecare coloan a tabloului este nmulit cu un polinom urmnd ca la pasul AddRoundKey s fie folosit cheia. El const ntr-o simpl operaie de sauexclusiv pe bii ntre tabloul state i cheia de rund (o cheie unic pentru fiecare iteraie, cheie calculat pe baza cheii secrete).

Blowfish
Blowfish este un cifru simetric bloc care poate nlocui DES sau IDEA. El necesit o cheie de lungime variabil, ntre 32 i 448 bii. Blowfish a fost conceput n 1993 de ctre Bruce Schneier, ca o alternativ gratuit i rapid la algoritmii de criptare existeni. Blowfish este nepatentat, nu necesit cumprarea unei licene i este disponibil gratuit pentru toi utilizatorii. Articolul (5) original care prezint cifrul a fost prezentat la workshop-ul First Fast Software Encryption de la Cambridge, UK (urmnd s fie publicat de Springer-Verlag, Lecture Notes in Computer Scrience #809,1994). Blowfish este o reea Feistel care itereaz o funcie simpl de criptare de 16 ori. Fiecare ciclu este format dintr-o permutare dependent de cheie i o substituie dependent i de cheie li de date. Dimensiunea blocului este de 64 bii, cheia are o lungime variabil de pn la 448 bii. Algoritmul const n dou pari: expandarea cheii i criptarea datelor. n urma expandrii cheii, o cheie de pn la 448 bii se transform n mai multe matrici de sub-chei care totalizeaza 4168 bii. Toare operaiile sunt adunri i aplicari de funcii XOR pe cuvinte de 32 bii.

IDEA
IDEA (International Data Encryption Algoritm) este un cifru bloc proiectat de Xuejia Lai i de James Massey n Elveia, n anul 1991. Scopul algoritmul era de a nlocui standardul DES. IDEA este o versiune revizuit a unui cifru mai vechi, PES(Proposed Encryption Standard). Iniial, IDEA a fost numit IPES(Improved PES). Cifrul a fost proiectat n cadrul unui contract de cercetare cu Fundaia Hasler, care a devenit parte din Ascom-Tech AG. Cifrul e patentat n mai multe ri dar este disponibil gratuit pentru uz non-comercial. Numele IDEA este marc nregistrat. Brevetul va expira in 20102011. IDEA opereaz pe blocuri de 64 bii, folosind o cheie de 128 bii i const ntr-o serie de 8 transformri (runde) identice i o transformare final. Din cheia de 128 bii sunt derivate 62 de sub-chei a cte 16 bii fiecare. Dou dintre ele sunt folosite n cadrul fiecrei runde, patru sunt folosite naintea fiecrei runde i dup ultima rund. Blocul de text n clar este divizat n 4 sub-blocuri de 16 bii. Sunt folosite 3 operaii pentru a combina dou valori de 16 bii ntr-un rezultat de 16 bii: adunare, XOR i nmulire. n diagrama de criptare (Fig. 6, Fig. 7)se folosesc urmtoarele simboluri: - nmulire modulo - Adunare modulo - XOR pe bii

Fig. 3. Diagrama de detaliu a criptrii IDEA (6)

Fig. 4. Diagrama de criptare IDEA (6)

Durata necesar criptrii/decriptrii


S-a construit o clas numit Test n limbajul de programare Java, folosind facilitile oferite de JCE(Java Cryptography Extension). Scopul acesteia este de a testa diveri algoritmi clasici de criptare simetric i de a calcula timpii necesari criptrii i decriptrii. n scopul criptrii s-a ales o secven de tip String, unic n cazul tuturor testelor, care reprezint o secven din ADN-ul uman. Secvena de testare este: TAACAGATTGATGATGCATGAAATGGGCCCATGAGTGGCTCCTAAAGCAGCTG CTtACAGATTGATGATGCATGAAATGGGgggtggccaggggtggggggtgagactgcagagaaaggcaggg ctggttcataacaagctttgtgcgtcccaatatgacagctgaagttttccaggggctgatggtgagccagtgagggtaagtacacagaacatc ctagagaaaccctcattccttaaagattaaaaataaagacttgctgtctgtaagggattggattatcctatttgagaaattctgttatccagaatgg cttaccccacaatgctgaaaagtgtgtaccgtaatctcaaagcaagctcctcctcagacagagaaacaccagccgtcacaggaagcaaag aaattggcttcacttttaaggtgaatccagaacccagatgtcagagctccaagcactttgctctcagctccacGCAGCTGCTTTAG GAGCCACTCATGaG

Pentru a putea calcula intervalul de timp necesar criptrii, respectiv decriptrii, s-a folosit metoda public static long currentTimeMillis() din clasa System care returneaz ora de la momentul respectiv n milisecunde. Pentru a afla timpul necesar criptrii, s-au realizat 2 apeluri ale metodei currentTimeMillis() n urmtorul mod:

long start1=System.currentTimeMillis(); Cipher DESCipher = Cipher.getInstance("DES"); DESCipher.init(Cipher.ENCRYPT_MODE, DESKey); byte[] ciphertext = DESCipher.doFinal(plaintext); long end1=System.currentTimeMillis(); Primul apel s-a fcut naintea instanierii obiectului Cipher iar cel de-al doilea dupa realizarea criptrii. n cazul decriptrii s-a procedat similar. Pentru a afla durata necesar celor dou operaii s-a calculat, n ambele cazuri, diferena dintre cele dou variabile care conineau informaii despre momentul n care s-a realizat apelul: time1=end1-start1; Codul a fost rulat pentru fiecare algoritm. Rezultatele au fost copiate ntr-un tabel Excel, dup care s-a realizat urmtoarea digram.

Fig. 5. Timpul necesar criptrii i decriptrii n cazul diverselor cifruri

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