GnuPG/Podpisywanie cyfrowe plików
Do cyfrowego podpisywania wiadomości służy opcja --sign. Podobnie jak w przypadku szyfrowania, opcja ta przyjmuje opcjonalny argument w postaci nazwy pliku do podpisania. Możemy określić nazwę pliku wynikowego za pomocą --output. Opcja --armour umożliwia zapisanie podpisu w formacie tekstu.
$ gpg --armour --output /tmp/wiadomosc.sig --sign /tmp/wiadomosc.txt Musisz podać hasło aby odbezpieczyć klucz prywatny użytkownika: "Imie Nazwisko <adres@email.pl>" długość 1024 bitów, typ DSA, numer 630BE83F, stworzony 2004-11-16 $ file /tmp/wiadomosc.sig /tmp/wiadomosc.sig: PGP armored data message $
Do sprawdzenia podpisu służy opcja --verify a do sprawdzenia i jednoczesnego odczytania wiadomości służy opcja --decrypt. Oto przykład:
$ gpg --decrypt /tmp/wiadomosc.sig wiadomość gpg: Podpisano w pią 03 gru 2004 19:57:12 CET kluczem DSA o numerze 630BE83F. gpg: Poprawny podpis złożony przez "Imie Nazwisko <adres@email.pl>" $
Niestety podpisana w ten sposób wiadomość (lub jakikolwiek plik) nie może być w prosty sposób odczytana nie używając GnuPG ponieważ jest pakowana przez podpisem. Aby temu zapobiec (i umożliwić odczytywanie wiadomości tym, którzy nie maja GnuPG), musisz użyć opcji --clearsign zamiast --sign.
$ gpg --output /tmp/wiadomosc.sig --clearsign /tmp/wiadomosc.txt Musisz podać hasło aby odbezpieczyć klucz prywatny użytkownika: "Imie Nazwisko <adres@email.pl>" długość 1024 bitów, typ DSA, numer 630BE83F, stworzony 2004-11-16 $ cat /tmp/wiadomosc.sig -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 wiadomość -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) iD8DBQFBsLSFZYUAdmML6D8RAsSVAKDDEHFazZXa4m7aZtYnf2GUVaI7DwCfeUp+ dKW8EPNOSW7sPe93xomD8RY= =oCXH -----END PGP SIGNATURE-----
Podpisane dokumenty mają jednak jedną wadę - uzyskanie z nich normalnej wersji dokumentu zajmuje trochę czasu. Rozwiązaniem tego problemu jest trzecia metoda podpisu, która tworzy oddzielny plik z podpisem nie zmieniając oryginalnego dokumentu. Służy do tego opcja --detach-sig.
$ gpg --output /tmp/wiadomosc.sig --detach-sig /tmp/wiadomosc.txt Musisz podać hasło aby odbezpieczyć klucz prywatny użytkownika: "Imie Nazwisko <adres@email.pl>" długość 1024 bitów, typ DSA, numer 630BE83F, stworzony 2004-11-16 $
Do sprawdzenia takiego podpisu wymagane są oba pliki - plik źródłowy i plik z podpisem. Sprawdzenia dokonuje się przez opcję --verify z dwoma argumentami oznaczającymi nazwę pliku z podpisem oraz nazwę pliku źródłowego. Oto przykład:
$ gpg --verify /tmp/wiadomosc.sig /tmp/wiadomosc.txt gpg: Podpisano w pią 03 gru 2004 20:02:55 CET kluczem DSA o numerze 630BE83F. gpg: Poprawny podpis złożony przez "Imie Nazwisko <adres@email.pl>" $