GnuPG: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
DrJolo (dyskusja | edycje)
treść niezależną od systemu operacyjnego przeniesiono do osobnego modułu, brakujące przecinki, literówki, redukcja zdań wielokrotnie złożonych
DrJolo (dyskusja | edycje)
rozdziały podzielono na pojedyncze moduły
Linia 4:
# GnuPG w trybie tekstowym
## Konfiguracja GnuPG
## [[GnuPG/Generowanie kluczy|Generowanie kluczy]]
## Zarządzanie kluczami
### [[GnuPG/Wyświetlanie listy kluczy|Wyświetlanie listy kluczy]]
### Export[[GnuPG/Eksport klucza publicznego|Eksport klucza publicznego]]
### [[GnuPG/Import klucza publicznego|Import klucza publicznego]]
### [[GnuPG/Weryfikacja kluczy|Weryfikacja kluczy]]
### [[GnuPG/Ustalanie zaufania kluczy|Ustalanie zaufania kluczy]]
### [[GnuPG/Serwery kluczy|Serwery kluczy]]
### [[GnuPG/Certyfikat unieważniający|Certyfikat unieważniający]]
## [[GnuPG/Szyfrowanie i deszyfrowanie plików|Szyfrowanie i deszyfrowanie plików]]
## [[GnuPG/Podpisywanie cyfrowe plików|Podpisywanie cyfrowe plików]]
# Graficzne nakładki na GnuPG
## GPA dla GNU/Linux
## WinPT dla Windows
# Pluginy do programów pocztowych
## Enigmail dla Mozilla Thunderbird
# Odnośniki zewnętrzne
 
Linia 22 ⟶ 25:
==Konfiguracja GnuPG==
 
Zajmijmy się więc konfiguracją. Opis dotyczy systemu GNU/Linux. Pewne polecenia mogą się różnić w innych systemach, ale składnia polecenia ''gpg'' pozostaje taka sama (także w systemie Windows).
 
==Generowanie kluczy==
 
Zacznijmy od utworzenia w naszym katalogu domowym podkatalogu dla gnupg. W tym celu wydajemy pocenie: ''mkdir ~/.gnupg''
Potrzebujemy pary kluczy - prywatnego i odpowiadającego mu publicznego. W tym celu wydajemy polecenie ''gpg --gen-key''. Naszym oczom powinno ukazać się coś takiego:
 
$ mkdir ~/.gnupg
$ gpg --gen-key
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.
gpg: zbiór kluczy ,,/var/home/gnupg/.gnupg/secring.gpg<nowiki>''</nowiki> został utworzony
gpg: zbiór kluczy ,,/var/home/gnupg/.gnupg/pubring.gpg<nowiki>''</nowiki> został utworzony
Proszę wybrać rodzaj klucza:
(1) Para kluczy dla algorytmów DSA i ElGamala (domyślne)
(2) DSA (tylko do podpisywania)
(4) RSA (tylko do podpisywania)
Twój wybór?
 
W tym momencie musimy zdecydować jaki algorytm wybrać. Zaleca się wybranie domyślnej wartości (1) dzięki czemu będziemy mogli zarówno szyfrować jak i podpisywać wiadomości.
Następnie zostaniemy zapytani o długość klucza (znów wybierzmy wartość domyślną). Kolejnym krokiem jest określenie terminu ważności klucza. W większości przypadków wybiera się tu wartość 0 czyli brak terminu ważnośći (klucz nigdy nie wygasa). Teraz musimy potwierdzić, że wszystko się zgadza wciskając t.
Teraz musimy ustalić nasze dane personalnalne przypisane do klucza (imię i nazwisko, adres e-mail oraz komentarz wyświetlany w nawiasach). Dane te nie muszą być prawdziwe ale ważne, żeby inni wiedzieli czyj to klucz. Imię i nazwisko musi składać się co najmniej z pięciu znaków. Najlepiej, żeby podany adres e-mail był prawidłowy, przez co unikniemy nieporozumień. Po wprowadzeniu tych danych program wyświetli je i pozwoli skorygować ewentualne błedy. Jeśli wszystko się zgadza to przechodzimy dalej wciskając [D].
Teraz ważny krok - hasło dostępu. Powinno ono być długie i skomplikowane, co w pewnym stopniu może nas ochronić w razie, gdyby ktoś uzyskał dostęp do klucza prywatnego (np. nasz brat albo administrator). Hasłem tym zaszyfrowany jest w sposób symetryczny nasz klucz publiczny i będzie ono potrzebne przy każdym jego użyciu. Dodam tylko, że bezpieczne hasło powinno składać się z dużych i małych liter a także cyfr. Nie polecam używania np. polskich liter ze względu na ewentualne problemy z jego użyciem w przypadku niektórych terminali itp.
Po wpisaniu i powtórzeniu hasła nastąpi generowanie klucza. Na koniec powinniśmy orzymać podobny komunikat:
 
gpg: /var/home/gnupg/.gnupg/trustdb.gpg: baza zaufania utworzona
klucz publiczny i prywatny (tajny) zostały utworzone i podpisane.
klucz został oznaczony jako obdarzony absolutnym zaufaniem.
pub 1024D/630BE83F 2004-11-16 Imie nazwisko<adres@email.pl>
Odcisk klucza = 6F92 BCA7 0F6B 2464 909C 1A85 6585 0076 630B E83F
sub 1024g/624564B4 2004-11-16
 
No i gotowe. Utworzyliśmy parę kluczy. Pliki GnuPG Znajdują się w jego katalogu, ale nie powinniśmy ich "ręcznie" modyfikować. Wszystko, co potrzebne, możemy zrobić przez polecenie gpg.
 
<small>[[#top|Na górę strony]]</small>
 
==Zarządzanie kluczami==
Linia 67 ⟶ 32:
<small>[[#top|Na górę strony]]</small>
 
===Wyświetlanie listy kluczy===
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
$
 
<small>[[#top|Na górę strony]]</small>
 
===Export klucza publicznego===
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. Pierszy 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.
 
<small>[[#top|Na górę strony]]</small>
 
===Import klucza publicznego===
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><nowiki>''</nowiki> 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.
 
<small>[[#top|Na górę strony]]</small>
 
===Weryfikacja kluczy===
Po zaimportowaniu klucza powinniśmy go zweryfikować. Polega to na sprawdzniu 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łyży polecenie sign. Poniżej pokazuje 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<nowiki>''</nowiki>.
(0) Nie odpowiem na to pytanie. (domyślnie)
(1) W ogóle nie.
(2) Pobieżnie.
(3) Bardzo dokładnie.
Twój wybór (,,?<nowiki>''</nowiki> 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.
 
<small>[[#top|Na górę strony]]</small>
 
===Ustalanie zaufania kluczy===
Osobiste weryfikowanie dużej ilosci kluczy może być kłopotliwe. Aby rozwiązać ten problem, GnuPG używa mechanizmu web of trust. 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 gościa 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.
 
<small>[[#top|Na górę strony]]</small>
 
===Serwery kluczy===
 
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''.
 
<small>[[#top|Na górę strony]]</small>
===Certyfikat unieważniający===
No dobrze ale co zrobić, jeśli ktoś zdobędzie nasz klucz prywatny, albo po prostu z jakiegoś powodu chcemy go zmienić? 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 tekiej 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><nowiki>''</nowiki> 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
$
 
<small>[[#top|Na górę strony]]</small>
 
==Szyfrowanie i deszyfrowanie plików==
We wcześniejszej części artykułu pisałem, jak zaimportować czyjś klucz publiczny. Teraz pokażę, jak za jego pomocą zaszyfrować dokument. Z technicznego punktu widzenia nie ma znaczenia jaki rodzaj pliku szyfrujemy (może to być tekst, plik graficzny czy muzyczny), najczęściej jednak są to dokumenty tekstowe. Do szyfrowania używamy opcji ''--encrypt''. Jako parametr tej opcji możemy podać nazwę pliku do zaszyfrowania (w takim wypadku opcja ta powinna zostać podana jako ostatnia), w przeciwnym wypadku dane zostaną wczytane ze standardowego wejścia. Za pomocą opcji ''--output'' możemy określić nazwę pliku wyjściowego. Jeśli tego nie zrobimy, wynikiem będzie plik o nazwie stworzonej z nazwy pliku wejściowego z suffixem .gpg. Klucz publiczny można ustalić za pomocą opcji ''--recipient'', która przyjmuje jako argument identyfikator użytkownika. Jeśli chcemy zaszyfrować wiadomość do wielu użytkowników, musimy ich podać osobno, za każdym razem używająć --recipient. Jeśli nie zostanie ustalony żaden klucz publiczny, program poprosi o ustalenie obdiorców. Pamiętaj, że jeśli nie podasz swojego klucza publicznego w liście kluczy odbiorców, nie będziesz mógł odszyfrować wiadomości, którą zaszyfrowałeś. Poniżej pokazuję jak to wygląda w praktyce.
 
$ gpg --output /tmp/widomosc.gpg --encrypt /tmp/wiadomosc.txt
Nie został podany identyfikatora użytkownika (np za pomocą ,,-r'')
Identyfikator użytkownika (pusta linia oznacza koniec): mr_K
Added 1024g/E9B3B634 2004-02-07 "Krzysztof Adamski <mr_K@interia.pl>"
Identyfikator użytkownika (pusta linia oznacza koniec):
$ file /tmp/widomosc.gpg
/tmp/widomosc.gpg: data
$
 
Jak można było zauważyć w przkładzie przytoczonym przed chwilą, plik wynikowy zawiara dane w formacie binarnym. Jeśli chcemy żeby zamiast tego wynik był w formacie tekstu, tak żebyśmy mogli go na przykład wkleić do wiadomości e-mail, musimy użyć opcji ''--armour''. Przykład podaję poniżej.
 
$ gpg --armour --output /tmp/wiadomosc2.gpg -r mr_K --encrypt /tmp/wiadomosc.txt
$ cat /tmp/widomosc2.gpg
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.2.6 (GNU/Linux)
hQEOA6X+L6Tps7Y0EAP+JsSr0WOVY3oKio93Osw/x+L3fvrvphWZbeE+fYPZuXzc
K7j8LrkJJlyBFmE7ZYJnrGyywU+d+OCnCYwpj68FSVrWUx3RP6HWFsLTMRxKgTbm
XCr8AzZ7KV/U4/ZGdCh3QAjoUb9v4YhNcSB9P9IaAS/y7Xt18u7tzte53pAtgiED
/R70N5bTxatlc8MQ3xvIHUUWyJ+UaNHAaxskA6lytcJ5pYEgYuRof1PVsmeLaDIT
WLnaNxJf4d71MT4pmdxiYc38UXhbvxXA0GAuVKRuWtbk7flFu0GzYOB+kpa0SVeK
P6SKKtvVLJsHQgLG0popGAHOC/MOICN23HDeBh9rSzh00k0BttGocgWyac35yBXb
nuNCLo+Cv8oBLn7ik/PAISdwh5iu7VK75WxNmp/VWWYs0i+LXmr3ecEzYvmdRYfR
fCCxYihBTBdmGV+4E7v3yg==
=LwSl
-----END PGP MESSAGE-----
$
 
Do deszyfrowania plików służy opcja ''--decrypt'', która podobnie jak ''--encrypt'' pobiera jako argument nazwę pliku do rozszyfrowania. Jak poprzednio, za pomocą opcji ''--output'' można określić nazwę pliku wynikowego. Gdy nie jest on określony, wynik wypisywany jest na standardowe wyjście. Oto przykład:
 
$ gpg --decrypt /tmp/wiadomosc2.gpg
Musisz podać hasło aby odbezpieczyć klucz prywatny użytkownika:
"Krzysztof Adamski <mr_K@interia.pl>"
długość 1024 bitów, typ ELG-E, numer E9B3B634, stworzony 2004-02-07 (podklucz D82E0E4B)
gpg: zaszyfrowano 1024-bitowym kluczem ELG-E, numer E9B3B634, stworzonym 2004-02-07
"Krzysztof Adamski >mr_K@interia.pl<"
wiadomość
$
 
Istnieje również możliwość zaszyfrowania danych bez klucza publicznego, za pomocą szyfrowania symetrycznego. W takim wypadku plik jest szyfrowany za pomocą podanego hasła, które wymagane jest oczywiście w procesie deszyfrowania. Ze względów bezpieczeństwa nie powinieneś używać tego samego hasła, które chroni Twój klucz prywatny. Aby zaszyfrować plik w ten sposób, powinieneś użyć opcji ''--symmetric'', która podobnie jak poprzednie posiada opcjonalny argument określający nazwę pliku do zaszyfrowania. Również w tym przypadku możesz użyć opcji ''--armour''. Oto przykład:
 
$ gpg --armour --output /tmp/wiadomosc-sym.gpg --symmetric /tmp/wiadomosc.txt
$ file /tmp/wiadomosc-sym.gpg
/tmp/wiadomosc-sym.gpg: PGP armored data message
$
 
<small>[[#top|Na górę strony]]</small>
 
==Podpisywanie cyfrowe plików==
Do cyfrowego podpisywania wiadomości służy opcjia ''--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 odzielny 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>"
$
 
<small>[[#top|Na górę strony]]</small>
 
 
Linia 540 ⟶ 40:
[[Kategoria:GNU/Linux]]
[[Kategoria:Szyfrowanie]]
[[Kategoria:GnuPG]]