Ce este Hash criptografic? [un ghid pentru începători]

Publicat: 2019-08-07
Cuprins
  • 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.

    1. 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).
    2. 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

    Ce este o valoare hash?

    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
    Ce este criptografia?

    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.

    Ce este o funcție hash?

    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ă.