All Memorized Passwords Are Inherently Weak
If you can memorize your password, it is because it is most likely based upon a mnemonic (memory device).
If your password is based upon a memory device, it is most likely based upon a natural language (English, Spanish, etc.) word. Humans tend to memorize based upon words since it is how we communicate.
Word-based Passwords Are Inherently Weak
However, if your password is based upon a word it is weak.
But, why is that true? To understand the reason that word-based passwords are weak, we must take a look at the methods that hackers use to crack passwords.
One Way Hackers Crack Passwords
Brute Force Attack
Here are the steps that the hacker uses to do that:
- Obtain the site's database of passwords
- Generate passwords from a natural language dictionary of words
- Compare each generated word against the stolen database of passwords until successful
It's a little more difficult than this because most sites do not store their passwords in clear text but instead they also hash those passwords.
What's A Hash?
You can think of a hash as a one-way encryption technique.
That means the computer algorithm takes an input and will turn that exact input into one and only one output.
A simple diagram of this might look like the following:
In our example above, we use the ClearText (unencrypted) input of the letter a.
I've made the Hash Algorithm (in this case we are using SHA256 - Secure Hashing Algorithm) a black box in the diagram because we do not need to know the implementation details of how it works.
Every time we input the value a into the SHA256 algorithm we are guaranteed the output shown on the right.
That value becomes a unique identifier for the value a.
One-Way Encryption : Hash
We can think of this as a one-way encryption. But why do we call it a one-way encryption? That's because it is unfeasible that anyone can reverse the process to turn the hash value (ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb) back into the ClearText (the letter a in our case).
No Known Way To Reverse the Hash Value
Let me say that again. There is no known way to take the hash value and calculate what the original ClearText input was.
That's the power of a secure hashing algorithm.
For Every Input, There Is A Unique Output
Along with that, the hashing algorithm also guarantees that two different inputs will never produce the same hash output.
Even if the value is only changed by 1 bit of data (1/8th of a an ASCII character as it is stored on a computer).
That means if you hash the two long ClearText values shown below which differ by only one character the output hash will not be similar at all:
ClearText | Hash |
thisIsAReallyLongMessageForTestingTheHash | 9ef787ac41ec34065c69fecd7413a17ea5765ef1dc58f38d2e51d78917c5d371 |
thisIsAReallyLongMessageForTestingTheHash2 | 4a12d57aa0803a16ee84a82ec102686e9130918168327ad4ddee6ba66716a0ad |
Most Sites Hash Your ClearText Password
This is how most modern sites now store your password. They create a hash from the ClearText password that you've given them. They then store that hash in their database along with your userId so they know which on it is associated with.
This guarantees that no one can every reverse the hash and discover your password.
Weak and Common Passwords
If you've been following along you may have thought about how you could go about attempting to break this.
Since a specific ClearText message produces only one SHA256 hash, you could create hundreds of passwords, hash them and then compare those hashes to what is in the site's database of passwords.
But this only works for weak and common passwords.
Dictionary Attack
That's exactly what the hackers do. They generate hashes from every word in the natural language dictionary.
Let's look at an example table of how the hacker might do this (but of course you'll have to imagine that I have every word from the English dictionary available to me as the hackers do).
ClearText | Hash |
aardvark |
cf9c1cb89584bf8c4176a37c2c954a8dc56077d3ba65ee44011e62ab7c63ce2d |
aphorism | 9238993bf1898c1a0de5f4f04c1a23000e848097b532a543dced7687444ea758 |
battery | f3d1701e1d575e1294786989517866986bc97343e07af63e201f46ba0be5806a |
chinchilla | 2180cc6f060cdfb71a458b60f404f56d682abaf7efd3df81a957684ab3803f18 |
despise | 9272459bf48061da35d110383b95e5c3287320e40093a07e16227a719efede0c |
earth | 7b74b418a352d67108173c20c1b16b4b726bad8606be65711ff924dbf9a40670 |
flavor | b5d2f4515ba34f2f83f3a84e6958769f2b89b5ceca3fdfe1b4303eead3507daa |
grind | 3026fac023c67598797c8c7da4ac6cf653f832b2c9de761d3922fb85ea086b1c |
password1 | 0b14d501a594442a01c6859541bcb3e8164d183d32937b851835442f69d5c94e |
Common Passwords
This is also why using a password that is commonly known to hackers, like password1, is so dangerous.
Modern Computing Power
Modern computing power means that hackers can generate hashes for millions of possible passwords and compare each one of those hashes to their stolen password databases in very little time.
Generating Passwords, Computing Hashes
Of course, with modern computing power, hackers are able to take multiple words from the dictionary, smash them together, and then compute a hash from those longer passwords too, since they are still based upon natural language words. They can do millions of these in a short period of time.
Replacing Vowels With Numbers
Since the hackers know the scheme a lot of people use wh3r3 th3y r3p1ac3 c3rta1n l3tt3rs with numbers, the hackers generate millions of passwords that mimic that too. Once they mimic these patterns and generate the hashes they are bound to hit upon at least a few weak passwords out of the 500 million (
according to Yahoo! that was the recent number) they've stolen.
Salting the Hash
There is another element of security that is generally applied to this also called salting the hash that would further scramble the hash, but I won't go into that here.
What Does This Mean?
This exposes the fact that passwords based upon natural language words are much weaker since the attacker can use all the words in the dictionary to generate passwords, hash them and check them.
Main Point
However, if you password were not based upon a word, it would be far less likely to be hacked.
This leads us to the fact that you really should create your passwords from some random list of characters and numbers.
For example, no hacker could guess your password is:
bdb7085c1cd90f6cc1f44856131a56535c0e493188dc6919b0ef8e3b7cffaf8d
The hacker is not even going to try that, because it would take her too long to even mess with creating an algorithm that checks an almost infinite list of hashes. There isn't enough computing power in the world to make this effective.
That is why your passwords should themselves be based upon a cryptographically strong hash.
That's what CYaPass does for you.
How Could You Remember Your Password?
It is unlikely that you could remember that hash above. Of course there are people who can do it But that would be more of a pain than just using the passwords you already use.
That's why you should use C'Ya Pass and forget all your passwords.
C'Ya Pass Generates Cryptographically Strong Hashes For You
All you have to do is
- supply a site/key (to help you remember what the password is used for)
- Draw a pattern
C'Ya Pass will generate a password for you that is a SHA256 Hash. That long password will be your actual password which will then (most likely) be hashed again by the target site you are logging into.
Then, if the site you are logging into ever gets hacked it is unfeasible the hacker would be able to generate your original long hash password and be able to hack you.
That's how C'Ya Pass makes your passwords stronger and makes it so you never have to memorize a password again.
CodeProject