Dokument traktuje głównie o PGP 2.6.3i - luty 1996.
Dostępna jest wersja niniejszego dokumentu w MS Word skonwertowana przez Witka Owoca.
Wstęp
PGP (Pretty Good Privacy - Całkiem Niezła Prywatność) jest kryptosystemem
(tzn. systemem szyfrująco-deszyfrującym) autorstwa
Phila Zimmermanna <prz@acm.org>
wykorzystującym ideę klucza publicznego. Podstawowym zastosowaniem PGP jest
szyfrowanie poczty elektronicznej, transmitowanej przez kanały nie dające
gwarancji poufności ani integralności poczty. Przez poufność rozumiemy tu
niemożność podglądania zawartości listów przez osoby trzecie; przez
integralność - niemożność wprowadzania przez takie osoby modyfikacji do
treści listu.
PGP pozwala nie tylko szyfrować listy, aby uniemożliwić
ich podglądanie, ale także sygnować (podpisywać) listy zaszyfrowane lub
niezaszyfrowane w sposób umożliwiający adresatowi (adresatom) stwierdzenie,
czy list pochodzi rzeczywiście od nadawcy, oraz czy jego treść nie była po
podpisaniu modyfikowana przez osoby trzecie. Szczególnie istotny z punktu
widzenia użytkownika poczty elektronicznej jest fakt, że techniki szyfrowania
oparte o metodę klucza publicznego nie wymagają wcześniejszego
przekazania klucza szyfrowania/deszyfrowania kanałem bezpiecznym
(tzn. gwarantującym poufność). Dzięki temu, używając PGP, mogą ze sobą
korespondować osoby, dla których poczta elektroniczna (kanał niepoufny) jest
jedyną formą kontaktu.
Jak to działa?
Na czym polega różnica między kryptosystemem "tradycyjnym", a metodą klucza
publicznego? W największym uproszczeniu: szyfr "tradycyjny" wymagał użycia
tego samego klucza do szyfrowania i odszyfrowywania. Klucz ten zatem
musiał być wcześniej uzgodniony przez porozumiewające się strony, i to z użyciem
kanału bezpiecznego (zapewniającego poufność i integralność) - w przeciwnym
razie istniałoby ryzyko przechwycenia klucza przez osoby trzecie, co dałoby
tym osobom możliwość zarówno odczytywania szyfrowanych komunikatów, jak i
ich podrabiania (fałszowania). W metodzie klucza publicznego, pojedynczy klucz
zastąpiony jest parą kluczy: jeden z nich służy do zaszyfrowania listu, drugi
do odszyfrowania. Znajomość klucza szyfrowania nie wystarczy do
deszyfracji listu, ani do odtworzenia klucza deszyfrowania.
W tym miejscu należy podkreślić, że żaden kryptosystem nie jest silniejszy od swego najsłabszego ogniwa, którym z reguły okazuje się użytkownik. Jeżeli użytkownik nie dba we właściwy sposób o tajność swego klucza prywatnego, nawet PGP nie zapewni mu należytej prywatności. Najbardziej wskazanym sposobem przechowywania klucza prywatnego jest dyskietka, noszona przy sobie lub trzymana w zamknięciu. W drugiej kolejności, dysk twardy komputera dostępnego tylko właścicielowi. Następnie, konto w systemie wielodostępnym takim jak Unix. Dysk komputera klasy PC dostępnego dla innych osób niż właściciel klucza zdecydowanie nie jest właściwym miejscem przechowywania klucza!
Zastosowany w PGP algorytm szyfrowania kluczem publicznym nosi nazwę RSA (Rivest-Shamir-Adleman) - jak łatwo zgadnąć, otrzymał ją od nazwisk jego twórców. Algorytm ten jest w USA opatentowany, a ponadto podlega restrykcjom eksportowym ITAR (podobnie jak wszelkie algorytmy i programy mające związek z kryptografią) i nie może być używany w programach wywożonych z USA. Dlatego też istnieją 3 aktualne wersje PGP:
pgp -kgPo wydaniu tej komendy, program pyta o długość klucza. Można wybrać jedną ze standardowych długości (384, 512, 1024 bity) lub własną, z przedziału 504-2048 bitów. Następnie pojawia się pytanie o identyfikator użytkownika, który powinien jednoznacznie określać właściciela klucza. Zazwyczaj identyfikator podajemy w postaci:
Imię Nazwisko <email-address>np.
Szymon Sokol <szymon@uci.agh.edu.pl>
Kolejne pytanie odnosi się do tzw. passphrase, czyli hasła służącego do odblokowania klucza. Jest to dodatkowe zabezpieczenie, mające na celu utrudnienie posłużenia się skradzionym cudzym kluczem prywatnym. Hasło to nie pojawia się na ekranie w czasie wpisywania, i może być znacznie dłuższe niż hasło użytkownika systemu Unix (te bowiem są zwykle ograniczone do 8 znaków). Następnie hasło należy wpisać powtórnie, w celu weryfikacji. PGP będzie pytać o to hasło za każdym razem, gdy użytkownik będzie chciał odszyfrować list przeznaczony dla niego lub sygnować własny list - w tych bowiem sytuacjach następuje odwołanie do klucza prywatnego.
Zarówno hasło jak i identyfikator możesz później zmienić komendą
pgp -ke usergdzie
user
jest identyfikatorem Twojego klucza (lub jego częścią).
Następnie program prosi o wpisanie kilkudziesięciu znaków dowolnego tekstu -
istotny tu jest nie sam tekst, ale odstępy czasowe między naciśnięciami
klawiszy, które służą jako źródło "naprawdę losowej" liczby, użytej następnie
do tworzenia klucza. W ten sposób PGP uzyskuje praktyczną niepowtarzalność
kluczy. Komunikat "Key generation completed" zwiastuje utworzenie kluczy:
prywatnego i publicznego. Klucz prywatny znajdzie się w pliku
secring.pgp
; klucz publiczny - w pubring.pgp
.
Ten pierwszy należy umieścić w bezpiecznym miejscu;
ten drugi - jak najszerzej rozpropagować.
Rozpowszechnianie kluczy publicznych
Jeżeli chcesz, aby ludzie pisząc do Ciebie korzystali z PGP,
musisz zadbać o to, aby Twój klucz publiczny stał się powszechnie znany.
Oto kilka sposobów na rozpowszechnienie swojego klucza:
~/.plan
, którego zawartość jest wypisywana przez
komendę finger
; W sigblocku wystarczy wówczas
umieścić krótką informację, że klucz PGP osiągalny jest po wykonaniu
"finger TwójLogin@Twój.Komputer"
help
w polu Subject:
na jeden z w/w adresów,
aby dowiedzieć się szczegółów). Natomiast w wyniku zadania konkretnych
pytań, polegających na wyszukaniu czyjegoś klucza PGP, serwer, po znalezieniu
klucza (o ile klucz taki istnieje w bazie kluczy serwera), przesyła go
"opakowując" go w kodowanie ASCII. List taki należy zapisać do pliku, a
następnie wykonać pgp nazwa_pliku
, a program PGP sam rozpozna,
co w liście tym się znajduje. Istnieją również bramki udostępniające te
serwery przez WWW:
Uzyskiwanie kluczy publicznych innych osób
Sposób uzyskiwania kluczy publicznych innych osób zależy oczywiście
od sposobu, w jaki one swój klucz rozpowszechniają. Najczęściej
można go uzyskać wykonując komendę finger
, podając jako
argument adres e-mail osoby, której klucz chcemy uzyskać. Jednakże
adres, z jakiego osoba ta pisuje zazwyczaj listy, nie musi być
adresem konta w systemie UNIX, a więc finger z podanym adresem może
w ogóle nie działać. Wówczas pozostaje sprawdzić stronę WWW tej
osoby (o ile ją posiada), skorzystać z usług serwerów
kluczy PGP lub HTMLowych bramek, albo po prostu napisać do tej osoby
(lub innych swoich znajomych) list z prośbą o przesłanie klucza.
Przy każdym z tych rozwiązań, zwłaszcza przy tym ostatnim, osoba, która otrzymuje klucz, powinna zastanowić się: czy mam pewność, ze klucz ten naprawdę należy do osoby, której nazwisko widnieje na kluczu? Przypominam, że identyfikator związany z kluczem jest podawany przez użytkownika w chwili tworzenia klucza; nic nie stoi na przeszkodzie abym np. ja wygenerował klucz publiczny (i tym samym posiadał odpowiadający mu klucz prywatny) o identyfikatorze:
Bill Clinton <president@whitehouse.gov>Jeśli ktoś da się oszukać i będzie używał fałszywego klucza, pisząc listy do danej osoby, skutki mogą być dwojakie:
Z tych powodów istotna jest pewność, że klucz publiczny, który właśnie w ten czy inny sposób pozyskaliśmy, należy naprawdę do osoby, do której wydaje się należeć. Zapewnieniu tego służą certyfikaty kluczy.
Certyfikowanie czyjegoś klucza to nic innego, jak sygnowanie go swoim własnym - ma to na celu potwierdzenie jego autentyczności. Jeśli użytkownik A otrzyma klucz publiczny użytkownika B bezpośrednio od niego, to zapewne jest to naprawdę klucz użytkownika B. Ale jeśli otrzymuje go od użytkownika C, któremu niekoniecznie ufa, i podejrzewa, że w rzeczywistości klucz ten może być sfałszowany przez C? Cóż, jeśli klucz ten jest certyfikowany przez pewnego innego użytkownika D (któremu A ufa, i którego klucz publiczny już ma), i sygnatura się zgadza, to A zyskuje pewność, że klucz przekazany przez C jest zgodny z oryginałem. Oczywiście A zakłada w tym momencie, że D w chwili certyfikowania tego klucza miał 100% pewności, że klucz ten należy do B - albo dlatego, że otrzymał go od B bezpośrednio, albo dlatego, że klucz był certyfikowany przez kolejną osobę, do której D miał zaufanie.
Należy z tego wysnuć jeden wniosek: NIGDY nie certyfikuj cudzego klucza, jeśli nie masz pewności, że nie jest on fałszywy. W przeciwnym razie osoby, które następnie ten klucz od Ciebie otrzymają, będą sądzić, że taką pewność miałeś i używać (być może fałszywego) klucza z powodu zaufania do Ciebie.
Tu przy okazji warto wspomnieć o jeszcze jednej możliwości sprawdzenia autentyczności klucza. W momencie dodawania nowego klucza do kółka kluczy publicznych lub w trakcie sygnowania klucza, program PGP drukuje coś, co nazwane jest Key fingerprint, czyli "odcisk palca". Jest to kilkanaście liczb przedstawionych w postaci heksadecymalnej, a wyglądać może np. tak:
Key for user ID: Szymon Sokol <szymon@uci.agh.edu.pl> 512-bit key, Key ID 61094A7D, created 1993/08/26 Key fingerprint = D4 43 F5 80 AA 9F 8C 3F CC 53 47 CA C8 88 22 A5Odcisku tego użyć można do weryfikacji klucza innym kanałem, niekoniecznie bezpiecznym z punktu widzenia kryptografii, ale dającym nam pewność, że po drugiej stronie jest osoba, której się spodziewamy. Jeśli znamy właściciela klucza osobiście, może to być np. sprawdzenie "odcisku klucza" przez telefon. W innych przypadkach pozostaje albo osobiste spotkanie z właścicielem klucza, albo zaufanie do sygnatur już się w tym kluczu znajdujących.
Zarządzanie kluczami
Kiedy już weszliśmy w posiadanie klucza publicznego innej osoby, aby móc
z niego korzystać należy dołączyć go do swojego kółka z kluczami
(keyring). Kółko z kluczami to nic innego, jak plik zawierający
wiele kluczy w odpowiednim formacie - zazwyczaj będzie to to samo kółko,
na którym znajduje się klucz publiczny właściciela, tzn.
pubring.pgp
. W celu dodania do kółka klucza, który znajduje się
w pliku klucz
, należy użyć komendy:
pgp -ka kluczPojawi się być może pytanie, czy chcesz certyfikować klucz zawarty w tym pliku (jeśli jeszcze tego nie zrobiłeś). Jeśli klucz ten już istnieje w Twoim kółku, to nie będzie dodany, w przeciwnym razie zostanie dołączony do kółka. Ponadto, program może spytać o tzw. parametry zaufania (trust parameters), jakie należy przypisać danemu kluczowi. Parametry zaufania klucza określają, czy klucze innych użytkowników mają być uznawane za pewne, jeśli są sygnowane tym kluczem (patrz: Sygnowanie i sprawdzanie sygnatur).
Sprawdzić zawartość swojego kółka można komendą:
pgp -kvPonadto, komendą
pgp -kvvmożna sprawdzić, przez kogo są certyfikowane poszczególne klucze w naszym kółku, zaś komenda
pgp -kvcpozwala uzyskać tzw. fingerprints czyli "odciski palców" - swego rodzaju sumę kontrolną klucza, którą można np. przedyktować przez telefon w celu porównania z fingerprint oryginalnego klucza, jeśli chcemy się upewnić, że klucz, który od kogoś otrzymaliśmy np. przez e-mail, nie był po drodze (celowo lub przypadkiem) zniekształcony.
Jeżeli chcemy usunąć klucz z kółka (np. wątpimy w jego prawdziwość, albo właściciel powiadomił nas, że zmienia klucz na nowy), użyć należy komendy:
pgp -kr identgdzie
ident
jest identyfikatorem związanym z usuwanym kluczem.
Można (tak w tym wypadku, jak i zawsze, gdy wymagane jest podanie
identyfikatora klucza) podać tylko część identyfikatora - np. w celu usunięcia
mojego klucza z kółka wystarczy prawdopodobnie komenda:
pgp -kr szymonchyba, że inny klucz w kółku również zawiera ten człon w identyfikatorze. W takim przypadku operacja zostanie wykonana na pierwszym pasującym kluczu, niekoniecznie na tym, o który chodziło.
Komenda
pgp -ke usergdzie
user
jest identyfikatorem klucza (lub jego częścią),
pozwala zmienić hasło i/lub identyfikator związane z Twoim kluczem (jeśli
podasz identyfikator własnego klucza) albo zmienić parametry zaufania
jeśli podałeś identyfikator klucza innej osoby.
I wreszcie, aby stworzyć w osobnym pliku kopię jednego klucza z kółka (np. w celu wysłania go komuś) należy się posłużyć komendą:
pgp -kx identlub
pgp -kxa identRóżnica między tymi dwiema formami polega na zastosowaniu tzw. ASCII armor (dosłownie "pancerz ASCII", ja jednak proponowałbym określenie "opakowanie ASCII") w drugim przypadku (tzn. przy użyciu opcji -a). Bez opcji -a PGP wyekstrahuje klucz w postaci binarnej; użycie opcji -a powoduje, że klucz zostanie potraktowany algorytmem podobnym do BinHex czy uuencode, tak że w otrzymanym pliku wszystkie znaki będą należały do podstawowego zestawu kodów ASCII (znaki alfanumeryczne i przestankowe). Dzięki temu można go wysłać e-mailem albo umieścić na stronie WWW. PGP spyta o nazwę pliku, w którym ma umieścić klucz. Oto mój klucz publiczny wyekstrahowany z kółka w ten sposób:
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: 2.6 mQBNAix834YAAAECALK1O6N3N3aE6K7FH6XwHVyPdLVccs5K3pXasPPWcVOLMDmi SKUqyU3zrtU5OS7L6cILTH3DauLa9jnnbmEJSn0ABRG0JFN6eW1vbiBTb2tvbCA8 c3p5bW9uQHVjaS5hZ2guZWR1LnBsPg== =fgsC -----END PGP PUBLIC KEY BLOCK-----Możesz go dołączyć do swojego kółka zapisując go do pliku, a następnie używając omówionej wcześniej komendy
pgp -ka
. Ale czy jesteś
pewien, że ten dokument otrzymałeś w nienaruszonej wersji i mój klucz
podany powyżej jest prawdziwy?
list
znajduje się list, który
chciałbym sygnować moim podpisem w sposób uniemożliwiający manipulację.
W tym celu wydaję komendę:
pgp -s listPGP zapyta o hasło, a następnie umieści list z sygnaturą (podpisem) PGP w pliku
list.pgp
. W przypadku użycia opcji -a:
pgp -sa listplik wyjściowy nosi nazwę
list.asc
i podobnie jak w
przykładzie ekstrahowania klucza z kółka (patrz:
Zarządzanie kluczami,
jest sprowadzony do postaci ASCII.
Ponieważ większość mailerów nie umożliwia przesyłania plików binarnych,
zazwyczaj będziemy używać tej opcji (patrz też:
Konfiguracja PGP). Sygnowany list nie
będzie jednak czytelny "od razu", tzn. aby dostać się do jego treści
konieczne jest użycie programu PGP. Chyba, że użyjemy dodatkowej
opcji "+clear", a wówczas treść listu zostaje w postaci oryginalnej,
a sygnatura zostaje dołączona na końcu.
Przykładowy list, sygnowany za pomocą komendy pgp -sa +clear list
może wyglądać tak:
-----BEGIN PGP SIGNED MESSAGE----- To jest list sygnowany PGP: Bylo smaszno, a jaszmije smukwijne Swidrokretnie na zegwniku wezaly, Peliczaple staly smutcholijne I zblakinie rykoswistakaly. [DZABBERSMOK (Lewis Carroll, tlum. Maciej Slomczynski)] - -- Szymon Sokol -- Network Manager U U M M M M University of Mining and Metallurgy, Computer Center U U MM MM MM MM ave. Mickiewicza 30, 30-059 Krakow, POLAND U U M M M M M M M M TEL. +48 (12) 172885, 172894 FAX +48 (12) 338907 UUUU M M M M M M WWW page: http://galaxy.uci.agh.edu.pl/~szymon/ -----BEGIN PGP SIGNATURE----- Version: 2.6 iQBVAgUBMB+CUfY5525hCUp9AQGQhwIAlzpOIKjrR6EnmSFYSl3i7CbnYVFQlUPz FCxpncHEcNicTeCg8ys8y8hl7NUhbSggNcDFdJRRIV+mxz9QozAWtA== =gLDy -----END PGP SIGNATURE-----Sygnatura dołączona na końcu listu, jest wygenerowana na podstawie obliczanej w specjalny sposób sumy kontrolnej listu i mojego klucza prywatnego PGP. Każdy, kto dysponuje moim kluczem publicznym, może sprawdzić, że:
-----BEGIN PGP SIGNED MESSAGE-----i
-----BEGIN PGP SIGNATURE-----
pgp nazwapliku(przy założeniu, że sygnowany dokument znajduje się w pliku o nazwie
nazwapliku
- nie musi to być ta sama nazwa, jaką nosił oryginalny
plik utworzony przeze mnie).
PGP zasygnalizuje poprawność sygnatury komunikatem:
Good signature from "Szymon Sokol <szymon@uci.agh.edu.pl>"W przypadku, gdyby list był sygnowany innym kluczem prywatnym niż ten, stowarzyszony z moim kluczem publicznym, albo gdyby list uległ modyfikacji, komunikat brzmi odpowiednio:
Bad signature from "Szymon Sokol <szymon@uci.agh.edu.pl>"
list
użyć należy komendy:
pgp -e list adresat1 adresat2 -o szyfrgdzie drugi (i ew. dalsze) parametry określają, kto ma być adresatem listu (tzn. są to identyfikatory kluczy, które mają być wykorzystane do szyfrowania), zaś po opcji -o występuje nazwa pliku wyjściowego.
szyfr.pgp
(lub szyfr.asc
jeżeli podano dodatkowo opcję -a (patrz:
Sygnowanie i sprawdzanie sygnatur).
W razie niepodania opcji -o i nazwy pliku wyjściowego, plik wyjściowy będzie
miał nazwę taką jak wejściowy, z rozszerzeniem .pgp lub .asc (w tym wypadku,
list.pgp
lub list.asc
).
Oto przykładowy list zaszyfrowany komendą
pgp -ea list adresat1 adresat2 adresat3(tak, ten list ma troje adresatów - sprawdź, może jesteś jednym z nich? ):
-----BEGIN PGP MESSAGE----- Version: 2.6 hEwC5Mig00W5xYkBAfoCNVVN4VarAM2/LaOhb+d6ShJzI7WAj5MgOFNam9Oex1su xjBt1fGPz0w6gnYte+ZDMa7bYY2zf13ar/6PK7eDhIwCGyKDllahUg0BBACJBNWh 2xm1qx5Ri7BvtBGd2WfsYDVN6/3ITnP/+ga3Qc7Fewt0+xg6xEwOBuuYgPzy2c87 ecvBkrYBEWpmcluTilOGAzgR7KvsNNRl4ivdMuOZkrtEiZgBh0UiAvdAtAy0uyGv Bk1C0yH9kky0/CgymxBAN2WG+VkIIDnYkMfGS4RMAu8goAGt1oeNAQH+MdRYO0Ym e8KdsVhJdFcGpNfMN89EV+22rZcbaqqfKNbTWwRjAqcELLyPgumDYm3PLLImhKqz z4omXe/bs4MLl6YAAAEyXrG1Ki2f4kkl+ynt7ctWgLNkYsDMnPqnA/15DPwcxOmD AFnggdXvBXUB3DS5WAZl5ZnWHxodnkdhXhBfpIC09Q3hBLX0qUD+j25yjYwIMSZp 5/a74PkAiYAfFJkM7zB4blGYy/nrCEtmINIe/M//MyNzfkcOhtn4+PN6pkJXZDT0 17ggQ6FWUS3IYu783v89I0rB+gDdC7L86Fsd6NZtzvmX33c7otWWpCLHaROJ1F78 rRsuyacMNYFB8QeYwXHiddu+lVlhRCNUFvpIitnrsiSJw90Y8FZ/zVBjDumL0ZqI I7I1Q8OU+LWnsRpZz5j0acdkLwKj7opLIQ4gxpM6nHe96LkW+eqr9UvmkH7Zkb9f hsoqVHez+/21paH9zG9webCQXwKftHeQ/FXcQCGVgJQN =zZIC -----END PGP MESSAGE-----Jak widać, nikt poza adresatami tego listu nie będzie w stanie odczytać go. Deszyfrowanie listu odbywa się identycznie jak sprawdzanie poprawności sygnatury - komenda:
pgp szyfr.asc -o listzdeszyfruje zaszyfrowany list, znajdujący się w pliku szyfr.asc, a tekst odszyfrowany umieści w pliku
list
(lub w razie niepodania
nazwy pliku wyjściowego, w pliku o nazwie takiej, jak plik wejściowy).
Jeżeli plik wyjściowy o danej nazwie istnieje, PGP pyta o zgodę na nadpisanie
go; w razie niewyrażenia zgody, pyta o nową nazwę pliku.
Istnieje też możliwość równoczesnego sygnowania i szyfrowania listu - należy użyć opcji -e i -s razem:
pgp -es list adresat1 adresat2 -o szyfr(oczywiście opcja -a nadal może być użyta).
pgp -sb plikspowoduje utworzenie sygnatury dla pliku
plik
w pliku
plik.sig
. Aby sprawdzić, że sygnatura odnosi się do danego pliku,
należy podać wówczas komendę:
pgp plik.sig plikMechanizm ten może być stosowany np. przez autorów oprogramowania w celu ochrony przed wirusami i koniami trojańskimi lub złośliwą ingerencją: wystarczy do programu dołączyć osobny plik z sygnaturą, aby użytkownik mógł sprawdzić, czy program nie został poddany modyfikacji.
Często spotykaną dziś praktyką jest generowanie specjalnych par kluczy służących właśnie wyłącznie weryfikacji kolejnych wersji programów rozpowszechnianych przez sieć. Np. wraz z wersją 1.0.0 programu "secure shell" (ssh-1.0.0.tar.gz) otrzymujemy klucz publiczny, którym sprawdzić możemy wiarygodność tej wersji programu i wszystkich następnych, wszystkie bowiem sygnowane są jednym kluczem, będącym w posiadaniu autora lub grupy autorów tego programu.
Konfiguracja PGP
Zbiór konfiguracyjny
Zbiór konfiguracyjny PGP nosi nazwę config.txt
. Może się
znajdować w dowolnym katalogu - katalog ten powinien być wskazywany przez
zmienną środowiskową PGPPATH. Np. w systemie MS-DOS możemy ją ustawić komendą:
set PGPPATH=C:\PGPa w systemie Unix, w zależności od powłoki (shell):
PGPPATH=$HOME/pgp ; export PGPPATHdla Bourne shell (
sh
) i pochodnych (bash
,
ksh
) lub
setenv PGPPATH ~/pgpdla C shell (
csh
) i pochodnych (tcsh
).
Zawartość tego pliku składa się z linii postaci:
zmienna = wartośćoraz komentarzy następujących po znaku #. Przykładowo, plik konfiguracyjny o treści:
ARMOR=ON MYNAME=Szymonspowoduje, że:
pgp -kx userczy
pgp -es tekst userbędą tekstowe raczej niż binarne;
Szymon
(przydatne, jeśli posiadamy kilka par kluczy, np. o różnej
długości - klucz krótki, np. 384 bity, do normalnej korespondencji, a długi,
np. 2048 bitów, do korespondencji ściśle tajnej);
http://www.ifi.uio.no/pgp/ ftp://oak.oakland.edu/SimTel/msdos/security/apgp22b.zip ftp://oak.oakland.edu/SimTel/win3/security/pgpw40.zip http://alpha.netaccess.on.ca/~spowell/crypto/pwf31.zip ftp://ftp.netcom.com/pub/dc/dcosenza/pgpw40.zip ftp://Sable.ox.ac.uk/pub ftp://ftp.firstnet.net/pub/windows/winpgp/pgpw40.zip http://www.firstnet.net/~cwgeib/welcom.html ftp://ftp.netcom.com/pub/ec/ecarp/pgpwind.zip http://www.eskimo.com/~joelm (Private Idaho) ftp://ftp.eskimo.com/~joelm http://www.xs4all.nl/~paulwag/security.htm http://www.LCS.com/winpgp.html ftp://mirrors.aol.com/mir01/circa/pub/pc/win3/util/pwf31.zip http://netaccess.on.ca/~rbarclay/index.html http://netaccess.on.ca/~rbarclay/pgp.html ftp://ftp.leo.org/pub/comp/os/os2/crypt/gcppgp10.zip ftp://ftp.leo.org/pub/comp/os/os2/crypt/pmpgp.zipDla Macintosha:
ftp://duke.bwh.harvard.edu:/pub/adam/mcip/MacPGP_icons.sit.hqx ftp://duke.bwh.harvard.edu:/pub/adam/mcip/MacPGPkit.hqx ftp://duke.bwh.harvard.edu:/pub/adam/mcip/MacPGPkitSources.sit.hqx ftp://ftp.netcom.com/pub/dd/ddt/crypto/pgp_tools/MacPGPkit1.6.sit ftp://ftp.netcom.com/pub/dd/ddt/crypto/pgp_tools/ChainMail.0.7.sit ftp://ftp.netcom.com/pub/dd/ddt/crypto/pgp_tools/Eudora
.exrc
, a w nim
wpisać:
" PGP macros: " " Zakoduj: map ^We :,$! /bin/sh -c 'pgp -feast 2>/dev/tty^V|^V|sleep 4'^M^L " Podpisz: map ^Ws :,$! /bin/sh -c 'pgp -fast +clear 2>/dev/tty'^M^L " Rozkoduj: map ^Wd :/^-----BEG/,/^-----END/! /bin/sh -c 'pgp -f 2>/dev/tty^V|^V|sleep 4'^M^L " Rozkoduj tylko na ekran: map ^Wv :,/^-----END/w !pgp -mW liniach powyżej znajdować się powinny znaki kontrolne, takie jak Ctrl-M, Ctrl-V itp., których nie można było umieścić "dosłownie", bo nie byłoby widać, co to jest. Tak więc '^W' oznacza np. właśnie znak Ctrl-W, który w edytorze vi uzyskać można wchodząc do trybu 'insert', a następnie naciskając kolejno Ctrl-V oraz Ctrl-W. Podobnie - znak '^M' uzyskamy naciskając kolejno Ctrl-V oraz Ctrl-M (lub Ctrl-V i 'Enter', bo Ctrl-M to właśnie znak przejścia do nowej linii). Plik z takimi lub podobnymi definicjami znajduje się w standardowej dystrybucji PGP dla UNIXa (np.
pgp26ui.zip
)
w podkatalogu contrib
.
A teraz jak wykorzystać zdefiniowane powyżej mapowanie klawiszy. Pierwsza z instrukcji wywołuje kodowanie tekstu od linii z kursorem do końca. Wywołujemy ją poprzez sekwencję klawiszy: Ctrl-W, a następnie 'e'. Jeśli jest to zbyt kłopotliwe i wolelibyśmy użyć jednego klawisza funkcyjnego, można do .exrc dopisać kolejną linię:
map ^[[[D ^WePo kolei są to znaki: ESC, [, [, D, spacja, Ctrl-W, e
Skomplikowanie to brzmi, ale w rzeczywistości jest to bardzo proste. A gdy już to raz zrobimy, kodowanie w edytorze vi będziemy mogli uzyskać naciskając jeden klawisz - F4 (albo dowolny inny, który zdefiniujemy do tego celu).
Pozostałe funkcje zdefiniowane na początku - pod klawiszami '^Ws' mamy funkcję generowania podpisu do tekstu od kursora do końca, pod '^Wd' - funkcję deszyfracji zakodowanego tekstu i umieszczenie go w edytorze, pod '^Wv' - rozkodowanie zaszyfrowanego tekstu wyłącznie na ekran.
Podobnie możemy zdefiniować wszystkie inne używane przez nas sposoby wykorzystania PGP (np. do zaszyfrowania listu czyimś kluczem publicznym)
PGP a ELM
Istnieją dwa programy (w różnych wersjach zawarte w PGP, w contrib albo
w osobnym contrib.zip) integrujące standardowego elma z PGP. Nazywają
się morepgp i mailpgp. Możesz je dostać przez WWW z
ftp://ftp.agh.edu.pl/pub/security/morepgp.tar.gz.
Należy je przekopiować do dowolnego katalogu w ścieżce (na ogół
/usr/local/bin, ale może to być dowolny katalog, także Twój $HOME/bin)
i dopisać do konfiguracji elma:
D)isplay mail using : morepgp E)ditor (primary) : mailpgpWażne jest sprawdzenie, czy ścieżka do perl-a wpisana w pierwszej linii każdego z tych skryptów jest prawidłowa. ścieżkę perl-a w Twoim systemie możesz sprawdzić komendą:
which perl
.
Ponadto, Paweł Krawczyk przetłumaczył na polski oryginalną dokumentację do PGP
- jej wersja HTML jest dostępna w:
http://echelon.pl/pubs/
Literatura
Protect Your Privacy: A Guide for PGP Users by William Stallings Prentice Hall PTR ISBN 0-13-185596-4 E-Mail Security: How to Keep Your Electronic Mail Private by Bruce Schneier Wiley Publishing The Computer Privacy Handbook: A Practical Guide to E-Mail Encryption, Data Protection, and PGP Privacy Software by Andre Bacard Peachpit Press ISBN 1-56609-171-3 PGP: Pretty Good Privacy by Simson Garfinkel O'Reilly & Associates, Inc. ISBN 1-56592-098-8 THE OFFICIAL PGP USER'S GUIDE by Philip R. Zimmermann MIT Press ISBN 0-262-74017-6 ZIMPP PGP SOURCE CODE AND INTERNALS by Philip R. Zimmermann April 1995