This is a system for communicating accross a channel that ensures that only the intended recipient can read the message. We start by generating a public key and a private or secret key. We will consider a communication between two people. It is traditional to call these two people ``Alice'' and ``Bob''. It doesn't take a great deal of thought to realise that this is so we can call their public keys and and their secret keys and .
Now assume that all permissable messages form a set (prehaps the set of all finite-length bit sequences). We now define 4 one-one functions on this set (i.e. permutations). The function corresponding to Alice's public key we will call and the one corresponding to her secret key we will call . These functions are also inverses of each other. So given a message M:
(The functions relating to Bob's keys are predictably named and and are also inverses).
It is now clear to see how the system can work. Suppose Bob has message and he wants to pass it securely to Alice. Since he (along with the rest of the world) knows Alice's public key he is able to calculate . He can now safely pass C to Alice across the insecure channel. Once she has got Alice can calculate without any difficulty since she knows (the inverse function to ). No-one else (Bob included) can do this calculation since they don't possess .
Of course there is still the problem of choosing suitable functions. Remember we must be able to happily reveal and this while being more than happy that it is sufficiently impractical to calculate it's inverse function (or equally ) from it.