17Aug
"Naša baza podataka za lozinku ukradena je jučer. No nemojte se brinuti: zaporke su bile šifrirane. "Redovito pregledavamo takve izjave poput onih na mreži, uključujući jučer, od Yahooa. Ali, trebamo li stvarno uzeti ove uvjeravanja u nominalnoj vrijednosti?
Realnost je da baza podataka lozinkom kompromise su zabrinutost, bez obzira na to kako tvrtka može pokušati spin. Ali postoji nekoliko stvari koje možete učiniti kako biste se izolirali, bez obzira koliko su loše sigurnosne prakse neke tvrtke.
Kako se lozinke trebaju pohraniti
Evo kako tvrtke trebaju pohranjivati lozinke u idealnom svijetu: Stvarate račun i unesite lozinku. Umjesto spremanja lozinke, usluga generira "hash" iz lozinke. Ovo je jedinstven otisak prsta koji se ne može preokrenuti. Na primjer, lozinka "lozinka" može se pretvoriti u nešto što izgleda nalik "4jfh75to4sud7gh93247g. ..".Kada unesete zaporku za prijavu, usluga generira hash i provjerava odgovara li vrijednost hash vrijednosti pohranjene u bazi podataka. Ni u kojem trenutku usluga nikad ne sprema vašu zaporku na disk.
Da bi utvrdio vašu stvarnu lozinku, napadač koji ima pristup bazi podataka morat će unaprijed izračunati hashe za uobičajene lozinke, a zatim provjeriti postoje li u bazi podataka. Napadači to čine s tablicama za pretraživanje - ogromni popisi haseva koji odgovaraju lozinkama. Ishehe se mogu usporediti s bazom podataka. Na primjer, napadač bi znao hash za "password1" i zatim provjerite koriste li neki račun u bazi podataka taj hash. Ako jesu, napadač zna da je lozinka "password1".
Kako bi to spriječili, usluge bi trebale "soliti" svoje hashe. Umjesto izrade hash-a iz same lozinke, dodaju se nasumični niz prednji ili kraj zaporke prije nego što ga iskrvarimo. Drugim riječima, korisnik bi unio lozinku "lozinku" i usluga će dodati sol i hash lozinku koja izgleda nalik "password35s2dg". Svaki korisnički račun bi trebao imati svoju jedinstvenu sol, a to bi osigurala da svaki korisnički računimali bi različite vrijednosti hash-vrijednosti za svoju lozinku u bazi podataka.Čak i ako su više računa koristili zaporku "password1", imali bi različite hashe zbog različitih vrijednosti soli. To bi porazilo napadača koji je pokušao unaprijed izračunati hashe za lozinke. Umjesto da može generirati hashe koji su se primjenjivali na svaki korisnički račun u cijeloj bazi podataka odjednom, morali bi generirati jedinstvene hashe za svaki korisnički račun i njegovu jedinstvenu sol. To bi trebalo mnogo više vremena i memorije računanja.
Zato se usluge često ne brinu. Usluga koja koristi odgovarajuće sigurnosne postupke trebala bi reći da upotrebljavaju slane lozinke. Ako jednostavno kažu da su lozinke "hashed", to je više zabrinjavajuće. LinkedIn je izbrisao svoje lozinke, na primjer, ali ih nije solio - tako da je bilo velika stvar kada LinkedIn izgubio 6.5 milijuna hashed lozinke u 2012.
Bad Password Practices
Ovo nije najteža stvar za implementaciju, ali mnoge web stranicejoš uvijek uspijevaju riješiti ih na različite načine:
- Pohranjivanje zaporki u običnom tekstu : Umjesto da se trude s hashingom, neki od najgorih prijestupnika mogu jednostavno izbrisati lozinke u običnom tekstualnom obliku u bazu podataka. Ako je takva baza podataka ugrožena, vaše lozinke očito su ugrožene. Nije važno koliko su jaki.
- Ispiranje lozinki bez njihova soljenja : Neke usluge mogu izbrisati lozinke i odustati od toga, odlučujući da ne koriste soli. Takve baze podataka za zaporku bit će vrlo ranjive na tablice pretraživanja. Napadač može generirati hashe za mnoge lozinke, a zatim provjeriti postoje li u bazi podataka - to bi moglo učiniti za svaki račun odjednom, ako se ne koristi sol.
- Ponovno korištenje soka : Neke usluge mogu koristiti sol, ali one mogu ponovno upotrijebiti istu sol za svaku lozinku za korisnički račun. To je besmisleno - ako je za svakog korisnika upotrebljena ista sol, dva korisnika s istom lozinkom imali bi isti haseh.
- Korištenje kratkih soli : Ako se koriste soli od samo nekoliko znamenaka, bilo bi moguće generirati tablice za pretraživanje koje su uključile svaku moguću sol. Na primjer, ako je jedna znamenka korištena kao sol, napadač bi mogao lako generirati popise haseva koji su uključili svaku moguću sol.
Tvrtke vam neće uvijek reći cijelu priču, pa čak i ako kažu da je lozinka bila istaknuta( ili raspršena i slana), možda neće koristiti najbolje postupke. Uvijek pogriješite na strani opreza.
Druge zabrinutosti
Vjerojatno je da je vrijednost soli također prisutna u bazi podataka za lozinku. To nije tako loše - ako se za svakog korisnika koristi jedinstvena vrijednost soli, napadači bi morali potrošiti ogromne količine CPU snage prekidajući sve te zaporke.
U praksi, toliko ljudi koristi očite zaporke da bi bilo lako odrediti mnoge lozinke korisničkih računa. Na primjer, ako napadač zna vaše hashe i znaju vašu sol, lako se mogu provjeriti da li koristite neke od najčešćih zaporki.
Ako napadač ima za vas i želi razbiti vašu lozinku, to može učiniti brutom silom dok god znaju vrijednost soli, što vjerojatno čine. S lokalnim, izvanmrežnim pristupom bazama podataka lozinki, napadači mogu zaposliti sve napade koje su željeli.
Ostali osobni podaci također vjerojatno propuštaju kada se ukrade lozinka baze podataka: korisnička imena, adrese e-pošte i još mnogo toga. U slučaju curenja Yahoo-a, također su procurila sigurnosna pitanja i odgovori - što, kako svi znamo, lakše ukrasti pristup nečijem računu.
Pomoć, Što trebam učiniti?
Kakva god usluga rekla kada je ukradena baza podataka lozinke, najbolje je pretpostaviti da je svaka usluga potpuno nesposobna i djelovati u skladu s tim.
Prvo, nemojte ponovno koristiti zaporke na više web mjesta. Upotrijebite upravitelja zaporki koja generira jedinstvene zaporke za svaku web stranicu. Ako napadač otkrije da je vaša zaporka za uslugu "43 ^ tSd% 7uho2 # 3", a tu lozinku koristite samo na određenoj web-lokaciji, nisu naučili ništa korisno. Ako koristite istu lozinku svugdje, mogli bi pristupiti vašim drugim računima. Ovo je koliko računa ljudi postaju "sjeckani".
Ako usluga postane ugrožena, svakako promijenite lozinku koju koristite tamo. Također biste trebali promijeniti lozinku na drugim web-lokacijama ako je ponovno upotrebljavate - ali to ne biste trebali raditi na prvom mjestu.
Također biste trebali koristiti autentifikaciju s dva faktora, koja će vas zaštititi čak i ako napadač uči svoju lozinku.
Najvažnija stvar nije ponovno korištenje lozinki. Kompromitirane baze podataka lozinke ne mogu vas ozlijediti ako koristite jedinstvenu lozinku svugdje - osim ako pohranjujete nešto drugo važno u bazi podataka, primjerice vašu kreditnu karticu.
Image Credit: Marc Falardeau na Flickr, Wikimedia Commons