SYSTEM PGP
Teresa Janyszek
Irena Rutkowska
Wstęp
Najpopularniejszymi usługami w sieciach komputerowych są usługa poczty elektronicznej i przesyłanie plików (ftp).
Doświadczenie pokazuje, że często zachodzi potrzeba zachowania poufności
i
integralności przesyłanych informacji. Przez poufność rozumie się niemożność
podglądania zawartości listów przez osoby trzecie, a przez integralność
niemożność wprowadzania przez takie osoby modyfikacji treści. W tym celu został
opracowany system PGP (Pretty Good Privacy) szyfrująco - deszyfrujący. Autorem
jego jest Phil Zimmermann.
PGP pozwala nie tylko szyfrować listy aby uniemożliwić przeglądanie ich treści
przez osoby niepowołane, ale także sygnować (podpisywać) listy zaszyfrowane lub
nie. Przez to adresat może stwierdzić czy list pochodzi rzeczywiście od nadawcy
i czy jego treść nie była po podpisaniu modyfikowana (fałszowana) przez
osoby trzecie.
Istotny z punktu widzenia użytkownika 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ść
i integralność. Dzięki temu, używając PGP mogą ze sobą
korespondować osoby, dla których poczta elektroniczna jest jedyną formą
kontaktu.
1. Zasada działania PGP
Tradycyjne metody szyfrowania informacji polegały na użyciu tego samego klucza do szyfrowania jak i odszyfrowania przesłanej informacji. Jest oczywiste, że klucz taki musiał być wcześniej przekazany odbiorcy informacji kanałem bezpiecznym.
System PGP wykorzystuje metodę klucza publicznego, tzn. pojedynczy klucz zastąpiony jest parą kluczy. Jeden z nich (klucz publiczny) służy do zaszyfrowania listu, drugi (klucz prywatny) do jego odszyfrowania. Znajomość klucza publicznego nie wystarcza tu do deszyfracji przesyłki ani do odtworzenia klucza prywatnego (deszyfrującego). Wysyłając przesyłkę (plik, list) do danej osoby szyfruje się ją kluczem publicznym tej osoby i tylko ona, będąc właścicielem klucza prywatnego związanego z tym kluczem publicznym, może ją odszyfrować.
Użytkownik we właściwy sposób musi dbać o tajność klucza prywatnego, np. przechowywać go na dyskietce trzymanej w zamknięciu. Natomiast swój klucz publiczny powinien szeroko udostępniać.
2. Generowanie kluczy - prywatnego i publicznego
Pierwszym krokiem użytkownika chcącego korzystać z systemu PGP (przy
założeniu, że pracuje on pod kontrolą systemu Unix, w którym zainstalowany jest
ten system) jest wygenerowanie kluczy publicznego i prywatnego. W tym celu
należy
w swoim katalogu macierzystym utworzyć podkatalog .pgp. Klucze
generuje się komendą
pgp -kg
po wydaniu której program zapyta o długość klucza w bitach.
Można wybrać jedną ze standardowych długości (512, 768, 1024) lub podać własną z przedziału 384 2048. Następnie system poprosi o wprowadzenie identyfikatora ID użytkownika, który powinien jednoznacznie określać właściciela klucza. Podaje się go w postaci:
imię nazwisko <adres elektroniczny>
np.:
Irena Rutkowska <irena@pwr.wroc.pl>
Następnym krokiem jest wprowadzenie hasła (pass phrase) służącego do odblokowywania klucza. Jest to dodatkowe zabezpieczenie, mające na celu utrudnienie posłużenia się skradzionym cudzym kluczem prywatnym. Hasło to może być znacznie dłuższe niż hasło użytkownika w systemie Unix i, podobnie jak tamto, nie jest widoczne w czasie wprowadzania (wpisywania).
System wymaga powtórnego wprowadzenia hasła celem weryfikacji. System PGP będzie pytać o to hasło zawsze, gdy użytkownik będzie chciał odszyfrować przesyłkę przeznaczoną dla niego lub sygnować własną przesyłkę.
Kolejnym krokiem podczas generowania kluczy jest wpisanie dowolnego tekstu aż do usłyszenia sygnału dźwiękowego i ukazania się komunikatu:
0 * - Enough, thank you
Treść wprowadzanego tekstu nie jest tu istotna, lecz odstępy czasowe między naciśnięciami klawiszy, które stanowią źródło generowania liczby losowej, użytej do tworzenia kluczy. Komunikat:
Key generation completed
kończy poprawnie przeprowadzony proces tworzenia kluczy: prywatnego w pliku secring.pgp i publicznego w pliku pubring.pgp. Pliki te znajdą się w podkatalogu .pgp.
Wprowadzone hasło można zmienić, można też dodać sobie kolejny identyfikator (patrz punkt 3.6.).
3. Zarządzanie kluczami
Z systemem PGP związane jest pojęcie kółka z kluczami (keyring). Jest to plik zawierający klucze publiczne różnych użytkowników w odpowiednim formacie. Plikiem tym jest pubring.pgp, w którym znajduje się również klucz publiczny właściciela kółka.
3.1. Dodanie klucza do kółka
Po otrzymaniu pliku z kluczem publicznym innego użytkownika (patrz
punkt
8.2.) można go dołączyć do swojego kółka komendą
pgp -ka nazwa_pliku_ z_kluczem
np.:
pgp -ka rutkowska.pgp
lub
pgp -ka janyszek.asc
Dołączając klucz do kółka, można go certyfikować, czyli sygnować swoim kluczem (patrz punkt 3.4.).
3.2. Zdjęcie klucza z kółka
Aby zapisać w osobnym pliku kopię jednego klucza z kółka, należy posłużyć się komendą
pgp -kx identyfikator_użytkownika
lub
pgp -kxa identyfikator_użytkownika
W wyniku działania komendy w pierwszej postaci powstanie plik zawierający klucz publiczny w postaci binarnej. Przed jego utworzeniem system zapyta o nazwę i sam przyporządkuje mu rozszerzenie pgp. W drugim przypadku powstanie plik o rozszerzeniu asc, zawierający klucz, którego wszystkie znaki będą należały do podstawowego zestawu kodów ASCII.
Przykład:
sun1000% pgp -kxa irena
Pretty Good Privacy(tm) 2.6.3i- Public-key encryption for the masses.
(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software. 1996-01-18
International version - not for use in the USA. Does not use RSAREF.
Current time: 1997/03/10 11:07 GMT
Extracting from key ring:`/export/home/sun1000/irena/.pgp/pubring.pgp',useri
Key for user ID: Irena Rutkowska <irena@pwr.wroc.pl>
768-bit key, key ID BCF435F9, created 1997/01/28
Extract the above key into which file? irena
Transport armor file: irena.asc
Key extracted to file `irena.asc'.
sun1000% more irena.asc
Type Bits/Key ID Date User ID pub 768/BCF435F9 1997/01/28 Irena Rutkowska<irena@pwr.wroc.pl>- - - - - BEGIN PGP PUBLIC KEY BLOCK - - - - -
Version: 2.6.3i
mQBtAzLtxxUAAAEDAL2ajbDPuKEhwX8GYXaf1qTI6gt2xtbZ8/78uWdunhreilpn
k6XPbKVFkCZ6Mf+LT+90x/Jp+ZGNlqIHq2cEThSEXf0tTpM+ABVA9TDGiOz70J
YHIErSwzouebvPQ1+QAFEbQrSXJ1bmEgUnV0a293c2thIDxpcmVuYUBzdW4xMDAw
LnB3ci53cm9jLnBsPokAlQMFEDL/BwEo617hVDXk9QEB4fIEAIbHoyzExfJKBK0I
dVItt2c/zqsNR8UWjIHddFc67D/EKH9NfcZFYFpSDeb/GHz4Y80ydIIa84dHRITX
LaJwbXFyg4Z6SScbD19eVTwKqguWBTcjC8j9dqputBRkyTG3goFRQBcAfHuytdR8
Tiq2qiIxCWVTudluTQgmQxiM0YhxiQB1AwUQMu3HFTOi55u89DX5AQGQmAL+LEmv
ETYyJWOtrUxIEsv6fmbok2Y+JV2qFGLyx5I6tVV2uGt53bLk3x2E6nuAI9qoF3/Z
wYfRi9nxOyF3Ydt9leDgq/HfCGtt0Ym/I2lm+B9kuvPgRd5Os3L+RNm97S9V
=u5xz
- - - - - END PGP PUBLIC KEY BLOCK - - - - -
sun1000%
3.3. Sprawdzanie zawartości kółka, sygnowanie kluczy i uzyskiwanie ich "odcisków"
Zawartość swojego kółka użytkownik może sprawdzić komendą
pgp -kv
W wyniku otrzyma listę kluczy publicznych z identyfikatorami użytkowników, np.:
sun1000% pgp -kv
Pretty Good Privacy(tm) 2.6.3i- Public-key encryption for the masses.
(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software. 1996-01-18
International version - not for use in the USA. Does not use RSAREF.
Current time: 1997/02/11 09:00 GMT
Key ring:`/export/home/sun1000/tlkasp/.pgp/pubring.pgp'
Type Bits/Key ID Date User ID pub 768/04D4F0C9 1996/11/27 Ryszard Bernardyn <bernardn@pwr.wroc.pl> pub 768/BCF435F9 1997/01/28 Irena Rutkowska <irena@pwr.wroc.pl> pub 1024/74CD6789 1997/02/07 Redakcja <informat@pwr.wroc.pl> pub 1024/5435E4F5 1997/02/10 Teresa Janyszek <tlkasp@pwr.wroc.pl>4 matching keys found.
sun1000%
Komendą
pgp -kvv
można dodatkowo sprawdzić przez kogo są sygnowane klucze użytkowników, np.:
sun1000% pgp -kvv
Pretty Good Privacy(tm) 2.6.3i- Public-key encryption for the masses.
(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software. 1996-01-18
International version - not for use in the USA. Does not use RSAREF.
Current time: 1997/02/11 09:03 GMT
Key ring:`/export/home/sun1000/tlkasp/.pgp/pubring.pgp'
Type Bits/Key ID Date User ID pub 768/04D4F0C9 1996/11/27 Ryszard Bernardyn <bernardn@pwr.wroc.pl> sig 5435E4F5 Teresa Janyszek <tlkasp@pwr.wroc.pl> sig 04D4F0C9 Ryszard Bernardyn <bernardn@pwr.wroc.pl> pub 768/BCF435F9 1997/01/28 Irena Rutkowska <irena@pwr.wroc.pl> sig 5435E4F5 Teresa Janyszek <tlkasp@pwr.wroc.pl> sig BCF435F9 Irena Rutkowska <irena@pwr.wroc.pl> pub 1024/74CD6789 1997/02/07 Redakcja <informat@pwr.wroc.pl> sig 5435E4F5 Teresa Janyszek <tlkasp@pwr.wroc.pl> sig 74CD6789 Redakcja <informat@pwr.wroc.pl> pub 1024/5435E4F5 1997/02/10 Teresa Janyszek <tlkasp@pwr.wroc.pl> sig 5435E4F5 Teresa Janyszek <tlkasp@pwr.wroc.pl>4 matching keys found.
sun1000%
Komendą
pgp -kvc
można uzyskać tzw. fingerprints, czyli odciski palców. Jest to rodzaj sumy kontrolnej klucza, którą można podyktować przez telefon w celu porównania z odciskiem palca oryginalnego klucza, jeśli użytkownik chce się upewnić, że klucz otrzymany od kogoś nie został "po drodze" zmieniony.
Przykład:
sun1000% pgp -kvc
Pretty Good Privacy(tm) 2.6.3i- Public-key encryption for the masses.
(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software. 1996-01-18
International version - not for use in the USA. Does not use RSAREF.
Current time: 1997/02/11 09:07 GMT
Key ring:`/export/home/sun1000/tlkasp/.pgp/pubring.pgp'
Type Bits/Key ID Date User ID
pub 768/04D4F0C9 1996/11/27 Ryszard Bernardyn <bernardn@pwr.wroc.pl>
Key fingerprint = 59 9F 74 74 D2 F3 08 48 ED B1 83 18 83
74 FB 81
pub 768/BCF435F9 1997/01/28 Irena Rutkowska <irena@pwr.wroc.pl>
Key fingerprint = 22 1E D6 AB AA E1 74 82 01 FF FA FA 4C
FF 5B 3B
pub 1024/74CD6789 1997/02/07 Redakcja <informat@pwr.wroc.pl>
Key fingerprint = 98 D4 86 42 B1 EC BB 92 C2 1D 5D 53 11
65 DF 3B
pub 1024/5435E4F5 1997/02/10 Teresa Janyszek <tlkasp@pwr.wroc.pl>
Key fingerprint = E4 0B 89 8F E3 83 7A B9 84 26 25 1A 39
8D 1B BE
4
matching keys found.sun1000%
3.4. Certyfikowanie kluczy
Certyfikowanie otrzymanego od kogoś klucza publicznego, to sygnowanie go swoim własnym, w celu potwierdzenia jego autentyczności. Jest to możliwe w momencie dołączania go do kółka.
Przykład:
sun1000% pgp -ka teresa.pgp
Pretty Good Privacy(tm) 2.6.3i- Public-key encryption for the masses.
(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software. 1996-01-18
International version - not for use in the USA. Does not use RSAREF.
Current time: 1997/02/11 09:17 GMT
Looking for new keys...
pub 1024/5435E4F5 1997/02/10 Teresa Janyszek <tlkasp@pwr.wroc.pl>
Checking signatures...
pub 1024/5435E4F5 1997/02/10 Teresa Janyszek <tlkasp@pwr.wroc.pl> sig! 5435E4F5 Teresa Janyszek <tlkasp@pwr.wroc.pl>
Keyfile contains:
1 new key(s)
One or more of the new keys are not fully certified.
Do you want to certify any of these keys yourself (y/N)? y
Key for user ID: Teresa Janyszek <tlkasp@pwr.wroc.pl>
1024-bit key, key ID 5435E4F5, created 1997/02/10
Key fingerprint = E4 0B 89 8F E3 83 7A B9 84 26 25 1A 39 8D 1B BE
This key/userID association is not certified.
Quetionable certification from:
Teresa Janyszek <tlkasp@pwr.wroc.pl>
Do you want to certify this key yourself (y/N)? y
Looking for key for user `Teresa Janyszek <tlkasp@pwr.wroc.pl>`:
Key for user ID: Teresa Janyszek <tlkasp@pwr.wroc.pl>
1024-bit key, key ID 5435E4F5, created 1997/02/10
Key fingerprint = E4 0B 89 8F E3 83 7A B9 84 26 25 1A 39 8D 1B BE
READ CAREFULY: Based on your own direct first-hand knowledge, are
you absolutely certain that you are prepared to solemnly certify that
the above public key actually belongs to the user specified by the
above user ID (y/n)? y
You need a pass phrase to unlock your RSA secret key.
Key for user ID: Redakcja <informat@pwr.wroc.pl>
1024-bit key, key ID 74CD6789, created 1997/02/07
Enter pass phrase: Pass phrase is good. Just a moment....
Key signature certificate added.
Make a determination in your own mind whether this key actually
belongs to the person whom you think it belongs to, based on available
evidence. If you think it does, then based on your estimate of
that person's integrity and competence in key management, answer
the following question:
Would you trust "Teresa Janyszek <tlkasp@pwr.wroc.pl>"
to act as an introducer and certify other people's public keys to you?
(1=I don't know. 2=No. 3=Usually. 4=Yes, always.) ? 3
sun1000%
W trakcie dołączania i certyfikowania klucza, użytkownik otrzyma jego odcisk. W tym momencie ma możliwość sprawdzenia autentyczności tego klucza innym kanałem, np. telefonicznie, jeżeli zna właściciela, który może mu podyktować ciąg liczb w postaci heksadecymalnej, stanowiący odcisk jego klucza. W innym wypadku potwierdzeniem autentyczności klucza może być zaufanie do sygnatur znajdujących się już w tym kluczu.
Przykład dołączania klucza wcześniej certyfikowanego przez jakiegoś użytkownika:
sun1000% pgp -ka ryszard.pgp
Pretty Good Privacy(tm) 2.6.3i- Public-key encryption for the masses.
(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software. 1996-01-18
International version - not for use in the USA. Does not use RSAREF.
Current time: 1997/02/11 09:27 GMT
Looking for new keys...
pub 768/04D4F0C9 1996/11/27 Ryszard Bernardyn <bernardn@pwr.wroc.pl>
Checking signatures...
pub 768/04D4F0C9 1996/11/27 Ryszard Bernardyn <bernardn@pwr.wroc.pl> sig! 5435E4F5 1997/02/10 Teresa Janyszek <tlkasp@pwr.wroc.pl> sig! 04D4F0C9 1996/11/27 Ryszard Bernardyn <bernardn@pwr.wroc.pl>
Keyfile contains:
1 new key(s)
Make a determination in your own mind whether this key actually
belongs to the person whom you think it belongs to, based on available
evidence. If you think it does, then based on your estimate of
that person's integrity and competence in key management, answer
the following question:
Would you trust "Ryszard Bernardyn <bernardn@pwr.wroc.pl>"
to act as an introducer and certify other people's public keys to you?
(1=I don't know. 2=No. 3=Usually. 4=Yes, always.) ? 4
sun1000%
Uwaga: Użytkownik podejmujący się certyfikowania czyjegoś klucza, powinien mieć pewność, że jest on autentyczny.
3.5. Usuwanie klucza z kółka
Jeżeli użytkownik chce usunąć klucz z kółka, bo np. wątpi w jego prawdziwość, albo właściciel tego klucza poinformował go, że zmienił klucz na nowy, może do tego celu użyć komendy
pgp -kd identyfikator_użytkownika
Przykład:
pgp -kd ryszard
Uwaga: Jeżeli na kółku z kluczami znajduje się kilka kluczy, których identyfikator lub jego część pokrywa się z identyfikatorem usuwanego klucza, to system usunie pierwszy znaleziony na kółku.
Klucz usunięty powyższą komendą nie znika fizycznie z kółka, lecz jest oznaczony znakiem minus. W razie potrzeby klucz ten można w każdej chwili przywrócić, używając tej samej komendy.
Przykład:
sun1000% pgp -kd ryszard
Pretty Good Privacy(tm) 2.6.3i- Public-key encryption for the masses.
(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software. 1996-01-18
International version - not for use in the USA. Does not use RSAREF.
Current time: 1997/02/12 19:20 GMT
Key for user ID: Ryszard Bernardyn <bernardn@pwr.wroc.pl>
768-bit key, key ID 04D4F0C9, created 1996/11/27
Disable this key (y/N)? y
sun1000% pgp -kv
Pretty Good Privacy(tm) 2.6.3i- Public-key encryption for the masses.
(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software. 1996-01-18
International version - not for use in the USA. Does not use RSAREF.
Current time: 1997/02/12 19:23 GMT
Key ring:`/export/home/sun1000/tlkasp/.pgp/pubring.pgp'
Type Bits/Key ID Date User ID pub- 768/04D4F0C9 1996/11/27 Ryszard Bernardyn <bernardn@pwr.wroc.pl> pub 768/BCF435F9 1997/01/28 Irena Rutkowska <irena@pwr.wroc.pl> pub 1024/74CD6789 1997/02/07 Redakcja <informat@pwr.wroc.pl> pub 1024/5435E4F5 1997/02/10 Teresa Janyszek <tlkasp@pwr.wroc.pl>4 matching keys found.
sun1000%
Jeżeli właściciel kółka chce definitywnie usunąć jeden z kluczy, powinien użyć komendy
pgp -kr identyfikator_użytkownika
3.6. Dodanie kolejnego identyfikatora do klucza użytkownika
Użytkownik ma możliwość zmiany hasła i dodania kolejnego identyfikatora związanego z własnym kluczem. Służy do tego komenda
pgp -ke identyfikator_użytkownika
System wyprowadzi posiadane informacje o właścicielu klucza, a następnie poprosi o podanie hasła (pass phrase), którego poprawność jest warunkiem koniecznym do przeprowadzenia zamierzonych zmian. Pierwszym pytaniem zadanym przez system jest, czy użytkownik chce dołączyć nowy identyfikator:
Do you want to add a new user ID (y/N)?
W przypadku odpowiedzi twierdzącej system poprosi o wprowadzenie nowego identyfikatora użytkownika, zapyta czy ma on być nadrzędnym (primary) w stosunku do innych identyfikatorów, a następnie czy ma zmienić hasło (pass phrase) użytkownikowi.
Przykład zmiany hasła i dodania kolejnego identyfikatora (Informator) przez użytkownika o nazwie informat:
sun1000% pgp -ke redakcja
Pretty Good Privacy(tm) 2.6.3i- Public-key encryption for the masses.
(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software. 1996-01-18
International version - not for use in the USA. Does not use RSAREF.
Current time: 1997/02/12 19:34 GMT
Editing userid "redakcja" in key ring: `/export/home/sun1000/informat/.pgp/pubr.
Key for user ID: Redakcja <informat@pwr.wroc.pl>
1024-bit key, key ID 74CD6789, created 1997/02/07
You need a pass phrase to unlock your RSA secret key.
Key for user ID: Redakcja <informat@pwr.wroc.pl>
1024-bit key, key ID 74CD6789, created 1997/02/07
Enter pass phrase: Pass phrase is good.
Current pass phrase: Redakcja <informat@pwr.wroc.pl>
Do you want to add a new user ID (y/N)? y
Enter the new user ID: Informator <informat@pwr.wroc.pl>
Make this user ID the primary user ID for this key (y/N)? n
Do you want to change your pass phrase (y/N)? y
Enter pass phrase:
Enter same pass phrase again:
Secret key ring updated...
You need a pass phrase to unlock your RSA secret key.
Key for user ID: Informator <informat@pwr.wroc.pl>
1024-bit key, key ID 74CD6789, created 1997/02/07
Enter pass phrase: Pass phrase is good. Just a moment....
Key signature certificate added.
Public key ring updated.
sun1000% pgp -kv
Pretty Good Privacy(tm) 2.6.3i- Public-key encryption for the masses.
(c) 1990-96 Philip Zimmermann, Phil's Pretty Good Software. 1996-01-18
International version - not for use in the USA. Does not use RSAREF.
Current time: 1997/02/12 19:40 GMT
Key ring:`/export/home/sun1000/informat/.pgp/pubring.pgp'
Type Bits/Key ID Date User ID
pub 768/04D4F0C9 1996/11/27 Ryszard Bernardyn <bernardn@pwr.wroc.pl>
pub 768/BCF435F9 1997/01/28 Irena Rutkowska <irena@pwr.wroc.pl>
pub 1024/5435E4F5 1997/02/10 Teresa Janyszek <tlkasp@pwr.wroc.pl>
pub 1024/74CD6789 1997/02/07 Redakcja <informat@pwr.wroc.pl>
Informator <informat@pwr.wroc.pl>
4
matching keys found.sun1000%
Za pomocą tej komendy użytkownik może również zmienić parametr zaufania klucza innego użytkownika, który ma na swoim kółku.
Przykład:
sun1000% pgp -ke irena
Key for user ID: Irena Rutkowska <irena@pwr.wroc.pl>
768-bit key, key ID BCF435F9, created 1997/01/28
No secret key available. Editing public key trust parameter.
Key for user ID: Irena Rutkowska <irena@pwr.wroc.pl>
768-bit key, key ID BCF435F9, created 1997/01/28
This user is generally trusted to certify other keys.
This key/userID association is fully certified.
Axiomatically trusted certification from:
Redakcja <informat@pwr.wroc.pl>
Generally trusted certification from:
Irena Rutkowska <irena@pwr.wroc.pl>
Current trust for this key's owner is: marginal
Make a determination in your own mind whether this key actually
belongs to the person whom you think it belongs to, based on available
evidence. If you think it does, then based on your estimate of
that person's integrity and competence in key management, answer
the following question:
Would you trust "Irena Rutkowska <irena @pwr.wroc.pl>"
to act as an introducer and certify other people's public keys to you?
(1=I don't know. 2=No. 3=Usually. 4=Yes, always.) ? 4
Public key ring updated.
sun1000%
4. Sygnowanie plików i sprawdzanie sygnatur
Jeżeli użytkownik wysyła plik, który chciałby sygnować (autoryzować) "swoim podpisem" w celu zapobieżenia manipulacjom, ma do dyspozycji komendę
pgp -s nazwa_pliku
Program PGP zapyta o hasło, a następnie utworzy plik z sygnowaniem, którego nazwa będzie miała rozszerzenie pgp, np.:
pgp -s red
Plik red zostanie zasygnowany, w wyniku czego powstanie plik red.pgp. Taki plik można przesłać innemu użytkownikowi, który może sprawdzić czy "po drodze" nie został sfałszowany, poleceniem:
pgp red.pgp
Jeżeli przesyłka nie była zmieniona, ukaże się informacja o poprawności sygnowania:
File has signature. Public key is required to check signature.
.
Good signature from user "Irena Rutkowska <irena@pwr.wroc.pl>.
Signature made 1997/02/13 11:27 GMT using 768-bit key, key ID BCF435F9
Plaintext filename: red
W kartotece macierzystej użytkownika utworzy się plik taki sam jak ten, który był zasygnowany przed wysłaniem u nadawcy.
W przypadku, gdy użytkownik chce zasygnować przed wysłaniem plik tekstowy, powinien użyć komendy
pgp -sat nazwa_pliku
W wyniku powstanie plik z rozszerzeniem asc, którego treść nie jest kodowana,
a tylko na końcu dopisana jest sygnatura.
Przykład:
Treścią pliku green jest:
Dlaczego nie odpisujesz na moje listy?
Wydanie komendy:
pgp -sat green
spowoduje utworzenie pliku green.asc o zawartości:
- - - - -BEGIN PGP SIGNED MESSAGE- - - - -
Dlaczego nie odpisujesz na moje listy?
- - - - -BEGIN PGP SIGNATURE- - - - -
Version: 2.6.3i
Charset: noconv
iQB1AwUBMwL6kjOi55u89DX5AQHp3AL8Dqdf0W9TZy0uOz6qwI45ybYHX2Luhcet
t1iI7it5dvEBWjD14JvXvGOjIGEm3s44Mx8u73hxbSvis1XV3jmr53kN0fHYUnx1
J5G121IfiHRnrHU1sYLVxb8XY4hEcOok
=Vcn8
- - - - -END PGP SIGNATURE- - - - -
Odbiorca może sprawdzić poprawność przesłania w sposób identyczny jak opisano to w poprzednim przykładzie.
5. Szyfrowanie i deszyfrowanie przesyłek
5.1. Szyfrowanie przesyłki
W celu zaszyfrowania przesyłki znajdującej się w pliku używa się komendy
pgp -e nazwa_pliku adresat1 adresat2 ...
lub
pgp -ea nazwa_pliku adresat1 adresat2 ...
gdzie: adresat1, adresat2, ... są identyfikatorami kluczy adresatów, do których będzie skierowana przesyłka.
Po wykonaniu powyższej komendy powstanie plik, którego nazwa będzie miała rozszerzenie pgp lub asc i tylko adresaci wymienieni w tej komendzie będą mogli plik ten po odebraniu rozszyfrować (oczywiście pod warunkiem, że nadawca ma ich klucze publiczne).
Przykład:
Komendą
pgp -e red irena ryszard
został zaszyfrowany plik o nazwie red, przeznaczony do dwóch adresatów, których identyfikatorami kluczy są irena i ryszard. Plik zaszyfrowany otrzyma automatycznie nazwę red.pgp.
Jeżeli użytkownik chciałby, aby zaszyfrowany plik miał inną nazwę niż plik wejściowy, musi użyć w komendzie dodatkowego parametru (po adresatach):
pgp -e nazwa_pliku adresat1 adresat2 ... -o nazwa_pliku_zaszyfrowanego
Przykład:
pgp -e red irena ryszard -o szyfr
5.2. Deszyfrowanie przesyłki
Odbiorcy przesyłki deszyfrują ją komendą
pgp nazwa_pliku_zaszyfrowanego
Nazwa pliku z rozszyfrowaną przesyłką nie będzie miała rozszerzenia. Jeżeli użytkownik chciałby, aby rozszyfrowana przesyłka znalazła się w pliku o konkretnej nazwie (różnej od nazwy, pod którą została wysłana), to dodatkowo powinien umieścić parametr -o nazwa_pliku_rozszyfrowanego, np.:
pgp green.asc -o blue
5.3. Jednoczesne szyfrowanie i sygnowanie przesyłki
Istnieje możliwość jednoczesnego szyfrowania i sygnowania przesyłki do kilku adresatów. Służy do tego komenda
pgp -es nazwa_pliku adresat1 adresat2 ...
W wyniku jej działania, odbiorcy przesyłki (po jej rozszyfrowaniu) dodatkowo otrzymają komunikaty o poprawności sygnowania.
W przypadku, gdy przesyłka została "po drodze" sfałszowana, odbiorca
w
trakcie sprawdzania poprawności sygnowania otrzyma między innymi komunikat:
Error: RSA-decrypted block is corrupted.
This may be caused either by corrupted data or by using the wrong RSA key.
6. Tworzenie sygnatury (sygnowania) w osobnym pliku
PGP może być użyte do tworzenia i sprawdzania sygnatury nie będącej częścią dokumentu lecz zapisanej w osobnym pliku. Postać komendy:
pgp -sb nazwa_pliku
W wyniku jej działania powstanie plik, którego nazwa będzie miała rozszerzenie sig, np.:
pgp -sb red
spowoduje utworzenie pliku red.sig.
Adresatowi przesyłki należy posłać dokument wyjściowy i plik z sygnaturą, a on z kolei po ich otrzymaniu, powinien sprawdzić czy "po drodze" nie nastąpiła ingerencja, komendą:
pgp plik.sig plik
W odniesieniu do wcześniejszgo przykładu, polecenie to będzie miało postać:
pgp red.sig red
Ten sposób zabezpieczenia stosowany jest często przez autorów oprogramowania w celu ochrony przed wirusami i koniami trojańskimi lub inną złośliwą ingerencją.
7. Zastosowanie PGP w poczcie elektronicznej
7.1. PGP i program pine
PGP może służyć do szyfrowania listów wysyłanych za pomocą programu
pine. Tę możliwość daje dopiero wersja 3.95 tego programu, pod warunkiem
ustawienia pewnych parametrów konfiguracyjnych. Użytkownik musi wybrać
z
głównego menu opcję S SETUP, następnie z menu u dołu ekranu opcję C
Config
i odszukać parametry display-filters oraz sending-filters. Należy je
ustawić odpowiednio:
display-filters=_LEADING("-----BEGIN PGP MESSAGE-----")_ /usr/local/bin/pgp
sending-filters=/usr/local/bin/pgp -fae
7.1.1. Wysyłanie listów szyfrowanych
Zakłada się, że użytkownik ma klucze prywatny i publiczny. Kończąc redagowanie listu w programie pine, należy go wysłać, posługując się klawiszami <Ctrl/X>. W tym momencie pojawi się pytanie, czy treść listu ma być zaszyfrowana czy nie:
Send message (unfiltered)?
Jeśli ma to być zwykła przesyłka (nieszyfrowana) wystarczy nacisnąć klawisz Y(yes). W przypadku gdy przesyłka ma być zaszyfrowana naciska się klawisze <Ctrl/P>, a system zada kolejne pytanie:
Send message (filtered thru "pgp")?
Po odpowiedzi Y(yes), system poprosi o wprowadzenie identyfikatora ID (lub tylko jego części) adresata. Po uzyskaniu tej informacji list zostanie wysłany.
Pliki zaszyfrowane wcześniej programem pgp można wysyłać programem pine jako dołączone do listu (attachment).
Uwaga: Za pomocą programu pine, zaszyfrowany list można wysłać tylko do jednego adresata.
7.1.2. Odbiór listów szyfrowanych
Użytkownik, który otrzyma list zaszyfrowany, chcąc go odczytać zmuszony jest podać hasło służące do odblokowania klucza (pass phrase).
7.2. PGP i program elm
Program elm, służący do przesyłania poczty elektronicznej ma możliwość szyfrowania i sygnowania przesyłek za pomocą programu pgp. Istnieją dwa programy integrujące standardowego elm'a z systemem PGP, a mianowicie morepgp i mailpgp.
Jeżeli administrator systemu nie umieścił ich wcześniej w katalogu /usr/local/bin, to należy skopiować plik o nazwie morepgp.tar.gz, który znajduje się pod adresem URL ftp://ftp.agh.edu.pl/pub/security/, rozpakować go, a uzyskane pliki umieścić w swoim katalogu macierzystym (home directory).
Następną czynnością jest zmiana konfiguracji programu elm przez ustawienie parametrów:
D)isplay mail using : morepgp
E)ditor (primary) : mailpgp
7.2.1. Wysyłanie listów sygnowanych i/lub szyfrowanych
Przesyłkę, która ma być zaszyfrowana redaguje się identycznie jak zwykłą, dopiero w momencie jej wysyłania pojawi się pytanie:
Sign this message? [Y]:
W przypadku, gdy nadawca chce aby list był sygnowany przez pgp musi
odpowiedzieć twierdząco (y), po czym zostanie przez system PGP poproszony
o
wprowadzenie swojego hasła (pass phrase).
Następnym pytaniem zadawanym przez program elm będzie:
Encrypt this message? [N]:
Po odpowiedzi twierdzącej oznaczającej, że przesyłka ma być zaszyfrowana, system poprosi o wprowadzenie identyfikatora odbiorcy i znaku końca - EOF (<Ctrl/D>) lub pojedynczej kropki. W przypadku, gdy nadawca nie poda identyfikatora odbiorcy a tylko znak końca, system PGP ponownie upomni się o identyfikator klucza publicznego odbiorcy.
7.2.2. Odbiór listów szyfrowanych
Sposób odbioru listu zależy od tego czy przesyłka została przez nadawcę zaszyfrowana, zasygnowana i zaszyfrowana, czy tylko zasygnowana.
7.2.2.1. Odbiór przesyłki zaszyfrowanej
Podczas próby odczytu listu zaszyfrowanego, system żąda od odbiorcy wprowadzenia hasła (pass phrase). Jeśli hasło jest poprawne, to po naciśnięciu dowolnego klawisza ukaże się nagłówek listu, a między wierszami:
- - - - - BEGIN DECRYPTED MESSAGE - - - - -
i
- - - - - END DECRYPTED MESSAGE - - - - -
treść listu.
Przykład:
Message 1/46 From Teresa Janyszek Feb 17, 97 03:30:17pm +0100
Subject: list szyfrowany
To: irena (Irena Rutkowska)
Date: Mon, 17 Feb 1997 15:30:17 +0100 (MET)
- - - - - BEGIN DECRYPTED MESSAGE - - - - -
Spotkanie odbedzie się jutro o godz. 12:00. Koniecznie przyjdz!
Teresa
- -
Teresa Janyszek
WCSS
tel. 320-36-31
- - - - - END DECRYPTED MESSAGE - - - - -
~
~
~
~
byte 337/337 (END)
Po naciśnięciu klawisza <q>, następnie <i> nastąpi powrót do wykazu listów.
7.2.2.2. Odbiór listu zasygnowanego i zaszyfrowanego
Jeśli sygnowanie listu jest poprawne, to jego odbiór przebiega identycznie jak listu tylko szyfrowanego.
7.2.2.3. Odbiór listu zasygnowanego
Po sprawdzeniu poprawności sygnowania i naciśnięciu dowolnego klawisza, na ekranie ukaże się nagłówek listu, a między wierszami
- - - - - BEGIN SIGNED MESSAGE - - - - -
i
- - - - - END SIGNED MESSAGE - - - - -
jego treść.
8. Rozpowszechnianie i uzyskiwanie kluczy publicznych
8.1. Rozpowszechnianie kluczy publicznych
Użytkownik może udostępniać swój klucz publiczny następująco:
- przesyłając go za pomocą poczty elektronicznej;
- wykorzystując usługę ftp;
- umieszczając go w pliku .plan, którego zawartość zainteresowany użytkownik może "ściągnąć" do pliku w swojej macierzystej kartotece, korzystając z usługi finger;
- umieszczając go w bazie danych X.500.
Użytkownik dostarcza swój klucz publiczny w postaci pliku (najlepiej typu
ascii) zapisanego na dyskietce do administratora bazy X.500 danego regionu.
Następnie administrator szyfruje dostarczony plik z kluczem i przesyła go do
Centralnego Urzędu Certyfikacji w Toruniu, gdzie będzie on certyfikowany i
umieszczony
w bazie X.500 w celu upowszechnienia;
- umieszczając go na jednym z niżej wymienionych key serwerów, służących do rozpowszechniania kluczy:
pgp-public-keys@keys.de.pgp.net
pgp-public-keys@keys.nl.pgp.net
pgp-public-keys@keys.no.pgp.net
pgp-public-keys@keys.uk.pgp.net
pgp-public-keys@keys.us.pgp.net.
Użytkownik, wysyłając list na jeden z wymienionych serwerów, umieszcza w polu Subject: komendę add, natomiast w treści listu swój klucz publiczny. Klucz zostanie automatycznie rozesłany do innych serwerów.
Przykład:
To: pgp-public-keys@keys.nl.pgp.net
Subject: add
- - - - - BEGIN PGP PUBLIC KEY BLOCK - - - - -
Version: 2.6.3i
mQBtAzLtxxUAAAEDAL2ajbDPuKEhwX8GYXaf1qTI6gt2xtbZ8/78uWdunhreilpn
k6XPbKVFkCZ6Mf+LT+90x/Jp+ZGNlqIHq2cEThSEXf0tTpM+ABVA9TDGiOz70J
YHIErSwzouebvPQ1+QAFEbQrSXJ1bmEgUnV0a293c2thIDxpcmVuYUBzdW4xMDAw
LnB3ci53cm9jLnBsPokAlQMFEDL/BwEo617hVDXk9QEB4fIEAIbHoyzExfJKBK0I
dVItt2c/zqsNR8UWjIHddFc67D/EKH9NfcZFYFpSDeb/GHz4Y80ydIIa84dHRITX
LaJwbXFyg4Z6SScbD19eVTwKqguWBTcjC8j9dqputBRkyTG3goFRQBcAfHuytdR8
Tiq2qiIxCWVTudluTQgmQxiM0YhxiQB1AwUQMu3HFTOi55u89DX5AQGQmAL+LEmv
ETYyJWOtrUxIEsv6fmbok2Y+JV2qFGLyx5I6tVV2uGt53bLk3x2E6nuAI9qoF3/Z
wYfRi9nxOyF3Ydt9leDgq/HfCGtt0Ym/I2lm+B9kuvPgRd5Os3L+RNm97S9V
=u5xz
- - - - - END PGP PUBLIC KEY BLOCK - - - - -
- umieszczając go na swojej stronie WWW.
8.2. Uzyskiwanie kluczy publicznych
Użytkownik może uzyskać klucze publiczne innych osób następująco:
- od nich samych (plik na dyskietce, plik przesłany za pomocą ftp lub e-mail);
- z bazy danych X.500.
Aby uzyskać klucz publiczny określonej osoby należy z systemu WWW połączyć się z bazą X.500, wybierając jeden z poniższych adresów:
http://x500.pwr.wroc.pl:8888/ - Wrocław
http://x500.uni.torun.pl:8888/ - Toruń
http://x500.man.poznan.pl:8888/ - Poznań
http://netman.task.gda.pl:8888/ - Gdańsk
http://x500.icm.edu.pl:8888/ - Warszawa
http://lfs.cyf-kr.edu.pl:8888/ - Kraków.
System podpowiada użytkownikowi ciąg prostych czynności celem uzyskania klucza;
- ze strony WWW danego użytkownika;
- z pliku .plan.
Przykład:
sun1000% finger irena > klucz_ireny
(lub sun1000% finger -l irena@sun1000.pwr.wroc.pl > klucz_ireny)
sun1000% more klucz_ireny
Login name: irena In real life: Irena Rutkowska
Directory: /export/home/sun1000/irena Shell: /usr/bin/csh
On since Mar 17 11:49:05 on pts/28 from tj.wcss.wroc.pl
1 minute 16 seconds Idle Time
Mail last read Mon Mar 17 10:37:06 1997
Plan:
Type Bits/KeyID Date User ID
pub 768/BCF435F9 1997/01/28 Irena Rutkowska <irena@sun1000.pwr.wroc.pl>
- - - - - BEGIN PGP PUBLIC KEY BLOCK - - - - -
Version: 2.6.3i
mQBtAzLtxxUAAAEDAL2ajbDPuKEhwX8GYXaf1qTI6gt2xtbZ8/78uWdunhreilpn
k6XPbKVFkCZ6Mf+LT+90x/Jp+ZGNlqIHq2cEThSEXf0tTpM+ABVA9TDGiOz70J
YHIErSwzouebvPQ1+QAFEbQrSXJ1bmEgUnV0a293c2thIDxpcmVuYUBzdW4xMDAw
LnB3ci53cm9jLnBsPokAlQMFEDL/BwEo617hVDXk9QEB4fIEAIbHoyzExfJKBK0I
dVItt2c/zqsNR8UWjIHddFc67D/EKH9NfcZFYFpSDeb/GHz4Y80ydIIa84dHRITX
LaJwbXFyg4Z6SScbD19eVTwKqguWBTcjC8j9dqputBRkyTG3goFRQBcAfHuytdR8
Tiq2qiIxCWVTudluTQgmQxiM0YhxiQB1AwUQMu3HFTOi55u89DX5AQGQmAL+LEmv
ETYyJWOtrUxIEsv6fmbok2Y+JV2qFGLyx5I6tVV2uGt53bLk3x2E6nuAI9qoF3/Z
wYfRi9nxOyF3Ydt9leDgq/HfCGtt0Ym/I2lm+B9kuvPgRd5Os3L+RNm97S9V
=u5xz
- - - - - END PGP PUBLIC KEY BLOCK - - - - -
sun1000%
Używając edytora (np. vi) należy z powstałego pliku (klucz_ireny) usunąć zbędne informacje, zostawiając wyłącznie klucz;
- z key serwera (patrz punkt 8.1.), wysyłając do niego list z umieszczoną w polu Subject: komendą get z parametrem nazwa_użytkownika.
Przykład:
To: pgp-public-keys@keys.nl.pgp.net
Subject: get Irena Rutkowska
UWAGA: INFORMATOR może być kopiowany lub cytowany w części lub w całości pod warunkiem wskazania źródła jego pochodzenia. Zabronione jest rozpowszechnianie dokumentu w celach komercyjnych.
INFORMATOR w postaci elektronicznej jest dostępny w Gopherze na komputerze SUN Sparc 1000 (adres internetowy: sun1000.pwr.wroc.pl) w menu Wrocławskie Centrum Sieciowo - Superkomputerowe, podmenu Informatory WCSS oraz w sieci lokalnej Novell na serwerze CI-1.
W ostatnim okresie zostały wydane następujące INFORMATORY:
Nr 22. Instrukcja obsługi programu Lynx w sieci Internet, wrzesień 1995
Nr 23. Przeglądarka Netscape, listopad 1995
Nr 24. Przeglądarka Mosaic, grudzień 1995
Nr 25. Przeglądarka Netscape 2.0 i HotJava, luty 1996
Nr 26. Program ELM - poczta elektroniczna, kwiecień 1996
Nr 27. Program Eudora - poczta elektroniczna, kwiecień 1996
Nr 28. Wyszukiwanie zasobów w sieci Internet - system Archie,
październik 1996
Zespół redakcyjny: Teresa Janyszek
Irena Rutkowska Telefon: 320-36-31 E-mail: informat@pwr.wroc.pl Adres: Wrocław, Pl. Grunwaldzki 9 (D-2)