Certificates and Credentials
The notions of a public-key certificate and a public-key infrastructure are central to much of modern Internet cryptography. Before getting into that, though, it is worth recalling what a digital signature is. A digital signature is a mathematical operation on a bucket of bits that only a certain key can do. This operation can be verified with another, corresponding, key. The signing key is only known by Alice. Hence, the argument goes, only Alice could have performed the mathematical operation and therefore Alice “signed” the bucket of bits.
The problem with this model is that it assumes that the signing key is a secret only known by Alice. All we can really stipulate by verifying the signature is that Alice's key signed the message; we cannot say anything about whether or not Alice did. We don't know if Alice's key was stolen by someone else. We don't know if a Trojan horse snuck into Alice's computer and fooled her into signing something else. We don't know anything about Alice's intentions. When we see Alice's handwritten signature on a paper document, we can make statements about her volition: She read and signed the document, she understood the terms. When we get a document signed with Alice's private key, we don't even know if Alice ever saw the document in the first place. “Digital signature” is a terrible name for what is going on, because it is not a signature.
This will become important later in this chapter. But first, let's talk about ...