Zenbat denbora behar da benetan zure pasahitza hausteko

Argitaratua egilea David Carrero

Webgune batek zure pasahitza hiru milioi urte beharko lituzkeela hausteko esaten dizunean, esaldiaren zati garrantzitsua isiltzen ari da. Galdera zuzena ez da zenbat denbora behar den. Zeren aurka zenbat denbora behar den da.

Eta zeren aurka horren erantzuna ez duzu zuk erabakitzen. 2019an zapatilak erosi zenituen dendako garatzaile batek erabaki zuen, zure pasahitza bere datu-basean nola gorde aukeratu zuenean. Zuk hogei karaktereko kate bera idatzi zenuen bi lekuetan. Batean mendeak irauten du; bestean, bazkaldu baino lehen erortzen da.

Ekuazioan falta den zenbakia

Indar gordineko eraso bat aritmetika arrunta da: probatu beharreko hautagai kopurua, segundoko proba ditzakezun hautagaien artean zatituta. Lehen faktorea zure pasahitzaren araberakoa da —bere luzera, bere alfabetoa, hiztegi batean dagoen ala ez—. Bigarrenak ez du zurekin zerikusirik batere.

Bigarren faktorea bi gauzaren araberakoa da: erasotzailearen hardwarea eta, batez ere, guneak zure pasahitza bere erabiltzaile-taulan gordetzen duen zaborkeria bihurtzeko erabili zuen funtzioa. Funtzio horri hash deitzen zaio, eta ez dute denek berdin kostatzen kalkulatzea.

MD5 eta SHA-1 azkarrak izateko diseinatu ziren. Bertute bat da: helburu orokorreko hash-funtzioak dira, mezuak laburtzeko eta osotasuna egiaztatzeko pentsatuak, eta hor nahi duzuna da gigabyte bat prozesatzea kafe bila altxatzeko astirik eman gabe. Norbaitek pasahitzak gordetzeko erabiltzen dituenean, bertute hori da arazoa. Segundoko milioika aldiz kalkula dezakezun funtzio bat erasotzaileak ere segundoko milioika aldiz kalkula dezakeen funtzio bat da — eta berak txartel grafikoak ditu eta asteburu osoa.

bcrypt eta Argon2 kontrako helburuarekin diseinatu ziren. Nahita motelak dira eta —hau da dotorea— moteltasun erregulagarriarekin. Niels Provosek eta David Mazièresek 1999an aurkeztu zuten bcrypt, dena esaten duen izenburu batekin: A Future-Adaptable Password Scheme. Ideia zen funtzioa urteekin garestitu ahal izatea, hardwarea merkatzen zen erritmo berean. Argon2k, 2015ean Password Hashing Competition irabazi zuenak, beste bira bat gehitu zuen: ez du denbora bakarrik kostatzen, memoria ere kostatzen du, eta hori da hain zuzen GPUek pozik gutxienarekin eskura dutena.

Hash azkar baten eta ondo konfiguratutako hash motel baten artean ez dago ehunekoen aldea. Magnitude-ordenak daude. Asko.

Benchmark-ak existitzen dira, eta publikoak dira

Hau ez da espekulazioa. Hashcat-ek, mundu erdiak pasahitzak hausteko erabiltzen duen tresnak —onak barne—, edonork bere makinan exekuta dezakeen benchmark modu bat dakar, eta algoritmoz algoritmo neurtzen du bakoitza segundoko zenbat aldiz kalkula daitekeen. Komunitateak taula horiek argitaratzen ditu GPU berri bat ateratzen den bakoitzean.

Taula horien gauzarik interesgarriena ez da zenbaki zehatz bat —gainera hardware-belaunaldi bakoitzarekin iraungitzen dena— baizik eta errenkaden arteko distantzia. Zerrenda abiaduraren arabera ordenatzen duzu eta MD5 ikusten duzu goren-goren, bere planetan. Jaitsi eta jaitsi, eta taularen hondoan bcrypt eta Argon2 daude, ezertan antzik ez duten zifrekin. Pasahitz bera da. GPU bera da. Aldatu den bakarra da guneak nola gordetzea erabaki zuen.

Horregatik «hiru milioi urte» zein hash-en aurka esan gabe marketina da, ez neurketa. Zure autoak sei ordu behar dituela iristeko iragartzea bezala da, norantz doan aipatu gabe.

Offline eta online: elkar ukitzen ez duten bi mundu

Ia inork azaltzen ez duen eta emaitza berdin basati aldatzen duen bigarren bereizketa bat dago.

Eraso online batean, erasotzaileak sarbide-inprimakiaren aurka probatzen ditu pasahitzak, erabiltzaile batek egingo lukeen bezala. Erritmoa ez du bere hardwareak jartzen: zerbitzariak jartzen du. Saiakera-mugak egon daitezke, aldi baterako blokeoa, captcha bat, eskaeren arteko atzerapena, helbide beretik mila hutsegite detektatzean alertak. Zentzuz defendatutako gune baten aurka, eraso online bat motela da, zaratatsua eta nahiko ergela. Aritmetika hain da txarra erasotzailearentzat ezen indar gordin hutsa ia ez baita saiatzen: beti dituzten lau pasahitzak probatzen dituzte milioika konturen aurka, eta hori beste joko bat da.

Eraso offline batean, erasotzaileak jada badu datu-basearen isuria. Etxera eramaten du. Han ez dago zerbitzaririk, ez saiakera-mugarik, ez inor begira: bere txartel grafikoak eta bere argindarraren faktura daude. Hilabetez proba dezake inor konturatu gabe, eta bakarrik jakingo du asmatu duela, hash-ak alderatuz. Hemen erabakitzen du hash-ak dena, hash-a baita literalki geldiarazten duen gauza bakarra.

Eta zintzoa izan behar da probabilitateekin: offline eszenatokia ez da exotikoa. Datu-base bat isurtzen den bakoitzean gertatzen dena da. LinkedInek 2012an berea galdu zuenean, isuritako iraulketaren analisiak erakutsi zuen pasahitzak SHA-1ekin gatzik gabe gordetzen zituela: hash azkar bat eta taulak aurrez kalkulatzea eragozten duen osagairik gabe. Hainbeste eta hain azkar haustea ez zen erabiltzaileek gaizki aukeratu izanaren kontua bakarrik izan. Batez ere, inolako erabiltzailek inoiz ikusi ez zuen ingeniaritza-erabaki bat izan zen.

Hemen egiten duguna, eta zergatik esaten dugun

Gure egiaztatzaileak segundoko 10¹² saiakera hartzen ditu, offline, hash azkar baten aurka. Orrialdean bertan idatzita dago, emaitzaren azpian, eta ez apaingarrizko gardentasunagatik: datu hori gabe, erakusten dizun denborak ez du ezer esan nahi.

Nahita da kasu txarra. Suposatzen dugu datu-basea jada isurita dagoela, erasotzaileak hardware serioa duela, guneak zure pasahitza arrazoizkoa den modurik txarrenean gorde zuela eta, gainera, zure alfabetoa eta zure luzera ezagutzen dituela. Guneak bcrypt ondo konfiguratuta erabili bazuen, benetako zifra magnitude-orden asko igotzen da eta zure pasahitzak esaten dizuguna baino askoz gehiago irauten du.

Nahiago dugu alde horretatik oker egon. Zoriontzen zaituen egiaztatzaile bat bere burua zoriontzen ari da.

Ondorio deserosoa

Zure pasahitzak ez du hausteko denbora bat. Hausteko denbora bat du erabili duzun gune bakoitzeko, eta denbora hori ezagutzen ez duzun jendeak finkatzen du argitaratzen ez dituen irizpideekin.

Hortik bi gauza ondorioztatzen dira, eta betikoak dira. Lehena: hash-a ezin duzunez kontrolatu, kontrolatu entropia, zurea den ekuazioaren erdia baita —horregatik erakusten dizkizu sorgailuak bitak eta ez ehuneko atsegin bat—. Bigarrena, eta garrantzitsuena: gune bakoitzak bere pasahitza badu, MD5en gorde zuenak gune horretakoa bakarrik oparitu dezake.

Kate-begi ahula ez baita zure pasahitza. Idatzi zenuen gunerik txarrena da.


Iturriak: hashcaten benchmark publikoak (hashcat -b), kontsultagarriak eta erreproduzigarriak · N. Provos eta D. Mazières, «A Future-Adaptable Password Scheme», USENIX, 1999 · Password Hashing Competition, Argon2k irabazia 2015ean · password.esen egiaztatzailean deklaratutako mehatxu-eredua: 10¹² saiakera/s, offline, hash azkarra · LinkedInen 2012ko bretxa: konpainiak isuria berretsi zuen, eta gatzik gabeko SHA-1en erabilera argitaratutako iraulketa aztertzean ezarri zen.

← Blogera itzuli