aureliu zgureanu - codari informatice

164
UNIVERSITATEA DE STAT DIN MOLDOVA FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ CATEDRA INFORMATICĂ ŞI OPTIMIZARE DISCRETĂ Cu titlu de manuscris C.Z.U: 004.056.55 ZGUREANU AURELIU SECURITATEA INFORMAŢIONALĂ ŞI METODE DE CRIPTARE BAZATE PE MULŢIMI DE RELAŢII MULTI-ARE 01.01.09 – CIBERNETICĂ MATEMATICĂ ŞI CERCETĂRI OPERAŢIONALE Teză de doctor în ştiinţe fizico-matematice Conducător ştiinţific: CATARANCIUC Sergiu, doctor în ştiinţe fizico-matematice Consultant ştiinţific: BULAT Mihai, doctor în tehnică Autor: CHIŞINĂU, 2011

Upload: popangela

Post on 28-Dec-2015

80 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Aureliu Zgureanu - Codari Informatice

UNIVERSITATEA DE STAT DIN MOLDOVA

FACULTATEA DE MATEMATICĂ ŞI INFORMATICĂ

CATEDRA INFORMATICĂ ŞI OPTIMIZARE DISCRETĂ

Cu titlu de manuscris

C.Z.U: 004.056.55

ZGUREANU AURELIU

SECURITATEA INFORMAŢIONALĂ ŞI METODE DE CRIPTARE

BAZATE PE MULŢIMI DE RELAŢII MULTI-ARE

01.01.09 – CIBERNETICĂ MATEMATICĂ ŞI CERCETĂRI

OPERAŢIONALE

Teză de doctor în ştiinţe fizico-matematice

Conducător ştiinţific: CATARANCIUC Sergiu,

doctor în ştiinţe fizico-matematice

Consultant ştiinţific: BULAT Mihai,

doctor în tehnică

Autor:

CHIŞINĂU, 2011

Page 2: Aureliu Zgureanu - Codari Informatice

2

© Zgureanu Aureliu, 2011

Page 3: Aureliu Zgureanu - Codari Informatice

3

CUPRINS

ADNOTARE .............................................................................................................................4 ABSTRACT ..............................................................................................................................5 АННОТАЦИЯ .........................................................................................................................6 INTRODUCERE ......................................................................................................................7 1. ANALIZA SITUAŢIEI ÎN DOMENIUL CRIPTOGRAFIEI...........................................16

1.1. Problema securităţii informaţiei ......................................................................................16 1.2. Elemente fundamentale din Criptografie.........................................................................24 1.3. Bazele matematice ale criptografiei moderne.................................................................27

1.3.1. Teoria informaţiei ....................................................................................................27 1.3.2. Teoria complexităţii.................................................................................................32

1.4. Algoritmi simetrici de tip bloc ........................................................................................34 1.5. Algoritmi simetrici de tip şir...........................................................................................39 1.6. Algoritmi cu chei publice ...............................................................................................42 1.7. Criptarea cuantică...........................................................................................................47 1.8. Concluzii la Capitolul 1 ..................................................................................................50

2. MULŢIMI DE RELAŢII MULTI-ARE. MATRICE MULTIDIMENSIONALE ...........51 2.1. Relaţii pe mulţimi. Mulţimi de relaţii..............................................................................51 2.2. Reprezentarea funcţiilor booleene prin submulţimi de coloană. ......................................59

2.2.1. Submulţimi de coloană. Proprietăţi. Tabelul submulţimilor de coloană ale funcţiilor booleene............................................................................................................................59 2.2.2. Determinarea submulţimilor de coloană ale funcţiilor booleene reprezentate în formă algebrică............................................................................................................................71 2.2.3. Submulţimi de coloană ale derivatelor funcţiilor booleene. Polinomul Zhegalkin. Seria Taylor.......................................................................................................................75

2.3. Reprezentarea funcţiilor q-valente prin submulţimi de coloană ......................................85 2.4. Generarea numerelor prime. ...........................................................................................88 2.5. Concluzii la capitolul 2...................................................................................................95

3. SISTEME DE CRIPTARE BAZATE PE MULŢIMI DE RELAŢII MULTI-ARE ........96 3.1. Sistem de criptare cu set de chei bazat pe numere prime .................................................96 3.2. Sistem simetric de criptare bazat pe dezvoltarea polinomială a numerelor.....................102 3.3. Sistem de criptare bazat pe funcţii booleene .................................................................111 3.4. Sistem de criptare bazat pe funcţii de logica q-valentă ..................................................122 3.5. Concluzii la capitolul 3.................................................................................................124

CONCLUZII GENERALE ŞI RECOMANDĂRI ...............................................................125 BIBLIOGRAFIE...................................................................................................................127 ANEXA 1. Diagrame. Reflectarea timpului de criptare-decriptare ...................................135 ANEXA 2. Listingul softului.................................................................................................149 DECLARAŢIA PRIVIND ASUMAREA RĂSPUNDERII .................................................162 CV AL AUTORULUI ...........................................................................................................163

Page 4: Aureliu Zgureanu - Codari Informatice

4

ADNOTARE

Zgureanu Aureliu, Securitatea informaţională şi metode de criptare bazate pe mulţimi de relaţii multi-are, teză de doctor în ştiinţe fizico-matematice la specialitatea 01.01.09 – Cibernetică Matematică şi Cercetări Operaţionale, Chişinău, 2011.

Teza cuprinde introducerea, trei capitole, concluzii cu recomandări, bibliografia din 130 titluri şi 2 anexe. Ea este perfectată pe 164 pagini, dintre care 125 pagini constituie partea de bază, conţine 62 figuri şi 24 tabele. Rezultatele obţinute sunt publicate în 13 lucrări ştiinţifice.

Cuvinte-cheie: sistem de criptare, matrice multidimensională, număr prim, funcţie booleană, funcţie q-valentă, derivată parţială, mulţimi de relaţii multi-are.

Domeniul de studiu al tezei constă în cercetarea şi elaborarea unor noi algoritmi de criptare a informaţiei. Baza teoretică a acestor algoritmi include numerele prime mari, matricele multidimensionale, ecuaţiile polinomiale cu coeficienţi nedeterminaţi, funcţiile booleene şi cele din logica q-valentă.

Ca obiective principale ale tezei pot fi menţionate: elaborarea unui algoritm determinist de generare a numerelor prime mari, cercetarea relaţiilor multi-are reprezentate cu ajutorul matricelor multidimensionale şi aplicarea acestora la elaborarea algoritmilor de criptare, studierea funcţiilor booleene şi implementarea lor în elaborarea unor algoritmii noi de criptare, descrierea aspectelor teoretice a algoritmilor propuşi, elaborarea softului şi prezentarea unor rezultate evaluative şi comparative.

Noutatea şi originalitatea ştiinţifică constă în: elaborarea unor metode noi de protecţie a datelor prin criptare. În teză sunt expuse patru metode noi de criptare. Pentru una dintre aceste metode este elaborat un algoritm determinist de generare a numerelor prime mari, ceea ce ne permite să o plasăm printre metodele de criptare cu o securitate înaltă. O particularitate importantă a metodelor prezentate în teză constă în aplicarea matricelor multidimensionale (în sensul generalizării directe a matricelor bidimensionale obişnuite) la elaborarea a trei dintre aceşti algoritmi. O altă particularitate o constituie aplicarea funcţiilor booleene şi a funcţiilor din logica q-valentă. Aceste funcţii sunt definite prin submulţimi de coloană pentru a putea efectua mai simplu unele operaţii asupra lor, una dintre operaţiile de bază fiind calculul derivatelor parţiale ale acestor funcţii.

Problema ştiinţifică importantă soluţionată. Sunt propuse metode eficiente de criptare a informaţiei care depăşesc metodele actuale după un şir de parametri (timpul de criptare, volumul memoriei, securitatea algoritmului etc). Este dezvoltată baza teoretică pentru aceste metode care constă în proprietăţi noi ale funcţiilor booleene, funcţiilor q-valente şi matricelor multidimensionale.

Semnificaţia teoretică: la elaborarea metodelor de criptare, expuse în teză, au fost obţinute rezultate teoretice noi ce ţin de studierea teoriei relaţiilor multi-are, a proprietăţilor matricelor multidimensionale, precum şi a funcţiilor booleene. Prezintă interes rezultatele ce ţin de implementarea funcţiilor din logica q-valentă. Metodele de criptare obţinute asigură un grad înalt de securitate şi o fiabilitate majoră a sistemului de criptare a informaţiei.

Valoarea aplicativă a lucrării: pentru fiecare metodă de criptare a fost implementată câte o aplicaţie care o realizează. Softul elaborat este simplu, eficient şi nu necesită resurse de calcul mari.

Page 5: Aureliu Zgureanu - Codari Informatice

5

ABSTRACT

of the thesis “Information security and encryption methods based on sets of multi-ary relations” submitted by Aureliu Zgureanu, to the Moldova State University in partial fulfillment of the requirements for the degree of Doctor in Physics and Mathematics, speciality 01.01.09 – Mathematical Cybernetics and Operational Research, Chisinau, 2011.

The thesis contains the introduction, three chapters, conclusions and recommendations, the bibliography (130 titles) and 2 annexes. It consists of 164 pages, from which 125 pages of the main part, including 62 figures and 24 tables. Obtained results are published in 13 scientific papers.

Keywords: encryption system, multidimensional matrix, prime number, Boolean function, q-valent function, partial derivative, sets of multi-ary relations.

The area of study refers to the research and elaboration of new information encryption algorithms. Theoretical basis of these algorithms include large prime numbers, multidimensional matrixes, polynomial equations with undetermined coefficients, Boolean and q-valent functions.

The aim of this work consists in following: elaboration of a deterministic algorithm for generating of large prime numbers, researching of multidimensional matrices for use their in cryptography, study of Boolean functions and their implementation in elaboration of encryption algorithms with reduced resources, description of the theoretical aspects of the proposed algorithms, software development and presentation of evaluative and comparative results.

The scientific novelty and originality of obtained results consist in elaboration of new methods of data protection using encryption. In this thesis are presented four new methods of encryption. For one of these methods is developed a deterministic algorithm for generate large prime numbers, which allows us to place it among methods of encryption with high security. An important feature of the presented methods in the thesis is to apply multidimensional matrices (meaning direct generalization of the usual two-dimensional matrices) in the development of three of these algorithms. Another feature is the application of Boolean functions and functions of q-valent logic. These functions are defined by subsets of the column to perform some simple operations on them, one of the basic operations is calculation of partial derivatives of these functions.

Important scientific problem solved. In this thesis are proposed new effective methods of encryption, that exceed current methods by a number of parameters (time of encryption, volume memory, security algorithm etc). Is developed the theoretical basis for these methods based on new properties of the Boolean functions, functions of q-valent logic and of multidimensional matrices.

The theoretical signification consists in: in the development of the methods of encryption, exposed in the thesis were obtained new theoretical results related to the study of multi-ary relations theory, properties of multidimensional matrices and Boolean functions. The results related to the implementation of the functions of q-valued logic represents interest. Obtained encryption methods ensure a high degree of security and reliability of the system of information encryption.

The practical value of the work: for every proposed method has been developed a program. Elaborated software is simple, efficient and does not require considerable computing resources.

Page 6: Aureliu Zgureanu - Codari Informatice

6

АННОТАЦИЯ

Згуряну Аурелиу, Информационная безопасность и методы шифрования, основанные на множествах мульти-арных отношений, диссертация на соискание ученой степени кандидата физико-математических наук по специальности 01.01.09 – Математическая Кибернетика и Исследование Операций, Кишинев, 2011.

Диссертация состоит из введения, трех глав, выводов c рекомендациями, библиографии из 130 наименований и 2-х приложений. Она оформлена на 164 страницах, из которых 125 страница составляют основную часть, содержит 62 фигуры и 24 таблицы. Полученные результаты опубликованы в 13 научных работах.

Ключевые слова: система шифрования, многомерная матрица, простое число, булева функция, q-значная функция, частная производная, множества мульти-арных отношений.

Область исследования относится к изучению и разработке новых алгоритмов шифрования информации. Теоретические основы этих алгоритмов включают большие простые числа, многомерные матрицы, полиномиальные уравнения с неопределенными коэффициентами, булевы функции и функции из q-значной логики.

Цель работы состоит в следующем: разработка детерминистского алгоритма для генерации больших простых чисел, исследование мульти-арных отношений представленные с помощью многомерных матриц и их применение в разработке алгоритмов шифрования, изучение булевых функций и внедрение этих функций в разработке алгоритмов шифрования работающих с уменьшенными ресурсами, описание теоретических аспектов предложенных алгоритмов, разработка софта и представление оценочных и сравнительных результатов.

Научная новизна и оригинальность полученных результатов: разработка новых методов защиты данных путем шифрования. В диссертации предлагаются четыре новых алгоритма шифрования. Для одного из этих методов разработан детерминистский алгоритм генерации больших простых чисел, что позволяет ставить его в один ряд с методами шифрования с повышенной безопасностью. Важной особенностью представленных методов является применение многомерных матриц (как прямое обобщение обычных двумерных матриц) в разработке трёх из этих алгоритмов. Другая особенность состоит в применении булевых функций и функций q-значной логики. Эти функции определены с помощью столбцевых подмножеств, что даёт возможность более простого выполнения некоторых операции над ними, одна из основных операций является вычисление частных производных этих функций.

Решенная научная проблема. Предложены эффективные методы шифрования, которые превышают нынешние методы по ряду параметров (время шифрования, объем памяти, криптостойкость алгоритма и др.). Разработана научная основа этих методов состоящая из новых доказанных свойств булевых функций, q-значных функций, а также свойств многомерных матриц.

Теоретическая значимость: при разработке представленных в диссертации методов шифрования были получены новые теоретические результаты, которые относятся к исследованию теории мульти-арных отношений, свойствам многомерных матриц и булевых функций. Представляют интерес результаты относящиеся к применению функций q-значной логики. Полученные методы шифрования обеспечивают высокую степень защиты и надёжности системы шифрования.

Практическая ценность работы: для каждого метода реализована программа. Разработанное программное обеспечение эффективно и не требует значительных затрат и ресурсов для работы.

Page 7: Aureliu Zgureanu - Codari Informatice

7

INTRODUCERE

Actualitatea şi importanţa problemei abordate.

Una dintre caracteristicile societăţii moderne o reprezintă Informatizarea. Tehnologii

informaţionale noi sunt permanent implementate în diverse domenii ale activităţii umane. Prin

utilizarea calculatoarelor şi a software-ului respectiv sunt dirijate procese complexe din cele mai

diverse domenii de activitate. Calculatoarele stau la baza mulţimilor de sisteme de prelucrare a

informaţiei, care înfăptuiesc păstrarea, prelucrarea informaţiei, distribuirea ei către utilizator,

realizând astfel tehnologii informaţionale moderne.

Odată cu dezvoltarea mecanismelor, metodelor şi formelor de automatizare a proceselor

de prelucrare a informaţiei creşte şi dependenţa societăţii de gradul de securitate a a proceselor

de gestionare a informaţiei, realizat prin intermediul diverselor tehnologii informaţionale

aplicate, de care depinde bunăstarea, sau uneori şi viaţa multor oameni.

Relevanţa şi importanţa problemei de securitate a informaţiei şi a tehnologiilor

informaţionale rezultă din următoarele:

sporirea bruscă a potenţialului de calcul al calculatoarelor moderne şi simplificarea

exploatării lor;

creşterea rapidă a volumului de informaţie cu care operează societatea prin intermediul

calculatorului şi a altor mijloace tehnice;

concentrarea în baze de date unice a diverselor tipuri de informaţie (după scop şi

apartenenţă);

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

activitate;

lărgirea considerabilă a cercului de utilizatori care au acces direct la resursele de calcul şi la

blocurile de date;

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

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

globale;

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

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

Soluţionarea problemelor legate de securitatea informaţiei constituie obiectul de studiu al

Criptografiei [94], care este o ramură a matematicii moderne, ce se ocupă de elaborarea

metodelor matematice capabile să asigure confidenţialitatea, autentificarea şi non-repudierea

mesajelor, precum şi integritatea datelor vehiculate. Criptografia este un set de standarde şi

Page 8: Aureliu Zgureanu - Codari Informatice

8

protocoale pentru codificarea datelor şi mesajelor, astfel încât acestea să poată fi stocate şi

transmise mai sigur. Ea stă la baza multor servicii şi mecanisme de securitate, folosind metode

matematice pentru transformarea datelor, în intenţia de a ascunde conţinutul lor sau de a le

proteja împotriva modificării. Criptografia ne ajută să avem comunicaţii mai sigure, chiar şi

atunci când mediul de transmitere (de exemplu, Internetul) nu este de încredere. Ea poate fi

utilizată pentru a contribui la asigurarea integrităţii datelor, precum şi la menţinerea lor în calitate

de date secrete, ne permite să verificăm originea datelor şi a mesajelor prin utilizarea

semnăturilor digitale şi a certificatelor.

Unul dintre instrumentele principale ale criptografiei este sistemul de criptare, la baza

căruia se află algoritmul de criptare. Unul dintre cei mai timpurii algoritmi de criptare este

considerat cifrul lui Cezar [52], [60], care înlocuia fiecare literă a mesajului cu a treia literă după

ea din alfabet. La timpul său acest algoritm de criptare a fost destul de eficient, cu toate că este

foarte simplu să restabileşti textul original avându-l pe cel criptat. Odată cu trecerea timpului au

fost îmbunătăţite şi sistemele de criptare, fiind elaborate sisteme cu cheie privată [74], [96], [98],

[112], [121]), precum şi sisteme cu cheie publică [38], [43], [45],[90], [93].

Sistemele de criptare cu cheie privată sau sistemele simetrice de criptare sunt sistemele în

care cheia de criptare coincide cu cheia de decriptare. Sistemele simetrice sunt folosite pentru

protecţia datelor memorate în fişiere, baze de date sau a informaţiilor transmise în reţele.

Dintre sistemele cu cheie privată putem menţiona următoarele:

Algoritmul Lucifer [102] – un proiect al companiei IBM iniţiat în anul 1970. Acest

algoritm prezintă o reţea de permutări şi substituţii.

Algoritmul DES (Data Encryption Standard) [49] a fost elaborat de către firma IBM şi în

1977 a fost aprobat ca standard oficial în SUA. DES are blocuri de 64 de biţi şi o

structură Feistel de 16 cicluri, folosind o cheie de 56 de biţi şi o combinare de

transformări liniare şi neliniare la criptare.

Cifrul RC4 [74] – un cifru şir cu cheie de lungime variabilă, dezvoltat în 1987 de către

Ron Rivest pentru compania RSA Data Security. Criptograma se obţine sumând modulo

2 textul clar cu cheia, care este generată în mod pseudoaleator.

RC5 [91] – un cifru pe blocuri, notabil pentru simplitatea sa. A fost elaborat de căte Ron

Rivest pentru RSA Data Security în anul 1994. El are un număr variabil de blocuri şi

runde precum şi o lungime variabilă a cheii. Spre deosebire de predecesorii săi foloseşte

operaţia de strămutare cu un număr variabil de biţi.

Algoritmul AES (Advanced Encryption Standard) [48], sau Rijndael este un algoritm pe

blocuri (lungimea blocului este de 128 biţi, lungimea cheii este de 128, 192 sau 256 biţi),

aprobat în calitate de standard de criptare în SUA în 2002.

Page 9: Aureliu Zgureanu - Codari Informatice

9

Sistemele de criptare în locul unei singure chei secrete, folosesc două chei diferite: una

pentru cifrare, alta pentru descifrare. Deoarece este imposibilă deducerea unei chei din cealaltă,

una din chei este făcută publică, fiind pusă la îndemâna oricui doreşte să transmită un mesaj

cifrat. În practica aplicaţiilor Internet, cifrurile cu chei publice sunt folosite în general pentru

semnătura digitală asociată mesajelor, pentru autentificarea conţinutului şi a emiţătorului, dar şi

pentru cifrarea şi distribuţia cheilor simetrice, folosite în secretizarea mesajelor, operaţie numită

anvelopare a cheii.

Printre sistemele cu cheie publică se numără:

Algoritmul Merkle-Hellman [74], [121], publicat în 1978 de către Ralph Merkle şi

Martin Hellman. Algoritmul bazat pe problema rucsacului, o problemă NP-completă.

Algoritmul RSA [90] – a fost publicat în 1978 de Ron Rivest, Adi Shamir și Leonard

Adleman la Massachusetts Institute of Technology. Puterea sa criptografică se bazează pe

dificultatea problemei factorizării numerelor întregi, problemă la care se reduce

criptanaliza RSA și pentru care toți algoritmii de rezolvare cunoscuți au complexitate

exponențială.

Algoritmul ElGamal [43] este elaborat de Taher Elgamal în 1984 şi publicat in 1985. La

baza algoritmului se află problema calculării logaritmului discret într-un câmp finit.

În paralel cu perfectarea sistemelor de criptare şi elaborarea noilor sisteme, se depun

eforturi considerabile în scopul determinării metodelor de criptanaliză a acestor sisteme, iar

dezvoltaea tehnicii de calcul înlesneşte aceste eforturi. Ca urmare unele sisteme de criptare devin

impracticabile iar altele necesită o perfecţionare serioasă. Aceste considerente, precum şi faptul

că serviciile de spionaj de diferite nivele şi din diferite domenii ating performanţe noi în

interceptarea informaţiei şi mai ales în restabilirea informaţiei criptate, impun cercetarea şi

inventarea de noi sisteme de criptare mai performante, mai eficiente, mai sigure. Aceasta

reprezintă o problema actuală de importanţă majoră în societatea modernă. Astfel, într-o

societate informatizată, Criptografiei îi revine un rol important în asigurarea funcţionalităţii

acesteia, deoarece orice domeniu de activitate este bazat pe un volum tot mai mare de informaţie,

folosit în diverse procese manageriale.

Page 10: Aureliu Zgureanu - Codari Informatice

10

Scopul şi obiectivele tezei

Ţinând cont de faptul că sistemele actuale de criptare sunt vulnerabile şi în cazul unor

volume mari de informaţie necesită un volum destul de mare de memorie şi au viteză redusă de

lucru, rămâne actuală problema elaborării unor metode (sisteme) mai performante. În această

teză autorul propune câteva idei noi elaborarea unor astfel de metode, bazate pe rezultate

teoretice recente obţinute la studierea mulţimilor de relaţii multi-are [22], [24], [117], [108],

precum şi a aplicaţiilor acestora în studierea funcţiilor booleene [15], [25], [109].

În zilele noastre este inadmisibilă operarea cu date secrete fără asigurare de utilizarea lor

de către răuvoitori în caz de interceptare. Orice ţară are un algoritm standardizat pentru criptarea

datelor, orice companie care se respectă foloseşte unul dintre sistemele de criptare pentru

operarea cu date confidenţiale şi majoritatea aplicaţiilor care operează cu date mai mult sau mai

puţin confidenţiale au incorporate şi sisteme de criptare.

La baza oricărui sistem de criptare se află o teorie bine fundamentată, ce utilizează

rezultate din diverse ramuri ale matematicii moderne: teoria numerelor, teoria probabilităţilor,

statistica matematică, teoria informaţiei, teoria complexităţii algoritmilor, structurile algebrice

etc.

Acest lucru îl vedem la Claude Elwood Shannon – unul dintre cei care a pus bazele

ştiinţifice ale criptografiei moderne publicând în anul 1949 articolul „Teoria comunicaţiilor în

sistemele cu secretizare” („Communication Theory of Secrecy Systems” [98]), în care autorul a

demonstrat imposibilitatea spargerii cifrului aleator Vernam [105] şi a stabilit hotare clare pentru

mărimea cheii secrete. Totodată această lucrare a pus bazele sistemelor simetrice de criptare

[74], [94].

În anul 1976 Whitfield Diffie şi Martin E. Hellman au publicat articolul „New Directions

in Cryptography” [38], în care au arătat că comunicaţia secretă poate fi făcută fără transmiterea

cheii secrete, inventând astfel criptografia cu chei publice [74], [94]. Aici a fost aplicată

problema logaritmului discret [43], iar un an mai târziu a fost inventat celebrul algoritm RSA

[90], la baza căruia stă problema complicată a factorizării numerelor mari de forma qpn

[122] unde p şi q sunt numere prime mari.

Scopul tezei constă în cercetarea relaţiilor pe mulţimi, a mulţimilor de relaţii multi-are,

a matricelor multidimensionale (în sensul generalizat al matricelor dreptunghiulare obişnuite), a

algoritmilor de generare a numerelor prime mari, a proprietăţilor funcţiilor booleene şi aplicarea

acestor proprietăţi în crearea algoritmilor care pot sta la baza unor sisteme de criptare fiabile.

Dezvoltând în continuare ideile legatre de elaborarea metodelor moderne de criptare

expuse de către diferiţi cercetători, în lucrare se propun metode noi de criptare bazate pe două

principii de elaborare:

Page 11: Aureliu Zgureanu - Codari Informatice

11

a) aplicarea numerelor prime;

b) utilizarea proprietăţilor funcţiilor booleene.

În aceste sisteme un rol important îl au matricele multidimensionale, prin intermediul

cărora se reprezintă mulţimile de relaţii multi-are.

Aplicarea matricelor multidimensionale reprezintă un interes deosebit nu numai în plan

teoretic, dar în special aplicativ, mai ales din punct de vedere al eficienţei algoritmilor

elaboraţi faţă de cei existenţi.

Printre obiectivele principale ale tezei pot fi menţionate:

1. elaborarea unui algoritm determinist de generare a numerelor prime;

2. cercetarea matricelor multidimensionale şi utilizarea proprietăţilor acestora la elaborarea

unor algoritmi noi de criptare;

3. studierea unor proprietăţi speciale ale funcţiilor booleene, necesare pentru elaborarea

algoritmilor simetrici noi de criptare cu resurse de lucru reduse;

4. descrierea aspectelor teoretice a algoritmilor propuşi;

5. analiza comparativă a algoritmilor elaboraţi şi a celor existenţi;

6. elaborarea softului şi prezentarea unor rezultate evaluative.

Noutatea ştiinţifică a rezultatelor obţinute

În prezent există multe sisteme de criptare bazate pe diverşi algoritmi. Fiecare algoritm

sau sistem îşi are specificul său şi s-ar părea că descoperirea unui nou algoritm de criptare fiabil

este dificil de realizat. Ba mai mult, chiar dacă se creează un astfel de algoritm nou, se pune

întrebarea pe cât de eficient este el, de ce este mai acceptabil decât celelalte? Se cere o

argumentare în care cazuri şi situaţii acest algoritm este preferabil faţă de celelalte.

Teza conţine fundamentarea teoretică şi descrierea algoritmilor respectivi pentru patru

metode noi de criptare bazate pe utilizarea numerelor prime mari (Cripto 1 şi Cripto 2) şi a

funcţiilor booleene (Cripto 3 şi Cripto 4).

Cripto 1 este o variaţie a sistemului RSA şi spre deosebire de acesta foloseşte un cortegiu

de chei pentru criptarea (decriptarea) informaţiei. Acest element inovativ al algoritmului Cripto 1

ne permite să evităm necesitatea măririi cheii odată cu creşterea performanţelor tehnicii de

calcul. Securitatea înaltă a algoritmului Cripto 1 este asigurată de un generator de numere prime,

expus în lucrare, care poate fi utilizat cu succes şi în alte scopuri.

Ceilalţi algoritmi sunt bazaţi pe aplicarea matricelor multidimensionale prin repartizarea

codurilor caracterelor textului clar în celulele acestor matrice. Matricele multidimensionale sunt

proiectate în matrice bidimensionale obişnuite cu numărul de linii şi coloane dependent de unii

parametri ai algoritmilor.

Page 12: Aureliu Zgureanu - Codari Informatice

12

Ca și în cazul lui Cripto 1, algoritmul Cripto 2 utilizează, în afară de matricele multidimensionale, acelaşi generator de numere prime, care reprezintă în acest caz cheia privată a sistemului simetric. Utilizând cheia dată, algoritmul calculează, utilizând liniile matricei bidimensionale obţinute, nişte numere într-un sistem de numeraţie, baza căruia este cheia privată. Procesul de decriptare se produce în ordine inversă. La baza securităţii acestui algoritm de criptare se află problema rezolvării unui sistem de ecuaţii liniare cu mai multe variabile şi cu coeficienţii nedeterminaţi.

Al treilea şi al patrulea algoritm de criptare sunt construiţi în baza unor proprietăţi ale funcţiilor booleene, demonstrate în teză. Cheia sistemului, la fel ca şi textul plan, generează câte o matrice multidimensională de aceleaşi dimensiuni. Cu ajutorul acestor matrice se efectuează operaţii logice. În rezultat se obţine o a treia matrice, liniile căreia reprezintă textul cifrat. Cheia de criptare poate fi schimbată de la un mesaj la altul, dar şi pe parcursul criptării unuia şi aceluiaşi mesaj. Algoritmul Cripto 3 utilizează funcţiile booleene, iar algoritmul Cripto 4 – funcţiile din logica q-valentă.

Numărul de chei din spaţiul cheilor pentru algoritmii Cripto 3 şi Cripto 4, este suficient de mare pentru a face inutile atacurile cu forţa brută, iar alte tipuri de atac cunoscute nu prezintă pericol la momentul actual.

Importanţa teoretică şi valoarea aplicativă a lucrării Lucrarea de faţă propune metode noi de criptare a informaţiei. Aceste metode stau la baza

elaborării algoritmilor respectivi de criptare prin aplicarea matricelor multidimensionale, care generalizează noţiunea de matrice clasică, concomitent cu alte aspecte din domeniul matematicilor aplicate.

Metodele de criptare descrise conţin o argumentare teoretică riguroasă. Lucrarea dată conține o serie de teoreme, în care sunt demonstrate proprietăţi ale funcţiilor booleene, sunt studiate mulțimile de relații multi-are reprezentate prin matrice multidimensionale, necesare la elaborarea sistemelor.

În acelaşi timp a fost elaborat un algoritm determinist de generare a numerelor prime mari care sunt întrebuinţate la elaborarea unor sisteme de criptare moderne, iar în această teză la primii doi algoritmi.

Pentru fiecare algoritm descris în teză a fost elaborat câte un program care îl realizează în mediul de calcul Mathematica. Softul elaborat este simplu, lucrează eficient şi nu necesită resurse de calcul considerabile (în special al treilea şi al patrulea algoritm).

Problema ştiinţifică importantă soluţionată. Sunt propuse metode eficiente de criptare a informaţiei care depăşesc metodele actuale după un şir de parametri (timpul de criptare, volumul memoriei, securitatea algoritmului etc). Este dezvoltată baza teoretică pentru aceste metode care se bazează pe proprietăţi noi ale funcţiilor booleene, funcţiilor q-valente şi matricelor multidimensionale.

Page 13: Aureliu Zgureanu - Codari Informatice

13

Aprobarea rezultatelor

Rezultatele de bază ale tezei au fost relatate la următoarele conferinţe şi seminare:

1. The XIVth Conference on Applied and Industrial Mathematics, Satellite Conference of the

ICM, Chisinau 2006.

2. International Algebraic Conference dedicated to the 100th anniversary of D. K. Faddeev. St

Petersburg, Russia, 2007.

3. ASADE Moldova, August 21, 2007.

4. Conferinţa ştiinţifică internaţională „Modelare matematică, optimizare şi tehnologii

informaţionale”. Chişinau, 19-21 martie, 2008. ATIC.

5. Системы управления, контроля и измерений (УКИ-08), Российская Конференция с

международным участием, Москва ИПУ РАН, 2008.

6. Conferinţa Internaţională ICT+ “TEHNOLOGII INFORMAŢIONALE ŞI DE

COMUNICAŢII - 2009”. 19 – 20 MAI 2009, or. CHIŞINĂU.

7. Conferinţa „Managementul întreprinderii în mediul economic contemporan”. 24-25

septembrie, 2009. Chişinău.

8. Conferinţa ştiinţifică internaţională. Modelare matematică, optimizare şi tehnologii

informaţionale. Chişinau, 26-28 martie, 2010

9. „Tiberiu Popoviciu seminar”, Cluj-Napoca 6-7 september, 2010.

10. International Student Conference on Pure and Applied Mathematics (ISCOPAM), Iaşi, July

12-16, 2010.

11. MITRE-2011, International Conference dedicated to the 65th anniversary of Moldova State

University, Chişinău, 2011.

Printre publicaţii cu tematica abordată în teză se consideră:

1. Bulat, M., Leon,D., Bivol, L., Ciobanu I., Zgureanu,A..(2006) ”Generadores de numeros

primos y factorizadores de numeros compuestos” Revista de Matematica: Teoria y

Aplicaciones, 2006 ,13(1) CIMPA-UCR-CCSS: pp. 1-15.

2. Bulat, M.; Zgureanu, A.; Ciobanu, I.; Bivol, L. (2006) “A method for obtaining arbitrary

form prime numbers”, Satellite Conference of the ICM 2006. The XIVth Conference on

Applied and Industrial Mathematics, Chisinau: pp. 70–73.

3. Bulat M., Zgureanu A., Ciobanu I., Bivol L. Generating of prime numbers based on the

multidimensional matrices. International Algebraic Conference dedicated to the 100th

anniversary of D. K. Faddeev. St Petersburg, Russia, 2007, pp. 98-99.

4. Bulat M., Zgureanu A., Ciobanu I., Bivol L. The inverse transformations of multidimensional

matrices. ASADE Moldova, August 21, 2007, pag. 34-34.

Page 14: Aureliu Zgureanu - Codari Informatice

14

5. Bulat M., Zgureanu A., Ciobanu I., Bivol L. Sisteme de criptare cu chei vectoriale.

Conferinţa ştiinţifică internaţională. Modelare matematică, optimizare şi tehnologii

informaţionale. Chişinau, 19-21 martie, 2008. ATIC, pp. 281 – 285.

6. Булат М.С., Згуряну А.Ф., Чобану Я.И., Бивол Л.Г. Крипто-системы на базе n-арных

отношений. Системы управления, контроля и измерений (УКИ-08), Российская

Конференция с международным участием, Москва ИПУ РАН, 2008: pp. 66-67.

7. Aureliu Zgureanu, Mihai Bulat. Sisteme de criptare bazate pe funcţii booleene. Conferinţa

Internaţională ICT+ “TEHNOLOGII INFORMAŢIONALE ŞI DE COMUNICAŢII- 2009”.

19 – 20 MAI 2009, or. CHIŞINĂU.

8. Zgureanu Aureliu, Sisteme de criptare cu chei variabile. Analele ATIC-2007-2008, vol. I

(XII). pp. 92-98, Chişinău. Evrica. 2009.

9. Zgureanu A., Bulat M., Protecţia informaţiei şi managementul întreprinderii. Materialele

conferinţei „Managementul întreprinderii în mediul economic contemporan”. 24-25

septembrie, 2009. Chişinău. Evrica. 2009. pp. 312-314.

10. Mihai Bulat, Aureliu Zgureanu, Iacob Ciobanu, Vladimir Izbaş. Sistem de criptare bazat pe

derivarea funcţiilor booleene. Conferinţa ştiinţifică internaţională. Modelare matematică,

optimizare şi tehnologii informaţionale. Chişinau, 26-28 martie, 2010. pp. 132-141.

11. Aureliu Zgureanu, Sergiu Cataranciuc. Encryption systems based on multidimensional

matrixes. „Tiberiu Popoviciu seminar”, Cluj-Napoca 6-7 september, 2010, 11 pagini.

12. Zgureanu Aureliu, Information encryption systems based on Boolean functions. The

Computer Science Journal of Moldova, vol.18, no.3(54), 2010, pp. 319-335.

13. Mihai Bulat, Sergiu Cataranciuc, Aureliu Zgureanu. A method for calculating the Zhegalkin

polynomial coefficients. MITRE-2011, International Conference dedicated to the 65th

anniversary of Moldova State University, Chişinău, 2011, pp. 19-20.

Sumarul compartimentelor tezei

Teza de faţă conţine introducere, trei capitole, concluzii cu recomandări, lista

bibliografică şi 2 anexe.

În Capitolul I se face o sinteză a lucrărilor din domeniu, a rezultatelor cunoscute până în

prezent. Se accentuează rolul lui Claude Elwood Shannon care a pus bazele teoretice ale

sistemelor cu secretizare [98], precum şi al matematicienilor Whitfield Diffie şi Martin E.

Hellman, care în anul 1976 prin publicarea articolului „New Directions in Cryptography” [38] au

arătat că comunicaţia secretă poate fi făcută fără transmiterea cheii secrete, inventând astfel

criptografia cu chei publice [74], [94]. În teză sunt descrise diverse tipuri de sisteme de criptare

aplicate în trecut şi prezent, cu trecerea în revistă a celor mai frecvent întâlnite în practică. Sunt

Page 15: Aureliu Zgureanu - Codari Informatice

15

evidenţiate părţile slabe şi cele puternice ale acestor sisteme şi domeniile de aplicabilitate ale

unora dintre ele. Este abordată problema criptării cuantice, una foarte polemizată în prezent.

Capitolul este finalizat cu enumerarea avantajelor şi dezavantajelor tipurilor sistemelor de

criptare, cu justificarea necesităţii modernizării continue a sistemelor de criptare şi sunt propuse

unele probleme care se vor încerca a rezolva în următoarele capitole ale tezei. Aspectul teoretic

abordat a servit drept temelie pentru cercetările şi rezultatele din capitolele doi şi trei.

Capitolul doi conţine rezultatul cercetărilor relaţiilor între mulţimi şi a mulţimilor de

relaţii multi-are [24] reprezentate prin intermediul matricelor multidimensionale. Este analizată

transformarea )(RAR

[24] care pune în corespondenţă unei mulţimii de relaţii R

un cortegiu

),...,( ...1...11 1 nmmaaA

pe proprietăţile căreia sunt bazate rezultate teoretice importante din teză,

printre care se numără şi algoritmul de generare a numerelor prime mari [20], [22]. Sunt

demonstrate câteva teoreme referitoare la repartizarea numerelor prime în liniile matricelor

obţinute la proiectarea matricelor multidimensionale pe matrice dreptunghiulare obişnuite. În

acest capitol sunt expuse şi demonstrate un şir de proprietăţi ale funcţiilor booleene, fiind

aplicată reprezentarea acestor funcţii prin intermediul submulţimilor de coloană [25], [109]. Este

abordată problema dezvoltării funcţiei booleene în serie Taylor, şi determinării coeficienţilor

polinomului Zhegalkin [15] aplicând submulţimile de coloană ale funcţiei booleene. O bună

parte dintre aceste teoreme (proprietăţi) este generalizată [109] şi pentru funcţii din logica q-

valentă.

Capitolul trei însumează rezultatele teoretice noi obţinute pentru elaborarea algoritmilor

de criptare expuşi în teză. Astfel, sunt prezentaţi doi algoritmi de criptare care funcţionează în

baza numerelor mari prime (Cripto 1 [23] şi Cripto 2 [117], [108]), precum şi doi algoritmi

(Cripto 3 [108], [109] şi Cripto 4 [109]) care funcţionează în baza funcţiilor booleene bivalente

şi q-valente respectiv, în combinare cu aplicarea matricelor multidimensionale. Sunt prezentate

date statistice comparative referitoare la timpul de lucru al algoritmilor în funcţie de mărimea

mesajului pentru criptare.

La teză se anexează listingul softului elaborat. Pentru fiecare metodă elaborată a fost

implementat un program aparte care, luate împreună, formează un pachet de aplicaţii. Aplicaţiile

au fost elaborate în mediul de calcul Mathematica.

Page 16: Aureliu Zgureanu - Codari Informatice

16

1. ANALIZA SITUAŢIEI ÎN DOMENIUL CRIPTOGRAFIEI

Pe întreg parcursul dezvoltării societăţii umane – din antichitate până în prezent –

informaţia confidenţială era păstrată în secret în diferite moduri. A rămas celebru modul în care

Cezar făcea schimb de informaţii cu generalii săi, aplicând cifrul care îi poartă numele. Timpul

s-a scurs, noi ne-am dezvoltat încontinuu, dar problema păstrării în secret a informaţiei

confidenţiale, problema comunicaţiilor secretizate a rămas actuală şi începând cu anii 40 ai

secolului XX s-a desfăşurat o intensă cercetare ([38], [43], [90], [91], [96], [97], [98], [99],

[128]) în domeniul comunicaţiilor secretizate, obiectul de studiu al cărora este Criptografia.

1.1. Problema securităţii informaţiei

Soluţionarea problemei de securitate informaţională nu poate fi realizată ffără a lua în

consideraţie doi factori importanţi, ce influenţează nemijlocit atingerea scopului final:

a) dezvoltarea mijloacelor de comunicaţii informaţionale;

b) dezvoltarea sistemelor performante de criptare.

Aceste două domenii de activitate se completează reciproc şi permit obţinerea unor

rezultate importante în asigurarea securităţii de manipulare cu masive mari de informaţie.

a) etapele dezvoltării mijloacelor de comunicaţii informaţionale.

În ziua de azi în toate domeniile activităţii umane sunt implementate noi tehnologii

informaţionale. Apariţia reţelelor locale şi globale de transmitere a datelor le-a permis

utilizatorilor calculatoarelor să folosească metode noi în schimbul de informaţii. Apariţia

Internetului a dus la utilizarea reţelelor globale, în scopul transmiterii datelor, practic de către

fiecare om. Pe măsură ce se dezvoltă şi se complică mijloacele, metodele şi formele de

automatizare a proceselor de prelucrare a informaţiei se măreşte şi dependenţa societăţii de

gradul de securitate a tehnologiilor informaţionale utilizate.

Metodele contemporane de prelucrare, transmitere şi stocare a informaţiei au contribuit la

apariţia riscurilor legate de posibilitatea pierderii, denaturării, destăinuirii datelor care sunt

adresate sau care aparţin utilizatorilor finali. De aceea asigurarea securităţii informaţiei este una

dintre direcţiile cele mai importante în dezvoltarea tehnologiilor informaţionale.

Protecţia informaţiei este activitatea îndreptată spre prevenirea scurgerii informaţiei

protejate, spre prevenirea acţiunilor nesancţionate sau neintenţionate asupra acestor informaţii

[55]. Securitatea informaţională reprezintă protejarea informaţiei de familiarizarea ilegală cu ea,

transformarea sau lichidarea ei, dar şi ocrotirea resurselor informaţionale de influenţele

îndreptate spre dereglarea capacităţii lor de lucru [67]. Aceste influenţări pot fi de natură diferită:

Page 17: Aureliu Zgureanu - Codari Informatice

17

tentative de pătrunderi a răuvoitorilor, erorile personalului, ieşirea din funcţie a mijloacelor

tehnice sau a softului, dar şi calamităţile naturale (cutremur, uragan, incendiu) etc.

În mod obiectiv noţiunea de securitate informaţională a apărut odată cu inventarea

mijloacelor de comunicaţii informaţionale între oameni [60], dar şi odată cu înţelegerea de către

om a faptului că alţi oameni sau comunităţi au interese, cărora li se pot cauza daune prin

intervenţia asupra mijloacelor de comunicaţii informaţionale, existenţa şi dezvoltarea cărora

asigură schimbul de informaţii între toate elementele societăţii umane.

Dacă luăm în consideraţie influenţa transformărilor de idei în securitatea informaţională,

putem evidenţia câteva etape ale dezvoltării mijloacelor de comunicaţii informaţionale [129]:

Etapa I – până la anul 1816 – este caracterizată de mijloacele de comunicaţii

informaţionale apărute pe cale firească. În această perioadă problema de bază a securităţii

informaţionale consta în protecţia datelor referitoare la evenimente, fapte, avere, amplasament şi

a altor date care au pentru om personal sau pentru societate o importanţă vitală.

Etapa II – începând cu anul 1816 – este corelată cu începutul aplicării mijloacelor tehnice

artificiale ale comunicaţiilor electrice şi radio. Pentru asigurarea secretizării şi protecţiei de

perturbaţii ale comunicaţiilor radio era necesar de utilizat experienţa acumulată pe parcursul

primei etape ale securităţii informaţionale la un nivel tehnologic mai înalt şi anume aplicarea

unei codificări a mesajului (semnalului) rezistente la perturbaţii cu decodificarea ulterioară a

mesajului (semnalului) primit.

Etapa III – începând cu 1935 – este în legătură directă cu inventarea mijloacelor de radar

şi sonar. Metoda de bază în asigurarea securităţii informaţionale în această perioadă era o

combinare de măsuri tehnice şi organizatorice direcţionate spre mărirea securităţii.

Principala modalitate de a asigura securitatea informaţiilor, în această perioadă a fost o

combinaţie de măsuri organizatorice şi tehnice care vizează îmbunătăţirea protecţiei mijloacelor

radar de la efectele asupra receptorilor lor generate de bruiajul electronic activ de mascare şi cel

pasiv de simulare.

Etapa IV – începe cu anul 1946 – şi este condiţionată de inventarea şi implementarea în

activitatea practică a maşinilor electronice de calcul – calculatoarelor. Problemele securităţii

informaţionale erau rezolvate prin metode de control a accesul fizic la hardware-ul mijloacelor

de colectare, prelucrare şi transmitere a informaţiilor.

Etapa V – începe din 1965 – şi este în corelaţie cu crearea şi dezvoltarea reţelelor de

comunicaţii informaţionale. Problema securităţii informaţiei era rezolvată, în principiu, la fel

prin metode şi procedee de protecţie fizică a mijloacelor de dobândire, prelucrare şi transmitere a

informaţiei, unite în reţeaua locală. Acest lucru se făcea pe calea administrării şi dirijării

accesului la resursele din reţea.

Page 18: Aureliu Zgureanu - Codari Informatice

18

Etapa VI – începe cu anul 1973 – este legată de utilizarea dispozitivelor ultra mobile de

comunicaţie cu o gamă largă de sarcini. Ameninţările la adresa securităţii informaţionale au

devenit mai periculoase. Pentru asigurarea protecţiei informaţiei în sistemele de calculatoare cu

reţelele fără fir de transmitere a datelor a fost necesar de stabilit noi criterii de securitate. S-au

format comunităţi de oameni – hackerii – ce aveau drept scop prejudicierea securităţii

informaţionale a utilizatorilor individuali, a companiilor dar şi a unor state întregi. Resursele

informaţionale au devenit cele mai importante resurse ale statului iar asigurarea protecţiei lor a

devenit o componentă obligatorie şi cea mai importantă pentru securitatea naţională. În această

perioadă se naşte şi o nouă ramură a sistemului juridic legată de protecţia informaţiilor.

Etapa VII – începe în 1985 – este legată de crearea şi dezvoltarea reţelelor de comunicaţii

informaţionale cu implementarea mijloacelor de asigurare spaţiale.

Astăzi suntem într-o nouă etapă de dezvoltare a securităţii informaţionale. Acum se aplică

pe scară largă mijloacele ultra-mobile de comunicaţii cu o gamă largă de sarcini şi acoperire

globală în spaţiu şi timp, şi cu asigurarea sistemelor spaţiale de comunicaţii. Pentru rezolvarea

problemelor securităţii informaţionale la această etapă este necesar de creat macrosisteme ale

securităţii informaţionale a umanităţii sub egida forumurilor internaţionale de frunte.

Securitatea informaţională este un domeniu mult prea vast, cu prea multe domenii

conexe, pentru a fi detaliat complet undeva.

Din aceste considerente în această teză sunt analizate şi propuse noi metode criptografice

de protecţie a datelor. Aceste metode sunt cele mai eficiente pentru protecţia datelor în sistemele

automatizate, iar în procesul de transmitere a datelor prin intermediul liniilor de comunicare

extinse ele sunt unicele mijloace reale de prevenire a accesului nesancţionat.

b) Etapa iniţială în dezvoltarea criptografiei

Cifrul Cezar menţionat mai sus nu este primul cifru din istorie utilizat de om. Încă din

cele mai vechi timpuri oamenii făceau schimb de informaţii, scriind unul altuia scrisori, care

deseori trebuiau să fie păstrate în secret. Date exacte şi dovezi incontestabile despre apariţia

scrierii secrete în antichitate nu sunt. Se cunoaşte că în Grecia antică pentru transmiterea unui

mesaj a fost folosit un rob căruia i s-a ras capul, după care pe cap a fost scris mesajul. După ce

părul a crescut robul a fost trimis spre adresat cu mesajul „Rade-i capul” [60].

Însă şi mai demult, circa 4000 de ani în urmă, în oraşul Menet Khufu de pe malul Nilului

un scrib cu experienţă a desenat ieroglife care relatau viaţa stăpânului său, devenind astfel cel

care a pus bazele istoriei criptografiei [60]. Sistemul său nu este un sistem al scrierii secrete în

sens contemporan. Pentru aceasta el nu a folosit un cifru complet. Această înscriere, făcută circa

în 1900 î.Hr. pe mormântul lui Khnumphotep, numai alocuri consta din simboluri ieroglifice

Page 19: Aureliu Zgureanu - Codari Informatice

19

neobişnuite în locul unora uzuale la acel moment. Marea lor parte se întâlneşte în ultimele

douăzeci de coloane în care sunt enumerate monumentele create de către Khnumphotep în timpul

serviciului său la faraonul Amenemhet II. Aceste înscrieri au fost făcute mai degrabă pentru a da

o importanţă textului şi nu pentru a împiedica citirea lui. Astfel scribul nu a aplicat scrierea

secretă dar, fără îndoială, a aplicat unul dintre elementele de bază ale criptării – transformarea

deliberată a celor scrise.

Astfel, adăugarea la textele de acest fel a elementelor de secret a dat naştere criptografiei.

Este adevărat, acest fapt semăna mai mult cu un joc, deoarece avea scopul de a amâna dezlegarea

ghicitorii pentru un interval de timp scurt. Deci şi criptanaliza lui consta numai în rezolvarea

problemei. Aşadar putem afirma că criptanaliza Egiptului antic, spre deosebire de cea

contemporană, foarte serioasă, era numai o quasi-ştiinţă. Însă orice lucru măreţ are un început

modest. Hieroglifele Egiptului antic conţineau, într-o formă departe de cea impecabilă, două

dintre elementele de bază ale criptografiei – secretul şi transformarea textului. Astfel s-a născut

criptologia.

În primii 3000 de ani dezvoltarea ei nu a fost una continuă. În unele locuri criptologia se

năştea şi murea odată cu civilizaţia ce i-a dat naştere. În altele ea a rezistat pătrunzând în

literatură pentru ca generaţiile următoare să poată urca spre nivele mai înalte ale criptologiei.

Înaintarea spre aceste nivele era lentă şi anevoioasă. Mai multe erau pierdute decât păstrate.

Cunoştinţele acumulate au căpătat amploare numai la începutul Renaşterii europene.

Unul dintre primele tipuri de cifruri cunoscute este cifrul cu deplasare [60], [67], [74].

Procesul de cifrare constă în înlocuirea unei litere cu alta care se află cu un număr fix de poziţii

mai departe în alfabet în funcţie de valoarea cheii. Astfel, dacă cheia este k =3, atunci litera „a” a

textului clar se transformă în litera „d” din textul cifrat, litera „z” – în „c”. pentru textul clar „ac”

textul cifrat va fi „df ”. Pentru acest caz (în care cheia k = 3), acest cifru se numeşte cifrul lui

Cezar, deoarece anume Cezar a folosit acest cifru cu această cheie pentru a comunica cu

generalii săi.

Dacă considerăm alfabetul latin cu 26 de litere, putem opera matematic foarte simplu pe

un inel finit: Z26 . Vom avea P = C = K = Z26 . Pentru un k K ales arbitrar,

ek(m)=m+k (mod 26) şi dk(ek(α)) = α – k (mod 26).

Cifrul Cezar poate fi spart uşor chiar şi având la dispoziţie numai criptograma [51], [52].

Deoarece numărul de deplasări posibile e limitat (spre exemplu 31 in română), fiecare din ele

poate fi testata printr-un atac prin forţa brută. O alta abordare a atacului prin forţă brută este

identificarea literelor conform distribuţiei lor în limba în care a fost scris textul. Prin crearea

graficului frecvenţelor literelor din textul criptat şi prin cunoaşterea distribuţiei obişnuite, un om

poate descoperi valoarea deplasării prin observarea decalajului dintre anumite caracteristici ale

Page 20: Aureliu Zgureanu - Codari Informatice

20

graficului. Aceasta este cunoscută ca analiza frecvenţei. Şi computerele pot determina acest

lucru prin măsurarea echivalentei dintre distribuţia curenta şi distribuţia aşteptată; de exemplu,

poate fi utilizată testul „chi–pătrat”.

Neajunsul de bază al acestui cifru este existenţa unui număr foarte mic de chei –

cantitatea literelor din alfabetul limbii în care se face criptarea.

În scopul eliminării acestui neajuns a fost inventat cifrul de substituţie [60], [101].

Pentru a obţine textul cifrat fiecare literă a textului clar este înlocuită cu o altă literă în

conformitate cu o anumită substituţie a ordinei literelor din alfabetul dat. Astfel de substituţii

sunt n! pentru un alfabet cu n litere (pentru alfabetul latin avem 25! substituţii). Aceasta face

dificil atacul prin forţă brută asupra cheii. Dar, ca şi în cazul cifrului cu deplasare, analiza

frecvenţei permite spargerea a astfel de cifruri.

Sistemele cu deplasare sunt sisteme monoalfabetice, adică sisteme care substituie fiecare

caracter cu alt caracter – totdeauna acelaşi, indiferent de poziţie. Punctul slab al sistemelor de

criptare monoalfabetice constă în frecvenţa de apariţie a caracterelor în text [51], [52]. Dacă un

text criptat este suficient de lung şi se cunoaşte limba în care este scris textul clar, sistemul poate

fi spart printr-un atac bazat pe frecvenţa apariţiei literelor într-o limbă. Sunt construite diverse

structuri de ordine relative la frecvenţa apariţiei literelor în fiecare limbă europeană. De obicei,

cu cât un text criptat este mai lung, cu atât frecvenţa literelor folosite se apropie de această

ordonare generală. O comparare între cele două relaţii de ordine (cea a caracterelor din textul

criptat şi cea a literelor din alfabetul limbii curente) conduce la realizarea câtorva corespondenţe

(literă text clar – literă text criptat), ceea ce stabileşte în mod univoc cheia de criptare.

Pentru limba română, un tabel al literelor cele mai frecvent întâlnite este Tabelul 1.1 [93] (restul

caracterelor au în mod normal o frecvenţă de apariţie sub 1 %).

Tabelul 1.1 Cele mai frecvent întâlnite litere în limba română

Litera A I E R T N U S C L O D M P F V

Procent

13,0

4 %

12,8

9 %

11,7

5 %

7,39

%

6,62

%

6,44

%

6,44

%

5,50

%

5,47

%

4,58

%

3,85

%

3,68

%

3,33

%

2,91

%

1,50

%

1,26

%

Acelaşi lucru este valabil şi pentru sistemul cu substituţie.

Una dinte căile de rezolvare a problemei date este de utiliza mai multe seturi de simboluri

în loc de alfabetul standard, şi de a cifra literele textului clar alegând simbolurile corespunzătoare

din diferite seturi în consecutivităţi determinate. Astfel de cifruri se numesc cifruri

polialfabetice.

Page 21: Aureliu Zgureanu - Codari Informatice

21

În calitate de exemplu putem considera corespunderea reprezentată în Tabelul 1.2, în care

prima linie reprezintă alfabetul englez iar liniile a doua şi a treia – primul şi respectiv al doilea

alfabet al textului cifrat.

Tabelul 1.2. Exemplu de corespundere pentru un cifru polialfabetic

a b c d e f g h i j k l m n o p q r s t u v w x y z

D C B A H G F E M L K J I Z Y X W V U T S R Q P O N

T M K G O Y D S I P E L U A V C R J W X Z N H B Q F

În această situaţie literele textului clar care se află pe poziţii impare se înlocuiesc cu

literele din primul alfabet (linia 2), iar cele de pe poziţii pare – cu literele din alfabetul al doilea

(linia 3). Astfel, cuvântul iniţial „happy” va fi criptat în „ETXCN” şi litera p care apare de două

ori în textul clar este criptată cu diferite simboluri. Acest fapt împiedică esenţial atacul asupra

cifrului prin aplicarea analizei statistice a limbii.

În exemplul dat se cifrează de fapt două litere la un singur pas, adică de fapt lucrăm cu

blocuri de litere de lungimea doi. În practică se pot utiliza până la cinci alfabete diferite ale

textului cifrat, multiplicând astfel spaţiul cheilor. Dacă e să aplicăm 5 alfabete diferite atunci

numărul cheilor posibile este egal cu 26!5 ≈ 2441. Utilizatorul cifrului trebuie însă să ţină cont de

faptul că cheia este o consecutivitate de 26·5=130 litere. Fireşte, pentru a complica situaţia Evei

(persoanei care încearcă să spargă cifrul), este necesar de a ascunde cantitatea de alfabete,

considerând acesta ca o componentă a cheii [51], [53]. Însă pentru un utilizator de mijloc din

secolul XIX acest sistem de criptare părea prea voluminos, deoarece cheia era prea mare pentru a

o memoriza. Cu toate acestea cele mai cunoscute cifruri ale secolului XIX se bazau anume pe

acest principiu.

Cifrul Vigenere [60] era o variaţie a cifrului polialfabetic şi concomitent avea o cheie

uşor de memorizat. Definim P = C = Z26, K = .26Z O cheie kK a este un cuvânt având

codificarea numerică k0 k1 ... kp−1.

Fie m = m0 m1 ... mn – codificarea textului clar care trebuie transmis. Textul criptat va fi

ek(m)= c = c0 c1 ... cn, unde ci = mi + ki (mod p) (mod 26)

Sistemul Vigenere a fost utilizat secole de-a rândul, fiind considerat la timpul său ca unul

din cele mai sigure sisteme de criptare. În 1917 de exemplu, prestigioasa revistă ”Scientific

American” îl considera imposibil de atacat. Numai că acest sistem a fost spart de Kasiski [52]

încă din 1863 (şi independent de Babbage în 1854) [120].

Page 22: Aureliu Zgureanu - Codari Informatice

22

Criptanaliza sistemului Vigenere constă în următoarele: fie c = c0 c1 ... cn-1 textul criptat

cu cheia k = k0 k1 ... kp−1; putem aranja acest text sub forma unei matrice cu p linii şi pn /

coloane [51], [53], astfel

0c pc pc2 …

1c 1pc 12 pc …

1pc 12 pc 13 pc …

Elementele de pe prima linie au fost criptate după formula

0),26(mod0 kkac prpr

adică cu un sistem Cezar ( 0k fiind o valoare fixată din Z26). În mod similar şi celelalte linii.

Deci, dacă s-ar cunoaşte lungimea p a cheii, problema s-ar reduce la criptanaliza a p texte

criptate cu Cezar – sistem de criptare monoalfabetic. Sunt cunoscute două metode pentru aflarea

lungimii cheii: testul lui Kasiski [60] şi indexul de coincidenţă.

Prima metodă constă în studiul textului criptat şi aflarea de perechi de segmente de cel

puţin 3 caractere (această lungime este propusă de Kasiski) identice. Pentru fiecare astfel de

pereche, se determină distanta dintre segmente. După ce s-au găsit mai multe astfel de distanţe,

valoarea lui p va fi cel mai mare divizor comun al lor (sau – eventual un divizor al acestuia).

A doua metodă de aflare a lungimii cheii de criptare într-un sistem Vigenere se bazează

pe un concept definit în 1920 de Wolfe Friedman: indexul de coincidenţă [52].

Definiţia 1.8. Dacă ncccc ...21 este o secvenţă de n caractere alfabetice, se numeşte ”index de

coincidenţă” )(xIc al lui c probabilitatea ca două caractere din c, alese aleator, să fie identice.

O altă categorie mare de cifruri o alcătuiesc cifrurile cu transpoziţie [60]. Cifrul care

modifică numai ordinea simbolurilor fără a modifica simbolurile însuşi se numeşte cifru de

transpoziţie.

Să examinăm transformarea din cifrul de transpoziţie pentru o consecutivitate de n

simboluri. Putem reprezenta aceasta cu ajutorul substituţiei

,......21

21

niiin

unde i1 este numărul locului textului cifrat unde nimereşte prima literă a textului clar în rezultatul

transformării alese, i1 – numărul locului pentru litera a doua etc. În linia de sus a tabelului sunt

înscrise în ordine crescătoare numerele naturale de la 1 la n, iar în linia de jos – aceleaşi numere

în ordine aleatoare. Adică acest tabel este o permutare de ordinul n. ştiind permutarea ce

generează transformarea putem efectua criptarea şi decriptarea textului.

Page 23: Aureliu Zgureanu - Codari Informatice

23

Un exemplu de astfel de cifru destinat pentru cifrarea mesajelor de lungime n este cifrul

la care spaţiul cheilor este mulţimea tuturor permutărilor de ordinul n, iar transformarea textului

se face cum s-a arătat mai sus. Numărul de chei al acestui cifru este n!. Pentru aplicarea în

practică acest cifru nu este comod, deoarece pentru valori suficient de mari ale lui n suntem

nevoiţi să lucrăm cu tabele foarte lungi.

O aplicare largă au avut cifrurile de transpoziţie care folosesc o figură geometrică.

Transformările în astfel de cifru constau în faptul că în figură textul clar se înscrie pe o „cale” iar

apoi pe altă „cale” se copie de acolo obţinând textul cifrat. Spre exemplu, putem înscrie textul

clar într-un tabel dreptunghiular pe orizontală, începând cu colţul stâng de sus mergând

consecutiv de la stânga spre dreapta şi de la dreapta spre stânga. Copiem apoi mesajul care va fi

textul criptat mergând pe o altă cale: pe verticală, începând cu colţul de dreapta de sus mergând

consecutiv de sus în jos şi de jos în sus.

Aceste cifruri, precum şi multe altele care în fond sunt modificări ale lor, sunt

principalele tipuri de cifruri care fac parte din era „preştiinţifică” a criptografiei.

De menţionat că în această perioadă de dezvoltare a criptografiei, anume în sec. XIX,

olandezul Kerkhoff [60], a formulat cerinţa de bază a unui sistem criptografic, valabilă şi în

zilele noastre: secretul cifrului trebuie să se bazeze pe secretul cheii şi nu a algoritmului.

În sfârşit, ultimul cuvânt în era „preştiinţifică” a criptografiei au fost sistemele de

criptare cu rotor. Ele au asigurat o securitate şi mai înaltă şi au permis automatizarea

(mecanizarea) procesului de cifrare şi decifrare. Una dintre primele sisteme de acest fel a fost

maşina mecanică inventată în anul 1790 de către Thomas Jefferson, viitorul preşedinte al SUA

[60], [61]. Substituţia polialfabetică în maşina cu rotor se realizează prin variaţia poziţiei

rotoarelor care se rotesc, fiecare dintre ele efectuând o anumită substituţie înscrisă pe el.

Aplicarea practică a acestor maşini a început numai la începutul secolului XX. Una dintre

primele maşini cu rotor a fost maşina germană „Enigma”, elaborată în anul 1917 de către Eduard

Hebern şi perfectată mai târziu de mai multe ori.

O maşină rotor (rotor machine) [36], [37] are o tastatură şi o serie de rotoare ce permit

implementarea unei versiuni a cifrului Vigénère. Fiecare rotor face o permutare arbitrară a

alfabetului, are 26 de poziţii şi realizează o simplă substituţie. Deoarece rotoarele se mişcă cu

viteze de rotaţie diferite, perioada unei maşini cu n rotoare este n·26!.

Cel mai celebru cifru bazat pe o maşină rotor este Enigma, utilizată de germani în cel de-

al doilea război mondial. El a fost inventat de Arthur Scherbius şi Arvid Gerhard Damm în

Europa şi a fost patentat în SUA. Germanii au îmbunătăţit considerabil proiectul inventatorilor

săi, dar a fost spart de criptanaliştii polonezi care au explicat atacul englezilor.

Page 24: Aureliu Zgureanu - Codari Informatice

24

Maşinile cu rotor au fost folosite activ pe parcursul războiului II mondial [59]. Pe lângă

maşina germană Enigma au fost folosite şi Sigaba (SUA), Typex (Marea Britanie), Red, Orange,

Purple (Japonia) [76]. Maşinile cu rotor au fost vârful criptografiei formale deoarece relativ

simplu realizau cifruri suficient de rezistente.

Atacurile încununate de succes asupra maşinilor cu rotor au fost posibile numai la

începutul anilor 40 odată cu apariţia maşinilor electronice de calcul [37]. Tot în această perioadă

criptografia devine ştiinţific ramură aparte a matematicii odată cu publicarea (anul 1949)

articolului lui Claude Elwood Shannon „Communication Theory of Secrecy Systems” [98].

1.2. Elemente fundamentale din Criptografie

Criptografia reprezintă o ramură a matematicii care se ocupă cu securizarea informaţiei,

precum şi cu autentificarea şi restricţionarea accesului într-un sistem informatic. În realizarea

acestora se utilizează în mare parte metode matematice, profitând de unele probleme cu

complexitate de rezolvare suficient de înaltă. Termenul „criptografie” este compus din cuvintele

de origine greacă κρυπτός kryptós (ascuns) şi γράφειν gráfein (a scrie). Criptografia urmăreşte

următoarele obiective [5] :

1. Confidenţialitatea (privacy) – proprietatea de a păstra secretul informaţiei, pentru ca

aceasta să fie folosită numai de persoanele autorizate.

2. Integritatea datelor – proprietatea de a evita orice modificare (inserare, ştergere,

substituţie) neautorizată a informaţiei.

3. Autentificare – proprietatea de a identifica o entitate conform anumitor standarde. Este

compusă din:

a) autentificarea unei entităţi;

b) autentificarea sursei informaţiei;

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

Celelalte obiective legate de securitatea informaţiei (autentificarea mesajelor, semnături,

autorizare, validare, controlul accesului, certificare, timestamping, confirmarea recepţiei,

anonimitate, revocare) pot fi derivate din aceste patru.

Împreună cu Criptografia se dezvoltă Criptanaliza – (din greacă, kryptós, „ascuns”, şi

analýein, „a dezlega”) este studiul metodelor de obţinere a înţelesului informaţiilor criptate, fără

a avea acces la informaţia secretă necesară în mod normal pentru aceasta. De regulă, aceasta

implică găsirea unei chei secrete [48, 89].

Criptografia şi Criptanaliza împreună constituie Criptologia (din greacă, kryptós,

„ascuns”, şi λόγος, „cuvânt”) – ştiinţa care se ocupă cu metodele de criptare şi decriptare.

Page 25: Aureliu Zgureanu - Codari Informatice

25

Definiţia 1.1. O mulţime nevidă T se numeşte alfabet. Elementele alfabetului T se numesc litere.

O consecutivitate finită de elemente din alfabetul T se numeşte cuvânt.

Una şi aceeaşi literă poate intra într-un cuvânt de mai multe ori. 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 consideră de câte ori se întâlneşte în el.

Notam cu T* mulţimea tuturor cuvintelor alfabetului T.

Definiţia 1.2. Submulţimile mulţimii T* le vom numi limbaje (formale) peste T.

Definiţia 1.3. Un mesaj în forma sa originară se numeşte text clar (uneori text în clar, în engleză

plaintext). Text criptat (în engleză ciphertext) se numeşte textul obţinut în rezultatul operaţiei de

criptare a textului plan.

Definiţia 1.4. Rescrierea textului clar, folosind o metodă cunoscută numai de expeditor (eventual

şi de destinatar), se numeşte criptare (sau cifrare) a mesajului. Procesul retransformării

criptogramei în textul original este numit decriptare.

Definiţia 1.5. Criptograma este un text ilizibil rezultant din criptarea “textului clar”.

Definiţia 1.6. Un canal este o cale pentru fluxul de informaţii.

Destinatarul primeşte printr-un canal textul cifrat şi îl decriptează, ştiind metoda folosită

pentru criptare, şi obţine 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 modalităţii de criptare şi de decriptare. Aşadar, metoda de camuflare a “textului clar” în

aşa fel încât substanţa să nu sufere modificări semantice, este denumita criptare [60].

Criptarea se foloseşte pentru a fi siguri că informaţia este inaccesibilă oricărei persoane

care nu deţine instrumentul necesar decriptării, chiar dacă oricine poate vedea datele în formă

criptografică. Oricum nu va înţelege nimic, care să conducă spre descifrarea textului original.

Persoana care interceptează criptograma şi încearcă să obţină textul clar aplicând diverse

metode, însă fără a avea cheia de decriptare, este numită criptanalist.

Siatemul care realizează operaţiile de criptare şi decriptare se numeşte sistem de criptare

(sau sistem criptografic, sau criptosistem).

Definiţia 1.7. În criptografia modernă un sistem de criptare este definit ca o structură cu cinci

componente (P, C, K, E, D), [8]:

P={pt/ ptT*} – spaţiul textelor în clar, scrise pentru un alfabet nevid T (în mod obişnuit

T={0,1});

K – spaţiul cheilor de criptare kK;

Familia funcţiilor de criptare dependentă de chei şi de un algoritm de criptare E

Ek : P C , Ek = {ek / ek(pt)=ct şi ek este injectivă};

Familia funcţiilor de decriptare dependentă de chei şi de un algoritm de decriptare D

Page 26: Aureliu Zgureanu - Codari Informatice

26

Dk : C P , Dk = { dk / dk(ek(pt))= t tP}

C spaţiul mesajelor cu text criptat unde:

C={ct / k K, aP, ct = Ek (a)}.

Schema aplicării unui sistem de criptare este prezentată în Figura 1.1.

Fig. 1.1. Schema aplicării unui sistem de criptare

Pentru ca un sistem de criptare să fie considerat bun, el trebuie să îndeplinească trei

criterii (enunţate de Francis Bacon în sec. XVII) [2]:

1. Fiind date ek şi aP să fie uşor de calculat ek(a).

2. Fiind date dk şi wC să fie uşor de determinat dk (w).

3. Să fie imposibil de determinat t din w, fără a cunoaşte dk.

Criteriile 1 şi 2 implică că pentru utilizatorii legali sistemul de criptare nu trebuie să fie

prea complicat (se presupune că utilizatorii au un timp acceptabil pentru calcule). În criteriul 3

„imposibilitatea” e înlocuită în prezent cu „dificultatea de a calcula”. Se presupune că un

interceptor de asemenea are acces la tehnica de calcul. Ultimul criteriu defineşte – sub o formă

vagă – ideea de ”securitate” a sistemului. La aceste criterii, Bacon adăuga şi o a patra regulă:

4. Textul criptat trebuie să fie un text banal, fără suspiciuni.

Această condiţie nu mai poate fi considerată importantă [60] şi este utiliză astăzi doar de

un subdomeniu strict al criptografiei, numit steganografie – ştiinţa despre transmiterea secretă a

informaţiei prin păstrarea secretului a însuşi faptului transmiterii acestei informaţii.

Printre metodele moderne de criptare deosebim două direcţii principale [60]: sistemele cu

cheie secretă (sau sisteme simetrice) – sistemele în care ek este bijectivă şi sisteme cu chei

publice (sau sisteme asimetrice) – sistemele în care ek nu este bijectivă.

Există două tipuri de sisteme simetrice [60], [62], [67]: sisteme care se bazează pe

algoritmi de tip bloc şi sisteme care se bazează algoritmi de tip şir. Algoritmii de tip bloc

acţionează asupra blocurilor de text clar şi text cifrat. Algoritmii de tip şir se aplică şirurilor de

text clar şi text cifrat, la nivel de bit sau octet. Tipurile de cifruri sunt prezentate în Figura 1.2.

ek(pt)=ct

dk(ct)=pt Expe-

ditorul Desti-

natarul

Criptanalistul

Page 27: Aureliu Zgureanu - Codari Informatice

27

Fig. 1.2. Tipurile de cifruri

În paragraful ce urmează este descrisă perioada de până la 1949 – perioada

„preştiinţifică” a criptografiei, adică perioada de la primii săi paşi şi până la apariţia unor articole

în care se pun bazele matematice ale sistemelor criptografice.

1.3. Bazele matematice ale criptografiei moderne

Criptografia modernă este bazată pe rezultate fundamentale în aşa domenii ale

matematicii ca teoria informaţiei, complexitatea algoritmilor, teoria numerelor etc. În prezent

este imposibil de imaginat un algoritm funcţionabil de criptare fără o asigurare matematică.

1.3.1. Teoria informaţiei Teoria contemporană a informaţiei a fost publicată pentru prima dată în anul 1948 de

către Claude Elmwood Shannon [97], [98]. Ideile de fundamentale ale acestor articole sunt:

entropia şi incertitudinea, norma limbii, securitatea sistemului de criptare, distanţa de unicitate,

confuzia şi difuzia.

În teoria informaţiei, entropia Shannon sau entropia informaţională măsoară

incertitudinea asociată cu o variabilă aleatoare . Această măsură indică şi cantitatea de informaţie

conţinută într-un mesaj, exprimată de obicei în biţi sau în biţi pe simbol. Când este exprimată în

biţi, ea reprezintă lungimea minimă pe care trebuie să o aibă un mesaj pentru a comunica

informaţia, considerând toate mesajele cu lungime egală. Spre exemplu, pentru un câmp al bazei

de date ce reprezintă ziua săptămânii este suficient să utilizăm trei biţi de informaţie, deoarece

toată informaţia poate fi codificată în trei biţi: LUNI – 000, MARŢI – 001, MIERCURI – 010,

JOI – 011, VINERI – 100, SÂMBĂTĂ – 101, DUMINICĂ – 110.

Cifruri

Clasice Moderne Maşini cu rotor

Cu substituţie Cu transpoziţie Cu cheie privată Cu cheie publică

Cifruri bloc Cifruri şir

Page 28: Aureliu Zgureanu - Codari Informatice

28

Dacă vom reprezenta informaţia aceasta prin intermediul simbolurilor codului ASCII, ea

ar fi ocupat mai mult spaţiu în memorie fără a conţine însă mai multă informaţie. În mod

analogic, câmpul „sexul” al unei bazei da date conţine numai un singur bit de informaţie, pe când

aceeaşi informaţie poate fi păstrată ca unul dintre cele două cuvinte de 6 biţi ai codului ASCII:

„bărbat” sau „femeie”.

În mod formal, cantitatea de informaţie în mesajul M este măsurată cu entropia mesajului

care se notează cu H(M). Entropia mesajului ce determină sexul este egală cu 1 bit iar entropia

mesajului ce exprimă ziua săptămânii este puţin mai mică de 3 biţi. În acest caz entropia

mesajului, exprimată în biţi, este egală cu n2log , unde n este cantitatea de valori posibile,

considerând că toate valorile sunt echiprobabile.

Entropia unui mesaj este de asemenea şi măsura incertitudinii mesajului. Aceasta este

cantitatea de biţi ai textului clar care trebuie demascat pentru a obţine textul în întregime. Spre

exemplu, dacă blocul textului cifrat „AH*S5 ” înseamnă numai „BÎRBAT” sau „FEMEIE”,

atunci incertitudinea mesajului este 1. Criptanalistului îi este suficient să afle numai un singur bit

corect pentru a decripta mesajul.

Pentru o limbă dată norma limbii este egală cu

NMHr )(

unde N este lungimea mesajului. Pentru valori mari ale lui N norma limbii engleze ia valori

cuprinse între 1,0 bit/literă şi 1,5 bit/literă. C. Shannon a spus [99] că entropia este o funcţie de

lungimea textului. El arătat că pentru blocurile de 8 litere norma este egală cu 2,3 bit/literă, iar

valoarea ei nimereşte între 1,3 şi 1,5 pentru blocurile de 16 litere. Thomas Cover a utilizat o

metodă a teoriei jocurilor pentru evaluare şi a determinat că entropia este egală cu 1,3 bit/simbol

[31]. Norma absolută a limbii este egală cu cantitatea maximă de biţi care pateu fi transmisă cu

fiecare simbol cu condiţia că toate şirurile de simboluri sunt echiprobabile. Dacă în limbă sunt L

simboluri atunci norma absolută este egală cu .log2 LR Aceasta este maximul entropiei

simbolurilor luate aparte.

Pentru limba engleză cu 26 de litere norma absolută este egală cu 26log2 sau

aproximativ 4,7 bit/literă [31]. Norma reală a limbii engleze este, deci, mult mai mică, limbile

fireşti au o redundanţă mare. Redundanţa limbii se notează cu D şi se defineşte ca .rRD

Considerând norma limbii engleze egală cu 1,3 obţinem o redundanţă egală cu 3,4

bit/literă. Aceasta înseamnă că fiecare literă a limbii engleze conţine 3,4 biţi de informaţie

excedentară.

Mesajele ASCII care constau numai din litere engleze cantitatea de informaţie la fiecare

octet este de 1,3 biţi. Deci, în fiecare octet se conţin 6,7 biţi de informaţie excedentară, ce

Page 29: Aureliu Zgureanu - Codari Informatice

29

implică o redundanţă de 0,84 biţi de informaţie la un bit de text ASCII şi o entropie de 0,16 biţi

de informaţie la un bit de text ASCII. Acelaşi mesaj scris cu codul Baudot, cu 5 biţi/simbol, are

redundanţa 0,74 biţi pe un bit şi entropia de 0,26 biţi pe un bit. Spaţiile, semnele de punctuaţie şi

formatarea textului modifică rezultatele date.

Shannon a definit exact modelul matematic pentru Securitatea sistemului de criptare

[98]. Sensul lucrului criptanalistului constă în determinarea cheii k, a textului clar pt sau a

ambelor concomitent. Pe de altă parte el poate fi satisfăcut şi de o informaţie probabilistică a lui

pt, cum ar fi: este oare acest text clar un sunet digitalizat, text scris în limba germană, date ale

unor tabele electronice sau altceva concret.

În criptanaliza reală există o informaţie probabilistică despre pt încă până la începutul

lucrului. Criptanalistul cel mai probabil ştie deja limba textului clar. Această limbă conţine o

redundanţă corelată cu ea. Dacă mesajul este pentru Bob, este probabil că el începe cu „Dragă

Bob”. Evident, „Dragă Bob” este mai probabil decât „J4)*%?kj5”. Scopul criptanalistului este

modificările probabilităţilor dependente de fiecare text clar eventual. În final din infinitatea de

texte în clar va fi ales unul concret (sau în cel mai rău caz unul foarte probabil).

Există sisteme de criptare ce ating o securitate perfectă. Acestea sunt sistemele în care

textul cifrat nu dă nici o informaţie despre textul clar (posibil cu excepţia lungimii lui). Shannon

a demonstrat în mod practic că acest lucru este posibil numai în cazul în care numărul de chei

posibile este la fel de mare ca şi numărul de mesaje posibile. Altfel spus, cheia nu trebuie să fie

mai mică decât mesajul şi nu poate fi folosit repetat. Acesta înseamnă că unicul sistem care

atinge securitatea perfectă este sistemul numit „one-time pad”, inventat în 1917 de către major

Jeseph Mauborgne şi Glbert Vernam [105] din AT&T [60]. Sistemul „one-time pad” este un şir

mare de simboluri ale cheii, simboluri care nu se repetă, sunt repartizate aleator, scrise pe

bucăţele de hârtie şi încleiate într-un carnet. Fiecare literă a cheii se utilizează numai pentru

criptarea unui singur simbol al textului clar. Cifrarea reprezintă suma după modului 26 a

simbolurilor textului clar şi a cheii din carnetul de o singură folosinţă. Fiecare simbol al cheii se

foloseşte numai o dată şi pentru un singur mesaj. După cifrare foile utilizate ale carnetului sunt

distruse. La fel procedează şi adresantul, care are acelaşi carnet.

Cu excepţia sistemelor cu securitate perfectă textul cifrat inevitabil conţine o cantitate

anumită de informaţie despre textul clar respectiv. Un algoritm criptografic bun păstrează

minimul de astfel de informaţie iar un criptanalist bun foloseşte această informaţie pentru un text

clar anumit.

Criptanaliştii folosesc redundanţa firească a limbii pentru minimizarea numărului de texte

în clar. Cu cât limba are o redundanţă mai mare cu atât se supune mai uşor criptanalizei. Din

aceste motive multe implementări criptografice realizate efectuează comprimarea textului până

Page 30: Aureliu Zgureanu - Codari Informatice

30

la cifrare. Comprimarea micşorează redundanţa concomitent cu volumul de lucru necesar pentru

cifrare şi decifrare.

Entropia sistemului de criptare este o unitate de măsură a spaţiului cheilor K. Ea este

egală aproximativ cu logaritmul în baza 2 de la numărul de chei [99]: .log)( 2 KKH

Entropia sistemului de criptare cu cheia de 64 biţi este de 64 de biţi, entropia sistemului

cu cheie de 56 de biţi este de 56 de biţi. În caz general, cu cât entropia este mai mare, cu atât mai

dificilă este spargerea sistemului.

Pentru un mesaj de lungime n cantitatea de chei diferite care descifrează textul cifrat într-

un text clar cu sens în limba textului original se determină de formula 12 )( nDKH [31], [99].

Shannon a definit [98] distanţa de unicitate, U, care se mai numeşte punct de unicitate, o

cantitate aproximativă de text cifrat pentru care suma entropiei textului clar respectiv şi entropiei

cheii de criptare este egală cu cantitatea de biţi ai textului cifrat. De asemenea Shannon a arătat

că are sens să considerăm că textele cifrate care sunt mai lungi decât distanţa de unicitate pot fi

descifrate cu sens numai într-un singur mod. Textele cifrate care sunt vizibil mai scurte ca

distanţa de unicitate pot fi descifrate cu sens, cel mai probabil în mai multe moduri, fiecare dintre

ele având posibilitatea de a fi corect, asigurând astfel securitatea, punând inamicul în faţa alegerii

textului clar corect.

Pentru majoritatea sistemelor simetrice distanţa de unicitate se defineşte ca raportul

entropiei sistemului împărţită la redundanţa limbii:

DKHU )(

Distanţa de unicitate nu este o mărime exactă ci una probabilistică. Ea permite să

evaluăm cantitatea minimă de text cifrat pentru spargerea căruia prin forţă brută există, probabil,

numai o singură metodă raţională de descifrare. De obicei cu cât e mai mare distanţa de unicitate,

cu atât e mai bun sistemul de criptare. Pentru sistemul DES cu o cheie de 56 de biţi şi un mesaj

scris în limba engleză cu coduri ASCII, distanţa de unicitate este aproximativ egală cu 8,2

simboluri ASCII sau 66 biţi. În [35] sunt date distanţele de unicitate pentru diverse lungimi ale

cheii. Distanţele de unicitate pentru unele sisteme de criptare clasice sunt prezentate în [35].

Distanţa de unicitate nu este o măsură a textului cifrat necesar pentru criptanaliza ci

cantitatea de text cifrat necesar pentru unicitatea rezultatului criptanalizei. Un sistem de criptare

poate fi invulnerabilă chiar dacă teoretic ea poate fi spartă, folosind o cantitate mică de text

cifrat. Distanţa de unicitate este proporţională redundanţei. Dacă redundanţa tinde spre zero chiar

şi un cifru trivial pateu să nu fie spart folosind numai textul cifrat.

Shannon a definit sistemul de criptare cu o distanţă infinită de unicitate ca unul ce are un

secret ideal. Trebuie de menţionat însă că un sistem ideal nu este neapărat perfect pe când un

Page 31: Aureliu Zgureanu - Codari Informatice

31

sistem perfect este şi ideal. Dacă sistemul are un secret ideal atunci chiar şi după o criptanaliză

reuşită rămâne o urmă de nedeterminare despre coincidenţa textului clar restabilit şi a textului

clar original.

Utilizarea practică a teoriei informaţiei are o importanţă teoretică foarte mare. Cu toate

acestea criptanaliza reală foloseşte foarte rar cele spuse mai sus. Distanţa de unicitate garantează

siguranţa sistemului dacă este foarte mică, pe când valoarea mare a ei nu garantează securitatea.

Câţiva algoritmi practici nu pot fi supuşi analizei absolut deloc, comportamentul parametrilor

teoriei informaţiei ar putea contribui la spargerea unor mesaje cifrate. Însă unele considerente ale

teorie informaţiei uneori sunt utile, spre exemplu pentru determinarea intervalului recomandat de

modificare a cheilor într-un algoritm concret. Criptanaliştii mai folosesc o serie de teste bazate

pe statistică şi teoria informaţiei pentru a alege direcţia mai cu perspectivă a analizei textului

cifrat. În acest context trebuie de spus că în mare parte literatura referitoare la aplicarea teoriei

informaţiei în criptanaliză este secretă, inclusiv şi lucrarea de bază a lui Alan Turing, scrisă în

1940.

Două dintre metodele de bază de frustrare a analizei statistice (altele decât recurgerea la

sistemele ideale) sunt confuzia şi difuzia [98]. Ele sunt două concepte suplimentare care se leagă

de cantitatea de muncă necesară unei criptări. Un algoritm de criptare trebuie să ia informaţia din

textul 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 textul clar asupra

textului cifrat. Aceasta caracteristica 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 Cezar nu are un grad suficient de ridicat de confuzie, deoarece

din descoperirea transformării a câteva litere, se poate prezice transformarea celorlalte litere, fără

informaţie suplimentară. Cea mai simplă modalitate de a produce confuzia este substituţia.

Cifrurile cu substituţie contemporane sunt mai complicate decât cele clasice: blocurile lungi ale

textului clar sunt înlocuite cu blocuri ale textului cifrat şi modalitatea de înlocuire se modifică cu

fiecare bit al textului sau a cheii. Aşa fel de substituţie este însă insuficient – algoritmul

complicat al maşinii germane Enigma a fost spart în timpul celui de-al Doilea Război Mondial.

Cifrul trebuie să distribuie informaţia din textul clar în întreg textul cifrat. Schimbările

din textul 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 importanta de

text cifrat pentru a descoperi algoritmul. Cea mai simplă modalitate de a produce confuzia este

transpoziţia (permutarea). Cifrurile de substituţie şi transpoziţii nu prezintă o buna difuzie,

deoarece un caracter din textul clar determină doar un singur caracter din text cifrat. Cifrurile

Page 32: Aureliu Zgureanu - Codari Informatice

32

contemporane de asemenea utilizează transpoziţia, dar se folosesc şi aşa forme ale difuziei care

permit împrăştierea părţilor mesajului prin întreg mesajul.

Cifrurile cu flux de caractere folosesc numai confuzie, cu toate că o serie de scheme cu

conexiune inversă (feedback) adaugă difuziune. Algoritmii de tip bloc aplică atât difuzia cât şi

confuzia. De regulă, este simplu de spart difuzia ca atare cu toate că cifrurile cu transpoziţie

dublă sunt mai rezistente decât alte sisteme necomputerizate.

1.3.2. Teoria complexităţii Teoria complexităţii asigură metodologia analizei complexităţii de calcul a diverşilor

algoritmi de criptare. Ea compară metodele şi algoritmii de criptare şi determină securitatea lor.

Teoria informaţiei ne informează că orice sistem de criptare (cu excepţia one-time pad) pot fi

sparte. De asemenea teoria informaţiei ne informează dacă sistemele pot fi sparte până la

moartea universului

Complexitatea algoritmului este determinată de puterea de calcul necesară pentru

executarea lui. Complexitatea computaţională a algoritmului deseori este apreciată prin doi

parametri: T (complexitatea temporală) şi S (complexitatea spaţială sau cerinţele memoriei).

Ambii parametri sunt prezentaţi ca funcţii de variabila n, unde n este mărimea datelor de intrare.

Există de asemenea şi alte modalităţi de măsurare a complexităţii cum ar fi cantitatea de biţi

aleatori, lăţimea bandei de comunicaţie, volumul de date etc.

De obicei algoritmii se clasifică în conformitate cu complexitatea lor temporală sau

spaţială. Un algoritm se numeşte constant dacă complexitatea lui nu este în funcţie de n: ).1(O

Algoritmul este liniar, dacă complexitatea temporală a lui este ).(nO Algoritmii pot fii pătratici,

cubici etc. Toţi aceşti algoritmi sunt polinomiali, complexitatea lor fiind ),( mnO unde m –

constantă. Algoritmii cu o complexitate temporală polinomială se numesc algoritmi cu timp

polinomial.

Algoritmii cu complexitatea ),( )(nftO unde t – constantă mai mare ca 1 iar f(n) – o

funcţie polinomială de variabilă n, se numesc algoritmi exponenţiali. Submulţimea logaritmilor

exponenţiali care au complexitatea ),( )(nfcO unde c este constantă iar f(n) creşte mai repede ca

constanta şi mai lent ca funcţia liniară, se numesc algoritmi suprapolinomiali. În caz ideal

criptograful ar dori să afirme că cel mai bun algoritm de spargere a algoritmului de cifrare

proiectat, are un timp exponenţial. În practică, la nivelul actual de dezvoltare a teoriei

complexităţii, în cel mai bun caz putem spune: „toţi algoritmii de spargere cunoscuţi pentru

sistemul de criptare dat au o complexitate de timp suprapolinomială”. Adică toţi algoritmii de

spargere cunoscuţi au complexitatea de timp suprapolinomială, însă încă nu este posibil de

demonstrat că nu se poate descoperi un algoritm de spargere cu complexitate polinomială. Este

Page 33: Aureliu Zgureanu - Codari Informatice

33

posibil ca dezvoltarea teoriei informaţiei să permită crearea unui algoritm de criptare pentru care

existenţa algoritmilor cu timp polinomial de spargere poate fi exclusă cu exactitate matematică.

Odată cu creşterea lui n complexitatea temporală a algoritmilor poate deveni atât de mare,

încât va influenţa realizarea practică a algoritmului. Dacă considerăm microsecunda ca unitate de

timp, calculatorul poate executa algoritmul constant într-o microsecundă, pe cel liniar – într-o

secundă iar pe cel pătratic – în 11,6 zile iar cel cubic are nevoie de 32000 de ani şi , în principiu

se poate realiza către următoarea eră glaciară. Realizarea algoritmului exponenţial este zădarnică

indiferent de extrapolarea creşterii puterii calculatoarelor, calculului paralel etc.

Complexitatea temporală a problemei spargerii algoritmului cu forţă brută este

proporţională cu cantitatea de chei posibile, care depinde exponenţial de lungimea cheii. Dacă n

este lungimea cheii, atunci complexitatea spargerii cu forţă brută este ).2( nO

Teoria complexităţii clasifică nu numai complexitatea algoritmilor concreţi pentru

rezolvarea problemei ci şi complexitatea problemelor ca atare. Teoria studiază timpul minim şi

volumul memoriei necesar pentru rezolvarea celui mai complicat caz al problemei pe un

calculator teoretic, cunoscut ca maşina Turing, ce reprezintă un automat finit cu o bandă de

memorie infinită pentru citire-scriere şi este un model real de calcul.

Dintre clasele cele mai importante de complexitate ale problemelor – P, NP, NP-

complete, PSAPCE, PSPACE-complete, EXPTIE – cea mai importantă pentru criptografie este

clasa NP. Importanţa aceste clase constă în următoarele: mulţi algoritmi clasici şi algoritmi cu

chei publice se pot sparge într-un timp polinomial nedeterminat. Pentru un text cifrat c,

criptanalistul pur şi simplu ghiceşte textul clar x şi cheia k şi într-un timp polinomial execută

algoritmul de cifrare cu datele de intrare x şi k şi verifică dacă rezultatul este egal cu c. Aceasta

are o mare importanţă teoretică deoarece se determină limitata de sus a complexităţii

criptanalizei acestor algoritmi. În practică desigur, acesta este un algoritm determinist căutat de

criptanalist, algoritm executabil într-un timp polinomial. Mai mult decât atât, acest argument nu

poate fi aplicat la toate clasele de cifruri, mai concret, pentru one-time pad – oricare ar fi c, există

o mulţime de perechi x, k din care rezultă c la executarea algoritmului de cifrare, însă majoritatea

acestor x sunt texte fără sens, texte în clar inadmisibile.

Trebuie de menţionat că o importanţă practică foarte mare în criptografie o au noţiunile:

clasele de resturi, numerele prime, calculele în câmpul Galois, descompunerea în factori,

logaritmii discreţi într-un câmp finit etc.

În practica modernă se aplică pe larg rezultatele matematice din domeniile menţionate

(dar şi din altele) la elaborarea algoritmilor de criptare cu cheie publică [90] sau privată, de tip

bloc sau şir de caractere [57], [121].

Page 34: Aureliu Zgureanu - Codari Informatice

34

În continuare sunt prezentaţi cei mai frecvent utilizaţi algoritmi incluzând o varietate cât

mai mare posibil de tipuri ale lor. Practica modernă aplică în diverse scopuri anumiţi algoritmi

de criptare pornind de la gardul de securitate, timpul de lucru, viteza de schimb a datelor,

resursele necesare pentru funcţionare, de durata necesară păstrării datelor etc.

De exemplu sistemele de criptare cu chei publice sunt mai lente decât cele ci cheie

privată. Multe tranzacţii financiare durează o perioadă de timp foarte scurtă. De aceea atacul

poate interveni numai pe durata acestui interval de timp şi numai atât cât activează cheia pentru

această şedinţă. Datele personale, cum ar fi informaţia despre conturile bancare, despre codurile

asigurării sociale etc. pot fi păstrate ani în şir. În acest caz atacatorul va avea acest timp pentru

tentative de intervenţii. Deci, în dependenţă de necesitate se aplică un tip de sistem de criptare

sau altul.

1.4. Algoritmi simetrici de tip bloc

Algoritmii de tip bloc criptează mesajul în blocuri de 64 sau 128 de biţi. Pentru acesta 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 încât să îndeplinească următoarele cerinţe [80]:

ştiind un bloc de biţi ai textului în clar şi cheia de criptare, sistemul să poată genera rapid

un bloc al textului criptat;

ştiind un bloc de biţi ai textului criptat şi cheia de criptare/decriptare, sistemul să poată

genera rapid un bloc al textului în clar;

ştiind blocurile textului în clar şi ale textului criptat, sistemului să-i fie dificil să genereze

cheia.

Acest tip de algoritmi este foarte folosit în criptografia modernă. Mai jos sunt prezentaţi

câţiva algoritmi care “au făcut carieră”, după prezentarea modurilor criptografice care stau la

baza funcţionării algoritmilor de tip bloc.

Algoritmul Lucifer [102] este un proiect al companiei IBM iniţiat în anul 1970 pentru

crearea unui cifru bloc rezistent. Rezultatele cercetărilor au contribuit la crearea a două metode

de construire a cifrurilor bloc rezistente – reţelele Feistel [44] şi reţelele SP (Substitution-

Permutation Network). Acest algoritm a pus bazele criptografiei simetrice moderne. În proiect au

participat Horst Feistel şi Don Coppersmith, care mai târziu au devenit criptografi vestiţi.

Lucifer este o reţea de permutări şi substituţii, bazate pe aşa numitele “cutiile-S” care au

intrări şi ieşiri de 4 biţi. Intrarea este o permutare a biţilor ieşirii din faza anterioară, iar intrarea

din prima fază este chiar textul în clar. Un bit cheie este folosit pentru a alege între “cutia-S”

actuală din două posibile – Lucifer implementează aceasta printr-o “cutie-T” cu 9 biţi la intrare şi

Page 35: Aureliu Zgureanu - Codari Informatice

35

8 la ieşire). Lucifer are 16 faze, blocuri de 128 de biţi şi o manipulare a cheii suficient de

complicată. În Figura 1.3 este prezentată schema unei „cutii-S” iar în Figura 1.4 – a reţelei

Feistel.

În reţeaua Feistel informaţia este divizată în blocuri de lungime fixă: 64, 128 biţi. Fiecare

bloc este divizat în 2 sub-blocuri L0 şi R0. Asupra blocului L0 se aplică funcţia f(L0,K0) iar

rezultatul se adună modulo 2 cu R0 şi se atribuie blocului nou de stânga L1, care este jumătatea

datelor de intrare a rundei următoare. Iar blocul de stânga L0 se atribuie fără modificări blocului

nou de dreapta R1, care este a doua jumătate. Operaţia se repetă în funcţie de numărul rundelor

în algoritm iar la fiecare etapă se modifică, conform unei reguli matematice, cheile de rundă K0

cu K1.

S0 S1

S0 S1

S0 S1

S0 S1

S0 S1

S0 S1

S0 S1

S0 S1

S0 S1

S0 S1

S0 S1

S0 S1

P

S0 S1

P

S0 S1

P

S0 S1

P

S0 S1

Fig. 1.3. Schema unei „cutii-S”

Folosind criptografia diferenţială împotriva primei forme de Lucifer, criptologii Biham şi

Shamir au arătat că Lucifer cu 8 faze şi 32 de biţi poate fi spart cu 40 de texte în clar alese şi 229

paşi; acelaşi atac poate sparge Lucifer cu 8 faze şi 128 biţi cu 60 de texte în clar alese şi 253 paşi.

Analize ulterioare au arătat că peste jumătate din chei nu sunt sigure, ceea ce conduce la

posibilitatea de a sparge Lucifer cu 128 de biţi, cu orice număr de faze, cu 233 texte în clar alese,

sau cu 265 texte în clar cunoscute cu chei alese [4], [9]. În concluzie, a doua formă de Lucifer

este mai slabă.

Cu toate neajunsurile care la avea, algoritmul Lucifer a contribuit la dezvoltarea

ulterioară a cifrurilor bloc şi chiar a unora foarte importante cum ar fi DES.

Algoritmul DES (Data Encryption Standard) a fost elaborat pentru guvernul Statelor Unite şi

pentru folosinţă publică. El a fost dezvoltat plecând de la algoritmul “Lucifer”. În mai 1973,

revista Federal Register a sintetizat principiile care trebuie să stea la baza proiectării unui

algoritm criptografic standard [94]: algoritmul trebuie să asigure un înalt nivel de securitate; să

fie complet specificat şi simplu de înţeles; securitatea algoritmului trebuie să fie asigurată de

cheie şi nu trebuie să depindă de păstrarea secretă a algoritmului; algoritmul trebuie să fie

disponibil tuturor utilizatorilor; să fie adaptabil pentru diverse aplicaţii; să fie implementabil pe

Mesajul

Criptograma

Page 36: Aureliu Zgureanu - Codari Informatice

36

dispozitivele electronice; să fie eficient în utilizare; să poată fi validat; algoritmul trebuie să fie

exportabil.

DES a fost oficial adoptat ca standard federal în 23 noiembrie 1976, iar în 1977

specificaţiile sale au fost făcute publice [77], [103].

Algoritmul DES este o combinaţie complexă folosind două blocuri fundamentale în

criptografie: substituţia şi permutarea (transpoziţia) [49], [71]. Acest cifru bloc acceptă un bloc

de 64 de biţi la intrare şi generează un bloc cifrat de 64 de biţi. DES este un algoritm simetric.

Acelaşi algoritm şi aceeaşi cheie sunt folosiţi atât la criptare cât şi la decriptare.

Algoritmul este constituit din 16 cicluri repetate ale blocurilor fundamentale. Textul

iniţial este descompus în blocuri de 64 de biţi. Cheia este de 64 biţi din care doar 56 sunt efectivi,

ceilalţi fiind biţi de paritate. Folosirea substituţiei provoacă confuzie prin sistematica substituire

a unor biţi cu alţii. Transpoziţiile provoacă difuzie prin reordonarea biţilor. DES foloseşte numai

operaţii clasice aritmetice şi logice cu număr de până la 64 de biţi, ceea ce face relativ uşor de

implementat atât software cât mai ales hardware: unul din scopurile declarate ale algoritmului

fiind uşoara lui implementare hardware într-un cip specializat [33], [50], [104].

Fig. 1.4. Schema reţelei Feistel

Text cifrat Text plan

Criptare Decriptare Text plan Text cifrat

Page 37: Aureliu Zgureanu - Codari Informatice

37

Cu algoritmul DES se poate face atât cifrarea cât şi decifrarea unui mesaj.

Deşi DES a fost cel mai celebru algoritm al secolului XX este considerat la această oră

nesigur pentru multe aplicaţii. Pare paradoxal, dar aceasta este consecinţa măririi considerabile a

puterii de calcul de la confirmarea DES-ului ca un standard criptografic şi până in anul 2000.

Slăbiciunea pleacă de la lungimea prea mică a cheii de 56 de biţi [6], [7], [8], [29], [30], [39],

[63], [106]. Varianta algoritmului cunoscută ca triplu-DES [78] este cea care este considerată

sigură şi la această oră [70], [72].

Insecuritatea DES-ului pleacă de la premiza că un atac “în forţă” are şanse de reuşită în

condiţiile puterii de calcul disponibile astăzi (a se vedea atacurile EFF); până în 2004 cel mai

eficient atac este datorat criptanalizei liniare [70] care folosind 243 texte cunoscute generează o

complexitate temporală de 239-43 (Junod 2001); în condiţiile unui atac cu text ales complexitatea

poate fi redusă de patru ori (Knudsen şi Mathiassen, 2000).

În ianuarie 1997, NIST a organizat un concurs de criptografie deschis cercetătorilor din

întreaga lume [81], având ca subiect crearea unui nou standard, care urma să se numească AES –

Advanced Encryption Standard [79]. Regulile concursului erau: algoritmul să fie un cifru bloc

simetric; proiectul trebuia să fie public; AES trebuia să suporte chei de 128, 192 şi 256 biţi;

algoritmul trebuia să se poată implementa atât hardware cât şi software; AES trebuia să fie un

standard public sau oferit cu licenţă ne discriminatorie.

În august 1998 NIST a selectat cinci finalişti pe criterii de securitate, eficienţă,

flexibilitate şi cerinţe de memorie iar în octombrie 2000 NIST a stabilit câştigătorul. Acesta este

algoritmul Rijndael, dezvoltat de doi tineri cercetători belgieni, Joan Daemen şi Vincent Rijmen

şi care devine standard guvernamental al SUA. Se speră ca Rjindael să devină standardul

criptografic dominant în lume pentru următorii 10 ani.

Rijndael permite lungimi de chei şi mărimi de blocuri de la 128 de biţi la 256 de biţi, în

paşi de câte 32 de biţi. Lungimea cheii şi lungimea blocului pot fi alese în mod independent, dar

în practică se vor folosi două variante: bloc de 128 biţi cu cheie de 128 biţi şi bloc de 128 biţi cu

cheie de 256 biţi. O cheie de 128 biţi permite un spaţiu al cheilor de 2128 chei. La 26 mai 2002

AES a fost anunţat standard de criptare în SUA. La moment este cel mai răspândit algoritm de

criptare simetrică.

Rijndael se bazează pe teoria câmpului Galois, în sensul că anumite operaţiuni sunt

definite la nivel de octet iar octeţii reprezintă elemente în câmpul finit GF(28) [32], [47], [48].

Cum toate reprezentările câmpului finit GF(28) sunt izomorfe, se poate alege reprezentarea

clasică polinomială, cu impact pozitiv asupra complexităţii implementării. Octetul b, format din

biţii b7, b6, b5, b4, b3, b2, b1 şi b0, este considerat ca fiind un polinom de gradul 7 cu coeficienţi 0

sau 1:

Page 38: Aureliu Zgureanu - Codari Informatice

38

b7 x7 + b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1 x + b0 .

Operaţiunea de adunare este definită ca suma a două polinoame în care coeficienţii se

adună modulo 2 şi care corespunde operării XOR a celor doi octeţi corespondenţi. Sunt

îndeplinite axiomele grupului abelian: operaţia este internă, asociativă, comutativă, există

element neutru şi element invers.

Operaţiunea de înmulţire corespunde produsului a două polinoame modulo, un polinom

ireductibil de grad 8 şi care pentru AES este

m(x) = x8 + x4 + x3 + x + 1

Înmulţirea este internă (rezultatul este un polinom de grad strict mai mic ca 8), asociativă şi

există element neutru. Elementul invers se determină cu algoritmul lui Euclid, iar

distributivitatea celor doua operaţii se verifică.

Concluzia este că mulţimea celor 256 de valori posibile ale unui octet, împreună cu cele

două operaţiuni definite mai sus formează un corp algebric finit, respectiv GF(28).

În proiectarea AES s-a ţinut cont de 3 criterii: rezistenţa împotriva tuturor atacurilor

cunoscute; viteza şi compactitatea codului pe un mare număr de platforme; simplicitatea

proiectării [82], [89], [103].

Ca şi DES, AES foloseşte substituţie şi permutări, ca şi runde multiple. Numărul de runde

depinde de mărimea cheii şi de mărimea blocului, fiind 10 în cazul 128/128 şi mărindu-se până

la 14 pentru cazul 256/128. Spre deosebire de DES, toate operaţiile sunt la nivel de octet, pentru

a permite implementări eficient hardware şi software.

La momentul implementării AES nu se cunoşteau metode de atac asupra lui. Însă

căutarea permanentă a rezultat cu succese pentru criptanalişti. Atacul cel mai realizabil împotriva

AES este îndreptat împotriva variantelor Rijndael cu număr redus de iteraţii [46]. AES are 10

iteraţii la o cheie de 128 de biţi, 12 la cheie de 192 de biţi şi 14 la cheie de 256 de biţi. La nivelul

anului 2008, cele mai cunoscute atacuri erau accesibile la 7, 8, respectiv 9 iteraţii pentru cele trei

lungimi ale cheii. Au fost găsite [10], [11], [34], [54], [69], [86], [111] metode eficiente pentru a

ataca AES cu mai puţine runde (10) şi o cheie de 256 biţi aplicând metoda cheilor înrudite. De

aceea pentru siguranţă e recomandată [94] trecerea de la 10 la 16 runde pentru AES-128, de la 12

la 20 pentru AES 192 şi de la 14 la 28 pentru AES-256 .

Din categoria de algoritmi simetrici de tip bloc se mai poate menţiona algoritmul

Blowfish [80], [94], [95], [96], [112] care este proiectat pentru a fi implementat pe procesoare

puternice, şi este optimizat pentru aplicaţii în care cheia nu trebuie să se schimbe des, cum ar fi

legături de comunicaţie sau un criptor automat pentru fişiere. Este semnificativ mai rapid decât

DES când este implementat pe procesoare de 32 de biţi dotate cu memorie cache mare, cum ar fi

Page 39: Aureliu Zgureanu - Codari Informatice

39

Pentium. Blowfish nu este potrivit pentru comutarea de pachete, cu schimbări dese de cheie, ca

funcţie hash one-way sau în aplicaţii smart-card, unde memoria este insuficientă.

1.5. Algoritmi simetrici de tip şir

Cifrurile şir formează o clasă importantă de algoritmi de criptare; ele pot fi cifruri cu chei

simetrice sau cu chei publice. Ceea ce le caracterizează şi le diferenţiază faţă de cifrurile bloc

este faptul că cifrurile şir procesează textul de criptat î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 [42], [92], [94]. Cifrurile şir sunt algoritmi cu memorie, în sensul că procesul de

criptarea nu depinde doar de cheie şi de textul în clar, ci şi de starea curentă. În cazul în care

probabilitatea erorilor de transmisie este mare, folosirea cifrurilor şir este avantajoasă deoarece

au proprietatea de a nu propaga erorile. Ele se folosesc şi în cazurile în care datele trebuie

procesate una câte una, datorită lipsei de spaţiu de memorie.

Algoritmii simetrici de tip şir se împart în două clase mari: cifruri şir sincrone şi cifruri

şir asincrone.

Un cifru şir sincron este unul care generează şirul de chei independent de textul clar şi

de textul cifrat. Criptarea în acest caz poate fi descrisă de următoarele ecuaţii:

Si+1 = f (Si , k); zi = g (Si , k); ci = h (zi, mi),

unde i=0, 1, 2, … L, iar L reprezintă lungimea mesajului.

În această formulă starea iniţială S0 se determină din cheia k, f este funcţia de stare, g este

funcţia care produce şirul de chei z, iar h este funcţia de ieşire, care combină şirul de chei cu

textul clar mi pentru obţinerea textului cifrat ci .

Printre proprietăţile cifrurilor şir sincrone sunt:

sincronizarea – atât expeditorul cât şi destinatarul trebuie să fie sincronizaţi, în sensul de a

folosi aceeaşi cheie şi a opera cu aceeaşi stare respectiv, astfel încât să fie posibilă o

decriptare corectă. Dacă sincronizarea se pierde prin inserarea sau lipsa unor biţi din textul

cifrat transmis, atunci decriptarea eşuează şi poate fi reluată doar prin tehnici suplimentare de

re-sincronizare, adică re-iniţializarea, plasarea de markeri speciali sau dacă textul în clar

conţine suficientă redundanţă şi se încearcă toate deplasările posibile ale şirului de chei.

nepropagarea erorii – un bit de text cifrat care este modificat în timpul transmisiei nu trebuie

să afecteze decriptarea celorlalţi biţi cifraţi.

atacuri active – ca o consecinţă a sincronizării, inserarea, ştergerea sau retransmisia unor biţi

de text cifrat de către un adversar activ va cauza o pierdere instantanee a sincronizării şi

creşte posibilitatea detectării atacului de către decriptor. Ca o consecinţă a nepropagării

erorii, un atacator ar putea să modifice biţi aleşi din textul cifrat şi să afle exact ce efect au

Page 40: Aureliu Zgureanu - Codari Informatice

40

modificările în textul în clar. Trebuie deci, să se folosească mecanisme suplimentare de

autentificare a expeditorului şi de garantare a integrităţii datelor.

Un cifru şir asincron sau autosincronizabil este unul care generează şirul de chei ca o

funcţie de cheie şi un număr de biţi din textul cifrat anterior. Funcţia de criptare în acest caz

poate fi descrisă de următoarele ecuaţii:

Si = (ci-t, ci-t+1, …, ci-1); zi = g (Si, k); ci = h (zi, mi),

unde i=0, 1, 2, … L, iar L reprezintă lungimea mesajului.

În această formulă S0 = (c-t, c-t+1, …, c-1), este starea iniţială (nesecretă), k este cheia, g este

funcţia care produce şirul de chei z, iar h este funcţia de ieşire care combină şirul de chei cu

textul în clar mi pentru a obţine textul cifrat ci.

Cifrurilor şir asincrone posedă următoarele proprietăţi:

auto-sincronizarea – este posibilă dacă biţi din textul cifrat sunt şterse sau adăugate,

deoarece decriptarea depinde doar de un număr determinat de biţi cifraţi anterior. Astfel de

cifruri sunt capabile să-şi restabilească automat procesul de decriptare corectă după pierderea

sincronizării.

propagarea limitată a erorii – să presupunem că starea unui cifru şir asincron depinde de t

biţi cifraţi anteriori. Dacă un singur bit cifrat este modificat, şters sau inserat în timpul

transmisiei, atunci decriptarea a cel mult t biţi următori de text cifrat va fi incorectă, după

care se reia decriptarea corectă.

atacuri active – limitarea propagării erorii face ca orice modificare a textului cifrat de către

un adversar activ să aibă ca şi consecinţă decriptarea incorectă a altor biţi cifraţi, ceea ce

poate mări posibilitatea ca atacul să fie observat de către decriptor. Pe de altă parte, datorită

auto-sincronizării este mai dificil decât în cazul cifrurilor şir sincrone să se detecteze

inserarea, ştergerea sau modificarea unor biţi în textul cifrat. Trebuie deci să se folosească

mecanisme suplimentare de autentificare a expeditorului şi de garantare a integrităţii datelor.

difuzia statisticilor textului în clar – deoarece fiecare bit de text clar influenţează toţi biţii

cifraţi următori, proprietăţile statistice ale textului în clar sunt dispersate în textul cifrat. Ca o

consecinţă, cifrurile şir asincrone trebuie să fie mai rezistente decât cifrurile şir sincrone faţă

de atacurile bazate pe redundanţa textului în clar.

Majoritatea cifrurilor şir folosite în practică sunt proiectate folosind Linear Feedback

Shift Registers (LFSR) [55], [56], [62], [71], [74] care sunt simplu de implementat software sau

hardware. În structura LFSR se regăsesc următoarele elemente: de întârziere (bistabili D), de

adunare modulo 2, de multiplicare scalară modulo 2.

Problema este că aceste implementări sunt ineficiente din punct de vedere al vitezei.

Pentru a rezista atacului de corelaţie, funcţia de feedback trebuie să fie un polinom dens, ceea ce

Page 41: Aureliu Zgureanu - Codari Informatice

41

presupune multe calcule, care produc la ieşire un singur bit, deci trebuie repetate des. Totuşi, cele

mai multe sisteme de criptare militare se bazează pe LFSR [13].

O metrică importantă folosită pentru a analiza generatoarele bazate pe LFSR este

complexitatea liniară, definită ca fiind lungimea n a celui mai scurt LFSR care poate produce

ieşirea generatorului. Orice şir generat de o maşină de stare finită peste un câmp finit are o

complexitate liniară finită. [93]. Complexitatea liniară este importantă deoarece un algoritm

simplu, Berlekamp-Massey, poate genera LFSR-ul de definiţie examinând doar 2n biţi din cheie,

ceea ce însemnă spargerea cifrului şir.

Concluzia este că o complexitate liniară ridicată nu înseamnă neapărat un generator sigur,

dar o complexitate liniară scăzută indică un generator fără securitate.

Criptografii încearcă să obţină o complexitate liniară ridicată prin combinarea ieşirilor

mai multor LFSR-uri într-un mod nonliniar. Pericolul este ca unul sau mai multe şiruri generate

interne – de obicei ieşiri ale LFSR-urilor individuale să fie corelate cu şirul combinat, ceea ce

permite un atac bazat pe algebra liniară numit atac de corelaţie. [70]. Thomas Siegenthaler a

arătat că imunitatea de corelare poate fi precis definită şi că există o legătură între aceasta şi

complexitatea liniară [45]. Ideea de bază a atacului de corelaţie este identificarea unor corelaţii

între ieşirea generatorului şi ieşirea uneia din componentele sale interne. Apoi, observând şirul

de ieşire, se pot obţine informaţii despre ieşirea internă. Folosind aceste informaţii şi alte

corelaţii se colectează informaţii despre celelalte ieşiri interne ale generatorului, până când acesta este

spart în totalitate.

Printre cifrurile de tip şir mai frecvent utilizate se numără cifrurile A5, RC4, RC5 [91], FISH etc.

Cifrul A5 [109 ]este un cifru şir folosit pentru a cripta fluxul de date GSM (Group

Special Mobile), reprezentând standardul non-american pentru telefonia mobilă celulară. A5

criptează linia dintre telefon şi celula de bază, restul legăturii rămânând necriptată. A5 este

format din trei LFSR-uri, care au registre de lungime 19, 22 şi respectiv 23. Toate polinoamele

de feedback sunt cu un număr redus de coeficienţi. Ieşirea este obţinută prin operarea XOR a

celor trei LFSR-uri. A5 foloseşte un clock control variabil. Fiecare registru face un clocking

bazat pe bitul central, care este operat XOR cu inversa funcţiei prag (threshold function) a biţilor

de la mijlocul celor trei registre. În mod normal, două din LFSR-uri sunt clock-ate la fiecare

iteraţie.

Există un atac trivial care necesită 240 criptări: se ghiceşte conţinutul primelor două

LFSR-uri, apoi se determină al treilea din şirul generat [45]. În ciuda acestui fapt, A5 este bine

proiectat şi este extrem de eficient. El trece cu succes toate testele statistice cunoscute şi singura

sa slăbiciune rezidă în faptul că registrele sunt scurte, ceea ce face posibilă o căutare exhaustivă.

Variantele A5 cu registre lungi şi polinoame feedback dense au un grad de siguranţă sporit.

Page 42: Aureliu Zgureanu - Codari Informatice

42

Cifrul RC4 este un cifru şir cu cheie de lungime variabilă, dezvoltat în 1987 de către Ron

Rivest pentru RSA Data Security [121]. În 1994 codul sursă al algoritmului este făcut public pe

Internet. RC4 este un algoritm simplu de descris: şirul cheie este independent de textul în clar.

Funcţionează în baza “cutiilor-S”: S0, S1, ..., S255. Intrările sunt permutări ale numerelor de la 0 la

255, iar permutarea este o funcţie de o cheie de lungime variabilă. Există doi indici, i şi j,

iniţializaţi cu zero. Pentru a genera un octet aleator se procedează astfel:

i = (i + 1) mod 256; j = (j + Si) mod 256; T = Si; Si = Sj; Sj = T; t = (Si + Sj) mod 256; K = St .

Octetul K este operat XOR cu textul în clar pentru a produce text cifrat sau operat XOR

cu textul cifrat pentru a obţine textul în clar. Criptarea este aproape de 10 ori mai rapidă decât

DES-ul.

Iniţializarea “cutiilor-S” este simplă. Se iniţializează liniar: S0 = 0, S1 = 1, …, S255 = 255

şi un alt vector de 256 de octeţi cu cheia, repetând cheia, dacă este necesar, pentru a completa

vectorul cu componentele: K0, K1, …, K255.

j = 0; For i = 0 to 255: j = ( j + Si + Ki ) mod 256; se schimbă Si cu Sj între ele.

Nu există rezultate publice ale criptanalizei. Se crede ca algoritmul este imun la analiza

diferenţială şi liniară; RC4 poate fi în aproximativ 21700 stări posibile. “Cutiile-S” evoluează lent

în timpul întrebuinţării: i asigură că fiecare element se schimbă, iar j că aceste schimbări sunt

aleatoare. RC4 are un statut special de export, acesta fiind permis doar pentru chei de până la 40

de octeţi. Acest algoritm este implementat în multe produse comerciale, dintre care Lotus Notes

şi Oracle Secure SQL.

În sistemele simetrice de criptare, Alice şi Bob îşi aleg o cheie secretă k care defineşte

regulile de criptare ek şi decriptare dk. În aproape toate cazurile ek şi dk coincid sau se pot deduce

imediat una din alta. Un punct slab al sistemelor cu cheie privată este acela că necesită o

comunicare prealabilă a cheii între Alice şi Bob printr-un canal sigur, înainte de transmiterea

mesajului criptat. Practic, în condiţiile cererii tot mai mari de securizare a comunicaţiilor, acest

lucru este din ce în ce mai dificil de realizat. Astfel a apărut necesitatea de a crea sisteme care au

alt concept de transmitere a cheii.

1.6. Algoritmi cu chei publice

Conceptul de criptografie cu chei publice a fost inventat de Whitfield Diffie şi Martin

Hellman [38], [40]. Contribuţia lor constă în propunerea de a folosi un nou criptosistem în care

cheile de criptare şi decriptare sunt diferite, iar cheia de decriptare (care este secretă) nu poate fi

dedusă din cheia de criptare (care este publică). În anul 1976 conceptul a fost prezentat în

premieră la National Computer Conference SUA, iar câteva luni mai târziu lucrarea a fost

publicată [38].

Page 43: Aureliu Zgureanu - Codari Informatice

43

Sistemele cu cheie publică au un mare avantaj faţă de sistemele cu chei secrete: oricine

poate transmite un mesaj secret utilizatorului (cunoscându-i cheia publică), iar mesajul rămâne

protejat faţă de interceptor. Cu un sistem cu cheie convenţională, o cheie separată secretă este

necesară pentru fiecare pereche de utilizatori.

Într-un mediu privat, canalul este protejată împotriva accesului din exterior. În general,

un sistem cu n utilizatori necesită 2

)1( nn chei, pentru ca oricare pereche de utilizatori să poată

comunica între ei şi mesajele lor să rămână secrete faţă de ceilalţi utilizatori. Numărul de chei

creşte rapid o dată cu numărul de utilizatori; generarea, distribuirea şi menţinerea securităţii

cheilor constituie o problemă datorită numărului lor mare.

Într-un sistem cu cheie publică, un utilizator deţine două chei: o cheie publică şi o cheie

privată. Utilizatorul îşi poate face cunoscută oricui cheia publică. Fie kpriv cheia privată şi kpub

cheia publică corespunzătoare. Atunci:

p=d(kpriv, e(kpub, p)).

Utilizatorul poate decripta cu cheia privată ceea ce oricine altcineva a criptat cu cheia publică

corespunzătoare.

Cu al doilea algoritm de criptare cu cheie publică

p=d(kpub, e(kpriv, p))

utilizatorul poate cripta un mesaj cu cheia privată, iar mesajul poate fi decriptat doar cu cheia

publică corespunzătoare.

Aceste două proprietăţi presupun că cele două chei, publică şi privată, pot fi aplicate în

orice ordine (sistemul RSA nu face distincţie între cheia publică şi cheia privată; orice cheie din

perechea de chei poate fi folosită fie ca cheie publică, fie ca cheie privată).

Unul dintre primii algoritmi de acest fel este Algoritmul Merkle-Hellman [74], [121].

Ralph Merkle şi Martin Hellman au dezvoltat un algoritm de criptare bazat pe problema

rucsacului, o problemă NP-completă, care a fost publicat în anul 1978 [66], [67]. Problema

rucsacului conţine o mulţime de întregi pozitivi şi o sumă ţintă, şi constă în găsirea unei

submulţimi de întregi a căror sumă coincide cu suma ţintă.

Ideea pe care se bazează schema rucsacului Merkle-Hellman este codificarea unui mesaj

binar ca o soluţie la o problemă a rucsacului, reducând mesajul în text cifrat la suma ţintă

obţinută prin adunarea termenilor corespunzători valorilor de 1 din şirul binar.

Un rucsac este reprezentat ca un vector de numere întregi în care ordinea termenilor este

foarte importantă. Există două tipuri de rucsacuri: unul simplu, pentru care există un algoritm

rapid (în timp liniar) şi unul complicat, obţinut din cel simplu prin modificarea elementelor sale.

Modificarea este astfel proiectată încât o soluţie cu elementele oricărui rucsac este de asemenea

Page 44: Aureliu Zgureanu - Codari Informatice

44

soluţie pentru celălalt. Această modificare se numeşte trapă, permiţând utilizatorilor legitimi să

rezolve problema simplu. Deci, problema generală este NP-completă, dar există o versiune

restrânsă care are o soluţie foarte rapidă.

Algoritmul începe cu o mulţime de întregi în care fiecare element este mai mare decât

suma predecesorilor săi. Să presupunem că avem un şir în care fiecare element ak este mai mare

decât a1+a2+...+ak-1. Dacă o sumă este între ak şi ak+1, trebuie să-l conţină pe ak, deoarece nici o

combinaţie de termeni a1, a2, ..., ak-1 nu pot produce un total mai mare decât ak. Analog, dacă o

sumă este mai mică decât ak, evident nu îl va conţine ca termen pe ak.

Modificarea algoritmului schimbă elementele mulţimii din problema simplă a rucsacului,

prin alterarea acestei proprietăţi de ordonare crescătoare într-un fel care păstrează soluţia.

Modificarea se realizează prin înmulţire cu o constantă modulo n.

Problema rucsacului presupune un şir a1, a2, ..., an de întregi şi o sumă ţintă T. Problema

este de a găsi un vector de valori 0 şi 1 astfel încât suma întregilor asociaţi cu 1 să dea T. Deci,

dându-se S=[a1, a2, ..., an], şi T, să se găsească un vector V cu valori 0 şi 1 astfel încât:

n

iii Tva

1

.

Rezolvarea se face considerând fiecare întreg din S ca participând la T şi reducând

problema corespunzător. Când o soluţie nu produce suma ţintă, se elimină întregul ales iniţial şi

se continuă cu următorul. Acest back-traking deteriorează viteza soluţiei.

Să presupunem problema rucsacului cu o restricţie suplimentară: întregii din S formează

un şir supercrescător, adică unul în care fiecare întreg este strict mai mare decât suma

predecesorilor săi. Atunci, orice întreg ak satisface relaţia

1

1

k

jjk aa .

Soluţia rucsacului supercrescător (numit şi rucsacul simplu) este uşor de găsit. Se începe

cu T, care se compară cu cel mai mare întreg din S. Dacă acesta este mai mare decât T, nu este

termen al sumei, deci valoarea corespunzătoare din V este 0. Dacă acest cel mai mare întreg din S

este mai mic sau egal cu T, el este termen al sumei, deci valoarea corespunzătoare din V este 1.

Reluăm algoritmul pentru T din care scădem sau nu termenul analizat (conform cu valoarea din

V) şi pentru întregii rămaşi.

Tehnica de criptare Merkle-Hellman este un sistem de criptare cu cheie publică. Fiecare

utilizator are o cheie publică, care poate fi distribuită oricui şi o cheie privată, care se păstrează

secretă. Cheia publică este mulţimea întregilor din problema rucsacului (nu unul supercrescător);

cheia privată este rucsacul supercrescător corespondent. Contribuţia lui Merkle şi Hellman a fost

Page 45: Aureliu Zgureanu - Codari Informatice

45

să proiecteze o tehnică de conversie a rucsacului supercrescător într-unul normal, prin

schimbarea numerelor de o manieră reversibilă.

Un alt criptosistem bazat pe o problemă dificilă este Algoritmul RSA, numit astfel după

inventatorii săi, Rivest, Shamir şi Adelman. A fost publicat în 1978 [90] şi rămâne un algoritm

foarte folosit şi astăzi, în ciuda eforturilor criptanaliştilor de a-l sparge.

Algoritmul de criptare RSA incorporează rezultate din teoria numerelor [64], combinate

cu dificultatea determinării factorilor primi pentru un număr ţintă. Ca în cazul algoritmului

Merkle-Hellman şi algoritmul RSA operează cu aritmetica modulo n. Un bloc în text clar este

tratat ca un întreg, iar pentru criptare şi decriptare se folosesc două chei, e şi d, care sunt

interschimbabile. Blocul de text clar P este criptat ca Pe mod n. Deoarece exponenţierea este

modulo n, este foarte dificil să se factorizeze Pe pentru a descoperi textul original. Pentru

aceasta, cheia de decriptare d este astfel aleasă încât (Pe)d = P mod n. Astfel P este regăsit fără a

fi necesară descompunerea în factori primi a lui Pe.

Problema pe care se bazează algoritmul de criptare este cea a factorizării numerelor mari.

Problema factorizării nu se cunoaşte a fi NP-completă; cel mai rapid algoritm cunoscut este

exponenţial în timp.

Cu algoritmul RSA, mesajul în text clar p este criptat în, mesajul în text cifrat c prin

intermediul cheii de criptare e:

c = pe mod n.

Mesajul în text clar este regăsit cu ajutorul cheii de decriptare d:

p = cd mod n.

Din cauza simetriei din aritmetica modulară, criptarea şi decriptarea sunt mutual inverse

şi comutative:

p = cd mod n = (pe)d mod n = (pd)e mod n.

Cheia de criptare constă în perechea de întregi (e, n), iar cheia de decriptare este (d, n).

Punctul de plecare în găsirea cheilor pentru acest algoritm este selectarea unei valori pentru n.

Valoarea lui n trebuie să fie suficient de mare, dată de un produs a două numere prime p şi q.

Atât p cât şi q trebuie să fie ele însele suficient de mari. În mod obişnuit, p şi q au aproximativ

100 de cifre fiecare, astfel încât n are aproximativ 200 de cifre. Această lungime inhibă

încercarea de a factoriza pe n, pentru a afla pe p şi pe q [122].

În continuare, se alege un întreg e relativ mare, astfel încât e este relativ prim cu

(p–1) · (q–1). Satisfacerea acestei condiţii se face alegându-l pe e ca un număr prim mai mare

decât p–1 şi q–1. În final, se alege d astfel încât:

e · d 1 mod (p–1) · (q–1).

Page 46: Aureliu Zgureanu - Codari Informatice

46

Funcţia lui Euler (n) este numărul întregilor pozitivi mai mici decât n care sunt relativ

primi cu n. Dacă p este prim, atunci:

(p) = p–1

Dacă n = p · q, unde p şi q sunt ambele prime,

(n) = (p) · (q) = (p–1) · (q–1)

Identitatea Euler-Fermat afirmă că :

x (n) 1 mod n

pentru orice întreg x, dacă n şi x sunt reciproc prime.

Să presupunem că mesajul în text clar p este criptat cu algoritmul RSA, astfel încât

e(p)=pe. Trebuie să fim siguri că putem decripta mesajul. Valoarea e este astfel aleasă încât

inversa sa d să poată fi găsită uşor. Deoarece e şi d sunt inverse modulo (n),

e · d 1 mod (n) sau e · d = k · (n) + 1

pentru anumiţi întregi k.

La implementarea practică a algoritmului, utilizatorul algoritmului RSA alege numerele

prime p şi q, din care se obţine n=p·q. Apoi alege e, relativ prim la (p–1)·(q–1), de obicei un

număr prim mai mare decât p–1 şi decât q–1. În final, d se calculează ca inversul lui e mod (n).

Utilizatorul distribuie e şi n, şi păstrează cheia d secretă; p, q şi (n) pot fi ignorate, dar

nu făcute publice. Chiar dacă se ştie că n este produsul a două numere prime [64], [66], [67],

[113], datorită mărimii sale – peste 200 de cifre, nu va fi posibil să se determine factorii p şi q, şi

nici cheia privată, d din e. De asemenea, verificarea că p şi q sunt prime, presupune luarea în

considerare a 1050 factori.

La momentul actual în RSA se utilizează numere prime găsite prin intermediul

algoritmilor probabilistici [123], cel mai performant fiind testul Miller-Rabin. El este considerat

suficient de bun pentru generarea numerelor prime aplicate în criptografie, însă există o foarte

mică probabilitate ca acest test să genereze un număr compus, ceea ce implică urmări

imprevizibile pentru utilizatorii algoritmului RSA.

Teoretic sunt trei posibilităţi de abordare a unui atac în cazul algoritmului RSA: atacul în

forţă, atacul bazat pe metode matematice (încercarea factorizării produsului a două numere prime

mari) şi atacul temporal. Analiza acestor atacuri duce la concluzia că nici unul nu are sorţi de

izbândă. În pofida unor intense cercetări, au fost identificate doar probleme minore în comparaţie

cu cele din cazul algoritmului rucsacului a lui Merkle şi Hellman.

Aceştia sunt algoritmii de bază utilizaţi în criptografia modernă şi care au un fundament

pur matematic. Însă în ultima perioadă sunt efectuate încercări, şi unele dintre ele cu succes, de a

implementa în algoritmii de criptare şi performanţele fizicii moderne, în deosebi cele din fizica

cuantică.

Page 47: Aureliu Zgureanu - Codari Informatice

47

1.7. Criptarea cuantică

Criptarea cuantică este o abordare bazată pe fizica cuantică pentru a realiza comunicaţii

securizate. Spre deosebire metodele de criptografie tradiţionale, care folosesc diverse metode

matematice pentru a împiedica interceptarea şi decodificarea mesajului, criptarea cuantică se

bazează pe legile fizicii în ceea ce priveşte transmiterea informaţiei. Interceptarea poate fi văzută

ca o măsurare a unui obiect fizic – în acest caz purtătorul de informaţie. Folosind fenomene

cuantice cum ar fi suprapunerea cuantică sau legătura cuantică, se poate proiecta şi implementa

un sistem de comunicaţie care să evite întotdeauna interceptarea. Aceasta este din cauză că

măsurările efectuate asupra unui purtător cuantic îi modifică proprietăţile şi astfel rămân „urme”

ale interceptării [5].

Dispozitivele care folosesc criptarea cuantică utilizează fotoni individuali, şi se bazează

fie pe principiul lui Heisenberg sau pe principiul legăturii cuantice.

Actul de a măsura este o parte integrantă a mecanicii cuantice, nu doar un proces extern şi

pasiv, ca în cazul fizicii clasice. Este deci posibil să se codeze informaţia în anumite proprietăţi

ale fotonului, astfel încât orice efort de a le monitoriza le modifică într-un mod uşor de detectat.

Acest efect apare din cauză că în teoria cuantică, anumite perechi de proprietăţi fizice sunt

complementare, în sensul că măsurarea uneia dintre aceste proprietăţi o modifică pe cealaltă.

Acest fenomen este cunoscut ca principiul incertitudinii al lui Heisenberg. Cele două proprietăţi

complementare care sunt des folosite în criptarea cuantică sunt cele două tipuri de polarizare a

fotonului, de exemplu liniară (vertical/orizontal) sau diagonală (la 45 si 135 de grade).

Legătura este o stare a două sau mai multe particule cuantice (de exemplu fotoni) în care

multe din proprietăţile lor fizice sunt puternic corelate. Particulele legate nu pot fi descrise

specificând stările individuale ale particulelor, deoarece acestea pot să conţină informaţie într-un

mod care nu poate fi accesat prin experimente făcute asupra vreuneia dintre ele în particular.

Acest fenomen se produce indiferent de distanţa dintre particule.

Pe baza acestor două proprietăţi neintuitive ale mecanicii cuantice (incertitudinea şi

legătura), au fost inventate două tipuri de protocoale de criptare cuantică. Primul foloseşte

polarizarea fotonilor pentru a codifica biţii de informaţie şi se bazează pe natura aleatoare a

fizicii cuantice pentru a evita interceptarea mesajului. Al doilea foloseşte fotoni legaţi pentru a

codifica biţi, şi se bazează pe faptul că informaţia apare doar după măsurători făcute de părţile ce

comunică.

Protocoalele de criptare cuantică au proprietăţi la care nu se poate ajunge prin metodele

tradiţionale de criptare. Cei doi agenţi care comunică pot genera şi interschimba chei aleatorii

care sunt foarte similare - în condiţii ideale ar trebui sa fie identice, dar în realitate va exista o

Page 48: Aureliu Zgureanu - Codari Informatice

48

anumită rată a erorii. De asemenea aceste protocoale permit estimarea nivelului de interceptare a

comunicaţiei, şi se poate deduce cât din cheile lor aleatorii este cunoscut de o terţa parte. Aceste

rezultate sunt interesante, dar nu suficiente pentru a rezolva problema interschimbării cheilor.

Interceptarea chiar a unei mici părţi din chei poate avea efecte semnificative: o terţă parte poate

sa citească o bucată (poate critică) a mesajului secret. Din cauza faptului că erorile şi zgomotul

de fond nu pot fi evitate în totalitate, nu se poate garanta ca nici o cheie nu a fost interceptată -

erorile de comunicaţie şi încercările de interceptare nu pot fi deosebite, aşa că se poate presupune

că în cazul cel mai defavorabil, toate erorile se datorează interceptării mesajului.

În criptarea cuantică, atacul tradiţional cu „intermediar” este imposibil din cauza

principiului incertitudinii [65]. Orice interceptare a fotonilor duce inevitabil la modificarea

proprietăţilor lor, dacă se foloseşte un detector incorect. De asemenea nu se pot reemite

electronii, deoarece asta ar duce la erori inacceptabile. În cazul folosirii metodei de criptare cu

electroni legaţi, ei sunt aproape imposibil de interceptat, deoarece crearea a trei electroni legaţi ar

slăbi „legătura” atât de mult încât acest lucru s-ar detecta imediat. Atacul cu „intermediar” nu

poate fi folosit pentru ca ar fi nevoie de măsurarea unui electron legat, ceea ce l-ar modifica şi pe

celalalt, urmată de reemiterea ambilor fotoni, lucru imposibil după legile mecanicii cuantice. Din

cauza faptului că o linie de fibră optică e necesară între cei doi agenţi care folosesc criptarea

cuantică, întreruperea comunicaţiei poate fi făcută foarte uşor tăind linia sau, mai discret,

încercând interceptarea informaţiei transmise. Dacă se poate interveni în echipamentul folosit,

s-ar putea modifica astfel încât cheile generate să nu mai fie sigure, ajungându-se astfel la un

atac cu generator de numere aleatoare. Atacul cu „intermediar” (în engleză man-in-the-middle

attack) poate fi totuşi folosit în cazul criptării cuantice, dacă intermediarul se „prezintă” fiecărei

părţi autorizate ca fiind cealaltă; după aceea, tot ce trebuie să facă este să respecte protocolul de

transmisie a datelor, făcând schimb de chei cu cei doi agenţi autorizaţi. Acest fel de atac poate fi

evitat prin folosirea unei metode de autentificare prin care cele doua parţi se pot recunoaşte.

Criptarea cuantică a fost propusă pentru prima oară de Stephen Wiesenr, pe atunci la

Universitatea „Columbia” din New York, când, la începutul anilor 70, a introdus un concept de

codare cu conjugată cuantică. Lucrarea sa intitulată ”Conjugate Coding” a fost respinsă de

Comisia de Teoria Informaţiei a IEEE, dar a fost in cele din urmă publicată în 1983 în SIGACT

News. El arată cum se poate reţine sau transmite două mesaje codate in două „observabile

conjugate”, cum ar fi polarizarea liniară sau circulară a luminii, astfel încât oricare dintre ele, dar

nu amândouă, pot fi recepţionate şi decodificate. El şi-a ilustrat ideea cu un proiect de bancnote

care nu pot fi falsificate. Un deceniu mai târziu, pe baza acestei lucrări, Charles H. Bennett, de la

Centrul de Cercetare „Thomas J. Watson” al IBM, şi Gilles Brassard, de la Universitatea din

Montréal, au propus o metodă de comunicaţie securizată bazată pe observabilele conjugate ale

Page 49: Aureliu Zgureanu - Codari Informatice

49

lui Wiesener. În 1990, în mod independent şi fără să fie la curent cu lucrările precedente, Artur

Ekert, pe atunci doctorand la Universitatea din Oxford, a folosit o abordare diferită bazată pe

proprietatea de „Entanglement cuantic”.

Stările legate sunt rareori destul de stabile pentru a putea fi folosite în aplicaţii

comerciale, care sunt astfel limitate (cel puţin deocamdată) la aproximativ 100 de kilometri. Se

studiază totuşi folosirea sateliţilor pentru transmiterea stărilor legate, pentru că în afara

atmosferei perturbaţiile ar fi mult reduse.

Dispozitive comerciale bazate pe criptarea cuantică au apărut, şi pot înlocui cu succes

protocoale cum ar fi schimbul de chei Diffie-Hellman în aplicaţiile care au nevoie de maximum

de securitate posibil. Dezavantaje ale acestei tehnologii, care fac ca ea să nu fie larg răspândită,

sunt costul echipamentelor şi al liniei de fibră optică dedicată, ca şi necesitatea de a avea

încredere în firma producătoare, ceea ce nu este cazul dacă se folosesc tehnologiile curente,

bazate pe software liber şi calculatoare standard, ca şi lipsa vreunei vulnerabilităţi majore a

acestor tehnologii. Existenţa unor mijloace de stocare a datelor de mare capacitate şi relativ

ieftine face ca transmiterea unor cantităţi mari de date sensibile să poată fi făcută prin curier;

aceste date pot să reprezinte chei folosite în cadrul unui algoritm cum ar fi AES.

Bruce Schneier, expert în domeniul criptologiei, este de părerea că implementarea

reţelelor înzestrate cu tehnologia criptării cuantice este „practic lipsită de sens” fiind aplicată în

practică. În octombrie 2008 în Austria a fost pusă în funcţie prima reţea cuantică, despre care

Schneier a scris în revista Wireed că implementarea acestor tipuri de reţea nu va schimba nimic

din punct de vedere al securităţii informaţionale. „Ideea de bază, în teorie, este la fel de tare pe

cât de lipsită de sens în viaţa reală”. „Chiar şi cifrarea cuantică nu va rezolva toate problemele

criptografice. Cheia se transmite cu fotoni, însă în baza procesului de cifrare rămâne acelaşi

algoritm matematic”. Schneier a remarcat că veriga cea mai slabă a oricărei reţele sunt punctele

finale ale reţelei şi nu momentul de transmitere a datelor. Criptarea cuantică nu propune soluţii

pentru izvorul tuturor problemelor. „Asta e acelaşi lucru ca şi cum te-ai apăra de atacatori cu un

stâlp bătut în pământ. E inutil de discutat despre înălţimea lui necesară – 15 sau 30 de metri,

deoarece atacatorul pur şi simplu îl vor ocoli”.

Page 50: Aureliu Zgureanu - Codari Informatice

50

1.8. Concluzii la Capitolul 1

Criptografia modernă utilizează două tipuri de sisteme de criptare: sistemele cu cheie

privată şi sisteme cu chei publice. La baza oricărui tip de sistem de cripatre se află o teorie

matematică bine fundamentată, în funcţie de care sistemul poate fi utilizat într-un scop sau altul.

Astfel, la elaborarea sistemelor de criptare, sunt aplicate cele mai noi rezultate ştiinţifice

din teoria nnumerelor, teoria informaţiei, teoria complexităţii, teoria probabilităţilor şi statistica

mateamtică, matematica disretă, teoria grupurilor etc.

Totodată este în continuă dezvoltare şi Criptanaliza, care le fel utilizează cele mai

performante rezultate ştiinţifice pentru a găsi părţile slabe ale algoritmilor de criptare elaboraţi de

criptologi. Dezvoltarea vertiginoasă a tehnicii de calcul accelerează ambele aceste procese.

Deoarece unicul cifru perfect este cifrul aleator Vernam [105] (iar implementarea lui practică nu

este posibilă la momentula actual), concurenţa între aceste două ramuri ale Criptoliogiei va da

naştere la noi algoritmi de cripatre şi va necesita perfecţionarea continuă a sistemelor utilizate.

Luând în consideraţie necesitatea asigurării unui grad înalt de securitate a informaţiei,

nivelul actual de dezvoltare a sistemelor de criptare şi problemele legate de utilizarea acestora,

precum şi încercările multiple ale „răuvoitorilor” de a sparge aceste sisteme, cercetătorii în

domeniu continuă investigaţiile în privinţa perfecţionării şi elaborării de algoritmi noi de

criptare. În viitor se va lucra tot mai mult în scopul creării sistemelor de criptare cu următoarele

particularităţi:

a) utilizarea cheilor variabile fără mărirea lungimii lor;

b) substituirea operaţiilor cu numerele mari prin operaţii asupra sistemelor de funcţii logice;

O cale de atingere a acestui scop ar fi aplicarea proprietăţilor mulţimilor de relaţii multi-

are şi a matricelor multidimensionale.

Page 51: Aureliu Zgureanu - Codari Informatice

51

2. MULŢIMI DE RELAŢII MULTI-ARE. MATRICE

MULTIDIMENSIONALE

În acest capitol este prezentată baza teoretică a algoritmilor de criptare elaboraţi în teză.

Sunt demonstrate o serie de teoreme referitoare la mulţimi de relaţii multi-are şi la aplicaţii ale

lor, în special cele refiritoare la distribuirea numerelor prime în mulţimea numerelor naturale şi

cele ce se referă la unele proprietăţi ale funcţiilor booleene care permit efectuarea mai eficientă a

operaţiilor cu aceste funcţii. Rezulattele obţinute de autor şi descrise în capitolul 2 se bazează pe

unele lucrări ale dlui M. Bulat, [14], [16], [17], [18], [21], [115], [118], şi ale dlui S. Cataranciuc

[26], [27], [28]. Pornind de la lucrările dlui M. Bulat şi ale dlui S. Cataranciuc, autorul a obţinut

mai multe rezultate importante, care au stat la baza fundamentării teoretice ale metodelor de

criptare elaborate. Printre rezultatele de bază ale acestui capitol, obţinute de către autor, se

numără teoremele 2.6–2.10 şi 2.14 – 2.16, precum şi algoritmul determinist de generare a

numerelor prime.

2.1. Relaţii pe mulţimi. Mulţimi de relaţii.

Fie date două mulţimi finite },...,,{ 21 mxxxX si },...,,{ 21 nyyyY .

Definiţia 2.1. O relaţie binară de la X la Y (se notează XYR sau YX ) se numeşte o

submulţime a produsului cartezian )}.,(...,),,(),,{( 2111 nm yxyxyxYX

Relaţia poate fi reprezentată printr-o matrice bidimensională

mnmjm

iniji

nj

nmij

aaa

aaa

aaanj

m

iaA

1

1

1111

11

)( , unde

.),(dacă,0,),(dacă,1

XYji

XYjiij Ryx

Ryxa

Liniilor şi coloanelor li se asociază numai indicii elementelor, adesea – însăşi elementele.

Această matrice poate fi scrisă şi în o altă formă:

XY ija

A=

mn

ij

11

mn

ij

a

a

a

11

Page 52: Aureliu Zgureanu - Codari Informatice

52

În funcţie de problema care se rezolvă vom folosi una dintre aceste forme de reprezentare a

matricelor date.

Făcând analogie cu definiţia matricelor bidimensionale obişnuite şi în conformitate cu

[124] definim matricea multidimensională în felul următor:

Definiţia 2.2. Un sistem A de pA nnnnN ...321 elemente piiiia ...321 ( ;,...,3,2,1 ni

p,...,3,2,1 ) ce aparţin mulţimii , plasate în punctele spaţiului p-dimensional şi determinate

de coordonatele ,...,,, 21 piii se numeşte matrice multidimensională peste mulţimea . Numărul

p arată numărul de indici în notarea elementelor matricei şi se numeşte dimensiunea matricei.

Mărimea AN arată numărul total de elemente în matricea dată. Mărimea n a indicelui i arată

câte valori (de la 1 la n ) parcurge acest indice.

Aşadar, în lucrarea de faţă, matricea multidimensională este o generalizare directă a

matricei obişnuite bidimensionale.

Prin analogie cu relaţia binară definim relaţia n-ară între n mulţimi },...,,{1112111 mxxxX ,

},...,,{2222212 mxxxX , ..., },...,,{ 21 nnmnnn xxxX ca o submulţime a produsului cartezian

,...21 nXXX notată prin nXXXR ...21[108], [109],. Deci ,...21...21 nXXX XXXR

n iar

elementele lui nXXXR ...21 reprezintă nişte cortegii de lungime n ),,...,,(

21 njjj xxx unde

.,1, niXx iji Matricea acestei relaţii este o matrice n-dimensională care are urătoarea formă:

nXXX 21 njjja ...21

nn mmjjjaA ...... 121)(

n

n

mmm

jjj

21

21

111

,

...

...

1...11

21

21

n

n

mmm

jjj

a

a

a

unde ,),...,,(ădac,0),...,,(ădac,1

...

......

2121

2121

21

nn

nn

nXXXjjj

XXXjjjjjj Rxxx

Rxxxa }.,...,1{},...,,...,1{ 11 nn mjmj

Aceasta matrice poate fi scrisa sub formă de matrice bidimensională [20] în felul următor

n

n

n

mmmmm

mm

mm

aaa

aaaaaa

A

...2...11...1

...22...211...21

...12...111...11

2111

2

2

....

.

Page 53: Aureliu Zgureanu - Codari Informatice

53

În caz general elementele matricei A pot fi de origine arbitrară. Fie },..,{ 1 m

mulţimea elementelor acestei matrice. Matricele tridimensionale pot fi reprezentate geometric în

spaţiul R3. O matrice tridimensională este reprezentată în Figura 2.1.

Fig. 2.1. Exemplu de matrice tridimensională

Această matrice reprezintă relaţia 321 XXXR între mulţimile },,,{ 1312111 xxxX

},{ 23,22212 xxxX şi },,{ 3332313 xxxX cu elementele din mulţimea }.,,{ TMO Ea

corespunde matricei din Tabelul 2.1 Într-o formă mai compactă matricea este reprezentată în

Tabelul 2.2.

Cu ajutorul matricelor multidimensionale putem reprezenta şi mulţimile de relaţii [17],

[24], [108], [109]. Fie o familie de mulţimi },...,{ 1 nXXX şi mulţimea },...,{ 1 m cu

elemente arbitrare. Pe această familie sunt definite k relaţii ,....1 jdjj XXj RR ,,1,2 kjnd j

}....,,2,1{...,,, 21 njjj d Elementele matricelor acestor relaţii aparţin mulţimii . Notăm prin R

M

T

O X1

X2

X3

1 2 3 4

1

2

1

2

3

M

M

T

O

O T

O

O M M O

O T T O

T

O

T

M

T O

M 3

Page 54: Aureliu Zgureanu - Codari Informatice

54

vectorul cu componentele jR , adică )...,,...,,( 1 kj RRRR

Acestui vector îi punem în

corespondenţă o matrice n-dimensională [108], [109], [110], [117]

)(RAR

, ( 2.1)

conform unei reguli indicate in Figura 2.2.

Tabelul 2.1. Mod de reprezentare

a matricei tridimensionale

Tabelul 2.2. Mod de reprezentare

a matricei tridimensionale

A

1X 2X 3X 321 jjja

444444333333222222111111

222111222111222111222111

321321321321321321321321

OTMMOTTOMOTMTMOMTOOMTMOT

3X

21 XX 321

A

2414231322122111

OTMMOTTOMOTMTMOMTOOTMMOT

În Figura 2.2 jRA este matricea unei relaţii

acb XXXj RR din mulţimea de relaţii, iar

acb iiiij rr – un element al acestei matrice. În aşa mod elementele matricei n-dimensionale care

Page 55: Aureliu Zgureanu - Codari Informatice

55

reprezintă mulţimea de relaţii sunt vectorii ),,...,,...,( 1 ikijii rrrr ui ,1 componentele cărora

sunt elemente ale matricelor relaţiilor între mulţimile familiei X. În acelaşi timp componentele

vectorilor sunt şi elemente ale mulţimii },...,{ 1 m . Notăm elementele acestei mulţimi în

conformitate cu substituţia

110

21

mm

. În rezultatul acestei substituţii vectorului ir

i

se pune în corespondenţă un număr niia ...1 în baza m. Trecându-l în baza 10 obţinem

niia ...1=

k

j

jkij mr

1

, ui ,1 (2.2)

Astfel, transformarea )(RAR

pune în corespondenţă mulţimii de relaţii R

un cortegiu

),...,( ...1...11 1 nmmaaA

[108], [109], [110], adică

)(RA

(2.3)

ncba

ncba

ncba

R

uuuuuu

iiiiii

XXXXX

A

1

1

1

.......

.......111111

ukuju

ikiji

kj

rrr

rrr

rrrkj

1

1

1111

1

n

n

n

uu

ii

ii

a

a

aa

...

...

1...1

...

1

1

1

Figura 2.2. Regula de corespiondenţă )(RAR

Reprezentarea mulţimilor de relaţii prin intermediul matricelor multidimensionale ne

permite să abordăm nu numai problema comprimării informaţiei, dar şi să efectuăm cu eficienţă

operaţii cu sisteme de mari dimensiuni [18]. În funcţie de elementele matricelor acestor relaţii

[24] şi ale mulţimii obţinem diferite cortegii A

. Transformarea inversa )(1 AR

nu este

univocă. Din această cauză cunoscând cortegiul A

nu este simplu de aflat cortegiul R

. Există

cazuri particulare în care problema dată se rezolvă şi aceasta implică unele aplicaţii practice [21].

Să analizăm unul dintre aceste cazuri. Se ştie [114] că „În orice şir de numere naturale,

care reprezintă o progresie aritmetică, în care raţia este reciproc primă cu primul termen, se

jRA

Page 56: Aureliu Zgureanu - Codari Informatice

56

conţine o mulţime infinită de numere prime” (teorema lui Legendre, care a fost demonstrată de

Dirichlet). Fie că componentele vectorului A

formează o partiţie din m progresii aritmetice cu

raţia m, cu primii termeni 0,1, ..., m–1 respectiv şi cu un număr de termeni egal cu 1nm . Adică

})1,...,12,1,1{...,},2,...,22,2,2{

},1,...,12,1,1{},0,...,02,0,0({

n

n

n

n

mmmmmmmmmm

mmmmmmmmA

Notăm mulţimile partiţiei prin 110 ,...,, nKKK şi construim o matrice bidimensională cu

liniile 1,0, miKi :

11211

222221121100200

1

2

1

0

n

n

n

n

m mmmmmm

mmmmmmmmmmmm

K

KKK

A

(2.4)

În acest caz matricea n–dimensională (2.3) se reprezintă prin matricea bidimensionala

(2.4), în care, conform teoremei lui Legendre, numerele prime sunt distribuite numai pe unele

dintre liniile acestei matrice. Acest fapt ne permite să construim numere prime cu anumite

proprietăţi, care sunt utile pentru elaborarea unor sisteme de criptare a informaţiei [16], [22].

Teorema 2.1. Numărul natural N aparţine liniei iK dacă şi numai dacă )(modmiN .

Demonstraţie. Fie .iKN Atunci există un aşa număr natural k încât .mkiN Aceasta

implică ,km

iN

ceea ce înseamnă că )(modmiN .

Reciproc, fie ).(modmiN Atunci există aşa număr natural k încât .km

iN

În acest caz

mkiN ceea ce implică iKN .

Teorema este demonstrată.

Teorema 2.2. Daca numărul natural 1N aparţine liniei iK iar numărul natural 2N aparţine liniei

jK atunci suma acestor numere 21 NN aparţimie liniei ))(mod( mjiK , iar produsul lor 21 NN –

liniei .))(mod( mjiK

Demonstraţie. Fie 1N aparţine liniei iK iar 2N aparţine liniei jK . În acest caz există două

numere naturale 1k şi 2k astfel încât mkiN 11 şi mkjN 22 , de unde rezultă că

Page 57: Aureliu Zgureanu - Codari Informatice

57

mkkjiNN )()( 2121 . Notăm 21 kkk . Atunci kmjiNN )(21 . Aceasta

înseamnă că ).)(mod(21 mjiNN Conform teoremei precedente avem:

.))(mod(21 mjiKNN

Produsul acest două numere mkjkijiNN )( 1221 . Notăm 12 jkikk . Atunci

kmjiNN 21 , de unde rezultă că ))(mod(21mjiNN , adică ))(mod(21 mjiKNN , ceia ce

trebuia de demonstrat.

Fie numărul m reprezentat în formă canonică ca produs de factori primi

kkpppm ...21

21 , unde ip sunt numere prime, ki ,1 , iar i – multiplicitatea respectivă a

factorului .ip Vom calcula raportul procentual al numărului de linii ale matricei A care conţin un

număr infinit de numere prime faţă de numărul total de linii. Conform teoremei lui Legendre

linia iK conţine un număr infinit de numere prime, dacă 1),( im , adică în cazul în care m şi i

sunt reciproc prime. Numărul acestor linii este egal cu funcţia lui Euler )(m . În cazul

investigat, conform [114], avem:

).11()...11()11()1()...1()1()...(2

21

11

21

211

121212121

kkkkk p

pp

pp

pppppppppp kkk

Atunci

....

)...(...

)1)...(1)(1(...

)11()...11()11()(

21

21

21

21

21

22

11

21

21

k

k

k

k

k

kk

pppppp

pppppp

pppp

pp

pp

p

mm

k

k

Vom nota cu raportul procentual căutat. Atunci

%100...

)1)...(1)(1(%100)(21

21

k

k

pppppp

mm (2.5)

În [114] această mărime este numită constanta structurală, care determina divizarea structurala a

mulţimii numerelor naturale în mulţimea de numere prime şi compuse. Din (2.5) se observă că

nu este în funcţie de i sau de numărul n de mulţimi pe care este definită matricea

n-dimensională. Acest raport procentual este în funcţie numai de divizorii simpli ip ai lui m.

Dacă m reprezintă un singur număr prim p, atunci numerele prime sunt repartizate pe toate liniile

matricei A. Linia 0K conţine un singur număr prim - numărul p. Pentru fiecare divizor ip al lui

m linia ipK conţine un singur număr prim – numărul ip .

Page 58: Aureliu Zgureanu - Codari Informatice

58

Aşadar, este adevărată următoarea teoremă:

Teorema 2.3. Dacă numărul natural m are următoarea formă canonică de produs de factori primi

kkpppm ...21

21 , atunci constanta structurală

%100...

)1)...(1)(1(

21

21

k

k

pppppp

În [114] este investigată (nu prin intermediul matricelor multidimensionale) repartizarea

numerelor prime în şirul natural de numere pentru 53290 2 m . În acest caz %6,26 .

Conform teoremei 2.1.3 aceeaşi valoare se obţine pentru .53230 m Odată cu creşterea

numărului de factori în m descreşte , iar cantitatea de numere pe fiecare linie creşte. Pentru

m = 2· 3 · 5 · 7 · 11 · 13 · 17 · 19 · 23 · 29 · 31 · 37 · 41 · 43 · 47 · 53 · 59 · 61 · 67 · 71 · 73 ·

79 · 83 · 89 se obţine %16,12 . Pentru m =6, n =3 obţinem matricea

21595897765352149488827670645852464034282216104213938781756963575145393327211592129286807468625650443832262014821191855549251210908478726660544842363024181260

5

4

3

2

1

0

837159534741292317115

32

7973676143373119137

KKKKKK

A

Pentru această matrice .326 m Numerele 1 şi 5 sunt reciproc prime cu 6. Prin

urmare liniile 1K şi 5K conţin un număr infinit de numere prime (pentru n ). 2K conţine un

singur număr prim – numărul 2, deoarece 2 este divizor al lui 6. Din aceeaşi cauză 3K conţine

numărul prim 3. Numerele prime sunt scrise cu cifre aldine. Pentru 53230 m doar pe 8

linii din 30 sunt distribuite numerele prime. Numerele prime sunt neuniform distribuite în şirul

de numere naturale. Adesea ne întâlnim cu problema determinării intervalelor cu o „densitate”

mai sporita a numerelor prime. Modificând vectorul R

putem modifica conţinutul liniilor fără a

schimba numărul de elemente a acestora. Pentru soluţionarea acestei probleme vom analiza

noţiunea de funcţie booleană în contextul noţiunii de relaţii între mulţimi.

Page 59: Aureliu Zgureanu - Codari Informatice

59

2.2. Reprezentarea funcţiilor booleene prin submulţimi de coloană.

2.2.1. Submulţimi de coloană. Proprietăţi. Tabelul submulţimilor de coloană ale funcţiilor

booleene

Considerăm funcţia ),...,,...,( 1 nxxxF căreia îi este caracteristic faptul că atât variabilele

nxxx ,...,,...,1 cât şi funcţia F nu pot lua decât doua valori distincte, 0 sau 1 [14], [107], [109],

[115], [116], [130]. Astfel de funcţie se numeşte funcţie booleană. Această funcţie este o relaţie

n-ară ,nXR unde }1,0{X şi poate fi reprezentată prin tabelul veridicităţii (Tabelul 2.3),

12,,1},1,0{ ni uui

Tabelul 2.3. Tabelul veridicităţii unei funcţii booleene

nxxx 1 ),...,( 1 nxxF

u

i

0

111

000

1

n

u

i

0

În cazul în care numărul de variabile este mare reprezentarea funcţiilor booleene cu

ajutorul tabelului veridicităţii este foarte dificilă. În acest caz se propune o altă formă de

reprezentare a funcţiei booleene, care simplifică operaţiile cu aceste funcţii.

Vom examina o altă reprezentare a funcţiei booleene. Conform [14], [115], [116], [118]

pe mulţimea },...,{ 1 nxxX construim partiţia }}.,...,{},,...,{{}~,~{ 1121 nxxxxXX Construim

două mulţimi: },..,,{1210

yyyY (formată din stările binare ce corespund variabilelor din 1~X )

şi Z },...,,{1210 nzzz (formată din stările binare, care corespund variabilelor din 2

~X ). Atunci

funcţia booleana ),...,(1 nxxF poate fi considerată o relaţie binară YZR între mulţimile Y şi Z cu

matricea

Page 60: Aureliu Zgureanu - Codari Informatice

60

mpmjm

ipiji

pj

m

i

pj

YZ

aaa

aaa

aaa

y

y

yzzz

R

0

0

00000

0

, 12 m , 12 np ,

ji,

.0),(ădac,0,1),(ădac,1

ji

jiij zyF

zyFa

Definiţia 2.3. Submulţimea jzF

S a mulţimii Y

}}1,0{,),(,:{ jiiizF

zyFYyyS j

se numeşte submulţime de coloană a funcţiei ),...,(1 nxxF pentru coloana jz .

Funcţia booleană poate fi reprezentata şi cu ajutorul tabelului submulţimilor de coloană

(Tabelul 2.4):

Tabelul 2.4. Tabelul submulţimilor de coloană ale unei funcţii booleene

0z … jz … pz

1F 01

zFS … jz

FS 1 … pz

FS 1

Este evident că jj zF

zF

SYS 10 \ . Din această consideraţie submulţimile jz

FS 0 nu sunt indicate

în Tabelul 2.4. Construim pe mulţimea Y partiţiile

xx ,...,1

[116]. De exemplu, în cazul în care

n=5 iar 3 obţinem:

},,,{~3211 xxxX },{~

542 xxX

},111,110,101,100,011,010,001,000{},,,,,,,{ 76543210 yyyyyyyyY

},,,{ 3210 zzzzZ }.11,10,01,00{

Construim partiţiile:

},,,;,,,{1

17654

0

132101yyyyyyyyx ,

},,,;,,,{1

27632

0

254102yyyyyyyyx ,

},,,;,,,{1

37531

0

364203yyyyyyyyx .

Page 61: Aureliu Zgureanu - Codari Informatice

61

Pentru simplitate în submulţimile de coloană şi în partiţii scriem în loc de elementele iy

numai indicii respectivi i. Conform [115], [116] notăm cu kji

m kji

(unde

},,...,2,1{,...,,..., nkji }1,0{,..., ki cu condiţiile )0(1i dacă ),...( 01iii mmx ) un bloc al

produsului partiţiilor .,...,ki xx De exemplu, pentru partiţiile de mai sus avem

}7,6;5,4;3,2;1,0{1,12,1

0,12,1

1,02,1

0,02,121

xx .

Aflăm toate produsele posibile (de 2, 3, ..., τ factori) ale partiţiilor .,...,1

xx Din fiecare

produs excludem blocurile care se întâlnesc în produse de un număr mai mic de partiţii.

Blocurile rămase împreună cu mulţimea }12,...,1,0{ alcătuiesc mulţimea de blocuri B [116].

Definiţia 2.4. Blocul kji

m kji

se numeşte bloc maximal al submulţimii

jzF

S dacă:

1) jzF

kji Skji

m

,

2) pentru orice Bdc

m dc

, astfel încât

kjim

dcm kjidc

,

are loc dc

m dc

jz

FS .

Conform [116] pentru argumentul ix introducem notaţia

.0dacă,

,1dacă,

ii

iii x

xx i

Din definiţia conjuncţiei variabilelor rezultă că

kx

ix ki

... =

.:},...,{dacă,0,:},...,{dacă,1

jj

jj

xkijxkij

(2.6)

Notăm cu },...,{ 11

kM şi },...,{ 10

mM mulţimile de stări binare ale variabilelor

funcţiei ),...,(1 nxxF pentru care 1~ F şi 0~

F respectiv.

Definiţia 2.5. Conjuncţia kjikji xxxU ...... care respectă condiţiile a) – c)

a) 1M pentru care 1)( U ,

b) pentru 0M are loc 0)( U ,

Page 62: Aureliu Zgureanu - Codari Informatice

62

c) pentru U~ care se obţine din U prin excluderea unei variabile arbitrare 0~ M

pentru care 1)~(~U ,

se numeşte termen minimal al funcţiei ),...,(1 nxxF :

Conform [115], [116], dacă kji

m kji

este bloc maximal al submulţimii

jzF

S atunci

kjikji xxxU ...... (2.7)

este termen minimal al funcţiei ),...,(1 nxxF , unde este un termen minimal al funcţiei

),...,( 1 nxxf pentru care jf zM 1 iar 0fM conţine stările binare tz pentru care se respectă

condiţia

tzF

kji Skji

m 1

. (2.8)

Dacă blocul maximal este compus din toate elementele mulţimii Y, adică are forma

12,...,2,1,0 (acest bloc nu conţine indici) atunci U . Prin urmare, U nu depinde de

variabilele xx ,...,1 .

Dacă condiţia tzF

kji Skji

m 1

se îndeplineşte pentru orice tz atunci 1 iar

kjikji xxxU ...... ,

adică U nu depinde de variabilele nxx ,...,1 .

Definiţia 2.6. Disjuncţia sUUV ...1min , unde siU i ,1, sunt termeni minimali ai

funcţiei ),,...,( 1 nxxF care respectă condiţiile 1) – 3)

1) pentru 1M 1)(min V ,

2) pentru 0M 0)(min V ,

3) pentru V~ care se obţine din minV prin excluderea unui termen minimal arbitrar

1M pentru care 0)(~V ,

se numeşte formă minimală normală disjunctivă a acestei funcţii.

Page 63: Aureliu Zgureanu - Codari Informatice

63

Menţionăm că forma minimală minV nu este unică.

Să revenim la problema de mai sus – determinarea componentelor jR ale vectorului R

având componentele vectorului A

. Reprezentăm în baza 2 fiecare componentă a lui A

. În acest

caz obţinem elementele ijr din Figura 2.2, iar RA reprezintă un sistem de k funcţii booleene

).,...,( 1 nj xxF Să analizăm funcţia ),...,( 1 nj xxF care corespunde relaţiei .....1 jdjj XXj RR Fie că se

cunoaşte o formă minimală sUUV ...1min a funcţiei ).,...,( 1 nj xxF Notăm cu iN mulţimea de

variabile jx din care este compus termenul minimal ,iU si ,1 . Fie N – reuniunea acestor

mulţimi: sNNN ...1 .

Teorema 2.4. Fie relaţiei jdjj XXj RR ....1

îi corespunde funcţia booleana ),...,( 1 nj xxF cu o formă

minimală sUUV ...1min , atunci

NNNd sj ...1 (2.9)

Demonstraţie. Notăm cu jdjj ,...,

1valorile respective ale variabilelor ,,...,

1 jdjj xx adică

.,...,11 jdjd jjjj xx Atunci conjuncţia .1...1

1 jdj

jd

jjj xxU Fie că starea binara din

1M conţine valorile indicate. Atunci 1)( F . Daca nd j atunci există o altă stare binară β

care conţine valorile variabilelor indicate mai sus. Această stare în mod obligator trebuie să

aparţină mulţimii 1M . Aceasta înseamnă că orice variabilă din conjuncţia U trebuie să aparţină

cel puţin unui termen minimal al funcţiei ),...,( 1 nj xxF . Prin urmare Nxxjdjj },...,{

1, adică

.Nd j Pe de altă parte, dacă la termenul minimal adăugam noi variabile, atunci condiţiile a) şi

b) sunt verificate, ceea ce este suficient pentru formarea relaţiei care corespunde funcţiei

booleene ).,...,( 1 nj xxF Prin urmare Nd j .

Teorema este demonstrată.

Această teoremă permite să determinăm nu numai mulţimile pe care este definită relaţia,

dar şi dimensiunea jd a matricei care reprezintă această relaţie. Alegând o succesiune a

elementelor mulţimii N aflăm elementele matricei .jR În aşa mod putem determina

componentele vectorului R

având componentele vectorului A

.

Să analizăm acum care sunt condiţiile pentru vectorul R

încât prin transformarea (2.3) să

se obţină matricea (2.4). Din condiţiile expuse mai sus rezultă că nmu iar mnk . Vom

examina cazul în care },1,0{ ,4n }1,0{4321 XXXX iar ).,,,( 4321 RRRRR

În

Page 64: Aureliu Zgureanu - Codari Informatice

64

acest caz vectorul 15,13,11,9,7,5,3,1,14,12,10,8,6,4,2,0A

conţine doua progresii aritmetice

cu raţia egală cu 2. Să determinăm componentele vectorului R

. Pentru aceasta reprezentăm

fiecare element în formă binară şi construim matricea RA (Figura 2.3) în care matricea

bidimensională cu coloanele iX reprezintă produsul cartezian al mulţimilor

},1,0{ },1,0{ },1,0{ }1,0{ iar matricea bidimensională cu coloanele jR este compusă din

elementele matricelor relaţiilor jR conform regulii expuse în Figura 2.2.

Să determinăm matricele relaţiilor jR . Din Figura 2.3 se vede că acestor relaţii le

corespund patru funcţii booleene 4321 ,,, xxxxf j , .4,1j Fie 42,....1 dRR

jdjj XXj iar N –

mulţimea de variabile },,,{ 4321 xxxxxi din care sunt formaţi toţi termenii minimali ai unei

forme minimale normale disjunctive a funcţiei 4321 ,,, xxxxf j .

15131197531

14121086420

1111101111011001111010101100100001110011010100010110001001000000

1111011110110011110101011001000111100110101000101100010010000000

16151413121110987654321

433143214321

jjjjaRRRRXXXX

Figura 2.3. Reprezentarea matricei RA

Pentru determinarea termenilor minimali ai funcţiilor în acest caz nu este necesar să

construim submulţimile de coloană. Cazul este extrem de simplu şi termenii minimali se

determina nemijlocit din Figura 2.3. Funcţia ),,,( 43211 xxxxF are un singur termen minimal

21 xU . Prin urmare }.{ 2xN Conform ipotezei 42 d . Din cele demonstrate anterior

Page 65: Aureliu Zgureanu - Codari Informatice

65

rezultă că putem adăuga o variabilă arbitrară, spre exemplu 1x . În aşa mod funcţiei

2411 ),...,( xxxF îi corespunde relaţia .211 XXRR În mod analog avem ,

322 XXRR ,433 XXRR

iar .144 XXRR Să determinăm elementele acestor matrice. Din Figura 2.3 se observă că fiecare

matrice conţine acelaşi număr de zerouri şi de unităţi. Adică ele au forma:

1100

,

0011

,

1010

,

0101

,

1001

,

0110

. (2.10)

Să examinăm relaţia .211 XXRR Matricea este compusă din elementele mulţimii }.1,0{

Liniile şi coloanele le notăm cu elementele lui }.1,0{ Aşadar, obţinem o matrice de forma

.****

10

10

Din Figura 2.3 (conform regulii din Figura 2.2) aflam: ,000 r ,101 r ,010 r

.111 r Adică

.1010

10

10

211

XXRR

Am obţinut prima matrice. Prin analogie găsim:

,1010

10

10

322

XXRR

,1010

10

10

433

XXRR

.1010

10

10

144

XXRR

Ultimele două matrice nu corespund nici uneia dintre relaţiile posibile. În aşa mod se obţine

.1010

10

10

144332214321

XXXXXXXX RRRRRRRR (2.11)

Egalităţile (2.11) au loc pentru orice n deoarece mulţimile jN rămân neschimbate pentru

orice n. Adică

1010

10

10......

11433221121 XXXXXXXXXXnn nnnRRRRRRRRR , (2.12)

pentru }.1,0{...21 nXXX

Page 66: Aureliu Zgureanu - Codari Informatice

66

Prin analogie pentru cazul când }1,...,2,1,0{...21 mXXX n se obţin funcţii

din logica m-valentă cu aceleaşi submulţimi jN însă cu matricele

110

110110

1

10

110

m

mm

m

m

R j

pentru orice j. Aşadar, din cele, expuse este adevărată

Teorema 2.5. Dacă pentru vectorul )..,,...,,( 1 kj RRRR

sunt satisfăcute condiţiile

,2, dnk (2.13)

},1,...,2,1,0{...21 mXXX n (2.14)

),,,...,,(113221 XXXXXXXX nnn

RRRRR

(2.15)

110

110110

1

10

110

...113221

m

mm

m

m

RRRRR jXXXXXXXX nnn

, (2.16)

atunci aplicând transformarea (2.3) se obţine matricea (2.4) în care liniile reprezintă progresii

aritmetice cu raţia m iar primii termeni sunt elementele din scrise în ordine crescătoare.

Teorema 2.6. Dacă kin FFFxxxxF ......,...,,,..., 111 , atunci

}12,...,0{,1

11

nk

i

zF

zF jSS j

i

j (2.17)

Demonstraţie. Fie că cunoaştem jz

FS 1 şi kiS j

i

zF ,1,1 . Conform definiţiilor submulţimii de

coloană şi a disjuncţiei funcţiilor booleene avem:

k

i

zF

zFjiij

zF

j

i

j

i

j SSzFFzFS1

111 )1),(:()1),((

, (2.18)

jj

i

j

i

zFjji

zF

k

ii

zF SzFzFSFS 111 )1),(()1),(():(

1

. (2.19)

Din (2.18) şi (2.19) rezultă }12,...,0{,1

11

nk

i

zF

zF jSS j

i

j , ceia ce trebuia de demonstrat.

Page 67: Aureliu Zgureanu - Codari Informatice

67

Teorema 2.7. Dacă kin FFFxxxxF ......),...,,,...,( 111 , atunci

}12,...,0{,1

11

nk

i

zF

zF jSS j

i

j

Demonstraţie. Fie că cunoaştem jzF

S 1 şi kiS j

i

zF ,1,1 . Conform definiţiilor submulţimii de coloană

şi a conjuncţiei funcţiilor avem:

k

i

zF

zFjij

zF

j

i

j

i

j SSkizFkizFS1

111 :),1()1),(:,1()1),((

,

jj

i

j

i

zFjji

zF

k

i

zF SzFzFkiSkiS 111 )1),(()1),(:),1)(:),1(

1

Din ultimele două relaţii rezultă că }12,...,0{,1

11

nk

i

zF

zF jSS j

i

j , ceia ce trebuia de

demonstrat.

Teorema 2.8. Dacă kin FFFxxxxF ......),...,,,...,( 111 , atunci

jzF

S 1

1

i

kj

i

zF

S 1 , }12,...,0{ nj ,

unde este diferenţa simetrică a submulţimilor de coloană. Demonstraţie. Fie că cunoaştem kiS j

i

zF

,1,1 . Să aflam jzF

S 1 . Conform definiţiilor submulţimii de

coloană, a sumei după modulul 2 şi a diferenţei simetrice avem:

impar)1),((1 qzFS jzF

j astfel încât }.,1{,,1,0),(

,1,1),(ki

kqpzFqpzF

pji

ji

p

p

kqpS

qpSj

pi

j

pi

zF

zF

,1,

,1,

1

1

1

i

kj

i

zFS 1 .

1

i

k

kqpzFqpzF

kikqpS

qpSimparqS

ji

jipz

F

zFz

Fp

p

j

p

j

pij

i ,1,0),(,1,1),(

},1{,,1,

,1,:

11

1

1

jzFj SzF 11),( .

Din ultimele relaţii rezultă că jzF

S 1

1

i

kj

i

zFS 1 , }12,...,0{ nj

Page 68: Aureliu Zgureanu - Codari Informatice

68

Teorema 2.9. Fie 2111 ),...,,,...,( FFxxxxF n ,

atunci jjj z

FzF

zF SSS 1

20

11

Demonstraţie. Conform definiţiei funcţiei “Implicaţia” şi proprietăţilor “Conjuncţiei”,

”Disjuncţiei” şi “Negaţiei” avem:

21212121 FFFFFFFFF .

Deoarece jj zF

zF

SS 01

11 , atunci jjj z

FzF

zF SSS 1

20

11 .

Teorema este demonstrată.

În Exemplul 2.1 sunt aplicate teoremele de mai sus.

Exemplul 2.1. De aflat submulţimile de coloană ale funcţiilor ,21 FF ,21 FF 21 FF şi

21 FF definite prin intermediul tabelului submulţimilor de coloană (în partea de sus a

Tabelului 2.5).

Tabelul 2.5. Determinarea submulţimilor de coloană pentru ,21 FF ,21 FF 21 FF , 21 FF

54 xx

00 01 10 11

0z 1z 2z 3z

11F 0,1,2,3,4,5,6,7 0,3,5 1,2,7 12F 6,7 0,6,7 1,3,5,6 0,1,2,3,4,5,6,7

121 )( FF 0,1,2,3,4,5,6,7 0,6,7 0,1,3,5,6 0,1,2,3,4,5,6,7

121 )( FF 6,7 3,5 1,2,7

121 )( FF 0,1,2,3,4,5 0,6,7 0,1,6 0,3,4,5,6

121 )( FF 6,7 0,1,2,3,4,5,6,7 1,2,3,4,5,6,7 0,1,2,3,4,5,6,7

Soluţie. În conformitate cu teoremele 2.6, 2.7, 2.8 şi 2.9 obţinem ultimele patru linii ale

Tabelului 2.5 care reprezintă submulţimile de coloană ale funcţiilor date.

În soluţionarea multor probleme, relaţionate cu funcţii booleene, de multe ori ne întâlnim

cu noţiunea de “stări binare vecine”.

Definiţia 2.7. Doua stări binare jz şi kz care diferă numai prin valoarea variabilei ix se numesc

stări binare vecine [130] după variabila ix .

Page 69: Aureliu Zgureanu - Codari Informatice

69

Teorema 2.10. Dacă pentru stările binare jz şi kz ( }12,...,1,0{, nkj ) se verifică condiţia

impareste2

dacă,2

pareste2

dacă,2

inin

inin

jj

jjk , (2.20)

atunci aceste stări sunt vecine după variabila },...,,{ 21 ni xxxx

Demonstraţie. Pe mulţimea }12,...,1,0{ n construim partiţiile };{ 2,1, rrr mm ( 12,1 ir ) cu proprietăţile:

1) primul element al blocului 1,1m este egal cu zero;

2) fiecare bloc reprezintă o mulţime alcătuită din in2 elemente care formează o

progresie aritmetica cu raţia 1;

3) pentru orice }2,...,2,1{ 1 ir primul element al blocului 2,rm diferă de ultimul

element al blocului 1,rm printr-o unitate. Aceeaşi condiţie o avem şi pentru primul

element al blocului 1,1rm şi ultimul element al blocului 2,rm .

Din blocurile obţinute construim matricea

2,22,12,2,12,22,1

1,21,11,1,11,21,1

1

1

i

i

mmmmmmmmmmmm

Arrr

rrr

Sunt posibile următoarele cazuri:

a)

inj

2este un număr par .

În acest caz, conform condiţiilor 1) – 3) pentru orice r este adevărată apartenenţa

1,rmj , adică j se află în unul dintre blocurile din prima linie a matricei A. Dacă la elementul j

adunăm numărul in2 obţinem un element injk 2 , care aparţine blocului 2,rm . Fie că

numărului j îi corespunde starea binara niiijz ...... 111 . Pentru 0j obţinem 0...00 z

şi 1,10 mz . Pentru o astfel de stare binara 0i . Dacă la numărul 0 adunăm un număr par de

numere egale cu in2 , atunci valoarea lui i rămâne neschimbată, adică în jz , care corespunde

lui 1,rmj , valoarea lui ix este egala cu 0. Prin analogie se obţine că valoarea lui ix din kz ,

care corespunde lui 2,rmk , este egală cu 1.

Page 70: Aureliu Zgureanu - Codari Informatice

70

Aşadar, pentru orice }2,...,2,1{ 1 ir elementele blocurilor 1,rm şi 2,rm formează în

matricea A coloane, elementele cărora corespund la două stări care pot fi vecine după variabila

ix . Odată cu îndeplinirea condiţiilor 1) – 3) se obţine că pentru niiijz ...... 111 şi

niiikz ...... 111 are loc

.,...,,,..., 111111 nniiii

Acesta înseamnă că jz şi kz sunt vecine după variabila ix .

b)

inj

2este un număr impar .

Prin analogie, examinam cazul în care

inj

2 este un număr impar, obţinem injk 2 .

Teorema este demonstrată.

Teorema dată ne permite sa găsim simplu perechi de stări vecine pentru funcţii de un

număr mare de variabile.

Consecinţă. Valoarea lui ix din starea binara jz poate fi determinata din relaţia

imparăeste2

jdacă,1

parăeste2

dacă,0

in

in

i

j

x . (2.21)

Exemplu 2.2 Pentru funcţia de n variabile de aflat starea kz vecina cu starea jz după variabila

ix , dacă ,100n j= 17297 j şi .98i

Soluţie.

98100

97

2172 39614081257132168796771975172. Acest număr este par. Prin urmare

.2172 297 k

Verificare. Scriem numerele în baza 2:

17297j 001000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000010001

k=001000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000010101

Deci stările sunt vecine după variabila 98x .

Page 71: Aureliu Zgureanu - Codari Informatice

71

2.2.2. Determinarea submulţimilor de coloană ale funcţiilor booleene reprezentate în formă

algebrică

Fie ca funcţia booleană ),...,( 1 nxxF este reprezentată în formă normală disjunctivă

kin UUUxxF ......),...,( 11

unde

qj

q

jsi

s

ijjiii xxxxU ...... 1

1

1

1,

,0dacă,1dacă,

aa

aaa x

xx a

},...,,,...,{ 11 qs jjiia , 1

~,...,1

Xxxsii , 2

~,...,1

Xxxqjj .

Considerăm fiecare conjuncţie iU ca o funcţie booleana cu un singur termen minimal iU . În

acest caz, conform Teoremei 2.6 obţinem jzFS 1 =

k

i

zu

j

iS

11

. În baza acestei relaţii construim Tabelul

2.6.

Tabelul 2.6. Tabelul submulţimilor de coloană ale funcţiei booleene reprezentate în formă

normală disjunctivă

0z … jz … pz

11u 0

11

zuS … jz

uS 11

… pzuS 1

1

12u 0

12

zu

S … jzuS 1

2 … pz

uS 12

1ku 0

1zuk

S ... j

k

zu

S 1 … p

k

zu

S 1

01

zFS =

k

i

zui

S1

01

... jzF

S 1 =k

i

zu

j

iS

11

… pzF

S 1 =k

i

zu

p

iS

11

Cunoscând submulţimile de coloană ale fiecărei conjuncţii putem afla jz

FS 1 , }12,...,0{ nj .

Sunt posibile trei cazuri elucidate în următoarele trei teoreme :

Page 72: Aureliu Zgureanu - Codari Informatice

72

Teorema 2.11. Fie

qj

q

jjji xxU ...1

1, 2

~,...,1

Xxxqjj .

Atunci

aa

aaj

ijj

jjzU xqa

xqaS

:},...,1{dacă,:},...,1{dacă},12,...,0{

1

Demonstraţie. Conform (2.6) avem

aa

aaqj

q

j

jj

jjjji xqa

xqaxxU

:},...,1{dacă,0:},...,1{dacă,1

...1

1 (2.22)

În acest caz iU nu sunt în funcţie de variabilele xx ,...,1 . Prin urmare, acestei conjuncţii îi

corespunde blocul maximal compus din mulţimea }12,...,0{ . Conform definiţiei submulţimii

de coloană, submulţimea j

i

zuS 1 conţine orice element al mulţimii }12,...,0{ când 1iU şi nu

conţine nici un element al acestei mulţimi când 0iU . Aşadar,

aa

aaj

ijj

jjzU xqa

xqaS

:},...,1{dacă,:},...,1{dacă},12,,...0{

1 .

Teorema este demonstrată.

Valorile lui ajx din starea binara jz pot fi determinate din relaţia (2.21)

Teorema 2.12. Fie

si

s

iiii xxU ...1

1, 1

~,...,1

Xxxsii .

Atunci

s

iizu ii

mS sj

i

1

11 , }12,...,1,0{ nj (2.23)

Demonstraţie.

În acest caz iU nu sunt în funcţie de variabilele nxx ,...,1 şi, prin urmare, submulţimile de

coloană sunt egale între ele pentru orice jz , şi sunt formate din elementele blocului

s

ii

iim s

1

1 [115], [116]. Prin urmare s

iizu ii

mS sj

i

1

11 , }12,...,1,0{ nj , ce se cerea

de demonstrat.

Page 73: Aureliu Zgureanu - Codari Informatice

73

Teorema 2.13. Fie

qj

q

jci

c

ijjiii xxxxU ...... 1

1

1

1,

unde

},...,{,..., 11 xxxxcii , },...,{,..., 11 njj xxxx

q .

Atunci

aa

c

aaj

i jjc

ii

jjz

U xqaii

m

xqaS

:},...,1{dacă,

:},...,1{dacă,

1

11

.

Demonstraţie. În acest caz avem o combinaţie a situaţiilor din ultimele doua teoreme. Facem

următoarele notaţii:

qj

q

jjji xxU ...1

11, , ci

c

iiii xxU ...1

12, .

Atunci

2,1, iii UUU

Dacă j

i

zUS 1

1,, atunci j

i

zU

S 1 . Dacă }12,...,1,0{11,

j

i

zUS , iar

s

iizu ii

mS sj

i

1

11

2, , atunci

}12,...,0{1j

i

zUS

s

ii

iim s

1

1 =s

ii

iim s

1

1 .

Prin urmare

.:},...,1{dacă,

:},...,1{dacă,

1

11

aa

c

aaj

i jjc

ii

jjz

U xqaii

m

xqaS

Teorema este demonstrată.

Teoremele 2.6, 2.7, 2.8, 2.10, 2.11, 2.12, 2.13 permit determinarea submulţimilor de

coloană ale funcţiei booleene reprezentată în formă normală disjunctivă.

Exemplul 2.3. De aflat submulţimile de coloană ale funcţiei ),...,( 51 xxF , dacă

)()(),...,( 41324215451 xxxxxxxxxxxF .

Soluţie. Facem următoarele notaţii:

421541 xxxxxF , 41322 xxxxF , 541 xxU , 4212 xxxU , ,323 xxU .414 xxU

Atunci ,211 UUF ,432 UUF 21 FFF .

Page 74: Aureliu Zgureanu - Codari Informatice

74

Considerăm 3 . În aşa caz },,{~3211 xxxX , },{~

542 xxX , )7,6,5,4,3,2,1,0(Y , }3,2,1,0{Z

(sunt indicaţi numai indicii). Conform [116], [117] construim partiţiile

}7,6,5,4;3,2,1,0{11

011

x , }7,6,3,2;45,1,0{11

012

x , }7,5,3,1;6,4,2,0{11

013

x .

Aflam produsele partiţiilor

}7,6;5,4;3,2;1,0{1,12,1

0,12,1

1,02,1

0,02,12,1 ,

}7,5;6,4;3,1;2,0{1,13,1

0,13,1

1,03,1

0,03,13,1 ,

}7,3;6,2;5,1;4,0{1,13,2

0,13,2

1,03,2

0,03,23,2 ,

}7;6;5;4;3;2;1;0{ 1,1,13,2,1

0,1,13,2,1

1,0,13,2,1

0,0,13,2,1

1,1,03,2,1

0,1,03,2,1

1,0,03,2,1

0,0,03,2,13,2,1 .

Aplicam teoremele respective si construim Tabelul 2.7

Pentru 541 xxU aplicăm Teorema 2.11, deoarece 254~, Xxx . Din conjuncţie avem

04 şi 05 . Condiţiile 44 x şi 55 x se verifică numai pentru 0z . De aceea

}7,6,5,4,3,2,1,0{011z

US şi 3

11

211

111

zU

ZU

zU

SSS .

Pentru 4212 xxxU aplicăm Teorema 2.13, deoarece 121~, Xxx , iar 24

~Xx . Din

conjuncţie avem .0,1,1 421 În produsul 2,1 alegem blocul cu indicii superiori 1,1.

Acesta este blocul 1,12,17,6 . Condiţia 044 x este verificată de 0z si 1z . Prin urmare

}7,6{112

012

ZU

zU SS şi 3

12

212

ZU

zU SS .

Tabelul 2.7. Tabelul submulţimilor de coloană ale funcţiei ),...,( 51 xxF din Exemplul 2.3.

54xx

00 01 10 11

0z 1z 2z 3z

11U 0,1,2,3,4,5,6,7

12U 6,7 6,7

11F 0,1,2,3,4,5 6,7

13U 1,5 1,5 1,5 1,5

14U 4,5,6,7 4,5,6,7

12F 1,4,5,6,7 1,4,5,6,7 1,5 1,5 1F 1,4,5,6,7 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7

Page 75: Aureliu Zgureanu - Codari Informatice

75

Pentru 323 xxU aplicăm Teorema 2.12, deoarece 132~, Xxx . Din conjuncţie avem

1,0 32 . Căutăm în produsul 3,2 blocul cu indicii superiori 0,1. Acesta este blocul 1,03,25,1 .

Prin urmare }5,1{13jz

US pentru }3,2,1,0{j .

Pentru 414 xxU aplicam Teorema 2.13, deoarece 11~Xx , iar 24

~Xx . Din conjuncţie

avem .0,1 41 În partiţia 1 căutăm blocul cu indicele superior egal cu 1. Acesta este

blocul 117,6,5,4 . Condiţia 044 x se îndeplineşte pentru 0z si 1z . Prin urmare

}7,6,5,4{114

014

ZU

zU

SS şi 314

214

ZU

zU

SS .

Pentru determinarea submulţimilor jjj zF

zF

zF SSS 11

21

1,, aplicăm Teoremele 2.8, 2.6 şi 2.9

respectiv. Rezultatul final se obţine în ultima linie a Tabelului 2.7.

În Mediul de Calcul Mathematica este elaborat un program care asigură un calcul rapid al

submulţimilor de coloană ale funcţiilor de zeci, sute şi chiar mii de variabile, reprezentate în

formă analitică (Anexa 2).

Nu orice funcţie booleană poate fi cu succes utilizată în soluţionarea problemelor

criptografice. Funcţiile respective trebuie să satisfacă unor condiţii. Pentru examinarea acestor

condiţii vom examina o operaţie cu aceste funcţii, şi anume – operaţia de derivare lor.

2.2.3. Submulţimi de coloană ale derivatelor funcţiilor booleene. Polinomul Zhegalkin.

Seria Taylor.

În conformitate cu [12] avem următoarea definiţie:

Definiţia 2.8. Derivata parţială a funcţiei ),...,,,,...,( 111 niii xxxxxF după variabila ix se

numeşte expresia

niiniii

xxxxFxxxxFxF ,...,,0,,...,,...,,1,,..., 111111 , (2.24)

Conform [12] unele proprietăţi ale derivatelor parţiale ale funcţiilor booleene sunt:

iiiii xF

xF

xFF

xFF

xFF

211

22

121 )( (2.25)

iiiii xF

xF

xFF

xFF

xFF

211

22

121 )( (2.26)

Page 76: Aureliu Zgureanu - Codari Informatice

76

iii xF

xF

xFF

2121 )( (2.27)

Calculul derivatelor parţiale în conformitate cu formulele (2.24)-(2.27) este suficient de

anevoios. Acest calcul poate fi simplificat esenţial dacă utilizăm în scopul dat reprezentarea

funcţiei booleene cu ajutorul submulţimilor de coloană.

În conformitate cu [118], dacă 2~Xxi , iar jz şi kz sunt stări binare vecine după

variabila ix , atunci

j

i

z

xF

S 1kjk

i

zF

zF

z

xF

SSS 111

, (2.28)

unde este diferenţa simetrică a mulţimilor.

Derivatele parţiale de ordin superior le putem calcula conform relaţiei

111 ......

1

sss ii

s

iii

s

xxF

xxxF (2.29)

calculând consecutiv siii

s

iii xxxF

xxF

xF

.......,,,

21211

2. Rezultatul derivării nu depinde de ordinea

variabilelor după care se face derivarea [12]. Aceste calcule se pot reduce dacă aplicăm

următoarea teoremă:

Teorema 2.14. Fie

2~,..,.

1Xxx

sii , }12,...,1,0{ nj .

Atunci.

kj

siii

s

jF

jF

jF

z

xxxF

SSSS 121

111

21

...

...

, (2.30)

unde:

1) este diferenţa simetrică a submulţimilor de coloană,

2) sk 2 , }12,...,2,1,0{,...,1 nkjj , },...,{ 1 kjjj ,

3) pentru orice kazaj

,1, există s stări binare vecine după variabilele sii xx ,...,

1.

Page 77: Aureliu Zgureanu - Codari Informatice

77

Demonstraţie. Din definiţia derivatei funcţiei rezultă că derivata siii

s

xxxF

....

21

este o funcţie

booleană care nu depinde de variabilele sii xx ,..,.

1. Acesta înseamnă [115], [116] că există o

submulţime de numere naturale },...,,{ 21 kjjj , sk 2 , }12,...,2,1,0{,...,1 nkjj astfel

încât

11

21 ...

j

siii

s

z

xxxF

S …= kj

siii

s

z

xxxF

S 1

21 ...

.

Prin urmare, pentru determinarea submulţimii j

siii

s

z

xxxF

S 1

21 ...

, unde },...,,{ 21 kjjjj şi sk 2 ,

este suficient să găsim numai 11

21 ...

j

siii

s

z

xxxF

S

. Să arătăm cum aflam această submulţime de

coloană. Stările binare kjj zz ,...,

1 formează un cub unitar s-dimensional. În acest cub fiecare stare

binară are s stări vecine. În conformitate cu Teorema 2.10 alcătuim 12 s perechi de stări vecine

după variabila 1i

x cu condiţia 1jj zz (în aceste perechi scriem numai indicii):

:1ix ),,( 21 jj ),,( 43 jj ),,( 65 jj ),,( 87 jj … ),,( 67 kk jj ),,( 45 kk jj ),,( 23 kk jj ).,( 1 kk jj

În conformitate cu (2.28) avem:

21

11

11

1

jjj

i

z

F

z

F

z

xF

SSS

şi 41

31

31

1

jjj

i

z

F

z

F

z

xF

SSS

. (2.31)

Teorema 2.10 ne permite să aflăm starea binară vecină cu starea binara 1jz după variabila

2ix .

Fie că această stare este 3jz . Atunci din Teorema 2.10 rezultă că

2jz şi 4jz sunt vecine după

variabila 2ix . Prin urmare stările

321,, jjj zzz şi

4jz formează un cub unitar bidimensional după

variabilele 1ix şi

2ix . În conformitate cu relaţiile (2.28) şi ( 2.29) avem

1221

2

iiii xF

xxxF şi 3

1

1

11

1

11

21

2

j

i

j

i

j

ii

z

xF

z

xF

z

xxF

SSS

. (2.32)

Conform (2.28) se obţine )( 41

31

21

11

11

21

2

jjjjj

ii

z

F

z

F

z

F

z

F

z

xxF

SSSSS

sau (aplicând proprietatea

asociativă)

Page 78: Aureliu Zgureanu - Codari Informatice

78

41

31

21

11

11

21

2

jjjjj

ii

zF

zF

zF

zF

z

xxF

SSSSS

(2.33)

Efectuând aceleaşi calcule pentru perechile ),( 65 jj şi ),( 87 jj vom obţine

81

41

31

21

11

11

321

3... jjjjjj

iii

z

F

z

F

z

F

z

F

z

F

z

xxxF

SSSSSS

(2.34)

Procesul de calcul se termină cu ultimele două perechi ),( 23 kk jj şi ).,( 1 kk jj În rezultat

obţinem relaţia (2.30).

Teorema este demonstrată.

Formula (2.30) ne permite să calculăm derivata de ordinul s fără a calcula derivatele de

ordin inferior. Pentru aceasta este necesar să calculăm elementele mulţimii },...,,,{ 321 kjjjjJ ,

unde sk 2 , iar jj 1 . Cunoscând j putem afla toate celelalte elemente. Acest lucru îl putem

face în felul următor [25]:

în conformitate cu Teorema 2.10 aflam 2j , vecin (în sistemul binar) cu 1j după

variabila sx , şi construim mulţimea },{ 21 jj ;

aplicăm aceeaşi teoremă şi aflam 3j şi 4j vecine respectiv cu 1j şi 2j după variabila

1six şi construim mulţimea },,,{ 4321 jjjj ;

repetăm calculele de mai sus şi aflăm 765 ,, jjj şi 8j , vecine respectiv cu 321 ,, jjj şi

4j după variabila 2six ;

continuăm procesul până la determinarea lui kj şi construirea mulţimii

},...,,,{ 321 kjjjjJ . Pentru determinarea acestei mulţimi este elaborat un program în

mediul de calcul Mathematica (Anexa 2).

Teorema 2.15. Fie

1~Xxi şi },...,,{ 211 k

z

FjS .

Atunci

},{},{},{ 22111 kkz

xF

j

i

S

, (2.35)

unde k ,...,, 21 sunt vecine respectiv cu k ,...,, 21 după variabila ix .

Page 79: Aureliu Zgureanu - Codari Informatice

79

Demonstraţie. Fie ...... 11211 iii ( }1,0{,,1 ii ). Atunci starea vecină cu 1

după variabila ix este starea 1 ...... 1121 iii . Fie jzFS 01 , unde nj ...1 . În aşa

caz 1),( 1 jF , iar 0,1 jF . În conformitate cu definiţia derivatei parţiale a funcţiei

booleene obţinem j

i

z

xF

S 111,

. Admitem că jzFS 11 , atunci 1,1 jF şi, prin urmare,

j

i

z

xF

S 111,

. Aşadar

j

i

z

xF

S 111,

, dacă jz

FS 11 (2.36)

j

i

z

xF

S 111,

, dacă jz

FS 11 (2.37)

Aceste condiţii se obţin şi pentru alte elemente ale submulţimii de coloană },...,,{ 211 kz

FjS .

Presupunem că am aflat toate perechile kccc ,1},,{ (efectuăm acest lucru aplicând

Teorema 2.10 ). Sunt posibile următoarele cazuri:

a) toate perechile sunt diferite.

În acest caz avem

},{},{},{ 22111 kkz

xF

j

i

S

(2.38)

Deoarece toate elementele sunt diferite atunci reuniunea poate fi substituita cu diferenţa

simetrică . În rezultat se obţine (2.35).

b) Exista perechi egale.

Aceasta se întâmplă atunci când pentru c şi c se îndeplineşte jz

Fc S 1 . În aşa caz din

reuniunea tuturor perechilor trebuie să scădem reuniunea tuturor perechilor egale. Ţinând cont că

},{},{ cccc , rezultatul scăderii se poate obţine din (2.38) prin înlocuirea reuniunii

cu diferenţa simetrică adică vom obţine (2.35) Aşadar, în ambele cazuri submulţimea de

coloană a derivatei o aflam în baza relaţiei (2.35)

Teorema este demonstrată.

Page 80: Aureliu Zgureanu - Codari Informatice

80

Consecinţă. Daca }12,...,2,1,0{1 jz

FS sau jz

FS 1 este o mulţime vidă, atunci

},...,1{,1

iS j

i

z

xF

.

În baza acestor teoreme sunt elaborate programe de calcul ale derivatelor pentru funcţii

reprezentate prin submulţimi de coloană sau în forma analitică (forma normala disjunctiva).

Exemplul 2.4. De aflat derivatele parţiale 3x

F ,

6xF şi

654

3

xxxF

ale funcţiei

),,,,,( 654321 xxxxxxF reprezentata prin tabelul submulţimilor de coloană Tabelul 2.8 (partea

superioară).

Soluţie. În acest caz },,{~3211 xxxX , },,{~

6542 xxxX . Să calculăm, de exemplu, 31

3

Z

xF

S

.

Deoarece 13~Xx , aplicăm Teorema 2.15. Conform relaţiei (2.35) găsim perechile de stări

vecine după variabila 3x , aplicând Teorema 2.10. Aceste perechi sunt: }7,6{},4,5{ şi }6,7{ . În

acest caz

31

3

Z

xF

S }5,4{}6,7{}7,6{}4,5{ . În mod analog calculăm celelalte submulţimi de

coloană.

Tabelul 2.8. Tabelul submulţimilor de coloană din Exemplul 2.4

654 xxx

0z 1z 2z 3z 4z 5z 6z 7z

000 001 010 011 100 101 110 111 1F 0,4,5 0,4,5 5,6,7 1 0,3,5,7 1, 4,7 1,3,5,6,7

1

3

xF 0,1 0,1 4,5 0,1 0,1,2,3,4,5,6,7 4,5,6,7 0,1,2,3,4,5

1

6

xF 5,6,7 5,6,7 0,1,3,5,7 0,1,3,5,7 3,4,5,6 3,4,5,6

1

654

3

xxx

F 0,1,4,5 0,1,4,5 0,1,4,5 0,1,4,5 0,1,4,5 0,1,4,5 0,1,4,5 0,1,4,5

Page 81: Aureliu Zgureanu - Codari Informatice

81

Trecem la calculul derivatei 6x

F . Vom calcula 0

1

6

Z

xF

S

. Deoarece 26~Xx , iar 0z este vecin cu

1z după variabila 6x , atunci, conform (2.28 ) obţinem 01

6

Z

xF

S

=

1

1

6

Z

xF

S . În mod analog

calculăm celelalte submulţimi de coloană.

Trecem la calculul derivatei 654

3

xxxF

. În acest caz 2654~,, Xxxx , ,3s ,823

},,,,,,,{ 76543210 jjjjjjjjJ şi aplicând (2.30) obţinem pentru orice 7.0, izi :

iZ

xxxF

S 1

654

3{0,4,5}Δ{0,4,5} Δ{ }{5,6,7} Δ{1} {0,3,5,7} Δ{1,4,7} Δ{1,3,5,6,7}={0,1,4,5}.

Toate submulţimile calculate le includem în Tabelul 2.8 (partea inferioară). Având

completat acest tabel şi aplicând metoda blocurilor maximale [115], [116] putem afla simplu

formele minimale normale disjunctive ale derivatelor. De exemplu, pentru ultima derivata avem

un singur bloc maximal 025,4,1,0 , care generează termenul minimal 2x . Prin urmare

2654

3

xxxx

F

. În cazul în care funcţia este definită în formă analitică, o transformăm în formă

de submulţimi de coloană şi după aceasta aflăm derivatele parţiale necesare.

Sa analizăm unele aplicaţii ale acestor derivate parţiale.

Un rol decisiv în elaborarea sistemelor de criptare îi revine procedurii de generare a

cheilor de criptare-decriptare a informaţiei. La generarea acestor chei putem aplica coeficienţii

polinomului Zhegalkin [15] a unei funcţii booleene ),...,,( 21 nxxxF , luate în mod arbitrar . Fie

......),...,,( 212,12211021 xxCxCxCxCCxxxF nnn

nnnnnn xxxxCxxxCxxC ...... 321,...,3,2,13213,2,11,1 , (2.39)

– polinomul Zhegalkin pentru funcţia ),...,,( 21 nxxxF . În lucrările [12] , [119] s-a demonstrat că

k

kiii

k

iii xxxFC

...

)0(

21

21 ,...,, , },...,1{,...,1 nii k . (2.40)

Aşadar, coeficienţii pot fi calculaţi cu ajutorul derivatelor parţiale ale funcţiei date. Fie funcţia

este definită prin submulţimi de coloană. În baza derivatelor parţiale construim Tabelul 2.9

Page 82: Aureliu Zgureanu - Codari Informatice

82

Tabelul 2.9. Tabelul submulţimilor de colană ale derivatelor parţiale ale funcţiei booleene F

nxx ...1

0z … jz … pz 1F 0

1zFS … jz

FS 1 … pzFS 1

1

1

xF

01

1

z

xF

S

jz

xF

S 1

1

… pz

xF

S 1

1

1

nxF

01

z

xF

n

S

j

n

z

xF

S 1

p

n

z

xF

S 1

1

21

2

xx

F 0

1

21

2

z

xxF

S

jz

xxF

S 1

21

2

pz

xxF

S 1

21

2

1

21 ...

n

n

xxxF

01

21 ...

z

xxxF

n

nS

j

n

n

z

xxxF

S 1

21 ...

p

n

n

z

xxxF

S 1

21 ...

Coeficienţii aparţin mulţimii {0,1}. Din (2.40) şi Tabelul 2.9 rezultă că coeficientul

kiiiC ,...,, 21

este egal cu 1 în cazul în care elementul „0” aparţine submulţimii de coloană a derivatei parţiale

determinate de indicii coeficientului, şi este egal cu zero în catul în care „0” nu aparţine

submulţimii menţionate. Cu alte cuvinte, este adevărată

Teorema 2.16. În polinomul Zhegalkin pentru funcţia booleana ),...,,,...( 11 nxxxxF coeficienţii

satisfac condiţiile

)0,...,0(0 FC ,

},...,1{,...,,0ădac,1

0ădac,0

1

...

...,...,, 0

1

21

01

21

21nii

S

S

C kz

xxxF

z

xxxF

iii

kiii

k

kiii

k

k

(2.41)

Demonstraţie. Din (2.39) rezultă că )0...,,0(0 FC pentru 0...21 nxxx . În

conformitate cu (2.40) şi cu definiţia submulţimii de coloană avem:

11...

)0...0(1...

),0(0 ...0

...

21

2121

01

21

k

kkkiii

k iiiiii

k

iii

kZ

xxxF

Cxxx

Fxxx

zFS ,

Page 83: Aureliu Zgureanu - Codari Informatice

83

00...

)0...0(0...

),0(0 ...0

...

21

2121

01

21

k

kkkiii

k iiiiii

k

iii

kZ

xxxF

Cxxx

Fxxx

zFS .

Teorema este demonstrată.

Polinomul (2.39) cu coeficienţii din (2.40) se numeşte seria Taylor în vecinătatea punctului

00...0 pentru funcţia ),...,,,...( 11 nxxxxF [12]. În vecinătatea unui punct arbitrar

}1,0{,...21 in această serie are forma

)(...)(...

)(...)()()(),...,( 111

111

1 nnn

n

n xxxx

xx

FFxxF

(2.42)

Pentru construirea polinomului (2.39) cu coeficienţii (2.40) este suficient să calculăm

numai derivatele parţiale din coloana 0z . Aceste derivate le putem calcula, aplicând Teoremele

2.14 şi 2.15, numai în baza submulţimilor de coloană din linia 1F . Aceste derivate parţiale se

aplică şi la construirea seriei Taylor (2.39) în vecinătatea punctelor ),( 0zyi , }12,...,2,1{ i .

Exemplul 2.5. De dezvoltat în seria Taylor funcţia booleană

.543532421531431321 xxxxxxxxxxxxxxxxxxF

Soluţie. Considerăm 3 . Avem o funcţie de 5 variabile. Mulţimile YXX ,~,~21 şi Z precum şi

partiţiile respective sunt construite în Exemplul 2.3.

Ca şi în exemplul indicat calculăm submulţimile de coloană jZ

FS 1 şi construim tabelul acestor

submulţimi (partea superioară a Tabelului 2.10). Aşa cum este arătat în Exemplul 2.4 aflăm

submulţimile de coloană ale derivatelor parţiale şi construim Tabelul 2.10. În prima coloană sunt

indicaţi indicii variabilelor după care se calculează derivatele parţiale. Pentru 00000 avem

0000 y , iar 000 z . Prin urmare, seria se obţine conform coloanei 0z . Elementul 0 aparţine

submulţimilor din liniile

4; 5; 1,3; 1,4; 3,4; 4,5; 1,2,4; 1,3,4; 1,3,5; 2,3,5; 3,4,5; 1,2,3,4; 1,2,3,4,5.

Seria Taylor respectivă are forma

543532531431421544341315451 ),...,( xxxxxxxxxxxxxxxxxxxxxxxxxxxF

543214321 xxxxxxxxx .

Page 84: Aureliu Zgureanu - Codari Informatice

84

Tabelul 2.10. Tabelul pentru soluţionarea Exemplului 2.5

54xx 00 01 10 11

0z 1z 2z 3z 1F

5,7 0,1,2,4,5,6 0,2,5,6,7 0,1,2,5,6,7 1 1,3,5,7 0,1,3,4,5,7 0,3,4,7 2 1,3,5,7 4,6 1,3,4,6 3 4,5,6,7 2,3,6,7 0,1,2,3,4,5 2,3,4,5 4 0,2,6 4,7 0,2,6 4,7 5 0,1,2,4,6,7 0,1,2,4,6,7 1 1

1,2 0,2,4,6 0,1,2,3,4,5,6,7 1,3 0,1,2,3,4,5,6,7 2,3,6,7 0,1,2,3,4,5,6,7 1,4 0,4 0,3,4,7 0,4 0,3,4,7 1,5 1,3,5,7 1,3,5,7 1,5 1,5 2,3 0,1,2,3,4,5,6,7 4,5,6,7 0,1,2,3,4,5,6,7 2,4 4,6 4,5,6,7 4,6 4,5,6,7 2,5 1,3,5,7 1,3,5,7 1,3 1,3 3,4 0,1,2,3,6,7 4,5,6,7 0,1,2,3,6,7 4,5,6,7 3,5 2,3,4,5 2,3,4,5 0,1 0,1 4,5 0,2,4,6,7 0,2,4,6,7 0,2,4,6,7 0,2,4,6,7

1,2,3 0,1,2,3,4,5,6,7 1,2,4 0,2,4,6 0,1,2,3,4,5,6,7 0,2,4,6 0,1,2,3,4,5,6,7 1,2,5 1,3,5,7 1,3,5,7 1,3,4 0,1,4,5 0,1,2,3,4,5,6,7 0,1,4,5 0,1,2,3,4,5,6,7 1,3,5 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7 0,1,4,5 0,1,4,5 1,4,5 3,7 3,7 3,7 3,7 2,3,4 4,5,6,7 4,5,6,7 2,3,5 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7 0,1,2,3 0,1,2,3 2,4,5 5,7 5,7 5,7 5,7 3,4,5 0,1,2,3,4,5 0,1,2,3,4,5 0,1,2,3,4,5 0,1,2,3,4,5

1,2,3,4 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7 1,2,3,5 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7 1,2,4,5 1,3,5,7 1,3,5,7 1,3,5,7 1,3,5,7 1,3,4,5 2,3,6,7 2,3,6,7 2,3,6,7 2,3,6,7 2,3,4,5 4,5,6,7 4,5,6,7 4,5,6,7 4,5,6,7

1,2,3,4,5 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7

Fie că trebuie să aflăm reprezentarea funcţiei în seria Taylor în vecinătatea punctului

01110. Din reprezentarea funcţiei prin submulţimi de coloană rezultă că 0113 y , iar

102 z . Aceasta înseamnă că pentru aflarea coeficienţilor din seria Taylor trebuie să folosim

coloana 2z şi să aflăm în care dintre submulţimile de coloană se află elementul 3. Acest lucru se

verifica pentru submulţimile din liniile cu indicii

Page 85: Aureliu Zgureanu - Codari Informatice

85

1; 3; 1,3; 2,5; 3,4; 1,2,3; 1,2,5; 1,4,5; 2,3,5; 3,4,5; 1,2,3,4; 1,2,3,5; 1,2,4,5; 1,3,4,5; 1,2,3,4,5.

În conformitate cu (2.42) obţinem:

)1)(1)(0)(1()1)(0()1()0(),,,,( 4352313154321 xxxxxxxxxxxxxF

)0)(1)(0()0)(1)(0()1)(1)(0( 541521321 xxxxxxxxx

)1)(1)(1)(0()0)(1)(1()0)(1)(1( 4321543532 xxxxxxxxxx

)0)(1)(1)(0()0)(1)(1)(0( 54215321 xxxxxxxx

)0)(1)(1)(1)(0()0)(1)(1)(0( 543215431 xxxxxxxxx =

= 54353254152132143523131 xxxxxxxxxxxxxxxxxxxxxxx

.543215431542153214321 xxxxxxxxxxxxxxxxxxxxx

Dacă pentru orice 2k se are loc 0,...,, 21

kiiiC , atunci funcţia se numeşte liniară. În criptografie

se accepta funcţii cât mai diferite de funcţiile liniare (funcţii neliniare [73]). În baza Teoremelor

2.6, 2.7, 2.8, 2.10, 2.11, 2.12, 2.13 putem construi după dorinţă diverse funcţii neliniare. În

Anexa 2 este prezentată o programă în mediul de calcul Mathematica, care construieşte

momentan astfel de funcţii. Funcţia booleană reprezentată în Tabelul 2.11 conţine în polinomul

Zhegalkin toate conjuncţiile posibile.

Tabelul 2.11. Exemplu de funcţie booleană cu toate conjuncţiile posibile în polinomul Zhegalkin

54xx

00 01 10 11

0z 1z 2z 3z 1F

3,5,6 1,2,4,7 1,2,4,7 0,3,5,6

2.3. Reprezentarea funcţiilor q-valente prin submulţimi de coloană

Să analizăm funcţia ),...,( 1 nxxF care are în calitate de caracteristică faptul că atât

variabilele ei cât şi însăşi funcţia dată admit valori din mulţimea }1,...,1,0{ q . O astfel de

funcţie se numeşte funcţie din logica q-valentă [130]. Ea poate fi definita ca o aplicaţie

nXXX ...21 pentru nXXX ...21 = }1,...,,1,0{ q şi reprezentată cu ajutorul

Tabelului 2.12

Page 86: Aureliu Zgureanu - Codari Informatice

86

Tabelul 2.12. Reprezentarea funcţiei din logica q-valentă.

nq

n

qqq

Fxxx

111

100000

2

1

1

unde nu quq ,1},1,...1,0{ . Funcţia poate fi privita şi ca o relaţie n-ara nX

R în matricea

căreia elementele sunt din mulţimea . Ca şi pentru funcţiile booleene obişnuite construim

mulţimile },..,,{110

qyyyY şi },...,,{110 nqzzzZ cu ajutorul cărora definim submulţimea de

coloană:

}),(,:{ jiiiZF

zyFYyyS j , }1,...,1,0{ q (2.43)

Funcţia o putem reprezenta cu ajutorul tabelului submulţimilor de coloana (Tabelul 2.13).

Menţionăm că YSq

Z

Fj

1

0 pentru orice j. Multe dintre teoremele anterioare valabile pentru

funcţiile booleene pot fi generalizate şi pentru funcţii q-valente. În Capitolul 3 este elaborat un

sistem de criptare care funcţionează în baza acestor funcţii.

Tabelul 2.13. Tabelului submulţimilor de coloană ale unei funcţii q-valente

0z ... jz ... pz

0F 00

ZFS ... Zj

FS 0 ... pZFS 0

... ...

F 0ZFS ... jZ

FS ... pZ

FS

...

1qF 01

ZF qS ... j

qZF

S 1 ... ZpF qS 1

Page 87: Aureliu Zgureanu - Codari Informatice

87

Exemplul 2.6. De reprezentat prin tabelul submulţimilor de coloană funcţia ),,( 321 xxxF din

logica 3-valentă, definită prin intermediul Tabelului 2.14

Tabelul 2.14. Funcţia 3-valentă ),,( 321 xxxF din Exemplul 2.3

1x 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2

2x 0 0 0 1 1 1 2 2 2 0 0 0 1 1 1 2 2 2 0 0 0 1 1 1 2 2 2

3x 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2

),,( 321 xxxF 1 2 2 1 0 0 1 2 1 0 0 0 1 1 2 2 2 0 0 1 2 0 1 1 0 2 1

Soluţie. În acest caz }2,1,0{ . Considerăm 2 . Atunci },{~211 xxX , iar }{~

32 xX .

Mulţimile de stări ternare sunt

},,,,,,,,{ 876543210 yyyyyyyyyY ={00, 01, 02, 10, 11, 12, 20, 21, 22}

şi

Z= },,{ 210 zzz ={0,1,2,}.

Tabelul 2.15. Reprezentarea matricei 3-dimensionale referitoare la Exemplu 2.6

iz

iy 1x 2x 0 1 2

0

1

2

3

4

5

6

7

8

0

0

0

1

1

1

2

2

2

0

1

2

0

1

2

0

1

2

1

1

1

0

1

2

0

0

0

2

0

2

0

1

2

1

1

2

2

0

1

0

2

0

2

1

1

În conformitate cu Tabelul 2.14 construim matricea 3-dimensională reprezentată în

Tabelul 2.15. În baza acestei matrice şi în conformitate cu definiţia submulţimii de coloană

construim tabelul submulţimilor de coloană (Tabelul 2.16). În coloanele pentru respective ale lui

iy şi j

z din Tabelul 2.16 sunt indicaţi numai indicii elementelor.

Page 88: Aureliu Zgureanu - Codari Informatice

88

Tabelul 2.16. Tabelul submulţimilor de coloană ale funcţii ),,( 321 xxxF din Exemplul 2.6

0z 1z 2z

0F 3,6,7,8 1,3 1,3,5 1F 0,1,2,4 4,6,7 2,7,8 2F 5 0,2,5,8 0,4,6

2.4. Generarea numerelor prime.

În scopuri criptogarfice se utlizează numerele prime mari care sunt găsite cu ajutorul

testelor probabilistice de primalitate.

Unul dintre astfel de teste este testul Fermat [64], [68], [85] care are la bază mica teoremă

Femat: pentru n >1 se alege a >1 şi se calculează 1na mod n, dacă rezultatul este diferit de 1,

atunci numărul n este compus, în caz contrar n este considerat număr pseudoprim. Acest test însă

poate considera un număr compus ca fiind prim (în special numerele Carmichael, care sunt

compuse iar testul Fermat le consideră prime indiferent de numărul de iteraţii). Probabilitatea

erorii în testul Fermat este de ,t unde t reprezintă numărul de iteraţii ale testului, nn)( ,

unde (n) este funcţia Euler. Se recomandă de efectuat circa 50 de iteraţii în realizarea acestui

test. În prezent testul Fermat în forma sa originală nu se mai foloseşte nicăieri, el nu are un

control al erorii şi nu se foloseşte în practică deoarece există alte teste mai bune, dar poate fi

utilizat în fazele incipiente la verificarea primalităţii unor numere foarte mari.

Testul Solovay–Strassen [68], [85], [100] este un alt test de primalitate şi se bazează pe

diferenţa dintre simbolurile Jacoby şi Legendre, aceste simboluri pentru numerele prime n fiind

identice. Probabilitatea erorii în testul Fermat este de ,t unde t reprezintă numărul de iteraţii ale

testului, .21

2)(

nn

În scopul utilizării acestui test în criptografie este necesar de a lua o

valoare suficient de mare a lui t, aproape de 100. În acest caz şansa de a obţine un număr compus

este atât de mică încât putem aplica aceste numere în scopuri criptografice. De menţionat că

acest algoritm numerele Carmichael le determină ca compuse.

Un test mai performant este testul Miller-Rabin [68], [75], [85], [87], [88] cel mai utilizat

test de generare a numerelor pseudoprime pentru algoritmii de criptare. De obicei pentru

verificarea unui număr prim testul Miller-Rabin este necesară o singură iteraţie, dar numărul

recomandabil de iteraţii este 5. Probabilitatea erorii în testul Miller-Rabin este considerabil mai

Page 89: Aureliu Zgureanu - Codari Informatice

89

mică decât în primele două teste şi la o iteraţie ea este .41

4)(

nn

Adică limita de sus a erorii

la singură iteraţie este de 2 ori mai mică decât la testul Solovay–Strassen şi de 4 ori mai mică

decât la testul Fermat. Astfel testul Miller-Rabin este mai eficient decât celelalte astfel de teste.

Cu toate că testul Miller-Rabin este considerat suficient de bun pentru generarea

numerelor prime aplicate în criptografie, există o foarte mică probabilitate ca acest test să

genereze un număr compus. Testele deterministe însă generează în mod obligatoriu numere

prime.

Revenind la Teorema 2.5, trebuie de menţionat că condiţiile din această teoremă sunt

doar suficiente. Am putea modifica unele dintre aceste condiţii pentru a transforma matricea

(2.4). Fie că condiţia (2.13) nu se îndeplineşte, dar are loc condiţia nk [33]. Consideram un

vector ))(),...,(,,...,,( 11,3,22,1*

cn sRsRRRRR

unde ji XXji RRji ,,, şi )( isR este o matrice care

se obţine din matricea (2.12) prin substituţia fiecărui element cu }1,...,1,0{ msi , adică

ii

ii

i

ss

sssR

)( . (2.44)

Teorema 2.17. Fie

)(RA

şi ** RA

iar njja ...1, *

...1 njja – două elemente arbitrare ale matricelor respective. Atunci

smaa cjjjj nn

...*

... 11, unde (2.45)

ccc smsmss ...2

21

1 (2.46)

Demonstraţie. Elementele matricelor A şi *A sunt numere întregi nenegative reprezentate în

baza m. Fie că njj na ...21...1

, unde }.1,...,2,1,0{ mi Atunci

nnn

jj mman

...22

11...1

şi

c

cccn

cncnjj smsmsmmman

...... 22

11

22

11

*...1

smasmsmsmmm cjjc

ccn

nncn

...

22

11

22

11 1

...)...( ,

unde ccc smsmss ...2

21

1 .

Teorema este demonstrată.

Consecinţa 1. Coloanele şi liniile matricei *A sunt progresii aritmetice cu raţiile respectiv egale

cu cm şi .1cm

Page 90: Aureliu Zgureanu - Codari Informatice

90

Într-adevăr, conform structurii matricei date, pentru coloane avem

c

jjjjjjcc

jjjc

jjj maamsmasmannnn )()()( ......1......)1( 21212121

.

Pentru linii se obţine:

.)()()( 1...1......1...

*...

*1... 21212121221

cc

jjjjjjcc

jjjc

jjjjjjjjj mmmaamsmasmaaannnnnn

Consecinţa 2. Dacă iKs din matricea A în condiţiile (2.9) – (2.12) atunci toate elementele

*...1 njja din matricea *A aparţin liniei iK a matricei (n+c)-dimensionale în aceleaşi condiţii (2.9) –

(2.12) şi în care n este substitut prin n +c.

Într-adevăr, se ştie [16] că dacă ji KK , , atunci mjiK mod)()( iar

mjiK mod)( . Fie s – un element al matricei A şi iKs . Deoarece 0Km , atunci

ic

jj Ksman

)( ...1 pentru orice

nJja ...1. Prin urmare ijj Ka

n*

...1.

Din această consecinţă rezultă că dacă s aparţine unei linii care nu conţine numere prime

atunci matricea *A este compusă numai din numere compuse. Matricea *A poate să conţină

numere prime numai în cazul în care iKs şi (i,m)=1. Constatăm de asemenea că dacă iKs

atunci ic

jj Ksman

)( ...1 pentru orice c. Prin urmare, pentru obţinerea intervalelor de numere

cu anumite proprietăţi de la linia iK putem admite pentru c valori arbitrare. Modificând valorile

parametrilor c si s putem modifica şi elementele matricelor .*A Să revenim la matricea (2.5)

pentru care m=6 iar n=3. Această matrice conţine 47 de numere prime din cele 216. Dacă

considerăm s=13 şi k =2 atunci matricea *A conţine 85 de numere prime din acelaşi număr total

de 216. În mediul de calcul Mathematica a fost elaborat un program care construieşte matricele

A şi *A , determină numerele prime în aceste matrice şi numărul de cifre în fiecare dinte aceste

numere. În Anexa 2 este prezentat acest program cu un exemplu pentru cazul m = 6, n = 2 şi

c = 507. Programul a lucrat 0,2 sec. şi a depistat în matricea *A trei numere prime: unul de 2

cifre şi altele două a câte 392 de cifre.

Teorema 2.18. Fie

),,...,,( 1,3,22,1 nRRRR

),...,,,),(),...,(( 1,3,22,11*

nc RRRsRsRR

)(RA

şi ).( ** RA

Atunci n

jjjJ msaann

...*

... 11, (2.47)

unde

....22

11 c

cc smsmss

Page 91: Aureliu Zgureanu - Codari Informatice

91

Demonstraţie. Fie njj na ...21...1

, unde }1,...,2,1,0{ mi . Atunci, în conformitate cu

transformarea avem:

...)...(............ 11

11

11

112121

*...1

nc

cnn

nnc

ncncjj msmsmmmsmssssa

n

,...1

njjn msan

ce implică ....22

11 c

cc smsmss

Consecinţa 1. Coloanele şi liniile matricei *A sunt progresii aritmetice cu raţiile 1 şi m respectiv.

Consecinţa 2. Dacă ijj Kan...1

atunci ijj Kan*

...1.

Într-adevăr, dacă 0Km atunci 0Kms n . Deoarece ijj Kan...1

obţinem

in

jj Kmsan

...1, adică ijj Ka

n*

...1.

Una dintre problemele de ordin superior din secolul informaticii este problema protecţiei

informaţiei, lupta contra spărgătorilor sistemelor de criptare. Un rol important în soluţionarea

acestei probleme o au numerele prime mari care stau la baza elaborării unor sisteme de criptare

[64]. Problema descifrării mesajelor devine foarte complicată în cazul în care numerele indicate

sunt mari (conţin sute sau mii de cifre zecimale), deoarece ea este relaţionată cu problema

factorizării numerelor mari. Cu cat mai mari sunt aceste numere cu atât mai dificilă devine

problema spargerii cifrului bazat pe utilizarea numerelor prime. Majoritatea metodelor de

generare a numerelor mari prime sunt probabilistice [1] şi, din această cauză, nu totdeauna pot

face faţă cerinţelor utilizatorilor. Aşadar, apare problema elaborării metodelor non-probabilistice

(metode deterministe) de generare a numerelor mari prime de o formă generală.

După cum s-a menţionat mai sus, dacă (r,m)=1 (r şi m sunt reciproc prime) atunci linia Kr

conţine un număr infinit de numere prime. Aceste numere au forma

N=bm+r, b=0, 1, 2,..., mn–1. (2.48)

Elementele liniei Kr formează o progresie aritmetică cu primul termen egal cu r şi cu raţia

m. Linia K1 conţine un număr infinit de numere prime pentru orice valoare a lui m. Structura

matricei este invariantă faţă de valorile lui m şi n [20]. Pe linia K1 putem obţine numere prime

oricât de mari. Pentru r =1 din (2.48) obţinem

N–1=bm . (2.49)

Conform criteriului lui Lucas-Lehmer [64], [75] numărul N este prim daca:

)(mod1: 1 Naa N şi ),(mod1:1

Nac cN

(2.50)

unde c este divizor prim al lui N–1.

Din (2.49) si (2.50) rezultă că N–1 trebuie să fie factorizat. Fie s

spppm ...2121 , k

kqqqb ...2121 (2.51)

Page 92: Aureliu Zgureanu - Codari Informatice

92

Atunci

N–1= sksk pppqqq ...... 2121

2121 (2.52)

În mediul de calcul Mathematica au fost elaborat programe, care având valorile date ale

lui iip (i=1, …, s) determină pentru care valori ale lui j

jq ( j=1, …, k) numărul N este prim. Un

program care construieşte numere prime cu un număr determinat de cifre este prezentat în Anexa

2. Este dat un exemplu de lucru în care generatorul “BUZGUCIBI PRIM 1” în 2,8 sec. a

construit 3 numere prime de 354, 353 şi de 354 cifre. Generatorul este compus din trei module.

Primul modul al programei determină numerele prime ip şi puterile lor i cu condiţia ca

p să aibă un număr dat c de cifre zecimale. Numerele ip se aleg dintr-o mulţime P de numere

prime cunoscute, iar exponenţii i sunt funcţii de argumente întregi nenegative in ( )( ii n ).

Al doilea modul determină numerele jq şi puterile lor j cu condiţia că m are forma

determinată de primul modul. Pe linia 1K a matricei A modulul caută numărul N cu valorile lui

m şi b determinate. În rezultat se obţine numărul factorizat în formă canonică

N–1= sksk ppqq ...... 11

11 ,

ce ne permite uşor să aplicăm criteriul lui Lucas-Lehmer de primalitate a numărului N, ceea ce se

îndeplineşte în modulul al treilea. Pentru determinarea numărului N este suficient să introducem

în generator un singur parametru – numărul c de cifre zecimale pe care trebuie să le conţină acest

număr.

Generatorul poate construi şi o mulţime *N de numere prime cu numărul dat de cifre

zecimale. Fiecare modul în parte poate fi folosit pentru soluţionarea problemelor pentru care este

destinat. În Anexa 2 este prezentat modulul al treilea “TESTER DE NUMERE PRIME

«BUZGUCIBI TEST»” care a testat la un număr de 3018 cifre zecimale timp de 13,6 sec. pentru

care descompunerea lui N–1 în factori conţine trei numere prime cu 1004 cifre zecimale fiecare.

Pentru 1286243 m (al 28-lea număr prim Mersenne [20]) se obţine numărul prim

N= 1)12(453132 86243 , care conţine 25966 de cifre zecimale. Investigaţiile arată că pentru

obţinerea unui număr prim cu un număr de cifre mai mare ca 10000000 am putea folosi un

număr m de forma ,)....21( 17272054 pppm unde ip este al i-lea număr prim Mersenne. Cel

mai mare număr prim construit cu acest generator este numărul

Page 93: Aureliu Zgureanu - Codari Informatice

93

N = 6076·(797512048017273358771·793207819539153918901·790748260408799953261·

·787673811495857496211·787058921713269004801·775990905626676159421·

·765537779322671805451·760618661061963874171·758773991714198399941·

·755699542801255942891·754469763236078960071·736637959541012709181)130+1,

care conţine 32589 cifre zecimale.

Matricele multidimensionale pot fi aplicate de asemenea la factorizarea numerelor de

forma 1ia . Pentru a = 2 şi i – număr prim avem aşa numitele numere Mersenne [20] . Ele pot

fi atât prime cât şi compuse. Cel mai mare număr prim Mersenne cunoscut în prezent este

numărul 1243112609 care conţine 12978189 cifre zecimale. A fost descoperit la 23.08.2008 în

cadrul proiectului GIMPS (Great Internet Mersenne Prime Search). În total sunt cunoscute doar

47 numere prime Mersenne. Numere compuse Mersenne sunt mult mai multe. Pentru astfel de

numere apare problema factorizării lor. Aceste numere le putem căuta pe linia 1K . Este elaborată

o programa în mediul de calcul Mathematica care construieşte numere compuse Mersenne şi în

acelaşi timp găseşte un divizor prim al acestui număr [20]. Cel mai mare număr Mersenne

compus găsit de aceasta programă este numărul 12 p , unde

p =375662093344890464881445680922948330514227905416290750436039035193113427960

02563317961928227247467514201588721186924893262288479372404158434263818462065

33709297018957433725284154692096039964739360811191607181481220358909313084517

19609498867813426976014647805530184630477159733866963269642334825861866906474

98417876722482308474728847448834198727492857350730001814074054395386577331967

42459478128659636386492058066281959601200721692299694744825286559153755776722

86548912154147055591112766026414615089316423169849566512856572461922842660864

53530055308127171898542626967064306829748306299659537928642062378119553961547

18392291715372804009352110292082457271811311597136633337146896762908153186751

92145889526838878199852726233520193989760157276653077739577411643650600839089

31250128185602087151549765139791238422988511958507121831373840715454168939282

50434822872548348979502943763622511181338463862168552261151839528701458852800

80373253203512894219098076914576581640321158512789744937640515640969096392544

78507218537346290382647945537653532393918686640643071936605435920613489508262

5943166067763036796988950518528130951459622923007,

iar un divizor prim al acestui număr este

Page 94: Aureliu Zgureanu - Codari Informatice

94

d = 01059349351824743810313089476717328822764648666065200697662456308981484736

04101308739085163595948022722541953899079829219661566995846653494822109539304

53934875230331893960454647507353663943582977297906571490369952574254900935227

51375198188501483161623436488848295408763455574187141231427735721378987050359

97468602755971693559566155918134717963988571761168002902518487032618523731147

87935165005855418218387292906051135361921154707679511591720458494646009242756

58478259446635288945780425642263384142906277071759306420570515939076548257383

25648088493003475037668203147302890927597290079455260685827299804991286338475

49427666744596486414963376467331931634898098555418613339435034820653045098803

07433423242942205119764361973632310383616251642644924383323858629840961342542

90000205096963339442479624223665981476781619133611394930198145144726670302852

00695716596077358367204710021796017890141542179469683617842943245922334164481

28597205125620630750556923063322530624513853620463591900224825025550554228071

65611549659754064612236712860245651830269898625028915098568697472981583213220

15090657084208588751823208296450095223353966768113,

care conţine 1126 cifre zecimale.

Menţionăm că până în prezent nu se cunoaşte nici un divizor al numerelor compuse

Mersenne 12,12,12,12 1061997809751 .

Page 95: Aureliu Zgureanu - Codari Informatice

95

2.5. Concluzii la capitolul 2

Capitolul curent conţine partea teoretică necesară pentru elaborarea algoritmilor de

criptare, descrişi în Capitolul.

Teoremele din 2.4 permit sa investigam repartizarea numerelor prime pe diferite intervale

ale liniilor matricei multidimensionale.

Faptul, că generatoarele elaborate construiesc rapid numere mari prime cu proprietăţi

concrete, permite sa perfecţionăm sistemele existente de criptare bazate pe numere prime. Două

sisteme de acest fel sunt propuse in capitolul următor. Un sistem este bazat pe numere mari

prime, iar altul – pe numere prime şi complexitatea problemei determinării rădăcinilor

polinoamelor de grad superior.

Odată cu creşterea lungimilor cheilor brusc descreşte viteza prelucrării informaţiei.

Problema poate fi soluţionată prin substituirea operaţiilor aritmetice cu numere mari prin operaţii

logice asupra mulţimilor de funcţii booleene reprezentate prin matrice multidimensionale.

Teoremele cuprinse în 2.2 constituie baza teoretica a sistemelor de criptare bazate pe funcţii

booleene. Una din aceste sisteme este prezentata in capitolul următor.

Investigaţiile în domeniul aplicaţiilor funcţiilor din logica q-valentă în sisteme de criptare

a informaţiei se afla la început de cale. Considerăm că aceste funcţii au un viitor promiţător în

aplicarea lor la sistemele de criptare, deoarece anume ele permit reprezentarea sistemelor de mari

dimensiuni prin mulţimi de relaţii [18] cu care ne întâlnim tot mai des în soluţionarea

problemelor care necesită o prelucrare rapidă a informaţiei. În următorul capitol este prezentată

un sistem de criptare care utilizează aceste funcţii.

Rezultatele investigaţiilor făcute în 2.3 pot servi ca bază teoretică pentru elaborarea

sistemelor de criptare cu chei publice variabile care uşor pot fi transmise împreună cu mesajul

criptat. Rezistenţa spargerii sistemului este asigurată de complexitatea mare a problemei

determinării funcţiei după unele fragmente ale derivatelor parţiale ale ei [23]. Rezultatele

indicate pot fi aplicate şi la soluţionarea altor probleme, cum ar fi problema izomorfismului

grafurilor şi a sistemelor de grafuri [17], [19], problema colorării vârfurilor grafului, problema

minimizării funcţiilor booleene şi altele. Reprezentarea funcţiilor prin submulţimi de coloană

face posibil calculul fragmentelor derivatelor funcţiilor de zeci, sute, ba chiar si mii de variabile.

Page 96: Aureliu Zgureanu - Codari Informatice

96

3. SISTEME DE CRIPTARE BAZATE PE MULŢIMI DE RELAŢII MULTI-ARE

În zilele noastre este inadmisibilă operarea cu date secrete fără asigurare de utilizarea lor

de către răuvoitori în caz de interceptare. Orice ţară are un algoritm standardizat pentru criptarea

datelor, orice companie care se respectă foloseşte unul dintre sistemele de criptare pentru

operarea cu date confidenţiale, majoritatea aplicaţiilor care operează cu date mai mult sau mai

puţin confidenţiale au incorporate şi sisteme de criptare.

Problemele legate de sistemele de criptare au fost cercetate în literatura de specialitate şi

monografii, în particular în ([38], [43], [90], [91], [96], [97], [98], [99], [128]).

În acest capitolul, ţinând cont de sursele bibliografice studiate şi având la bază cercetările

efectuate în capitolul 2, au fost obţinute rezultate de bază, care includ elaborarea, descrierea şi

analiza a patru algoritmi de cripatre noi: Cripto 1 [23], Cripto 2 [108], [117], Cripto 3 [107],

[109] şi Cripto 4 [109].

3.1. Sistem de criptare cu set de chei bazat pe numere prime

Pe numerele prime sunt bazate unele sisteme de criptare, în particular – sistemul RSA

[90]. Acest sistem reprezintă un algoritm criptografic cu chei publice, primul algoritm utilizat

atât pentru criptare, cât şi pentru semnătura electronică. Rezistenţa sa criptografică se bazează pe

dificultatea problemei factorizării numerelor întregi mari. Acest algoritm funcţionează în baza

unei perechi de chei legate matematic între ele: o cheie publică, cunoscută de toată lumea, şi una

secretă (cheia privată), cunoscută numai de către deţinătorul acesteia. Generarea cheilor se face

în felul următor:

1. se generează două numere prime, de preferinţă mari, p şi q;

2. se calculează produsul acestor numere qpn ;

3. se calculează funcţia lui Euler [64], [75], [100] )1()1()( qpn .

4. se alege un întreg aleator e, e1 astfel încât e si să fie reciproc prime, adică

.1),( e Pentru sporirea vitezei de calcul, numărul e se alege astfel încât reprezentarea

lui binară să conţină cât mai puţine unităţi. Perechea (n, e) este cheia publică.

5. se calculează un număr întreg d cu proprietatea

)(mod1 ned (3.1)

Pentru calcularea lui d poate fi aplicat algoritmul Euclid extins [75]. Perechea (n, d ) este

cheia secretă.

Notam cu m mesajul clar, iar cu c – mesajul cifrat şi calculam

)(modnmc e (3.2)

Page 97: Aureliu Zgureanu - Codari Informatice

97

Mesajul clar este restabilit prin formula

)(modncm d (3.3)

Cheile de criptare RSA sigure în prezent au lungimi de peste 2048 de biţi.

Menţionăm că rezistenţa criptografică a sistemului dat poate fi mărită numai prin

creşterea numerelor p si q, deci şi a cheii publice n. Ca rezultat descreşte viteza de prelucrare a

informaţiei.

Pentru generarea numerelor prime mari p si q sunt aplicate diverse teste de primalitate:

Fermat [64], [68], [85], Solovay–Strassen [68], [85], [100], Miller-Rabin [68], [75], [85], [87],

[88] – cel mai utilizat test. Toate aceste teste sunt probabilistice, adică generează numere prime

cu o probabilitate diferită de 1, dar foarte aproape de unitate.

Cu toate că testul Miller-Rabin este considerat suficient de bun pentru generarea numerelor

prime aplicate în criptografie, există o foarte mică probabilitate ca acest test să genereze un număr

compus, ceea ce implică urmări imprevizibile pentru utilizatorii algoritmului RSA.

În baza generatorului de numere prime descris în Capitolul 2 am perfecţionat sistemul

RSA în scopul sporirii rezistenţei sale criptografice şi a stopării descreşterii vitezei de

funcţionare a acestui algoritm prin înlocuirea unei singuri perechi de chei cu un cortegiu de

perechi de chei de lungime necesară [23]. Fiecare simbol al mesajului (până la simbolul ce are

numărul de ordine r) este cifrat cu cheie diferită, apoi se revine la începutul cortegiului de chei şi

se reia criptarea în continuare repetând procesul.

Astfel este realizat un algoritm de criptare, numit Cripto1 care conţine:

a) Generatorul de chei, care construieşte trei cortegii de numere

),...,,( 21 reeee , (3.4)

),...,,( 21 rdddd , (3.5)

şi

),...,,( 21 rnnnn , (3.6)

unde iii qpn , ii qp , şi care verifică condiţia

,...2,1,)1)(1(1,1

ke

qpkdrii

iii (3.7)

Perechile de numere prime i

p şi iq se construiesc cu condiţia că descompunerile numerelor

1ip si 1iq în produs de factori primi să conţină numere mari prime. Aceasta asigură o

rezistenţa criptografica mare [84]. Numerele ie se construiesc cu condiţia că reprezentarea lor

binara să conţină un număr minim de unităţi. Aceasta asigură o viteză mai mare de calcul la

Page 98: Aureliu Zgureanu - Codari Informatice

98

criptarea informaţiei. Generatorul de chei „BUZGUCIBI CRIPTO GEN RSA” timp de 1,6 sec. a

generat 5 chei este prezentat în Anexa 2;

b) Codificatorul, care având cortegiul de numere ),...,,( 21 tmmmm , ce reprezintă

codificarea numerică a mesajului într-un sistem oarecare de codificare a caracterelor (de exemplu

ASCII), construieşte, cu ajutorul cheilor publice ),( ii en un alt cortegiu de numere

),...,,( 21 tcccc ,

aplicând formula

)(mod ieii nmc i , .,1 ti (3.8)

Codificatorul „BUZGUCIBI CRIPTO COD RSA” care construieşte cortegiul c al

mesajului este prezentat în Anexa 2.

c) Decodificatorul, care având cortegiile c , d

şi n construieşte cortegiul

),...,,( 21 tmmmm ,

prin aplicarea formulei

)(mod idii ncm i (3.9)

Decodificatorul numit ”BUZGUCIBI CRIPTO DEC RSA”, care decodifică criptograma

primită este prezentat în Anexa 2.

Timpul de decriptare este mult mai mare ca cel de criptare (acelaşi lucru se întâmplă şi

la RSA). Aceasta se datorează faptului că componentele id ale cortegiului d sunt mult mai mari

decât componentele ie ale cortegiului e . Odată cu creşterea lungimii cheilor diferenţa observată

este considerabila, însă aceasta este valabil şi pentru algoritmul RSA obişnuit. Luând în

consideraţie principiul de funcţionare al algoritmului Cripto 1, timpul de lucru al său este acelaşi

ca şi al algoritmului RSA, însă rezistenţa criptografică a algoritmului propus este de cel puţin r

ori mai mare decât rezistenţa algoritmului RSA, deoarece pentru spargerea lui trebuie să aflăm r

chei în loc de o singură cheie.

Astfel, avantajul algoritmului Cripto 1 faţă de algoritmul RSA constă în următoarele:

având chei de aceeaşi lungime ca la algoritmul RSA rezistenţa este sporită iar

timpul de lucru este acelaşi;

având chei de lungime mai mică decât la RSA dar în cantitate mai mare se măreşte

viteza de lucru al algoritmului, rezistenţa fiind nu mai mică ca la RSA.

Metodele de spargere pentru Cripto 1 sunt aceleaşi ca şi pentru RSA. La momentul actual se cunoaşte o singură metodă de spargere – factorizarea cheii publice n care având o mărime de 2048 de biţi este considerată sigură. Cu toate acestea pentru siguranţa documentelor secrete cheia publică în RSA trebuie să aibă o mărime de 4096 de biţi şi deja timpul de criptare şi mai ales cel

Page 99: Aureliu Zgureanu - Codari Informatice

99

de decriptare creşte considerabil. În acest context algoritmul de criptare Cripto 1 poate fi o soluţie pentru evitarea creşterii ineluctabile a timpului de execuţie a RSA odată cu mărirea lungimii cheii.

În Tabelul 3.1 şi în Figurile 3.1 – 3.4 sunt prezentate date comparative între algoritmul RSA şi algoritmul Cripto1 cu o mărime a cheii de 2048 biţi (în Anexa 1 este expus un set mai complet de diagrame). Testările au fost efectuate pentru un set de 5 chei ale algoritmului Cripto 1 la un calculator cu procesor AMD Phenom-II cu 3 nuclee, 2.8 GHz, 2 GB RAM. Algoritmii incluşi în tabel au fost testaţi pe aceleaşi texte, ele având lungimile specificate în tabele. Adică algoritmii au fost testaţi pe texte reale de lungimile menţionate. Acelaşi principiu este aplicat şi la testările efectuate în compartimentele ce urmează. Pentru estimarea algoritmului RSA este utilizat algoritmul Cripto 1 cu o singură cheie.

Tabelul 3.1. Date statistice de lucru pentru algoritmii de criptare RSA şi Cripto1

Sistemul de criptare Numărul de simboluri

în mesaj Timpul pentru

criptare Timpul pentru

decriptare RSA 0,008 3,74

Cripto 1 100

0,03 3,76 RSA 0,01 7,47

Cripto 1 200

0,03 7,52 RSA 0,013 11,22

Cripto 1 300

0,03 11,25 RSA 0,016 14,96

Cripto 1 400

0,03 14,97 RSA 0,021 18,69

Cripto 1 500

0,05 18,80 RSA 0,03 37,36

Cripto 1 1 000

0,06 37,53 RSA 0,11 74,68

Cripto 1 2 000

0,12 75,08 RSA 0,16 112,05

Cripto 1 3 000

0,20 112,76 RSA 0,36 186,90

Cripto 1 5 000

0,39 187,71 RSA 1,15 373,93

Cripto 1 10 000

1,18 376,21 RSA 29,20 1901,36

Cripto 1 50 000

29,87, 1907,32 RSA

Cripto 1 100 000

Page 100: Aureliu Zgureanu - Codari Informatice

100

Criptare 1000 - 10 000

0

0,2

0,4

0,6

0,8

1

1,2

1,4

1000 2000 3000 5000 10000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 1

Fig. 3.1. Diagrama comparativă RSA–Cripto 1 pentru mesaje de 1000-10000 simboluri

Decriptare 1000 - 10 000

050

100150200250300350400

1000 2000 3000 5000 10000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 1

Fig. 3.2. Diagrama comparativă RSA–Cripto 1 pentru mesaje de 1000-10000 simboluri

Criptare 1000 - 50 000

0

5

10

15

20

25

30

35

1000 2000 3000 5000 10000 50000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 1

Page 101: Aureliu Zgureanu - Codari Informatice

101

Fig. 3.3. Diagrama comparativă RSA–Cripto 1 pentru mesaje de 1000-50000 simboluri

Decriptare 1000 - 50 000

0

500

1000

1500

2000

2500

1000 2000 3000 5000 10000 50000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 1

Fig. 3.4. Diagrama comparativă RSA–Cripto 1 pentru mesaje de 1000-50000 simboluri

Pentru mesajele cu un număr de simboluri de până la 1000 criptarea este mai rapidă la

RSA deoarece în Cripto1 se memorizează un set din 5 perechi de chei şi în rezultat obţinem o

diferenţă de 0,01-0,02 sec. Aceasta este şi diferenţa de timp la criptarea şi decriptarea mesajelor

de lungime mai mare, însă în raport cu timpul total de criptare şi decriptare al acestor mesaje

diferenţa dată este neglijabilă.

Cu algoritmul Cripto 1 au mai fost efectuate multiple testări cu aceleaşi texte, însă cu

seturi de un număr variat de chei, mărimea lor rămânând aceeaşi (2048 biţi). Aceste testări au

confirmat că numărul de chei în set practic nu influenţează viteza de lucru al algoritmului,

diferenţa de timp la seturi de lungime diferită fiind de ordinul sutimilor de secundă. Această

diferenţă este cauzată numai de operarea cu locuri diferite ale memoriei calculatorului şi poate fi

neglijată, mai ales pentru procesul de deciptare, unde timpul este esenţial mai mare ca la cripatre.

Numerele prime mari aplicate la elaborarea sistemelor de criptare cu cheie publică

implică un timp suficient de mare pentru criptare şi decriptare, iar în cazul RSA decriptarea are

loc între-un interval de timp şi mai mare decât criptarea.

În acest context este actuală întrebarea: cât de eficienţi sunt algoritmii simetrici de

criptare care funcţionează în baza numerelor prime mari? În această direcţie se propune de

elaborat un sistem de criptare în care să fie utilizate numerele prime mari în combinare cu

matricele multidimensionale

Page 102: Aureliu Zgureanu - Codari Informatice

102

3.2. Sistem simetric de criptare bazat pe dezvoltarea polinomială a numerelor

În paragraful dat este elaborat un sistem simetric de criptare Cripto 2 însă care la fel ca

RSA şi Cripto 1 funcţionează în baza numerelor prime mari, a matricelor multidimensionale care

reprezintă mulţimile de relaţii multi-are şi a dezvoltării polinomiale a numerelor.

Să examinăm un caz particular al relaţiilor pe mulţimi analizate în Capitolul 2. Fie o

familie de mulţimi }...,,,{ 21 nXXXX unde }...,,,{ 21 iiiii xxxX , ni ,1 şi o mulţime

},...,{ 1 r cu elemente arbitrare (în cazul nostru – numere întregi). Pe această familie sunt

definite k relaţii

jdjj XXj RR ....1

,,1,2( kjnd j }),...,,2,1{,...,, 21 njjjjd

ca submulţimi ale produselor carteziene jdjjj XXX ...

21. Matricele acestor relaţii sunt

matrice jd - dimensionale cu elemente din mulţimea . Notăm cu R cortegiul cu componentele

jR , adică ).,...,...,,( 1 kj RRRR Acestui cortegiu îi punem în corespondenţă o matrice

n-dimensională

)(RAR , (3.10)

elementele căreia sunt notate cu nsssa ......1 . Să explicăm obţinerea acestor elemente. Construim

produsul cartezian

},...,{...},...,{... 111121 1 nnnn xxxxXXX ,

care, evident conţine nu ...1 elemente. Cu aceste elemente compunem o matrice

bidimensională cu u linii şi n coloane care corespunde familiei de mulţimi X (Figura 3.5, partea

stângă).

RA

u

i

1

n

n

n

nsss

n

n

xxx

xxx

rxxXXX

1

1

1

1

1111

1

ukuju

ikiji

kj

kj

rrr

rrr

rrrRRR

1

1

1111

1

Fig. 3.5. Reprezentarea matricei n-dimensionale care corespunde cortegiului R

Compunem o altă matrice bidimensională |||| ijr cu u linii şi k coloane care corespunde

relaţiilor din R (Figura 3.5, partea dreaptă), unde djj ssij rr ...1

cu elementele djj ss ...,,

1 selectate

Page 103: Aureliu Zgureanu - Codari Informatice

103

în linia i pe locurile djj ...,,1 . Aceste locuri indică mulţimile djj XX ...,,

1 pe care este definită

relaţia jR .

Pentru simplitate substituim elementele s

x cu indicele respectiv s aşa cum e arătat în

Figura 3.6. Liniile matricei din partea stângă în Figura 3.6 reprezintă indicii elementelor matricei

RA . Liniile matricei din partea dreaptă formează elementele matricei RA :

),,...,,...,( 1......1 ikijisss rrran

(3.11)

Cortegiului (3.11) i se asociază un număr ic în baza y care verifică condiţia ,max hy

rh ,1 :

ikjk

ijk

ii ryryrc ......11 =

k

j

jkij yr

1 , ui ,1 . (3.12)

Astfel obţinem cortegiul

),...,,...,( 1 ui cccc . (3.13)

RA

u

i

1

n

n

n

sss

XXX

1

1

1

111

ukuju

ikiji

kj

kj

rrr

rrr

rrrRRR

1

1

1111

1

u

i

c

c

cc

1

Fig. 3.6. Reprezentarea simplificată a matricei n-dimensionale ce corespunde cortegiului R

Astfel, prin transformarea (3.10), cortegiul c (3.12), (3.13) este pus în corespondenţă

cortegiului R . Transformarea inversă

)(1 cR (3.14)

în general este mult mai complicată [21], [23], [24], [110].

În unele cazuri particulare putem găsi coordonatele vectorului cortegiului R după

coordonatele cortegiului c (acest lucru a fost realizat la investigarea distribuţiei numerelor prime

în mulţimea numerelor naturale, în rezultat fiind elaborat un algoritm de generare a numerelor

prime).

Dacă transformarea (3.14) este dificilă, putem folosi acest lucru la elaborarea sistemelor

de criptare a informaţiei.

Fie că trebuie să cifrăm coordonatele cortegiului ),...,,( 21 tmmmm , care reprezintă

codificarea numerică a textului clar dat, în unul din sistemele de codificare dorite (fie ASCII).

Considerăm coordonatele acestui cortegiu ca fiind elemente ale mulţimii . În aşa caz aceste

Page 104: Aureliu Zgureanu - Codari Informatice

104

coordonate trebuie sa fie elemente ale matricelor .jR Dacă coordonatele vectorului nu se repetă

conform unei legi determinate atunci toate matricele jRA trebuie să fie de ordinul n [110]. Fie că

bat (3.15)

Atunci matricea RA poate avea forma din Figura 3.7, unde an 2log , bk iar

coordonatele cortegiului c se calculează după formula

.,1,max,,1,1

)1( thyaiymc hijb

i

b

jjbii

(3.16)

Scrisă în formă desfăşurată această formulă are forma:

,

...

......

...

22)1(

11)1(

32

3221

3123

22

221

212

212

1111

abb

abab

abaa

bb

bb

b

bb

bb

b

bbb

mymymc

mymymcmymymc

mymymc

(3.17)

unde ayyy ,...,, 21 sunt chei private. În particular, se poate lucra şi cu o singură cheie privată y.

1R ... jR ... bR

a

i

1

ng

ng

ng

sss

xxx

1

1

1

111

abjbaba

ibjbibi

bj

bj

mmm

mmm

mmmRRR

)1(1)1(

)1(1)1(

1

1

a

i

c

c

cc

1

Fig. 3.7. O formă de reprezentare a matricei RA

Să analizăm egalităţile din (3.17). Spre exemplu, prima egalitate poate fi considerată ca o

ecuaţie liniară în raport cu necunoscutele bmm ,...,1 , cu coeficienţii nedeterminaţi

12

11

1 ,...,, yyy bb

şi termenul liber necunoscut 1cmb . Soluţiile în numere întregi ale acestei ecuaţii, pentru 1y

cunoscut şi care satisfac condiţiilor (3.17), se află uşor prin reprezentarea numărului 1c in baza

1y . Însă în cazul în care 1y este necunoscut soluţionarea este foarte dificilă.

Page 105: Aureliu Zgureanu - Codari Informatice

105

Pe de alta parte, această egalitate poate fi considerată ca o ecuaţie algebrică de gradul b–1

în raport cu necunoscuta 1y şi cu coeficienţi nedeterminaţi, pentru care 1y este soluţie. Aceasta

înseamnă ca 1y poate fi căutat printre divizorii termenului liber bmc 1 , unde bm . Dând

valori lui bm şi factorizând termenul liber putem încerca să aflăm cheia 1y . Pentru ca această

încercare să aibă mai puţini sorţi de izbândă este necesar ca 1y să fie un număr mare prim.

Fie t este un număr compus de forma

r

rt ...2121 (3.18)

Ţinând cont de cele expuse mai sus alegem un factor (sau un produs de câţiva factori) i

i şi considerăm i

ib . Numărul a este egal cu produsul factorilor rămaşi. Dacă ,1r adică

11t şi 11 atunci reprezentăm 111 şi considerăm 1

1a , 2

1b . În cazul în care

11 , adică, atunci când numărul t este prim, adăugăm una sau câteva componente fictive ale

cortegiului m şi obţinem un alt număr t compus. Componentele fictive nu se descifrează de

decodificator. În mod analog aplicăm acest procedeu asupra tuturor egalităţilor din sistemul

(3.17).

În baza celor expuse a fost elaborat un sistem de criptare, numit Cripto 2, care este

alcătuit din:

generatorul de chei, care construieşte numerele mari prime ayy ,...,1 (cheile private) cu

ajutorul generatorului elaborat în teză, mărimea lor fiind în funcţie de cerinţele concrete

(securitatea sporită necesită chei mai mari, viteza mai mare de prelucrare a informaţiei cere chei

mai mici, volumul de informaţie la fel necesită diferite lungimi de chei, modul de funcţionare a

sistemului – dacă se utilizează a chei ele pot fi mai mici, dacă mai puţine sau una singură –

trebuie să fie mai mari etc., toate aceste cerinţe fiind interdependente);

codificatorul, care construieşte cortegiul c în baza coordonatelor cortegiului m , a

parametrilor a, b, t şi cheilor private ayy ,...,1 care la fel se criptează aplicând unul din sisteme

sigure de criptare;

decodificatorul, care construieşte cortegiul m în bază cortegiilor ),...,,...,( 1 ui cccc şi

),...,( 1 ayyy , decodifică cortegiul m şi imprimă textul decodificat, restabilind-ul după codurile

ASCII obţinute în m .

Page 106: Aureliu Zgureanu - Codari Informatice

106

Descrierea algortimului Cripto2. Fie T un text arbitrar, ce conţine N caractere (inclusiv

spaţiul liber). Numărul N se numeşte lungime a textului T. Vom considera că Textul T este

reprezentat în codurile ASCII. Prin urmare, textul T poate fi privit ca un cortegiu numeric de

lungime N:

).,...,,...,( 1 Ni mmmT

Fie acest text trebuie criptat cu ajutorul unu set de chei Y. În aceste condiţii criptarea

textului T poate fi efectuată în confofrmitate cu următorul algoritm:

Pasul 1. Reprezentăm numărul N ca un produs de două numere N=a·b. În acest scope e suficient

de luat în calitate de a primul divizor mai mare decât unu al numărului N.

Pasul 2. Formăm matricea RA cu numărul de linii a şi numărul de coloane b. Elementele

matricei RA se calculează după formula:

.),( )1( jbiR mjiA

Această matrice conţine N elemente (N=a·b).

Pasul 3. Calculăm setul de chei

),,...,,( 21 lyyyY unde .al

Pentru acesta folosim generatorul de numere prime “BUZGUCIBI PRIM 1”.

Pasul 4. Pentru fiecare linie i a matricei A se calculează un număr ic în conformitate cu formula

(3.16).

Pasul 5. Stop. Cortegiul ),...,,...,( 1 ai cccC conţine textul iniţial T în varianta criptată.

Remarcă. Dacă numărul N este prim atunci la textul iniţial T adăugăm un simbol oarecale pentru

a obţine text de lungime, care nu este număr prim.

Din descrierea algoritmului Cripto 2, observăm că numărul de linii a şi numărul de

coloane b ale matricei RA sunt estimate prin O(N).

Pentru a găsi reprezentarea numărului N ca produs a două numere a şi b (N=a·b) e

suficient să alegem în calitate de a primul divizor al lui N. Pentru aceasta sunt necesare O(N)

operaţii.

Realizarea pasului 2 se face în timp constant O(1), şi nu poate depinde de lungimea N a

textului T. calcularea matricei RA , evident necesită O(N) operaţii (se calculează a·b elemente ale

matricei). Generarea unei chei se face prin intermediul algoritmului “BUZGUCIBI PRIM 1”,

complexitatea căruia nu depinjde de lungimea textului T. deci generarea unei chei se face în timp

constant O(1). Pentru criptarea textului, algoritmul Cripto 2 foloseşte un set de chei

),,...,,( 21 lyyyY ).(NOal Prin urmare, generarea celor l chei se face în timp O(N).

Page 107: Aureliu Zgureanu - Codari Informatice

107

Menţionăm, că deoarece ,2a setul Y ar putea fi limitat la un număr fixat de chei, de

exemplu l = 2 (sau l = 3), ceea ce ar însemna că timpul necesar pentru generarea setului de chei

nu deăinde de N.

Pentru a obţine textul criptat, la pasul 5 se calculează cortegiul de numere

),...,,...,( 1 ai cccC , pentru care se folosesc O(N) operaţii. Astfel obţinem estimarea

complexităţii algoritmului Cripto 2.

Teorema 3.1. Algoritmul Cripto 2 rezolvă problema criptării unui text T de lungimea N în timp

O(N).

Sistemul este elaborat şi testat în mediul de calcul Mathematica. Unele date referitoare la

timpul de funcţionare a sistemului Cripto 2 în comparaţie cu sistemele RSA şi sistemul AES care

este la fel ca Cripto 2 un algoritm simetric, sunt indicate în Tabelul 3.2 şi în Figurile 3.8 – 3.11

(în Anexa 1 este prezentat un set mai larg de diagrame referitoare la aceste date). Pentru aceste

date comparative au fost aleşi algoritmii RSA şi AES, deoarece cheile sistemului Cripto 2 sunt

comparabile cu cele ale lui RSA (participă numere prime mari), iar AES este un sistem simetric

(ca şi Cripto 2) utilizat la momentul actual în calitate de standard naţional de criptare în SUA.

Pentru estimarea lui RSA a fost utilizat algoritmul Cripto 1 cu o singură cheie, iar algoritmul

AES este parte componentă a mediului Mathematica ca pachet adiţional.

Tabelul 3.2. Date statistice de lucru pentru algoritmii de criptare RSA, Cripto2 şi AES-256

Sistemul de criptare Numărul de

simboluri în mesaj Timpul pentru

criptare Timpul pentru

decriptare

RSA 0,008 3,74

Cripto 2 0,06 2,21 AES 256

100

0,03 0,03

RSA 0,01 7,47 Cripto 2 0,06 2,22

AES 256

200

0,04 0,05

RSA 0,013 11,22

Cripto 2 0,06 2,22

AES 256

300

0,08 0,08

RSA 0,016 14,96

Cripto 2 0,06 2,23

AES 256

400

0,09 0,09

Page 108: Aureliu Zgureanu - Codari Informatice

108

RSA 0,021 18,69

Cripto 2 0,06 2,22

AES 256

500

0,13 0,13

RSA 0,03 37,36

Cripto 2 0,08 2,23

AES 256

1 000

0,22 0,23

RSA 0,11 74,68

Cripto 2 0,09 2,25

AES 256

2 000

0,45 0,45

RSA 0,16 112,05

Cripto 2 0,09 2,28

AES 256

3 000

0,64 0,70

RSA 0,36 186,90

Cripto 2 0,14 2,34

AES 256

5 000

1,09 1,15

RSA 1,15 373,93

Cripto 2 0,17 2,65

AES 256

10 000

2,20 2,29

RSA 29,20 1901,36

Cripto 2 0,70 11,61

AES 256

50 000

10,94 11,41

RSA

Cripto 2 1,54 39,22

AES 256

100 000

21,81 22,78

RSA

Cripto 2 4,57 169,37

AES 256

200 000

43,54 45,55

RSA

Cripto 2 9,95 440,20

AES 256

300 000

68,37 69,46

RSA

Cripto 2 10,08 1386,25

AES 256

500 000

109,01 114,02

Page 109: Aureliu Zgureanu - Codari Informatice

109

Criptare 100 - 1 000

0

0,05

0,1

0,15

0,2

0,25

100 200 300 400 500 1000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 2AES 256

Fig. 3.8. Diagramă comparativă RSA–AES256–Cripto 2 pentru mesaje de 100-1000 simboluri

Decriptare 100 - 1 000

05

10152025303540

100 200 300 400 500 1000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 2AES 256

Fig. 3.9. Diagramă comparativă RSA–AES256–Cripto 2 pentru mesaje de 100-1000 simboluri

Criptare 1 000 - 10 000

0

0,5

1

1,5

2

2,5

1000 2000 3000 5000 10000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

Cripto 2

AES 256

Page 110: Aureliu Zgureanu - Codari Informatice

110

Fig. 3.10. Diagramă comparativă AES256–Cripto 2 pentru mesaje de 1000-10000 simboluri

Decriptare 1000 - 10 000

0

0,5

1

1,5

2

2,5

3

1000 2000 3000 5000 10000

Lungimea mesajului (simb)

Tim

pul d

e lu

cru

(sec

.)

Cripto 2AES 256

Fig. 3.11. Diagramă comparativă AES256–Cripto 2 pentru mesaje de 1000-10000 simboluri

Testările date au fost efectuate la un calculator cu procesor AMD Phenom-II cu 3 nuclee,

2.8 GHz, 2 GB RAM.

Din tabelul 3.2 se observă că Cripto 2 în comparaţie cu RSA posedă un timp de criptare

mai bun, începând cu un anumit volum de informaţie ).200( V În cazul volumului mic de

informaţie ),2001( V cu toate că RSA este mai rapid, diferenţa de timp este nesemnificativă.

Rezultate impunătoare pentru Cipto 2 obţinem la un volum de .000100V În ce priveşte

decriptarea informaţiei, algoritmul Cripto 2 este întotdeauna mai rapid decât RSA.

Dacă să facem comparaţie cu algoritmul AES luând în consideraţie timpul total de

criptare şi decriptare, atunci pentru mesaje cu circa 5000 de caractere aceste două sisteme sunt

comparabile, iar pentru mesaje de volum ,00010000050 V Cripto 2 este mai rapid. În

celelalte cazuri AES are prioritate la viteza de execuţie. Aşadar Cripto 2 poate fi utilizat cu

succes pentru mesajele de volum ,00010000050 V întrecând la capitolul viteza de execuţie

ambii algoritmi – RSA şi AES.

Din acest tabel şi diagrame se mai observă că în general, productivitatea sistemului

Cripto 2 este mult mai mare decât la RSA (adică sistemul Cripto 2 este mai rapid şi poate opera

în mod eficient cu mesaje de volum mare de informaţie; de exemplu, sistemul RSA devine

impracticabil în cazul unor volume mari de informaţie), dar mai mică decât la AES. Aceasta se

explică prin principiile de funcţionare diferite ale acestor algoritmi, dar şi prin lungimi diferite a

cheilor. Algoritmul Cripto 2 pe care a fost efectuată testarea are a chei de lungime 192 biţi

fiecare, deci mărimea totală a cheii este de 192·a biţi. Însă numărul de chei poate varia (de la 1 la

a) iar viteza de lucru se modifică nesemnificativ (la fel ca la Cripto 1 în raport cu RSA), diferenţa

constând numai în timpul de criptare sau decriptare a acestor chei.

Page 111: Aureliu Zgureanu - Codari Informatice

111

Un lucru important este că cheile în sistemul Cripto 2 se schimbă de la mesaj la mesaj,

ele fiind criptate prin intermediul algoritmului Cripto 1 (sau altui algoritm sigur – de exemplu

RSA care este adesea practicat în aceste scopuri), apoi alipite la cortegiul c şi transmise spre

adresant. Aici trebuie de menţionat că pentru criptarea cheilor se pot folosi diferite sisteme de

criptare practicate în prezent, iar rapiditatea acestor sisteme de asemena va influenţa viteza de

lucru al lui Cripto 2. La decriptare cheia criptată se selectează din cortegiul c , se decriptează şi

apoi se purcede la decriptarea criptogramei.

Pentru spargerea acestui sistem este necesar de rezolvat sistemul (3.17) în care cunoaştem

doar termenii din partea stângă a fiecărei ecuaţii cu coeficienţi nedeterminaţi. Termenul liber al

ecuaţiei polinomiale i din (3.17) nu este cunoscut, el fiind egal cu ci – mib, unde mib este codul

unui caracter din ASCII. Pentru a rezolva fiecare ecuaţie din (3.17) se poate încerca factorizarea

termenului liber pentru găsi eventualele rădăcini ale polinomului respectiv, însă datorită faptului

că coeficienţii sunt nedeterminaţi, acest lucru nu are sorţi de izbândă.

Cu toate că sistemele bazate pe numere prime mari sunt suficient de sigure ele nu pot

lucra cu un volum de informaţie la fel de mare precum alte sisteme (de exemplu AES), deoarece

necesită un timp de lucru semnificativ. În acest scop se pot folosi sisteme care funcţionează în

baza altor principii, o direcţie în acest sens fiind utilizarea funcţiilor booleene pentru care în

capitolul 2 au fost demonstrate o serie de proprietăţi utile în scopul dat.

3.3. Sistem de criptare bazat pe funcţii booleene

Funcţiile booleene şi proprietăţile lor sunt pe larg aplicate în criptografie. Operaţiile cu

funcţiile booleene sunt foarte rapide şi acest lucru permite elaborarea algoritmilor criptografici

cu viteză de lucru sporită. Un astfel de algoritm este propus în acest paragraf. Algoritmul este

bazat pe proprietăţi ale mulţimilor de relaţii multi-are, matricelor multidimensionale ca un

instrument de efectuare a operaţiilor cu funcţiile booleene şi reprezentarea funcţiilor booleene

prin submulţimi de coloană.

În Capitolul 2 au fost studiate funcţiile booleene şi demonstrate unele proprietăţi ale lor

care pot fi aplicate la elaborarea sistemelor de criptare în combinare cu matricele

multidimensionale.

Să consideram un caz particular pentru familia de mulţimi }...,,,{ 21 nXXXX ,

studiată de asemenea în capitolul 2, şi anume cazul în care

}.1,0{...21 nXXX

Page 112: Aureliu Zgureanu - Codari Informatice

112

Notăm relaţiile definite pe aceste mulţimi cu

jdjj XXj MM ....1

,

unde ,,1,2( kjnd j }),...,,2,1{,...,, 21 njjjjd

obţinând astfel cortegiul

)...,,...,,( 1 kj MMMM

Acestui cortegiu îi punem în corespondenţă o matrice n-dimensională

),(MAM

cu ui ,0 , kj ,1 [107], [109] reprezentată în Figura 3.12. În această matrice

nXXj MM ....

iar

}1,0{... n

mmij .

Prin urmare, matricea dată reprezintă un sistem de k funcţii booleene de variabilele nxx ,...,1 .

Punem în corespondenţă acestei matrice un cortegiu de numere

utmmmm ti ),,...,,...,( 0 , .,0,21

timmk

j

jkiji

(3.19)

tn 2log , .maxlog2 imk (3.20)

MA

u

i

0

111

000

1

1

n

nxxx

ukuju

ikiji

kj

kj

mmm

mmm

mmmMMM

1

1

0001

1

u

i

m

m

mm

0

Fig. 3.12. Reprezentarea matricei MA

Prin analogie (Figura 3.13) construim o altă matrice DA căreia îi punem în corespondenţă

un cortegiu de numere d

utdddd ti ),,...,,...,( 0 , .,0,21

tiddk

j

jkiji

(3.21)

Page 113: Aureliu Zgureanu - Codari Informatice

113

DA

u

i

0

111

000

1

1

n

nxxx

ukuju

ikiji

kj

kj

ddd

ddd

dddDDD

1

1

0001

1

u

i

d

d

dd

0

Fig. 3.13. Reprezentarea matricei DA

Cu aceste două matrice putem efectua operaţii logice cum ar fi ,DM AA ,DM AA

DM AA etc., obţinând în rezultat alte matrice de aceleaşi dimensiuni. Să analizăm, de exemplu,

operaţia (suma după modulul 2). Fie că CDM AAA . În acest caz ijijij dmc . Ţinând

cont de proprietăţile operaţii de adunare după modulul 2, obţinem:

.)()( MDDMDDM AAAAAAA

Aşadar

CDM AAA , .MDC AAA (3.22)

Din (3.22) rezultă că matricea DA poate servi în calitate de cheie privată pentru criptarea

şi decriptarea cortegiului m care reprezintă codul ASCII (sau oricare alt cod) al textului clar M

prin intermediul cortegiului c (textul cifrat):

utcccc ti ),...,,...,( 0 , ,,0,21

ticck

j

jkiji

ijijij dmc (3.23)

Să analizăm cum putem construi cheia privată. Pentru aceasta revenim la Figura 3.12

După cum am menţionat mai sus, acest tabel reprezintă un sistem de funcţii booleene

kj FFF ,...,,...,1 de variabilele nxx ,...,1 . Fie că relaţiilor kj DDD ,...,,...,1 le corespund respectiv

funcţiile kj FFF ,...,,...,1 cu valorile din coloanele respective în Figura 3.13. Presupunem că

funcţiile sunt reprezentate prin submulţimile de coloană (Tabelul 3.3), ki ,1 .

Tabelul 3.3. Reprezentarea funcţiilor jF prin submulţimi de coloană

0z … jz … sz

1iF 0

1zFi

S … j

i

z

FS 1 … s

i

zFS 1

Page 114: Aureliu Zgureanu - Codari Informatice

114

Vom considera numai funcţii jF pentru care se îndeplinesc condiţiile

kjSSSS jzF

zF

zF

s

jjj,1,... 1

11

01 . (3.24)

Pentru toate valorile lui j vom obţine un cortegiu ),...,,...,( 1 kj SSSS care poate juca

rolul de cheie privată.

Fie că în indicele i al lui id , valorile primelor variabile formează starea binară

qy ...1 (Figura 3.13). Atunci, conform definiţiei submulţimii de coloană valorile lui ijd se

obţin din relaţia

jq

jqij Sy

Syd

dacă,0dacă,1

(3.25)

Aşadar, cortegiul S determina univoc matricea DA . Submulţimile jS se aleg cu condiţia

YSk

jj

1

(3.26)

Această condiţie asigură schimbarea componentelor cortegiului m prin intermediul

cortegiului d . Relaţia (3.25) asigură un calcul rapid al valorii funcţiei pe starea binara

ni ......1 .

Deoarece 2Y , atunci pentru o singură funcţie putem construi 22 submulţimi de

coloană, iar pentru k funcţii avem

22 k

chei diferite. Prin urmare securitatea sistemului, care este în funcţie şi de cantitatea de chei

private, poate fi aleasă prin parametrul şi submulţimile jS .

În baza celor expuse în mediul de calcul Mathematica 6 a fost elaborat un sistem de

criptare a informaţiei – Cripto 3 [107], [109] (codul-sursă este prezentat în Anexa 2) – format

din:

generatorul de chei, care generează cortegiul ).,...,,...,( 1 kj SSSS Componentele jS ale

cortegiului S sunt alese în mod aleator ca submulţimi ale mulţimii Y şi cu respectarea condiţiei

(3.26). Utilizând (3.25) şi (3.21) construim cortegiul );,...,( 0 tddd

Page 115: Aureliu Zgureanu - Codari Informatice

115

codificatorul, care construieşte cortegiul ),...,( 0 tccc (în baza cortegiilor m şi d

utilizând (3.23), codifică cortegiul ),...,,...,( 1 kj SSSS prin intermediul sistemului Cripto 2 sau

cu oricare alt sistem sigur şi, prin concatenarea lui cu cortegiul c , construieşte cortegiul g ;

decodificatorul, care decodifică cortegiul ),...,,...,( 1 kj SSSS selectat din cortegiul g ,

construieşte cortegiul ),...,( 0 tddd utilizând formulele (3.21) şi (3.25), construieşte cortegiul

),...,,...,( 0 ti mmmm în baza cortegiilor ),...,( 0 tccc şi ),...,( 0 tddd utilizând formula (3.22)

şi imprimă textul decodificat, restabilind-ul după codurile ASCII obţinute în m .

Descrierea algoritmului Cripto 3. Fie M un mesaj arbitrar ce conţine N caractere (inclusiv spaţiile

libere). Numărul N se numeşte lungime a mesajului M. Vom considera că mesajul M este

reprezentat în codurile ASCII. Prin urmare, mesajul M poate fi privit ca un cortegiu numeric de

lungime N:

).,...,,...,( 1 Ni mmmM

Fie că acest text trebuie criptat cu ajutorul unei chei, care la fel reprezintă un cortegiu de

numere ).,...,,...,( 1 ti dddD

În acest scop vom utiliza următorul algoritm (Cripto 3):

Pasul 1. În conformitate cu formulele (3.20) calculăm

Nn 2log şi .maxlog2 imk

Pasul 2. Formăm matricea MA cu numărul de linii N şi numărul de coloane k. Elementele ijm de

pe linia i a matricei MA reprezintă cifrele lui Mmi scris în baza 2, adică }.1,0{ijm Deci

calculăm aceste elemente. Dacă numărul Mmi în baza 2 are mai puţin de k cifre el se

completează cu zerouri în faţa acestor cifre până la numărul de cifre k.

Pasul 3. Se generează aleator cheia, care este un cortegiu cu k componente. Fiecare componentă

la rândul său este un cortegiu cu lungimea aleasă aleatoriu. Deci, se generează aleatoriu k numere

,,...,, 21 k

care stabilesc aceste lungimi, toate cuprinse între 0 şi ,12 valoarea lui τ fiind 3 sau 4 în

funcţie de lungimea aleasă a cheii. Apoi, pentru fiecare componentă i a cheii se generează i

numere diferite cuprinse la fel între 0 şi ,12 completând astfel componentele acestei chei. Se

aranjează toate componentele cheii în ordine crescătoare.

Pasul 4. Alcătuim matricea cheii care participă la adunarea modulo 2 cu matricea mesajului.

Aceasta este o matrice MD cu numărul de linii 2 şi numărul de coloane k. Pentru acesta

Page 116: Aureliu Zgureanu - Codari Informatice

116

parcurgem de toate numerele de la 0 la 12 şi verificăm dacă ele aparţin cortegiului

componentei respective a cheii. În cazul când aparţine în linia respectivă şi coloana respectivă a

lui MD se scrie 1, în caz contrar se scrie 0.

Pasul 5. Se operează suma modulo 2 a matricelor MA şi MD , cazul în care „nu ajung” linii în

MD ele se iau de la începutul acestei matrice. În rezultat se obţine matricea MC cu numărul de

linii N şi numărul de coloane k.

Pasul 6. Pentru fiecare linie a acestei matrice calculăm un număr în baza 10 considerând

elementele acestei linii în calitate de cifre ale unui număr în baza 2:

.,0,21

Nicck

j

jkiji

Obţinem astfel textul cifrat reprezentat prin cortegiul

)....,,...,( 1 Ni ccccC

Pasul 7. STOP. Cortegiul C conţine mesajul M în varianta criptată.

Sistemul dat este foarte rapid, decriptarea se efectuează cu o exactitate de 100% (în toate

testele efectuate nu au fost depistate abateri, ele nici nu pot să apară având în vedere principiul

matematic de funcţionare a algoritmului) şi datorită faptului că cheile se schimbă de la un mesaj

la altul, dar şi în timpul criptării mesajului, algoritmul dat este unul foarte sigur.

În Tabelul 3.4 şi în Figura 3.14–3.17 sunt prezentate unele date statistice referitoare la

funcţionarea sistemului Cripto 3 în comparaţie cu sistemul AES (în Anexa 2 sunt prezentate o

serie mai completă de figuri). Pentru algoritmul Cripto 3 testele sunt efectuate pentru cazurile

când cheia are lungimea de 186 şi respectiv 743 de biţi. Aceste lungimi sunt în funcţie de şi se

obţin pentru valorile lui τ egale cu 3 şi respectiv 4. Pentru valori mai mari ale lui τ mărimea cheii

lui Cripto 2 nu poate fi comparată cu cheia lui AES. Pentru algoritmul AES am testat toate trei

variante, adică AES-128, AES-192 şi AES-256. Testele au fost efectuate la calculatorul cu

procesor AMD Phenom-II cu 3 nuclee, 2.8 GHz, 2 GB RAM.

Tabelul 3.4. Date statistice de lucru pentru algoritmii de criptare Cripto 3 şi AES

Sistemul de criptare Numărul de

simboluri în mesaj

Timpul pentru

criptare

Timpul pentru

decriptare

Cripto 3 186 ( =3)

Cripto 3 743 ( =4)

0,01

0,014

0,005

0,014

AES 128

AES 192

AES 256

100 0,03

0,03

0,03

0,03

0,03

0,03

Page 117: Aureliu Zgureanu - Codari Informatice

117

Cripto 3 186 ( =3)

Cripto 3 743 ( =4)

0,013

0,015

0,08

0,015

AES 128

AES 192

AES 256

200 0,03

0,04

0,04

0,04

0,04

0,05

Cripto 3 186 ( =3)

Cripto 3 743 ( =4)

0,016

0,016

0,012

0,016

AES 128

AES 192

AES 256

300 0,06

0,06

0,08

0,06

0,06

0,08

Cripto 3 186 ( =3)

Cripto 3 743 ( =4)

0,018

0,016

0,014

0,016

AES 128

AES 192

AES 256

400 0,06

0,08

0,09

0,07

0,08

0,09

Cripto 3 186 ( =3)

Cripto 3 743 ( =4)

0,02

0,016

0,015

0,016

AES 128

AES 192

AES 256

500 0,09

0,09

0,13

0,09

0,09

0,13

Cripto 3 186 ( =3)

Cripto 3 743 ( =4)

0,03

0,03

0,03

0,03

AES 128

AES 192

AES 256

1000 0,17

0,18

0,22

0,17

0,19

0,23

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

0,059 0,06

0,057 0,06

AES 128 AES 192 AES 256

2 000 0,39 0,42 0,45

0,40 0,41 0,45

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

0,086 0,09

0,087 0,09

AES 128 AES 192 AES 256

3 000 0,51 0,56 0,64

0,50 0,57 0,70

Page 118: Aureliu Zgureanu - Codari Informatice

118

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

0,0138 0,14

0,0142 0,15

AES 128 AES 192 AES 256

5 000

0,8 0.92 1,09

0,8 0,97 1,15

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

0,277 0,28

0,286 0,31

AES 128 AES 192 AES 256

10 000 1,56 1,86 2,20

1,58 1,92 2,29

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

1,37 1,48

1,43 1,50

AES 128 AES 192 AES 256

50 000 7,84 9,21 10,94

7.85 9,61 11,41

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

2,71 2,93

2,91 3,02

AES 128 AES 192 AES 256

100 000 15,64 18,39 21,81

16,41 19,33 22,78

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

5,51 5,83

5,82 6,04

AES 128 AES 192 AES 256

200 000 31,21 36,80 43,54

32,77 38,40 45,55

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

8,30 8,74

8,84 8,97

AES 128 AES 192 AES 256

300 000 46,94 55,11 68,37

48,26 57,77 69,46

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

13,95 14,94

14,93 15,68

AES 128 AES 192 AES 256

500 000 78,98 91,99

109,01

80,82 96,40

114,02

Page 119: Aureliu Zgureanu - Codari Informatice

119

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

28,59 30,82

31,52 34,02

AES 128 AES 192 AES 256

1 000 000 157,50 189,07 222,75

164,24 196,29 232,44

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

62,72 64,17

77,69 78,74

AES 128 AES 192 AES 256

2 000 000 320,05 369,98 441.88

333,04 389,01 461,48

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

99,74 102,99

134,40 136,20

AES 128 AES 192 AES 256

3 000 000 476,12 561,64 660,52

497,8 581,81 687,74

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

141,39 149,16

203,61 211,36

AES 128 AES 192 AES 256

4 000 000 638,46 762,99 889,90

675,04 791,75 924,97

Cripto 3 186 ( =3) Cripto 3 743 ( =4)

190,55 197,71

296,15 288,66

AES 128 AES 192 AES 256

5 000 000 791,42 961,85

1106,59

819,11 986,84 1149,84

Criptare 100 - 1000

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

100 200 300 400 500 1000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

AES 256AES 192AES 128Cripto 3 743Cripto 3 186

Fig. 3.14. Diagramă comparativă AES–Cripto 3 pentru mesaje de 100-1000 simboluri

Page 120: Aureliu Zgureanu - Codari Informatice

120

Decriptare 100 - 1000

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

100 200 300 400 500 1000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)AES 256AES 192AES 128Cripto 3 743Cripto 3 186

Fig. 3.15. Diagramă comparativă AES–Cripto 3 pentru mesaje de 100-1000 simboluri

Criptare 10 000 - 1 000 000

0

100

200

300

400

500

600

700

10000 50000 100000 200000 300000 500000 1000000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

AES 256AES 192AES 128Cripto 3 743Cripto 3 186

Fig. 3.16. Diagramă comparativă AES–Cripto 3 pentru mesaje de 10000-1000000 simboluri

Decriptare 10 000 - 1 000 000

0

100

200

300

400

500

600

700

10000 50000 100000 200000 300000 500000 1000000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

AES 256AES 192AES 128Cripto 3 743Cripto 3 186

Fig. 3.17. Diagramă comparativă AES–Cripto 3 pentru mesaje de 10000-1000000 simboluri

Page 121: Aureliu Zgureanu - Codari Informatice

121

Din Tabelul 3.4 şi din Figurile 3.14–3.17 observăm că criptarea şi decriptarea se

efectuează mai rapid în sistemul Cripto 3 decât în AES, indiferent de lungimea cheii şi necătând

la faptul că una dintre aceste chei – 743 este de circa 3 ori mai mare ca la AES-256. În acelaşi

timp criptarea în Cripto 3 şi decriptarea durează la fel. Pentru cheile de mărime 186 şi 743 de biţi

ale algoritmului Cripto 3 timpul de lucru practic nu diferă. Odată cu creşterea lui τ creşte şi

mărimea cheii, şi pentru valori ale lui τ >4 mărimea cheii creşte exponenţial ce implică o creştere

a timpului de lucru la criptare şi decriptare. Această diferenţă se datorează faptului că odată cu

creşterea cheii se va cheltui mai mult timp pentru criptarea şi decriptarea acestei chei, pe când

timpul net de criptare şi decriptare a mesajului nu este afectat de mărimea cheii. De aceea,

aplicând pentru criptarea şi decriptarea cheilor un algoritm de criptare mai econom se va reduce

şi timpul total de lucru al algoritmului Cripto 3.

Pentru algoritmul Cripto 3 la moment nu sunt cunoscute metode eficiente de spargere, iar

faptul că cheia este schimbată de la un mesaj la altul complică şi mai mult eventualele atacuri.

Mai mult decât atât, există posibilitatea de modifica cheia şi pe parcursul criptării aceluiaşi

mesaj.

Din cele expuse rezultă că algoritmul de criptare Cripto 3 este mai are o viteză sporită

faţă de AES pentru lungimi de chei ale lui Cripto 3 de 186 şi 743 de biţi şi pentru întreg spectrul

de chei al lui AES. Dacă mai luăm în consideraţie şi faptul criptării cheilor la Cripto 3, ele fiind

schimbte la fiecare mesaj, ceea ce face practic imposibilă spargerea lui, atunci Cripto 3 poate fi

cu succes utilizat pe scară largă în procesul de criptare a informaţiei.

Funcţiile booleene sunt un caz particular al funcţiilor din logica q-valentă şi, în acest

context, este natural să fie înaintată problema analizei funcţiilor q-valente în perspectiva

elaborării sistemelor de criptare bazate pe aceste funcţii. Astfel de proprietăţi sunt analizate în

Capitolul 2, paragraful 2.3.

Page 122: Aureliu Zgureanu - Codari Informatice

122

3.4. Sistem de criptare bazat pe funcţii de logica q-valentă

Algoritmul Cripto 3 poate fi generalizat şi pentru cazul când funcţiile booleene se

înlocuiesc cu cele din logica q-valentă.

Fie funcţiile kj FFF ,...,,...,1 din logica q-valentă. În aşa caz atât variabilele nxx ,...,1 cât şi

funcţiile jF admit valori din mulţimea }.1,...,1,0{ q În Figura 3.12 ijm şi în Figura 3.13

ijd Aceste matrice reprezintă sisteme de funcţii q-valente. Formulelor (3.19), (3.20) şi (3.21)

din 3.3 le corespund respectiv formulele, (3.27).(3.28) şi (3.29):

utmmmm ti ),,...,,...,( 0 , unde .,0,

1tiqmm

k

j

jkiji

(3.27)

n =⌈log q t⌉, k =⌈log q max mi⌉ (3.28)

utdddd ti ),,...,,...,( 0 , .,0,1

tiqddk

j

jkiji

(3.29)

Compunem o matrice nouă

)(modqAAA DMC ,

Unde

qdmc ijijij mod .

Aşa cum pentru q matrice DA are loc relaţia

0)(mod... qAAAoriqde

DDD

(matricea nula),

atunci egalităţilor (3.22) şi (3.23) le corespund respectiv egalităţile (3.30) şi (3.31):

CDM AqAA )(mod , MDC AqAqA )(mod)1( ( 3.30)

utcccc ti ),...,,...,( 0 , tiqcc

k

j

jkiji ,0,

1

şi )(modqdmc ijijij ( 3.31)

Din (3.31) rezultă că dacă pentru criptarea cortegiului m aplicăm matricea DA atunci

pentru decriptarea acestui vector aplicăm matricea .)1( DAq

Page 123: Aureliu Zgureanu - Codari Informatice

123

Din (3.29) rezultă că componentele hd ale cortegiului d aparţin mulţimii }1,...,1{ kq

(0 nu se include în această mulţime deoarece starea 0....0 nu schimbă componentele cortegiului

m ). Pentru compunerea acestui cortegiu luăm ultimele variabile din mulţimea

},...,,...,{ 1 nn xxx , alegem într-un mod aleator q numere din mulţimea }1,...,1{ kq şi cu aceste

numere construim cortegiul

,1),,...,,...,(10 tqdddd qh

(3.32)

care reprezintă cheia privată. Componentele hd se pot repeta de un număr arbitrar de ori. Prin

urmare, numărul de chei private diferite este

.)1(

qkq

Utilizând ( 3.31 ) construim cortegiul c . Din (3.30) rezultă că

.,0,))(mod)1((1

tiqqdqcmk

j

jkijiji

Algoritmul generalizat obţinut este numit Cripto 4. Pentru el de asemenea a fost scris

soft-ul respectiv în mediul de calcul Mathematica. Acest algoritm este cu o viteză variabilă în

funcţie de valorile lui q, t si . De exemplu, pentru 4,3,2000000 qt durata criptării şi

decriptării mesajului este mai scăzută faţă aceeaşi parametri în Cripto 3. În caz general pentru

determinarea valorilor optimale pentru parametrii q , şi t dar şi pentru şi interdependenţa dintre

aceşti parametri şi timpul de lucru al algoritmului este necesară o investigare mai profundă.

Pentru cazul în care 2q cheia privată poate fi reprezentată şi prin submulţimi de

coloană. În acest caz în cortegiul ),...,,...,( 1 kj SSSS fiecare componentă jS reprezintă mulţimi

de forma }}{},...,{},{{ 121 qjjj SSS , unde pentru orice }1,...,1{ q

jS este o submulţime a

mulţimii },1,...,1,0{ q iar pentru orice }1,...,1{, qsk are loc sj

kj SS . Însa odată cu

creşterea lui q apar şi unele dificultăţi în reprezentarea şi transmiterea cheii private. Aici la fel

sunt necesare investigaţii adiţionale.

Page 124: Aureliu Zgureanu - Codari Informatice

124

3.5. Concluzii la capitolul 3

Capitolul curent conţine implementarea practică a rezultatelor teoretice realizate în Capitolul 2. Această implementare constă în elaborarea a patru algoritmi de criptare şi elaborarea softului pentru realizarea acestor algoritmi. Softul dat este elaborat în mediul de calcul de Mathematica, ceea ce este suficient pentru testare şi obţinere a datelor comparative în raport cu alţi algoritmi utilizaţi în prezent. Pentru realizarea algoritmilor de criptare în scopuri practice este necesar de a ale implementa în unul din limbajele moderne, (C++, C# etc.).

Doi algoritmi dintre cei patru au la bază numerele prime mari. Datorită algoritmului determinist de generare a numerelor prime mari elaborat în teză obţinerea acestor numere nu prezintă dificultate. Primul algoritm Cripto 1 este o modificare a renumitului algoritm RSA care se utilizează pe larg în prezent dar spre deosebire de acesta foloseşte în loc de o singură pereche de chei un set de perechi. Acest fapt măreşte rezistenţa sistemului pe de o parte dacă se folosesc chei de aceleaşi dimensiuni ca la RSA, viteza rămânând neschimbată, iar pe de altă parte sporesc viteza de lucru a sistemului dacă micşorăm dimensiunea cheilor şi mărim numărul lor.

Algoritmul Cripto 2 este un sistem simetric care foloseşte numerele prime în calitate de chei şi este realizat în baza matricelor multidimensionale care reprezintă mulţimile de relaţii multi-are. De asemenea în baza algoritmului stă dezvoltarea polinomială a numerelor foarte mari. Pentru a sparge acest algoritm este necesar de a rezolva un sistem ecuaţii polinomiale cu coeficienţi nedeterminaţi, ceea ce, începând cu un anumit grad al polinomului, este imposibil din punct de vedere practic. Viteza de lucru a acestui algoritm este mai mică decât a algoritmului RSA dar mai mare ca la algoritmul simetric AES. Algoritmul Cripto 2 poate fi aplicat pentru criptarea informaţiei cu grad sporit de confidenţialitate, dar nu poate fi implementat cu resurse reduse.

Pentru elaborarea algoritmilor cu o viteză de lucru sporită au fost aplicate matricele multidimensionale şi funcţiile booleene (algoritmul Cripto 3) sau funcţiile din logica q-valentă (algoritmul Cripto 4). În procesul de realizare a algoritmilor se efectuează operaţii logice cu aceste funcţii ceea ce determină timpul mic de lucru al acestor algoritmi, acest timp fiind mai mic decât la algoritmul AES. Acest fapt, dar şi resursele reduce necesare, permite implementarea algoritmilor daţi pe diverse carduri.

Criptanaliza algoritmului Cripto 1 se bazează pe aceleaşi principii ca la RSA, de aceea se poate afirma cu certitudine securitatea lui Cripto 1. Pentru algoritmii Cripto 2, Cripto 3, şi Cripto 4 la momentul actual nu sunt cunoscute metode de criptanaliză în afară de atacul cu forţă brută. Luând în consideraţie mulţimea de chei la fiecare dintre aceşti algoritmi acest atac nu are şanse practice de realizare. Mai mult decât atât, la aceşti trei algoritmi cheile se modifică de la mesaj la mesaj şi se transmit criptate cu unul din algoritmii siguri odată cu criptograma ceea ce asigură o securitate sporită algoritmilor.

Page 125: Aureliu Zgureanu - Codari Informatice

125

CONCLUZII GENERALE ŞI RECOMANDĂRI

Teza este dedicată analizei proprietăţilor mulţimilor de relaţii multi-are reprezentate cu

ajutorul matricelor multidimensionale în scopul aplicării acestor proprietăţi la elaborarea

metodelor de criptare a informaţiei – cel mai sigur mod de protecţie a ei. În acelaşi context au

fost cercetate unele proprietăţi ale funcţiilor booleene şi a funcţiilor din logica q-valentă, aceste

funcţii fiind reprezentate cu ajutorul submulţimilor de coloană. Sunt demonstrate o serie de

teoreme care permit elaborarea unor algoritmi de criptare eficienţi din punct de vedere al

securităţii şi a vitezei de lucru.

În baza teoremelor demonstrate au fost realizate următoarele:

un algoritm non-probabilistic eficient de generare a numerelor prime mari;

un algoritm de criptare (Cripto 1) care este o modificare a algoritmului cu cheie

publică RSA şi care utilizează seturi de chei, ceea ce poate mări viteza de lucru

sau poate spori rezistenţa sistemului;

un algoritm de criptare (Cripto 2) ce utilizează în calitate de chei numerele mari

prime şi funcţionează în baza dezvoltării polinomiale a numerelor întregi şi a

matricelor multidimensionale;

doi algoritmi de criptare în baza cărora se află matricele multidimensionale şi

funcţiile booleene (Cripto 3) sau funcţiile din logica q-valentă (Cripto 4), timpul

de lucru al acestor algoritmi fiind mult mai mic decât la algoritmul simetric AES

utilizat în prezent în calitate de standard naţional în USA.

Astfel, a fost soluţionată o problema ştiinţifică importantă: au fost propuse metode

eficiente de criptare a informaţiei care depăşesc metodele actuale după un şir de parametri

(timpul de criptare, volumul memoriei, securitatea algoritmului etc). A fost dezvoltată baza

teoretică pentru aceste metode care constă în proprietăţi noi ale funcţiilor booleene, funcţiilor

q-valente şi a matricelor multidimensionale.

Toate cercetările şi rezultatele realizate în teză se bazează, în cea mai mare parte, pe

noţiunile şi teoremele fundamentale din teoria numerelor, teoria informaţiei, matematica discretă,

algebra polinoamelor şi au ca scop de a propune instrumentarii noi, simple în realizare şi

eficiente pentru criptarea/decriptarea informaţiei.

Printre direcţii de cercetare ulterioară, care să folosească metodele elaborate şi ideile

conceptuale utilizate în cadrul lor, pot servi: extinderea spectrului de probleme care pot fi

soluţionate cu ajutorul mulţimilor de relaţii, a matricelor multidimensionale. Un interes sporit îl

au funcţiile booleene cu anumite proprietăţi de neliniaritate – funcţiile bent [41], [58],[125],

[126], [127], care pot fi găsite aplicând proprietăţile funcţiilor booleene demonstrate în teză.

Page 126: Aureliu Zgureanu - Codari Informatice

126

Aceste proprietăţi pot fi aplicate şi la determinarea coeficienţilor polinomului Zhegalkin, el fiind

o metodă eficientă de reprezentare a funcţiilor booleene. În scopuri criptografice o perspectivă

promiţătoare o prezintă aplicarea funcţiilor booleene cu proprietăţile examinate în teză pentru

generarea cheilor sistemelor de criptare (în deosebi aplicarea noţiunii de derivată a funcţiilor

booleene reprezentate prin submulţimi de coloană).

Teza prevede şi aspectele practice: a fost creat un pachet de programe simplu şi uşor de

folosit. Programele au fost implementate în mediul de calcul Mathematica, dar este binevenită

realizarea lor în unul dintre limbajele moderne cum ar fi C++, C# sau altele de acest fel.

Page 127: Aureliu Zgureanu - Codari Informatice

127

BIBLIOGRAFIE 1. Adleman L., Pomerance C. and Rumley R., On Distinguishing Prime Numbers from

Composite Numbers, Annals of Mathematics 117 (1), 1983, pp. 173–206

2. Bacon F., De Augmentis Scientarum, Book 6, Chapter i, 1889

3. Bauer F., An error in the history of rotor encryption devices, Cryptologia 23(3), July 1999,

page 206

4. Ben-Aroya I., Biham E., Differential Cryptanalysis of Lucifer, Journal of Cryptology 9(1),

pp. 21–34, 1996

5. Bernstein D. J., Buchmann J., Dahmen E. (Editors), Post-Quantum Cryptography,

Springer, 2008

6. Biham E. and Biryukov A., An Improvement of Davies' Attack on DES, J. Cryptology

10(3): 195–206 (1997)

7. Biham E. and Shamir A., Differential Cryptanalysis of the Full 16-Round DES, Advances

in Cryptology, Proceedings of CRYPTO '92, 1992, pp. 487–496

8. Biham E., and Shamir A., Differential Cryptanalysis of the Data Encryption Standard,

Springer Verlag, 1993

9. Biham E., Shamir A., Differential Cryptanalysis of Snefru, Khafre, REDOC-II, LOKI and

Lucifer, CRYPTO 1991: pp. 156–171

10. Biryukov A., Khovratovich D., Related-key Cryptanalysis of the Full AES-192 and AES-

256, Luxemburg Univ. 2009

11. Biryukov A., Dunkelman O., Keller N., Khovratovich D., Shamir A., Key Recovery Attacks

of Practical Complexity on AES. Variants With Up To 10 Rounds, Crypto 2009 rump

session

12. Bochmann D., Posthoff C., Binare Dinamishe Sisteme, Academic-Verlag, Berlin, 1981

13. Bowers M., (pseudonym Zembie), Major F. W. Kasiski — Cryptologist, The Cryptogram,

Vol. XXXI(3) (January-February 1964) pp. 53,58-59

14. Bulat M., Bivol L., Unele transformări şi aplicaţii ale funcţiilor booleene, Analele ATIC,

Chişinău, Evrica, 2002.

15. Bulat M., Cataranciuc S., Zgureanu A., A method for calculating the polynomial

coefficients Zhegalkin. International Conference dedicated to the 80th anniversary of P.

Soltan. Chişinău, 2011

16. Bulat M., Distribuţia numerelor prime în matrice multidimensionale, Analele ATIC.

Chişinău, Evrica, 2003, pp.

17. Bulat M., Isomorfismo de conjundtos de relaciones, Revista de matematica: Teoria y

Aplicaciones, 2001, 8(1), pp. 33-46

Page 128: Aureliu Zgureanu - Codari Informatice

128

18. Bulat M., Isomorfismo de grandes sistemas, Acta Academia 2001, Evrica, Chişinau, pp.

161–170

19. Bulat M., Isomorphic sistems of graphs, 3-rd European Congress of Mathematics, Section

06: Discrete Mathematics and Computer Science, Poster number 236, Barcelona

20. Bulat M., Leon D., Bivol L., Ciobanu I., Zgureanu,A., Generadores de numeros primos y

factorizadores de numeros compuestos, Revista de Matematica: Teoria y Aplicaciones,

2006, 13(1) CIMPA-UCR-CCSS: pp. 1-15

21. Bulat M., Unele aplicaţii ale matricelor multidimensionale, Analele ATIC-2002, v.I (II),

pp. 75–82

22. Bulat M., Zgureanu A., Ciobanu I., Bivol L., Generating of prime numbers based on the

multidimensional matrices, International Algebraic Conference dedicated to the 100th

anniversary of D. K. Faddeev. St Petersburg, Russia, 2007, pp. 98-99

23. Bulat M., Zgureanu A., Ciobanu I., Bivol L., Sisteme de criptare cu chei vectoriale,

Conferinţa ştiinţifică internaţională. Modelare matematică, optimizare şi tehnologii

informaţionale. Chişinau, 19-21 martie, 2008. ATIC, pp. 281 – 285

24. Bulat M., Zgureanu A., Ciobanu I., Bivol L., The inverse transformations of

multidimensional matrices, ASADE Moldova, August 21, 2007, pp. 34-34

25. Bulat M., Zgureanu A., Ciobanu Ia., Izbaş V., Sistem de criptare bazat pe derivarea

funcţiilor booleene. Conferinţa ştiinţifică internaţională. Modelare matematică, optimizare

şi tehnologii informaţionale. Chişinau, 26-28 martie, 2010, pp. 132-141

26. Cataranciuc S., G-complexul de relaţii multi-are. Analele ştiinţifice al Universităţii de Stat

din Moldova. Seria „Ştiinţe fizico-matematice”. Chişinău 2006, pp. 119-122

27. Cataranciuc S., Soltan P., The generalized complex of multi-ary relations and its homology.

2008, Vol. 6, Cluj-Napoca, Romania, pp. 17-144

28. Cataranciuc S., Soltan P., Abstract complexes, their homologies and applications. Buletinul

Academiei de Ştiinţe a Republicii Moldova, 2010, 24(63), pp. 31-58

29. Campbell K., Wiener M., DES is not a Group, CRYPTO 1992: pp. 512–520

30. Chaum D. and Evertse J. H. , Cryptanalysis of DES with a reduced number of

rounds, in Lecture Notes in Computer Science 218; Advances in Cryptology: Proc. Crypto

'85, H. C. Williams, Ed., Santa Barbara, CA, Aug. 18-22, 1985, pp. 192-211. Berlin:

Springer-Verlag, 1986

31. Cover T., King R., A Convergent Gambling Estimate of the Entropy of English, IEEE

Transactions of Information Theory, v. IT-24, n. 4, 1978, pp. 413-421

32. Daemen J., Rijmen V., The Design of Rijndael: AES - The Advanced Encryption Standard,

Springer-Verlag, 2002

Page 129: Aureliu Zgureanu - Codari Informatice

129

33. Data Encryption Standard, National Bureau of Standards, Federal Information Standard 46,

USA; 1977

34. De Mulder Y., Wyseur B., and Preneel B., Cryptanalysis of a Perturbated White-Box AES

Implementation, Progress in Cryptology - INDOCRYPT 2010. 11th International

Conference on Cryptology in India. Hyderabad, India, December 12-15, 2010, pp. 292-310

35. Deavours C., Unicity points in Criptanalysis, Criptologia, v. 1, 1977, pp. 46-68

36. Devours C., Kahn D., Kruh L., Mellen G., Winkel B., Cryptology: Machines, history and

Methods, Artech House, 1989

37. Devours C., Kruh L., Machine Cryptography and Modern Cryptanalysis, Artech House,

1985

38. Diffie W. and Hellman M. E., New Directions in Cryptography. IEEE Transactions on

Information Theory, vol. IT-22, Nov. 1976, pp. 644–654

39. Diffie W. and Hellman M., Exhaustive Cryptanalysis of the NBS Data Encryption

Standard, IEEE Computer 10 (6), 1977, pp. 74-84

40. Diffie W. and Hellman M., Privacy and authentication: An introduction to cryptography,

Proc. IEEE, vol. 67, 1979, pp. 397–427

41. Dillon J. F., A survey of bent functions. NSA Technical Journal – unclassified 1972; pp.

191–215.

42. Ding C, Xiao G, Shan W. The stability theory of stream ciphers. LNCS, vol. 561, Berlin:

Springer; 1991

43. El Gamal T., A Public Key Cryptosystem and Signature Scheme Based on Discrete

Logarithms, IEEE Transactions in Information Theory 31 (4), 1985, pp. 469–472

44. Feistel H., Cryptography and computer privacy, Scientific American 1973; 228: pp. 15–23

45. Ferguson N. and Schneir B., Practical Cryptography, Wiley N. Y. (2003)

46. Ferguson N., Kelsey J., Lucks S., Schneier B., Stay M., Wagner D. et al. Improved

cryptanalysis of Rijndael. In: Fast software encryption–New York 2000. LNCS, vol. 1978,

Berlin: Springer, 2001, pp. 213–230

47. Ferguson N., Schroeppel R., Whiting D., A simple algebraic representation of Rijndael. In:

Selected areas crypt. 2001. LNCS, vol. 2259. Berlin: Springer; 2001, pp. 149–165

48. FIPS PUB 197, The official AES standard

49. FIPS PUB 46-3, DES, (Federal Information Processing Standards Publication). NIST,

1999.

50. Forré R., Methods and instruments for designing S-boxes, Journal of Cryptology 1990, 2,

pp. 115–130

51. Fourche H., Cryptanalysis: A Study of Ciphers and their Solution, Dover Publications, 1939

Page 130: Aureliu Zgureanu - Codari Informatice

130

52. Friedman W. F., Military Cryptanalysis – Part I, Monoalphabetic Substitution Systems,

United States Government Printing Office, Washington, 1939

53. Friedman W. F., Military Cryptanalysis – Part II: Simpler Varieties of Polyalphabetic

Substitution Systems, United States Government Printing Office, Washington, 1938

54. Gorski M., Lucks S., New Related-Key Boomerang Attacks on AES (Full Version).

Information Security and Privacy: 14th Australasian Conference, Acisp 2009

55. Gustavus J. Simmons, editor, Contemporary cryptology: the science of information

integrity, IEEE Press, 1992

56. Henk C. A. van Tilborg (Editor), Encyclopedia of Cryptography and Security, Springer

Science+Business Media, Inc., 2005

57. Hoffstein J., Pipher J., Silverman J. H., An Introduction to Mathematical Cryptography,

Springer Science+Business Media, LLC, 2008

58. Hou X. D. and Langevin Ph., Results on bent functions. Journal of Combinatorial Theory

(A), 80:, 1997, pp. 232–246

59. Kahn D., Codebreaking and the Battle of the Atlantic, US Air Force Academy, Colorado

Springs, CO, 1994

60. Kahn D., The Codebreakers - The Story of Secret Writing, abridget ed. New York, NY:

Signet, 1973

61. Karl de Leeuw, The Dutch invention of the rotor machine, 1915 - 1923." Cryptologia 27(1),

January 2003, pp. 73–94

62. Katz J. & Lindell Y., Introduction to Modern Cryptography, Chapman & Hall/CRC (2008)

63. Kilian J. and Rogaway Ph, How to protect DES against exhaustive key search, Advances in

Cryptology – Crypto’96, Springer-Verlag (1996), pp. 252–267

64. Koblitz N. A., Course in Number Theory and Cryptography, Springer-Verlag 1987

65. Kollmitzer C., Pivk M. (Editors), Applied Quantum Cryptography, Springer, 2010

66. Konheim A.G., Cryptography: A Primer, John Wiley and Sons, New York, 1981

67. Konheim Alan G., Computer Security and Cryptography, John Wiley & Sons, Inc., 2007

68. Kranakis E., Primality and Cryptography, Stuttgart: Teubner, Wiley, 1986

69. Mala H., Dakhilalian M., Rijmen V. and Modarres-Hashemi M., Improved Impossible

Differential Cryptanalysis of 7-Round AES-128. Progress in Cryptology - INDOCRYPT

2010. 11th International Conference on Cryptology in India, Hyderabad, India, December

12-15, 2010, pp. 282-291

70. Matsui M., Linear cryptanalysis method for DES cipher, Advances in Cryptology –

EUROCRYPT’93, Workshop on the theory and application of cryptographic techniques

(Lofthus, Norway. May 23–27, 1993). Proc. Berlin: Springer, 1994

Page 131: Aureliu Zgureanu - Codari Informatice

131

71. Matsui M., On correlation between the order of S-boxes and the strength of DES. In: Adv.

In crypt.–Eurocrypt ’94. LNCS, vol. 950. Berlin: Springer; 1995. p. 366–375

72. Matsui M., The First Experimental Cryptanalysis of the Data Encryption Standard, Lecture

Notes in Computer Science 839: 1–11. 1994.

73. Meier W., Staffelbach O., Nonlinearity criteria for cryptographic functions, In: Adv.

In crypt.–Eurocrypt ’89. LNCS, vol. 434. Berlin: Springer; 1990, pp. 549–562.

74. Menezes A., Van Oorschot P. C., Vanstone S. A., Handbook of applied cryptography,

CRC Press, 1997

75. Minuţ P., Teoria numerelor, Vol. 1, Editura Crenguţa Gâldău, Iaşi 1997

76. Mogollon M., Cryptography and Security Services: Mechanisms and Applications, New

York, Cybertech Publishing, 2008

77. National Bureau of Standards, Data Encryption Standard, FIPS PUB 46 (Jan. 1977)

78. National Bureau of Standards, DES Modes of Operation, FIPS PUB 81 (Dec. 1980)

79. National Institute of Standards and Technology, Advanced Encryption Standard (AES),

FIPS PUB 197 (Nov. 2001)

80. NIST, Modes of operations for symmetric block ciphers (available at:

http://csrc.nist.gov/CryptoToolkit/modes/)

81. NIST, Request for AES proposals, http://csrc.nist.gov/CryptoToolkit/aes/pre-

round1/aes_.9709.htm

82. Oswald E., Daemen J., Rijmen V., AES – The state of the art of Rijndael’s security,

Technical report (October 30, 2002), http://citeseerx.ist.psu.edu/viewdoc/ summary?doi=

10.1.1.3.164

83. Paar C., Pelzl J., Understanding Cryptography. A Textbook for Students and Practitioners,

Springer, 2009

84. Pollard J. M., A Monte Carlo method for factorization. BIT, 15(3): pp. 331-334, 1975

85. Pomerance C., Recent Developments in Primality Testing, The Mathematical Intelligencer,

v. 3, n. 3, 1981, pp. 97–105

86. Prouff E. and Roche T., Attack on a Higher-Order Masking of the AES Based on

Homographic Functions. Progress in Cryptology - INDOCRYPT 2010. 11th International

Conference on Cryptology in India. Hyderabad, India, December 12-15, 2010, pp. 262-281

87. Rabin M. O., Probabilistic Algorithm for Testing Primality, SIAM Journal on

Computing, v. 9, n. 2, May 1980, pp. 273-280

88. Rabin M.O., Probabilistic Algorithm for Testing Primality, Journal of Number Theory, v.

12, n. 1, Feb 1980, pp. 128–138

Page 132: Aureliu Zgureanu - Codari Informatice

132

89. Rijmen V., Cryptanalysis and design of iterated block ciphers, doctoral dissertation,

October 1997

90. Rivest R. L., Shamir A., Adleman L., A method for obtaining digital signatures and public

key cryptosystems, Comm ACM 21, 1978, pp. 120–126

91. Rivest R. L., The RC5 encryption algorithm, In: Fast software encryption–Leuven 1994.

LNCS, vol. 1008. Berlin: Springer; 1995, pp. 86–96

92. Rueppel R. A., Stream ciphers, In: G. J. Simmons, Editor, Contemporary Cryptology–The

Science of Information Integrity, IEEE Press, New York, 1992, pp. 65–134

93. Salomaa A., Criptografie cu chei publice, Ed. Militară, 1994

94. Schneier B., Applied Cryptography, Second Edition. John Wiley & Sons, 1996

95. Schneier B., Description of a New Variable-Length Key, 64-bit Block Cipher (Blowfish).

Fast Software Encryption 1993: 191–204

96. Schneier B., The Blowfish Encryption Algorithm. One Year Later, Dr. Dobb's Journal,

20(9), p. 137, September 1995.

97. Shannon C. E., A Mathematical Theory of Communication, Bell System Technical Journal.

v. 27, n. 4, 1948, pp. 379-426

98. Shannon C. E., Communication Theory of Secrecy Systems, Bell System Technical Journal.

v. 28, n. 4, 1949, pp. 656-715

99. Shannon C. E., Predication and Entropy in Printed English, Bell System Technical Journal.

v. 30, n. 1, 1951, pp. 50-64

100. Shoup V., A computational introduction to number theory and algebra, Cambridge

University Press, 2005

101. Smith, Laurence D. „Substitution Ciphers”. Cryptography the Science of Secret Writing,

Dover Publications. pp. 81. 1943

102. Sorkin A., LUCIFER: a cryptographic algorithm, Cryptologia, 8(1), 22-35, 1984

103. Stinton D., Cryptography, Theory and Practice, Chapman& Hall/CRC, 2002

104. Tuchman W. L. and Meyer C., Efficacy of the Data Encryption Standard in Data

Processing, Proceedings of Compcon’78, 1978, pp. 340–347

105. Vernam G., Cipher Printing Telegraph Systems For Secret Wire and Radio Telegraphic

Communications, Journal of the IEEE, Vol 55, pp. 109-115 (1926)

106. Whitfield D. and Hellman M., Exhaustive Cryptanalysis of the NBS Data Encryption

Standard, IEEE Computer 10(6), June 1977, pp. 74–84

107. Zgureanu A., Bulat M., Sisteme de criptare bazate pe funcţii booleene. Conferinţa

Internaţională ICT+ “Tehnologii informaţionale şi de comunicaţii - 2009”, 19 – 20 mai,

Chişinău, 2009: pp.

Page 133: Aureliu Zgureanu - Codari Informatice

133

108. Zgureanu A., Cataranciuc S., Encryption systems based on multidimensional matrixes,

„Tiberiu Popoviciu seminar”, Cluj-Napoca 6-7 september, 2010, pp. 99-110

109. Zgureanu A., Information encryption systems based on Boolean functions. The Computer

Science Journal of Moldova, vol.18, no.3(54), 2010, pp. 319-335

110. Zgureanu A., Sisteme de criptare cu chei variabile. Analele ATIC-2007-2008, vol. I (XII),

Chişinău, Evrica, 2009, pp. 92-98

111. Zhang Ch., Yu Q., and Wei Liu X. An Algorithm Based Concurrent Error Detection

Scheme for AES, Cryptology and Network Security. 9th International Conference, CANS

2010, Kuala Lumpur, Malaysia, December 12-14, 2010, pp. 31-43

112. Аграновский А. В., Хади Р. А., Практическая криптография, алгоритмы и их

программирование, Москва, 2009

113. Анестиади В., Олейник В., Необходимость и достаточеость при генерации ключей,

Acta Academia, Chişinău, 1999. pp. 93-101.

114. Баяндин А. В., К распределению простых чисел в натуральном ряде чисел,

Новосибирск, «НАУКА», 1999, СИФ РАН,-40

115. Булат М. С. Синтез таблиц состояний функций возбуждения внутренних элементов

автомата. Абстрактная и структурная теория релейных устройств. Издательство

"Наука".Москва, 1972, стр. 49-64

116. Булат М. С., Горюк И. В., Синтез логических структур, Кишинёвский

Политехнический Институт им. С. Лазо, 1978.

117. Булат М. С., Згуряну А. Ф., Чобану Я. И., Бивол Л. Г., Крипто-системы на базе n-

арных отношений. Системы управления, контроля и измерений (УКИ-08),

Российская Конференция с международным участием, Москва ИПУ РАН, 2008: pp.

66-67

118. Булат М., Об одном способе дифференцирования булевых функций, Analele ATIC-

2001, v.I (I), pp. 40–47

119. Горбатов В.А., Горбатов А.В., Горбатова М.В., Дискретная математика.Москва,

Астрель, 2006

120. Гутер Р.С., Полунов Ю.Л., Чарльз Бэббедж (1792-1871), Москва, Знание, 1973

121. Мао В., Современная криптография (теория и практика), М.: Вильямс, 2005

122. Олейник В., Две трудно решаемые задачи и их роль в криптографии. Acta Academia,

Chişinău, 2002. pp. 57-72

123. Олейник В., Методы получения простых чисел – текущее состояние и перспективы,

Acta Academia. Chişinău, 1999. pp. 101-127

124. Соколов Н. П., Пространственные матрицы и их приложения, Москва 1960

Page 134: Aureliu Zgureanu - Codari Informatice

134

125. Токарева Н. Н., Нелинейные булевы функции: бент-функции и их обобщения,

Издательство LAP. Saarbrucken, Germany, 2011

126. Токарева Н. Н., Обобщения бент-функций. Обзор работ, Дискретный анализ и

исследование операций , Январь—февраль 2010. Том 17, № 1. pp. 33–62

127. Токарева Н. Н., Сильно нелинейные булевы функции: бент-функции и их обобщения.

Диссертация на соискание ученой степени кандидата физико-математических наук.

Новосибирск – 2008

128. Шнайер Б., Секреты и ложь. Безопасность данных в цифровом мире, Москва, 2003

129. Щербаков А.Ю. Современная компьютерная безопасность. Теоретические основы.

Практические аспекты. — М.: Книжный мир, 2009. — 352 с.

130. Яблонский С. В. Введение в дискретную математику. 2-ое изд. М.: Наука, 1986. 384с.

Глава 2.

Page 135: Aureliu Zgureanu - Codari Informatice

135

ANEXA 1. Diagrame. Reflectarea timpului de criptare-decriptare

Criptare 100 - 1 000

0

0,01

0,02

0,03

0,04

0,05

0,06

0,07

100 200 300 400 500 1000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 1

Fig. A1.1. Diagramă comparativă RSA–Cripto 1 pentru mesaje de 100-1000 simboluri

Decriptare 100 - 1 000

05

10152025303540

100 200 300 400 500 1000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 1

Fig. A1.2. Diagramă comparativă RSA–Cripto 1 pentru mesaje de 100-1000 simboluri

Criptare 100 - 1 000

0

0,01

0,02

0,03

0,04

0,05

0,06

0,07

100 200 300 400 500 1000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 1

Fig. A1.3. Diagramă comparativă RSA–Cripto 1 pentru mesaje de 100-1000 simboluri

Page 136: Aureliu Zgureanu - Codari Informatice

136

Decriptare 100 - 1 000

05

10152025303540

100 200 300 400 500 1000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)RSACripto 1

Fig. A1.4. Diagramă comparativă RSA–Cripto 1 pentru mesaje de 100-1000 simboluri

Criptare 1000 - 10 000

0

0,2

0,4

0,6

0,8

1

1,2

1,4

1000 2000 3000 5000 10000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 1

Fig. A1.5. Diagramă comparativă RSA–Cripto 1 pentru mesaje de 1000-10000 simboluri

Decriptare 1000 - 10 000

050

100150200250300350400

1000 2000 3000 5000 10000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 1

Fig. A1.6. Diagramă comparativă RSA–Cripto 1 pentru mesaje de 1000-10000 simboluri

Page 137: Aureliu Zgureanu - Codari Informatice

137

Criptare 1000 - 10 000

0

0,2

0,4

0,6

0,8

1

1,2

1,4

1000 2000 3000 5000 10000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)RSACripto 1

Fig. A1.7. Diagramă comparativă RSA–Cripto 1 pentru mesaje de 100-1000 simboluri

Decriptare 1000 - 10 000

050

100150200250300350400

1000 2000 3000 5000 10000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 1

Fig. A1.8. Diagramă comparativă RSA–Cripto 1 pentru mesaje de 100-1000 simboluri

Criptare 100 - 1 000

0

0,05

0,1

0,15

0,2

0,25

100 200 300 400 500 1000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 2AES 256

Fig. A1.9. Diagramă comparativă RSA–Cripto 2–AES256 pentru mesaje de 100-1000 simb.

Page 138: Aureliu Zgureanu - Codari Informatice

138

Deriptare 100 - 1 000

05

10152025303540

100 200 300 400 500 1000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)RSACripto 2AES 256

Fig. A1.10. Diagramă comparativă RSA–Cripto 2–AES256 pentru mesaje de 100-1000 simb.

Criptare 100 - 1 000

0

0,05

0,1

0,15

0,2

0,25

100 200 300 400 500 1000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 2AES 256

Fig. A1.11. Diagramă comparativă RSA–Cripto 2–AES256 pentru mesaje de 100-1000 simb.

Decriptare 100 - 1 000

05

10152025303540

100 200 300 400 500 1000

Lungime mesaj (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 2AES 256

Fig. A1.12. Diagramă comparativă RSA–Cripto 2–AES256 pentru mesaje de 100-1000 simb.

Page 139: Aureliu Zgureanu - Codari Informatice

139

Criptare 1 000 - 10 000

0

0,5

1

1,5

2

2,5

1000 2000 3000 5000 10000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)RSA

Cripto 2

AES 256

Fig. A1.13. Diagramă comparativă RSA–Cripto 2–AES256 pentru mesaje de 1000-10000 simb.

Decriptare 1000 - 10 000

050

100150200250300350400

1000 2000 3000 5000 10000

Lungimea mesajului (simb)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 2AES 256

Fig. A1.14. Diagramă comparativă RSA–Cripto 2–AES256 pentru mesaje de 1000-10000 simb.

Criptare 1 000 - 10 000

0

0,5

1

1,5

2

2,5

1000 2000 3000 5000 10000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

RSA

Cripto 2

AES 256

Fig. A1.15. Diagramă comparativă RSA–Cripto 2–AES256 pentru mesaje de 1000-10000 simb.

Page 140: Aureliu Zgureanu - Codari Informatice

140

Decriptare 1000 - 10 000

050

100150200250300350400

1000 2000 3000 5000 10000

Lungimea mesajului (simb)

Tim

pul d

e lu

cru

(sec

.)

RSACripto 2AES 256

Fig. A1.16. Diagramă comparativă RSA–Cripto 2–AES256 pentru mesaje de 1000-10000 simb.

Criptare 1 000 - 10 000

0

0,5

1

1,5

2

2,5

1000 2000 3000 5000 10000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

Cripto 2

AES 256

Fig. A1.17. Diagramă comparativă Cripto 2–AES256 pentru mesaje de 1000-10000 simb.

Decriptare 1000 - 10 000

0

0,5

1

1,5

2

2,5

3

1000 2000 3000 5000 10000

Lungimea mesajului (simb)

Tim

pul d

e lu

cru

(sec

.)

Cripto 2AES 256

Fig. A1.18. Diagramă comparativă Cripto 2–AES256 pentru mesaje de 1000-10000 simb.

Page 141: Aureliu Zgureanu - Codari Informatice

141

Criptare 1 000 - 10 000

0

0,5

1

1,5

2

2,5

1000 2000 3000 5000 10000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

Cripto 2

AES 256

Fig. A1.19. Diagramă comparativă Cripto 2–AES256 pentru mesaje de 1000-10000 simb.

Decriptare 1000 - 10 000

0

0,5

1

1,5

2

2,5

3

1000 2000 3000 5000 10000

Lungimea mesajului (simb)

Tim

pul d

e lu

cru

(sec

.)

Cripto 2AES 256

Fig. A1.20. Diagramă comparativă Cripto 2–AES256 pentru mesaje de 1000-10000 simb.

Criptare 100 - 1000

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

100 200 300 400 500 1000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

AES 256AES 192AES 128Cripto 3 743Cripto 3 186

Fig. A1.21. Diagramă comparativă Cripto 3–AES pentru mesaje de 100-1000 simb.

Page 142: Aureliu Zgureanu - Codari Informatice

142

Decriptare 100 - 1000

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

100 200 300 400 500 1000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)AES 256AES 192AES 128Cripto 3 743Cripto 3 186

Fig. A1.22. Diagramă comparativă Cripto 3–AES pentru mesaje de 100-1000 simb.

Criptare 100 - 1000

0

0,05

0,1

0,15

0,2

0,25

100 200 300 400 500 1000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

Cripto 3 186Cripto 3 743AES 128AES 192AES 256

Fig. A1.23. Diagramă comparativă Cripto 3–AES pentru mesaje de 100-1000 simb.

Decriptare 100 - 1000

0

0,05

0,1

0,15

0,2

0,25

100 200 300 400 500 1000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

Cripto 3 186Cripto 3 743AES 128AES 192AES 256

Fig. A1.24. Diagramă comparativă Cripto 3–AES pentru mesaje de 100-1000 simb.

Page 143: Aureliu Zgureanu - Codari Informatice

143

Criptare 1000 - 10 000

0

1

2

3

4

5

6

7

1000 2000 3000 5000 10000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)AES 256AES 192AES 128Cripto 3 743Cripto 3 186

Fig. A1.25. Diagramă comparativă Cripto 3–AES pentru mesaje de 1000-10000 simb.

Decriptare 1000 - 10 000

0

1

2

3

4

5

6

7

1000 2000 3000 5000 10000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

AES 256AES 192AES 128Cripto 3 743Cripto 3 186

Fig. A1.26. Diagramă comparativă Cripto 3–AES pentru mesaje de 1000-10000 simb.

Criptare 1000 - 10 000

0

0,5

1

1,5

2

2,5

1000 2000 3000 5000 10000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

Cripto 3 186Cripto 3 743AES 128AES 192AES 256

Fig. A1.27. Diagramă comparativă Cripto 3–AES pentru mesaje de 1000-10000 simb.

Page 144: Aureliu Zgureanu - Codari Informatice

144

Decriptare 1000 - 10 000

0

0,5

1

1,5

2

2,5

1000 2000 3000 5000 10000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)Cripto 3 186Cripto 3 743AES 128AES 192AES 256

Fig. A1.28. Diagramă comparativă Cripto 3–AES pentru mesaje de 1000-10000 simb.

Criptare 10 000 - 1 000 000

0

100

200

300

400

500

600

700

10000 50000 100000 200000 300000 500000 1000000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

AES 256AES 192AES 128Cripto 3 743Cripto 3 186

Fig. A1.29. Diagramă comparativă Cripto 3–AES pentru mesaje de 10000-1000000 simb.

Decriptare 10 000 - 1 000 000

0

100

200

300

400

500

600

700

10000 50000 100000 200000 300000 500000 1000000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

AES 256AES 192AES 128Cripto 3 743Cripto 3 186

Fig. A1.30. Diagramă comparativă Cripto 3–AES pentru mesaje de 10000-1000000 simb.

Page 145: Aureliu Zgureanu - Codari Informatice

145

Criptare 10 000 - 1 000 000

0

50

100

150

200

250

10000 50000 100000 200000 300000 500000 1000000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)Cripto 3 186Cripto 3 743AES 128AES 192AES 256

Fig. A1.31. Diagramă comparativă Cripto 3–AES pentru mesaje de 10000-1000000 simb.

Decriptare 10 000 - 1 000 000

0

50

100

150

200

250

10000 50000 100000 200000 300000 500000 1000000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

Cripto 3 186Cripto 3 743AES 128AES 192AES 256

Fig. A1.32. Diagramă comparativă Cripto 3–AES pentru mesaje de 10000-1000000 simb.

Criptare 1 000 000 - 5 000 000

0

500

1000

1500

2000

2500

3000

3500

1000000 2000000 3000000 4000000 5000000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

AES 256

AES 192AES 128

Cripto 3 743

Cripto 3 186

Fig. A1.33. Diagramă comparativă Cripto 3–AES pentru mesaje de 1000000-5000000 simb.

Page 146: Aureliu Zgureanu - Codari Informatice

146

Decriptare 1 000 000 - 5 000 000

0500

1000150020002500300035004000

1000000 2000000 3000000 4000000 5000000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)AES 256AES 192AES 128Cripto 3 743Cripto 3 186

Fig. A1.34. Diagramă comparativă Cripto 3–AES pentru mesaje de 1000000-5000000 simb.

Criptare 1 000 000 - 5 000 000

0

200

400

600

800

1000

1200

1000000 2000000 3000000 4000000 5000000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

Cripto 3 186Cripto 3 743AES 128AES 192AES 256

Fig. A1.35. Diagramă comparativă Cripto 3–AES pentru mesaje de 1000000-5000000 simb.

Decriptare 1 000 000 - 5 000 000

0

200

400

600

800

1000

1200

1400

1000000 2000000 3000000 4000000 5000000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

Cripto 3 186Cripto 3 743AES 128AES 192AES 256

Fig. A1.36. Diagramă comparativă Cripto 3–AES pentru mesaje de 1000000-5000000 simb.

Page 147: Aureliu Zgureanu - Codari Informatice

147

Criptare

0

200

400

600

800

1000

1200

100

200

300

400

500

1000

2000

3000

5000

1000

050

000

1000

00

2000

00

3000

00

5000

00

1000

000

2000

000

3000

000

4000

000

5000

000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)Cripto 3 186Cripto 3 743AES 128AES 192AES 256

Fig. A1.37. Diagramă comparativă Cripto 3–AES pentru mesaje de 100-5000000 simb.

Decriptare

0

200

400

600

800

1000

1200

1400

100

200

300

400

500

1000

2000

3000

5000

1000

050

000

1000

0020

0000

3000

0050

0000

1000

000

2000

000

3000

000

4000

000

5000

000

Lungimea mesalukui (simb.)

Tim

pul d

e lu

cru

(sec

.)

Cripto 3 186Cripto 3 743AES 128AES 192AES 256

Fig. A1.38. Diagramă comparativă Cripto 3–AES pentru mesaje de 100-5000000 simb.

Criptare

0

500

1000

1500

2000

2500

3000

3500

100

200

300

400

500

1000

2000

3000

5000

1000

050

000

1000

0020

0000

3000

0050

0000

1000

000

2000

000

3000

000

4000

000

5000

000

Lungimea mesajului (simb.)

Tim

pul d

e lu

cru

(sec

.)

AES 256AES 192AES 128Cripto 3 743Cripto 3 186

Fig. A1.39. Diagramă comparativă Cripto 3–AES pentru mesaje de 100-5000000 simb.

Page 148: Aureliu Zgureanu - Codari Informatice

148

Decriptare

0

500

1000

1500

2000

2500

3000

3500

4000

100

200

300

400

500

1000

2000

3000

5000

1000

050

000

1000

0020

0000

3000

0050

0000

1000

000

2000

000

3000

000

4000

000

5000

000

Lungimea mesalukui (simb.)

Tim

pul d

e lu

cru

(sec

.)AES 256AES 192AES 128Cripto 3 743Cripto 3 186

Fig. A1.40. Diagramă comparativă Cripto 3–AES pentru mesaje de 100-5000000 simb.

Page 149: Aureliu Zgureanu - Codari Informatice

149

ANEXA 2. Listingul softului. Este prezentat codul-sursă al programelor elaborate ce implementează metodele şi

algoritmii descrişi. Fiecărei metode îi corespunde programul său. Ele sunt structurate în așa fel

încât formează un pachet de aplicații. Ca limbaj de programare este folosit limbajul mediului de

calcul Mathematica.

Codul sursă al programului de calcul a submulţimilor de coloane a funcţiei booleene de forma F= U1 U2… Uk (compartimentul 2.2.2). timp1=AbsoluteTime[]; tau=3;n=5; jjj=2^(n-tau)-1; sigmaa={{{1,1},{2,1},{3,1},{4,1}},{{1,1},{2,1},{3,1},{5,1}},{{1,1},{2,1},{4,1},{5,1}},{{1,1},{3,1},{4,1},{5,1}},{{2,1},{3,1},{4,1},{5,1}},{{1,1},{2,1},{3,1},{4,1},{5,1}},{{1,1},{2,1},{3,1}},{{1,1},{2,1},{4,1}},{{1,1},{2,1},{5,1}},{{1,1},{3,1},{4,1}},{{1,1},{3,1},{5,1}},{{1,1},{4,1},{5,1}},{{2,1},{3,1},{4,1}},{{2,1},{3,1},{5,1}},{{2,1},{4,1},{5,1}},{{3,1},{4,1},{5,1}},{{1,1},{2,1}},{{1,1},{3,1}},{{1,1},{4,1}},{{1,1},{5,1}},{{2,1},{3,1}},{{2,1},{4,1}},{{2,1},{5,1}},{{3,1},{4,1}},{{3,1},{5,1}},{{4,1},{5,1}}}; For[ij=0,ijjjj,ij++,j=ij; vectorjfinal={}; reuniune={};vectordif={}; For[ii=1,iiLength[sigmaa],ii++, sigma=sigmaa[[ii]]; sigma11={};sigma12={}; For[i=1,iLength[sigma],i++,If[sigma[[i,1]]<=tau,sigma11=Append[sigma11,sigma[[i]]],sigma12=Append[sigma12,sigma[[i]]]]]; x=Table[i,{i,n}]; x1=Table[i,{i,tau}]; x2=Table[i,{i,tau+1,n}]; multimetau=Table[i-1,{i,2^tau}]; sigmax={}; For[i=1,iLength[sigma],i++,sigmax=Append[sigmax,sigma[[i,1]]]]; If[Intersection[x1,sigmax]¬{}, sigma1={};sigma2={}; For[i=1,iLength[sigma],i++,sigma1=Append[sigma1,sigma[[i,2]]]]; For[i=1,iLength[sigma],i++,jaja=IntegerPart[j/(2^(n-sigma[[i,1]]))]; If[Mod[jaja,2] 0,sigma2=Append[sigma2,0],sigma2=Append[sigma2,1]]]; If[sigma1==sigma2,vectorj=multimetau,vectorj={}]; vectorcaz1=vectorj; ,If[Intersection[x2,sigmax] ¬{},j1=0;For[i=1,iLength[sigma],i++,j1=j1+sigma[[i,2]]*2^(tau-sigma[[i,1]])]; vectorj={};vectorj=Append[vectorj,j1]; If[tau==Length[sigma],vectorj={j1}, vector={};vectori1={}; For[i=1,iLength[sigma],i++,vectori1=Append[vectori1,sigma[[i,1]]]]; vectori=Complement[x1,vectori1];(*(indicii din diferenta)*) s=Length[vectori]; For[i=1,is,i++,lungimej=Length[vectorj]; For[k=1,klungimej,k++,partintr=IntegerPart[vectorj[[k]]/2^(tau-vectori[[i]])]; partintr=partintr+1; numar=vectorj[[k]]; If[Mod[partintr,2] 0,numar=numar-2^(tau-vectori[[i]]),numar=numar+2^(tau-vectori[[i]])];vectorj=Append[vectorj,numar]]]; vectorcaz2=vectorj;], sigma=sigma12; sigmax={}; For[i=1,iLength[sigma],i++,sigmax=Append[sigmax,sigma[[i,1]]]]; sigma1={};sigma2={}; For[i=1,iLength[sigma],i++,sigma1=Append[sigma1,sigma[[i,2]]]]; For[i=1,iLength[sigma],i++,jaja=IntegerPart[j/(2^(n-sigma[[i,1]]))]; If[Mod[jaja,2] 0,sigma2=Append[sigma2,0],sigma2=Append[sigma2,1]]]; If[sigma1==sigma2,vectorj=multimetau,vectorj={}]; vectorcaz1=vectorj; sigma=sigma11; sigmax={}; For[i=1,iLength[sigma],i++,sigmax=Append[sigmax,sigma[[i,1]]]]; If[Intersection[x2,sigmax]{},j1=0;For[i=1,iLength[sigma],i++,j1=j1+sigma[[i,2]]*2^(tau-sigma[[i,1]])]; vectorj={};vectorj=Append[vectorj,j1]; If[tau-Length[sigma] 0,vectorcaz2=vectorj;vectorj=Intersection[vectorcaz1,vectorcaz2];,

Page 150: Aureliu Zgureanu - Codari Informatice

150

vector={};vectori1={}; For[i=1,iLength[sigma],i++,vectori1=Append[vectori1,sigma[[i,1]]]]; vectori=Complement[x1,vectori1];(*(indicii din diferenta)*) s=Length[vectori]; For[i=1,is,i++,lungimej=Length[vectorj]; For[k=1,klungimej,k++,partintr=IntegerPart[vectorj[[k]]/2^(tau-vectori[[i]])]; partintr=partintr+1; numar=vectorj[[k]]; If[Mod[partintr,2] 0,numar=numar-2^(tau-vectori[[i]]),numar=numar+2^(tau-vectori[[i]])];vectorj=Append[vectorj,numar]]]; vectorcaz2=vectorj; vectorj=Intersection[vectorcaz1,vectorcaz2] ]]]]; vectorjfinal=Union[vectorjfinal,vectorj];vectordif=Append[vectordif,vectorj]; alipire=Flatten[vectordif]; alipire=Tally[alipire]; difersimetr={}; For[i13=1,i13<=Length[alipire],i13++,If[Mod[alipire[[i13,2]],2]>0, difersimetr=Append[difersimetr,alipire[[i13,1]]]]]; ]; Print["j=",ij,"; Diferen a simetric este: ",difersimetr] ]; timp2=AbsoluteTime[]; Print["In total au trecut ",timp2-timp1 ," secunde."]; Codul sursă al programului de calcul a submulţimilor de coleane a funcţiei booleene de forma F= U1 U2… Uk (compartimentul 2.2.2). timp1=AbsoluteTime[]; tau=3;n=5; jjj=2^(n-tau)-1; sigmaa={{{1,1},{2,1},{3,1},{4,1}},{{1,1},{2,1},{3,1},{5,1}},{{1,1},{2,1},{4,1},{5,1}},{{1,1},{3,1},{4,1},{5,1}},{{2,1},{3,1},{4,1},{5,1}},{{1,1},{2,1},{3,1},{4,1},{5,1}}}; For[ij=0,ijjjj,ij++,j=ij; vectorjfinal={}; For[ii=1,iiLength[sigmaa],ii++, sigma=sigmaa[[ii]]; sigma11={};sigma12={}; For[i=1,iLength[sigma],i++,If[sigma[[i,1]]<=tau,sigma11=Append[sigma11,sigma[[i]]],sigma12=Append[sigma12,sigma[[i]]]]]; x=Table[i,{i,n}]; x1=Table[i,{i,tau}]; x2=Table[i,{i,tau+1,n}]; multimetau=Table[i-1,{i,2^tau}]; sigmax={}; For[i=1,iLength[sigma],i++,sigmax=Append[sigmax,sigma[[i,1]]]]; If[Intersection[x1,sigmax]¬{}, sigma1={};sigma2={}; For[i=1,iLength[sigma],i++,sigma1=Append[sigma1,sigma[[i,2]]]]; For[i=1,iLength[sigma],i++,jaja=IntegerPart[j/(2^(n-sigma[[i,1]]))]; If[Mod[jaja,2]¬0,sigma2=Append[sigma2,0],sigma2=Append[sigma2,1]]]; If[sigma1==sigma2,vectorj=multimetau,vectorj={}]; vectorcaz1=vectorj; ,If[Intersection[x2,sigmax]¬{},j1=0;For[i=1,iLength[sigma],i++,j1=j1+sigma[[i,2]]*2^(tau-sigma[[i,1]])]; vectorj={};vectorj=Append[vectorj,j1]; If[tau==Length[sigma],vectorj={j1}, vector={};vectori1={}; For[i=1,iLength[sigma],i++,vectori1=Append[vectori1,sigma[[i,1]]]]; vectori=Complement[x1,vectori1];(*(indicii din diferenta)*) s=Length[vectori]; For[i=1,is,i++,lungimej=Length[vectorj]; For[k=1,klungimej,k++,partintr=IntegerPart[vectorj[[k]]/2^(tau-vectori[[i]])]; partintr=partintr+1; numar=vectorj[[k]]; If[Mod[partintr,2] 0,numar=numar-2^(tau-vectori[[i]]),numar=numar+2^(tau-vectori[[i]])];vectorj=Append[vectorj,numar]]]; vectorcaz2=vectorj;], sigma=sigma12; sigmax={}; For[i=1,iLength[sigma],i++,sigmax=Append[sigmax,sigma[[i,1]]]]; sigma1={};sigma2={}; For[i=1,iLength[sigma],i++,sigma1=Append[sigma1,sigma[[i,2]]]]; For[i=1,iLength[sigma],i++,jaja=IntegerPart[j/(2^(n-sigma[[i,1]]))]; If[Mod[jaja,2] 0,sigma2=Append[sigma2,0],sigma2=Append[sigma2,1]]]; If[sigma1==sigma2,vectorj=multimetau,vectorj={}]; vectorcaz1=vectorj; sigma=sigma11; sigmax={}; For[i=1,iLength[sigma],i++,sigmax=Append[sigmax,sigma[[i,1]]]];

Page 151: Aureliu Zgureanu - Codari Informatice

151

If[Intersection[x2,sigmax]¬{},j1=0;For[i=1,i Length[sigma],i++,j1=j1+sigma[[i,2]]*2^(tau-sigma[[i,1]])]; vectorj={};vectorj=Append[vectorj,j1]; If[tau-Length[sigma] 0,vectorcaz2=vectorj;vectorj=Intersection[vectorcaz1,vectorcaz2];, vector={};vectori1={}; For[i=1,iLength[sigma],i++,vectori1=Append[vectori1,sigma[[i,1]]]]; vectori=Complement[x1,vectori1];(*(indicii din diferenta)*) s=Length[vectori]; For[i=1,is,i++,lungimej=Length[vectorj]; For[k=1,klungimej,k++,partintr=IntegerPart[vectorj[[k]]/2^(tau-vectori[[i]])]; partintr=partintr+1; numar=vectorj[[k]]; If[Mod[partintr,2] 0,numar=numar-2^(tau-vectori[[i]]),numar=numar+2^(tau-vectori[[i]])];vectorj=Append[vectorj,numar]]]; vectorcaz2=vectorj; vectorj=Intersection[vectorcaz1,vectorcaz2] ]]]]; vectorjfinal=Union[vectorjfinal,vectorj]; ]; Print["Vectorul J pentru J=",ij," este: ",vectorjfinal]]; timp2=AbsoluteTime[]; Print["In total au trecut ",timp2-timp1 ," secunde."];

Codul sursă al programului de calculare a mulţimii J a derivatei funcţiei booleene (compartimentul 2.2.3). timp1=AbsoluteTime[]; vector={};numar=2^265-13;n=3000; vectorj={}; vectorj=Append[vectorj,numar]; vectori={1357,10,2582,1937,2987,30}; s=Length[vectori]; For[i=1,is,i++, lungimej=Length[vectorj]; For[j=1,jlungimej,j++, partintr=IntegerPart[vectorj[[j]]/2^(n-vectori[[i]])]; partintr=partintr+1; numar=vectorj[[j]]; If[Mod[partintr,2] 0,numar=numar-2^(n-vectori[[i]]),numar=numar+2^(n-vectori[[i]])];vectorj=Append[vectorj,numar]]]; vectorj timp2=AbsoluteTime[]; Print["In total au trecut ",timp2-timp1 ," secunde."]; Codul sursă al programului de calculare a derivatei funcţiei booleene (compartimentul 2.2.3). tau=3; n=13;deriv={}; sf1={4,5,7}; card=2^n;card1=2^tau; variabile={3,1}; y={};For[i=1,icard1,i++,y=Append[y,i-1]]; For[k=1,kLength[variabile],k++,deriv={};sf0=Complement[y,sf1];sf=sf0; If[Length[sf1]<Length[sf0],sf=sf1]; For[j=1,j Length[sf],j++, partintr=IntegerPart[sf[[j]]/2^(tau-variabile[[k]])]+1; numar=sf[[j]]; If[Mod[partintr,2]0,vecin=numar-2^(tau-variabile[[k]]),vecin=numar+2^(tau-variabile[[k]])]; If[¬MemberQ[sf,vecin],deriv=Append[deriv,numar];deriv=Append[deriv,vecin]]; sf1=deriv]]; Sort[deriv]

Page 152: Aureliu Zgureanu - Codari Informatice

152

Codul sursă al generatorului de numere prime (compartimentul 2.4) data12=Date[]; Print["Am nceput lucrul la ",Date[]]; tabelnou={};numcifretabelnou={}; numnumprime=2; contornumprom=0; While[contornumprom<numnumprime, data1=Date[]; Print["Numarul ",contornumprom+1]; nfb=9;

depozit1={3,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103}; ClearAll[i,i1,j,j1,l,t,t1,b,b1,q,q1,p,p1,s,s1]; ClearAll[exponentinitial]; diferentadecifre=0; contorrandom=1; depozit=depozit1; Array[α,nfb];Array[ni,nfb]; For[i=1,infb,i++,α[i]=i*exponentinitial+1]; cm=500; exponentinitial=0; numarcautat=1;

RandomRelist[xxxx_List]:=Block[{rand=xxxx,pppp},Do[pppp=Random[Integer,{1,iiii}];rand[[{pppp,iiii}]]=rand[[{iiii,pppp}]],{iiii,Length[xxxx]}];rand];

(Label["reluare"]; hhh=RandomRelist[Range[Length[depozit1]]]; For[j=1,jnfb,j++,depozit[[j]]=depozit1[[hhh[[j]]]]]; For[j=1,jnfb,j++,numarcautat=numarcautat*depozit[[j]]^α[j];];

While[Length[IntegerDigits[numarcautat]]<cm,cm1=Length[IntegerDigits[numarcautat]]; numarcautat=1;exponentinitial=exponentinitial+1;For[j=1,jnfb,j++, numarcautat=numarcautat*depozit[[j]]^α[j]];];

cm1=Length[IntegerDigits[numarcautat]]; For[j=1,jnfb,j++,ni[j]=exponentinitial]; For[i=1,infb,i++,α[i]=i*ni[i]+1]; For[j=1,jnfb,j++,While[Length[IntegerDigits[numarcautat]]>cm&&ni[j]>0,ni[j]=ni[j]-1;numarcautat=1; For[j1=1,j1 nfb,j1++,numarcautat=numarcautat*depozit[[j1]]^(j1*ni[j1]+1)];If[Length[IntegerDigits[numarcautat]]<cm,ni[j]=ni[j]+1]]];

numarcautat=1; For[j1=1,j1nfb,j1++,numarcautat=numarcautat*depozit[[j1]]^(j1*ni[j1]+1)];

If[Length[IntegerDigits[numarcautat]]>cm,ni[nfb]=ni[nfb]-1]; numarcautat=1;For[j1=1,j1nfb,j1++,numarcautat=numarcautat*depozit[[j1]]^(j1*ni[j1]+1)];

If[Length[IntegerDigits[numarcautat]]<cm,ni[nfb]=ni[nfb]+1]; Array[ni,nfb];numarcautat=1; For[j1=1,j1nfb,j1++,numarcautat=numarcautat*depozit[[j1]]^(j1*ni[j1]+1)]; Array[ni,nfb];cm1=Length[IntegerDigits[numarcautat]];

If[cm1-cm>diferentadecifre||cm1-cm<0,contorrandom=contorrandom+1;Goto["reluare"]]); nnm=numarcautat; baz=Table[depozit[[j1]],{j1,nfb}]; exp=Table[j1*ni[j1]+1,{j1,nfb}]; d=nfb;mmm=Table[{,},{d}]; Do[mmm[[i,1]]=baz[[i]];mmm[[i,2]]=exp[[i]],{i,d}]; mm=Sort[mmm];

Print["Nucleul oferit este mm=",mm," si are ",Length[IntegerDigits[numarcautat]]," cifre " ]; data2=Date[]; datamodul2=Date[]; data3=data2[[3]]*3600*24+data2[[4]]*3600+data2[[5]]*60+data2[[6]]; data4=data1[[3]]*3600*24+data1[[4]]*3600+data1[[5]]*60+data1[[6]]; data5=data3-data4; zile=IntegerPart[data5/(3600*24)]; ore=IntegerPart[data5/3600]; inute=IntegerPart[data5/60]-ore*60; secunde=data5-(zile*3600*24+ore*3600+minute*60); (*Simplu la maximum*)

Print["................ Programul Simplu la Maximum ....................."]; nnm=numarcautat; d=numarcautat; n=1;

For[i=n,in+100000000,i++, qwerty=0; prim=1+(2*(i-1)*(2*i-3)-(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;Print[];k=(prim-1)/d;Print[i," ",prim," ", Length[IntegerDigits[prim]]," cifre axa 1"," k=",FactorInteger[(prim-1)/d]]];

If[qwerty==1,break[];Goto[modulul2]]; prim=1+2*(i-1)*(2*i-3)*d;

Page 153: Aureliu Zgureanu - Codari Informatice

153

If[PrimeQ[prim],t=prim;qwerty=1;Print[];k=(prim-1)/d;Print[i," ",prim," ", Length[IntegerDigits[prim]]," cifre diagonala 1"," k=",FactorInteger[(prim-1)/d]]];

If[qwerty==1,break[];Goto[modulul2]]; prim=1+(2*(i-1)*(2*i-3)+(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;Print[];k=(prim-1)/d;Print[i," ",prim," ",

Length[IntegerDigits[prim]]," cifre axa 2"," k=",FactorInteger[(prim-1)/d]]]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+4*(i-1)2*d; If[PrimeQ[prim],t=prim;qwerty=1;Print[];k=(prim-1)/d;Print[i," ",prim," ",

Length[IntegerDigits[prim]]," cifre diagonala 2"," k=",FactorInteger[(prim-1)/d]]]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+(2*(i-1)*(2*i-1)-(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;Print[];k=(prim-1)/d;Print[i," ",prim," ",

Length[IntegerDigits[prim]]," cifre axa 3"," k=",FactorInteger[(prim-1)/d]]]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+2*(i-1)*(2*i-1)*d; If[PrimeQ[prim],t=prim;qwerty=1;Print[];k=(prim-1)/d;Print[i," ",prim," ",

Length[IntegerDigits[prim]]," cifre diagonala 3"," k=",FactorInteger[(prim-1)/d]]]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+(2*(i-1)*(2*i-1)+(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;Print[];k=(prim-1)/d;Print[i," ",prim," ",

Length[IntegerDigits[prim]]," cifre axa 4"," k=",FactorInteger[(prim-1)/d]]]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+(4*i*(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;Print[];k=(prim-1)/d;Print[i," ",prim," ",

Length[IntegerDigits[prim]]," cifre diagonala 4"," k=",FactorInteger[(prim-1)/d]]]; If[qwerty==1,break[];Goto[modulul2]];]; Label[modulul2]; data2=Date[]; datamodul3=Date[]; data3=data2[[3]]*3600*24+data2[[4]]*3600+data2[[5]]*60+data2[[6]];

data4=datamodul2[[3]]*3600*24+datamodul2[[4]]*3600+datamodul2[[5]]*60+datamodul2[[6]]; data5=data3-data4; zile=IntegerPart[data5/(3600*24)]; ore=IntegerPart[data5/3600]; minute=IntegerPart[data5/60]-ore*60; secunde=data5-(zile*3600*24+ore*3600+minute*60); Print["............................Testarea..................................."]; Print["k=",k,"=",FactorInteger[k]]; km=FactorInteger[k]; lmm=Length[mm]; lkm=Length[km]; j=1; Label[iute];While[j<=lkm, For[i=1,ilmm,i++, If[km[[j,1]] mm[[i,1]], mm[[i,2]]=mm[[i,2]]+km[[j,2]];j=j+1;Goto[iute]];]; mm= Append[mm,km[[j]]];j=j+1]; mp= mm;dim=Length[mp];mp=Sort[mp];mp1=mp; Print[" t-1 = k*mm= ",mp]; Do[mp[[i]]=Reverse[mp[[i]]],{i,dim}];mp=Sort[mp]; Print["t=",t]; Print["========================================"];

au={2,3,5,6,7,10,11,12,13,14,15,17,18,19,20,21,22,21,24,26,28,29,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58,59,60,61,62,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100}; lua=Length[au];

b=1; a=au[[b]]; rest1=1; If[rest1==1, b=1; Label[repet]; a=au[[b]]; rest1=PowerMod[a,t-1,t]; If[rest1==1, For[i=1,iLength[mp1],i++, If[PowerMod[a,(t-1)/mp1[[i,1]],t]==1,

b=b+1;If[b<lua,Goto[repet]],If[(i==Length[mp1])&&(b lua),Print[]; contornumprom=contornumprom+1;tabelnou=Append[tabelnou,prim]; numcifretabelnou=Append[numcifretabelnou,Length[IntegerDigits[prim]]]]]],Print["Numarul dat nu este prim!!!"]],

Print["Numarul dat nu este prim!!!"]]; data2=Date[]; data3=data2[[3]]*3600*24+data2[[4]]*3600+data2[[5]]*60+data2[[6]];

Page 154: Aureliu Zgureanu - Codari Informatice

154

data4=datamodul3[[3]]*3600*24+datamodul3[[4]]*3600+datamodul3[[5]]*60+datamodul3[[6]]; data5=data3-data4; zile=IntegerPart[data5/(3600*24)]; ore=IntegerPart[data5/3600]; minute=IntegerPart[data5/60]-ore*60; secunde=data5-(zile*3600*24+ore*3600+minute*60);

data2=Date[]; data3=data2[[3]]*3600*24+data2[[4]]*3600+data2[[5]]*60+data2[[6]]; data4=data1[[3]]*3600*24+data1[[4]]*3600+data1[[5]]*60+data1[[6]]; data5=data3-data4; zile=IntegerPart[data5/(3600*24)]; ore=IntegerPart[data5/3600]; minute=IntegerPart[data5/60]-ore*60;secunde=data5-(zile*3600*24+ore*3600+minute*60); ]

Print["Am obtinut urmatoarele ",numnumprime," numere prime:"]; Print[tabelnou]; Print["Numarul de cifre respectiv:"]; Print[numcifretabelnou]; data2=Date[]; data3=data2[[3]]*3600*24+data2[[4]]*3600+data2[[5]]*60+data2[[6]]; data4=data12[[3]]*3600*24+data12[[4]]*3600+data12[[5]]*60+data12[[6]]; data5=data3-data4;zile=IntegerPart[data5/(3600*24)]; ore=IntegerPart[data5/3600];minute=IntegerPart[data5/60]-ore*60; secunde=data5-(zile*3600*24+ore*3600+minute*60);

Print["In total au trecut ","Au trecut ",zile," zile, ",ore," ore, ",minute," minute, ",secunde," secunde."]; Codul sursă al generatorului de chei pentru algoritmul Cripto 1 (compartimentul 3.1). timp1=AbsoluteTime[]; tabelnou={};numcifretabelnou={}; numnumprime=50;numarnou=2;contornumprom=0; While[contornumprom<numnumprime, nfb=10; depozit1={3,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103}; ClearAll[i,i1,j,j1,l,t,t1,b,b1,q,q1,p,p1,s,s1]; ClearAll[exponentinitial]; diferentadecifre=0; contorrandom=1; depozit=depozit1; Array[α,nfb];Array[ni,nfb]; For[i=1,infb,i++, α[i]=i*exponentinitial+1]; cm=150; exponentinitial=0; numarcautat=1; RandomRelist[xxxx_List]:=Block[{rand=xxxx,pppp},Do[pppp=Random[Integer,{1,iiii}]; rand[[{pppp,iiii}]]=rand[[{iiii,pppp}]],{iiii,Length[xxxx]}];rand]; (Label["reluare"]; hhh=RandomRelist[Range[Length[depozit1]]]; For[j=1,jnfb,j++,depozit[[j]]=depozit1[[hhh[[j]]]]]; For[j=1,jnfb,j++,numarcautat=numarcautat*depozit[[j]]^α[j];]; numarcautat; While[Length[IntegerDigits[numarcautat]]<cm,cm1=Length[IntegerDigits[numarcautat]]; numarcautat=1;exponentinitial=exponentinitial+1; For[j=1,jnfb,j++,numarcautat=numarcautat*depozit[[j]]^α[j]];]; cm1=Length[IntegerDigits[numarcautat]]; For[j=1,jnfb,j++,ni[j]=exponentinitial]; For[i=1,infb,i++,α[i]=i*ni[i]+1]; For[j=1,jnfb,j++,While[Length[IntegerDigits[numarcautat]]>cm&&ni[j]>0,ni[j]=ni[j]-1;numarcautat=1; For[j1=1,j1nfb,j1++,numarcautat=numarcautat*depozit[[j1]]^(j1*ni[j1]+1)];If[Length[IntegerDigits[numarcautat]]<cm,ni[j]=ni[j]+1]]]; numarcautat=1; For[j1=1,j1nfb,j1++,numarcautat=numarcautat*depozit[[j1]]^(j1*ni[j1]+1)]; If[Length[IntegerDigits[numarcautat]]>cm,ni[nfb]=ni[nfb]-1]; numarcautat=1;For[j1=1,j1 nfb,j1++,numarcautat=numarcautat*depozit[[j1]]^(j1*ni[j1]+1)]; If[Length[IntegerDigits[numarcautat]]<cm,ni[nfb]=ni[nfb]+1]; Array[ni,nfb]; numarcautat=1; For[j1=1,j1nfb,j1++,numarcautat=numarcautat*depozit[[j1]]^(j1*ni[j1]+1)]; Array[ni,nfb]; cm1=Length[IntegerDigits[numarcautat]]; If[cm1-cm>diferentadecifre||cm1-cm<0,contorrandom=contorrandom+1;Goto["reluare"]]); nnm=numarcautat;

Page 155: Aureliu Zgureanu - Codari Informatice

155

baz=Table[depozit[[j1]],{j1,nfb}]; exp=Table[j1*ni[j1]+1,{j1,nfb}]; d=nfb;mmm=Table[{,},{d}]; Do[mmm[[i,1]]=baz[[i]];mmm[[i,2]]=exp[[i]],{i,d}]; mm=Sort[mmm]; (*Simplu la maximum*) nnm=numarcautat; d=numarcautat; n=1; For[i=n,in+100000000,i++, qwerty=0; prim=1+(2*(i-1)*(2*i-3)-(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+2*(i-1)*(2*i-3)*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+(2*(i-1)*(2*i-3)+(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+4*(i-1)2*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+(2*(i-1)*(2*i-1)-(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+2*(i-1)*(2*i-1)*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+(2*(i-1)*(2*i-1)+(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+(4*i*(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; ]; Label[modulul2]; km=FactorInteger[k]; lmm=Length[mm]; lkm=Length[km]; j=1; Label[iute];While[j<=lkm, For[i=1,ilmm,i++, If[km[[j,1]] mm[[i,1]], mm[[i,2]]=mm[[i,2]]+km[[j,2]];j=j+1;Goto[iute]];]; mm= Append[mm,km[[j]]];j=j+1]; mp= mm;dim=Length[mp];mp=Sort[mp];mp1=mp; Do[mp[[i]]=Reverse[mp[[i]]],{i,dim}];mp=Sort[mp]; au={2,3,5,6,7,10,11,12,13,14,15,17,18,19,20,21,22,21,24,26,28,29,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58,59,60,61,62,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100};lua=Length[au]; b=1; a=au[[b]]; rest1=1; If[rest1==1, b=1; Label[repet]; a=au[[b]]; rest1=PowerMod[a,t-1,t]; If[rest1==1, For[i=1,iLength[mp1],i++, If[PowerMod[a,(t-1)/mp1[[i,1]],t] 1, b=b+1;If[b<lua,Goto[repet]],If[(i==Length[mp1])&&(b lua),contornumprom=contornumprom+1; tabelnou=Append[tabelnou,prim];numcifretabelnou=Append[numcifretabelnou,Length[IntegerDigits[prim]]]]]]] ]; ] (*--------------------------------Partea 2--------------------------------*) depozit1=tabelnou;listak={};hhhnou=RandomRelist[Range[Length[depozit1]]]; tabelnou={};numcifretabelnou={}; numarperechi=5; numnumprime=numarperechi*2; contornumprom=0;While[contornumprom<numnumprime, nfb=numarnou; ClearAll[i,i1,j,j1,l,t,t1,b,b1,q,q1,p,p1,s,s1]; ClearAll[exponentinitial]; diferentadecifre=0; contorrandom=1; depozit=depozit1; exponentinitial=0; numarcautat=1; RandomRelist[xxxx_List]:=Block[{rand=xxxx,pppp},Do[pppp=Random[Integer,{1,iiii}];rand[[{pppp,iiii}]]=rand[[{iiii,pppp}]],{iiii,Length[xxxx]}];rand]; hhh=RandomRelist[Range[Length[depozit1]]];

Page 156: Aureliu Zgureanu - Codari Informatice

156

For[j=1,jnfb,j++,depozit[[j]]=depozit1[[hhh[[j]]]]]; For[j=1,jnfb,j++,numarcautat=numarcautat*depozit[[j]]]; cm=Length[IntegerDigits[numarcautat]]; nnm=numarcautat; baz=Table[depozit[[j1]],{j1,nfb}]; (* Exponentii sunt egali cu 1!!!*) exp=Table[1,{j1,nfb}]; d=nfb;mmm=Table[{,},{d}]; Do[mmm[[i,1]]=baz[[i]];mmm[[i,2]]=exp[[i]],{i,d}]; mm=Sort[mmm]; (*Simplu la maximum*) nnm=numarcautat; d=numarcautat; n=1; For[i=n,in+100000000,i++, qwerty=0; prim=1+(2*(i-1)*(2*i-3)-(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+2*(i-1)*(2*i-3)*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+(2*(i-1)*(2*i-3)+(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+4*(i-1)2*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+(2*(i-1)*(2*i-1)-(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+2*(i-1)*(2*i-1)*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+(2*(i-1)*(2*i-1)+(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; prim=1+(4*i*(i-1))*d; If[PrimeQ[prim],t=prim;qwerty=1;k=(prim-1)/d;]; If[qwerty==1,break[];Goto[modulul2]]; ]; Label[modulul2]; km=FactorInteger[k]; contor1=0; For[i=1,iLength[tabelnou],i++,If[primtabelnou[[i]],contor1=contor1+1]]; If[contor10, lmm=Length[mm]; lkm=Length[km]; j=1; Label[iute];While[j<=lkm, For[i=1,ilmm,i++, If[km[[j,1]] mm[[i,1]], mm[[i,2]]=mm[[i,2]]+km[[j,2]];j=j+1;Goto[iute]];]; mm= Append[mm,km[[j]]];j=j+1]; For[i=1,ilkm,i++,listak= Append[listak,km[[i]]]]; mp= mm;dim=Length[mp];mp=Sort[mp];mp1=mp; Do[mp[[i]]=Reverse[mp[[i]]],{i,dim}];mp=Sort[mp]; au={2,3,5,6,7,10,11,12,13,14,15,17,18,19,20,21,22,21,24,26,28,29,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58,59,60,61,62,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100};lua=Length[au]; b=1; a=au[[b]]; rest1=1; If[rest1==1, b=1; Label[repet]; a=au[[b]]; rest1=PowerMod[a,t-1,t]; If[rest1==1, For[i=1,iLength[mp1],i++, If[PowerMod[a,(t-1)/mp1[[i,1]],t] 1, b=b+1;If[b<lua,Goto[repet]],If[(i==Length[mp1])&&(b lua),contornumprom=contornumprom+1;tabelnou=Append[tabelnou,prim];numcifretabelnou=Append[numcifretabelnou,Length[IntegerDigits[prim]]]]]]]]]; ] pmare={};qmare={};numcifree={};einitial={}; For[i=1,i<=numnumprime/2,i++,pmare=Append[pmare,tabelnou[[i]]]]; For[i=numnumprime/2+1,i<=numnumprime,i++,qmare=Append[qmare,tabelnou[[i]]]];

Page 157: Aureliu Zgureanu - Codari Informatice

157

For[i=1,i<=numnumprime/2,i++,einitial=Append[einitial,IntegerPart[Log[(pmare[[i]]*qmare[[i]])/Log[9]]]];numcifree=Append[numcifree,Length[IntegerDigits[IntegerPart[Log[(pmare[[i]]*qmare[[i]])/Log[9]]]]]]]; (*Print["Vectorul E initial este: ",einitial]; Print["Numarul de cifre al lui E ste : ",numcifree];*) listapentrue={}; For[i=1,inumarperechi,i++,copk=1;While[copk0,copk=0;einitial[[i]]=NextPrime[einitial[[i]]];For[j=1,jLength[listak],j++,If[einitial[[i]] listak[[j,1]],copk=copk+1]]; If[copk0,listapentrue=Append[listapentrue,einitial[[i]]]]]]; vectorule={};vectoruld={}; For[i=1,i<=numarperechi,i++,p=pmare[[i]];q=qmare[[i]]; f=(p-1)*(q-1); e=listapentrue[[i]]; b=e; contord=0; k=0; While[contord<1,k=k+1;a=1+k*f;If[Mod[a,b] 0,contord=contord+1;d=a/b;]]; vectorule=Append[vectorule,e];vectoruld=Append[vectoruld,d]] vectoruln={}; For[i=1,i<=numarperechi,i++,vectoruln=Append[vectoruln,pmare[[i]]*qmare[[i]]]]; biti={}; For[i=1,i<=numarperechi,i++,biti=Append[biti,Length[IntegerDigits[vectoruln[[i]],2]]]] Print["Vectorul E este: "]; Print[vectorule]; Print["Vectorul D este: "]; Print[vectoruld]; Print["Vectorul N este: "]; Print[vectoruln]; Print["Bitii vectorului N sunt: "]; Print[biti]; timp2=AbsoluteTime[]; Print["In total au trecut ",timp2-timp1 ," secunde."] Codul sursă al codificarorului algoritmului Cripto 1 (compartimentul 3.1). t1=AbsoluteTime[]; submsimboluri="textul"; t=StringLength[submsimboluri]; textdinnumere=ToCharacterCode[submsimboluri]; (*Print["Textul codificat este> ",textdinnumere];*) vectorulm=textdinnumere; vectorule={-se înscriu coordonatele vectorului e-} vectoruln={-se înscriu coordonatele vectorului n-}; lungimecheie=Length[vectoruln]; vectorulc={}; numarintreg=IntegerPart[t/lungimecheie]; restul=t-lungimecheie*numarintreg; For[inou=1,inounumarintreg,inou++, For[i=1,ilungimecheie,i++,c=PowerMod[vectorulm[[lungimecheie*(inou-1)+i]],vectorule[[i]],vectoruln[[i]]];vectorulc=Append[vectorulc,c]]]; For[i=1,irestul,i++,c=PowerMod[vectorulm[[lungimecheie*(inou-1)+i]],vectorule[[i]],vectoruln[[i]]]; vectorulc=Append[vectorulc,c]]ş Print["Vectorul C este: "]; Print[vectorulc]; t2=AbsoluteTime[]; Print["In total au trecut ",t2-t1 ," secunde."]; Codul sursă al decodificarorului algoritmului Cripto 1 (compartimentul 3.1). t1=AbsoluteTime[]; vectoruld={-se înscriu coordonatele vectorului d-}; vectoruln={-se înscriu coordonatele vectorului n-}; vectorulc={-se înscriu coordonatele vectorului c-}; lungimecheie=Length[vectoruld]; t=Length[vectorulc]; vectorulm={}; numarintreg=IntegerPart[t/lungimecheie];

Page 158: Aureliu Zgureanu - Codari Informatice

158

restul=t-lungimecheie*numarintreg; For[inou=1,inounumarintreg,inou++, For[i=1,ilungimecheie,i++,m=PowerMod[vectorulc[[lungimecheie*(inou-1)+i]],vectoruld[[i]],vectoruln[[i]]];vectorulm=Append[vectorulm,m]]]; For[i=1,irestul,i++,m=PowerMod[vectorulc[[lungimecheie*(inou-1)+i]],vectoruld[[i]],vectoruln[[i]]];vectorulm=Append[vectorulm,m]]; (*Print["Vectorul M este: ",vectorulm];*) text=FromCharacterCode[vectorulm]; Print["Textul decodificat este: "]; Print[text]; t2=AbsoluteTime[]; Print["In total au trecut ",t2-t1 ," secunde."]; Codul sursă al algorimului Cripto 2 (compartimentul 3.2). t1=AbsoluteTime[]; textul="-se introduce mesajul pentru criptare-"; t=StringLength[textul]; If[PrimeQ[t],t=t+1]; factori=FactorInteger[t]; factoriputeri={}; For[i=1,iLength[factori],i++,factoriputeri=Append[factoriputeri,factori[[i,1]]^factori[[i,2]]]]; a=Max[factoriputeri];b=t/a;a=Max[b,a];b=t/a; Print["a=",a]; Print["b=",b]; vectorulm=ToCharacterCode[textul]; factori=FactorInteger[Length[vectorulm]]; baza=3704967094349503434556768789807876246246452103549875251520; matrcod=Table[1,{i,1,a},{j,1,b}]; contorvectorulm=0; For[i=1,ia,i++,For[j=1,jb,j++,contorvectorulm=contorvectorulm+1; matrcod[[i,j]]=vectorulm[[contorvectorulm]]]]; MatrixForm[matrcod];vectorulg={}; For[i=1,ia,i++,gintermed=0;For[j=1,jb,j++,gintermed=gintermed+(matrcod[[i,j]])*baza^(b-j)];vectorulg=Append[vectorulg,gintermed]]; vectorulg=Append[vectorulg,a];vectorulg=Append[vectorulg,b];submsimboluri=ToString[baza]; t=StringLength[submsimboluri];textdinnumere=ToCharacterCode[submsimboluri]; (*Print["Textul codificat este> ",textdinnumere];*) vectorulm=textdinnumere; vectorule={-se introduc coordonatele vectorului e pentru criptarea cheii private-}; vectoruln={-se introduc coordonatele vectorului n pentru criptarea cheii private-}; lungimecheie=Length[vectoruln]; vectorulc={};numarintreg=IntegerPart[t/lungimecheie];restul=t-lungimecheie*numarintreg; For[inou=1,inounumarintreg,inou++, For[i=1,ilungimecheie,i++,c=PowerMod[vectorulm[[lungimecheie*(inou-1)+i]],vectorule[[i]],vectoruln[[i]]]; vectorulc=Append[vectorulc,c]]]; For[i=1,irestul,i++,c=PowerMod[vectorulm[[lungimecheie*(inou- 1)+i]],vectorule[[i]],vectoruln[[i]]]; vectorulg=Append[vectorulg,c]]; vectorulg=Append[vectorulg,Length[IntegerDigits[baza]]]; (*Print["Vectorul G este: "]; Print[vectorulg]; Print["a=",a]; Print["b=",b];*) t2=AbsoluteTime[]; Print["Criptare In total au trecut ",t2-t1 ," secunde."]; (*DECRIPTARE*) t1=AbsoluteTime[]; baza=vectorulg[[Length[vectorulg]]];a=vectorulg[[Length[vectorulg]-(baza+2)]];b=vectorulg[[Length[vectorulg]-(baza+1)]]; matrcod=Table[1,{i,1,a},{j,1,b}]; vectoruld={-se introduc coordonatele vectorului d pentru decriptarea cheii private-}; vectorulc={-se introduc coordonatele vectorului c pentru decriptarea cheii private-};

Page 159: Aureliu Zgureanu - Codari Informatice

159

For[i=1,ibaza,i++,vectorulc=Prepend[vectorulc,vectorulg[[Length[vectorulg]-(i)]]]]; lungimecheie=Length[vectoruld]; t=Length[vectorulc]; vectorulm={}; numarintreg=IntegerPart[t/lungimecheie]; restul=t-lungimecheie*numarintreg; For[inou=1,inounumarintreg,inou++, For[i=1,ilungimecheie,i++,m=PowerMod[vectorulc[[lungimecheie*(inou-1)+i]],vectoruld[[i]],vectoruln[[i]]];vectorulm=Append[vectorulm,m]]]; For[i=1,irestul,i++,m=PowerMod[vectorulc[[lungimecheie*(inou-1)+i]],vectoruld[[i]],vectoruln[[i]]];vectorulm=Append[vectorulm,m]]; baza=FromCharacterCode[vectorulm]; baza=FromDigits[baza]; For[i=1,ia,i++,matrcod[[i]]=IntegerDigits[vectorulg[[i]],baza]] MatrixForm[matrcod]; contorvectorulm=0; vectorulm={}; For[i=1,ia,i++,For[j=1,jb,j++,contorvectorulm=contorvectorulm+1; vectorulm=Append[vectorulm,matrcod[[i,j]]]]]; vectorulm; text=FromCharacterCode[vectorulm]; (*Print["Textul decodificat este: "]; Print[text];*) t2=AbsoluteTime[]; Print["Decriptare In total au trecut ",t2-t1 ," secunde."]; Codul sursă al algorimului Cripto 3 (compartimentul 3.3). timp1=AbsoluteTime[]; submsimboluri="se introduce mesajul criptat"; m=ToCharacterCode[submsimboluri]; t=Length[m];n=Ceiling[Log[2,t]];k=Ceiling[Log[2,Max[m]]]; m2={}; Print["t=",t,"; n=",n,"; k=",k]; RandomRelist[xxxx_List]:=Block[{rand=xxxx,pppp},Do[pppp=Random[Integer,{1,iiii}];rand[[{pppp,iiii}]]=rand[[{iiii,pppp}]],{iiii,Length[xxxx]}];rand]; tau=3;k=k; cardtau=2^tau; Print["k=",k] Print["key[i] {0,1,2,...,",2^tau-1,"}"]; key={}; For[i=1,i k,i++,numb=RandomInteger[cardtau];subm1=RandomRelist[Range[cardtau]]-1; submkey=Drop[subm1,-(cardtau-numb)];submkey=Sort[submkey];key=Append[key,submkey]]; Print["Cheia este: "]; Print[key]; reuniunekey={}; For[i=1,ik,i++,reuniunekey=Union[reuniunekey,key[[i]]]] If[Length[reuniunekey]<cardtau,i23=RandomInteger[cardtau];key[[i23]]=Union[key[[i23]],Complement[b,reuniunekey]]]; t1=2^(n-tau); b={};For[i=1,i2tau,i++,b=Append[b,i-1]];c={};m2={}; For[i=1,it,i++,m1=IntegerDigits[m[[i]],2];If[Length[m1]<k,dif=k-Length[m1];For[j=1,jdif,j++,m1=Prepend[m1,0]]];m2={};int=IntegerPart[(i-1)/t1]; For[j=1,jk,j++,If[MemberQ[key[[j]],int],m2=Append[m2,1],m2=Append[m2,0]]];m3=Mod[m1+m2,2]; c=Append[c,FromDigits[m3,2]]]; Print["Textul codificat este: "]; Print[c]; Print["Decodificarea imediat este: "] FromCharacterCode[c] textul=ToString[key]; (* Criptare cheie *) numcifbaza=50;

Page 160: Aureliu Zgureanu - Codari Informatice

160

t=StringLength[textul];t1=t; Print["Num rul de simboluri n CHEIE este t=",t]; If[PrimeQ[t],textul=textul<>"*";t=StringLength[textul];Print["Num rul nou de simboluri (avem num r prim de simboluri) este t=",t]]; factori=FactorInteger[t];factoriputeri={}; For[i=1,iLength[factori],i++,factoriputeri=Append[factoriputeri,factori[[i,1]]^factori[[i,2]]]]; a=Max[factoriputeri]; If[Length[factori]1,a=factori[[1,1]]^IntegerPart[factori[[1,2]]/3]] b=t/a;a=Max[b,a];b=t/a; baza=RandomInteger[{10numcifbaza-1+1,10numcifbaza}]; vectorulm=ToCharacterCode[textul]; factori=FactorInteger[Length[vectorulm]]; matrcod=Table[1,{i,1,a},{j,1,b}]; contorvectorulm=0; For[i=1,ia,i++,For[j=1,jb,j++,contorvectorulm=contorvectorulm+1; matrcod[[i,j]]=vectorulm[[contorvectorulm]]]]; MatrixForm[matrcod]; vectorulg={}; For[i=1,ia,i++,gintermed=0;For[j=1,jb,j++,gintermed=gintermed+(matrcod[[i,j]])*baza^(b-j)];vectorulg=Append[vectorulg,gintermed]]; vectorulg=Append[vectorulg,baza];vectorulg=Append[vectorulg,a];vectorulg=Append[vectorulg,b]; vectorulg1={};vectorulg1=Prepend[vectorulg1,vectorulg];vectorulg1=Prepend[vectorulg1,c]; Print["Vectorul G este: "]; Print[vectorulg1]; factori; timp2=AbsoluteTime[]; Print["In total au trecut ",timp2-timp1 ," secunde."] (* Decriptarea *) timp1=AbsoluteTime[]; vectorulg1={se introduce criptograma}; vectorulg=vectorulg1[[2]]; baza=vectorulg[[Length[vectorulg]-2]]; a=vectorulg[[Length[vectorulg]-1]];b=vectorulg[[Length[vectorulg]]]; matrcod=Table[1,{i,1,a},{j,1,b}]; vectorulc={};vectorulc=Drop[vectorulg,-2]; For[i=1,ia,i++,matrcod[[i]]=IntegerDigits[vectorulg[[i]],baza]]; MatrixForm[matrcod]; contorvectorulm=0;vectorulm={}; For[i=1,ia,i++,For[j=1,jb,j++,contorvectorulm=contorvectorulm+1; vectorulm=Append[vectorulm,matrcod[[i,j]]]]]; If[vectorulm[[Length[vectorulm]]] 42,vectorulm=Delete[vectorulm,Length[vectorulm]]]; key=FromCharacterCode[vectorulm]; key=ToExpression[key]; Print["Cheia decodificat este: "]; Print[key]; k=Length[key]; c=vectorulg1[[1]];t=Length[c];n=Ceiling[Log[2,t]];reuniunekey={}; For[i=1,i k,i++,reuniunekey=Union[reuniunekey,key[[i]]]] tau=Log[2,Length[reuniunekey]];t1=2^(n-tau);m2={}; Print["t=",t,"; n=",n,"; k=",k]; m5={};m2={}; For[i=1,it,i++,m1=IntegerDigits[c[[i]],2];If[Length[m1]<k,dif=k-Length[m1]; For[j=1,jdif,j++,m1=Prepend[m1,0]]]; m2={};For[j=1,jk,j++,int=IntegerPart[(i-1)/t1]; If[MemberQ[key[[j]],int],m2=Append[m2,1],m2=Append[m2,0]]]; m3=Mod[m1+m2,2];m5=Append[m5,FromDigits[m3,2]]]; FromCharacterCode[m5] timp2=AbsoluteTime[]; Print["In total au trecut ",timp2-timp1 ," secunde."]

Page 161: Aureliu Zgureanu - Codari Informatice

161

Codul sursă a unei variante simplificate a algorimului Cripto 4 (compartimentul 3.4). timp1=AbsoluteTime[]; submsimboluri="mesajul"; q=2; tau=5; m=ToCharacterCode[submsimboluri];t=Length[m];n=Ceiling[Log[q,t]];k=Ceiling[Log[q,Max[m]]]; mmax=Max[m]; m2={}; Print["t=",t,"; n=",n,"; k=",k]; RandomRelist[xxxx_List]:=Block[{rand=xxxx,pppp},Do[pppp=Random[Integer,{1,iiii}];rand[[{pppp,iiii}]]=rand[[{iiii,pppp}]],{iiii,Length[xxxx]}];rand]; k=k+0; exp1=q^tau; exp2=q^k-1; key={}; For[i=1,iexp1,i++,key=Append[key,RandomInteger[{1,exp2}]]]; keymax=Max[key]; k1=Max[{Length[IntegerDigits[mmax,q]],Length[IntegerDigits[keymax,q]]}]; Print["Cheia este:"]; Print[key]; c={};m2={}; For[i=1,it,i++,j1=Mod[i-1,exp1]+1;m1=IntegerDigits[m[[i]],q];If[Length[m1]<k1,dif=k1-Length[m1];For[j=1,jdif,j++,m1=Prepend[m1,0]]];m2=IntegerDigits[key[[j1]],q]; If[Length[m2]<k1,dif=k1-Length[m2];For[j=1,jdif,j++,m2=Prepend[m2,0]]]; m3=Mod[m1+m2,q];c=Append[c,FromDigits[m3,q]]]; Print["Criptograma este:"]; codcod=FromCharacterCode[c]; Print[InputForm[codcod]]; timp2=AbsoluteTime[]; Print["In total au trecut ",timp2-timp1 ," secunde."] timp1=AbsoluteTime[]; c=ToCharacterCode[codcod]; t=Length[c];n=Ceiling[Log[q,t]]; exp1=Length[key]; exp2=q^k-1;tau=Log[q,exp1]; m2={};mmax=Max[m];keymax=Max[key]; Print["t=",t,"; n=",n,"; k=",k] k1=Max[{Length[IntegerDigits[mmax,q]],Length[IntegerDigits[keymax,q]]}]; m5={};m2={}; For[i=1,it,i++,j1=Mod[i-1,exp1]+1;m1=IntegerDigits[c[[i]],q];If[Length[m1]<k1,dif=k1-Length[m1];For[j=1,jdif,j++,m1=Prepend[m1,0]]];m2=IntegerDigits[key[[j1]],q];If[Length[m2]<k1,dif=k1-Length[m2];For[j=1,jdif,j++,m2=Prepend[m2,0]]];m3=Mod[m1-m2+q,q];m5=Append[m5,FromDigits[m3,q]]]; Print["Textul decodificat este:"] FromCharacterCode[m5] timp2=AbsoluteTime[]; Print["In total au trecut ",timp2-timp1 ," secunde."]

Page 162: Aureliu Zgureanu - Codari Informatice

162

DECLARAŢIA PRIVIND ASUMAREA RĂSPUNDERII Subsemnatul, declar pe proprie răspundere că materialele prezentate în teza de doctorat, se referă

la propriile activități și realizări, în caz contrar urmând să suport consecințele, în conformitate cu

legislația în vigoare.

Numele de familie, prenumele: Zgureanu Aureliu

Semnătura:

Data: 15.10.2011

Page 163: Aureliu Zgureanu - Codari Informatice

163

CV AL AUTORULUI

Zgureanu Aureliu Adresa: Republica Moldova, m. Chișinău, c. Bubuieci, str. D. Cantemir 20/2 Telefon: +373 415755, +373 79234829 (mob.) Email: [email protected], [email protected] Data și locul nașterii: 10 noiembrie 19870, s. Gura Camencii, r. Florești, Rep. Moldova Studii: Iunie 1987, Absolvent al ȘM Gura Camnecii Iulie 1992, Absolvent al USM, matematician, profesor 2008-2011, Doctorand la specialitatea 01.01.09 (Cibernetică Matematică și Cercetări Operaționale)

Activitatea profesională

Iunie 1992-Iulie 1994, profesor, ȘM nr. 63, Chișinău Iulie 1994 - Noiembrie 1996, inginer pe pregătirea cadrelor, Moldovahidromaș Noiembrie 1996 - August 2000, profesor de matematică și informatică, Colegiul Tehnic August 2003 - Aprilie 2003, lector, Universitatea de Criminologie Iulie 2003 - 2011, lector superior ATIC

Domenii de activitate științifică

Teoria numerelor, Mulțimi de relații multi-are, Funcţii Booleene, Metode de criptare

Participări la foruri științifice internaționale

1. The XIVth Conference on Applied and Industrial Mathematics, Satellite Conference of the ICM, Chisinau 2006.

2. International Algebraic Conference dedicated to the 100th anniversary of D. K. Faddeev. St Petersburg, Russia, 2007.

3. ASADE Moldova, August 21, 2007. 4. Conferinţa ştiinţifică internaţională „Modelare matematică, optimizare şi

tehnologii informaţionale”. Chişinau, 19-21 martie, 2008. ATIC. 5. Системы управления, контроля и измерений (УКИ-08), Российская

Конференция с международным участием, Москва ИПУ РАН, 2008. 6. Conferinţa Internaţională ICT+ “TEHNOLOGII INFORMAŢIONALE ŞI DE

COMUNICAŢII - 2009”. 19 – 20 MAI 2009, or. CHIŞINĂU. 7. Conferinţa „Managementul întreprinderii în mediul economic contemporan”. 24-

25 septembrie, 2009. Chişinău. 8. Conferinţa ştiinţifică internaţională. Modelare matematică, optimizare şi tehnologii

informaţionale. Chişinau, 26-28 martie, 2010 9. „Tiberiu Popoviciu seminar”, Cluj-Napoca 6-7 september, 2010. 10. International Student Conference on Pure and Applied Mathematics (ISCOPAM),

Iaşi, July 12-16, 2010. 11. MITRE-2011, International Conference dedicated to the 65th anniversary of

Moldova State University, Chişinău, 2011.

Lucrări științifice publicate

1. Bulat, M., Leon,D., Bivol, L., Ciobanu I., Zgureanu,A..(2006) ”Generadores de numeros primos y factorizadores de numeros compuestos” Revista de Matematica: Teoria y Aplicaciones, 2006 ,13(1) CIMPA-UCR-CCSS: pp. 1-15.

2. Bulat, M.; Zgureanu, A.; Ciobanu, I.; Bivol, L. (2006) “A method for obtaining arbitrary form prime numbers”, Satellite Conference of the ICM 2006. The XIVth Conference on Applied and Industrial Mathematics, Chisinau: pp. 70–73.

3. Bulat M., Zgureanu A., Ciobanu I., Bivol L. Generating of prime numbers based on the multidimensional matrices. International Algebraic Conference dedicated to the 100th anniversary of D. K. Faddeev. St Petersburg, Russia, 2007, pp. 98-99.

4. Bulat M., Zgureanu A., Ciobanu I., Bivol L. The inverse transformations of multidimensional matrices. ASADE Moldova, August 21, 2007, pag. 34-34.

5. Bulat M., Zgureanu A., Ciobanu I., Bivol L. Sisteme de criptare cu chei vectoriale. Conferinţa ştiinţifică internaţională. Modelare matematică, optimizare şi tehnologii informaţionale. Chişinau, 19-21 martie, 2008. ATIC, pp. 281 – 285.

6. Булат М.С., Згуряну А.Ф., Чобану Я.И., Бивол Л.Г. Крипто-системы на базе n-арных отношений. Системы управления, контроля и измерений (УКИ-08), Российская Конференция с международным участием, Москва ИПУ РАН, 2008: pp. 66-67.

7. Aureliu Zgureanu, Mihai Bulat. Sisteme de criptare bazate pe funcţii booleene. Conferinţa Internaţională ICT+ “TEHNOLOGII INFORMAŢIONALE ŞI DE COMUNICAŢII- 2009”. 19 – 20 MAI 2009, or. CHIŞINĂU.

Page 164: Aureliu Zgureanu - Codari Informatice

164

8. Zgureanu Aureliu, Sisteme de criptare cu chei variabile. Analele ATIC-2007-2008, vol. I (XII). pp. 92-98, Chişinău. Evrica. 2009.

9. Zgureanu A., Bulat M., Protecţia informaţiei şi managementul întreprinderii. Materialele conferinţei „Managementul întreprinderii în mediul economic contemporan”. 24-25 septembrie, 2009. Chişinău. Evrica. 2009. pp. 312-314.

10. Mihai Bulat, Aureliu Zgureanu, Iacob Ciobanu, Vladimir Izbaş. Sistem de criptare bazat pe derivarea funcţiilor booleene. Conferinţa ştiinţifică internaţională. Modelare matematică, optimizare şi tehnologii informaţionale. Chişinau, 26-28 martie, 2010. pp. 132-141.

11. Aureliu Zgureanu, Sergiu Cataranciuc. Encryption systems based on multidimensional matrixes. „Tiberiu Popoviciu seminar”, Cluj-Napoca 6-7 september, 2010, 11 pagini.

12. Zgureanu Aureliu, Information encryption systems based on Boolean functions. The Computer Science Journal of Moldova, vol.18, no.3(54), 2010, pp. 319-335.

13. Mihai Bulat, Sergiu Cataranciuc, Aureliu Zgureanu. A method for calculating the Zhegalkin polynomial coefficients. MITRE-2011, International Conference dedicated to the 65th anniversary of Moldova State University, Chişinău, 2011, pp. 19-20.