En digital signatur certifierar och sätter en tidsstämpel på ett dokument. Om dokumentet därefter modifieras på något sätt kommer en verifiering av dokumentet att misslyckas. En digital signatur kan ha samma syfte som en handskriven signatur med den ytterligare fördelen att vara beständig mot manipulering. Som exempel signeras källkodsdistributionen av GnuPG så att användare kan verifiera att källkoden inte har modifierats sedan den packades.
Skapa och verifiera signaturer använder ett publik/privat nyckelpar i en operation som skiljer sig från kryptering och dekryptering. En signatur skapas genom att använda den privata nyckeln från den som signerar. Signaturern verifieras genom att använda motsvarande publika nyckel. Som exempel skulle Alice använda sin egen privata nyckel för att digitalt signera hennes senaste inlämnade dokument till Journal of Inorganic Chemistry. Redaktören som handhar hennes dokument skulle använda Alices publika nyckel för att kontrollera signaturen för att verifiera att hennes inlämnade dokument verkligen kommer från Alice och att det inte har ändrats sedan Alice skickade det. En konsekvens av att använda digitala signaturer är att det är svårare att neka att du gjorde en digital signatur eftersom det skulle implicera att din privata nyckel har blivit kompromotterad.
Flaggan
--sign is
används för att skapa en digital signatur. Dokumentat som skall
signeras är indata och det signerade dokumentet är utdata.
alice% gpg --output doc.sig --sign doc You need a passphrase to unlock the private key for user: "Alice (Judge) <alice@cyb.org>" 1024-bit DSA key, ID BB7576AC, created 1999-06-04 Enter passphrase:Dokumentet komprimeras innan det skickas och utskriften är i binärt format.
Givet ett signerat dokument kan du antingen kontrollera signaturen
eller kontrollera kontrollera signaturen och återskapa dokumentet. För
at kontrollera signaturen används flaggan
--verify.
För att verifiera samt återskapa dokumentet används flaggan
--decrypt.
Det signerade dokumentet som skall verifieras och återskapa är indata
och det återskapade dokumentet är utdata.
blake% gpg --output doc --decrypt doc.sig gpg: Signature made Fri Jun 4 12:02:38 1999 CDT using DSA key ID BB7576AC gpg: Good signature from "Alice (Judge) <alice@cyb.org>"
Ett vanligt sätt att använda digitala signaturer på är att signera
postningar på usenet eller ebrev.
I sådana situationer är det icke önskvärt att komprimera dokumentet
medan det signeras. Flaggan
--clearsign
gör så att dokumentet packas in i ett ASCII-skal-signatur men
modifierar inte dokumentet på annat sätt.
alice% gpg --clearsign doc You need a passphrase to unlock the secret key for user: "Alice (Judge) <alice@cyb.org>" 1024-bit DSA key, ID BB7576AC, created 1999-06-04 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 [...] -----BEGIN PGP SIGNATURE----- Version: GnuPG v0.9.7 (GNU/Linux) Comment: For info see http://www.gnupg.org iEYEARECAAYFAjdYCQoACgkQJ9S6ULt1dqz6IwCfQ7wP6i/i8HhbcOSKF4ELyQB1 oCoAoOuqpRqEzr4kOkQqHRLE/b8/Rw2k =y6kj -----END PGP SIGNATURE-----
Ett signerat dokument har begränsad användbarhet. Andra användare
måste återskapa ursprungsdokumentet från den signerade versionen och
även med klartextsignaturer måste det signerade dokumentet redigeras
för att återskapa originalet. Därför finns det en tredje metod för att
signera dokument som skapar en separat fil för sugnaturen. En separat
signatur skapas med flaggan
--detach-sig
.
alice% gpg --output doc.sig --detach-sig doc You need a passphrase to unlock the secret key for user: "Alice (Judge) <alice@cyb.org>" 1024-bit DSA key, ID BB7576AC, created 1999-06-04 Enter passphrase:
Både dokumentet och den separata signaturen behöver för att verifiera signaturen.
Flaggan --verify kan används för att kontrollera signaturen.
blake% gpg --verify doc.sig doc gpg: Signature made Fri Jun 4 12:38:46 1999 CDT using DSA key ID BB7576AC gpg: Good signature from "Alice (Judge) <alice@cyb.org>"