Audit Accounts, Partition Passwords, Stay Secure
It's a new year, so it's time to start counting days until we hear about the first database breach of 2014 to reveal a few million passwords. Before that inevitable compromise happens, take the time to clean up your web accounts and passwords. Don't be a prisoner of bad habits.
It's good Operations Security (OpSec) to avoid password reuse across your accounts. Partition your password choices so that each account on each web site uses a distinct value. This prevents an attacker who compromises one password (hashed or otherwise) from jumping to another account that uses the same credentials.
At the very least, your email, Facebook, and Twitter accounts should have different passwords. Protecting email is especially important because so many sites rely on it for password resets.
And if you're still using the password kar120c I salute your sci-fi dedication, but pity your password creation skills.
Start with a list of all the sites for which you have an account. In order to make this easier to review in the future, create a specific bookmarks folder for these in your browser.
Each account should have a unique password. The latest Safari, for example, can suggest these for you.
Next, consider improving account security through the following steps.
Consider Using OAuth — Passwords vs. Privacy
Many sites now support OAuth for managing authentication. Essentially, OAuth is a protocol in which a site asks a provider (like Facebook or Twitter) to verify a user's identity without having to reveal that user's password to the inquiring site. This way, the site can create user accounts without having to store passwords. Instead, the site ties your identity to a token that the provider verifies. You prove your identify to Facebook (with a password) and Facebook proves to the site that you are who you claim to be.
If a site allows you to migrate an existing account from a password-based authentication scheme to an OAuth-based one, make the switch. Otherwise, keep this option in mind whenever you create an account in the future.
But there's a catch. A few, actually. OAuth shifts a site's security burden from password management to token management and correct protocol implementation. It also introduces privacy considerations related to centralizing auth to a provider as well as how much providers share data.
Be wary about how sites mix authentication and authorization. Too many sites ask for access to your data in exchange for using something like Facebook Connect. Under OAuth, the site can assume your identity to the degree you've authorized, from reading your list of friends to posting status updates on your behalf.
Grant the minimum permissions whenever a site requests access (i.e. authorization) to your data. Weigh this decision against your desired level of privacy and security. For example, a site or mobile app might insist on access to your full contacts list or the ability to send Tweets. If this is too much for you, then forego OAuth and set up a password-based account.
(The complexity of OAuth has many implications for users and site developers. We'll return to this topic in future articles.)
Two-Factor Auth — One Equation in Two Unknowns
Many sites now support two-factor auth for supplementing your password with a temporary passcode. Use it. This means that access to your account is contingent on both knowing a shared secret (the password you've given the site) and being able to generate a temporary code.
Your password should be known only to you because that's how you prove your identity. Anyone who knows that password — whether it's been shared or stolen — can use it to assume your identity within that account.
A second factor is intended to be a stronger proof of your identity by tying it to something more unique to you, such as a smartphone. For example, a site may send a temporary passcode via text message or rely on a dedicated app to generate one. (Such an app must already have been synchronized with the site; it's another example of a shared secret.) In either case, you're proving that you have access to the smartphone tied to the account. Ideally, no one else is able to receive those text messages or generate the same sequence of passcodes.
The limited lifespan of a passcode is intended to reduce the window of opportunity for brute force attacks. Imagine an attacker knows the account's static password. There's nothing to prevent them from guessing a six-digit passcode. However, they only have a few minutes to guess one correct value out of a million. When the passcode changes, the attacker has to throw away all previous guesses and start the brute force anew.
The two factor auth concept is typically summarized as the combination of "something you know" with "something you possess". It really boils down to combining "something easy to share" with "something hard to share".
Beware Password Recovery — It's Like Shouting Secret in a Crowded Theater
If you've forgotten your password, use the site's password reset mechanism. And cross your fingers that the account recovery process is secure. If an attacker can successfully exploit this mechanism, then it doesn't matter how well-chosen your password was (or possibly even if you're relying on two-factor auth).
If the site emails you your original password, then the site is insecure and its developers are incompetent. It implies the password has not even been hashed.
If the site relies on security questions, consider creating unique answers for each site. This means you'll have to remember dozens of question/response pairs. Make sure to encrypt this list with something like the OS X Keychain.
Review Your OAuth Grants
For sites you use as OAuth providers (like Facebook, Twitter, Linkedin, Google+, etc.), review the third-party apps to which you've granted access. You should recognize the sites that you've just gone through a password refresh for. Delete all the others.
Where possible, reduce permissions to a minimum. You're relying on this for authentication, not information leakage.
Universal adoption of HTTPS remains elusive. Fortunately, sites like Facebook and Twitter have set this by default. If the site has an option to force HTTPS, use it. After all, if you're going to rely on these sites for OAuth, then the security of these accounts becomes paramount.
Maintain Constant Vigilance
Watch out for fake OAuth prompts, such as windows that spoof Facebook and Twitter.
Keep your browser secure.
Keep your system up to date.
Set a reminder to go through this all over again a year from now — if not earlier.
Otherwise, you risk losing more than one account should your password be exposed among the millions. You are not a number, you're a human being.