Sistem de Transmitere Secretizata a Imaginilor Statice

Introducere

Tema propusă este de actualitate în contextul evoluției transmisiilor digitale, atât a semnalelor vocale cât și a celor video. Dezvoltarea și perfecționarea continuă a echipamentelor numerice terminale certifică faptul că într-un viitor foarte apropiat se vor putea efectua prelucrări complexe asupra informației transmise și recepționate.

Importanța tematicii este evidențiată de utilizarea în tot mai multe domenii a legăturilor secretizate: comunicațiile militare, comunicațiile serviciilor speciale, comunicațiile guvernamentale, comunicațiile diplomatice, comunicațiile din mediile financiar-bancare, comunicațiile agenților economici, televiziunile companiilor private.

Scopul utilizării comunicațiilor protejate poate fi privit sub două aspecte, cel de păstrare a confidențialității informaționale și a caracterului de secret politico-diplomatic și cel economico-financiar.

Transmiterea de imagini, în foarte multe cazuri, este preferată transmisiilor vocale datorită volumului mare de informații conținute în imagini cât și acurateței acestora.

Pentru a realiza un sistem de transmitere secretizată a imaginilor statice este necesară elaborarea unor algoritmi complecși de compresie informațională și algoritmi specifici de prelucrare numerică în scopul protejării informației video față de accesul neautorizat.

Lucrarea de față reprezintă un studiu făcut asupra cerințelor și metodelor de prelucrare a imaginilor statice transmise într-un sistem secretizat de comunicații. Lucrarea cuprinde în total 8 capitole.

În primul capitol se face un studiu asupra imaginilor digitale pornind de la reprezentarea acestora, achiziția imaginilor, suporturi de memorare, prelucrarea imaginilor, transmisia imaginilor și câteva cuvinte despre formatele de imagini. În finalul capitolului, datorită importanței subiectului, se prezintă în ce constă eșantionarea și cuantizarea imaginilor cât și metode folosite în compresia de imagini.

Al doilea capitol prezintă cerințele pe care trebuie să le satisfacă un sistem secretizat de comunicații. Aceste cerințe se descriu în funcție de amenințările la care este supus un sistem secretizat de comunicații complet. Datorită faptului că un sistem de comunicații total conține și un sistem de transmitere secretizată a imaginilor, pentru cel din urmă nu se mai iau în considerare servicii pe care sistemul complet le va satisface în mod corespunzător (ex: autentificare, controlul accesului, nerepudierea), și se va pune accentul pe confidențialitatea transmiterii imaginilor statice.

Capitolul trei face o prezentare a metodelor analogice de secretizare a semnalelor video utilizate în prezent, pe scară largă, în transmisiile de televiziune prin satelit. Anterior transmiterii digitale a informațiilor, transmisia secretizată a datelor se realiza prin intermediul sistemelor analogice de cifrare. Având în vedere faptul că din totdeauna s-a dorit creșterea vitezei de transmitere a informației, transmisiile video și implicit sistemele de secretizare a acestora s-au impus ca atare, dezvoltându-se foarte rapid. Sunt prezentate sisteme de protecție analogică cum ar fi: Save, Matsushita, Eurocrypt, Eurocypher.

Capitolul patru analizează rolul criptografiei computaționale în securitatea sistemelor de comunicații. Prin digitizarea imaginilor, s-a permis prelucrarea numerică a acestora și astfel algoritmii criptografici pot fi aplicați și transmisiilor de imagini pentru a le secretiza. Criptografia este principalul mecanism de asigurare a confidențialității datelor, însă ea este folosită și ca suport pentru implementarea celorlalte servicii de securitate. Sunt prezentați o multitudine de algoritmi criptografici din categoria celor simetrici, adică cu o singură cheie, precum și metode criptografice cu chei publice.

O altă metodă de secretizare a datelor este prezentată în capitolul cinci, capitol în care se analizează modul de utilizare a generatoarelor de numere pseudoaleatoare în criptarea datelor. Sunt prezentate aici două clase de generatoare: cele congruențial liniare și cele haotice și se prezintă avantajul, în criptografie, a combinării a două generatoare, unul cu perioda de repetiție cunoscută și unul cu perioada de repetiție de lungime variabilă.

Capitolul șase reprezintă capitolul de bază al acestei lucrări și sunt prezentate aici metodele concrete de secretizare alese pentru a cripta imaginile statice, schemele bloc și descrierile modulelor de criptare și decriptare pentru aceste tipurile de criptări, avantajele și dezavantajele acestora, exemplificarea criptării prin aceste metode pe diverse tipuri de imagine, concluziile cu privire la utilizarea acestor algoritmi de secretizare pentru criptarea imaginilor și în final se propune un exemplu de calcul care atestă că algoritmul criptografic realizat este rezistent la atacurile criptanalitice.

În sfârșit capitolul al șaptelea descrie programul de criptare a imaginilor statice „ImagCript”, realizat pentru a demonstra utilitatea și justețea informațiilor și afirmațiilor existente în această lucrare, programul prezentându-se astfel, ca o finalitate la perioada îndelungată de documentare și de proiectare a metodelor de secretizare a imaginilor statice.

CAPITOLUL 1

Imagini digitale

1.1 Reprezentarea imaginilor digitale

La început, imaginile sunt semnale, dar nu funcții temporale, ci funcții definite pe un domeniu spațial. Orice imagine este o structură bidimensională (tablou, matrice) de date. Aceste date pot fi numere naturale, reale sau complexe, reprezentate însă pe un număr finit de biți.

Termenul de imagine monocromă (imagine alb-negru) se referă la funcția de intensitate bidimensională f(x,y), unde x și y reprezintă coordonatele spațiale iar f este funcția proporțională în fiecare punct (x,y) cu strălucirea sau cu nivelul de gri al imaginii în acel punct.

O imagine digitală este o imagine f(x,y) care a fost discretizată atât în coordonate spațiate cât și ca strălucire. Ea poate fi considerată ca o matrice la care indicele rândurilor și coloanelor identifică un punct din imagine, iar elementul corespunzător al matricii reprezintă nivelul de gri în punctul respectiv. Elementele unei asemenea rețele digitale sunt numite elemente de imagine sau pixeli.

După tipul datelor din această structură bidimensională, imaginile prelucrate pot fi împărțite în mai multe categorii:

imagini scalare, în care fiecare componentă este un scalar (un unic număr); ca exemple de astfel de imagini se pot da imaginile monocrome (în care punctele au doar două valori posibile, ce corespund unui conținut binar al imaginii în general alb-negru) și imaginile cu nivel de gri (de tipul imaginii de luminanță de pe ecranele televizoarelor alb-negru);

imagini vectoriale, în care fiecare componentă este un vector de numere; cazul particular cel mai de interes este acel al imaginilor color, în care vectorul are trei elemente (ce corespund celor trei constituente de bază ale oricărei culori); în general, pentru imaginile multicomponentă, vectorul asociat fiecărui punct din imagine are mai multe elemente (caz ce corespunde imaginilor preluate în mai multe benzi de frecvență, așa cum sunt imaginile de teledetecție ale sateliților, imaginile de termodetecție în benzile de infraroșu, etc.). Tot în categoria imaginilor vectoriale intră însă și imaginile stereo (o pereche de imagini ale aceleiași scene, luate din unghiuri diferite) și secvențele de imagini.

În mod clasic, valoarea unui element al unei imagini este o măsură a intensității luminoase în punctul considerat; acesta nu este însă decât un caz particular. După natura lor, imaginile pot fi clasificate ca imagini abstracte, imagini non-vizibile și imagini vizibile.

Imaginile abstracte sau modelele sunt de fapt funcții matematice continue sau discrete, de două variabile.

Imaginile non-vizibile, care evident, nu pot fi percepute în mod direct de ochiul uman, sunt de fapt achiziții ale unor câmpuri bidimensionale de parametrii fizici (presiune, temperatură, densitate, etc.). În fine, imaginile ce pot fi percepute în mod direct de către ochiul uman (deci imagini vizibile) sunt la rândul lor imagini optice, generate ca distribuții de intensitate luminoasă (așa ca hologramele, imaginile de interferență și difracțiile) sau imagini propriu-zise (de luminanță – în sensul curent al termenului, ce se referă la fotografii, desene, schițe și altele din aceeași categorie).

O altă împărțire a imaginilor scalare se poate face după semnificația ce se dă valorii numerice a pixelilor. Vom distinge astfel imagini de intensitate și imagini indexate. O imagine de intensitate este o imagine în care valoarea fiecărui pixel este o măsură directă a intensității luminoase sau a mărimii fizice prelucrate de senzor, ca de exemplu în imaginile cu nivele de gri. Pixelii unei imagini de intensitate pot avea orice fel de valori: reale sau naturale (depinzând dacă imaginea este sau nu cuantizată).

O imagine indexată este acea imagine în care valoarea fiecărui pixel este un indice prin care se regăsește informația de culoare asociată pixelului respectiv. Deci, pentru afișarea sau reprezentarea unei imagini indexate este necesară o informație suplimentară, de asociere între indici și culori. Această asociere se face prin intermediul paletei de culoare.

În general, în diferite aplicații se folosesc imagini de diferite forme și dimensiuni dar prelucrarea digitală este mult facilitată dacă se folosesc matrici pătratice iar numărul nivelelor de gri se alege ca putere întreagă a lui 2. De exemplu, o dimensiune tipică a imaginilor digitale, comparabilă ca și calitate cu cea a imaginilor TV alb-negru, este de 512x5l2 pixeli având 128 nivele de gri.

1.2 Achiziția imaginilor

Înainte de a realiza secretizarea transmisiei imaginii statice, primul pas îl reprezintă achiziția acestei imagini. Această operație necesită un senzor de imagine și capacitatea de a digitiza semnalul de la ieșirea acestuia. Senzorul poate fi spre exemplu o cameră de televiziune alb-negru sau color, care produce o imagine completă la fiecare 1/25 secunde, sau o cameră cu scanare liniară care produce la un moment dat o singură linie dintr-o imagine. Dacă la ieșirea senzorului (camerei) rezultă un semnal analogic, este necesară digitizarea lui cu ajutorul unui convertor analog-numeric.

În vederea achiziționării de imagini și transformării lor în imagini digitale sunt necesare două elemente: un dispozitiv (senzor) sensibil într-o anumită gamă a spectrului energetic electromagnetic (de exemplu benzile corespunzătoare razelor x, ultraviolete, vizibile sau infraroșii) și care produce la ieșire un semnal electric proporțional cu energia acestor radiații și un digitizor care convertește semnalul analogic de la ieșirea senzorului în formă digitală.

O categorie importantă de videosenzori o constituie cei folosiți în domeniul vizibil: camerele video cu vidicon sau cu dispozitive videocaptoate integrate de tip CCD. Funcționarea camerelor video cu vidicon se bazează pe principiul fotoconductibilității: o imagine focalizată pe suprafața tubului produce un relief de conductibilități proporțional cu distribuția de străluciri din imaginea optică. Un fascicul de electroni focalizat pe suprafața posterioară a țintei fotosensibile a tubului explorează punct cu punct această suprafață și, prin neutralizarea sarcinilor electrice, creează o diferență de potențial care produce pe un electrod colector un curent proporțional cu relieful de străluciri de pe fața anterioară a țintei. Imaginea digitală este obținută prin eșantionarea și cuantizarea acestui semnal.

Dispozitivele videocaptoare integrate sunt compuse din elemente semiconductoare discrete, numite fotocapacități MOS, care dau la ieșire un potențial proporțional cu intensitatea luminii incidente. Există două tipuri de asemenea dispozitive: liniare și matriciale. Un senzor liniar constă dintr-un șir de asemenea fotocapacități semiconductoare și poate produce o imagine bidimensională prin ate produce o imagine bidimensională prin mișcarea relativă între scenă și detector.

Fig.1.1 Elementele funcționale de bază ale unui sistem

de prelucrare digitală a imaginilor

Un senzor matricial este compus dintr-o matrice de fotocapacități MOS, și poate capta o imagine într-un mod similar unui tub videocaptor. Tehnologia utilizată în dispozitivele videocaptoare integrate se bazează pe circuitele cu transfer de sarcină (CCD – “Charge Coupled Devices”).

Un dispozitiv video captor liniar (scaner liniar) CCD este compus din șiruri de fotocapacități MOS, porți de transfer a sarcinilor din elementele fotosensibile în regiștrii de transfer și o poartă de ieșire folosită pentru transferul semnalului din regiștrii de transfer spre un amplificator de ieșire.

Dispozitivele videocaptoare CCD matriciale sunt similare cu senzorii liniari, cu excepția organizării fotocapacităților într-o matrice și a porților/regiștrilor de transfer vertical care separă între ele coloanele de fotocapacități. Conținutul fotoelementelor pare sunt transferate secvențial în regiștrii de transfer vertical și apoi în registrul de transfer orizontal. La rândul lui, acesta transferă prin intermediul unei porți, conținutul unei linii într-un amplificator de ieșire. Repetând procedura pentru liniile impare se obține al doilea câmp al unui cadru de imagine întrețesută. Scanarea se repetă în același mod de 25 de ori într-o secundă.

Senzorii liniari CCD au rezoluții cuprinse între 256 și 4096. Rezoluția senzorilor CCD matriciali variază între 32×32 elemente pentru cele de performanțe reduse și 256×256 elemente pentru un senzor de rezoluție medie. Pe piață se oferă și senzori de rezoluție mai ridicată, 640×486 și chiar 1280×1024 elemente, dar la un preț mai ridicat. Cu titlu de noutate, au apărut senzori care folosesc mișcarea mecanică a dispozitivului integrat CCD pentru a obține rezoluții de ordinul 2048×2048 elemente. Matricile CCD sunt înglobate în camere video, semnalul de ieșire fiind semnalul standard folosit în sistemele TV. Pentru obținerea unei imagini digitale se impune, la fel, eșantionarea și cuantizarea acesteia.

1.3 Memorarea imaginilor digitale

O imagine digitală pe 8 biți, de dimensiuni 1024xl024 pixeli, necesită un spațiu de memorie foarte mare, de ordinul a 106 bytes. Din acest motiv, memorarea imaginilor ocupă un loc important în proiectarea sistemelor de prelucrare a imaginilor.

Memorarea digitală pentru aplicații de prelucrare de imagini poate fi clasificată în trei categorii principale:

memorarea pe termen scurt pentru nevoile procesării propriu-zise;

memorarea on-line pentru accesare relativ rapidă a imaginilor;

memorarea în vederea arhivării, caracterizată prin faptul că accesul la

imagini este mai puțin frecvent.

Cea mai folosită metodă de memorare pe termen scurt este folosirea memoriei calculatorului. O a doua, utilizând plăci de memorie specializate, numite "memorii de cadru" (frame buffers), permite memorarea unuia sau mai multor cadre, cu mențiunea că accesul este foarte rapid – de obicei în timp real, adică 25 de cadre complete pe secundă. A doua metodă permite un zooming aproape instantaneu ca și deplasări verticale ("scroll”) sau orizontale ("pant”) ale acesteia. Capacitatea de memorie necesară pentru o memorie de cadru este limitată de dimensiunile fizice ale plăcii și de densitatea de memorie/circuit integrat utilizată. O capacitate de 32 Mbytes pe o placă de memorie de cadru este uzuală, la ora actuală.

Memorarea "on-line" se face, de obicei, cu discuri magnetice. Discurile Winchester având capacități de sute de Mbytes sau chiar Gbytes se folosesc în mod obișnuit, chiar în calculatoare de uz general. O tehnologie mai recentă, numită memorare magneto-oplică (MO) utilizează un laser si tehnologii speciale de obținere a materialelor, în vederea obținerii unei capacități de memorare de 1 Gbytes pe un disc de 5 1/4 inch. Datorită faptului că ceea ce caracterizează, în principal, memorarea "on-line" este accesarea frecventă a datelor, benzile magnetice și alte medii de memorare cu acces serial se utilizează mai rar. Seturi de discuri optice de 30-:-100 unități pot oferi o soluție eficientă pentru memorarea unei cantități mari de informație "on-line" atunci când aplicațiile de prelucrare digitală a imaginilor necesită capacități mari de scriere-citire.

Memorarea în vederea arhivării se caracterizează, prin capacități foarte mari de memorare necesare, dar cu accesare mult mai puțin frecventă. Benzile magnetice și discurile optice reprezintă cea mai uzuală soluție tehnologică utilizată în acest caz. Benzi magnetice de înaltă densitate (2500 bytes/cm) permit memorarea unei imagini pe o lungime de bandă de 4 metri, dar problema principală rămâne durata de păstrare a informației, care este limitată (aproximativ 7 ani) și necesitatea asigurării unui spațiu de depozitare controlat. Discurile optice în tehnologia WORM ("write-once-read-many") permit stocarea de informații de ordinul a 1 Gbyte pe discuri de 5 1/4 inch. Spre deosebire de discurile magneto-optice, discurile WORM sunt disponibile în variante având dimensiuni și capacități de memorare mai mari (6 Gbytes pe discuri de 12 inch, respectiv 10 Gbytes pe discuri de 14 inch). Deși nu sunt refolosibile prin ștergere, discurile WORM au o durată de păstrare a informației care depășește 30 ani, fără condiții speciale de depozitare. În configurația de “jukebox”, aceste discuri se pot folosi și ca dispozitive de stocare "on-line", în aplicații care necesită în principal operațiuni de tip “read-only”. O capacitate de memorie de 1 Tbyte, respectiv 1 milion de imagini pe 8 biți, de dimensiuni 1024xl024, este posibilă folosind un “jukebox” care ocupă un volum sub 4 m3.

În situația în care memorarea imaginilor se poate face și sub formă analogică, mediile de memorare tipice utilizate în aplicațiile de acest tip sunt filmul fotografic sau banda/caseta magnetică video.

1.4 Prelucrarea imaginilor digitale

Prelucrarea imaginilor digitale este folosită pentru restaurarea și îmbunătățirea imaginilor și presupune folosirea unor tehnici exprimate, de obicei, sub forma unor algoritmi. Din această cauză, cu excepția achiziției și redării imaginilor, majoritatea celorlalte funcții de prelucrare pot fi implementate soft.

Singurele motivații ce justifică, în anumite aplicații, implementarea hard a anumitor algoritmi sunt necesitatea asigurării unei viteze mari de prelucrare sau depășirea anumitor limitări fundamentale ale calculatoarelor. Spre exemplu, pentru prelucrarea imaginilor obținute în microscopia electronică, se impune reducerea zgomotului din imagini prin medierea acestora de-a lungul unui set de imagini și cu o viteză corespunzătoare ratei video (25 de cadre/secunda). Arhitectura magistralelor majorității calculatoarelor nu poate gestiona cantitatea de informație la rata de transfer cerută de această aplicație și, din această cauză, sistemele de prelucrare de imagini sunt, la ora actuală, combinații de calculatoare uzuale si plăci specializate de prelucrări hard, operațiile fiind supervizate de către pachetele de programe instalate pe calculator. Cu toate că există încă o piață importantă pentru sisteme de prelucrare de imagini foarte performante, pentru aplicații de mare anvergură cum ar fi prelucrarea imaginilor satelitare, tendința de miniaturizare și de combinare a calculatoarelor de uz general cu echipamente (plăci) specializate în prelucrarea hard a imaginilor câștigă din ce în ce mai mult teren. În particular, principalul echipament hard ce se adaugă la arhitectura clasică a PC-urilor constă într-o combinație de digitizor și registru de imagine (“frame buffer”), pentru digitizarea si stocarea temporară a imaginilor, o așa-numită unitate de procesare aritmetică/logică (ALU) utilizată pentru operațiile de tip aritmetic si logic în timpi comparabili cu ratele de transfer video și unul sau mai multe registre de imagine, pentru asigurarea unui acces rapid la date în timpul prelucrării.

Din punctul de vedere al programelor utilizate, pe piață este disponibil la ora actuală un număr semnificativ de asemenea programe de prelucrare. În combinație cu alte pachete de programe (de grafică computerizată, de exemplu) ele constituie un foarte util punct de plecare pentru soluționarea unor probleme specifice de prelucrare de imagini. Soluțiile obținute prin implementare soft sunt, ulterior, transferate (portate) pe plăci specializate de prelucrare hard pentru obținerea unei viteze superioare.

Prelucrările de imagini se caracterizează prin faptul că folosesc tehnici specifice; cu toate acestea, metode care duc la rezultate foarte bune in unele aplicații, sunt total inadecvate în altele. Ceea ce pune, de fapt, la dispoziție hard-ul și programele soft disponibile la ora actuală, este un punct de pornire în dezvoltarea unor aplicații specifice, care necesită însă o muncă de cercetare și dezvoltare foarte serioasă.

1.5 Transmisia imaginilor digitale

Problema comunicației în prelucrarea digitală de imagini (cu referire aici și la secretizarea de imagini statice) implică, pe de o parte, comunicarea locală între sisteme de prelucrare și comunicarea la distanțe mari, pe de altă parte. Hard-ul și soft-ul pentru comunicații locale este oferit, în general, de facilitățile rețelelor de calculatoare, cu toate că rata de transmisie necesară pentru imagini este mult mai mare decât pentru alte tipuri de transmisii de date.

Comunicarea la distanțe mari reprezintă, însă, și la ora actuală o problemă deschisă și eforturile ce se fac în acest sens din punctul de vedere al cercetării și dezvoltării sunt uriașe. Transmisia prin intermediul liniei telefonice a unei imagini de 512x5l2 pixeli pe 8 biți cu rata de 9600 biți/sec. ar necesita aproape patru minute. Folosirea transmisiei prin radiație, în radiofrecvență, permite obținerea de rate de transmisie mult mai mari, dar este și foarte scumpă. În sprijinul transmisiei de imagini cu o rată cât mai mare s-au dezvoltat tehnicile de compresie și decompresie a imaginilor, tehnici ce oferă soluții în acest domeniu.

1.6 Sisteme de calcul pentru prelucrarea imaginilor

Calculatoarele (platformele) folosite în general pentru prelucrarea digitală a imaginilor se împart în patru categorii: Apple Macintosh, echipate cu un sistem de operare și o interfață cu utilizatorul proprii, IBM-PC sau compatibile, utilizând ca sisteme de operare MS-DOS, PS/2, WINDOWS sau IBM/OS2, stații grafice, utilizând, în general, sisteme de operare UNIX sau XWINDOWS ori, în cazul unor aplicații mai pretențioase, sisteme de calculatoare foarte puternice ("mainframe"), cu resurse foarte mari și utilizatori multipli. Sistemele pot fi organizate ca rețele locale de calculatoare (LAN) sau pot accesa alte rețele la mare distantă (WAN).

1.7 Formate de imagine

Programele dedicate prelucrărilor de imagini implică manipularea unui număr mare de fișiere de imagine, de dimensiuni foarte mari. Acest lucru implică atât compresia cât și conversia acestor fișiere, întrucât adesea este necesar ca utilizatorii să schimbe date prin intermediul lor. Organizarea fișierelor de imagini se face în formate standard. Cele mai utilizate programe de prelucrări de imagini pot citi și salva imagini în câteva dintre formatele standard, iar altele pot să facă conversia dintr-un format în altul. Ele utilizează în general extensia fișierului pentru a recunoaște tipul formatului și pentru a ști cum anume să-l poată citi sau salva. Anumite tipuri de formate au fost impuse de-a lungul timpului de firmele producătoare de software sau de organisme de standardizare. Printre aceste formate se numără și: BMP, TIF, GIF, PCX, JPG, etc. Unele dintre cele mai utilizate formate standard sunt prezentate în tabelul 1.1. Majoritatea formatelor memorează un tabel adițional la datele de imagine, care include date importante referitor la crearea formatului respectiv.

TABEL 1.1 FORMATE DE IMAGINE STANDARD

Nume Siglă Utilizare

Tagged image file format *.TIF DOS,UNIX, și imagini sub Macintosh

Encapsulated PostScript *.EPS Format dedicat publicaților industriale

Graphical interchange format *.GIF Format grafic comprimat

Bit-Mapped format *.BMP Format realizat de Microsoft

Presentation manager *.BMP Format BitMap dedicat IBM OS/2

Macintosh *.PICT Pentru imagini Apple Macintosh

În cele ce urmează ne vom referi la formatele RAW (cunoscute și ca IMG) unul dintre cele mai rudimentare formate de fișiere imagine, și Windows Bitmap (BMP), al firmei Microsoft, care este unul dintre cele mai larg cunoscute formate de fișiere.

Un fișier RAW conține imagini indexate cu nivele de gri, de formă pătrată. Fișierul nu are antet (dimensiunile imaginii fiind deduse din dimensiunea fișierului ce o conține) și nu conține nici tabele de culoare (acesta are toate componentele liniei i egale între ele, reprezentând griuri). Fiecare pixel al imaginii este codat cu număr corespunzător de biți (4, 8, etc.); imaginea este baleiată în ordine normală (începând cu prima linie a imaginii, de la stânga la dreapta).

Un fișier BMP are trei componente consecutive: un antet de fișier (BITMAPFILEHEADER), o structură de informație a imaginii (BITMAPINFO) și codarea pixelilor. Antetul de fișier (BITMAPFILEHEADER) conține informații asupra tipului, dimensiunii și reprezentării fișierului Bitmap independent de dispozitiv (DIB – Device Independent Bitmap). Structura de informație a imaginii (BITMAPINFO) conține informații asupra dimensiunilor și culorilor unui DIB și este alcătuită din două componente: antetul structurii de informații (BITMAPINFOHEADER) și paleta de culori.

Dispozitivele de afișare monocrome folosesc convertoare digital/anologice de 8 biți/pixel, generând semnalul video care comandă strălucirea pixelilor afișați pe ecran. Pentru dispozitivele de afișare monocrome deci, numărul de nivele de gri este de maximum 256.

Dispozitivele de afișare în culori folosesc un triplet de 8 biți pentru cele trei culori fundamentale, convertorul furnizând trei semnale prin care se controlează atât strălucirea cât și crominanța imaginii afișate. Rezultă de aici posibilitatea unui număr de 16,7 milioane de culori. Datorită imperfecțiunii sistemului de afișare și limitărilor organului vizual uman, numărul culorilor ce pot fi distinse este considerabil mai mic.

Prelucrările de imagini nu implică doar sisteme de vizualizare color ci și rezoluții fotometrice diferite (numărul de nivele de gri sau de culori). Pentru imaginile monocrome, numărul nivelelor de gri este în general de 2, 16, sau 256, corespunzător unui număr de 1, 4 respectiv 8 biți/pixel. Evident, se pot folosi și rezoluții intermediare sau mai mari, dar cele prezentate se pretează cel mai bine împachetării în octeți (bytes).

Paleta de culori este un tabel cu tripleți RGB, care specifică culoarea fiecărui pixel afișat. O imagine color cu 4 biți/pixel, care utilizează 16 culori, va selecta dintr-o paletă de 16 milioane de culori doar cele 16 pe care le utilizează. O imagine cu 8 biți/pixel poate avea o paletă de 256 culori, valoarea fiecărui octet citit fiind un index în această paletă. Dacă se lucrează însă cu imagini de 24 biți/pixel, nu se mai poate selecta din spațiul culorilor o paletă, deoarece numărul de culori este egal cu număr maxim de culori ce pot fi definite. Paleta este, de obicei, inclusă în fișierul de date aferent unei imagini și controlează dispozitivul de afișare atunci când este vizualizată.

1.8 Eșantionarea și cuantizarea imaginilor

Pentru prelucrarea digitală a imaginilor cu ajutorul unui calculator și respectiv pentru secretizarea imaginilor statice avem nevoie de forma digitală a acestora, respectiv de o matrice compusă din "cuvinte" binare de dimensiuni finite. Pentru digitizare, imaginea se eșantionează cu ajutorul unei rețele discrete, iar fiecare eșantion (sau pixel), este cuantizat folosind un număr finit de biți. Pentru afișare, imaginea digitală se convertește din nou în formă analogică.

O metodă simplă de eșantionare este explorarea (scanarea) imaginii, linie după linie, și eșantionarea fiecărei linii. De exemplu, camera video cu tub vidicon sau având un dispozitiv videocaptor de tip CCD, face o asemenea scanare a imaginii chiar în procesul de captare. Alte tipuri de imagini, cum ar fi filmele, paginile tipărite sau pozele se scanează în mod analog, cu ajutorul unor echipamente numite scanere. În figura 1.2 este prezentat principiul de obținere a imaginilor digitale, precum și transformarea inversă în forma analogică.

Fig. 1.2. Eșantionarea, cuantizarea și redarea imaginilor

1.9 Îmbunătățirea imaginilor

Termenul de digital image processing, (prelucrare digitală a imaginilor) se referă la prelucrarea cu calculatorul a semnalului bidimensional de televiziune. Într-un context mai larg, se poate spune că el cuprinde orice tip de prelucrare a unor informații de tip bidimensional. Prelucrarea digitală a imaginilor are un spectru foarte larg de aplicații, între transmisia și memorarea de imagine pentru aplicații economice, procesarea medicală a imaginilor ("medical imaging”), prelucrarea imaginilor radar, sau sonar, inspecția automată a plachetelor echipate în industrie etc.

În cazul metodelor de îmbunătățire a imaginilor, scopul este accentuarea anumitor caracteristici pentru analiza sau redarea acestora. Tehnicile de îmbunătățire a imaginilor transformă un nivel de gri în alt nivel de gri după o anumită funcție, sau realizează operații de tip "fereastră" în imediata vecinătate a pixelului (transformări, convoluții, pseudocolorări, etc.).

Îmbunătățirea imaginilor se referă la punerea în evidență a unor caracteristici ale imaginii (contururi, contrast, etc), pentru a o face mai elocventă pentru diferite tipuri de aplicații. Metodele de îmbunătățire nu măresc conținutul de informații, dar măresc dinamica caracteristicilor alese, pentru a putea fi observate mai ușor. Dificultatea cea mai mare constă în alegerea criteriilor de îmbunătățire, motiv pentru care există o multitudine de tehnici empirice de îmbunătățire, majoritatea interactive.

Având în vedere utilitatea lor în practică, în toate aplicațiile legate de prelucrările digitale de imagini, aceste metode sunt foarte importante. Din punctul de vedere al algoritmilor utilizați pentru îmbunătățirea imaginii, se disting patru categorii mari de tehnici de îmbunătățire:

Operațiuni punctuale care cuprind: mărirea contrastului, atenuarea zgomotului, operațiuni de tip fereastră și modelarea imaginii prin histograme;

Operațiuni spațiale dintre care menționăm: curățarea de zgomot, filtrarea mediană, filtrarea trece-jos, trece-sus si trece-bandă și tehnica de "zooming" a imaginii;

Operațiuni de transformare a imaginilor, care cuprind: filtrarea liniară, filtrarea de tip radical sau filtrarea homomorfică;

Operatiuni de pseudocolorare între care se disting tehnicile de colorare falsă și pseudocolorare a imaginilor.

1.10 Compresia de imagini

Domeniul compresiei (codării) de imagini este legat de minimizarea numărului de biți necesari pentru a reface o imagine, cu aplicații în special în transmisia și, respectiv, stocarea imaginilor. Poate cea mai simplă modalitate de compresie a datelor o constituie eșantionarea imaginilor cu bandă de frecvență limitată, unde un număr infinit de pixeli pe unitatea de suprafață este redus la un singur eșantion, fără a se pierde informație (se presupune existența unui filtru trece-jos ideal la reconstrucția imaginii eșantionate). Aplicații ale compresiei de imagini se întâlnesc în primul rând în transmisia și stocarea (memorarea) de informații. Aplicațiile din domeniul transmisiilor de imagini se întâlnesc în televiziunea radiodifuzată, comunicațiile spațiale, radar și sonar, rețelele de telecomunicații, transmisii de facsimile (fax), teleconferințe, videofonie etc. Memorarea (stocarea) imaginilor este esențială în educație și afaceri, pentru păstrarea unor documente, în imagistica medicală (tomografia computerizată, imagistica bazată pe rezonanță magnetică, etc.), în tehnica video digitală, imagistica satelitară, ș.a. Compresia de imagini este utilă, de asemenea, în dezvoltarea unor algoritmi rapizi, în situațiile în care numărul de operații necesare pentru implementarea acestora se reduce mult prin folosirea datelor comprimate. Tipic, imaginile de televiziune având o rezoluție spațială de 512×512 pixeli/semicadru corespund unor "imagini digitale" – după conversie și cuantizare – conținând o cantitate imensă de informație. Considerând un canal de transmisie digitală color, cu 8 biți/pixel și cu 25 de cadre pe secundă, rezultă un debit binar de aproximativ 150-:-180 x 106 biți/secundă. Volumul de date poate varia, în funcție de aplicație, între 105-:-108 biți/semicadru sau chiar mai mult.

Conversia analog-digitală, la rândul ei, duce la creșterea corespunzătoare a benzii de frecvență necesare pentru transmisia semnalului digital. Dacă considerăm un semnal eșantionat cu fn=8 MHz și cuantizat cu 8 biți/eșantion va rezulta, în cazul unei transmisii de tip 2 DPSK (care are 2 biți/1 Hz de bandă ocupată), o lărgime de bandă de 32 MHz. Avantajele apărute prin conversie, cum ar fi flexibilitatea în prelucrare, imunitatea mai bună la perturbații, etc., se "plătesc" cu o bandă de frecvență sensibil mai mare la transmisie. Analog, în cazul memorării imaginilor sau secvențelor de imagini digitale, spațiul de memorie ocupat este foarte mare, chiar excesiv de mare, în cazul utilizării unor echipamente de calcul cu performanțe medii.

Metode de compresie

Prin analogie cu algoritmii folosiți în compresia datelor în general, metodele uzual folosite pentru reducerea cantității de informație prezente în imaginile digitale, metode numite de compresie sau de codare a imaginilor, se împart în două categorii: codare predictivă și codare prin transformări. Codarea predictivă exploatează redundanța existentă în imagine (legată de predictibilitate, aleatorizarea sau uniformitatea datelor), în vreme ce codarea prin transformări realizează modificarea structurii de date a imaginii într-o altă matrice, astfel încât o mare cantitate de informație este “împachetată" într-un număr mult mai mic de eșantioane. Alți algoritmi de compresie sunt generalizări sau combinații ale acestor două categorii. Este evident că în acest proces apar inevitabil distorsiuni, datorate conversiei A/D asociate inevitabil compresiei, precum și rejectării unor informații considerate ca relativ nesemnificative. Tehnicile eficiente de compresie tind să minimizeze aceste distorsiuni.

În tabelul 1.2 este prezentată o clasificare sintetică a tehnicilor de codare (compresie).

Tabelul 1.2. Tehnici de comprimare (codare) a datelor din imagini

În clasificarea tehnicilor uzuale de compresie (codare) a imaginilor din tabelul 1.2 lipsesc așa-zisele "metode fizice" de compresie, respectiv subeșantionarea, cuantizarea brută, repetarea cadrelor și întrețeserea linilor. Aceste metode se bazează pe reducerea frecvenței de eșantionare, a numărului de nivele de cuantizare și a frecvenței de eșantionare, respectiv a numărului de nivele de cuantizare și a frecvenței cadrelor, până la limitele distorsionării prin conturare, respectiv clipire (flickering) a imaginii.

Codarea imaginilor color și multispectrale

Tehnicile de compresie a imaginilor prezentate anterior se pot aplica, prin generalizare, la imagini color si multispectrale, conform fig. 1.3. Fiecare pixel este reprezentat de un vector pxl (de exemplu, în cazul imaginilor color, intrarea este un vector 3xl conținând componentele R,G,B). Acest vector este transformat într-un alt sistem de coordonate, unde fiecare componentă poate fi codată independent.

La codarea imaginilor color trebuie să se țină seama de particularitățile semnalelor de luminanță (Y) și crominanță (U și V in sistemul PAL): semnalul de luminanță are o bandă de frecvență mult mai mare, iar semnalele de crominanță se eșantionează cu frecvente mult mai mici (tipic, 1/3 din frecvența de eșantionare a semnalului de luminanță).

O altă metodă de codare a imaginilor color constă în procesarea semnalului videocomplex color. Metoda este utilă în aplicații de transmisie a imaginilor, acolo unde se dorește prelucrarea unui singur semnal. Datorită însă diferențelor de lărgime de bandă între componentele de luminanță și crominanță din semnal, metodele de codare a imaginilor monocrome prezentate anterior nu se pot aplica direct, în condiții de eficiență a codării.

Fig. 1.3. Codarea pe componente a imaginilor color

Ratele de transmisie a biților ce se pot obține prin codarea pe componente ajung, pentru semnalele de crominanță, la 0,5 biți/pixel (codare prin transformare adaptivă) sau 1 bit/pixel (codare DPCM). Datorită flexibilității mai mari de implementare a codoarelor, metodele de codare pe componente dau rezultate mai bune decât codarea SVCC și se presupune că se vor impune, mai ales în condițiile dezvoltării televiziunii digitale.

Imaginile multispectrale se codează, în general, prin transformarea temporală KL a datelor de intrare, în vederea obținerii componentelor principale. În continuare, fiecare componentă se codează cu ajutorul unui codor bidimensional. Alte metode de codare folosesc tehnici mai avansate cum ar fi folosirea wavelet sau teoriei fractalilor.

Standarde de compresie a imaginilor

CCITT și ISO colaborează pentru dezvoltarea celui mai popular standard de compresie, standardul JPEG (și anume compresia cadrelor). Standardul JPEG definește trei sisteme diferite de codare: (1) un sistem de codare de bază cu pierderi, care este bazat pe transformata DCT și este adecvat pentru o gamă largă de aplicații; (2) un sistem de codare extinsă pentru aplicațiile de precizie înaltă sau reconstrucție progresivă; și (3) un sistem de codare cu pierderi mai mici pentru compresia reversibilă. Pentru a fi compatibil JPEG, un produs sau un sistem trebuie să includă suportul pentru sistemul de bază. Nu se specifică un format anume, o rezoluție spațială sau un model color.

CAPITOLUL 2

Cerințele unui sistem

secretizat de comunicații

2.1 Vulnerabilitatea sistemului

Sistemele de comunicație sunt, în general, structuri deschise, la care se pot conecta un număr mare și variat de componente, asemănându-se, foarte mult din acest punct de vedere, cu rețelele de calculatoare. Complexitatea arhitecturală și distribuția topologică a sistemului conduce la o lărgire necontrolată a cercului utilizatorilor cu acces nemijlocit la resursele sistemului (inclusiv imagini statice). În continuare voi prezenta, în cazul general al unui sistem de comunicații, posibilele amenințări și modul cum acestea ar putea afecta securitatea sistemului, rezultând din această analiză cerințele care se impun unui sistem de comunicații secretizate.

În felul acesta, vulnerabilitatea sistemului se manifestă pe două planuri: pe de o parte, posibilitatea modificării sau distrugerii informației (conținute în imagini), adică atacul la integritatea lui fizică și, pe de altă parte, posibilitatea folosirii neautorizate a informațiilor, adică scurgerea lor din cercul (limitat) de utilizatori stabilit. Trebuie avute în vedere, cu prioritate, două aspecte legate de securitatea unui sistem:

Integritatea resurselor unui sistem, adică disponibilitatea lor indiferent de defectele de funcționare, hard sau soft, de încercările ilegale de sustragere a informațiilor, precum și de încercările de modificare a informațiilor;

Caracterul privat, adică dreptul individual de a controla sau influența ce informație, adresată unei anumite persoane, poate fi memorată în baze de date și cine are acces la aceste date.

Un sistem de comunicație sigur este acela în ale cărui componente (resurse și operații) se poate avea încredere, adică furnizarea unor servicii de calitate și corecte (care funcționează conform cerințelor și specificațiilor). Deoarece un sistem de comunicație este alcătuit din componente diferite, el reprezintă o zonă convenabilă pentru diferite atacuri sau operații ilegale, lucru care conduce la concluzia că protecția a devenit una dintre cerințele vitale care trebuie satisfăcută de către un sistem.

2.2 Categorii de atacuri asupra unui sistem de comunicații

Amenințările la adresa securității unui sistem de comunicații pot avea următoarele origini: dezastre sau calamități naturale (incendii, explozii, inundații, cutremure, etc.), defectări ale echipamentelor, greșeli umane de operare sau manipulare, fraude. Primele trei tipuri de amenințări sunt accidentale, în timp ce ultima este intenționată. Câteva studii de securitate a sistemelor de comunicații secretizate estimează că jumătate din costurile implicate de incidente sunt datorate acțiunilor voit distructive, un sfert dezastrelor accidentale și un sfert greșelilor umane. Acestea din urmă pot fi evitate sau, în cele din urmă, reparate printr-o mai bună aplicare a regulilor de securitate (salvări regulate a imaginilor, realizarea duplicatelor pentru datele importante, limitarea drepturilor de acces).

Amenințările datorate acțiunilor voite au ca suport faptul că, în general, un intrus se poate plasa în orice punct al unei rețele de comunicații, având ca obiectiv interceptarea traficului din acel sistem. În cadrul acestui tip de amenințări se disting două categorii principale de atacuri:

Atacuri pasive – sunt acelea în cadrul cărora intrusul observă informația ce trece prin “canal”, fără să interfereze cu fluxul sau conținutul informației. Ca urmare, se face doar analiza traficului, prin citirea identității părților care comunică și “învățând” lungimea și frecvența informațiilor vehiculate pe un anumit canal, chiar dacă conținutul acestora este neinteligibil. Atacurile pasive au următoarele caracteristici comune:

Nu cauzează pagube (nu se șterg sau se modifică informații);

Încalcă regulile de confidențialitate;

Obiectivul este de a “asculta” informațiile schimbate prin rețea;

Pot fi realizate printr-o varietate de metode, cum ar fi supravegherea legăturilor telefonice sau radio, explorarea radiațiilor electromagnetice emise, rutarea datelor prin noduri ale rețelei mai puțin protejate.

Atacuri active – sunt acelea în care intrusul se angajează fie în furtul datelor, fie în modificarea, reluarea sau inserarea de mesaje false. Aceasta înseamnă că el poate șterge, întârzia sau modifica mesaje, poate să facă inserarea unor mesaje false sau vechi, poate schimba ordinea mesajelor, fie pe o anumită direcție, fie pe ambele direcții ale unui canal de comunicație. Aceste atacuri sunt serioase deoarece modifică starea sistemelor de comunicații. Există următoarele tipuri de amenințări active:

Mascarada – este un tip de atac în care o entitate pretinde a fi o altă entitate. De exemplu, un utilizator încearcă să se substituie altuia sau un serviciu pretinde a fi un alt serviciu, în intenția de a lua date secrete (cheia algoritmului de criptare, parola, etc.). O “mascaradă” este însoțită, de regulă, de o altă amenințare activă, cum ar fi înlocuirea sau modificarea datelor;

Reluarea – se produce atunci când un mesaj sau o parte a acestuia este reluată (repetată), în intenția de a produce un efect neautorizat. De exemplu, este posibilă reutilizarea informației de autentificare a unui mesaj anterior;

Modificarea mesajelor – face ca datele mesajului să fie alterate prin modificare, inserare sau ștergere;

Refuzul serviciului – se produce când o entitate nu izbutește să îndeplinească propria funcție sau când face acțiuni care împiedică o altă identitate de la îndeplinirea propriei funcții;

Repudierea serviciului – se produce când o entitate refuză să recunoască un serviciu executat.

2.3 Abordarea securității sistemelor de comunicații

Având în vedere cele prezentate mai sus, vom considera un sistem de comunicații sigur dacă toate operațiile sale sunt întotdeauna executate conform unor reguli strict definite, ceea ce produce o protecție completă a entităților, resurselor și operațiilor. Această definiție este completă în sensul că ea nu trebuie să definească ce probleme (amenințări) pot apărea într-un sistem precum și în ce circumstanțe și ce componente ale sistemului sunt amenințate. Lista de amenințări constituie baza definirii cerințelor de securitate. Odată acestea recunoscute, trebuie elaborate regulile conform cărora să se controleze operațiile din sistem. Aceste reguli operaționale se numesc, în fapt, servicii de securitate, iar implementarea serviciilor se face prin protocoale de securitate, utilizând o mulțime de mecanisme de securitate proiectate conform setului de reguli definite. Pentru a defini un sistem sigur, trebuie elaborate:

lista cerințelor de securitate;

regulile de protecție și securitate;

mecanismele de securitate corespunzătoare celor de mai sus.

2.4 Cerințele în cazul transmiterii secretizate de imagini statice

Cerințele de securitate pentru un sistem de comunicație complet trebuie să aibă în vedere următoarele categorii de protecții:

Confidențialitatea – protejarea informației împotriva citirii sau copierii de către utilizatorii care nu au o autorizare explicită;

Integritatea datelor – protejarea informației împotriva ștergerii sau modificării făcute fără permisiunea proprietarului acesteia;

Disponibilitatea – protejează un serviciu astfel încât acesta să fie disponibil permanent și să nu poată fi inactivat fără autorizație din partea administratorului;

Controlul accesului – reglează accesul la sistem. Împiedică utilizatorii neautorizați să acceadă în sistem, periclitând integritatea resurselor și confidențialitatea informațiilor;

Auditul – chiar și utilizatorii autorizați pot face acțiuni eronate sau răuvoitoare care afectează sistemul. În astfel de cazuri administratorul trebuie să determine ce s-a întâmplat și care sunt daunele rezultate. Pentru acest scop, trebuie să existe înregistrări ale activității sistemului, care să identifice în egală măsură utilizatorii și acțiunile întreprinse.

Fiecare organizație atribuie importanță diferită acestor aspecte, în funcție de cerințele și obiectivele de securitate avute:

mediul bancar – integritatea și auditul sunt cele mai importante, pe plan imediat inferior fiind confidențialitatea și disponibilitatea;

domeniul militar, diplomatic sau guvernamental – confidențialitatea este pe prim plan, iar disponibilitatea mai la urmă;

mediul universitar – integritatea și diponibilitatea sunt cele mai importante.

În cazul sistemelor de comunicații complet secretizate, cerințele pe care trebuie să le satisfacă acestea rezolvă punctual problemele ridicate mai sus, dar în cazul particular al transmisiilor secretizate de imagini statice, cerințele actuale care se impun se referă la:

digitizarea imaginilor statice ca pas premergător altor operații de prelucrare (este nevoie de digitizare tocmai pentru că imaginile în formă analogică acceptă prelucrări reduse și greoaie în același timp);

compresia imaginilor statice prin intermediul algoritmilor complecși de compresie informațională (imaginile reprezintă cantități mari de date care, pentru a fi transmise într-un timp cât mai rapid, necesită o compresie prin care se reduce esențial “gabaritul”, în octeți, ocupat de acestea);

secretizarea propriu-zisă care constă în algoritmi specifici de prelucrare numerică în scopul protejării informației video față de accesul neautorizat.

CAPITOLUL 3

Metode analogice

de secretizare

Perioada actuală de dezvoltare a societății omenești numită adesea perioada “exploziei informaționale”, se caracterizează printr-o creștere deosebită a rolului informației în viața societății. Astăzi se constată mărirea permanentă a volumului și importanței informațiilor vehiculate printr-o mare diversitate de echipamente și medii de propagare. Pentru ca informația să poată fi stăpânită și transformată într-un instrument util și eficient în activitatea diverselor compartimente și sectoare de activitate ale societății este necesar să existe metode științifice și mijloace tehnice de formalizare, culegere, prelucrare, stocare și diseminare a acesteia. Întrucât informațiile transmise reprezintă pe de o parte rezultatul unui volum mare de muncă și a unor cheltuieli materiale, iar pe de altă parte sunt de o importanță deosebită pentru diverse sfere de activitate, a apărut necesitatea transmiterii acestora cu o adresare precisă și crearea unor bariere în jurul sistemului, menite să asigure închiderea tuturor canalelor potențiale de scurgere frauduloasă a informațiilor. Deși studiile și cercetările pe problemele protecției informației au început în deceniul șapte, unele finalizându-se cu rezultate promițătoare, timpul a arătat că aspectele care privesc acest domeniu sunt departe de a se fi soluționat pe deplin.

Anterior transmiterii digitale a informațiilor, transmisia secretizată a datelor se realiza prin intermediul sistemelor analogice de cifrare. Având în vedere faptul că din totdeauna s-a dorit creșterea vitezei de transmitere a informației, transmisiile video și implicit sistemele de secretizare a acestora s-au impus ca atare, dezvoltându-se foarte rapid. Sistemele de protecție specifice transmisiilor video sunt actualmente utilizate pe scară largă în transmisiile de televiziune prin satelit.

În continuare vor fi descrise cinci sisteme analogice de cifrare, larg răspândite în Europa și utilizate pentru protecția transmisiilor video, dar care se pretează foarte bine și la transmiterea imaginilor statice. Explicație: în cazul transmisiilor video, pe lângă cadre (acestea sunt imagini statice) se transmit și alte semnale necesare pentru refacerea corespunzătoare a imaginii la recepție (semnale de sincronizare și de stingere) cât și canalul de sunet; la transmisia imaginilor statice aceste semnale suplimentare dispar (de fapt se reduc mult ca număr) și deci sistemele analogice de cifrare folosite la transmisia video pot să fie utilizate și în cazul imaginilor statice.

3.1 Sistemul SAVE

Acest sistem este folosit de B.B.C. și a fost utilizat de defunctul post spaniol “Canal 10”. Criptarea implică inversarea semnalului video, reducerea nivelului acestuia cu 6 dB și adăugarea unui semnal de interferență cu frecvența de aproximativ 95 kHz.

SAVE este un sistem de criptare care are un coeficient de securitate destul de redus. O imagine criptată poate fi ușor refăcută prin simpla inversare a semnalului recepționat, amplificându-l cu 6 dB și filtrându-l de semnalul sinusoidal parazit. Dar această filtrare conduce la o pierdere sigură a performanțelor video. O metodă de decriptare cu rezultate superioare este prezentată în schema bloc din figura 3.1.

Fig. 3.1. Sistemul SAVE. Schema bloc de decodificare

Semnalul recepționat este aplicat mai întâi la intrarea unui amplificator video. Un detector sincron, ca parte componentă a unui circuit P.L.L., blochează un oscilator comandat în tensiune la apariția semnalului de interferență. Ieșirea oscilatorului este aplicată în antifază, dar la un nivel corect, la un amplificator sumator, simultan cu semnalul recepționat, amplificat și neinversat. La ieșirea amplificatorului sumator se obține semnalul video criptat.

3.2 Sistemul MATSUSHITA

Acest sistem este utilizat de Filmnet, un canal de film destinat pentru Țările de Jos și Scandinavia și, deși mai mult de 90% din filme sunt în limba engleză, are însă și o mare varietate de limbi disponibile pentru subtitrări pe teletext. Acest canal este emis acum la o putere medie pe satelitul Astra.

Metoda aceasta de criptare constă în inversarea alternativă a câmpurilor semnalului și schimbarea nivelului componentei continue a semnalului de clipire pentru a crește semnalele de sincronizare și de culoare în zona video activă. Această prelucrare inhibă cu mare eficacitate sincroseparatorul aparatelor de televiziune sau al videoricorderelor. Peste acest semnal se aplică o subpurtătoare cu frecvența de 7,56 MHz care este modulată în frecvență cu semnalul de clipire compus. O subpurtătoare suplimentară cu frecvența de 7,02 MHz este modulată cu informațiile de abonat pentru activarea sau inhibarea decoderelor abonaților înregistrați în funcție de diferitele nivele de subscripție.

Decodarea constă în refacerea informației video transmise prin restaurarea nivelului corect al componentei continue a semnalului de clipire și reinversarea alternativă a câmpurilor video. Acest semnal este ușor de obținut din informația de clipire de câmp. Un impuls existent în semnalul de clipire, la fiecare al patrulea câmp, activează blocul de inversare a câmpurilor pentru a fi sincronizate la polaritatea corectă.

O slăbiciune a acestui sistem este că informația de clipire trebuie să fie redundantă, putând fi ușor reconstruit semnalul criptat fără a fi necesară prezența unui receptor complex de subpurtătoare.

Fig. 3.2. Sistemul MATSUSHITA. Schema bloc de decodificare.

3.3 Sistemul LINE-SHIFTING

Acest sistem este utilizat de B.B.C. pentru transmisiunile terestre, la ore târzii în cursul nopții, adresate medicilor, de către Canal Plus în Franța și de către un mare număr de alte stații continentale. El constă în păstrarea nealterată a semnalelor de sincronizare și de culoare, dar întârziind în mod selectiv partea activă a semnalului video pe baza procedeului “linie cu linie”. Timpul de întârziere este selectabil între 900 nm și 1,8 μs. Întârzierea specifică este controlată la transmisie și recepție de către un algoritm predeterminat. Imaginea rezultată poate fi recunoscută (cu multă îngăduință), dar destul de distorsionată vizual. Criptarea acestui sistem este completată cu o codare audio, printr-o inversare de frecvență, utilizând tehnica benzii laterale unice cu purtătoare suprimată la 12,8kHz. Decodarea (fig. 3.3 și fig. 3.4) constă în întârzierea tuturor liniilor în același mod, aproximativ 1,8 μs, prin utilizarea unui algoritm de stocare (memorare) într-un EPROM din decodor și refacerea semnalului audio utilizând metoda detecției benzii laterale unice. Adresarea către EPROM pornește de la un numărător care utilizează frecvența liniilor ca tact propriu și care se sincronizează cu impulsurile de cadre.

Fig. 3.3. Sistemul LINE-SHIFTING.

Decodificatorul utilizat în transmisiile BBC

Fig. 3.4. Sistemul LINE-SHIFTING. Schema de decodificare

în cazul criptării semnalului audio

3.4 Sistemul CUT-AND-ROTATE

Acest sistem este propus de către Sky Television ca sistem Eurocrypt. El constă, în principal, în partiționarea liniei în două, trei sau mai multe segmente posibile și interschimbarea informației între aceste segmente. Cut-and-rotate este cu certitudine cel mai protejat sistem analogic de criptare, încă recomandabil pentru secretizarea transmisiilor video. Punctul sau punctele de tăiere pe linie, cât și ordinea de interschimbare sunt determinate de un algoritm memorat. Informația de bază pentru algoritm este memorată într-un “smart-card”, care se aseamănă cu o carte de credit, dar care are incluse memorie ROM, RAM și un procesor. Acest card va furniza informația controlată serial către un decoder și va fi schimbat la intervale scurte de timp în mod regulat.

3.5 Sistemul EUROCHYPHER

Accesul condiționat permite introducerea subscrierii și a serviciilor de televiziune de tipul “plătește pentru vizionare” (PPV – “pay-per-view”), care vor crește venitul provenit din tradiționalele taxe de publicitate. Pentru respectivul canal de televiziune, accesul condiționat simplifică de asemenea achiziționarea drepturilor de transmisie, din moment ce, regiunile și țările în care aceste programe vor fi disponibile sunt bine definite și delimitate. În momentul de față se crede cu tărie că succesul transmisiei satelitare, de bună calitate, poate fi atins numai cu ajutorul unui sistem de acces condiționat sigur și flexibil.

Era împotriva acestei doleanțe ca Eurocypher să fie divizat. Viitorul transmisiilor de televiziune prin intermediul sateliților stătea în formatul D-MAC de transmisie, care a fost dezvoltat pentru a se potrivi caracteristicilor unui canal de televiziune transmis prin satelit. D-MAC se potrivește ideal accesului condiționat din moment ce componentele audio și video sunt într-o formă care poate fi secretizată rapid pentru a le face neinteligibile unui receptor normal. În semnalul D-MAC există suficiente benzi de frecvență goale în care să se poată furniza semnale de autorizare care să permită unor receptoare specifice să descifreze semnalul transmis.

3.5.1 Accesul condiționat

Un sistem de acces condiționat poate fi considerat ca două procese separate. Primul proces constă în codificarea semnalul transmis. În acest caz, Eurocypher folosește tehnicile sumator modulo-2 din standardul D-MAC asupra unei secvențe pentru componentele de sunet și de semnalele de autorizare, și codarea cut-and-rotate pentru componenta video. Ambele metodele utilizează pentru cifrare secvențe generate de un generator de secvențe binare pseudo-aleatoare (PRBS), care este inițializat o dată la câteva secunde de un nou cuvânt de control. Acest cuvânt de control determină punctul de start al secvenței pseudo-aleatoare iar frecventa lui schimbare asigură faptul că semnalul de televiziune este cu adevărat protejat împotriva utilizării neautorizate.

Al doilea proces constă în furnizarea cuvintelor de control la receptoarele autorizate și este realizat cu ajutorul sistemului de acces condițional.

Cuvântul de control este trimis într-o secvență repetată de mesaje cunoscute sub denumirea de mesaje de verificare a privilegiului sau ECM-uri. Acestea sunt oferite prin intermediul unui serviciu special de date prin multiplexarea componentelor de sunet/autorizare ale semnalului D-MAC. Pentru a extrage cuvintele de control, receptorul trebuie să fie în posesia unei ierarhii de chei dintre care cea mai importantă este numită cheia de sesiune. Această cheie se schimbă o dată la câteva săptămâni, lucru care oferă suficient timp pentru ca următoarea cheie de sesiune să fie furnizată receptoarelor autorizate. Pentru a face aceasta, cheia de sesiune este obținută dintr-o cheie care este unică pentru fiecare receptor individual. Mesajul format în acest mod este inclus într-o altă secvență de mesaje, cunoscute sub numele de mesaje de management al privilegiului sau EMM-uri. Fiecărui receptor îi este trimis periodic un EMM conținând cheia de sesiune codată la rândul ei cu propria ei cheie unică. Cheile unice sunt programate în receptor la producerea acestora iar o listă cu identitățile tuturor receptoarelor și cheile lor unice este păstrată de o agenție autorizată.

La protecția acestei structuri de bază se adaugă noi atribute care asigură o securitate a sistemului mai bună și crește de asemenea flexibilitatea acestuia. Informații despre programul transmis sunt incluse în semnale ce acompaniază ECM. Acestea includ informații cum ar fi numele programului și cât timp va mai fi transmis, date despre accesul condiționat, informații descriptive asupra prețului programului respectiv (pentru cele cu PPV) sau informații despre nivelul de maturitate al conținutului programului.

3.5.2 Servicii suplimentare

Un semnal D-MAC poate purta un număr de servicii suplimentare televiziunii. Eurocypher poate oferi o cifrare independentă pentru aceste servicii prin intermediul secvențelor ECM paralele, purtând date despre accesul condiționat la aceste servicii.

EMM-urile conțin multe alte informații decât cele referitoare la accesul condiționat. Fiecare EMM este proiectat pentru un receptor specific și conține informații relevante pentru privitorul asociat acestui receptor. Acestea vor include detalii referitoare la diversele servicii la care privitorul are acces, poziția geografică a casei acestuia și posibilitatea unui semnal electronic de credit pentru sistemele PPV.

3.5.3 “Pay per view” (PPV)

Eurocypher permite două forme de operații PPV. Versiunea simplă cere privitorului să decidă în avans dacă să plătească sau nu pentru un anumit program. Acesta va fi cel mai adesea un eveniment sportiv internațional, cum ar fi un meci de fotbal sau de box. Comenzile pentru eveniment vor fi făcute prin telefon și cu câteva zile înainte ca evenimentul să fie transmis. Receptoarele individuale vor fi autorizate pentru vizionarea transmisiei prin intermediul unui EMM. Deși această metodă este practică numai pentru o audiență redusă, o grabă pentru abonare a mai multor privitori în ultima clipă ar bloca rapid sistemul de rezervare în avans.

O versiune mai sofisticată este impulsul “plătește pentru vizionare”, sau IPPV. Aici EMM-urile sunt folosite pentru transferarea creditului la o cutie de bani electronici aflată în receptorul Eurocypher. ECM-urile, pentru un eveniment PPV, oferă prețul de achiziție al programului. Detalii despre eveniment, prețul de achiziție și câți bani electronici mai sunt în cutie sunt afișate pe ecranul televizorului. Dacă privitorul dorește să cumpere programul, introduce un număr personal de identificare (PIN) prin intermediul telecomenzii unității de control. Acest lucru poate fi făcut la startul evenimentului sau puțin după începerea acestuia. Costul este scăzut din creditul total inițial. Atunci când creditul s-a consumat, privitorul trebuie să contacteze agenția autorizată și să aranjeze să-i fie trimis un nou EMM.

3.5.4 Blocajul geografic

Este posibil de a interzice accesul la un anumit program în funcție de poziția geografică a receptorului. Acest lucru este în avantajul celor care achiziționează drepturile de transmisie ale unui program, deoarece deținătorul acestor drepturi va fi sigur că evenimentul va putea fi vizionat numai în regiunile specificate (dorite) de el. O metodă de un rafinament și mai mare este posibilă prin blocarea unei arii în jurul locului unde are loc evenimentul transmis, așa încât, promovatorul poate vinde drepturile de televiziune cu siguranța că este singurul în măsură să facă acest lucru.

O altă caracteristică constă în capacitatea de a bloca anumite evenimente televizate, cum ar fi publicitatea într-o regiune unde acest lucru este de neacceptat. De-a lungul Europei, în funcție de o anumită țară, există legi restrictive care se aplică unor evenimente televizate cum ar fi: reclamele la tutun, alcool, contraceptive și publicitatea adresată direct copiilor.

Cerințele, pe care Europa la formulează în direcția calității și serviciilor, produc o creștere a complexității semnalelor pe care sistemul Eurocypher trebuie să le ofere. Acest lucru se observă în faptul că afișarea mesajului text pe ecranul unui receptor este realizată pentru diferite limbi și asta depinzând de țara în care se află receptorul. Prețurilor evenimentelor PPV li se pot adăuga simbolurile monedei respective (₤, Dm, Fr, etc.), în timp ce, afișarea timpului va ține cont de diferențele de timp între zone. Chiar și funcția de control parental poate să aibă afișat tipul programului într-o manieră identică cu cea a sistemului cinematografic din țara respectivă (exemplu: X, PG, U pentru Anglia).

EMM-urile trimise la privitori specifici au capacitatea de a controla autorizarea pentru un număr de 512 pachete de programe diferite. Un astfel de pachet poate să conțină programe de pe un canal particular sau de pe mai multe canale care să aibă în comun aceiași licență.

Sistemul Eurocrypt și sistemul Eurocypher sunt ultimele sisteme de acces condiționat utilizate de noile stații de transmisie, fiind de o complexitate descurajantă și cu o securitate aproape impenetrabilă.

CAPITOLUL 4

Criptografia și securitatea

sistemelor de comunicații

Prin digitizarea imaginilor, asupra acestora se pot realiza prelucrări numerice prin care metodele de secretizare să fie mai ușor de implementat (cost mai redus) și mai puternice (mai greu de "spart").

Criptografia este știința scrierilor secrete. Ea stă la baza multor servicii și mecanisme de securitate, folosind metode matematice pentru transformarea datelor, în intenția de a ascunde conținutul acestora sau de a le proteja împotriva modificării. Criptografia are o lungă istorie, confidențialitatea comunicării fiind o cerință a tuturor timpurilor. Dacă ar trebui să alegem un singur exemplu al criptografie “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ă, al substituției, s-a menținut nealterat aproape două milenii.

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). Două sunt elementele ce au marcat însă cotitura semnificativă în dezvoltarea metodelor criptografice.

Primul este legat de dezvoltarea sistemelor de comunicații și rețelelor de calculatoare, al căror stimulent extraordinar s-a manifestat atât 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 fonduri și a altor aplicații) cât și prin potențarea gamei de instrumente folosite efectiv în execuția algoritmilor de cifrare. Utilizarea calculatoarelor electronice a permis folosirea unor chei de dimensiuni mai mari, sporindu-se astfel rezistența la atacuri criptoanalitice. Când cheia secretă are o dimensiune convenabilă, și este suficient de frecvent schimbată, devine practic imposibilă spargerea cifrului, chiar dacă se cunoaște algoritmul de cifrare. Pe această idee se bazează și standardul american de cifrare a datelor – DES (Data Encryption Standard) –, larg utilizat de guvernul SUA și de diverse companii internaționale. Propus într-o formă inițială de IBM în 1975, DES a rezistat evaluării făcute de “spărgătorii de cifruri” de la US National Security Agency (NSA), care au recomandat doar reproiectarea anumitor componente (casete de substituție). DES a fost adoptat ca standard federal în 1977 și a fost folosit intens datorită performanțelor de viteză atinse la cifrare (peste 100 Mbps). Se știe însă că s-a reușit spargerea DES (este adevărat că pentru aceasta a fost folosit o mare cantitate de resurse de calcul), iar 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 aceasta.

Al doilea moment important în evoluția criptografiei moderne l-a constituit adoptarea unui principiu diferit de acela al cifrării simetrice. Whitfield Diffie și Martin Hellman, cercetători la Universitatea Stanford din California, prin articolul “New Directions in Criptography”, publicat în 1976 în revista “IEEE Transactions on Information Theory”, au pus bazele “criptografiei asimetrice” cu chei publice. În locul unei singure chei secrete, criptografia asimetrică folosește două chei diferite, una pentru cifrare, alta pentru descifrare. Deoarece este imposibilă deducerea unei chei din cealaltă, una din chei este făcută publică, fiind pusă la îndemâna oricui dorește să transmită un mesaj cifrat. Doar destinatarul, care deține cea de-a doua cheie, poate descifra și utiliza mesajul. Tehnica cheilor publice poate fi folosită și pentru autentificarea mesajelor, fapt care i-a sporit popularitatea. Nu este deci de mirare că guvernul SUA a inițiat adoptarea unui standard de semnătură digitală bazat pe conceptul de cheie publică. Acest demers a generat controverse, soldate chiar cu acuze între organizațiile implicate. Până în decembrie 1990, Institutul Național de Standarde și Tehnologie al SUA (NIST) recomanda pentru adoptare ca standard metoda RSA, prezentă deja în industrie. Dar nouă luni mai târziu, în august 1991, NIST a avansat un cu totul alt algoritm, bazat pe o metodă cu chei publice, publicată de Taher El Gamal în 1986. Noua propunere, denumită DSS (Digital Signature Standard), a fost dezvoltată de Agenția de Securitate Națională a SUA (NSA National Security Agency). Ea a dezamăgit însă, nu datorită performanțelor, ci “grație” autorului, care nu este doar proiectant, ci și spărgător de cifruri, ceea ce a stârnit, inevitabil, suspiciuni.

Un cifru se definește ca transformarea unui mesaj clar sau text clar în mesaj cifrat sau criptogramă. Procesul de transformare a textului clar în text cifrat se numește cifrare sau criptare, iar transformarea inversă, a criptogramei în text clar, are denumirea de descifrare sau decriptare. Atât cifrarea cât și descifrarea sunt controlate de către una sau mai multe chei criptografice. Criptanaliza studiază metodele de spargere a cifrurilor, adică de determinare a textului clar sau a cheii de cifrare din criptogramă.

Un sistem criptografic (criptosistem) este compus din:

M – text clar;

C – text cifrat;

2 funcții inverse E( ) și D( );

un algoritm care produce cheile Ke și Kd astfel încât:

Există două tipuri de sisteme criptografice:

simetrice (cu cheie secretă) care folosesc aceeași cheie, atât la cifrarea cât și la descifrarea mesajelor;

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

4.1 Algoritmi criptografici cu cheie secretă (simetrici)

În cazul sistemelor criptografice cu cheie secretă (simetrice) se folosește aceeași cheie, atât la cifrarea cât și la descifrarea mesajelor. Cheia este ținută secretă și folosită în comun de către emițător și receptor (vezi Figura 4.1).

Figura 4.1

Cifrarea simetrică

Definiție: un algoritm cu cheie secretă (simetric) este compus din două funcții E( ) și D( ), care utilizează chei caracterizate de următoarele proprietăți:

Ke=Kd=K;

Ke și Kd sunt secrete.

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 DES (Data Encryption Standard) sau IDEA (International Data Encryiption Algorithm).

Securitatea criptării simetrice depinde de protecția cheii; managementul acestora este un factor vital în securitatea datelor și cuprinde următoarele aspecte:

Generarea cheilor. Pot fi folosite, cu o tabelă de conversie, proceduri manuale (datul cu banul, aruncarea zarurilor), dar numai pentru generarea cheilor master (folosite pentru cifrarea cheilor). Pentru cheile de sesiune sau de terminal sunt necesare proceduri automate, de generare (pseudo)aleatoare, care se pot baza pe amplificatoare de zgomot, funcții matematice și diverși parametri (numărul curent al apelurilor sistem, data, ora etc.);

Distribuția cheilor. Cu privire la transportul cheii secrete, problema este în general rezolvată prin folosirea unei alte chei, numită cheie terminal, pentru a o cripta. Cheile de sesiune – generate numai pentru o comunicație – sunt transportate criptat cu cheile terminal care, de asemenea, pot fi protejate (când sunt memorate) cu altă cheie, numită cheie master;

Memorarea cheilor. Utilizarea algoritmilor simetrici, în cazul a N entități care doresc să comunice, implică N(N-1)/2 chei de memorat într-un mod sigur. În realitate, nu toate legăturile bidirecționale se stabilesc în același timp; este motivul pentru care se utilizează cheile de sesiune. Cheile terminal, care criptează numai date foarte scurte (chei de sesiune), sunt foarte dificil de atacat. Când sunt folosite chei publice, X.500 pare cea mai bună soluție pentru managementul cheilor. Cheile publice sunt păstrate în directoare X.500, ca certificate semnate cu o semnătură digitală a Autorității de certificare (Certificate Authority).

4.1.1 DES

Descrierea DES

Sistemul DES (Data Encryption Standard), cunoscut sub numele de DEA (Data Encryption Algorithm) de ANSI (American National Standard Institute) și sub numele de DEA-1 de ISO, este primul standard dedicat protecției criptografice a datelor pe calculator. A fost studiat de IBM începând cu 1970 pentru NBS (National Bureau of Standards). După câteva modificări realizate împreună de NBS și NSA (National Security Agency), a fost publicat ca FIPS PUB 46 (Federal Information Processing Standards Publication – 46) în 1977 și intitulat DES. Ulterior, a fost adoptat în 1981 de ANSI ca standard ANSI X3.92 și intitulat, așa cum am amintit, DEA. Există diferențe între standarde; de exemplu, FIPS autorizează numai implementare hard. DES este un cifru bloc, care criptează date în blocuri de 64 de biți. Un bloc de 64 de biți de text clar constituie date de intrare ale algoritmului, iar ca date de ieșire se obține un bloc de 64 de biți de text cifrat. Lungimea cheii este de 56 de biți (de obicei ea se exprimă ca un număr de 64 de biți, dar fiecare al optulea este utilizat pentru verificarea parității impare a octeților care formează cheia, reprezentând cei mai puțin semnificativi biți ai acestor octeți). Acești 56 de biți sunt generați aleator și pot fi modificați în orice moment. O serie de astfel de numere pot fi considerate chei slabe, dar ele pot fi ușor evitate. Această cheie este păstrată de către toți membrii unui grup de utilizatori care, astfel, pot cifra/descifra toate datele transmise de la unii la alții.

Figura 4.2

Sistemul de

cifrare DES

Privit în ansamblu, algoritmul nu este altceva decât o combinație a două tehnici elementare de criptare: “confuzie” și “difuzie”. Construcția fundamentală a unui bloc DES este o combinație unică a acestor două tehnici (o substituție urmată de o permutare) asupra textului, bazată pe cheie. Această construcție este cunoscută sub numele de rundă. DES este compus din 16 runde; acestea aplică aceeași combinație de tehnici asupra blocului de text clar de 16 ori (vezi Figura 4.2).

Prezentarea algoritmului

DES operează pe blocuri de text clar de 64 de biți. După o permutare inițială, blocurile sunt sparte în două jumătăți, dreaptă și stângă, fiecare de câte 32 de biți. Urmează apoi 16 runde de operații identice, numite funcții de cifrare f, în care datele sunt combinate cu cheia. După a șaisprezecea rundă, cele două jumătăți sunt recombinate, algoritmul încheindu-se cu o permutare finală, reprezentând inversa permutării inițiale.

În fiecare rundă (vezi figura 4.3), biții cheii sunt deplasați (șiftați), după care sunt aleși 48 de biți din cei 56 ai cheii. Jumătatea dreaptă a blocului de date este expandată la 48 de biți prin intermediul unei permutări expandate, apoi adunată modulo 2 cu 48 de biți de cheie deplasați și permutați, și aplicată la intrările a 8 cutii S, la ieșirea cărora se obțin 32 de biți noi, care sunt permutați din nou. Aceste 4 operații constituie funcția de cifrare f. Blocul de biți de la ieșirea funcției f este apoi combinat cu jumătătea stângă prin intermediul unei alte adunări modulo 2. Rezultatul acestor operații devine noua jumătate dreaptă. Această succesiune de operații este repetată de 16 ori, rezultând 16 runde ale algoritmului DES.

Figura 4.3

O rundă a algoritmului

DES

4.1.2 Variante DES

DES multiplu

Anumite implementări ale DES folosesc DES-triplu (vezi Figura 4.4). Deoarece DES nu are structură de grup, textul cifrat rezultat este mult mai greu de spart folosind căutarea exhaustivă: sunt necesare 2112 încercări în loc de 256.

Figura 4.4

Triplu DES

DES cu subchei independente

O altă variantă a DES este folosirea de subchei diferite pentru fiecare rundă, toate extrase din cheia principală și nu derivate din aceasta, ca în variantă clasică. Deoarece la fiecare din cele 16 runde se folosește o subcheie de 48 de biți, rezultă că vom avea o cheie de 768 de biți. Această variantă mărește semnificativ dificultatea unui atac obișnuit la 2768 încercări, făcându-l impracticabil.

DESX

DESX este o variantă de DES dezvoltată de RSA Data Security Inc. DESX utilizează o tehnică numită transparență. Pe lângă cheia de 56 de biți a DES-ului, DESX mai adaugă o cheie de 64 de biți, numită cheie transparentă. Acești 64 de biți sunt sumați modulo 2 cu textul clar înainte de începerea algoritmului DES propriu-zis. După ultima rundă a DES-ului, se face suma modulo 2 între rezultat și “cheia transparentă”. Astfel, DESX este mult mai rezistent decât DES la un atac obișnuit. Această variantă îmbunătățește securitatea la atacurile prin criptanaliză diferențială și liniară, fiind necesare 261 perechi alese de text clar.

DES generalizat (GDES)

GDES a fost proiectat deopotrivă pentru a mări viteza DES-ului și pentru a întări algoritmul. Dimensiunea blocului se mărește, în timp ce numărul de calcule rămâne constant.

Figura 4.5 prezintă diagrama bloc a algoritmului GDES. Această variantă operează cu blocuri de text clar de dimensiune variabilă. Blocurile de text clar sunt împărțite în q sub-blocuri de 32 de biți; q este egal cu raportul dintre dimensiunea blocului și 32.

Funcția f este calculată pentru fiecare rundă asupra blocului cel mai din dreapta. Rezultatul este însumat modulo 2 cu toate celelalte părți, care apoi sunt rotite la dreapta. GDES are un număr variabil de runde, n. Dacă se iau, de exemplu, q=2 și n=16, se obține DES.

Biham și Shamir 8 au arătat că, folosind criptanaliza diferențială, GDES cu q=8 și n=16 poate fi spart cu numai 6 perechi alese de text clar. Dacă se folosesc subchei independente, sunt necesare 16 perechi alese de text clar. Pentru q=8 și n=31, sunt necesare 500.000 de perechi alese de text clar. Chiar dacă q=8 și n=64, GDES oferă mai puțină securitate decât DES: sunt necesare 249 perechi alese de text clar pentru spargerea acestuia.

În concluzie, orice schemă GDES este mai rapidă decât DES, dar oferă mai puțină securitate decât DES.

Figura 4.5

DES generalizat

(GDES)

DES cu cutii S alternative

O serie de alte variante ale DES-ului, fie au construit cutii S variabile, fie au modificat cutiile S. Biham și Shamir au arătat că alegerea cutiilor S originale (ale standardului DES) nu a fost întâmplătoare: acestea au fost optimizate împotriva atacurilor care folosesc criptanaliza diferențială.

RDES

RDES este o variantă care înlocuiește inversarea celor două jumătăți, dreaptă și stângă, la sfârșitul fiecărei runde cu o inversare dependentă de cheie. Schimbările sunt prestabilite, depinzând numai de cheie. Aceasta înseamnă că cele 15 inversări dependente de cheie provin din 215 posibilități, și că varianta nu este rezistentă la criptanaliza diferențială. RDES are un mare număr de chei slabe. De fapt, aproape fiecare cheie este mai slabă decât o cheie a DES-ului clasic.

O idee mai bună este de a face inversări numai în jumătatea dreaptă, la începutul fiecărei runde. O altă idee mai bună este de a face inversări dependente de datele de intrare și nu de o funcție statică dependentă de cheie. Există un număr mare de variante posibile: RDES-1, RDES-2, RDES-3, RDES-4.

DES cu cutii S dependente de cheie

Criptanaliza liniară și diferențială funcționează doar dacă analistul cunoaște compunerea cutiilor S. Dacă cutiile S sunt dependente de cheie și sunt alese printr-o metodă criptografică puternică, atunci criptanaliza lininiară și cea diferențială sunt mult mai dificil de realizat. Totuși, aceste cutii S generate aleator au caracteristici liniare și diferențiale foarte slabe, chiar dacă ele sunt secrete.

Iată o metodă de a utiliza 48 de biți de cheie adiționali pentru a genera cutii S care să fie rezistente atât la criptanaliza diferențială cât și liniară :

Se rearanjează cutiile S ale DES-ului: 24673158;

Se selectează 16 biți din cei rămași din cheie. Dacă primul este 1, se inversează primele două linii ale cutiei S 1 cu ultimele două linii ale aceleiași cutii S. Dacă al doilea bit este 1, se inversează primele opt coloane ale cutiei S 1 cu ultimele opt. Se procedează la fel cu cutia S 2, utilizându-se al treilea și al patrulea bit, și așa mai departe până la cutia S 8;

Se iau cei 32 de biți care au mai rămas din cheie. Primii patru se adună modulo 2 cu fiecare element al cutiei S 1, următorii patru cu fiecare element al cutiei S 2 și așa mai departe.

Complexitatea unui atac prin criptanaliză diferențială împotriva acestui sistem este de 251; aceea a unui atac prin criptanaliză liniară este de 253. Complexitatea unei căutări exhaustive este de 2102.

Ce este interesant cu această variantă a DES-ului este că ea poate fi implementată în realizările hardware existente. Există distribuitori de componente care vând chip-uri DES, acestea având posibilitatea de a încărca cutii S. Metoda de generare a cutiilor S poate fi făcută în afara chip-ului, apoi aceste cutii S pot fi încărcate în circuit. Criptanaliza liniară și cea diferențială necesită prea multe texte clar cunoscute, de aceea devin inutilizabile în acest caz, iar un atac brut este inimaginabil.

4.1.3 IDEA ( International Data Encryption Algorithm )

Algoritmul IDEA a fost realizat în Elveția de Xuejia Lai și James Massey în 1990, fiind la ora actuală, unul dintre algoritmii criptografici simetrici cei mai siguri din lume. Inițial s-a numit PES (Proposed Encription Standard). Anul următor, după ce Eli Biham și Adi Shamir au introdus criptanaliza diferențială 8, autorii au întărit acest cifru împotriva atacurilor, numind noul algoritm IPES (Improuved Proposed Encription Standard). IPES și-a schimbat numele în IDEA (International Data Encryption Algorithm ) în 1992.

IDEA se bazează pe fundamente teoretice impresionante și, deși criptanaliza a făcut destule progrese, algoritmul rămâne în continuare puternic. Conform multor opinii 1, 2, acest algoritm este cel mai bun și mai sigur dintre cele disponibile publicului la momentul actual.

Viitorul lui IDEA nu este încă clar. Deocamdată nu există o grabă în a-l adopta ca înlocuitor al lui DES, pe de o parte datorită faptului că este patentat și este necesară o licență pentru aplicațiile comerciale, iar pe de altă parte datorită faptului că utilizatorii așteaptă în continuare să vadă modul în care algoritmul va face față dezvoltării criptanalizei.

Privire generală asupra IDEA

IDEA este un cifru bloc; el operează pe blocuri de 64 biți. Un bloc de 64 biți de text clar (plaintext) este transformat într-un bloc de 64 biți de text cifrat (ciphertext). Cheia este de 128 biți. Același algoritm este utilizat atât pentru criptare cât și pentru decriptare.

Ideea de proiectare a algoritmului IDEA este aceea de a “combina operațiile din diferite grupuri algebrice”. Există trei grupuri algebrice ale căror operații sunt combinate în IDEA și ele sunt simplu de implementat, atât hard, cât și soft:

XOR ;

Adunare modulo 216 (ignorând orice overflow);

Multiplicare modulo 216 – 1 (ignorând orice overflow). Această operație poate fi văzută ca o cutie S pentru IDEA.

Acestea sunt singurele operații folosite de algoritm; nu există permutări. Deoarece toate aceste operații sunt executate pe sub-blocuri de16 biți, acest algoritm este foarte eficient în implementările realizate cu procesoare pe 16 biți.

Descrierea algoritmului IDEA

Modul de operare a algoritmului este reprezentat în Figura 4.6. La intrarea în algoritm, blocurile de date de 64 biți sunt divizate în sub-blocuri de 16 biți, pe care le notăm cu X1, X2, X3 și X4. Aceste patru sub-blocuri împreună cu alte șase sub-blocuri de câte 16 biți din cheie, notate Z1,…, Z6, reprezintă intrarea pentru prima rundă a algoritmului. Există opt runde în total. În fiecare rundă, secvența operațiilor este după cum urmează:

(1) T1 = X1 Z1 : multiplicarea sub-blocului X1 cu prima subcheie

(2) T2 = X2+ Z2 : adunarea sub-blocului X2 cu a doua subcheie

(3) T3 = X3+ Z3 : adunarea sub-blocului X3 cu a treia subcheie

(4) T4 = X4 Z4 : multiplicarea sub-blocului X4 cu a patra subcheie

(5) T5 = T1 T3 : XOR între rezultatele de la pașii (1) și (3)

(6) T6 = T2 T4 : XOR între rezultatele de la pașii (2) și (4)

(7) T7 = T3 Z5 : multiplicarea rezultatului de la pasul (5) cu a cincea subcheie

(8) T8 = T6+ T7 : adunarea rezultatelor de la pașii (6) și (7)

(9) T9 = T8 Z6 : multiplicarea rezultatului de la pasul (8) cu a șasea subcheie

(10) T10= T7+ T9 : adunarea rezultatelor de la pașii (7) și (9)

(11) Y1 = T1 T9 : XOR între rezultatele de la pașii (1) și (9)

(12) Y2 = T3 T9 : XOR între rezultatele de la pașii (3) și (9)

(13) Y3 = T2 T10 : XOR între rezultatele de la pașii (2) și (10)

(14) Y4 = T4 T10 : XOR între rezultatele de la pașii (4) și (10)

Ieșirea unei runde este formată din ultimele patru sub-blocuri, rezultate în urma execuției ultimilor pași. Se inversează cele două blocuri interioare (cu excepția ultimei runde) și, ceea ce rezultă, este intrarea pentru runda următoare.

Figura 4.6

Cifrarea bloc

cu IDEA

După opt runde, iată care este transformarea finală de ieșire:

(1) Y1 = X1 Z1 : multiplicarea sub-blocului X1 cu prima subcheie

(2) Y2 = X2+ Z2 : adunarea sub-blocului X2 cu a doua subcheie

(3) Y3 = X3+ Z3 : adunarea sub-blocului X3 cu a treia subcheie

(4) Y4 = X4 Z4: multiplicarea sub-blocului X4 cu a patra subcheie

În final, cele patru sub-blocuri sunt concatenate pentru a produce blocul text cifrat.

Crearea sub-blocurilor de 16 biți din cheie este de asemenea ușoară. Algoritmul folosește 52 dintre ele (șase pentru fiecare dintre cele opt runde plus patru pentru transformarea finală). Într-o primă fază, cei 128 biți ai cheii sunt împărțiți în opt subchei de câte 16 biți. Primele șase subchei sunt utilizate în prima rundă, iar următoarele două subchei în runda a doua. După utilizarea ultimei subchei, cheia este rotită cu 25 biți spre stânga și din nou împărțită în opt subchei. Primele patru subchei sunt folosite în runda a doua, iar următoarele patru în runda a treia. Apoi, din nou, cheia este rotită cu 25 biți spre stânga și se obțin următoarele opt subchei ș.a.m.d. până la sfârșitul algoritmului.

Decriptarea se face la fel, cu diferența că unele blocuri din cheie (al doilea și al treilea) sunt inversele aditive, altele (primul și al patrulea) sunt inversele multiplicative, iar alte blocuri (al cincilea și al șaselea) nu sunt inversate. (Atenție! Inversul multiplicativ modulo 216+1 al lui 0 este 0.) Calcularea inverselor necesită un oarecare efort, dar trebuie făcută o singură dată pentru fiecare cheie. În Tabelul 4.1 sunt prezentate subcheile de criptare și subcheile de decriptare corespunzătoare.

Tabelul 4.1

Criptanaliza algoritmului IDEA

Lungimea cheii folosite de algoritmul IDEA este de 128 de biți – de peste două ori mai mare ca cea a DES-ului. Presupunând că un atac în forță este cel mai eficient, acesta ar necesita 2128 (1038) criptări pentru recuperarea cheii. Dacă s-ar proiecta un procesor care să poată testa un miliard de chei pe secundă și implicând un miliard de astfel de procesoare în rezolvarea acestei probleme, cercetarea tot ar dura 1013 ani (aceasta înseamnă mai mult decât vârsta Universului). Un șir de 1024 de astfel de procesoare poate determina cheia într-o zi, însă nu există suficienți atomi de siliciu în lume pentru a costrui o astfel de mașină.

Poate că atacul în forță nu este cel mai eficient mod de a ataca IDEA. Algoritmul este totuși prea nou pentru oricare rezultate existente în criptanaliză. Designerii au făcut tot posibilul pentru a face algoritmul imun la criptanaliza diferențială; ei au definit conceptul de cifru Markov și au arătat că rezistența la criptanaliza diferențială poate fi modelată și cuantificată. (Figura 4.7 arată algoritmul original PES în comparație cu algoritmul IDEA din Figura 4.6 care a fost fortificat împotriva criptanalizei diferențiale. Este uimitor cum câteva modificări subtile pot genera astfel de diferențe). Xueija Lai argumentează (remarcând evidențe, nu aducând dovezi) că IDEA este imun la criptanaliza diferențială după doar 4 runde din cele 8. De asemenea, conform celor spuse de Biham, atacul său asupra cheilor nu are efect asupra algoritmului IDEA. Willi Meier a examinat cele trei operații algebrice ale IDEA, remarcând că atâta timp cât acestea sunt incompatibile, există cazuri în care ele pot fi simplificate în așa fel încât să fie ușurată criptanaliza într-o oarecare măsură. Atacul său este mai eficient decât atacul în forță pentru runda a doua a algoritmului (242 operații), dar mai puțin eficient pentru a treia rundă sau mai departe. Algoritmul IDEA normal, cu 8 runde, este sigur.

Joan Daemen a descoperit o clasă de chei ineficiente pentru IDEA . Acestea nu sunt chei slabe în sensul cheilor slabe ale DES-ului; aceasta deoarece funcția de criptare este auto-inversabilă. Ele sunt slabe în sensul că dacă sunt utilizate, un criptanalist le poate identifica ușor. De exemplu, o cheie slabă este (în hexa):

0000,0000,0×00,0000,0000,000x,xxxx,x000

Numerele de pe poziția “x” pot lua orice valoare.

În orice caz, probabilitatea generării accidentale a unei astfel de chei slabe este foarte mică: una la 296. Nu există deci nici un pericol dacă se alege cheia aleator. Și este ușor de modificat IDEA astfel încât să nu mai aibă nici o chei slabă, prin aplicarea operației XOR fiecărei subchei cu valoarea 0x0dae.

Figura 4.7

Cifrarea bloc

cu PES

4.1.4 FEAL

Algoritmul FEAL a fost proiectat de Akihiro Shimizu și Shoji Miyaguchi de la NTT Japan. Utilizează blocuri de 64 de biți și o cheie de 64 de biți. Ideea de la care s-a pornit a fost de a crea un algoritm similar cu DES, dar cu o funcție de iterație mai puternică. Având nevoie de câteva iterații, algoritmul ar fi trebuit să fie mai rapid. Din nefericire, nu s-a realizat scopul propus. Figura 4.8 prezintă diagrama de lucru a algoritmului FEAL.

Procesul de criptare începe cu un bloc de 64 de biți de text clar. Întâi se realizează o operație XOR între blocul de date și cei 64 de biți ai cheii. În continuare, blocul de date rezultat este spart în două jumătăți: jumătatea stângă și jumătatea dreaptă. Jumătatea stângă ajută la formarea unei noi jumătăți drepte (prin însumare). Ambele jumătăți, stângă și dreaptă, trec prin mai multe iterații (patru, inițial). În fiecare iterație, jumătatea dreaptă este combinată cu 16 biți de cheie (utilizând funcția f) și se realizează funcția XOR cu jumătatea stângă, pentru a forma noua jumătate dreaptă. Valoarea originală a jumătății drepte (cea dinainte de iterație), prin XOR cu jumătatea stângă, devine noua jumătate stângă. După n runde cele 2 jumătăți vor fi concatenate, formând un bloc de 64 de biți. Blocul de date se face XOR cu 64 de biți de cheie și se obține rezultatul final al algoritmului.

Figura 4.8

O rundă FEAL

Funcția f amestecă cei 32 de biți de date ai jumătății stângi cu primii 16 biți ai cheii. Mai întâi blocul de date este spart în fragmente de 8 biți, apoi fragmentele se fac XOR și se substituie fiecare cu celelalte. Figura 4.9 este o diagramă bloc a funcției f.

Figura 4.9

Funcția f

Funcțiile S0 și S1 sunt definite astfel:

Același algoritm poate fi folosit pentru decriptare. Singura diferență este că, la decriptare, cheia se utilizează în ordine inversă.

Figura 4.10 este o diagramă bloc a funcției de generare a cheii. Mai întâi, cheia de 64 de biți este divizată în două jumătăți. Jumătățile sunt făcute XOR și li se aplică o funcție fk, așa cum se observă în figură. Figura 4.11 este o diagramă bloc a funcției fk. Cei 32 de biți de la intrare sunt sparți în blocuri de câte 8 biți, care se combină și se substituie ca în figură. Blocurile de 16 biți de cheie sunt apoi utilizate în algoritmul de criptare/decriptare.

Figura 4.10

Generarea cheilor FEAL

Figura 4.11

Funcția fk

4.1.5 RC2

RC2 este un algoritm de criptare cu mărime variabilă a cheii, proiectat de Ron Rivest pentru RSA Data Security Inc. Detalii despre acest algoritm nu au fost publicate. RC2 a apărut deja în diferite produse comerciale. Nu a fost patentat și este protejat doar ca produs comercial. Conform producătorului, implementarea software este de două ori mai rapidă decât DES. Algoritmul acceptă o mărime a cheii de la 0 octeți până la mărimea maximă acceptată de calculator. Viteza de criptare nu depinde de mărimea cheii. Cheia este procesată în avans, pentru a obține o tabelă dependentă de cheie de 128 de octeți. Astfel, numărul efectiv al cheilor diferite este de 21024. RC2 nu are cutii S; cele 2 operații folosite sunt “mix” și “mash”. La fiecare iterație, este aleasă câte una.

Conform literaturii publicate de către autor, RC2 nu este un algoritm de cifrare iterativ. Aceasta sugerează că RC2 oferă o protecție mai mare împotriva criptanalizei diferențiale și liniare decât alți algoritmi de criptare.

4.1.6 RC4

RC4 este un cifru bloc cu cheie de lungime variabilă dezvoltat în 1987 de Ron Rivest pentru RSA Data Security, Inc.

RC4 poate fi descris foarte simplu. Algoritmul funcționează în modul OFB: șirul cheie este independent de textul clar. Algoritmul are 1616 cutii S: S0, S1, …, S255. Elementele reprezintă o permutare a numerelor de la 0 la 255, iar permutarea se face după o funcție dependentă de cheia de lungime variabilă. Algoritmul folosește și două numărătoare, i și j, inițializate cu zero.

Pentru generarea unui octet aleator, se execută următoarele operații:

Octetul K este făcut XOR cu textul clar pentru obținerea textului cifrat sau făcut XOR cu textul cifrat pentru obținerea textului clar. Criptarea este rapidă – cam de 10 ori mai rapidă decât la DES.

Inițializarea cutiilor S este de asemenea ușoară. Mai întâi, se completează liniar: S0=0, S1=1, …, S255=255. Apoi se completează alt vector de 256 de octeți cu cheia, repetând cheia de câte ori este necesar pentru a completa tot vectorul: K0, K1, …, K255. Indicele j se setează cu zero. Apoi:

Acesta este tot algoritmul. RSADSI pretinde că acest algoritm este imun la criptanaliza diferențială și liniară. RC4 poate avea aproximativ 21700 (256!2562) stări posibile. Algoritmul este suficient de simplu pentru ca majoritatea programatorilor să-l implementeze rapid din memorie.

4.1.7 Blowfish

Blowfish este un algoritm proiectat de Bruce Schneier, proiectat pentru a fi implementat pe microprocesoare mai mari. Algoritmul este nepatentat, și a fost proiectat pentru a îndeplini următoarele criterii:

Să fie rapid. Blowfish criptează date pe procesoare de 32 de biți cu o viteză de 26 de cicluri de tact pe octet;

Să fie compact. Blowfish poate rula pe mai puțin de 5 KB de memorie;

Să fie simplu. Blowfish utilizeză numai operații simple: adunare, XOR și urmărire în tabele, toate pe operanzi de 32 de biți. Designul său este ușor de analizat, fapt ce îl face rezistent la erorile de implementare.

Să ofere securitate variabilă. Cheia algoritmului este variabilă, putând avea lungimi până la 448 biți.

Descrierea Blowfish

Blowfish este un cifru bloc care operează pe blocuri de 64 de biți, cu cheie de lungime variabilă. Algoritmul constă din două părți: expandarea cheii și criptarea datelor. Expandarea cheii convertește o cheie de până la 448 de biți în câteva șiruri subcheie totalizând 4168 de octeți.

Criptarea datelor constă într-o fucție simplă iterată de 16 ori. Fiecare rundă constă într-o permutare dependentă de cheie și o substituție dependentă de cheie și de informație. Toate operațiile sunt fie adunări, fie XOR pe cuvinte de 32 de biți.

Blowfish utilizează un număr mare de subchei. Aceste chei trebuie precalculate înainte de criptarea sau decriptarea datelor.

Vectorul P constă din 18 subchei de 32 de biți: .

Algoritmul folosește patru cutii S de 32 de biți, având 256 de elemente fiecare:

Metoda exactă de calcul al acestor subchei este descrisă la sfârșitul acestui subcapitol.

Figura 4.12

Algoritmul Blowfish

Blowfish are 16 runde. Ca intrare avem un bloc de date de 64 de biți, notat cu x. Pentru criptare, se execută:

Se împarte x în două jumătăți a câte 32 de biți: xL, xR

Pentru i=1 la 16:

Se schimbă xL și xR

Se schimbă xL și xR (se anulează ultima inversare)

Se recombină xL și xR.

Funcția F este după cum urmează (vezi Figura 4.13):

Se împarte xL în patru sferturi a câte 8 biți: a, b, c și d

Figura 4.13

Funcția F

Decriptarea se desfășoară întocmai ca și criptarea, cu excepția faptului că P1, P2, …, P18 se utilizează în ordine inversă.

Subcheile se calculează utilizându-se algoritmul Blowfish. Metoda exactă este următoarea:

Mai întâi se inițializează vectorul P și cele patru cutii S, în ordine, cu un șir fixat. Acest șir constă în biții care formează numărul , în reprezentare hexazecimală.

P1 se face XOR cu primii 32 biți ai cheii, P2 cu următorii 32 de biți ai cheii, și tot așa până la P18.

Se criptează un șir format numai din zerouri cu algoritmul Blowfish, utilizându-se subcheile descrise la pașii (1) și (2).

Se înlocuiesc P1 și P2 cu rezultatul pasului (3).

Se criptează rezultatul pasului (3) cu algoritmul Blowfish folosindu-se subcheile modificate;

Se înlocuiesc P3 și P4 cu rezultatul pasului (5).

Se continuă procesul, înlocuindu-se toate elementele din vectorul P, apoi toate cele patru cutii S, în ordine, cu rezultatul algoritmului Blowfish modificat continuu.

În total, sunt necesare 521 de iterații pentru generarea tuturor subcheilor necesare. Aplicațiile pot memora subcheile – nu este necesar să se execute acest proces de mai multe ori.

4.1.8 SAFER

Numele algoritmului SAFER K-64 vine de la Secure And Fast Encription Routine with a Key of 64 bits. Acest algoritm a fost proiectat de James Massey pentru Clinic Corp. Guvernul statului Singapore planifica să utilizeze acest algoritm – în varianta cu cheie de 128 de biți – pentru o mare varietate de aplicații. Nu există patent, copyright sau restricții pentru utilizarea acestui algoritm.

Descrierea algoritmului Safer K-64

Acest algoritm lucrează pe blocuri de 64 de biți, folosind o cheie tot de 64 de biți. Blocul de text clar este divizat în opt sub-blocuri de dimensiunea unui octet: B1, B2, …, B8. Apoi sub-blocurile se prelucrează în r runde. În sfârșit, se aplică o transformare sub-blocurilor. Fiecare rundă folosește două subchei: K2i-1 și K2i. Figura 4.14 prezintă o rundă a algoritmului. Mai întâi, sub-blocurile sunt fie adunate, fie făcute XOR cu biții subcheii K2i-1. Apoi, celor opt sub-blocuri li se aplică una din transformările neliniare:

Aceste operații sunt definite în câmpul finit GF(257), iar 45 este un element primitiv în acest câmp.

Figura 4.14

O rundă a

algoritmului SAFER

Apoi sub-blocurile sunt fie adunate, fie făcute XOR cu biții subcheii K2i. Rezultatul acestei operații este trcut prin trei operații liniare proiectate pentru a spori efectul de avalanșă. Aceste operații se numesc transformări pseudo-Hadamard (Pseudo-Hadamard Transformation – PHT). Dacă la intrarea unui bloc PHT avem a1 și a2, atunci la ieșire vom avea:

După r runde, are loc o transformare finală. Aceasta este aceeași ca la începutul fiecărei runde. B1, B4, B5 și B8 sunt făcuți XOR cu biții corespunzători ai ultimei subchei, iar B2, B3, B6 și B7 sunt adunați cu biții corespunzători ai aceleiași subchei. Rezultatul este chiar textul cifrat.

Decriptarea este procesul invers: transformarea inițială (cu scădere în loc de adunare), apoi r runde inversate. Transformarea PHT inversă (IPHT) este:

Massey recomandă 6 runde, dar numărul acesta poate fi crescut dacă se dorește o securitate mai mare.

Generarea subcheilor este ușoară. Prima subcheie, K1, este pur și simplu cheia utilizatorului. Celelalte subchei sunt generate astfel:

Simbolul “<<<” reprezintă o deplasare circulară spre stânga sau o rotație spre stânga. Rotația se face octet cu octet, iar ci este o constantă. Dacă cij este octetul cu numărul j din constanta ci, atunci cij se poate calcula cu formula:

În general, aceste valori sunt păstrate în tabele.

4.1.9 RC5

RC5 este un cifru bloc cu o varietate de parametri: dimensiunea blocului, dimensiunea cheii, și numărul de runde. A fost inventat de Ron Rivest și analizat de RSA Laboratories.

Sunt folosite trei operații: XOR, adunarea și rotația. Aceste rotații, care depind atât de chei cât și de informație, sunt niște operații foarte interesante.

RC5 operează cu blocuri de dimensiuni variabile, dar în acest exemplu ne vom axa asupra blocurilor de date de 64 de biți. Criptarea folosește 2r+2 cuvinte de 32 de biți, dependente de cheie: S0, S1, S2, …, S2r+1, unde r este numărul de runde. Pentru criptare, mai întâi se divite blocul de text clar în două cuvinte de 32 de biți: A și B (RC5 presupune convenția little-endian pentru împachetarea octeților în cuvinte: primul octet se stochează pe poziția celui mai puțin semnificativ byte în registrul A, etc.). Apoi:

Rezultatul se află în regiștrii A și B.

Decriptarea este la fel de ușoară. Blocul de text cifrat se divide în 2 cuvinte, A și B, apoi:

Simbolul “>>>” reprezintă o deplasare circulară spre dreapta. Bineînțeles, toate adunările și scăderile sunt modulo 232.

Crearea vectorului de chei este mai complicată. Mai întâi, se copiază biții cheii într-un vector, L, format din cuvinte de 32 de biți, dopând ultimul cuvânt cu zerouri, dacă este necesar. Apoi se inițializează un vector S, folosindu-se un generator liniar congruențial mod 232:

P=0xb7e15163 și Q=0x9e3779b9; aceste constante sunt reprezentările binare ale lui e și .

În sfârșit, L se amestecă în S:

RC5 reprezintă ede fapt o clasă de algoritmi. Aici am definit RC5 pentru cuvinte de 32 de biți și blocuri de 64 de biți; același algoritm îl putem folosi și pentru cuvinte de 64 de biți și blocuri de 128 de biți, de exemplu. Rivest a proiectat o implementare particulară a lui RC5 sub forma RC5-w/r/b, unde w este dimensiunea cuvântului, r este numărul de runde, iar b este lungimea cheii exprimată în biți.

4.2 Algoritmi criptografici cu cheie publică (asimetrici)

4.2.1 Cifrarea și semnarea cu chei publice

Un moment important în evoluția criptografiei moderne l-a constituit crearea, în anul 1976, de către Whitfield Diffie și Martin Hellman, cercetători la Universitatea Stanford din California, a unui principiu diferit de acela al cifrării simetrice. Ei au pus bazele criptografiei asimetrice cu chei publice. În locul unei singure chei secrete, criptografia asimetrică folosește două chei diferite, una pentru cifrare, alta pentru descifrare. Deoarece este imposibilă deducerea unei chei din cealaltă, una din chei este făcută publică, fiind pusă la dispoziția oricui dorește să transmită un mesaj cifrat. Doar destinatarul, care deține cea de-a doua cheie, poate descifra și utiliza mesajul. Tehnica cheilor publice poate fi folosită și pentru autentificarea mesajelor prin semnătură digitală, fapt care i-a sporit popularitatea.

Figura 4.15

Sisteme de cifrare

cu chei publice

În Figura 4.15 sunt prezentate două utilizări ale acstor tipuri de criptosisteme. Exemplul 1 arată cum se asigură confidențialitatea (secretul) unui mesaj. Pentru aceasta, mesajul este cifrat cu cheia publică a destinatarului, operație ce poate fi făcută de către orice persoană care poate accesa fișierul cu chei publice. Odată cifrat, mesajul nu va mai putea fi descifrat decât de către destinatar, singurul care posedă cheia secretă (privată), pereche a celei publice.

În exemplul 2 se prezintă o altă utilizare a sistemelor cu chei publice, semnătura digitală. Ea reprezintă un atribut al unui utilizator, fiind folosită pentru recunoașterea acestuia. Semnătura lui A trebuie să satisfacă următoarele proprietăți:

B să fie capabil să valideze semnătura lui A;

să fie imposibil pentru oricine, inclusiv B, să falsifice semnătura lui A;

în cazul în care A nu recunoaște semnarea unui mesaj M, trebuie să existe un “judecător” care să poată rezolva disputa dintre A și B.

Semnătura digitală rezolvă atât problema autentificării emițătorului cât și pe cea a autentificării datelor. Sistemele de autentificare cu chei publice permit o implementare simplă a semnăturilor digitale. Deoarece este deținută doar de A, cheia privată poate servi ca semnătură digitală pentru A. Receptorul B al mesajului M semnat este sigur atât de autenticitatea emițătorului, cât și de cea a datelor. Deoarece cheia pereche este publică, receptorul B va putea valida semnătura.

Cifrurile cu chei publice sunt folosite în general pentru:

cifrarea și distribuțua cheilor simetrice folosite în secretizarea mesajelor;

semnătura digitală asociată mesajelor;

Se încurajează folosirea sistemelor cu chei publice în distribuția cheilor, datorită ușutinței gestionării lor în comunitățile de utilizatori numeroase și foarte larg răspândite. Abordarea sistemelor cu chei publice se face utilizând conceptul de certificat, necesar pentru a exista certitudine asupra autenticității cheilor publice. Altfel, ar putea fi posibile anumite substituții de persoane.

În criptosistemele cu chei publice, fiecare utilizator A deține o transformare de cifrare publică (cheia publică), EA, care poate fi memorată într-un registru (fișier) public și o transformare de descifrare secretă (cheie privată sau secretă), DA, ce nu este posibil să fie obținută din EA. Cheia de descifrare (secretă) este derivată din cheia de cifrare (publică) printr-o transformare greu inversabilă (one-way). În sistemele cu chei publice, protecția și autentificarea sunt realizate prin transformări distincte. Să presupunem că utilizatorul (procesul) A dorește să emită un mesaj, M, unui alt utilizator (proces) B. Dacă A cunoaște transformarea publică EB, atunci A poate transmite M la B sub forma C=EB(M), asigurându-se astfel funcția de confidențialitate.

La recepție, B va descifra criptograma C utilizând transformarea secretă DB, cunoscută doar de el:

Schema nu furnizează facilități de autentificare, deoarece orice utilizator (proces) are acces la transformarea publică EB a lui B și îi poate transmite mesaje false M’ sub forma C’=EB(M’).

Pentru autentificare se aplică lui M transformarea secretă DA a lui A. Ignorând protecția pentru moment, A va emite C=DA(M) la B, care la recepție va aplica transformarea publică EA a lui A:

Autentificarea este realizată deoarece doar A poate aplica transformarea DA.

Protecția nu este asigurată, întrucât este posibil ca M să fie obținut de oricine, aplicând transformarea publică EA. Pentru a se realiza simultan confidențialitatea și autentificarea informațiilor, spațiul trebuie să fie echivalent spațiului , astfel încât orice pereche (EA, DA) să fie în măsură să opereze atât asupra textului clar, cât și asupra textului cifrat; în plus, se cere ca EA și DA să fie mutual inverse, adică:

Emițătorul de mesaj A va aplica mai întâi transformarea secretă a sa, DA, mesajului M. Apoi A va cifra rezultatul – utilizând transformarea publică a lui B, EB, și va emite către receptor criptograma:

Receptorul B obține mesajul M aplicând la început propria-i funcție de descifrare, DB, iar apoi transformarea publică a lui A, EA, cea care furnizează autentificarea:

Algoritmii de criptare cu cheie publică reprezintă o cripto-complexitate foarte mare, bazându-se în general pe operații cu întregi foarte mari (sute de cifre zecimale sau mii de biți). Acest lucru implică dificultăți importante în implementarea simulată a operațiilor frecvent folosite, cum ar fi înmulțiri, reduceri modulo, exponențieri, calcul de invers multiplicativ, c.m.m.d.c., operatori Jacobi, Legendre, teste de primaritate. Toate aceste probleme fac critic timpul de prelucrare al mesajelor prin algoritmi cu chei publice.

4.2.2 RSA

Acest cifru cu chei publice, realizat de trei cercetători de la Massachusetts Institute of Technology (fiind și numit după numele celor trei inventatori – Ron Rivest, Adi Shamir și Leonard Adleman), reprezintă standardul “de facto” în domeniul semnăturilor digitale și a confidențialității cu chei publice. El se bucură de o foarte mare apreciere, atât în mediul guvernamental, cât și în cel comercial, fiind susținut prin lucrări și studii de comunitatea academică. Sub diferite forme de implementare, prin programe sau dispozitive hardware speciale, RSA este astăzi cunoscută ca cea mai sigură metodă de cifrare și autentificare disponibilă comercial.

RSA este bazat pe cvasi-imposibilitatea actuală de a factoriza numere (întregi) mari, în timp ce a găsi numere prime mari este ușor; funcțiile de criptare/decriptare sunt exponențiale, unde exponentul este cheia și calculele se fac în inelul claselor de resturi modulo n.

Baza teoretică este teorema lui Fermat care stabilește că:

dacă p este un număr prim și dacă (X 0 mod p) atunci

Teorema are două proprietăți asociate:

dacă r-1 = k mod(p-1), atunci

dacă e*d-1 = k(p-1)(q-1), atunci

Prezentarea algoritmului

Fie p și q două numere prime mari (de exemplu de 100 cifre zecimale), distincte și aleatoare și fie n produsul lor:

care se numește modul.

Se calculează numărul:

denumit indicatorul lui Euler.

Se determină aleator un număr e relativ prim cu m și se calculează numărul d, astfel încât:

folosind în acest scop o versiune extinsă a algoritmului lui Euclid. Numărul e se numește exponent public, iar d (inversul multiplicativ modulo m al lui e) se numește exponent privat.

Cheia publică este constituită de perechea (e, n), iar cheia privată este constituită de perechea (d, n).

Cifrarea și descifrarea mesajelor

Fiecare utilizator A obține modulul nA și exponenții eA și dA. Apoi, A va înregistra într-un fișier public cheia publică (nA, eA), în timp ce va ține secret pe dA. Un alt utilizator, B, va putea emite un mesaj secret M utilizând transformarea de cifrare publică a lui A, adică ridicarea la puterea eA, modulo nA, a mesajului:

La recepție, A va obține mesajul în clar:

Semnarea documentelor și verificarea semnăturilor

Utilizatorul A va putea semna un mesaj M către B calculând:

iar B va autentifica acest mesaj, utilizând cheia publică a lui A:

Securitatea metodei depinde de dificultatea factorizării lui n în p și q. Rivest, Shamir și Adleman sugerează utilizarea unor numere prime p și q de 100 de cifre, adică a unui n de 200 de cifre zecimale, ceea ce cere pentru factorizare mai multe milioane de ani.

Iată un mic exemplu care ilustrează acest algoritm:

Fie p = 53 și q = 61 două numere prime; produsul acestor două numere ținute secrete este n = 5361 = 3233, iar m = (p-1)(q-1) = 5260 = 3120. Fie d = 791 cheia secretă; exponentul e (cheia publică) se calculează ca invers multiplicativ mod 3120 al lui d. Ca urmare rezultă e = 71.

Pentru a cifra mesajul M = Renaissance, acesta se va împărți în blocuri de 4 biți fiecare, unde A=00, B=01, C=02, …, Z=25 și blanc=26:

Primul bloc se va cifra ca etc.

Criptograma obținută va fi:

La descifrare, fiecare grup de două litere în clar se obține prin exponențiere, folosindu-se cheia secretă d: etc.

O serie de firme producă toare de sisteme de programe și echipamente, ca DEC, Lotus, Novell, Motorola, precum și o serie de instituții importante (Departamentul Apărării din SUA, National Aeronautics – SUA, Boeing, rețeaua bancară internațională SWIFT, guvernul Belgiei etc.), folosesc acest algoritm pentru protejarea și autentificarea datelor, parolelor, fișierelor, documentelor memorate sau transmise prin rețele.

4.2.3 DH (Diffie – Hellman)

DH este un protocol destinat stabilirii de comun acord, între doi corespondenți A și B, a unei chei de sesiune KAB (secret comun), A folosind informația secretă xA, iar B pe xB. De asemenea, există un număr întreg prim mare p și un element a primitiv modulo p. A va calcula

și va trimite la B pe yA. Similar, B va emite la A:

Ca urmare, fiecare poate acum calcula cheia secretă comună:

Dacă A și B pot calcula pe KAB, un observator neautorizat nu va putea deoarece va trebui să calculeze logaritmi în câmpuri Galois mari.

Pentru ca A să transmită un mesaj m cifrat la B, 0 m p-1, A va putea alege un K0, p-1 care va servi drept cheie secretă xA. El va calcula apoi cheia:

unde YB a fost obținut direct de la B sau dintr-un fișier de chei publice. A va putea emite la B perechea (c1c2), unde:

Descifrarea se face și ea în două etape: mai întâi se obține KAB:

Apoi, se obține mesajul în clar m prin împărțirea lui c2 la KAB.

4.2.4 El Gamal

Metoda de semnătură

El Gamal propune o nouă metodă de semnătură bazată pe schema de distribuție a cheilor a lui Diffie și Hellman.

Fie m un document semnat, 0 m (p-1). Fișierul public va conține cheia y = ax mod p pentru fiecare utilizator. Pentru a semna un document, A va folosi cheia sa secretă xA într-o astfel de manieră încât semnătura sa poate fi verificată de orice alt utilizator pe baza cheii publice yA.

Procedura de semnare

Se alege aleator un întreg k, k0, p-1, astfel ca:

Se calculează:

Semnătura lui m este perechea (r, s), 0 r, s p-1, care satisface ecuația:

Acum, (*) se poate scrie:

prin rezolvarea ecuației:

care are soluție dacă se respectă condiția (a).

Verificarea semnăturii

Fiind dați m, r, s, este ușor să se verifice autenticitatea semnăturii calculând

și

și verificând dacă sunt egale. Este indicat ca valoarea lui k aleasă aleator să fie folosită o singură dată. Se poate folosi, în acest scop, un generator de k bazat pe un model DES (generator cu contor).

În implementările concrete se folosește următoarea schemă El Gamal:

cheia publică: , unde

a – este o constantă a sistemului cunoscută de către toți partenerii;

n – este un număr prim.

cheia secretă: dA, un număr natural.

Semnarea unui mesaj M se face după următorul algoritm:

se generează aleator K0, n-1, astfel încât c.m.m.d.c(K, n-1)=1

se calculează

se calculează a2 din ecuația:

Ca urmare, semnătura lui M este reprezentată de perechea:

Verificarea semnăturii se face calculând separat:

și

și comparându-le dacă sunt egale.

Să considerăm un exemplu numeric. Fie n=467 și a=2. Vom alege cheia secretă a utilizatorului dA = 127.

Se calculează cheia publică eA:

Să presupunem că utilizatorul A dorește transmiterea mesajului M =100 la destinatarul B. A alege aleator un K, de exemplu K = 213, c.m.m.d.c (213,466)=1 și . Se calculează semnătura:

și

La recepție, B va folosi cheia publică a emițătorului pentru verificarea semnăturii (29,51):

Ca urmare, semnătura este validă.

Metoda de cifrare

Algoritmul de cifrare folosește aceiași parametri ca și semnătura:

Cifrarea unui mesaj, adresat unui utilizator A, se face folosind cheia publică a lui A, eA. Criptograma este perechea (a1, a2):

unde, după alegerea unui K aleatoriu, avem:

și

Descifrarea, la recepție, se face folosind cheia secretă dA a receptorului A:

Iată un exemplu de cifrare/descifrare a unui mesaj. Fie n = 2579 și a = 2. Vom alege cheia secretă a utilizatorului dA = 766.

Se calculează cheia publică eA:

.

Să presupunăm că utilizatorul B dorește transmiterea mesajului M = 1299 cifrat la destinatarul A. B va alege aleator un K, de exemplu K = 853. Calculul criptogramei este următorul:

și

La recepție, A va folosi cheia sa secretă pentru decriptarea criptogramei (435, 2396):

4.2.5 DSS (Digital Signature Standard)

DSA (Digital Signature Algorithm) este algoritmul de semnătură digitală al standardului DSS, elaborat de NIST (National Institute of Standards & Technology) la 30 august 1991. Este un standard foarte controversat în literatura de specialitate, deoarece este destinat să înlocuiască standardul “de facto” al domeniului, RSA. Se bazează pe un aparat matematic derivat din metoda El Gamal, întemeindu-și tăria criptografică tot pe problema dificultății calculului logaritmilor în câmp finit. În continuare sunt prezentate caracteristicile cifrului DSA.

Parametrii sistemului

Parametri globali

p – număr prim, p în (2511; 2512) – 512 biți

q – un divizor prim al lui (p-1) – 160 biți, q în (2159; 2160)

g – un întreg cu proprietatea:

unde h este un întreg relativ prim cu p, h, în (0; p), astfel încât:

H – funcție hash.

Parametrii utilizatorului

x – un întreg, x în (0; q) – cheia secretă

y – un întreg, – cheia publică

Parametrii semnăturii

M – mesajul ce va fi semnat

k – un întreg aleatoriu, k în (0; q)

Semnarea unui mesaj

Semnătura digitală a unui mesaj M este perechea (r, s)

se alege un întreg k în (0; q), prim cu q

se calculează

Pe etape:

Se setează

Se setează

Se calculează

Se calculează

Se calculează

La recepție se primesc M’, r’, s’.

Verificarea semnăturii unui mesaj

se calculează

semnătura este validă dacă se verifică ecuația:

Verificarea semnăturii are, ca urmare, următorii pași și variabile intermediare:

Dacă (r 0 sau r q) sau (s 0 sau s q), semnătura este invalidă

dacă v = r, atunci semnătura este OK.

Exemplu numeric

Fie q = 101 și p = 78q+1 = 7879

întrucât 3 este rădăcină primitivă a lui Z7879, se poate lua:

Fie x cheia secretă a utilizatorului, x = 76. Vom avea cheia publică pereche:

Să presupunem că emițătorul i, cel care deține cheia secretă x, vrea să semneze un mesaj M = 1234, pe care îl trimite destinatarului B. A alege constanta k = 50 drept parametru al semnăturii și calculează:

Cele două compenente (r, s) ale semnăturii sunt calculate astfel:

Semnătura mesajului M = 1234, perechea (94,97), recepționată de destinatarul B, va fi verificată cu ajutorul cheii publice a lui A:

Se calculează:

și, în sfârșit, verificarea:

Deoarece r’ = r, semnătura este validă.

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

a fost elaborat de NIST fără nici o consultare prealabilă a industriei americane;

fixarea modulului la doar 512 biți (ulterior, NIST a revenit asupra standardului, permițând module până la 1024 biți);

timpul de semnătură este mult mai scurt decât cel de verificare, spre deosebire de RSA, unde verificarea este mult mai rapidă decât semnătura; aici contează faptul că un mesaj este semnat o singură dată și este verificat de mai multe ori, de către diferiți receptori și, de obicei, verificarea semnăturii se face cu resurse de calcul limitate (de multe ori doar cu un smartcard).

4.2.6 Cifruri bazate pe curbe eliptice (ECC)

Folosirea curbelor eliptice în criptografie a fost propusă pentru prima oară în 1985 de Victor Miller, cercetător în matematică la IBM și, independent, de Neal Kobitz, profesor de matematică la Universitatea din Washington. Ideea de bază era folosirea grupului punctelor de pe o curbă eliptică în locul grupului din sistemele criptografice existente.

La momentul descoperirii lor, sistemele bazate pe curbe eliptice au fost considerate nepractice. De atunci însă, s-a întreprins asupra lor o cercetare aprofundată și intensă. Securitatea sistemelor bazate pe curbe eliptice a fost studiată de-a lungul a 12 ani de diferiți cercetători.

Recent, curbele eliptice au fost folosite pentru conceperea unor algoritmi eficienți de factorizare a întregilor și pentru demonstrarea primarității. Ele au fost utilizate în construirea criptosistemelor cu chei publice, în construirea generatoarelor de biți pseudoaleatoare și a permutărilor neinversabile. Curbele eliptice și-au găsit aplicabilitate și în teoria codurilor, unde au fost întrebuințate pentru obținerea unor coduri protectoare de erori, foarte bune.

Recentele progrese făcute în factorizarea întregilor și în procesarea paralelă au dat naștere la necesitatea unor chei din ce în ce mai mari pentru sistemele de criptare cu chei publice. Însă creșterea dimensiunilor cheilor va face aceste sisteme cu chei publice mai lente decât sunt la nivelul actual. Folosirea ECC permite creșterea securității, scăzând în același timp supraîncărcarea și timpul de latență.

Servicii de securitate oferite

ECC pot fi folosite pentru a furniza următoarele servicii de securitate:

confidențialitate;

autentificarea entităților;

integritatea datelor;

nerepudiere;

schimb de chei autentificat.

Securitatea ECC constă în dificultatea calcului logaritmilor în câmpuri discrete (problema logaritmilor discreți): date fiind A (un element dintr-un câmp finit) și Ax, este practic imposibil să se calculeze x, atunci când elementele sunt suficient de mari. De fapt, există o mulțime de sisteme criptografice ce se bazează pe problema logaritmilor discreți în : El Gamal, algoritmul de semnătură Schnorr, algoritmul de semnătură Nyberg-Rueppel, DSA. În mod clasic, aceste sisteme au fost definite în grupul multiplicativ . Ele pot fi însă definite la fel de bine în orice alt grup finit, cum ar fi grupul punctelor de pe o curbă eliptică. Curbele eliptice sunt benefice în aplicații în care:

puterea de calcul este limitată (cartele inteligente, dispozitive fără fir, plăci PC);

spațiul pe circuit integrat este limitat (cartele inteligente, dispozitive fără fir, plăci PC);

este necesară viteză mare de calcul; se folosește intens semnarea și verificarea semnăturii;

mesajele semnate trebuie memorate sau transmise;

lățimea de bandă este limitată (comunicații mobile, anumite rețele de calculatoare).

Avantajele curbelor eliptice

Dintre avantajele ECC pot fi menționate:

securitate crescută: tăria criptografică per bit este mult mai mare decât a oricărui sistem de criptare cu chei publice cunoscut la ora actuală;

economii substanțiale față de alte sisteme la calcule, lărgimea de bandă și necesitățile de memorare;

lărgime de bandă redusă datorită semnăturilor și certificatelor de dimensiune mică;

viteză mare de criptare și semnare atât în implementările software, cât și în cele hardware;

sunt ideale pentru implementările pe hardware de dimensiuni reduse (cum ar fi cartelele inteligente);

criptarea și semnarea pot fi efectuate în etape separate, ceea ce simplifică problema exportului.

Studiile intense efectuate asupra securității criptosistemelor cu chei publice, bazate pe punctele de pe o curbă eliptică, au demonstrat că aceste sisteme sunt adecvate marii majorități a aplicațiilor. Un ECC lucrând cu chei de 160 de biți furnizează un nivel de securitate echivalent cu un sistem bazat pe câmpul Zp pe 1024 de biți. Din acest motiv, ECC furnizează o modalitate fezabilă de implementare a unui sistem de securitate de nivel înalt pe o cartelă PC (PC card), pe o cartelă inteligentă sau pe dispozitivul de comunicații mobile.

Descrierea algoritmului

Curbele eliptice sunt construcții matematice. O curbă eliptică poate fi definită peste orice câmp (de numere reale, raționale sau complexe), însă cele folosite în criptografie sunt definite, în general, peste câmpuri finite.

O curbă eliptică, E, constă din elemente (numite puncte) de tipul (x, y) ce satisfac ecuația:

(unde a și b Zp sunt constante, astfel încât , iar p este un număr prim) împreună cu un element singular, notat O și numit “punctul de la infinit”. Acest punct poate fi privit intuitiv ca fiind punctul din vârful și de la baza oricărei linii verticale.

O curbă eliptică E are o structură de grup abelian împreună cu adunarea. Adunarea a două puncte de pe o curbă eliptică este definită în concordanță cu o mulțime simplă de reguli ( a se vedea Figura 4.20 în care P3=P1+P2).

Figura 4.16

Operația de adunare

pe o curbã elipticã

Fiind date două puncte pe E, P1(x1, y1) și P2(x2, y2), avem următoarele cazuri:

dacă x2 = x1 și y2 = -y1 atunci P1+P2= 0

altfel P1+P2= (x3, y3), unde:

Operația de adunare pe o curbă eliptică este corespondența operației de înmulțire în sistemele cu chei publice obișnuite, iar adunarea multiplă este corespondența exponențierii modulare din acestea.

Deși regulile de calcul în grupul punctelor unei curbe eliptice par destul de complicate, aritmetica acestora poate fi implementată extrem de eficient, calculele în acest grup fiind realizate mult mai rapid decât cele din grupul Zp .

Exemplu numeric

Fie curba eliptică E: pe Z11. Să calculăm mai întâi punctele lui E: pentru orice xZ11, se calculează . Se testează dacă z este un rest pătratic (pentru un x dat) folosind criteriul lui Euler. Aplicând formula de calcul al rădăcinilor pătrate ale unui rest pătratic modulo p se obține:

Tabelul 4.12 ilustrează calculul punctelor curbei eliptice E.

Deci, curba eliptică E admite 13 puncte. Ordinul grupului este prim, deci grupul este ciclic. Presupunem că se ia =(2,7) generator al grupului. Se pot calcula multiplii lui (care sunt puteri ale lui , deoarece grupul este aditiv). Pentru a calcula 2=(2,7)+(2,7) se calculează mai întâi:

Atunci, avem și

În acelați mod se calculează următorii multipli, obținând:

Se observă că ales mai sus este cu adevărat un generator al grupului.

Să studiem, în continuare, un exemplu de criptare El Gamal pe curba eliptică din exemplul anterior:

Presupunem = (2,7) și fie exponentul secret dA = 7. Avem = 7 = (7,2).

Criptarea textului clar x cu cheia k se face astfel:

unde 0 k 12 și xE

Operația de decriptare se desfășoară astfel:

Să presupunem că utilizatorul A vrea să cifreze mesajul x = (10,9) (care este un punct de pe E) spre a-l trimite utilizatorului B. Pentru aceasta, el alege valoarea aleatoare k = 3 și calculează:

și

Deci textul cifrat este y = ((8,3), (10,2)).

La recepție, utilizatorul B descifrează mesajul în următorul mod:

Ca urmare, s-a găsit textul clar original.

Corespondența problemei logaritmilor discreți la curbele eliptice este problema logaritmilor pe curbele eliptice, definită după cum urmează: fiind dat un punct G pe o curbă eliptică, de ordin r (numărul de puncte de pe curbă) și un alt punct Y, să se găsească un punct unic x (0 x r-1) astfel încât Y = xG, adică Y este x-multiplu de G.

Cele mai bune atacuri asupra problemelor logaritmilor pe curbe eliptice sunt metodele general aplicabile oricărui grup, ceea ce făcea ca acestea să fie deosebit de ineficiente pe un anumit caz particular. Datorită lipsei metodelor de atac specializate, ECC, folosind chei de dimensiuni reduse, oferă aceeași securitate ca și criptosistemele bazate pe problema logaritmilor discreți ce folosesc chei foarte mari.

CAPITOLUL 5

Succesiunile aleatoare și

utilizarea acestora în criptografie

5.1 Introducere

Cel mai simplu și sigur sistem criptografic este, fără îndoială, banda aleatoare cu o singură utilizare, la care cheia secretă este o secvență lungă de biți aleși în mod cu totul întâmplător. Textul clar este cifrat prin însumarea modulo 2 a simbolurilor cu un segment inițial al cheii, iar criptograma este descifrată prin însumarea modulo 2 cu același segment al cheii. Fiecare segment este șters după o singură utilizare, astfel încât cheia se consumă în mod treptat.

Fără a cunoaște segmentul corespunzător cheii, criptanalistul nu poate determina textul clar; astfel sistemul este sigur atât din punct de vedere teoretic, cât și din punct de vedere practic.

Neajunsul principal al benzilor cu o singură utilizare constă în volumul uriaș al cheilor, care trebuie generate, distribuite, memorate într-un secret perfect de către părțile care comunică.

În practică, această cheie într-adevăr aleatoare este înlocuită cu o cheie variabilă, pseudoaleatoare, obținută în procesul de cifrare-descifrare dintr-o secvență inițială, printr-un generator de succesiuni. Prima secvență care este în general scurtă și aleasă în mod aleator reprezintă starea inițială a generatorului de succesiuni și este singurul element secret în acest proces (seed – sămânță).

Pentru a fi tare din punct de vedere criptografic, succesiunea trebuie să fie imprevizibilă. Problema principală este de a garanta că, în cazul în care criptanalistul obține segmente lungi de cheie, el nu poate să aibă informații despre aceste secvențe. Totuși cheia lungă variabilă este generată în mod determinist dintr-o secvență scurtă și cunoașterea de către criptanalist a mai multor segmente din cheie poate duce în final la stabilirea legii de generare.

De aceea, în ultimul timp, s-au studiat tot mai mult generarea succesiunilor cu perioade lungi de repetiție, testarea proprietăților lor aleatoare și obținerea lor cu ajutorul schemelor secvențiale, sau de când au apărut calculatoarele, cu ajutorul programelor implementate pe acestea.

5.2 Succesiuni de numere pseudoaleatoare

Un șir de numere reale,

{Un} = U0, U1, U2, …,

în intervalul 0 Un 1, se numește succesiune de numere aleatoare, dacă ele sunt alese la întâmplare. Aceste succesiuni se dovedesc utile în multe și diferite tipuri de aplicații: simularea fenomenelor naturale, selectarea unui eșantion aleator pentru obținerea de informații despre ceea ce poate constitui comportare tipică, analiză numerică, testarea programelor rulate, luarea deciziilor și, nu în ultimă instanță, în criptografie.

La început, cei ce aveau nevoie de numere aleatoare în diferite lucrări științifice le obțineau prin aruncarea zarurilor sau prin extragerea bilelor, bine amestecate dintr-o urnă. După introducerea calculatoarelor obținerea numerelor aleatoare se face prin intermediul unor programe implementate.

Asupra acestei metode s-a ridicat obiecția referitoare la caracterul aleator al șirului generat în acest fel, întrucât fiecare număr este complet determinat de predecesorul său. Șirurile de acest tip, generate în mod determinist, sunt numite în literatura de specialitate succesiuni pseudoaleatoare sau cvasialeatoare, înțelegând prin aceasta că, de fapt, ele sunt aleatoare numai aparent.

Generarea succesiunilor aleatoare lungi s-a dovedit o operație dificilă. Pericolul constă în acela că șirul se degenerează și tinde să se stabilizeze la anumite cicluri de elemente. De aceea, numerele aleatoare nu trebuie generate cu o metodă aleasă în mod aleator, ci cu metode teoretice adecvate care garantează șirurilor generate proprietăți aleatoare.

5.3 Generatoarele congruențiale liniare

Pentru generarea succesiunilor pseudoaleatoare se folosește larg metoda congruențial liniară. În conformitate cu acestă metodă șirul {Xn} se obține folosind relația de recurență:

Xn+1 = (aXn+c) mod m,

Unde m, a, c, X0 se numesc numere magice și reprezintă:

m, modulul, m > 0;

a, multiplicatorul, 0 ≤ a < m;

c, incrementul, 0 ≤ c < m;

X0, termenul inițial, 0 ≤ X0 < m.

Generatoarele care se folosesc de metoda congruențial liniară se numesc Generatoare Congruențiale Liniare (Linear Congruential Generator) și sunt definite sub forma LCG(m, a, b, x0), unde a, b și x0 răspund la cerințele enumerate mai sus.

Șirul de numere reale {Xn} are o distribuție uniformă pe o mulțime finită dacă toate numerele sunt egal probabile. Șirurile congruențiale liniare vor intra într-o buclă, adică există un ciclu final de numere care se repetă la infinit. Ciclul care se repetă se numește perioadă. Generatoarele congruențial liniare au lungimea perioadei de repetiție cunoscută. Un șir suficient de aleator va avea, firește, o perioadă relativ mare.

5.3.1 Tipuri de generatoare congruențiale liniare

O generalizare a relației de recurență este:

care exprimă termenul n+k în funcție de termenul n.

Șirul congruențial liniar are perioada de lungime maximă dacă:

c, m sunt numere prime între ele;

b = a-1 este un multiplu de p, pentru orice număr prim p care divide pe m;

b este un multiplu de 4 dacă m este multiplu de 4.

Dacă c=0 generatorul se numește congruențial multiplicativ.

Relația devine:

Xn+1= aXn mod m.

Termenul Xn trebuie să fie diferit de 0. Perioada de lungime maximă este realizată în acest caz dacă:

X0 și m sunt prime între ele;

a este element primitiv modulo m.

Dacă a și m sunt numere prime între ele, atunci cel mai mic număr întreg pentru care an = 1 mod m este numit ordinul lui a modulo m. Orice astfel de număr a care are ordinul modulo m maxim posibil este numit element primitiv modulo m.

O altă cale pentru generarea succesiunilor pseudo aleatoare este metoda congruențială aditivă, luând combinații liniare de Xn-1, …, Xn-k adică:

Xn=(a1Xn-1+…+akXn-k) mod m.

Dacă m=p este număr prim, atunci din teoria corpurilor finite se cunoaște că șirul definit de: Xn=(a1Xn-1+…+akXn-k) mod p are perioada de lungime pk-1.

Dacă se dorește ca sirul de numere pseudoaleatoare generat să aibă o distribuție normală pe o mulțime finită se utilizează una din următoarele metode de combinare a generatoarelor congruențiale liniare:

Însumarea a ‘k’ șiruri de numere aleatoare cu distribuție uniforma de forma:

R1+ R2+ R3+…+ Rk;

Pentru k = 12 se obține un generator cu proprietăți foarte bune din punct de vedere al distribuției.

Aplicarea următoarei formule de calcul:

,

unde R1 si R2 sunt șiruri de numere aleatoare cu distribuție uniforma.

5.3.2 Generatoare congruențiale liniare performante

Orice succesiune folosită în sistemele secrete trebuie tratată cu multă grijă pentru a determina caracterul ei aleator. S-a văzut că se pot obține succesiuni cu perioade atât de lungi încât pentru scopuri practice, termenii să nu se termine niciodată. Deși acest fapt este un criteriu important, nu se poate încă spune că șirul se comportă ca și când ar fi aleator. De aceea s-au elaborat diferite teste, care permit să se studieze proprietățile aleatoare ale secvențelor. Se disting două tipuri de teste: teste empirice, când calculatorul prelucrează grupuri de valori ale șirului și evaluează anumite date statistice, și teste teoretice, când studiul proprietăților succesiunii folosește metode ale teoriei numerelor, adică se determină relația de recurență prin care este generat sau construit șirul.

În funcție de rezultatele acestor teste de aleatorism, de perioadele de repetiție și de necesitățile avute în vedere se poate alege unul dintre Generatoare Congruențiale Liniare propuse de-a lungul timpului:

ANSIC: LCG(231, 1103515245,12345,12345);

MINDSTD: LCG(231-1, a=75=16807, 0, 1);

RANDU: LCG(231, 216+3=65539, 0,1);

SIM: LCG(231-1, 630360016,0,1);

BCSLIB: LCG(235, 515, 7261067085, 0);

URN12: LCG(231, 452807053,0,1);

funcția random() din mediul de programare Delphi folosește un LCG de tipul: LCG(232, 22695477,1,0);

multe altele.

5.4 Generatoarele haotice de numere pseudoaleatoare

Aceasta este o clasă nouă de generatoare de numere pseudoaleatoare, diferența fundamentală față de generatoarele conguențiale liniare constând în faptul că sunt generatoare cu lungimi aleatoare ale ciclului, deci au perioada de repetiție aleatoare. Cunoscute sub numele de Generatoare RANROT sunt similare generatoarelor aditive dar realizează o rotație sau o deplasare de biți. Câteva tipuri de generatoare RANROT sunt exemplificate mai jos. În cazul generatorului de tipul A, biții sunt rotiți după adăugare, în cazul celui de tip B biții sunt rotiți înainte de adăugare. Există și cazuri când apar mai mult de doi termeni, cazul B3 de mai jos, și se pot roti părți ale șirurilor de biți, separat, ca în cazul generatorului de tip W.

Generator RANROT, tipul A:

Xn = ((Xn-j + Xn-k) mod 2b) rotr r;

Generator RANROT, tipul B:

Xn = ((Xn-j rotr r1) + (Xn-k rotr r2)) mod 2b;

Generator RANROT, tipul B3:

Xn = ((Xn-i rotr r1) + (Xn-j rotr r2) + (Xn-k rotr r3)) mod 2b;

Generator RANROT, tipul W:

Zn = ((Yn-j rotr r3) + (Yn-k rotr r1)) mod 2b/2,

Yn = ((Zn-j rotr r4) + (Zn-k rotr r2)) mod 2b/2,

Xn = Yn + Zn · 2b/2.

Fiecare X este un număr întreg fără semn reprezentat în formă binară.

Y rotr r înseamnă că biții lui Y sunt rotiți spre dreapta cu r locuri (000011112 rotr 3 = 111000012).

i, j și k sunt numere întregi. Pentru simplitate se presupune că 0 < i < j < k, iar fiecare r [0,b), excepție făcând tipul W unde r [0,b/2).

Toate tipurile de generatoare RANROT au fost testate cu câteva teste experimentale inclusiv cele 15 teste din bateria DIEHARD de teste publicată de George Marsaglia(1997). De asemenea se comportă bine în testul spectral teoretic care testează structura rețelei posibile în t-dimensiuni spațiale.

5.4.1 Alegerea parametrilor

Deși alegerea parametrilor pentru generatoarele RANROT nu este critică, pentru a obține cea mai bună performanță trebuiesc respectate câteva reguli. Cel mai important, toți biții din buffer-ul de stare trebuie să fie interdependenți. Din acest motiv j și k trebuie să fie numere prime între ele. Dacă j și k (și i pentru tipul de generator B3) au un factor comun p atunci sistemul poate fi spart în p sisteme independente. Din același motiv k-j trebuie să fie impar pentru cazul generatorului de tip W.

Este clar, din modul în care este implementată adăugarea binară, că există o direcționare a informației dinspre biții mai semnificativi spre biții mai puțin semnificativi, lucru obținut prin rotire, realizându-se astfel îmbunătățirea structurii rețelei din testul spectral. Pentru a face ca toate pozițiile bițiilor să fie interdependente, cel puțin unul dintre r-uri trebuie să fie diferit de zero. Structura rețelei este de prostă calitate dacă r este prea mic (apropiat de zero) sau prea mare (apropiat de b, sau pentru tipul W: b/2). Cea mai bună structură a rețelei se obține pentru valori ale lui r în jurul valorii b/2 pentru tipul A, b/3 și 2b/3 pentru tipul B și în jurul valorii b/4, b/2 și 3b/4 pentru tipul B3.

S-a descoperit că, atunci când parametrii sunt bine aleși, generatoarele RANROT au câteva perioade de repetiție cu lungimi aleatoare și cu o distribuție logaritmică. Probabilitatea de a nimeri o perioadă de repetiție de lungime insuficientă de la o sămânță precizată (și diferită de zero) este extrem de mică.

Dacă toate r-urile sunt zero atunci perioada maximă de repetiție este (2k-1)2b-1 pentru alegeri optime ale lui j și k. Dacă cel puțin unul dintre r-uri este diferit de zero se obține o distribuție aleatoare a perioadelor de repetiție. Dar pentru câteva alegeri nefericite ale lui r pot apare câteva regularități sau simetrii care duc la apariția unor cicluri reduse cu aceeași sau apropiată mărime, în timp ce perioadele rămase prezintă distribuția dorită. Spre exemplu, un generator RANROT de tipul A cu r =1 are 2b-1 cicluri de lungime 1 deoarece orice strare cu toți X-și egali și cel mai semnificativ bit egal cu 0 va fi transformată în ea însăși. Pentru a evita astfel de simetrii s-au dezvoltat câteva reguli de bază. Aceste reguli sunt sintetizate în tabelul de mai jos. Din nefericire, nu se cunoaște nici un principiu de proiectare care poate să asigure, cu garanție absolută, că lungimile ciclurilor (perioadele de repetiție) au distribuția logaritmică așteptată. De aceea, tabelul de mai jos este și un autotest necesar pentru detectarea situațiilor (totuși puțin probabile) de apariție a șirurilor aleatoare cu o lungime insuficientă a perioadei de repetiție.

Pentru o performanță optimă, parametrii trebuie aleși în conformitate cu următoarele reguli:

Tabelul 5.1 Regulile de proiectare pentru generatoarele RANROT

5.4.2 Aplicații ale generatoarelor RANROT

Generatoarele RANROT au fost proiectate pentru aplicațiile Monte Carlo, unde viteza, aleatorismul, rezoluția și lungimea perioadei de repetiție sunt toți factori importanți. De fapt, viteza a jucat rolul important în procesul de proiectare.

Aceste generatoare nu sunt potrivite pentru aplicații criptografice dacă parametrii lor sunt cunoscuți deoarece sămânța („seed”) poate fi ușor calculată din k valori consecutive ale lui X. Dar situația este foarte diferită dacă parametrii sunt necunoscuți atacatorului. Varianta următoare demonstrează acest lucru:

Pentru generatorul RANROT de tip C :

Xn = ((Xn-1 rotr r1) + (Xn-2 rotr r2) + … + (Xn-k rotr rk) + H) mod 2b,

unde H este un număr întreg arbitrar. Numărul de seturi de parametri posibile pentru r-ruri este bk și există 2b valori posibile pentru H. Spre exemplu, pentru k=17 și b=32 vor exista 1,6·1035 seturi posibile de parametrii. Este imposibil să se descopere setul de parametrii dintr-o serie de X-uri.

5.4.3 Implementarea generatoarelor RANROT

Permiterea unor perioade de repetiție de lungime aleatoare a dus la renunțarea la câteva dintre constrângerile care s-au impus în proiectarea generatoarelor de numere pseudoaleatoare. Această libertate în proiectare poate fi utilizată în optimizarea vitezei și a considerațiilor cu privire la implementarea hardware.

Operația de rotire a biților este avantajoasă deoarece oferă un bun aleatorism și deoarece computerele au instrucțiuni foarte rapide de rotire a biților. Valoarea lui b trebuie să fie egală cu mărimea cuvântului microprocesorului pentru a permite această rotire rapidă de biți.

Valoarea lui k determină mărimea buffer-ului de stare. Deși o valoare mare a lui k îmbunătățește aleatorismul și lungimea perioadei de repetiție, o valoare moderată a lui k în intervalul [10, 20] va fi în general suficientă pentru generatoarele RANROT. O valoare excesiv de mare a lui k va ocupa un spațiu suplimentar în memoria cache.

În condiții ideale, distribuția lungimilor perioadelor de repetiție se așteaptă să fie aleatoare cu o distribuție logaritmică, iar numărul mediu de cicluri posibile se apropie de loge(m). Această comportare ideală apare la toate variantele de generatoare RANROT, excepție făcând cele mai nefavorabile alegeri ale parametrilor.

5.5 Concluzii

Generatoarele RANROT prezentate aici sunt mai rapide decât alte generatoare de aceeași calitate și răspund foarte bine la testele experimentale și teoretice pentru aleatorism. Totuși cerințele pentru o fundamentare stiințifică de înalt nivel pentru argumentarea acestor generatoare RANROT intră în conflict cu realizările actuale în știință și anume: natura haotică și utilizarea operației de rotire a biților reprezintă lucruri străine celor mai multe ramuri ale matematicii. Simplul fapt că testarea teoretică este realizabilă poate duce cu gândul la o regularitate matematică de un anumit tip în sistemele tradiționale. Ideea principală în a realiza un generator bun de numere pseudoaleatoare este evitarea oricărei regularități care poate să apară într-o aplicație particulară. Unele generatoare haotice pot fi foarte bine mai bune decât generatoarele tradiționale cu lungime cunoscută a perioadei de repetiție, dar nu există teste care să dovedească acest lucru sau contrariul. Nu se poate preciza care dintre tipurile de generatoare este mai bun deoarece nici unul din ele nu a picat vreunul din teste.

Totuși este recomandat să se utilizeze două generatoare, unul cu lungime aleatoare a perioadei de repetiție și unul cu lungime cunoscută. Combinarea rezultatelor celor două generatoare va lua cei mai bun din ambele categorii de generatoare și astfel va fi mai mult decât satisfăcător pentru orice tip de aplicație, indiferent de cerințele impuse.

CAPITOLUL 6

Secretizarea Imaginilor Statice

Realizarea unui sistem de transmitere secretizată a imaginilor statice va avea în vedere, în primul rând, digitizarea imaginii, o comprimare a acesteia și, în final, secretizarea propriu-zisă. Securitatea sistemului, în funcție de cerințele și obiectivele de securitate avute în vedere, va consta, în primul rând, în asigurarea confidențialității transmisiei de imagini statice.

În cazul unui sistem secretizat de transmitere a imaginilor, metodele utilizate în protecția informațiilor transmise prin imagini depind de forma în care aceste imagini sunt prelucrate. În cazul analogic, operațiile de secretizare la care este supusă imaginea sunt eficiente, dar tendința tuturor sistemelor de comunicații de a trece de la transmisia analogică a semnalelor la cea digitală devine un dezavantaj tot mai mare pentru realizarea secretizării imaginilor statice prin metode analogice.

În cazul metodelor digitale de secretizare a imaginilor, nivelul de securitate pe care acestea le oferă, gradul de secretizare a informației, viteza de criptare, toate acestea depind de algoritmul criptografic utilizat. Începând din momentul în care a apărut criptografia cu chei publice, s-a pus întrebarea care este mai bună dintre cele două tipuri de criptografii (cea simetrică și cea nesimetrică). În urma unor studii a ieșit în evidență faptul că numărul și lungimea mesajelor sunt mult mai mari dacă se utilizează algoritmi cu chei publice decât algoritmi simetrici. Concluzia: algoritmii simetrici sunt mult mai eficienți decât cei cu chei publice. Însă cele două tipuri de criptografie rezolvă tipuri diferite de probleme. Algoritmii simetrici sunt cei mai buni pentru criptarea datelor. Viteza de lucru este ridicată și nu sunt susceptibili la atacul prin textul cifrat ales. Algoritmii cu chei publice pot face ceea ce algoritmii simetrici nu pot: sunt cei mai buni pentru administrarea (distribuirea) cheilor și pentru protocoalele de autentificare.

În concluzie, ținând cont și de faptul că imaginile conțin cea mai mare cantitate de informații din multitudinea de date transmise printr-un sistem de comunicații, pentru secretizarea transmisiilor de imagini statice este indicat de utilizat un algoritm simetric.

Datorită faptului că DES-ul este unul dintre cei mai rapizi algoritmi de criptare simetrici iar viteza, în cazul blocurilor de date extrem de mari (cazul nostru imaginile), este poate criteriul cel mai important de alegere a algoritmului criptografic, programul realizat va utiliza acest algoritm pentru secretizarea imaginilor statice.

6.1 Secretizarea cu DES

În acest caz, pentru secretizare, imaginea este intițial parcursă pe linii, fiecare pixel (a cărui culoare este reprezentată printr-un număr zecimal) este transformat în binar (baza 2) și introdus apoi într-un vector de elemente. Acest vector este împărțit în blocuri de 64 de biți, fiecare dintre aceste blocuri fiind supus criptării cu DES.

Algoritmul criptografic este prezentat în detaliu în subcapitolul următor.

6.1.1 Algoritmul criptografic DES. Prezentare detaliată

Descrierea DES

Sistemul DES (Data Encryption Standard), cunoscut sub numele de DEA (Data Encryption Algorithm) de ANSI (American National Standard Institute) și sub numele de DEA-1 de ISO, este primul standard dedicat protecției criptografice a datelor pe calculator. A fost studiat de IBM începând cu 1970 pentru NBS (National Bureau of Standards). După câteva modificări realizate împreună de NBS și NSA (National Security Agency), a fost publicat ca FIPS PUB 46 (Federal Information Processing Standards Publication – 46) în 1977 și intitulat DES. Ulterior, a fost adoptat în 1981 de ANSI ca standard ANSI X3.92 și intitulat, așa cum am amintit, DEA. Există diferențe între standarde; de exemplu, FIPS autorizează numai implementare hard. DES este un cifru bloc, care criptează date în blocuri de 64 de biți. Un bloc de 64 de biți de text clar constituie date de intrare ale algoritmului, iar ca date de ieșire se obține un bloc de 64 de biți de text cifrat. Lungimea cheii este de 56 de biți (de obicei ea se exprimă ca un număr de 64 de biți, dar fiecare al optulea este utilizat pentru verificarea parității impare a octeților care formează cheia, reprezentând cei mai puțin semnificativi biți ai acestor octeți). Acești 56 de biți sunt generați aleator și pot fi modificați în orice moment. O serie de astfel de numere pot fi considerate chei slabe, dar ele pot fi ușor evitate. Această cheie este păstrată de către toți membrii unui grup de utilizatori care, astfel, pot cifra/descifra toate datele transmise de la unii la alții.

Figura 6.1

Sistemul de

cifrare DES

Privit în ansamblu, algoritmul nu este altceva decât o combinație a două tehnici elementare de criptare: “confuzie” și “difuzie”. Construcția fundamentală a unui bloc DES este o combinație unică a acestor două tehnici (o substituție urmată de o permutare) asupra textului, bazată pe cheie. Această construcție este cunoscută sub numele de rundă. DES este compus din 16 runde; acestea aplică aceeași combinație de tehnici asupra blocului de text clar de 16 ori (vezi Figura 6.1).

Prezentarea algoritmului

DES operează pe blocuri de text clar de 64 de biți. După o permutare inițială, blocurile sunt sparte în două jumătăți, dreaptă și stângă, fiecare de câte 32 de biți. Urmează apoi 16 runde de operații identice, numite funcții de cifrare f, în care datele sunt combinate cu cheia. După a șaisprezecea rundă, cele două jumătăți sunt recombinate, algoritmul încheindu-se cu o permutare finală, reprezentând inversa permutării inițiale.

În fiecare rundă (vezi figura 6.2), biții cheii sunt deplasați (șiftați), după care sunt aleși 48 de biți din cei 56 ai cheii. Jumătatea dreaptă a blocului de date este expandată la 48 de biți prin intermediul unei permutări expandate, apoi adunată modulo 2 cu 48 de biți de cheie deplasați și permutați, și aplicată la intrările a 8 cutii S, la ieșirea cărora se obțin 32 de biți noi, care sunt permutați din nou. Aceste 4 operații constituie funcția de cifrare f. Blocul de biți de la ieșirea funcției f este apoi combinat cu jumătătea stângă prin intermediul unei alte adunări modulo 2. Rezultatul acestor operații devine noua jumătate dreaptă. Această succesiune de operații este repetată de 16 ori, rezultând 16 runde ale algoritmului DES.

Figura 6.2

O rundă a algoritmului

DES

Dacă notăm:

Bi – rezultatul iterației cu numărul i;

Li și Ri – jumătățile stângă, respectiv dreaptă, corespunzătoare lui Bi ;

Ki – cheia de 48 de biți ai rundei i;

f – funcția care realizează toate operațiile de substituție, permutare și adunare modulo 2 cu cheia,

atunci prelucrările unei runde arată astfel:

Ultima iterație este puțin diferită de celelalte, fiind definită de ecuațiile:

Pentru definirea funcției de cifrare f vom defini în continuare câteva operații.

Permutarea inițială (IP)

Permutarea inițială intervine înaintea primei runde; ea transpune blocul de la intrare așa cum este descris în Tabelul 6.1. Acest tabel, asemeni tuturor tabelelor din acest capitol, trebuie citit de la stânga la dreapta, de sus în jos. De exemplu, permutarea inițială mută bitul 58 din textul clar pe poziția 1, bitul 50 pe poziția 2, bitul 42 pe poziția 3, și așa mai departe.

Permutarea inițială și permutarea finală corespunzătoare nu afectează securitatea algoritmului (scopul său principal este de a ușura încărcarea datelor reprezentând textul clar și textul cifrat într-un chip DES în formă de octeți. Trebuie amintit că microprocesoarele DES lucrează pe magistrale de 16 sau 32 de biți. Întrucât această permutare este dificil de realizat soft (altfel banal din punct de vedere hard), multe implementări software renunță atât la permutarea inițială, cât și la cea finală. Deși acest nou algoritm nu este mai puțin sigur decât DES, el nu urmează standardului DES, prin urmare nu mai poate fi numit DES.

Transformările cheii

Inițial, cheia DES de 64 de biți este redusă la o cheie de 56 de biți, prin ignorarea fiecărui al optulea bit. Acest lucru este descris în Tabelul 6.2. Acești biți pot fi folosiți pentru verificarea parității, pentru a se asigura valabilitatea cheii. După extragerea celor 56 de biți, este generată o altă subcheie de 48 de biți pentru fiecare din cele 16 runde ale DES. Aceste subchei, Ki, sunt determinate în felul următor (vezi Figura 6.3).

Figura 6.3

Generarea cheii

pentru o iterație

În prima fază, cheia de 56 de biți este divizată în două jumătăți de 28 de biți. Apoi, cele două jumătăți sunt deplasate circular spre stânga cu unul sau doi biți, în funcție de rundă. Modalitatea de deplasare este prezentată în Tabelul 6.3.

După deplasare, sunt selectați 48 din cei 56 de biți. Întrucât această operație realizează permutarea ordinii biților precum și alegerea unui subset de biți, ea este denumită permutare comprimată. Această operație furnizează un subset de 48 de biți. În Tabelul 6.4 este descrisă permutarea comprimată. De exemplu, bitul din poziția 33 a cheii deplasate se mută pe poziția 35, iar bitul din poziția 18 a cheii deplasate este ignorat.

Datorită deplasării, un subset diferit de biți este utilizat pentru fiecare subcheie. Fiecare bit este utilizat în aproximativ 14 din cele 16 subchei, dar nu toți biții sunt utilizați de exact același număr de ori.

Permutarea expandată

Această operație expandează jumătatea dreaptă a datelor, Ri, de la 32 la 48 de biți. Întrucât această operație modifică ordinea biților, dar și repetă anumiți biți, ea poartă numele de permutare expandată. Această operație are două scopuri: aduce jumătatea dreaptă la dimensiunea cheii pentru aplicarea unei operații de adunare modulo 2 și furnizează un rezultat de lungime mai mare, care poate fi comprimat pe timpul operației de substituție. Oricum, nici unul dintre acestea nu reprezintă principalul scop criptografic. Prin permiterea unui singur bit să influențeze două substituții, dependența biților de ieșire de biții de intrare se răspândește foarte repede, lucru numit efect de avalanșă. DES este proiectat să atingă condiția de a avea fiecare bit de text cifrat dependent de fiecare bit de text clar și de fiecare bit al cheii cât mai repede posibil.

Figura 6.4 ilustrează permutarea expandată. Aceasta este uneori numită cutie E. Pentru fiecare bloc de 4 biți de la intrare, primul și al patrulea bit reprezintă fiecare câte doi biți din blocul de ieșire, în timp ce al doilea și al treilea bit reprezintă fiecare câte unul singur. Tabelul 6.5 prezintă corespondența între pozițiile de intrare și pozițiile de ieșire. De exemplu, bitul din poziția 3 a blocului de intrare se deplasează în poziția 4 a blocului de ieșire, iar bitul din poziția 21 a blocului de intrare se deplasează în poziția 30 și în poziția 32 a blocului de ieșire.

Figura 6.4

Permutarea

expandată

Cu toate că blocul de ieșire are dimensiuni mai mari decât blocul de intrare, fiecare bloc generează un bloc de ieșire unic.

Substituțiile cu cutii S

După ce cheia comprimată este adunată XOR cu blocul expandat, cei 48 de biți rezultați sunt supuși unei operații de sustituție. Substituțiile sunt realizate de opt cutii de substituție, numite cutii S. Fiecare cutie S are intrarea de 6 biți și ieșirea de 4 biți, existând opt cutii S diferite. (Memoria totală necesară celor opt cutii S ale DES este de 256 de biți.) Cei 48 de biți sunt divizați în sub-blocuri de 6 biți. Asupra fiecărui bloc separat operează o cutie S diferită: primul bloc este prelucrat de cutia S 1, al doilea bloc este prelucrat de cutia S 2, și așa mai departe (vezi Figura 6.5).

Figura 6.5

Substituțiile

cu cutii S

Fiecare cutie S este o matrice de 4 linii și 16 coloane. Fiecare element din cutie este un număr de 4 biți. Cei 6 biți de intrare din cutia S specifică numerele liniei și coloanei care trebuie căutate pentru ieșire. Tabelul 4.6 prezintă toate cele 8 cutii S.

Biții de intrare specifică un element dintr-o cutie S într-o modalitate particulară. Să considerăm că cei 6 biți de la intrare sunt notați cu b1, b2, b3, b4, b5 și b6. Biții b1 și b6 sunt combinați pentru a forma un număr de 2 biți, de la 0 la 3, care corespunde unei linii din tabel. Cei patru biți din mijloc, b2 până la b5, sunt combinați pentru a forma un număr de 4 biți, de la 0 la 15, care corespunde unei coloane din tabel.

De exemplu, să presupunem că la intrarea cutiei S 6 avem secvența 110011. Primul și ultimul bit se combină, formând 11, care corespunde liniei trei a cutiei S 6. Cei 4 biți din mijloc se combină, formând 1001, care corespunde coloanei 9 a aceleiași cutii S. Elementul de pe linia 3, coloana 9, a cutiei S 6 este 14. Astfel, valoarea 110011 este substituită cu 1110.

Sunt, desigur, mult mai ușor de implementat cutiile S decât vectori de 64 de elemente, din punct de vedere software. Sunt necesare unele rearanjări ale elementelor pentru a realiza acest lucru, dar nu este dificil. (Nu este suficientă doar modificarea indicilor, fără rearanjarea elementelor. Cutiile S sunt proiectate cu mare grijă). Oricum, acest mod de descriere a cutiilor S oferă o imagine clară a modului în care ele operează. Fiecare cutie S poate fi văzută ca o funcție de substituție pe numere de 4 biți: se introduc b2 până la b5 și se extrage un rezultat pe 4 biți. Biții b1 și b6 provin de la blocurile vecine; ei selectează una din cele 4 funcții de substituție posibile în fiecare cutie S.

Substituțiile realizate de cutiile S reprezintă elementul critic în DES. Celelalte operații ale algoritmului sunt liniare, și deci ușor de analizat. Cutiile S sunt neliniare și, mai mult decât oricare alte operații, oferă securitatea DES.

Rezultatul acestei faze de substituție sunt opt blocuri de 4 biți, care sunt recombinate într-un singur bloc de 32 de biți, care va fi supus unei noi operații: permutarea cu cutie P.

Permutarea cu cutie P

Cei 32 de biți de la ieșirea cutiilor S sunt permutați conform unei cutii P. Această permutație duce fiecare bit de intrare pe o altă poziție la ieșire; nici un bit nu este utilizat de două ori și nici un bit nu este ignorat. Aceasta se numește permutare directă sau, pur și simplu, permutare. Tabelul 6.7 prezintă pozițiile pe care se mută fiecare bit. De exemplu, bitul 21 se mută pe poziția 4, în timp ce bitul 4 se mută pe poziția 31.

În sfârșit, rezultatul permutării este adunat modulo 2 cu jumătatea stângă a blocului de 64 de biți inițial. Apoi cele două jumătăți sunt comutate și începe o nouă rundă.

Operațiile prezentate mai sus definesc funcția de cifrare f (vezi Figura 6.6). Fie E funcția de expandare, S1, S2,…S8 cele 8 cutii S și P permutarea cu cutie P prezentate mai sus. Pentru a defini funcția f(Ri-1,Ki), conform celor de mai sus, vom preciza mai întâi blocurile B1, B2,…B8, de 6 biți fiecare, ca fiind:

În acest caz, blocul f(Ri-1,Ki) poate fi definit ca:

Figura 6.6

Schema de

realizare a

funcției f la

DES

Permutarea finală

Permutarea finală reprezintă inversa permutării inițiale și este descrisă în Tabelul 6.8. Trebuie menționat că jumătatea dreaptă și cea stângă nu își schimbă locul după ultima rundă a algoritmului; în schimb blocul concatenat R16L16 este folosit ca bloc de intrare pentru permutarea finală. Nu se întâmplă nimic deosebit aici; schimbarea locurilor între cele două jumătăți și deplasarea conform permutării finale trebuie să producă același rezultat. Acesta este motivul pentru care algoritmul poate fi folosit atât pentru criptare cât și pentru decriptare.

Descifrarea DES

După toate aceste operații de substituție, permutare, adunare modulo doi și deplasare, se poate crede că algoritmul de descifrare este complet diferit de algoritmul de cifrare. Dimpotrivă, aceste operații variate au fost astfel alese încât ele generează o proprietate foarte utilă: același algoritm funcționează atât pentru criptare cât și pentru decriptare.

Cu DES este posibil să se utilizeze aceeași funcție pentru a cripta și a decripta un bloc de date. Singura diferență este că, cheile trebuie utilizate în ordine inversă. Astfel, dacă cheile de criptare pentru fiecare rundă sunt K1, K2, K3, … K16, atunci cheile de decriptare sunt K16, K15, K14, …K1. Algoritmul de generare a cheilor utilizate pentru fiecare rundă este de asemenea circular. De data aceasta însă, deplasarea cheii se face spre dreapta, și numărul de poziții deplasate este 0, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1.

Primul pas în descifrare este aplicarea permutării inițiale, care dezleagă ultimul pas din operația de cifrare (permutarea finală, care este inversa permutării inițiale). Apoi se va genera în sens invers:

Se va pleca de la R16 și L16 generându-se la sfârșit R0 și L0. În final, blocul de 64 de biți este supus permutării inverse.

Chei slabe (ineficiente)

Datorită modului în care cheia inițială este modificată pentru a se putea extrage câte o subcheie pentru fiecare rundă, unele chei inițiale sunt chei slabe. Trebuie să ne amintim că valoarea inițială este împărțită în două jumătăți și fiecare jumătate este deplasată independent. Dacă toți biții din fiecare jumătate sunt fie 0, fie 1, atunci cheia utilizată pentru orice ciclu al algoritmului este aceeași pentru toate ciclurile. Aceasta se poate întâmpla dacă cheia este formată în întregime din 1, din 0, sau dacă o jumătate a cheii este formată în întregime din 1 iar cealaltă din 0. De asemenea, două dintre cheile slabe au alte proprietăți care le fac și mai puțin sigure. Cele patru chei slabe sunt prezentate în Tabelul 6.9.

În plus, unele perechi de chei cifrează textul clar astfel încât textul cifrat este identic. Cu alte cuvinte, o cheie din pereche poate decripta mesaje criptate cu altă cheie din pereche. Acest fapt se datorează modului în care DES generează subcheile; în loc de a genera 16 subchei diferite, aceste chei generează doar două subchei diferite. Fiecare dintre aceste subchei este folosită de opt ori în algoritm. Aceste chei poartă numele de chei semislabe, și sunt prezentate în notație hexazecimală în Tabelul 6.10.

Unele chei produc doar patru subchei, fiecare utilizată de câte 4 ori în algoritm. Aceste chei posibil slabe sunt listate în Tabelul 6.11.

6.1.2 Rezultate obținute în urma secretizării imaginilor cu DES

Viteza și timpul de criptare/decriptare

În urma implementării algoritmului criptografic DES în mediul de programare Delphi 4.0 a rezultat o viteza de criptare/decriptare de aprox. 2Kb/s, repezentând un salt calitativ considerabil din acest punct de vedere față de implementarea aceluiași algoritm în mediul de programare Matlab 5.2 la care viteza de criptare/decriptare era de 0,0001Kb/s. În aceleași condiții de procesare, prin implementarea algoritmului în instrucțiuni Asambler viteza de criptare/decriptare ar putea să ajungă la o valoare de 2Mb/s.

Toate datele referitoare la viteza sau timpul de criptare din acest capitol se fac relativ la viteza de procesare a unui calculator cu procesor AMD K7 Athlon, 650 MHz și memorie de 128 Mb Sdram, Pc 133.

Cu programul realizat în Delphi 4.0, o imagine cu dimensiunile de 400/300 pixeli (înălțime/lățime), cu 256 de culori este criptată într-un timp rezonabil de aprox. 35 de secunde, iar o imagine cu dimensiunile de 800/600 pixeli (o imagine mare ca dimensiuni), cu 256 de culori este criptată în aprox. 3 minute.

Rezultatele criptării

În urma criptării realizate pe mai multe tipuri de imagine (în funcție de culoare și uniformitate), rezultatele obținute au evidențiat faptul că algoritmul de criptare este extrem de bun în cazul imaginilor „zgomotoase” și aproape ineficient în cazul imaginilor „uniforme”.

Cazul imaginilor „zgomotoase”:

Dacă imaginea originală (sursă) (Figura 6.7) este o imagine „zgomotoasă” (culoarea pixelilor diferă mult de la o linie la alta) rezultatul criptării este bun, imaginea criptată (Figura 6.8) dovedind imposibilitatea detectării imaginii originale.

Cazul imaginilor „uniforme”:

Dacă imaginea originală (sursă) (Figura 6.9) este o imagine „uniformă” (culoarea pixelilor nu diferă mult de la o linie la alta) criptarea este ineficientă, imaginea criptată (Figura 6.10) dezvăluind aproape în totalitate imaginea originală.

Cazul imaginilor „zgomotoase pe porțiuni”:

În cazul în care imaginea originală (sursă) (Figura 6.11) este o imagine zgomotoasă pe porțiuni (unele suprafețe ale imaginii sunt zgomotoase, restul suprafeței fiind uniformă) criptarea este destul de eficientă, dezavantajul constând în faptul că imaginea criptată (Figura 6.12) va oferi unele informații despre imaginea originală și anume informații despre contururi.

Concluzii la criptarea imaginilor cu DES

Ca urmare a rezultatelor obținute în urma criptării realizate pe mai multe tipuri de imagini, algoritmul criptografic DES este eficient pentru imaginile de tip „zgomotoase” și aproape ineficient pentru imaginile de tip „uniforme”.

Rezultatele obținute ar fi similare în cazul utilizării oricărui alt algoritm criptografic cunoscut (IDEA, Blowfish, RC2, RC4, RC5 etc.) și asta deoarece toți acești algoritmi criptează blocuri de date cu o lungime fixă. Cum criptarea imaginii se face linie cu linie (pentru a păstra formatul imaginii), atunci, dacă liniile imaginii originale se aseamănă unele cu altele, este evident că și linile imaginii criptate vor fi asemănătoare între ele, rezultând din compararea imaginii originale cu cea criptată efectele negative menționate mai sus.

Pentru a cripta eficient și cazul imaginilor „uniforme” este necesara utilizarea unui alt tip de algoritm diferit de tipurile cunoscute de algoritmi criptografici.

6.2 Secretizarea cu RAND

În acest caz, pentru secretizare, se utilizează o cheie variabilă, pseudoaleatoare, obținută în procesul de cifrare-descifrare dintr-o secvență inițială, printr-un generator de numere pseudoaleatoare. Prima secvență care este în general scurtă și aleasă în mod aleator reprezintă starea inițială a generatorului de numere pseudoaleatoare și este singurul element secret în acest proces de secretizare (seed – sămânță).

Procesul efectiv de secretizare constă în parcurgerea imaginii pe linii și adunarea XOR a fiecărui pixel (a cărui culoare este reprezentată printr-un număr zecimal si mai mic decât 256) cu un număr pseudoaleator (mai mic decât 256) generat de un generator de numere pseudoaleatoare inițializat de cheia de criptare („sămânța”). Rezultatul obținut în urma adunării XOR este atribuit pixelului devenit astfel criptat, imaginea rezultată la final având același format ca imaginea originală dar fiind complet diferită de aceasta. La decriptare are loc un proces similar în care valoarea pixelului criptat este adunată XOR cu un număr pseudoaleator generat de un generator care este inițializat cu aceași „sămânță” (cheie de criptare). Pixelul rezultat va fi identic cu pixelul original și evident imaginea decriptată va coincide cu imaginea originală.

Pentru criptare am ales două tipuri diferite de generatoare de numere pseudoaleatoare a căror rezultate vor fi cumulate pentru a obține un generator complex de numere pseudoaleatoare numit „RAND” și potrivit scopului criptografic propus.

6.2.1 Generatorul „MOTHER-OF-ALL pseudo random number”

Acest generator a fost inventat de George Marsaglia și mai este cunoscut și ca generatorul „multiplicare cu memorare” sau generatorul „recursiv cu memorare”.

Face parte din categoria generatoarelor congruențial multiplicative de tipul

Xn+1 = (aXn+c) mod m,

și mai precis din categoria generatoarelor congruențial multiplicative-aditive de forma:

Xn=(a1Xn-1+…+akXn-k) mod m.

Este un generator de numere pseudoaleatoare care are o distribuție uniformă pe o mulțime finită și este caracterizat de următoarele proprietăți:

numerele pseudoaleatoare generate sunt reprezentate pe 32 de biți (acest lucru înseamnă că aceste numere generate pot să aibă valori în intervalul [0, 4.294.967.295];

prezintă un foarte bun aleatorism confirmat de toate testele existente;

are o perioadă de repetiție de 3·1047;

Relația de generare este următoare:

S = 2111111111 · Xn-4 + 1492 · Xn-3 + 1776 · Xn-2 + 5115 · Xn-1 + C,

unde Xn = S modulo 232, iar C = floor(S / 232) – funcția „floor” rotunjește rezultatul împărțirii spre .

Primele trei elemente X1, X2 și X3 sunt generate pe baza unei „sămânțe” de către generatorul de numere pseudoaleatoare implementat în Delphi 4.0 prin funcția random, însă trebuie avut în vedere că nu pot să fie toate zero.

Obținerea numerelor în intervalul [0, 255] necesare pentru adunarea XOR cu valoarea pixelilor se face prin împărțirea modulo 256 a lui Xn.

6.2.2 Generatorul „RANROT – de tip A”

Acest generator este unul dintre generatoarele haotice de numere pseudoaleatoare care reprezintă o nouă clasă de generatoare. Diferența fundamentală față de generatoarele conguențiale liniare constă în faptul că sunt generatoare cu lungimi aleatoare ale ciclului, deci au perioada de repetiție aleatoare. Cunoscute sub numele de generatoare RANROT sunt similare generatoarelor aditive dar realizează o rotație sau o deplasare de biți. Câteva tipuri de generatoare RANROT sunt exemplificate mai jos. În cazul generatorului de tipul A, biții sunt rotiți după adăugare iar în cazul celui de tip B, biții sunt rotiți înainte de adăugare. Există și cazuri când apar mai mult de doi termeni, cazul B3 de mai jos, și se pot roti părți ale sirurilor de biți, separat, ca în cazul generatorului de tip W.

Generator RANROT, tipul A:

Xn = ((Xn-j + Xn-k) mod 2b) rotr r;

Generator RANROT, tipul B:

Xn = ((Xn-j rotr r1) + (Xn-k rotr r2)) mod 2b;

Generator RANROT, tipul B3:

Xn = ((Xn-i rotr r1) + (Xn-j rotr r2) + (Xn-k rotr r3)) mod 2b;

Generator RANROT, tipul W:

Zn = ((Yn-j rotr r3) + (Yn-k rotr r1)) mod 2b/2,

Yn = ((Zn-j rotr r4) + (Zn-k rotr r2)) mod 2b/2,

Xn = Yn + Zn · 2b/2.

Fiecare X este un număr intreg fără semn reprezentat în formă binară.

Y rotr r înseamnă că biții lui Y sunt rotiți spre dreapta cu r locuri (000011112 rotr 3 = 111000012).

i, j și k sunt numere întregi. Pentru simplitate se presupune că 0 < i < j < k, iar fiecare r [0,b), excepție făcând tipul W unde r [0,b/2).

Pentru mai multe detalii despre generatoarele hotice de numere pseudoaleatoare vezi Capitolul 5, „Succesiunile aleatoare și utilizare acestora în criptografie”.

Deși alegerea parametrilor pentru generatoarele RANROT nu este critică, pentru a obține cea mai bună performanță trebuiesc respectate câteva reguli.

Pentru generatorul RANROT, tipul A:

Xn = ((Xn-j + Xn-k) mod 2b) rotr r,

determinarea parametrilor se face ținând cont de următoarele reguli (vezi Tabelul nr. 1 din Capitolul 5, „Succesiunile aleatoare și folosirea acestora în criptografie”):

numerele j și k trebuie să fie numere prime între ele;

1 < j < k-1;

valoarea k-j impară;

valoarea lui r > 1;

valoarea lui r trebuie să fie în jurul valorii b/2;

Pentru a păstra compatibilitatea cu generatorul „Mother-of-ALL pseudo aleator number”, numerele generate de generatorul haotic trebuie să fie tot pe 32 de biți și deci, se alege, b=32. Pasul următor este alegerea lui r cu valoarea lui b/2, adică r=16. Pentru ca primele trei condiții referitoare la j și k să fie împlinite se dau lui j și k următoarele valori: j=2 și k=5.

A rezultat următorul generator RANROT de tip A:

Xn = ((Xn-2 + Xn-5) mod 232) rotr 16.

Primele cinci elemente X1, X2, X3, X4 și X5 sunt generate pe baza unei „sămânțe”, similar ca la generatorul „Mother-of-ALL pseudo aleator number”.

Obținerea numerelor în intervalul [0, 255] necesare pentru adunarea XOR cu valoarea pixelilor se face prin împărțirea modulo 256 a lui Xn.

6.2.3 Generatorul „RAND” și secretizarea imaginilor cu acesta

Ca urmare a proprietăților pe care le are, generatorul RANROT este mai rapid decât alte generatoare de aceeași calitate și răspunde foarte bine la testele experimentale și teoretice pentru aleatorism. Însă nu se poate preciza dacă este mai bun decât un generator congruențial liniar deoarece nici unul din acestea nu a picat vreunul din teste. Unele generatoare haotice pot fi foarte bine mai bune decât generatoarele tradiționale cu lungime cunoscută a perioadei de repetiție, dar nu există teste care să dovedească acest lucru sau contrariul.

În aceste condiții este recomandat să se utilizeze două generatoare, unul cu lungime aleatoare a perioadei de repetiție și unul cu lungime cunoscută. Combinarea rezultatelor celor două generatoare va lua cei mai bun din ambele categorii de generatoare și astfel va fi mai mult decât satisfăcător pentru orice tip de aplicație, indiferent de cerințele impuse.

Astfel a rezultat generatorul de numere pseudoaleatoare „RAND” care este obținut prin combinarea rezultatelor generatorului „Mother-of-ALL pseudo aleator number” cu rezultatele generatorului „RANROT” de tip A determinat mai sus.

Procesul de generare de către generatorul „RAND” a unui număr pseudoaleator are loc în felul următor:

se pleacă de la o „sămânță”, care în procesul de criptare/decriptare va reprezenta cheia de criptare, respectiv decriptare și se vor genera prin intermediul generatorului programului utilizat (cazul nostru Delphi 4.0) cei trei primi termeni, în cazul generatorului „Mother-of-ALL pseudo aleator number”, și cei cinci primi termeni în cazul generatorului „RANROT” de tip A determinat mai sus;

numărul pseudoaleator generat de fiecare din cei doi generatori se aduce în intervalul [0, 255] prin operația modulo 256;

cele două rezultate obținute în intervalul [0, 255] se adună XOR rezultând numărul pseudoaleator generat de generatorul „RAND”.

Criptarea imaginilor statice cu ajutorul generatorului „RAND”

Criptarea imaginilor statice prin folosirea generatorului „RAND” își are originea în criptarea unui text cu ajutorul numerelor aleatoare.

Cea mai simplă metodă de a cripta un șir de caractere este de a forma un șir de numere aleatoare și de al aduna XOR („sau exclusiv”) la șirul original de caractere, rezultând astfel șirul criptat. Dacă la recepția mesajului se cunoaște modul de formare al aceluiași șir de numere aleatoare, prin adunarea XOR cu mesajul recepționat se va obține mesajul decriptat, care va fi identic cu șirul original de caractere.

Funcția XOR, care este inima criptării/decriptării, funcționează în felul următor:

Evident că înainte de a face adunarea XOR, atât caracterul original cât și numărul pseudoaleator generat vor fi transformați în numere binare (baza 2), ca în Tabelul 6.11 în care este exemplificat cum funcționează procesul de criptare/decriptare:

Tabelul 6.11

Pentru a genera numerele „aleatoare” este utilizat un generator de numere pseudoaleatoare, care în cazul nostru va fi generatorul „RAND”. Dacă aceeași „sămânță” este utilizată cu același generator atât în procesul de criptare cât și în cel de decriptare, aceeași secvență de numere pseudoaleatoare va fi generată la emisie și recepție. Dacă la emisie și recepție se utilizează același generator de numere pseudoaleatoare, singurul lucru care trebuie transmis pentru ca decriptarea să poată fi realizată este „sămânța”, care va fi transmisă evident sub forma cheii de criptare/decriptare.

Cazul criptării unei imagini statice este similar cu cel prezentat mai sus, singura diferență fiind aceea că în locul caracterelor originale se iau valorile culorilor pixelilor imaginii originale, aceste valori aflându-se în intervalul [0, 255] – de aici și necesitatea ca numerele pseudoaleatoare de la ieșirea generatorului „RAND” să fie în intervalul [0, 255]. În continuare are loc adunarea XOR între valoarea culorilor pixelilor originali și numerele pseudoaleatoare generate rezultând imaginea criptată. La recepție având aceeași „sămânță”, o aplicăm din nou generatorului „RAND” rezultând secvența de numere aleatoare identică cu cea de la criptare. Are loc adunarea XOR între secvența de numere pseudoaleatoare generată local și valorile culorilor pixelilor criptați rezultând în final imaginea decriptată, identică cu imaginea originală.

6.2.4 Rezultate obținute în urma secretizării imaginilor cu RAND

Viteza și timpul de criptare/decriptare

În urma implementării generatorului de numere pseudoaleatoare „RAND” (de fapt implementarea celor două generatoare „Mother-of-ALL pseudo aleator number” și „RANROT” de tip A) în limbajul de programare Delphi 4.0 a rezultat o viteză de criptare/decriptare foarte mare (peste 2Mb/s) acest lucru posibil datorită relațiilor simple de definire a celor două generatoare.

Cu programul realizat în Delphi 4.0, orice imagine este criptată într-un timp extrem de rapid (sub o secundă), și cea mai mare parte a acestui timp este datorată citirii imaginii linie cu linie (vreau să spun că ia mai mult timp citirea imaginii decât generarea numerelor pseudoaleatoare și adunarea XOR a acestora cu pixelii imaginii citite).

Rezultatele criptării

În urma criptării realizate pe mai multe tipuri de imagine (în funcție de culoare și uniformitate), rezultatele obținute au evidențiat faptul că utilizarea generatorului „RAND” în scopuri criptografice este extrem de bună în cazul tuturor imaginilor, indiferent dacă sunt „zgomotoase” sau „uniforme”.

Cazul imaginilor „zgomotoase”:

Dacă imaginea originală (sursă) (Figura 6.11) este o imagine „zgomotoasă” (culoarea pixelilor diferă mult de la o linie la alta) rezultatul criptării este extrem de bun, imaginea criptată (Figura 6.12) dovedind imposibilitatea detectării imaginii originale.

Cazul imaginilor „uniforme”:

Dacă imaginea originală (sursă) (Figura 6.13) este o imagine „uniformă” (culoarea pixelilor nu diferă mult de la o linie la alta) criptarea este la fel de eficientă ca în cazul imaginilor „zgomotoase”, imaginea criptată (Figura 6.14) dovedind imposibilitatea detectării imaginii originale.

Evident că această metodă de secretizare este eficientă și în cazul imaginilor „zgomotoase pe porțiuni”.

Concluzii la criptarea imaginilor cu RAND

Ca urmare a rezultatelor obținute în urma criptării realizate pe mai multe tipuri de imagini, algoritmul de secretizare în care se utilizează generatorul „Rand” este eficient pentru imaginile de orice tip fie ele „zgomotoase” sau „uniforme”.

Problemele apar în momentul în care se criptează două imagini cu aceeași cheie și asta deoarece dacă este utilizat același număr „sămânță” pentru două imagini, unele informații despre ambele imagini pot să fie descoperite fără a se cunoaște la recepție (sau de către un criptanalist, ceea ce este și mai rău) acest număr „sămânță” (cheia de criptare/decriptare).

Spre exemplu, presupunând că avem două imagini, A și B:

Dacă se criptează ambele imagini folosind același număr „sămânță” și anume 19937, rezultatele par să ascundă imaginile originale:

Dar acum, dacă luăm ambele imagini criptate și presupunând că nu cunoaștem cheia originală de criptare efectuăm anumite operații asupra acestor imagini, se vor putea descoperi unele informații cu privire la imaginile originale. Spre exemplu, dacă utilizăm adunarea XOR între culorile componente corespondente pentru fiecare pixel,

(R,G,B) = (R1 XOR R2, G1 XOR G2, B1 XOR B2),

atunci vor putea fi extrase unele informații despre imaginile originale. În cazul de față, pentru cele două imagini criptate, A19937 și B19937, o mulțime de trăsături ale imaginii B originale devin vizibile:

Această imagine reprezintă echivalentul operației de adunare XOR între imaginile originare A și B:

Explicația este următoarea:

Dacă presupunem că R este secvența aleatoare, matematic se explică de ce aleatorismul nu ascunde imaginile componente ale imaginii rezultate ca urmare a operației A XOR B:

(A XOR R) XOR (B XOR R) = A XOR B

Soluția constă în utilizarea unor secvențe diferite de numere pseudoaleatoare pentru cele două imagini A și B:

(A XOR R1) XOR (B XOR R2)  <>  A XOR B.

Acest lucru se traduce în necesitatea utilizării unei chei unice pentru criptarea unei singure imagini. Astfel, dacă imaginea A este criptată cu o cheie, să spunem 66547, atunci imaginea criptată A66547 arată la fel ca imaginea A criptată cu cheia 19937, adică A19937:

Dar prin utilizarea unei chei unice, operațiile de tipul A XOR B sunt foarte diferite și se realizează secretul dorit:

6.3 Secretizarea cu RandDes

Criptarea imaginilor utilizând generatorul de numere aleatoare este „suficient de bună” pentru majoritatea aplicațiilor însă nu este comparabilă ca „putere” cu secretizarea obținută cu un algoritm criptografic cum ar fi DES-ul. Trebuie luată în considerare o combinare a rezultatelor celor două metode de secretizare pentru a se obține un algoritm complet sigur.

6.3.1 Algoritmul de secretizare RandDes. Avantaje și dezavantaje

Înainte de a descoperi modul de combinare a celor două tipuri de secretizări, trebuie să se țină cont de deficiențele pe care metoda de secretizare cu RAND le are, și anume:

necesitatea schimbării cheii de criptare la fiecare operațiune de criptare;

în cazul în care se cunosc relațiile de definiție ale generatorului se poate afla „sămânța” relativ ușor;

simplitatea algoritmilor care stau la baza generatorului de numere pseudoaleatoare face destul de ușoară decriptarea neautorizată prin metoda „căutării brute” a cheii și asta fără necesitatea unei aparaturi de calcul foarte complexă și costisitoare.

Evident, trebuie să se țină cont și de avantajele acestei metode:

criptarea eficientă pentru toate tipurile de imagine, „zgomotoase” sau „uniforme”;

viteza de criptare extrem de mare față de cazul utilizării unui algoritm criptografic.

Criptarea realizată cu ajutorul unui algoritm criptografic cum ar fi DES-ul, este extrem de puternică față de metoda de secretizare utilizând un generator de numere pseudoaleatoare, dar în cazul imaginilor apar unele probleme și dezavantaje pe care utilizarea DES-ului le ridică:

criptarea este eficientă numai în condițiile în care imaginea este „zgomotoasă”;

datorită complexității algoritmului, viteza de criptare este mică în comparație cu secretizarea pe baza generatorului de numere pseudoaleatoare iar timpul de criptare, evident, mare;

În schimb, există și avantaje ale criptării cu DES:

cheile se vor schimba periodic însă la un interval mult mai mare (zeci de zile) față de cazul secretizării cu RAND, unde pentru o secretizare „sigură” este necesară înlocuirea cheii la fiecare operație de criptare;

dimensiunea cheii de criptare/decriptare (64 de biți) este suficient de mare pentru a face extrem de dificilă decriptarea neautorizată prin metoda „căutării brute” a cheii, iar dacă totuși acest lucru este dorit, pentru realizare, este necesară existența unei aparaturi (hardware) foarte complexă și extrem de costisitoare. Cu toate acestea, rezultatul acestei „căutări brute”, datorită complexității algoritmului, ar putea să fie descoperit după un perioadă mare de timp, când s-ar putea să nici nu mai conteze (descoperirea mesajului original care a fost criptat nu mai prezintă nici un interes).

Punând în balanță toate aceste avantaje și dezavantaje ale celor două metode de secretizare (DES și RAND), rezultatul combinării celor două ar fi benefic și s-ar concretiza prin obținerea unui nou algoritm de secretizare numit RandDes, un algoritm mai complex, mai puternic, mai sigur.

Prin urmare, dacă imaginea originală este secretizată mai întâi prin metoda RAND iar apoi prin metoda DES, imaginea criptată va avea atât caracteristicile secretizării cu RAND cât și ale secretizării cu DES. Evident, la recepție, decriptarea trebuie făcută invers, adică mai întâi se decriptează cu DES și apoi cu RAND.

Algoritmul de secretizare RandDes va avea următoarele avantaje:

datorită criptării inițiale cu RAND, criptarea imaginilor va fi extrem de eficientă, indiferent dacă imaginile sunt „zgomotoase” sau „uniforme”;

datorită criptării cu DES se va obține o criptare puternică a imaginii originale;

cheia de criptare/decriptare va deveni mai mare și anume de 96 de biți (cheia pentru RAND este pe 32 de biți iar cea pentru DES este pe 64 de biți) crescând astfel în mod considerabil timpul necesar pentru o decriptare neautorizată;

datorită criptării cu DES după criptarea cu RAND a dispărut necesitatea impusă la secretizarea numai cu RAND de a modifica cheia de criptare (cea pe 32 de biți) după fiecare criptare a unei imagini, dispărând astfel și posibilitatea de a extrage unele informații despre două imagini criptate cu aceeași cheie prin operația XOR executată asupra acestora.

6.3.2 Rezultate obținute în urma secretizării imaginilor cu RandDes

Viteza și timpul de criptare/decriptare

Datorită faptului că viteza de criptare/decriptare pentru metoda de secretizare cu RAND este extrem de mare iar timpul de criptare/decriptare este sub o secundă, evident că timpul total al criptării RandDes va fi dat de timpul de criptare/decriptare datorat secretizării cu DES și va fi, practic, egal cu acesta.

Rezultă imediat marele dezavantaj al criptării cu RandDes față de criptarea cu RAND, și anume: viteza mică de criptare/decriptare de aprox. 2Kb/s. Rezultă evident și marele avantaj pe care secretizarea RandDes o are asupra criptării DES, și anume: același timp de criptare/decriptare dar cu posibilitatea criptării eficiente pentru toate tipurile de imagine.

Rezultatele criptării

În urma criptării realizate pe mai multe tipuri de imagine (în funcție de culoare și uniformitate), rezultatele obținute au evidențiat faptul că utilizarea algoritmului „RandDes” în scopuri criptografice este extrem de bună în cazul tuturor imaginilor, indiferent dacă sunt „zgomotoase” sau „uniforme”.

Voi prezenta cazul cel mai defavorabil, și anume cazul imaginilor „uniforme”, unde criptarea este la fel de eficientă ca în cazul imaginilor „zgomotoase”, imaginea criptată (Figura 6.16) dovedind imposibilitatea detectării imaginii originale.

Concluzii la criptarea imaginilor cu RandDes

Ca urmare a rezultatelor obținute în urma criptării realizate pe mai multe tipuri de imagini, algoritmul de secretizare „RandDes” este extrem de eficient pentru imaginile de orice tip, fie ele „zgomotoase” sau „uniforme”.

Singura îmbunătățire care s-ar mai putea aduce algoritmului ar fi creșterea rezistenței la atacurile criptanalitice iar acest lucru se poate face relativ ușor însă în detrimentul timpului de criptare/decriptare.

Prin utilizarea în locul agoritmului DES a algoritmului TripleDES (se aplică algoritmul DES de trei ori având evident la dispoziție trei chei de criptare/decriptare pe 64 de biți), noul algoritm criptografic RandTripleDES ar avea o cheie pe 224 de biți (RAND are o cheie pe 32 de biți + 3 chei pe 64 de biți de la TripleDES), acest algoritm fiind imposibil de spart prin metoda „căutării brute” a cheii datorită timpului enorm de mare necesar (aprox. 1014 ani). Singurul dezavantaj este timpul de criptare/decriptare care este de trei ori timpul necesar criptării/decriptării cu RandDes.

6.4 Rezistența la atacurile criptanalitice a algoritmului RandDes

Încă de acum câțiva ani se spunea că algoritmul DES este nesigur, că pot fi creați alogoritmi de spargere, sau că cei 64 de biți (din care numai 56 sunt utilizați efectiv) ai cheii sunt prea puțini.

Ca răspuns la toate aceste afirmații, la 8 iunie 1998, Robert Litt, director general în Departamentul Justiției a negat posibilitatea ca FBI să spargă DES-ul: „Se vehiculează mitul că am avea super computere care pot să spargă orice algoritm criptografic existent la ora actuală. Lăsați-mă să pun problema tehnică în context: A fost nevoie de 14.000 de computere Pentium care au lucrat aproape patru luni pentru a decripta un singur mesaj… Nu vorbim aici numai despre agențiile FBI și NSA, vorbim despre toate departamentele de poliție…”.

Comentariile care au urmat au fost că FBI este fie incompetent, fie minte, fie ambele situații. Nimeni nu folosește Pentium-uri pentru a sparge DES-ul, cu excepția, poate, unei demostrații. În primul rând, proiectarea algoritmului DES s-a făcut astfel încât acesta este foarte încet software dar rapid hardware. În al doilea rând, computerele actuale fac foarte puține lucruri în paralel; programatorii nu știu exact ce instrucțiuni vor fi executate și trebuie să permită toate combinațiile. Astfel, toată lumea din domeniu cunoștea faptul că DES-ul este foarte lent pe calculatoare, decriptarea neautorizată fiind posibilă numai cu ajutorul unei mașini hardware. Un cip proiectat special, chiar și cu un ceas cu o frecvență redusă, depășește ușor chiar și cele mai performante calculatoare de uz general în acest domeniu.

Lucrurile s-au clarificat în bună măsură la sfârșitul anului 1999 când Fundația Frontierei Electronice (EFF) a anunțat construirea unei mașini hardware de căutare brută a cheii. Acest dispozitiv costa aprox. 220.000 $ și putea sparge o cheie DES, în medie, în 4.5 zile. Acest dispozitiv este construit pe 2 șasiuri, pe fiecare șasiu existând 12 plăci de „bază”, fiecare placă având pe ea 64 de cipuri iar fiecare din aceste cipuri conținând 24 de unități de căutare. Fiecare unitate de căutare poate procesa 2.500.000 de chei pe secundă, ceea ce duce, pentru întregul dispozitiv, la o procesare de 92.160.000.000 chei pe secundă.

Mașina hardware a celor de la EFF a spart DES-ul, dar la fel de bine ar putea fi proiectată să spargă orice tip de algoritm criptografic și asta deoarece atacul era îndreptat împotriva lungimii cheii și nu împotriva modului de proiectare a algoritmului. Se estimează că din 18 luni în 18 luni are loc schimbarea de tehnologie prin care fie tehnologia de fabricație devine de două ori mari ieftină, fie procesoarele obținute sunt de două ori mai rapide.

Pentru a combate aceste estimări singura soluție constă în alegerea unui algoritm cu o cheie mai lungă (ex.: algoritmul IDEA care are o cheie de 128 biți). Nu există suficient siliciu în lume sau destul timp până la moartea soarelui pentru a construi o mașină care ar putea sparge un algoritm cu o astfel de cheie prin metoda „căutării brute” a cheii.

Având datele de mai sus, se calculează rezistența algoritmului RandDes la o asemenea mașină hardware. Trebuie să amintesc că timpul mediu necesar pentru descoperirea cheii de criptare/decriptare, prin metoda căutării „brute” a cheii, se obține prin calcularea timpului total necesar pentru procesarea tuturor cheilor și, conform statisticii, împărțirea aceastei durate de timp la 2. De aici și denumirea de timp mediu.

Primul pas care trebuie făcut este determinarea numărului de câte ori este mai rapidă mașina hardware prezentată mai sus față de calculatorul pe care s-a implementat algoritmul de criptare, având configurația precizată în subcapitolul 6.1.2 „Rezultate obținute în urma criptării imaginilor statice cu DES”, și asta pentru a putea avea o corespondență între valorile care vor fi obținute. Astfel: pentru calculator, viteza de criptare/decriptare pentru DES este de 2.2Kb/s. Pentru mașina hardware viteza de criptare/decriptare este dată în chei/s. A cripta un bloc de 64 de biți, -cazul mașinii hardware-, cu un număr de chei N -o cheie având tot 64 de biți-, este echivalent cu a cripta același număr de blocuri N de 64 de biți, -cazul calculatorului-, cu o singură cheie de 64 de biți. Astfel se transformă cei 2,2Kb în blocuri de 64 de biți (se ține cont că 1 Kb are 1024 de biți). Atunci :

(2,2Kbiți * 1024) / 64biți = 36 blocuri de 64 de biți.

Rezultă că viteza de criptare, pentru calculator, este de 36 chei/s și prin urmare mașina hardware este de:

(92.160.000.000 chei/s) / (36 chei/s) = 2.560.000.000 ori,

mai rapidă decât calculatorul.

Al doilea pas constă în a determina cu cât se va reduce numărul de chei pe secundă pentru mașina hardware dacă apare în plus și criptarea cu RAND. Această necesitate reiese din modul de căutare a cheii în cazul RandDes: se ia o cheie pentru DES de 64 de biți (se începe în general cu cheia 00000…, dar la fel de bine se poate începe cu orice altă cheie, important fiind să se țină minte cheile parcurse și modul de parcurgere a cheilor rămase), se face decriptarea cu ea și apoi se încearcă cu cele 232 chei posibile decriptarea RAND; dacă rezultatul nu este satisfăcător, se adună la cheia inițială, de 64 de biți, 1 și se reia procesul, în mod recursiv, până se descoperă cheia (de fapt cheile, pentru că se descoperă cheia pentru RAND, pe 32 de biți, și cea pentru DES, pe 64 de biți). Reiese din cele prezentate mai sus că, dacă, inițial, timpul de 1 secundă care este necesar mașinii hardware pentru a procesa 92.160.000.000 de chei de 64 de biți, pentru DES, atunci același timp, va fi suficient în cazul algoritmului RandDes, pentru a procesa un număr Z, mai redus, de chei de 64 de biți, pentru DES, și un număr de Z*232 de chei de 32 de biți, pentru RAND.

Atunci, pentru a determina acest număr Z, inițial se calculează cât îi ia calculatorului să cripteze 8 pixeli dintr-o imagine pe 256 de culori pentru toate cele 232 chei posibile pentru RAND (cineva care caută cheia trebuie să le parcurgă pe toate 232). Am ales această combinație de 8 pixeli și imaginea pe 256 de culori deoarece astfel, 1 pixel este reprezentat pe 8 biți rezultând că cei 8 pixeli corespund unui bloc de 64 de biți. Deoarece mașina hardware lucrează pe blocuri de 64 de biți, alegerea celor 8 pixeli simplifică calculul și face mai ușoară compatibilitatea între decriptarea RAND și cea DES, pe care mașina hardware ar trebui să o realizeze. În același timp, cel puțini 8 pixeli sunt necesari pentru a observa, prin „căutarea brută” a cheii, o reușită în găsirea cheii folosite la criptare.

Pe calculatorul meu o imagine pe 256 de culori și cu mărimea de 103Kb este criptată RAND, cu 1000 de chei, în 2,6 secunde. Am ales 1000 de chei pentru că acest număr este suficient de mare pentru ca timpul alocat procesării acestora să fie cât mai precis măsurat de „timer”-ul calculatorului. Pentru o imagine pe 256 de culori, cei 8 pixeli înseamnă 8 * 8 biți/pixel = 64 de biți. Prin urmare, dacă cei 103Kb ai imaginii de care vorbim sunt criptați de 1000 de ori în 2,6 secunde, vor fi criptați o singură dată în 0,0026 sec. Ținând cont că 1 Kb are 1024 de biți, rezultă că 64 de biți vor fi criptați o singură dată cu RAND în:

((0,0026 sec) / (103Kbiți * 1024)) * (64 biți) = 1,5 * 10-6 s.

Timpul necesar pentru a cripta (evident decripta) 64 de biți cu 232 de chei este de:

1,5 * 10-6 s * 232 = 6442,4 secunde.

Pentru mașina hardware care este mai rapidă decât calculatorul de 2.560.000.000, timpul total necesar pentru a procesa toate cele 232 chei RAND pentru 64 de biți va fi de:

6442,4 s / 2.560.000.000 = 2,5 * 10-6 s.

Pentru a vedea cu cât se micșorează numărul de chei/secundă (deci cât este acel număr Z), pentru mașina hardware, dacă intervine și criptarea RAND, trebuie să calculăm mai întâi, timpul necesar procesării unei chei pentru criptarea cu DES. Acest timp este de:

1 s / 92.160.000.000 chei = 1,08 * 10-11 s.

La acest timp se adună timpul necesar pentru procesarea celor 64 de biți criptați cu RAND pentru cele 232 posibilități (acest lucru se explică prin modul de căutare al cheii în cazul RandDes prezentat mai sus). Timpul total rezultat pentru procesarea de către mașina hardware a unei chei DES și a 232 chei RAND va fi de:

1,08 * 10-11 s + 2,5 * 10-6 s 2,5 * 10-6 s.

Atunci, în condițiile criptării cu RandDes, mașina hardware va procesa într-o secundă, un număr Z, de:

Z = 1 s / 2,5 * 10-6 s = 400.000 chei/s.

Se obsevă că numărul de chei procesate pe secundă a scăzut de la 92.160.000.000 pentru algoritmul DES, la 400.000 pentru algoritmul RandDes. Pasul următor constă în calcularea timpului mediu necesar pentru găsirea cheii în cazul algoritmului RandDes. Astfel sunt 256 de chei posibile pentru DES (cheia are 64 de biți dar dintre aceștia numai 56 sunt folosiți) iar timpul necesar pentru procesarea tuturor cheilor va fi de:

(256 chei) / (400.000 chei/s) = 1.8 *1011 s = 50039995,8 ore = 2084999,8 zile.

Timpul mediu va fi atunci de: (2084999,8 zile) / 2 = 1042499.9 zile.

Conform calcului efectuat, prin utilizarea algoritmului de criptare RandDes s-ar obține o durată medie necesară pentru decriptarea neautorizată de 1042499.9 zile, o durată extrem de mare față de cele 4.5 zile necesare în cazul DES. Chiar și în condițiile în care se consideră că s-au făcut niște calcule greșite (privit din punctul de vedere al unui criptanalist) și aș adăuga o abatere de la rezultatul obținut cu 104 unități de calcul (consider totuși că este o abatere cam mare), timpul total pentru decriptarea RandDes neautorizată ar ajunge undeva în jur de 100 de zile. Reprezintă un timp suficient de mare pentru a considera algoritmul RandDes sigur din punct de vedere criptanalitic.

CAPITOLUL 7

Programul de criptare a imaginilor „ImagCript”

Programul a fost realizat în mediul de programare Delphi 4.0 prezentându-se utilizatorilor cu o interfață grafică de un înalt nivel. Acest program se poate rula sub orice mediu de tip „Windows”, presupunând pentru o funcționare la parametrii acceptabili o memorie RAM de cel puțin 64 Mb.

Utilizarea programului de criptare a imaginilor se face prin lansarea în execuție a programului „ImagCript.exe” (ImagCript înseamnă Criptarea Imaginilor). Interfața programului, așa cum se prezintă la startarea acestuia, este prezentată în Figura 7.1.

Această primă pagină se numește „Simularea Sistemului Secretizat de Transmitere a Imaginilor Statice” și servește în principal scopului didactic, lucru demonstrat prin modelul de sistem prezentat în partea superioară a ferestrei de lucru.

Programul prezintă trei pagini, prima dintre ele fiind cea expusă mai sus, celelate două fiind paginile intitulate „Modulul de emisie” și „Modulul de recepție”, schimbarea între aceste pagini fiind posibilă prin meniul „Pagina”. Dar înainte de a prezenta facilitățile celor trei pagini voi descrie meniurile și butoanele rapide comune acestora.

Meniurile și butoanele rapide

După cum se observă în Figura 7.2, programul prezintă cinci meniuri principale din care se pot alege diferite acțiuni și 16 butoane rapide care să faciliteze folosirea programului mai eficient fără a pierde timp prin căutarea acțiunilor dorite în meniuri.

Figura 7.2. Meniuri și butoane rapide

Din meniul „File”, Figura 7.3, sunt acesibile, în funcție de situația la care s-a ajuns până în punctul respectiv, opțiuni ca „Șterge” care are ca efect ștergerea imaginilor din cele trei socluri (vezi Figura 7.1), „Încarcă”, submeniu care permite încărcarea unei imagini sursă pentru a fi criptată sau a unei imagini criptate pentru a fi decriptată și submeniul „Salvează” care permite salvarea unei imagini criptate sau a unei imagini decriptate. Opțiunea „Send” este disponibilă numai când pagina „Modulul de emisie” este activă și permite la selectare transmiterea imaginii către un alt calculator, aflat în rețea cu cel de pe care se lucrează (este similară opțiunii de salvare pe un alt calculator). Opțiunea „Receive” este disponibilă numai când pagina „Modulul de recepție” este activă și permite la selectare recepționarea imaginii după ce aceasta a fost transmisă de către un alt calculator, aflat în rețea cu cel de pe care se lucrează (este similară opțiunii de încărcare de pe un alt calculator). Următorul submeniul este „Print”, submeniu din care se poate selecta opțiunea printării la imprimantă a imaginii sursă, a imaginii criptate sau a celei decriptate. Opțiunea „Print Setup” care urmează, permite setarea imprimantei la care se dorește realizarea printării. Ultima opțiune este „Exit” și permite ieșirea din program. De observat, combinațiile de taste sau tastele care pot fi utilizate pentru rapiditatea în execuție, existente în dreapta opțiunilor și care pot fi acționate dacă sunt cunoscute, fără a fi nevoie de a mai intra în meniuri pentru a ajunge la ele (exemplu, ieșirea din program se poate face în orice moment prin apăsarea combinației de taste „Ctrl + X”). Evident observația este valabilă pentru toate meniurile din program care au adiționate astfel de taste rapide.

Meniul următor este meniul „Pagina”, Figura 7.4, și are un număr de trei opțiuni posibile. Selectarea oricăreia dintre acestea va avea ca efect schimbarea utilității programului în felul următor:

Pagina „Simularea Sistemului Secretizat de Transmitere a Imaginilor Statice” servește în principal scopului didactic. Modelul de sistem prezentat în partea superioară a ferestrei de lucru nu are numai un rol descriptiv. Prin selectarea din meniul „Prelucrarea Imaginilor” a opțiunii „Animație”, după ce în prealabil a fost încărcată o imagine sursă și a fost selectat un algoritm criptografic, se va putea vizualiza prin apăsarea butonului rapid „Criptare” sau prin alegerea aceleiași opțiuni de meniul „Prelucrarea Imaginilor”, procesul de criptare și respectiv decriptare, pas cu pas, de la achiziția imaginii, transmiterea la criptor, procesul de criptare, transmiterea imaginii criptate la blocul corespunzător coderului corector de erori și coderului de linie, transformarea în semnal de linie („-1” și „1”), emisia în eter a a imaginii criptate și operațiile inverse realizate la recepție asupra imaginii recepționate. Trebuie să precizez că datorită animației, criptarea și decriptarea în această pagină este mai înceată. Animația poate fi deselectată prin selectarea încă o dată a opțiunii „Animație”.

Pagina „Modulul de emisie” servește în principal scopului original programului și anume utilizarea acestuia pentru criptarea imaginilor. Prin această pagină, programul se prezintă ca un post de lucru pentru un utilizator care nu face altceva decât să cripteze imagini. Datorită lipsei de animație, procesul de criptare este mai rapid decât în pagina de simulare a sistemului secretizat.

Pagina „Modulul de recepție” este similară paginii „Modulul de emisie” numai că utilizatorul se află la celălalt capăt al liniei de transmisie. Servește în principal decriptării imaginilor și datorită lipsei de animație, procesul de decriptare este și aici mai rapid decât în pagina de simulare a sistemului secretizat.

Rolul meniului „Algoritmi de criptare”, Figura 7.5, este evident, permițând, prin selectarea unuia dintre cei patru algoritmi de criptare, secretizarea imaginilor în funcție de nivelul „secret” dorit.

Meniul „Chei criptografice”, Figura 7.6, este activ numai în pagina „Simularea Sistemului Secretizat de Transmitere a Imaginilor Statice” și are rolul de a afișa, prin selectarea uneia dintre cele două opțiuni, a cheilor de criptare sau de decriptare. În celelalte două pagini, luându-se în considerare faptul că se lucreză cu aceste chei, afișarea lor este făcută automat, la selectarea paginii.

Meniul „Prelucrarea Imaginilor”, Figura 7.7, prezintă o serie de opțiuni referitoare la procesarea imaginilor cum ar fi cele de „Criptare” și „Decriptare”. Submeniul „Vizualizare” permite selectarea opțiunii „Stretch”, adică mărirea sau micșorarea imaginii încărcate pentru a putea fi vizualizată în întregime în cele trei sloturi în care se afișează imaginile sau permite din submeniul „Dimensiunea Reală” selectarea imaginii dorite, „Sursă”, „Criptată” sau „Decriptată”, pentru a fi vizualizată la dimensiunile reale într-o fereastră nouă. Ieșirea din această fereastră, și revenirea în pagina în care se lucra, se face prin apăsarea ultimului buton rapid (care devine vizibil numai acum și care de altfel este singurul activ) de pe bara de unelte.

Utilitatea meniului „Help” nu mai trebuie explicată fiind evidentă.

Butoanele rapide aflate pe bara de unelte, Figura 7.8, reprezintă o parte a opțiunilor disponibile în meniuri, facilitând după cum se și numesc, accesul rapid la aceste opțiuni. Sunt în număr de 16 și dacă se trece cu mouse-ul peste ele va apărea un text în dreptul mouse-ului explicând pe scurt utilitatea acestor butoane și un text în Bara de Status, poziționată în partea de jos a ferestrei, în care se explică pe larg rolul acestora.

Figura 7.7. Bara de unelte și butoanele rapide

Panourile de afișare a informațiilor

După cum se observă în partea de jos a ferestrei, deasupra Bării de Stare, există dispuse două panouri de afișare a unor informații, Figura 7.8.

Figura 7.8. Panourile de afișare a datelor

În panoul din stânga sunt afișate informații despre imaginea încărcată, fie ea sursă sau criptată, și anume date cu privire la calea și numele fișierului-imagine, dimensiunile imaginii date în pixeli și informații despre formatul în care acea imagine există.

Panoul din dreapta afișează alte tipuri de date și anume informații despre alegerile făcute: dacă animația este selectată sau nu, ce tip de algoritm criptografic este selectat; și informații despre procesul de criptare/decriptare și anume: timpul estimat pentru criptare (util în cazul unor imagini mai mari pentru a vedea timpul necesar criptării – de menționat că acest timp depinde de puterea de procesare a calculatorului pe care se lucrează și este actualizat, ținând cont de acest lucru, prin realizarea unui autotest inițial criptării propiu-zise), timpul de execuție a criptării și viteza de criptare/decriptare.

Pagina „Simularea Sistemului Secretizat de Transmitere a Imaginilor Statice”

După cum a fost prezentată și la pragraful „Meniuri și butoane rapide” pagina „Simularea Sistemului Secretizat de Transmitere a Imaginilor Statice”, Figura 7.1, servește în principal scopului didactic în această pagină permițându-se atât criptarea imaginilor cât și decriptarea acestora. Timpul de criptare/decriptare este mai mare decât în celelalte pagini datorită prezenței animației care poate fi selectată sau nu din meniul ”Prelucrarea Imaginilor”.

Pagina „Modulul de emisie”

Această pagină „Modulul de emisie”, Figura 7.9, a fost prezentată și la pragraful „Meniuri și butoane rapide” și servește în principal scopului original programului și anume utilizarea acestuia pentru criptarea imaginilor. Prin această pagină, programul se prezintă ca un post de lucru pentru un utilizator care nu face altceva decât să cripteze imagini. Datorită lipsei de animație, procesul de criptare este mai rapid decât în pagina de simulare a sistemului secretizat.

Ca o atenționare a utilizatorului de a nu transmite imaginile, indiferent de importanța lor, necriptate, este afișat în partea de sus a ferestrei mesajul afirmație-îndemn: „Atenție, dușmanul ascultă!!!”.

Pagina „Modulul de recepție”

Pagina „Modulul de recepție”, Figura 7.10, a fost prezentată și la pragraful „Meniuri și butoane rapide” și servește în principal pentru decriptarea imaginilor. Prin această pagină, programul se prezintă ca un post de lucru pentru un utilizator care nu face altceva decât să decripteze imagini. Datorită lipsei de animație, procesul de criptare este mai rapid decât în pagina de simulare a sistemului secretizat.

Concluzii

Programul se dorește a fi atât un model didactic cât și un program util în criptarea și decriptarea imaginilor statice. Structura modulară și flexibilitatea pe care o prezintă sunt fapte care vin în sprijinul realizării scopului propus.

Trebuie remarcată ușurința în exploatare a acestui program și rapiditatea de acomodare a unui nou utilizator cu interfața extrem de „prietenoasă”. Sugestiile și explicațiile care apar o dată cu plasarea mouse-ului deasupra unui buton sau meniu sunt întotdeauna binevenite și subliniază încă o dată grija pentru prezentarea detaliilor și facilitarea în acest mod a înțelegerii felului în care acest program lucrează.

Faptul că acest program se prezintă sub forma executabilă „ImagCrip.exe” atestă soliditatea structurii acestuia, precum și cerințele minime necesare pentru funcționarea programului și anume: existența oricărei versiuni a mediului de operare „Windows”, sub care acest program poate să ruleze. Nevoia de un calculator cu o memorie RAM de cel puțin 64 Mb și un procesor puternic apare numai în cazul se dorește să se obțină o viteză de criptare/decriptare rezonabilă.

CAPITOLUL 8

Concluzii

Așa cum am văzut pe parcursul acestei lucrări, un sistem sigur de comunicații este acela în ale cărui componente (resurse și operații) se poate avea încredere, adică furnizarea de servicii de calitate și corecte (care funcționează conform cerințelor și specificațiilor). Deoarece un sistem de comunicații este alcătuit din componente diferite, el reprezintă o zonă convenabilă pentru diferite atacuri sau operații ilegale, lucru care conduce la concluzia că protecția a devenit unul dintre aspectele operaționale vitale.

Realizarea unui sistem de transmitere secretizată a imaginilor statice este de actualitate în contextul evoluției transmisiilor digitale, atât a semnalelor vocale cât și a celor video. Mai mult, secretizarea imaginilor statice reprezintă o cerere din ce în ce mai mare ținând cont de migrarea serviciilor de comunicație actuale spre servicii de comunicație de imagine.

Cerințele de securitate pentru un sistem de comunicație trebuie să aibă în vedere următoarele categorii de protecții:

Confidențialitatea – protejarea informației împotriva citirii sau copierii de către utilizatorii care nu au o autorizare explicită;

Integritatea datelor – protejarea informației împotriva ștergerii sau modificării făcute fără permisiunea proprietarului acesteia;

Disponibilitatea – protejează un serviciu astfel încât acesta să fie disponibil permanent și să nu poată fi inactivat fără autorizație din partea administratorului;

Controlul accesului – reglează accesul la sistem. Împiedică utilizatorii neautorizați să acceadă în sistem, periclitând integritatea resurselor și confidențialitatea informațiilor;

Auditul – chiar și utilizatorii autorizați pot face acțiuni eronate sau răuvoitoare care afectează sistemul. În astfel de cazuri administratorul trebuie să determine ce s-a întâmplat și care sunt daunele rezultate. Pentru acest scop, trebuie să existe înregistrări ale activității sistemului, care să identifice în egală măsură utilizatorii și acțiunile întreprinse.

Fiecare organizație atribuie importanță diferită acestor aspecte, în funcție de cerințele și obiectivele de securitate avute în vedere:

mediul bancar – integritatea și auditul sunt cele mai importante, pe plan imediat inferior fiind confidențialitatea și disponibilitatea;

domeniul militar, diplomatic sau guvernamental – confidențialitatea este pe prim plan, iar disponibilitatea mai la urmă;

mediul universitar – integritatea și diponibilitatea sunt cele mai importante.

Realizarea unui sistem de transmitere secretizată a imaginilor va avea în vedere, în primul rând, digitizarea imaginii, o comprimare a acesteia și, în final, secretizarea propriu-zisă. Securitatea sistemului, în funcție de cerințele și obiectivele de securitate avute în vedere, va consta, în primul rând, în asigurarea confidențialității transmisiei de imagini statice.

Singurul tip de rețea care poate implementa toate serviciile de securitate posibile este rețeaua de calculatoare (ea fiind și cea mai vulnerabilă). Celelalte rețele pot implementa doar o gamă restrânsă de servicii de securitate dar confidențialitatea, autentificarea și controlul accesului sunt servicii care se pot implementa în orice tip de rețea de transmisiuni existentă.

Un lucru foarte important, mai ales în contextul transmiterii de imagini (care sunt purtătoare de o cantitate foarte mare de informație și date), îl reprezintă procesul de compresie (codare). Utilizarea unui algoritm de compresie, împreună cu unul de criptare, are sens din două motive: se pot cripta redundanțele din textul clar, astfel încât la compresie numărul acestora se reduce, rezultând o creștere a vitezei procesului; criptarea este mare consumatoare de timp și atunci prin compresia unei imagini înainte de criptare se mărește simțitor viteza procesului.

În cazul unui sistem secretizat de transmitere a imaginilor, metodele utilizate în protecția informațiilor transmise prin imagini depind de forma în care aceste imagini sunt prelucrate. În cazul analogic, operațiile la care este supusă imaginea sunt eficiente, dar mai puțin decât în cazul numeric când algoritmii de cifrare sunt mult mai puternici. Un alt minus, pe care metodele de cifrare analogică a imaginilor, dacă nu îl prezintă încă, atunci îl vor prezenta în mod sigur față de cele numerice, îl constituie tendința tuturor sistemelor de comunicații de a trece de la transmisia analogică a semnalelor la cea digitală. Singurul factor, sub aspectul căruia metodele de cifrare analogice păreau să fie mai avantajoase, era prețul de implementare al acestor metode și anume: în cazul secretizării digitale, procesoarele normale lucrau ineficient rezultând nevoia de a utiliza procesoare specializate ceea ce implica costuri ridicate. Dar odată cu creșterea performanțelor procesoarelor și aparițiilor de noi tehnologii de realizare a acestora, treptat, acest dezavantaj al secretizării digitale dispare. Toți acești factori enumerați mai sus reprezintă avantaje pe care metodele de cifrare numerice le au în favoarea celor analogice.

Dintre metodele analogice de cifrare, sistemul Eurocrypt și sistemul Eurocypher sunt ultimele sisteme de acces condiționat utilizate de noile stații de transmisie, fiind de o complexitate descurajantă și cu o securitate aproape impenetrabilă.

În cazul utilizării algoritmilor criptografici, indiferent de tipul acestora (criptografia clasică cu algoritmi simetrici sau cea cu chei publice), întrebarea care se pune este cum să se facă criptarea: hardware sau software? Până recent, toți producătorii de sisteme de criptare își ofereau produsele sub forma unor cutii ce se atașau unei linii de comunicații și criptau datele de-a lungul liniei. Deși criptarea software devine tot mai dominantă, cea hardware este încă cea mai cerută în aplicațiile militare sau comerciale de mare importanță. Există și motive pentru aceasta.

Primul este viteza. Criptarea constă dintr-o mulțime de operații complicate ce se efectuează asupra unui șir de biți clar, operații care trebuie realizate într-un calculator. Cei doi algoritmi binecunoscuți de criptare, DES și RSA, lucrează ineficient pe procesoare normale. Dacă o serie de criptografi și-au făcut proprii algoritmi adaptați implementărilor software, hardware-ul specializat câștigă prin viteză.

În plus, criptarea este adesea o sarcină complexă. Introducerea în procesor a acestor operații este ineficientă. Sistemul va fi mult mai rapid dacă operațiile de acest gen se fac de către un chip sau un procesor dedicat.

Un al doilea motiv este securitatea. Un algoritm de criptare ce lucrează pe un calculator obișnuit nu are protecție fizică. Dispozitivele de criptare hardware sunt încapsulate, iar protecția se poate face destul de ușor. În plus, chip-urile VLSI dedicate pot fi tratate chimic astfel încât orice încercare de pătrundere poate distruge chip-ul. Radiația electromagnetică poate arăta uneori ce este în interiorul unei piese a unui echipament electronic. Dispozitivele de criptare pot fi ecranate, astfel încât să nu ofere informații la o astfel de încercare.

Chiar dacă datele criptate vin de la un calculator, este mai ușor de instalat un dispozitiv specializat, decât să se modifice sistemul software al calculatorului. Criptarea trebuie să fie invizibilă; ea nu trebuie să fie accesibilă utilizatorului. Singura cale de a face acest lucru software este de a scrie criptarea în sistemul de operare, ceea ce nu este ușor. Pe de altă parte, chiar și unui calculator slab i se poate atașa un dispozitiv de criptare, între le și modem-ul de comunicație.

Cele trei lucruri de bază ale criptării hardware oferite pe piață sunt: module de criptare (care realizează operații de genul verificarea parolei sau administrarea de chei pentru bănci), dispozitive dedicate de criptare pentru legături de comunicații și plăci atașate în calculatorul personal.

Există diferențe majore între dispozitivele proiectate pentru criptare sincronă sau asincronă. Un dispozitiv nu va accepta niciodată o viteză a datelor mai mare decât cea pentru care a fost proiectat. În această familie de dispozitive există o serie de incompatibilități. Problema principală este dacă există compatibilitate între necesitățile particulare ale propriei aplicații și caracteristicile principale ale dispozitivului de criptare oferit.

Din toate aceste motive, tendința actuală este ca tot mai multe companii să își secretizeze datele prin hardware specializat implementat în echipamentele de comunicație, însă există în momentul de față și cealaltă soluție și poate chiar mai atractivă. Orice algoritm de criptare poate fi implementat software. Dezavantajele, cel puțin până acum, constau în viteză (dezavantaje anulate de apariția procesoarelor performante), cost și ușurință în manipulare și modificare. Avantajul este oferit de flexibilitate și portabilitate, ușurință în folosire și în efectuarea de upgrade-uri. Programele criptografice pot fi copiate foarte ușor și instalate pe orice sistem și se pot încorpora în aplicații complexe, cum ar fi cele de comunicații (inclusiv transmiterea secretizată a imaginilor statice).

În cazul metodelor digitale de secretizare a imaginilor, nivelul de securitate pe care acestea le oferă, gradul de secretizare a informației, viteza de criptare, toate acestea depind de algoritmul criptografic utilizat. Începând din momentul în care a apărut criptografia cu chei publice, s-a pus întrebarea care este mai bună dintre cele două tipuri de criptografii. În urma unor studii a ieșit în evidență faptul că numărul și lungimea mesajelor sunt mult mai mari dacă se utilizează algoritmi cu chei publice decât algoritmi simetrici. Concluzia: algoritmii simetrici sunt mult mai eficienți decât cei cu chei publice. Însă cele două tipuri de criptografie rezolvă tipuri diferite de probleme. Algoritmii simetrici sunt cei mai buni pentru criptarea datelor. Viteza de lucru este ridicată și nu sunt susceptibili la atacul prin textul cifrat ales. Algoritmii cu chei publice pot face ceea ce algoritmii simetrici nu pot: sunt cei mai buni pentru administrarea (distribuirea) cheilor și pentru protocoalele de autentificare. În concluzie, ținând cont și de faptul că imaginile conțin cea mai mare cantitate de informații din multitudinea de date transmise printr-un sistem de comunicații, pentru secretizarea transmisiilor de imagini statice este indicat de utilizat un algoritm simetric.

Alegerea imediată a unui algoritm criptografic simetric care să fie utilizat în secretizarea imaginilor statice s-a oprit asupra algoritmului DES, care, chiar dacă este primul dintr-o serie de algoritmi criptografici, este unul dintre cei mai rapizi chiar și la ora actuală.

Secretizarea imaginilor s-a dorit să păstreze formatul inițial al acestora (adică după criptare să poată fi încă vizualizate sub formă de imagini, dar criptate) în primul rând datorită utilizărilor posibile ale unei astfel de secretizări: în transmisia facsimil și în transmisia imaginilor în mișcare (filme, televiziune digitală), pentru a se adapta la cea de-a doua utilizare posibilă, secretizarea trebuind să devină atât de rapidă încât să permită procesarea a cel puțin 25 de imagini (cadre) pe secundă.

Dorința de a păstra formatul imaginii și după criptare a avut și un al doilea motiv: neexistența pe piața actuală a unui program care să facă acest lucru. Programele existente fac secretizarea imaginilor fără a ține cont de formatul acestora, imaginile fiind privite ca niște fișiere de date, singura diferență care le deosebește de acestea fiind mărimea fișierelor care le conțin.

În urma secretizării imaginilor statice cu algoritmul DES, rezultatele obținute în urma criptării realizate pe mai multe tipuri de imagini demostrează că algoritmul criptografic ales este eficient pentru imaginile de tip „zgomotoase” și fără efectul dorit pentru imaginile de tip „uniforme”.

Rezultatele obținute ar fi similare în cazul utilizării oricărui alt algoritm criptografic cunoscut (IDEA, Blowfish, RC2, RC4, RC5 etc.) și asta deoarece toți acești algoritmi criptează blocuri de date cu o lungime fixă. Cum criptarea imaginii se face linie cu linie (pentru a păstra formatul imaginii), atunci, dacă liniile imaginii originale se aseamănă unele cu altele, este evident că și linile imaginii criptate vor fi asemănătoare între ele, rezultând ineficiența algoritmilor criptografici de a secretiza imaginile de tip „uniform”.

Pentru a cripta eficient și cazul acestor imagini este necesară utilizarea unui alt tip de algoritm diferit de tipurile cunoscute de algoritmi criptografici.

Alegerea care a urmat s-a oprit la utilizarea generatoarelor de numere pseudoaleatoare în criptare, pentru o secretizare eficientă selectând din multitudinea de tipuri de generatoare, două generatoare din clase total diferite: primul este generatorul „Mother-of-All pseudo aleator number” din categoria generatoarelor congruențial liniare, cel de-al doilea fiind generatorul RANROT de tip A, un generator făcând parte din categoria generatoarelor haotice de numere pseudoaleatoare. Cele două generatoare au fost alese ca urmare a rezultatelor foarte bune obținute la testele de aleatorism, și în ideea că prin combinarea rezultatelor celor două generatoare, unul cu lungime aleatoare a perioadei de repetiție și unul cu lungime cunoscută, se va lua cei mai bun din ambele categorii de generatoare și astfel generatorul obținut va fi mai satisfăcător pentru aplicația dorită.

Astfel a rezultat generatorul de numere pseudoaleatoare „RAND” care este obținut prin combinarea rezultatelor generatorului „Mother-of-ALL pseudo aleator number” cu rezultatele generatorului „RANROT” de tip A.

În urma criptării realizate pe mai multe tipuri de imagine (în funcție de culoare și uniformitate), rezultatele obținute au evidențiat faptul că utilizarea generatorului „RAND” în scopuri criptografice este eficient în cazul tuturor imaginilor, indiferent dacă sunt „zgomotoase” sau „uniforme”.

Problemele apar în momentul în care se criptează două imagini cu aceeași cheie și asta deoarece dacă este utilizat același număr „sămânță” pentru două imagini, unele informații despre ambele imagini pot să fie descoperite fără a se cunoaște la recepție (sau de către un criptanalist) acest număr „sămânță” (care reprezintă de fapt cheia de criptare/decriptare).

Punând în balanță toate avantaje și dezavantaje celor două metode de secretizare (DES și RAND), rezultatul combinării celor două reiese că ar fi extrem de benefic și s-ar concretiza prin obținerea unui nou algoritm de secretizare numit RandDes, un algoritm mai complex, mai puternic, mai sigur.

Prin urmare, dacă imaginea originală este secretizată mai întâi prin metoda RAND iar apoi prin metoda DES, imaginea criptată va avea atât caracteristicile secretizării cu RAND cât și ale secretizării cu DES. Evident, la recepție, decriptarea trebuie făcută invers, adică mai întâi se decriptează cu DES și apoi cu RAND.

Algoritmul de secretizare RandDes ar avea următoarele avantaje:

datorită criptării inițiale cu RAND, criptarea imaginilor va fi extrem de eficientă, indiferent dacă imaginile sunt „zgomotoase” sau „uniforme”;

datorită criptării cu DES se va obține o criptare puternică a imaginii originale;

cheia de criptare/decriptare va deveni mai mare și anume de 96 de biți (cheia pentru RAND este pe 32 de biți iar cea pentru DES este pe 64 de biți) crescând astfel în mod considerabil timpul necesar pentru o decriptare neautorizată;

datorită criptării cu DES după criptarea cu RAND a dispărut necesitatea impusă la secretizarea numai cu RAND de a modifica cheia de criptare (cea pe 32 de biți) după fiecare criptare a unei imagini, dispărând astfel și posibilitatea de a extrage unele informații despre două imagini criptate cu aceeași cheie prin operația XOR executată asupra acestora.

În urma calculului făcut în subcapitolul 6.4, „Rezistența la atacurile criptanalitice a algoritmului RandDes”, rezulta că timpul total pentru decriptarea RandDes neautorizată ar ajunge undeva în jur de 100 de zile, acest timp fiind suficient de mare pentru a considera algoritmul RandDes sigur din punct de vedere criptanalitic.

Î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 sistemele de comunicație între acestea. 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 clasică și cu chei publice. Criptografia este tot mai cerută și mai folosită pentru contracararea problemelor de securitate iar domeniile în care se dezvoltă această cerință sunt din ce în ce mai multe.

Criptările de imagini, sunete, documente, se numără, la ora actuală, printre cele mai cerute metode de secretizare a datelor și chiar dacă într-un final nu prea îndepărtat se va dori înglobarea tuturor tehnicilor de secretizare sub o singură entitate, dezvoltarea criptografiei specializate, pe tipuri de date, apare normală în contextul în care utilizarea acestor date prezintă o varietate mare de domenii țintă, fiecare domeniu fiind dezvoltat pe caracteristici particulare ale unor astfel de date.

Bibliografie:

[1] Aurel Vlaicu, “Prelucrarea digitală a imaginilor”, Ed. Albastră, Cluj-Napoca,1997

[2] Creangă Ion, “Metode în procesarea digitală a imaginilor”, Ed. Academia Tehnică Militară, București, 1994.

[3] Răcuciu Ciprian, “A XXVI-a Sesiune de Comunicări Științifice cu Participare Internațională – Aspecte privind secretizarea semnalelor video”, Ed. Academia Tehnică Militară, București, 1995.

[4] Bruce Schneier, “Applied Cryptography”, John Wiley & Sons, 1996.

[5] A. Salomma, “Criptografie cu chei publice”, Ed. Militară, București, 1993.

[6] V. V. Patriciu, “Criptografia și Securitatea Rețelelor de Calculatoare cu aplicații în C și Pascal”, Ed. Tehnică, București, 1994.

[7] E. Biham, A. Shamir, “Differential Cryptanalysis of DES-like Cryptosystems”, Advances in Cryptology – CRIPTO '90 Proceedings, Springer-Verlag, 1991.

[8] Electronic Frontier Foundation, „Cracking DES: Secrets of Encryption Research, Wiretap Politics & Chip Design”, 1999.

[9] „The Current State of DES – Dr. Dobb's Journal”, comunicare Internet, 2001.

[10] V. V. Patriciu, M. Pietroșanu-Ene, I. Bica, C. Cristea, “Securitatea Informatică în UNIX și INTERNET”, Ed. Tehnică, București, 1994.

[11] Ion Angheloiu, V. V. Patriciu, “Securitatea și Protecția Informației în Sistemele Electronice de Calcul”, Ed. Militară, București, 1986.

[12] Adrian-Traian Murgan, “Principiile Teoriei Informației în Ingineria Informației și a Comunicațiilor”, Ed. Academiei Române, București, 1998.

[13] L. Coculescu, V. Cristea, I. Finta, V. V. Patriciu, F. Pilat, “Proiectarea Sistemelor Teleinformatice”, Ed. Militară, București, 1988.

[14] Kovacs Sandor, „Delphi 3.0. Ghid de utilizare”, Editura Albastră, Cluj-Napoca, 2000.

[15] Mihai Oltean, „Programare avansată în Delphi”, Editura Albastră, Cluj-Napoca, 2000.

Similar Posts