GnuPG/Zarządzanie kluczami

Zarządzanie kluczamiEdytuj

Mamy już swój klucz i chcemy go użyć - tylko jak? Podstawowym programem jest gpg. Użyliśmy go już przy generowaniu kluczy, teraz opiszę kilka innych jego opcji. Aby uzyskać więcej informacji skorzystaj z dokumentacji lub manuala dostępnego przez polecenie man gpg. Polecenie gpg --help wyświetli krótkie informacje na temat najważniejszych opcji programu. Jeśli nie lubisz używać konsoli, to istnieją programy będące graficznymi nakładkami na gpg (jeden z nich opiszę w dalszej części artykułu), ale nawet jeśli planujesz ich używać, powinieneś znać chociaż podstawy gpg.

Wyświetlanie listy kluczyEdytuj

Aby wyświetlić listę kluczy użyj polecenia gpg --list-keys. Zostaną wypisane informacje na temat naszego (jedynego jak do tej pory) klucza.

 $ gpg --list-keys
 /var/home/.gnupg/pubring.gpg
 ---------------------------------
 pub 1024D/630BE83F 2004-11-16 Imie Nazwisko <adres@email.pl>
 sub 1024g/624564B4 2004-11-16
 $

Drugi sposób to użycie gpg --fingerprint, który poda nam również odcisk palca (fingerprint) każdego klucza.

 $ gpg --fingerprint
 /var/home/gnupg/.gnupg/pubring.gpg
 ---------------------------------
 pub 1024D/6CA7 0F6B 2464 909C 1A85 6585 0076 630B E83F
 sub 1024g/624564B4 2004-11-16
 $


Eksport klucza publicznegoEdytuj

Jeśli chcemy, by inni mogli szyfrować wysyłane do nas wiadomości, muszą oni mieć nasz klucz publiczny. Musimy go zatem wyeksportować. Możemy to zrobić na dwa sposoby. Pierwszy to export do pliku binarnego. Służy do tego przełącznik --export [nazwa]. [nazwa] jest opcjonalna i określa, który klucz wyeksportować (możemy użyć numeru lub adresu e-mail a nawet tylko jego części). Jeśli nie zostanie podana, wyeksportowane zostaną wszystkie klucze. Program gpg domyślnie zapisuje wynik do standardowego wyjścia więc musimy je przekierować do pliku (tak jak poniżej). Alternatywnym rozwiązaniem jest użycie przełącznika --output <nazwa pliku>.

 $ gpg --export adres@email.pl >/tmp/klucz
 $ file /tmp/klucz
 /tmp/klucz: GPG key public ring
 $

Drugi sposób to export do pliku tekstowego (który można np. "wkleić" do e-maila lub na stronę internetową). W tym przypadku musimy dołączyć jeszcze opcję --armour. Podobnie jak poprzednio możemy albo przekierować wyjście programu albo ustalić plik wyjściowy przełącznikiem --output. Robimy to tak:

 $ gpg --armour --output /tmp/klucz2 --export adres@email.pl 
 $ file /tmp/klucz2
 /tmp/klucz2: PGP armored data public key block
 $ cat /tmp/klucz2
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: GnuPG v1.2.6 (GNU/Linux)
 
 mQGiBEGaNQMRBADjQnGz4XaFgnyw9myEDRzDT9yZNdbkVk6wTF1e0YUgikmLAV+V
 yP1PLnLmzNaSt8omssoBp5S5ysTY6FMqFGtytCQek4YZyxbO/tP4SUUnM8w8rvgN
 1K54+xSHF4RyINagEZbjTBPw5A8rTZXReVJ5Wc4O+uV58XwPETXMPXCCTwCgzF9I
 pcUa6A7G/tj4BebQms5sZbMD/AhcskgaZW+IR/wKrI9EH04Jt+phrONfx1uXr8Dw
 HVftalxLYQBANC3RBfxqRxrn5+vRk6Kp9X18wO9Iz342/mMlxam4d+m7vnrNK8wc
 qeIKv01ICGbtNKh0JISrJ7eDfJfHmuuC5+pCTBx3ZcxAxsmwD4t6029vEG0O2BOh
 4cTiBADMQyiBIBYhPxqoCCKBI+H/HyLIqrV2BwKMb8bfWWL9B22704EYZOVO7oCG
 ACrePrYVMf0lsg2CfnDdK74AOe7K5bAIi/t3DJHbOgjpbzUXWjvVLMoC7M5lMJAg
 G375YD8KAVXVo61l75fpxeKRO/6LQd4EyGQ1WjKkKv/Zo+ujIbQeSW1pZSBOYXp3
 aXNrbyA8YWRyZXNAZW1haWwucGw+iF4EExECAB4FAkGaNQMCGwMGCwkIBwMCAxUC
 AwMWAgECHgECF4AACgkQZYUAdmML6D/UXACghsaiUUUvQvnqzOBVPQv3BtWeAQkA
 oJkaQr4GRXnKRplRDIJu7gxnx3j3uQENBEGaNQoQBAC5AT4WPf/P633ZPyUUgQyR
 3hfHXGc6JAbqybXC9XsOWwTX9SroFz2ew+T69WXIFLxOy/wkzsiOc1vWVmaDuu0k
 VOuaaNp2K9JwZU4Z2kDdkAs7G0UxNSjTCcdbNeUQgZkWjhzafg0hr1x69Gw3Y39O
 yVz1H7tSCRRUB88CEoggQwADBgQAo/RYzidlKQ8SNgd7IUX7JH7ZBsxACuvkygFE
 rK0oZpjeMYIypLm1yhsQ3BlnQDL4P9bSHn7SlVmHg3IlaBJSMZZ6HnTcnnDqfPun
 VWFfpatIEMI1ZszC/QzhD5L8dDQTUWwaacTrwVv5zXmbHx8gICoCLoTZrjfIxV5y
 d922OhqISQQYEQIACQUCQZo1CgIbDAAKCRBlhQB2YwvoP64MAKCOQK76i9lrE9oI
 UrNYM/v4Myap4QCcD3B77vNHeu+CfBv56a7XPYlbLgY=
 =AFFC
 -----END PGP PUBLIC KEY BLOCK-----

Po wyeksportowaniu klucza publicznego (w formie binarnej lub tekstowej) możemy go wysłać znajomym e-mailem, udostępnić np. na stronie internetowej lub skorzystać z innego sposobu komunikacji. Nie musimy się obawiać, że nasz klucz publiczny trafi do kogoś, kogo nie znamy. Jak już wspomniałem, nie stanowi to zagrożenia.

Import klucza publicznegoEdytuj

Wiemy już jak eksportować klucze. Teraz nauczymy się je importować. Sprawa ma się podobnie jak w przypadku eksportu - możemy określić plik z którego wczytane zostaną klucze lub po prostu przekierować wejście programu. Do importu używamy parametru --import [nazwa-pliku]. Jeśli nie podamy nazwy pliku, program będzie próbował wczytać je przez standardowe wejście. Nie ma różnicy czy importowany plik ma postać binarną czy tekstową. Oto przykład:

 $ gpg --import /tmp/klucz-import
 gpg: klucz D82E0E4B: klucz publiczny ,,Krzysztof Adamski <mr_K@interia.pl>'' wczytano do zbioru
 gpg: Ogółem przetworzonych kluczy: 1
 gpg:         dołączono do zbioru: 1
 
 $ gpg --list-keys
 /var/home/gnupg/.gnupg/pubring.gpg
 ---------------------------------
 pub 1024D/630BE83F 2004-11-16 Imie Nazwisko <adres@email.pl>
 sub 1024g/624564B4 2004-11-16
 
 pub 1024D/D82E0E4B 2004-02-07 Krzysztof Adamski <mr_K@interia.pl>
 sub 1024g/E9B3B634 2004-02-07
 $

Jak widać został zaimportowany nowy klucz i znajduje się on na naszej liście kluczy. Teraz możemy już wysyłać zaszyfrowane wiadomości do osobnika używającego tego klucza, a także sprawdzać jego podpisy.

Weryfikacja kluczyEdytuj

Po zaimportowaniu klucza powinniśmy go zweryfikować. Polega to na sprawdzeniu odcisku palca klucza. Jest to rodzaj hash'u klucza. Nawet najmniejsza zmiana klucza powoduje również zmianę odcisku. Żeby być pewnym, że wszystko jest w porządku, musimy po prostu skontaktować się z właścicielem klucza (np. przez telefon lub jakiś IM, ważne jest tylko żebyśmy byli pewni, że rozmawiamy z właściwą osobą, a nie z kimś, kto się pod nią podszywa) i poprosić o podyktowanie odcisku. Jeśli jest taki sam jak ten, który widzimy u siebie to możemy być pewni, że klucz publiczny nie został zmieniony. Weryfikacja jest najsłabszym ogniwem w kryptografii z kluczem publicznym. Powinniśmy więc być przy niej ostrożni i zawsze sprawdzać fingerprint przed uznaniem klucza za poprawny. Po weryfikacji możemy podpisać klucz publiczny naszym kluczem prywatnym. Możemy to zrobić używając opcji --edit-key [nazwa klucza]. Dzieki niej przejdziemy w tryb interaktywny i będziemy mogli wydawać polecenia. Aby uzyskać ich listę wytarczy wpisać '?'. Nie będę się tu zajmował ich dokładnym opisem, jeśli jesteś zainteresowany, to odsyłam do manuala. Do podpisywania kluczy służy polecenie sign. Poniżej pokazuję jak to wygląda:

 $ gpg --edit-key mr_K@interia.pl
 gpg (GnuPG) 1.2.6; Copyright (C) 2004 Free Software Foundation, Inc.
 This program comes with ABSOLUTELY NO WARRANTY.
 This is free software, and you are welcome to redistribute it
 under certain conditions. See the file COPYING for details.
 
 pub  1024D/D82E0E4B  utworzony: 2004-02-07, wygasa: nigdy       zaufanie: -/-
 sub  b1024g/E9B3B634u  tworzony: 2004-02-07, wygasa: nigdy
 (1). Krzysztof Adamski <mr_K@interia.pl>
 
 Polecenie> sign
 
 pub  1024D/D82E0E4B  utworzony: 2004-02-07, wygasa: nigdy     zaufanie: -/-
  Odcisk klucza głównego: B33C 5CF3 2083 1A33 B449 90E5 400A D4C2 D82E 0E4B
 
    Krzysztof Adamski <mr_K@interia.pl>
 Jak dokładnie została przez Ciebie sprawdzona tożsamość tej osoby?
 Jeśli nie wiesz co odpowiedzieć, podaj ,,0''.
 
    (0) Nie odpowiem na to pytanie. (domyślnie)
    (1) W ogóle nie.
    (2) Pobieżnie.
    (3) Bardzo dokładnie.
 
 Twój wybór (,,?'' podaje więcej informacji): 3
 Czy jesteś naprawdę pewien że chcesz podpisać ten klucz
 swoim kluczem: "Imie Nazwisko <adres@email.pl>" (630BE83F)
 
 Tożsamość użytkownika została dokładnie sprawdzona.
 Czy na pewno podpisać? t

Po podpisaniu możemy zobaczyć listę podpisów. Każdy klucz jest podpisany przez jego właściciela i może być podpisany przez innych. Służy do tego polecenie sign.

 Polecenie> check
 uid Krzysztof Adamski <adres2@email2.pl>
 sig!3       D82E0E4B 2004-02-07   [podpis klucza nim samym]
 sig!3       630BE83F 2004-12-02   Imie Nazwisko <adres@email.pl>
 Polecenie>

Aby zmiany zostały zapisane, powinniśmy użyć polecenia save lub potwierdzić chęć zapisu przy wyjśćiu poleceniem quit. Jeśli praca programu zostanie nagle przerwana (np. przez ctrl-c), zmiany mogą nie zostać utrwalone.

Ustalanie zaufania kluczyEdytuj

Osobiste weryfikowanie dużej ilości kluczy może być kłopotliwe. Aby rozwiązać ten problem, GnuPG używa mechanizmu web of trust (z ang. sieć zaufania). W skrócie polega on na tym, że możemy ustalić zaufanie dla kluczy, przykładowo: - nasz kolega Krzysiek podpisał klucz Mateusza, - Mateusz podpisał klucz Adama. Jeśli Krzysiek ufa Mateuszowi, to nie musi już sam sprawdzać poprawności podpisanych przez niego kluczy (może uznać klucz Adama za prawidłowy). Idąc dalej, jeżeli my ufamy Krzyśkowi, nie musimy weryfikować kluczy Mateusza ani Adama. Oczywiście zaufanie może być ograniczone, z tego powodu wyróżnia się pięć jego poziomów:


1 - nie wiem

Jest to podstawowy poziom. Dopóki nie określisz inaczej, klucz będzie miał właśnie ten poziom zaufania. Oznacza on, że nic nie wiemy na temat jego poprawności.


2 - NIE ufam mu

Wiemy, że klucze podpisane przez tego użytkownika mogą być fałszywe. Jego podpis nic nie znaczy.


3 - mam ograniczone zaufanie

Właściel klucza potrafi podpisywać klucze i robi to raczej dobrze. Nie jesteśmy jednak na tyle pewni jego podpisu, żeby uznać klucz za poprawny tylko i wyłącznie na podstawie tego jednego podpisu. Jeśli klucz posiada kilka podpisów na tym poziomie to mu ufamy.


4 - mam pełne zaufanie

Ufamy jego właścicielowi na tyle, żeby uznać za poprawny każdy klucz przez niego podpisany.


5 - ufam absolutnie

Podpisom jego właściciela ufasz jak swoim własnym. Tego poziomu używa się najczęściej do podpsiywania własnych kluczy. Używanie go w innych wypadkach nie jest zalecane.


Zaufanie dla klucza ustalamy samodzielnie i jest to informacja osobista. Oznacza to, że nie jest ona eksportowana razem z kluczem. Jest ona nawet przechowywana w oddzielnym pliku. Do jego ustalania możemy użyć edytora kluczy i polecenia trust. Poniżej pokazuje proces zmiany zaufania dla klucza.

 $ gpg --edit-key mr_K@interia.pl
 
 pub  1024D/D82E0E4B  utworzony: 2004-02-07, wygasa: nigdy     zaufanie: m/f
 sub  1024g/E9B3B634  utworzony: 2004-02-07, wygasa: nigdy
 (1). Krzysztof Adamski <mr_K@interia.pl>
 
 Polecenie> trust
 pub  1024D/D82E0E4B  utworzony: 2004-02-07, wygasa: nigdy     zaufanie: m/f
 sub  1024g/E9B3B634  utworzony: 2004-02-07, wygasa: nigdy
 (1). Krzysztof Adamski <mr_K@interia.pl>
 
 Zastanów się jak bardzo ufasz temu użytkownikowi w kwestii sprawdzania
 tożsamości innych użytkowników (czy sprawdzi on odciski kluczy pobrane
 z różnych źródeł, dokumenty potwierdzające tożsamość, itd.).
 
  1 = nie wiem
  2 = NIE ufam mu
  3 = mam ograniczone zaufanie
  4 = mam pełne zaufanie
  5 = ufam absolutnie
  m = powrót do głównego menu
 
 Twoja decyzja? 4
 
 pub  1024D/D82E0E4B  utworzony: 2004-02-07, wygasa: nigdy     zaufanie: f/f
 sub  1024g/E9B3B634  utworzony: 2004-02-07, wygasa: nigdy
 (1). Krzysztof Adamski <mr_K@interia.pl>
 Pokazana wartość wiarygodności klucza może być niepoprawna,
 dopóki program nie zostanie uruchomiony ponownie.
 Polecenie>

Zaufanie dla klucza jest wypisywane po jego prawej stronie zaraz za inforamcją o tym, kiedy klucz wygasa. Składa się on z dwóch liter, pierwsza oznacza nasze zaufanie dla właściciela klucza a druga to zaufanie dla klucza. Należy tu odróżnić zaufanie do klucza od zaufania do jego właściela. Mogą one być różne. Np. jeśli podpisujemy klucz oznacza to, że ufamy mu w pełni. Możemy jednak nie ufać, że jego właściciel odpowienio podpisuje klucze i ustawić zaufanie dla niego na ograniczone. W takim wypadku zaufanie będzie przedstawione jako m/f. Oto znaczenie liter:

q - nie wiem

n - NIE ufam mu

m - ograniczone zaufanie

f - pełne zaufanie

u - zaufanie absolutne


Określanie zaufania dla klucza jest dość złożone. Aby uznać klucz za zaufany (f), muszą być spełnione poniższe warunki: 1. Klucz jest podpisany przez wystarczającą liczę zaufanych kluczy, tj.: - osobiście, przez Ciebie, lub - został podpisany przez przynajmniej jeden w pełni zaufany klucz, lub - został podpisany przez przynajmniej trzy klucze o ograniczonym zaufaniu; 2. Ścieżka podpisanych kluczy między Twoim kluczem a danym nie może być dłuższa niż pięć.

Podane tu wartości są standardowymi i mogą być zmienione. Jeśli chcesz uzykać więcej informacji, odsyłam do dokumentacji.

Serwery kluczyEdytuj

Wspomniałem już, że można opublikować swój klucz np. na stronie internetowej albo dołączać do wiadomości. Istnieje jeszcze jeden sposób - serwery kluczy. Zasada ich działania jest bardzo prosta - przechowują one klucze publiczne OpenPGP. Najczęsciej udostępniają również na swojej stronie internetowej wyszukiwarkę kluczy i umożliwiają ich pobranie lub sprawdzenie odcisku. Przykładowy serwer to www.keyserver.net. Jeśli chcesz się przekonać jak on działa to wejdź na stronę www udostępnianą przez niego i wpisz mój adres e-mail. Jak zapewne zauważyłeś można za jej pomocą pobrać czyjś klucz lub udostępnić swój. My jednak nauczymy się, jak to zrobić bezpośrednio przez gpg. Najpierw musimy określić, z którego serwera chcemy skorzystać przez parametr --keyserver [adres-serwera]. Adres serwera ma postac: schame://name[:port], przy czym schame określa protokół, najczęśćiej hkp (dla HTTP) lub ldap (dla LDAP). Najlepiej jako serwer kluczy podać hkp://subkeys.pgp.net, który losowo przydzieli nam jakiś inny serwer kluczy. Teraz musimy użyć parametru --send-key <nazwa>, gdzie nazwa określa klucz, który chcemy wysłać lub parametr --recv-key <numer>, gdzie numer określa, który klucz chcemy pobrać. Możemy także użyć --search-keys [name] do wyszukania klucza dla podanej nazwy na danym serwerze. Najpierw wyeksportujmy nasz klucz:

 $ gpg --keyserver "hkp://subkeys.pgp.net" --send-key 630BE83F
 gpgkeys: WARNING: this is an *experimental* HKP interface!
 $ gpg --keyserver "hkp://subkeys.pgp.net" --search-key adres@email.pl
 gpgkeys: WARNING: this is an *experimental* HKP interface!
 gpgkeys: searching for "adres@email.pl" from HKP server subkeys.pgp.net
 Keys 1-1 of 1 for "adres@email.pl"
 (1)      Imie Nazwisko <adres@email.pl>           1024 bit DSA key 630BE83F, created 2004-11-15
           Enter number(s), N)ext, or Q)uit > q
 $

Jak widać po wyeksportowaniu można już znaleźć nasz klucz na serwerze (choć może się to okazać możliwe dopiero po kilku minutach). Serwery wymieniają między sobą informacje, więc nie jest potrzebne eksportowanie do kilku serwerów. Teraz sprobujemy pobrać klucz z serwera. Zanim to jednak zrobimy usuniemy klucz mr_K@interia.pl z naszej listy używając opcji --delete-keys <nazwa>.

 $ gpg --delete-keys mr_K
 gpg (GnuPG) 1.2.6; Copyright (C) 2004 Free Software Foundation, Inc.
 This program comes with ABSOLUTELY NO WARRANTY.
 This is free software, and you are welcome to redistribute it
 under certain conditions. See the file COPYING for details.
 
 pub 1024D/D82E0E4B 2004-02-07 Krzysztof Adamski <mr_K@interia.pl>
 
 Usunąć ten klucz ze zbioru? t
 $ gpg --keyserver "hkp://subkeys.pgp.net" --search-keys mr_K@interia.pl
 gpgkeys: WARNING: this is an *experimental* HKP interface!
 gpgkeys: searching for "mr_K@interia.pl" from HKP server subkeys.pgp.net
 Keys 1-2 of 2 for "mr_K@interia.pl"
 (1)      Krzysztof Adamski <mr_K@interia.pl>
           1024 bit DSA key D82E0E4B, created 2004-02-06
 (2)       Krzysztof Adamski <mr_K@interia.pl>
           1024 bit DSA key D0F82C9D, created 2003-11-05
           Enter number(s), N)ext, or Q)uit > 1
 gpgkeys: WARNING: this is an *experimental* HKP interface!
 gpg: klucz D82E0E4B: klucz publiczny ,,Krzysztof Adamski <mr_K@interia.pl> wczytano do zbioru
 gpg: Ogółem przetworzonych kluczy: 1
 gpg:          dołączono do zbioru: 1
 $ gpg --list-keys
 /var/home/gnupg/.gnupg/pubring.gpg
 ---------------------------------
 pub 1024D/630BE83F 2004-11-16 Imie Nazwisko <adres@email.pl>
 sub 1024g/624564B4 2004-11-16
 
 pub 1024D/D82E0E4B 2004-02-07 Krzysztof Adamski <mr_K@interia.pl>
 sub 1024g/E9B3B634 2004-02-07

Jest kilka rzeczy wymagających wytłumaczenia. Najepierw usunęliśmy klucz dla mr_K@interia.pl podając jedynie część e-maila - mr_K, jest to dozwolone i bardzo często stosowane, ważne jest aby podać jednoznacznie, który klucz ma być usunięty. Program zapytał czy na pewno usunąć klucz, po przyciśnięciu t klucz znika z naszej listy. Następnie wyszukaliśmy na serwerze klucz dla podanego adresu e-mail i otrzymaliśmy odpowiedź, że istnieją dwa takie klucze. Porównujemy daty i wybieramy nowszy wpisując jego numer. Klucz został automatycznie zaimportowany. Chciałbym tu poruszyć problem istnienia dwóch kluczy dla mojego adresu e-mail. Otóż raz wysłany klucz do serwera nie może zostać jednoznacznie usuniety, może zostać jedynie unieważniony (o tym w dalszej części artykułu). Jednak klucz publiczny może być unieważniony jedynie przez jego właściciela czyli osobę, która posiada klucz prywatny. Niestety przez awarię mojego dysku twardego straciłem ten klucz i nie jestem już w stanie unieważnić starego klucza (od tamtej pory robię kopie zapasowe kluczy i innych danych). Unieważnianiem kluczy zajmiemy się później, teraz wróćmy do ich pobierania. Chciałbym jeszcze pokazać drugą metodę - przez numer.

 $ gpg --delete-keys mr_K
 [...]
 pub 1024D/D82E0E4B 2004-02-07 Krzysztof Adamski <mr_K@interia.pl>
 
 Usunąć ten klucz ze zbioru? y
 $ gpg --keyserver "hkp://subkeys.pgp.net" --recv-keys D82E0E4B
 gpgkeys: WARNING: this is an *experimental* HKP interface!
 gpg: klucz D82E0E4B: klucz publiczny ,,Krzysztof Adamski <mr_K@interia.pl> wczytano do zbioru
 gpg: Ogółem przetworzonych kluczy: 1
 gpg:          dołączono do zbioru: 1
 $

Wytłuściłem numer klucza, który został użyty przy pobieraniu z serwera. Ten sam numer możemy odczytać z listy kluczy wypisnej np. przez opcję --list-keys.


Certyfikat unieważniającyEdytuj

No dobrze, ale co zrobić, jeśli ktoś zdobędzie nasz klucz prywatny? Jeśli nawet nie zna hasła chroniącego klucz prywatny, bardzo możliwe, że w niedługim czasie klucz ten pozna np. poprzez atak słownikowy. Być może z jakiegoś innego powodu będziemy musieli zmienić klucz publiczny? Aby to zrobić, musimy po prostu unieważnić nasz stary klucz i poinformować o tym znajomych. Do tego celu musimy wygenerować certyfikat unieważniający klucz. Dobrym pomysłem jest wygenerowanie go wcześniej i zachowanie w bezpiecznym miejscu na innym medium niż znajduje się sam klucz prywatny. Wtedy w razie np. awarii dysku będziemy w stanie chociaż unieważnić klucz, którego już nie posiadamy. Do generowania takiego certyfikatu służy opcja --gen-revoke [nazwa], która jako argument przyjmuje identyfikator klucza dla którego chcemy wygenerować certyfikat (aby to zrobić musimy posiadać klucz prywatny). Będziemy musieli odpowiedzieć na klika prostych pytań (odpowiedzi wytłuściłem), cały proces przedstawiam poniżej. Możemy użyć opcji --output [plik], jeśli chcemy, aby zamiast na ekran, klucz został zapisany w podanym pliku. Oczywiście odpowiedzi mogą być inne i ściśle zależą od okoliczności.

 $ gpg --gen-revoke adres
 
 sec 1024D/630BE83F 2004-11-16 Imie Nazwisko <adres@email.pl>
 
 Stworzyć certyfikat unieważnienia tego klucza? (t/N) t
 Proszę wybrać powód unieważnienia:
 0 = nie podano przyczyny
 1 = klucz został skompromitowany
 2 = klucz został zastąpiony
 3 = klucz nie jest już używany
 Q = Anuluj
 
 (Prawdopodobnie chcesz tu wybrać 1)
 Twoja decyzja? 0 Wprowadź opis (nieobowiązkowy) i zakończ go pustą linią:
 >
 Powód unieważnienia: nie podano przyczyny
 (nie podano)
 Informacje poprawne? t
 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
 
 wymuszono opakowanie ASCII wyniku.
 Certyfikat unieważnienia został utworzony.
 
 Należy przenieść go na nośnik który można bezpiecznie ukryć; jeśli źli ludzie
 dostaną ten certyfikat w swoje ręce, mogą użyć go do uczynienia klucza
 nieużytecznym.
 
 Niezłym pomysłem jest wydrukowanie certyfikatu unieważnienia i schowanie
 wydruku w bezpiecznym miejscu, na wypadek gdyby nośnik z certyfikatem stał się
 nieczytelny. Ale należy zachować ostrożność, systemy drukowania różnych
 komputerów mogą zachować treść wydruku i udostępnić ją osobom nieupoważnionym.
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: GnuPG v1.2.6 (GNU/Linux)
 Comment: A revocation certificate should follow
 
 iEkEIBECAAkFAkGgoKsCHQAACgkQZYUAdmML6D/RDQCgrRNm4cjauVRvtz3QWVdm
 0ZgDsP4An1tpIXoiO5P7G385m/KR/mGkm5sr
 =piFr
 -----END PGP PUBLIC KEY BLOCK-----
 $

Teraz, aby dokonać unieważnienia, wystarczy zaimportować taki certyfikat jak zwykły klucz. Niżej podaję przykład takiej operacji. Prawdopodobnie będziemy po tym chcieli wyeksportować ten unieważniony klucz do serwera kluczy. Nie ma możliwości dokonania operacji odwrotnej - raz unieważniony klucz nie może stać się znów ważny.

 $ gpg --import /tmp/revoke
 gpg: klucz 630BE83F: ,,Imie Nazwisko <adres@email.pl>'' certyfikat unieważnienia został już wczytany
 gpg: Ogółem przetworzonych kluczy: 1
 gpg: nowych unieważnień kluczy: 1
 
 $ gpg --list-keys
 /var/home/gnupg/.gnupg/pubring.gpg
 ---------------------------------
 pub 1024D/630BE83F 2004-11-16 Imie Nazwisko <adres@email.pl>
 sub 1024g/624564B4 2004-11-16 [unieważniony]
 
 pub 1024D/D82E0E4B 2004-02-07 Krzysztof Adamski <mr_K@interia.pl>
 sub 1024g/E9B3B634 2004-02-07
 $