Kontaktirajte podršku

Odgovaramo e-poštom, obično u roku od dva dana.

Radi zaštite od zloupotrebe, Google reCAPTCHA proverava ovo slanje. Pritom se podaci prenose Googleu. Skripta se učitava tek kada otvorite ovaj formular.

← Sve objave

Šta lozinka košta na skromnom hardveru

O sadržaju i njegovoj proveri

U ovom članku

Stranice sa statistikom ovde mogu biti zaštićene lozinkom. Heširanje te lozinke je jedina operacija u ovoj usluzi koja treba da bude spora — zato je ukradeni heš skup za napad. Pitanje je koliko spora, na ovom hardveru.

Izmereno na mašini na kojoj radi ovaj sajt, PHP 8:

PASSWORD_DEFAULT560 ms(svodi se na cost 12)
cost 12595 ms
cost 11277 ms
cost 10138 ms
cost 10138 mscost 11277 mscost 12595 msPASSWORD_DEFAULT

Parametar cost kod bcrypta je eksponent: svaki korak udvostručuje posao. Merenja pokazuju upravo to udvostručavanje, što je dobar znak da ništa drugo ne smeta.

Zašto je podrazumevana vrednost ovde pogrešan izbor

PHP je podrazumevani cost bcrypta podigao sa 10 na 12. Na desktop serveru to je razumno unapređenje — nekoliko desetina milisekundi. Na skromnom hardveru to je preko pola sekunde čistog procesora, na mašini koja istovremeno crta slike brojača za sve ostale.

Pola sekunde po prijavi je loše samo po sebi. Gore je kao poziv: svako može da pozove krajnju tačku za prijavu, a svaki poziv troši 560 ms procesora koji služi ceo sajt. To proveru lozinke pretvara u najjeftiniju površinu za uskraćivanje usluge.

Zato je cost zakucan na 10 umesto da se prepusti podrazumevanom. To je namerno slabije od onoga što PHP sada bira i treba to jasno reći, a ne zakopati: heš sa cost 10 četiri puta je jeftiniji za napad od heša sa cost 12. Ono što to nadoknađuje jeste šta lozinka zaista štiti — vidljivost stranice sa brojem poseta, a ne nalog, ne novac, ne identitet. Iza nje nema ničega što bi se moglo preuzeti.

Deo koji se lako previdi

PASSWORD_DEFAULT je pokretna vrednost po dizajnu. Kod napisan pre godina koji je koristi tiho će postajati sporiji sa svakom nadogradnjom PHP-a — isti izvor, isti ulaz, nekoliko puta duže izvršavanje. To je predviđeno ponašanje i ispravno je za većinu softvera.

Pogrešno je samo kada mašina ne može da ga apsorbuje, a ništa ne upozorava kada ne može. Nadogradnja uspe, testovi prolaze, stranica i dalje radi. Samo traje pola sekunde duže, a taj broj niko ne gleda dok ga ne izmeri.

Oglas