Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
AMPRENTA DIGITALA
Amprenta digitala[1] reprezinta rezultatul procesului numit amprentare digitala. Rezultatul acestui proces, denumit de asemenea și hash, este o reprezentare numerica, rezumativa, de dimensiune fixa, a datelor pentru care s-a dorit generarea amprentei. Amprenta digitala tinde sa identifice unic conținutul datelor amprentate, astfel incat pentru doua serii de date diferite prin conținutul lor, rezultatul amprentei ar trebui sa fie de asemenea diferit. Relativ la funcția utilizata pentru generarea amprentei, rezultatul, indiferent de marimea datelor pentru care se dorește amprentarea, trebuie sa fie de lungime fixa. Mai exact, marimea unei amprente nu este direct dependenta de marimea conținutul amprentat, ci de algoritmul folosit pentru amprentare.
Caracteristica fundamentala a amprentei digitale, care contribuie la protecția și siguranța datelor este:
Integritatea
asigura utilizatorul datelor de faptul ca, de la momentul
amprentarii datelor, conținutul acestora nu s-a schimbat pe parcurs,
și nu a fost alterat voit sau nu.
Integritatea datelor se poate verifica de catre un utilizator oarecare, prin regenerarea amprentei conținutului avut, prin comparație cu o amprenta știuta inițial (eventual furnizata de catre emitentul datelor respective), folosind aceeași funcție de amprentare ca si emitentul care furnizeaza semnatura.
PROPIETAȚI ALE AMPRENTELOR DIGITALE
COLIZIUNEA
Dupa prezentarea de mai sus, știm ca pentru doua serii diferite de date, aceeași funcție de amprentare ar trebui sa aiba rezultate diferite atata timp cat conținutul difera. Din punct de vedere probabilistic, acest lucru nu este posibil, atata timp cat funcția de amprentare este definita pe o mulțime infinita si are valori intr-un interval finit de numere. Mai exact, nu este posibil acest lucru, cat timp rezultatul funcțiilor de amprentare este de lungime fixa, deși conținutul - inputul funcției - este de lungime variabila. Aceasta cauza a determinat apariția uneia dintre cele mai importante proprietați ale funcțiilor de hashing si anume coliziunea.
Coliziunea reprezinta deci o proprietate negativa a funcțiilor de hashing prin care acestea pot avea același rezultat (aceeași amprenta, același hash) pentru doua inputuri diferite. Altfel spus, pot genera aceeași amprenta pentru cel puțin doua serii de date diferite.
Deși aceasta proprietate este ușor deductibila, mai ales pentru amprentele digitale de dimensiune mica, diferiți algoritmi de amprentare evita prin diverse mecanisme pe cat posibil coliziunea amprentelor, facand astfel diferențierea intre algoritmi buni si mai puțini buni.
O propietate care transcende din cea prezentata mai sus este rezistența la coliziune. O funcție este considerata rezistenta la coliziune daca nu se pot gasi ușor doua serii de date pentru care amprenta generata de aceasta funcție sa fie aceeași.
INDEPENDENȚA FAȚA DE CONȚINUT
Preimage resistance
Amprentele digitale nu trebuie sa ofere indicii despre conținutul amprentat, din nici un punct de vedere. O consecința a acestui lucru este faptul ca amprentele digitale sunt de dimensiune fixa indiferent de dimensiunea conținutului.
Indiferent de dimensiunea sau forma conținutului (chiar daca este mai mic decat amprenta acestuia in sine) funcția de amprentare nu trebuie sa conțina sub-parți din conținutul amprentat, sau conținutul in sine. De asemenea, pentru anumite date clasice, cum ar fi date ce conțin numai zero-uri (zeroed-out data), sau date ce conțin numai același caracter, conținutul amprentei nu trebuie sa fie deductibil.
Numim aceasta propietate a amprentelor digitale independența fața de conținut. Termenul sub care mai este intalnita aceasta propietate este de Preimage resistance.
EFECTUL DE AVALANȘA
Relativ la propietatea de mai sus, survine si propietatea numita efect de avalanșa. Aceasta propietate presupune ca, pentru a nu dezvalui indicii legate de conținutul amprentat, amprenta digitala pentru doua serii de date similare, cu deosebiri minore, sa fie total diferita. Mai exact, orice schimbare minora in cadrul unor date amprentate inițial, sa rezulte in generarea unei amprente total diferite, fara sa prezinte aspecte comune cu amprenta inițiala.
IREVERSIBILITATEA
O propietate caracterizanta a amprentelor digitale este ireversibilitatea. Aceasta presupune ca funcțiile care genereaza amprenta digitala sa fie one-way functions[2], mai exact sa nu poata exista o funcție inversa care sa regenereze conținutul amprentat pe baza amprentei rezultate. O funcție care nu respecta acest principiu, nu poate fi considerata funcție de amprentare, sau funcție-rezumat, mai mult decat o funcție care cifreaza conținutul.
Insa, o data ce principiul independenței fața de conținut, prezentat mai sus, este respectat, iar amprenta rezultata este de dimensiune fixa, independenta de conținutul pentru care se dorește generarea ei, ireversibilitatea acelei funcții este inevitabila.
Pentru o exemplificare a acestor proprietați, a se consulta figura 1. in care este ilustrata amprentarea folosind algoritmul SHA1.
Scopul respectarii acestor proprietați este de a nu permite unui terțe persoane de a modifica conținutul amprentat, fara a modifica si amprenta acestuia. Spre exemplu, pentru un destinatar, documentul este considerat ca fiind cel original, trimis de emitent, daca semnatura specificata de acesta din urma este identica cu cea generata de el. In concluzie, modificarea semnaturii de catre un intrus, ar putea afecta propietatea de baza a amprentelor digitale, si anume integritatea.
FUNCȚII DE AMPRENTARE DIGITALA
Așa cum a fost enunțat anterior, funcțiile de amprentare digitala sunt acele funcții care implementeaza un algoritm specific, și au ca scop generarea unei amprente sau hash, reprezentand outputul funcției, pe baza unor date de intrare, reprezentand inputul funcției. Aceste funcții mai se intalnesc și sub denumirea de funcții hash, funcții rezumat sau funcții checksum, iar rezultatul acestora mai poarta numele de hash, rezumat, message digest sau checksum. Toți acești termeni sunt folosiți ca sinonim pentru funcția de amprentare și respectiv amprenta digitala.
Funcția de amprentare este doar o implementare informatica, formala, a algoritmului matematic de hashing. Drept urmare, funcția de amprentare poarta intotdeauna același nume ca și algoritmul matematic care il implementeaza.
TIPURI DE ALGORITMI HASH
Exista doua tipuri de algoritmi de amprentare:
Criptografici
Non-criptografici
Algoritmii criptografici sunt construiți pe baza unor principii similare cu algoritmii folosiți in crearea de criptograme. Ca drept urmare, aceștia sunt mult mai puternici atunci cand vine vorba de respectarea proprietaților definite mai sus: coliziunea, independența fața de conținut, efectul de avalanșa si ireversibilitatea.
Algoritmii non-criptografici sunt de regula algoritmi lineari si sunt construiți pentru a respecta condiții mult mai slabe decat cei criptografici, bazandu-se de cele mai multe ori pe proprietați matematice ale diferitor operații pentru a avea rezultate cat mai bune. Algoritmii non-criptografici nu respecta cu aceeași strictețe proprietațile funcțiilor de amprentare asemeni algoritmilor criptografici, fiind considerați nesiguri din acest punct de vedere, insa sunt utili in calcularea rapida a unei amprente digitale, in vederea detectarii integritații datelor. O serie de numeroasa de algoritmi non-criptografici, folosiți pentru validarea datelor transmise prin diferite medii electronice de comunicație sau stocare a datelor, o reprezinta familia de algoritmi CRC - Cyclic Redundancy Check.
EXEMPLE DE ALGORITMI
Algoritmi criptografici:
MD5
Construit de Ronald Rivest in 1991, pentru a inlocui predecesorul sau MD4
din 1990 creat de același autor. MD5 este folosit pe scara larga
ca algoritm de amprentare criptografic și a devenit un standard pentru
comunicațiile pe internet și pentru multe din aplicațiile al
caror scop implica securitatea si protecția datelor. Implementarea
algoritmului MD5 este descrisa prin RFC 1321[3].
Ronald Rivest a fost de asemenea unul din autorii celebrului algoritm de
criptare cu cheie asimetrica RSA. Semnatura MD5 este de 128 biți ca
marime.
SHA
Numele reprezinta un acronim
pentru Standard Hash Algorithm, care
a fost publicat pentru prima data in 1993 de catre NIST (National Institute of Standards
and Technology). Aceasta prima versiune a purtat numele de SHA-0, urmate
mai apoi de versiunile SHA-1 și SHA-2. SHA-2 reprezinta insa o familie de algoritmi de hashing,
deoarece pot genera amprente de diferite dimensiuni pe baza aceluiași
algoritm comun. Astfel, acești algoritmi au ca postfix marimea in
biți a amprentei rezultate, dupa cum urmeaza: SHA-224, SHA-256,
SHA-384 și SHA-512.
WHIRLPOOL
Numele de Whirpool provine de la numele unei galaxii
situata la aproximativ 31 milioane de ani lumina in constelația
Canes Venatici. Autorii acestui algoritm sunt Rijmen Vincent, care de asemenea
a contribuit la crearea Advanced
Encription Standard - AES, și Paulo Barreto, fiind prezentat pentru
prima oara in anul 2000.
Marimea amprentei generate de Whirlpool este de 512 biți.
TIGER TREE HASHING
Numit prescurtat TTH, sau pur și simplu Tiger, a fost construit in anul 1995 de catre Ross Anderson și Eli Biham pentru o eficiența imbunatațita pe platformele de 64 biți. Marimea amprentei rezultate este de 192 biți, dar pentru compatibilitați cu anumite protocoale se folosesc si amprente trunchiate din cea originala de 128 si respectiv 160 biți, rezultand denumirile de: Tiger-128, Tiger-160 si respectiv Tiger-192.
Alți algoritmi demni de menționat mai sunt: Ripemd, Haval, Skein, Radio Gatún.
Algoritmi non-criptografici:
ADLER-32
Este un algoritm de amprentare inventat de Mark Adler, care are ca scop rapiditatea. Comparat cu un algoritm similar, și care genereaza o amprenta de exact aceeași dimensiune, algoritmul Adler-32 renunța la fiabilitatea și siguranța rezultatului in favoarea vitezei generarii acestuia. Adler-32 este construit pe baza algoritmului Fletcher, fiind sensibil mai fiabil decat Fletcher-16 si mai puțin fiabil decat Fletcher-32. Amprenta generata de acest algoritm este de 32 biți, dupa cum sugereaza si postfixul denumirii acestuia.
FLETCHER
Creat de J. G. Fletcher,
reprezinta un algoritm similar cu Adler-32, și exista in
doua forme: Fletcher-32, si Fletcher-16.
CRC
CRC (cyclic redundancy check)
reprezinta o familie de algoritmi non-criptografici specifici, care
genereaza amprente de diferite dimensiuni, cuprinse intre 1 si 64
biți, și al caror scop este verificarea integritații
datelor, construite numai pentru a detecta erori in cadrul unor operații
ce implica transmisii sau stocari de date, și nu confera
aceeași siguranța și incredere ca și algoritmele
criptografice, care sunt aplicabile intr-un spectru mult mai larg.
In figura 2. se pot observa teste efectuate asupra mai multor algoritmi de amprentare (si nu numai), in detaliu amanunțit, iar in figura se poate observa o comparație detaliata intre algoritmii de amprentare criptografici și cei non-criptografici.
Copyright © 2024 - Toate drepturile rezervate