The GNU Privacy Guard Mini HOW-TO
Założeniem artykułu jest zachęcenie do używania GPG oraz zaznajomienie z jego podstawowymi funkcjami.
Co to jest GPG ?
Instalacja
Tworzenie pary kluczy
Importowanie kluczy
Kodowanie i podpisywanie wiadomości
Rozkodowywanie wiadomości
Założeniem artykułu jest zachęcenie do używania GPG oraz zaznajomienie z jego podstawowymi funkcjami.
GnuPG jest kompletnym i darmowym zamiennikiem dla PGP. Ponieważ nie używa opatentowanego algorymtu IDEA może być stosowawny
bez żadnych ograniczeń. Jeśli chciałbyś poznać szerzej zagadnienia dotyczące PGP/GPG udaj się na jedną z poniższych stron
http://www.philzimmermann.com/ - Strona domowa "ojca" PGP.
http://www.pgp.com/ - Strona PGP, a raczej "Network Associates" zajmującej się sprzedażą PGP.
http://www.pgpi.org/ - PGP na różne systemy operacyjne.
Co nam daje stosowanie GPG? Odpowiedź jest prosta, niezależnie czy korzystamy z konta pocztowego znajdującego się na uczelni
/ w pracy / domu otrzymujemy pewność, że wiadomość zostanie odczytana jedynie przez adresata. Na jakiej zasadzie to działa ?
Każdy użytkownik PGP / GPG ma stworzoną parę kluczy - klucz publiczny oraz klucz prywatny. Swój klucz publiczny umieszczamy
na swojej stronie internetowej, wysyłamy go znajomym, generalnie staramy się aby dotarł do jak największej liczby osób. Klucz
prywatny natomiast trzymamy schowany w dostępnym jedynie dla nas katalogu. Kiedy wysyłamy komuś wiadomość i chcemy ją
zakodować, używam klucza publicznego osoby do której piszemy. Do rozkodowania wiadomości potrzebny jest druga połówka, czyli
klucz prywatny. Nie możliwe jest zakodowanie więc wiadomości przy użyciu PGP / GPG osobie która nie używa tychże programów.
Nawet jeśli mamy pewność, że admin naszego konta czyta naszą pocztę, ew. mamy podsłuch założony to w tym momencie wszyscy
mogą nam przysłowiowo "naskoczyć". Oprócz kodowania wiadomości dostajemy możliwość podpisywania naszych wiadomości, aby w ten
sposób uwiarygodnić ich pochodzenie. że PGP / GPG jest standartem wystarczy przejrzeć archiwum list *@securityfocus.com,
oprogramowanie to jest używane zarówno przez normalnych userów jak i korporacje :) Jeśli coś jest dla Ciebie niezrozumiałe napisz mi pytanie. Jeśli będę w stanie, udzielę odpowiedzi :). Jednak wcześniej zajrzy na: http://www.gnupg.org/faq.html aby
sprawdzić czy nie ma tam odpowiedzi przypadkiem ;]
Używanie GPG jest identyczne na dowolnym systemie operacyjnym który obsługuje GPG. Różnice pojawiają się jedynie w
stosowanych klientach pocztowych. Jeśli chcesz zobaczyć czy twój klient poczty poradzi sobie z tą innowacją, powinieneś
zajrzeć na stronę: http://cryptorights.org/pgp-users/pgp-mail-clients.html (jest jedno ale, strona opisuje klienty poczty
obsługujące jakąkolwiek implementacje PGP). Jeśli obsługujesz swoją pocztę spod linuxa, nie powinieneś się martwić. Wszystkie
najpopularniejsze klienty linuxowe obsługują GPG (niektóre co prawda są pozbawione możliwości kodowania załączników, vide
pine).
Z programów Windowsowych z uroków GPG możesz korzystać używajać Becky (opieram się na dokumentacji GPG) oraz The Bata
(działa fenomenalnie, poparte własnym doświadczeniem). Nie martw się jednak, jeśli nie znajdziesz plugina do swojego klienta
poczty. Zajrzyj tutaj: http://www.gnupg.org/frontends.html a być może uda się Ci coś znaleźć dla siebie. Polecam
zaznajomienie się na przykład z programikiem WinPT, jego najnowszą wersję można znaleźć tutaj: http://www.winpt.org/ .
Ściągamy GPG, wersję windzianą można pobrać stąd ftp://ftp.pl.pgpi.org/pub/pgpi/gnupg/gnupg-w32-1.0.6.zip, w przypadku Linuxa AFAIR GPG jest dołączane do większości dystrybucji, z tym, że w Debianie na przykład występuje jedynie w wersji NON-US dystrybucji Debiana. W dniu pisania artykułu (21.10.2001) wersja 1.0.6 była najnowsza. Instalacji dla Linuxa nie będę opisywał, jeśli ktoś skonfigurował swój system to zainstalowanie odpowiedniego pakietu nie powinno stanowić dla niego żadnego problemu :) Sytuacja jest trochę inna w przypadku Windowsa, nie wszystkim może wydawać się lekko strawny tryb pracy rodem z konsoli. Więc jeśli jesteśmy (nie)szczęśliwymi użytkownikami okienek, rozpakowujemy ściągnięte archiwum do katalogu C:\GnuPG\, a następnie kopiujemy plik gpg.exe do katalogu C:\WINDOWS (jeśli używamy 9x) lub C:\WINNT (jeśli używamy NT/2000) (zaiście skompliwane, nieprawdaż? ;).
[root@localhost /]# gpg --gen-key
gpg (GnuPG) 1.0.6; Copyright (C) 2001 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: /root/.gnupg/secring.gpg: keyring created
gpg: /root/.gnupg/pubring.gpg: keyring created
Please select what kind of key you want:
(1) DSA and ElGamal (default)
(2) DSA (sign only)
(4) ElGamal (sign and encrypt)
Your selection?1_
Tutaj następuje wybór algorytmu kodowania. Wybieramy 1, aby móc szyfrować informacje, oraz podpisywać. Cytująć z pliku README "ElGamal for signing
is still available, but because of the larger size of such
signatures it is deprecated".
DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
minimum keysize is 768 bits
default keysize is 1024 bits
highest suggested keysize is 2048 bits
What keysize do you want? (1024)
Teraz wybieramy wielkość klucza, im większy klucz tym trudniej rozkodować wiadomość, ale i więcej będzie ona zajmować. Polecam wcisnąć ENTER akceptując domyślne 1024 bity.
Requested keysize is 1024 bits
Please specify how long the key should be valid.
0 = key does not expire
= key expires in n days
w = key expires in n weeks
m = key expires in n months
y = key expires in n years
Key is valid for? (0)
Po jakim czasie nasz klucz przestanie być ważny. Możemy jak wyżej domyślnie klepnąć ENTER, dzięki czemu nasz klucz nigdy nie straci ważności ;]
Key does not expire at all
Is this correct (y/n)?
Potwierdzamy jeszcze nasz wybór i jedziemy dalej:
You need a User-ID to identify your key; the software constructs the user id
from Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) "
Real name: Rafal Zawadzki
Email address: rafael@ats.com.pl
Comment: Bluszcz 1
You selected this USER-ID:
"Rafal Zawadzki (Bluszcz 1) "
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
Wpisujemy swoje dane i wpisujemy hasło do naszego klucza, po czym następuje generacja klucza. Zaleca sie w tym momencie odpalenie jakiegoś kobylastego programu, co by przemielił dyskiem i wprowadził trochę chaosu (a zarazem losowości) w proces tworzenia nowego życia ;]
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
Po czym dostajemy komunikat, że wszystko gites ;]
public and secret key created and signed.
Brawo, właśnie stworzyliśmy swój klucz prywatny i publiczny.
Przypuśćmy, że klucz publiczny naszego kolegi (koleżanki) leży w katalogu GNUPG i nazywa się vudu.asc :) Wpisujemy więc:
[root@localhost /]# gpg --import gnupg/vudu.asc
gpg: key 9E8543CF: public key imported
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: Total number processed: 1
gpg: imported: 1
Po czym upewniamy się wyświetlając listę kluczy:
[root@localhost /]# gpg --list-key
/root/.gnupg/pubring.gpg
--------------------
pub 1024D/4CB3F251 2001-10-21 Rafal Zawadzki (Bluszcz 1)
sub 1024g/03F77C2C 2001-10-21
pub 1024D/9E8543CF 2001-09-30 Sebastian Kowalik
sub 2501g/31E61751 2001-09-30
Następnie podpiszemy klucz znajomego dając mu tym samym uwierzytelnienie z naszej strony :)
[root@localhost /]# gpg --sign-key voodooch@cyberpunk.civ.pl
pub 1024D/9E8543CF created: 2001-09-30 expires: never trust: -/q
sub 2501g/31E61751 created: 2001-09-30 expires: never
(1). Sebastian Kowalik
pub 1024D/9E8543CF created: 2001-09-30 expires: never trust: -/q
Fingerprint: 51BB 856B FAA2 038D B379 363B F752 E6B9 9E85 43CF
Sebastian Kowalik
Are you really sure that you want to sign this key
with your key: "Rafal Zawadzki (Bluszcz 1) "
Really sign? y_
Potwierdzamy nasz zamiar i wpisujemy nasze hasło...
You need a passphrase to unlock the secret key for
user: "Rafal Zawadzki (Bluszcz 1) "
1024-bit DSA key, ID 4CB3F251, created 2001-10-21
Enter passphrase:
Następnie sprawdzamy efekt naszej pracy:
[root@localhost /]# gpg --check-sigs
/root/.gnupg/pubring.gpg
--------------------
pub 1024D/4CB3F251 2001-10-21 Rafal Zawadzki (Bluszcz 1)
sig! 4CB3F251 2001-10-21 Rafal Zawadzki (Bluszcz 1)
sub 1024g/03F77C2C 2001-10-21
sig! 4CB3F251 2001-10-21 Rafal Zawadzki (Bluszcz 1)
pub 1024D/9E8543CF 2001-09-30 Sebastian Kowalik
sig! 9E8543CF 2001-09-30 Sebastian Kowalik
sig! 4CB3F251 2001-10-21 Rafal Zawadzki (Bluszcz 1)
sub 2501g/31E61751 2001-09-30
sig! 9E8543CF 2001-09-30 Sebastian Kowalik
No to jedziemy szybciutko, chcemy zakodować naszemu jedynemu koledze plik README, piszemy więc co następuje:
[root@localhost /]# gpg -e -a -r voodooch@cyberpunk.civ.pl README
Komenda -e sluzy, do kodowania, opcja -a informuje, że wynikiem ma plik *.asc w formie asci, a po opcji -r podaje email ofiary. Gdy chcemy jedynie podpisać wiadomość (dać dowód, ze pochodzi od nas) wpisujemy:
[root@localhost /]# gpg --sign -a README
You need a passphrase to unlock the secret key for
user: "Rafal Zawadzki (Bluszcz 1) "
1024-bit DSA key, ID 4CB3F251, created 2001-10-21
Więc, plik zakodowany naszym kluczem publicznym nazywa się na przykład README.ASC, więc:
[root@localhost /]# gpg --decrypt README.ASC >READMEOK.ASC
You need a passphrase to unlock the secret key for
user: "Rafal Zawadzki (Bluszcz 1) "
1024-bit ELG-E key, ID 03F77C2C, created 2001-10-21 (main key ID 4CB3F251)
gpg: encrypted with 1024-bit ELG-E key, ID 03F77C2C, created 2001-10-21
"Rafal Zawadzki (Bluszcz 1) "
Rozkodowany plik nazywa się READMEOK.ASC. Proste nieprawdaż ? :)