How to use PGP: Signatures


By means of PGP you can sign a document in order to assure that you are the only person who wrote it. Nobody can modify a message after your signed it, and 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. In fact PGP creates a message 'digest' which is a kind of 'digital fingerprint' of it. If the message were altered in any way, a different message digest would be computed from it and so, the slightest change in a signed document will cause the digital signature verification process to fail. For this reason, by verifying a signature, you are sure that nobody altered a message after it has been signed. In other words a digital signature is more secure than a handwritten signature. Previous PGP versions used MD5 (Message Digest 5) as a 'hash function'while PGP 5.5.3 uses SHA1 (Secure Hash Algorithm 1). A hash function is the algorithm which create the 'digest'. However you can sign document as well as other users' public keys. Notice that signing other user's public keys is a very delicate operation, in fact: by signing a public key you are asserting that you are 100% sure about that key's validity! I think it isn't superfluos to point out that you have to check a key *carefully* before signing it. In fact anyone can create a false public key inserting anything as User ID (I could create a false public key containing your first name, your last name and your e-mail address...). Nobody can sign a key as he was another person, because the signature contains also the 'fingerprint' of the key used to sign. A fingerprint is a 128 bit string (128 bits for a RSA key and 160 bits for a DH/DSS key) of numbers and characters used to check and authenticate a public key. A fingerprint identifies univocally a key: it's impossible that exist 2 different keys with the same fingerprint. You can sign a key as:
  • exportable : exportable signatures are viewable from a keyserver
  • nonexportable: you think the key is valid but you do not want others relying on your signature

In order to be really sure about a public key, you have to:

  1. identify the public key univocally
  2. check real correspondance between User ID and physical owner of the key

Key identification

You can't trust User ID to identify a key! For example, I could create a false public key with *your* first name and last name, or even I could have 2 different key with the same User ID! For this reason you have to use the key's fingerprint to identify it.

Correspondance between User ID and owner of the key

To be sure that nobody can let us sign a false key, you have to check the fingerprint. Then you have to check the owner of the key. So you should physically meet him in order to get the fingerprint and finally you should check the User ID's data (first name and last name) by means of an identity card or a similar paper. You could als check the e-mail address exchanging some e-mail with the owner of the key. After following these steps you should copy the key into a floppy disk and sign it at home! Well, in order to sign a key you have to type your secret passphrase...you can't know whether the owner of the key you want to sign is storing your passphrase by reading your keystrokes...

Trust Model

The Trust Model indicates the validity of the key, based on the level of trust you have in the owner to vouch for the authenticity of someone else’s public key. In other words, by signing keys you can develop a 'net' where all nodes are trusted persons. However I think there is a better way to be sure about keys: CA. CAs (Certifying Authority) are trusted organizations that are assigned the responsibility of certifying the origin of keys and adding them to a common database. CAs issue Certificates. Certificates are digital documents attesting to the binding of a public key to an individual or other entity. A pretty known CA is VeriSign, inc..


Index           Home  Back     About  Contact us!

Copyright (c) 1998-2006 Wowarea