Sistem de Protectie a Documentelor Bazat pe Semnătura Digitală

Sistem de protecție a documentelor bazat pe semnătura digitală

Cuprins

Cuprins 2

Capitolul I. Introducere. Domeniul securității informatice 3

Capitolul II. Criptografie și metode criptografice 13

Sisteme criptografice simetrice și cu chei publice 16

Cifrurile simetrice (cu cheie secretă) 17

Moduri practice de cifrare a datelor 19

Cum alegem criptarea în aplicațiile din rețele 21

Cifrurile asimetrice (cu chei publice) 22

Rivest-Shamir-Adleman (RSA) 23

Capitolul III. Scheme de semnături digitale 27

Algoritmul semnăturii digitale DSA 33

Algoritmul semnăturii digitale RSA 35

Algoritmul semnăturii electronice în curbă eliptică (ECDSA) 36

Algoritmul semnăturii digitale El Gamal 36

Algoritmul semnăturii Robin 38

Semnături digitale de grup 40

Protocolul 41

Capitolul IV. RSA 47

Semnătura digitală R.S.A. 51

Performanțe în implementări 53

Securitatea 54

Algoritmul RSA nu mai e atât de sigur 55

Metode de analiză și atac. Atacuri împotriva RSA 58

Algoritmul RSA în aplicații practice 60

Capitolul V. Rezultate și concluzii 62

Bibliografie 65

Capitolul I. Introducere. Domeniul securității informatice

Una dintre caracteristicile societății moderne o reprezintă INFORMATIZAREA. Tehnologii informaționale noi sunt permanent implementate în diverse domenii ale activității umane. Prin utilizarea calculatoarelor și a software-ului respectiv sunt dirijate procese complexe din cele mai diverse domenii de activitate. Calculatoarele stau la baza mulțimilor de sisteme de prelucrare a informației, care înfăptuiesc păstrarea, prelucrarea informației, distribuirea ei către utilizator, realizând astfel tehnologii informaționale moderne.

Odată cu dezvoltarea mecanismelor, metodelor și formelor de automatizare a proceselor de prelucrare a informației crește și dependența societății de gradul de securitate a proceselor de gestionare a informației, realizat prin intermediul diverselor tehnologii informaționale aplicate, de care depinde bunăstarea, sau uneori și viața multor oameni.

Relevanța și importanța problemei de securitate a informației și a tehnologiilor informaționale rezultă din următoarele:

sporirea bruscă a potențialului de calcul al calculatoarelor moderne și simplificarea

exploatării lor;

creșterea rapidă a volumului de informație cu care operează societatea prin intermediul

calculatorului și a altor mijloace tehnice;

concentrarea în baze de date unice a diverselor tipuri de informație (după scop și apartenență);

sporirea impresionantă a numărului de calculatoare personale utilizate în diverse domenii de activitate;

lărgirea considerabilă a cercului de utilizatori care au acces direct la resursele de calcul și la blocurile de date;

dezvoltarea rapidă a instrumentelor software care nu îndeplinesc norme minime de siguranță;

implementarea pe scară largă a tehnologiilor de rețele și conectarea rețelelor locale la cele

globale;

dezvoltarea Internetului, care practic nu împiedică încălcările referitoare la securitatea

sistemelor de prelucrare a informației din întreaga lume.

În ultimii ani, în țările dezvoltate, hârtia a devenit numai un mediu de prezentare a informațiilor, nu și de arhivare sau transport. Aceste ultime două funcții au fost preluate de calculatoare și de rețelele de interconectare a acestora. De aceea au trebuit să fie găsite soluții pentru înlocuirea sigiliilor, ștampilelor și semnăturilor olografe din documentele clasice cu variantele lor digitale, bazate pe criptografia clasica și cu chei publice. Criptografia computațională este tot mai folosită pentru contracararea problemelor de securitate informatică. Utilizată multă vreme doar pentru asigurarea confidențialității comunicațiilor militare și diplomatice, criptografia a cunoscut în ultimii 20 de ani progrese spectaculoase, datorate aplicațiilor sale în securitatea datelor la calculatoare și rețele.

Ameliorarea securității sistemelor informatice trebuie să fie un obiectiv important al oricărei organizații. Trebuie însă avută în vedere asigurarea unui bun echilibru între costurile aferente și avantajele concrete obținute. Măsurile trebuie să descurajeze tentativele de penetrare neautorizată, făcându-le mai costisitoare decât obținerea legală a accesului la aceste programe și date.

Securitatea informației reprezintă un concept care devine din ce în ce mai implicat în multe aspecte ale societății, în mare parte ca urmare a adoptării tehnologiilor de calcul în din ce în ce mai multe domenii. În viața de zi cu zi, mulți dintre noi lucrăm cu computerele, jucam diverse jocuri acasă, participăm la cursuri online pe calculator, achiziționăm diverse produse via Internet, ne verificăm e-mail-urile sau situațiile conturilor bancare prin Internet.

Deși această tehnologie ne permite să fim mai eficienți, accesând o serie de informații cu un click de mouse, aduce de asemenea o serie de probleme legate de securitate. Dacă informațiile de pe calculatoarele folosite de angajatorii noștri sau de băncile la care suntem clienți devin expuse unor atacuri, consecințele pot fi deosebit de grave. Putem de exemplu să rămânem fără fondurile din conturile bancare, acestea fiind transferate într-o bancă din altă țară în mijlocul nopții. Angajatorul nostru ar putea pierde sume foarte mari, ar putea fi pus în fața unor serioase probleme juridice sau chiar să își piardă reputația datorită unei probleme de configurare a sistemului care să permită accesul unui utilizator neautorizat la o baza de date confidențială.

Dacă ar fi să privim în urmă cu vreo 30 de ani astfel de probleme legate de securitatea informațiilor erau aproape neexistente, în mare parte datorită unui nivel scăzut de răspândire a tehnologiei, în zilele noastre vedem din ce în ce mai multe cazuri în mass-media. Deși tehnologia se schimbă din ce în ce mai rapid, problema păstrării securității nu ține întotdeauna pasul cu aceasta. Dacă vom reuși să obținem o bună înțelegere a elementelor de bază cu privire la securitatea informației, atunci vom reuși să facem față schimbărilor tehnologiei pe măsură ce apar.

Conceptul de “securitatea informației” poate fi definit ca “protejarea informațiilor și a sistemelor informaționale împotriva accesului, utilizării, divulgării, întreruperii, modificării sau distrugerii neautorizate”. În esență, putem spune că reprezintă încercarea de a ne proteja informațiile de acele persoane care ar putea încerca să le acceseze și folosească în mod abuziv.

Într-o definiție generală, securitatea ar însemna protejarea bunurilor. Aceasta poate însemna protejarea împotriva unor atacatori care doresc să ne invadeze rețelele, a dezastrelor naturale, a unor condiții negative ale mediului, șocurilor de tensiune, furtului sau vandalismului sau altor evenimente neplăcute. În cele din urmă, vom încerca să ne protejăm împotriva celor mai probabile forme de atacuri, în măsura în care ne este posibil.

Dacă am arunca o privire asupra a ceea ce dorim să protejăm, am putea descoperi o gamă largă de bunuri potențiale. Am putea lua în considerare elemente fizice, cum ar fi cele cu valoare efectivă (de ex. lingouri de aur) sau cele care au valoare pentru afacerea noastră (de ex. componente hardware). Poate fi vorba de asemenea de elemente nepalpabile, cum ar fi elemente software, cod sursă sau chiar informații. În condițiile actuale, putem spune că în unele situații, elementele logice pot fi chiar mai valoroase decât cele fizice, palpabile. În plus, trebuie de asemenea să protejăm și oamenii implicați în acest proces de culegere și manipulare a informațiilor. Oamenii reprezintă cel mai important element, întrucât nu ne putem desfășura activitatea fără ei. Putem face copii de siguranță ale datelor pentru a le păstra în alte locații în cazul unor catastrofe, dar fără oameni bine pregătiți care să manipuleze și să mențină acest sistem vom eșua rapid.

În eforturile de a menține securitatea trebuie să ținem cont și de consecințele implementării efective a acesteia. Este o vorbă care spune că „cel mai sigur sistem este cel oprit, turnat într-un bloc de beton sau ținut închis într-o cameră de plumb sigilată și păzită de gărzi înarmate, și chiar și atunci pot apărea surprize”. Deși putem spune că un astfel de sistem se bucură de o securitate maximă, el nu este nici utilizabil, nici productiv. Pe măsură ce crește nivelul de securitate, de obicei scade nivelul de productivitate. În cazul sistemului descris anterior, nivelul de securitate ar fi maxim, dar nivelul de productivitate ar tinde către zero.

În plus, la asigurarea securității unui bun, sistem sau mediu trebuie luat în considerare și modul în care nivelul de securitate corespunde valorii elementului asigurat. Putem, dacă suntem dispuși să acceptăm scăderea performanței, să atribuim fiecărui element un nivel maxim de securitate. Cu toate acestea, este necesar ca la alegerea măsurilor pentru asigurarea securității unui element să punem în balanță atât costul implementării acestor măsuri, cât și valoarea elementului ce se dorește a fi protejat. Astfel, costurile protejării nu trebuie să depășească valoarea bunului de protejat.

Definirea momentului exact în care putem spune că suntem protejați reprezintă o adevărată provocare. Suntem în siguranță dacă folosim parole cu un grad ridicat de dificultate? Suntem în siguranță dacă ne deconectăm de la Internet? Dintr-un oarecare punct de vedere, răspunsul pentru aceste întrebări poate fi „nu”. Chiar ți în aceste condiții atacatorii ar putea găsi unele breșe de securitate pe care să le exploateze. Sau dacă ne-am deconecta de la Internet, sistemele fizice ar putea fi accesate sau furate. Pe scurt, este foarte dificil să definim dacă suntem cu adevărat protejați. Pe de altă parte, definirea momentelor în care sistemele sau datele noastre nu sunt în siguranță este mult mai ușor de realizat. Putem enumera o serie elemente care ne-ar pune în această postură: utilizarea unor parole ușoare, gen „1234”; descărcarea de programe de pe Internet; deschiderea unor email-uri de la expeditori necunoscuți; folosirea unor rețele wireless fără criptare.

Avantajul este că pe măsură ce vom putea semnala elementele care fac un sistem să fie nesigur vom putea lua măsuri în vederea eliminării acestor probleme. Mereu se vor găsi noi breșe de securitate. Deși probabil nu vom ajunge niciodată să spunem că un sistem / mediu / element este securizat 100%, putem lua măsuri în această direcție.

Organele de drept încredințate cu definirea unor standarde de securitate variază puțin de la un domeniu la altul și destul de mult de la o țară la alta. Organizațiile care operează la nivel global la acest moment sunt destul de prezente, astfel că trebuie să avem grijă să nu încălcăm aceste legi în desfășurarea activităților noastre. Acestea încearcă să definească conceptul de securitate, sau cel puțin o serie de pași de urmat în ideea de a atinge un nivel optim de securitate.

OECD (Organization of Economic Cooperation and Development) este unul din organismele internaționale preocupate de domeniul protecției datelor cu caracter personal, securității sistemelor informatice, politicii de cifrare și al protecției proprietății intelectuale.

În ceea ce privește protecția datelor cu caracter personal, OECD a elaborat în anul 1985 “Declarația cu privire la fluxul transfrontalier al datelor”. Ideea fundamentală era de a se realiza, prin măsuri juridice și tehnice, controlul direct individual asupra datelor cu caracter personal și asupra utilizării acestora. Eforturile actuale sunt dirijate către realizarea unui cadru internațional în ceea ce privește viața personală și autonomia individuală a persoanelor (libertatea de mișcare, libertatea de asociere și drepturile fundamentale ale omului).

În domeniul sistemelor informatice, țările OECD au cerut, în 1988, secretariatului OECD să pregătească un raport complet asupra acestui domeniu, cu evidențierea inclusiv a problemelor tehnologice de gestiune, administrative și juridice. Urmare a acestui raport, țările membre au negociat și adoptat în anul 1992 “Liniile directoare privind securitatea sistemelor informatice în OECD”. Ele oferă un cadru internațional de referință pentru dezvoltarea și punerea în practică a unor măsuri, practici sau coerențe de securitate informatică în sectoarele public și privat. Consiliul OECD recomandă revizuirea periodică a acestor reglementări la fiecare 5 ani.

Este totuși discutabil dacă aceste standarde sunt eficace sau nu, dar respectarea celor aplicabile domeniului în care activăm este considerată recomandabilă, dacă nu chiar obligatorie.

În general, în analiza problemelor de securitate este utilă folosirea unui modele care să ne pună la dispoziție o serie de concepte pe care le putem folosi în dezbaterea noastră. Unul dintre acestea este Triada Confidențialitate – Integritate – Disponibilitate.

Trei dintre conceptele primare în securitatea informației sunt confidențialitatea, integritatea și disponibilitatea cunoscute ca triada confidențialitate – integritate – disponibilitate (CIA – Fig. 1). Triada CIA ne oferă un model care ne permite să punem în discuție conceptul de securitate.

Confidențialitatea este un concept similar cu izolarea, dar nu identic. Confidențialitatea reprezintă o componentă importantă a izolării și se referă la capacitatea de protejare a informațiilor împotriva accesului neautorizat. Ea poate fi implementată la mai multe niveluri ale procesului de realizare a securității. De exemplu, dacă ne referim la cazul unei persoane care scoate bani de la un bancomat, persona respectivă va încerca pe cât posibil să păstreze confidențialitatea codului PIN (număr personal de identificare) care ii permite, în combinație cu cardul, să retragă banii de la bancomat. În plus, proprietarul bancomatului va trebui să păstreze confidențialitatea în ceea ce privește numărul de cont, soldul contului și orice altă informație ce trebuie comunicată băncii pentru a putea retrage fonduri. Banca va menține confidențialitatea tranzacțiilor efectuate la bancomat ți situația contului în urma extragerilor. Dacă în orice moment al acestui proces este compromisă confidențialitate, pot apărea diverse consecințe neplăcute, pentru fiecare din participanții la acest proces.

Confidențialitatea poate fi compromisă prin pierderea unor dispozitive de stocare pe care avem diverse informații, prin aflarea unei parole de către o terță persoană, prin trimiterea unui email având ca atașament un fișier important către un destinatar greșit, prin penetrarea sistemului de securitate de către un atacator, etc.

Figura 1. Triada CIA

Integritatea se referă la capacitatea de a împiedica modificarea datelor într-un mod nedorit sau neautorizat. Acest lucru poate însemna modificarea sau ștergerea neautorizată a datelor sau a unor porțiuni din date, sau ar putea însemna modificarea sau ștergerea autorizată, dar nedorită a datelor. Pentru menținerea integrității nu numai că trebuie să dispunem de mijloacele necesare pentru a împiedica modificările neautorizate asupra datelor, dar avem nevoie și de mecanisme care să permită anularea modificărilor autorizate, dar nedorite.

Un exemplu de menținere a integrității poate fi dat de sistemul de fișiere al sistemelor de operare cum sunt Windows și Linux. În scop preventiv, aceste sisteme implementează drepturi pe utilizatori asupra unor fișiere. În plus, astfel de sisteme de operare, precum și alte aplicații, precum bazele de date, ne permit anularea unor modificări sau revenirea la o stare anterioară (roll back).

Integritatea este extrem de importantă atunci când vorbim de date vitale în luarea anumitor decizii. Dacă un atacator ar altera rezultatele unui test medical, medicul ar putea prescrie un tratament greșit, care ar putea avea drept consecință moartea pacientului.

Disponibilitatea reprezintă ultima componentă a triadei CIA. Aceasta se referă la posibilitatea de a accesa datele oricând este nevoie. Pierderea disponibilității se poate referi la orice piedică care nu ne permite accesul la date. Astfel de probleme pot apărea ca urmare a întreruperii electricității, probleme generate de sistemul de operare sau de alte aplicații, atacuri asupra rețelelor, compromiterea sistemului și altele. Atunci când aceste probleme sunt cauzate de o terță parte, cum ar fi un atacator, ele sunt considerate atacuri DOS (Denial of Service).

Luând în considerare modelul CIA, putem lua un exemplu simplu pentru a înțelege mai bine problema. Vom presupune că transportăm o serie de dispozitive pe care avem stocate date importante pentru activitatea noastră, necriptate, într-o nouă locație. Pierderea acestora va genera probleme de securitate. Din punctul de vedere al confidențialității, vom avea o problemă deoarece datele noastre nu sunt criptate. Din punctul de vedere al integrității, presupunând că vom găsi dispozitivele de stocare, vom avea o problemă tot datorită faptului că datele nu au fost criptate. Dacă recuperăm dispozitivele și datele necriptate au fost alterate, acest lucru nu va putea fi depistat imediat. Din punctul de vedere al disponibilității, problema apare dacă nu putem recupera fizic dispozitivele.

Un alt model pe care l-am putea folosi este hexada Parkerian, numit după Donn Parker și introdus în cartea sa „Fighting Computer Crime”. Acesta este ceva mai complex decât triada CIA, adăugând la componentele triadei CIA alte 3 elemente: proprietate sau control, autenticitate, utilitate (Fig. 2).

Figura 2. Hexada Parkerian

Confidențialitate, Integritate, Disponibilitate. După cum am menționat, hexada Parkerian cuprinde cele trei principii ale triadei CIA, cu aceleași semnificații. Există o diferență în modul în care Parker înțelege integritatea, întrucât el nu ia în calcul modificările autorizate, dar nedorite și se concentrează în schimb asupra exhaustivității datelor.

Proprietatea sau controlul se referă la dispoziția fizică a dispozitivului pe care sunt stocate datele. Acest element ne permite să tratăm pierderea fizică a datelor fără a face referire la disponibilitatea lor. Dacă în exemplul prezentat la triada CIA presupunem că o parte din dispozitive conțineau date criptate, și o parte necriptate, principiul proprietății ne permite să descriem mult mai clar această situație. Datele criptate prezintă o problemă de proprietate dar nu și de confidențialitate, pe când cele necriptate prezintă o problemă din ambele puncte de vedere.

Autenticitatea ne permite să aducem în discuție proprietarul sau creatorul datelor . De exemplu, dacă am trimite un e-mail alterându-l astfel încât sa pară a avea un alt expeditor, am încălca principiul autenticității. Autenticitatea poate fi impusă prin utilizarea semnăturii digitale. Un concept similar autenticității, dar opus, este non-repudierea. Aceasta împiedică pe cineva să execute o acțiune, cum ar fi trimiterea unui e-mail

Utilitatea se referă la cât de folositoare sunt datele respective pentru activitatea noastră. Utilitatea este de asemenea unul din principiile hexadei Parkeriene care nu este binar prin natura sa. Putem avea o serie de niveluri de utilitate, în funcție de date și de formatul acestora. Acesta este un concept abstract, dar se dovedește foarte util în dezbaterea unor probleme legate de securitate. În exemplul discutat anterior, pentru un atacator sau o altă persoană neautorizată datele criptate vor avea o utilitate scăzută, nefiind atât de ușor de citit. Datele necriptate vor fi mai utile, oferind un acces mai facil.

Atacurile asupra unui sistem pot fi privite din mai multe perspective. În momentul analizării unui atac, îl putem disemina din punctul de vedere al tipului, al riscului implicat și al mijloacelor pe care le putem folosi pentru a-i diminua efectele.

Putem defini patru categorii de atacuri: interceptarea; întreruperea; modificarea; fabricarea.

Fiecare categorie poate afecta unul sau mai multe din cele trei principii ale triadei CIA, după cum se poate vedea în Fig. 3. În plus, linia de delimitare dintre diferitele tipuri de atacuri poate fi destul de fină. În funcție de atacul în discuție, acesta poate fi încadrat în mai multe din categoriile menționate, putând avea diverse efecte.

Figura 3. Categorii de atac

Interceptarea. Atacurile prin interceptare permit unor utilizatori neautorizați să acceseze date, aplicații și reprezintă atacuri ce vizează în mod direct confidențialitatea. Acestea se pot materializa în vizualizarea sau copierea neautorizată a datelor, ascultarea apelurilor telefonice, citirea email-urilor. Dacă sunt executate de profesioniști, aceste atacuri pot fi cu greu depistate.

Întreruperea. Această categorie de atacuri face ca datele să fie neutilizabile sau ne-disponibile pentru persoanele autorizate, temporar sau permanent. Acestea afectează în general disponibilitatea, precum și integritatea datelor. În cazul unui atac DOS pe un server de mail l-am considera un atac la disponibilitate. În cazul în care un atacator manipulează o bază de date în scopul de a împiedica accesul la date, îl putem considera un atac la integritate, datorită posibilității pierderii și / sau coruperii datelor. Un astfel de atac asupra unei baze de date ar putea fi de asemenea considerat un atac de modificare a datelor, mai degrabă decât unul de întrerupere.

Modificarea. Atacurile prin modificarea datelor implică manipularea acestora. Acestea pot fi considerate atacuri la integritate, precum și atacuri la disponibilitate. Dacă un fișier este accesat și modificat în mod neautorizat, afectăm integritatea datelor din fișier. Totuși, dacă este vorba despre un fișier de configurare care determină comportamentul anumitor servicii, putem afecta disponibilitatea acelui serviciu prin modificarea conținutului fișierului. Dacă presupunem că fișierul de configurare alterat modifică modul în care un server web tratează criptarea conexiunilor, putem vorbi despre un atac la confidențialitatea datelor.

Fabricarea. Această categorie de atacuri presupune generarea de date, procese, comunicații sau alte activități similare din cadrul unui sistem. Aceste atacuri afectează mai ales integritatea, dar pot afecta și disponibilitatea datelor. Dacă inserăm informații false într-o bază de date, acesta poate fi considerat un atac prin fabricare / generare de informații. Putem genera de asemenea email-uri, în general cu scopul de a transmite software cu caracter malițios. Din perspectiva unui atac la disponibilitate, dacă generăm suficiente procese suplimentare, trafic de rețea, email-uri, trafic web sau orice alt element consumator de resurse, putem face ca serviciul care tratează acest trafic să devină indisponibil în legitimarea utilizatorilor de drept ai sistemului.

Alte concepte importante în înțelegerea securității informațiilor sunt: amenințările, vulnerabilitățile și riscurile.

Prin amenințare înțelegem ceva ce are potențialul de a crea un prejudiciu. Amenințările au de obicei un target bine stabilit. De exemplu, un virus care ar putea crea mari distrugeri pe un sistem de operare Windows este foarte puțin probabil să aibă vreun efect în cazul unui sistem de operare Linux.

Vulnerabilitățile reprezintă deficiențe care pot fi folosite pentru a crea prejudicii. În esență, acestea reprezintă breșe ce pot fi folosite prin intermediul amenințărilor. Putem considera ca vulnerabilitate o anumită aplicație, lipsa generatoarelor de backup, locația fizică de rezidență a sistemului, etc.

Riscul reprezintă probabilitatea ca ceva rău să se întâmple. Pentru ca un risc să apară trebuie să existe atât o amenințare, cât și o vulnerabilitate. În cazul securității informatice, ca și în viața de zi cu zi, putem vorbi atât despre riscuri potențiale, cât și despre riscuri potențiale, dar puțin probabile. În astfel de cazuri, trebuie să ne folosim resursele pentru a diminua riscurile cele mai probabile.

Unele organizații, cum ar fi NSA (U.S. National Security Agency) aduc în discuție un factor suplimentar – impactul, luând în considerare valoarea elementelor de protejat.

În scopul de a diminua riscurile potențiale, putem folosi o serie de măsuri, pe care le putem clasifica astfel:

măsuri fizice – care ne permit să protejăm mediul fizic în care se află sistemul sau informațiile stocate.

măsuri logice – sau tehnice, care protejează sistemele, rețelele și mediile care procesează, transmit și stochează datele. Acestea ne permit să împiedicăm acțiunile neautorizate.

măsuri administrative – bazate pe reguli, legi, politici, proceduri, recomandări care definesc comportamentul utilizatorilor. Acestea pot reprezenta diferite niveluri de autoritate.

O posibilă strategie pentru a ne apăra împotriva diferitelor atacuri ar putea fi apărarea în adâncime. Este o strategie comună atât manevrelor militare, cât și securității informatice. În ambele perspective, principiul de bază constă în crearea unei apărări în mai multe etape, permițându-ne să ne apărăm cu succes, chiar dacă o serie din măsurile noastre defensive eșuează. În fig. 4 putem vedea cam care ar fi „straturile” care să ne permită protejarea „bunurilor” dintr-o perspectivă logică. Implementarea unor măsuri adecvate pentru fiecare „strat” va face foarte dificilă infiltrarea neautorizată și atacul direct asupra elementelor ce se doresc a fi protejate. Cu toate acestea, trebuie avut în vedere faptul că oricât de bine am construi această strategie de apărare împotriva atacurilor, riscurile ca un atacator să treacă de toate „straturile” tot există. Scopul este ca între un potențial atacator și elementele ce trebuiesc protejate să existe suficient de multe măsuri de securitate care să ne permită să observăm un atac în desfășurare și de asemenea să ne ofere suficient timp pentru a implementa noi măsuri de securitate, astfel încât să putem împiedica atacul să își îndeplinească scopul.

Figura 4. Apărare în adâncime (multi-layer)

Principalele „straturi” pe care ar trebui să le includem în strategia noastră sunt rețeaua externă, perimetrul rețelei, rețeaua internă, gazda, aplicația și datele. Putem adăuga complexitate acestui model incluzând alte „straturi” vitale, cum ar fi măsuri fizice de apărare, politici, instruirea utilizatorilor, etc.

În fig. 5, putem observa că anumite măsuri se repetă în diferitele „straturi”, fiind aplicabile în mai multe zone. Un exemplu concludent este testul infiltrării. Acest test reprezintă o metodă utilizată pentru a găsi breșele de securitate, folosind aceleași metode pe care le-ar folosi un atacator pentru a se infiltra și este o tactică ce ar putea fi folosită în toate „straturile” ce alcătuiesc apărarea.

Figura 5. Măsuri de apărare pe „straturi” multiple

Securitatea informației este o preocupare omniprezentă în zilele noastre pentru organizații de diferite mărimi, în special cele care manipulează date cu caracter personal, date financiare, educaționale sau alte tipuri de informații care sunt reglementate prin lege în țările în care acționează.

În ziua de azi în toate domeniile activității umane sunt implementate noi tehnologii informaționale. Apariția rețelelor locale și globale de transmitere a datelor le-a permis utilizatorilor calculatoarelor să folosească metode noi în schimbul de informații. Apariția Internetului a dus la utilizarea rețelelor globale, în scopul transmiterii datelor. Pe măsură ce se dezvoltă și se complică mijloacele, metodele și formele de automatizare a proceselor de prelucrare a informației, se mărește și dependența societății de gradul de securitate a tehnologiilor informaționale utilizate.

Metodele contemporane de prelucrare, transmitere și stocare a informației au contribuit la apariția riscurilor legate de posibilitatea pierderii, denaturării, destăinuirii datelor care sunt adresate sau care aparțin utilizatorilor finali. De aceea asigurarea securității informației este una dintre direcțiile cele mai importante în dezvoltarea tehnologiilor informaționale. Protecția informației este activitatea îndreptată spre prevenirea scurgerii informației protejate, spre prevenirea acțiunilor nesancționate sau neintenționate asupra acestor informații.

Capitolul II. Criptografie și metode criptografice

Puține sunt persoanele care să nu fi încercat, măcar o dată, transmiterea cifrată a unor mesaje personale "foarte importante". Și mai puține sunt, probabil, cele care nu s-au amuzat niciodată rezolvând jocuri rebus unde, pe baza unor frânturi de mesaj, trebuie descoperită regula de reconstituire a întregului. Explicația este atracția firească pe care o prezintă un astfel de exercițiu intelectual și satisfacția pe care ți-o dă reușita rezolvării.

Criptografia a avut întotdeauna un rol fascinant în diplomație, spionaj și în lumea afacerilor. De la războiul galic până la războiul din Golful Persic, de la afacerea Dreyfus până la mașina Enigma, criptografia a schimbat nu de puține ori cursul istoriei.

Definiția criptografiei pleacă de la etimologia cuvântului cripto care vine din grecescul kryptos, care înseamnă ascuns, obscur, secret, iar grafie de la graphia, adică scriere. O definiție concisă a termenului este dată de Yaman Akdeniz, în articolul său “Cryptography and Encryption”: “Criptografia, definită ca <știința care se ocupă cu studiul scrierii secrete>, tratează mijloacele prin care comunicațiile și datele pot fi codificate pentru a preveni descoperirea lor prin interceptare, folosind coduri, cifruri și alte metode, astfel încât numai anumite persoane să poată vizualiza mesajul inițial”.

Criptografia sau știința codificării informației în vederea împiedicării acceselor neautorizate, are o lungă istorie, confidențialitatea comunicării fiind o cerință a tuturor timpurilor. Dacă ar trebui să alegem un singur exemplu al criptografiei "clasice", acesta ar fi cifrul lui Cezar, nu atât datorită celebrității împăratului roman de care se leagă folosirea lui, ci pentru că principiul său de bază s-a menținut nealterat aproape două milenii.

Cifrarea este bazată pe o substituție a fiecărui simbol al mesajului cu un altul, aflat în alfabet la trei poziții după el. În felul acesta, celebrele cuvinte VENI VIDI VICI transmise de Cezar lui Matius, după victoria de la Zela asupra lui Farnace (anul 47 î.e.n.), ar putea fi codificate prin YHQL YLGL YLFL. Pentru a putea descifra mesajul, procedeul de cifrare se inversează, fiecare literă fiind înlocuită cu una aflată cu trei poziții înaintea sa în alfabet.

Slăbiciunea acestui cifru este îndeobște cunoscută, un criptanalist modest reușind destul de repede să descopere atât algoritmul (substituție circulară) cât și cheia (numărul de poziții de decalare-trei). Mai mult, odată descoperite aceste elemente, se poate deduce ușor și perechea algoritm-cheie folosită la cifrare, cifrarea fiind simetrică. Ca urmare, un intrus poate nu numai să violeze confidențialitatea unor mesaje, dar și să introducă în comunicație mesaje false.

Încă de la începuturi, criptografia a răspuns cererii de a transmite informații secrete; multă vreme singura preocupare a fost de a crea metode de transformare a informației de așa natură încât ea să nu fie accesibilă unui potențial intrus. O dată cu apariția metodelor electronice de procesare a informației rolul criptografiei a devenit mult mai variat.

Să presupunem că E dorește să trimită un mesaj lui D; notăm cu E expeditorul și cu D destinatarul. E încredințează mesajul lui T, care îl va livra lui D; T devine mediul de transmitere. Dacă o entitate, I, dorește mesajul și încearcă să obțină acces la mesaj, o vom numi interceptor sau atacator. De fiecare dată după ce E trimite mesajul via T, mesajul este expus, astfel că I poate încerca să acceseze mesajul pe una din următoarele căi:

întreruperea mesajului, prin încercarea de a-l opri să ajungă la D, afectând deci disponibilitatea mesajului;

interceptarea mesajului, prin abilitatea interceptorului de a citi sau asculta mesajul, afectând deci confidențialitatea mesajului;

modificarea mesajului, prin capturarea sa și schimbarea sa într-un anume mod;

fabricarea unui mesaj asemănător cu cel autentic, care să fie livrat lui D ca și cum ar proveni de la E, afectând astfel integritatea mesajului.

Criptarea este un proces de codificare a unui mesaj astfel încât înțelesul mesajului este ascuns utilizând un algoritm și o cheie specifică; decriptarea este procesul invers: transformarea unui mesaj criptat înapoi în forma sa originală utilizând un algoritm și o cheie specifică. Cele două procese sunt complementare. Se mai folosesc termenii codificare, cifrare și decodificare, decifrare pentru criptare, respectiv decriptare (există diferențe minore de semnificație: codificare se referă la texte, cifrare la litere și criptare la ambele). Un sistem folosit pentru criptare și decriptare se numește sistem criptografic sau criptosistem (o definiție completă se găsește în capitolul 5).

Criptografie înseamnă, etimologic, scriere ascunsă, folosirea criptării pentru a ascunde înțelesul unui text. Un criptanalist studiază criptarea și mesajele criptate, în scopul descoperirii formei de text clar a mesajului. Atât un criptograf cât și un criptanalist încearcă să translateze materialul codificat la forma originală; însă criptograful lucrează de partea expeditorului sau destinatarului legitim, în timp ce criptanalistul lucrează de partea interceptorului neautorizat.

Criptologia este studierea criptării și decriptării, ea incluzând atât criptografia cât și criptanaliza.

Scopul unui criptanalist este de a sparge o criptare; aceasta înseamnă încercarea de a deduce înțelesul unui text cifrat sau determinarea unui algoritm de decriptare care se potrivește cu algoritmul de criptare. Analistul poate încerca una sau toate, din următoarele căi:

spargerea unui mesaj individual;

recunoașterea de forme în mesajele criptate, astfel încât să devină capabil să spargă mesajele viitoare prin aplicarea unui algoritm de decriptare;

depistarea de puncte slabe în algoritmul de criptare, chiar fără a intercepta vreun mesaj.

Detalii despre metodele moderne de atac criptografic se găsesc în capitolul 4.

Un algoritm de criptare poate fi fragil, în sensul că un analist care dispune de resurse de timp și date suficiente, poate determina algoritmul. Totuși, aspectul practic este de asemenea important. Să considerăm o schemă de cifrare care presupune o schema inversă de decifrare care necesită 1030 operații. Folosind un calculator la nivelul tehnologiei actuale, care execută 1010 operații pe secundă, decifrarea va dura 1020 secunde, adică aproximativ 1012 ani. În acest caz, chiar dacă teoretic un algoritm de decifrare există, el poate fi ignorat ca fiind nepractic în condițiile tehnologiei actuale.

În legătură cu fragilitatea algoritmilor de criptare apar două observații. În primul rând, nu e rațional să presupunem că criptanalistul va încerca chiar calea cea mai grea și cea mai lungă. În exemplul de mai sus, un demers mai ingenios poate face ca timpul de decriptare să scadă la doar la 1015 operații, ceea ce, la aceeași viteză de 1010 operații pe secundă, înseamnă puțin mai mult de o zi.

În al doilea rând, estimarea fragilității se bazează pe nivelul actual al tehnologiei. Ținând cont de viteza progresului în tehnologia și tehnica de calcul, este riscant să caracterizăm un algoritm ca sigur doar pentru că nu poate fi spart cu tehnologia actuală.

Criptologia=Delaborarea și spargerea cifrurilor, criptografia=elaborarea cifrurilor, iar criptanaliza=spargerea. Modelul de bază al folosirii cifrurilor pentru securitatea informațiilor este prezentat mai jos:

Figura 6. Modelul de bază al folosirii cifrurilor

Mesajul ce trebuie cifrat=text clar, este supus unei transformări (cifrare) parametrizate de cheia de cifrare e, obținându-se un text cifrat. Textul cifrat este transmis prin mediul de comunicație către destinatar. Destinatarul, pentru a obține textul clar, efectuează transformarea inversă a mesajului cifrat, folosind o cheie de descifrare d.

Multă vreme eforturile criptografilor au fost dirijate spre întărirea cifrurilor prin complicarea algoritmului, combinând substituții și transpoziții asupra unor simboluri sau asupra unor blocuri (grupe de simboluri). Istoria modernă a criptografiei cunoaște numeroase inovații în această privință.

Apariția si dezvoltarea continuă a utilizării calculatoarelor, practic în toate domeniile vieții, existența și evoluția puternică a rețelelor teleinformatice la nivel național si internațional, globalizarea comunicațiilor, existența unor baze de date puternice, apariția și dezvoltarea comerțului electronic, a poștei electronice, constituie premisele societății informaționale în care pășim.

Dezvoltarea Internet-ului a fost un stimulent extraordinar, prin presiunea exercitată de tot mai mulți utilizatori, a căror dorință obiectivă este păstrarea secretului și a siguranței asupra poștei electronice private, a transferului electronic de documente și de fonduri și a altor aplicații. De asemenea, s-a constatat o potențare a gamei de instrumente folosite efectiv în execuția algoritmilor de cifrare.

Toate acestea indică o creștere extraordinară a volumului și importanței datelor transmise sau stocate și implicit a vulnerabilității acestora. Protecția în aceste sisteme vizează:

eliminarea posibilităților de distrugere voită sau accidentală.

asigurarea caracterului secret al comunicării pentru a preveni posibilitatea ca persoane neautorizate să extragă informații.

autentificarea informației în scopul prevenirii posibilității ca persoane neautorizate să introducă informații în sistem.

în anumite situații, cum ar fi transferurile electronice de fonduri, negocierile contractuale, este importantă existenta unor semnături electronice pentru a evita dispute între emițător si receptor cu privire la mesajul transmis.

Toate aceste obiective arata o lărgire puternica a domeniului de aplicare al criptografiei de în domeniul diplomatic, militar, politic, la cel civil cu caracter economic și social. La ora actuală, 99% din criptografie nu este utilizată pentru protejarea secretelor militare ci pentru carduri bancare, plați de taxe radio/TV, taxe de drumuri, acces autorizat în clădiri sau Ia calculatoare, terminale de loterie, instrumente electronice de plăți anticipate. În aceste aplicații rolul criptografiei este acela de a face furturile mai greu de realizat.

Criptarea este o metodă de codare a datelor prin intermediul unei forme algoritmice intr-o forma indescifrabila înainte de transmiterea acestora de către stația de lucru sursa si decodate ulterior la destinație prin aplicarea algoritmului de criptare în sens invers.

Criptarea datelor tranzitate se poate face in două forme:

Criptare simetrică – criptare convențională

Criptare asimetrică – Criptarea cu "cheie publică"

Criptarea simetrică utilizează următoarea schemă:

Criptarea asimetrică sau criptarea cu cheie publică sau privată. Această tehnică de securizare a datelor constă în alocarea unei chei publice sau private unice. Astfel dacă datele au fost criptate cu o cheie "1" – cheia privată, ele nu pot fi decriptate decât cu cheia "2" – cheia publică și invers. Utilizarea criptării asimetrice impune, de asemenea, autentificarea sursei, astfel că o replica la un e-mail anterior va conține în mod automat și identitatea fostului destinatar.

In cazul în care luăm ca exemplu o schemă hashing, este generată o valoare hash pentru datele respective în computerul sursă și este trimisă împreună cu aceasta la destinație. Computerul destinatar va recepționa codul hash odată cu datele recepționate. În cazul în care cheia hash generată de computerul de destinație este identica celei primite de la sursă, înseamnă ca datele nu au suferit nici o modificare, integritatea lor a fost păstrată. Acest cod hash, poartă denumirea de semnătură digitală când este trimis împreună cu datele.

Sisteme criptografice simetrice și cu chei publice

Algoritmii criptografici (cifruri), permit o transformare a datelor numită cifrare sau criptare. Intrarea unui cifru este textul-clar, iar ieșirea este textul-cifrat. La recepție, textul-clar se obține printr-un proces de descifrare (decriptare), care primește la intrare textul-cifrat. Procesele descrise sunt controlate de chei, care reprezintă un parametru al transformării.

Un sistem criptografic (criptosistem) este compus din:

– M-text (mesaj) clar ;

– C-text (mesaj) cifrat sau criptogramă;

– două funcții inverse E( ) și D( );

– un algoritm care produce cheile de cifrare Ke și de descifrare Kd

astfel încât:

  mesajul cifrat C este obținut din mesajul clar M, folosind funcția de cifrare E și cheia de cifrare Ke: C=EKe(M)

și

mesajul clar este obținut din criptograma C, folosind funcția de descifrare D și cheia de descifrare Kd: M=DKd(C)

Există două tipuri de sisteme criptografice:

– simetrice (cu cheie secretă) care folosesc aceeași cheie, atât la cifrare cât și la descifrarea mesajelor, adică Ke=Kd.

– asimetrice (cu cheie publică) care folosesc chei distincte de cifrare și descifrare (dar legate una de alta). Una din chei, Kd este ținută secretă și este cunoscută doar de proprietarul ei. A doua cheie (perechea ei), Ke, este făcută publică, de unde și numele de criptografie cu cheie publică.

Știința care studiază metodele de criptare și decriptare este criptologia. Ea are în compunere criptografia, cea care se ocupă cu mijloacele de cifrare/descifrare legale și criptanaliza, care studiază metode de spargere a cifrurilor, adică de determinare a mesajelor în clar sau a cheilor din criptograme.

Cifrurile simetrice (cu cheie secretă)

Aceste sisteme de criptare folosesc aceeași cheie K, atât la cifrarea cât și la descifrarea mesajelor. Cheia este ținută secretă și este folosită în comun de către emițător (cel care cifrează mesajul M) și de către receptor (cel care descifrează criptograma C). Sistemele simetrice sunt bine cunoscute, conduc la performanțe bune și sunt folosite pentru protecția datelor utilizatorilor. Se pot aminti aici criptosisteme simetrice cunoscute, cum ar fi standardul american de cifrare DES (Data Encryption Standard) sau sistemul IDEA (International Data Encryption Algorithm).

Securitatea criptării simetrice depinde mult de protecția cheii criptografice. Ca urmare, administrarea acestora este un factor esențial și se referă la:

– generarea cheilor, adică mijloacele (pseudo)aleatoare de creare a succesiunii de octeți (biți) ai cheii;

– distribuția cheilor, adică modul în care se transmit și se fac cunoscute cheile tuturor utilizatorilor cu drept de acces la informațiile criptate;

– memorarea cheilor, adică stocarea lor sigură pe un suport magnetic sau pe un card, de obicei criptate sub o altă cheie de cifrare a cheilor, numită și cheie master.

Problema fundamentală a utilizării criptografiei în rețele este aceea a găsirii unor modalități de distribuție sigură și periodică a cheilor criptografice, fiind necesar ca acestea să fie schimbate cât mai des.

Cel mai celebru cifru simetric, DES (Data Encryption Standard) are deja peste 20 de ani. El este primul standard dedicat protecției criptografice a datelor de calculator. A fost studiat de IBM începând cu 1970 pentru NBS (National Bureau of Standards). După câteva modificări realizate de NBS și NSA (National Security Agency), a fost publicat în 1977 și intitulat DES. Ulterior a fost adoptat de ANSI (American Standard Institute) ca standard ANSI X3.92 și intitulat DEA (Data Encryption Algorithm).

Privit în ansamblu, algoritmul DES nu este altceva decât o procesare ce urmărește "ascunderea" mesajului prin două căi: confuzie și difuzie. Construcția fundamentală a unui bloc DES este o combinație a unor tehnici – substituție urmată de o permutare – executate asupra textului, bazate pe o cheie. Această construcție este cunoscută ca rundă. DES este compus din 16 runde: aceeași combinație de tehnici se aplică de 16 ori asupra blocului de text clar. Algoritmul este compus dintr-un set de permutări, substituții și sumă mod 2, aplicate iterativ de 16 ori, pe un bloc de date de 64 biți, prin folosirea în fiecare rundă a unei chei diferite de 48 de biți, extrase inițial dintr-o cheie furnizată de utilizator de 56 biți; datele sunt împărțite în blocuri de 64 de biți și criptate fără a se modifica lungimea lor.

Progresele tehnologice din cei peste 20 de ani au impus înlocuirea DES-ului care a devenit vulnerabil. S-a demonstrat de curând că, folosind o mașină paralelă complexă ce costă 250.000 USD, se poate găsi, într-un timp de aproximativ 60 de ore, o cheie de 56 de biți cu care a fost criptat un bloc de text clar. Ca urmare, s-a lansat anul trecut un concurs de cifruri pentru realizarea așa numitului AES (Advanced Encryption Standard). Până la ora actuală există deja 16 propuneri de algoritmi criptografici simetrici pentru AES.

Pentru a înțelege mai bine cum este "în interior" un sistem de criptare, prezentăm cifrul FROG, realizat de o echipă de la TecApro International. Acesta, ca orice alt cifru simetric își propune să transforme textul clar în text cifrat, printr-un proces de calcul care să creeze confuzie și difuzie.

FROG criptează blocuri de intrare de 16 octeți în blocuri de ieșire cu aceeași lungime, sub controlul unei chei criptografice utilizator, a cărei lungime poate varia între 5 și 125 de octeți.

Cifrul realizează 8 iterații (runde) în prelucrarea fiecărui bloc de intrare. Fiecare iterație folosește o cheie internă, generată din cheia de cifrare și care este o structură de date cu 8 înregistrări, fiecare având 3 câmpuri:

– xorBu – un vector de 16 octeți folosit în sau exclusiv;

– substPermu – un vector de 256 octeți folosit ca tabelă de substituții;

– bombPermu – un vector de 16 octeți folosit în a referi diferite poziții în bloc (cu valori între 0 ți 15), pentru a realiza o permutare.

Fiecare iterație traversează secvențial blocul de 16 octeți, de la stânga la dreapta și calculează cu fiecare octet 4 operații de bază: 2 implementează confuzie, celelalte 2 difuzie:

– Pasul 1: SAU-EXCLUSIV(XOR) între octetul curent din bloc și octetul curent din câmpul xorBu.

– Pasul 2: înlocuirea octetului calculat la pasul 1 prin octetul din tabela de substituție substPermu, indexată cu octetul calculat la pasul 1.

– Pasul 3: modificarea octetului următor din bloc prin XOR cu octetul calculat la pasul 2. Când se ajunge la sfârșitul blocului, octetul următor este considerat primul.

– Pasul 4: se folosește octetul curent al lui bombPermu pentru a defini o poziție în bloc. Se modifică octetul din acea poziție făcând XOR cu octetul calculat în pasul 2.

Câmpul bombPermu este o permutare, a cărei lungime a ciclului trebuie să fie egală cu dimensiunea blocului (16).

Un exemplu numeric va clarifica modul de lucru al cifrului. Toate valorile sunt date în hexazecimal, începând cu cel mai semnificativ octet. Vom defini o cheie internă cu următoarele valori:

xorBu: 05 f0 a3 …

substPermu: a2 16 08 bb 03 f1 …

bombPermu: 03 0f 00 …

Se realizează cifrarea următorului bloc de 16 octeți de text clar:

00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0f

Și să arătăm stările intermediare ale blocului după fiecare pas.

Prelucrarea octetului din poziția 0:

Pasul 1: 05 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0f

Pasul 2: f1 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0f

Pasul 3: f1 f0 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0f

Pasul 4: f1 f0 02 f2 04 05 06 07 08 09 0a 0b 0c 0d 0f

Prelucrarea octetului din poziția 1:

Pasul 1: f1 00 02 f2 04 05 06 07 08 09 0a 0b 0c 0d 0f

Pasul 2: f1 a2 02 f2 04 05 06 07 08 09 0a 0b 0c 0d 0f

Pasul 3: f1 a2 a0 f2 04 05 06 07 08 09 0a 0b 0c 0d 0f

Pasul 4: f1 a2 a0 f2 04 05 06 07 08 09 0a 0b 0c 0d ad

Prelucrarea octetului din poziția 2:

Pasul 1: f1 a2 03 f2 04 05 06 07 08 09 0a 0b 0c 0d ad

Pasul 2: f1 a2 bb f2 04 05 06 07 08 09 0a 0b 0c 0d ad

Pasul 3: f1 a2 bb 49 04 05 06 07 08 09 0a 0b 0c 0d ad

Pasul 4: 4a a2 bb 49 04 05 06 07 08 09 0a 0b 0c 0d ad

Procesul continuă în aceeași manieră pentru toți cei 16 octeți. Procesul se repetă cu alte chei interne de 8 ori, adică se execută 8 runde identice.

Decriptarea se face parcurgând cheia internă și blocul cifrat, în sens invers. Cheia internă folosită este aceeași, cu excepția tabelelor de substituție – substPermu – care sunt înlocuite de inversele lor.

Un lucru important în evoluția algoritmului îl reprezintă inițializarea cheii interne. FROG calculează cheia internă pe baza cheii criptografice furnizate de user. Fiecare iterație folosește un articol de cheie internă cu 16+256+16 = 288 octeți. Ca urmare, cheia internă totală are 288 * 8 = 2304 octeți. Pentru generarea ei se folosesc doi algoritmi:

1. Primul algoritm (funcția hashKey) folosește cheia user (simpleKey) și o constantă internă (randomSeed) și produce un tablou de 2304 octeți (numit randomKey), printr-un algoritm complex în 5 pași.

2. Al doilea algoritm (funcția makeInternalKey) ia tabloul arbitrar de 2304 octeți, generat de primul algoritm, și îl transformă într-o structură ce cuprinde cele 3 câmpuri. Se calculează corect vectorii de permutare substPermu și bombPermu pentru toate cele 8 înregistrări.

Cel mai eficient atac la un astfel de cifru este acela ce încearcă deducerea cheii criptografice prin căutare exhaustivă. Factorul de muncă necesar este foarte mare (prohibitiv): O(2(N-1) ), unde N reprezintă numărul de biți ai cheii utilizator. De exemplu O(2 (255) ) pentru o cheie de 32 de caractere (256 biți).

Moduri practice de cifrare a datelor

În practica criptării, apare necesitatea criptării unor informații de lungime oarecare (fișiere, mesaje, e-mail, parole etc.). În acest scop, există două moduri principale de utilizare a cifrurilor:

– Cifrarea bloc operează cu blocuri de text clar și cifrat – de regulă de 64 de biți, dar uneori și mai mari. În acest caz, același bloc de text clar va fi cifrat de fiecare dată în același bloc de text cifrat, folosind aceeași cheie.

– Cifrarea secvențială operează cu secvențe de text clar și cifrat de un bit sau octet (uneori chiar și cu cuvinte de 32 de biți). În cifrarea secvențială, secvențe similare de text clar vor fi cifrate diferit, în cazul unor cifrări repetate.

Modurile de criptare practică constituie combinații ale celor două tipuri de bază. Vom exemplifica cu un exemplu foarte răspândit.

Cifrare carte de coduri (Electronic Codebook-ECB)

ECB este cea mai obișnuită cale de cifrare bloc, prin care un bloc de text clar se transformă într-un bloc de text cifrat. De vreme ce același bloc de text clar se cifrează întotdeauna în același bloc de text cifrat, teoretic este posibilă crearea unei cărți de coduri în care să se facă asocierea text clar – text cifrat. Pentru blocuri de 64 de biți rezultă un număr de 264 de intrări în cartea de coduri – mărime mult prea mare pentru a permite memorarea și manipularea lor. În plus, fiecare cheie necesită propria carte de coduri. Dacă notăm cu Ci blocurile de criptogramă, cu Pi blocurile de text clar și cu K cheia, avem:

la criptare: Ci = Ek (Pi)

la decriptare: Pi = Dk (Ci)

S-a notat cu Ek funcția de cifrare ( de exemplu FROG sau DES sau IDEA) cu cheia K și cu Dk funcția de decriptare cu aceiași cheie. Acesta este cel mai simplu mod de lucru, în care fiecare bloc de text clar este cifrat independent. Fișierul ce se criptează nu trebuie să intre la cifrare liniar, de la început la sfârșit. Criptarea se poate face luând aleator blocuri din cadrul fișierului. Acest lucru este important pentru fișierele criptate care sunt accesate aleator, ca de exemplu în cazul bazelor de date. Dacă o bază de date este criptată cu ECB atunci orice înregistrare poate fi adăugată, ștearsă, criptată sau decriptată independent de celelalte – considerând că înregistrările conțin un număr întreg de blocuri criptate.

Problema ECB-ului poate fi formulată astfel: un criptanalist, care deține textul clar și textul cifrat echivalent pentru câteva mesaje, poate realiza o carte de coduri fără a cunoaște cheia? În exprimarea curentă sunt fragmente de mesaje care tind să se repete. Mesajele de comunicație între calculatoare, cum ar fi poșta electronică, au structuri regulate. Mesajele pot avea structuri redundante sau șiruri lungi de spații sau zerouri. Dacă criptanalistul realizează că mesajul în clar 5e081bc5 se criptează în textul cifrat 7ea593a4, el poate decripta imediat respectivul mesaj acolo unde îl întâlnește. Mai mult, dacă mesajele criptate au un număr mare de redundanțe și acestea tind să apară în aceleași locuri în mesaje diferite, atunci un criptanalist poate estima o serie de informații. El poate intensifica atacul statistic asupra textului de bază, indiferent de tăria cifrului bloc.

Cele mai multe mesaje nu se împart exact în blocuri de 64 de biți (sau orice altă mărime), de regulă rămânând un bloc scurt la sfârșitul mesajului. ECB necesită blocuri de 64 de biți. Această problemă se rezolvă prin Completarea blocurilor (padding). Se completează ultimul bloc cu un model zero-unu, alternând cifrele de 1 și 0, astfel încât blocul să devină complet. Deoarece este nevoie la decriptare de ștergerea acestor surplusuri, ultimul octet al ultimului bloc va conține numărul de octeți adăugați. De exemplu, un mesaj care după împărțirea în blocuri de 64 de biți rămâne cu ultimul bloc de doar 3 octeți, se completează cu 4 octeți, iar ultimul octet va conține numărul 5. La decriptare, se citește ultimul octet și se șterg ultimii 5 octeți.

Principalul dezavantaj al algoritmilor simetrici consta în faptul ca impun un schimb de chei private înainte de a se începe transmisia de date. Altfel spus, pentru a putea fi utilizati, este necesar un canal cu transmisie protejata pentru a putea fi transmise cheile de criptare / decriptare.

Figura 7. Schema de aplicare a unui algoritm simetric

Cum alegem criptarea în aplicațiile din rețele

Putem privi securitatea (datelor, comunicațiilor, în general a oricărui tip de informații) ca un lanț. Securitatea întregului sistem este o combinație puternică de legături slabe.

Totul trebuie securizat: algoritmii criptografici, protocoalele, programele de administrare etc. Criptografia este doar o parte a securității; ea acoperă problematica realizării securității unui sistem, ceea ce este diferit de ceea ce înseamnă realizarea unui sistem securizat. Tradiționala imagine a criptografiei, ca spion în tehnologie, este destul de departe de realitate.

Rolul criptografiei în aceste aplicații este de a împiedica furturile și înșelăciunile. În cele mai multe dintre aceste aplicații nu s-a utilizat eficient criptografia, atacurile reușite neavând nimic în comun cu criptanaliza. Chiar și NSA (National Security Agency) a admis că marea parte a erorilor, apărute în activitățile sale, provin din erorile de implementare și nu din algoritmi sau protocoale. În aceste condiții, nu contează cât de bună a fost criptografia, atacurile reușite anulând acest lucru și speculând erorile de implementare.

Pentru alegerea și evaluarea unui algoritm, există o serie de variante:

– se poate alege un algoritm publicat, în ideea că un astfel de algoritm a fost analizat de mulți criptanaliști și, dacă încă nu a fost spart, el este bun;

– se poate utiliza un produs al unui fabricant, acesta din urmă având interesul de a realiza produse cât mai performante;

– se poate apela la serviciile unui specialist în domeniu;

– se poate scrie un algoritm propriu.

Fiecare dintre aceste alternative este problematică, însă prima este cea mai pretabilă, restul putând genera probleme. Mulți dintre cei care fac apel la consultanți nu au de obicei noțiuni despre criptare. Pentru NSA lucrează câțiva dintre cei mai buni criptanaliști, dar aceștia cu siguranță nu vor spune tot ceea ce știu. Chiar dacă sunteți un geniu, a scrie un algoritm și a-l utiliza fără a afla opiniile altora, constituie o greșeală.

Algoritmii prezentați în diferite lucrări sunt publici. Cei mai mulți au apărut în literatura de specialitate și majoritatea au fost criptanalizați de experți în domeniu. Literatura de specialitate prezintă rezultatele testărilor și studiilor, atât pe cele pozitive cât și pe cele negative.

Algoritmii pentru export în afara S.U.A. trebuie aprobați de guvern (concret, de către NSA). Este destul de răspândită opinia că algoritmii autorizați de către NSA pot fi sparți de către aceasta. Există câteva lucruri pe care NSA evită să le spună firmelor străine cărora le aprobă folosirea produselor criptografice:

– punerea câte unui bit de cheie, la un moment dat, în textul cifrat;

– scurtarea cheii la o dimensiune mult mai mică; de exemplu, dacă algoritmul admite o cheie de 8 octeți, din cheie să se folosească numai 4 octeți;

– criptarea unui header fixat sau a unui șir aleator la începutul fiecărui mesaj criptat, facilitându-se atacul prin text clar cunoscut.

NSA păstrează o copie a codului sursă al programelor criptografice aprobate pentru export, însă detaliile algoritmului rămân secrete. Cu certitudine, nimeni nu a făcut publică vreuna dintre aceste slăbiciuni, însă trebuie să se știe aceasta când se cumpără un produs criptografic din S.U.A. care a fost aprobat pentru export.

Sistemele simetrice, datorită cerințelor de distribuție sigură a cheilor criptografice, sunt greoaie în utilizare în comunitățile mari de utilizatori din Internet.

Experiența a arătat că orice schemă criptografică are o viață limitată și că avansul tehnologic reduce, mai devreme sau mai târziu, securitatea furnizată de ea. Actualmente se lucrează la NIST – Institutul Național de Standarde și Tehnologie al SUA la selectarea unuia din cei 12 algoritmi candidați pentru noul standard criptografic evoluat – AES, Advanced Encryption System, cerut de noile performanțe tehnologice atinse în lumea calculatoarelor de azi.

Cifrurile asimetrice (cu chei publice)

Criptografia asimetrică este un tip de criptografie în care utilizatorul are o pereche de chei, una publică și una privată. Folosind cheia publică se poate cripta un mesaj care nu va putea fi decriptat decât cu cheia pereche, cea privată. Matematic, cele două chei sunt legate, însă cheia privată nu poate fi obținută din cheia publică, invers se poate.

O analogie foarte potrivită pentru proces este folosirea cutiei poștale. Oricine poate pune în cutia poștală a cuiva un plic, dar la plic nu are acces decât posesorul cheii de la cutia poștală. 

Figura 8. Criptarea cu cheie asimetrică

Criptografia asimetrică se mai numește criptografie cu chei publice.

Cele două mari ramuri ale criptografiei asimetrice sunt:

Criptarea cu cheie publică – un mesaj criptat cu o cheie publică nu poate fi decodificat decât folosind cheia privată corespunzătoare. Metoda este folosită pentru a asigura confidențialitatea.

Semnături digitale – un mesaj semnat cu cheia privata a emițătorului poate fi verificat de oricine are acces la această cheie, astfel asigurându-se autenticitatea mesajului. O analogie pentru semnăturile digitale ar fi sigilarea unui plic folosind un sigiliu personal. Plicul poate fi deschis de oricine, dar sigiliul personal este cel care verifică autenticitatea plicului.

O problema majoră în folosirea acestui tip de criptare este încrederea (dovada) că cheia publică este corectă, autentică și nu a fost interceptată sau înlocuită de o a treia parte rău voitoare. În mod normal problema este rezolvată folosind infrastructura cu cheie publică Public Key Infrastructure (PKI) în care una sau mai multe persoane asigură autenticitatea cheilor pereche. O altă abordare folosită de PGP (Pretty Good Privacy) este cea a conceptului web of trust .

În trecut, cheia folosită pentru criptare trebuia să fie secretă și prestabilită folosind o metodă sigură, dar nu criptică, de exemplu, o întâlnire sau un curier sigur. Totuși, această metodă impunea niște dificultăți de ordin practic. Criptarea cu cheie publică a fost creată tocmai cu scopul de a înlătura aceste probleme – cu această metodă utilizatorii pot comunica sigur pe un canal nesigur fără să fie nevoie de o cheie prestabilită.

Doi dintre cei mai utilizați algoritmi care folosesc chei publice sunt Rivest-Shamir-Adleman (RSA) și ElGamal.

Rivest-Shamir-Adleman (RSA)

Ron Rivest, Adi Shamir și Leonard Max Adleman, toți de la MIT (Massachusetts Institute of Technology) și-au publicat studiile în 1978, iar algoritmul a devenit cunoscut sub numele de RSA.

RSA folosește produsul dintre două numere prime mari pentru a cripta și decripta, făcând atât criptarea cheii publice cât și semnătura digitală. Securitatea acestei metode se bazează pe dificultatea descompunerii numerelor mari.

Din 1970 încoace, o mulțime de metode de criptare, semnături digitale, acordul asupra cheilor si alte tehnici au fost dezvoltate în domeniul criptografiei asimetrice.

În general, deoarece se bazează pe o operație destul de costisitoare din punct de vedere al timpului de calcul și al resurselor folosite, și anume exponențierea modulo n, viteza RSA este mult mai mică decât a algoritmilor de criptare cu cheie secretă. Conform estimărilor, o implementare hardware de RSA este de 1000 de ori mai lentă decât o implementare DES, iar în software, RSA este de 100 de ori mai lent.

Există anumite modificări care pot aduce performanțe sporite, precum alegerea unui exponent de criptare mic, care astfel reduce calculele necesare criptării, rezolvând în același timp și unele probleme de securitate. De aceea, în sistemele de comunicație în timp real, în care viteza de criptare și decriptare este esențială (cum ar fi, de exemplu, aplicațiile de streaming video sau audio securizate), RSA se folosește doar la începutul comunicației (pentru autentificare), pentru a transmite cheia secretă de comunicație, care ulterior este folosită într-un algoritm cu cheie secretă, cum ar fi 3DES sau AES.

Există două metode de folosire a RSA

RSA signatures – folosit pentru semnarea mesajelor pentru a asigura non-repudierea acestora.

RSA encryption – metodă folosită pentru criptarea mesajelor. Se generează un string aleator temporar, denumit ”nonce” care este combinat cu cheia publică.

Sistemele criptografice având chei publice reprezintă un moment crucial în evoluția criptografiei moderne; Whitfield Diffie și Martin Hellman, de la Universitatea Stanford din California, au pus bazele unui principiu diferit de cel al cifrării simetrice (1976): în locul unei singure chei secrete, criptografia asimetrică folosește două chei diferite, una pentru cifrare, alta pentru descifrare. Una dintre chei – cheia privată (PRIV) – este ținută secretă și este cunoscută doar de proprietarul ei. A doua cheie (perechea ei, dedusă matematic printr-o funcție greu inversabilă din prima) – cheie publică (PUB) – este făcută publică, de unde și numele de criptografie cu cheie publică. Ambele chei sunt de fapt niște fișiere, furnizate de un program capabil să genereze aceste perechi. Dacă cheia publică o puteți da oriunde în lume, pe cea privată trebuie să o păstrați la loc sigur. Pentru a se asigura confidențialitatea (secretizarea) unui mesaj, datele sunt cifrate la emisie cu cheia publică a receptorului. Ele pot fi descifrate doar de către destinatarul autentic, cu cheia privată, pe care o deține doar el.

Dacă se dorește semnarea digitală (electronică) a datelor în vederea verificării autenticității, datele sunt cifrate cu cheia privată a emițătorului, iar verificarea poate fi făcută numai cu cheia sa publică. Ca urmare, semnătura nu poate fi falsificată, deoarece doar emitentul autentic este în posesia cheii sale private.

O cheie criptografică este de fapt un fișier. Cheia privată "stă" pe calculatorul dumneavoastră pe care nu trebuie să-l părăsească. În ceea ce privește cheia publică, puteți face nenumărate copii pe care să le distribuiți oriunde vreți. Însă dumneavoastră aveți nevoie de amândouă, ele fiind puternic legate una de alta. Folosirea semnăturilor se face astfel:

– un utilizator criptează un mesaj, pe care vi-l adresează, folosind fișierul cheie publică al dumneavoastră, distribuit în mod liber. Apoi trimite mesajul către dumneavoastră. Numai dumneavoastră, folosind fișierul cu cheia privată, puteți decripta și apoi citi mesajul. Emițătorul poate fi sigur că nimeni altcineva nu va putea decripta sau modifica mesajul.

– dumneavoastră puteți cripta un mesaj cu cheia privată și apoi să-l trimiteți către o altă persoană. Orice persoană care deține cheia dumneavoastră publică (distribuită liber) poate decripta mesajul. În acest caz, persoana poate fi sigură că mesajul provine de la dumneavoastră, singurul care dețineți cheia privată. Este vorba de autentificarea expeditorului prin semnătură digitală.

Algoritmii de criptare cu cheie publică prezintă o cripto-complexitate foarte mare, bazându-se în general pe operații matematice complexe, cu numere întregi foarte mari (sute de cifre zecimale sau mii de biți), ceea ce conferă o tărie deosebită acestor metode de cifrare.

Un moment remarcabil în evoluția criptografiei ultimilor ani îl constituie apariția conceptului de criptografie cu chei în custodie (Key Escrow Systems). El își are punctul de plecare în SUA anilor '90, unde s-a încercat impunerea, de către agențiile statului însărcinate cu securitatea națională, a unui sistem prin care acestea, sub aprobare legală, să poată decripta transmisiile în rețele ale unor firme sau persoane.

Conceptul reprezintă nucleul central al programului guvernamental Clipper, numit și Escrowed Encryption Standard (EES), integrat unuia mai larg, numit Capstone. În decursul ultimilor 20 de ani s-a acumulat o anumită tensiune privind interesele publice pentru protecția informațiilor și interesele guvernamentale pentru obținerea accesului la informațiile adversarilor. Programul Clipper Key Escrow a fost o încercare de depășire a acestei tensiuni, oferind publicului o criptografie bună, păstrându-se pentru organele de impunere legală abilitatea de a decripta comunicațiile, când acest lucru este autorizat. În același timp, atât utilizatorii singulari cât și organizațiile se tem de consecințele pierderii cheilor.

Un sistem care ar putea satisface atât cerințele utilizatorilor singulari și a corporațiilor, dar care să îndeplinească și cerințele guvernamentale de decriptare autorizată, ar putea rezolva această problemă de interes internațional. Asigurarea confidențialității comunicațiilor și a datelor memorate în fișiere sau baze de date devine rapid parte integrantă a infrastructurii noastre informaționale. Scopul explicit al criptografiei este de a face dificil sau imposibil, pentru o terță parte, accesul la informația protejată. În mod clar, devine o problemă cazul în care această terță parte este o autoritate a statului, care, din motive legale sau sociale, consideră uneori că are dreptul de acces la această informație. Motivațiile legale sau sociale ale acestui "drept de ascultare" sunt discutabile și au fost îndelung dezbătute. S-a ajuns la concluzia că avem nevoie de mecanisme care să permită accesul la informație a unei terțe persoane autorizate, continuând însă să se protejeze informația în fața altor persoane. Se folosește termenul de criptografie cu chei în custodie pentru a desemna asemenea sisteme.

Răspândirea explozivă a rețelelor de calculatoare și în primul rând a Internet-ului, a accentuat problema securității acestora și a evidențiat, odată în plus, rolul criptografiei în asigurarea ei. Demonstrația cea mai răsunătoare în acest sens s-a făcut în noiembrie 1988, când Robert Morris – doctorand la [anonimizat] – a răspândit panică în lumea universitară. Violând anumite reguli ale rețelei de calculatoare Internet (reguli ce alcătuiesc un soi de "gentlmen's agreement"), autorul atacului a reușit să infecteze printr-un program cu auto-reproducere, mii de calculatoare VAX și Sun 3, funcționând sub o anumită versiune de sistem de operare Unix. Incidentul a avut efecte majore în lumea calculatoarelor, înființarea unei echipe de consultanță în cazuri urgente (CERT – Computer Emergency Response Team) pentru Internet și mărirea fondurilor alocate de firme pentru probleme de securitate a sistemelor de calcul fiind doar două dintre cele mai importante. Deși nu discută amănunte despre breșele din sistemele de securitate, soluțiile multor probleme importante sunt date de specialiștii CERT sub forma unor recomandări.

Internet-ul reprezintă cel mai mare proiect informatic de interconectare umană creat vreodată pe pământ. Evoluția sa este de-a dreptul spectaculoasă: de la 4 calculatoare interconectate în 1969, la 2800 în 1987, 535.000 în 1991, 1.7 milioane în 1993, 3.2 milioane în 1994 și aproape 10 milioane în 1998, cuprinzând astăzi câteva sute de mii de rețele conectate. În fiecare moment câteva zeci de milioane de utilizatori sunt conectați la Internet. Societatea modernă informatizată reprezintă deja o realitate în care se ignoră frontierele și se trece peste orice constrângeri de ordin spațial sau temporal. Economia, politica și societatea se bazează astăzi din ce în ce mai mult pe această infrastructură informatică. De asemenea, guvernele, firmele din sectorul public și privat, organismele financiare naționale și internaționale, învățământul, cultura și cercetarea științifică, toate beneficiază de aceste forme eficiente de conducere, informare și comunicare.

O serie de considerente, care privesc utilizarea informaticii în toate aceste domenii, fac ca securitatea informatică să fie considerată în momentul de față vitală pentru evoluția societății:

– Dependența puternică de informatică. Agențiile guvernamentale, firmele, băncile etc. se văd în imposibilitatea de a lucra fără a dispune în mod sigur de programele și datele memorate în rețelele lor de calculatoare.

– Vulnerabilitatea tehnologiilor informatice. Se referă la faptul că organizațiile și firmele nu pot avea încredere totală în sistemele informatice folosite și în măsurile de protecție efectivă. Sistemele sunt vulnerabile la penetrări neautorizate, la distrugeri și modificări accidentale sau voite de date sau programe. Aceste sisteme pot deservi elemente vitale pentru societate cum ar fi sisteme militare, bănci, spitale, sisteme de transport, burse de valori, oferind în același timp un cadru de comportament antisocial sau de terorism. Tendința actuală privind amplificarea conectivității, în special în Internet, sporește aceste vulnerabilități; este din ce în ce mai greu să se localizeze un punct de acces ilegal în rețea, un utilizator având comportament inadecvat. Mult timp securitatea s-a bazat pe respectul reciproc al utilizatorilor, pe "gentlemen agreement-ul" stabilit între aceștia și mai puțin pe măsuri tehnice și administrative. Odată însă ce Internet-ul s-a extins, comunitatea utilizatorilor a crescut foarte mult. Între aceștia se găsesc numeroase persoane care nu mai respectă regulile de comportament stabilite inițial de cercetători. Vulnerabilitatea sistemelor informatice actuale poate antrena pierderi imense de ordin financiar direct sau indirect, prin "scurgerea" de informații confidențiale având caracter personal, economic sau militar.

– Comerțul electronic. Datorită acestuia, în ultimii ani am asistat la marea "explozie" a internet-ului. Acesta va face să cadă toate barierele fizice existente azi în calea comerțului, creând posibilitatea ca și cele mai mici afaceri să acceseze o piață extinsă la întreaga lume. În același timp, clienții pot face afaceri și cumpărături de la firme care altfel nu le erau accesibile. Asigurarea securității comerțului internet reprezintă însă cea mai importantă provocare ce stă în fața profesioniștilor informaticieni.

Dacă în urmă cu șapte-opt ani comerțul internet nici nu exista, astăzi acesta reprezintă un loc de atragere a unor enorme interese financiare; ca urmare tot mai multe firme de calculatoare se întrec în a oferi echipamentele și programele necesare acestor servicii. Internet-ul devine foarte atractiv pentru micile firme, care pot fi foarte active pe rețea, se pot face mult mai rapid cunoscute și îți pot promova mai ieftin politica de piață. În acest context, multe afaceri au migrat în ultimii ani pe Internet. Practic, nu există firmă într-o țară cu o dezvoltare cel puțin medie care să nu aibă pagini Web, pe care se găsesc informații despre serviciile și produsele oferite. De asemenea, consumatorii și producătorii pot comunica instantaneu prin e-mail, ceea ce le oferă posibilitatea unei informări reciproce și a unor comunicații foarte ieftine. Și totuși aceștia nu s-au "aruncat" încă să facă comerț la scară mare pe Internet. De ce oare această reținere? Motivul este securitatea tranzacțiilor comerciale.

În aceste circumstanțe, securitatea informatică a devenit una din componentele majore ale Internet-ului. Utilizarea serviciilor de poștă electronică, Web, transfer electronic de fonduri și documente etc., se bazează pe un sentiment adeseori fals, de securitate a comunicațiilor, care poate transforma potențialele câștiguri generate de accesul rapid la informații, în pierderi majore cauzate de furtul de date sau de inserarea unor informații false ori denaturate. Analiștii acestui domeniu au sesizat o contradicție aparentă între nevoia de comunicații și conectivitate, pe de o parte și necesitatea asigurării confidențialității, integrității și autenticității informațiilor, pe de altă parte.

Domeniul relativ nou al securității informatice caută soluții tehnice pentru rezolvarea acestei contradicții. În acest context, asistăm la o nouă tinerețe a domeniului străvechi al criptografiei. Datorită aplicațiilor ei în securitatea Internet-ului, criptografia a devenit azi unul dintre cele mai dinamice domenii de cercetare științifică academică. Acoperită multă vreme sub "voalul" utilizărilor militare și diplomatice, criptografia este astăzi din ce în ce mai implicată în activitățile noastre informatice de zi cu zi, unii vorbind deja despre existența unei criptografii "casnice". De aceea, pe parcursul a câteva numere, vom încerca să explicăm cele mai importante concepte care stau la baza criptografiei moderne și să vedem care și sunt principalele aplicații în Internet.

Capitolul III. Scheme de semnături digitale

Iată o sintagmă care este cunoscută probabil celor mai mulți dintre voi: “Factura a fost ștampilată? S-a semnat documentul de către partenerul de afaceri?” Practic, semnarea și ștampilarea reprezintă modurile prin care documentele tale capătă recunoaștere juridică.

În fiecare zi, oamenii semnează scrisorile și alte documente, demonstrând că sunt de acord cu conținuturile lor. Totuși, semnăturile manuale sunt vulnerabile pentru că e posibil să fie reproduse și ca documentele să fie modificate după ce au fost semnate. Semnăturile digitale și cele manuale sunt ambele bazate pe faptul că e foarte greu să găsești două persoane cu aceeași semnătura.

Derularea afacerilor prin intermediul rețelei Internet și schimbul de date pe suport electronic necesită existența aceluiași sentiment de încredere și securitate al partenerilor care încheie o tranzacție la fel ca în cazul comerțului "clasic". Acest sentiment poate fi dat acum de folosirea semnăturii digitale. Semnătura electronică (sau digitală) este pentru documentele electronice ceea ce este o semnătura olografă pentru documentele tipărite.

Semnătura electronică reprezintă informații în format electronic și care sunt atașate sau logic asociate unor documente, în formă de asemenea electronică, și servește ca metodă de identificare a semnatarului și este înmagazinată pe suport magnetic securizat.

Cu alte cuvinte, semnăturile digitale permit autentificarea mesajelor digitale, asigurând destinatarul de identitatea expeditorului și de integritatea mesajului, furnizând astfel un grad mult mai mare de securizare decât semnătura olografă.

Destinatarul mesajului semnat digital poate verifica atât faptul că mesajul original aparține persoanei a cărei semnătura a fost atașată cât și faptul că mesajul n-a fost alterat, intenționat sau accidental, de când a fost semnat. Mai mult, semnătura digitală nu poate fi negată; semnatarul documentului nu se poate disculpa mai târziu invocând faptul că a fost falsificată (Documentele "parafate“ cu o semnătura electronică au valabilitate juridică în instanță, iar emitentul acesteia este identificat fără putință de tăgadă).

Semnatarul este definit ca fiind acea persoana care deține un dispozitiv de creare a semnăturii electronice și care acționează fie în nume propriu (persoană fizică) fie în numele unui terț (persoană juridică, de exemplu).

Semnătura electronică se aplică unui document în format electronic, redactat sau obținut prin intermediul programelor informatice, de exemplu:

– Documente MS Word (contracte, documente, notificări, etc.) ;

– Spread-sheet Excel (rapoarte financiare, ștate de plată a salariilor, etc.);

– Documente Adobe Acrobat;

– Fotografii digitale (constatări, mostre, comandă de produse, etc.);

– Programe expert de gestiune a documentelor;

– Documente rezultate din prelucrarea datelor contabile și fiscale.

Figura 9. Semnarea unui document electronic sau software

În lumea fizică, este ușor de recunoscut cine este cine, fie prin vedere, fie prin auz, fie prin recunoașterea scrisului de mână. Cu toate acestea, în lumea digitală, toată lumea interferează pe un ecran de computer. Atunci când organizațiile își mută tranzacțiile de afaceri online, securitatea și încrederea devin cerințele obligatorii. Prin urmare, autentificarea identității, fie de către un individ sau o organizație, a devenit o problemă primară. Semnătura digitală, ca un mecanism care accelerează tranzacții, economisește costurile, reduce hârtia, și îmbunătățește securitatea tranzacției, a fost folosită pe scară largă ca o componentă fundamentală a activității în spațiul cibernetic. O semnătură digitală asigură integritatea datelor, precum și dovada de origine (non-repudiere). Aceasta poate fi păstrată de către receptor pentru soluționarea litigiilor în cazul în care expeditorul neagă conținutul mesajului sau chiar să nege că l-a trimis. De asemenea, semnătura digitală este folosită pentru autentificarea la sisteme sau aplicații.

Arhitectura de securitate OSI (ISO7498-2) definește două tipuri de autentificare, autentificarea entității și autentificarea originii datelor.

Autentificarea entității verifică identitatea unei entități de către alta. Este o operațiune orientată pe conexiune. Autentificarea entității este de obicei realizată cu ajutorul unui mecanism de schimb de autentificare. Un astfel de mecanism constă într-un schimb de mesaje între o pereche de entități și este de obicei numit un protocol de autentificare. Autentificarea entității include autentificarea unilaterală, care prevede o entitate cu asigurarea identității alteia, dar nu invers, și autentificarea reciprocă, care prevede ambele entități cu asigurarea identității reciproce.

Autentificarea originii datelor prevede coroborarea la o entitate a cărei sursă de date primite este pretinsă. Cu toate acestea, serviciul în sine nu oferă protecție împotriva duplicării sau modificării unor unități de date. Semnătura digitală este o tehnică de autentificare specială, care poate fi utilizată pentru a stabili originea unui mesaj în vederea soluționării litigiilor cu privire la ce mesaj (dacă există) a fost trimis.

În lumea conectată la o rețea, nu este posibilă autentificarea unei persoană în același mod în care se realizează în lumea fizică. Prin urmare, este necesară o bază pentru autentificare, care impune construirea unui protocol de autentificare. De fapt, autentificarea se realizează printr-un schimb de mesaje criptografice – un secret împărțit între cele două entități. Așa-numitul secret partajat poate fi clasificat într-unul dintre următoarele trei domenii:

Ceva ce știți, un cod PIN sau parolă. Aceasta este o autentificare bazată pe cunoaștere. În acest scenariu, o persoană și sistemul IT împărtășesc un PIN sau o parolă prestabilite. Unei persoană i se cere să introducă codul PIN / parola la autentificare și este transformată într-o cheie de criptare. Această cheie este apoi utilizată în protocolul de autentificare. În cazul în care codul PIN sau parola pe care persoana o introduce se potrivește cu una stocată în sistem, atunci persoana este autentificată.

2. Ceva ce aveți, o carte de identitate securizată sau de altă natură simbolică, care poate genera o parolă unică, o cheie introdusă într-o "zonă de siguranță" în mașina gazdă, în software-ul browser-ului, etc.; sau un card cu memorie (care poate avea introduse chei și poate efectua operațiuni criptografice în numele unui utilizator). Acesta este un semn de autentificare bazate pe token. În acest scenariu, o cheie este prezentată pe token. Deținerea simbolului înseamnă posesia cheii. Prin urmare, oricine poate obține simbolul poate fi autentificat ca proprietar al acestuia.

3. Ceva ce sunteți, cum ar fi o caracteristică fiziologică sau comportamentală. Aceasta este o autentificare bazată pe biometrie. În acest scenariu, datele biometrice sunt convertite într-un profil care este comparat cu un profil stocat. In zilele noastre, tehnicile utilizate în autentificare includ date biometrice statice, care includ amprente digitale, retiniene, irisul, geometria feței și a mâinii; și biometrica dinamică, care include vocea și verificarea semnăturii. O persoană este autentificată dacă între profilul biometric și cel stocat se obține o potrivire cât mai apropiată. Prin urmare, este necesară protecția profilelor (prin criptare) în tranzit între dispozitivul de capturare a biometriei și serverul care efectuează verificarea datelor biometrice. Informațiile trebuie să fie protejate de captarea de către o terță parte care ar putea să-l utilizeze în scopuri dăunătoare, prin introducerea acestuia în rețea.

Obiectele de identificare bazate pe cunoaștere și simbol nu se bazează pe nici un atribut inerent al unui individ de a realiza autentificarea. Există o serie de dezavantaje asociate cu acestor două metode de autentificare. Token-urile pot fi pierdute, furate, uitate, sau date în mod voluntar unui impostor. PIN-ul și parola pot fi uitate, ghicite, zărite sau voluntar dezvăluite unui impostor. Elementele biometrice integrate sunt în mod inerent mai fiabile și nu suferă de aceste dezavantaje. Cu toate acestea, au alte dezavantaje, cum ar fi dificultatea de înregistrare, înscriere și folosire: ele sunt, de asemenea, afectate de condițiile de mediu și de sănătate.

Cu toate acestea, toate aceste „secrete" sunt vulnerabile atunci când sunt transferate prin rețea deschisă; chiar și o parolă organizate ca hash sau PIN-ul sunt vulnerabile la căutarea în dicționar sau la atacurile exhaustive. Parolele sunt un exemplu de mecanism de autentificare slab; o persoană demonstrează cunoașterea unei parole care se potrivește cu ID-ul de utilizator și serverul o compară cu o intrare dintr-un fișier parolă. Cu acest gen de metodă de parolare, parola este secretul și parola sau hash-ul acesteia sunt dezvăluite.

În metodele puternice de autentificare, prin contrast, o entitate dovedește identitatea în fața alteia prin demonstrarea cunoștințelor unui secret cunoscut a fi asociat cu această entitate, fără a dezvălui secretul în timpul protocolului. Nu este nevoie de două părți implicate să știe exact ce parolă este, este posibil ca o singură entitate să obțină informațiile asociate cu parola pentru a aproba cunoașterea parolei. Acesta este așa numitul protocol "provocare – răspuns". Se bazează pe criptare, mecanism de integritate (MAC), sau semnătură digitală.

Tehnicile criptografice pot fi folosite în mod concertat pentru a oferi o suită completă de servicii de securitate. Acestea ar trebui luate în considerare pentru protecția informațiilor și sistemelor sensibile sau critice. Criptografia este o ramură a matematicii aplicată care se ocupă cu transformarea datelor de securitate.

În criptografie, un expeditor transformă informații neprotejate (text simplu) în text codificat (text-cifru). Un receptor folosește criptografia pentru a transforma textul cifru înapoi în text simplu, să verifice identitatea expeditorului, să verifice integritatea datelor lui, sau o combinație a acestora.

Semnătura digitală este unul dintre mecanismele care pot fi folosite pentru a proteja integritatea și autenticitatea documentelor electronice. Aceasta poate fi aplicată oricărei forme de document prelucrat electronic. Semnătura digitală este implementată prin utilizarea unei tehnici de criptare bazate pe o pereche unică de chei asociate, unde o cheie este utilizată pentru a crea o semnătură (cheia privată), iar cealaltă pentru a verifica semnătura (cheia publică).

Trebuie avută grijă la protejarea confidențialității cheii private. Această cheie ar trebui să fie păstrată secretă, deoarece oricine are acces la această cheie poate semna documente. În plus, protejarea integrității cheii publice este importantă. Această protecție este asigurată prin utilizarea unui certificat de chei publice.

Una dintre principalele probleme asociate cu criptografia este punerea cheilor private la dispoziția utilizatorilor autorizați, fără a le dezvălui altcuiva. Alte probleme principale includ fixarea cheilor publice de entități, permițând altor entități verificarea cheilor publice de legătură, precum și furnizarea serviciilor necesare pentru gestionarea continuă a cheilor într-un sistem distribuit. Abordarea emergentă la adresa de care această securitate are nevoie face uz de caracteristicile accesibile și distribuite ale Infrastructurii Cheii Publice (PKI). PKI poate accelera și simplifica livrarea produselor și serviciilor prin oferirea de abordări electronice.

Termenul "infrastructura cheii publice" este derivat din criptografia cheii publice, tehnologie pe care se bazează PKI. Ea are caracteristici unice care o fac neprețuită ca bază pentru funcțiile de securitate în sisteme distribuite. Infrastructurii cheii publice este o combinație de software, tehnologii de criptare și servicii care permite organizațiilor să protejeze securitatea comunicațiilor și a tranzacțiilor lor de afaceri în rețele. PKI integrează certificatele digitale, criptografia cu cheie publică și autoritățile de certificare într-un set complet de arhitectură de securitate la nivel larg a organizației.

Un exemplu tipic de PKI cuprinde emiterea de certificate digitale pentru utilizatorii individuali și servere, software-ul de înscriere a utilizatorului final; integrarea cu certificate; instrumente de gestionare, de reînnoire, precum și pentru retragerea certificatelor; și servicii conexe și asistență.

Elementele funcționale ale unei infrastructuri de chei publice includ autoritățile de certificare, autoritățile de înregistrare, repertorii și arhive.

O autoritate de certificare (CA), similară unui notar, eliberează sau revocă certificate.

O autoritate de înregistrare (RA), o entitate care este încredințată de CA să înregistreze sau să garanteze asocierea dintre cheile publice și identitatea titularului certificatului cu o CA.

Un repertoriu este o bază de date de certificate digitale active și liste de revocare de certificat (LCR) pentru un sistem de CA.

O arhivă este o bază de date de informații pentru a fi utilizate în soluționarea viitoarelor litigii.

Utilizatorii PKI sunt organizații sau persoane care utilizează PKI, dar care nu eliberează certificate.

O CA este componenta de bază a PKI, o colecție de hardware, software și oameni care-le operează. Este cunoscut după numele acestuia și cheia sa publică sale. O CA îndeplinește patru funcții de bază ale PKI:

Eliberează certificate.

Menține informații cu privire la starea certificatelor și eliberează fișiere CRL.

Publică certificate curente și fișiere CRL

Menține arhivele de informații despre starea certificatelor expirate care au fost eliberate.

O CA emite un certificat digital pentru fiecare identitate, confirmând că identitatea are prerogative corespunzătoare. Un certificat digital include de obicei cheia publică, informații despre identitatea părții care deține cheia privată corespunzătoare, perioada de funcționare pentru certificat, și semnătură digitală proprie CA. O CA trebuie, de asemenea, să elibereze și să prelucreze listele de revocare a certificatelor (fișiere CRL), care sunt liste de certificate care au fost revocate.

O RA este proiectată pentru a verifica conținutul certificatului pentru CA. Ca și CA, o RA este o colecție de hardware, software, și persoana sau persoanele care-le operează. Spre deosebire de CA, o RA va fi deseori exploatată de către o singură persoană. Fiecare CA va păstra o listă de RA-uri acreditate; o RA este cunoscută pentru CA după numele și cheia publică ale acesteia.

Aplicațiile PKI sunt puternic dependente de un serviciu director pentru distribuirea certificatelor și a informațiilor cu privire la starea certificatului. Directorul oferă un mijloc de stocare și distribuire a certificatelor, precum și gestionarea actualizării certificatelor.

O arhivă acceptă responsabilitatea pentru stocarea pe termen lung a informațiilor în favoarea CA. O arhivă afirmă că informația a fost bună în momentul în care a fost primită, și nu a fost modificată în timp ce s-a aflat în arhivă. Arhiva protejează informațiile prin intermediul unor mecanisme tehnice și proceduri adecvate în timp ce le are în grija sa. În cazul în care un diferend cu privire la semnătură apare la o dată ulterioară, informațiile pot fi utilizate pentru a verifica dacă cheia privată asociată cu certificatul a fost utilizată pentru a semna un document.

Utilizatorii PKI se bazează pe alte componente a PKI să obțină certificate și să verifice certificatele altor entități cu care fac afaceri. Entitățile din urmă includ partea care se bazează pe certificat să știe, cu certitudine, cheia publică a unei alte entități și titularul certificatului, care are eliberat un certificat și poate semna documente digitale.

Titularii de certificate își vor obține certificatele de la CA diferite, în funcție de organizația sau comunitatea în care ei sunt membri. Un PKI este de obicei compus din mai multe CA legate prin căi de încredere. O cale de încredere leagă o parte de bază cu una sau mai multe părți terțe de încredere, astfel încât partea de bază poate avea încredere în valabilitatea certificatului în uz. Există două arhitecturi tradiționale PKI pentru a sprijini acest obiectiv, arhitectura ierarhică și arhitectura plasă. O a treia abordare, arhitectura CA pod a fost dezvoltată pentru a se adresa situației în care organizațiile se confruntă în încercarea de a lega propriile PKI-uri cu cele ale partenerilor lor de afaceri.

Ierarhică. Autoritățile sunt aranjate ierarhic în cadrul unei CA "rădăcină" CA, care eliberează certificate la CA subordonate. Aceste CA pot elibera certificate pentru CA sau utilizatori aflați mai jos în ierarhie. Într-un PKI ierarhic, fiecare parte de bază cunoaște cheia publică a CA rădăcină. Orice certificat poate fi verificat prin verificarea căii de certificare a certificatelor de la CA rădăcină.

Plasă. CA independente se certifică reciproc (adică își eliberează reciproc certificate), rezultând într-o plasă generală a relației de încredere între CA egale. O parte de bază știe cheia publică a unei "CA apropiate", în general, cea care a emis certificatul său. Partea de bază verifică certificatul prin verificarea unei căi de certificare a certificatelor care duce de la CA de încredere.

Figura 1.1 ilustrează aceste două arhitecturi de bază PKI. În ierarhică, nodul 1 denotă rădăcină CA.

Figura 10. Arhitectură tradițională PKI

CA pod. Arhitectura CA pod a fost concepută pentru a conecta PKI-uri organizaționale, indiferent de arhitectura acestora. Acest lucru este realizat prin introducerea unei noi CA, numită CA Pod, a cărui unic scop este de a stabili relații cu PKI-uri organizaționale.

Spre deosebire de o CA plasă CA, CA pod nu eliberează certificate direct către utilizatorii finali. Spre deosebire de o CA rădăcină într-o ierarhie, CA Pod nu este destinat utilizării ca un punct de încredere. Toți utilizatorii PKI considera CA Pod în calitate de intermediar. CA Pod stabilește relații punct cu punct cu diferite PKI organizaționale PKI (Figura 1.2). Aceste relații pot fi combinate pentru a forma un pod de încredere de utilizatori conectați la PKI diferite.

Dacă domeniul de încredere este implementat ca un PKI ierarhic, CA Pod va stabili o relație cu CA rădăcină. Dacă domeniul este implementat ca o PKI plasă, podul va stabili o relație cu numai una dintre CA. În ambele cazuri, CA care intră într-o relație de încredere cu podul este definită ca fiind principala CA.

Figura 11. Ilustrarea CA Pod

O semnătură digitală este reprezentată într-un calculator ca un șir de cifre binare. Aceasta este calculată cu ajutorul unui set de reguli și un set de parametri, astfel încât identitatea semnatarului și integritatea datelor să poată fi verificată. Semnătura digitală este implementată folosind o tehnică de criptare bazată pe o pereche unică asociată de chei unde o cheie este utilizată pentru a crea o semnătură (cheia privată), iar cealaltă pentru a verifica semnătura (cheia publică), ceea este cunoscut sub numele de Criptografia Cheii Publice.

Semnătura digitală implică două procese: crearea semnăturii și verificarea semnăturii. Generarea semnăturii face uz de o cheie privată pentru a genera o semnătură digitală. Verificarea semnăturii face uz de o cheie publică, care corespunde cheii private. Fiecare utilizator are o pereche de chei publică și privată. Cheile publice sunt presupuse a fi cunoscute de public în general. Cheile private nu sunt niciodată partajate. Oricine poate verifica semnătura unui utilizator prin folosirea cheii publice a utilizatorului, în timp ce crearea semnăturii poate fi efectuată numai de către posesorul cheii private a utilizatorului. Conexiunea dintre cheia privată și cheia publică se realizează astfel încât să fie imposibilă din punct de vedere al calculului obținerea cheii de semnătură de la cheia de verificare. Infrastructura Cheii Publice (PKI) facilitează managementul și distribuția cheii.

Semnătura digitală poate fi clasificată în principal în trei algoritmi în ceea ce privește generarea și verificarea, care sunt după cum urmează.

Algoritmul semnăturii digitale DSA

Acesta este un standard care definește algoritmul semnăturii digitale (DSA). A fost propus de Schnorr și El Gamal. Algoritmul este bazat pe logaritmi discreți pentru crearea și verificarea semnăturii. O funcție hash (Algoritm Hash Securizat, SHA-1) este folosită în procesul de generare a semnăturii pentru a obține o versiune condensată de date, așa-numitul extras al mesajului. Extrasul mesajului este apoi introdus în DSA pentru a genera semnătura digitala. Semnătura digitală este trimisă la verificatorul destinat împreună cu datele semnate (adesea numit mesaj). Verificatorului mesajului și al semnăturii verifică semnătura prin utilizarea cheii publice a expeditorului. În procesul de verificare trebuie utilizată aceeași funcție hash. Proceduri similare pot fi folosite pentru a genera și verifica semnături pentru date stocate sau transmise. În DSA, crearea semnăturii este mai rapidă decât verificarea semnăturii.

Este necesar un mijloc de a asocia perechi de chei publice și private cu utilizatorii corespunzători. Adică trebuie să existe o legătură între identitatea unui utilizator și cheia publică a utilizatorului. Acest caracter obligatoriu poate fi certificat de către o parte de încredere reciprocă. O terță parte de încredere (TTP) este implicată pentru a rezolva problema litigiilor. De exemplu, o autoritate de certificare ar putea semna scrisorile de acreditare care conțin cheia publică și identitatea unui utilizator pentru a forma un certificat.

În 1991 NIST a propus algoritmul de semnătură digitală numit DSA a cărui standard s-a numit Digital Signature Standard (DSS).

Generarea cheilor

Fiecare entitate generează cheia publică și cheia privată corespunzătoare. Entitatea A execută următoarele:

1. Generează un număr prim q astfel încât 2159 < q < 2160 .

2. Generează un număr prim p astfel încât 2512 ≤ p < 21024 și q|p-1

3. Selectează un generator α pentru grupul ciclic Zp* de ordin q

3.1 Alege un element g∈Zp* și calculează α = g(p-1)/q mod p

3.2 Dacă α = 1, atunci se execută pasul 3.1.

4. Se selectează un număr întreg a astfel încât 1 ≤ a ≤ q-1.

5. Se calculează y = αa mod p.

6. Cheia publică a entității A este (p,q,α,y), iar cheia privată este a.

Generarea semnăturii

Entitatea A semnează un mesaj m astfel:

• Selectează aleator un număr întreg k astfel încât 0<k<q.

• Calculează r = (αk mod p) mod q.

• Calculează k-1 mod q.

• Calculează s = k-1(H(m)+a*r) mod q, unde H este o funcție hash.

• Semnătura mesajului m este perechea (r,s).

Verificarea semnăturii

Pentru a verifica semnătura (r,s) a mesajului m, entitatea B execută următoarele:

• Obține cheia publică autentică (p,q,α,y) a entității B.

• Verifică dacă 0 < r< q și 0 < s< q. Dacă aceste inegalități nu au loc, semnătura (r,s) nu e validă.

• Calculează w = s-1 mod q și H(m).

• Calculează u1 = w*H(m) mod q și u2 = r*w mod q.

• Calculează v = (αu1 yu2 mod p ) mod q.

• Semnătura (r,s) a mesajului m este acceptată dacă și numai dacă v = r.

Exemplu:

• Entitatea A selectează numerele prime p = 124540019 și q = 17389 astfel încât q | p-1.

• A selectează g = 110217528∈Zp* și calculează α = g7162 mod p=10083255.

• A selectează un număr întreg a = 12496 astfel încât 1≤a≤q-1 și calculează y = αa mod p = 1008325512496 mod 124540019 = 19946265.

• Cheia publică a lui A este (p = 124540019, q = 17389, α = 10083255, y = 119946265),

• Cheia privată a lui A este a = 12496.

Exemplu:

• Pentru a semna un mesaj m, A alege aleator un număr întreg k=9557 și calculează r = (αk mod p) mod q = (100832559557 mod 124540019) mod 17389=27039929 mod 17389=34.

• A calculează k-1 mod q=7631, H(m) = 5246 și apoi s = 7631*(5246+12496*34) mod q = 13049.

• Semnătura mesajului m este perechea (r = 34, s = 13049).

• Pentru a verifica un mesaj, entitatea B calculează w = s-1 mod q=1799, u1 = w*H(m) mod q = 5246*1799 mod 17389 = 12716 și u2=r*w mod q = 34*1799 mod 17389=8999.

• B calculează v = (αu1 yu2 mod p) mod q = (1008325512716*1199462658999 mod 124540019) mod 17389= 27039929 mod 17389 = 34. Deoarece v = r, B acceptă semnătura.

Observații:

De-a lungul celor câțiva ani de la publicarea standardului, lui DSA i s-au adus o serie de observații:

• A fost elaborat de NIST fără nici o cosultare prealabilă a industriei americane.

• Timpul de semnătură este mult mai scurt decât cel de verificare.

• Spre deosebire de RSA, unde, dacă se ia cheia publică 3, verificarea este mult mai rapidă ca semnătura.

• Acest algoritm este o variantă a schemei de semnătură ElGamal.

• DSA se bazează pe dificultatea calculării logaritmilor discreți.

Algoritmul semnăturii digitale RSA

Acest sistem se bazează pe algoritmul de criptare a semnăturii publice RSA. RSA este numit de la inventatorii săi Rivest, Shamir, și Adleman. Securitatea acestui algoritm de semnătură se bazează pe dificultatea de a factorizarea numerele mari prime. Există un număr N cunoscut public, care este produsul a două numere prime, ale căror valori sunt secrete. Aceste numere prime sunt foarte importante pentru că oricine le știe valorile le poate folosi pentru a calcula cheia privată din cheia publică. Cu toate acestea, crearea semnăturii și procesul de verificare sunt mai mult sau mai puțin aceleași ca la DSA. Utilizând o semnătură digitală RSA, verificarea unei semnături este mult mai rapidă decât semnarea. Acest lucru este de dorit pentru că un mesaj va fi semnat de către o persoană o singură dată, dar semnătura poate fi verificată de mai multe ori.

Generarea cheilor

Entitatea A execută următoarele:

• Generează două numere prime mari p și q

• Calculează n = p*q și φ(n) = (p-1)*(q-1)

• Selecteză aleator un număr întreg e, 1<e<φ (n), astfel încât: c.m.m.d.c.(e, φ (n)) = 1

• Calculează un unic număr întreg d, 1<d<φ (n), astfel încât: ed = 1 (mod φ (n))

• Cheia publică a entității A este perechea (e,n)

• Cheia privată corespunzătoare este d.

Generarea semnăturii

Entitatea A execută următoarele:

• Calculează S = H(m)d (mod n), unde H este o funcție hash.

• Semnătura mesajului m este S.

Verificarea semnăturii

Pentru a verifica semnătura S a mesajului m, entitatea B execută următoarele:

• Obține cheia publică autentică (e,n) a entității A

• Calculează Se = H(m)de ≡ H(m) (mod n), deoarece ed = 1 (mod φ (n)).

Exemplu:

• Entitatea A generează numerele prime p = 7927, q = 6997

• Calculează n=p*q=55465219 și φ = 7926*6996=55450296.

• Entitatea A alege e = 5 și determină d astfel încât e*d = 5d =1 (mod 55450296). Rezultă d=44360237.

• Cheia publică a lui A este (n=55465219, e=5)

• Cheia sa secretă este d=44360237. Pentru simplitate, presupunem că H(m)=m.

• Pentru a semna un mesaj m=31229978, entitatea A calculează S=md( mod n)=3122997844360237 mod 55465219=30729435.

• Pentru verificarea semnăturii, entitatea B calculează Se (mod n) = 307294355 mod 55465219=31229978 = m.

Algoritmul semnăturii electronice în curbă eliptică (ECDSA)

Sistemele de criptare în curbă eliptică au fost propuse pentru prima dată independent de Victor Miller și Köblitz Neal la mijlocul anilor 1980. Principalul punct de atracție al sistemelor de criptare în curbe eliptice față de alte sisteme de criptare a cheilor publice este faptul că securitatea semnăturii digitale în curbă eliptică se bazează pe probleme matematice grele : Având în vedere două puncte G si Y pe o curbă eliptică, astfel încât Y = kG (adică, Y este G adăugat la sine de k ori), aflați numărul întreg k. Această problemă este denumită în mod obișnuit ca problema logaritmului discret în curbă eliptică.

Sistemele de criptare în curbă eliptică au apărut ca un domeniu promițător in criptografia cheii publice în ultimii ani, datorită potențialului lor de a oferi securitate similară sistemelor de criptare a cheii publice deja stabilite cu dimensiuni reduse ale cheii. Ele sunt utile mai ales în aplicațiile pentru care memoria, lățimea de bandă, sau puterea de calcul este limitată. Sistemele de criptare în curbă eliptică, cu o cheie 160 biți oferă aceeași securitate ca sistemul RSA și logaritmul bazat pe sisteme discrete, cu o cheie de 1024 biți. Ca rezultat, lungimea cheii publice și private este mult mai scurtă în sistemele de criptare în curbă eliptică.

Cu toate acestea, este înșelătoare descrierea algoritmilor de semnătură ca „criptare cu o cheie privată". Algoritmii simetrici, în care aceeași cheie (cunoscută sub numele de cheie secretă) este utilizată atât pentru criptare și cât și pentru decriptare, pot fi, de asemenea, utilizați în procesul de generare a semnăturii. În acest caz, trebuie să fie configurat un canal secret pentru a distribui cheia secretă pentru a asigura confidențialitatea transmiterii cheii. Algoritmii asimetrici sunt folosiți pentru a facilita distribuirea cheii, în cazul în care cheia pereche este folosită pentru a cripta și decripta cheia secretă (aici cheia este cunoscută sub numele de cheie de criptare a cheii). Acest lucru este util atunci când mesajul este arbitrar de lung. Algoritmii simetrici pot accelera procesul de criptare, în timp ce algoritmii asimetrici pot asigura distribuirea secretă a cheii de criptare, integritatea datelor și non-repudierea.

Mai putem vorbi de asemenea despre:

Algoritmul semnăturii digitale El Gamal

Este un sistem criptografic cu cheie publică bazat pe rezolvarea problemei algoritmilor discreți. Presupune atât algoritmi de criptare, cât și algoritmi de semnătură digitală. Parametrii sistemului constau într-un număr prim p și un întreg g, ale căror puteri modulo – p generează un număr mare de elemente, ca și în cayul algoritmului Diffie – Hellman. Avem o cheie privata a și o cheie publică z, astfel încât y = ga (mod p). Să presupunem că cineva vrea să ne trimită un mesaj m. Acesta va genera întâi aleator numărul k<p. Apoi va calcula y1 =gk (mod p) și y2=m xor yk . La primirea mesajului cifrat, noi vom calcula m = (y1a mod p) xor y2 . Algoritmul semnăturii El Gamal eset similar cu algoritmul de criptare, întrucât cheia private și cheia publică au aceeași formă. Totuși, criptarea nu este similară cu verificarea semnăturii, precum nici decriptarea nu este la fel ca și crearea semnăturii în RSA. DSA este, în parte, bazat pe algoritmul semnăturii El Gamal. Analiza bazată pe cel mai disponibil algoritm atât pentru factorizare cât și pentru algoritmii discreți, arată că RSA și El Gamal au securități similare pentru lungimi echivalente ale cheilor. Principalul dezavantaj al algoritmului El Gamal este nevoia de aleator și rapiditatea scăzută. Un alt dezavantaj potențial îl reprezintă faptul că extinderea mesajului cu un factor sau doi are loc în timpul cripatării. Cu toate acestea, extinderea mesajului este neglijabilă dacă se foloseste criptosistemul doar pentru schimbul de chei secrete.

Schema de semnătură ElGamal a fost propusă de ElGamal împreună cu schema de criptare cu chei publice.

Generarea cheilor

Fiecare entitate generează cheia publică și cheia privată corespunzătoare. Entitatea A execută următoarele:

• Generează un număr prim mare p și un generator α al grupului multiplicativ Zp*.

• Selectează aleator un număr întreg a astfel încât 1 ≤ a ≤ p-2.

• Calculează y = αa mod p.

• Cheia publică a entității A este (p,α,y)

• Cheia privată este a.

Generarea semnăturii

• Entitatea A semnează un mesaj binar m de o lungime arbitrară.

• Pentru aceasta, entitatea A execută următoarele:

• Selectează aleator un număr întreg secret k, 1 ≤ k ≤ p-2, astfel încât cmmdc (k,p-1) = 1

• Calculează r = αk mod p și k-1 mod (p-1)

• Calculează s = k-1(H(m)-a*r) mod (p-1), unde H este o funcție hash

• Semnătura mesajului m este perechea (r,s).

Verificarea semnăturii

Pentru a verifica semnătura (r,s) a mesajului m, entitatea B execută următoarele:

• Obține cheia publică autentică (p,α,y) a entității A

• Verifică dacă 1 ≤ r ≤ p-1. Dacă această inegalitate nu are loc, semnătura (r,s) nu e validă.

• Calculează v1 = yr rs mod p.

• Calculează H(m) și v2 = αH(m) mod p, unde H este o funcție hash.

• Semnătura (r,s) este acceptată dacă și numai dacă v1 = v2.

Exemplu:

• A generează nr. prim p = 2357 și generatorul α = 2 al gr. Z*2357.

• A alege cheia privată a =1751 și calculează y=αa mod p=21751 mod 2357 = 1185.

• Cheia publică a lui A este (p=2357, α=2, y=1185), iar cheia sa privată este a = 1751.

• Pt. a semna mesajul m=1463, A select. aleator un întreg k=1529, calc. r=αk mod p=21529 mod 2357=1490 și k-1 mod (p-1)=245.

• A calculează S=245*(1463-1751*1490) mod 2356=1777. Semnătura mesajului m=1463 este perechea (r=1490, s=1777).

• Pentru verificarea semnăturii, B calculează v1=11851490*14901777 mod 2357=1072, H(m)=1463 și v2=21463 mod 2357=1072.

• Entitatea B acceptă semnătura deoarece v1 = v2.

Algoritmul semnăturii Robin

Posibilitatea de a calcula rădăcini pătrate în Zn=pk poate fi utilizată pentru construcția unui algoritm de semnătură digitală. Descrierea semnăturii digitale Rabin este următoarea:

Rabin.Gen(1k ): Generează două numere prime aleatoare p, q și calculează n = pq . Cheia publică este PK ←(n) iar cea privată este SK ←( p, q).

Rabin.Sign(m, SK) : Calculează m = R(m) și o rădăcină pătrată a sa s , i.e. m←s2 mod n . Returnează s .

Rabin.Ver (s, PK) : Se obține cheia publică a entității în cauză și se calculează m = s2 mod n și verifică dacă mesajul aparține spațiului de redundanță, i.e. m∈MR, returnează 0 în caz contrar altfel returnează 1 și recuperează mesajul ca m = R−1 (m).

Semnătura digitală Rabin are o mare problemă la pasul de semnare și anume aceea că mesajul pe care se aplică semnătura trebuie să fie un reziduu cvadratic – rezolvarea acestei probleme nu este elegantă singura soluție fiind modificarea aleatoare a unor biți până când mesajul devine reziduu cvadratic. Pentru a înlătura această deficiență Williams a introdus o schemă similară ușor modificată care funcționează în mod determinist. Schema presupune utilizarea a doi întregi Blum.

Scopul semnăturii digitale este de a oferi un mijloc pentru o entitate de a asocia identitatea sa de o bucată de mesaj. Procesul de semnare presupune transformarea mesajului și a unor informații secrete deținute de entitate într-o etichetă numită semnătură. Pentru ca semnătura digitală să fie utilă în practică, aceasta trebuie să:

Fie ușor de calculat de către semnatar, ceea ce înseamnă ca funcția de semnare să fie ușor de aplicat.

Fie ușor de verificat de către oricine, ceea ce înseamnă ca funcția de verificare să fie ușor de aplicat.

Au o durată de viață adecvată, ceea ce înseamnă ca semnătura digitală să fie securizată de posibilitatea falsificării fals până când semnătura nu mai este necesară pentru scopul său inițial.

Procesul de semnare și verificare poate fi descris astfel:

Deținerea perechii de cheie privată și publică. La începutul tranzacției sau în timpul tranzacției, participanții trebuie să achiziționeze unul de la celălalt cheia publică, în timp ce cheia privată a fiecărei părți trebuie să rămână secretă.

Generarea extrasului de mesaj. Expeditorul utilizează o funcție hush, care este un algoritm unidirecțional, pentru a transforma un mesaj într-o valoare de lungime fixă. Această valoare de lungime fixă este cunoscută ca extras de mesaj.

Semnarea mesajului. Expeditorul utilizează cheia sa privată pentru a cripta extrasul mesajului care face o semnătură a mesajului. Această semnătură este apoi adăugată la mesaj

Mesaj expediat. Mesajul semnat digital este trimis "în text clar" la destinatar. Deoarece orice modificare adusă conținutului mesajului va duce la o nepotrivire cu valoarea hush primită.

Verificarea mesajului. Destinatarul va genera o valoare hush din mesajul primit cu aceeași funcție hush unidirecțională. Extrasul criptat al mesajului poate fi decriptat cu cheia publică a expeditorului. Apoi, aceste două valori hush vor fi comparate. Dacă cele două valori se potrivesc înseamnă că mesajul este veritabil și autentic; în cazul în care cele două valori nu se potrivesc, acest lucru indică posibila personificare, modificarea mesajului sau o eroare de transmisie.

Criptarea mesajului (opțional). Întregul mesaj poate fi criptat cu cheia publică a destinatarului pentru a asigura confidențialitatea conținutului mesajului.

Decriptarea mesajului (opțional). Mesajul poate fi decriptat cu cheia privată a destinatarului.

Marcarea orei. O marcă de timp poate fi folosită pentru a urmări tranzacția, în cazul în care, în viitor, apare un diferend.

Cu toate acestea, în cazul unui mesajului foarte scurt, nu este nevoie de transmiterea separată, deoarece poate fi recuperat chiar din semnătură.

Tot mai mult, organizațiile încearcă să automatizeze procesele bazate pe hârtie. Avantajele utilizării semnăturilor digitale pot fi evidente, în timp ce există, de asemenea, unele riscuri potențiale. Beneficiile includ:

O mai mare eficiență în procesul de prelucrare a documentelor. Documentele transmise electronic cu o semnătură digitală reduc birocrația, călătoriile și întârzierile de procesare și costurile de livrare. Aceste avantaje sunt și mai pronunțate când numărul de tranzacții crește.

servicii îmbunătățite. Semnătura digitală prevede o autentificare puternică care permite agenției să furnizeze servicii mai largi și să promoveze obiectivele administrative și obiectivele sale unui public mai larg. Astfel, un guvern poate servi publicului 24 de ore pe zi, șapte zile pe săptămână.

documentul sursă este verificat. Oricine poate folosi cheia publică a semnatarului pentru a verifica corectitudinea semnăturii la orice moment, fără consimțământul sau introducerea semnatarului.

posibilitatea redusă de fraudă, fals și personificare. Este practic imposibil pentru o persoană să falsifice o semnătură pentru că numai semnatarul știe cheia sa privată.

integritate îmbunătățită a documentelor. Orice modificări efectuate unui mesaj vor invalida semnătura. Astfel, este imposibilă copierea unei semnături digitale de la un mesaj la altul.

Riscurile asociate cu utilizarea semnăturii digitale sunt

lipsa specificațiilor juridice. Nu există specificații bine stabilite pentru a indica unde semnătura digitală este acceptabilă din punct de vedere legal, pentru ce tip de document și în ce măsură o agenție necesită o semnătură digitală față de o altă formă de identificare.

legătura cu infrastructura existentă a agenției. Aplicația și PKI trebuie să funcționeze bine în sistemele de securitate, dispozitivele de control acces, cum ar fi firewall-uri, și alte sisteme de prelucrare a informațiilor.

Interoperabilitatea cu alte infrastructuri ale agenției. Capacitatea de a accepta un alt mecanism PKI este necesară pentru ca un utilizator dintr-un domeniu PKI să poată fi acceptat ca un utilizator de încredere într-un alt domeniu PKI.

Standardul de arhivare. Atunci când un document semnat digital este echivalent cu un document semnat cu cerneală pe hârtie, există o cerință standard pentru arhivare care să asigure că este la fel de accesibil pentru inspecție ca și în cazul oricărui document juridic pe hârtie. Documentele arhivate trebuie să fie disponibile indiferent de software-urile și actualizările hardware care apar.

Semnături digitale de grup

Semnăturile digitale de grup extind conceptul de semnătura digitală obișnuită prin aceea că implică participarea mai multor entități: membrilor unui anumit grup le este permis să semneze în numele întregului grup. Aceste semnături pot fi verificate folosind o singură cheie, numita cheie publică de grup. De asemenea, odată ce un document a fost semnat, nimeni, cu excepția unui membru special al grupului (numit manager de grup), nu poate determina ce membru al grupului a semnat acel document.

Semnăturile de grup trebuie proiectate în așa fel încât nici un membru al grupului să nu poată falsifica semnătura altui membru din grup pe un anumit document.

Ca exemplu să presupunem că patronul unei companii dezvoltatoare de software dorește ca anumiți angajați ai săi să valideze liste de prețuri, să semneze contracte digitale sau pachete software în numele companiei. El poate pune în practică o schemă de semnătura de grup în care el să fie managerul de grup.

Angajații pot semna și valida diverse documente sau pachete software în numele companiei. Prin această abordare patronal poate masca structura interna a companiei sale. Mai mult, clienții vor avea nevoie de o singură cheie publică (cea a companiei) pentru a verifica semnăturile de pe documente. Pe de altă parte, în caz de fraudă, doar patronul va putea determina ce angajat a semnat un anumit document.

Semnăturile digitale astfel produse satisfac o serie de cerințe de securitate, cum ar fi:

1. sunt imposibil de falsificat;

2. este imposibil pentru un angajat sa reproducă semnătura altuia;

3. este imposibil pentru patron să falsifice semnăturile angajaților.

Figura 12. Schema de semnătura de grup

Protocolul

O schema de semnătura digitală de grup consta din 5 proceduri:

1. Inițializare – un algoritm probabilistic care generează cheia publica a grupului à și o cheie de administrare secreta S pentru managerul de grup.

2. Aderare – un protocol interactiv între managerul de grup și un nou membru al grupului, Dan, care rezultă în producerea cheii secrete a lui Dan, notată cu x, și a certificatului sau de membru, notat cu A.

3. Semnare – un protocol interactive între un membrul al grupului, Dan, și un utilizator extern, Alin, care preia ca intrare un mesaj m de la Alin și cheia secretă x a lui Dan producând o semnătura s pentru mesajul m.

4. Verificare – un algoritm care preia ca parametri de intrare (m, s, Ã) și verifică daca s este o semnătură validă pentru mesajul m relativ la cheia publică a grupului Ã.

5. Dezvăluire – un algoritm care preia ca parametri de intrare (m, s, S) și determină identitatea membrului grupului care a emis semnătura s pentru mesajul m. În protocolul de mai sus se presupune existența unei infrastructuri cu chei publice (PKI) și oricine dorește să adere la grup trebuie să facă anterior parte din aceasta PKI. Toți membrii PKI au perechi de chei publică/privată asociate cu aceasta infrastructură.

Semnăturile digitale de grup trebuie să satisfacă următoarele cerințe de securitate:

1. Imposibilitate de falsificare : doar membrii grupului pot emite semnături valide în numele grupului (verificabile folosind cheia publică a grupului Ã).

2. Anonimitatea condițională a semnatarului mesajului: oricine poate verifica cu ușurință că o pereche (mesaj, semnătură) a fost semnată de către un membru al grupului însa numai managerul de grup poate determina ce membru al grupului a emis semnătura.

3. Imposibilitatea negării identității semnatarului: managerul de grup poate determina întotdeauna identitatea unui membru al grupului care a emis o semnătura validă. Mai mult, el poate dovedi unei alte entități (cum ar fi un judecător) ce membru a semnat un anumit document fără a compromite anonimitatea acelui membru al grupului în mesajele anterioare sau viitoare pe care le poate semna.

4. Lipsa de relație între două semnături: pentru oricine, cu excepția managerului de grup, este imposibil din punct de vedere computațional să determine dacă două semnături au fost produse de același membru al grupului.

5. Securitatea la atacurile prin înscenare: nici un subgrup format din membri ai grupului (incluzând și managerul de grup) nu poate semna în numele unui alt membru al grupului.

6. Rezistența la comploturi: nici un sub-grup al membrilor grupului (incluzând chiar și managerul de grup) nu trebuie să se poată coaliza și să genereze semnături de grup valide, a căror origine să nu poată fi identificată.

Următorii parametri sunt deosebit de importanți atunci când se evaluează eficiența unei anumite scheme de semnătura de grup:

1. Dimensiunea cheii publice de grup Ã

2. Dimensiunea semnăturii de grup pentru un mesaj

3. Eficiența protocoalelor de Semnare, Verificare,

4. Eficiența protocoalelor de Inițializare, Dezvăluire și Aderare.

Una dintre cele mai folosite scheme de semnături de grup în practica la ora actuala a fost propusă de Carmenisch și Stadler în 1997. În prealabil vom introduce trei construcții elementare, numite semnături cu cunoștințe suplimentare, folosite ulterior în construcția schemei de semnătura de grup CS.

O semnătura cu cunoștințe suplimentare este o construcție în care semnatarul se poate folosi de cunoașterea unei anumite informații secrete (cum ar fi logaritmul discret al lui y în baza g, unde G=<g>) pentru a genera semnătura digitală a mesajului. Într-o semnătura cu cunoștințe suplimentare semnatarul leagă cunoașterea informației secrete de mesajul ce este semnat.

Ca semnături digitale, se pot folosi semnături cu cheie secretă sau publică dar, de obicei se preferă cheile publice.

În cazul mesajelor transmise prin poșta electronică, riscul legat de impersonificarea expeditorului este destul de mare fiindcă standardele utilizate pentru transmiterea poștei electronice sunt simple și în plus au fost făcute publice (ceea ce înseamnă că oricine are acces la ele poate să le studieze). Standardul de e-mail nu are la bază nici un sistem pentru verificarea identității celui care trimite un mesaj de poștă electronică, bazându-se pe o încredere reciprocă între utilizatori. Acest neajuns ar putea fi fructificat de către persoane răuvoitoare pentru a trimite mesaje de poștă electronică de pe adrese false, sau chiar de pe adrese existente, pretinzând că sunt utilizatorii care dețin acele adrese de poștă electronică. Practic, este (aproape) imposibila identificarea unei persoane care a emis astfel de mesaje fiindcă în Internet există servere care asigură transmiterea anonimă a mesajelor ("anonymous remailers"), trimițându-le de la un server la altul de mai multe ori înainte de a le direcționa către adevărata destinație.

Pentru autentificarea expeditorului unui mesaj (de poștă electronică sau un ansamblu de date transmis prin Internet în alte scopuri) se folosește cel mai adesea un sistem cu cheie publică. Astfel, dacă expeditorul criptează mesajul cu cheia privată proprie, datele pot fi decriptate doar utilizând cheia publică pereche, deci oricine poate verifica faptul că mesajul a fost transmis într-adevăr de expeditor, și nu de o persoană ce pretinde a fi expeditorul (după cum s-a explicat deja, mesajul criptat cu o cheie poate fi decriptat doar utilizând cheia pereche acesteia și se presupune că expeditorul este singurul care are acces la cheia sa privată).

Evident că este posibil să se realizeze o criptare a mesajelor în paralel cu autentificarea, astfel încât inclusiv datele transmise să fie codificate. În acest caz, se vor utiliza perechile de chei privată, publică nu numai pentru autentificare, ci și pentru criptarea, respectiv decriptarea mesajelor transmise. Practic, pentru codificarea și semnarea digitala a unui mesaj emis, se va realiza o criptare cu cheia privată a emițătorului și apoi o criptare cu cheia publică a destinatarului. Astfel, destinatarul va putea decripta mesajul și autentifica proveniența sa în condiții de securitate.

Având în vedere faptul ca algoritmii de criptare cu cheie publică consumă foarte mult timp, în general se implementează o tehnica puțin diferită: se utilizează o criptare cu cheie publică pentru transmiterea unei chei secrete generate aleator (deci cheia secretă este criptată și eventual se poate utiliza și autentificarea expeditorului), după care datele propriu-zise vor fi transmise criptate cu un algoritm simetric utilizând cheia secretă schimbată anterior. Această metodă îmbunătățește considerabil viteza de transmisie și de criptare / decriptare.

Figura 13. Semnarea digitala a mesajelor necriptate

Practic, pentru o identificare cât mai riguroasă a expeditorului se utilizează un sistem complex, bazat pe certificare, în care fiecare utilizator deține un certificat (ce are atașată o cheie publică și o cheie privată, secretă). Acesta este emis de o autoritate de certificare recunoscută, în urma examinării, pe bază de acte, a identității reale a persoanei. În momentul în care se dorește identificarea unei persoane, o căutare în baza de date a organizației respective va indica indentitatea expeditorului (pe baza cheii publice a acestuia, care este unică în lume).

Acest sistem este implementat sub forma unei structuri în care fiecare autoritate de certificare poate împuternici la rândul ei alte organizații să emită certificate de autentificare, astfel încât originea unui certificat poate fi verificată în mod complet testând validitatea certificatului, apoi validitatea certificatului deținut de organizația care a emis certificatul respectiv, și așa mai departe.

Sistemul de certificate digitale este utilizat nu numai pentru protejarea comunicațiilor, ci și pentru certificarea originii programelor. Astfel, prin folosirea unei criptări a programului de instalare cu cheie publică a firmei producătoare, utilizatorul poate verifica relativ ușor ca acel program a fost creat într-adevăr de o anumită firmă și pentru a decide dacă să instaleze sau nu programul. Aceasta este practic cea mai bună soluție de rezolvare a problemei rulării de programe / coduri dăunătoare.

Pentru a preveni modificarea unui mesaj, se utilizează o tehnică specifică, denumită tehnica hash (sau a rezumatului), care permite construirea unui cod de identificare a datelor transmise, numit "rezumatul datelor". Principiile de bază ale tehnicii hash se aplică în numeroase domenii ale informaticii. Rezumatul unui mesaj se construiește prin aplicarea, în sens unic ("unisens"), a unei funcții de transformare (funcție "hash") într-o secvență de biti – de lungime mare, pentru a fi dificil "spart". Sensul unic de transformare asigură faptul că nu se pot deduce datele de intrare pe baza datelor de ieșire.

Datele ce trebuie transmise sunt utilizate ca și date de intrare, obținându-se astfel o valoarea de transformare ("hash value"). Dacă datele în tranzit sunt modificate, la destinație se va obține o altă valoarea de transformare, ceea ce va indica falsificarea datelor.

Valoarea de transformare este în general criptată ulterior prin utilizarea aceleiași chei secrete ca și pentru criptarea datelor transmise. Astfel, se formează o "semnătura digitală" a datelor, care nu mai pot fi modificate fără ca acest lucru să fie depistat.

Cele mai recente metode de criptare le reprezintă categoria cifrurilor asimetrice. Spre deosebire de sistemele simetrice, cheia utilizată la criptare este diferită de cheia utilizată pentru decriptare. Fiecare parte (emițător și receptor) are astfel două chei. Fiecare are o cheie secretă și una pe care o face publică. Dacă A vrea să trimită un mesaj lui B, atunci acesta criptează mesajul cu cheia publică a lui B. Fiindcă B este singurul care are acces la cheia secretă, B este singurul care poate să descifreze mesajul și să-l citească.

Primul cifru de acest gen este sistemul RSA (abreviere pentru Rivest, Shamir și Adleman care sunt numele celor trei inventatori). Siguranța acestui sistem este legată de problema matematică de factorizare: este ușor de a genera două numere prime și a le multiplica, dar dacă un număr foarte mare, care este produsul a două numere prime, este dat atunci este foarte greu de a determina factorii primi. Bineînțeles că aici mai intervine timpul de viață al cheii. Trebuie notat că fiecare cheie secretă sau publică are un timp de viață impus de către creator. Un fapt destul de interesant este că există proiecte publice pe internet (unul pe care putem să-l menționăm – GIMPS) care utilizează calculatoarele celor "interesați" pentru a căuta și a factoriza numere prime. În mod asemănător funcționează și proiectul SETI pentru găsirea vieții inteligente extraterestre. Un utilizator, dacă dorește, poate să ia un mic program de pe Internet care va rula în timpii morți ai procesorului pentru o căutare de numere prime și factorii lor. Întrebarea este dacă acest utilizator, care participă în acest calcul distribuit, are dreptul să vadă numerele prime la care a lucrat și calculatorul său. Răspunsul este nu.

Justificarea acestui proiect este că aflarea numerelor prime cât și factorii lor reprezintă de fapt extinderea cunoștințelor omenirii. Lucru destul de controversat deoarece în 1997 cel mai mare număr factorizat găsit avea 430 de biți și poate fi utilizat pentru a ataca numere de 512 biți. Astfel, este de recomandat celor care vor să utilizeze un sistem asimetric să utilizeze o cheie de minim 640 biți dacă nu de 768 sau chiar 1024 pentru o valabilitate de câteva luni!

Probabil cel mai cunoscut cifru asimetric este PGP (Pretty Good Privacy). Acesta este o suită completă de criptografie pentru orice utilizator. Sistemul utilizează diferiți algoritmi printre care RSA, DES și El-Gamal, pentru a oferi posibilitate oricărui utilizator de a-și securiza comunicațiile sau de a genera semnături digitale și pentru a-și confirma identitatea.

Cea mai mare problemă a sistemelor asimetrice este performanța relativ slabă comparată cu cea a cifrurilor simetrice. De exemplu, o implementare DES pe un calculator personal 586 putea să ajungă la o rată de criptare de 15Mbit/s pe când o implementare RSA pe același calculator ajungea la doar la 6 Kbit/s. DES este astfel în medie de o mie de ori mai rapid decât un sistem RSA. În schimb, sistemele cheie-publică oferă beneficii atunci când este vorba de administrarea cheilor: dacă fiecare utilizator își generează propria cheie, numai un canal autentic este necesar, eliminând canalele secrete (curieri) care sunt adesea costisitoare și nesigure.

Într-un sistem fără un server central de încredere sau sigur, numărul de chei poate să fie redus. Într-adevăr, să presupunem că avem o rețea de n utilizatori care doresc să comunice cu toți ceilalți. Fiindcă fiecare comunicare cere o cheie secretă, numărul total de chei este de n(n-1)/2. În sistemul de cheie-publică fiecare utilizator are nevoie de numai o pereche de chei personale și publice rezultând în numai 2n chei. Daca n este, să zicem, 1000 atunci acest lucru ar însemna 500000 comparat cu 2000 în cazul unuia simetric.

În sisteme cu un server central asigurat care gestionează cheile, ambele implementări au nevoie de același număr de chei. Astfel în practică întâlnim des sisteme hibride în care se utilizează un sistem de cheie publică pentru distribuirea de chei secrete și un cifru simetric pentru criptarea datelor.

Funcțiile de hash-ing sau funcțiile "one-way" (pe o direcție) reprezintă a treia mare categorie de cifruri. O funcție one-way este definită ca o funcție f astfel încât pentru fiecare x în domeniul lui f, f(x) este ușor de calculat; dar pentru aproape toate y în domeniul lui f, este computațional imposibil să găsim un x astfel încât y = f(x). O condiție suplimentară este că este greu de a găsi o a doua pre-imagine: dat fiind x și valoarea corespunzătoare a lui f(x), ar trebuie să fie greu de găsit un x' diferit de x care are aceeași imagine sub f.

Funcțiile one-way sunt utilizate pentru a proteja parole: a stoca o imagine one-way a unei parole într-un calculator decât parola însăși. Apoi aplicăm această funcție one-way intrării utilizatorului și verificăm daca este identică valorii stocate. Mai exact, verificăm doar parolele deja trecute prin funcția one-way.

O funcție de hash-ing este o funcție care schimbă o intrare de lungime variabilă într-un număr fix de biți de ieșire. Ca să fie utilă aplicațiilor criptografice, o funcție de hash-ing trebuie să satisfacă unele cerințe. Putem să distingem între două tipuri de Hash-uri.

Un MAC (Message Authentication Code) care utilizează o cheie secretă și un MDC (Manipulation Dectection Code) care funcționează fără cheie. Pentru un MAC avem nevoie să fie imposibil de a calcula MAC-ul fără cunoștința cheii secrete iar pentru un MDC este nevoie să fie o funcție one-way și, în multe cazuri, să fie rezistentă la coliziuni, ceea ce înseamnă că ar trebuie să fie greu să se găsească două argumente care se hash-eaza la același rezultat.

Funcțiile de hash-are pot fi utilizate pentru a proteja autenticitatea unei cantități mari de date cu o cheie secretă scurtă (MAC), sau de a proteja autenticitatea unui șir scurt de date (MDC). Câteodată un MDC este utilizat în combinație cu cifrarea, care rezultă în protecția confidențialității cât și autenticității.

Există câteva scheme care au fost propuse să fie utilizate ca funcții de hash-are. Cea mai utilizată schemă pentru un MAC este chiar modul CBC al lui DES (cu transformări adiționale ale ieșirii), așa cum este specificat în ISO-9797. Câteva MDC-uri au fost construite bazându-se pe DES. Altele sunt bazate pe SHA (Secure Hash Algorithm pentru FIPS 180), și RIPE-MD 160. Funcțiile de hash-ing ajung la rate foarte mari de procesare de date. Ele sunt considerate foarte eficiente din acest punct de vedere.

Capitolul IV. RSA

Criptografia este știința scrierilor secrete. Ea folosește metode matematice pentru transformarea datelor, în intenția de a ascunde conținutul lor sau de a le proteja împotriva modificării. Criptografia are o lungă istorie, confidențialitatea comunicării fiind o cerință a tuturor timpurilor. Drept dovadă, întâlnim texte codificate încă din antichitate. Astfel, în 1900 î.e.n., un scrib egiptean utiliza simboluri în locul literelor obișnuite, pentru a ascunde de priviri nedorite scrierile sale. În 500 î.e.n., scribii evrei criptează mesaje prin permutarea literelor alfabetului (A devine Z, B devine Y, etc.), dând naștere limbajului atbash. În 50 î.e.n., Iulius Cezar creează metoda ce-i poartă numele; aceasta constă în a înlocui fiecare literă din alfabet cu cea de peste trei poziții spre dreapta, cu reluarea alfabetului de la capăt, acolo unde este cazul. Astfel, litera A devine D, B devine E și așa mai departe. De fapt, el criptează textul utilizând funcția afină xax+3. Fiabilitatea acestei metode ara asigurată în principal de noutatea ei, nimeni cunoscând "trucul".

În zilele de azi astfel de metode nu mai sunt sigure, algoritmii de acest tip fiind sparți cu destul de multă ușurință.

Orice criptare conține două etape: mai întâi, codarea mesajului pe care dorim să-l transmitem, etapă în care atribuim un număr fiecărei litere din mesaj (și transmiterea mesajului revine la transmiterea unui șir de cifre, numit și cod), și criptarea codului, etapă în care modificăm codul astfel încât acesta să nu poată fi reconstituit decât de persoana sau persoanele autorizate în acest sens.

Astăzi se cunosc două tipuri de algoritmi de criptare: algoritmi simetrici (sau cu cheie secretă), și algoritmi asimetrici (sau cu cheie publică). Algoritmii simetrici au la bază același principiu ca și codul lui Cezar și anume substituția. Puterea lor constă însă în faptul că se lucrează cu secvențe de numere din ce în ce mai lungi, ghicirea combinației fiind astfel din ce în ce mai grea, necesitând foarte mult timp. La cifrarea și descifrarea unui cod simetric se folosește aceeași cheie, cunoscută doar de cel care trimite mesajul și cel care trebuie să-l primească.

Algoritmii de criptare a mesajelor utilizând chei publice se folosesc atunci când un număr mare n de utilizatori trebuie să comunice între ei (fiecare cu fiecare). În cazul în care aceștia ar folosi tehnici tradiționale de criptare, atunci ar avea nevoie de n · (n – 1) / 2 chei, spre deosebire de algoritmii de criptare cu chei publice care folosesc doar n chei.

În sistemele de criptare cu cheie publică, dacă un utilizator dorește să comunice cu alții, trebuie să își construiască două chei:

·- o cheie publică pe care o va transmite oricărui alt utilizator care dorește să-i trimită un mesaj criptat;

·- o cheie privată care este secretă și pe care o va folosi la decriptarea unui mesaj criptat cu cheia publică.

Cele două chei se presupun a fi unice pentru fiecare utilizator.

Secretul sistemelor de criptare cu cheie publică este acela că dacă un utilizator deține cheia publică a unui alt utilizator ale cărui mesaje dorește să le intercepteze și decripteze, de obicei, este imposibil să construiască cheia privată și să o folosească pentru decriptarea mesajelor.

În cazul în care cheia privată se poate calcula pe baza cheii publice, atunci timpul necesar unui sistem de calcul este suficient de mare și, după decriptarea mesajului acesta nu ar mai fi de actualitate.

Dacă avem doi utilizatori A și B, și util utilizatorul A dorește să-i trimită utilizatorului B un mesaj criptat, procesul de comunicare are loc așa cum indică figura următoare.

Figura 14. Schema de criptare asimetrica

Pentru a cripta mesajul, utilizatorul A are nevoie de cheia publică a utilizatorului B. După criptare, mesajul este transmis utilizatorului B și acesta, pentru a-l putea accesa, îl decriptează folosind propria cheie privată.

Presupunând că avem un grup de n utilizatori care au nevoie să comunice între ei în siguranță și toți folosesc o aceeași tehnică de criptare cu cheie publică, atunci, pentru

comunicare, fiecare utilizator i din cei n are nevoie de:

cheile publice ale celorlalți n – 1 utilizatori;

o cheie publică a unui utilizator j este folosită în procesul de criptare a unui mesaj de către utilizatorul i, urmând ca acesta să fie trimis utilizatorului j;

o cheie privată care este folosită de către utilizatorul i pentru a decripta orice mesaj care sosește de la unul dintre ceilalți și a fost criptat folosindu-se cheia publică a utilizatorului i.

Deoarece toți criptologii au considerat întotdeauna ca de la sine înțeles faptul că atât pentru criptare cât și pentru decriptare se folosește aceeași cheie și că aceasta trebuie distribuită tuturor utilizatorilor sistemului, părea a exista întotdeauna aceeași problemă inerentă: cheile trebuiau protejate împotriva furtului dar, în același timp, ele trebuiau să fie distribuite, astfel încât nu puteau fi sechestrate într-un seif de bancă.

În 1976, doi cercetători, Diffie și Hellman, au propus un tip radical nou de criptosistem în care cheile de criptare și decriptare sunt diferite, iar cheia de decriptare nu poate fi dedusă din cheia de criptare. În propunerea lor, algoritmul (cheia) de criptare și algoritmul (cheia) de decriptare , trebuiau să satisfacă trei cerințe. Aceste trei cerințe pot fi exprimate simplificat după cum urmează:

a) ;

b) Este mai mult decât dificil să se deducă din ;

c) El nu poate fi spart printr-un atac cu text clar ales.

Respectându-se aceste trei condiții, nu există nici un motiv pentru ca , respectiv cheia de criptare, să nu poată fi făcută publică, din contră, toți utilizatorii ce au adoptat acest model de criptosistem trebuie să-și facă cunoscute cheile publice.

Plecând de la aceste trei condiții, în anul 1978 a fost inventat criptosistemul RSA. Denumirea lui provine de la numele celor trei inventatori ai acestui mod de codificare a informației: Ron Rivest, Adi Shamir și Leonard Adelman, profesorii de la MIT (Massachusetts Institute of Technology).

Acest criptosistem stă și astăzi în diverse variante, la baza sistemelor de protecție a datelor și transmisiilor de informații.

RSA reprezintă cea mai populară metodă asimetrică de criptare. Contrar celorlalte metode cunoscute anterior (de exemplu algoritmul Diffie – Hellman), RSA a fost prima metodă potrivită atât pentru criptarea asimetrică, cât și pentru semnăturile digitale. Numele reprezintă inițialele celor trei descoperitori ai săi, Rivest, Shamir și Adleman.

Metoda RSA se bazează pe o problemă matematică, și anume factorizarea unor numere foarte mari (în prezent până la 300 de zecimale și chiar mai mult).

În teoria numerelor, factorizarea întregilor reprezintă procesul de descoperire a divizorilor unui număr compus. Aceasta pare a fi o problemă trivială, dar pentru numere foarte mari nu se cunoaște niciun algoritm eficient de factorizare, cel mai eficient algoritm având o complexitate exponențială, referitor la numărul de cifre. Astfel, un experiment de factorizare a unui număr de 200 de cifre zecimale s-a terminat cu succes abia după mai multe luni. La experiment au fost folosite 80 de calculatoare cu procesor Opteron de 2,2 GHz, conectate într-o rețea de tip Gigabit.

După cum știm, două numere naturale, a și b, sunt congruente modulo n (unde n este un număr natural pozitiv) scris:

a=b mod n sau a≡ b mod n

dacă prin împărțirea numerelor a și b la n ne rămâne același rest. Echivalentul este că (a-b) nu se divide cu n (fără rest), ceea ce poate fi notat astfel:

n | a-b

Putem efectua o serie de operații cu aceste congruențe, similare cu ecuațiile; de exemplu le putem aduna sau înmulți.

Dacă

a = b mod n și c = d mod n,

atunci:

a+c = b+d mod n

ac = bc mod n și ac = bd mod n .

În particular, ultima ecuație duce la:

ak = bk mod n, pentru orice număr natural k.

În final, putem deduce din a=b mod n sau n | a-b că nc | ac-bc sau ac=bc mod nc.

Pentru obținerea cheilor (cheia privată și cheia publică), se procedează astfel:

Se aleg două numere prime și ;

Se calculează și ;

Se alege un număr relativ prim cu , astfel încât ;

Se găsește un număr , astfel încât și .

Numărul se numește exponent public iar exponent privat.

În urma operațiilor de mai sus obținem două perechi de numere și ce reprezintă cheia publică, respectiv cheia privată.

Pentru a obține mesajul criptat , mesajul clar (privit ca șir de biți), se împarte în blocuri de text clar. Fiecărui bloc i se aplică funcția:

, unde (15)

Astfel șirul obținut reprezintă mesajul criptat.

Pentru decriptare (obținerea mesajului clar ), criptogramei i se aplică funcția:

, unde (16)

Din motive de securitate numerele și se șterg, după generarea cheilor publice și private.

Securitatea metodei se bazează pe dificultatea factorizării numerelor mari. Dacă un criptanalist ar putea factoriza numărul (public cunoscut), atunci el ar putea obține și , iar din acestea pe . Cu acesta din urmă aflat, se restrâng și variantele pentru , respectiv . Din fericire, matematicienii încearcă de peste 300 de ani să factorizeze numere mari și experiența acumulată sugerează că aceasta este o problemă mai mult decât dificilă.

În figura 15 este ilustrat modul de funcționarea al algoritmului R.S.A.

Figura 15. Schema bloc a funcționării criptosistemului R.S.A.

Persoana A deține un grup (inel) de chei publice ale persoanelor B, C, D și E. Pentru a transmite un mesaj criptat persoanei C, criptează mesajul (textul clar) cu cheia publică a lui C. Persoana C primește mesajul criptat de la A și îl decodifică cu cheia sa privată, obținând astfel textul clar original.

În cadrul grupului de persoane A, B, C, D, E, fiecare deține cheile publice ale celuilalt și le utilizează pentru transmiterea mesajelor. De asemenea, fiecare persoană își utilizează cheia privată (personală) pentru a decripta mesajele primite, astfel numai destinatarul mesajului poate citi mesajul.

Această modalitate de criptare este utilizată atunci când expeditorul este interesat ca nimeni (nici măcar cei din grup) nu va putea citi mesajul clar. Dezavantajul acestei metode este că oricine din grup poate trimite mesaje, iar destinatarul nu poate fi 100% sigur de identitatea expeditorului.

Un exemplu de calcul, pur didactic, este prezentat în continuare.

Se aleg două numere prime:

p = 61 și

q = 53

(Pentru o criptare eficientă p și q se aleg mai mari de 10100)

Se calculează:

n = p·q = 61·53 = 3233 și

z = (p-1)·(q-1) = 60·52 = 3120

Conform algoritmului se alege e = 17.

Tot conform algoritmului se alege d = 2753.

Cheia publică (n,e)=(3233,17)

Cheia privată (n,d)=(3233,2753)

Se alege mesajul clar (de criptat) m=123.

Codificarea este

c =me mod n = 12317 mod 3233 =

= 337587917446653715596592958817679803 mod 3233 = 855

Decodificarea este

m = cd mod n =8552753 mod 3233 =123

Semnătura digitală R.S.A.

Avantajul algoritmului R.S.A. este că poate fi utilizat și pentru semnarea mesajelor expediate. Acest tip de semnătură este cunoscut sub numele de semnătură digitală.

Semnătura digitală este folosită pentru a identifica autorul unui mesaj.

Schema bloc a sistemului de transmitere a mesajelor semnate digital este reprezentată în figura 16.

Figura 16. Schema bloc a sistemului de transmitere a mesajelor semnate digital

După cum este cunoscut, fiecare membru al unui grup deține cheia publică a celorlalți membri ai grupului și cheia sa privată. Pentru a transmite persoanei C un mesaj criptat și semnat, persoana A criptează mesajul (textul clar) cu cheia sa privată (personală). Persoana C primește mesajul criptat de la A și îl decodifică cu cheia publică a acesteia (cheia publică a lui A), obținând astfel textul clar original.

Spre deosebire de prima schemă de criptare, în acest caz, toate persoanele din grup pot decodifica mesajul dar nu există nici un dubiu în privința identității expeditorului.

A, B, C, D și E pot fi atât persoane cât și programe, ceea ce înseamnă că acest sistem de criptare poate fi folosit atât de:

– persoane în vederea transmiterii de mesaje (de exemplu transmiterea de e-mail-uri, fișiere în orice format),

cât și de

– programe (pachete de programe client/server) în vederea transmiterii de informații de la aplicația server la aplicația client și/sau invers, în cadrul rețelelor de tip LAN (Local Area Network) sau WAN (World Area Network).

Folosind notațiile de la metoda de criptare, pentru a obține mesajul criptat (criptogramă semnată digital), mesajul clar (privit ca șir de biți), se împarte în blocuri de text clar. Fiecărui bloc i se aplică funcția

, unde

Astfel șirul obținut reprezintă mesajul criptat semnat.

Pentru decriptare (obținerea mesajului clar ), criptogramei i se aplică funcția:

, unde

Dezavantaje ale algoritmului RSA:

După cum se poate observa și din descrierea algoritmului, RSA criptează numere și nu litere. Pentru a cripta secvențe de text sau imagini, va trebui sa aplicăm algoritmul pentru fiecare octet în parte. După cum am văzut deja, acest tip de criptare poate ușura foarte mult munca unui criptanalist care utilizează testul Kasiski și poate conduce în cele din urmă la aflarea cheii private. Pentru a evita astfel de situații, de obicei, criptarea RSA mai introduce și octeți cu valori aleatorii.

Din cauza complexității algoritmului de criptare / decriptare, RSA este considerat lent în comparație cu algoritmii simetrici de criptare.

Performanțe în implementări

În general, deoarece se bazează pe o operație destul de costisitoare din punct de vedere al timpului de calcul și al resurselor folosite, și anume exponențierea modulo n, viteza RSA este mult mai mică decât a algoritmilor de criptare cu cheie secretă. Bruce Schneier estima, pe baza unor calcule efectuate în anii 1990, că o implementare hardware de RSA este de 1000 de ori mai lentă decât o implementare DES, iar în software, RSA este de 100 de ori mai lent.

Există anumite modificări care pot aduce performanțe sporite, precum alegerea unui exponent de criptare mic, care astfel reduce calculele necesare criptării, rezolvând în același timp și unele probleme de securitate. De asemenea, operațiile cu cheia secretă pot fi accelerate pe baza teoremei chinezești a resturilor, dacă se stochează p, q și unele rezultate intermediare, folosite des. Cu toate acestea, îmbunătățirile nu sunt mari, iar ordinul de mărime al diferențelor de performanță față de implementările algoritmilor cu cheie secretă rămâne același. De aceea, în sistemele de comunicație în timp real, în care viteza de criptare și decriptare este esențială (cum ar fi, de exemplu, aplicațiile de streaming video sau audio securizate), RSA se folosește doar la începutul comunicației, pentru a transmite cheia secretă de comunicație, care ulterior este folosită într-un algoritm cu cheie secretă, cum ar fi 3DES sau AES.

Viteza algoritmului RSA depinde în mare măsură de lungimea cheilor utilizate, de tipul de implementare, de procesorul pe care se rulează aplicația, dar și de protocolul ce trebuie implementat. Deseori, pentru a obține o viteză sporită în aplicațiile practice, sunt utilizați exponenți publici mici, acest fapt implicând însă și riscuri corespunzătoare.

Există chiar grupuri întregi de utilizatori care folosesc același exponent public, doar modulul N fiind diferit. În acest caz există însă reguli stricte ce trebuiesc respectate pentru cele două numere prime p și q, astfel încât siguranța algoritmului să nu fie periclitată. Utilizând, cum spuneam,exponenți publici mici, se obține o viteză mai mare de criptare și verificare în comparație cu procesele inverse de decriptare și semnare a datelor. Utilizând algoritmii generali de calcul ai exponențialului, operațiile cu cheie publică consumă un timp proporțional cu O(n²), iar operațiile cu cheie privată necesită aproximativ O(n³), unde n reprezintă numărul de biți ai lui N.

Tehnicile de multiplicare rapidă, necesită de obicei mai puțini pași, sunt însă destul de rar folosite datorită complexității lor, și a faptului că pentru lungimi tipice de chei, ele sunt totuși mai lente. Dacă comparăm viteza algoritmului RSA cu cea a unui algoritm cu cheie simetrică(DES de exemplu), putem observa că în funcție de implementare (HW sau SW) cel din urmărește cu până la aproximativ 1000 de ori mai rapid decât RSA. Cu toate acestea, utilizarea RSA în algoritmi de distribuire de chei (simetrice) sau în alte aplicații, în care viteza este mai puțin importantă, prezintă avantaje de netăgăduit.

Securitatea

Securitatea sistemelor RSA se bazează pe presupunerea că funcția C =Me mod N

este unidirecțională, fiind computațional dificil de a se găsi mesajul inițial M în absența exponentului de decriptare d. Există însă posibilitatea, cel puțin teoretică, de a încerca factorizarea lui N prin metoda forței brute sau prin alte metode, fapt ce ar duce la aflarea numerelor p și q. Apoi utilizând algoritmul euclidian extins se poate calcula exponentul de decriptare d, ceea ce ar duce la compromiterea cheii private și la descifrarea textului criptat.

Încă de la publicarea sa, algoritmul RSA a fost studiat de o mulțime de cercetători, fiind supus la nenumărate teste. Cu toate că de-a lungul celor mai bine de 25 de ani de utilizare au rezultat diverse vulnerabilități, algoritmul s-a dovedit suficient de rezistent (până în prezent) pentru a putea oferi un grad ridicat de securitate. Metodele de atac rezultate nu fac decât să ilustreze încă o dată pericolul utilizării RSA în condiții necorespunzătoare, programarea unei versiuni sigure de RSA nefiind deloc o problemă simplă.

Problema decriptării unui mesaj criptat cu RSA este denumită problema RSA. Aceasta constă în obținerea radicalului de ordin e modulo n, unde e și n au proprietatea că n este produsul a două numere prime mari p și q, iar e este prim cu produsul dintre p-1 și q-1. În acest moment, cea mai eficientă metodă de a realiza aceasta este descompunerea în factori primi a lui n, și obținerea astfel a cheii secrete d pe baza lui e. Astfel, este demonstrat că dificultatea spargerii unui mesaj criptat cu RSA nu este mai dificilă decât problema factorizării. Nu a fost descoperită încă o altă soluție generală a problemei RSA, dar nici nu s-a demonstrat matematic că nu există o altă soluție.

Figura 17. Graficul complexității celei mai bune metode de factorizare a întregilor

Graficul complexității celei mai bune metode de factorizare a întregilor în funcție de lungimea reprezentării binare a numărului factorizat (pe abscisă, log n, adică numărul de cifre al numărului de factorizat; pe ordonată, ordinul de mărime al duratei de factorizare). Se observă că această complexitate este exponențială, crescând foarte mult pentru numere mari.

Factorizarea întregilor prin metodele comune ajută la găsirea soluțiilor în timp util doar pentru numere mici. Pentru numere mari, algoritmii de factorizare, cu complexitate exponențială, dau soluția după foarte mult timp. Cea mai rapidă metodă de factorizare a întregilor, algoritmul general al ciurului câmpurilor de numere, are o complexitate de .

Aici, c este un număr ce ia valori în jur de 1,9 pentru numere de tipul lui n, adică numere cu doi factori primi. Cel mai mare număr factorizat vreodată prin acest algoritm, rulat în anul 2005, de către specialiști de la Agenția Federală Germană pentru Securitatea Tehnologiei Informației, are 200 de cifre zecimale, iar reprezentarea binară a factorilor primi obținuți ocupă 663 de biți. Cheile de criptare RSA cele mai sigure au lungimi de peste 1024 de biți.

Atacul RSA prin metoda forței brute, adică încercarea fiecărei chei secrete posibile, consumă chiar mai mult timp decât factorizarea.

Algoritmul RSA nu mai e atât de sigur

Oamenii de știință de la Universitatea din Michigan, au descoperit că cea mai larg răspândită tehnică de securitate digitală, utilizată atât pentru a proteja drepturile de autor în industria media cât și comunicarea în rețeaua internet, conține o vulnerabilitate majoră.

Autentificarea RSA e o metoda populară de criptare cu cheie publică utilizată în media playere, laptop-uri, smartphoneuri, servere și alte dispozitive. Comercianții și băncile de asemenea sunt dependenți de acest algoritm pe care îl utilizează la protejarea informației online despre clienții săi.

Oamenii de știință au descoperit că sistemul de securitate asigurat de RSA poate fi compromis prin varierea voltajului către titularul cheii private. Adică în cazul de protecție a copiei, către dispozitivul consumatorului, iar în cazul comunicării pe internet – către comerciant sau bancă. Este foarte puțin probabil ca un hacker să poată să utilizeze această abordare asupra unei organizații mari. Aceste constatări ar trebui să îngrijoreze mai mult companiile media și producătorii de dispozitive mobile, precum și cei care le utilizează.

Andrea Pellegrini, o doctorandă în cadrul Departamentului de Inginerie Electrică și Informatică, va prezenta un document referitor la cercetare la conferința “Design, Automation and Test in Europe (DATE)”, ce va avea loc la Dresden la 10 martie 2010.

“Algoritmul RSA asigură securitatea presupunând că, atâta timp cât cheia privată este privată, nu poate fi spartă decât dacă o ghicești. Am arătat că acest lucru nu e adevărat”, a declarat Valeria Bertacco, profesor asociat în cadrul Departamentului de Inginerie Electrica si Știința Calculatoarelor.

O astfel de cheie private conține mai mult de 1.000 de cifre de cod binar. Pentru a ghici un număr atât de mare, ar putea dura mai mult decât vârsta universului, a spus Pellegrini. Utilizarea sistemului lor de modificare a tensiunii electrice, cercetătorii au fost capabili să extragă cheia privată în aproximativ 100 de ore.

Au manipulat cu atenție tensiunea utilizând un dispozitiv ieftin construit în acest scop. Varierea curentului electric, în esență, suprasolicită calculatorul și îi cauzează acestuia mici discrepanțe/erori în comunicarea cu alți clienți. Aceste erori dezvăluie bucăți mici din cheia privată. După ce cercetătorii au cauzat un număr suficient de erori, au reușit să reconstituie offline cheia privată.

Acest tip de atac nu are nici un impact negativ asupra dispozitivului și nu lasă probe care să demonstreze realizarea unui astfel de atac.

“Autentificarea RSA este atât de populară, deoarece se credea a fi foarte sigură”, a declarat Todd Austin, profesor la Departamentul de Inginerie Electrica si Știința Calculatoarelor. “Munca noastră redefinește nivelul de securitate pe care îl oferă acest algoritm și reduce considerabil siguranța acestuia.”

Cu toate că această lucrare discută doar problema, profesorii spun ca au identificat o soluție – tehnica criptografică numită “salting”, care modifică ordinea cifrelor într-un mod aleatoriu de fiecare dată când cheia este solicitată.

“Am demonstrat că un atac orientat pe erori asupra algoritmului RSA este posibil”, a spus Austin. “Sperăm că acest fapt va impune producătorii de a face câteva schimbări mici la implementările algoritmului. RSA este un algoritm bun și cred că, în cele din urmă, aceasta va supraviețui acestui tip de atac.”

Lucrarea se numește “Fault-Based Attack of RSA Authentication”.

Un grup de cercetători de la mai multe universități din Europa și Statele Unite au ajuns la concluzia că aproape patru din fiecare o mie de chei publice de criptare nu oferă suficientă securitate pentru utilizatorii lor.

Vulnerabilitatea a fost descoperită în urma unei analize efectuate folosind algoritmul euclidian pe mai mult de șapte milioane de chei publice, utilizate pentru a securiza tranzacțiile online, mesajele de e-mail și alte servicii web – fiind descoperit un număr mic (dar semnificativ!) de chei compromise.

Astfel, a fost găsită o eroare în procesul de generare de numere prime aleatoare – o componentă critică pentru cheile publice de criptare – care a făcut ca mii de chei publice să folosească aceleași numere prime. „Ceea ce ne-a surprins cel mai mult este faptul că mii de module RSA 1024-bit, inclusiv mii de module care sunt conținute în certificate valide X.509, nu oferă nici un fel de securitate”, susțin cercetătorii.

În aceste condiții, au concluzionat cercetătorii, atacatorii ar putea utiliza cheile publice pentru a ghici corespondentul cheilor private folosite pentru a decripta datele – un scenariu care, până acum, era socotit imposibil.

Problema a apărut, de asemenea, și în cheile dezvoltate de către mai mulți dezvoltatori de software, sugerând potențialul său de răspândire. Cercetătorii au dorit inițial să își prezinte concluziile în cadrul unei conferințe de criptografie programată în cursul acestui an, însă s-au hotărât să dezvăluie anticipat detaliile din cauza riscurilor de securitate pe care le ridică vulnerabilitatea.

„Aceasta este o vulnerabilitate criptografică extrem de gravă, cauzată de utilizarea de numere aleatorii insuficient de bune la generarea de chei private pentru HTTPS, SSL și servere TSL”, crede Peter Eckersley, senior technologist la Electronic Frontier Foundation, organizație care a contribuit cu date la cercetare. Specialistul mai spune că, în prezent, se lucrează intens pentru a-i informa pe cei ale căror chei sunt vulnerabile, precum și autoritățile de certificare care au emis certificatele pentru aceștia – pentru ca noi chei să fie generate iar certificatele vulnerabile să poată fi revocate.

Criptarea cu cheie publică se bazează pe generarea a două mari numere prime aleatoare. Produsul acestor numere este folosit pentru a crea o cheie publică, care poate fi folosită pentru a cripta un mesaj. Numai persoana care deține numerele prime originale ar trebui să fie capabilă să decodeze respectivul mesaj. Însă, în condițiile în care numerele generate nu sunt cu adevărat aleatorii, așa cum cercetătorii au demonstrat că se întâmplă, există posibilitatea ca și alte persoane să poată decripta mesajul.

Figura 18. Criptarea asimetrică

Sistemul este folosit pe scară largă pentru a proteja tranzacțiile pe internet și implică folosirea unei chei publice pentru a cripta datele și a unei chei private asociate pentru a le decripta.

Spre exemplu, atunci când un utilizator se conectează la un site bancar sau la unul de comerț electronic, tranzacțiile sunt criptate folosind cheia publică a site-ului. Datele pot fi decriptate de către proprietarul site-ului folosind cheia privată corespunzătoare. Cheile publice sunt de obicei încorporate în certificatul digital care este emis de către autoritățile de certificare. În teorie, este imposibil de ghicit cheia privată corespunzătoare, în condițiile în care două perechi de chei publice / private nu sunt mereu aceleași.

În realitate, însă, nu toate cheile sunt generate corespunzător, afirmă studiul la care au contribuit James Hughes – criptanalist independent din Statele Unite; Arjen Lenstra – profesor la Ecole Polytechnique Federale din Lausanne, Elveția; Maxime Augier – doctorand și trei alți cercetători.

Aceștia au descoperit că 12.720 de chei publice generate folosind algoritmul RSA dintr-un total 7 milioane nu erau de loc sigure, iar alte 27.000 de alții erau vulnerabile. Ei au precizat că deși un procent de securizare de 99,8% poate părea suficient, există totuși o probabilitate ca două din fiecare o mie de chei publice să nu fie sigure.

Studiul a fost efectuat folosind mai multe baze de date de chei publice, inclusiv una aparținând Massachusetts Institute of Technology și o alta creată special de Electronic Frontier Foundation, o organizație pentru protecția datelor pe internet. Baza de date a fundației provine de la un alt proiect, cunoscut drept SSL Observatory, care a avut ca scop investigarea securității certificatelor digitale folosite la protecția datelor criptate transmise între utilizatorii de internet și site-urile web.

Metode de analiză și atac. Atacuri împotriva RSA

Dificultatea de a inversa funcția RSA pentru mesaje aleatoare duce la concluzia că, dat fiind tuplul (N, e, C), un atacator nu va putea obține mesajul criptat M. Cu toate acestea, se pot obține diverse informații despre M, astfel încât RSA nu este un sistem sigur din punct de vedere semantic (date fiind N, e, C, se pot obține relativ ușor proprietăți ale lui M – de exemplu simbolul Jacobi al lui M peste N). RSA poate fi făcut însă sigur din punct de vedere semantic dacă se adaugă informație aleatoare în procesul de criptare. O clasificare a metodelor de atac este relativ dificil de făcut, cu toate acestea se poate aborda problema din două direcții. În primul rând se poate încerca clasificarea metodelor de atac după impactul pe care îl au asupra algoritmului. Astfel, se pot identifica două categorii de atacuri:

• atacuri ce compromit cheia privată, compromițând practic întreaga securitate a sistemului;

• atacuri ce compromit un singur mesaj criptat, cheia privată putând fi însă utilizată în continuare.

Din prima categorie putem enumera metoda forței brute, atacul exponentului privat mic etc. Atacurile din cea de a doua categorie sunt în general mult mai subtile, folosind metode relativ complicate de aflare a mesajului. Cu toate acestea, timpul utilizat pentru aflarea unui mesaj trebuie să fie mult mai mic decât timpul necesar metodei forței brute, pentru ca atacul să aibă o anumită relevanță. Totodată sunt importante și condițiile ce trebuiesc îndeplinite astfel încât metoda să poată fi aplicată. O altă metodă de a aborda o eventuală clasificare a metodelor de analiză și atac o reprezintă împărțirea acestora pe categorii după proprietățile utilizate în cadrul atacului.

Putem enumera astfel:

• metode elementare de atac;

• metoda exponentului privat mic;

• metodele exponentului public mic;

• atacuri îndreptate împotriva diverselor implementări.

Pentru ca un sistem criptografic de tip RSA să fie sigur se recomandă ca în practică N să aibă o lungime de cel puțin 1024 de biți, dat fiind faptul că în ultima vreme s-au obținut rezultate bune în rezolvarea factorizării lui N (cu mijloacele actuale s-a reușit factorizarea unor numere N de lungime de 512 biți).

Deși securitatea algoritmului RSA constă în legătura dintre acesta și factorizarea întregilor, el trebuie folosit cu grijă în implementări, deoarece, în caz de folosire eronată, sistemele bazate pe RSA pot fi atacate în anumite maniere care ocolesc factorizarea efectivă a modulului, atacatorul ajungând să obțină mesajul clar sau cheia secretă.

O altă metodă de a ataca RSA, dar care nu este echivalentă cu problema factorizării numerelor prime, este găsirea unei metode rapide de calcul a rădăcinii la e. Deoarece C = Me mod N, acest atac ar permite oricui decriptarea datelor și falsificarea semnăturilor, chiar și în absența cheii private. Nu se cunoaște însă o aplicație practică în care această metodă să fi fost folosită cu succes, dar în anumite cazuri, dacă se folosește un exponent public mic, este teoretic posibilă aplicarea ei și decriptarea unor mesaje. Cele două metode descrise anterior sunt metode cu ajutorul cărora se pot recupera toate mesajele criptate cu o anumită cheie. Există însă și metode ce au ca țintă aflarea textului unui singur mesaj criptat. Un succes în această direcție nu va permite însă atacatorului să decripteze și alte mesaje criptate cu aceeași cheie. Dacă, de exemplu, metoda factorizării duce practic la compromiterea cheii private, nu acesta este rezultatul în cazul altor tipuri de atac.

Atac cu text cifrat ales

În cazul atacului cu text cifrat ales, atacatorul dispune de cheia publică a entității atacate (exponentul de criptare e și modulul n), și interceptează mesaje cifrate trimise acestuia. Pentru a obține mesajul clar m dintr-un mesaj cifrat c, atacatorul poate proceda, de exemplu, astfel:

Calculează

Trimite entității atacate spre semnare pe x, obținând y = xd(mod n)

Se observă că

Se rezolvă ecuația y = (2m)(mod n)

Atacatorul obține astfel mesajul cifrat. Există mai multe feluri de atacuri cifrate, dar sunt câteva moduri de apărare împotriva lor. Unele pot fi evitate dacă pur și simplu entitatea protejată cu chei secrete refuză să semneze texte arbitrare trimise de terți. Dacă acest lucru nu este posibil (ca de exemplu în cazul unui notar public care trebuie să semneze documente electronice prezentate de persoane străine), atunci atacul poate fi prevenit prin folosirea unei perechi diferite de chei pentru criptare și pentru semnătura electronică. De asemenea, este necesar să se folosească și un padding aleator pentru mesaj înainte de criptare sau, în cazul semnăturii, să nu se semneze mesajul clar, ci un hash al acestuia. De asemenea, atacul poate fi evitat și dacă se impune o anumită structură predefinită mesajelor primite spre semnare.

Mesaje necriptate

Întrucât RSA se bazează pe ridicarea la putere (modulo un număr n), există anumite părți de mesaje care nu sunt criptate, părți rezultate în urma împărțirii mesajului pe blocuri. Astfel de mesaje sunt mesajele m cu proprietatea că m=mx (mod n) oricare ar fi x, ca de exemplu m=0, m=1, m=n-1. Numărul exact al acestor mesaje decriptate este , și deci este de minim 9 (deoarece e, p și q sunt impare). Pentru a micșora numărul de astfel de părți de mesaj, este util să se folosească un exponent public e cât mai mic.

Exponentul de criptare mic

În unele aplicații, se folosește un exponent de criptare (public) mic, de exemplu 3, pentru a mări performanța, dar și pentru a rezolva unele probleme de securitate. Dacă mai multe entități care comunică folosesc același exponent public (dar fiecare are propriul modul și deci propria cheie secretă), atunci același mesaj trimis mai multor destinatari are următoarele valori:

c1 = me(mod n1)

c2 = me(mod n2)

c3 = me(mod n3)

unde ni sunt modulele celor trei destinatari, e este exponentul comun acestora iar m este mesajul trimis tuturor celor trei. Un atacator poate folosi algoritmul lui Gauss pentru a descoperi o soluție mai mică decât n1n2n3 a unui sistem compus din următoarele ecuații:

x = me(mod n1)

x = me(mod n2)

x = me(mod n3)

Această soluție este, conform teoremei chinezești a resturilor, cubul mesajului m. Soluția pentru această problemă este cea denumită sărarea mesajului (din engleză salting), adică adăugarea unui padding format din numere pseudoaleatoare, padding diferit pentru fiecare expediere a mesajului.

Exponentul de decriptare mic

Dacă exponentul de decriptare (cel secret) este mic, pe lângă faptul că multe părți din mesaj nu se criptează, așa cum s-a arătat mai sus, există un algoritm rapid de găsire a lui d, cunoscând informațiile e și n. Acest algoritm nu este eficient dacă d este de același ordin de mărime cu n, deci dacă e este mic, acesta fiind unul din motivele pentru care se alege în general e un număr mic, pentru ca d să fie cât mai mare.

Algoritmul RSA în aplicații practice

În practică, RSA este foarte des utilizat împreună cu algoritmi cu cheie simetrică (de exemplu DES). Se generează o cheie DES, cu care se criptează mesajul. Apoi, cheia simetrică se criptează cu ajutorul cheii publice a persoanei căreia îi este destinat mesajul și se trimite destinatarului împreună cu mesajul criptat (acestea două formează un “plic digital” RSA).

Destinatarul va decripta mai întâi cheia DES cu ajutorul cheii sale private, apoi mesajul, cu ajutorul cheii simetrice, obținută din prima decriptare. Cheia DES poate fi în continuare utilizată și ca o cheie de sesiune. Pentru semnarea unui mesaj, mai întâi se creează o amprentă digitală (“message digest”) a acestuia cu ajutorul unei funcții hash. Aceasta se criptează cu ajutorul cheii private, rezultatul urmând a fi trimis destinatarului.

Pentru verificarea semnăturii, se decriptează mesajul cu ajutorul cheii publice a semnatarului, obținând astfel amprenta digitală, care va fi comparată cu cea obținută aplicând din nou funcția hash asupra mesajului. Dacă cele două amprente sunt identice, rezultă faptul că semnătura digitală este autentică. În momentul de față, RSA este utilizat într-o varietate de produse, platforme și standarde. El poate fi întâlnit în sisteme de operare, precum: Microsoft, Apple, Sun sau Novell, în componente hardware, precum: sisteme telefonice, card-uri de rețea sau smartcard-uri, în protocoale de comunicație, precum: S/MIME, SSL, IPSec, PKCS sau S/WAN. El este în mod sigur cel mai răspândit algoritm cu cheie publică utilizat la ora actuală.

Un prim domeniu unde întâlnim algoritmi de criptare, și în special RSA, este cel al telecomunicațiilor: telefoane publice, cu cartele electronice, sau telefoanele mobile (protocoale de autentificare a persoanei apelate). De asemenea, în domeniul sănătății, prin intermediul cardurilor electronice care să conțină istoricul medical al unui individ. Securitatea națională: cărți de identitate, pașapoarte, legitimații magnetice. Și să nu uităm economia: cardurile bancare, comerțul electronic, sau informatica: confidențialitatea poștei electronice, a informațiilor de pe o pagină de web, pe scurt, dreptul la intimitate.

Unde vom întâlni nevoia de semnătură și identificare electronică, vom întâlni criptarea prin RSA.

Capitolul V. Rezultate și concluzii

Schimbările care apar în infrastructura tehnologiei comunicației, alterează modul în care comunicăm. Odată cu beneficiile rezultate din creșterea vitezei, eficienței și a costurilor scăzute, era digitala a adus noi provocări pentru securitatea comunicațiilor și a informațiilor care străbat infrastructura globală de comunicație. Drept urmare, pe măsură ce tehnicile de criptare se diversifică, linia de marcaj între ceea ce s-a făcut și ceea ce nu s-a făcut a devenit neclară. Astăzi, criptografia poate fi sintetizată ca fiind suma metodelor și a aplicațiilor care depind de existența unui grad de dificultate în rezolvarea problemelor.

Societatea informatizată implică securitatea informațiilor transmise prin intermediul Internet-ului. Utilizarea protocoalelor de securizare moderne au transformat Internet-ul într-o rețea sigură de tip WAN. Internet-ul a introdus termeni noi cum ar fi http cu varianta securizată https.

O aplicație de securizare a informațiilor transmise prin Internet o constituie criptarea. Sistemele de criptare cu cheie simetrică sau cele cu cheie publică au fost perfecționate și standardizate în ideea asigurării confidențialității și garantării integrității datelor transmise, asigurarea autentificării destinatarului și a nerespingerii mesajelor la acesta. Securizarea documentelor în Internet este o problema majora atât la nivelul grupurilor de standardizare, cât si la nivelul marilor companii.

Principalele metode de protejare a informațiilor stocate într-un sistem de calcul sunt cele de securizarea sistemelor pe care sunt depuse aceste informații.

Aceasta securizare se poate eșafoda pas cu pas prin diverse metode pornind de la asigurarea incintelor sistemelor de calcul precum și a accesului logic la aceste sisteme, asigurarea modalităților de interacționare în rețea prin parole, folosirea sistemelor de protecție a fișierelor de date pentru asigurarea integrității acestora, criptarea liniilor de comunicații din rețelele de calculatoare și poate ajunge până la utilizarea unor tehnologii speciale pentru blocarea interceptării diferitelor radiații emise de echipamentele de calcul în timpul funcționării normale a acestora.

În genere, securitatea sistemelor de calcul asigura protecția informațiilor stocate în aceste sisteme, previne pierderea, modificarea accidentală sau voită și citirea lor neautorizata, adică ceea ce este așteptat de la ele, chiar dacă utilizatorii nu fac ceea ce ar trebui să facă.

Toți algoritmii moderni de criptare pot fi sparți. Securitatea lor derivă din timpul foarte mare necesar pentru găsirea cheii corecte. Pentru algoritmul AES (Advanced Encryption Standard) ce folosește o cheie de 128 biți, sunt necesare efectuarea a 2^128 încercări pentru a găsi combinația corectă.

Presupunând că nu s-a folosit la criptare o parolă care să conțină data de naștere a copiilor sau numele animalului de companie, sunt necesare mii de miliarde de ani pentru decriptarea unui mesaj în condițiile în care se efectuează 1000 de miliarde de calcule pe secundă. Totuși, dacă sunteți norocoși puteți nimeri combinația corectă în primele 10 minute.

Situația se poate schimba odată cu apariția calculatoarelor cuantice – un concept futuristic dar totuși foarte actual. Un calculator cuantic poate efectua calculele necesare pentru spargerea unui mesaj AES pe 128 de biți într-un timp record de 6 luni. Același calculator cuantic poate sparge mesajele criptate prin intermediul RSA în câteva secunde. Experții spun că în decurs de câteva decenii decriptarea celor mai puternici algoritmi folosiți în prezent va fi o joacă de copii.

În momentul actual sunt utilizate două tipuri de algoritmi de criptare:

• Algoritmi simetrici – algoritmi folosiți pentru criptarea rapidă a unei mari cantități de informație;

• Algoritmi asimetrici – algoritmi lenți folosiți în principal la criptarea cheilor folosite de către algoritmii simetrici.

Algoritmii simetrici, după cum le spune și numele, folosesc aceeași cheie atât pentru criptare cât și pentru decriptare. Unul dintre cei mai utilizați este AES, publicat de NIST (National Institute of Standards and Technology) în anul 2001 după o testare prealabilă de 5 ani. AES folosește chei pe 128 sau 256 biți și este folosit în Statele Unite pentru criptarea canalelor de comunicații guvernamentale ce vehiculează informații neclasificate.

Marele neajuns al algoritmilor simetrici derivă din faptul că parola trebuie comunicată și corespondentului astfel încât acesta să poată face decriptarea. Dacă parola este interceptată pe parcurs, atunci toate comunicările devin cărți deschise pentru curioși.

Pentru compensare, au fost introduși algoritmii asimetrici, algoritmi lenți care sunt folosiți pentru criptarea cheilor utilizate la criptarea simetrică. Principiul este simplu : pentru fiecare utilizator există un set de chei : cheia publică și cheia privată. Cheia publică este cunoscută de oricine și poate fi folosită pentru criptarea informației. Cheia privată este cunoscută doar de destinatar și este folosită pentru decriptarea mesajului.

Pentru exemplificarea criptării cu chei publice vom folosi următorul scenariu. Imaginați-vă un sistem de transmitere a informației de genul: persoana care trebuie să primească informațiile confidențiale, pune la dispoziția celor care doresc să îi comunice aceste informații o cutie care are un lacăt automat lăsat în poziție deschisă. Cheia de la lacăt o are numai posesorul cutiei. Expeditorii își lasă mesajul în cutia respectivă după care închid lacătul. Simplu, nimeni în afară de posesorul cutiei nu o va putea desface deoarece există o singură cheie pentru lacăt.

Cel mai folosit algoritm pentru criptarea cu chei publice este RSA (denumit după creatorii săi Ron Rivest, Adi Shamir și Len Adleman). Puterea RSA constă în greutatea cu care pot fi factorizate numerele întregi foarte mari din care sunt derivate cheile publice respectiv cheile private. Prin factorizare se înțelege procesul de descoperire a divizorilor unui număr întreg. Prin divizor al unui număr întreg n se înțelege acel număr întreg x pentru care există un alt număr întreg y astfel încât n=x*y. Pentru factorizarea unui număr întreg cu 200 cifre zecimale, au fost necesare câteva luni, fiind folosite un număr de 80 calculatoare cu procesoare de ultimă generație. Până în prezent s-au spart mesaje cu chei reprezentate pe maxim 768 biti. Din acest motiv, criptarea informației se face în mod curent folosind algoritmul AES cu o cheie pe 256 biți, iar criptarea cheii simetrice se face cu algoritmul RSA pe 2048 biți.

Dar să revenim la calculatoarele cuantice. Acestea sunt dezvoltate de mai multe guverne datorită posibilităților imense de calcul pe care le pot oferi. Dacă un calculator binar poate găsi o cheie memorată pe 100 biți după efectuarea a 2^100 operații, un calculator cuantic poate găsi soluția corectă după 50 depași. Calculatoarele cuantice folosesc principiile fizicii cuantice pentru a descoperi modele în numerele mari fără a trebui să calculeze toate variantele așa cum face un calculator binar.

Dacă sistemele de calcul cuantice par a fi viitorul în spargerea actualilor algoritmi de criptare, tot acestea pot reprezenta și rezolvarea acestor probleme prin folosirea tehnologiei QKD – Quantum Key Distribution. Nu se cunoaște momentul exact în care aceste sisteme vor fi perfect funcționale, dar se estimează că AES va mai putea fi folosit cu încredere pentru încă 20 de ani sau poate mai puțin. Nimeni nu știe cu siguranță. Poate că AES este deja depășit?!.

La ora actuală există o multitudine de metode de atac și o mulțime de vulnerabilități ce trebuie luate în considerare pentru a putea programa o versiune robustă de RSA. Numai o analiză atentă și o cunoaștere amănunțită a acestora poate duce la realizarea unei implementări robuste. Metodele prezentate au atât o valoare teoretică cât și una practică, în funcție de impactul pe care îl au asupra algoritmului. Prezentăm în continuare un set de măsuri ce trebuie îndeplinite pentru a preîntâmpina vulnerabilitățile prezentate anterior:

• folosirea unor chei de lungime potrivită (de obicei se caută un compromis între nivelul de securitate și viteză);

• adăugarea unei secvențe aleatoare de completare a mesajului;

• folosirea unor valori ale exponentului privat ce îndeplinesc condiția , pentru a împiedica atacul exponentului privat;

• evitarea folosirii unor anumite valori întregi pentru exponentul public (de exemplu 3);

• semnarea amprentei (hash-ului) unui mesaj, nu a mesajului în sine;

• evitarea producerii de semnături sau criptări false, eventual prin verificarea lor ulterioară înainte de publicare, dacă nu există altă metodă;

• introducerea de timpi aleatori în algoritm, acolo unde este posibilă o analiză temporală a acestuia;

• evitarea de a răspunde automat la toate cererile primite, pentru a nu transforma serverul în“oracol”, eventual realizarea unui jurnal pentru a putea păstra o istorie a cererilor primite.

În ultimul timp a devenit clar că sistemele cu chei publice sunt un mecanism indispensabil atât pentru managementul cheilor cât și pentru comunicațiile sigure. Ceea ce este mai puțin clar este modalitatea de a alege cel mai bun sistem într-o anumită situație.

Unul dintre criteriile cele mai des folosite pentru a alege îl constituie tehnica utilizată de algoritm. Fără o cunoaștere profundă a acesteia, a vulnerabilităților, dar mai ales a metodelor de atac, cu greu mai putem concepe astăzi programarea unui versiuni robuste și sigure a unui algoritm criptografic. Mai mult de două decenii de atacuri împotriva RSA au produs o serie de atacuri interesante, dar nu au fost găsite (până în prezent) metode astfel încât algoritmul să fie compromis. Atacurile prezentate și în această lucrare subliniază în mare parte capcanele ce ar trebui ocolite atunci când se implementează algoritmul. Se poate deci presupune că implementările RSA, ce respectă un set de reguli bine stabilit, pot furniza un grad ridicat de securitate.

Desigur, cele prezentate în cadrul acestei lucrări nu sunt decât câteva dintre aplicațiile criptografiei în asigurarea securității informatice a acestui mediu în care ne pregătim să trăim în anii următori si care se cheamă Cyberspace. În lucrarea “Computer at Risks”, dedicată securității calculatoarelor și rețelelor, National Research Council din SUA deschide primul capitol cu acest semnal de alarma: "We are at risk". Este o afirmație perfect acoperită de realitatea în care evoluează majoritatea rețelelor din diferite țări ale lumii, pe care se execută, concurent, un mare număr de programe, insuficient protejate împotriva unor atacuri privind integritatea și autenticitatea informațiilor procesate. Tehnologii pentru ameliorarea acestui enorm risc al anilor următori nu pot veni decât din comunitatea cercetătorilor iar numitorul lor comun va fi acela că vor utiliza diferite tehnici și protocoale criptografice. Pentru că se poate aprecia cu certitudine că măsurile legislative care sunt preconizate pentru asigurarea securității Cyberspace-ului trebuiesc dublate de soluții tehnice de protecție, indisolubil legate de noua tinerețe a criptografiei computaționale.

Bibliografie

Practical Cryptography, Niels Ferguson and Bruce Schneier, Wiley, 2003.

Coding and Cryptology, Yeow Meng, Chee Zhenbo Guo, San Ling, Fengjing Shao, Yuansheng Tang, HuaxiongWang, Chaoping Xing (Eds.), IWCC 2011

Cryptology unlocked, Reinhard Wobst, john Wiley & Sons, Ltd, 2001

Digital Signatures using Reversible Public Key Cryptography for the Financial Services Industry (rDSA), Appendix A, American National Standards Institute, 1998.

Cryptographic Message Syntax (CMS), R. Housley, September 2009 (obsoletes RFC3852, RFC3369, RFC2630).

Use of the RSA-KEM Key Transport Algorithm in CMS, J. Randall, B.Kaliski. September 2007 (now superseded)

Revista Informatica Economica, nr. 1 (17)/2001

http://webhost.uoradea.ro/cpopescu/cryptography/Cursul10.pdf

http://securitate.md/blog/algoritmul_rsa_e_vulnerabi/2010/03/04/

http://www.securitatea-informatiilor.ro

http://www.ginfo.ro/

http://ro.wikipedia.org/wiki/RSA

http://www.di-mgt.com.au/rsa_alg.html

Similar Posts