Digital Signing

From Jonathan Gardner's Tech Wiki
Jump to: navigation, search

What is a digital signature? It's a number that identifies data. Generally, it is used to make sure that the data hasn't been tampered with since the signature of the data you received should match the signature of the data that was delivered.

Let me explain with a story. Alice wants to give Bob a letter. However, Charlie wants to give Bob a letter that he wants Bob to think came from Alice. While Alice doesn't mind that the letter is seen or read by anyone (it isn't really private anyway), she does want a way to make sure that Bob doesn't believe Charlie's letter is really hers.

Alice uses a digital signing algorithm to produce a number. She tells Bob that the letter that is hers is signed with that number by that algorithm. If there is some way to securely give Bob that additional information, then Bob can check whether the letter he got was really from Alice.

Charlie could use the same algorithm to make a digital signature of his own letter. If he could get Bob to believe that the signature was Alice's signature, then he could fool Bob.

However, certain signature algorithms exist whereby Alice can retain a secret that allows only her to make valid signatures. In this case, Charlie wouldn't be able to spoof Alice.

The algorithms

There are three algorithms that go hand-in-hand.

  1. The private and public key pair generation algorithm.
  2. The signature generation algorithm. This requires the data to be signed as well as the private key.
  3. The signature verification algorithm. This requires the data that is purported to be signed as well as the public key.


There are a variety of algorithms that are useful: