Just a fact.
Asymmetric cryptography. One key is for locking, the other is for unlocking.
This is the continuation of the story about cryptography:
http://vk.com/wall-12648877_1022557
Asymmetric cryptography (aka public-key cryptography) is based on a special class of functions, for which it is difficult to find an inverse functions without some additional information used for creating the initial functions.
The information about the initial function is called the public key. The information necessary for creating the inverse function but is not necessary for restoring the initial function is called the private key.
The public key is used for encrypting a message. It is safe to send it via unprotected communication lines. Anyone who gets the public key can encrypt a message, but only the one who has the private key can read the encrypted message.
For instance, Bob wants to send a secret message to Ann. Ann generates two keys - a public key and a private key. She sends the public key to Bob and keeps the private key to herself. Bob encrypts the message to Ann using her public key and sends the encrypted message to Ann. If the coded message gets intercepted by Bob’s mother or Ann’s father, they won’t be able to read it, even if earlier they intercepted the public key sent by Ann.
If Bob wants a reply from Ann, it’s his turn to generate two keys and to send his public key to Ann so that she can encrypt her message and send it to Bob, who will read it with his private key.
But if not only dads and moms are nosing for the secrets of Bob and Ann? What if real enemies want to destroy their relationship? A real enemy could intercept the public key sent by Ann to Bob and to use it for sending some nasty words on behalf of Bob for breaking their relationship.
Then Bob and Ann should be more careful. When Ann wants to get a coded message from Bob and wants to be sure that it is from Bob, they may use a symmetric key algorithm. But they have to exchange the key privately. Ann can generate the private and public keys and send the public key to Bob together with an uncoded challenge question, for example: “When we had a date last Friday and walked in the park, I asked you to buy me a drink. What is the name of the park? What drink was it?” Bob uses the public key received from Ann for encrypting a symmetric key together with his answers to the challenge questions: “We walked in Hyde Park. I bought you a pint of Fanta.” Then Ann can be sure that she received the symmetric key from Bob rather than from an enemy, and they can use this key for encryption and decryption of their messages during some period of time, until they have to change the key.
These algorithms are widely used in the internet secure protocols, remote banking and automatic telling machines (ATMs). A 256-bit private key has approximately 10⁷⁷ variants. If an enemy has a computer capable of going over one hundred million variants in a second, then checking all variants will take 10⁷¹ seconds, or 3.2⋅10⁵⁶ years. A one in a quadrillion chance of discovering this key will take, on average, 3.2⋅10⁴¹ years. Even if you have an enemy who would try this and use very expensive super-powerful computers for doing this, his or her chances are very poor. Anyway, none of the participants of the story will live 3.2⋅10⁴¹ years. By that time, breaking their codes will be irrelevant.
Sometimes the message itself is for public use, and therefore, is not secret and should not be ciphered. But it may be important to be sure that the message originates from a particular person and is not a fake. In this case, different variants of electronic signatures are used. The most advanced of them are “digital signatures” based on asymmetric cryptography. Digital signatures are now legally recognized in the USA, Canada, all countries of the European Union and in several other countries.