Take the 2-minute tour ×
Cryptography Stack Exchange is a question and answer site for software developers, mathematicians and others interested in cryptography. It's 100% free, no registration required.

I commonly hear statements along the lines of "all cryptograms are crackable - it's only a matter of time".

Is there a proof to show that any cryptogram is "crackable"? The proof may be of a more philosophical form rather than relying on mathematical proofs. I really don't know what to expect, but would be fascinated by anything that could show empirically that all cryptograms are crackable (as opposed to a proof that all known strategies for encryption are crackable)

Related: Is it enough to say that given enough time and resources, all brute-force attacks will eventually succeed?

share|improve this question
    
What is your understanding of "cryptogram"? What kind of ciphers do you allow in your definition? If you allow the OTP or even homemade constructions, then I can state "every possible ciphertext is an encrypion of I like coffee.", because in my substitution cipher over $\Sigma^*$ I replace this sentence with what your ciphertext looks like. –  tylo Nov 13 '13 at 17:15

4 Answers 4

up vote 8 down vote accepted

Not all ciphers can be broken, even by infinitely powerful adversaries.

When used correctly, the One Time Pad (OTP) is information-theoretic secure, which means it can't be broken with cryptanalysis. However, part of being provably secure is that you need as much key material as you have plaintext to encrypt. Such a key needs to be shared between the two communicants, which basically means you have to give it to the other person through a perfectly secure protocol (eg by hand/trusted courier). So, actually it just allows you to have your trusted meeting in advance, rather than at the time of transmitting the secret information.

To illustrate this, consider what happens if one tries to brute force OTP? Since you have allowed an attacker infinite computational resources, he can keep guessing keys and calculating the appropriate plaintext until every key has been tested. Supposing the message was $b$ bits long, this would leave him with $2^b$ possible keys, each of which would generate a unique plaintext, making $2^b$ plaintexts. What is important here is that this means they would have candidate plaintexts corresponding to ever possible bit-string of length $b$. This means, even if you knew the message was "Meet me at the stadium at 2?:15" (where ? is 0,1,2 or 3), you still wouldn't have any idea what the ? was, because the possible plaintexts would contain this string with every possible value of ?.

Most cryptographic methods we use now are computationally secure. There are lots of different ways to do this, and I'll just sketch at a few of them. We might come up with a reduction to a problem conjectured to be hard (eg the Diffie-Hellman Problem or Discrete Log Problem). That is, we prove that "If you can break my cipher, you can solve [hard-problem]", meaning our problem is at least a difficult to solve as [hard-problem]. So, if the problem is indeed hard to solve, so must cracking our encryption be.

Another method used is that you might be able to prove a lower bound on the effort required to break a cipher, in terms of some security parameter. Then, the security parameter can be set such that this lower bound is higher than the strength of any computer that could possibly be built. Notice, the infinitely strong computer described in the question could still break such a scheme, but we could fix the parameter so high that it would be impossible to make a computer that could break it.

Possibly of interest: wikipedia:provable security

share|improve this answer
    
I think one-time pad can be broken if one had infinitely powerful computer. You would just have to guess all possible one-time pads, and search for example for english words or similar. Is this possible theoretically? –  evening Nov 13 '13 at 15:55
    
@evening When you try all possible keys you get back all possible messages. Nothing gained. The point of a one-time-pad is that for any message with the same length as the ciphertext there is exactly one key that decrypts the ciphertext to that message. So an attacker doesn't learn anything about the real message, no matter how much computing power they have. –  CodesInChaos Nov 13 '13 at 15:58
1  
@evening: See my example in the answer - Even if you knew the message was "Meet me at the stadium at 2?:15" (where ? is 0,1,2 or 3), you still wouldn't have any idea what the ? was, because the possible plaintexts would contain this string with every possible value of ? –  figlesquidge Nov 13 '13 at 16:17
1  
Not really. For example, I could (if I really wanted) xor two perfectly reasonable English sentances together. Even if you stumbled upon the correct plaintext,key pair you wouldn't know which was which –  figlesquidge Nov 13 '13 at 16:21
1  
With the one-time-pad there is no difference between "apply all possible possible keys to the ciphertext" and "guess all possible messages without looking at the ciphertext". There are just as many keys as there are possible messages. –  CodesInChaos Nov 13 '13 at 16:26

I commonly hear statements along the lines of "all cryptograms are crackable - it's only a matter of time"

Using a perfectly random key which is as long as the message itself, not a pseudo-random key, cannot be broken no matter how fast the attacker's computer is. This scheme is called one-time-pad and its security is guaranteed by information theory and doesn't rely on the security of specific encryption algorithms or limited computation power.

While all other schemes can be broken by sufficient computation power, increasing key-sizes quickly get to the point where "enough time and resources" is unrealistically large. Every additional key bit of a symmetric cipher doubles the cost of breaking.

For example the chance of breaking a symmetric 256 bit key with the best conventional computer allowed thermodynamics using all the energy emitted by our sun over its whole lifetime still is still negligible. With slightly larger keys even the energy of the whole universe is insufficient.

So it is safe to say that brute-force with conventional computers (or quantum computers as we envision them) is no practical threat. For details about this, read How much would it cost in U.S. dollars to brute force a 256 bit key in a year?

With lots of resources you can break almost everything in practice by compromising an endpoint. Using a zero-day exploit to plant a Trojan, placing a camera looking at the keyboard, threatening the victim or their family, etc.

Sometimes it's also possible to cryptoanalyze the cipher itself, but that's pretty rare.

share|improve this answer

Here is the actual proof (hopefully in close to plain English) that to encrypt n bits with perfect security you need n bits of key, and if you have less your system is Information-theoreticly unsecure and can be broken by an adversary with unlimited computing power.

The basic principle of what we mean by secure here is, for all messages m in the message space (M) and for cypher-text c: P(m|c) = P(m) . ie the probability of m being the message is unchanged when you know c for all m's in M (which means all possible m's). ie ie knowing the cypher text is useless and your best guess is anything the same length as the message.

If we have a cypher-text c, we can try to decyrpt it with every possible key k in the keyspace (K). The maximum number of different potential messages we get from doing this is the number of possible keys (the size of the keyspace, |K|). If the size of the message space (|M|) is larger than (|K|), then there exist some messages m in M that we don't find by trying every key and that cannot be the actual message that was encrypted. ie P(m|c) = 0. As long as this message was possible beforehand (it wasn't absolutely known before looking at the cypher-text that it wouldn't show up), P(m|c) != P(m) and so it cannot be secure.

Pretty much every cipher practically fails this definition of security, and it can even be proved cyphers that are secure under this definition are basically one-time pads. I'll leave it to the other answers to describe more practical security definitions.

share|improve this answer

Consider that a cryptogram is only one very tiny piece of a secure message communication system. People focus unnecessarily on it because it contains and protects the actual secret, but every piece of the overall system has to be secure for the secret to remain protected.

That system includes not only the obvious technical problems (exchanging and protecting keys, computer hackers tampering with the equipment or network, traffic analysis, etc.) but with the people using it as well. They can be tricked into communicating with or trusting the wrong party, coerced into revealing their secrets, or fail to adequately guard whatever their responsibility is (weak passwords, casual behavior.)

I don't believe that AES will ever fall to a brute force attack. I don't think it's the weakest link in any of these systems, and therefore it's not profitable for an attacker to try, because there are so many other avenues to exploit.

So the answer to your question is no, not every cryptogram can be broken, primarily because they don't need to be. Instead, I would claim that almost every system can be broken, because every system deployed so far has had some weak components.

share|improve this answer
    
Indeed, as long as a system has users, the system has a weakness (eg these, the whole Snowden affair or this!) –  figlesquidge Nov 13 '13 at 14:45

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.