home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1997 #3
/
amigamamagazinepolishissue03-1
/
ma_1995
/
09
/
ami929.txt
< prev
next >
Wrap
Text File
|
1997-04-07
|
15KB
|
315 lines
PGP
<lead>Jednym z wielu waûnych zadaï, jakie otrzymaîy komputery po
ich wynalezieniu, staîo sië szyfrowanie tekstów. Jest to praca
wrëcz stworzona dla tych póîgîówków, jako ûe wymaga szybkoôci,
cierpliwoôci i precyzji, a takûe, co moûe sië okazaê
najwaûniejsze, dyskrecji.
<a>Kamil Iskra
<txt>Chyba najlepszym z popularnych programów kodujâcych jest PGP
autorstwa Philipa R. Zimmermanna z USA. Program ten istnieje na
wszystkich waûniejszych platformach sprzëtowych, ja mam wersjë
2.6.2i, którâ przeniósî na Amigë Peter Simons. Znalazîem jâ w
Aminecie, w katalogu "util/crypt", archiwum zajmuje 381 KB. W
Internecie moûna teû znaleúê archiwa zawierajâce kod úródîowy
tego programu.
W archiwum znajdujemy sam program PGP w dwóch wersjach, dla
procesorów MC68000 i MC68020, oraz dokumentacjë.
Dokumentacja programu jest doôê rozbudowana. Jej trzon stanowiâ
dwa pliki tekstowe. Jeden dla poczâtkujâcych (omawiajâcy
najwaûniejsze cechy programu), drugi dla zaawansowanych
(opisujâcy co bardziej wymyôlne jego opcje). Dokumentacja byîa
pisana raczej z myôlâ o pecetach i maszynach unixowych, ale
wszystkie komputery majâ ze sobâ coô wspólnego... Oprócz tego w
skîad dokumentacji wchodzâ pewne informacje dla programistów, a
takûe dla pasjonatów prawa, o czym za chwilë.
Dziaîanie programu opiera sië na zasadzie kluczy publicznych. Co
to takiego? Kaûdy uûytkownik PGP ma parë kluczy: sekretny i
publiczny. Klucz publiczny naleûy udostëpniê reszcie ôwiata,
natomiast klucz sekretny trzymaê w ukryciu i pilnowaê, ûeby nikt
sië do niego nie dobraî. Klucz publiczny zawiera informacje
niezbëdne do zaszyfrowania dokumentu, a sekretny -- do
rozszyfrowania. Gdy ktoô chce przekazaê nam wiadomoôê, szyfruje
jâ za pomocâ naszego klucza publicznego, po czym przesyîa nam.
List moûe sië dostaê w niepowoîane rëce, ale to nic nie da, jako
ûe tylko my mamy klucz sekretny, niezbëdny do rozkodowania
wiadomoôci.
PGP instaluje sië kopiujâc zawartoôê katalogów "bin" i "doc" z
archiwum do jakiegoô nowego katalogu, najlepiej oczywiôcie na
twardym dysku, o ile sië go posiada. Nastëpnie naleûy utworzyê
zmiennâ ôrodowiskowâ o nazwie PGPPATH, w której zapisuje sië
peînâ ôcieûkë dostëpu do tego katalogu. Najproôciej to zrobiê,
nagrywajâc plik ASCII, zawierajâcy ôcieûkë dostëpu w katalogu
ENVARC: pod nazwâ PGPPATH (ôciôlej: tak muszâ zrobiê posiadacze
OS 2.04. W OS 1.3 nie ma ENVARC:). Sam plik wykonalny PGP warto
przenieôê do katalogu "C:", tak aby system zawsze go odnalazî, bez
wzglëdu na to, jaki katalog byîby w danym momencie bieûâcym.
Pierwszâ rzeczâ, którâ naleûy zrobiê po instalacji programu, jest
utworzenie powyûszych kluczy. Robimy to za pomocâ komendy:
<l>pgp -kg
<txt>Tworzenie klucza jest doôê skomplikowane, program jednak
prowadzi nas "za râczkë". Musimy wykonaê nastëpujâce czynnoôci:
-- Ustaliê rozmiar klucza -- 512, 768 lub 1024 bity -- im
wiëkszy, tym bezpieczniejszy, ale za to szyfrowanie i
deszyfrowanie wolniejsze.
-- Podaê nasz identyfikator -- najlepiej imië, nazwisko i ew. adres
sieciowy.
-- Podaê hasîo odbezpieczajâce nasz klucz sekretny. Uûycie tego
klucza bëdzie moûliwe TYLKO po poprawnym podaniu hasîa, tak wiëc
zabezpiecza nas to w pewnym stopniu przed jego kradzieûâ itp.
Rzecz jasna, wpisywane hasîo nie ukazuje sië na ekranie.
Moûna je póúniej zmieniê.
-- Wklepaê pewnâ liczbë znaków. Jest to doôê zabawne, ale i
sprytne. Program mierzy odstëpy czasowe pomiëdzy poszczególnymi
wciôniëciami przycisków na klawiaturze, na ich podstawie generuje
potem klucz -- taki sposób gwarantuje peînâ losowoôê uzyskanego
wyniku, nieosiâgalnâ algorytmicznie (i jak tu nie powiedzieê,
ûe komputery sâ gîupie?).
Nie napisaîem wczeôniej, ûe PGP nie ma graficznego interfejsu
uûytkownika. Jest to oczywiôcie pewna wada, ale dziëki temu
program jest niemal taki sam na wszystkich platformach, a i
przenoszenie programu pomiëdzy róûnymi platformami nie sprawia
wiëkszych kîopotów.
Kolejnâ rzeczâ, którâ naleûy zrobiê, jest skonfigurowanie
programu. Robimy to edytujâc plik "config.txt", znajdujâcy sië w
katalogu, w którym zainstalowaliômy pakiet PGP. Przede wszystkim
warto zmieniê linië "MyName", wpisujâc po znaku równoôci nasz
identyfikator. O ile zamierzamy przesyîaê zakodowane listy z
uûyciem poczty elektronicznej, to warto teû usunâê znak
komentarza (#) sprzed linii "Armor=on". Spowoduje to, ûe
zakodowany plik nie bëdzie miaî ûadnych znaków "binarnych", które
nie mogâ byê przekazywane e-mailem.
Jesteômy wiëc gotowi do zakodowania pierwszego listu. Robi sië to
za pomocâ komendy:
<l>pgp -e nazwa_pliku
<txt>Program prosi o podanie, dla kogo jest przeznaczona
wiadomoôê. Wystarczy zwykle podaê pierwsze sîowo identyfikatora
-- do zaszyfrowania zostanie uûyty klucz publiczny tej osoby
(skâd go wziâê, o tym za chwilë). Po chwili program zakoïczy
pracë, jej rezultatem bëdzie zakodowany plik, o nazwie takiej
samej, jak nazwa pliku úródîowego, z koïcówkâ ".asc" bâdú ".pgp"
(w zaleûnoôci od tego, jak skonfigurowano program).
Otrzymany plik jest zazwyczaj krótszy od oryginaîu. Ten "fenomen"
uzyskuje sië w bardzo prosty sposób: plik jest przed
zaszyfrowaniem kompresowany. Utrudnia to dodatkowo ewentualnâ
próbë zîamania szyfru, jako ûe odpada jedna z klasycznych metod,
polegajâcych na zakîadaniu procentowej "zawartoôci"
poszczególnych znaków w tekôcie, np. w jëzyku angielskim
najpopularniejszâ literâ jest ponoê "e" -- po kompresji
ulega to, oczywiôcie, zmianom.
W celu rozszyfrowania wiadomoôci wystarczy napisaê:
<l>pgp nazwa_pliku
<txt>Naleûy oczywiôcie mieê wîaôciwy klucz sekretny -- informacja
o tym, dla kogo jest przeznaczona wiadomoôê, jest zapisana w
pliku. Jeûeli ktoô "grzebaî" w zakodowanym pliku, tzn. zmieniî
coô w jego zawartoôci, to PGP wykryje to i poinformuje nas o tym.
PGP umoûliwia równieû "podpisanie" wiadomoôci. Bywa to przydatne
do zaôwiadczenia, ûe to my, a nie ktoô inny, wysîaî jakiô list.
Robimy to za pomocâ komendy:
<l>pgp -s nazwa_pliku
<txt>Powoduje ona, ûe wiadomoôê jest szyfrowana z uûyciem naszego
klucza sekretnego. Kaûdy posiadacz naszego klucza publicznego
moûe jâ rozkodowaê, a podczas rozkodowywania ukaûe sië komunikat
o tym, kto zakodowaî tekst.
Tak otrzymany "podpisany" plik jest jednak zakodowany. Chcâc go
przeczytaê, trzeba go rozkodowaê. Raz, ûe na wolnych komputerach
chwilë to trwa, dwa, ûe nie zawsze zaleûy nam na sprawdzeniu
sygnatury (podpisu). Moûemy wiëc podczas "podpisywania" uûyê
opcji "-t" (lub napisaê "TextMode=on" w pliku konfiguracyjnym),
co spowoduje, ûe sam tekst nie zostanie zakodowany; w pierwszej
linijce pliku wynikowego bëdzie sië znajdowaî tekst:
<l>-----BEGIN PGP SIGNED MESSAGE-----
<txt>W ostatnich zaô kilku linijkach -- sygnatura. Jest ona
zaleûna od zawartoôci tekstu, jeûeli wiëc ktoô dokona w tekôcie
jakichô zmian, a my sprawdzimy sygnaturë (wpisujâc "pgp
nazwa_pliku"), to program wykryje to i poinformuje:
<l>WARNING: Bad signature, doesn't match file contents!
<txt>Istnieje moûliwoôê poîâczenia podpisywania z szyfrowaniem --
wystarczy podaê komendë:
<l>pgp -es nazwa_pliku
<txt>Powoduje ona podpisanie wiadomoôci naszym kluczem sekretnym,
a nastëpnie jej zakodowanie z uûyciem klucza publicznego
odbiorcy.
Pisaîem o uûywaniu cudzych kluczy publicznych. Jak je
zainstalowaê? Robi sië to za pomocâ komendy:
<l>pgp -ka nazwa_pliku_z_kluczem
<txt>Dodawanie nowego klucza jest doôê zîoûone, ale równieû i w
tym momencie program prowadzi nas "za râczkë":
-- Zwykle program stwierdza, ûe nowy klucz nie jest "pewny". Otóû
klucze mogâ mieê tzw. certyfikaty od innych uûytkowników. Oznacza
to potwierdzenie uûytkowników, ûe klucz jest oryginalny i
rzeczywiôcie naleûy do danego osobnika. Jeûeli mamy klucze
publiczne tych "potwierdzajâcych" uûytkowników i ustaliliômy, ûe
ufamy im (o tym za chwilë), to program bez ûadnych wâtpliwoôci
instaluje klucz. Jeûeli tak nie jest, to program pyta nas o
zdanie, umoûliwiajâc potwierdzenie autentycznoôci klucza przez
nas samych (moûna to zrobiê bez obaw, jeûeli klucz otrzymaliômy
bezpoôrednio od jego wîaôciciela lub z innego pewnego úródîa).
-- Program pyta, w jakim stopniu ufamy wîaôcicielowi wîaônie
instalowanego klucza publicznego. Jest to uûywane do
potwierdzania autentycznoôci cudzych kluczy publicznych,
posiadajâcych certyfikat tego uûytkownika. Jeûeli ustalimy, ûe
ufamy mu caîkowicie, to wystarczy tylko certyfikat tego jednego
uûytkownika pod cudzym kluczem publicznym, aby PGP zaakceptowaî
go bez zastrzeûeï; jeûeli ustalimy, ûe ufamy mu "zwykle", to
program bëdzie wymagaî dwóch certyfikatów od takich uûytkowników,
aby uznaê klucz za autentyczny (te wartoôci moûna zmieniê w pliku
konfiguracyjnym). Moûemy teû ustaliê, ûe danemu uûytkownikowi nie
ufamy wcale, albo ûe nie wiemy, czy moûemy mu ufaê.
Klucz zostaje dodany do pliku "pubring.pgp". Z pliku tego moûna
równieû skopiowaê klucze "na zewnâtrz", w szczególnoôci nasz
klucz publiczny, aby móc go przekazaê innym:
<l>pgp -kx
<txt>Program pyta o to, czyj klucz ma "wyeksportowaê" oraz o
nazwë pliku docelowego.
Nasz klucz publiczny najlepiej umieôciê w jakimô "îatwo
dostëpnym" miejscu. Istniejâ np. w Internecie tzw. key-servery,
które zajmujâ sië wîaônie przechowywaniem i udostëpnianiem kluczy
publicznych. Innym rozwiâzaniem, przeze mnie stosowanym, jest
udostëpnienie klucza za pomocâ "fingera". Wiem, ûe wiëkszoôê z
Was nie zna Unixa, wiëc parë sîów wyjaônienia: "finger" to
komenda Unixa, udzielajâca informacji o podanym w parametrze
uûytkowniku (przykîadowe wywoîanie: "finger
iskra@student.uci.agh.edu.pl"). Udzielane informacje to zwykle
imië i nazwisko uûytkownika, data ostatniego zalogowania i liczba
nie przeczytanych listów; moûna teû stworzyê plik, który zostanie
wyôwietlony na ekranie "nagabywacza" (tzw. plan) -- w tym wîaônie
pliku umieôciîem mój klucz publiczny.
Pojawia sië pytanie, jak bezpieczny jest PGP? Informacja, ûe
zostaî on napisany przez zawodowego kryptografa to juû coô,
ale... przecieû autor udostëpniî kod úródîowy, wiëc wystarczy go
przeanalizowaê, aby zrozumieê zasadë dziaîania programu i
wymyôliê sposób na jego zîamanie, nie? Otóû NIE. PORZÂDNE
algorytmy kodujâce nie bojâ sië jawnoôci. PGP opiera sië na
algorytmie RSA, który jest, zgodnie z naszâ dzisiejszâ wiedzâ,
praktycznie niemoûliwy do zîamania. Nie wdajâc sië w
algorytmiczne zawiîoôci (sam nie znam ich zbyt dokîadnie)
wystarczy powiedzieê, ûe w kluczu sekretnym sâ przechowywane dwie
bardzo duûe liczby pierwsze (majâce nawet kilkaset cyfr), a w
kluczu publicznym ich iloczyn. Wspóîczesna algorytmika nie zna
efektywnych metod znajdowania podzielników danej liczby -- czas
wykonywania znanych algorytmów roônie wykîadniczo wraz z iloôciâ
cyfr sprawdzanej liczby. Z drugiej strony, nie udaîo sië
matematycznie udowodniê, ûe szybszy algorytm nie moûe istnieê.
Nie moûna wiëc wykluczyê, ûe taki algorytm jednak kiedyô
powstanie, a wtedy kaûdy klucz publiczny moûna bëdzie zîamaê w
ciâgu uîamka sekundy... Póki co, moûna jednak spaê spokojnie.
Nie tak dawno obiegîa wprawdzie Internet wiadomoôê o "zîamaniu
RSA", okazaîa sië ona jednak nie do koïca prawdziwa. Owszem,
udaîo sië zîamaê POJEDYNCZY klucz publiczny (nie wiem, niestety,
ile miaî bitów), wymagaîo to jednak zaangaûowania tysiëcy szybkich
komputerów na caîym ôwiecie na czasu kilku miesiëcy.
To mógîby juû byê wîaôciwie koniec tego artykuîu, gdyby nie
jeszcze jedna interesujâca sprawa zwiâzana z PGP. Nie jest to
jednak sprawa natury komputerowej, ale raczej prawnej.
Pierwszym problemem jest to, ûe autor PGP uûyî algorytmów
kodujâcych RSA bez zgody ich autorów, tîumaczâc sië póúniej, ûe
wprowadziî do nich pewne udoskonalenia, wiëc wîaôciwie nie uûyî
"oryginaîów". Ta sprawa zostaîa jednak rozwiâzana polubownie --
wersje PGP od 2.6 w górë uûywajâ w peîni legalnych,
opatentowanych w USA procedur RSA, tzw. RSAREF. Okazaîo sië
jednak, ûe sâ one wolniejsze od napisanych przez Zimmermanna,
dlatego teû poza USA uûywa sië tych drugich -- patent RSA
obejmuje tylko USA. Nie ma to wiëkszego znaczenia dla
uûytkownika, bo oba algorytmy sâ ze sobâ zgodne. To "i" w wersji
PGP (2.6.2i) oznacza wîaônie "International" -- wersjë nie
uûywajâcâ RSAREF.
Duûo gorzej przedstawia sië sprawa "eksportu zaawansowanych
technologii szyfrujâcych poza granice USA". Otóû w USA, skâd
pochodzi autor PGP, obowiâzuje prawo, wedîug którego nie wolno
bez zgody jakichô tam wysokich organów wywoziê za granicë
zaawansowanych technologii szyfrujâcych. Tymczasem PGP
rozprzestrzeniî sië na caîy ôwiat. Autor broni sië tu twierdzâc,
ûe on nikomu za granicë programu nie przesîaî -- ûe program
"przeciekî" przez granicë dziëki Internetowi. Dyskusyjne wydaje
sië w ogóle to, czy powyûszy przepis powinien sië stosowaê do
PGP. Jak rozumiem, ustawa ta powstaîa z myôlâ o jakichô tajnych
szyfrach uûywanych przez armië. PGP jest zaô jak najbardziej
jawny, kaûdy moûe go uûywaê, modyfikowaê itp. Urzëdnicy wydajâ
sië byê jednak nieugiëci i przeciw Philipowi Zimmermannowi toczy
sië ôledztwo. Zawdziëcza on to chyba w duûej mierze swojej
arogancji.
Otóû NSA, czyli Narodowa Agencja Bezpieczeïstwa,
"zaleca" producentom sprzëtu i oprogramowania szyfrujâcego
"uzgadnianie" z niâ nowych rozwiâzaï, które chcieliby oni
wprowadziê na rynek. Ta sama NSA zajmuje sië PODSÎUCHIWANIEM
obywateli -- jest wiëc oczywiste, ûe zatwierdza ona tylko w miarë
proste algorytmy, doôê îatwe do zîamania, aby nie mieê póúniej
zbyt wiele roboty przy podsîuchiwaniu jakichô szefów mafii.
Doszîo nawet do tego, ûe ukîad scalony stosowany w "bezpiecznych"
telefonach i faksach do kodowania, o nazwie "Clipper", ma
specjalne, przewidziane konstrukcyjnie, "wejôcie", uîatwiajâce
NSA montowanie podsîuchu! Philip Zimmermann powiedziaî zaô: "NIE!
Ja mam konstytucyjnie zagwarantowane prawo do prywatnoôci mojej
korespondencji i mam zamiar je sobie zapewniê"! Odnoszë wraûenie,
ûe rzâd USA chce odstraszyê innych od pójôcia w ôlady Zimmermanna
i dlatego pod pierwszym lepszym pretekstem chce wytoczyê mu
proces. "Dziëki" caîej tej aferze PGP przestaî byê îatwo
dostëpny: nowe wersje, rozwijane przez ludzi z MIT (Massachusetts
Institute of Technology), sâ dostëpne tylko dla mieszkaïców USA
(po prostu po poîâczeniu sië z ich serwerem sprawdza on, skâd
pochodzi "dzwoniâcy"). PGP, a wraz z nim niemal caîy katalog
"util/crypt", zniknâî równieû ze wszystkich serwerów Aminetu,
znajdujâcych sië na terenie USA, pozostaî jednak na innych
serwerach, np. w niemieckim "ftp.uni-paderborn.de".
Zabezpieczenie nie jest szczelne i nowe wersje PGP przeciekajâ
przez granicë, tak staîo sië choêby z opisanâ przeze mnie
2.6.2. Nie moûna jednak powiedzieê, ûe jej uûywanie jest
nielegalne. Nielegalne byîo tylko jej przemycenie. Przepisy
prawne USA nie obowiâzujâ poza granicami tego païstwa, wiëc
uûywanie przemyconej wersji, choêby w Polsce, jest w peîni
legalne.
A Philip Zimmermann oczekuje w tym momencie na proces,
organizujâc grupë doôwiadczonych adwokatów. Wymaga to jednak
ogromnych pieniëdzy, rzesze uûytkowników jego programu starajâ
sië wiëc pomóc mu w ich zgromadzeniu -- jeûeli moûemy, pomóûmy i
my. Ze swej strony mogë obiecaê, ûe caîoôê honorarium uzyskanego
za ten artykuî postaram sië przekazaê na ten cel.