Electronic Arts Hates Strong Passwords
kaurkuut.com
kaurkuut.com
The problem comes when you have so many different game teams with varying experience in online security that are allowed to basically implement it as they see fit, and basically "proxy" the account generation/creation process to that centralized user account system. While the underlying system is very capable, the individual game team's end-user offering can be less than optimal, shall we say.
This particular password issue is not an EA-wide thing, to be sure.
Again, it's all about the implementation. Some game teams opt to do their own storage of user information rather than rely on the remote service call to the centralized system.
In some cases, like the two projects I worked on, the central system doesn't store all of the user data you need, so you end up storing some in the local system, extending the centralized one. "Some" teams opted to build their own rather than take advantage of the one that existed. (For what it's worth, there is a lot of "build it ourselves" mentality in some teams).
This particular team have a few "interesting" things that they've done beyond the user authentication. Their authorization and entitlement implementations left more than a few of us from other teams scratching our heads as to how they opted to utilize the centralized EA service. It was less than ideal, and did cause some issues for a few other teams.
I don't want to get into it too much, but I guess if there's one message I'd like to share it's that EA is not one big company, but rather a whole bunch of individual development teams working on their own things. As much as there is an attempt to centralize a lot of knowledge and services, it's by no means a given that everyone's doing the same or right thing.
Just because one team totally screwed the pooch on stuff like this, doesn't mean others have as well.
A lot of the teams have some leeway and discretion when it comes to what technologies or internal services they use, and sometimes that's a good thing, sometimes it's not.
I'm just trying to shed some light that it's not ALL of EA's games, as the headline of the article implies.
There are tools and services in place to allow game teams to implement proper passwords and authentication, and they weren't used in this case.
Also, I wondered why EA doesn't use a form of openid via the user account. It has so many games, they all require EA logins, but as we've seen, different sites have different (often bad) implementations. A one-click EA openid would work wonders.
This goes into the same category as validating email addresses (just go ahead and send the confirmation email and watch me not replying in case I entered a bad address, instead of complaining I can't use plus or some other allowed character in it) or my phone number (if you're picky about formatting I can already give you 01234567890 if I want so just let me, in the first place, type in a nicely formatted "+44-123 4567890" or something that I like) or asking me to provide something twice (I'll just copypaste from the first field, thanks; would be more useful if you just printed a confirmation of what I wrote onto the next page).
Double inputs tend to seduce the user to copy&paste.
Maybe for us geeks, but I think your Average Joe is more likely to just re-type it.
Now I just make myself type it twice. I tell myself it's for my own protection.
Asking for something (normally a password or email) twice is for your benefit -- to guard against typos. There are many typos you might miss visual confirmation of, I'm fairly certain the type-twice method is a sound one.
If there's a typo in the e-mail field, you won't be aware of it until you forget your password and try to do a reset -- and for the majority of services, that means you are now completely locked out of your account.
I found out the hard way after I'd started to use Keepass to generate and manage my passwords.
There are even sites that have different limits for the "Change password" and "Enter password" input fields. Eg change accepts up to 30 characters but enter accepts only 20 chars.
Obviously they don't even know why it matters.
I think the developer just silently presumed that no one would enter such long passwords.
The problem is really prevalent.
But they had to make a specific decision to forbid long passwords; "lazy developer" or "silent assumption" doesn't explain the extra effort.
Those character restrictions are just silly and annoying though.
<input type="password" maxlength=20>
You're right, if they actively limit the character set and the length, it must have been a conscious decision.Oh, I remember another one that's just as annoying. This site simply chopped of your password after n characters and it never gave you any kind of warning. Took a lot of troubleshooting to find out the exact position of n.
This may just convince me to switch banks...
* 7 to 8 characters long * Must contain at least one of each: non-capitalized letter, capitalized letter, and a number * No special characters allowed
"The new password is to be chosen as a combination of alphabetics, digits and special characters. It must be eight characters long and contain one of the special printable characters (eg $ - ! : / = _). Normal alphabetic characters are case sensitive ie "a" is not the same as "A". Special characters may not appear at the beginning or end."
While it's almost the exact opposite of [0-9]{4,6}, it's extremely annoying too.
This is fairly secure for usual website password, but the requirements would throw this away:
$ openssl rand -base64 9
TjB3tbYOo1wz
Okay, it's fine when you generate a random password for each site (then store it somewhere), but if you're generating password from some one-side function from a site URI, then you have a problem.So, out of a keyspace of 10,000, they were shoehorning most of their users into a space of 365(366). I tried to enter something that was not a valid 4 digit date and the system rejected it. I had to call back and talk to a customer service rep to get a non-date PIN.
Sure, the 16 char limit may be arbitrary but even if you make it 50, tomorrow some outraged blogger will be complaining that he can't enter his 100-character password.
Here's a better way to construct a strong, yet memorable password:
Take a full sentence, including punctuation and capitalization. Use the first letter of each word as your password. For example, "I should go on Hacker News less frequently, because I'll be more productive." becomes "IsgoHNlf,bIbmp.". We now have three character classes in what appears to be a random sequence.
(Yes, this still has patterns due to being constructed from English. But we've effectively taken a longer English phrase, with higher total entropy, and compressed it into a string that doesn't exhibit the low per-character entropy of the full words.)
My computer says there are 234979 words. Pick 5 and there are 716382975036689591261090899 combos. That is actually very very close to a 15 letter alphanumeric. 62 ^ 15 = 768909704948766668552634368.
I don't doubt that IsgoHNlf,bIbmp. is a secure password. But it's a bitch to type. Especially on a phone.
The longer the password, the more secure I feel, even if it's one day leaked as an unsalted MD5. And I don't care whether I can remember it because my password manager has effectively superseded my memory.
There is no reason to put an upper limit to the password length.
I shudder at the thought that this is their way of preventing SQL injections or something like that.
It's better than nothing, but not much. The fact that they md5'd it at all suggests they were thinking about security, just not very hard or well.
Why would you encrypt passwords instead of hashing? Encryption by definition is two-way, so you can retrieve the original password.
Indeed: http://www.golubev.com/hashgpu.htm
On my pair of HD 5870's I get about 6.3 billion hashes/sec - with lowercase alphanumerics, that's up to 8 characters in about 8 minutes, 9 in 5 hours, and 10 inside a week.
Although MD5 is a little on the short side and collisions can be generated for it easily, it would still be a noteworthy breakthrough for someone to produce a primary preimage for MD5.
That's what it would take for someone to find a working password for your account given your salt and MD5 hash.
In other words, there are still no known cracking tools that can do much better than dictionary or brute force against MD5, so a very strong password is still very strong and a salted SHA-1 password would be only slightly stronger.
Though it doesn't fix any of the encryption limitations that they are using.
For another service, I would have thought that'd be okay - annoying, but okay. But a service with access to a whole bunch of my money? Not cool.
Perhaps it's changed since, but still, the fact that it once was that way is bad enough.
That's right, all that stands between you and your account details is 8 characters.
If someone tries to transfer out over ~$200 then you get a text message on your phone - IF you've enabled that service. So it's not the end of the world, but it's still pretty terrible.
Good thing i'm not with ASB.
So when talking storage... go that nice looking search field in your imap interface and type "password", any results? I guess its pleasant to never feel the need to delete any mail when you can search for it. Nice collection when attackers breach due to limitations in product.
obviously companies like EA will need to react to changing conditions -- which might be challenging -- educating computer-illiterate users isn't exactly a core business competency. Implementing more secure systems server-side only addresses half the issue.
Maybe the problem of website credentials could be better solved in the browser, or by the OS.
Just the other day I tried to change my twitter password to a password that contained a space, and it was denied. Their site doesn't allow passwords with spaces.
http://www.techrepublic.com/blog/security/american-express-p...
Passwords must contain 2 of each character type:
Caps alpha, lower alpha, symbol, number
Symbols can only be a handful, rather than anything goes.
Not salting though, should be against the law.
(I hope you're joking about spending an hour trying to log in, though.)
I'm serious, I've had to reverse-engineer projects I've inherited with pre-set administrator users, and simply googling the hashes reveals the password to be "elm", "password", or "9234" or something.
md5('something silly' + password + 'qtjwtrb89ujq309')
Now, if I were to make an authentication system again, I would use custom salt for every user, something like sha1('random1' + username + 'random2' + password + 'random3')
This way, there is no way to use rainbow tables or something like that.Single time hashes (even per-user salted), are no longer sufficient protection.