MD5 vs SHA-1 vs SHA-2 - kuri yra saugiausia šifravimo maiša ir kaip jas patikrinti

Kas yra maišos funkcija?

Maišos funkcija ima įvesties vertę (pavyzdžiui, eilutę) ir grąžina fiksuoto ilgio vertę. Idealiai maišos funkcija turi šias savybes:

  • tai labai greita
  • tai gali grąžinti milžinišką maišos verčių diapazoną
  • jis sukuria unikalų maišos variantą kiekvienam unikaliam įėjimui (be susidūrimų)
  • jis sukuria nepanašias maišos reikšmes panašioms įvesties reikšmėms
  • sugeneruotų maišos verčių pasiskirstymas neturi pastebimo modelio

Žinoma, nėra jokios idealios maišos funkcijos, tačiau kiekviena siekia veikti kuo arčiau idealo. Atsižvelgiant į tai, kad (dauguma) maišos funkcijų grąžina fiksuoto ilgio reikšmes ir todėl verčių diapazonas yra ribojamas, to apribojimo praktiškai galima nepaisyti. Pavyzdžiui, galimų reikšmių, kurias gali grąžinti 256 bitų maišos funkcija, skaičius yra maždaug toks pats kaip visatos atomų skaičius.

Idealiu atveju maišos funkcija praktiškai negrąžina jokių susidūrimų - ty du skirtingi įėjimai nesukuria tos pačios maišos vertės. Tai ypač svarbu kriptografinėms maišos funkcijoms: maišos susidūrimai laikomi pažeidžiamumu.

Galiausiai maišos funkcija turėtų generuoti nenuspėjamai skirtingas maišos reikšmes bet kuriai įvesties vertei. Pavyzdžiui, paimkite šiuos du labai panašius sakinius:

1. "The quick brown fox." 2. "The quick brown fax." 

Galime palyginti MD5 maišos reikšmes, sugeneruotas iš kiekvieno iš dviejų sakinių:

1. 2e87284d245c2aae1c74fa4c50a74c77 2. c17b6e9b160cda0cf583e89ec7b7fc22 

Dviems panašiems sakiniams buvo sugeneruoti du labai skirtingi maišos variantai, o tai yra savybė, naudinga tikrinant ir kriptografuojant. Tai yra pasiskirstymo pasekmė: visų įvesties maišos vertės turėtų būti tolygiai ir nenuspėjamai paskirstytos visame galimų maišos verčių diapazone.

Bendros maišos funkcijos

Yra keletas plačiai naudojamų maišos funkcijų. Visus juos sukūrė matematikai ir informatikai. Atliekant tolesnius tyrimus, buvo įrodyta, kad kai kurie turi trūkumų, nors visi laikomi pakankamai gerais nekriptografinėms programoms.

MD5

MD5 maišos funkcija sukuria 128 bitų maišos reikšmę. Jis buvo sukurtas naudoti kriptografijoje, tačiau laikui bėgant buvo aptikta pažeidžiamumų, todėl šiam tikslui jis nebėra rekomenduojamas. Tačiau jis vis dar naudojamas duomenų bazių skaidymui ir kontrolinių sumų skaičiavimui, siekiant patvirtinti failų perkėlimus.

SHA-1

SHA reiškia saugų maišos algoritmą. Pirmoji algoritmo versija buvo SHA-1, o vėliau sekė SHA-2 (žr. Toliau).

MD5 sukuria 128 bitų maišos, SHA1 - 160 bitų maišos (20 baitų). Šešioliktainiu formatu tai yra 40 skaitmenų ilgio sveikasis skaičius. Kaip ir MD5, jis buvo sukurtas kriptologijos programoms, tačiau netrukus buvo nustatyta ir pažeidžiamumų. Nuo šiandien jis nebėra laikomas mažiau atspariu atakoms nei MD5.

SHA-2

Antroji SHA versija, vadinama SHA-2, turi daugybę variantų. Turbūt dažniausiai naudojamas SHA-256, kurį Nacionalinis standartų ir technologijos institutas (NIST) rekomenduoja naudoti vietoj MD5 ar SHA-1.

SHA-256 algoritmas pateikia 256 bitų arba 64 šešioliktainių skaitmenų maišos vertę. Nors tai nėra visiškai tobula, dabartiniai tyrimai rodo, kad jie yra žymiai saugesni nei MD5 ar SHA-1.

Našumo požiūriu SHA-256 maišos apskaičiavimas yra apie 20–30% lėtesnis nei MD5 arba SHA-1 maišos.

SHA-3

Šis maišos metodas buvo sukurtas 2015 m. Pabaigoje ir dar nebuvo plačiai naudojamas. Jo algoritmas nesusijęs su tuo, kurį naudojo pirmtakas SHA-2.

SHA3-256 algoritmas yra variantas, kurio taikymas yra lygiavertis ankstesnio SHA-256 taikymui, o pirmojo skaičiavimas trunka šiek tiek ilgiau nei vėlesnis.

Maišos verčių naudojimas patvirtinant

Tipiškas maišos funkcijų naudojimas yra tikrinimo patikrų atlikimas. Vienas iš dažnų naudojimo būdų yra suspaustų failų rinkinių, tokių kaip .zip arba .tar archyvo failai, patvirtinimas.

Atsižvelgdami į archyvą ir jo numatomą maišos vertę (paprastai vadinamą kontroline suma), galite atlikti savo maišos apskaičiavimą, kad patvirtintumėte, jog gautas archyvas yra išsamus ir nesugadintas.

Pvz., Galiu sukurti „Unix“ dervos failo MD5 kontrolinę sumą naudodamas šias komandų komandas:

tar cf - files | tee tarfile.tar | md5sum - 

Norėdami gauti failo MD5 maišos sistemoje „Windows“, naudokite komandą „Get-FileHash PowerShell“:

Get-FileHash tarfile.tar -Algorithm MD5 

Sugeneruotą kontrolinę sumą galima paskelbti atsisiuntimo svetainėje, šalia archyvo atsisiuntimo nuorodos. Parsisiuntęs archyvą, imtuvas gali patvirtinti, kad jis tinkamai įvyko, vykdydamas šią komandą:

echo '2e87284d245c2aae1c74fa4c50a74c77 tarfile.tar' | md5sum -c 

kur 2e87284d245c2aae1c74fa4c50a74c77 yra sugeneruota kontrolinė suma, kuri buvo paskelbta. Sėkmingai įvykdžius pirmiau nurodytą komandą, bus sukurta tokia būsena:

echo '2e87284d245c2aae1c74fa4c50a74c77 tarfile.tar' | md5sum -ctarfile.tar: OK