Cracking Passwords With Amazon EC2 GPU Instances
suraj.sun writes "As of Nov. 15, 2010, Amazon EC2 is providing what they call 'Cluster GPU Instances': An instance in the Amazon cloud that provides you with the power of two NVIDIA Tesla 'Fermi' M2050 GPUs... Using the CUDA-Multiforce, I was able to crack all hashes from this file with a password length from 1-6 in only 49 Minutes (1 hour costs $2.10 by the way.). This is just another demonstration of the weakness of SHA1 — you really don't want to use it anymore."
But, regardless of the hash method, 6-character passwords are ultimately worthless.
vos nescitis quicquam, nec cogitatis quia expedit nobis ut unus moriatur homo pro populo et non tota gens pereat.
What is this 1995? Does anyone use passwords that short for anything they care about any more? I'd be interested if they could break 6-12 char passwords with lower, upper, and special characters.
I bet loftcrack could do this same job faster. What is the news here?
Copyright 2010. All rights reserved. This comment may not be copied in any way including, but not limited to caching.
Ah, thanks. But no worries, we still use MD4 over here! And most people still use MD5.
This just shows one more time that SHA1 is deprecated — You really don't want to use it anymore.
No it doesn't show anything. Your "attack" would only have been marginally slower with SHA-2, because SHA-2 is a bit slower of SHA-1. You didn't exploit any weakness of SHA-1 in this brute-force attack.
Does this mean I can no longer rely on my 6 character passwords?
This just shows one more time that SHA1 is deprecated — You really don't want to use it anymore
Or you could, you know, use a salt (like any competent password system). And require eight-character passwords (like any competent password system). That will stave off obsolescence for maybe another decade.
Good job.
Too bad that any half-competent sysadmin requires user passwords to be at least 8 characters, and has done so for the last 10 years now.
I agree the story could have been framed better. There is in any case some story here. For certain computational tasks, the linear performance scaling that vanished in a puff of Prescott has returned from the grave.
And not only that, instead of spending $20,000 to buy a Fermi class workstation and getting your result in a year, you can throw the same $20,000 at the cloud and have 10,000 machines deliver your result in an hour, for large instances of cloud.
This applies to a class of computational tasks denominated in CPU cycles where you can cut a wide swath.
Moore's law still exists, it's just not evenly distributed.
So this also proves that, ultimately, this list of passwords was not properly hashed.
People jump up and down and scream that SHA1 and MD5 are broken, but if properly used, they still offer significant password security. One trick is to use salts when storing passwords in the database.
password: 'foo'
salt: '2010-11-16T08:39:05Z - some_random_string$#@!'
password-hash (md5): 14e80778512f578a5fe263abe4b58e9c
that increased the amount of time required to brute-force the password significantly. Also, the use of a database of hashes is largely worthless since each password in the list would have a completely unique hash. for the sake of brute-forcing the data, short passwords don't matter (on the other hand, brute-forcing login to the application is not affected). Having a different salt for each password makes the time spent on each other password completely worthless once the cracker gets to the next item in the list.
to improve that, we can say... hash the result 1000 times in a row. For someone trying to brute force the hash, they would spend 1000x the CPU resources creating the hash. It's mostly not a big deal to run that hash 1000 times when creating the information for the database or authenticating the user.
of course, SHA1 and MD5 are still broken when it comes to file integrity checking (when it comes to tampering) since there are documented collisions. For this case, cryptographic signatures are where it's at. You can guarantee that not only was the file not tampered with, but also that the person who supplied the signature was who they say they were. Gotta love public key encryption.
...spike
Ewwwwww, coconut...
Obviously this service will be used by pirates (and not the "arrgh matey" kind), hackers and terrorists and anyone else that gets labelled as a bad person (tm), so we better pre-emptively ban Amazon as they are the ones offering it up.
I am Slashdot. Are you Slashdot as well?
you apparently need to throw some of that horsepower into your webserver. Amazon has some solutions there for you.
Do not meddle in the affairs of sysadmins, for they are subtle, and quick to anger.
Obligatory.
"Using the CUDA-Multiforce, I was able to crack all hashes from this file with a password length from 1-6 in only 49 Minutes..." [emphasis mine]
Sounds like someone missed the day they taught exponents in school.
Pretend he only tested 72 characters: a-z, A-Z, 0-9. Going from 6 to 8 characters would make this take 5,184x longer. (72x72). 49 minutes x 5184 = about SIX MONTHS.
Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
As part of my graduate studies, in Computer Science at Texas A&M University, I built out a LAM/MPI - CUDA cluster. With this configuration we had access to all the CPU/GPU on all the systems in the lab. Although it requires knowledge of both API it can be extremely powerful. I'd love to see a cloud based system based upon this configuration. Now that would be worth paying by the hour to use!!!
896 CUDA Cores (2 x NVIDIA Tesla C2050 (Fermi) cGPU) is nice but imagine the power of a data center filled with these!!!
Encryption: I may not agree with what you say, but I will defend your right to encrypt it...
...and no google cache or coral cache. Is it mirrored anywhere?
Or you could use passwords longer than 6 letters
Google's Super Secret Search Algorithm: SELECT @search_results FROM internet WHERE @search_results = 'good'
OK, nice job hashing passwords that aren't allowed on the network. At that rate, with 8 character passwords, it'd take you 300 days to compute the rainbow table. And I'm assuming that you didn't compute every possible salt value, so even then you have a useless table.
How does stuff like this make it on to Slashdot in the first place?
the guy forgot to set up another amazon cluster for his website...
"1 hour costs 2.10$ " No, it costs $2.10. Slashdot is killing the language. You won with "loose". You won with "noone." And "pitty". And "opps". And "guage". And the random insertion of apostrophes. And the language corruption campaign rolls on like Sherman's march into Atlanta, burning and laying waste to everything in its path. The Morlocks have won.
Is this supposed to show that GPU is better than CPU at computations? I've always thought that CPU, being the core unit, is better than GPU at general computations.
Man, all that computation power, and the first thing people think of is cracking passwords... It's a bit sad.
The "strength" of any crypto is based upon the time that the current technology will take to brute force it. A while back 56bit was considered "secure" because it would take the resources of a government to amass enough computing power to brute force it within your lifetime.
Each advance in computing power chips away at the "strength" of all forms of crypto. I am sure that we will see a flurry of sensational articles in the next few days about how the sky is falling. Readily available, cheap, computing power will shift the balance of power a bit, but it is just one more step in a long journey not the end of the world as we know it.
Governments and organizations that rely on crypto know that all crypto has a shelf life and plan accordingly by specifying longer keys and new algorithms years before they are required.
He's got 14 hashes and cracked 10 of them with passwords of length 1 through 6, some of which contain proper symbols like "P4s$" and "G0o|)".
Length 1 through 4 take less than a second.
Length 5 takes 31 seconds.
Length 6 takes 2950 seconds.
I can see why he probably didn't want to cough up for Length 7 or above.
Amongst the passwords he didn't find was, according to Google Search: "password". Amusingly, I think one of the passwords he didn't manage to crack was the empty string.
I figure you'd have to polish that package a bit for a real attack, but undoubtedly people already have done that somewhere and hence it's a good idea to follow his advice anyway.
Heh, you missed the "Dictionnary attack doesn't show any weakness" thread above....
Placing the dollar sign after the value isn't necessarily a mistake; it's valid usage in some parts of the world. This might also indicate that the author's first language isn't English, which might excuse some of the other mistakes.
All those were cause by Slashdot? Wow! I am impressed at the power of Slashdot and its ability to travel backwards through time. Now, that is what we should be calling the Slashdot effect. I could have sworn problems with "loose" and "opps" existed before Slashdot (likely the others as well).
Are you sure you are not just blaming Slashdot for all the language woes like the sitting President is at fault for all the country's woes? Personally, I think the problem is with the written language and the inconsistency of the rules.
Go ahead and blame Slashdot; I'm going to blame the nature of language itself. Your Anglo ancestors, Germanic Ancestors, Indo-European Ancestors, and the like would all assure you, that you are a demonstration of the continued degradation of the language. Most of them couldn't understand a word you are saying anymore than they could a "hood-rat".
Those password hashes are just SHA-1 hashes. Hashes coming from something like unix's crypt()-like functions use many rounds of hashing and therefore take that much longer to crack.
"of course, SHA1 and MD5 are still broken when it comes to file integrity checking (when it comes to tampering) since there are documented collisions"
No, they are not broken since you still can not intentionally modify a given file in such a way that you obtain the same hash. In the case of MD5 there was a proof of concept where they were eventually able to synthesize two blocks of data that had the same hash, but that is a long way from being able to alter a file and retain the hash, and even that mild weakness took months of computation.
"For this case, cryptographic signatures are where it's at"
What do you think a cryptographic signature is? It's just a hash ( typically MD5 or SHA1 ) which is then encrypted using a public key.
Sure, CPU's include a FPU these days, but in the early days between the 8086/8 you had the 8087 FPU, 286's had the 287, 386's the 387, and even 486SX's could have a 487 added (DX's had it built in). The Pentium class CPU's were the first to have all models include a FPU. Since then, all CPU's have included one.
But now, for more intensive items, we have "physics" cards, GPU cards (which at first glance appear to be FPU's?) etc. So, is the FPU as an addon on its way back? Perhaps.
Nobodies Prefect
Tidbits for Techs Technology Blog
Not to mention the fact that the real problem is the use of a HASH to protect private information is the flaw, not the particular algorithm used. A cryptographic hash only attests to the correctness of the original data ( a password in this case ); it is not supposed to keep it secret -- that is what encryption algorithms are for.
In other words, the flaw is in storing password hashes in a publicly readable file in the first place. Of course every unix admin since 1980 has known this. Of course, most unix systems have simply tried to take away the public part by using a shadow file, which still incorrectly uses a hash algorithm rather than an encryption algorithm to secure private data.
That's nothing. I can crack a list of 100,000 plaintext passwords in under a minute.
Conclusion:
2x Tesla “Fermi” M2050 GPUs ~= 31x Pentium 4 @ 2.0Ghz (236,360,712 SHA-1 per sec / 7,716,049 SHA-1 per sec
2x Tesla are probably equivalent to 2 or 3 of Intel/AMD newest 12/16 core server processors in raw calculating power
In this instance GP/GPU isn't that impressive.
From (arctic.org/~dean/crypto/sha1.html): SIMD/SSE2
Clock Cycles Per Byte: 16.2 for a Pentium 4
Minimum Input Block Size: 16 bytes
Total Clock Cycles Per SHA-1 Hash: 259.2 (16.2 * 16)
1x P4 @ 2.0Ghz can calculate (SHA-1 / second): 7,716,049 (2billion / 259.2)
From Article:
94 symbol character set (a-zA-Z0-9 + special characters)
The kernel calculated all possible SHA-1s for all 1, 2, 3, 4, 5 and 6 character combinations in 2950.1 seconds
Total number of SHA-1s calculated: 697,287,735,690
(94 + (94 * 94) + (94 * 94 * 94) + (94 * 94 * 94 * 94) + (94 * 94 * 94 * 94 * 94) + (94 * 94 * 94 * 94 * 94 * 94))
2x Tesla (SHA-1 / second): 236,360,712 (697,287,735,690 / 2 950.1)
6 chars, if you got 8 bits of entropy per char (which you don't, 4 is high level of entropy to obtain out of a normal 'password', but we'll assume 8.
SHA1 has 160 bits of entropy space, 80 bits of usefulness if you take into account the shortcuts that can be done due to design flaws.
That would make a 10 char password required to fill out the useful entropy space in SHA1 at 8 bits per char. So realistically you need 20 character passwords before you start hitting the entropy limit. Let me give you a hint, each character you add, means it takes 256 times longer to search all possible combinations (or 128 times if you're just doing a normal password (7 bit ASCII). That means 10 chars would take 128*128*128*128*49 minutes. ... or roughly 25,008 years, at a cost of roughly 406.3 million dollars, if you ignore the charges for the disk storage space your EC2 machine is using on the EBS or S3.
You simply need more than 6 characters to cause collisions in SHA1, so you didn't shows its weakness, you should how easy it is to brute force weak passwords.
At 6 characters, anyone serious about hacking just has a lookup btree that'll return the result in a split second if they are serious about it.
Tell me how long it takes to crash a 10, 15 or 20 character password, then come back to me about SHA1 security.
Of course, password hashing is a cheap hack used to get around real password security with an encrypted database.
Hashing != encryption, regardless of what some moron on some forum tells you. Its full know that ALL hashes have collisions and are brute forceable. The collision domain is defined known up front. Once you get a file more than 20 bytes in length, you will no longer be able to generate unique SHA1 hashes for all possible combinations.
So neat, you can crack weak passwords in an hour, welcome to 10 years ago, now it takes 1 hour instead of 3. People still use shitty passwords so breaking SHA1 is pointless, its far easier to just guess the damn password which would work equally well for SHA256 since we haven't even exploited SHA1 to its fullest with the weak passwords being used.
This reads like an advertisement, it even includes the cost of the service.
I'm pretty sure it could be done cheaper and faster using Elastic Map/Reduce which password brute forcing would fit very nicely into.
Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
"This means that SHA-1 and MD5 are not suitable for "signing" usage where you have a plaintext where you want to prove that the original has not been changed. It's too easy for an attacker to alter the plaintext in a easily hidden manner so that the hash stays the same."
But is it possible to alter the plaintext in a way that creates, say, a security backdoor and have the hash predictably remain the same? Obviously, there will be some finite rate of hash collisions, but it seems to me that they wouldn't help an attacker that much if the attacker can't choose what the alteration will be, while still maintaining the same hash. It would seem that just having a source package with the same hash that still compiles would be strong evidence that it hasn't been changed. But maybe there is something I don't understand - maybe an attacker could add a "comment" that returns the hash to the same value after coding in an exploit. If any experts would care to elaborate, I would be appreciative.