Aplicație Software Privind Criptareadecriptarea Folosind Sistemele Haotice

UNIVERSITATEA DIN ORADEA

FACULTATEA DE INGINERIE ELECTRICĂ ȘI TEHNOLOGIA INFORMAȚIEI

PROGRAMUL DE STUDII: TEHNOLOGIA INFORMAȚIEI

FORMA DE ÎNVĂȚĂMÂNT ZI/CU FRECVENȚĂ

Proiect de diplomă

COORDONATOR ȘTIINȚIFIC

Conf. Dr. ANTON SOLOI

ABSOLVENT

COVEI MARIAN CĂTĂLIN

ORADEA

ANUL 2016

UNIVERSITATEA DIN ORADEA

FACULTATEA DE INGINERIE ELECTRICĂ ȘI TEHNOLOGIA INFORMAȚIEI

PROGRAMUL DE STUDII: TEHNOLOGIA INFORMAȚIEI

FORMA DE ÎNVĂȚĂMÂNT ZI/CU FRECVENȚĂ

APLICAȚIE SOFTWARE PRIVIND CRIPTAREA/DECRIPTAREA
FOLOSIND SISTEMELE HAOTICE

COORDONATOR ȘTIINȚIFIC

Conf. Dr. ANTON SOLOI

ABSOLVENT

COVEI MARIAN CĂTĂLIN

ORADEA

ANUL 2016

Abstract

Cryptography is the science of secret codes, enabling the confidentiality of communication through an insecure channel. A number of encryption schemes have been anticipated in modern years for security over the network for the development of military, government and medical applications. As per security concern, security is an important issue, and encryption is one of the ways to ensure security. To make the cryptosystem more complex, fast and robust, Lorenz chaos is applied in the ELGamal cryptographic algorithm. To reduce the computational load, and yet keep the security level high, firstly, we implement the ELGamal cryptographic algorithm in MATLAB then Lorenz chaos is applied on it. Chaotic cryptosystem is computationally economic and fast.

Lorenz Chaos is a deterministic, random-like process found in a non-linear dynamical system that is nonperiodic, non converging, and bounded. The fundamental characteristics of chaos, such as ergodicity, mixing property, and sensitivity to initial conditions /control parameters are properties of good ciphers, which also include confusion/diffusion, balance, and avalanche effect.

The characteristics of the Lorenz chaotic system have attracted our attention since it has many fundamental properties such as ergodicity, sensitivity to initial condition and system parameter and mixing property.

The ElGamal encryption system is an asymmetric key encryption algorithm for public-key cryptography which is based on the Diffie–Hellman key exchange. After applying Lorenz chaos in ELGamal algorithm we observe that both Security and Speed increases as compare to the conventional cryptographic algorithm.

CUPRINS

Formularea temei

Implementarea criptosistemului Baptista-Lorenz-ElGamal și realizarea unei interfețe grafice GUI în MATLAB ușor de utilizat astfel ca pentru utilizare să nu necesite cunoștiințe avansate de matematică și care să exemplifice algoritmul de criptare ElGamal bazat pe sistemul haotic Baptista-Lorenz.

I.Introducere

Criptografia reprezintă o ramură a matematicii care se ocupă atât cu securizarea informației, cât și cu autentificarea și restricționarea accesului într-un sistem informatic. În realizarea acestor deziderate se utilizează cu precădere metode matematice. Termenul „criptografie” este compus din cuvintele de origine greacă κρυpϑός, kryptós (ascuns) și γράφeιν, grafein (a scrie). Criptografia are următoarele obiective:

Confidențialitatea – proprietatea de a păstra secretul informației, pentru ca aceasta să fie folosită doar de persoanele autorizate.

Integritatea datelor – proprietatea de a evita orice modificare (inserare, ștergere, substituție) neautorizată a informației.

Autentificare – proprietatea de a identifica o entitate conform anumitor standarde. Este compusă din:

autentificarea unei entități;

autentificarea sursei informației;

Non-repudierea – proprietatea care previne negarea unor evenimente anterioare.

Celelalte obiective legate de securitatea informației precum autentificarea mesajelor, semnături, autorizare, validare, controlul accesului, certificare, time stamping, confirmarea recepției, anonimitate, revocare pot fi derivate din acestea patru.

Criptanaliza – din greacă κρυpϑός, kryptós (ascuns) și analýein (a dezlega) – este știința care studiază metodele de obținere (spargere) a înțelesului informațiilor criptate, fără a avea acces la informația secretă (cheia) necesară în mod normal pentru aceasta.

Criptografia împreună cu criptanaliza formează Criptologia – din greacă kryptos (ascuns) și logos (cuvânt) – știința care studiază tehnicile atât pentru a limita cât și pentru a obține accesul la informații secrete folosindu-se cu precădere de metode de criptare și decriptare.

Criptografia este utilizată în cifrarea mesajelor, a documentelor, în transmiterea semnalelor la distanță precum transmisiunea TV digitală, tranzacțiile financiare, precum bursa de valori, operațiuni între bănci, cărți de credit.

Odată cu trecerea timpului si a apariției microprocesoarelor, metodele de criptografie s-au modificat. Astăzi, ele sunt puternic fundamentate cu ajutorul algoritmilor matematici. Actualmente, odată cu creșterea puterii de procesare a informațiilor, este ușor să spargi textele cifrate cu ajutorul algoritmilor clasici din criptografie.

În sistemele moderne, construcția algoritmilor criptografici este obținută prin compunerea de funcții matematice, denumite primitive. Pentru a fi utilizate în cifrarea sau decifrarea datelor, astfel de primitive trebuie să aibă viteză/eficiență și ușurință în schimbul cheilor.

Există criterii definite pentru a evalua și clasifica primitivele. Conform acestor criterii, algoritmii criptografici se pot diviza în cifruri simetrice și asimetrice. Algoritmii asimetrici folosesc chei diferite pentru cifrarea și decifrarea datelor. Pe de altă parte, algoritmii simetrici folosesc aceeași cheie pentru cifrare și decifrare. Cifrurile simetrice sunt divizate în cifruri de flux și cifruri de bloc. Cifrurile de flux cifrează unitățile de text plan în mod individual la fiecare iterație în parte, pe când cifrurile de bloc cifrează un bloc de unități de text clar pentru fiecare iterație.

Chiar dacă cifrurile simetrice sunt mai rapide decât cele asimetrice, folosirea aceleiași chei pune în dificultate managementul cheilor. În consecință, majoritatea sistemelor criptografice folosesc un model hybrid, adică, schimbul cheilor cifrurilor simetrice este realizată cu un algoritm asimetric, iar schimbul de date este realizat cu un algoritm simetric. Folosirea cifrurilor simetrice pentru schimbul de date se justifică prin viteza mare a acestora și utilizarea unui minim de resurse hardware. Aceste caracteristici vin în întâmpinarea necesităților actuale ale criptografiei. În acest sens sunt studiate atât cifrurile simetrice cât și cele asimetrice, cu focalizarea în special pentru cifrurile simetrice de flux.

I.1. Noțiuni fundamentale în criptografie

O mulțime nevidă T se numește alfabet. Elementele (caracterele) alfabetului T poartă numele de unitate de alfabet sau litere. Una și aceeași litera poate intra într-un cuvânt de mai multe ori. O succesiune finită de elemente din alfabetul T se numește cuvânt. Numărul de elemente ale alfabetului se numește lungimea alfabetului.

Un cuvânt ce nu conține nici o literă se numește cuvânt nul. Lungimea cuvântului, notată cu w, este numărul de litere în acest cuvânt, unde fiecare literă se considera de câte ori se întâlnește în el.

Vom nota cu T* mulțimea tuturor cuvintelor alfabetului T. Submulțimile mulțimii T* le vom numi limbaje formale peste T. Un mesaj în forma sa originară se numește text clar, în engleză plaintext și îl vom nota pt sau m. Rescrierea textului clar, folosind o metodă cunoscută numai de expeditor/destinatar se numește criptare sau cifrare a mesajului.

Textul criptat sau text cifrat (în engleză ciphertext) este textul obținut ca urmare a operației de criptare a textului clar. Textul criptat îl vom nota cu ct sau c. Textul cifrat se mai numește criptogramă. Procesul retransformării criptogramei în text original este numit decriptare. Un canal este o cale pentru fluxul de informații.

Destinatarul primește printr-un canal textul criptat si îl decriptează, știind metoda folosită pentru criptare, obținând mesajul inițial. În literatura de specialitate expeditorul de obicei este numit Alice iar destinatarul este numit Bob. Deci, Alice și Bob trebuie să stabilească în prealabil detaliile procesului de criptare și de decriptare. Așadar, criptarea este o metodă de camuflare a textului clar în așa fel încât conținutul să nu sufere modificări semantice.

Criptarea se folosește pentru a fi siguri că informația este inaccesibilă persoanelor care nu dețin instrumentul necesar decriptării, chiar dacă oricine poate vedea datele în forma criptografică.

Persoana care interceptează criptograma și încearcă să obțină textul clar aplicând diverse metode, însa fără a avea cheia de decriptare, este numită criptanalist – în literatura de specialitate putând numele de Oscar. Sistemul care realizează operațiile de criptare și decriptare se numește sistem de criptare (criptosistem). În criptografia modernă un sistem de criptare este definit ca o structură cu cinci componente (P,C,K,E,D):

P este mulțimea textelor în clar, scrise pentru un alfabet nevid T,

K este mulțimea cheilor de criptare,

E este familia funcțiilor injective de criptare dependentă de cheie k și de un algoritm de criptare se notează prin

D este familia funcțiilor injective de decriptare dependentă de cheie k și de un algoritm de decriptare

C este mulțimea mesajelor de text criptat:

.

Metodele de criptare pot fi divizate pe categorii în funcție de următoarele criterii:

tipul operațiilor folosite:

bazate pe substituții

bazate pe permutări

tipul de chei folosite

sisteme simetrice (în engleză single key, secret key, private key)

sisteme asimetrice (în engleză two key, public key)

metoda prin care sunt procesate datele

cu cifruri bloc

cu cifruri în flux (în engleză stream chiper)

Cifrurile clasice foloseau substituția sau permutarea. Printre metodele moderne de criptare deosebim două direcții principale:

sistemele cu cheie secretă (sistemele simetrice) în care aplicația ek este bijectivă,

sistemele cu chei publice (sistemele asimetrice) în care aplicația ek nu este bijectivă.

Figura 1. Metode de criptare

Există două tipuri de sisteme simetrice: sisteme care se bazează pe algoritmi de tip bloc și sisteme care se bazează pe algoritmi de tip flux (în engleză stream cipher). Algoritmii de tip bloc acționează asupra blocurilor de text clar și text cifrat. Algoritmii de tip bloc criptează mesajul în blocuri de 64-265 biți. Pentru aceasta se aplică o funcție matematică între un bloc de biți ai mesajului în clar și cheie (care poate varia ca mărime), rezultând același număr de biți pentru mesajul criptat. Funcția de criptare este realizată astfel să îndeplinească următoarele cerințe:

știind un bloc de biți ai textului clar si cheia de criptare, sistemul să poată genera rapid un bloc al textului criptat;

știind un bloc de biți ai textului criptat si cheia de criptare/decriptare, sistemul să poată genera rapid un bloc al textului clar;

știind blocurile textului clar și ale textului criptat, să fie dificil de generat cheia.

Algoritmii de tip flux se aplică șirurilor de text clar și text cifrat la nivel de bit sau octet. Cifrurile flux formează o clasă importantă de algoritmi de criptare. Ceea ce le caracterizează și le diferențiază față de cifrurile bloc este faptul că cifrurile flux procesează informația în unități oricât de mici, chiar bit cu bit, aplicând funcția XOR între biții cheii și biții de cifrat, iar funcția de criptare se poate modifica în cursul criptării. Cifrurile flux sunt algoritmi de memorie, în sensul că procesul de criptare nu depinde doar de cheie și de textul clar, ci și de starea curentă. În cazul în care probabilitatea erorilor de transmisie este mare, folosirea cifrurilor flux este avantajoasă deoarece au proprietatea de a nu propaga erorile. Ele se folosesc și în cazurile în care datele trebuiesc procesate una câte una, datorită lipsei de spațiu de memorie.

Cifruri asimetrice utilizează o pereche de chei – o cheie publică și o cheie privată. Un utilizator care deține o astfel de pereche își publică o cheie (publică) astfel încât oricine dorește să o poată folosi pentru a îi transmite un mesaj criptat. Numai deținătorul cheii secrete (private) este cel care poate descifra mesajul criptat. Cele două chei sunt legate matematic, însă cheia privată nu poate fi obținută din cheia publică. În caz contrar, oricine ar putea decripta mesajele destinate unui alt utilizator, fiindcă oricine are acces la cheia publică a acestuia. Criptografia asimetrică se mai numește criptografie cu chei publice și este compusă din două mari ramuri:

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

Semnături digitale – un mesaj semnat cu cheia privată a emițătorului poate fi verificat de către oricine, prin acces la cheia publică corespunzătoare, astfel asigurându-se autenticitatea mesajului.

În ultimii ani, aplicațiile haotice au fost folosite pentru criptarea atât a textelor dar și a imaginilor. Multe din aceste criptosisteme au folosit o arhitectură bazată pe substituții și permutări. Aceste două proceduri sunt repetate de câteva ori pentru a obține imaginea/textul criptat final. De exemplu, în [1] Fridrich propune un algoritm de criptare bazat pe haos și pe permutări și substituții, anume procesul de criptare se compune din trei faze:

toți pixelii sunt mutați folosind o aplicație 2D haotică,

apoi pixelii cu ajutorul unei permutări sunt mutați în altă poziție,

în final cu ajutorul unui proces de substituție aceștia sunt alterați secvențial.

Mai întâlnim folosirea aplicațiilor haotice și în fazele doi și trei. De exemplu, Guan și colaboratorii au folosit o aplicație haotică 2D în faza de premutare a poziției pixelilor și sistemul haotic discretizat Chen pentru mascarea valorii pixelilor. Lian și colaboratorii au folosit un criptosistem haotic standard în faza de permutare și aplicația logistică cuantizată în faza de substituție. Parametrii acestor două aplicații sunt determinați printr-o cheie generată în fiecare rundă.

I.2. Importanța și actualitatea temei

În prezent, se dezvoltă noi tehnici de criptare bazate pe metode cu secvențe de cod pseudoaleatoare, metode cu chei generate de sisteme haotice s.a.

Metodele bazate pe teoria haosului pot fi aplicate cu succes pentru secretizarea transmisiei, de exemplu sistemul Baptista simplu sau modificat, dar pot fi proiectate și în spații multidimensionale (ca în cazul imaginilor digitale 2D și 3D, respectiv pentru transmisii de date-voce, audio-video, etc.) Criptosistemele bazate pe haos utilizează sisteme dinamice haotice deterministe fie continue, fie discrete. Prin dinamica lor aceste sisteme determină în mod unic evoluția stărilor criptosistemului și permit decodarea secvenței codate. Astfel, sistemele discrete sunt descrise de ecuații funcționale recurente de forma

unde aplicația caracterizează dinamica sistemului, putând fi liniară sau neliniară.

Un exemplu de sistem discret este sistemul descris de ecuația logistică :

Se preferă utilizarea sistemelor dinamice discrete neliniare care pot avea în regim permanent mai multe mulțimi limită, cu bazine de atracție diferite, dependente senzitiv de condiția inițială astfel că predicția pe termen lung a stării sistemului să devină imposibilă. În cazul criptosistemelor haotice mixte, procedura de criptare și de decriptare se realizează prin iterații multiple, inverse și directe iar secvența codată corespunde numărului de iterații efectuat. Aceste sisteme se dovedesc deosebit de robuste față de atacurile statistice.

Principiul criptografiei bazate pe haos este dat de difuzia și confuzia parametrilor traiectoriilor generate pe baza cheii de criptare și a mesajului transmis. La mici variații ale cheii de transmisie trebuie să apară modificări extreme ale traiectoriei din spațiul stărilor pentru sistemul dinamic utilizat. Astfel se asigură rezistența criptosistemului față de atacurile brute bazate pe încercarea tuturor cheilor posibile de transmisie. Traiectoriile haotice nu sunt nici periodice, nici cvasiperiodice ci au aspect aleator cu un spectru de putere de tip zgomot alb de bandă largă.

Nici un calculator sau program software nu poate prezice traiectoria unui sistem dinamic haotic deoarece complexitatea algoritmică a traiectoriilor este pozitivă, fiind dată de entropia K-S (Kotulski-Szczepanski) a sistemului. Pe acest fapt se bazează ideea proiectării unor tehnici eficiente de criptare a datelor pe baza teoriei haosului astfel încât entropia sistemului să crească prin codare și să depășească limitele capacității computaționale a criptanalistului.

Optimizarea algoritmilor de criptare vizează reducerea timpului de procesare a datelor, reducerea capacității de memorie necesară, diversificarea cheilor posibile de transmisie, respectiv scăderea eficienței atacurilor criptografice. Aplicarea unei precodări de compresie a sursei informaționale pentru scăderea redundanței acesteia reduce riscul de intercepție a cheii de transmisie și eficiența oricărui atac. Valoarea unui criptosistem se apreciează pe baza mai multor factori:

grad de secretizare,

mărimea spațiului cheilor de criptare,

propagarea erorilor,

distanța de unicitate.

Se poate apela la o prezentare sumară a conținutului capitolelor pe care le conține lucrarea.

Lucrarea este divizată in sase capitole si la finalul acesteia un glosar clarifica termenii din aria criptografiei care au fost utilizati.

In capitolul unu intitulat Introducere, sunt prezentate principalele noțiuni privind criptografia dar și importanța și actualitatea temei. De asemenea sunt prezentate principalele motivații privind alegerea temei dar și întrebările la care lucrarea dorește să răspundă.

Capitolul doi intitulat Bazele teoretice, sunt descrise caracteristicile unui criptosistem bun, criptosistemul ElGamal, elemente esențiale din sistemele dinamice haotice, sistemul dinamic haotic Lorenz și două exemple de criptosisteme haotice din literatura de specialitate – necesare pentru a avea un reper în demersul efectuat în lucrare.

În capitolul trei este descris criptosistemul Lorenz Baptista combinat cu metoda lui ElGamal pentru criptarea textelor. În acest context, sunt prezentate elementele criptosistemului anume: operatorul de proiecție, metoda numerică folosită, metoda de asociere, selectarea cheii dar și etapele proceselor de criptare/decriptare. Tot în acest capitol am descris cum am proiectat GUI – elementele grafice ale acestuia, dar și tehnicile de animație folosite.

Capitolul patru l-am dedicat descrierii experimentelor numerice efectuate dar și evaluării performanțelor criptosistemului studiat.

În capitolul cinci am formulat câteva concluzii privind avantajele și dezavantajele criptosistemelor haotice rezultate din analiza criptosistemului studiat.

Considerațiile finale privind demersul efectuat sunt prezentate în ultimul capitol.

I.3. Motivația pentru alegerea temei

În ultimii ani, securitatea datelor de text, imagine și video, a devenit foarte importantă pentru multe aplicații cum ar fi conferințe video, mesaje strict secrete, aplicații medicale, aplicații militare s.a. Din acest motiv au fost extinse două dintre cele mai importante tehnologii în securitatea datelor.

primul grup de tehnologii are drept scop protecția conținutului mesajului prin criptare,

al doilea grup de tehnologii este tehnica Watermarking Digital, care are ca scop să comaseze un mesaj în datele multimedia. Aceste două tehnologii se pot folosi complementar.

Atât utilizarea intensivă a echipamentelor portabile cât și noile tehnologii de informație stimulează comunicarea dintre persoane, dintre companii, dintre persoane și companii. De asemenea, este din ce în ce mai comună utilizarea mijloacelor precum wireless, bluetooth și comunicare prin radio pentru schimbul de informații în siguranță. Conjuncția acestor factori stimulează cererea de transmisii de date eficient și sigur, adică cifrare mai rapidă și cu un consum cât mai mic de memorie. Având ca dublu obiectiv – creșterea siguranței și minimizarea resurselor de calcul – a fost studiată aplicabilitatea sistemelor haotice în criptografie.

Există două modalități principale de utilizare a sistemelor haotice:

modul sincronizare – elaborat de Pecora L. M., Carroll T. L. in [2] si bazat pe criptosistemele haotice cu sincronizare analogică,

modul căutare – elaborat de Baptista M.S. in [3], folosește aplicații haotice fără a fi nevoie de sincronizarea sistemelor între emitent și receptor.

Viabilitatea acestor sisteme se bazează pe capacitatea sistemelor haotice de a avea o evoluție complexă, chiar și cu o formulare matematică simplă. Acest lucru indică o bună aplicare în sistemele criptografice datorită atât a caracteristicilor de confuzie și difuzie pe care haosul le induce cât și prin simplitatea implementării – codul sursă simplu și utilizarea scazută a memoriei.

I.4. Întrebările la care lucrarea își propune să formuleze răspunsuri

Folosirea sistemului haotic Lorenz poate aduce beneficii în criptografie ?

Criptosistemul Baptista-Lorenz care constă în combinarea sistemului haotic Lorenz cu ideea de criptare a lui Baptista dar și cu metoda ElGamal poate fi implementat cu ajutorul aplicației GUI in Matlab ?

II. Bazele teoretice

II.1. Caracteristicile unui criptosistem bun

În 1949, Claude Shannon, în [4], propune următoarele caracteristici pentru un criptosistem bun:

1. Gradul de securitate dorit trebuie să determine cantitatea de muncă depusă la criptare/decriptare.

Acest principiu este o reiterare a principiului temporal și a observației că un cifru simplu poate fi suficient de puternic pentru un interval scurt de timp.

2. Mulțimea cheilor sau algoritmul de cifrare trebuie să fie liber de complexitate.

Principiul implică faptul că alegerea cheilor sau a tipurilor de text clar cu care algoritmul va lucra nu trebuie restricționată. De exemplu, un algoritm care poate fi folosit doar pe mesaje care în text clar au un număr egal de A-uri și E-uri sau care necesită chei a căror lungimi sunt numere prime, este prea restrictiv.

3. Implementarea procesului trebuie să fie cât mai simplă.

Principiul 3 este formulat cu gândul la o implementare manuală. Odată cu folosirea calculatoarelor, pot fi folosiți algoritmi mult mai complicați. Totuși complexitatea procesului este importantă.

4. Erorile în cifrare nu trebuie să se propage și să corupă restul informației din mesaj.

Acest principiu statutează că se pot comite erori la criptare și că efectul acestora trebuie să fie local.

5. Mărimea textului criptat nu trebuie să fie mai mare decât a textului original.

Ideea este că un text criptat de o mărime cu mult mai mare nu poate conține mai multă informație utilă decât textul clar, ba chiar poate oferi criptanalistului mai multe indicii. De asemenea, un text cifrat lung implică mai mult spațiu de memorie și crește timpul de comunicare.

Aceste principii au fost formulate înainte ca tehnica de calcul să devină disponibilă pe scară largă și anumite aspecte ale implementării manuale devin fezabile cu calculatorul.

II.2. Logaritmul discret

Fie p un număr prim. Cunoaștem că grupul multiplicativ al elementelor nenule din este un grup ciclic de ordin p-1. Dacă g este un generator al grupului, atunci pentru orice există un exponent astfel încât

(1)

Exponentul a se numește logaritmul discret al lui u în bază g. Îl vom nota prin

(2)

Calculul logaritmului discret este considerat a fi dificil, mai mult – nu se cunosc algoritmi eficienți care să rezolve această problemă.

Exemplu: Fie p = 13. Un generator al grupului este g = 2. În contextul definiției de mai sus, deoarece .

Logaritmul discret poate fi definit în grupuri ciclice oarecare.

II.3. Criptosistemul ElGamal

In [5] se propune criptosistemul ElGamal care se bazează pe rezolvarea problemei logaritmilor discreți care consideră drept date inițiale un grup ciclic G de ordinul n, un generator al grupului și un element . Cel mai important aspect al criptării cu chei publice este acela referitor la faptul că autorul unui mesaj nu are posibilitatea sa îl decripteze mesajul criptat, după ce l-a trimis destinatarului, deoarece nu deține cheia privată necesară descriptării. Astfel, dacă este transmis, din greșeală, un mesaj unui alt destinatar decât cel dorit, acesta nu îl va putea decripta, pastrându-se în acest fel secretul informației. În acest context, două entități numite generic Alice și Bob care doresc să comunice trebuie să parcurgă următoarele etape:

Generarea cheilor pentru criptarea cu chei publice El-Gamal;

Realizarea schimbului de chei publice, care poate fi făcută pe orice canal de comunicații, indiferent de gradul de securitate conferit de acesta;

Criptarea de către Bob a mesajului pe care dorește să-l transmită către Alice.

Decriptarea de către Alice a mesajului cifrat c primit de la Bob.

II.3.1. Generarea cheilor pentru criptarea cu chei publice ElGamal

Fiecare entitate creează o cheie publică și o cheie privată corespunzătoare. Alice trebuie să aplice următorii pași:

Generarea unui număr p prim, cu o valoare mare, și a unui număr generator din Zp*;

Selectarea unui număr întreg aleator a – cheia secretă a lui Alice, , și determinarea numărului

(3)

Alice deține cheia publică (p, , ) și cheia secretă a.

II.3.2. Criptarea cu chei publice ElGamal

Bob cripteză mesajul m, prin aplicarea următorilor pași:

Obținerea cheii publice (p, , ) de la Alice;

Reprezentarea mesajului m ca un număr întreg aparținând mulțimii ;

Selectarea unui număr întreg aleator k, ;

Determinare elementelor și a lui k ;

Transmiterea către Alice a textului cifrat .

II.3.4. Decriptarea cu chei publice ElGamal

Pentru a recupera textul m, din textul cifrat c, Alice trebuie să aplice pașii de mai jos:

Folosind cheia privată , calculează cu .

Recuperarea mesajul m calculând .

II.3.5. Verificarea decriptării

Decriptarea permite recuperarea textului mesajului original m, deoarece:

II.3.6. Exemplu de criptare folosind algoritmul ElGamal

Generarea cheii. Alice selectează numărul prim p = 2357 și un din Z2357*. Apoi, Alice își alege cheia privată a = 1751 și calculează = 21751 mod 2357 = 1185.

Cheia publică a lui Alice este (p = 2357, 2, 1185).

Criptarea. Pentru a cripta mesajul m = 2035, Bob selectează un număr întreg aleator k = 1520 și calculează:

= 2357 = 1430

2357 = 697.

Bob trimite lui Alice = 1430 și 697.

Decriptarea. Pentru a decripta, Alice calculează și recuperează mesajul m calculând .

II.4. Sisteme dinamice haotice

II.4.1. Sistem dinamic

Conceptul de sistemul dinamic este o formalizare matematică a unei reguli bine definite ce descrie dependența de timp a poziției unui punct din spațiul stărilor. Exemple elementare de astfel de modele matematice sunt mișcarea pendulului unui ceas, curgerea apei într-o conductă s.a.

Un sistem dinamic este caracterizat în spațiul stărilor de un vector de stare ale cărui componente sunt mărimi ce caracterizează evoluția sistemului în timp. Dinamica sistemului este o regulă bine definită ce descrie starea viitoare ale sistemului pornind de la starea curentă. Regula poate fi deterministă (adică pornind din starea curentă se poate determina unic numai o stare viitoare) sau stocastică – evoluția stării sistemului are caracter aleatoriu.

Numim sistem dinamic neliniar un sistem dinamic ce nu satisfice principiul superpoziției. Cu alte cuvinte, un sistem dinamic neliniar este un sistem în care există cel puțin o variabilă de stare ce nu poate fi scrisă ca o combinație liniară de alte componente independente ale vectorului de stare.

II.4.2. Proprietățile fundamentale ale sistemelor haotice

Fenomenele haotice prezintă proprietăți specifice care le fac complexe și imprevizibile. Teoria haosului studiază sistemele dinamice cu un anumit tip de comportament dinamic. În general, aceste sisteme deterministe se supun unei legi de evoluție specifice. Trebuie menționat că haosul are loc numai în unele sisteme deterministe non-liniare de dimensiune minim trei. În mod explicit, haosul apare atunci când există o evoluție cu aspect dezordonat pe termen lung, care să satisfacă anumite criterii matematice. Există un mulțime de proprietăți care definesc și sintetizează caracteristicile sistemelor haotice. Cele mai importante sunt:

senzitivitatea față de parametrii sistemului: o variația mică a unuia dintre parametrii sistemului este suficientă pentru ca două traiectorii ale sistemului ce pornesc din același punct să ajungă după un timp asimptotic infinit oricât de departe una de alta,

instabilitatea dinamică: denumită și efectul fluture, este senzitivitatea evoluției sistemului față de condițiile inițiale – adică în cazul a două condiții inițiale arbitrar de apropiate sistemul evoluează pe traiectorii semnificativ diferite și divergente (Boguta [6]),

tranzitivitatea topologică: adică sistemul va evolua în timp, astfel încât orice domeniu de valori ale stărilor sistemului poate fi transformat/suprapus în orice alt domeniu dat (Mahieu [7]),

aperiodicitate: sistemul evoluează pe traiectorii neperiodice (Zech [8]),

traiectorii periodice dense: aceasta înseamnă că evoluția sistemului urmează o traiectorie care poate în mod arbitrar să se apropie asimptotic oricât de mult de oricare altă traiectorie.

ergodicitate: caracteristicile statistice ale variabilelor de stare sunt similare, indiferent dacă acestea sunt realizate în timp sau spațiu. Cu alte cuvinte, dinamica sistemului prezintă statistici similare fie în timp fie în spațiu.

pierderea informației cu privire la condițiile inițiale,

autosimilaritate: evoluția sistemului, în timp sau spațiu, prezintă același aspect geometric la diferite scări temporale de observație. Această caracteristică face ca sistemul să apară autorepetitiv la diferite scale de timp (Fabre [9]).

II.4.3. Relația dintre criptografie și sistemele dinamice haotice

Relația dintre sistemele dinamice haotice și criptografie reiese pe de o parte din proprietățile fundamentale ale sistemelor dinamice haotice și pe de altă parte din cerințele ce trebuie să le satisfacă un criptosistem bun, anume:

să fie senzitiv în ceea ce privește modificarea unui bit dintr-o cheie secretă, adică modificarea unui bit din cheia secretă să creează prin criptarea aceluiași text clar un mesaj criptat complet diferit,

să fie senzitiv în ceea ce privește textul clar: adică modificarea unui bit din textul clar să creeze un mesaj criptat complet diferit față de cazul când modificarea nu era produsă,

corespondența dintre textul clar și mesajul criptat trebuie să fie aleatoare,

imposibilitatea de a obține textul în clar din mesajul cifrat, fără a avea la dispoziție cheia,

imposibilitatea de a enumera toate cheile posibile.

Tabel 1. Comparație între proprietățile sistemelor haotice și cele ale sistemelor criptografice [10]

Multe caracteristici ale sistemelor dinamice haotice – ca de exemplu ergodicitatea, aperiodicitatea, senzitivitatea la condițiile inițiale – pot fi folosite în conexiune cu proprietățile de confuzie și difuzie ale criptografiei tradiționale. Mai exact, difuzia în criptografie se referă la proprietatea că dacă afectăm un singur bit din textul clar vor fi afectați practic toți biții din textul criptat. Pe de altă parte, procesul de confuzie asigură ca biții textului criptat să fie mixați. Analogul acestor concepte în teoria haosului sunt senzitivitatea puternică față de condițiile inițiale și tranzitivitatea topologică.

II.5. Sistemul haotic Lorenz

Sistemul haotic simplificat a lui Lorenz [11] modelează mișcarea unității bidimensionale elementare de fluid sub acțiunea fenomenul de transfer de căldură, fluidul fiind încălzit dinspre partea inferioară și răcit dinspre partea superioară.

Deși, mișcarea fluidului poate fi descrisă de un sistem diferențial infinit dimensional. Sparrow in [12], cu ajutorul unor ipoteze simplificatoare a obținut un sistem diferențial cu numai trei variabile independente.

Variabilele independente rămase reprezintă: x – rata de convecție, y – variația temperaturii pe orizontală, z – variația temperaturii pe verticală. Parametrii sistemului Lorenz sunt următorii: σ – numărul lui Prandtl, r – numărul lui Rayleigh, b – parametru ce ține seama de dimensiunile sistemului.

Vom admite ca ipoteză de lucru că . În figura 1, se prezintă traiectoriile sistemului Lorenz pentru următoarele două condiții inițiale și . Parametrii sistemului fiind . Analizând figura constatăm că ambele traiectorii deși pornesc din puncte inițiale diferite, dar sensibil apropiate, au traiectorii topologic echivalente (aceași formă). Astfel ambele par a evolua ciclic către aceleași două puncte. Acesta constituie un prim fapt important al sistemului Lorenz, anume că: toate traiectoriile nestaționare tind către o mulțime topologic complicată, numită atractorul Lorenz.

Figura 2. Traiectoriile 3D ale sistemului Lorenz

Pe de altă parte, în figura 2, unde este reprezentată evoluția lui sistemului pentru cele două condiții inițiale precizate mai sus, se constată că deși la început par a fi identice în timp pe măsură ce se apropie de atractor încep să se indepărteze una de alta. Acest lucru reprezintă o altă caracteristică importantă a sistemelor haotice, anume senzitivitatea mare a traiectoriei sistemului față de condiția inițială.

II.5.1. Proprietăți elementare ale sistemului Lorenz

În mod uzual când analizăm un sistem dinamic începem prin a cerceta punctele de echilibru (staționare) . Acestea sunt definite prin sistemul

Sistemul algebric are trei soluții distincte, anume originea și punctele simetrice față de axa Oz

Cele două puncte de echilibru există numai dacă r>1, iar pentru r=1 vom avea fenomenul de bifurcație. Liniarizarea sistemului Lorenz în punctele de echilibru conduce la sistemul diferențial liniar

Valorile proprii ale matricei Jacobian definesc spectrul matricei, adică

unde

Observăm că pentru ambele valori proprii sunt negative și astfel originea este un sink (punct de echilibru) pentru sistemul Lorenz.

Mai se poate observa că sistemul Lorenz posedă o simetrie față de axa Oz, anume dacă

, atunci

adică reflexia față de axa Oz conservă câmpul vectorial. În particular dacă este soluție a sistemului Lorenz atunci și este soluție. Pentru deducem și astfel axa Oz este invariantă. Pe această axă vom avea ecuația diferențială , adică toate soluțiile tind la originea axei Oz. De fapt pentru , toate traiectoriile (soluțiile) sistemului Lorenz tind spre origine.

Propoziție Dacă , atunci toate traiectoriile sistemului Lorenz tind spre punctul de echilibru.

Demonstrație

Vom construi funcția Lyapunov

pe care o derivăm în sensul sistemului Lorenz, adică

Prin urmare, adică L este descrecătoare și în consecință toate traiectoriile sistemului Lorenz tind spre punctul de echilibru.

Pentru cazul când , observăm că:

Valoarea proprie devine pozitivă și prin urmare originea este un punct șa cu două suprafețe bidimensionale stabile și o curbă instabilă.

Cele două puncte de echilibru pornesc din origine (pentru r=1) și atunci când r crește față de valoarea 1, se depărtează de origine.

Propoziție Pentru punctele de echilibru devin puncte sursă.

Demonstrație Valorile proprii ale matricii Jacobiene sunt rădăcinile polinomului

Când r=1 polinomul are rădăcinile negative și distincte și . Aceste rădăcini sunt distincte deoarece

În consecință, pentru r apropiat de 1, dar mai mare ca 1, polinomul are trei rădăcini reale, negative, distincte și apropiate de aceste valori. Mai mult, observăm că pentru r mai mare ca 1 și obținem . Analizând graficul lui , pentru r apropiat de 1, cele trei rădăcini ale lui sunt reale și negative.

Devine important răspunsul la întrebarea care este cea mai mică valoare a lui r pentru care polinomul are rădăcini cu partea reală nulă. Dacă admitem că două rădăcini sunt de forma , rezolvând ecuația – prin egalarea părții reale și cea imaginare cu zero – se obține că valoarea minimă a lui .

Mai remarcăm că bifurcația Hopf apare când . Pentru , nu mai putem afirma că toate soluțiile tind spre origine. De altfel, se poate spune că soluțiile pornesc departe de origine și se apropie foarte mult de ea. Pentru a fi mai preciși vom nota prin

și remarcăm că definește un elipsoid centrat în punctul .

Se poate arăta că există o valoare reală pozitivă pentru care orice soluție a sistemului Lorenz ce se află în afara elipsoidului are traiectoria ce străpunge elipsoidul și rămâne în interiorul lui până la finalul evoluției.

Consecința directă a acestui fapt este că toate soluțiile depărtate de origine sunt atrase de o mulțime ce se află în interiorul elipsoidului . Vom nota prin mulțimea punctelor traiectoriilor sistemului Lorenz ce sunt în interiorul elipsoidului atât prin evoluții prograsive în timp dar și prin evoluții regresive. Astfel mulțimea limită a oricărei soluții a sistemului Lorenz trebuie să fie submulțime a lui . Pentru a vedea acest lucru vom nota prin

divergența cîmpului vectorial F. Divergența lui F măsoară cât de repede se modifică volumul elementar sub acțiunea fluxului . Dacă D este un domeniu cu frontiera netedă și este imaginea lui D în fiecare moment de timp, mapat prin fluxul atunci vom nota prin volumul lui . Prin teorema lui Liouville, obținem

.

În cazul sistemului Lorenz se poate obține imediat este o constantă negativă deci volumul descrește cu o rată de descreștere constantă și astfel

adică volumul tinde exponențial spre zero. În particular, volumul lui este zero.

II.5.2. Atractorul Lorenz

Comportarea sustemului Lorenz când parametrul r crește este subiectul multor comunicări științifice. Poate cel mai interesant subiect de studiu este structura mulțimii de atracție a soluțiilor sistemului Lorenz – mulțime numită atractor. Altfel spus un atractor pentru soluția unui sistem dinamic este o mulțime invariantă care atrage toate soluțiile învecinate ei. Pentru a fi mai preciși formulăm următoarea

Definiție Fie un sistem diferențial în cu soluția dată de fluxul . O mulțime se numește atractor al lui dacă:

este compactă și invariantă,

există o mulțime deschisă U ce conține drept submulțime astfel ca pentru fiecare și pentru orice are loc și .

pentru orice două puncte și oricare vecinătați ale acestor puncte există o traiectorie a soluției ce trece prin urmând ca mai apoi să treacă și prin (tranzitivitatea)

În continuare vom considera doar cazul special al sistemului Lorenz – caz definit de următoarele valori ale parametrilor . Prin urmare vom studia sistemul Lorenz

.

În secțiunea anterioară, am stabilit că avem trei puncte de echilibru: originea și . În origine găsim valorile proprii

.

Sistemul Lorenz linarizat în origine este

În punctele se poate arăta că există o singură valoare proprie cu partea reală negative și o pereche de valori proprii conjugate cu părțile reale pozitive. Observăm că datorită simetriei, rotațiile traiectoriilor în jurul punctelor sunt în sens opus una față de alta(vezi figura 2). Se mai poate observa că traiectoria din dreapta axei Oz se apropie de exemplu de punctul ca ulterior să se depărteze de acesta. Traiectoria din partea stângă este o reflexie a traiectoriei din dreapta față de axa Oz.

Figura 3. Traiectoriile sistemului Lorenz liniarizat

Observăm că traiectoriile par a se învârti circular în jurul punctelor de echilibru, câteodată în jurul lui altă dată în jurul lui . În particular, aceste curbe se intersectează în planul (ce conține punctele ) urmând ca câmpul vectorial să aibe o traiectorie descendentă. Acest fapt sugerează că se poate construi o hartă Poincare [13] pe porțiunea acestui plan.

Un atractor se numește straniu dacă are o structură fractală. Din punct de vedere computațional, atractorii stranii pot fi văzuți ca atractori autoexcitați. Atractorii autoexcitați pot fi localizați numeric prin proceduri standard de calcul în care după o secvență tranzitorie, o traiectorie pornind de la un punct de pe un manifold instabil dintr-o vecinătate infinit mică a unui punct de echilibru instabil, ajunge la un atractor. În cazul în care un atractor straniu este haotic adică, printe altele, prezintă senzitivitate față de condițiile inițiale, atunci oricare două puncte ale atractorului, arbitrar de apropiate unul de altul la un anumit moment de timp – dar pe traiectorii diferite – după un număr arbitrar de iterații, devin puncte oricât de depărtate unul de altul, precum și după alt număr arbitrar de iterații acestea devin puncte care sunt oricât de apropiate unul de altul. Astfel, un sistem dinamic cu un atractor haotic este atât local instabil dar și global stabil în sensul că de îndată ce unele traiectorii au intrat în atractor atunci rămân în atractor dar pe de altă parte traiectoriile alăturate sunt divergente una față de alta, dar niciodată nu se vor îndepărta de atractor. Atractorii stranii sunt unici în clasa atractorilor deoarece nu se cunoaște cu precizie momentul de timp în care o traiectorie a sistemului va trece printr-un punct al său. Atractorii stranii sunt unici și prin faptul că traiectoriile sistemului sunt neperiodice. Atractorul Lorenz este un exemplu de atractor straniu.

Este posibil întotdeauna să obținem o hartă Poincaré pentru orice sistem dinamic tridimensional haotic dar în general acesta nu poate fi redus la o hartă Poincaré unu dimensională. Deoarece o astfel de hartă Poincaré permite studiul comportării haotice a sistemului studiat, putem afirma că harta Poincaré bidimensională este harta de dimensiune minima, a se vedea [14], care permite analiza dinamicii atractorilor tridimensionali.

Consider planul P diagonal (ce conține axa Oz) și care conține cele trei puncte de echilibru, anume originea și . Fiecare secțiune trebuie completată cu condiția de orientare a fluxului. Punctele de echilibru sunt în centru spiralelor și în apropierea lor planul P este tranversat de flux. În apropierea originii (punct de echilibru) traiectoriile fie traversează secțiunea P fie rămâne de aceeași parte. Putem realiza o a doua secțiune, a se vedea [15], de exemplu planul pentru a caracteriza complet fluxul în vecinătatea originii.

Conform teoremei Takens [16], cunoscând proiecția atractorului într-un plan, putem reconstrui atractorul Lorenz.

II.5.3. Senzitivitatea sistemului Lorenz în raport cu parametrul σ

Pentru vizualizarea senzitivității sistemului Lorenz în raport cu un parametru , se compară pe același grafic traiectoria sistemului pentru valori diferite ale parametrului , constatându-se senzitivitatea soluției în raport cu modificarea acestuia. O altă modalitate de a vedea senzitivitatea soluției în raport cu parametrul este să se studieze evoluția traiectoriei într-un sistem de coordonate local atașat punctului curent de pe traiectorie astel ca o axă să fie de-a lungul tangentei la traiectorie iar celelalte două să fie în planul normal traiectoriei. Deoarece, în vecinătatea punctelor de echilibru, punctele traiectoriei sunt cvasiplanare vom alege direcțiile ortogonale astfel ca o altă componentă a soluției să fie în direcția celui mai apropiat punct de echilibru. Punctele de echilibru sunt:

În concluzie, cea mai mare senzitivitate a sistemului Lorenz este de-a lungul tangentei la traiectorie. Folosind descompunerea senzitivității după cele trei axe ortogonale, se poate face graficul magnitudinii senzitivității sistemului în raport cu cele trei direcții ortogonale. Senzitivitatea fiind raportul distanței dintre două puncte ale traiectoriei sistemului corespunzătoare aceluiași moment de timp și valoarea absolută a diferenței dintre două valori diferite ale parametrului .

II.5.4. Simularea in MATAB a sistemului Lorenz

În figura 4 am prezentat o schemă în Simulink pentru a determina evoluția sistemului Lorenz.

Figura 4. Schema Simulink asociată sistemului Lorenz.

II.6. Criptosistemele haotice

Conceptele de confuzie și difuzie pot fi interconectate cu proprietățile elementare ale sistemelor haotice ca de exemplu senzitivitatea la condițiile inițiale și ergodicitatea sistemelor haotice. Față de criptosistemele tradiționale care apelează la operații algebrice complicate, criptosistemele haotice pun în evidență dinamica complexă a sistemelor haotice care în esență apelează la operații aritmetice simple.

Un criptosistem bun oferă un echilibru între securitate și performanță. În acest sens, proprietățile criptosistemelor haotice sunt asimptotice asigurând o securitate ridicată, pe când criptosistemele clasice sunt construite astfel ca să aibe proprietăți de difuzie și/sau confuzie se manifestă în timp scurt furnizând o securitate satisfăcătoare.

II.6.1. Algoritmi de criptare ce folosesc sistemele haotice

Folosirea aplicațiilor haotice, a se vedea [17], pentru construcția criptosistemelor a fost în ultimii ani subiectul a numeroase studii. Astfel, există trei modalități reprezentative de folosirea haosului în criptarea imaginii.

Folosirea haosului [18] – ca sursă de generare a biților pseudoaleatori cu proprietățile statistice dorite – pentru a realiza operația de permutare secretă.

Folosirea haosului [19] – ca sursă de generare a pixelilor pseudoaleatori cu proprietățile statistice dorite – pentru a realiza operația secretă de substituție.

Folosind două aplicații haotice [20] – una pentru operația de permutare și una pentru operația de substituție.

II.6.2. Confuzia și difuzia

Două concepte suplimentare se leagă de cantitatea de muncă necesară unei criptări. Un algoritm de criptare trebuie să ia informația din text clar și să o transforme astfel încât interceptorul să nu poată recunoaște mesajul. Interceptorul nu trebuie să poată prezice efectul schimbării unei litere în text clar asupra textului cifrat. Această caracteristică se numește confuzie. Un algoritm care prezintă un grad ridicat de confuzie va prezenta o relație funcțională complexă între perechea text clar/cheie și textul cifrat. De exemplu, cifrul Caesar nu are un grad suficient de ridicat de confuzie, deoarece din relevarea transformării a câteva litere, se poate prezice, fără vreo informație suplimentară, transformarea celorlalte litere.

Cifrul trebuie să distribuie informația din text clar în întreg textul cifrat. Schimbările din text clar trebuie să afecteze cât mai multe porțiuni din textul cifrat. Acest principiu se numește difuzie, caracteristica distribuirii informației de la literele textului clar la textul cifrat în totalitatea sa. O difuzie bună înseamnă că interceptorul are nevoie de o cantitate importantă de text cifrat pentru a descoperi algoritmul. Cifrurile de substituție și permutări nu prezintă o bună difuzie, deoarece un caracter din textul clar determină doar un singur caracter din textul cifrat).

Confuzia poate face neclară relația dintre textul clar și textul cifrat. Difuzia poate extinde modificările în întreg textul cifrat. Principalele operațiuni de confuzie/difuzie sunt:

substituția – operația care înlocuiește un simbol cu altul fiind cel mai simplu tip de confuzie,

permutarea – operația care schimbă șirurile de simboluri în bloc fiind cea mai simplă metodă de difuzie.

Aceste tehnici sunt fundamentele pentru orice criptosistem.

II.6.2.1. Permutarea haotică

Metodele de permutare în conjuncție cu generatoarele de sevențe pseudoaleatorii sunt considerate ca fiind fundamentale pentru selectarea unei permutări specifice a cheii secrete.

Astfel, prima dată se introduce o cheie P ca fiind un număr binar echivalent unei chei date. Apoi o aplicație haotică 1D generează un șir aleator de biți. Astfel se calculează o matrice de permutare pentru sistem – matricea de permutări este o matrice particulară ale cărei linii și coloane pot fi inteschimbate, având toate elementele nule cu excepția unui singur element (egal cu unu) pe fiecare linie și coloană.

II.6.2.2. Substituția haotică

În criptografia clasică, substituția este o metodă de criptare prin care blocuri din textul clar sunt înlocuite cu text cifrat; blocurile pot fi formate dintr-o singură literă sau dintr-un grup de litere. La recepție, decriptarea se face folosind aceste texte criptate prin substituție inversă. Dacă la permutare, blocurile de text clar sunt rearanjate într-o poziție diferită față de poziția inițială – putând exista blocuri care rămân pe aceeași poziție, la substituție blocurile din textul clar sunt reținute într-o secvență echivalentă ca în textul criptat, dar literele ce formează blocurile sunt rearanjate.

Folosirea doar a permutărilor furnizează o insecuritate vis a vis de atacurile criptanaliștilor. Pentru a crește securitatea, se folosesc în cadrul sistemului de criptare atât permutări cât și substituții. Substituția poate fi formată cu una sau mai multe operații elementare ca de exemplu XOR, XNOR, Shift, Add sau combinația acestora. Aplicațiile haotice sunt folosite pentru generarea spre exemplu a unei imagini pseudoaleatoare pentru subsituție. Astfel, toți pixeli imaginii permutate și noua imagine obținută prin aplicația haotică sunt combinate cu ajutorul adunării modulo. Funcția de substituție descrește corelația dintre blocuri sau secvențe din text și are drept scop realizarea unei histograme uniforme.

II..6.3. Cerințe pentru criptosistemele haotice

In [10] Alvarez și Liu, analizând mai multe criptosisteme haotice au sugerat un număr de 17 recomandări (reguli) ce se impun a fi verificate la criptosistemele nou propuse.

descrierea amănunțită a implementării digitale a sistemelor haotice,

evaluarea atentă a sistemelor haotice implementate în formă digitală cu luarea în considerare a efectelor negative ale degradării numerice a dinamicii,

optimizarea costurilor și a vitezei criptosistemului fără pierderea nivelului securității,

definirea cu precizie a cheii K,

evitarea regiunilor de valori non-valide din spațiul cheii K astfel încât comportarea haotică a criptosistemului să nu aibe de suferit,

spațiul cheii K trebuie selectat astfel ca efectul de avalanșă să fie asigurat, adică pentru două cheii ușor modificate una față de alta, textul cifrat să fie complet diferit,

cunoașterea parțială a cheii nu trebuie să dezvăluie informații parțiale despre textul clar,

procesul de generare al cheilor trebuie să precis specificat,

diferențele a două texte criptate efectuate cu două chei sau din două texte în clar sensibil apropiate nu trebuiesc identificate cu nici o tehnică cunoscută de analiză statistică,

textul criptat ar trebui să fie pseudoaleatoriu și să fie în aceeași clasă de echivalență statistică pentru toate cheile folosite,

ar trebui verificat dacă criptosistemul proiectat poate fi spart cu ajutorul celor mai simple atacuri criptografice ca de exemplu: atacul cu text clar cunoscut, atacul cu text clar ales și chiar atacul cu text criptat ales,

trebuie dovedită sau verificată foarte atent rezistența la criptanaliza diferențială și liniară,

trebuie verificat dacă criptosistemul proiectat poate fi spart prin toate atacurile cu haos cunoscute,

verificarea criptosistemului la atacurile tuturor aplicațiilor construite pentru spargerea criptosistemelor,

pentru a oferi o garanție suficientă împotriva atacurilor de forță brută, dimensiunea spațiului cheii trebuie să fie superioară lui ,

în cazul folosirii unui criptosistem secvențial, studiul securității ar trebui să includă și rezultatele testelor statistice realizate cu generatoare de numere pseudo-aleatoare,

un sistem de comunicare securizat ar trebui să funcționeze într-un mediu real având pe fiecare canal de comunicare un raport semnal/zgomot de cca. 40 dB, cu o anumită lățime de bandă și cu o atenuare între 0 dB și 16dB.

II.6.4. Tipuri de criptosisteme haotice

Datorită abundenței de lucrări de specialitate în domeniul criptosistemelor haotice, a fost necesară o sistematizare a tipurilor de cripotsisteme haotice. Astfel, in [21] Li S. a prezentat următoarea clasificare a acestora.

Figura 5. Criptosisteme analogice

Figura 6. Criptosisteme digitale

II.6.5. Exemple de criptosisteme haotice

În continuare vom prezenta o selecție de două criptosisteme devenite clasice atât pentru a se putea constitui o bază de referință în comparație cu care vom analiza criptosistemul implementat cât și pentru că anumite elemente vor fi folosite și în criptosistemul implementat. Pentru fiecare dintre ele vom arăta atât avantajele, deficiențele dar și eventualele modificări efectuate pentru a îmbunătăți performanțele acestora.

II.6.5.1. Criptosistemul Baptista

Fie următoarea secvență de caractere ce constituie textul clar (mesajul transmis) iar secvența fiind textul cifrat. Prin vom nota alfabetul utilizat iar prin vom nota numărul de simboluri in alfabetul utilizat.

Pentru criptarea caracterului din textul clar, trebuie să definim o asociere între porțiuni (intervale parțiale) ale atractorului funcției haotice și unitățile de alfabet. Această asociere este cunoscută atât de Alice, cât și de Bob. Există mai multe metode de asociere, putându-se păstra sau nu confidențialitatea regulii de asociere a caracterelor. În metoda sa, Baptista asocia codul extins ASCII al fiecărui caracter cu un interval de valori aparținând atractorului funcției logistice.

Astfel, în algoritmul Baptista se divizează subintervalul al intervalului [0,1] într-un număr de subintervale disjuncte. Mulțimea X este acoperirea densă a mulțimii valorilor aplicației logistice cu valoarea parametrului logistic . Este clar că lungimea fiecărui subinterval rezultat prin divizare este cel mult:

.

Fiecare din cele m subintervale este asociat unui și numai unui simbol al alfabetului A. De exemplu, putem realiza o diviziune uniformă a intervalului X alegând unde L 256 (numărul total de simbolui ale alfabetului A) și de regulă, .

În acest mod definim o aplicație bijectivă g care face să corespundă fiecărui simbol s al alfabetului A unul și numai un subinterval astfel ca acesta să constituie o diviziune, adică sunt disjuncte două câte două și .

.

Figura 7. Metoda de asociere

Pentru un caracter din textul clar, cifrul se construiește astfel: se determină codul ASCII al caracterului, se realizează corespondența între caracter și subintervalul asociat și, pornind de la o condiție inițială și o anumită valoare a parametrului de control μ, se determină numărul de iterații necesar pentru ca traiectoria să ajungă prin iterații succesive în subintervalul respectiv. Numărul de iterații reprezintă cifrul pentru caracterul selectat și se folosește împreună cu cheile secrete, anume:

asociația dintre cele m subintervale de lungime L și cele m unități ale unui alfabet,

prima condiția inițială și parametrul de control μ (de unde cele k+2 chei secrete),

Punctul final obținut în urma acestor iterații determină, la recepție, prin poziția sa în cadrul celor m subintervale de lungime L, caracterul original transmis.

Folosind sistemul logistic , cheia de cifrare este valoarea inițială . Traiectoria stării sistemului formată din stările sistemului logistic se generează iterativ sau folosind compusa funcției f cu ea însuși aici . În felul acesta, algoritmul de cifrare Baptista asociat aplicației haotice logistice se bazează pe traiectoria asociată unei valori inițiale ce reprezintă cheia algoritmului de criptare. În esență, sistemul criptografic Baptista este un criptosistem secvențial (stream chipper) în care cifrarea/descifrarea se realizează caracter cu caracter.

Figura 8. Reprezentarea unei situații ipotetice de cifrare/descifrare a textului P=(L,U,M), folosind o aplicație haotică f asociată condiției inițiale și valorii parametrului logistic .

Pe scurt, acest algoritm de cifrare pentru un anumit caracter al unui text clar constă în a găsi numărul de iterații ale funcției logistice f pentru ca traiectoria asociată cheii de cifrare să viziteze intervalul asociat caracterului .

Viabilitatea procesului de cifrare se bazează pe netranzitivitatea topologică a aplicațiilor haotice, fapt ce garantează că fiecare din subintervalele este vizitat prima dată numai după un anumit număr de iterații ale lui f.

În acest sens, o importanță deosebită o are alegerea parametrului logistic , alegere ce trebuie să garanteze caracterul haotic al aplicației f. De exemplu, pentru aplicația f nu este haotică. Mai mult, nu pentru toate valorile parametrului se poate garanta caracterul haotic al aplicației f. De altfel acesta constituie un inconvenient principal al metodei de cifrare Baptista.

În versiunea criptată a textului clar , fiecare simbol este unic determinat de simbolul precedent și de un număr de iterații ale aplicației haotice f astfel ca traiectoria a condiției inițiale să viziteze, pornind din , intervalul corespunzător caracterului ce trebuie criptat. Cu alte cuvinte,

.

În consecință, simbolul corespunzător caracterului depinde de toate simbolurile anterioare . Această caracteristică de secvențialitate (stream chiper) este proprie sistemului de cifrare Baptista.

De remarcat că lui i se poate atribui valoarea, dar se preferă să nu se folosească această notație, deoarece, indiferent de valoarea inițială, simbolul este un număr reprezentabil pe 16 biți. Datorită proprietății de ergodicitate, un număr infinit de traiectorii pornind de la o valoare inițială oarecare ajung în același subinterval de lungime L. Ca rezultat, o unitate dintr-un text clar poate fi criptată într-un număr infinit de moduri. Motivul pentru care se consideră un spațiu al traiectoriilor de dimensiune finită, spațiu care reprezintă o unitate din textul criptat, se bazează pe existența unei densități naturale, invariante a atractorilor haotici. Această densitate invariantă reprezintă distribuția spațială a traiectoriei. În plus, datorită proprietății de ergodicitate, aproape orice condiție inițială, în urma iterației, generează un atractor cu aceeași densitate naturală invariantă. Datorită ergodicismului sistemelor haotice, aproape orice condiție inițială iterată de un număr finit de ori va atinge un subinterval de lungime L de mai multe ori, demonstrând astfel că acest subinterval aparține atractorului. Se poate verifica că pentru criptosistemul Baptista densitatea naturală invariantă are valoarea de 65532 iterații, astfel încât simbolul să fie ușor și rapid de calculat și trimis receptorului folosind numai o transmisie a unui întreg pe 16 biți.

Ca exemplu, vom considera textul clar (a se vedea figura) și corespunzător aplicației logistice f (cu parametru ) și condiției inițiale obținem textul criptat .

Pentru cifrare se determină câte iterații sunt necesare aplicației f ca pornind din punctul să ajungă în punctul corespunzător intervalului asociat caracterului prin aplicația bijectivă g

Pentru decifrare, se procedează calculând valorile și se verifică ce simboluri din alfabetul A sunt asociate intervalelor corespunzătoare succesiv valorilor .

Este important de notat că în general, fiecare aplicație haotică îi este necesar un anumit număr de iterații astfel ca pornind de la o condiție inițială să aibă un comportament haotic. Altfel, dacă nu se respectă acest lucru, se poate întâmpla ca condiții inițiale diferite să genereze prin algoritmul de cifrare aceleași rezultate. În consecință, înainte de a folosi algoritmul de criptare Baptista, este necesar să depășim numărul minim de iterații începând cu care caracterul haotic al aplicației apare din punct de vedere statistic.

Pentru a susține acest aspect, vom prezenta exemplul dat de Baptista care cifrează textul clar cu următoarele valori ale parametrilor

Litera h fiind asociată prin aplicația g intervalului iar litera i este asociată intervalului .

O posibilă variantă de criptare a textului P este . Prima valoare din mesajul criptat, anume corespunde numărului minim de iterații pentru ca traiectoria condiției inițiale să fie în intervalul , adică

.

A doua valoare a mesajului criptat, anume corespunde numărului minim de iterații pentru ca traiectoria condiției inițiale să fie în intervalul , adică

.

II.6.5.1.1. Caracteristicile criptosistemului Baptista

Din simulările efectuate asupra criptosistemului Baptista se desprind următoarele:

Plusurile criptosistemului Baptista sunt:

metodă simplă de criptare, deoarece criptarea se realizează secvențial;

Deficiențele criptosistemului Baptista sunt:

siguranța scăzută a criptosistemului. Pentru a rezolva problemele de siguranță ale criptosistemului Baptista, comunitatea științifică propune o varietate largă de soluții dintre care menționăm lucrarea lui Nitharwal [22].

lipsa uniformității frecvenței cu care locurile asociate simbolurilor din alfabetul utilizat sunt vizitate de traiectoria aleasa. Acest lucru – în cazul existenței, în mesaj, de simboluri asociate locurilor mai puțin vizitate – poate prejudicia foarte mult procesul de cifrare/decifrare,

alegerea optimă a valorii paramentrului μ. De fapt, chiar dacă 3< μ, există multe valori ale parametrului μ pentru care aplicația fμ nu este haotică.

dependența de hardware, ceea ce înseamnă că trebuie să utilizăm dispozitivele cu aceeași precizie și aceeași metodologie deterministă a rotunjirii numerice pentru a cifra datele, în caz contrar, decifrarea datelor este compromisă. Acest fapt restrânge mult utilizarea sa pe scara largă.

consumul mare de memorie deoarece trebuie memorată o mare cantitate de biți necesari pentru a memora numărul de iterații;

viteza de criptare este relativ mică datorită faptului că necesită precizie mare în calculele în virgulă mobilă și un număr mare de iterații;

implementarea algoritmului este dependentă de compilatorul utilizat, limbajul de programare și stilul de programare.

II.6.5.1.2. Îmbunătățiri ale criptosistemului haotic Baptista

Un bun criptosistem haotic este caracterizat prin senzitivitate atât la condițiile inițiale cât și la parametrii de control. Algoritmul lui Baptista este adesea criticat deoarece nu are rezultate bune la testele de securitate. În 2001, in [23] Li S. analizând mai mulți criptosisteme haotice a arătat că aceste sisteme sunt vulnerabile la atacul prin analiza textului și la determinarea cheii secrete (condiției inițiale). Cu alte cuvinte pentru criptosistemele haotice toate cele patru tipuri de atac dau rezultate bune. Ca o concluzie, se desprinde că trebuie folosite aplicații haotice mai complexe. In [24] Alvarez a examinat cu atenție schema de criptare Baptista concluzionând că există trei tipuri de atac cu șanse de reușită, fapt ce arată slabiciunile criptosistemului Baptista.

În anul 2002, in [25] K. W. Wong a prezentat o versiune modificată a criptosistemului haotic Baptista. Wong a constatat că, datorită comparațiilor suplimentare, criptosistemul haotic Baptista este lent. Pentru a înlătura această deficiență, Wong a propus o nouă schemă folosind un tabel (vector) de corespondențe, care se actualizează în mod dinamic prin interschimbarea simbolurilor asociate între două intervale. Inițial, tabelul de corespondețe este inițializat cu valorile ASCII ale caracterelor. Actualizarea tabelului de corepondențe va fi realizată după fiecare operație de criptare și decriptare. Acest criptosistem haotic folosește aplicația logistică ca sursă de haos, condiția inițială și parametrul aplicației logistice ca fiind cheia secretă. Poziția i-a a tabelului de corespondențe este interschimbată cu poziția j-a folosind relația:

(4)

unde x este starea curentă a sistemului haotic, N este numărul total de simboluri în textul clar. Celelalte etape sunt indentice ca în criptosistemul original Baptista. Alvarez analizând criptosistemul propus de Wong a constatat deficiențe în securitatea sa.

În 2006, in [26] Xiao, Liao și Wong au determinat câteva vulnerabilități în tabelul de corespondențe. Pentru a elimina aceste deficiențe au simplificat relația anterioară (4) înlocuind-o prin următoarea:

,

unde j este noul index al poziției pentru simbolui i și N este numărul total de simboluri posibile în textul clar.

În plus, pentru a spori securitatea tabelului de corespondențe s-au actualizat dinamic pozițiile din tabelul de corespondențe folosindu-se a treia, a patra și a cincea zecimală a valorii curente x. Astfel poziția i-a va fi interschimbată cu poziția j-a folosind relația:

,

unde , j este noul index al poziției pentru simbolui i și N este numărul total de simboluri posibile în textul clar.

II.6.5.2. Criptosistemul Sobottka – Oliveira

În 2006, in [27] de Oliveira și Sobottka au propus un cifru bazat pe criptosistemul Baptista. Acest sistem, denumit criptosistemul Sobottka-Oliveira, se bazează pe familia de funcții de parametrul definită prin:

unde și bijecția ; cum funcția este homeomorfism, deducem că aplicațiile și G sunt topologic conjugate iar funcția este conjugarea topologică între și G. Conjugarea topologică definește o relație de echivalență în spațiul surjecțiilor continue definite pe un spațiu topologic cu valori în același spațiu topologic. Această relație de echivalență este foarte utilă în dinamica sistemelor deoarece fiecare clasă de echivalență conține funcții cu aceeași dinamică din punct de vedere topologic. De exemplu aplicația logistică și aplicația cort sunt topologic conjugate. Traiectoriile lui G sunt mapate în traiectorii homeomorfice ale lui cu ajutorul acestei acestei relații de conjugare topologică. Astfel din deducem . Altfel spus, conjugarea topologică este o schimbare de coordonate în sens topologic.

În adevăr, dacă atunci și

,

prin urmare, următoarele d zecimale succesive din partea zecimală a lui determină subintervalul:

în care se află (aparține) adică .

Dacă aplicația G este haotică, prin relația de echivalență de mai sus, deducem că este o aplicație haotică asociată parametrului p. Astfel, spre deosebire de algoritmul Baptista, parametrul p ar putea fi adoptat ca parte a cheii de criptare.

În consecință, modelul Oliveira-Sobottka, propune soluția a trei dintre deficiențele găsite în algoritmul Baptista.

Prima deficiență a sistemului Baptista se referă la limitarea spațiului cheilor și la găsirea relativ dificilă a parametrului μ al familiei funcțiilor logistice în intervalul de valori ce asigură compartamentul haotic al funcției logistice. În contrast cu criptosistemul Baptista, sistemul Oliveira-Sobottka prezintă o îmbogățire a stațiului cheilor prin introducerea parametrului rațional p, deoarece aplicația rămâne haotică pentru toate valorile p raționale,

O altă deficiență a sistemului criptografic Baptista este dată de distribuția neuniformă a probabilității de vizitare a intervalelor de către traiectoria sistemului. În contrast cu această deficiență, Oliveira și Sobottka arată că pentru fiecare număr rațional și pentru fiecare interval măsura de probabilitate asociată aplicației este dată de relația reprezentând r-proiecția pe intervalul a măsurii uniforme Bernoulli. Cunoașterea acestei măsuri conduce la o partiție a intervalului în intervale echiprobabile .

Suplimentar, definind intervalele s-a arătat că frecvența de vizitare a fiecărui interval este uniform egală cu . Prin urmare, criptosistemul Oliveira-Sobottka are un comportament uniform vis a vis de caracterele alfabetului A utilizat. Acest lucru contribuie la eficiența criptosistemului și independența sa în raport cu caracteristicile statistice ale textului clar.

A treia deficiență se datorează faptului că utilizarea criptosistemului Baptista este senzitivă în raport cu metodele de aproximare folosite pentru determinarea stărilor sistemului. În contrast cu acesta, criptosistemul Oliveira-Sobottka nu prezintă degradarea haosului în funcție de metoda de aproximare aleasă. Astfel, pentru fiecare cheie , calculul traiectoriei corespunzătoare implică pentru fiecare punct al traiectoriei calcule aritmetice de complexitate cca . De altfel, există o relație strânsă între dinamica sistemului , cheia de criptare și reprezentarea zecimală a lui . Fie reprezentarea zecimală a lui , înțelegând, pentru a elimina ambiguitățile, și reprezentări cu blocuri infinite de cifre de 9. Pentru orice putem rescrie aplicația sub forma

unde reprezintă partea întreagă a lui . Secvența de zecimale ale lui este reprodusă prin compunerea succesivă a aplicației de n ori , pornind de la condiția inițială , pentru a obține zecimalele lui prin shiftare succesivă la dreapta a lui și păstrând doar numere mai mici decât 10, adică

Practic, algoritmul Oliveira-Sobottka constă în următoarele etape:

se aleg inițial parametrii p și d, se împarte intervalul în subintervale semideschise și disjuncte , se alege un punct inițial în intervalui și parametrul al funcției logistice, altfel spus se alege cheia sistemului de criptare .

Criptarea textului clar se realizează folosind cheia după următorul algoritm:

se stabilește o asociere uniformă a tuturor simbolurilor din A(alfabet) cu subintervalele ,

se folosește ideea lui Baptista, anume pornind de la valoarea inițială (cheia) se iterează succesiv aplicația , un număr suficient de ori până când traiectoria sistemului atinge succesiv acele intervalele , corespunzătoare fiecărui caracter din textul clar ,

mesajul cifrat este secvența compusă din numărul necesar de iterații ale aplicației pentru ca traiectoria , punctele traiectoriei fiind definite prin relația , să viziteze succesiv intervalele corespunzătoare fiecărui caracter din textul clar , adică . Mai precis, mesajul cifrat este o secvență finită de numere naturale cu proprietatea că punctul se află pentru prima dată în intervalul asociat caracterului din textul clar .

Decriptarea mesajului cifrat se realizează folosind aceeași cheie după următorul algoritm:

Cunoscând textul cifrat și cheia se determină succesiv punctele traiectoriei cu ajutorul relației

De îndată ce traiectoria este determinată, se stabilesc intervalele corespunzătoare fiecărui punct . Cum fiecărui interval îi corespunde un caracter putem obține întreg textul clar .

II.6.5.2.1. Implementare

In [28] Formolo D., de Oliveira, Sobottka M. propun algoritmul de implementare. Se determină zecimalele numărului și se grupează de la stânga spre dreapta în grupuri, numite și d-blocuri, succesive de câte d cifre. Înainte de toate, trebuie să definim o aplicație φ care să asocieze în mod unic fiecărui d-bloc din cele un caracter din alfabetul A folosit. Pentru ilustrare, să considerăm alfabetul A alcătuit din 100 simboluri ASCII (vezi tabelul 1) și d=3. În acest caz #A=100 produce zece d-blocuri asociate fiecărui simbol din alfabetul A. Să considerăm următoarea asociere a celor #A=100 de simboluri ale alfabetului A:

(5)

Consider de asemenea pentru p o valoare, de exemplu p=2; astfel toate datele inițiale pentru criptare sunt bine definite. Cheia algoritmului de criptare este . Pentru rădăcina pătrată a lui p=2 vom folosi o aproximație cu suficient de multe zecimale pentru criptarea mesajului M.

În exemplu considerat, și primele blocuri de câte d=3 cifre sunt obținute prin selectarea succesivă de ferestre formate cu câte 3 zecimale succesive din partea zecimală a numărul de la stânga la dreapta. Această procedură dă următoarele blocuri formate cu 3 zecimale. Observăm că partea întreagă a lui nu a fost considerată.

Tabelul 2. Simbolurile ASCII și codurile asociate

Apoi, se construiește matricea Γ ale cărei elemente sunt pozițiile fiecărui d-bloc din reprezentarea zecimală a lui . Mai precis, elementele liniei a i-a din matricea Γ sunt asociate celei de al i-a caracter, de exemplu s, din alfabetul A; iar la coloana a j-a, este apariția j-a a d-blocului asociat caracterului s. În exemplul considerat – vezi tabelul 2 – cele zece grupe de câte 3 cifre {065,165,265,…,965} asociate simbolului A, apar succesiv în pozițiile 10,106,215,…,2567 în reprezentarea zecimală a lui . Deoarece pentru fiecare cheie matricea Γ este construită o singură dată, procedura de criptare/decriptare reprezintă, în esență, o înșiruire de căutări și salvări.

Tabelul 3. Exemplu de matrice Γ cu adresele blocurilor formate din cele d poziții ale reprezentării zecimale ale lui . De exemplu, d-blocul reprezentând simbolul A apare pentru prima dată în poziția 10 a reprezentării zecimale a lui , apare a doua oară în poziția 106, etc.

Folosirea matricii Γ este după cum urmează. Prima dată găsim linia corespunzătoare simbolului curent, adică a simbolul al textului clar M ce urmează a fi criptat. Apoi în acea linie luăm prima adresă al unui d-bloc, mai mare decât poziția blocului găsit anterior (iterativ). Versiunea criptată a simbolului este diferența dintre adresele găsite, la coloana și cea anterioară, adică:

, (6)

unde condiția

(7)

trebuie verificată.

Ca exemplu, din tabelului 3, versiunea criptată a textului clar AABC este 10 96 92 86, întru-cât:

Observăm că 29 reprezentând prima adresă pentru simbolul B este ignorată deoarece este mai mică decât adresa d-blocului curent a simbolului anterior – aici simbolul A – care este 106. Similar sunt ignorate primele adrese 5 și respectiv 77 pentru caracterul C. Folosirea unui asemenea matrice de adrese face ca criptosistemul propus să fie independent de alfabet. Procesul de decriptare este mai direct decât cel de criptare deoarece textul criptat este deja constituit din adrese de d-blocuri ale lui , reprezentând simbolurile textului clar. Fiecare simbol al textului clar este recuperat direct din lista de asociere (5). Acest lucru face ca procesul de decriptare să fie mai rapid decât procesul de criptare – fapt confirmat și de experimentele numerice.

Cunoscând adresele și să precizăm cum determinăm elementul adică cum putem determina o coloană validă . Căutarea unei coloane valide adică pentru care condiția (7) este verificată poate fi făcută în mai multe moduri. Cel mai evident mod este acela de a găsi o adresă validă, adică ce verifică condiția (7), pentru coloanele liniei, una câte una, întotdeauna începând cu l=1. De îndată ce am determinat

(8)

vom determina elementul folosind (6).

De altfel, pentru texte clare lungi, metoda descrisă prin (8) este mai puțin eficientă decât căutarea directă secvențială a adresei d-blocurilor reprezentării zecimale ale numărului . Timpul necesar căutării directe secvențiale a adresei d-blocurilor este proporțional cu #A, timp necesar pentru găsirea adresei valide pentru criptarea caracterului . Și în acest caz, algoritmul de criptare este independent de alfabetul folosit, criptarea caracterului producându-se în același timp cu determinarea lui

Acest fapt produce dependența polionomială, dar nu liniară, a timpului de criptare de lungimea L a mesajului M. Astfel folosirea lui (8) este justificată doar pentru cazul .

O modalitate eficientă este de a începe căutarea în linia corespunzătoare lui de la coloana folosită criptarea lui . Astfel pornind succesiv de la coloana , coloana după coloană, se poate verifica dacă condiția (6) este verificată, adică pornind înspre stânga dacă Γ și înspre dreapta în caz contrar. Apoi se folosește (6) cu determinat prin relația:

(8)

O modalitate mai eficientă de căutare a unei adrese valide în linia lui este de a presupune un parametru r întreg și de a calcula (6) folosind determinat prin relația:

(9)

Cu alte cuvinte, vom căuta o coloană validă din lina corespunzătoare lui , r linii înainte (dacă r este pozitiv) sau r linii înapoi (dacă r este negativ) ultimei coloane valide folosite pentru criptarea lui . Observăm că astfel am relaxat condiția ca adresa validă să fie căutată din prima coloană din linia . Pentru un r sufficient de mare, metoda (9) tinde să fie mai eficientă decât (8), dar la fel de nesigură deoarece diminuează procesul de difuzie. De altfel, datorită proprietăților statistice ale lui pentru aproape toate cheile x0, condițiile (7) și (9) cu r=0 sunt cvasiechivalente. Acest lucru validează folosirea metodei (9) pentru a îmbunătăți performanțele experimentelor numerice.

securitatea poate fi implementată off-line sau on-line. În general, securitatea va crește timpul consumat pentru criptarea mesajului. Decriptarea nu este afectată în nici un fel.

Numerele trebuie calculate cu o precizie ridicată pentru a cripta mesajele transmise. De altfel, în situația când șirul de d-blocuri obținute din nu este suficient de lung pentru a cripta mesajul M, se poate calcula o nouă valoare pentru o nouă condiție inițială și/sau un nou parametru p, ambele valori fiind obținute ca funcții predefinite din valorile originale ale lui p și Alternativ, se poate folosi un proces în background on-line pentru a produce noi chei în timp ce procesorul este în așteptare.

III. Prezentarea criptosistemul Lorenz-Baptista

III.1. Operatorul de proiecție

Vom considera pentru început proiecția ortogonală a unei mulțimi pe o linie dreaptă d. Astfel, dacă este un versorul liniei drepte d, atunci operatorul de proiecție este dat de relația:

.

Acest operator lasă invariant toți vectorii coliniari cu u și anulează toți vectorii ortogonali cu u. În adevăr, fie x un vector arbitrar pe care-l descompunem în mod unic după direcția lui u și o direcție ortogonală cu u, adică:

atunci

Acum să consider proiecția unei mulțimi pe mulțimea U generată de k vectori ortogonali și matricea A formată cu coloanele . Operatorul de proiecție pe mulțimea U este definit prin:

Dacă dreapta d are parametrii directori condiția ca un punct P să aparțină intervalului de pe dreapta d este următoarea:

III.2. Metoda numerică folosită

În continuare, inspirati fiind de [29], vom folosi o metodă de descompunere și recompunere obținând un algoritm numeric, cu ordinul de precizie 4, ce conservă structura sistemului Lorenz. Se poate arăta că algoritmul conservă volumul cubului infinitesimal pentru sistemul Lorenz. Experimentele numerice au ilustrat că, pentru sistemul conservativ Lorenz, traiectoriile descrise de metoda explicită de ordinul patru Runge Kutta (RK4) dar și de metoda de ordinul cinci Runge Kutta Fehlberg (RKF45) prezintă un comportament calitativ eronat pe termen lung pe când metoda numerică cu conservarea structurii produce traiectorii conforme cu traiectoriile exacte. Mai mult, în cazul micilor variații ale dinamicii sistemului Lorenz, norma erorii în spațiul fazelor a algoritmului numeric ce conservă structura este mai mică decât în cazul metodelor Runge Kutta.

Astfel în cazul sistemului Lorenz cu dinamică haotică, soluția numerică este senzitivă atât la ordinul de precizie cât și la pasul metodei numerice folosite. În acest caz, nu are rost să vorbim de ordinul soluției numerice pentru anumite condiții inițiale date.

Vom face experimente numerice în condiția , pentru care sistemul este slab disipativ, cu . Astfel pentru experimente numerice vom folosi următoarele setări ai parametrilor:

.

Deoarece timpul de calcul este relativ mic, am folosit metoda dverk78 (poate determina soluția numerică folosind metoda Runge Kutta cu ordinul de precizie 8 și poate fi setată să lucreze cu precizie arbitrar de ridicată, dar consumă mai mult timp) din Maple pentru a obține soluția cvasiexactă. Eroarea relativă o definim ca fiind.

Atât pentru sistemul conservativ dar și pentru sistemul disipativ Lorenz, metodele numerice ce conservă structura reflectă corect evoluția pe termen lung a sistemului. Pe de altă parte rezultatele numerice produse de metodele Runge Kutta explicite conduc la soluții numerice eronate pe termen lung neputând fi folosite pentru simularea dinamicii sistemului haotic Lorenz. Suplimentar, se poate arăta că norma erorii metodelor ce conservă structura este mai mică decât cea pentru metodele explicite Runge Kutta.

Considerăm sistemul Lorenz original modificat în sensul că multiplicăm cu parametrul fiecare termen liniar disipativ din sistemul original Lorenz.

unde σ, γ și b sunt constante pozitive. Pentru σ = 10, γ = 28, b = 8/3 and ε = 1, se poate arăta că dinamica sistemului este una haotică. Până nu demult, metodele numerice clasice explicite de ordinul IV Runge Kutta (RK4) și de ordinul V Runge Kutta Fehlberg (RKF45) cu controlul erorii au fost folosite frecvent pentru a determina soluția numerică a sistemele de ecuații diferențiale.

Spunem că despre o aplicație că este simplectică dacă este un difeomorfism ce conservă structura simplectică. Cel mai simplu exemplu de aplicație simplectică este aplicația care conservă aria infinitezimală și orientarea ei, adică dacă pentru toate punctele avem , unde este matricea Jacobian a lui F.

Odată cu apariția metodelor numerice ce conservă structura sistemului – (symplectic algorithms) acestea au fost folosite din ce în ce mai des ca metode numerice pentru sistemele de ecuații diferențiale.

De altfel, metodele explicite Runge Kutta permit obținerea numerică a soluției sistemului de ecuații diferențiale – soluție ce are un bun comportament local dar care nu pot descrie satisfăcător nici evoluția pe termen lung a dinamicii sistemului dar nici nu pot conserva anumite proprietăți globale ale sistemului. Complet diferit de ideea metodelor Runge Kutta este metoda descompunerii propusă de Trotter in [30]. Metoda descompunerii este mult mai apropiată de teoria modernă a ecuațiilor diferențiale, deoarece concepte ca semigrup, grup de transformări sunt folosite frecvent. În consecință pentru metoda descompunerii, teoria grupului Lie și algebra Lie pot fi folosite pentru analiza erorii metodelor numerice pentru ecuații diferențiale. Strâns legată de metoda descompunerii este metoda recompunerii. Cele reprezentative lucrări relative la metoda recompunerii sunt ale lui Suzuki [31] și Yoshida [32]. Ulterior, in [33] McLachlan a stability conexiunea dintre metodele de descompunere și recompunere permițând unificarea teoriei metodelor numerice de ordin înalt.

Un câmp vectorial poate fi exprimat ca fiind suma dintre un câmp de gradienți și un câmp de vectori , adică . Deoarece este un câmp de gradienți, el se poate exprima ca fiind gradientul unei funcții scalare, adică, unde I este matricea unitate iar . poate fi descompus într-o sumă de câmpuri Hamiltoniene , unde sunt matrice antisimetrice iar este o funcție Hamiltonian.

În cazul bidimensional este un camp Hamiltonian. Pentru sistemul Lorenz, consider iar sistemul Lorenz îl descompunem în trei părți :

,

unde , și . Astfel sistemul Lorenz poate fi rescris sub forma:

Pentru sistemul Lorenz devine conservativ și are forma

În acest caz, sistemul se poate descompune ca suma a două sisteme Hamiltoniene. Prin simple operațiuni matematice se obțin trei integrale prime

Prima integrală primă reprezintă un paraboloid, iar a doua integrală primă reprezintă un cilindru. Intersecția acestora reprezintă traiectoria soluției sistemului Lorenz conservativ. În funcție de semnul expresiei putem avea următoarele situații:

Sistemul are două traiectorii închise izolate

Sistemul are o pereche de traiectorii homoclinice

Sistemul are o singură traiectorie închisă.

Figura 9. Traiectoriile sistemului Lorenz conservativ

Deoarece subsistemele (3) și (4) sunt sisteme Hamiltoniene liniare, prin operații matematice elementare putem obține soluțiile lor exacte sub forma:

unde .

Se verifică faptul că valoarea determinantului Jacobian al aplicațiilor și este unu, adică:

.

În consecință și conservă volumul cubului infinitesimal al traiectoriei sistemului conservativ Lorenz. Mai mult, cum determinantul produsului este egal cu produsul determinanților, compunerea acestor două aplicații are aceași proprietate, anume:

Acestă proprietate reprezintă proprietatea definitorie a sistemului Lorenz conservativ. Metoda numerică asociată sistemului conservativ Lorenz se exprimă în funcție de și . Astfel o metodă numerică cu ordinul I de precizie este unde h este mărimea pasului de discretizare iar metoda adjunctă este . Putem obține o metodă de ordinul II prin compunerea metodei de ordinul I cu adjunct sa, adică . Deoarece deduce că metoda de ordinul II este autoadjunctă și în consecință are o abordare simetrică. Folosind metoda compunerii, se pot obține metode numerice de ordin superior. De exemplu, o metodă de ordinul IV este în care . Se poate constata că și metoda de ordinul IV conservă structura sistemului conservative Lorenz.

Pentru simulări numerice am considerat mărimea pasului de discretizare ca fiind h=0.01, intervalul de timp [0,500] condițiile inițiale fapt ce conduce la valori apropiate de zero a expresiei . Deoarece valoarea expresiei traiectoria sistemului conservativ Lorenz este formată din două curbe închise disjuncte.

III.3. Metode de asociere a unui caracter cu o porțiune a atractorului

În prezentarea metodei de criptare Baptista am precizat că există cel puțin o metodă de asociere între unitățile alfabetului și porțiuni ale atractorului funcției logistice. Putem asocia unui caracter un interval din spațiul fazelor sistemului haotic, egal ca mărime pentru fiecare caracter, sau putem găsi o schemă de asociere care să presupună intervale neregulate, diferite ca mărime, deci porțiuni mai mari sau mai mici din atractor. De asemenea,intervalul asociat poate fi continuu pe axa reală sau distribuit în mai multe porțiuni în cadrul atractorului.

III.3.1. Metoda injectivă de asociere

Metoda generală de asociere a unei traiectorii unui site presupune divizarea atractorului în intervale corespunzătoare codului ASCII al caracterelor. Caracterului cu codul ASCII îi va corespunde intervalul Ik definit prin . În ceea ce privește limitele precizate de și , în lucrarea lui Baptista, acestea sunt setate la 0,2, respectiv 0,8. Acest fapt se datorează faptului că traiectoriile tind să cadă uniform în acest interval. Matematic, această asociere este descrisă de:

,

unde s reprezintă indexul intervalului asociat, reprezintă traiectoria condiției inițiale după un număr m de iterații – fiind un număr real cuprins între , n este numărul de intervale utilizate în asociere, iar int reprezintă partea întreagă a expresiei din paranteză.

III.3.2. Metoda neinjectivă de asociere

In [34] se prezinta o metodă de asociere care asociaza unui sigur caracter mai multe subintervale distribuite uniform în întreg atractorul. Aplicația conform căreia se face această asociere este următoarea:

Figura 10. Metoda multiformă de asociere cu factorul de divizare d=3

unde s reprezintă intervalul asociat, reprezintă traiectoria condiției inițiale după un număr m de iterații – fiind un număr real cuprins între , n reprezintă numărul de intervale utilizate, iar d reprezintă un factor de divizare a intervalului în mai multe subintervale distribuite de-a lungul întregului atractor.

În scopul controlului acestui tip de asociere, putem considera factorul d ca făcând parte din cheie. Această lucru crește securitatea metodei de criptare haotică, pentru că asocierea la recepție trebuie să fie absolut identică cu cea de la emisie, iar acest lucru presupune cunoașterea lui d. În acest fel, din moment ce asocierea este variabilă, rezultă o creștere a complexității problemei din punct de vedere al criptanalistului.

Avantajele metodei:

utilizarea eficientă a traiectoriei;

crește securitatea metodei;

realizarea ei presupune o modificare simplă a metodei de asociere de bază.

Dezavantajele metodei: – crește timpul de procesare.

III.4. Setarea gradului de securitate

Gradul de confuzie aplicat masajului cifrat poate fi reglat atât prin exponentul Lyapunov

cât și prin exponenții locali Lyapunov

.

Astfel se cuantifică atât sensibilitatea cât și securitatea criptosistemului haotic în raport de condiția inițială . Vom adopta definiția gradului de securitate a unui criptosistem, dată de Oliveira și Sobottka.

Definiție Un criptosistem este securizat împotriva atacurilor prin forță brută, dacă pentru toate perechile de condiții inițiale cu proprietatea , traiectoriile asociate fiecăreia, după un număr corespunzător de iterații necesar pentru criptare/decriptarea primului simbol din mesaj, se depărtează una față de alta cu cel puțin .

Matematic, criptosistemul este securizat dacă pentru orice pereche de condiții inițiale cu proprietatea , există un (aici egal ) pozitiv și un index natural astfel ca pentru orice să aibe loc:

Cu alte cuvinte, de îndată ce condițiile inițiale sunt diferite și deși primul simbol al mesajului a fost cifrat/descifrat va exista o incertitudine semnificativă în descrifrarea întregului mesaj.

Astfel, obținem un criptosistem securizat atunci când o imprecizie mai mare ca în determinarea cheii produce o versiune a mesajului criptat cu un grad ridicat de imprecizie.

De exemplu, un criteriu pentru obținerea securității se bazează pe exponentul local Lyapunov care este o măsură a senzitivității locale a aplicației folosite în raport cu condițiile inițiale. Astfel in [35] pentru criptosistemul Oliveira-Sobottka, dacă aparține intervalului asociat simbolului corespunzător și suplimentar dacă satisface condiția de securitate atunci o modalitate de a obține securitatea caracterului din mesaj este de a accepta simbolul ca o codificare a lui Conform celor de mai sus, putem formula condiția de securitate în raport cu d-blocurile , astfel:

cu .

Pentru a preveni încălcarea confidențialității, criptosistemul SO folosește senzitivitatea față de condițiile inițiale a aplicației pentru a asigura un grad ridicat de incertitudine față de erorile produse datorită necunoașterii cheii de cifrare/decifrare. Pentru a face acest lucru, se alege o valoare ca limită pentru sensibilitatea minimă a condițiilor inițiale în punctele corespunzătoare simbolurilor ale versiunii criptate a caracterului . Deci, pentru asigura – securitatea este necesar ca să acceptăm drept versiuni criptate ale lui numai acele simboluri astfel încât punctele corespunzătoare intervalelor din să aibe exponentul Lyapunov mai mic sau egal cu .

În conformitate cerinței de mai sus, fiecare interval este divizat în două intervale disjuncte, unde

Notând cu se poate demonstra că

Cu formula de mai sus, puteți compara direct punctul găsit cu asigurându-vă că acesta îndeplinește condiția de exponent local Lyapunov minim, astfel intervalul corespunzător valorii poate fi acceptat ca versiune cifrată a caracterului .

Practic, algoritmul Lorenz Baptista ElGamal constă în următoarele etape:

III.5. Selectarea cheii

Se alege indexul , începând cu care sistemul Lorenz are o comportare haotică, condiția inițială , parametrii sistemului Lorenz, coeficienții directori ai dreptei d pe care se face proiecția atractorului Lorenz și pasul inițial h de discretizare al metodei numerice, altfel spus se alege cheia criptosistemului . Pentru implementarea subsistemului ElGamal se selectează gurpul Zp , generatorul grupului .

III.6. Criptarea

Criptarea textului clar se realizează folosind cheia după următorul algoritm:

se stabilește o asociere, prin intermediul aplicației f, a tuturor simbolurilor din A(alfabet) cu subintervalele ale dreptei d pe care se realizează proiecția atractorului Lorenz,

pornind de la valoarea inițială se generează, prin intermediul metodei numerice, punctele traiectoriei sistemului Lorenz astfel ca proiecția pe dreapta d, anume , a punctelor traiectoriei să atingă succesiv pentru prima dată intervalele , corespunzătoare fiecărui caracter al textului clar ,

mesajul cifrat este șirul finit format din indexul relativ al momentelor de timp necesare pentru ca proiecția pe dreapta d a punctelor traiectoriei să viziteze succesiv pentru prima dată intervalele corespunzătoare fiecărui caracter din textul clar , adică . Mai precis, mesajul cifrat este o secvență finită de numere naturale cu proprietatea că proiecția pe dreapta d a punctul se află pentru prima dată în intervalul asociat caracterului din textul clar .

Mesajul cifrat se folosește ca intrare în subsistemul ElGamal obținându-se mesajul C’.

III.7. Decriptarea

Decriptarea mesajului cifrat C’ se realizează după următorul algoritm:

se decriptează mesajul C’ folosindu-se subsistemul ElGamal. Se obține mesajul ,

cunoscând cheia se determină succesiv proiecția , pe dreapta d, a punctelor traiectoriei ; punctele fiind determinate prin intermediul metodei numerice de rezolvare a sistemului diferențial,

cunoscând textul cifrat se determină succesiv intervalele corespunzătoare punctelor de pe dreapta d,

cum fiecărui interval îi corespunde un caracter putem obține succesiv, caracter cu caracter, întreg textul clar .

III.8. Arhitectura criptosistemului Baptista-Lorenz-ElGamal

Pentru rezolvarea numerică a sistemului Lorenz am folosit o metodă simpletică de ordinul IV. Pentru proiecție pe o dreaptă am folosit un operator ortogonal. Pentru asocierea simbolurilor alfabetului cu subintervalele dreptei am folosit o asociere injectivă.

Figura 11. Arhitectura generală a implementării propuse.

III.9. GUI design

În proiectarea interfeței GUI am ținut cont de principiile fundamentale de proiectare a interfețelor GUI, anume: simplitate (unitate, claritate, eleganță), consistență (integritate, armonie), familiaritate (confort și atractivitate).

Figura 12. Aplicația GUI

Aplicația Matlab pentru implementarea cripotsistemului Lorenz propus conține elemente ca de exemplu

panel

edit text

static text

push buttons

axes

III.10. Tehnici de animație folosite

Pentru a realiza animații în Matlab am folosit tehnica actualizării proprietăților obiectului grafic și a afișa actualizările de pe ecran. Am ales această tehnică deoarece este utilă pentru crearea animației când majoritatea graficului rămâne aceeași. Astfel am setat proprietățile XData și YData în mod repetat pentru a muta un obiect în grafic.

Animațiile sunt formate dintr-o secvență de instantanee grafice. Comanda getframe este folosită pentru a captura instantanee de grafice(cadre) succesive și a le memora. Am folosit comanda getframe într-o buclă pentru a asambla secvența de cadre. Comanda movie am folosit-o pentru a reda cadrele succesiv ca pe un film.

Pentru a salva filmulețul creat într-un format de fișier care poate fi redat pe orice PC (fără a MATLAB instalat) sau care să fie inclus pe o pagină web sau într-o prezentare Power Point, am folosit comanda movie2avi.

III.10.1. Actualizarea ecranului

În unele cazuri, MATLAB nu actualizează ecranul până când nu se termină execuția codul sursă. Pentru a afișa actualizările pe ecran în timpul animației am folosit comanda drawnow.

III.10.2. Optimizarea animației

Pentru a optimiza animația, am folosit următoarele tehnici:

Folosirea comenzii animatedline pentru a crea animații de linii ale datelor de streaming.

Actualizarea proprietăților unui obiect în loc de a crea noi obiecte grafice existente.

Setarea limitelor axelor (XLim, YLim, ZLim) sau modificarea proprietăților modului asociat (XLimMode, YLimMode, ZLimMode), astfel încât MATLAB să nu recalculeze valorile la fiecare actualizare de ecran. Când setatăm limitele axelor, proprietățile modulului asociat se schimbă în manual.

III.11. Concluzii

Criptosistemul analizat este format din sistemul haotic Lorenz, un proiector al traiectoriei sistemului Lorenz pe o dreaptă, o metodă de asociere a simbolurilor alfabetului cu subintervalele proiecției și subsistemul ElGamal. Astfel sistemul are drept cheie un element al spațiului format din punctul inițial al sistemului Lorenz, parametrii sistemului și parametrii directori ai dreptei pe care se realizează proiecția. Primele rezultate experimentale prelimiare arată că criptosistemul analizat necesită ceva mai mult timp pentru criptarea și decriptarea datelor dar rezistă împotriva atacului Brute-Force. Comparațiile bazate pe distanța Hamming arată că criptosistemul propus are efect de avalanșă mai bun decât criptosistem Baptista. Se poate actualiza condiția inițială după fiecare criptare pentru a crește siguranța criptosistemului atunci când se cunoaște cheia parțială. Parametrii sistemului pot fi modificați într-un domeniu de valori cunoscut. Acest lucru face ca sistemul propus să aibe o comportare bună împotriva atacului analizei de text. Metoda propusă a fost testată pe cazul criptării de text clar. Se intenționează ca într-o lucrare viitoare să fie aplicată pe alte tipuri de aplicații cum ar fi imagini, video, etc. Mai mult, criptosistemul poate fi utilizat cu mai mulți factori de feedback, adică noua valoare a sistemului să depindă de mai multe valori precedente ale sistemului. Acest tip de mecanism poate fi, de asemenea, dezvoltat pentru a obține o funcție hash haotică.

III.12. Posibile îmbunătățiri

Posibilitatea de a genera numere pseudoaleatoare folosind mișcarea mouse-ului – astfel crescând viteza de generare a cheii.

Adăugarea de funcționalități folosind o listă de chei.

Adăugarea de funcționalități pentru semnături electronice.

IV. Experimente numerice

Vom considera o singură clasă de experimente numerice anume de a evalua eficiența criptosistemului. Pentru rezultatele criptosistemelor comparate am folosit drept bibliografie [28].

Pentru evaluarea eficienței, vom cripta și decripta texte în clar cu diferite mărimi, variind de la 512Kb la 16.5Mb. Deci vom putea măsura timpul consumat pentru fiecare implementare atât pentru criptare cât și pentru decriptarea mesajelor pentru a evalua complexitatea lor.

Pentru evaluarea securității statistice, vom considera seturi de texte cu diferite grade de similitudini. Aceste similitudini variază de la texte similar compuse din aceleași secvențe de caractere la texte complet diferite. De asemenea, vom considera similitudinea textelor implicate de rearanjarea a două sau trei simboluri în aceleași propoziții. Acestea imită apariția celor mai des folosite simboluri și cuvinte dintr-o limbă sau dintr-un text clar.

Toate experimentele au fost efectuate folosind criptosistemul Baptista-Lorenz pe un laptop HP EliteBook 8540w cu procesor I7 la 1.6 GHz, 16Gbytes RAM, 64 Kbytes cache memory, 128Kbytes cache memory, bus speed 400 MHz și sistem de operare Windows 7. Programului a fost rulat în modul user cu interfața grafică proiectată în programul Matlab R2015a.

IV.1.1. Experimente privind eficiența numerică

Analiza performanței este realizată în baza timpului consumat în microsecunde pentru operațiile de criptare și decriptare. Pentru acest scop, am ales cheia key = “qwertyuiopasdfghjklz” și parametrul de control r = 3.897654321. Pentru sistemele analizate am generat condiția inițială x0 = 0.4432280925102532 și parametrul de control r = 3.897654321. Am folosit 10 texte în clar diferite ca lungime și am determinat timpul de criptare și decriptare pentru fiecare din acestea și pentru fiecare dintre sistemele analizate. Pentru acest tip de experimente am folosit un alfabet A constând din 10 simboluri, de exemplu simbolurile ASCII 0,1,2,3,4,5,6,7,8,9. Astfel rezultatele obținute se pot aplica direct la aplicații, cum ar fi transmiterea numerelor de card de credit folosite în comerțul electronic.

Din tabelul 4 se poate observa că criptosistemul propus necesită un timp de criptare și decriptare mai mare decât al celorlalte sisteme analizate.

Tabelul 4. Timpii de execuție în microsecunde

Din tabelul 4 se poate constata următoarele

timpul de criptare pentru criptosistemul Baptista-Lorenz este de cca. 1.5 ori mai mare decât a celorlalte sisteme analizate,

timpul de decriptare pentru criptosistemul Baptista-Lorenz este de cca. 1.4 ori mai are decât a celorlalte sisteme analizate.

IV.1.2. Evaluarea performanțelor

Criptosistemul propus a fost implementat și testat folosind programul Matlab pe o platformă Windows. Configurarea minimală a sistemului folosit constă în Intel Pentium I7 și placă grafică cu 2GB RAM. Folosind texte în clar similare, rezultatele criptosistemul propus au fost comparate cu cele obținute de criptosistemul Baptista, criptosistemul DLT (Dynamic look-up table cipher) și criptosistemul IDTL (improved dynamic lookup table cipher). Primele două comparații au evidențiat efectul de avalanșă – dacă se modifică un număr mic de biți în textul clar se numără câți biți se modifică în textul cifrat.

IV.1.2.1. Distanța Hamming

Distanța Hamming dintre două coduri este, prin definiție, numărul de biți diferiți ale celor două coduri. Altfel spus, dacă str1 și str2 sunt două șiruri finite de caractere, atunci numărul de biți necesar pentru a modifica șirul str1 în șirul str2 reprezintă distanța Hamming. Pentru criptosistemul analizat am ales cheia ca fiind “qwertyuio pasdfghjklz” iar parametrul de control r = 3.897654321. Pentru celelalte criptosisteme folosite am generat condiția inițială x0 =0.4432280925102532 și parametrul de control r = 3.897654321. Acestea au fost folosite pentru diferite texte în clar obținându-se în mod corespunzător la ieșire mesaje criptate pentru care am calculat distanța Hamming. Textele în clar str1, str2 și str3 sunt:

str1: “Securitate ridicată = criptosistem sigur”

str2: “Zecuritate ridicată = criptosistem sigur”

str3: “Mercantila ridicată = criptosistem sigur”

Tabel 5 Distanța Hamming

Din tabelul 5 putem observa că criptosistemul propus are o distanță Hamming mai mare decât alte criptosisteme analizate. Prin urmare, criptosistemul propus este mai sigur decât celelalte sisteme analizate. De asemenea se poate constata că distanța Hamming este calculată și pentru cazul când efectuăm o mică modificare a cheii, de exemplu

key1 =“qwertyuiopasdfg hjklz”,

key2 =“rwertyuiopasdfghjklz”,

key3 =“ruerty uiopasdfghjklz”

Se poate observa distanța Hamming pentru schimbări minore în cheie pentru criptosistemul propus cu parametru de control r = 3.897654321. Pentru alte scheme, am folosit condițiile inițiale similar x01 = 0.4432280925102532, x02 =0.447134342 5102532 and x03 =0.4471038249321282 și parametrul de control r = 3.897654321. Am folosit același text în clar “Securitate ridicată = criptosistem sigur”. Comparațiile sunt prezentate în tabelul 6.

Tabelul 6 Distanța Hamming

Din tabelul 6 se poate constata că criptosistemul propus are distanța Hamming mai mare decât sistemele analizate, atunci când se produce o mica schimbare a cheii de criptare.

IV.1.2.2. Distanța Levenshtien

Dacă str1 și str2 sunt două șiruri finite de caractere, atunci distanța Levenshtien este numărul de caractere înlocuite necesar pentru a converti str1 în str2. Pentru comparații, vom alege cheia “qwertyuiopasdfghjklz” și condiția inițială x0 = 0.4432280925102532 iar parametrul de control r = 3.897654321 pentru celelelate criptosisteme. Astfel, Vom alege trei texte în clar:

str1: “hi security hi cryptography”

str2: “hi tecurity hi cryptography”

str3: “hi teduruty hi cryptography”

Tabelul 7 arată rezultatele comparative ale textelor criptate pentru diferitele criptosisteme analizate. Rezultatele arată că criptosistemul propus prduce rezultate mai bune.

Tabelul 7. Distanța Levenshtien

IV.2. Comentarii

Întru-cât interpretarea rezultatelor obținute în lucrare nu rezultă automat din prezentarea rezultatelor vom prezenta în această secțiune câteva comentarii privind cripotsistemul propus ca temă. Astfel, considerăm că criptosistemul analizat prezintă caracteristici bune de siguranță – comparabile cu ale criptosistemelor consacrate – însă are timpi mari de criptare și decriptare și asta în forma prezentată aici. Suntem conștienți că aplicația GUI realizată poate fi optimizată atât din punct de vedere al codului sursă dar și a numărului de operații – implicit a complexității – necesitat pentru cripatare și decripatare.

De asemenea, este posibilă conectarea criptosistemului Lorenz-Baptista cu alte sisteme de exemplu Diffie–Hellman. De altfel, toate rezultatele obținute sunt în contextul ipotezelor făcute și a resurselor hardware folosite și pe care le-am menționat pe parcursul lucrării.

V.Concluzii

Această lucrare prezintă o implementare eficientă a unui criptosistem haotic. Implementarea s-a efectuat în mediul de programare MATLAB.

Experimentele au confirmat că criptosistemul are o complexitate liniară cu eficiența comparabilă cu a criptosistemului AES. În general putem spune că pentru aplicațiile curente timpul maxim consumat de criptosistemul haotic este de cca 2 secunde pentru un text clar de cca 16 Mbit.

Criptosistemul haotic și-a dovedit eficiența și în ascunderea eventualelor similitudini statistice ale textului clar. In fapt, caracteristicile statistice ale textului criptat s-au dovedit a fi independente de cele ale textelor criptate. Acestă caracteristică nu este semnificativ afectată de restricțiile de ε-securitate. De asemnea este important de observant că prin creșterea restricției de ε-securitate aceasta nu are vreun impact ascupra procesului de decriptare și eficiența criptosistemului nu este afectată. Astfel concluzionăm că proprietățile interesante ale criptosistemului propus și eficiența sa crescută arată că acesta poate fi competitiv.

Algoritmul de criptare ElGamal a fost implementat în Matlab urmând apoi să fie folosit în cadrul criptosistemului Lorenz-Baptista.

V.1. Avantaje ale criptosistemelor haotice

Pe baza unui studiu al tuturor lucrărilor de cercetare menționate mai sus se constată că haosul are un număr de caracteristici, cum ar fi de bun pseudo-aleatoriu, imprevizibilitate și sensibilitate extremă la parametrii de stat și structurale inițiale. Aceste proprietăți ale sistemelor haotice sunt utile pentru criptare și decriptare de text mai rapid și sigur precum și imagini cu mai puțin de calcul comparativ cu criptografiei conventionale. Tehnici de criptare haos pe bază sunt ușor de realizat și au o gamă foarte largă cheie și au nevoie de o capacitate de memorie scăzută, astfel încât acestea să poată fi folosite în rețelele Wi-Fi și ZigBee în control industrial. algoritmi pe bază de haos ar trebui să fie puse în aplicare pentru a proteja conținutul multimedia și hărți logistice utilizate pentru a proiecta noi algoritmi de criptare. Noile funcții hash pot fi generate cu ajutorul unei hărți logistice care dă rezultate mai bune decât cele actuale hash funcțiile existente și poate fi, de asemenea, puse în aplicare în hardware-ul. hărți haotica crește puterea algoritmului, în comparație cu cazurile în care se folosește nici un haos. Confuzia și difuzarea funcțiilor haos ar trebui să fie utilizate pentru a asigura un mai bun echilibru între securitate și complexitate de calcul.

V.2. Dezavantaje ale criptosistemelor haotice

Principalul dezavantaj al criptosistemelor haotice este faptul că este dependent de hardware deoarece propagarea erorilor de calcul – ce depind printre altele de hardware – în sistemele haotice poate conduce la perturbarea criptosistemului haotic.

Un alt dezavantaj al criptosistemelor haotice diferențiale îl constituie dependența acestora de metoda numerică folosită. Astfel, cum se poate constata și în aplicația realizată, folosirea unei alte metode numerice, fie ea de același ordin de precizie, poate genera în timp perturbarea criptosistemului haotic.

Nu în ultimă instanță putem enumera alte două dezavantaje ale criptosistemelor haotice, anume timp de calcul necesar criptării/decriptării superior altor criptosisteme și cerințele pentru o mai mare putere de calcul.

VI.Considerații finale

Din lucrare se desprinde concluzia, că o posibilă soluție pentru criptare este criptosistemul haotic, în particular criptosistemul Baptista-Lorenz. De asemenea prin realizarea unei aplicații GUI ce implementează criptosistemul Baptista-Lorenz am arătat senzitivitatea sistemului atât la perturbarea condițiilor inițiale dar și la folosirea unei alte metode numerice cu același ordin de precizie.

Contribuția personală constă în

includerea unui proiector în cadrul sistemului Lorenz, fapt ce îmbogățește spațiul cheii criptosistemului Baptista-Lorenz,

combinarea în serie a celor două sisteme de criptare.

Lucrarea se dorește un punct de plecare pentru viitoare abordări ale criptosistemelor haotice.

Referințe bibliografice

[1] Fridrich, J., Image encryption based on chaotic maps, Proceedings of the IEEE International Conference on Systems, Man and Cybernetics, vol. 2, pp. 1105–1110, 1997.

[2] Pecora L. M., Carroll T. L., Synchronization in chaotic systems, Phys. Rev.Lett., vol. 64, pp. 821-824, 1990

[3] Baptista M.S., Cryptography with chaos, Physics Letters A, vol. 240, 1998, pp. 50-54.

[4] Shannon, C., Communication Theory of Secrecy Systems, Bell System Technical Journal, vol. 28(4), p. 656–715, 1949.

[5] ElGamal T., A Public-Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms, IEEE Transactions on Information Theory 31(4), 1985

[6] Boguta, K., Sensitivity to Peturbation in Elementary Cellular Automata, Wolfram Demonstrations Project, 2011

[7] Mahieu, E., Ikeda Attractor, Wolfram Demonstrations Project, 2011

[8] Zech, A., Donges, J. F., Marwan, N. & Kurths, J., Frequency Distribution of the Logistic Map, Wolfram Demonstrations Project, 2011

[9] Fabre, C, Chaos Game 2D/3D, Wolfram Demonstrations Project, 2011.

[10] Alvarez, G., Li, S. Some Basic Cryptographic Requirements for Chaos-Based Cryptosystems. International Journal of Bifurcation and Chaos, World Scientific, Vol.16, pp 2129-2151, 2006.

[11] Lorenz E.N., Deterministic nonperiodic flow. Journal of the Atmospheric Sciences 20(2): 130–141. 1963

[12] Sparrow C., The Lorenz Equations: Bifurcations, Chaos, and Strange Attractors, New York: Springer Verlag, Applied Mathematical Sciences, Vol. 41, 1982.

[13] Tucker W., Computing accurate Poincaré maps, Physica D 171, p.127–137, 2002

[14] Mukherjee S., Palit S.K., Bhattacharya D.K., Is one dimensional return map sufficient to describe the chaotic dynamics of a three dimensional system? , Applied Mathematics and Computation 219 (23), 11056–11064

[15] Cvitanovic P., Artuso R., Mainieri R., Tanner G., Vattay G., Chaos: Classical and Quantum, ChaosBook.org, 2013.

[16] Takens F., Detecting strange attractors in turbulence, Lecture Notes in Mathematics, vol. 898. Springer-Verlag. pp. 366–381. 1981.

[17] Furht B., Kirovski D., Multimedia Security Handbook, CRC Press, Boca Raton, Fla, USA, 2005.

[18] Guan Z.-H., Huang F., Guan W., Chaos-based image encryption algorithm, Physics Letters A, vol. 346, no. 1–3, pp. 153–157, 2005.

[19] Chen G., Mao Y., Chui C. K., A symmetric image encryption scheme based on 3D chaotic cat maps, Chaos, Solitons & Fractals, vol. 21, no. 3, pp. 749–761, 2004.

[20] Lian S., Sun J., Wang Z., A block cipher based on a suitable use of the chaotic standard map, Chaos, Solitons & Fractals, vol. 26, no. 1, pp. 117–129, 2005.

[21] Li, S. Analyses and New Designs of Digital Chaotic Ciphers. Ph.D. thesis, School of Electronic and Information Engineering, Xi’an Jiaotong University, Xi’an, China, 2003.

[22] Nitharwal B., Rani M., Saini H., C., Improving Security of the Baptista’s Cryptosystem Using Two-step Logistic Map, I. J. Computer Network and Information Security, Vol. 5, p.34-40, 2015

[23] Li S., Mou X., Cai Y., Improving security of a chaotic encryption approach. Physics Letters A, 290(3-4), 127–133, 2001.

[24] Alvarez G., Montoya F., Romera M., Pastor G., Cryptanalysis of an ergodic chaotic cipher. Physics Letters A, 311(23), 172 – 179, 2003.

[25] Wong K. W., A fast chaotic cryptographic scheme with dynamic look-up table. Physics Letters A, 298(4), 238 – 242, 2002.

[26] Xiao D., Liao X., Wong K.-W., Improving the security of a dynamic look-up table based chaotic cryptosystem. Circuits and Systems II: Express Briefs, IEEE Transactions on, 53(6), 502–506, 2006.

[27] Sobottka M., de Oliveira L.P.L., Dynamic proprieties of an exact algorithm for square root calculation. Phisica D, Nonlinear Phenomena 223 (2), 189-193, 2006.

[28] Formolo D., de Oliveira L.P.L, Sobottka M., A competitive searching-based chaotic cipher, International Journal of Modern Physics C 21 (11), 1377-1390

[29] Gang T.–Q., Mei F.-X., Chen L.-J., Structure-Preserving Algorithms for the Lorenz System, CHIN. PHYS. LETT., Vol. 25, No. 3 (2008).

[30] Trotter H. F., On the product of semi-groups of operators, Proc. Amer. Math. Soc. 10(1959), 545-551

[31] Suzuki M., Fractal decomposition of exponential operators with applications to many-body theories and Monte Carlo simulations, Phys. Lett. A 146 (1990), 319-323

[32] Yoshida H. Construction of higher order symplectic integrators. Phys. Lett. A 150 (1990), 5–7

[33] McLachlan R. I., On the numerical integration of ordinary differential equations by symmetric composition methods, SIAM J. Sci. Comp. 16, (1995), 151-168.

[34] Șerbănescu Alex., Aplicații haos în comunicații, Editura ATM, 2004, București.

[35] de Oliveira L.P.L., Sobottka M., Cryptography with chaotic mixing, Chaos, Solitons and Fractals, 35 (2008), 466-471

Index de concept

atractor, 27

criptare cu cheie publică, 11

criptosistemul ElGamal, 17

gradului de securitate, 60

metode de asociere, 58

operatorul de proiecție, 52

sistem dinamic, 19

sistemele dinamice haotice, 20

sistemelor haotice, 19

sistemul haotic Lorenz, 22

Anexa 1

Codul sursă al interfeței grafice GUI în Matlab:

function varargout = lorenzeGUI(varargin)

%

% Acest GUI ilustreaza functionarea criptosistemul Baptista-Lorenz

% care foloseste aspectul haotic al sistemului Lorenz si ideea de

% criptare a lui Baptista pentru a cripta texte in clar

%

% Sistemul Lorenz

%

% dy1/dx = -sigma*y1 + sigma*y2,

% dy2/dx = -y1*y3 + rho*y1 – y2,

% dy3/dx = y1*y2 – beta*y3,

%

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, …

'gui_Singleton', gui_Singleton, …

'gui_OpeningFcn', @lorenzGUI_OpeningFcn, …

'gui_OutputFcn', @lorenzGUI_OutputFcn, …

'gui_LayoutFcn', [] , …

'gui_Callback', []);

if nargin & isstr(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code – DO NOT EDIT

%–––––––––––––––––––––––––

function lorenzGUI_OpeningFcn(hObject, eventdata, handles, varargin)

clc

handles.output = hObject;

movegui(hObject,'onscreen') % Afisa aplicatia pe ecran

movegui(hObject,'center') % Afiseaza aplicatia in centrul ecranului

set(handles.gridopt,'checked','on') % Activeaza optiunea grid

set(handles.y13dlabel,'Visible','Off')

set(handles.y23dlabel,'Visible','Off')

set(handles.y2label,'String','y2','Visible','On','Position',[0.58 0.60 0.032 0.027])

xlimits = [-25 25];

ylimits = [-30 30];

zlimits = [-1 50];

ytime_limits = [-25 25];

xtime_limits = [1 40];

set(handles.display_plot,'XLim',xlimits,'YLim',ylimits,'ZLim',zlimits);

set(handles.time_plot,'XLim',xtime_limits,'YLim',ytime_limits);

handles.line_plot = [];

handles.line_plotd = [];

handles.line_time_plot = [];

handles.line_time_plotd = [];

guidata(hObject, handles);

%–––––––––––––––––––––––––

function varargout = lorenzGUI_OutputFcn(hObject, eventdata, handles)

% set(uicontrol(handles.figure1),'FontUnits','normalized');

varargout{1} = handles.output;

%–––––––––––––––––––––––––

function run_wave_Callback(hObject, eventdata, handles)

t0 = str2double(get(handles.t0,'String')); % momentul initial

tfinal = str2double(get(handles.tf,'String')); % momentul final

b = str2double(get(handles.b,'String')); % parametrul b sistem Lorenz

r = str2double(get(handles.r,'String')); % parametrul rho sistem Lorenz

s = str2double(get(handles.sigma,'String')); % parametrul sigma sistem Lorenz

n0 = str2double(get(handles.n0,'String')); % indexul initial incepand cu care sistemul este haotic

% vectorul director al dreptei pe care se realizeaza proiectia

alfa = str2double(get(handles.alfa,'String'));

beta = str2double(get(handles.beta,'String'));

gama = str2double(get(handles.gama,'String'));

% conditia initiala a sistemului Lorenz

xi0 = str2double(get(handles.xi0,'String'));

yi0 = str2double(get(handles.yi0,'String'));

zi0 = str2double(get(handles.zi0,'String'));

y0 = [xi0 yi0 zi0]; % conditia initiala

dy0 = str2double(get(handles.dy0,'String')); % perturbarea absoluta fata de conditia initiala

rng(0,'twister');

rvals = 2*rand(1,1)-1;

elevation = asin(rvals);

azimuth = 2*pi*rand(1,1);

radii = dy0*rand(1,1)^(1/3);

dy = y0 + sph2cart(azimuth,elevation,radii); % conditia initiala modificata

handles.dy = dy;

y = y0(:);

i = 1;

% rezolvarea sistemului Lorenz

options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-4]);

[t1,Y] = ode45(@lorenzequation,[t0 tfinal],y0,options,b,r,s); % sistemul Lorenz neperturbat

[t2,DY] = ode45(@lorenzequation,[t0 tfinal],dy,options,b,r,s); % sistemul Lorenz perturbat

% proiectia traiectoriei pe dreapta de parametrii directori [alfa beta gama]

modul = norm([alfa beta gama]);

alfa = alfa/modul;

beta = beta/modul;

gama = gama/modul;

vector_director = [alfa beta gama]; % vectorul director al dreptei

OpPr = vector_director.'*vector_director; % operatorul de proiectie

% Proiectia punctelor cu indexul incepand cu n0 pe dreapta d

Pr = Y(n0:end,:) * OpPr;

% determinarea celor mai departate puncte ale proiectiei

% matricea distantelor dintre doua puncte ale proiectiei

D = dist(Pr');

[M I] = max(D(:)); % M este diametrul proiectiei

% indexul punctelor extreme ale proiectiei sunt I_row si respectiv I_col

[I_row I_col] = ind2sub(size(D),I); % indexul celor mai departate puncte

[m, ~] = size(Pr); % numarul de puncte ale proiectiei

Alfabet = char(32:127);

nrsemne = length(Alfabet);

lung_pas = M/nrsemne;

% divizarea proiectiei in subintervale

Q(1,:) = Pr(I_row,:);

vdirector = (Pr(I_col,:)-Pr(I_row,:))/norm(Pr(I_col,:)-Pr(I_row,:));

pas = lung_pas*vdirector;

for k = 2:nrsemne

Q(k,:) = Q(k-1,:)+pas;

end

% graficul traiectoriei si a primei componente a solutiei

set(handles.animate2d_disp1,'Enable','Off')

set(handles.animate3d_disp,'Enable','Off')

set(handles.actual_yo,'Enable','Off')

set(handles.change_dyo,'Enable','Off')

if strcmp(get(handles.run_wave,'String'),'PLOT')

set(handles.run_wave,'String','STOP');

cla; % clear figure

set(handles.display_plot,'HandleVisibility','On')

set(handles.time_plot,'HandleVisibility','Off')

cla; % clear figure

set(gca,'UserData',1)

pause(0.01)

ball_plot = line('XData',y(1),'YData',y(2),'ZData',y(3), …

'Color','Black','Marker','.','Markersize',25); % seteaza punctul curent negru

line_plot = line('XData',[],'YData',[],'YData',[],'Color','Black','LineStyle','-'); % seteaza linia curenta neagra

ball_plotd = line('XData',dy(1),'YData',dy(2),'ZData',dy(3), …

'Color','Red','Marker','.','Markersize',25); % seteaza punctul curent rosu

line_plotd = line('XData',[],'YData',[],'YData',[],'Color','Red','LineStyle','-'); % seteaza linia curenta rosie

hTxt1 = text(y(1), y(2), y(3), sprintf('%d',n0), …

'Color',[0.2 0.2 0.2], 'FontSize',8, …

'HorizontalAlignment','left', 'VerticalAlignment','top'); % seteaza textul ce apare la punct

set(handles.display_plot,'SortMethod','childorder','Visible','On','NextPlot','Add')

set(handles.display_plot,'HandleVisibility','Off')

set(handles.time_plot,'HandleVisibility','On')

ball_time_plot = line('XData',t0,'YData',y(1),…

'Color','Black','Marker','.','MarkerSize',25);

line_time_plot = line('XData',[],'YData',[],'Color','Black','LineStyle','-');

ball_time_plotd = line('XData',t0,'YData',dy(1),…

'Color','Red','Marker','.','MarkerSize',25);

line_time_plotd = line('XData',[],'YData',[],'Color','Red','LineStyle','-');

hTxt2 = text(t0, y(1), sprintf('%d',n0), …

'Color',[0.2 0.2 0.2], 'FontSize',8, …

'HorizontalAlignment','left', 'VerticalAlignment','top'); % seteaza textul ce apare la punct

set(handles.time_plot,'SortMethod','childorder','Visible','On','NextPlot','Add')

tlimits = [t0 tfinal];

ylimits = [ceil(min(min(Y(:,1)),min(DY(:,1))))-5 ceil(max(max(Y(:,1)),max(DY(:,1))))+5];

set(handles.time_plot,'XLim',tlimits,'YLim',ylimits,'Box','ON');

set(handles.display_plot,'HandleVisibility','On')

set(handles.time_plot,'HandleVisibility','Off')

if get(handles.animate2d_disp1,'Value') == 1

plot_view = [0,90];

else

plot_view = [-37.5,30];

end

Yt = Y(:,1);

DYt = DY(:,1);

set(handles.display_plot,'View',plot_view);

xlimits = [ceil(min(min(Y(:,1)),min(DY(:,1))))-5 ceil(max(max(Y(:,1)),max(DY(:,1))))+5];

ylimits = [ceil(min(min(Y(:,2)),min(DY(:,2))))-5 ceil(max(max(Y(:,2)),max(DY(:,2))))+5];

zlimits = [ceil(min(min(Y(:,3)),min(DY(:,3))))-5 ceil(max(max(Y(:,3)),max(DY(:,3))))+5];

set(handles.display_plot,'XLim',xlimits,'YLim',ylimits,'ZLim',zlimits,'Box','OFF');

set(gca,'UserData',1)

while get(gca,'Userdata')== 1

if t1(i) >= tfinal

set(gca,'Userdata',-1);

set(handles.run_wave,'String','PLOT');

break

end

if get(handles.actual_yo,'Value')== 0

set(line_plot,'Visible','Off')

set(line_time_plot,'Visible','Off')

else

set(line_plot,'Visible','On')

set(line_time_plot,'Visible','On')

end

if get(handles.change_dyo,'Value')== 0

set(line_plotd,'Visible','Off')

set(line_time_plotd,'Visible','Off')

else

set(line_plotd,'Visible','On')

set(line_time_plotd,'Visible','On')

end

set(ball_plot,'XData',Y(i,1),'YData',Y(i,2),'ZData',Y(i,3)) % graficul traiectoriei

set(ball_plotd,'XData',DY(i,1),'YData',DY(i,2),'ZData',DY(i,3))

set(line_plot,'XData',Y(1:i,1),'YData',Y(1:i,2),'ZData',Y(1:i,3))

set(line_plotd,'XData',DY(1:i,1),'YData',DY(1:i,2),'ZData',DY(1:i,3))

set(hTxt1, 'Position',[Y(i,1) Y(i,2) Y(i,3)],'String',sprintf('%d',i)) % scrie indexul punctului curent

set(ball_time_plot,'XData',t1(i),'YData',Yt(i)) % graficul primei componente in raport cu timpul

set(ball_time_plotd,'XData',t2(i),'YData',DYt(i))

set(line_time_plot,'XData',t1(1:i),'YData',Yt(1:i))

set(line_time_plotd,'XData',t2(1:i),'YData',DYt(1:i))

set(hTxt2, 'Position',[t1(i) Yt(i)],'String',sprintf('%d',i)) % scrie indexul punctului curent

handles.line_plot = line_plot;

handles.line_plotd = line_plotd;

handles.line_time_plot = line_time_plot;

handles.line_time_plotd = line_time_plotd;

guidata(hObject, handles);

drawnow;

pause(0.01)

i = i + 1;

end

set(line_plot)

set(line_plotd)

set(line_time_plot)

set(line_time_plotd)

else

set(gca,'Userdata',-1);

set(handles.run_wave,'String','PLOT');

end

set(handles.display_plot,'HandleVisibility','Off')

set(handles.time_plot,'HandleVisibility','On')

set(handles.animate2d_disp1,'Enable','On')

set(handles.animate3d_disp,'Enable','On')

set(handles.actual_yo,'Enable','On')

set(handles.change_dyo,'Enable','On')

%–––––––––––––––––––––––––

function animate2d_disp1_Callback(hObject, eventdata, handles)

cla;

set(handles.time_plot,'HandleVisibility','Off')

set(handles.display_plot,'HandleVisibility','On')

cla;

plot_view = [0,90];

set(handles.display_plot,'View',plot_view,'Box','On');

set(handles.y1label,'Visible','On')

set(handles.y2label,'String','y2','Visible','On')

set(handles.y13dlabel,'Visible','Off')

set(handles.y23dlabel,'Visible','Off')

set(handles.animate3d_disp,'Value',0)

%–––––––––––––––––––––––––

function animate3d_disp_Callback(hObject, eventdata, handles)

cla;

set(handles.time_plot,'HandleVisibility','Off')

set(handles.display_plot,'HandleVisibility','On')

cla;

plot_view = [-37.5,30];

set(handles.display_plot,'View',plot_view,'Box','OFF');

set(handles.y1label,'Visible','Off')

set(handles.y2label,'String','y3','Position',[0.58 0.60 0.032 0.027])

set(handles.y13dlabel,'Visible','On')

set(handles.y23dlabel,'Visible','On')

set(handles.animate2d_disp1,'Value',0)

%–––––––––––––––––––––––––

function close_button_Callback(hObject, eventdata, handles)

close(gcbf) % to close GUI

%–––––––––––––––––––––––––

function b_CreateFcn(hObject, eventdata, handles)

%–––––––––––––––––––––––––

function b_Callback(hObject, eventdata, handles)

%–––––––––––––––––––––––––

function sigma_CreateFcn(hObject, eventdata, handles)

%–––––––––––––––––––––––––

function sigma_Callback(hObject, eventdata, handles)

%–––––––––––––––––––––––––

function r_CreateFcn(hObject, eventdata, handles)

%–––––––––––––––––––––––––

function r_Callback(hObject, eventdata, handles)

%–––––––––––––––––––––––––

function t0_CreateFcn(hObject, eventdata, handles)

%–––––––––––––––––––––––––

function t0_Callback(hObject, eventdata, handles)

%–––––––––––––––––––––––––

function tf_CreateFcn(hObject, eventdata, handles)

%–––––––––––––––––––––––––

function tf_Callback(hObject, eventdata, handles)

% –––––––––––––––––––––––

function Gridmenu_Callback(hObject, eventdata, handles)

% –––––––––––––––––––––––

function grid_onoff_Callback(hObject, eventdata, handles)

if strcmp(get(handles.gridopt,'checked'),'on')

set(handles.gridopt,'checked','off') % Dezactiveaza optiunea grid

set(handles.display_plot,'XGrid','Off','YGrid','Off','ZGrid','Off') % Activeaza grid invisibil

set(handles.time_plot,'XGrid','Off','YGrid','Off') % Activeaza grid invisibil

else

set(handles.gridopt,'checked','on') % To check the grid option

set(handles.display_plot,'XGrid','On','YGrid','On','ZGrid','On') % Make the grid visible

set(handles.time_plot,'XGrid','On','YGrid','On') % Make the grid invisible

end

% –––––––––––––––––––––––

% Sistemul haotic Lorenz

function dy = lorenzequation(t,y,b,r,s)

dy = zeros(3,1);

dy(1) = – s*y(1) + s*y(2);

dy(2) = – y(1)*y(3) + r*y(1) – y(2);

dy(3) = y(1)*y(2) – b*y(3);

% – Executa la creerea obiectelor dupa setarea tuturor proprietatilor

function dyo_CreateFcn(hObject, eventdata, handles)

function dyo_Callback(hObject, eventdata, handles)

% – Executa la apasarea buton actual_yo.

function actual_yo_Callback(hObject, eventdata, handles)

if get(handles.actual_yo,'Value')==0

set(handles.line_plot,'Visible','Off')

set(handles.line_time_plot,'Visible','Off')

else

set(handles.line_plot,'Visible','On')

set(handles.line_time_plot,'Visible','On')

end

% – Executa la apasarea buton change_dyo.

function change_dyo_Callback(hObject, eventdata, handles)

if get(handles.change_dyo,'Value')==0

set(handles.line_plotd,'Visible','Off')

set(handles.line_time_plotd,'Visible','Off')

else

set(handles.line_plotd,'Visible','On')

set(handles.line_time_plotd,'Visible','On')

end

function xi0_Callback(hObject, eventdata, handles)

% hObject handle to xi0 (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of xi0 as text

% str2double(get(hObject,'String')) returns contents of xi0 as a double

% – Executes during object creation, after setting all properties.

function xi0_CreateFcn(hObject, eventdata, handles)

% hObject handle to xi0 (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function yi0_Callback(hObject, eventdata, handles)

% hObject handle to yi0 (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of yi0 as text

% str2double(get(hObject,'String')) returns contents of yi0 as a double

% – Executes during object creation, after setting all properties.

function yi0_CreateFcn(hObject, eventdata, handles)

% hObject handle to yi0 (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function zi0_Callback(hObject, eventdata, handles)

% hObject handle to zi0 (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of zi0 as text

% str2double(get(hObject,'String')) returns contents of zi0 as a double

% – Executes during object creation, after setting all properties.

function zi0_CreateFcn(hObject, eventdata, handles)

% hObject handle to zi0 (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function dy0_Callback(hObject, eventdata, handles)

% hObject handle to dy0 (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of dy0 as text

% str2double(get(hObject,'String')) returns contents of dy0 as a double

% – Executes during object creation, after setting all properties.

function dy0_CreateFcn(hObject, eventdata, handles)

% hObject handle to dy0 (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function ti_Callback(hObject, eventdata, handles)

% hObject handle to ti (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of ti as text

% str2double(get(hObject,'String')) returns contents of ti as a double

% – Executes during object creation, after setting all properties.

function ti_CreateFcn(hObject, eventdata, handles)

% hObject handle to ti (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit19_Callback(hObject, eventdata, handles)

% hObject handle to tf (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of tf as text

% str2double(get(hObject,'String')) returns contents of tf as a double

% – Executes during object creation, after setting all properties.

function edit19_CreateFcn(hObject, eventdata, handles)

% hObject handle to tf (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function alfa_Callback(hObject, eventdata, handles)

% hObject handle to alfa (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of alfa as text

% str2double(get(hObject,'String')) returns contents of alfa as a double

% – Executes during object creation, after setting all properties.

function alfa_CreateFcn(hObject, eventdata, handles)

% hObject handle to alfa (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function beta_Callback(hObject, eventdata, handles)

% hObject handle to beta (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of beta as text

% str2double(get(hObject,'String')) returns contents of beta as a double

% – Executes during object creation, after setting all properties.

function beta_CreateFcn(hObject, eventdata, handles)

% hObject handle to beta (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function n0_Callback(hObject, eventdata, handles)

% hObject handle to n0 (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of n0 as text

% str2double(get(hObject,'String')) returns contents of n0 as a double

% – Executes during object creation, after setting all properties.

function n0_CreateFcn(hObject, eventdata, handles)

% hObject handle to n0 (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

% – Executes on button press in Cripteaza.

function Cripteaza_Callback(hObject, eventdata, handles)

% hObject handle to Cripteaza (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

t0 = str2double(get(handles.t0,'String')); % momentul initial

tfinal = str2double(get(handles.tf,'String')); % momentul final

b = str2double(get(handles.b,'String')); % parametrul b sistem Lorenz

r = str2double(get(handles.r,'String')); % parametrul rho sistem Lorenz

s = str2double(get(handles.sigma,'String')); % parametrul sigma sistem Lorenz

n0 = str2double(get(handles.n0,'String')); % indexul initial incepand cu care sistemul este haotic

% vectorul director al dreptei pe care se realizeaza proiectia

alfa = str2double(get(handles.alfa,'String'));

beta = str2double(get(handles.beta,'String'));

gama = str2double(get(handles.gama,'String'));

Text = get(handles.Alice,'String'); % citeste textul in clar <Alice>

% conditia initiala a sistemului Lorenz

xi0 = str2double(get(handles.xi0,'String'));

yi0 = str2double(get(handles.yi0,'String'));

zi0 = str2double(get(handles.zi0,'String'));

y0 = [xi0 yi0 zi0]; % conditia initiala

y = y0(:);

i = 1;

% rezolvarea sistemului Lorenz

options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-4]);

[~,Y] = ode45(@lorenzequation,[t0 tfinal],y0,options,b,r,s); % sistemul Lorenz neperturbat

% proiectia traiectoriei pe dreapta de parametrii directori [alfa beta gama]

modul = norm([alfa beta gama]);

alfa = alfa/modul;

beta = beta/modul;

gama = gama/modul;

vector_director = [alfa beta gama]; % vectorul director al dreptei

OpPr = vector_director.'*vector_director; % operatorul de proiectie

% Proiectia punctelor cu indexul incepand cu n0 pe dreapta d

Pr = Y(n0:end,:) * OpPr;

% determinarea celor mai departate puncte ale proiectiei

% matricea distantelor dintre doua puncte ale proiectiei

D = dist(Pr');

[M I] = max(D(:)); % M este diametrul proiectiei

% indexul punctelor extreme ale proiectiei sunt I_row si respectiv I_col

[I_row I_col] = ind2sub(size(D),I); % indexul celor mai departate puncte

[m, ~] = size(Pr); % numarul de puncte ale proiectiei

Alfabet = char(32:127);

nrsemne = length(Alfabet);

lung_pas = M/nrsemne;

% divizarea proiectiei in subintervale

Q(1,:) = Pr(I_row,:);

vdirector = (Pr(I_col,:)-Pr(I_row,:))/norm(Pr(I_col,:)-Pr(I_row,:));

pas = lung_pas*vdirector;

for k = 2:nrsemne

Q(k,:) = Q(k-1,:)+pas;

end

% asociem unui singur interval de pe dreapta d un caracter din Alfabet

Ltext=length(Text); % lungimea textului de criptat

numerictext = [];

% Text_Criptat = zeros(1,Ltext);

% indexul punctului curent determina subintervalul

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

j_anterior = 0;

for i = 1:Ltext

adevar = 1;

for semn=1:nrsemne

if Text(i) == Alfabet(semn)

switch semn

case 1

ldr = norm(Q(semn+1,:)-Q(1,:));

j = j_anterior;

while adevar

j = j+1;

l_curent = norm(Pr(j,:)-Q(1,:)); % determinarea indexului proiectiei ce apartine subintervalului

if (l_curent < ldr)

adevar = 0;

numerictext = [numerictext;j – j_anterior];

j_anterior = j;

end

end

case nrsemne

lstg = norm(Q(semn,:)-Q(1,:));

j = j_anterior;

while adevar

j = j+1;

l_curent = norm(Pr(j,:)-Q(1,:)); % determinarea indexului proiectiei ce apartine subintervalului

if (lstg <= l_curent)

adevar = 0;

numerictext = [numerictext;j – j_anterior];

j_anterior = j;

end

end

otherwise

lstg = norm(Q(semn,:)-Q(1,:)); % determinarea subintervalului corespunzator lui semn

ldr = norm(Q(semn+1,:)-Q(1,:));

j = j_anterior;

while adevar

j = j+1;

l_curent = norm(Pr(j,:)-Q(1,:)); % determinarea indexului proiectiei ce apartine subintervalului

if (lstg <= l_curent) && (l_curent < ldr)

adevar = 0;

numerictext = [numerictext;j – j_anterior];

j_anterior = j;

end

end

end

end

end

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% algoritmul lui ElGamal de criptare in GF(Z_p)

% citim cheia publica

p = str2double(get(handles.GF_p,'String')); % parametrul p(prim) al lui GF(Z_p)

g = str2double(get(handles.g,'String')); % generatorul lui GF(Z_p)

k = randi([1,p-2],1,1); % numar ales de Alice

global a_Alice

a_Alice = randi([1,p-1],1,1); % cheia privata a lui Alice

bb = 1;

for i = 1:a_Alice

bb = mod(bb*g,p);

end

set(handles.cheie_beta,'String',num2str(bb)); % parametrul beta al lui ElGamal bb = g^a

bk = 1; % bk = mod(power(bb,k),p);

c1 = 1; % c1 = mod(power(g,k),p);

for i = 1:k

c1 = mod(c1 * g,p);

bk = mod(bk * bb,p);

end

numerictext = [c1;mod(numerictext.*bk,p)]; % adaugam c1 la mesajul criptat

set(handles.Mcr,'String',num2str(numerictext')); % mesaj transmis

% – Executes on button press in Decripteaza.

function Decripteaza_Callback(hObject, eventdata, handles)

% hObject handle to Decripteaza (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% citim mesajul cifrat

% [h,S] = varargin{[1,3]}; % Get calling handle and structure.

% S = varargin{3}; % Get the structure.

auz = get(handles.Mcr,'String'); % obtinem mesajul criptat

var = isspace(auz); % depistam spatiile goale

Klungime = length(var); % dimesiunea mesajului criptat

m = 0; % numarul de cifre ale coordonatei

k = 0; % indexul punctului

i = 1;

% determinam indexul punctelor de pe proiectie

for i=1:Klungime

if ~var(i)

m = m+1; % avem o cifra

if i == Klungime % pentru ultimul numar

k = k+1;

Pp(k) = str2num(auz(1,i-m:end));

end

else

if m ~= 0 % am determinat un numar

k = k+1;

Pp(k) = str2num(auz(1,i-m:i-1));

m = 0; % resetam numarul cifrelor urmatorului numar

end

end

end

% algoritmul lui ElGamal de criptare in GF(Z_p)

% citim cheia publica

p = str2double(get(handles.GF_p,'String')); % parametrul p(prim) al lui GF(Z_p)

g = str2double(get(handles.g,'String')); % generatorul lui GF(Z_p)

global a_Alice

kp = p-1-a_Alice;

kPp = size(Pp,2);

c1kp = 1;

for i = 1:kp

c1kp = mod(c1kp*Pp(1),p);

end

Pp(2:kPp) = mod(Pp(2:kPp).*c1kp,p);

% determin coord. punctului pe dreapta d corespunzatoare indexului Punct

t0 = str2double(get(handles.t0,'String')); % momentul initial

tfinal = str2double(get(handles.tf,'String')); % momentul final

b = str2double(get(handles.b,'String')); % parametrul b sistem Lorenz

r = str2double(get(handles.r,'String')); % parametrul rho sistem Lorenz

s = str2double(get(handles.sigma,'String')); % parametrul sigma sistem Lorenz

n0 = str2double(get(handles.n0,'String')); % indexul initial incepand cu care sistemul este haotic

% vectorul director al dreptei pe care se realizeaza proiectia

alfa = str2double(get(handles.alfa,'String'));

beta = str2double(get(handles.beta,'String'));

gama = str2double(get(handles.gama,'String'));

% conditia initiala a sistemului Lorenz

xi0 = str2double(get(handles.xi0,'String'));

yi0 = str2double(get(handles.yi0,'String'));

zi0 = str2double(get(handles.zi0,'String'));

y0 = [xi0 yi0 zi0]; % conditia initiala

y = y0(:);

i = 1;

% rezolvarea sistemului Lorenz

options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-4]);

[t1,Y] = ode45(@lorenzequation,[t0 tfinal],y0,options,b,r,s); % sistemul Lorenz neperturbat

% proiectia traiectoriei pe dreapta de parametrii directori [alfa beta gama]

modul = norm([alfa beta gama]);

alfa = alfa/modul;

beta = beta/modul;

gama = gama/modul;

vector_director = [alfa beta gama]; % vectorul director al dreptei

OpPr = vector_director.'*vector_director; % operatorul de proiectie

% Proiectia punctelor cu indexul incepand cu n0 pe dreapta d

Pr = Y(n0:end,:) * OpPr;

% determinarea celor mai departate puncte ale proiectiei

% matricea distantelor dintre doua puncte ale proiectiei

D = dist(Pr');

[M I] = max(D(:)); % M este diametrul proiectiei

% indexul punctelor extreme ale proiectiei sunt I_row si respectiv I_col

[I_row I_col] = ind2sub(size(D),I); % indexul celor mai departate puncte

[m, ~] = size(Pr); % numarul de puncte ale proiectiei

Alfabet = char(32:127);

nrsemne = length(Alfabet);

lung_pas = M/nrsemne;

% divizarea proiectiei in subintervale

Q(1,:) = Pr(I_row,:);

vdirector = (Pr(I_col,:)-Pr(I_row,:))/norm(Pr(I_col,:)-Pr(I_row,:));

pas = lung_pas*vdirector;

for k = 2:nrsemne

Q(k,:) = Q(k-1,:)+pas;

end

mesaj = [];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Pct_anterior = 0;

for i = 2:kPp

adevar = 1;

l_curent = norm(Pr(Pp(i) + Pct_anterior,:)-Q(1,:));

for semn = 1:nrsemne

switch semn

case 1

ldr = norm(Q(semn+1,:)-Q(1,:));

if (l_curent < ldr) && adevar

adevar = 0;

mesaj = horzcat(mesaj,Alfabet(semn));

Pct_anterior = Pct_anterior + Pp(i);

end

case nrsemne

lstg = norm(Q(semn,:)-Q(1,:));

if (l_curent < lstg) && adevar

adevar = 0;

mesaj = horzcat(mesaj,Alfabet(semn));

Pct_anterior = Pct_anterior + Pp(i);

end

otherwise

lstg = norm(Q(semn,:)-Q(1,:)); % determinarea subintervalului corespunzator lui semn

ldr = norm(Q(semn+1,:)-Q(1,:));

if (lstg <= l_curent) && (l_curent < ldr) && adevar

adevar = 0;

mesaj = horzcat(mesaj,Alfabet(semn));

Pct_anterior = Pct_anterior + Pp(i);

end

end

end

end

set(handles.Bob,'String',num2str(mesaj)); % mesaj decriptat

set(uicontrol(handles.Bob),'ForegroundColor','k');

guidata(hObject,handles);

function Bob_Callback(hObject, eventdata, handles)

% hObject handle to Bob (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Bob as text

% str2double(get(hObject,'String')) returns contents of Bob as a double

% – Executes during object creation, after setting all properties.

function Bob_CreateFcn(hObject, eventdata, handles)

% hObject handle to Bob (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function Mesaj_Criptat_Callback(hObject, eventdata, handles)

% hObject handle to Mesaj_Criptat (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Mesaj_Criptat as text

% str2double(get(hObject,'String')) returns contents of Mesaj_Criptat as a double

% – Executes during object creation, after setting all properties.

function Mesaj_Criptat_CreateFcn(hObject, eventdata, handles)

% hObject handle to Mesaj_Criptat (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function Alice_Callback(hObject, eventdata, handles)

% hObject handle to Alice (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Alice as text

% str2double(get(hObject,'String')) returns contents of Alice as a double

% – Executes during object creation, after setting all properties.

function Alice_CreateFcn(hObject, eventdata, handles)

% hObject handle to Alice (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function gama_Callback(hObject, eventdata, handles)

% hObject handle to gama (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of gama as text

% str2double(get(hObject,'String')) returns contents of gama as a double

% – Executes during object creation, after setting all properties.

function gama_CreateFcn(hObject, eventdata, handles)

% hObject handle to gama (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function Mcr_Callback(hObject, eventdata, handles)

% hObject handle to Mcr (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Mcr as text

% str2double(get(hObject,'String')) returns contents of Mcr as a double

% – Executes during object creation, after setting all properties.

function Mcr_CreateFcn(hObject, eventdata, handles)

% hObject handle to Mcr (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

% – Executes on button press in HELP.

function HELP_Callback(hObject, eventdata, handles)

% hObject handle to HELP (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

content = ['Criptosistemul Baptista Lorenz este format din '…

'sistemul haotic Lorenz, un proiector al traiectoriei sistemului Lorenz '…

'pe o dreapta si o metoda de asociere a simbolurilor alfabetului cu '…

'subintervalele proiectiei. Astfel sistemul are drept cheie un element '…

'al spatiului format din punctul initial al sistemului Lorenz, parametrii '…

'sistemului si parametrii directori ai dreptei pe care se realizeaza proiectia. '…

'Primele rezultate experimentale prelimiare arata ca criptosistemul analizat '…

'necesita ceva mai mult timp pentru criptarea si decriptarea datelor dar rezista '…

'împotriva atacului Brute-Force. '…

'Press ok to close this message box'] ;

name = 'Criptosistemul Baptista Lorenz';

h = warndlg(content,name);

%end

% – Executes on button press in Rosu.

function Rosu_Callback(hObject, eventdata, handles)

% hObject handle to Rosu (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% citim mesajul cifrat

% [h,S] = varargin{[1,3]}; % Get calling handle and structure.

% S = varargin{3}; % Get the structure.

auz = get(handles.Mcr,'String'); % obtinem mesajul criptat

var = isspace(auz); % depistam spatiile goale

Klungime = length(var); % dimesiunea mesajului criptat

m = 0; % numarul de cifre ale coordonatei

k = 0; % numarul punctului

i = 1;

% determinam indexul punctelor de pe proiectie

for i=1:Klungime

if ~var(i)

m = m+1; % avem o cifra

if i == Klungime % pentru ultimul numar

k = k+1;

Pp(k) = str2num(auz(1,i-m:end));

end

else

if m ~= 0 % am determinat un numar

k = k+1;

Pp(k) = str2num(auz(1,i-m:i-1));

m = 0; % resetam numarul cifrelor urmatorului numar

end

end

end

% algoritmul lui ElGamal de criptare in GF(Z_p)

% citim cheia publica

p = str2double(get(handles.GF_p,'String')); % parametrul p(prim) al lui GF(Z_p)

g = str2double(get(handles.g,'String')); % generatorul lui GF(Z_p)

global a_Alice

kp = p-1-a_Alice;

kPp = size(Pp,2);

c1kp = 1;

for i = 1:kp

c1kp = mod(c1kp*Pp(1),p);

end

Pp(2:kPp) = mod(Pp(2:kPp).*c1kp,p);

% determin coord. punctului pe dreapta d corespunzatoare indexului Punct

t0 = str2double(get(handles.t0,'String')); % momentul initial

tfinal = str2double(get(handles.tf,'String')); % momentul final

b = str2double(get(handles.b,'String')); % parametrul b sistem Lorenz

r = str2double(get(handles.r,'String')); % parametrul rho sistem Lorenz

s = str2double(get(handles.sigma,'String')); % parametrul sigma sistem Lorenz

n0 = str2double(get(handles.n0,'String')); % indexul initial incepand cu care sistemul este haotic

% vectorul director al dreptei pe care se realizeaza proiectia

alfa = str2double(get(handles.alfa,'String'));

beta = str2double(get(handles.beta,'String'));

gama = str2double(get(handles.gama,'String'));

% conditia initiala a sistemului Lorenz

xi0 = str2double(get(handles.xi0,'String'));

yi0 = str2double(get(handles.yi0,'String'));

zi0 = str2double(get(handles.zi0,'String'));

y0 = [xi0 yi0 zi0]; % conditia initiala

dy0 = str2double(get(handles.dy0,'String')); % perturbarea absoluta fata de conditia initiala

rng(0,'twister');

rvals = 2*rand(1,1)-1;

elevation = asin(rvals);

azimuth = 2*pi*rand(1,1);

radii = dy0*rand(1,1)^(1/3);

dy = y0 + sph2cart(azimuth,elevation,radii); % conditia initiala modificata

handles.dy = dy;

% rezolvarea sistemului Lorenz

options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-4]);

[t1,Y] = ode45(@lorenzequation,[t0 tfinal],dy,options,b,r,s); % sistemul Lorenz neperturbat

% proiectia traiectoriei pe dreapta de parametrii directori [alfa beta gama]

modul = norm([alfa beta gama]);

alfa = alfa/modul;

beta = beta/modul;

gama = gama/modul;

vector_director = [alfa beta gama]; % vectorul director al dreptei

OpPr = vector_director.'*vector_director; % operatorul de proiectie

% Proiectia punctelor cu indexul incepand cu n0 pe dreapta d

Pr = Y(n0:end,:) * OpPr;

% determinarea celor mai departate puncte ale proiectiei

% matricea distantelor dintre doua puncte ale proiectiei

D = dist(Pr');

[M I] = max(D(:)); % M este diametrul proiectiei

% indexul punctelor extreme ale proiectiei sunt I_row si respectiv I_col

[I_row I_col] = ind2sub(size(D),I); % indexul celor mai departate puncte

[m, ~] = size(Pr); % numarul de puncte ale proiectiei

Alfabet = char(32:127);

nrsemne = length(Alfabet);

lung_pas = M/nrsemne;

% divizarea proiectiei in subintervale

Q(1,:) = Pr(I_row,:);

vdirector = (Pr(I_col,:)-Pr(I_row,:))/norm(Pr(I_col,:)-Pr(I_row,:));

pas = lung_pas*vdirector;

for k = 2:nrsemne

Q(k,:) = Q(k-1,:)+pas;

end

mesaj = [];

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Pct_anterior = 0;

for i = 2:kPp

adevar = 1;

l_curent = norm(Pr(Pp(i) + Pct_anterior,:)-Q(1,:));

for semn = 1:nrsemne

switch semn

case 1

ldr = norm(Q(semn+1,:)-Q(1,:));

if (l_curent < ldr) && adevar

adevar = 0;

mesaj = horzcat(mesaj,Alfabet(semn));

Pct_anterior = Pct_anterior + Pp(i);

end

case nrsemne

lstg = norm(Q(semn,:)-Q(1,:));

if (l_curent < lstg) && adevar

adevar = 0;

mesaj = horzcat(mesaj,Alfabet(semn));

Pct_anterior = Pct_anterior + Pp(i);

end

otherwise

lstg = norm(Q(semn,:)-Q(1,:)); % determinarea subintervalului corespunzator lui semn

ldr = norm(Q(semn+1,:)-Q(1,:));

if (lstg <= l_curent) && (l_curent < ldr) && adevar

adevar = 0;

mesaj = horzcat(mesaj,Alfabet(semn));

Pct_anterior = Pct_anterior + Pp(i);

end

end

end

end

set(handles.Bob,'String',num2str(mesaj)); % mesaj decriptat

set(uicontrol(handles.Bob),'ForegroundColor','k');

guidata(hObject,handles);

function g_Callback(hObject, eventdata, handles)

% hObject handle to g (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of g as text

% str2double(get(hObject,'String')) returns contents of g as a double

% – Executes during object creation, after setting all properties.

function g_CreateFcn(hObject, eventdata, handles)

% hObject handle to g (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function GF_p_Callback(hObject, eventdata, handles)

% hObject handle to GF_p (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of GF_p as text

% str2double(get(hObject,'String')) returns contents of GF_p as a double

% – Executes during object creation, after setting all properties.

function GF_p_CreateFcn(hObject, eventdata, handles)

% hObject handle to GF_p (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function cheie_beta_Callback(hObject, eventdata, handles)

% hObject handle to cheie_beta (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of cheie_beta as text

% str2double(get(hObject,'String')) returns contents of cheie_beta as a double

% – Executes during object creation, after setting all properties.

function cheie_beta_CreateFcn(hObject, eventdata, handles)

% hObject handle to cheie_beta (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles empty – handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

Similar Posts

  • Problematicii Nevoii de Sănătate Publică

    === cbb549c1c29ab3eb2a0e0d80c59c5c705ea6d3b0_429429_1 === Universitatea ,,Lucian Blaga” din Sibiu Referat la disciplina Sănătate Publică Tema numărul 1 Dr/Ec./Ing. Nume și Prenume……………………………… Sibiu, 2017 CUPRINSUL REFERATULUI Cuprins……………………………………………………………………………….2 Abrevieri……………………………………………………………………………..3 Secțiunea I. Introducere în studiul problematicii nevoii de sănătate publică…………………………………………………………………….4 §1. Nevoia de sănătate publică §2. Direcția de Sănătate publică- Sibiu- supravegherea și controlul sănătății publice în regiune Sectiunea…

  • Procedura Inspectiei Fiscale la Persoane Juridice

    === ad6121a7d8c14b719ad71a0f5cb852e9bd6413c3_659405_1 === Capitolul 1. Aspecte teoretice referitoare la procedura fiscală a persaonelor juridice 1.1. Aspecte generae referitoare la la procedura fiscală a persaonelor juridice În mod inevitabil, inspecția fiscală oferă posibilitatea de a avea două persoane care să apere interese diferite (contribuabilul – interesul său economic și inspectorul – interesul celui mai important creditor,…

  • Diversitate Culturală ÎN Epoca Globalizării

    DIVERSITATE CULTURALĂ ÎN EPOCA GLOBALIZĂRII INTRODUCERE ÎN GLOBALIZAREA CULTURALĂ Guvernul canadian a descurajat librăria americană Borders să intre pe piața canadiană din teama că aceasta nu va vinde suficientă literatură canadiană. Canadienii subvenționează cinematograful și obligă posturile radio să aloce un anumit procent de timp muzicii canadiene. Francezii investesc aproximativ trei miliarde de dolari în…

  • Coordonate ale Politicii Ue In Domeniul Concurentei

    === 59ff0417f0921e4a000f0d1a7ec5b8b84570a441_146340_1 === UΝІVЕRЅІΤAΤЕA ϹRЕȘΤІΝĂ „DІΜІΤRІЕ ϹAΝΤЕΜІR“ – ΒUϹURЕȘΤІ ocοсοϲFAϹULΤAΤЕA DЕ FІΝAΝȚЕ, ΒĂΝϹІ ȘІ ϹΟΝΤAΒІLІΤAΤЕ ΡRΟGRAΜUL ocοсοϲDЕ ΜAЅΤЕRAΤ „MANAGEMENT FINANCIAR BANCAR” ocοсοϲ LUϹRARЕ ocοсDЕ οϲDІЅЕRΤAȚІЕ ϹΟΟRDΟΝAΤЕ ALЕ ΡΟLІΤІϹІІ UЕ ÎΝ DΟΜЕΝІUL ocοсϹΟΝϹURЕΝȚЕІοϲ ϹΟΝDUϹĂΤΟR ȘΤІІΝȚІFІϹ: ocοс οϲΡrοf. unіv. ocdrοс. GHEORGHE H. POPESCU AΒЅΟLVЕΝΤ: oc TOADER RODICA oc οс οϲ oc ΒUϹURЕȘΤІ οс 2018 * Ρеntru fіеϲarе…

  • Evaluarea Judiciară și Evaluarea Legală a Daunelor Interese

    === 810f9bf7385cb647317eb04b9017f035c91b5e4d_352598_1 === Сuрrins Intrоduϲеrе………………………………………………………………………………………………………………..4 САРIΤΟLUL I ΟΒLIGАȚIILЕ…………………………………………………………………………………………………………..6 1.1 Соnϲерtul dе оbligɑțiе…………………………………………………………………………………………….6 1.2 Сlɑsifiϲɑrеɑ оbligɑțiilоr…………………………………………………………………………………………13 1.3 Imроrtɑnțɑ оbligɑțiilоr………………………………………………………………………………………….17 1.4 Aspеϲtе ϲοnϲеptualе privind еvaluarе judiϲiară și еvaluarеa lеgală……………………………..17 САРIΤΟLUL II СΟΝSIDЕRАȚII GЕΝЕRАLЕ АSUРRА ΝΟȚIUΝII DЕ DАUΝЕ IΝΤЕRЕSЕ………….21 2.1 Dɑunеlе intеrеsе mоrɑtоrii…………………………………………………………………………………….21 2.2 Dɑunеlе intеrеsе ϲοminɑtοrii………………………………………………………………………………….23 2.3 Dɑunе ϲοmреnsɑtοrii…………………………………………………………………………………………….52 САРIТΟLUL III ЕVАLUАRЕА DАUΝЕΟR IΝТЕRЕSЕ…………………………………………………………………….54 3.1 Dοbânzilе în…