WP Cloud WIBU WhitePaper Licensing in the cloud EN | Page 8
White Pap er
Calculating Hacking Times
Let’s get mathematical for a minute. We can get very deep into the math here, but let’s keep things
relatively simple. If you aren’t that interested in math, you can skip to the bullet points below. A hash is
a one-way mathematical function that maps data of arbitrary size (like a password) to a bit string of a
fixed size and is typically used to store users’ passwords in a database. Hash functions are very clever: A
slight change in the input translates to a completely different output. This is important: it means that if
two people have exactly the same password, knowing the hash of one will not give an attacker any clue
as to the content of the other, since the hash will be very different. Further, because the hash is of a fixed
size, an attacker cannot even deduce a password size from knowing the hash. Current SHA512 3 hashing
algorithms take 0.0017ms (let’s call this y) to compute a hash on a “standard” desktop computer. Let’s
assume an attacker has access to a supercomputer or botnet that is one hundred thousand times faster
than this. Let’s further assume the range of characters you could use is x. So, if your password consisted of
characters 0, 1, 2, …, 8, 9, then obviously x=10. If your password could consist of the possible characters a,
b, c, … x, y, z, A, B, C, … X, Y, Z, then x=52.
Let’s say z = the number of characters in the password.
If the time in seconds taken to run through all possible combinations of the character set you use is t, then
t =
y*x z
= 1.7*10 -11 *x z
100000
But the actual time taken to crack a password is half that. Why half? It is really a fiddle factor, and it helps
us realise that when trying every combination of a password, you are statistically likely to get lucky half-way
through the combinations you are trying.
With that in mind, suppose a hacker managed to obtain the hash of a user’s password by nefarious means
(perhaps they were able to break into a site and steal the database, for example) and wanted to try a brute
force 4 attack. Suppose further that this attacker happened to have access to a supercomputer (or a large
botnet). Of course, none of this is even remotely likely, but let’s use it as a hypothetical experiment. In this
event, how long would it take to crack a password 5 ? Running the numbers through this equation is quite
easy and gives some interesting answers.
� A 9-digit “pin code” would take less than one hundredth of a second to crack (x=10, z=9).
� An eight-character lower case password would take 1.8 seconds (x=26, z=8).
� An eight-character lower or upper case password would take 7.6 minutes (x=52, z=8).
�
If you include numbers and special characters, then an 8-character password would take about four
hours (x=80, z=8).
�
If you consider a 16-character password, you’d be looking at over 10 12 years [that is a 1 followed by 12
zeros (x=80, z=16)] – a thousand billion years.
�
Of course, it would “only” take a thousand billion years to crack if you knew the user id that the
password was associated with. If you had to crack that too… You know where this is going 6 .
An obvious question here is: They won’t know that I’m only using lower case letters, so I’m as safe as if I
use all special characters too, right?
Actually, CodeMeter Cloud uses a special password hash which is even more secure than this!
Try all combinations of a password with the expectation of “guessing” correctly eventually
5
https://thycotic.force.com/support/s/article/Calculating-Password-Complexity
3
4
8