Quote:
Originally Posted by Fril Estelin
You'd be very surprised:
http://www.securityfocus.com/brief/762
<on MD5 dictionary attack>
Ok, I guess you're aware of the batches of MD5 collision done in the research litterature. Now, just so you know, experts are not expecting any real pratical progress before a few years, these were only theoretical attacks on MD5.
<on brute forcing passwords>
The guy who's going to do that will win bigger by being hired by the NSA, rather than exploiting his stolen data.
|
I just liked to respond on these two (and give others some insight in password safety).
First of all, the trojans used for gaining access to game accounts do excist.
However, when looking at their characteristics they are nothing compared to a banking trojan like Mebroot.
Second, while it might look hard to generate a MD5 dictionary or bruteforce them it's not that hard in reality.
It's not like we are generating collissions in huge documents.
We are talking about bruteforcing strings with known specifications.
We can safely asume that most of the passwords will be in the [a-Z][0-9] format. We can also assume that the password length is between 6 (if GW does not enforce a minimum of 8) and about 15 with the majority below 10 characters. That limits the list a lot.
Furtermore we can assume that the base of most passwords will be vulnerable against a dictionary attack.
So we take the dictionary and MD5 that one. Then we take that same dictionary and start adding numbers, making sure the total length does not exceed 10 (as start). So we start with '0password' to '99PASSWORD' and 'password0' to 'PASSWORD99'. Generating the MD5's on such lists is trivial.
And I think lists are available already. The same for SHA1.
Now if we were to compute a random string of [a-Z][0-9] things would already be different. Even at 9 characters we would be looking at an astonishing 13.000.000.000.000.000 combinations if I'm not mistaking. Add in an additional 25 uncommon characters and it will be 285.(lots of zero's again).
That's very time consuming to brute force.
So much for theory.
Practice is that people will use passwords that are vulnerable to dictionary attacks most of the time. That's the easiest to remember.
If that password is stored as 'plain MD5' in a database and that database is compromised (that's why you should not reuse passwords for things you care about) it's easy to obtain the real password.
As for people storing encrypted passwords in databases, it's easy to salt the password.
What it does is making each MD5 or SHA1 checksum 'unique'. If the word 'password' is encrypted this would generate a checksum (example, not going to calculate it for real) 'ABCD'. Doing the same with '1password' would generate 'DKFR' while '2password' would generate 'YRFT'. When the salt is long enough it would make the password impossible to obtain. Adding a salt of 3 characters [a-Z][0-9] would make it about 4.000 times harder to crack the password.
Doesn't look like much, but consider the 13.(many zeros) and multiply that one by 4000.
What I've done in the past is just using the UID to salt passwords.
Not on very sensitive information but in general it's good enough.
So much on this. Bottom line, use 'special characters' in your password, don't use important passwords on other places, try to avoid words from the dictionary.
And..... Why don't you write your password down and put it somewhere safe if you can't remember it because it's too complicated (like A^J$sT%P#@). It's not like someone willing to access your GW account will break into your house to obtain your password. Well, I assume you can trust your family....
The same for other important passwords. Just make sure that if someone does break into your house and obtains the list he/she can't do anything with it (so no UID/pass/application combinations).