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.