Тъй като форматът на хеширания низ ($2y$10$salt....) сам по себе си дава улики на хакера (т.е. който е хакнал DB), че криптирането се извършва с помощта на алгоритъм Bcrypt и така той може лесно да хакне с помощта на password_verify() в php, като предава параметри като негови пароли за предположение.
Препоръчително ли е съхраняването на Bcrypt хеширана парола директно в DB?
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
Някъде в интернет видях, че bcrypt е базиран на шифър Blowfish. Но изглежда, че внедряването на Blowfish има както криптиране, така и декриптиране. така че това означава, че е възможно да се дешифрират bcrypted хеш стойностите?
- person user3767551; 11.07.2014
@user3767551 - Вярно е, че BCrypt е базиран на Blowfish, но докато Blowfish е алгоритъм за криптиране (двупосочен), BCrypt е истински хеш алгоритъм (еднопосочен).
- person martinstoeckli; 12.07.2014