I found this article on SO, but the answer was short, and the subject was closed,

What i don't understand, is:
Which one of the two limits memory usage to avoid custom Hardware to break the password?

Edit: there is an excellent discussion for beginners like me here:


The scrypt function is specifically designed to hinder such attempts by raising the resource demands of the algorithm. Specifically, the algorithm is designed to use a large amount of memory compared to other password-based KDFs, making the size and the cost of a hardware implementation much more expensive, and therefore limiting the amount of paralleling an attacker can use (for a given amount of financial resources).

It means that some hashing algorithms use few memory, so that specific, custom hardware can be created to brute-force it. Since they use few memory, those hardware aren't that expansive, and can be done, at some extent.

When you require a large ammount of memory, you assure it won't fit in those L1, L2 and even L3 caches of the processor, so external memory (slower) will be accessed. And also means that a custom hardware will require a large ammount of memory, for each processor, and that is very expensive, specially if it is fast...

edit Yes, including PBKDF2.... http://en.wikipedia.org/wiki/Scrypt

edit 2: also read the accepted answer on this: https://security.stackexchange.com/questions/4781/do-any-security-experts-recommend-bcrypt-for-password-storage


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.