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ă numeroase 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, proprietatea este necesară numai că nu există mai probabil decât hashes altele.

Hash uniformă simplă

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 tastei va avea O complexitate constantă (1).

algoritmul Hash

Algoritmul hash procesează orice cantitate de biți (în știința calculatoarelor se spune că prelucrează 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 bitstream de orice dimensiune (acesta poate fi un fișier, dar, de asemenea, un șir de caractere). Ieșirea se numește Digest.
  2. Algoritmul nu este inversabilă, adică nu este posibil de a reconstitui documentul original pornind de la șirul care este returnat în ieșire sau este o funcție unidirecțională , acesta din urmă caracteristică nu este esențială dacă utilizați hash - uri pentru a verifica dacă există erori în datele transferuri, în cazul în care 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 de algoritmi de hashing considerate anterior în condiții de siguranță, a fost, de fapt, suficient pentru un singur grup de cercetători pentru a genera o coliziune. Aceasta este ceea ce sa întâmplat , de exemplu , pentru Snefru , MD2 , MD4 , MD5 și SHA-1 algoritmi .

Un hash criptografic securizat nu ar trebui să permită să se întoarcă, într-un timp comparabil cu utilizarea hash în sine, într-un text care 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, posibilitatea utilizării hashes de dimensiuni mai mari (SHA, de exemplu, poate oferi, de asemenea șiruri de 224, 256, 384 și 512 biți) și hashes mai mici (care, totuși, este nerecomandată) Trebuie notat.

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 este inversată utilizarea tastelor: cheia publică este folosită pentru a decripta semnătura și apoi găsi inițial de digestie prin hash, în timp ce cheia privată este utilizată pentru a cripta un șir în loc de a - l deschide .

O altă utilizare a funcțiilor hash se produce în derivarea cheilor de parole sau passphrases: pornind de la o valoare de intrare arbitrară (un șir sau o gamă largă) una derivă în mod criptografic securizat (adică nu este posibilă scurtarea calculului cu unele comandă rapidă) o dimensiune cheie adecvată 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ță mult mai confortabil pentru o ființă umană să-și amintească un șir de caractere, mai degrabă decât o secvență de numere 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 datorită efectelor pe care le pot produce în cazul în care sunt fără 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, un al doilea mesaj M „cu aceeași funcție hash ar trebui să fie găsite, 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 sunt capabili de a localiza elementul dorit într-un timp constant, independent (cel puțin teoretic) din numărul de elemente prezente în index.

Eroare de protecție

Utilizarea funcțiilor hash pentru a găsi erori în transmisii este foarte frecvente. Funcția hash este calculată de către expeditor din datele și valoarea sa este trimis împreună cu datele. Receptorul calculează funcția hash din nou, iar 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ă de Medicină Legală

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 IT găsește la orice modificări ulterioare achiziției: prin codurile hash este posibilă în orice moment, pentru a verifica dacă ceea ce se găsește a rămas neschimbat în timp. În cazul în care codurile hash se potrivesc, ambele părți într-o procedură judiciară au certitudinea rezonabilă că acestea lucrează la aceeași versiune a descoperirilor, asigurându-se astfel uniformitatea de analiză și, în general, a rezultatelor. Rezultatele de cod Hash sunt acum calculate implicit de cele mai multe software-ul de captare medico-legale și atașate la copiile medico-legale salvate.

Lista de hashes ș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 cadrul 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 de siruri de caractere și fișiere 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. Despre 118 algoritmi diferite
  • 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.