I wanted to take a chance to write a bit on password security. This has been back in the news with the discovery of a security breach at a website called “Gawker” – which is sort of a news mashup site like Digg with editorial content.
Gawker is run by an Internet property focused company that runs several websites. All of the websites share a common backend user database for site logins for both editorial content and commenting. What happened as a temporary or test file with a copy of some of the fields of the user database was left in an unsecured location and hackers found it. This test file was apparently dated from April – so the compromised leaked the encrypted password, the username and email of approximately one million users. Because Gawker is a multi-property company that included users from sites like Gawker, Gizmodo, Kotaku, Deadspin, Jezebel, Lifehacker and io9 were leaked.
At first wash this would seem like a moderate problem as the passwords are encrypted. The catch is the way passwords are encrypted on most modern computer systems. Let’s have a diversion to a quick technical background. Passwords can be stored two basic ways – with reversible encryption or with a one way hash.
Password Encryption
You can actualy skip this section if you don’t care about the technical bits.
Reversible encryption means that I encrypt the password with a master encryption key. If I have that key I can unencrypt the password and get the original password. Reversible encryption typically encrypts the whole password database with one master key. If that master key is compromised the whole database is compromised. But if I don’t have the master key and a strong encryption key and algorithms were used the entire database can be effectively impossible to decrypt.
A one way hash is different. I use the password as a key to encrypt something else (typically a well known number or a specified random number called the “salt”) to produce an encrypted value called a “hash”. If I get the encrypted password I cannot “reverse” the encryption to get the original password. I can only validate that if you give me password B, that it is or is not the same password as A that was originally used to encrypt the salt and produce the hash.
Most things use one-way hashes. This way if you get the database you cannot crack the whole database at once – you have to brute force guess the individual passwords. In a perfect world that takes a long time.
What’s happened is that the Internet and Moore’s law as well as technologies like GPGPU (where graphics accelerators are used as really fast computing helpers) are making the searches even fasters. Currently you can crack a WEP (old wireless key) brute force in about 45 minutes for $10 on EC2 – sniffing with live traffic a modern laptop can crack most WEP keys in minutes. WPA is much better and still can take a lot longer.
What Does Gawker Mean to Me
What happened a Gawker is hackers got the encrypted passwords and emails of about 1.3M users:
http://blogs.wsj.com/digits/2010/12/13/the-top-50-gawker-media-passwords/
http://www.duosecurity.com/blog/entry/brief_analysis_of_the_gawker_password_dump
The hackers cracked about 400,000 of these passwords. What’s worse is they had the email of the passwords. How many sites use email addresses for logins? How many of you have the same password at many sites? What’s worse is how trivial how many of the passwords are – look at that top-50 link above. (BTW, if you are curious you can check if your email was compromised at http://www.slate.com/id/2277768/).
So somebody has the email and password of a user – good chance they can get into that user’s email (over 80% of the cracked passwords were associated with Hotmail, GMail or Yahoo – where your email is 100% accessible from the web). They might be able to login to business systems or government systems (about 50,000 of the compromised passwords had email addresses of government or military sites). Also with access to your email they can reset your password at other sites if they can’t login directly.
A Personal Anecdote
My Facebook account got hacked but luckily I recovered before the account was hijacked. Hackers were using holes in the FB APIs to be able to attempt password guesses – my password was a common short word and an number. By dumb luck I noticed right after the account was hacked and I couldn’t log in. They hadn’t changed my email yet so I reset the password (twice). I also changed the password at all the sites I could remember with that password. But that little event is what got me thinking.
I did have a friend who had their FB account hacked and the hackers spewed 100s of annoying to embarassing messages to their entire contact lists as well as random posts and links. Some of these were of the type that could get you fired if you had a less than understanding employer – profanity, threats, pornography, etc. She was mortified. It also took almost two weeks to get Facebook to act. In the end all she could do was have them shutdown the account and start over with a new account. Hundreds of contacts, pictures and history lost as well as being humilated with almost everyone she knew.
What Can I Do – Old Answer
Traditionally the answer is select a strong password. The secondary answer is use a different password at different systems – especially Internet properties like Facebook – so one compromise doesn’t open multiple doors.
There’s a good article on how password crackers work at http://www.schneier.com/essay-148.html. The idea is to have more “bits” of data in the password (see http://en.wikipedia.org/wiki/Password_strength). Modern cryptographic keys for passwords have 128 or 256 “bits” (2 to the 128th or 256th power) representing years or centuries of computations to crack. But…humans can’t remember 128 or 256 bit numbers. So passwords are words and numbers. An 8 charecter all lowercase password has only 26 bits. A random mix of upper and lowercase has about 32 bits…add in punctuation and digits and you’re up to maybe 34 bits. But now you have to be able to remember to type xYz%^Q!0. And if you’re following rule two you also have to remember 7&aU9(eP as well, and so on…
And if your using english words and pronouncable non-word phrases you’re back to less than half as much randomness again – usually somewhere south of 24 bits of randomness. If the system supports long pass phrases (most modern ones do) you can try things like BlueCowRunsHome=157. You up the randomness with some hope of remembering.
What Can I Do – New Answer
Use a password manager and generate random passwords for every seperate site. A password manager will generate and store passwords for multiple sites all encrypted by a master password. They are smart enough to recognize password fields in browser windows and most applications and you can always open the password card and cut-and -paste. You want to have a really good random password but you only have to remember one. T
There’s a good set of recent reviews at http://password-management-software-review.toptenreviews.com/ and http://download.cnet.com/windows/password-managers/. I’ve tried a few and my favorite is RoboForm Pro. And he best way to but it is as Roboform Everywhere. That licenses for $10/year per user ($20 for 2nd and later years as of now) and gives you the right to install RoboForm on as many PCs and other devices as you want. It also synchronizes them all through their website (encrypted by your master password) and is accessable via a web login if you are on a device without the RoboForm App. They also have Android and iPhone apps as well as Mac and plugin to all major browsers. You can order through this Roboform Everywhere Ordering link or get product information here. Feel free to read the reviews and choose your own as well.
What Does this Mean to BAC
In the coming year we’re going to start running password crackers against our account database periodically. In particular we’ll focus on new accounts but we’ll periodically scan the whole smash. If your password is guessed we’ll drop you an email advising you to change your password. We won’t put the password in the email and we won’t keep it around. We will note the charecteristics like size, common words, keyboard pattern to help us explain why it’s bad and offer suggestions. For now we have to plans to force password changes – but we might have to if the threat level changes and we see more attempts at attacks or any successful compromises.
Why are we doing this? Partially to make our lives easier and partially as a service to you, our members. We had _one_ account compromise this year that resulted in a SPAM private message or two being sent to about 1/3 the membership before we caught it. As a paid site tolerance for Spam is low – even though it wasn’t us sending the spam. We had over 50 emails or PMs back from members ranging from the politely informative to foaming at the mouth irate. We responded to most. It takes a thick skin to run any website but we’d prefer not to repeat that experience and that means we need to make sure you, the users, don’t have passwords like “qwerty” or “password” ;).