W związku z pytaniem jednego z naszych czytelników, który na forum głośno domagał się udzielenia informacji czym jest GPG, publikujemy mini how-to napisane przez Rafała Zawadzkiego (AKA Bluszcz). Znadziecie w nim odpowiedzi na zadane przez Maciasa pytanie, a także krótką instrukcję posługiwania się tym bardzo przyjemnym w obsłudze programem (nie tylko) szyfrującym. Wersję HTMLową do wydrukowania lub zapisania sobie na dysku znajdziecie tutaj.

The GNU Privacy Guard Mini HOW-TO

Autor – Rafał „Bluszcz” Zawadzki rafael@viva.org.pl

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

Co to jest GPG ?

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

Instalacja GPG.

Ś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ż? ;).

Tworzenie pary kluczy.

  [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  s
ome 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.

Importowanie czyjegoś klucza publicznego.

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   

Kodowanie i podpisywanie wiadomości.

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  

Rozkodywywanie wiadomości…

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ż ? :)

Archiwalny news dodany przez użytkownika: honey.
Kliknij tutaj by zobaczyć archiwalne komentarze.

Oznaczone jako → 
Share →