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)