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/
Nothing they say or do will change the sittuation.
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...
So why is this surprising really given what we know of how Adobe has consistently operated now for over a decade?
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??
The passwords were encrypted, rather than hashed. They were stored on a backup server everyone knew was outdated. What part of this wasn't a terrible, terrible idea from start to finish?
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.
For password storage and protection, the general best practice is to use an algorithm designed for password protection, the top options being bcrypt, scrypt, PBKDF2, or SHA-2.
SHA-2? Was that sentence edited by an NSA intern?
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.
There's nothing wrong with 3DES per se, the way Adobe used it is botched.
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?
They play an important (should I say "pivotal" ?) role in the business of providing the opposite of security. I think you can guess who wants their $hite to be installed on hundreds of millions of computers.
Steam got hit a while back, and all the stolen passwords had been hashed and salted.
You probably don't remember this because people didn't get all upset about it....since best practices had been followed.
I use bcrypt - but then again you can pretty much f*ck it up using a work cost which isn't reasonable these days...
Most use 3DES, which was reasonably secure in 1972. Today, 3DES is cracked in milliseconds.
Right.
First published 1998
The best attack known on keying option 1 requires around 2^32 known plaintexts, 2^113 steps, 2^90 single DES encryptions, and 2^88 memory[18] (the paper presents other tradeoffs between time and memory). This is not currently practical and NIST considers keying option 1 to be appropriate through 2030.[10] If the attacker seeks to discover any one of many cryptographic keys, there is a memory-efficient attack which will discover one of 2^28 keys, given a handful of chosen plaintexts per key and around 2^84 encryption operations.[19]
I don't even know what you really meant, I'd assume MD5, used by most (unsecure) sites, but you mention it right after that...
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.
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 ...
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?
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.
Adobe already told their users that they were using encryption to protect user passwords instead of salted hashing back on 23-Oct-2013. REF: http://it.slashdot.org/comments.pl?sid=4391917&cid=45275797
This way it saves a lot of electricity for those alphabet soup agencies to get the raw password.
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.
"Preferably, SHA-256 or SHA-512"
Because using a crypto hash function optimized for speed is a good match when hashing passwords?
ugh