Ascunderea Informatiei in Text Folosind Gramatici de Tip LR_k

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