| What is Public-Key Cryptography |
Traditional cryptography is based on the sender and
receiver of a message knowing and using the same secret key: the sender
uses the secret key to encrypt the message, and the receiver uses the same
secret key to decrypt the message. This method is known as secret-key
or symmetric cryptography. The main problem is getting the sender
and receiver to agree on the secret key without anyone else finding out.
If they are in separate physical locations, they must trust a courier, or
a phone system, or some other transmission medium to prevent the
disclosure of the secret key being communicated. Anyone who overhears or
intercepts the key in transit can later read, modify, and forge all
messages encrypted or authenticated using that key. The generation,
transmission and storage of keys is called key management; all
cryptosystems must deal with key management issues. Because all keys in a
secret-key cryptosystem must remain secret, secret-key cryptography often
has difficulty providing secure key management, especially in open systems
with a large number of users.
The concept of public-key cryptography was
introduced in 1976 by Whitfield Diffie and Martin Hellman in order to
solve the key management problem. In their concept, each person gets a
pair of keys, one called the public key and the other called the
private key. Each person’s public key is published while the private
key is kept secret. The need for the sender and receiver to share secret
information is eliminated; all communications involve only public keys,
and no private key is ever transmitted or shared. No longer is it
necessary to trust some communications channel to be secure against
eavesdropping or betrayal. The only requirement is that public keys are
associated with their users in a trusted (authenticated) manner (for
instance, in a trusted directory). Anyone can send a confidential message
by just using public information, but the message can only be decrypted
with a private key, which is in the sole possession of the intended
recipient. Furthermore, public-key cryptography can be used not only for
privacy (encryption), but also for authentication (digital
signatures).
Encryption
When Alice wishes to send a secret message to Bob, she
looks up Bob’s public key in a directory, uses it to encrypt the message
and sends it off. Bob then uses his private key to decrypt the message and
read it. No one listening in can decrypt the message. Anyone can send an
encrypted message to Bob but only Bob can read it. Clearly, one
requirement is that no one can figure out the private key from the
corresponding public key.
Digital Signatures
To sign a message, Alice does a computation involving
both her private key and the message itself; the output is called the
digital signature and is attached to the message, which is then sent. Bob,
to verify the signature, does some computation involving the message, the
purported signature, and Alice’s public key. If the result properly holds
in a simple mathematical relation, the signature is verified as being
genuine; otherwise, the signature may be fraudulent or the message might
have been altered.
Advantages and Disadvantages of Public-Key Cryptography Compared with
Secret-Key Cryptography
The primary advantage of public-key cryptography is
increased security and convenience. Private keys never need to transmitted
or revealed to anyone. In a secret-key system, by contrast, the secret
keys must be transmitted (either manually or through a communication
channel), and there may be a chance that an enemy can discover the secret
keys during their transmission.
Another major advantage of public-key systems is that
they can provide a method for digital signatures. Authentication via
secret-key systems requires the sharing of some secret and sometimes
requires trust of a third party as well. As a result, a sender can
repudiate a previously authenticated message by claiming that the shared
secret was somehow compromised by one of the parties sharing the secret.
For example, the Kerberos secret-key authentication system involves a
central database that keeps copies of the secret keys of all users; an
attack on the database would allow widespread forgery. Public-key
authentication, on the other hand, prevents this type of repudiation; each
user has sole responsibility for protecting his or her private key. This
property of public-key authentication is often called non-repudiation.
A disadvantage of using public-key cryptography for
encryption is speed; there are popular secret-key encryption methods that
are significantly faster than any currently available public-key
encryption method. Nevertheless, public-key cryptography can be used with
secret-key cryptography to get the best of both worlds. For encryption,
the best solution is to combine public- and secret-key systems in order to
get both the security advantages of public-key systems and the speed
advantages of secret-key systems. The public-key system can be used to
encrypt a secret key which is used to encrypt the bulk of a file or
message. Such a protocol is called a digital envelope.
Public-key cryptography may be vulnerable to
impersonation, however, even if users’ private keys are not available. A
successful attack on a certification authority will allow an adversary to
impersonate whomever the adversary chooses to by using a public-key
certificate from the compromised authority to bind a key of the
adversary’s choice to the name of another user.
In some situations, public-key cryptography is not
necessary and secret-key cryptography alone is sufficient. This includes
environments where secure secret-key agreement can take place, for example
by users meeting in private. It also includes environments where a single
authority knows and manages all the keys (e.g., a closed banking system).
Since the authority knows everyone’s keys already, there is not much
advantage for some to be “public” and others “private.” Also, public-key
cryptography is usually not necessary in a single-user environment. For
example, if you want to keep your personal files encrypted, you can do so
with any secret-key encryption algorithm using, say, your personal
password as the secret key. In general, public-key cryptography is best
suited for an open multi-user environment.
Public-key cryptography is not meant to replace
secret-key cryptography, but rather to supplement it, to make it more
secure. The first use of public-key techniques was for secure key exchange
in an otherwise secret-key system; this is still one of its primary
functions. Secret-key cryptography remains extremely important and is the
subject of ongoing study and research. Some secret-key cryptosystems are
discussed in the sections on Block Ciphers
and Stream Ciphers.
Do Digital Signatures Help Detect Altered Documents and Transmission
Errors?
A digital signature is superior to a handwritten
signature in that it attests to the contents of a message as well as to
the identity of the signer. As long as a secure hash function is used,
there is no way to take someone’s signature from one document and attach
it to another or to alter a signed message in any way. The slightest
change in a signed document will cause the digital signature verification
process to fail. Thus, public-key authentication allows people to check
the integrity of signed documents. If a signature verification fails,
however, it is generally difficult to determine whether there was an
attempted forgery or simply a transmission error.
What is a One-Way Function
A one-way function is a mathematical function
that is significantly easier to perform in one direction (the forward
direction) than in the opposite direction (the inverse direction). It
might be possible, for example, to compute the function in seconds but to
compute its inverse could take months or years. A trap-door one-way
function is a one-way function where the inverse direction is easy,
given a certain piece of information (the trap door), but difficult
otherwise.
The Significance of One-Way Functions for Cryptography
Public-key cryptosystems are based on (presumed)
trap-door one-way functions. The public key gives information about the
particular instance of the function; the private key gives information
about the trap door. Whoever knows the trap door can perform the function
easily in both directions, but anyone lacking the trap door can perform
the function only in the forward direction. The forward direction is used
for encryption and signature verification; the inverse direction is used
for decryption and signature generation.
In almost all public-key systems the size of the key
corresponds to the size of the inputs to the one-way function. The larger
the key, the greater the difference between the efforts necessary to
compute the function in the forward and inverse directions (for someone
lacking the trap door). For a digital signature to be secure for years,
for example, it is necessary to use a trap-door one-way function with
inputs large enough that someone without the trap door would need many
years to compute the inverse function.
All practical public-key cryptosystems are based on
functions that are believed to be one-way, but no function has been proven
to be so. This means that it is theoretically possible that an algorithm
will be discovered that can compute the inverse function easily without a
trap door. This development would render any cryptosystem based on that
one-way function insecure and useless. On the other hand, further research
in theoretical computer science may result in concrete lower bounds on the
difficulty of inverting certain functions, and this would be a landmark
event with significant positive ramifications for cryptography.
|