Whenever we, however, use a public key to encrypt a message or to verify
the authenticity (digital signature) of a message, we must ensure that
the public key we are using is valid and it belongs to the claimant rather
than anyone else. This issue known as the public key integrity
problem vitally determines the whole security of communication,
including conducting transactions over the Internet.
The current state-of-the art solution is to establish in a hierarchical
manner a system to issue public key certificates, in which the principal's
public key (probably as well as some other information) is included and
signed by an authority, and the authority may hold a certificate
issued by a super authority, and so on up the hierarchy. This system is
the so called public key certificate management infrastructure, or PKI
(Public Key Infrastructure)[15].
It is worth pointing out that although several PKI implementations are
currently evolving (such as IETF's PKIx(Public-Key
Infrastructure,X.509)[16], PKCS(Public Key Crypto
System)[17], PGP(Pretty Good Privacy)[18], SPKI(Simple Public
Key Infrastructure)[19], SDSI(Simple Distributed Security
Infrastructure)[20],etc.), there is no single PKI implementation
nor even a single agreed-upon standard for setting up a PKI. Even those
implementations that are based on the same standard X.509
recommendation[16] are still incompatible with each other because of
independent interpretations in their actual
implementations[21] [22].
Further more, security protocols, operations and inter-operations between
principals (agents), as well as public key management are really difficult
for the ordinary end-users to handle. Those routines themselves
should be autonomously and cooperatively performed by programs running
on the Internet so that the workload of the users can be lessened.