Upload
ramidava
View
226
Download
0
Embed Size (px)
Citation preview
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
1/53
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
2/53
2
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
3/53
Cuprins
1 Introducere 51.1 Prezentarea lucrarii . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Scurta istorie a steganografiei . . . . . . . . . . . . . . . . . . 5
2 Preliminarii teoretice 92.1 Gramatici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Gramatici independente de context . . . . . . . . . . . 92.1.2 Gramatici de tip LR(k) . . . . . . . . . . . . . . . . . 112.1.3 Algoritm de parsare pentru gramatici de tip LR(k) . . 14
2.2 Gramatici ponderate . . . . . . . . . . . . . . . . . . . . . . . 192.3 Coduri Huffman . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3.1 Codificare . . . . . . . . . . . . . . . . . . . . . . . . . 202.3.2 Constructia codurilor Huffman . . . . . . . . . . . . . . 22
3 Sistemul de criptare 253.1 Prezentarea sistemului . . . . . . . . . . . . . . . . . . . . . . 253.2 Extinderea sistemului . . . . . . . . . . . . . . . . . . . . . . . 273.3 Algoritmii de criptare si decriptare . . . . . . . . . . . . . . . 28
3.3.1 Algoritmul de criptare . . . . . . . . . . . . . . . . . . 283.3.2 Procesul de decriptare . . . . . . . . . . . . . . . . . . 30
3.4 Siguranta sistemului . . . . . . . . . . . . . . . . . . . . . . . 313.4.1 Analiza teoretica a securitatii sistemului . . . . . . . . 313.4.2 Metode de mbunatatire a securitati sistemului . . . . 32
4 Concluzii 35
A Coduri Huffman 39
B Constructia unei tabele de parsare 41
C Exemplu de aplicare a criptarii/decriptarii 51
3
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
4/53
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
5/53
Capitolul 1
Introducere
1.1 Prezentarea lucrarii
Aceasta lucrare trateaza ascunderea informatiei folosind gramatici de tipLR(k). Desi criptosistemul prezentat poate fi folosit si pentru criptare efi-cienta, am preferat sa pastrez ncadrarea initiala data n [Way96], deoarecemi se pare mai potrivita.
Deoarece n descrierea criptosistemului folosesc elemente din teoria lim-bajelor formale - gramatici de tip LR(k) - si din teoria codurilor - coduriHuffman -, am ales sa prezint aceste elemnte n cadrul n care sunt definite,
prezentand doar rezultatele si algoritmii care i-am folosit n aplicatia demon-strativa. De aceea capitolul II, intitulat Preliminarii teoretice descrieaceste elemente pe care se bazeaza criptosistemul.
Capitolul III este destinat criptosistemului. Prezint mai ntai un cripto-sistem simplu, cu cateva inconveniente, apoi arat cum se poate extinde astfelncat sa fie eliminate acele inconveniente. In finalul capitolului, dau nisterezultate teoretice privind securitatea sitemului.
In capitolul IV fac descrierea aplicatiei, indicand algoritmii folositi, pre-cum si modul de utilizare al aplicatiei.
In sfarsit, n capitolul V prezint cateva concluzii asupra criptosistemului,precum si metode de mbunatatire si diversificare.
Dar, mai ntai, sa trecem n revista cateva metode de ascundere a informatieiutilizate de-a lungul timpului.
1.2 Scurta istorie a steganografiei
Cuvantul steganografie provine de la grecescul steganos care nseammnaascuns (secret) si graphein care nseamna reprezentare grafica (scriere)si,
5
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
6/53
6 CAPITOLUL 1. INTRODUCERE
tradus astfel, steganografia inseamna scriere ascunsa, si acesta este sensul
folosit n ziua de azi, adica scriere care nu este vizibila unui observator oare-care. De exemplu, scrierea de catre copii a mesajelor cu cerneala simpaticaeste un exemplu de steganografie deoarece scrierea este ascunsa n sensul canu poate fi citita decat de cineva care stie sa o caute.
Dar sub aceasta denumire, se gaseste o gama larga de metode secrete de acomunica. Inafara de cerneala invizibila, mai sunt micropuncte (folosite in alII-lea razboi mondial), rearanjarari ale caracterelor (altele decat permutarilesi substitutiile folosite n criptografie), semnaturi digitale, canale ascunse,cominicatii spread-spectrum (bazate pe mprastierea semnalului).
,,Staganografia este arta si stiinta comunicarii ntr-un fel n care se as-cunde existenta comunicarii. In contrast cu criptografia, n care inamicului
i este permis sa detecteze, intercepteze si sa modifice mesaje, fara a puteancalca anumite premize de securitate garantate de un anumit criptosistem,scopul steganografiei este de a ascunde mesaje n alte mesaje inofensive astfelncat sa nu-i permita inamicului nici macar sa detecteze existenta unui mesajascuns. (Markus Kuhn)[SH]
Unul dintre primele documente care atesta folosirea procedeelor steganograficese gaseste n Istoriile lui Herodot. In Grecia antica, textul se scria pe placuteacoperite cu ceara. In una din povestiri, Demeratus voia sa anunte Sparta deintentiile lui Xerxes (mparatul Persiei) de a invada Grecia. Pentru a evitacapturarea mesajului, el a razuit ceara de pe placute si a scris mesajul direct
pe lemn, apoi a acoperit din nou placutele cu ceara. Astfel, tablitele pareaugoale si nefolosite si au trecut de inspectia santinelelor fara ntrebari.Alta metoda ingenioasa consta n urmatoarele: mesagerul era ras n cap si
se scria mesajul pe pielea capului sau. Astfel, mesajul ramanea de nedetectatpana cand mesagerul era din nou ras n cap.
Vechii chinezi, foloseau de asemenea o metoda ce implica ceara: mesajulera scris pe matase fina, care era apoi introdusa ntr-o bila, acoperita cu cearasi nghitita de mesager.
Cerneala invizibila (simpatica) a fost folosita timp de secole de majori-tatea civilizatiilor fiind folosita cu succces si n al II-lea razboi mondial.Surse obisnuite de cerneala invizibila sunt laptele, otetul, sucurile de fructe si
urina. Toate acestea se nnegresc la caldura. Metodele moderne care implicacerneala invizibila sunt mult mai complexe si pentru obtinerea mesajului suntnecesare procedee asemanatoare developarii.
Odata cu tehnologia informatiei si informatia digitala, steganografia si-agasit locul n semnaturi digitale (care presupun ascunderea informatiei ndate, fara a perturba prea mult ntelesul acestora).
Ascunderea informatiei se poate n imagini (pe bitul cel mai putin semni-ficativ al culorilor, la imagini arhivate, etc.), n arhive, n fisiere executabile
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
7/53
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
8/53
8 CAPITOLUL 1. INTRODUCERE
Cerneala invizibila (simpatica) a fost folosita timp de
secole de majoritatea civilizatiilor fiind folosita cu succces si nal doilea razboi mondial.
Prin suprapunerea celor doua mesaje se obtine urmatorul mesaj:
Cerneala invizibila (simpatica) a fost folosita timp desecole de majoritatea civilizatiilor fiind folosita cu succces si nal doilea razboi mondial.
Cerneala invizibila (simpatica) a fost folosita timp desecole de majoritatea civilizatiilor fiind folosita cu succces si nal doilea razboi mondial.
n care daca citim literele ngrosate n ordine obtinem numele Claudia.
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
9/53
Capitolul 2
Preliminarii teoretice
In acest capitol voi defini cateva din elementele matematice care stau labaza sistemului de criptare propus. Ele fac parte fie din teoria limbajelorformale (gramaticile de tip LR(k)), fie din teoria codurilor si a compresieide date (arbori Huffman si coduri Huffman). Le voi prezenta pe amandouaacordandu-le importanta egala n cele doua sectiuni ce urmeaza.
2.1 Gramatici
Definitia 1.1 (V
):Data fiind o multime V numita alfabet, se defineste V ca fiind monoidulliber generat de V cu operatia de concatenare. Elementele lui V se numesccuvinte peste alfabetul V si sunt alaturari oarecare de simboluri din V.Pentru w V, prin |w| ntelegem lungimea cuvantului w (numarul de sim-boluri care l formeaza.
Elementul neutru fata de operatia de concatenare se noteaza cu si estecuvantul vid.Notatia , unde , V nseamna sirul obtinut prin concatenarea celordoua siruri.
2.1.1 Gramatici independente de context
Definitia 1.2 (Gramatica independenta de context):O gramatica independenta de context este un cvadruplu (N, , S , P ), unde:
N este o multime finita de simboluri, numite simboluri neterminale (vari-abile)
9
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
10/53
10 CAPITOLUL 2. PRELIMINARII TEORETICE
este o multime finita de simboluri numite simboluri terminale (alfabet)
S este un simbol din N, numit simbolul de start
P este o multime de perechi (A, ), unde A N si (N ). O astfelde pereche se numeste productie si se noteaz a cu A .
Pe parcursul acestei lucrari, voi folosi litere mici de la nceputul alfa-betului (a,b,c,...) pentru a nota elementele din (terminalele) si litere mari(A,B,C,S,...) pentru elementele din N (variabilele). Pentru elemente din(N ) voi folosi litere grecesti mici ( , , ) iar pentru elemente din
(cuvintele) voi folosi litere mici de la sfarsitul alfabetului (w,x,y,...).
Definitia 1.3 (derivare):Fie G = (N, , S , P ) o gramatica independenta de context si , (N).Spunem ca deriveaza n (si not am cu = ) dacaA N, 1, 2, 1 (N ) a.. = 1A2, = 112 si A 1 P
Notam cu
= nchiderea reflexiva si tranzitiva a relatiei = (corespunzand
derivarii n mai multi pasi) si cu+
= nchiderea tranzitiva a relatiei = (core-spunzand derivarii n cel put in un pas).
Pentru a fi mai expliciti,
= daca exista derivarile
= 1 = 2... = n =
cu n 0 iar la +
= , diferenta este ca n 1.
Definitia 1.4 (Sir generat de o gramatica):Fie G = (N, , S , P ) o gramatica independenta de context si w . Spunem
ca gramatica G genereaza sirul w daca exista derivarea S
= w
Definitia 1.5 (Arbore asociat unei derivari):
Fiecarei productii A w0X1w1X2...Xnwn, A N, wi
, i = 0, n siXj N, j = 1, n i se poate asocia un arbore avand radacina etichetata cu Asi frunzele cu wi, i = 0, n respectiv Xj, j = 1, n.
In acelasi fel asociem prin extensie ficarei derivari S
= w un arbore dederivare cu radacina etichetat a cu S, nodurile etichetate cu neterminalesi frunzele etichetate cu siruri de terminale astfel ncat subarborele formatdintr-un nod si descendentii sai directi sa fie arborele productiei care s-a
folosit la derivare.
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
11/53
2.1. GRAMATICI 11
Definitia 1.6 (Limbaj generat de o gramatica):
Numim limbaj generat de o gramatica G = (N, , S , P ) (si not am L(G)multimea tuturor sirurilor care pot fi generate de gramatica, adica
L(G) = {w |S
= w}
Definitia 1.7 (Gramatica ambigua):Fie G = (N, , S , P ) o gramatica independenta de context. Spunem caG esteambigua daca w L(G) pentru care exista doi arbori de derivare distincti.In caz contrar, spunem ca gramatica este neambigua.
Deoarece pentru sistemul de criptare propus ne intereseaza ca fiecare sirgenerat de gramatica sa aiba un unic arbore de derivare, cat si ca descoperireaacelui unic arbore sa se faca ntr-un timp rezionabil de mic.
Gramaticile LR(k) ofera acest lucru, adica conditia de neambiguitate sigasirea arborelui de derivare in ordin de timp liniar fata de marimea siruluide intrare.
2.1.2 Gramatici de tip LR(k)
Mai ntai voi da nca cateva definitii pregatitoare:
Definitia 1.8 (derivare dreapta):Fie G = (N, , S , P ) o gramatica independenta de context si = 1Aw (N ), unde A N si w . Spunem ca =
d.d. daca si numai daca
A 1 P a.. = 11w (i.e. a fost obtinut din prin derivareacelui mai din dreapta neterminal).
Notam cu
=d.d.
si cu+
=d.d.
nchiderile corespunzatoare ale relatiei =d.d
.
Se poate observa ca sirul de derivari drepte prin care este obtinut uncuvant este dat de parcurgerea in postordine a arborelui de derivare asociatcuvantului.
Definitia 1.9 (Firstk):Fie G = (N, , S , P ) o gramatica independenta de context si (N ).Atunci:Firstk() = {w
||w| < k si
= w sau |w| = k si
= wx}
Din definitie se poate observa ca First0() = , (N ).
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
12/53
12 CAPITOLUL 2. PRELIMINARII TEORETICE
Vom mai avea nevoie de urmatoarea definitie:
Definitia 1.10 (k):Fie un alfabet. Atunci k = {w ||w| k}
Dam acum definitia gramaticilor de tip LR(k):
Definitia 1.11 (Gramatici de tip LR(k)):Fie G = (N, , S , P ) o gramatica independenta de context n care sim-bolul de start nu apare n membrul drept al niciunei productii. Spunemca G este gramatica de tip LR(k), k 0, daca oricare ar fi derivarile
drepte S
=d.d.
Aw =d.d.
w si S
=d.d.
Bx =d.d.
y astfel ncat Firstk(w) =
Firstk(y), atunci = , A = B si x = y.
Se observa ca din Bx =d.d.
y rezulta ca exista B si x = y ,
adica = .Intuitiv, daca w si y sunt obtinute prin derivari drepte si avem
FIRSTk(w) = FIRSTk(y) si daca A d.d. este ultima productie folositan obtinerea lui w prin derivari drepte, atunci productia A
d.d. tre-
buie folosita si pentru a reduce w (la Ay) la parsare. Deoarece A de-riva n independent de w, conditia din definitie spune ca exista suficientainformatie n FIRSTk(w) pentru a determina ca a fost derivat din A.
Cand parsam, nu poate exista confuzie despre cum ar trebui s a reducem oproductie obtinuta prin derivari drepte.
Conditia ca S sa nu apara n membrul drept al unei productii a fost pusapentru a putea determina n timpul parsarii daca acceptam sirul de intrarecand obtinem un S (n urma unei reduceri).
In general, gramaticile independente de context nu contin suficienta informatien FIRST(k) pentru a determina din ce a fost derivat sirul pe care l ex-aminam. Mai mult, aceste gramatici pot fi ambigue, pe cand gramaticileLR(k) nu.
Pentru a arata ca restrictia ca simbolul de start nu apare n dreapta niciunei productii nu restrange din generalitate, dam urmatoarea definitie:
Definitia 1.12 (Extensia unei gramatici independente de context):Fie G = (N, , P , S ) o gramatica independenta de context. Extensia gra-maticii G se defineste ca fiind
G = (N {S, {$}, S, P {SS$}}
unde S, $ nu apartin multimii N .
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
13/53
2.1. GRAMATICI 13
Gramatica extinsa G este aproape G, avand n plus o noua productie
de start S
S$. Presupunem ca S
S$ este productia cu indexul 0 n G
sica celelalte productii ale lui G sunt numerotate 1, 2, ..., p. Am adaugat onoua productie de start pentru ca, atunci cand se cere o actiune de reducerefolosind o productia cu indexul 0, sa putem interpreta aceasta reducere caun semnal de acceptare.
Este evident ca w L(G) w$ L(G) Putem, deci, presupune cantr-o gramatica simbolul de start nu apare n membrul drept al nici uneiproductii, fara ca aceasta sa ne restranga generalitatea.
Exemple:Fie gramatica G:
S AB
A aB CD|aEC abD bbE bba.G nu este LR(1), deoarece avem derivarile (n gramatica extinsa):Sd.d.S=
d.d.AB =
d.d.ACD =
d.d.ACbb =
d.d.Aabbb si
Sd.d.S=d.d.
AB =d.d.
AaE=d.d.
Aabba
Daca luam sirul Aabw nu putem determina daca el a fost obtinut din ACwsau nu uitandu-ne la primul simbol din w. Totusi, G este LR(2).
Fie gramatica G:S Ab|BcA Aa|B Ba|G nu este LR(k) oricare ar fi k, deoarece avem urmatoarele derivari drepte:
Sd.d.S
=d.d.
Aakb =d.d.
akb
Sd.d.S
=d.d.
Bakc =d.d.
akc
Aceste derivari respecta ipotezele definitiei unei gramatici LR(k), cu = , = , w = akb, = si y = akc. Totusi, avem A = B, deci G nu esteLR(k)k IN
Totusi, gramatica de mai sus nu este ambigua, ba chiar genereaza acelasilimbaj cu urmatoarea gramatica LR(0):S C|DC aC|bD aD|c
Definitia 1.13 (Analiza sintactica):Fie G = (N, , S , P ) o gramatica independenta de context si w . A
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
14/53
14 CAPITOLUL 2. PRELIMINARII TEORETICE
analiza sintactic w nseamn a a arata algoritmic dacaw L(G). E de nteles
ca, n acest caz se obtin si deriv arile prin care este obtinut w.Un astfel de algoritm care face analizaza sintactica se mai numeste si parser.
2.1.3 Algoritm de parsare pentru gramatici de tip LR(k)
Pentru fiecare gramatica LR(k) G = (N, , S , P ) poate fi construit unparser determinist. Acest parser va avea o multime de stari si doua tabelede parsare, numite actiune si goto. Tabela actiune ne va spune la fiecarepas daca trebuie sa facem o actiune deplasare (adica sa avansam n sirul deintrare) sau una de reducere, iar n cazul unei actiuni de reducere, ne spune
ce productie s-a folosit pentru derivare.Tabela actiune este definita pe multimea starilor si k si pentru o stare
s si un cuvant u poate avea valorile deplasare care spune ca se avanseaza nsirul de parsat, eroare, acceptare sau un numar j care desemneaza productiacare se reduce.
Tabela goto este definita pe multimea starilor si si pentru o stare s sio litera a poate avea valoarea eroare sau un numar i desemnand starea ncare se va trece din starea s la ntalnirea literei a.
Aceste doua tabele definite, algoritmul de parsare este relativ simplu. Eleste asociat unei gramatici extinse. Algoritmul lucreaza cu triplete de forma
(S,W,), unde S este stiva de lucru ce contine starile si literele/neterminalelecare au produs aceste stari, W este cuvantul care a ramas de parsat si stivaproductiilor care au fost reduse (stiva de iesire). La sfarsitul algoritmului,daca se termina cu acceptarea cuvantului, sirul din buffer-ul de iesire estederivarea dreapta a cuvantului de intrare relativ la gramatica init iala (ig-norand simbolul $).
Algoritmul 1.1: parsare(z, G, actiune, goto, ) Algoritmul testeaza apartenentacuvantului z la limbajul generat de gramatica G si determina o derivaredreapta a acestuia n caz afirmativ.
Intrare: z = a1 . . . an cuvant, G gramatica LR(k), actiune si goto tabelelede parsare associate lui G.
Iesire: daca avem acceptare procedura returneaza adevarat si este derivareadreapta a lui z.
Algoritmul actioneaza ca un automat, folosind doua stive, n felul urmator
Configuratia initiala (0, z$, )
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
15/53
2.1. GRAMATICI 15
pentru o configuratie (sS, aW, ). fie u, format din primele (cel mult)k
simboluri ale lui aW.
(sS,aW,) (sasS, W, )daca actiune(s, u) = deplasare si s = goto(s, a).
(sS,aW,) (tAsS,aW,i)daca actiune(s, u) = i si productia i este A iar sS eobtinut din sS prin scoaterea a 2 | | simboluri si t = goto(s, a)
(sS,aW,) acceptaredaca actiune(s, u) = acceptare
(sS,aW,) eroaredaca actiune(s, u) = eroare
Cel mai simplu mod de a arata cum functioneaza un parser LR(k) esteprintr-un exemplu, n care avem deja construite tabelele actiune si goto.Procedeul de construire al acestor tabele l vom explica mai jos.
Gramatica care genereaza limbajul expresiilor aritmetice simple cu nu-mere naturale separate de ;este LR(1). Definitia gramaticii, si tabelele,actiune si goto, sunt destul de elaborate si le-am inclus n anexa 2.1.3.
Algoritmul procedeaza astfel: Extrage cate k litere din sirul de intrare(fie u acest sir) si aplica functia actiune perechii (s, u), unde s este stareadin capatul stivei starilor. Daca rezutatul este eroare, atunci algoritmul seopreste. Daca rezultatul este i, iar regula i este A atunci se scot 2 | |
simboluri din stiva starilor. Aceasta regula se aplica pana cand nu mai avemreduceri de facut.
Si pentru reducere si pentru deplasare, se aplica functia goto primuluisimbol din u (fie el u1) si primei stari din stiva, apoi u1 si starea obtinuta seadauga stivei.
Pentru gramatica data ca exemplu si sirul de intrare 1 + 0$, algoritmulde parsare va functiona astfel:
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
16/53
16 CAPITOLUL 2. PRELIMINARII TEORETICE
Starea curenta a automatului Se reduce
(s0, 1 + 0$, ) (s101s0, +0$, ) (s11C1s0, +0$, P15) C1 1 (s51N0s11C1s0, +0$, P12P15) N0 (s12N s0, +0$, P9P12P15) N C1N0 (s14F s0, +0$, P8P9P12P15) F N (s15T s0, +0$, P6P8P9P12P15) T F (s16Es0, +0$, P4P6P8P9P12P15) E T (s20 + s16Es0, 0$, P4P6P8P9P12P15) (s10s20 + s16Es0, $, P4P6P8P9P12P15) (s12N s20 + s16Es0, $, P10P4P6P8P9P12P15) N 0
(s14F s20 + s16Es0, $, P8P10P4P6P8P9P12P15) F N (s21T s20 + s16Es0, $, P6P8P10P4P6P8P9P12P15) T F (s16Es0, $, P3P6P8P10P4P6P8P9P12P15) E E+ T (s17S1s0, $, P2P3P6P8P10P4P6P8P9P12P15) S1 E (acceptare, P2P3P6P8P10P4P6P8P9P12P15)
Ultima componenta a unei stari a parserului reprezinta sirul de derivaridrepte necesar pentru a obtine din sirul de simboluri de pe stiva sirul deintrare parsat. Astfel, la sfarsit avem pe stiva simbolul E, din care obtinemsirul init ial de intrare (a+aa) prin aplicarea, pe rand, a regulilor 1,3,6,4,6,2,4si 6 n derivare dreapta.
Constructia tabelelor actiune si goto
In aceasta sectiune voi arata cum se pot construi cele doua tabele carestau la baza parserului LR(k). Pentru aceasta, sunt necesare cateva definitii:
Fie G = (N, , P , S ) o gramatica independenta de context.
Definitia 1.14 (Prefix viabil):
Fie S
=d.d.
Aw =d.d
w (rezulta w o derivare dreapta n G. Spunem
ca sirul este un prefix viabil al lui w daca este un prefix al lui .
Definitia 1.15 (Configuratie LR(k)):Fie G extensia lui G. Numim configuratie LR(k) o regula de forma(A .; u), unde A P si u k.u se numeste simbol lookahead
Definitia 1.16 (Configuratie LR(k) valida):Spunem ca configuratia LR(k) (A .; u) este valida pentru prefixul via-
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
17/53
2.1. GRAMATICI 17
bil, daca exista o derivare S
=d.d.
Aw =d.d.
w astfel ncatu = FIRSTk(w$).
Definitia 1.17 (Inchiderea unei multimi de configuratii LR(k)):Definim nchiderea unei multimi I de configurtii LR(k) ca fiind multimea Jrezultata n urma aplicarii urm atorului algoritm.
Algoritmul 1.2: Inchidere Inchiderea unei multimi de configuratii LR(k)
Intrare: I - multime de configuratii LR(k)
Iesire: J - inchiderea multimii I
J I
repeta
pentru A .B; u J, B N
pentru B P
pentru v Firstk(u)
J J {B .; v}
pana cand nu se mai aduga configuratii noi
Urmatorul algoritm produce la iesire multimea de configuratii n carese poate ajunge dintr-o multime I initiala prin avansarea peste un termi-nal/neterminal. Algoritmul foseste procedura Inchidere.
Algoritmul 1.3: GOTO(I, X)
Intrare: I - multime de configuratii LR(k), X N
Iesire: J
J {A X.; u|A .X; u I}
J Inchidere(I)
Iar acum, definim multimile canonice LR(k) asociate gramaticii extinseG ca fiind iesirea urmatorului algoritm.
Algoritmul 1.4: config(G)
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
18/53
18 CAPITOLUL 2. PRELIMINARII TEORETICE
Intrare: I - multime de configuratii LR(k), X N
Iesire: C - multimea multimilor canonice
C {inchidere({S .S; $})}
repeta
pentru I C
pentru X N
daca GOTO(I, X) = si GOTO(I, X) C
C C {GOTO(I, X)}
pana cand nu se mai adauga noi multimi de configuratiiAcest algoritm produce o multime de configuratii pe care o vom numerota:
C = {I0, I1, . . . , I n}
unde I0 corespundere nchiderii multimii {S .S; $}. La aceasta multimede configuratii asociem o multime de stari S{, , . . . , \} n care fiecare stares S i se asociaza mutimii de configuratii Is.
Inainte de a arata algoritmul de construire a tabelelor actiune si goto,mai aven nevoi de o definitie:
Definitia 1.18 (Functie FIRST fara ):Functia FIRST fara (F F LGk ()) se defineste astfel:(1) Daca nu ncepe cu un neterminal, atunci F F Lk() = FIRSTk()(2) Daca ncepe cu un neterminal, atunci
F F Lk() = {w | w FIRSTk() si exist a o derivare
=d.d.
=d.d
wx, unde
= Awx oricare ar fi A un neterminal}
Definitia 1.19 (tabelele actiune si goto):Fie G o gramatica independenta de context, fie S multimea de stari ale luiG determinata n urma algoritmului config(G) si l : P IN functia careasociaza numere productiilor. Se definesc functiile a si g astfel:
a : S k l(P) {deplasare, acceptare, eroare}
a(k, u) =
l(A ) daca A .; u Ik si A = S
deplasare daca A .; v Ik, = si u F F Lk(v)acceptare daca S S.; $ Ikeroare altfel
g : S N S {eroare}
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
19/53
2.2. GRAMATICI PONDERATE 19
g(k, X) = j daca GOTO(Ik, X) = Ij
eroare altfelDaca functiile a sig sunt bine definite (nu au iesiri multiple pentru aceeasiintrare, definim tabelele actiune si goto ca fiind graficele respectiv ale lui a sig.
Consideratii teoretice
Pentru demonstratiile acestor rezultate, vezi [AU72]
Teorema 1.1: O gramatica G = (N, , S , P ) este LR(k) daca si numai
daca urmatoarea conditie este valabila u k
. Fie un prefix viabil al luiw, unde w a fost obtinut prin derivari drepte (n gramatica augmentataG). Daca productia cu punct [A .,u] este valida pentru , atunci nuexista o alta productie cu punct [A1 1.2, v] care sa fie valida pentru, cu u F F Lk(2v).
Aceasta teorema ne asigura ca o gramatica este LR(k) daca si numai dacatabelele actiune si goto pot fi create.
Teorema 1.2: Algoritmul 1.4 determina n mod corect multimea multimilorcanonice.
Teorema 1.3: Algoritmul 1.1 determina n mod corect o derivare dreaptaa sirului de intrare, daca exista una, sau se termina cu eroare altfel.
2.2 Gramatici ponderate
In vorbirea curenta anumite sintagme apar mai des, n functie de specificultextului, patricularitatile persoanei care l scrie precum si alti factori. Pot fi
incluse aici ticurile verbale, precum si exclamatii si interjectii care apar maides (de exemplu n cadrul unui meci de fotbal). De asemenea, n descriereaunei scene de lupta sa zicem dintr-un film, este natural sa apara mai desnumele personajul principal.
De aceea, atunci cand incercam modelarea limbajului natural folosindgramatici, este natural sa ncercam sa modelam si acest aspect, folosindprobabilitati (ponderi) asociate productiilor care sa ajute la generarea detext statistic asemanator cu realitatea.
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
20/53
20 CAPITOLUL 2. PRELIMINARII TEORETICE
Definitia 2.20 (gramatica ponderata):
Se numeste gramatica ponderata asociata unei gramatici independente decontext G = (N, , S , P ) perechea GP = (G, p), unde p : P , undep((A, )) este ponderea asociata productiei A si influenteaz a (prinmarime) alegerea lui in derivarea variabilei A.
Prin normalizare, se poate da o semnificatie de probabilitate ponderiiasociate unei productii.
Definitia 2.21 (gramatica ponderata normalizata):Se numeste gramatica ponderata normalizata asociata lui G gramatica pon-derata GP = (G, p) avand urmatoarea restrictie:
A N,
(A,,pA,)P
pA, = 1
. In acest caz, pA, reprezinta probabilitatea ca la derivarea variabilei A sase foloseasca productia A .
2.3 Coduri Huffman
Codurile Huffman reprezinta o tehnica foarte utilizata si eficienta n com-presia de date. Ideea de baza este utilizarea unei modalitati optime pen-tru reprezentarea fiecarui caracter sub forma unui sir binar, n functie defrecventa acestuia.
Voi expune mai ntai cateva notiuni pregatitoare din teoria codurilor (din[Ata01]), apoi voi da algoritmii pentru crearea si folosirea codurilor Huffman(din [CLR90]).
2.3.1 Codificare
Definitia 3.22 (Codificare):Fiind date multimile A (alfabetul sursa) si B (alfabetul cod), o codificareeste o aplicatie injectiva K : A B.
Elementele multimii K(A) B se numesc cuvinte-cod, iar K(A) senumeste cod.
Daca B are numai doua simboluri, codificarea K se numes te binara.
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
21/53
2.3. CODURI HUFFMAN 21
Definitia 3.23 (Codificare a mesajelor):
Pentru o codificare K : A B
, se numes te codificare a mesajelor(textului) sursa aplicatia K : A B definita recursiv prin:
K() = ( este cuvantul vid);
K(a) = K(a)K(), a A, A.
Definitia 3.24 (Codificare unic decodabila):Codificarea K este unic decodabila daca K este injectiva.
Definitia 3.25 (Codificare prefix (instantanee)):
1. O codificare K : A B se numeste instantanee daca K(A) areproprietatea prefixului (daca , K(B) atunci = ).
Observam ca o codificare prefix este evident unic decodabila (din definitie).Avantajul codurilor instantanee este acela ca daca se cunoaste dinainte
frecventa simbolurilor sursa, atunci simbolurile sursa care apar mai frecventpot fi codificate cu cuvinte cod mai scurte, realizandu-se astfel o codificaremai eficienta (cerinta n compresia de date). O astfel de codificare eficientaeste realizata de codurile Huffman.
Coduri Huffman
Definitia 3.26 (Sursa de informatie):O sursa de informatie este o pereche S = (A, P) unde
A = {a1, a2, . . . , an} este alfabetul sursa (multime ordonata);
P = {P(a1), P(a2), . . . , P (an)} este multimea ordonat a a probabilitatilorelementelor lui A, deci
0 P(ai) 1, (1 i n);ni=1
P(ai) = 1.
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
22/53
22 CAPITOLUL 2. PRELIMINARII TEORETICE
Fie K o codificare a unei surse de informat ie. Daca se noteaza cu di =
|K(ai)| (|| reprezinta lungimea secventei ), se poate defini lungimea medieL a cuvintelor cod prin
L =ni=1
diP(ai).
O codificare este eficienta daca lungimea medie a secventelor cod este catmai mica.
Definitia 3.27 (Cod Huffman):Fiind data o sursa de informatie S si un alfabet cod, un cod Huffman esteun cod instantaneu avand lungimea medie minima.
Lungimea medie minima a unui cod Huffmann se noteaza cu Lmin(S).
2.3.2 Constructia codurilor Huffman
Constructia codurilor Huffman binare se face pornind de la urmatoareaobservatie: O sursa cu doua simboluri are evident un cod Huffman de cuvintecod {0, 1} (si deci Lmin(S) = 1).
O sursa cu trei simboluri {a1, a2, a3} n care a1 are probabilitate maxima,poate fi redusa la cazul a doua simboluri {a1, a2,3} unde P(a2,3) = P(a2) +P(a3). Pentru aceste doua simboluri o codificare Huffman este K(a1) =
0, K(a2,3) = 1. De asemenea pentru sursa cu simbolurile {a2, a3} o codificareHuffman este K(a2) = 0, K(a3) = 1. Combinand cele doua rezultate obtinemun cod Huffman pentru sursa originala:
a1 a2 a30 10 11
Bazat pe acest procedeu de compunere a unor codurilor Huffman maisimple pentru a genera unul mai complex, se poate construi un algoritmGreedy care construieste o codificare Huffman.
Procedeul de construire.Se dau:
A - alfabetula A, P(c) probabilitatea/frecventa de aparitie a lui c(A, P) reprezinta sursa de informatie.
Algoritmul 3.5: Huffman(A)
1 n |A|
2 min-heap Q A
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
23/53
2.3. CODURI HUFFMAN 23
3 pentru i 1, n 1
3.1 aloca nod z
3.2 extrage min Q n x
3.3 extrage min Q n y
3.4 z.fius x
3.5 z.fiud y
3.6 P(z) P(x) + P(y)
3.7 Q z
4 return min(Q).
Algoritmul construieste arborele binar corespunzator unei codificari Huff-man. Constructia este bottom-up, avand ca frunze simbolurile sursa. Co-dul unui simbol a este dat de drumul de la radacina arborelui A pana lafrunza ce l reprezinta astfel:
Algoritmul 3.6: cod(a,A)
1 daca a = root(A) return
2 p parinte(a)
3 daca a = fius(p) return cod(p,A) + 0 altfel return cod(p,A) + 1
Deoarece toate caracterele sunt frunze in arborele codificarii, codurile lornu pot fi prefixul codurilor altor caractere, deci avem de a face cu o codificareprefix.
Prezentam acum algoritmul care dintr-un sir de bit i extrage un caracterincepand de la pozitia index si avanseaza index-ul n mod corespunzator:
Algoritmul 3.7: getNextChar(index,A)
1 a root(A)
2 cat timp a nu e frunza
2.1 daca sir[index] = 0 atunci a fius(a) altfel a fiud(a)
2.2 index index + 1
3 return c
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
24/53
24 CAPITOLUL 2. PRELIMINARII TEORETICE
Cu acesti trei algoritmi se poate realiza compresia/decompresia unui text.
Scopul nostru este nsa de a inversa procesul, folosind arborii Huffman pentrua codifica productiile corespunzatoare unei variabile, conform ponderilor lor,si de a genera text pornind de la o secventa de biti careia i se asociaza oproductie din gramatica.
Pentru demonstratiile privind corectitudinea algoritmilor, vezi [CLR90].
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
25/53
Capitolul 3
Sistemul de criptare
Vom defini un sistem de ascundere a informatiei bazat pe gramatici de tipLR(k), prin elementele sale componente: multimea textelor clare, multimeatextelor criptate, multimea cheilor, precum si functiile de criptare/decriptare.De asemenea, vom prezenta un rezultat teoretic privind sigurant a sistemului.
3.1 Prezentarea sistemului
Voi prezenta mai ntai un sistem simplu, care are limitari n privintacapacitatii de criptare. Apoi vom arata cum se poate extinde pentru a eliminaaceste limitari.
Mai ntai, asociem fiecarei variabile X dintr-o gramatica ponderata unarbore Huffman avand ca sursa de informatie productiile care au ca membrustang pe X si probabilitatile asociate lor. Pentru variabilele care nu au decato productie, arborele Huffman asociat lor nu va avea decat un nod (adicaradacina) (si deci codificarea Huffman asociata lor va fi vida).
Cheile de criptare
Incepem cu cheile de criptare pentru ca, asa cum vom vedea, ele determina
multimea textelor clare. Multimea cheilor de criptare K este:
K = {(GP, H)}
unde GP = (G, p)) gramatica LR(k) ponderata si H multimea codificarilorHuffman atasate variabilelor lui GP.
Putem impune conditia ca gramatica GP sa nu contina productii inuti-lizabile (care nu apar n nici un arbore de derivare asociat lui G.
25
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
26/53
26 CAPITOLUL 3. SISTEMUL DE CRIPTARE
Textele criptate asociate unei chei
Multimea textelor criptate pentru o cheie k = (G, H) K este multimeatuturor sirurilor care se pot genera folosind gramatica G, adica L(G)
Textele clare asociate unei chei
Data fiind o functie cod : P {0, 1} care da codul asociat fiecareiproductii A corespunzator codificarii lui A din H, si Cod extensia eiunica la P multimea textelor clare se defineste ca fiind:
C = {x {0, 1}|w L(G) obtinut prin sirul D = d1, d2 . . . dn dederivari drepte si x = Cod(D)}
Functia de decriptare
Functia de decriptare ntoarce sirul de biti ascuns ntr-un cuvant w L(G) si o putem defini astfel:
Dk = Cod parse : L(G) C
unde parse este functia care pentru un cuvant al limbajului da unicul sir dederivari drepte asociat lui
Functia de criptare
Intrucat gramatica este neambigua, fiecare text clar este unic determinatde un cuvant al limbajului. Adica, functia Dk este bijectiva. Definim functiade criptare astfel:
Ek = D1k : C L(G)
Observatii
Precum se poate vedea, am definit textele criptate naintea celor clare re-spectiv functia de decriptare naintea celei de criptare. Aceasta se datoreazafaptului ca atunci cand criptam folosind acest sistem efectuam practic un
procedeu asemanator decompresiei datelor comprimate prin metoda de com-presie Huffman.
Marele dezavantaj al acestui sistem este acela ca nu poate sa criptezedacat acele siruri care corspund unor cuvinte n limbajul generat de gramaticasi doar dupa ce construim gramatica si codificaril Huffman putem spune dacamesajul poate fi criptat cu ajutorul acestei chei.
Se impune deci gasirea unei metode de extindere a acestui sistem, care saelimine aceste dezavantaje (sau sa le minimizeze).
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
27/53
3.2. EXTINDEREA SISTEMULUI 27
3.2 Extinderea sistemului
O conditie esentiala care trebuie pusa este ca macar o variabila X dintr-ogramatica sa aiba doua productii asociate. Daca acest lucru se ntampla,putem fi siguri ca folosind aceasta gramatica n procesul de criptare, vomputea cripta un mesaj avand cel putin un bit (acel ascuns cand se deriveazavariabila X. De asemenea, se impune conditia:
X Nw , X
= w (3.1)
Plecam de la presupunerea ca orice cuvant din L(G) reprezinta o entitatede un anumit fel (de exemplu o expresie aritmetica). Atunci, pentru a puteagenera cuvinte oricat de lungi, trebuie sa legam cumva aceste cuvinte ntreele (de exemplu prin cuvinte de legatura). De aceea o data fiind o gramaticaG = (N, , S , P ), o extindem la urmatoarea gramatica:
G1 = (N {S1, Xleg}, leg, S1, P {S1 S1XlegS, S1 S} Pleg)
n care:
S1 este noul simbol de start
Xleg este variabila care reprezinta legaturile ntre entitati
leg este alfabetul utilizat n productiile lui Xleg
Pleg este multimea de productii asociate lui Xleg. Acestei multimi deproductii i se asociaza o codificare Huffman ca pentru orice alta vari-abila.
Obesrvam ca daca Xleg are doar o productie asociata (X ), putemsa-l eliminam si sa-l nlocuim cu n singura productie n care apare, caz ncare gramatica ar fi:
G1 = (N {S1}, leg, S1, P {S1 S1S,S1 S})
Pentru a putea cripta acum orice sir vom proceda n felul urmator:
1 La folosirea variabilei S1 n derivare nu se ascunde nici un bit, codificareaatasata ei fiind .
2 completam mesajul criptat cu un sir de biti care indica sfarsitul mesa jului.
3 In mod implicit, la derivarea variabilei S1 se foloseste productia S1 S1XlegS.
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
28/53
28 CAPITOLUL 3. SISTEMUL DE CRIPTARE
4 dupa ascunderea ntregului mesaj, pentru a ncheia derivarea, derivam
fiecare variabila ramasa n criptat ntr-un sir w
5 la decriptare, se va retine din sirul de biti rezultat doar ceea ce se gasestenaintea indicatorului de sfarsit de fisier.
Folosirea observatiei 3 ne asigura ca putem cripta siruri oricat de lungi(gramatica este recursiva si folosim aceasta recursivitate).
Observatia 4 ne asigura ca procedura care relizeaza criptarea este unalgoritm (se termina).
Observatia 2 ne asigura ca putem recupera sirul intact la decriptare.In concluzie, prin aceasta exetnsie, noul sistem de criptare rezultat poate
realiza criptarea oricarui mesaj. Voi da mai jos algoritmii de criptare/decriptaresi apoi voi arata cum se aplica acestia pe un exemplu particular.
3.3 Algoritmii de criptare si decriptare
3.3.1 Algoritmul de criptare
Mai ntai sa aratam acum cum putem construi cuvinte (rezonabil de mici)n care poate deriva orice neterminal. Avem nevoie de ele la sfarsitul proce-sului de criptare (obs. 4). Pentru aceasta dam urmatorul algoritm:
Algoritmul 3.1: cuvinte(G)
Intrare: G = (N, , S , P ) Gramatica care respecta conditia 3.1
Iesire: P multime care contine productii de forma X w, w , celputin una pentru fiecare variabila a lui G.
P P\{A A}(eliminam productiile cu recursie imediata)
cat timp apar neterminale n derapta productiilor
pentru toate productiile A X P, X Ndaca exista o productie X w, w
pentru toate productiile X w, w
P P{A w}
P P\{A w}
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
29/53
3.3. ALGORITMII DE CRIPTARE SI DECRIPTARE 29
Teorema 3.1: Daca conditia 3.1 este ndeplinita, procedura cuvinte este
un algoritm si se termina cu iesirea dorita.Demonstratie:
Conditia 3.1 asigura existenta a cel putin unui cuvant pentru fiecarevariabila.
Finititudinea algoritmului rezulta din faptul ca neterminalele se nlocuiescdoar cu siruri de terminale.
Faptul ca algoritmul nu cicleaza ntr-o stare intermediara este dat deconditia ca gramatica nu are simboluri inutilizabile.
Se porneste de la simbolul de start S1 si se efectueaza doar derivari drepte.Daca codificarea lui S1 nu este vida, la derivare alegem acea productie al careicod este prefix n textul clar si avansam n textul clar sarind peste acest cod.Apoi procedeul se repeta, tinand cont de observatiile din sectinuea anterioara.
Acum dam algoritmul care realizeaza acest lucru folosind procedura getNextChar(algoritmul 2.3.2) si procedura cuvinte definita mai sus:
Algoritmul 3.2: cripteaza(sir, G, H)
P
cuvinte(G)
sir sir < EOF >
criptat S1
index 0
cat timp index |sir|
A cea mai din dreapta variabila
daca A = S1 nlocuieste S1 cu S1SXlegS
altfel
getNextChar(index, HA), unde HA e arborele asociat luiA
nlocuieste A cu n criptat
pentru toate variabilele ramase n criptat
A cea mai din dreapta variabila
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
30/53
30 CAPITOLUL 3. SISTEMUL DE CRIPTARE
nlocuieste A folosind o productie oarecare din P
return criptat
Datorita observatiior din sectiunea anterioara, algoritmul se termina generandun element al lui L(G) si ascunzand bitii din sir.
Observatii:
Variabila index se modifica (creste) n procedura getNextChar.
Daca arborele are un singur nod, acela este si radacina si frunza si estesingurul sir n care se poate deriva, deci se nlocuieste fara a ascundenici un bit.
Cu cat arborii Huffman au naltime mai mare (i.e. sunt mai multealegeri de facut la un moment dat) cu atat putem ascunde mai multibiti.
Datorita derivarilor drepte, se produce si o amestecare a ordinii bitilorn textul criptat.
3.3.2 Procesul de decriptare
Dat fiind un text criptat w L(G) vrem sa obtinem textul clar care i
corespunde. Deoarece G este LR(k), pentru orice cuvant n L(G) parseruldetermina sirul (unic) de derivari drepte prin care se obt ine acel cuvant.Inlocuim apoi fiecare productie din sirul de derivari cu codul corespunzatorei din H si obtinem un sir de biti care contine mesajul initial. Nu ne ramanedecat sa consideram mesajul doar pana la ntalnirea marcajului < EOF >.
Prezentam sub forma de algoritm implementarea observatiilor precedente.Algoritmul de decriptare foloseste procedura parsare (1.1), precum si proce-dura cod (algoritmul 2.3.2).
Algoritmul 3.3: Decripteaza(w,G, H)
Intrare: w textul criptat, (G, (H)) cheia de criptare.Iesire: clar textul clar corespunzator lui w, sau eroare daca w nu e recunos-
cut ca text criptat.
daca !parseaza(w, G, actiune, goto, )return eroare
clar1
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
31/53
3.4. SIGURANTA SISTEMULUI 31
cat timp = i
Fie A productia cu numarul i
c cod(, HA), unde HA e arborele de codificare asociat lui A
clar1 clar1 + c
determina clar de lungime minima cu proprietatea clar < EOF > prefix allui clar1
daca clar return clar
altfel return eroare
Deoarece procedura parseaza este un algoritm, executia ei se termina siproduce un sit finit de etichete ale productiilor folosite la derivare. Acest sirde etichete este transformat printr-o singura parcurgere ntr-un sir finit debiti. Din acest nou sir este extras un prefix reprezentand textul clar.
Datorita acestor observatii, putem afirma ca procedura decripteaza estealgoritm, si realizeaza decriptarea unui sir dat la intrare.
Pentru a face ntelese mai bine procedeele de criptare/decriptare, aminclus un exemplu detaliat n anexa C.
3.4 Siguranta sistemului
3.4.1 Analiza teoretica a securitatii sistemului
Securitatea acestui tip de criptare se bazeaza pe dificultatea gasirii aceleigramaticii care a generat un text, adica a arborelui de parsare asociat textu-lui. Intr-adevar, se poate gasi o gramatica care sa genereze un text, dar suntfoarte multe gramatici care pot genera acelasi text. Iar la productii diferitese asociaza arbori Huffman diferiti, deci si criptari diferite.
Problema revine la a determina exact acea gramatica cu care este produs
textul. Daca ar exista un algoritm n timp determinist polinomial care sanvete sa genereze arborele de parsare pentru un text dat, atunci acest algo-ritm ar putea sa fie antrenat sa prezica si apartenenta unui sir la limbajulgenerat de o gramatica.
Teorema 4.2: Fie A un algoritm care poate nvata sa genereze arborelede parsare si fie G1 o gramatica. Atunci cu acest algoritm se poate preziceapartenenta unui sir la L(G1)
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
32/53
32 CAPITOLUL 3. SISTEMUL DE CRIPTARE
Demonstratie: Consideram G1 = (N1, , S1, P1) si fie G2 = (N2, , S2, P2) o
alta garmatica peste acelasi alfabet. Fie G = (N, , S , P ), unde: N = N1N2 {S} si P = P1 P2 {S S1,S S2}. Antrenam algoritmulA cu exemple din L(G), si arborii lor de parsare. Algoritmul A nvata sagenereze arborele de parsare pentru orice sir w L(G). Atunci w L(G)A determina daca S deriva n S1 sau n S2, adica daca w L(G1) sau nu.
Dar, precum afirma umatoarea teorema, corolar n [AK91], daca inver-sarea RSA-ului e o problema intratabila, atunci nu se poate nvata un pro-gram sa prezica apartenenta unui sir la limbajul generat de o gramaticaneregulata. Dar mai ntai, niste definitii pregatitoare.
Definitia 4.1 (definitii pregatitoare):Fie X = {0, 1}
Prin reprezentare de concepte C ntelegem orice submultime a luiXX.Pentru un element u, x C, u e un nume de concept si x un exemplu. Sespune ca x e membru al conceptului u.Definim CDFA ca o multime de perechi u, x astfel ncat u este codarea bi-nara a unui automat finit determinist M peste X six este un cuvant acceptatde M.In mod aseman ator se definesc si C2DFA, CNFA si CCFG corespunzatoare au-tomatelor infinite si gramaticilor independente de context.
Reuniunile finite de AFD sunt reprezentate de CDFA iar intersectiile finitede AFD de CDFA.
Teorema 4.3: Daca presupunem intratabilitatea oricarei din urmatoareletrei probleme: testarea reziduurilor patratice modulo un numar compus, in-versarea criptarii RSA sau factorizarea intregilor Blum, atunci urmatoarelereprezentari de concepte nu sunt predictibile n timp polinomial folosind cereride apartenent a: CDFA, CDFA, C2DFA, CNFA si CCFG
3.4.2 Metode de mbunatatire a securitati sistemului
Exista diverse procedee care permit modificarea productiilor unei gra-matici astfel ncat criptarea obtinuta folosind noua gramatica sa difere decriptarea obtinuta folosind gramatica initiala.
Astfel de procedee sunt expansiunile, contractiile si permutarile.
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
33/53
3.4. SIGURANTA SISTEMULUI 33
Expansiunea
Expansiunea: Fie A o variabila si i, i = 1, n expresiile n care deriva A.Fie ik, k = 1, m un subsir al lui i. Pentru orice productie B 1A2,adaugam productiile B 1ik2. La sfarsit, stergem productiile A ik.
Contractia
Contractia este un procedeu invers expansiunii (care adauga noi variabilegramaticii).
PermutareaPermutarea consta n permutarea productiilor unei variabile, din care
rezulta modificarea arborilor Huffman, deci si a criptarii.Aceste modificari pot fi efectuate simultan de catre cei doi parteneri care
comunica folosind un generator de numere pseudo-aleatoare sincronizat (cuaceeasi samanta). Aceasta samanta are valoarea unei chei suplimentare decriptare.
Detalii privind aceste procedee se gasesc in [Way96].
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
34/53
34 CAPITOLUL 3. SISTEMUL DE CRIPTARE
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
35/53
Capitolul 4
Concluzii
Sistemul prezentat este destul de bun, n sensul ca pentru anumite cheipoate fi comparat cu RSA-ul sau cu alte sisteme puternice de criptare.
Pentru o implementare pe internet a acestui sistem vezi [SPAM].Dezavantaje:
faptul ca o gramatica trebuie sa fie destul de elaborata pentru a-i pacalipe cei ce pot intercepta mesajele
e necesar un schimb prealabil de chei pe un canal sigur
datorita marimii lor, cheile nu se pot schimba
nu se stie ce gramatici au puterea de criptare echivalenta cu RSA (desise stie ca exista)
Avantaje:
cu ajutorul acestui sistem se poate ascunde informatie n text aparentinofensiv.
asa cum am aratat mai sus desi cheile nu se pot schimba prea des, elese pot transforma
este usor de proiectat o gramatica (realizarea unei gramatici necesita
putine notiuni teoretice) si depinde doar de imaginatia celui ce o creaza.
Indicatii pentru construirea unei gramatici bune
Gramatica trebuie sa fie construita astfel ncat sa simuleze o situatiedin viata reala bazata pe repetitie cum ar fi comentariul uni meci saupovestirea unei telenovele sau un basm, sau ca n exemplul nostru undiscurs de candidatura. Oricum, sunt multe domenii care implica ooarecare rutina (mai ales privite din afara)
35
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
36/53
36 CAPITOLUL 4. CONCLUZII
Cu cat mai multe variabile sunt, cu atat mai bine. Adica se poate merge
cu constructia textului pana ls structura frazei, sau chiar a cuvantului.
este buna folosirea a cat mai multe productii pentru o variabila pentrua putea ascunde cat mai multa informatie. Daca avem 2n productiipentru o variabila, atunci derivand-o putem ascunde n biti. Putemfolosi fraze asemanatoare, sinonime, etc.
multimea neterminalelor dintr-o productie sa fie cat mai mica pentruca sa ascundem cat mai mult cu cat mai putine cuvinte. (de aceeaexemplu dat e doar n scop didactic)
Informatia (sirul de bit i) trebuie sa fie aleatoare, de aceea se recomanda o
preprocesare care sa randomizeze intrarea (ori o alta criptare, ori o arhivare).Prezentam ca exemplu de cheie pentru acest sistem, care realizeaza o
criptare eficienta (fara modificarea dimensiunii initiale).G = (N, , S , P ), unde:
N = {Ai : i = 0, 255} multimea variabilelor;
= {tj : j = 0, 255} multimea caracterelor ASCII;
S este una din variabile (sa zicem A0;
Productiile sunt de forma Ai tjAk1 . . . Ak(ij) : i, j = 0, 255.
Aceasta gramatica pemiterea ascunderea a 8 biti de informatie la fiecarealegere, producand un singur caracter (deci tot 8 bit i) ceea ce nseamna oconservare a marimii textului, una din cerintele unui bun sistem de criptare.
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
37/53
Bibliografie
[Way96] Wayner, Peter, Disappearing Cryptography, Being and Nothingnesson the Net
[Ata01] Atanasiu, Adrian, curs de teroria codurilor
[AK91] Angluin, D., Kharitonov, M., When wont memebership querieshelp?, ACM Press 1991
[KV89] Kearns, M., Valiant, L. G., Cryptographic Limitations on LearningBoolean Formulae and Finite Automata
[AU72] Aho, A. V., Ullman, J. D., The Theory of Parsing, Translation AndCompiling
[CLR90] Cormen, Th. H., Leiserson, Ch. E., Rivest R. R., Introduction toAlgorithms, MIT Press 1990
[SPAM] http://www.spammimic.com.
[SH] http://www.jjtc.com/Steganography/
[SS] http://www.tapr.org/
[MD] http://www89.pair.com/techinfo/Microdot/microdot.htm
37
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
38/53
38 BIBLIOGRAFIE
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
39/53
Anexa A
Coduri Huffman
Prezint aici un cod Huffman asociat frecventei literelor n limba englezacare l-am completat cu < EOF > divizand nodul lui Z:
Frecv. Codul Frecv. CodulLitera % Huffman Litera % Huffman
A 6.22 1011 O 6.06 1000B 1.32 010100 P 1.87 00000C 3.11 10101 Q 0.10 0101011100D 2.97 01011 R 5.87 0111E 10.53 001 S 5.81 0110F 1.68 110001 T 7.68 1101G 1.65 110000 U 2.27 00010H 3.63 11001 V 0.70 0101010I 6.14 1001 W 1.13 000011J 0.06 01010111011 X 0.25 010101111K 0.31 01010110 Y 1.07 000010L 3.07 10100 Z 0.06 01010111010110M 2.48 00011 < EOF > 0.00 01010111010111N 5.73 0100 .
39
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
40/53
40 ANEXA A. CODURI HUFFMAN
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
41/53
Anexa B
Constructia unei tabele deparsare
Gramatica
Vom folosi ca exemplu de gramatica aceeasi gramatica folosita si n exem-plul de criptare/decriptare, deoarece n procesul de decriptare avem nevoiesa parsam sirul criptat. Gramatica este:
0 S S1$ 13 C C11 S1 S1; E 14 C 02 S1 E 15 C1 1
3 E E+ T 16 C1 24 E T 17 C1 35 T T F 18 C1 46 T F 19 C1 57 F (E) 20 C1 68 F N 21 C1 79 N C1N0 22 C1 8
10 N 0 23 C1 911 N0 N0C12 N0
Aceasta gramatica este extensia gramaticii expresiilor aritmetice simple
cu numere naturale separate de ;. Mai jos, prezint pasii de construie amultimii configuratiilor, apoi tabelele actiune si goto.
41
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
42/53
42 ANEXA B. CONSTRUCTIA UNEI TABELE DE PARSARE
I0C1 .1 ;$| |; | + |0|1|2|3|4|5|6|7|8|9
C1 .2 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .3 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .4 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .5 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .6 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .7 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .8 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .9 ;$| |; | + |0|1|2|3|4|5|6|7|8|9E .E + T ;$|; |+E .T ;$|; |+F .( E ) ;$| |; |+F .N ;$| |; |+N .0 ;$| |; |+N .C1 N0 ;$| |; |+S1 .E ;$|;S1 .S1 ; E;$|;S .S1 ;$T .F ;$| |; |+T .T * F ;$| |; |+
goto(I0, 0) = I1
I1N 0 .;| + |; |$
goto(I0, 9) = I2
I2C1 9 .;1|2|3|4|5|6|7|8|9|0| | + |; |$
goto(I0, 8) = I3
I3C1 8 .;1|2|3|4|5|6|7|8|9|0| | + |; |$
goto(I0, 7) = I4
I4C1 7 .;1|2|3|4|5|6|7|8|9|0| | + |; |$
goto(I0, 6) = I5
I5C1 6 .;1|2|3|4|5|6|7|8|9|0| | + |; |$
goto(I0, 5) = I6
I6C1 5 .;1|2|3|4|5|6|7|8|9|0| | + |; |$
goto(I0, 4) = I7
I7C1 4 .;1|2|3|4|5|6|7|8|9|0| | + |; |$
goto(I0, 3) = I8
I8C1 3 .;1|2|3|4|5|6|7|8|9|0| | + |; |$
goto(I0, 2) = I9
I9C1 2 .;1|2|3|4|5|6|7|8|9|0| | + |; |$
goto(I0, 1) = I10
I10C1 1 .;1|2|3|4|5|6|7|8|9|0| | + |; |$
goto(I0, C1) = I11
I11N C1 .N0;$| |; |+N0 . ;$| |; | + |0|1|2|3|4|5|6|7|8|9N0 .N0 C;$| |; | + |0|1|2|3|4|5|6|7|8|9
goto(I0, N) = I12
I12F N .;| + |; |$
goto(I0, () = I13
I13C1 .1 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .2 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .3 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .4 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .5 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .6 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .7 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .8 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .9 ;)| | + |0|1|2|3|4|5|6|7|8|9E .E + T;)|+E .T ;)|+
F ( .E ) ;$| |; |+F .( E ) ;)| |+F .N ;)| |+N .0 ;)| |+N .C1 N0;)| |+T .F ;)| |+T .T * F ;)| |+
goto(I0, F) = I14
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
43/53
43
I14T F .;| + |; |$
goto(I0, T) = I15
I15E T . ;$|; |+T T .* F;$| |; |+
goto(I0, E) = I16
I16E E .+ T;$|; |+S1 E . ;$|;
goto(I0, S1) = I17
I17S S1 . ;$S1 S1 .; E;$|;
goto(I17, ; ) = I18
I18C1 .1 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .2 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .3 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .4 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .5 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .6 ;$| |; | + |0|1|2|3|4|5|6|7|8|9
C1 .7 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .8 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .9 ;$| |; | + |0|1|2|3|4|5|6|7|8|9E .E + T ;$|; |+E .T ;$|; |+F .( E ) ;$| |; |+F .N ;$| |; |+N .0 ;$| |; |+N .C1 N0 ;$| |; |+S1 S1 ; .E;$|;T .F ;$| |; |+T .T * F ;$| |; |+
goto(
I18,0) =
I1goto(I18, 9) = I2goto(I18, 8) = I3goto(I18, 7) = I4goto(I18, 6) = I5goto(I18, 5) = I6goto(I18, 4) = I7goto(I18, 3) = I8goto(I18, 2) = I9goto(I18, 1) = I10
goto(I18, C1) = I11goto
(I18, N
) =I12
goto(I18, () = I13goto(I18, F) = I14goto(I18, T) = I15goto(I18, E) = I19
I19E E .+ T ;$|; |+S1 S1 ; E .;$|;
goto(I19, +) = I20
I20C1 .1 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .2 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .3 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .4 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .5 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .6 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .7 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .8 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .9 ;$| |; | + |0|1|2|3|4|5|6|7|8|9E E + .T;$|; |+F .( E ) ;$| |; |+F .N ;$| |; |+N .0 ;$| |; |+
N .C1 N0;$| |; |+T .F ;$| |; |+T .T * F ;$| |; |+
goto(I20, 0) = I1goto(I20, 9) = I2goto(I20, 8) = I3goto(I20, 7) = I4goto(I20, 6) = I5goto(I20, 5) = I6goto(I20, 4) = I7goto(I20, 3) = I8goto(I20, 2) = I9
goto(I20, 1) = I10goto(I20, C1) = I11goto(I20, N) = I12goto(I20, () = I13goto(I20, F) = I14goto(I20, T) = I21
I21E E + T .;$|; |+T T .* F ;$| |; |+
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
44/53
44 ANEXA B. CONSTRUCTIA UNEI TABELE DE PARSARE
goto(I21, ) = I22
I22C1 .1 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .2 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .3 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .4 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .5 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .6 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .7 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .8 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .9 ;$| |; | + |0|1|2|3|4|5|6|7|8|9F .( E ) ;$| |; |+F .N ;$| |; |+
N .0 ;$| |; |+N .C1 N0;$| |; |+T T * .F ;$| |; |+
goto(I22, 0) = I1goto(I22, 9) = I2goto(I22, 8) = I3goto(I22, 7) = I4goto(I22, 6) = I5goto(I22, 5) = I6goto(I22, 4) = I7goto(I22, 3) = I8goto(I22, 2) = I9goto(I22, 1) = I10goto(I22, C1) = I11goto(I22, N) = I12goto(I22, () = I13goto(I22, F) = I23
I23T T * F .;$| | + |;
goto(I16, +) = I20goto(I15, ) = I22goto(I13, E) = I24
I24E E .+ T;)|+F ( E .) ;$| |; |+
goto(I13, 0) = I25
I25N 0 .;| + |)
goto(I13, 9) = I26
I26C1 9 .;1|2|3|4|5|6|7|8|9|0| | + |)
goto(I13, 8) = I27
I27C1 8 .;1|2|3|4|5|6|7|8|9|0| | + |)
goto(I13, 7) = I28
I28C1 7 .;1|2|3|4|5|6|7|8|9|0| | + |)
goto(I13, 6) = I29
I29C1 6 .;1|2|3|4|5|6|7|8|9|0| | + |)
goto(I13, 5) = I30
I30C1 5 .;1|2|3|4|5|6|7|8|9|0| | + |)
goto(I13, 4) = I31
I31C1 4 .;1|2|3|4|5|6|7|8|9|0| | + |)
goto(I13, 3) = I32
I32C1 3 .;1|2|3|4|5|6|7|8|9|0| | + |)
goto(I13, 2) = I33
I33C1 2 .;1|2|3|4|5|6|7|8|9|0| | + |)
goto(I13, 1) = I34
I34C1 1 .;1|2|3|4|5|6|7|8|9|0| | + |)
goto(I13, C1) = I35
I35N C1 .N0;)| |+N0 . ;)| | + |0|1|2|3|4|5|6|7|8|9N0 .N0 C;)| | + |0|1|2|3|4|5|6|7|8|9
goto(I13, N) = I36
I36F N .;| + |)
goto(I13, () = I37
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
45/53
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
46/53
46 ANEXA B. CONSTRUCTIA UNEI TABELE DE PARSARE
I44C1 .1 ;)| | + |0|1|2|3|4|5|6|7|8|9
C1 .2 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .3 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .4 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .5 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .6 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .7 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .8 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .9 ;)| | + |0|1|2|3|4|5|6|7|8|9E E + .T;)|+F .( E ) ;)| |+F .N ;)| |+N .0 ;)| |+N .C1 N0;)| |+T .F ;)| |+T .T * F ;)| |+
goto(I44, 0) = I25goto(I44, 9) = I26goto(I44, 8) = I27goto(I44, 7) = I28goto(I44, 6) = I29goto(I44, 5) = I30goto(I44, 4) = I31goto(I44, 3) = I32goto(I44, 2) = I33goto(I44, 1) = I34goto(I44, C1) = I35goto(I44, N) = I36goto(I44, () = I37goto(I44, F) = I38goto(I44, T) = I45
I45
E E + T .;)|+T T .* F ;)| |+
goto(I45, ) = I40goto(I35, N0) = I46
I46C .0 ;)| | + |0|1|2|3|4|5|6|7|8|9
C .C1 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .1 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .2 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .3 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .4 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .5 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .6 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .7 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .8 ;)| | + |0|1|2|3|4|5|6|7|8|9C1 .9 ;)| | + |0|1|2|3|4|5|6|7|8|9N C1 N0 .;)| |+N0 N0 .C ;)| | + |0|1|2|3|4|5|6|7|8|9
goto(I46, 0) = I47
I47C 0 .;| + |0|9|8|7|6|5|4|3|2|1|)
goto(I46, 9) = I26goto(I46, 8) = I27goto(I46, 7) = I28goto(I46, 6) = I29goto(I46, 5) = I30
goto(I46, 4) = I31goto(I46, 3) = I32goto(I46, 2) = I33goto(I46, 1) = I34goto(I46, C1) = I48
I48C C1 .;| + |0|9|8|7|6|5|4|3|2|1|)
goto(I46, C) = I49
I49N0 N0 C .;| + |0|9|8|7|6|5|4|3|2|1|)
g(24,))=50I50
F ( E ) .;| + |; |$
goto(I24, +) = I44goto(I11, N0) = I51
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
47/53
47
I51C .0 ;$| |; | + |0|1|2|3|4|5|6|7|8|9
C .C1 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .1 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .2 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .3 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .4 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .5 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .6 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .7 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .8 ;$| |; | + |0|1|2|3|4|5|6|7|8|9C1 .9 ;$| |; | + |0|1|2|3|4|5|6|7|8|9N C1 N0 .;$| |; |+N0 N0 .C ;$| |; | + |0|1|2|3|4|5|6|7|8|9
goto(I51, 0) = I52
I52C 0 .;| + |; |0|9|8|7|6|5|4|3|2|1|$
goto(I51, 9) = I2goto(I51, 8) = I3goto(I51, 7) = I4goto(I51, 6) = I5goto(I51, 5) = I6goto(I51, 4) = I7goto(I51, 3) = I8goto(I51, 2) = I9goto(I51, 1) = I10goto(I51, C1) = I53
I53C C1 .;| + |; |0|9|8|7|6|5|4|3|2|1|$
goto(I51, C) = I54
I54N0 N0 C .;| + |; |0|9|8|7|6|5|4|3|2|1|$
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
48/53
48 ANEXA B. CONSTRUCTIA UNEI TABELE DE PARSARE
Tabela goto
( ) * ; + 0 1 2 3 4 5 6 7 8 9 C C1 E F N N0 S1 0 13 1 10 9 8 7 6 5 4 3 2 11 16 14 12 17 1 2 3 4 5 6 7
8
9 10 11 51 12 13 37 25 34 33 32 31 30 29 28 27 26 35 24 38 36 14 15 22 16 20 17 18 18 13 1 10 9 8 7 6 5 4 3 2 11 19 14 12 19 20 20 13 1 10 9 8 7 6 5 4 3 2 11 14 12 21 22 22 13 1 10 9 8 7 6 5 4 3 2 11 23 12 23 24 50 44 25 26 27 28 29
30 31 32 33 34 35 46 36 37 37 25 34 33 32 31 30 29 28 27 26 35 42 38 36 38 39 40 40 37 25 34 33 32 31 30 29 28 27 26 35 41 36 41 42 43 44 43 44 37 25 34 33 32 31 30 29 28 27 26 35 38 36 45 40 46 47 34 33 32 31 30 29 28 27 26 49 48 47 48 49 50 50 52 10 9 8 7 6 2 4 3 2 54 53
51 52 53 54
Legendanumar i deplasare la starea i
eroare
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
49/53
49
Tabela actiune
$ ( ) * ; + 0 1 2 3 4 5 6 7 8 90 d d d d d d d d d d d1 10 10 10 10 2 23 23 23 23 23 23 23 23 23 23 23 23 23 233 22 22 22 22 22 22 22 22 22 22 22 22 22 224 21 21 21 21 21 21 21 21 21 21 21 21 21 215 20 20 20 20 20 20 20 20 20 20 20 20 20 206 19 19 19 19 19 19 19 19 19 19 19 19 19 197 18 18 18 18 18 18 18 18 18 18 18 18 18 188 17 17 17 17 17 17 17 17 17 17 17 17 17 179 16 16 16 16 16 16 16 16 16 16 16 16 16 16
10 15 15 15 15 15 15 15 15 15 15 15 15 15 1511 12 12 12 12 12 12 12 12 12 12 12 12 12 1212 8 8 8 8 13 d d d d d d d d d d d14 6 6 6 6 15 4 d 4 4 16 2 2 d 17 A d 18 d d d d d d d d d d d19 1 1 d 20 d d d d d d d d d d d
21 3 d 3 3 22 d d d d d d d d d d d23 5 5 5 5 24 d d 25 10 10 10 26 23 23 23 23 23 23 23 23 23 23 23 23 2327 22 22 22 22 22 22 22 22 22 22 22 22 2228 21 21 21 21 21 21 21 21 21 21 21 21 2129 20 20 20 20 20 20 20 20 20 20 20 20 2030 19 19 19 19 19 19 19 19 19 19 19 19 1931 18 18 18 18 18 18 18 18 18 18 18 18 1832 17 17 17 17 17 17 17 17 17 17 17 17 1733 16 16 16 16 16 16 16 16 16 16 16 16 1634 15 15 15 15 15 15 15 15 15 15 15 15 1535 12 12 12 12 12 12 12 12 12 12 12 12 1236 8 8 8 37 d d d d d d d d d d d38 6 6 6 39 4 d 4 40 d d d d d d d d d d d41 5 5 5 42 d d
43 7 7 7 44 d d d d d d d d d d d45 3 d 3 46 9 9 9 d d d d d d d d d d47 14 14 14 14 14 14 14 14 14 14 14 14 1448 13 13 13 13 13 13 13 13 13 13 13 13 1349 11 11 11 11 11 11 11 11 11 11 11 11 1150 7 7 7 7 51 9 9 9 9 d d d d d d d d d d52 14 14 14 14 14 14 14 14 14 14 14 14 14 1453 13 13 13 13 13 13 13 13 13 13 13 13 13 1354 11 11 11 11 11 11 11 11 11 11 11 11 11 11
Legendanumar i reduce productia cu eticheta i
d deplasare
A acceptare
eroare
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
50/53
50 ANEXA B. CONSTRUCTIA UNEI TABELE DE PARSARE
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
51/53
Anexa C
Exemplu de aplicare a
criptarii/decriptariiCheia de criptare
Gramatica din componenta chei de criptare este B. Observam ca aceastagramatica respecta condit iiie extensiei unei gramatici din 3.2.
Iata acum o posibila alegere a lui H:HS1 S1 S1; E
S1 E HE E E+ T 1
E T 0HT T T F 0
T F 1HF F (E) 0
F N 1HN N C1N0 1
N 0 0HN0 N0 N0C 0
N0 1
HC C C1 0C 0 1
HC1 C1 1 011C1 2 000C1 3 101C1 4 0100C1 5 111C1 6 001C1 7 100C1 8 110C1 9 0101
Se observa ca productiilor S1 S1; E si S1 E li se asociaza codul
vid, precum am aratat la procedeeul de extindere al sistemului. In rest,la derivarea celorlalte variabile se poate ascunde un singur bit, cu exceptiavariabilei C1 cu care se pot ascunde 3 sau 4 biti.
Textul clar
Vom considera un mesaj ca fiind un text n limba engleza din care s-aueliminat spatiile si semnele de punctuatie si s-au transformat toate literele
51
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
52/53
8/8/2019 Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k
53/53
53
criptat Productia Bitii
folosita ascunsiS1 S1 S1; E S1; E E T 0S1; T T T F 0S1; T F F (E) 0S1; T (E) E (E+ T) 1S1; T (E+ T) T F 1S1; T (E+ F) F N 1S1; T (E+ N) N 0 0