matriČno vrednosne funkcije, polinomi i …yuinfo.artkey.rs/zbornici/2012/html/pdf/422.pdf · ......

5
MATRIČNO VREDNOSNE FUNKCIJE, POLINOMI I KRIPTOGRAFIJA MATRIX VALUED FUNCTIONS, POLYNOMIALS AND CRYPTOGRAPHY Nenad O. Vesić 1 , Dušan J. Simjanović 2 1 Prirodno-matematički fakultet u Nišu, 2 Prirodno-matematički fakultet u Nišu, OŠ „Vuk Karadžić“ u Doljevcu, Sadržaj U ovom radu su predstavljene matrično vrednosne funkcije u kriptografiji. Cilj ovog rada je poboljšanje nekih, prethodno predstavljenih, kriptografskih algoritama. Abstract – Matrix valued functions and cryptography are presented in this paper. The main goal of this paper is a preferment of some presented cryptographic algorithms. 1. UVOD Matrično vrednosna funkcija reda na skupu (u [1, 2] matrična kriva reda na skupu ) je matrica (1) reda sa elementima . U [1, 2], karakteri su skrivani polinomima. Naime, nule polinoma iz matrično vrednosne funkcije su određivale (na jedinstven način) karakter na osnovu tabele sa karakterima (deo privatnog ključa). Komunikacija u [1, 2] je podrazumevala slanje uređenog skupa sa numeričkih matrica reda . Drugi problem u prethodno pomenutim radovima , ogleda se u tome što je jedan karakter kodiran sa 3 polinoma. To je povećavalo potrebnu memoriju za enkripciju teksta. Ova dva problema rešićemo narednim algoritmom. 2. ALGORITAM Algoritam koji ćemo predstaviti u ovom delu rada skriva (enkriptuje) tekstove sastavljene od karaktera koji se nalaze u listi sa vrsta i karaktera u – toj vrsti, . Karakter na mestu u listi (u toj vrsti i - toj koloni) biće kodiran polinomom . (2) Predstavimo sada algoritam za šifrovanje (enkripciju) i dešifrovanje (dekripciju) teksta. Za enkripciju nam je potrebna prethodno opisana lista , matrično vrednosna funkcija reda sa polinomima nad skupom celih brojeva koju ćemo zvati heš-matrica, (prirodan broj ćemo definisati u toku enkripcije) i prirodan broj za koji je . U nastavku ćemo predstaviti algoritam za enkripciju proizvoljnog teksta t, sačinjenog od karaktera iz liste K (ne obavezno svih) uz dodatno skrivanje pomoću matrično vrednosne funkcije reda . Enkripcija: 1. Tekst sastoji se od karaktera . Karaktere transformisati u uređen skup kvadratnih polinoma kao (2). 2. U prethodni skup polinoma, na proizvoljna mesta dodati polinoma oblika (3) 3. Skup dobijen u prethodnom koraku transformisati u matrično vrednosnu funkciju reda na sledeći način: m = {}; For a = 1 to r Do Begin m = Append[m, {}]; For b = 1 to r Do Begin 220

Upload: vuongxuyen

Post on 05-Feb-2018

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: MATRIČNO VREDNOSNE FUNKCIJE, POLINOMI I …yuinfo.artkey.rs/zbornici/2012/html/pdf/422.pdf · ... c]], p = {r + RandomInteger[{-100 ... "l", "m", "n", "o", "p", "q", "r", "s", "t"},

MATRIČNO VREDNOSNE FUNKCIJE, POLINOMI I KRIPTOGRAFIJA

MATRIX VALUED FUNCTIONS, POLYNOMIALS AND CRYPTOGRAPHY

Nenad O. Vesić1, Dušan J. Simjanović2

1Prirodno-matematički fakultet u Nišu,2Prirodno-matematički fakultet u Nišu, OŠ „Vuk Karadžić“ u Doljevcu,

Sadržaj – U ovom radu su predstavljene matričnovrednosne funkcije u kriptografiji. Cilj ovog rada jepoboljšanje nekih, prethodno predstavljenih,kriptografskih algoritama.

Abstract – Matrix valued functions and cryptography arepresented in this paper. The main goal of this paper is apreferment of some presented cryptographic algorithms.

1. UVOD

Matrično vrednosna funkcija reda na skupu(u [1, 2] matrična kriva reda na skupu ) jematrica

(1)

reda sa elementima.

U [1, 2], karakteri su skrivani polinomima. Naime, nulepolinoma iz matrično vrednosne funkcije su određivale(na jedinstven način) karakter na osnovu tabele sakarakterima (deo privatnog ključa).

Komunikacija u [1, 2] je podrazumevala slanje uređenogskupa sa numeričkih matrica reda .

Drugi problem u prethodno pomenutim radovima , ogledase u tome što je jedan karakter kodiran sa 3 polinoma. Toje povećavalo potrebnu memoriju za enkripciju teksta.

Ova dva problema rešićemo narednim algoritmom.

2. ALGORITAM

Algoritam koji ćemo predstaviti u ovom delu rada skriva(enkriptuje) tekstove sastavljene od karaktera koji senalaze u listi sa vrsta i karaktera u – toj vrsti,

. Karakter na mestu u listi (u –toj vrsti i - toj koloni) biće kodiran polinomom

. (2)

Predstavimo sada algoritam za šifrovanje (enkripciju) idešifrovanje (dekripciju) teksta. Za enkripciju nam jepotrebna prethodno opisana lista , matrično vrednosnafunkcija reda sa polinomima nad skupomcelih brojeva koju ćemo zvati heš-matrica, (prirodan broj

ćemo definisati u toku enkripcije) i prirodan broj zakoji je

.U nastavku ćemo predstaviti algoritam za enkripcijuproizvoljnog teksta t, sačinjenog od karaktera iz liste K(ne obavezno svih) uz dodatno skrivanje pomoćumatrično vrednosne funkcije reda . Enkripcija:

1. Tekst sastoji se od karaktera.

Karaktere transformisati u uređen skupkvadratnih polinoma kao (2).

2. U prethodni skup polinoma, na proizvoljnamesta dodati polinoma oblika

(3)

3. Skup dobijen u prethodnom korakutransformisati u matrično vrednosnufunkciju reda na sledeći način:m = {};For a = 1 to r Do

Beginm = Append[m, {}];

For b = 1 to r DoBegin

220

Page 2: MATRIČNO VREDNOSNE FUNKCIJE, POLINOMI I …yuinfo.artkey.rs/zbornici/2012/html/pdf/422.pdf · ... c]], p = {r + RandomInteger[{-100 ... "l", "m", "n", "o", "p", "q", "r", "s", "t"},

m[[-1]] = Append[m[[-1]],P[[(a-1) r+b]]]; End; End;Return[m]

4. Odabrati proizvoljan ceo broj . Ukoliko je

objaviti javni ključ

(4)

i poslati poruku

(5)

Dekripcija:

1. Odrediti matricu pa zatim i matricu

2. Odrediti korene polinoma dobijenih uprethodnom koraku. Prema obliku polinoma(2) odrediti pozicije karaktera u tabeli inadovezivanjem vratiti skriven tekst.

U koraku 1u delu Dekripcija dokazano je da je teksttačno dekriptovan.

3. PROGRAMI

U ovom delu rada ćemo predstaviti programe u programskom paketu MATHEMATICA 7. 0.

Enkripcija:

TextPairs[text_, key_] :=Module[{tp = {}},For[i = 1, i <= StringLength[text], i++,ch = StringTake[text, {i}]; r = 1; p = {};While[(p == {}) && (r <= Dimensions[key][[1]]), c = 1;While[(p == {}) && (c <= Dimensions[key[[r]]][[1]]),If[ch == key[[r, c]],p = {r + RandomInteger[{-100, 100}]*Dimensions[key][[1]],

c + RandomInteger[{0, 150}]*Dimensions[key[[r]]][[1]]}];c++]; r++]; tp = Append[tp, p]]; tp];

Ovaj program transformiše tekst text u uređen skup pozicija u listi key.

PairsPolynomials[pairs_] :=Module[{pp = {}},For[i = 1, i <= Dimensions[pairs][[1]], i++,pol = t^2 - 2*pairs[[i, 1]]*t + Norm[pairs[[i]]]^2;pp = Append[pp, pol]]; pp];

Ovaj program transformiše uređen skup parova pairs u uređen skup polinoma drugog stepena sa korenimaopisanim u algoritmu.

PolynomialsInserting[polynomials_, dmax_] :=Module[{pi = polynomials},While[(Dimensions[pi][[1]] < dmax^2),pi = Insert[pi,

Expand[(t - RandomInteger[{-100, 100}])*(t -RandomInteger[{-100, 100}])],

RandomInteger[{1, Dimensions[pi][[1]]}]]]; pi];

Ovaj program dodaje polinome sa realnim korenima u uređen skup polinoma polynomials dobijenihprethodnim programom. Promenljiva dmax predstavlja dimenziju heš-matrice.

221

Page 3: MATRIČNO VREDNOSNE FUNKCIJE, POLINOMI I …yuinfo.artkey.rs/zbornici/2012/html/pdf/422.pdf · ... c]], p = {r + RandomInteger[{-100 ... "l", "m", "n", "o", "p", "q", "r", "s", "t"},

PolynomialsMatrixing[polynomials_] :=Module[{pm = {}}, d = Sqrt[Dimensions[polynomials][[1]]];For[i = 1, i <= d, i++, pm = Append[pm, {}];For[j = 1, j <= d, j++,pm[[-1]] = Append[pm[[-1]], polynomials[[(i - 1)*d + j]]]]]; pm];

Ovaj program transformiše skup polinoma polynomials dobijenih primenom programa pre ovog u matričnovrednosnu funkciju kao što je opisano u algoritmu.

MatrixHiding[matrix_, hash_, message_] :=Module[{mh}, v = Variables[hash][[1]]; hh = hash /. v -> message;Expand[hh.matrix]];

Ovaj program skriva matrično vrednosnu funkciju matrix.

PublicKeyEncryption[text_, key_, hashmatrix_, dmax_, message_] :=Module[{pke = TextPairs[text, key]}, pke = PairsPolynomials[pke];pke = PolynomialsInserting[pke, dmax];pke = PolynomialsMatrixing[pke];pke = MatrixHiding[pke, hashmatrix, message]; pke];

Ovaj program objedinjuje sve prethodne programe. Naime, nakon zadavanja dimenzije kvadratne matricedmax, heš matrice hashmatrix i poruke message, ovaj program enkriptuje tekst text na osnovu tabele key ukojoj se nalaze karakteri koji sačinjavaju tekst text.

Dekripcija:

U ovom delu rada prezentujemo programe koji dekriptuju (dešifruju) tekst enkriptovan javnim ključemkreiranim u delu Enkripcija.

Mod1n[a_, b_] :=Module[{m}, If[Mod[a, b] == 0, m = b, m = Mod[a, b]]; m];

Prethodni program ne kreira nijedan deo samog algoritma, ali biće neophodan u određivanju pozicije u tabelisa karakterima na kojoj se određeni karakter enkriptovan polinomom nalazi. Ukoliko je prirodan broj deljivprirodnim brojem rezultat primene ovog programa je . Inače, rezultat je Mod[a, b].

EncodingMatrix[publickey_, hash_, message_] :=Module[{em = publickey}, ih = Inverse[hash] /. t -> message;Expand[ih.publickey]];

Ovaj program transformiše javni ključ uz pomoć heš matrice i poruke u matrično vrednosnu funkciju kojakodira tekst (Dekripcija, korak 1).

MatrixRow[matrix_] :=Module[{mr = {}},For[i = 1, i <= Dimensions[matrix][[1]], i++,For[j = 1, j <= Dimensions[matrix][[2]], j++,If[Discriminant[matrix[[i, j]], t] < 0,mr = Append[mr, matrix[[i, j]]]]]]; mr];

222

Page 4: MATRIČNO VREDNOSNE FUNKCIJE, POLINOMI I …yuinfo.artkey.rs/zbornici/2012/html/pdf/422.pdf · ... c]], p = {r + RandomInteger[{-100 ... "l", "m", "n", "o", "p", "q", "r", "s", "t"},

Ovaj program transformiše matrično vrednosnu funkciju iz prethodnog koraka u uređen skup polinoma kojikodiraju karaktere iz teksta (polinomi sa diskriminantom manjom od ).

PolynomialsPairs[polynomials_] :=Module[{pp = {}},For[i = 1, i <= Dimensions[polynomials][[1]], i++,cl = CoefficientList[polynomials[[i]], t];pp = Append[

pp, {-cl[[2]]/(2*cl[[3]]),Im[Sqrt[Discriminant[polynomials[[i]], t]]]/(2*cl[[3]])}]];

pp];

Ovaj program transformiše skup polinoma polynomials dobijen prethodnim programom u uređen skup parovakoje ti polinomi određuju.

PairsText[pairs_, key_] :=Module[{pt = ""},For[i = 1, i <= Dimensions[pairs][[1]], i++,c = Mod1n[pairs[[i, 1]], Dimensions[key][[1]]];r = Mod1n[pairs[[i, 2]], Dimensions[key[[c]]][[1]]];pt = StringInsert[pt, key[[c, r]], {-1}]]; pt];

Ovaj program, na osnovu tabele u kojoj se nalaze karakteri, određuje pozicije karaktera određenih parovimapairs pomoću programa Mod1n. Koristeći pomenute karaktere dekriptuje tekst koji je enkriptovan javnimključem.

Decryption[message_, publickey_, hashmatrix_, key_] :=Module[{d = EncodingMatrix[publickey, hashmatrix, message]},d = MatrixRow[d]; d = PolynomialsPairs[d]; d = PairsText[d, key];d];

Ovaj program objedinjuje programe iz dela Dekripcija. Preciznije rečeno, program pomoću heš-matricehashmatrix, tabele key i prirodnog broja message transformiše javni ključ publickey.

4. PRIMERI

U ovom delu daćemo primer korišćenja programa izprethodnog dela rada u skrivanju kraćeg teksta.

Neka je tabela karaktera

Key ={{"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", "Č", "Ć", "Š", "Ž"},{"Đ", "0", "1", "2", "3", "+", "-", "*", " ", ","},{"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", "č", "ć", "š", "ž"},{"đ", "4", "5", "6", "7", "(", ")", "[", "]", "^"},{"<", ">", "=", "%", "_", "'", "@"},{"{", "}", "8", "9", "/"}}

i heš funkcija

hash = {{t, t^2, t^3}, {0, t - 1, t^2 + 1}, {t, t^3 + 1, 0}}.

Enkriptujmo teksttext = "YU INFO"

porukom message = 2012 i matricom reda(dmax = 3).

Rezultat enkripcije

publickey =PublicKeyEncryption[text, Key, hash, dmax, message]

je matrično vrednosna funkcija

publickey = {{3507662510766496 + 6646190388492 t +8148915884 t^2,

11730275996120712 - 8973810029800 t +8148915884 t^2,

7338233857148920 - 3448008917512 t +

223

Page 5: MATRIČNO VREDNOSNE FUNKCIJE, POLINOMI I …yuinfo.artkey.rs/zbornici/2012/html/pdf/422.pdf · ... c]], p = {r + RandomInteger[{-100 ... "l", "m", "n", "o", "p", "q", "r", "s", "t"},

8148915884 t^2},{1743371459114 + 3303276265 t + 4050156 t^2,5830157488772 - 4460146818 t + 4050156 t^2,3647231597807 - 1713722762 t + 4050156 t^2},

{-10800087771694 - 40724133481 t + 8144867741 t^2,4061332435158661 + 3681481550876 t +

8144867741 t^2,6470953309915658 + 10897828079890 t +

8144867741 t^2}};

Program

Decryption[message, publickey, hash, key]

kao rezultat vraća tekst

YU INFO.

Interesantno je videti primer dekripcije javnog ključa sapogrešnim unosnim veličinama. Mi ćemo ovde posmatratislučaj kada je jedino tabela sa karakterima pogrešna. Utom slučaju, logično bi bilo očekivati, i to će se uglavnomdogoditi, da je dekriptovan tekst besmislen. Neka jetabela karaktera

WrongKey ={{"B", "M", "C", "G", "Ć", "J", "L", "Č", "P"},{"V", "D", "E", "A", "U", "R", "!", "S", "O"},{"K", "H", "F", "Š", "I", "N", "Z", "T", "Ž"}};

ProgramDecryption[message, publickey, hash, WrongKey]

kao rezultat vraća tekst

GREŠKA!

Kod dužih poruka je, prilikom greške, teško očekivatiovako jasan tekst.

Pogrešnom heš matricom je moguće, čak i u potpunosti,izmeniti smisao teksta.

5. ZAKLjUČAK

U ovom je radu predstavljen algoritam koji skrivatekstove pomoću kvadratnih matrično vrednosnih funkcijai polinoma. Ovi programi su pogodni za skrivanje kraćihtekstova (do 200 karaktera). Kod tekstova sa više od 200karaktera javio bi se problem kreiranja heš matrice iizračunavanja u samoj heš matrici. Ovaj problem bićerešen u jednom od narednih radova.

LITERATURA

[1] N. O. Vesić and D. J. Simjanović, “Text Data –Hiding”, ICEST 2011, Proceedings

[2] N. O. Vesić and D. J. Simjanović, “Text Data –Hiding Algorithm”, InfoTech 2011, Proceedings, pp161-168

[3] Program package “MATHEMATICA 7. 0”

224