MD5 vs SHA-1 vs SHA-2 - mis on kõige turvalisem krüptimise räsi ja kuidas neid kontrollida

Mis on räsimisfunktsioon?

Räsifunktsioon võtab sisendväärtuse (näiteks stringi) ja tagastab kindla pikkusega väärtuse. Ideaalne hash funktsiooni on järgmised omadused:

  • see on väga kiire
  • see võib tagastada tohutu räsiväärtuste vahemiku
  • see genereerib iga kordumatu sisendi jaoks unikaalse räsi (kokkupõrkeid pole)
  • see loob sarnaste sisendväärtuste jaoks erinevad räsiväärtused
  • genereeritud räsiväärtuste jaotuses pole eristatavat mustrit

Ideaalset räsifunktsiooni muidugi pole, kuid igaühe eesmärk on töötada ideaalile võimalikult lähedal. Arvestades, et (enamus) räsifunktsioonid tagastavad fikseeritud pikkusega väärtused ja seetõttu on väärtuste vahemik piiratud, saab seda piirangut praktiliselt eirata. Näiteks 256-bitise räsifunktsiooniga tagastatavate võimalike väärtuste arv on ligikaudu sama kui aatomite arv universumis.

Ideaalis tagastab räsifunktsioon praktiliselt ühtegi kokkupõrget - see tähendab, et ükski teine ​​sisend ei genereeri sama räsiväärtust. See on eriti oluline krüptograafiliste räsifunktsioonide puhul: räsikokkupõrkeid peetakse haavatavaks.

Lõpuks peaks räsifunktsioon genereerima mis tahes sisendväärtuse jaoks ettearvamatult erinevad räsiväärtused. Näiteks võtke järgmised kaks väga sarnast lauset:

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

Saame võrrelda mõlemast lausest loodud MD5 räsiväärtusi:

1. 2e87284d245c2aae1c74fa4c50a74c77 2. c17b6e9b160cda0cf583e89ec7b7fc22 

Kahe sarnase lause jaoks genereeriti kaks väga erinevat räsi, mis on omadus kasulik nii valideerimisel kui ka krüptograafias. See on jaotuse tagajärg: kõigi sisendite räsiväärtused peaksid jaotuma ühtlaselt ja ettearvamatult kogu võimalike räsiväärtuste vahemikus.

Levinud räsifunktsioonid

On mitmeid räsifunktsioone, mida kasutatakse laialdaselt. Kõik need kujundasid matemaatikud ja arvutiteadlased. Edasiste uuringute käigus on mõnel osutunud nõrkusi, ehkki kõiki peetakse mittekrüptograafiliste rakenduste jaoks piisavalt heaks.

MD5

MD5 räsifunktsioon loob 128-bitise räsiväärtuse. See oli mõeldud kasutamiseks krüptograafias, kuid aja jooksul avastati haavatavusi, mistõttu pole seda enam selleks otstarbeks soovitatav. Kuid seda kasutatakse endiselt andmebaaside jaotamiseks ja kontrollsummade arvutamiseks failide edastamise kinnitamiseks.

SHA-1

SHA tähistab Secure Hash algoritmi. Algoritmi esimene versioon oli SHA-1 ja hiljem järgnes SHA-2 (vt allpool).

Kui MD5 toodab 128-bitise räsi, siis SHA1 genereerib 160-bitise räsi (20 baiti). Kuueteistkümnendsüsteemis on see 40-kohaline täisarv. Nagu MD5, oli see mõeldud krüptoloogiliste rakenduste jaoks, kuid peagi leiti, et sellel on ka haavatavusi. Tänasest ei peeta seda enam rünnakutele vähem vastupidavaks kui MD5.

SHA-2

SHA teisel versioonil, nimega SHA-2, on palju variante. Ilmselt on kõige sagedamini kasutatav SHA-256, mida Riiklik Standardi- ja Tehnoloogiainstituut (NIST) soovitab kasutada MD5 või SHA-1 asemel.

Algoritm SHA-256 tagastab räsiväärtuse 256-bitist ehk 64 kuueteistkümnendkohalist numbrit. Kuigi see pole päris täiuslik, näitavad praegused uuringud, et see on oluliselt turvalisem kui MD5 või SHA-1.

Toimivuse mõttes on SHA-256 räsi arvutamine umbes 20-30% aeglasem kui MD5 või SHA-1 räsi.

SHA-3

See räsimeetod töötati välja 2015. aasta lõpus ja pole veel laialt levinud. Selle algoritm ei ole seotud eelkäija SHA-2 kasutatuga.

SHA3-256 algoritm on varasema SHA-256 omaga samaväärselt rakendatav variant, kusjuures esimese arvutamiseks kulub veidi kauem aega kui hilisemale.

Räsiväärtuste kasutamine valideerimisel

Räsifunktsioonide tüüpiline kasutusala on valideerimise kontrollimine. Üheks sagedaseks kasutuseks on tihendatud failikogude, näiteks .zip- või .tar-arhiivifailide valideerimine.

Arhiiv ja selle eeldatav räsiväärtus (mida tavaliselt nimetatakse kontrollsummaks), saate oma räsiarvutuse teha, et kinnitada, et saadud arhiiv on täielik ja rikkumata.

Näiteks saan luua Unixis tõrvafaili MD5 kontrollsumma järgmiste käskudega:

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

Faili MD5 räsi hankimiseks Windowsis kasutage käsku Get-FileHash PowerShell:

Get-FileHash tarfile.tar -Algorithm MD5 

Loodud kontrollsumma saab postitada allalaadimissaidile arhiivi allalaadimislingi kõrvale. Vastuvõtja saab pärast arhiivi allalaadimist kinnitada, et see juhtus õigesti, käivitades järgmise käsu:

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

kus 2e87284d245c2aae1c74fa4c50a74c77 on loodud kontrollsumma, mis postitati. Ülaltoodud käsu edukas käivitamine loob sellise OK-oleku:

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