In cryptography you operate with two different things regarding confidentiality: You can have unconditional security or computational security. Unconditional security means that the adversary does not have enough information to break it, even with infinite computing power, and computational security means that he does not have enough resources to break it. Unfortunately it's impossible to prove that any system provides computational security, and systems for unconditional security are not practical in real life. Since I sense that a lot of people are a bit confused about what encryption really is, here are some examples:
Unconditional security:
Any cipher (an algorithm for encryption/decryption) is said to be unconditionally secure if it provides perfect secrecy, which is defined as:
Pp(x) = Pp(x|y) for all plaintexts x and ciphertexts y
In words this means that the probability that plaintext x was sent is the same as the probability that plaintext x was sent given that you know the ciphertext y. Perhaps this might not make sense to some people, so I will not go further into this. If you think about it a little, it seems like a good definition.
The One-Time pad provides perfect secrecy. It works as follows. Write the data you want to encrypt (plaintext) in binary, eg:
10010101011101001
Now generate a key with the same number of bits as the plaintext where each bit is one with probability 0.5 and zero with probability 0.5. These key bits must be choosen independant of each other. Write that key below the plaintext:
10010101011101001 <- Plaintext
10100111010100101 <- Key
Now do a bitwise XOR of those to (XOR is addition modulo 2) - The XOR if two bits are 0 if the bits are equal and 1 if they're different
10010101011101001 <- Plaintext
10100111010100101 <- Key
00110010001001101 <- Ciphertext
The key must be used ONLY ONCE or you can easily break this. That's why it's called a ONE TIME pad
Why is this unbreakable? I could give a mathematical proof (it's pretty easy), but instead I will argue informally about this. Consider that for each bit of the plaintext it will be a 1 with probability 0.5 or a 0 with probability 0.5. Depending on how you select the key you can actually decrypt the ciphertext to anything you want. Therefore the ciphertext does not provide any information about the plaintext for those who does not have the key. Hope you can see this...
To decrypt just XOR the ciphertext with the key and you'll get the plaintext back (try it if you don't believe me
Of cause this is not practical. You need a key as large as the data you want to encrypt and that key can be used only once. If you have the ability to exchange the key in secrecy (you meet with the other person) why not give him the data instead.
Computational security:
It does not really have a formal definition, but you can't really prove that a system provides computational security. Some systems (eg. the RSA) can be proven computationally secure (you can give a lower bound on the computation time needed to break a message) GIVEN another problem (here factorization) is "difficult". I will not describe what difficult should mean, cause I would move over to complexity theory, and it might take a while to get back
There are two systems: Public key systems and private key systems (often called asymmetric and symmetric). In the former the same key is used to both encrypt and decrypt the data, whereas in the latter you use one key for encryption and one for decryption. You can publish you encryption key (the "Public Key") and only the private key can decrypt what's encrypted with the public key. The RSA is the most widely used system for this, but there are several others. I think a mathemathical description of the RSA would be too much here. If you really want to see it here, you can always ask and I might write it later.
Bottom line: All the systems you use in the real world SEEMS to provide computational security (although it can't be proven)
Quantum computation and quantum cryptography:
Since I'm following courses in both "Cryptography" and "Quantum Computation and Quantum Information" I will mention this briefly (and also because someone mentioned it earlier in this thread)
In a quantum computer you use the equivalent of a bit - a q-bit. These q-bits have the property that they can be either 1 or 0 or in a superposition where they are 0 with probability A and 1 with probaility B. Don't be mistaken they are NOT 1 or 0, but both at the same time. The trick is that is impossible to measure a q-bit without changing it's state. If you try to measure what state it is in, you'll get 0 with probability A and 1 with probability B. FURTHERMORE you will change the state to the result of your measurement. So if you measure it to be a 0 it IS a 0 and the same with 1. Also, it is impossible to copy a q-bit and you destroy it by measuring it.
Another feature difficult to understand is that you can place two q-bits in an "entangled" pair. In this state they are either both 0 with probability 0.5 or both 1 with probability 0.5. Here comes the hard part to understand. If you measure only the first q-bit and get a 0, you will also have changed the first q-bit to a 0, but since they were either both 0 or both 1, the second one WILL become 0 if you measure the first one to be 0. If you measure the first q-bit and get a 1 the second q-bit will be 1 too !!!
These properties allows you to perform 2^n computations SIMULTANEOUSLY with only n q-bits and will allow you to do weird things like finding the smallest element of an unsorted list of E elements by only looking at (square root of E) elements. It also allows you to break RSA (factor) in polynomial time. The problem is that not all problems can be expressed in a form that can be "understood" by a quantum computer. You might have guessed what the general problem is: Sure, you can do a lot of computations in parallel (actually you only do one computation that gives you ALL the possible results at once) but since you can't get get information out if a q-bit what good is this? Luckily there are ways to do this up a given probability.
Also this can be used for encryption that provides perfect secrecy. I will not go into details on how, but you can use the feature that you can't measure the state of a q-bit without destroying in. You can also have one person generating entangled pairs, teleporting one of the q-bits to the other person (yes, that can be done) and use these as part of the encryption (eg. for generating a completely random key for use in a one time pad). It's not as trivial as it sounds, but it can be done.
I have left out the physics part of this, since that would take too long to explain.
I could go on for a long time, but I will force myself to stop here. If you have further questions you can always ask.