CATEGORII DOCUMENTE |
Astronomie | Biofizica | Biologie | Botanica | Carti | Chimie | Copii |
Educatie civica | Fabule ghicitori | Fizica | Gramatica | Joc | Literatura romana | Logica |
Matematica | Poezii | Psihologie psihiatrie | Sociologie |
Metode si protocoale criptografice
1 Deziderate
confidentialitate un mesaj sa nu poata fi inteles decat de catre destinatarul dorit;
integritatea mesajelor destinatarul unui mesaj sa poata verifica daca mesajul este identic cu cel emis de emitator (ca nu a fost modificat pe traseu);
autentificarea sursei destinatarul sa poata verifica identitatea emitatorului unui mesaj;
nerepudiabilitate emitatorul unui mesaj sa nu poata nega ulterior emiterea unui mesaj (destinatarul sa poata proba in justitie faptul ca emitatorul a emis un anumit mesaj).
Note:
1. Verificarea integritatii si autentificarea au sens doar impreuna.
2. Nerepudiabilitatea nu are sens fara verificarea integritatii si autentificarea
sursei.
2 Asigurarea confidentialitatii
2.1 Criptografia simetrica
Este cifrarea clasica, in care un mesaj dat, numit text clar (eng: plaintext), este transformat intr-un asa-numit text cifrat (eng:ciphertext), astfel incat numai cineva care cunoaste un anumit secret sa poata reconstitui textul clar avand la dispozitie doar textul cifrat.
in general, algoritmii folositi la cifrare si la descifrare sunt presupusi cunoscuti de toata lumea; secretul este un parametru al algoritmului, numit cheie (eng: key).
Nota:
Ideea este ca elaborarea si implementarea unui algoritm nou cere un efort intens si implica mai multe persoane; de aceea e greu de pastrat secretul si e si mai greu de schimbat algoritmul oridecateori el devine cunoscut din afara.
in plus, publicand algoritmul, exista sanse mari ca, daca acesta este vulnerabil, sa aflam de la cineva care doreste doar gloria si eventual banii unei recompense, nu secretele pazite de algoritm.
Cifrarea se scrie m = ck(p), unde p este textul clar, m este textul cifrat, k este cheia, iar c este functia (algoritmul) de cifrare.
Descifrarea se scrie p = dk(m). Pentru ca descifrarea sa fie posibila,
trebuie ca dk(ck(p)) = p, 8p, ceea ce implica cerinta ca ck sa fie injectiva.
Nota:
in criptografia simetrica, adesea ck este bijectiva (atunci ck si dk sunt una inversa celeilalte) si dk este posibil de folosit pentru cifrare in locul lui ck
Atacuri posibile:
o atac cu text cifrat: intrusul dispune de textul cifrat si doreste obtinerea textului clar corespunzator;
o atac cu text clar cunoscut: intrusul dispune de perechi (pi,mi) de text clar si textul cifrat corespunzator, plus un text cifrat m 6= mi pentru care doreste obtinerea textului clar corespunzator;
o atac cu text clar ales: ca si in cazul precedent, dar in plus intrusul poate alege pi
in general, un sistem criptografic sigur trebuie sa reziste la atac cu text clar ales. Ca o consecinta, functia de cifrare, vazuta ca fiind parametrata cu textul clar si avand ca argument cheia, trebuie sa fie dificil inversabila (eng: one-way), adica a gasi cheia cunoscand textul clar dat si textul cifrat rezultat sa necesite cautare aproape exhaustiva in spatiul cheilor.
Exista si protocoale care prevad explicit chei de unica folosinta (cheia se schimba la fiecare mesaj); la astfel de protocoale atacul cu text clar cunoscut este imposibil.
Un astfel de sistem este cifrarea cu cheie acoperitoare: cheia este un sir aleator de biti de lungime egala cu a mesajului, iar cifrarea este operatia xor intre fiecare bit din mesaj si bitul corespunzator din cheie. Un argument probabilistic simplu arata ca cunoasterea textului cifrat nu aduce nici o informatie asupra textului clar. Dezavantajul metodei este ca cheia este lunga si nu poate fi refolosita (in cazul refolosirii cheii, mecanismul de cifrare este usor de spart).
2.2 Utilizarea practica a cifrurilor bloc
Unele din metodele de cifrare pot cifra doar blocuri de lungime fixa (de ex. 64, 128 sau 256 de biti). Exista cateva metode standard de utilizare a unui astfel de cifru pentru a cifra o cantitate arbitrara de text:
ECB - Electronic Code Book: Textul clar se imparte in blocuri de lungime egala cu blocul folosit de algoritmul de cifrare. Ultimul bloc se completeaza cu biti aleatori. Fiecare bloc se cifreaza apoi independent de celelalte.
Este metoda cea mai simpla, dar are cateva dezavantaje:
pentru o cheie fixata, un fragment de text clar incepand de la o pozitie multiplu de lungimea blocului se cifreaza totdeauna la fel; acest fapt poate permite atacuri cu text clar cunoscut daca exista fragmente de text clar care se repeta frecvent;
un intrus care permuta blocurile de text cifrat va obtine permutarea blocurilor corespunzatoare de text clar, chiar daca nu intelege nimic din textul cifrat. Desi este citat frecvent, acesta nu este propriu-zis un dezavantaj al metodei ECB: un algoritm de cifrare are ca scop pastrarea confidentialitatii mesajului, nu controlul integritatii.
CBC - Cipher Block Chaining: Ca si la ECB, textul clar se imparte in blocuri si ultimul bloc se completeaza cu biti aleatori. in plus, se alege un sir de biti aleatori de lungimea unui bloc; acesta se numeste vector de initializare. Vectorul de initializare se transmite separat sau se stabileste dupa o regula oarecare. Se efectueaza xor pe biti intre vectorul de initializare si primul bloc de text clar; rezultatul se cifreaza si se trimite. Apoi, se face xor intre fiecare bloc de text clar si blocul precedent de text cifrat, si rezultatul se cifreaza si se transmite destinatarului.
2.3 Numere aleatoare
Un sistem criptografic utilizeaza numere aleatoare, intre altele pentru generarea cheilor si pentru protocoale de autentificare de tip provocare-raspuns.
Spre deosebire de generatoarele de numere aleatoare pentru alte scopuri, generatoarele de numere aleatoare pentru scopuri criptografice este necesar sa fie imprevizibile, chiar pentru cineva care cunoaste metoda de generare si chiar o parte din numerele generate.
Metode folosite:
Generatoare fizice: utilizeaza un fenomen fizic destul de aleator (este similar aruncarii unui zar). Exemple: zgomotul termic pe un rezistor sau pe un semiconductor, dezintegrarea unei substante radioactive, curentii de aer formati in interiorul carcasei unui harddisc.
in lipsa unui generator fizic "adevarat", se utilizeaza actiunile utilizatorilor asupra tastaturii sau mouse-ului, incarcarea sistemului, sosirea pachetelor pe interfata de retea. Sunt necesare diverse prelucrari pentru a putea obtine din aceste surse un sir de numere aleatoare de calitate; de asemenea, trebuie ca cel putin o parte din sursele enumerate mai sus sa nu fie controlate sau observate de inamic.
Numere pseudoaleatoare: pentru alte aplicatii decat cele criptografice, se genereaza numere pseudo-aleatoare dupa urmatoarea schema: exista o variabila s care tine starea interna a generatorului. Cand aplicatia are nevoie de un numar aleator, numarul aleator este extras din starea interna: rt = f(st); de obicei se extrag o parte din biti. Apoi, starea interna este actualizata cu ajutorul unei functii care "amesteca" bine starea interna: st = g(st). Un astfel de generator se spune ca este generator de numere pseudoaleatoare.
Pentru a folosi un generator de numere pseudoaleatoarein scopuri criptgrafice este necesar sa fie indeplinite mai multe conditii:
1. Starea initiala (eng: seed) trebuie generata cu un generator fizic, altfel intreg sirul este previzibil;
2. Starea interna trebuie sa aiba un numar suficient de mare de biti pentru a rezista unui atac prin forta bruta;
3. Functiile f si g sa fie dificil inversabile, altfel cineva care ar obtine o parte din numerele din sir ar putea fi capabil sa afle restul sirului. De obicei este necesar de asemenea ca cineva care reuseste sa obtina (de exemplu, dintrun core dump) starea interna, sa nu fie capabil sa calculeze numerele ce au fost generate pana in acel moment.
2.4 Criptografie asimetrica (cu cheie publica)
Criptografia asimetrica presupune urmatoarele:
Cifrarea si descifrarea nu folosesc aceeasi cheie, ci folosesc chei diferite, in pereche. Vom avea m = ckc(p) si p = dkd(m).
Din cheia folosita la descifrare se poate genera usor cheia corespunzatoare pentru cifrare; transformarea inversa este insa foarte dificila: kc = f(kd), f bijectiva, si a calcula x = f (y) implica a verifica pentru aproape toate valorile posibile pentru x daca f(x) = y.
Gasirea lui p cunoscand doar m si kc este la fel de dificila ca si gasirea lui kd cunoscand kc
in aceste conditii, receptorul va genera o pereche kd, kc si va putea face publica kc. Emitatorul poate cifra un mesaj folosind kc, si numai posesorul lui kd il va putea descifra. De notat ca, daca se doreste comunicatie bidirectionala, este necesara cate o pereche de chei (kc,kd) pentru fiecare sens.
Nota:
Algoritmii criptografici asimetrici sunt mult mai lenti decat cei
simetrici; din acest motiv, comunicatia propriu-zisa se cifreaza de obicei cu o metoda simetrica, si doar cheia de cifrare (sau alte obiecte mici, impuse de protocoale de autentificare) se cifreaza folosind metode asimetrice.
3 Autentificarea originii si controlul integritatii
3.1 Functii de dispersie criptografice
O functie de dispersie (eng: hash function) este in general o functie h care asociaza unui sir de biti m de o lungime oricate de mare, o valoare intreaga intrun interval de forma [0, 2n) cu n fixat (sau echivalent, un sir de biti de lungime n); in plus, se cere ca pentru sirurile care apar in problema unde se foloseste functia de dispersie, doua siruri distincte sa nu aiba aceeasi valoare a functiei de dispersie cu probabilitate semnificativ mai mare de 2−n
De la o functie de dispersie criptografica se cere in plus:
1. dandu-se h(m), sa fie dificil de regasit m. Eventual, dificultatea sa se pastreze chiar in cazul cunoasterii unei parti din m.
2. dandu-se un sir m, sa fie dificil de gasit un al doilea sir, m = m astfel incat h(m) = h(m
3. sa fie dificil de gasit m = m cu h(m ) = h(m
De remarcat ca cele trei conditii sunt diferite, desi conditia 3 o include pe 2.
Exemple de functii: md5 (iesire 128 biti), sha1 (iesire 160 biti)
3.2 Autentificarea mesajelor
Pentru a putea trimite mesaje autentificate, trebuie ca fie emitatorul si
receptorul sa partajeze o cheie secreta k folosita intr-un algoritm simetric, fie emitatorul sa aiba o cheie secreta kd a carei cheie publica corespunzatoare kc sa o aiba receptorul.
intr-o prezentare simplificata, emiterea de mesaje autentificate merge pe una din schemele (m desemneaza mesajul de trimis, h desemneaza o functie de dispersie criptografica:
Emitatorul trimite (m, s), unde s = ck(h(m)); receptorul primeste (m, s) si verifica daca s = ck(h(m)).
Mai adesea, se foloseste o varianta in care functia de dispersie criptografica inglobeaza si cifrarea; o asemenea functie se numeste cod de autentificare (eng: hash message authentication code - HMAC). in varianta aceasta, emitatorul calculeaza s = hk(m), unde hk este functia cod de autentificare cu cheia k; el trimite (m, s). Receptorul primeste (m, s) si verifica daca s = hk(m).
Presupunand ca functia de cifrare a unui sistem asimetric este si surjectiva (pe o multime cunoscuta), emitatorul calculeza s = dkd(h(m)) si trimite (m, s). Receptorul primeste (m, s) si verifica daca ckc(s) = h(m).
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1141
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved