Препоръчително ли е съхраняването на Bcrypt хеширана парола директно в DB?

Тъй като форматът на хеширания низ ($2y$10$salt....) сам по себе си дава улики на хакера (т.е. който е хакнал DB), че криптирането се извършва с помощта на алгоритъм Bcrypt и така той може лесно да хакне с помощта на password_verify() в php, като предава параметри като негови пароли за предположение.


person user3767551    schedule 23.06.2014    source източник
comment
Не бих казал „лесно“: грубото форсиране на Bcrypt ще отнеме много, много дълго време.   -  person Jim    schedule 23.06.2014
comment
Да, добре е да го направите. Атаките с груба сила срещу bcrypt не са много ефективен метод, особено когато увеличавате цената.   -  person Brett Santore    schedule 23.06.2014


Отговори (1)


Няма недостатък в съхраняването на тези BCrypt хешове директно в базата данни, нито един от параметрите не е предназначен да бъде таен. Освен това те позволяват да се премине към по-добър алгоритъм (или да се увеличи факторът на разходите), без да стават несъвместими с по-стари хешове.

Ако тези параметри бъдат скрити по някакъв начин, нападателят ще трябва да ги познае. Но няма толкова много възможни стойности, фактор на разходите, напр. има смисъл само между 9-13. Ако наистина искате да добавите такава тайна от страната на сървъра, има много по-добри начини да го направите. Можете да шифровате (двупосочно) вече хешираните стойности със силен ключ, след което атакуващият трябва да „отгатне“ този ключ, което е невъзможно.

person martinstoeckli    schedule 24.06.2014
comment
Някъде в интернет видях, че bcrypt е базиран на шифър Blowfish. Но изглежда, че внедряването на Blowfish има както криптиране, така и декриптиране. така че това означава, че е възможно да се дешифрират bcrypted хеш стойностите? - person user3767551; 11.07.2014
comment
@user3767551 - Вярно е, че BCrypt е базиран на Blowfish, но докато Blowfish е алгоритъм за криптиране (двупосочен), BCrypt е истински хеш алгоритъм (еднопосочен). - person martinstoeckli; 12.07.2014