007007 Posted July 21, 2012 Report Share Posted July 21, 2012 Tā kā esmu galīgs iesācējs, vēlos precizēt drošas hashoshanas noteikumus. Vai tā tik tiešām ir, kā vēsta šis raksts: http://phpacademy.org/forum/viewtopic.php?f=8&t=15356 Kā dažādu algoritmu palaišana ķēdē, piem, sha512 un sha256 var padarīt paroli vājāku nekā lietojot tikai vienu algoritmu? Pēc manas saprašanas ķēdes lietošana to nepadarīs īpaši spēcīgāku, bet tā taču to nevar padarīt vājāku, ne tā? Un vēl apgalvots, ka drošai sha512 lietošanai tas jāieliek loop'ā, kas hashos doto paroli vismaz 5000 reižu, lai procesu padarītu sarežģītāku un lēnāku. Izklausās saprātīgi.. Ko sakāt? Un visbeidzot kādas atsauksmes par šajā forumā Dieva vietā nostādīto Bcrypt ? Paldies. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted July 21, 2012 Report Share Posted July 21, 2012 Bcrypt ir lēns jau pēc būtības, kas arī to padara par drošu. Nav jēgas izmantot kkādus kastom paņēmienus (sha512 * 5000 + salt). Quote Link to comment Share on other sites More sharing options...
codez Posted July 21, 2012 Report Share Posted July 21, 2012 (edited) hešošanu pirmkārt lieto kā papildus aizsardzības līdzekli, gadījumiem, ja datubāzi iegūst kāds cits un lai viņam nebūtu pieejamas lietotāju paroles. Ja papildus tam viņš arī iegūst hašošanas algoritmu (metodi, saltus, utt.), tad viņš var veikt pilnu pārlasi parolēm un mēģināt atrast lietotāju paroles, tāpēc, lai viņš nevarētu veikt 100`000 pārlases sekundē, tiek izmantotas laikietilpīgākas metodes heša iegūšanai (cikliska hešošana, bcrypt, utt.), tādā veidā uzbrucējs var, piemēram, veikt 100 pārlases sekundē un viņam vajag 1000x vairāk laiku, lai atrastu heš vērtībām atbilstošās paroles. Edited July 21, 2012 by codez Quote Link to comment Share on other sites More sharing options...
007007 Posted July 21, 2012 Author Report Share Posted July 21, 2012 Tātad.. Jūs arī iesakāt Bcrypt? Quote Link to comment Share on other sites More sharing options...
daGrevis Posted July 21, 2012 Report Share Posted July 21, 2012 Protams! Kas tev ir pret Bcrypt? :D Quote Link to comment Share on other sites More sharing options...
007007 Posted July 22, 2012 Author Report Share Posted July 22, 2012 Protams! Kas tev ir pret Bcrypt? :D Nekas, es vienkārši nekad neesmu to lietojis. Vienmēr uzticējos sha512. Nu labi, jāskatās, kas sanāks.. Quote Link to comment Share on other sites More sharing options...
codez Posted July 22, 2012 Report Share Posted July 22, 2012 Pirmais un pats svarīgākais ir nodrošināt to, lai db neviens nepiekļūst, tad vispār nebūs jāuztraucās kā tiek glabātas paroles. Bet, ja grib tiešām taisīt kaut ko mega drošu, tad vari padomāt par paroles hašošanu javascriptā jau klienta pusē un jau haša sūtīšanu caur tīklu, protams, servera pusē vēl nohašojot. Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted July 22, 2012 Report Share Posted July 22, 2012 (edited) Tas raksts ir ļoti labs, taču, manuprāt, runa ir vairāk par teorētiski drošāko modeli, nevis praksi. Praksē, kā jau minēts, svarīgi ir nepieļaut datu noplūdi pirmkārt, nepieļaut muļķīgas kļūdas kodā un pēc vairākām nesekmīgām paroles ievadēm uz laiku bloķēt iespēju pieslēgties. Man pašam patīk šī metode: return $salt . hash($salt . $plainText); Kur $salt ir random salts (tā, kā tajā rakstā) un hash() ir "sha kaut kas", atkarībā no paranojas līmeņa. Edited July 22, 2012 by Mr.Key Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted July 23, 2012 Report Share Posted July 23, 2012 Par bcrypt atsauksmes labas, arī par scrypt labas. Scrypt, gan neesmu PHP vidē redzējis. Arī bcrypt var nebūt pieejams. Ja grib izmantot standarta hešošanas algoritmus, tad labāk sāli piesaistīt ar hash_hmac(). Reiz biju uztaisījis paraugu bezsesiju autentificēšanas mehānismam, kas izmantoja vairākkārtēju hashoshanu: http://php.lv/f/topic/11116-lietotaju-autentificesana/ taču šķiet, ka paste.php.lv pazaudējusi to saturu (Ja kādu interesē, tad lūk pēdējā atrastā publikācija par šo tēmu: http://www.cse.msu.edu/~alexliu/publications/Cookie/cookie.pdf ). Jebkurā gadījumā, bez pašas hashošanas ir vēl citi mehānismi, kā DB pusē nodrošināt paroļu aizsardzību. Labs un gana autoritatīvs resurss: https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet Quote Link to comment Share on other sites More sharing options...
F3llony Posted July 23, 2012 Report Share Posted July 23, 2012 (edited) Var iztikt arī ar kaut ko šādu. // $salt glabājams kopā ar paroli DB. Salt ir katram lietotājam unikāls. $multi = 23479.32454522499345; $salt = base_convert(mt_rand(mt_rand(1111,9999),mt_getrandmax())*$multi,10,16); $k = sha1($salt); $t = 'Manaparole'; $buffer = null; for($i=0;$i<strlen($t);) { for($ii=0;$ii<strlen($k);$ii++,$i++) { $buffer .= ($t{$i} ^ $k{$ii}) . ((int)$t{$i} ^ (int)$k{$ii}); } } $p = hash('sha256',($k.$buffer.$salt)); echo ($k.$buffer.$salt) . ' - ' .$p; Parasti, lielākā daļa defeisu kompromitē pašu datu bāzi. Šāds neliels scenārijs var palīdzēt pret defeisotām DB, kur nav zināms šifrēšanas algoritms. Bonusam, pašam algoritmam var pielietot piemēram, http://pecl.php.net/package/bcompiler Edited July 23, 2012 by F3llony Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted July 25, 2012 Report Share Posted July 25, 2012 Šie divi raksti gan par .NET, tomēr par paroļu problēmu aprakstīts labi: http://www.troyhunt.com/2012/06/our-password-hashing-has-no-clothes.html http://www.troyhunt.com/2012/07/stronger-password-hashing-in-net-with.html Quote Link to comment Share on other sites More sharing options...
blackhalt Posted July 25, 2012 Report Share Posted July 25, 2012 taču šķiet, ka paste.php.lv pazaudējusi to saturu Šī te http://php.lv/f/topic/11116-lietotaju-autentificesana/ arhīvs: auth_common.php http://web.archive.org/web/20080802152152/http://paste.php.lv/7692?lang=php auth_logon.php http://web.archive.org/web/20080802152158/http://paste.php.lv/7693?lang=php auth_user_management.php http://web.archive.org/web/20080802152202/http://paste.php.lv/7694?lang=php logon.php http://web.archive.org/web/20080802152207/http://paste.php.lv/7695?lang=php autentifikators.php http://web.archive.org/web/20080802152211/http://paste.php.lv/7696?lang=php logoff.php http://web.archive.org/web/20080802152221/http://paste.php.lv/7698?lang=php user_mod.php http://web.archive.org/web/20080802152227/http://paste.php.lv/7699?lang=php user_add.php http://web.archive.org/web/20080802152232/http://paste.php.lv/7700?lang=php change_pass.php http://web.archive.org/web/20080802152237/http://paste.php.lv/7701?lang=php Man kaut kur bija arī normālā formātā ;) Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted July 25, 2012 Report Share Posted July 25, 2012 O! Liels, paldies! Pašam arī kaut kur jābūt, taču neesmu meklējis. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.