Skapa och verifiera signaturer

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>"

Klartextsignera dokument

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-----

Signaturer i separata filer

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>"