Ce este Hash criptografic? [un ghid pentru începători]
Publicat: 2019-08-07Cuprins
Ce este un hash criptografic?
Hash criptografic explicat
Proprietăți ale funcției Hash criptografice
Algoritmi Hashing obișnuiți
Hashing în criptomonede
Funcții Hash în stocarea parolei
Învelire
Șansele sunt, în ziua în care dvs. și prietenii dvs. ați creat un cod pentru a vă transmite reciproc mesaje pe care nimeni altcineva nu le-ar putea înțelege. Cel puțin cunoșteai oameni de genul asta.
Unii tipi de genul ăsta au luat acest joc în serios și au transformat-o într-o carieră.
Alții au devenit magi - așa-numiții mentaliști. Cu ajutorul codurilor, ei își folosesc „puterile mentale” pentru a ghici cărți, numere etc.
Simplul joc pentru copii a devenit ceea ce este cunoscut sub numele de criptare, hash și toate celelalte funcții, care produc cod aparent ilizibil dintr-o intrare dată.
Astăzi ne vom scufunda în lumea magică a codării pentru a vedea ce este un hash criptografic , funcționarea sa interioară și aplicațiile sale.
Deci, fără alte întrebări, să sărim direct.
Ce este un hash criptografic?
Funcția hash criptografică este un tip de funcție hash utilizat în scopuri de securitate . Are mai multe proprietăți care îl disting de cea necriptografică. Să o descompunem pas cu pas.
Ce este un hash?
Hashing-ul este metoda utilizată pentru comprimarea datelor.
Totuși, nu este compresia tipică pe care o știe toată lumea, ca un fișier .zip sau .rar.
Hashing creează un cod pentru date folosind un algoritm hash . Codul reprezintă un șir de caractere, care acționează ca o „amprentă digitală” a fișierului respectiv.
Știm cu toții amprentele digitale sunt mici, dar conțin o cantitate masivă de date. Știi, lucruri precum numele, fețele, adresele și alte informații sensibile. Hashing este similar - ia o bucată de date de dimensiuni arbitrare și o transformă într-o secvență relativ mică de caractere.
Indiferent de dimensiunea intrării, obțineți întotdeauna o ieșire cu lungime fixă atunci când se face hashing.
Exemple de funcții Hash
Iată un exemplu despre cum se întâmplă acest lucru. Pentru această demonstrație, vom folosi algoritmul securizat de securizare pe 256 de biți , cunoscut sub numele de SHA-256. Este unul dintre cei mai comuni algoritmi de hash și, după cum se dovedește, este folosit și de Bitcoin .
Mesaj | Hash al mesajului |
Salut | 3639EFCD08ABB273B1619E82E78C29A7DF02C1051B1820E99FC395DCAA3326B8 |
Bine ați venit la TechJury | B7FFC27E0A6F559E1F63A927B6132A42124CC790F9EFD0FCFF4C3B653AA0DF4B |
(Conținutul întregului articol) | 9247D0E6C7A2A45976DCC3D2393A52658B6DDFC846d8AF5743400EA12FB9DE74 |
Vezi, deși mesajele au lungimi diferite, toate primesc un hash de 64 de caractere. Acest lucru este, de asemenea, cunoscut ca o valoare hash sau un rezumat .
Veți obține același rezultat de durată fixă dacă aveți o carte sau chiar conținutul unei biblioteci întregi. Puteți face acest lucru și cu alte tipuri de date - videoclipuri, imagini etc.
Ce este grozav la hash este că veți obține o valoare de hash complet diferită chiar dacă faceți cea mai mică dintre modificări . Este cunoscut sub numele de efect de avalanșă .
Deci, dacă prietena / iubitul tău șterge toate imaginile pe care le ai cu fostul tău, de exemplu, hash-ul folderului se va schimba. În acest fel, veți ști ceva în neregulă fără a verifica fiecare imagine.
Să vedem încă un exemplu al modului în care o funcție hash este utilă în practică. Pentru următorul exemplu, am analizat „ Ce este un VPN? ”Articol și arată astfel:
Apoi am șters un cuvânt din articol și l-am scos din nou. Iată rezultatul:
Eliminarea unui singur cuvânt a schimbat complet valorile hash . Acest lucru este util mai ales dacă doriți să verificați dacă au fost aduse modificări unui fișier.
Este și mai util atunci când aveți de-a face cu cantități mari de informații. De exemplu, un blockchain de criptomonede care stochează zilnic mii de tranzacții.
Acum să ne scufundăm mai adânc și să vedem ce înseamnă cu adevărat hashul criptografic .
Hash criptografic explicat
Când aveți nevoie de securitate și confidențialitate, hash-ul criptografic intră în joc. Dezavantajul hashului criptografic este că este de obicei mai lent decât celelalte tipuri de hash . Dacă aveți nevoie de hash rapid și nu aveți nevoie de securitate la nivel înalt - hash non-criptografic este mai bun. De exemplu - dacă creați un index al unor date nesensibile.
Principala diferență între hash non-criptografic și criptografic este că acesta din urmă este extrem de dificil de rupt. Observați că nu este imposibil. Totuși, hashul criptografic face ca crack- ul să fie aproape imposibil.
Pentru ca o funcție hash să fie un hash criptografic, trebuie să aibă mai multe proprietăți.
Proprietăți ale funcției Hash criptografice
Dacă doriți să utilizați hashing în scopuri criptografice, există mai multe cerințe pe care funcția hash trebuie să le îndeplinească pentru a fi considerate sigure.
Proprietatea nr. 1 - Viteza
Dacă vă plac cuvintele fanteziste - funcțiile hash criptografice ar trebui să fie eficiente din punct de vedere al calculului. Asta înseamnă că funcția de hash trebuie să poată produce un hash într-o fracțiune de secundă .
Sursă
Proprietatea # 2 - Efectul avalanșă
Efectul de avalanșă înseamnă că chiar și o modificare minoră a mesajului va duce la o schimbare majoră a valorii hash .
Mesaj | Hash al mesajului |
Bine ați venit la TechJury | B7FFC27E0A6F559E1F63A927B6132A42124CC790F9EFD0FCFF4C3B653AA0DF4B |
Bine ați venit la Techjury | 66251AE6324F670BF988465E49B9CEAA2F8C4E72E1D61336D3794301116C092B |
Utilizarea unui „j” cu litere mici în al doilea mesaj modifică complet codul hash .
Acesta este un exemplu simplu de funcție hash , dar îți vine ideea. Este foarte practic și poate arăta rapid dacă au fost modificate date.
Proprietatea # 3 - Funcția Hash criptografică ar trebui să fie determinantă
Asta înseamnă că, indiferent de câte ori utilizați o funcție hash pentru aceeași intrare , veți obține întotdeauna aceeași ieșire . Acest lucru este evident, deoarece dacă aveți hashuri aleatorii pentru același mesaj, întregul proces nu ar avea sens.
Proprietatea # 4 - Rezistența pre-imagine (funcție unidirecțională)
Aceasta înseamnă că este foarte greu să ajungi la intrare prin ieșire.
În cuvinte simple, nu puteți inversa funcția hash criptografică pentru a accesa datele. Totuși, acest lucru nu înseamnă că este imposibil să vezi mesajul.
Uite care-i propunerea.
Există două metode de a găsi mesajul hash.
- Pentru a compara hash-ul cu o listă existentă de hash-uri, ca aceasta: Dehash.me. De obicei, infractorii cibernetici au propriile baze de date cu mesaje traduse (dezangajate).
- Pentru a executa un atac cu forță brută.
Pentru a sparge un hash cu forță brută, trebuie să alegeți un mesaj, să-l hash și să-l comparați cu hash-ul pe care îl aveți. Cel mai bun scenariu - îl obțineți de la prima încercare. Totuși, șansele ca acest lucru să se întâmple sunt extrem de mici.
Cel mai prost scenariu - îl găsiți din ultima încercare. Asta înseamnă că trebuie să hashează toate mesajele posibile și să le compare cu cel pe care îl ai. Numărul este diferit, în funcție de algoritmul hash .
De exemplu, să folosim SHA-256. În acest caz, ar trebui să găsiți 2 256 -1 valori hash mai întâi. Sigur să spun că nu se poate face în mai multe vieți și lăsați-l la fel.
Acum.
Proprietatea de rezistență pre-imagine a hash-ului criptografic joacă un rol semnificativ în dezbaterea de hashing vs. criptare .
Vedeți - puteți decripta un mesaj criptat, dar nu puteți face același lucru pentru un hash criptografic .
Vă puteți gândi la hash ca la un smoothie. Nu puteți extrage mesajul dintr-un hash în același mod în care nu puteți extrage banana și laptele dintr-un smoothie.
Criptarea, pe de altă parte, seamănă mai mult cu un seif. Vă protejează obiectele de valoare, dar există întotdeauna o cheie care îl deschide.
Proprietatea # 5 - Rezistență la coliziune
Asta înseamnă că două mesaje diferite nu ar trebui să poată produce aceeași valoare hash . Din punct de vedere matematic, acest lucru este oricum imposibil.
Știți deja că valorile hash au o lungime fixă. Asta înseamnă că există combinații limitate de ieșire . Intrările, pe de altă parte, sunt un număr infinit . Deci, în teorie, există șansa ca două mesaje diferite să producă aceleași hashuri .
Cu toate acestea, funcția hash din criptografie face ca șansele unei coliziuni hash să fie practic neglijabile.
Uite.
Toate aceste proprietăți asigură securitatea și utilizarea unui hash criptografic . Deci, este timpul să îndepliniți diferitele funcții hash criptografice.
Algoritmi Hashing obișnuiți
Există diferite clase (familii) de algoritmi hash. Diferența de bază dintre ele este valoarea hash pe care o produce fiecare și proprietățile sale de securitate.
Iată cele mai frecvent utilizate:
Algoritmul de rezolvare a mesajelor (MD)
MD5 a fost funcția hash de alegere pentru multe companii, dar a fost rupt în 2004. Un algoritm hash este considerat defect atunci când a avut loc o coliziune de succes sau un atac pre-imagine împotriva acestuia. Totuși, multe site-uri web folosesc în continuare funcția de hash MD5 pentru verificarea fișierelor.
De exemplu, atunci când descărcați un fișier, puteți compara hash-ul acestuia cu cel de pe site pentru a vă asigura că nimeni nu a manipulat-o.
Familia MD este formată din MD2, MD3, MD4, MD5 (toate acestea sunt rupte) și MD6 (ceea ce nu este atât de popular.)
Iată exemplul de funcție hash al MD5.
Mesaj | MD5 hash |
Techjury | FECE553512085FF6B5E213C8EFF9F30D |
MD5 produce o valoare hash pe 128 de biți cu lungimea de 32 de caractere.
Datorită defectelor sale, algoritmul Message Digest nu mai este considerat o funcție hash criptografică .
Algoritm securizat de ascundere (SHA)
Cea mai mare familie de funcții hash criptografice este formată din patru clase:
- SHA-0
- SHA-1
- SHA-2
- SHA-3
SHA-0 avea multe defecte și nu a fost utilizat pe scară largă. SHA-1 a încercat să le remedieze, dar s-a rupt în 2005.
SHA-2 și subclasele sale sunt utilizate în mod obișnuit astăzi până când SHA-3 se dovedește a fi o funcție și mai sigură.
Familia SHA-2 este formată din patru membri - SHA-224, SHA-256, SHA-384 și SHA-512, care diferă prin numărul de biți ai valorilor lor hash . Până în prezent, nu a existat un atac reușit asupra algoritmului hash criptografic SHA-2 .
Iată câteva exemple de funcții hash folosind clasa SHA-2.
Mesaj | Techjury |
SHA-256 | FF3E4985DAFF59392EAE60DEC66EC823CAF9575B81903729053A999B9B2C708E |
SHA-384 | 77653BC173A561E3378373F64E447FB3AEDC691F387BB599656E6AB63B9C5D34 523C298C59C94802A478F8C3F36E9CDF |
SHA-512 | C975F1074E969FAEA76C15084881F7694DE4D542F9E4DF934AFA52470952A362 25F7ED63D023AB05746DDAFDFED96D57A7AF5344EB91589A09952D102DD3AB04 |
RACE Integrity Primitives Evaluation Message Digest (RIPEMD)
Inițial, RIPEMD a fost creat pentru un proiect al Uniunii Europene numit RIPE. Există cinci funcții hash în familia RIPEMD.
- RIPEMD
- RIPEMD-128
- RIPEMD-160
- RIPEMD-256
- RIPEMD-320
În 2004 a avut loc o coliziune în funcția hash originală RIPEMD . De aceea nu mai este folosit. În prezent, RIPEMD-160 este cel mai frecvent. Iată cum arată:
Mesaj | RIPEMD-160 digest |
Techjury | ca25dc64fb00c8becb21eddf50805fbc106eed00 |
Whirlpool
Numele acestei funcții hash criptografice nu are nicio legătură cu producătorul aparatelor de uz casnic. Galaxia Whirlpool a inspirat numele algoritmului.
Ceea ce este interesant la algoritmul de hash Whirlpool este că unul dintre creatorii săi este Vincent Rijmen, co-creatorul AES, Advanced Encryption Standard .
Whirlpool este o funcție hash de 512 biți , iar rezumatul său reprezintă un șir cu 128 de caractere.
Acesta este un exemplu de funcție hash criptografică .
Mesaj | Whirlpool hash |
Techjury | 2E9A775FA4450549FCB6F6CDC4761865715D46FF8003E93CC614EF7C9E3D42A93 D5A663B4E48674C5155417D686D81ABDBC12FB32A1B650C5E44F24E80156E7D |
Aceștia sunt cei mai comuni algoritmi de hash în prezent.
Deci, acum că cunoașteți elementele de bază ale hashingului, să vedem aplicațiile sale în viața reală.
Hashing în criptomonede
Am explicat deja ce este Bitcoin și cum funcționează blockchain-ul , așa că vom merge direct la hashing.
Funcția hash criptografică este esențială pentru criptomonede, deoarece garantează una dintre cele mai importante caracteristici ale blockchainului - imuabilitatea .
Deoarece blockchain-urile de criptomonede se ocupă de un număr mare de tranzacții, ele folosesc hashing. Aceasta este o abordare mult mai practică și mai sigură decât păstrarea fiecărei evidențe a fiecărei tranzacții în registru.
În cazul Bitcoin, minerii execută o serie de funcții SHA-256 pentru a crea hash-ul unui bloc. Apoi, acesta din urmă primește un timestamp. Odată ce nodurile ajung la consens, blocul este adăugat la blockchain. Nu numai că blocul are propriul său hash , dar conține și hash-ul celui anterior , înlănțuindu-le astfel pe toate.
Datorită efectului avalanșei, nu este posibilă nicio încercare de manipulare a unui bloc. În cazul în care cineva încearcă să schimbe o tranzacție într-un bloc, trebuie să-l modifice și pe fiecare unul consecutiv. O astfel de operație ar necesita atât de multă putere de calcul și timp, încât este practic imposibilă .
Aceasta face ca hashing-ul să fie o caracteristică crucială în securitatea blockchain-ului.
Acum.
Diferite criptomonede folosesc algoritmi de hash diferiți în blockchain-ul lor.
Bitcoin, de exemplu, folosește SHA-256 pentru dovada sa de lucru. Cu toate acestea, Bitcoin folosește doi algoritmi de hash pentru a genera o adresă publică (cheie) - SHA-256 și RIPEMD-160. Acest lucru a fost făcut de Satoshi Nakamoto pentru a oferi o protecție mai bună pentru cheile publice și pentru a reduce șansele unei coliziuni.
Ethereum, pe de altă parte, folosește algoritmul hash Keccak-256 , care este baza SHA-3.
Până la scriere, nu a existat un atac reușit asupra niciunui dintre acești algoritmi.
Chiar dacă nu sunteți pe piața criptomonedelor, utilizați în continuare funcțiile de hash în fiecare zi.
Cum e?
Funcții Hash în stocarea parolei
Există patru tehnici principale folosite de companii pentru a stoca parolele noastre - în text simplu, cu criptare și cu o funcție hash . Ultima metodă este o combinație a două sau mai multe dintre aceste tehnici.
Să vedem care sunt diferențele.
Stocarea parolelor în text simplu - un mare Nu-Nu
Stocarea parolelor în text simplu este, bine ... exact cum sună.
Asa:
Nume utilizator: John Smith
Parolă: johnsmith93
Baza de date a companiei conține aceleași informații - utilizator: John Smith, pass: johnsmith93.
Acest lucru ar trebui evitat dacă companiile apreciază confidențialitatea clienților lor. (Sperăm că cineva de pe Facebook va citi acest lucru.)
Dezavantajul acestei metode este evident - dacă infractorii cibernetici se infiltrează în baza de date a companiei, aceștia pot vedea toate numele de utilizator și parolele.
Stocarea parolelor folosind criptarea
Criptarea este o modalitate mai bună de securizare a parolelor. Vă transformă parola într-o succesiune de cifre și litere ilizibile.
Iată cum funcționează:
Nume utilizator: John Smith
Parolă: johnsmith93
Când compania utilizează criptarea pentru a vă proteja parola, intrarea în baza de date arată astfel:
Nume utilizator: John Smith
Parola: I8Zdy1QBthsk2ie1HHsl + 66bf20fDDcdCtXURqa07iQ =
Dacă un criminal cibernetic obține această parolă, este inutilă - nu o poate folosi pentru a intra în cont. Totuși, teoretic poate fi decriptat.
În cazul în care un actor rău intenționat vă obține parola criptată, îl poate decripta folosind diverse instrumente. Cu toate acestea, este nevoie de mai mult timp și necesită abilități de calcul mai mari decât simpla obținere a unei parole cu text simplu.
Din fericire, există algoritmi de criptare suficient de puternici pentru a fi o metodă sigură de protejare a parolelor.
Stocarea parolelor printr-un algoritm Hashing
Hash-ul și criptarea sunt adesea confundate cu același lucru și utilizate în mod interschimbabil. Cu toate acestea, există o diferență crucială între ele.
Funcția hash, cum ar fi criptarea, vă transformă, de asemenea, parola într-o secvență de cifre și litere care nu poate fi citită. Diferența crucială este că funcționează într-un singur sens . Spre deosebire de decriptare, nu puteți inversa procesul de hash.Acestea fiind spuse, dacă un criminal cibernetic obține hash-ul parolei dvs., de obicei nu poate face nimic cu ea.
Există multe funcții hash disponibile, dar să folosim SHA-256 pentru exemplul nostru.
Nume utilizator: John Smith
Parola (hash): e7c95991f28e529b4d3b37611e5f3b6a6a43600ce148af0c42d3d38c06365af5
Acum.
Deși hashul nu poate fi inversat la textul său original, există liste mari de mesaje și hashurile acestora. Din păcate, actorii rău intenționați pot să vă spargă parola dacă primesc valoarea hash. Din fericire, dacă utilizați o parolă puternică, șansele ca acest lucru să se întâmple sunt incredibil de mici. Vom folosi un exemplu diferit în acest caz.
Exemple de funcții Hash în stocarea parolei
Să presupunem că parola dvs. este 123456. (Nu o folosiți vreodată, creați o parolă puternică în schimb.)
Iată hash-ul său dacă folosim algoritmul de hash SHA-256 :
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
Din păcate, acest hash se configurează într-o listă de mesaje dezactivate.
Problema cu asta este și mai mare, deoarece mulți oameni folosesc aceeași parolă. Deci, dacă o bază de date este piratată și criminalii cibernetici găsesc hashul unei parole, o pot folosi pentru fiecare utilizator care folosește aceeași parolă. Ca să nu mai vorbim că mulți oameni folosesc aceeași parolă pentru conturi diferite, care îi vor scoate din tigaie și în foc.
Totuși, puteți face mai multe lucruri pentru a preveni acest lucru.
În primul rând, utilizați o parolă puternică și creați parole diferite pentru conturi diferite.
Celălalt lucru pe care îl puteți face este să adăugați „ sare ” la hash. Un hash sărat adaugă valoare suplimentară parolei și produce un hash de parolă diferit pentru fiecare intrare.
De exemplu, fiecare utilizator care utilizează parola 123456 și „săruri” va primi un hash diferit.
Fiecare exemplu este un hash sărat de 123456.
$ 2y $ 10 $ pIxpMnhlQmt1t.EUYK1G / eHkb7Roo / XhPybKyFZSAqk / 50BW10a8.
$ 2y $ 10 $ sCLqOpeA4R.St / 8IaUWF9.m01MM4YbY.qTwbCY3.K5z.cd5lwxL6W
Deci, care este cel mai bun mod în care o companie vă poate proteja parola?
Este o combinație a tuturor tehnicilor menționate mai sus - așa cum face Dropbox, de exemplu.
Sursa: Dropbox
Așa că așa ai de-a face cu hașul în fiecare zi, fără să-ți dai seama.
Învelire
Pentru a rezuma - hashing-ul are multe beneficii.
Puteți hash orice tip de date - fie pentru indexare, fie pentru verificarea modificărilor. Acest lucru face ca hashing-ul să fie util pentru contracte, descărcări, stocare a parolelor etc.
Criptomonedele evoluează și ele. Nu doar cei pe care îi avem acum, ci jucătorii noi se încălzesc pentru a se alătura distracției. Chiar și Facebook va lansa Balanță , așa că suntem nevoiți să folosim și mai mult hashing-ul.
Poate că Facebook va deschide drumul către alte companii mari pentru a elibera propriile criptomonede - și de ce nu noi mecanisme de hash? Numai timpul va spune.
Ne vedem data viitoare!
FAQ
Vă puteți gândi la valoarea hash ca la amprenta oricărei informații - un fișier, un folder, un bloc de tranzacții etc. Odată ce aplicați o funcție de hash pentru orice date, acesta din urmă primește o valoare hash.
Se compune dintr-un șir de caractere cu lungime fixă - ca acesta:
informație | Valoarea hash |
Buna ziua | D44426ACA8AE0A69CDBC4021C64FA5AD68CA32FE |
Criptografia este metoda care protejează datele folosind coduri (cum ar fi hashing și criptare).
Dezvoltatorii aplică criptografia ori de câte ori este nevoie de securitate și confidențialitate mai mari. Transformă textul simplu (sau alte date) într-un șir ilizibil de caractere aleatorii. Acest lucru garantează securitatea informațiilor împotriva ochilor curioși.
Funcția hash este operația care transformă date de dimensiuni aleatorii într-un șir corespunzător de caractere cu lungime fixă , cunoscută și sub numele de valoare hash .
Există două clase de funcții hash - funcție hash necriptografică și criptografică . Acesta din urmă este utilizat în criptomonede și stocare parole și oferă o securitate îmbunătățită.