Chapter 3 Cryptography 57
Cryptography Overview
Authentication and Digital Signatures
Suppose Alice and Bob are disputing a contract. Alice says that Bob must uphold
certain obligations because he agreed to them in a contract. Bob says that this is not
the contract he signed. He offers as evidence his copy of the contract and sure enough,
it differs from Alices. One of them has altered their copy of the contract, but who? Or
maybe the dispute centers on Bobs assertion that he never signed a contract, that the
signature at the bottom is not his. In that case, either Bob is not telling the truth or
Alice forged his signature.
If the contract was signed physically, there are ways to determine the truth. Contracts
are often filed with government agencies, so comparing Bobs and Alices copies with
the third partys copy reveals who made alterations. Witnesses may also sign the
contract and later testify that both parties did sign it, and the signatures are not
forgeries. For electronic documents, there is also a method to determine if a document
has been altered or if someone truly did sign it. This method is the digital signature.
There are two types of signature algorithms. The first is a public-key cryptosystem
that can perform block encryption, while the second is only capable of digital
signatures. The RSA algorithm is an example of the first type. The Digital Signature
Algorithm, DSA, is an example of an algorithm of the second type. Crypto-C includes
the RSA and DSA signature methods.
A digital signature uses a public/private key pair to sign a document. First the signer
digests the document, as described in Message Digests on page 47, then encrypts it
with their private key. A good digital signature algorithm possesses the following
properties:
Only the owner of a private/public key pair can generate a signature. Knowledge
of the public key does not enable anyone else to forge a signature.
Knowledge of the public key enables anyone to verify the signature.
The digital signature guarantees the authenticity of the message and its author.
The digital signature is computationally unique for each message and signer.
While a normal signature can be imitated, a digital signature is immune to
imitation.
Any altering of the message renders the signature invalid.
Note: If a digital signature is invalid, you cannot be sure it was a deliberate forgery.
Transmission errors will also produce errors in a digital signature.
For example, to create a digital signature on a contract: