Click here to load reader

Curs 5-8 mapetrii/fisiere/ISR/C5_C8.pdf · PDF file 1 Curs 5-8 Autentificarea mesajelor Autentificarea mesajelor este un mecanism prin care destinatarul unui mesaj poate verifica

  • View
    5

  • Download
    0

Embed Size (px)

Text of Curs 5-8 mapetrii/fisiere/ISR/C5_C8.pdf · PDF file 1 Curs 5-8 Autentificarea mesajelor...

  • 1

    Curs 5-8

    Autentificarea mesajelor

    Autentificarea mesajelor este un mecanism prin care destinatarul unui mesaj poate

    verifica faptul că autorul mesajului este o anumită entitate și că mesajul nu a fost modificat de

    altcineva. Pentru autentificarea unui mesaj se aplică asupra mesajului primit un test de

    autenticitate. Un asemenea test trebuie să asigure faptul că orice mesaj autentic va trece testul

    respectiv și că probabilitatea ca un mesaj neautentic, produs cu un efort computațional

    rezonabil, să treacă testul este foarte mică.

    Există două nivele distincte de "spargere" a unui test de autenticitate:

     fals existent (engl. existential forgery) - posibilitatea ca un adversar să genereze un mesaj neautentic care să treacă testul de autenticitate;

     fals ales (engl. choosen forgery) - în plus față de falsul existent, conținutul mesajului neautentic este (total sau în mare parte) la alegerea adversarului.

    În studiul metodelor de autentificare a mesajelor se presupune că mesajul de transmis nu

    este secret deoarece în practică apare frecvent necesitatea ca un mesaj public să poată fi testat

    de oricine în privintă autenticității (de exemplu, în cazul unui anunț public, un cetățean ar

    trebui să poată verifica dacă textul respectiv este textul autentic emis de autoritatea abilitată).

    Metodele de asigurare a confidențialității se separă de obicei de metodele de control a

    autenticității, deoarece doar informațiile pentru asigurarea confidențialității nu asigură o

    garanție privind autenticitatea mesajului (de exemplu, pentru unele metode de criptare un

    adversar poate opera modificări asupra textului cifrat cu efecte previzibile asupra textului clar,

    chiar dacă nu cunoaște efectiv textul clar). Așadar, pentru autentificare sunt necesare unele

    informații suplimentare care de obicei se transmit pe canale sigure (ca exemplu practic, un

    canalul nesigur este Internet-ul, iar un canalul sigur dar cu capacitate foarte redusă este un

    bilet scris sau o convorbire telefonică). În asigurarea autenticității, un rol foarte important este

    jucat de funcțiile de dispersie criptografică (engl. hash function). În sens matematic, funcțiile

    hash sunt funcții definite pe o mulțime cu multe elemente (posibil infinită) cu valori într-o

    mulțime cu un număr fix și mai redus de elemente. Funcțiile hash nu sunt inversabile. Pe

    lângă aplicațiile în domeniul criptografiei, aceste funcții mai sunt folosite pentru a accelera

    căutările în tabele cu multe date sau pentru comparări de date. În cazul nostru, o funcție de

    dispersie va asocia unui șir de biți de lungime oricât de mare, o valoare întreagă într-un

    interval dat de forma (sau echivalent, un șir de biți de lungime ), satisfăcând condiția că, pentru șirurile care apar în problema unde se folosește funcția de dispersie, două șiruri

    distincte să nu aibă aceeași valoare a funcției de dispersie cu probabilitate semnificativ mai

    mare de . O funcție hash poate lega două sau mai multe chei de la aceeași valoare hash. În multe aplicații, este de dorit minimalizarea șansei apariției unor astfel de coliziuni, ceea ce

    înseamnă că funcția hash trebuie să lege cheile de valorile hash cât mai uniform posibil. De

    asemenea, în funcție de aplicație, alte proprietăți pot fi necesare. Deși ideea a fost concepută

    în anii 1950, proiectarea optimă a funcțiilor hash este încă un subiect activ de cercetare și

    http://ro.wikipedia.org/wiki/Matematic%C4%83

  • 2

    discuție. Funcțiile hash sunt utilizate și ca sume de control sau funcții hash criptografice, dar

    nu trebuie confundate cu caracterele de verificare, amprentele numerice, funcțiile de

    randomizare, codurile de corectare a erorilor. Deși aceste concepte se suprapun într-o oarecare

    măsură, fiecare are propriile sale utilizări și cerințele și este proiectat și optimizat în mod

    diferit.

    Față de o funcție de dispersie, o funcție de dispersie criptografică are anumite

    proprietăți suplimentare, și anume:

     rezistentă la preimagine (preimage resistence) - dacă se cunoaște , să fie dificil de regăsit (dificultatea să se păstreze chiar în cazul cunoașterii unei părți din );

     rezistentă la a doua preimagine (second preimage resistence) - dacă se cunoaște un șir

    , să fie dificil de găsit un alt șir , cu ;  rezistentă la coliziuni (collision resistence) - să fie dificil de găsit două șiruri și

    cu . Pentru ca o funcție să satisfacă aceste condiții (pentru a rezista atacurilor prin forță brută)

    trebuie ca numărul de biți ai dispersiei să fie suficient de mare (minim 128).

    Principalele funcții de dispersie sunt:

    MD5 - creată de Ronald Rivest în 1991, este una dintre cele mai raspandite. Lucrează cu

    șiruri de biți de lungime 128. Recent au fost descoperite o serie de slăbiciuni ale acesteia.

    SHA1 - a fost dezvoltată de NSA (National Security Agency, SUA). Lucrează cu șiruri

    de biți de lungime 160. Până în acest moment s-a dovedit a fi mai sigură decât MD5.

    RIPEMD-160 - dezvoltată la Katholieke Universiteit Leuven în 1996. Lucrează cu șiruri

    de biți de lungime 160.

    Ca și mod de lucru, emițătorul unui mesaj calculează , transmite prin canalul principal și transmite prin canalul sigur. La destinație se va verifica de către receptor dacă . În baza proprietăților funcției este greu (daca nu chiar imposibil) ca un adversar să modifice în , cu pentru a păcăli receptorul.

    Pentru sporirea securității se utilizează și funcții de dispersie cu cheie (keyed hash

    function), numită și MAC (message authentication code), o asemenea funcție fiind o funcție

    de dispersie parametrizată cu o cheie , având proprietatea că, pentru cineva care nu cunoaște dinainte cheia , este nefezabil computațional să obțină o (nouă) pereche în care , chiar dacă cunoaște un număr de perechi cu . Pentru a utiliza o funcție de dispersie cu cheie, mai întâi, emițătorul și receptorul se înțeleg asupra unei

    chei secrete , apoi, la trimiterea unui mesaj , emițătorul calculează și trimite perechea . Receptorul testează dacă .

    Ca și cale de atac pentru autentificările prin dispersie cu cheie putem aminti atacul prin

    reflexie, eficient când se utilizează aceeași cheie pentru autentificarea ambelor sensuri de

    comunicație. Dacă spre exemplu Alice dorește să comunice cu Bob și ei stabilesc cheia de

    dispersie , un adversar activ poate intercepta un mesaj trimis de Alice către Bob și să-l trimită înapoi lui Alice. Dacă aceeași cheie este utilizată pentru autentificarea ambelor sensuri de comunicație și dacă mesajele au același format, atunci Alice acceptă mesajul ca

    venind de la Bob. Pentru prevenirea unui asemenea atac, există două soluții:

     utilizarea de chei distincte pentru cele două sensuri;

     trecerea numelui entității emițătoare în mesaj.

    http://ro.wikipedia.org/w/index.php?title=Sum%C4%83_de_control&action=edit&redlink=1 http://ro.wikipedia.org/wiki/Coduri_corectoare_de_erori

  • 3

    Pentru a rezista atacurilor prin forță brută, se impune ca atât dimensiunea cheii cât și cea

    a dispersiei să fie de minim 64 de biți, preferabil 80 de biți.

    Exemplu de construcție a unei funcții de dispersie cu cheie pornind de la funcții de

    dispersie rezistente la coliziuni și rezistente la preimagine (conform [RFC 2104, 1997]):

    ( )

    unde:

    - reprezintă concatenarea;

    - este operația sau exclusiv;

    hash - este funcția de dispersie criptografică (de exemplu sau );

    - este cheia completată la o lungime aleasă în funcție de anumite particularități ale funcției de dispersie de la bază (pentru și , se ia de 64 de octeți);

    , - sunt șiruri obținute prin repetarea de ori a octetului cu valoarea (hexa) 36, respectiv 5C.

    Pentru micșorarea cantității de informație pusă la dispoziția adversarului, rezultatul unei

    funcții hash se poate trunchia la lungime mai mică (o funcție de dispersie hash dă 128-160

    biți, iar pentru o dispersie cu cheie sunt suficienți 64-80 de biți).

    O construcție similară dispersiei cu cheie este semnătura digitală, aceasta din urmă

    utilizând chei diferite pentru crearea respectiv verificarea dispersiei(numită, în acest caz,

    semnătură). Fiind o construcție asimetrică, relația dintre semnătura digitală și dispersia cu

    cheie este similară cu cea dintre criptografia asimetrică și criptografia simetrică.

    Ca și mod de lucru, autorul de mesaje semnate generează cu un algoritm specific o

    pereche de chei ( -cheia secretă sau cheia de semnătură, -cheia publică sau cheia de verificare) și transmite cheia publică receptorului, prin utilizarea unui canal sigur, astfel încât cheia să nu poată fi modificată în timpul transmisiei. Apoi, folosind funcția de semnare

    se crează se

Search related