Eubolist's Blog

about IT, Linux, the web and much more

A guide to make safe passwords

with 2 comments

There are a lot of informations out there on how to make secure passwords, most of which are about passwords for cryptographic purposes, written by security experts. Of course the most secure password form is a true random password consisting of upper/lowercase letters, numbers and special characters. There are a lot of web services out there to generate such strings, take this one for example: http://clsc.net/tools/random-string-generator.php

Now it occurred to me, that some security enthusiasts – and some folks at Microsoft – also advise people to choose random passwords for their accounts (computer, mail, social networking …) as well – to make it safe, of course. This is idiotic because the average user certainly does not want to memorize multiple random strings and this policy would encourage users to use one password for all their accounts. Using the same password for multiple accounts is a very bad idea – if one account gets compromised (the programmers at your dating site didn’t do a great job in securing their server) all your other accounts (PayPal, eBay, …) will be in danger, too. And even if you can memorize the random password there is a good chance that you will forget it once you haven’t used it in a while. Which is quite probable to happen since most people are too lazy to always type the password and decide to store it in Firefox, the keyring or whatever password manager they’re using. So don’t use random passwords as long as you’re not an autistic savant genious with a superhuman memory.

Now, since I’ve condemned the really safe option of random passwords let’s have a look at the two possibilities an attacker has to crack your password. The first method would be a dictionary attack: The attacker uses a dictionary file with lots and lots of words in it as possible passwords. This attack is the reason why it’s a bad idea to use simple words without modification as passwords. The second method is a bit simpler, it’s called brute force attack.  Similar to the dictionary attack the attacker tries to guess your password, this time – as the name suggests – every possible password is tried, starting with a and ending with ZZZZZZZZ… Brute force is a lot slower than a dictionary attack because obviously many more passwords have to be guessed until the right one is found. But the big advantage is that the password doesn’t have to be a word, so a password such as “123++” doesn’t offer a lot of protection against brute force attacks, despite being quite strong against a dictionary attack (always depending on the dictionary used, of course).

So what properties does a password need to be safe?

  • It should be long. The longer the better. Why not use a short sentence for example? A short sentence consisting of a few words is very easy to remember and contains a lot of characters, making it hard to break. In case spaces are not allowed you can just leave them out or substitute them with a dash or a certain number.
  • It should contain upper and lowercase letters, numbers and special characters. Adding a number and a special character after your usual password vastly increases the security of your password. Let me show an example: if “monday” is your usual password, it consists of 10 lowercase letters. So a brute force attacker has to try a maximum of 246 possible passwords until he eventually will guess the right one. Given he can try 5000 passwords per second he will crack your password in about 10 hours (he would even be a lot faster if he used a dictionary attack in this example). Now we add a number and a special character to your password and capitalize the first letter: “#0nd4y” A brute forcer would have to try the full ASCII set to crack your password: 1286 which would, at the same speed, take the attacker almost 140 thousand years!
  • It shouldn’t be a plain (or simple variation of a) dictionary word. Even if the above sample may seem secure against brute force attacks, it may not be against a dictionary attack where the dictionary has been added variations of the words (a huge list like that can be easily and quickly generated with an automated script). Use words from foreign languages you know, they are not likely to be in a dictionary (since the largest dictionary files are English, and who would guess eg. a french password on a Spanish user and website?)
  • As I already mentioned: One password per account! Don’t use the same password for multiple accounts. Just don’t.
  • Finally, the last and maybe most important point: It should be easy to memorize! How can one achieve that regarding my other points above? Even passwords containing special characters or numbers are easy to memorize if you create yourself a pattern. There an infinity of patterns you could use to generate safe, easy-to-memorize passwords. Here are a few ideas: Always add the same number (e.g. your birthdate) plus one special character after or before the word you use: puppy –> 1351976?puppy / 1351976=puppy / 1351976@puppy / … Or play around with a whole sentence: puppy –> i have a cute puppy 9877+*$ / i-have-a-cute-puppy9877 / ihaveacutepuppy+*$ / i9have8a7cute7puppy!!! / …

This way even if you don’t use a password for a long time you, and only you, will still be able to guess the right one amongst the most likely variations that you have in mind. And even though I certainly do not consider myself a security expert, I think this is one of the safest, most reliable ways to choose your passwords for everyday users.

Advertisements

Written by eubolist

2010/02/19 at 17:12

2 Responses

Subscribe to comments with RSS.

  1. nice info 🙂

    Q

    2010/02/20 at 04:24

  2. […] choosing a password take a long, safe password which is not prone to dictionary or brute force attacks. But also make sure you won’t forget […]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: