Funcția Hash

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Rezultatul primelor patru octeți ai SHA-1 hash funcția .

Funcția funcție hash sau hash produce o secvență de biți, numită digest, (sau un șir de caractere) care este strâns legată de datele de intrare. Cuvântul provine din termenul englezesc hash, de la verbul a hash, sau să taie, să te pui, care desemnează inițial un perișoare din resturi de carne și legume; prin extensie, acesta indică un compus eterogen care este dat o formă incertă: „Pentru a face un hash de ceva“ înseamnă, de fapt, pentru a crea confuzie, sau de a face ceva destul de grav.

În informatică

Într -un limbaj matematic și de calculator, hash este un non-inversabilă funcție care mapează un șir de lungime arbitrară într - un șir de lungime predefinită. Există numeroși algoritmi care implementează funcții hash cu proprietăți particulare care depind de aplicație.

În aplicații criptografice , de exemplu, funcția de distribuire este necesar să aibă următoarele proprietăți:

  • rezistență la preimage: este greu de rezolvat pentru a căuta computationally un șir de intrare , care oferă un hash egal cu un anumit hash;
  • rezistență la cea de a doua pre-imagine: este greu de rezolvat pentru a căuta computationally un șir de intrare , care oferă un hash egală cu cea a unui șir dat;
  • rezistență la coliziune: este greu de rezolvat pentru a căuta computațional pentru o pereche de șiruri de intrare care dau același hash.

În aplicații de baze de date funcția hash este utilizată pentru a crea o anumită structură de date numită tabel hash . În această aplicație, nu sunt necesare proprietăți criptografice și, în general, singura proprietate necesară este că nu există hashuri mai probabile decât altele.

Hash uniform uniform

Hash uniform simplu este definit ca tipul Hash în care extragerea elementelor în U este aleatoare, iar funcția hash

h: U → {m}

scoate cheia cu probabilitate

În aceste condiții, căutarea cheii va avea o complexitate constantă O (1).

Algoritm Hash

Algoritmul hash procesează orice cantitate de biți (în informatică se spune că procesează date „brute”). Este o familie de algoritmi care îndeplinește aceste cerințe:

  1. Algoritmul returnează un șir de numere și litere pornind de la orice flux de biți de orice dimensiune (poate fi un fișier, dar și un șir). Ieșirea se numește Digest.
  2. Algoritmul nu este inversabil, adică nu este posibilă reconstituirea documentului original pornind de la șirul returnat în ieșire sau este o funcție unidirecțională , această din urmă caracteristică nu este esențială dacă utilizați hashuri pentru a verifica erorile din date transferuri, unde orice funcții de criptare pot fi efectuate în alte zone ale protocolului.

Hash și coliziuni

Nu există nici-unu la unu corespondență între hash și textul. Deoarece posibile texte, cu o mai mare dimensiune finită decât hash, sunt mai mult decât posibilele hash, din cauza principiului sertar, cel puțin un hash va corespunde cu cât mai multe texte posibil. Atunci când două texte produc același hash, aceasta se numește o coliziune, iar calitatea unei funcții hash este măsurată direct de dificultatea de a identifica două texte care generează o coliziune. Pentru a descuraja utilizarea algoritmilor de hashing considerați anterior siguri, a fost de fapt suficient ca un singur grup de cercetători să genereze o coliziune. Aceasta este ceea ce sa întâmplat , de exemplu , pentru Snefru , MD2 , MD4 , MD5 și SHA-1 algoritmi .

Un hash securizat criptografic nu ar trebui să permită revenirea înapoi, într-un timp comparabil cu utilizarea hash-ului în sine, la un text care îl poate genera.

Aplicații

Hash și criptare

Pictogramă lupă mgx2.svg Același subiect în detaliu: hash criptografic Funcție .

Lungimea valorilor hash variază în funcție de algoritmii utilizați. Valoarea cea mai frecvent adoptată este de 128 de biți , care oferă o bună fiabilitate într - un spațiu relativ mic. Cu toate acestea, ar trebui remarcată posibilitatea utilizării hashurilor de dimensiuni mai mari (SHA, de exemplu, poate oferi și șiruri de 224, 256, 384 și 512 biți) și hash-uri mai mici (care, totuși, sunt puternic descurajate).

Funcțiile hash joacă un rol esențial în criptografie : acestea sunt utile pentru verificarea integrității unui mesaj, din moment ce executarea algoritmului pe textul chiar și modificat minimal oferă un mesaj complet diferit digest decât cea calculată pe textul original, dezvăluind tentativa de modificare.

Funcțiile hash pot fi de asemenea folosite pentru crearea de semnături digitale , deoarece acestea permit crearea rapidă a semnăturii chiar și pentru fișiere mari, fără a necesita mult timp si calcule complexe: este , de fapt , computațional mai convenabil pentru a rapid hash textul să fie semnul , și apoi se autentifică doar că, evitându -se astfel executarea complexe de criptare asimetrice algoritmi pe cantități foarte mari de date.

Semnătura digitală este definită ca Digest a unui document care este apoi criptat cu o cheie privată (și nu cu cel public, așa cum se întâmplă de obicei). Semnătura digitală este singurul caz în care utilizarea cheilor este inversată: cheia publică este utilizată pentru a decripta semnătura și apoi pentru a găsi rezumatul inițial prin hash, în timp ce cheia privată este utilizată pentru a cripta un șir în loc să îl deschidă .

O altă utilizare a funcțiilor hash apare în derivarea cheilor din parole sau fraze de trecere : pornind de la o valoare de intrare arbitrară (un șir sau o matrice mare) se derivă într-un mod sigur criptografic (adică nu este posibil să se scurteze calculul cu unele comandă rapidă) o dimensiune a cheii potrivită pentru criptare. Este greu de necesar să spunem, totuși, că , dacă nu sunt luate măsuri adecvate de combatere (cum ar fi utilizarea unei sări criptografic ), utilitatea acestei proceduri este exclusiv practic: de fapt, securitatea cheii derivate este echivalentă cu cea a intrării în scopul unui atac de dicționar . Pe de altă parte, este cu siguranță mai confortabil pentru o ființă umană să-și amintească un șir mai degrabă decât o secvență numerică lungă.

Securitatea funcțiilor hash

În contextul funcțiilor hash, ne referim la mai multe concepte de securitate:

  • Slab de securitate: dat un mesaj M, este computațional „dificil“ pentru a găsi un al doilea mesaj M „astfel încât h (M) = h (M“).
  • Puternică de securitate: este computațional "dificil" pentru a găsi o pereche de mesaje M, M 'astfel încât h (M) = h (M').

Aceste două concepte de securitate se disting, de asemenea, datorită efectelor pe care le pot produce dacă sunt lipsite de ele: de exemplu, în ceea ce privește posibilitatea de a face o semnătură digitală, un algoritm care nu garantează o securitate puternică, dar slabă, ar fi totuși util deoarece mesajul M nu poate fi „verificat” și, prin urmare, ar trebui găsit un al doilea mesaj M 'cu aceeași funcție hash, ceea ce ar fi dificil de calcul.

Hash și baze de date

Puteți utiliza funcții hash pentru a crea un tabel hash , care este o structură de date foarte eficient pentru operațiunile de căutare. Tabelul hash conține date asociate cu o cheie de căutare și este adesea utilizat în bazele de date pentru a indexa elementele care vor fi căutate. Această tehnică (numită hashing) vă permite să creați funcții de căutare care să poată localiza elementul dorit într-un timp constant, independent (cel puțin teoretic) de numărul de elemente prezente în index.

Protecție împotriva erorilor

Utilizarea funcțiilor hash pentru a găsi erori în transmisii este foarte frecventă. Funcția hash este calculată de către expeditor din date și valoarea acesteia este trimisă împreună cu datele. Receptorul calculează din nou funcția hash și, dacă valorile hash nu se potrivesc, a apărut o eroare în timpul transmisiei. Această metodă permite o mai bună verificare a integrității datelor decât mai tradiționale de control .

Informatică criminalistică

Algoritmi hash, în special , SHA1 și MD5 , sunt utilizate pe scară largă în calcul medico - legale pentru a valida și într -un fel digital „semn“ datele achiziționate, de obicei , copii medico - legale . De fapt, legislația recentă impune un lanț de custodie care permite păstrarea descoperirilor IT de la orice modificări ulterioare aduse achiziției: prin codurile hash este posibil în orice moment să se verifice dacă ceea ce a fost găsit a rămas neschimbat în timp. Dacă codurile hash se potrivesc, ambele părți într-o procedură judiciară au certitudinea rezonabilă că lucrează la aceeași versiune a constatărilor, asigurând astfel uniformitatea analizei și, în general, a rezultatelor. Rezultatele codului Hash sunt acum calculate în mod implicit de majoritatea software-ului de captură criminalistică și atașate copiilor criminalistice salvate.

Lista hashurilor și a documentelor conexe

Notă

  1. ^ RFC1319 - Cu privire la MD2 Message-Digest Algorithm
  2. ^ RFC1320 - MD4 Message-Digest Algorithm
  3. ^ RFC1321 - MD5 Message-Digest Algorithm
  4. ^ RFC1810 - Raport privind MD5 de performanță
  5. ^ RFC1828 - autentificare IP folosind Keyed MD5
  6. ^ MDC-2 - Codul de detecție a modificării
  7. ^ FIPS PUB 180-1 - SECURE HASH STANDARD
  8. ^ RFC3174 - US Secure Hash Algorithm 1 (SHA1)
  9. ^ RFC1852 - Autentificare IP utilizând Keyed
  10. ^ DFIPS PUB 180-2 - SECURE HASH STANDARD
  11. ^ RIPEMD-160 Acasă Pagina
  12. ^ Rapid criptare Stream și hashing cu PANAMA, de J.Daemen, C.Clapp Filed 06 iulie 2001 în Internet Archive .
  13. ^ Tiger: Un nou Rapid Hash Funcție Tiger Prima pagină
  14. ^ RFC1950 - Format ZLIB comprimat de date pentru versiunea 3.3
  15. ^ (Atenție: HMAC nu este într - adevăr o funcție hash, deoarece nu numaiplaintext este obligată să - l execute, dar , de asemenea , o cheie de algoritmi hashingul necesită un singur parametru de intrare.)
  16. ^ FIPS PUB 198 - Message Cod de autentificare Keyed-Hash (HMAC)
  17. ^ RFC2104 - HMAC: Keyed hashingul pentru autentificare Mesaj
  18. ^ RFC2202 - cazuri de testare pentru HMAC-MD5 si HMAC-SHA-1
  19. ^ RFC2286 - cazuri de testare pentru HMAC-RIPEMD160 și HMAC-RIPEMD128
  20. ^ RFC2085 - HMAC-MD5 autentificare IP cu Prevenire Replay
  21. ^ RFC2403 - Utilizarea HMAC-MD5-96 în cadrul ESP și AH
  22. ^ RFC2404 arhivării 09 februarie 2005 la Internet Archive . - Utilizarea HMAC-SHA-1-96 în ESP și AH
  23. ^ RFC2857 - Utilizarea HMAC-RIPEMD-160-96 în cadrul ESP și AH

Elemente conexe

linkuri externe

  • (RO) definiția în limba engleză a termenului , pe dictionary.cambridge.org. Adus de 07 noiembrie 2005 (arhivate din original la 13 martie 2007).
  • (RO) Hash'em toate! , pentru a calcula hash-ul șirurilor și fișierelor online
  • Hash Generator Alte Online Hash Generator, are unele funcții hash cum ar fi MD2, MD4, MD5, SHA1, Snefru, tigru, Haval, ripemd, jacuzzi și printre altele. Aproximativ 118 algoritmi diferiți
  • Funcții Hash cu PHP [ Link rupt ], pe Segnazionit.org.
  • Calculul gratuit hash și programul de verificare , pe ocr.altervista.org. Adus de 15 aprilie 2010 (arhivate de original pe 07 mai 2010).
  • Checksums Calculator aplicație gratuită pentru calcularea și verificarea funcțiilor hash pentru Windows, Linux și Mac OS X.