"It's good enough for the next hundred years..."
The term "unbreakable code" refers to a
theoretical cryptographical concept of how
vulnerable to
attack* a particular
cipher is. To use the phrase "
unbreakable" when referring to something in
crypto, one is typically referring to the
futility of an
attack on a particular
scheme**. In all reality, very few ciphertext schemes are unbreakable through
conventional methods, but they are typically referred to as "
computationally secure". This notion of
computational security is very important when referring to the strength of any
encryption scheme.
The only data encryption method that is truly "unbreakable" (in a straight up attack***) is that of the
one-time pad.
One-time pad is a very simple method of
security. Scramble the bits against a
string of bits the same length, and then send the
garbage. Because the cipher text leads no clues (either
mathematically, or
procedurally) to the contents of the
plaintext, it is
secure. Basically you are sending junk out into the public view, then somehow translating a filter onto that junk. Since the bits can
permutate out into any combination of
plaintext bits, your message does not stand out as being the
correct decrypted bits. Of course this method is all but
unusable since your
key is the length of your
plaintext, and you need to find an already secure channel with which to transmit the key.
More often than not, when one refers to the
jargon of an "unbreakable code", you mean "impossible to break in a
reasonable about of time with available
computing resources". If we take apart that statement, there are two basic flexible points to our assumption:
- How long is a reasonable amount of time?
- What are the computing resources available
The first statement is largely subjective, but the second is largely more important to consider. Surely in
100 years, computing
resources will be so vast as to lay complete waste to even our strongest
ciphers today, while that same very
strong encryption is theorized to take multiples of the
lifetime of the universe to
break today. Just how large do you think 2^128
combinations is? That is, after all,
128 bits, the "
strong"
encryption as we think of it now. Though the exact axiom of
Moore's law may not hold intact, the
concept is still there:
computing power increases, and thus each of our ciphers has an
expiration date until when it slips under "
reasonable" in the length of time to crack it.
Even ciphers that are
unbreakable through
conventional methods may be defeated by
sneakier methods, such as
random seed prediction, etc. For instance, if we know when a
key was
generated, and we know it is seeded against some value of
time, it is possible to
permutate out what the possible keys will be and back solve our work from there. Even against the boldly strong one-time pad, this is a
valuable, and very
real attack. Other such attacks
founded on
number theory and the principles behind the
encryption algorithms lead them to be broken in certain
situations.
Cryptography is an
ever-changing field, with
advances being made in both
algorithms and
cryptanalysis (the study of the
strength of ciphers). With the
sand moving as
quickly as it does, the thoughts behind anything being "
unbreakable" can change in a matter of moments or in a few years. From the clever, to the unwittingly
simple, to the increase of
power over time, crypto can never fully rest on it's laurels with an encryption scheme for the ages, but it can always do "
good enough for now", or until some smart mind knocks your
algorithm off of the mountain.
Quick crypto jargon:
* An attack is anything that would attempt to "solve" a crypto scheme, either with it's key, or some other (possibly sneaky) method. However, for our purposes in this discussion, when referring to an attack, any dead giveaway doesn't count, such as key theft, knowledge of (all of) the plaintext, etc.
** By "scheme" I am referring to a particular algorithm or encryption method, such as DES, Blowfish, PGP, etc
*** Brute force encryption attacks are such that you exhaust every possible key until it fits, rather like a crazed locksmith.