Një funksion hash kriptografik (CHF) është një algoritëm që mund të ekzekutohet në të dhëna të tilla si një skedar individual ose një fjalëkalim për të prodhuar një vlerë të quajtur një shumë kontrolli.
Përdorimi kryesor i një CHF është të verifikojë vërtetësinë e një pjese të të dhënave. Dy skedarë mund të supozohen se janë identikë vetëm nëse shumat kontrolluese të krijuara nga secili skedar, duke përdorur të njëjtin funksion hash kriptografik, janë identike.
Disa funksione hash kriptografike të përdorura zakonisht përfshijnë MD5 dhe SHA-1, megjithëse ekzistojnë edhe shumë të tjerë. Këto shpesh quhen "funksione hash", por kjo nuk është teknikisht e saktë. Një funksion hash është një term i përgjithshëm që përfshin CHF-të së bashku me llojet e tjera të algoritmeve si kontrollet ciklike të tepricës.
Funksionet e hashit kriptografik: një rast përdorimi
Thuaj se keni shkarkuar versionin më të fundit të shfletuesit Firefox. Për disa arsye, ju është dashur ta shkarkoni nga një faqe tjetër nga ajo e Mozilla-s. Për shkak se nuk po mbahet në një sajt që keni mësuar t'i besoni, dëshironi të siguroheni që skedari i instalimit që sapo keni shkarkuar është saktësisht i njëjtë me atë që ofron Mozilla.
Duke përdorur një kalkulator kontrolli, ju llogaritni një shumë kontrolli duke përdorur një funksion të veçantë hash kriptografik, si SHA-2, dhe më pas e krahasoni atë me atë të publikuar në sajtin e Mozilla-s. Nëse ato janë të barabarta, mund të jeni mjaft të sigurt se shkarkimi që keni është ai që Mozilla synonte të kishit.
A mund të kthehen funksionet e hash kriptografik?
Funksionet hash kriptografike janë krijuar për të parandaluar aftësinë për të kthyer shumat e kontrollit që krijojnë në tekstet origjinale. Megjithatë, edhe pse ato janë praktikisht të pamundura për t'u kthyer mbrapsht, ato nuk janë 100 për qind të garantuara për të mbrojtur të dhënat.
Hakerët mund të përdorin një tabelë ylberi për të kuptuar tekstin e thjeshtë të një shume kontrolli. Tabelat Rainbow janë fjalorë që listojnë mijëra, miliona apo edhe miliarda shuma kontrolli krahas vlerës së tyre përkatëse të tekstit të thjeshtë.
Ndonëse kjo teknikisht nuk e kthen algoritmin e hash kriptografik, mund të jetë gjithashtu, duke qenë se është kaq e thjeshtë për t'u bërë. Në realitet, meqenëse asnjë tabelë rainbow nuk mund të listojë çdo kontroll të mundshëm që ekziston, ato zakonisht janë të dobishme vetëm për fraza të thjeshta si fjalëkalime të dobëta.
Këtu është një version i thjeshtuar i një tabele rainbow për të treguar se si do të funksiononte kur përdorni funksionin hash kriptografik SHA-1:
Shembull i tabelës Rainbow | |
---|---|
Tekst i thjeshtë | SHA-1 Shuma kontrolluese |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
fjalëkalimi1 | e38ad214943daad1d64c102faec29de4afe9da3d |
ilovemydog | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Një haker duhet të dijë se cili algoritëm hash kriptografik është përdorur për të gjeneruar shumat e kontrollit për të kuptuar vlerat.
Për mbrojtje të shtuar, disa faqe interneti që ruajnë fjalëkalimet e përdoruesve kryejnë funksione shtesë në algoritmin e hash-it kriptografik pasi të krijohet vlera, por përpara se të ruhet. Ky proces prodhon një vlerë të re që vetëm serveri i uebit e kupton dhe që nuk përputhet me kontrollin origjinal.
Për shembull, pasi të futet një fjalëkalim dhe të gjenerohet shuma e kontrollit, ai mund të ndahet në disa pjesë dhe të riorganizohet përpara se të ruhet në bazën e të dhënave të fjalëkalimit, ose disa karaktere mund të ndërrohen me të tjerë. Kur përpiqet të vërtetojë herën tjetër që përdoruesi identifikohet, serveri e kthen këtë funksion shtesë dhe shuma origjinale e kontrollit gjenerohet përsëri për të verifikuar që fjalëkalimi i një përdoruesi është i vlefshëm.
Marrja e këtyre hapave kufizon dobinë e një hakeje ku vidhen të gjitha shumat e kontrollit. Ideja është të kryhet një funksion që është i panjohur, kështu që nëse hakeri e njeh algoritmin e hash-it kriptografik, por jo atë të personalizuar, atëherë njohja e shumave të kontrollit të fjalëkalimit nuk është e dobishme.
Fjalëkalimet dhe funksionet e hashit kriptografik
Një bazë të dhënash ruan fjalëkalimet e përdoruesve në një mënyrë të ngjashme me një tabelë ylberi. Kur futet fjalëkalimi juaj, shuma e kontrollit gjenerohet dhe krahasohet me atë të regjistruar me emrin tuaj të përdoruesit. Më pas ju jepet akses nëse të dyja janë identike.
Duke pasur parasysh që një CHF prodhon një shumë kontrolli të pakthyeshme, a është e sigurt për ju ta bëni fjalëkalimin tuaj aq të thjeshtë sa 12345, në vend të 12@34 $5, thjesht sepse vetë shumat e kontrollit nuk mund të kuptohen? Jo, dhe ja pse.
Këto dy fjalëkalime janë të pamundura për t'u deshifruar vetëm duke parë vetëm shumat e kontrollit:
MD5 për 12345: 827ccb0eea8a706c4c34a16891f84e7b
MD5 për 12@34$5: a4d3cc004f487b18b2ccd4853053818b
Në shikim të parë, mund të mendoni se është mirë të përdorni njërën nga këto fjalëkalime. Kjo është e vërtetë nëse një sulmues është përpjekur të gjejë fjalëkalimin tuaj duke hamendësuar shumën e kontrollit MD5, gjë që askush nuk e bën, por jo e vërtetë nëse kryhet një sulm brutale ose fjalori, që është një taktikë e zakonshme.
Një sulm me forcë brutale ndodh kur thika të shumta të rastësishme merren për të gjetur një fjalëkalim. Në këtë rast, do të ishte e lehtë të merret me mend 12345, por mjaft e vështirë të kuptosh rastësisht tjetrin. Një sulm fjalori është i ngjashëm në atë që sulmuesi mund të provojë çdo fjalë, numër ose frazë nga një listë fjalëkalimesh të zakonshme (dhe jo shumë të zakonshme) dhe 12345 është një nga ato të zakonshmet. fjalëkalimet.
Edhe pse funksionet hash kriptografike prodhojnë shuma kontrolli të vështira ose të pamundura për t'u hamendësuar, ju duhet të përdorni përsëri një fjalëkalim kompleks për të gjitha llogaritë tuaja të përdoruesve në linjë dhe lokale.
Më shumë informacion mbi funksionet e hashit kriptografik
Mund të duket sikur funksionet hash kriptografike janë të lidhura me enkriptimin, por të dyja funksionojnë në mënyra të ndryshme.
Enkriptimi është një proces i dyanshëm ku diçka kodohet për t'u bërë e palexueshme dhe më pas deshifrohet për t'u përdorur përsëri normalisht. Ju mund të kriptoni skedarët që keni ruajtur në mënyrë që kushdo që i qaset të mos jetë në gjendje t'i përdorë ato, ose mund të përdorni enkriptimin e transferimit të skedarëve për të enkriptuar skedarët që lëvizin në rrjet, si ato që ngarkoni ose shkarkoni në internet.
Funksionet hash kriptografike funksionojnë ndryshe, në atë që shumat e kontrollit nuk kanë për qëllim të kthehen me një fjalëkalim të veçantë dehashues. I vetmi qëllim që shërbejnë CHF-të është krahasimi i dy pjesëve të të dhënave, si p.sh. kur shkarkohen skedarë, ruajnë fjalëkalimet dhe tërheqin të dhëna nga një bazë të dhënash.
Është e mundur që një funksion hash kriptografik të prodhojë të njëjtën shumë kontrolli për pjesë të ndryshme të dhënash. Kur kjo ndodh, quhet përplasje, e cila është një problem i madh duke marrë parasysh se e gjithë pika e funksionit është të bësh kontrolle unike për çdo të dhënë të dhëna në të.
Përplasjet mund të ndodhin sepse çdo CHF prodhon një vlerë të një gjatësie fikse pavarësisht nga të dhënat hyrëse. Për shembull, funksioni hash kriptografik MD5 gjeneron 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983, dhe e10adc3949bae59abbe totalisht 30adc3949bae59abbe të ndryshme.
Shuma e parë e kontrollit është nga 12345. E dyta u krijua nga mbi 700 shkronja dhe numra, dhe e treta është nga 123456. Të tre hyrjet janë me gjatësi të ndryshme, por rezultatet janë gjithmonë vetëm 32 karaktere të gjata, pasi është përdorur shuma e kontrollit MD5.
Nuk ka kufi për numrin e shumave të kontrollit që mund të krijohen sepse çdo ndryshim i vogël në hyrje supozohet të prodhojë një shumë kontrolli krejtësisht të ndryshme. Për shkak se ka një kufi për numrin e shumave të kontrollit që mund të prodhojë një CHF, ekziston gjithmonë mundësia që të hasni në një përplasje.
Kjo është arsyeja pse janë krijuar funksione të tjera hash kriptografike. Ndërsa MD5 gjeneron një vlerë prej 32 karakteresh, SHA-1 gjeneron 40 karaktere dhe SHA-2 (512) gjeneron 128. Sa më i madh të jetë numri i karaktereve që kontrolli ka, aq më pak gjasa që të ndodhë një përplasje.