Bcrypt is now obsolete
daemonology.net
daemonology.net
We'd use the term "adaptive hashing" or (less accurately) "key strengthening", but it wouldn't be actionable. Bcrypt is actually still current, since very few stable implementations exist for your algorithm, and you are surely not recommending people implement their own crypto.
It's good work though, and I look forward to recommending it, when it becomes reasonable to do so.
Maybe a better title here would have been "bcrypt's use of MD5 makes it insecure compared to scrypt". (I don't know how to best word the title; I would have not submitted the article, since I'm not an expert on security.)
bcrypt is a key derivation function, like scrypt. It's openssl which bogusly uses MD5 as a key derivation function.
It's a hash function with a crypto-strong drag factor. A massive improvement in MD5's speed would be a win for MD5. bcrypt (and scrypt) are designed to stay on the opposite side of that tradeoff.
Sometimes the same story is posted multiple times. One post will have a bait-y title and the other will have a boringly accurate and truthful title. Of those two, one of them always disappears with 3 or 4 votes and the other climbs the front page charts. Exhibit A:
A Comparison of Approaches to Large-Scale Data Analysis: MapReduce vs. DBMS
vs.
Parallel DBMSs faster than MapReduce
Then there are the science articles with accurate titles and hypetastic titles. Exhibit B: Long-Distance Teleportation Between Two Atoms Achieved
vs.
Scientist Teleport Matter More Than Three Feet
So, it's not like the descriptive titles aren't already there waiting to be promoted, it's just that hyperbole always wins in the marketplace of up-arrow clicks.That said, I'm mostly but not entirely on cperciva's side. At the granularity level of "disable HT" versus "put head in sand", I favor the former and think that Linux's choice of the latter was irresponsible. I also think all the ad hominems regarding self-promotion, cribbing from DJB, etc., were off the mark. However, your observation that a local privilege escalation vulnerability of any sort would be a more serious issue than the HT vulnerability, and that such is virtually guaranteed to exist, was a good one. The right answer, perhaps, would have been to disable HT in vanilla FreeBSD, and then re-enable it for PC-BSD.
I wasn't aware of PC-BSD at the time, but if someone had come to me and said "we're shipping a version of FreeBSD aimed at desktop users", I would have encouraged them to leave HT turned on by default. I always did my best to point out that this issue was not relevant to single-user systems, that all FreeBSD was doing was changing the default behaviour, and that in many cases it would make sense for system administrators to re-enable HT via the sysctl... unfortunately, the nuances tended to get lost as the story spread, so all most people heard was "Colin says that HyperThreading is evil and FreeBSD is disabling it".
You do now. :-)
Not yet.
perhaps you wouldn't mind shortly explaining the difference between a KDF and a cryptographic hash function
Cryptographic hash functions produce fixed-length collision-resistant output, ideally as fast as possible. KDFs can normally produce arbitrary lengths of output, and don't need to be fast -- in fact, being fast is a disadvantage, since secure KDFs are expensive to compute (because they need to resist brute-force attacks).
I'm assuming what you meant to say is "it won't be because cperciva doesn't know what he's doing."
It actually misses my intended point, though. This forum is generally exceptional in the quality of its submissions and comments, which is what makes it even more annoying when someone says:
I don't know this guy. Probably he is really
famous (?), but ...
This amounts to saying "I don't know what I'm talking about, and I'm not going to bother doing any homework before making my ignorance known to you all ..."However, it seemed to me from your original comment that you proclaimed ignorance and didn't do any homework. I feel that that is at odds with what is expected of this community.
Perhaps I'm wrong, and I'll say no more.
I have confidence in the author and high hopes for the algorithm but I believe it prudent to wait for the ink to dry before putting it anywhere it would matter. :)
file /usr/bin/* | grep Bourne | cat `cut -d: -f1` | grep cperciva
Search for "scrypt" python
More to the point, you can parallelize attacks on most KDFs by building an ASIC with many copies of a password-cracking circuit. With scrypt, the vast majority of the IC area (and thus cost) is RAM.
Not a crypto expert, but don't most people crack passwords by just running common words or every possible combination of N characters through your encryption system, therefore as long as your encryption mechanism is good enough it doesn't matter what you use?
Basically what it comes down to is that with bcrypt (and all the other widely used KDFs) it's vastly cheaper to attack the KDF with a custom circuit than it is to buy general-purpose computers and run a software key cracker. With scrypt the advantage that TLAs with ASICs have is much smaller.
There are other competent cryptologists out there, y'know :-)