3 ms·
> The answers are the MD5 hashes of correct lower cased answers: you should be able to check responses from real users you challenge with the question against t
by shakna 7y ago
> The answers are the MD5 hashes of correct lower cased answers: you should be able to check responses from real users you challenge with the question against these checksums.
That's a somewhat concerning choice of hash function. MD5's collision resistance is broken. It is well known to be broken, for more than a decade.
There's references to PHP on the page. 10 years ago [0] this message appeared in PHP's manual:
> The well known hash functions MD5 and SHA1 should be avoided in new applications. Collission attacks against MD5 are well documented in the cryptographics literature and have already been demonstrated in practice. Therefore, MD5 is no longer secure for certain applications.
[0] https://www.php.net/manual/en/function.hash.php#94104 https://www.php.net/manual/en/function.hash.php#94104
- edflsafoiewq 7y agoIs that a problem for this use case?
- shakna 7y agoThey're matching checksums to prove it's a human. You can check these checksums, and find or create input that will match it nearly effortlessly. So yes, I'd say that's a problem for this use case.
- edflsafoiewq 7y agoI don't really see how. What does generating collisions get you? Doesn't this just require preimage resistance?
- dnet 7y agoThat's only relevant if you're using it to make signatures, thus you can make two inputs that hash to the same digest, and signing that digest creates a signature that's valid for both inputs. In this case, the only threat model might be brute forcing the answer, but that applies to SHA-2 as well, since both are designed to be fast so that you can hash gigabytes in reasonable well. For that, something memory-hard such as Argon2 should be used.
- shakna 7y ago> That's only relevant if you're using it to make signatures, thus you can make two inputs that hash to the same digest, and signing that digest creates a signature that's valid for both inputs. It looks to me like they're just checking hashes, so if you have a collision, you can game it: > The answers are the MD5 hashes of correct lower cased answers: you should be able to check responses from real users you challenge with the question against these checksums.
- phyzome 7y agoCollision resistance is irrelevant if there's already a hash value specified. What matters here is being able to find preimages for a given output, and even if MD5 had a practical preimage attack, it would be too expensive to use just for cracking captchas. :-) PHP is a red herring; this would apply for any language.
- shakna 7y ago> PHP is a red herring; this would apply for any language. I used the warning from the PHP manual, because the site creator should be familiar with it. You'll find similar warnings against MD5 everywhere.
- carl_dr 7y agoThe problem is rainbow tables, not collisions. Search Google for f6f7fec07f372b7bd5eb196bbca0f3f4, and you’ll see the answer is Friday. That stateless PHP example is rendered useless by this.