Live data from Hacker News

League of Legends database compromised, passwords hashed without salt

euw.leagueoflegends.com

11–20 of 109 posts

Re: League of Legends database compromised, passwords hashed without salt

#11
post #2

It says encrypted not hashed, these are not the same thing. Encryption uses keys and without the keys you can't get the value without a huge brute force effort. Hash without salt can be broken trivially. It'd bad either way but encrypted is way better than leaked hash.

I believe they mean hashed (as pointed out later in the article) but if it was encryption I'd disagree pretty strongly with the assertion it's safer than straight hashing.

If you don't need the original password, hashing should be used, not encryption. Hashing means there is no issue of key management as is the case with the encryption system. If those keys are mishandled then it's trivial to recover all the plaintext passwords.

Decryption would be difficult without the keys, but it's likely that (a) they have keys stored somewhere insecure or (b) they'd perform the encryption with a single key for all passwords. For (b), this means you simply had to have a valid account and you'd have a plaintext-ciphertext pair to bruteforce. Once that single key is extracted you'd have access to all the other passwords as well.

Re: League of Legends database compromised, passwords hashed without salt

#12
post #8

Is there a good authentication system that doesn't involve storing passwords, hashed passwords, or encrypted passwords in the master database?

There's Secure Remote Password, which stores a non-reversible verifier instead: http://en.wikipedia.org/wiki/Secure_Remote_Password_protocol Apparently it's quite tricky to implement properly though.

It's also quite tricky to explain to your investors and your customers that your password database was stolen.

Maybe some day there will be "Security as a Service" where someone helps you do this properly.

Re: League of Legends database compromised, passwords hashed without salt

#13
post #2

It says encrypted not hashed, these are not the same thing. Encryption uses keys and without the keys you can't get the value without a huge brute force effort. Hash without salt can be broken trivially. It'd bad either way but encrypted is way better than leaked hash.

I was going to ask: is there actually any benefit salting a password that will be encrypted?

It is really kind-of very good practice to salt passwords. We've talked a bit about this recently here on HN:

http://queue.acm.org/detail.cfm?id=2254400

http://news.ycombinator.com/item?id=4082746

Re: League of Legends database compromised, passwords hashed without salt

#15

Is there a good authentication system that doesn't involve storing passwords, hashed passwords, or encrypted passwords in the master database?

Yes. A great, practical and scalable example is found in ssh: http://en.wikipedia.org/wiki/Secure_Shell#Key_management I'll try to explain how it works in non-technical terms (so please don't nitpick as I'm glossing over details)

User generates a public and private keypair. The public key is given to the remote site (such as LoL or Linkedin), but the public key is not secret -- it is public. You can post it on your blog, whatever. You can use it for multiple accounts without concern.

The public key allows one to encrypt some data, but the public key cannot decrypt the data.

The private key can decrypt the data.

When the user wishes to log in the remote site, using the public key, encrypts a random string and sends it to the user. If the user manages to successfully decrypt this random string and send it back then the remote site can infer that the user holds the private key -- because only the private key can perform the decryption.

The private key is never sent to a remote party. Only meaningless random strings are communicated over the wire.

The (significant) drawback to this method is that the user will have to have the private key with them in order to perform the authentication. But perhaps mobile devices will solve that problem for us.

Re: League of Legends database compromised, passwords hashed without salt

#16

Is there a good authentication system that doesn't involve storing passwords, hashed passwords, or encrypted passwords in the master database?

Yes. A great, practical and scalable example is found in ssh: http://en.wikipedia.org/wiki/Secure_Shell#Key_management I'll try to explain how it works in non-technical terms (so please don't nitpick as I'm glossing over details) User generates a public and private keypair. The public key is given to the remote site (such as LoL or Linkedin), but the public key is not secret -- it is public. You can post it on your b…

I would love to see an ssh-like key exchange built into browsers. You add your key to the site, GitHub style, and then you use that for auth. No more nonsense with OAuth or "remember my password" or the remote site having your password just because they grabbed the DB. It's just a useless public key to them.

Re: League of Legends database compromised, passwords hashed without salt

#17
post #6

Is there a good authentication system that doesn't involve storing passwords, hashed passwords, or encrypted passwords in the master database?

http://en.wikipedia.org/wiki/Federated_identity

Federated identity doesn't replace passwords, it just punts the whole process of authentication to a third party. That third party will still need to authenticate the user somehow, which brings us right back where we started.

Re: League of Legends database compromised, passwords hashed without salt

#18
post #3

Just be sure you don't use your LoL password on any other game/email. The hackers will very likely test the info against your email and diablo 3.

Well, to be pedantic, there's no such thing as a "diablo 3" password, only a battle.net password. A WoW account is more lucrative.

Re: League of Legends database compromised, passwords hashed without salt

#19
post #4
post #2

It says encrypted not hashed, these are not the same thing. Encryption uses keys and without the keys you can't get the value without a huge brute force effort. Hash without salt can be broken trivially. It'd bad either way but encrypted is way better than leaked hash.

Later it says "We compared encrypted password hashes" so they are probably hashed.

That is an admission, otherwise this act would be futile.

"We think someone stole animals from our pet shop, so we compared the empty cages to filled ones to figure out..."

Re: League of Legends database compromised, passwords hashed without salt

#20
We can't actually tell much about their password storage mechanism from that post. For one, they mention "encrypted hashes", which might mean encryption, might mean hashes, or might mean both; for two, they don't describe how they determined which users had weak passwords. If they were using some kind of reversible encryption scheme, it's possible that they ran that function against their database and determined common passwords that way.

I'll give them the benefit of the doubt, unlikely as it may be, because if they were in fact doing something as stupid as SHA1 or MD5 or ROT13, and they still opened their post with "Keeping player information secure is very important to Riot", then somebody needs to be strangled as an example to other mealy-mouths.

I also take issue with telling your users what kind of passwords to use. If you're storing passwords correctly, and if you're blocking brute force attempts, it almost doesn't matter what password your users are using. (Almost: somebody could still try "password" on an account and get lucky if it's one of the 10,000 accounts with that password.)

Post reply on HN