Stolen Adobe Passwords Were Encrypted, Not Hashed
rjmarvin writes "The hits keep coming in the massive Adobe breach. It turns out the millions of passwords stolen in the hack reported last month that compromised over 38 million users and source code of many Adobe products were protected using outdated encryption security instead of the best practice of hashing. Adobe admitted the hack targeted a backup system that had not been updated, leaving the hacked passwords more vulnerable to brute-force cracking."
Why is it that every single time some big entity's password database is breached, it turns out that they're not following best practices for password storage? Maybe I just don't remember the times when it hasn't been this way...
Today is a good day to be a pirate.
http://xkcd.com/1286/
Like me, their "System/Network Admins" must ignore Adobe's requests for "Important Updates"
I don't think that was ever considered an acceptable practice...
Online security (or lack thereof) is one of the reasons it's a bad move to turn your Adobe Creative Suite into a cloud based subscription service.
Adobe used 3DES. I've RTFA, so you don't have to.
Now if you don't know, 3DES is reasonably safe. It is a block cypher. So unless they also stored the key to the data, the password is reasonably safe. Of course, identical passwords with straight 3DES will be encrypted to same result, but I'm certain no one uses the same password for one website as anywhere else, right??
And nothing you do or say will change the fact you misspelled "situation".
Adobe admitted the hack targeted a backup system that had not been updated, leaving the hacked passwords more vulnerable to brute-force cracking.
Apparently even Adobe has trouble keeping up with updates and patches...what's the matter, get tired of the update server's nagging every couple of weeks?
I'm sure there's some irony to be found in this situation somewhere...
"I love animals! Some are cute, others are tasty, what's not to like?" - Betsy Schroeder, Jeopardy contestant
It wouldn't matter if users just followed best practices for password selection.
True, but that is only part of the story. There is also the email address used with Adobe. Users also need to exercise caution with links and attachments.
Last week I started to receive phishing emails on the unique email address that I had used with Adobe.
Storing only hashed, salted passwords has only been common practice since 1970s Unix.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
Why is it that every single time some big entity's password database is breached, it turns out that they're not following best practices for password storage? Maybe I just don't remember the times when it hasn't been this way...
I've lost my copy of "The Big Book of Best Practices" and would like to purchase a new copy.
It's not on Amazon or eBay - would you sell me your copy?
(Or alternately, point me to the content for chapter 6: "Best Practices for Security in IT".)
When was encryption instead of hashing ever best or right practice? Did someone at Adobe just not understand and everyone else at Adobe accepted that?
now we need to go OSS in diesel cars
The passwords are very breakable as they used the same IV's and keys for every password. Thus any two same plain texts have the same cipher text. A little, simple statistical analysis will get you the keystream and allow you to get all the plain text passwords.
gaping holes in the software for black hats, with all the security of a row of shoeboxes on a busy street for their business secrets. there are no grownups there.
if this is supposed to be a new economy, how come they still want my old fashioned money?
People who use "best practices for passwords" have passwords that are so brutally hard to remember for a human being that they end up having to 'save' it on a Post-It note stuck to the side of their monitor or "hidden" under a pile of papers that others can look at. Or relegate the 'remembering' of their passwords to another piece of software like a system wallet/keychain, which is just offloading responsibility to another system that itself is an unknown quantity with respect to being well written. But even if a user uses a wallet/keychain, that doesn't remove the Post-It note vector if they need to use the password on more than one piece of hardware. It or a text file on a thumb drive are the common ways to transfer these kinds of passwords between devices.
The reality of how the average person uses a computer often does not reflect the theories that many so called computer security experts have. That is because the latter forget that they are not in the center of the human standard normal curve. Most people don't think like programmers or so called security experts. Better to make the system secure than rely on people to follow so called password best practices. If it isn't easy for the average user, they won't use it.
-- I ignore anonymous replies to my comments and postings.
According to Adobe, until a year ago, they were doing it wrong, using the wrong encryption in the wrong way.
The bad guys got a year-old backup, so it was encrypted using the old (wrong) method.
Since the old backup is done wrong, that tells us only that the primary USED TO be done wrong, which is exactly what Adobe is saying. It tells us nothing about the current database.
I haven't checked, but I assume my own Adobe account was part of this leak. And I don't care.
Along with a large portion of the increasingly savvy population, I have more than one "level" of password in use. My account used the lowest of these, basically something like adobe_123. Learning that is not going to help anyone form useful heuristics on how I create my banking passwords -- it might even poison them.
On the whole, I believe the breach will probably help crackers (if decryption can be achieved). But, I think it is foolish to automatically assume that accounts with "weak" passwords are contributors to the problem. As with me, they might be poor indicators of how humans choose more important passwords.
Of the 12,000 or so sites I've seen, well over 90% do it wrong. I'd estimate 95%. Many store passwords in plain text.
Most use 3DES, which was reasonably secure in 1972. Today, 3DES is cracked in milliseconds.
Sometimes we see an unsalted hash, including MD5.
A few have used MySQL's PASSWORD() and the phpass gimmick scheme which are reasonably secure but non-portable.
I consider "doing it right" to be a salted hash. For new software, bcrypt / blowfish or a SHA primitive.
Preferably, SHA-256 or SHA-512 via crypt($5$salt$, password) for portability and consistency.
For existing code, I consider SALTED MD5 to be acceptable, but the length of the input should certainly be validated.
XKCD showed why it's not at all safe in this instance. Here's the table:
email cryptw hint
ac@slash.com 737462 first apostle
dumb@adobe.com 737462 hot neighbor
From the encrypted password, we see that these two users have the same password. Now look at the password hints. What do you suppose is the password they BOTH used?
SHA-2 is a family of hashes including SHA-256, SHA-512, etc. you dolt. Additionally: Keystretching is fine, so is key stretching and recording the resultant hashes into a chunk of RAM, then hashing that and continuing the process for your keystretching to make it memory hard. SHA-2 can be every bit as effective as any other option you'd go for. You're clearly an ignorant fuck.
I use bcrypt - but then again you can pretty much f*ck it up using a work cost which isn't reasonable these days...
Or even the username, customer number, and password? I mean you want as much in the stew as possible right? Then add a little salt to taste.
SHA-2 includes both SHA-256 and SHA-512. Password hash algorithms generally use repeated iterations to slow brute force attacks. For instance, crypt modular hashes use $5$rounds=....$ and $6$rounds=...$ as the prefix for these hashes (respectively) to indicate which type and the number of iterations.
As far as I know, they're currently fairly solid for the purpose of hashing passwords, but CPU/GPU power marches on.
If I have been able to see further than others, it is because I bought a pair of binoculars.
SHA-2, aka SHA256 or SHA512.
http://en.wikipedia.org/wiki/SHA-2
The more you know....
Thank you for the correction.
I meant DES, not 3DES. Most use crypt(random), htpasswd, or compatible.
* Not to be confused with crypt($5$salt$), which is secure SHA-256.
In practice hashing is often much less secure than encryption for passwords. The devil is in the details.
Here it seems that Adobe made some poor design choices in the encryption algorithm. Yet, despite these flaws, assuming the encryption key is not compromised they might still be better off with their encryption rather than a poor hash mechanism such as the one used for example by Sony and revealed in the playstation hack by anonymous.
In general if the encryption key is not compromised, then encryption provides much more security than pure hashing, or even hashing with a salt. The reason for that is that with encryption, the security of the password depends on the strength of the secret key. With hashing, the security depends of the strength of the password. This is a significant difference. So, if your password is 4 characters long, even the best hash algorithm will fail to protect from a brute force attack. However, if that same password is encrypted, you need to brute force the key which would take centuries assuming the key is long enough.
To be more precise:
1) Pure hashing (applying SHA1 alone for example) is almost the same as having no security at all.
2) Hashing with a salt is a bit better but still won't resist long given computational power offered by GPUs and cloud computing.
3) An iterated hash function with a salt is much better (see PKDF2), and buys you some security but still vulnerable from brute force attacks using GPUs and pooled cloud resources.
4) A "sequential memory-hard" hash function (with salt and iteration) such as "scrypt" is pretty safe today.
Unfortunately in reality most companies use either (1) or (2)...
The drawback of encryption is that you need to make sure that your key is safe. Once the key is compromised you're toast. This means that you should not put the key on the same system that is hosting the password database (it may sound evident, but I've seen it done). It requires putting the key in a HSM (Hardware Security Module) or in a distinct ultra secure server, distinct from the password database.
Of course, if you have the possibility to keep a key secure, the best option is to use a *keyed* hash function (an iterated salted version of HMAC for example), getting the benefits of both worlds...
even xkcd beats Slashdot to a story.
I won't even bother railing about how completely incompetent Adobe is. Especially since they are not unique in this problem.
My solution was to use 1password. Encrypted password store that also generates login credentials for me. It has tools for Windows, Mac, iOS and Android (sorry, no linux), and it has plugins for all the major web browsers. Stores everything in AES256, syncs with dropbox so you can sync your database with multiple machines.
Now I can effortlessly create a long fugly password for every website I come across, so hashed passwords are essentially unbreakable and for situations like this, at least the password can't be used to compromise something else.
Not a perfect solution, especially given the concerns about NSA, but still very good.
Unfortunately I think those 1.9 million people that have 123456 as their password are going to learn this lesson the hard way.
because knowing that hashing would be more secure does not help you shit if management decides that they have the requirement to giving telephone support and being able to read passwords back to certain vip customers ...
Right. Any other block cipher, including AES, could have been mis-used in this same way. (The issues were that they encrypted passwords instead of hashing them, and that they used their cipher in ECB mode. The 3DES part smells of legacy but isn't a real issue in its own.)
I used to do it the same way you do, with different levels of passwords. I eventually lost track and just started using KeyPass and generate unique passwords.
I think you mean KeePass and I quite agree.
Every new MMORPG that comes out now has a huge wave of "hacked" account
It would be interesting to know which "level" people tend to choose for their MMORPGs (at least of those who have "levels"). On the one hand it's just a game, while on the other it involves a gargantuan investment of time and attention.
The problem is that the company has to now that there is an important security issue to be solved, and then hire someone that understands the issues. If they just head to the software team and say "make sure passwords are safe" then the twenty-something who's put on the job won't know what to do or how to do it.
I couldn't disagree more with this so called "best practice".
Hashes can be brute forced as a function of strength of users password (universally very poor) and size of password pool (2.9m..hiccup). The situation gets worse and only goes downhill as technology improves. Selecting the latest and greatest hashing algorithm does nothing to change this basic truth. Nor does amplifying weak passwords by a multiplication factor of redundant rounds do anything much useful to fix a problem in which only exponents provide actual security.
Encrypted passwords on the other hand are useless to an attacker unless they possess the decryption key. On a well designed system storage is completely separate from decryption key and as such breaches have no consequence.
Further this industry is universally doing it wrong while knowing better. Accepting passwords in the clear over SSL as virtually everyone does is **NOT** acceptable or secure. The phishers love each and every one of us for not insisting on real security. Doing it the right way requires either server side decryption of the password or possession of the hashed version as proof of knowledge in which case the hashed version of the password is fundamentally no different than the plaintext.
When we are storing things resembling SRP verifiers on the server protected by encryption keys and entering passwords into special browser provided fields rather than ad-hoc fields on web forms them come back to me.. Until then OWASP and everyone else parroting back this "best practice" without thinking are making things worse for everyone.
If you want to be amused by people with no understanding of the proper use of hash algorithms in a security standard check out PCI DSS 3.4 "One-way hashes based on strong cryptography"
Lets do the math here. When you strip away the first >6 digits representing a few hundred issuers and subtract the check digit it leaves a search space in billions to trillions making it trivial for anyone to reverse regardless of hash algorithm. Being a "secure" hash algorithm does nothing to protect you from insane misuse of said algorithm.
Indeed very few programmers are trained in security. Probably a minority have any security training to speak of and darn few are trained to design a security system. Yet, most companies don't hire a security professional, or even bring one in for a consultation. Security is my field. When another division was designing a single-sign-on system, they had me spend an hour with them to avoid the top 10 most common problems. Before bringing me in, they had already planned falling prey to at least two of those "obvious" problems. An hour with a security professional can make all the difference.
Have we just witnessed the fall of Adobe? If not how can they hope to regain users' trust?
Not really that bad if...
you change your passwords occasionally.
you don't reuse passwords.
I mean at least 0.01 % of users do that, right?
Microsoft.
I think we've pushed this "anyone can grow up to be president" thing too far.
I'm almost offended by your post. Almost, but you did say "so called experts" in one sentence. The linked XKCD comic is right on the money, and experts know that.
Computer geeks and code monkeys are not computer security experts. Security experts know what what entropy is and know that password entropy comes primarily from length.
"Computer geeks" ala Kim Komando (and many people on Slashdot) go around telling people to use strange mixed case, numbers, punctuation, etc. Code monkeys design login systems that require at least one upper case letter, one lower case, some numbers, some punctuation - and it has to be 6 - 8 characters.
Computer security experts know that 6 -8 characters guarantees weakness, and punctuation increases tech support calls far more than in increases security. (Such requirements often actually DECREASE security by making resets so routine). Experts have known for a long time that the thing to drill into people's heads is "Use LONG passwords! Make it a sentence or phrase. Make it LONG".
The one problem is that a TON of web applications have been authored by coders with almost zero security training. They make an effort to do it right. The encrypt passwords using crypt(). Crypt defaults to a 1972 algorithm that throws away everything but the first eight characters. That thoroughly screws up security.
Here is the essential part missing from the summary:
magnet:?xt=urn:btih:441582b9204dad5a26199aa51c7746d641f95b21&dn=users.tar.gz&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80&tr=udp%3A%2F%2Ftracker.istole.it%3A6969&tr=udp%3A%2F%2Ftracker.ccc.de%3A80&tr=udp%3A%2F%2Fopen.demonii.com%3A1337
The file is called users.atr.gz, and is 4 GB.
As already shown by http://xkcd.com/1286/ , this looks like a fun project for a lonely rainy week-end...
If Sony can, anyone can...
If you're stuck with Photoshop, Illustrator, Dreamweaver and all the rest, trust doesn't come into it. Adobe has a lot of lock in on graphical file formats and tools.
I should use this sig to advertise my book ISBN-13 : 978-1501515132.
You might be knowledgeable in various geeky areas but you don't have to be a dick about it. You're exhibiting various autistic characteristic which I share, but I on the other hand know the value in treating others with measured respect.
Rather a large number of milliseconds. Brute force against plain old DES still takes a while especially without specialized hardware. Also, 3DES doesn't go back nearly as far as 1972. (nor does DES for that matter)
It sounds like you saw my correction. I typed 3DES when I meant DES, so I'll reply to your comments DES.
> DES doesn't go back nearly as far as 1972. (nor does DES for that matter)
Below is the official NIST paper describing DES. You'll note that after a four year approval process, DES officially became a government standard in 1977. As described in the paper, IBM was using it by 1974 after it was developed in the years prior.
http://nvl.nist.gov/pub/nistpubs/sp958-lide/250-253.pdf
You could reasonably choose any year between 1972-1977 as the beginning of DES usage, so you're mistaken about "not nearly as far back as 1972, sorry.
> rather a large number of milliseconds
Try cracking a password database sometime. I do this stuff for a living. The larger the database, the faster you'll get working passwords, so we'll give you the benefit of the doubt and use a fairly small database of only 1,000 accounts as an example. We'll also be generous to you and not use a rainbow table. With a small (difficult) database like that, you can expect to get maybe 12 passwords in the first second or two. In the first ten minutes, probably 250 working accounts.
A 100X larger database will yield roughly 100X as many passwords per time - around 1,000 working accounts in the first few seconds, or 2-3ms per account at first.
If we want to go fast, we use a rainbow table. Standard DES password hashing ala crypt() collides at about 1:1000 since it uses only the first eight characters. On modern PCs with GBs of RAM, we can use in-memory tables and crack millions per second. No need for that, though, I don't mind waiting several milliseconds.
Recently, cryptanalysts have found collisions on the MD4, MD5, and SHA– 0 algorithms; moreover, a method for finding SHA–1 collisions with less than the expected amount of work has been published, although at this time SHA– 1 collisions have not yet been demonstrated. Although there is no specific reason to believe that a practical attack on any of the SHA–2 family of hash functions is imminent, a successful collision attack on an algorithm in the SHA–2 family could have catastrophic effects for digital signatures. NIST has decided that it is prudent to develop a new hash algorithm to augment and revise FIPS 180–2. The new hash algorithm will be referred to as ‘‘SHA–3’’
This was published in 2007. My joke was about the general uneasiness in the community about SHA-2, even if it hasn't been broken yet. Unfortunately, it seems that the members of \. who responded to me were too thick to understand this. You could have just pointed out that SHA-2 hasn't been broken yet. Instead you evinced your lack of ability to make clever insults.
...you dolt...You're clearly an ignorant fuck.
If you use the word "dolt" in conversation in a non-facetious manner it means that you're either a horribly self-conscious member of the middle class who is afraid of appearing "unprofessional", or a dummkopf who hasn't learned that using "dolt" is a shibboleth of immaturity. If you're going to call someone a motherfucker, as any other confident fellow with an iota of social intelligence would, please do it at the outset. Your prose will have a more even tone and you won't be downmodded for flaimbaiting.
Thanks, but I know what SHA-2 is. I also know that there was so much concern that SHA-2 would be broken that SHA-3 was created. My joke was that the NSA might have broken SHA-2 (they haven't) and that's why they were encouraging us to use it.