Szyfrowanie jest bardzo starym zajęciem. Od dawien dawna ludzie utajniali, niektóre informacje przed niepożądanymi osobami. Jednym z popularniejszych szyfrów, który przetrwał do dziś jest szyfr Gajusza Juliusza Cezara (inaczej szyfr przesuwający), rzymskiego wodza i polityka. Szyfry historyczne musiały umożliwiać szyfrowanie i deszyfrowanie przez człowieka, a więc opierać się na bardzo prostych operacjach.

Typowe i najbardziej znane szyfrowanie polega na zastąpieniu jednego znaku lub bloku znaków na inny ciąg w sposób liniowy na przykład: każdą literę a zamieniono na G. Przykładowo, przesuwając o 3 znaki w alfabecie łacińskim (bez polskich liter) litera A staje się literą D, litera B staje się literą E, E staje się H, L staje się O, a Y zamienia się w B.

Tekst jawny: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Szyfrogram:  DEFGHIJKLMNOPQRSTUVWXYZABC

Szyfry historyczne – szyfry proste lecz skuteczne jeżeli zależy nam na utrudnieniu dostępu do informacji lub dane, które chcemy zabezpieczyć nie są aż tak ważne by korzystać z algorytmów RSA, których użycie w tym wypadku byłoby nieopłacalne i czasochłonne. Jednak należy pamiętać, że współczesne maszyny są zdecydowanie szybsze od ludzi i potrafią złamać każdy szyfr tego typu w ciągu milisekund. Dopiero era komputerów przyniosła prawdziwą rewolucję w dziedzinie kryptografii. Powstały nowe algorytmy, szyfry oraz metody szyfrowania. Te ostatnie możemy podzielić na trzy grupy:

  • symetryczne szyfry strumieniowe
  • symetryczne szyfry blokowe
  • szyfry asymetryczne

Symetryczne szyfry strumieniowe – są to szyfry, których celem jest szyfrowanie każdego znaku w tekście z osobna. Znak jest przekształcany najczęściej z użyciem funkcji XOR na znak danych zaszyfrowanych. Wszystko odbywa się w locie. Nie jest konieczne oczekiwanie na bloki danych. Szyfry strumieniowe wykorzystuje się w telefonii komórkowej (szyfry A5/1, A5/2). Do takiej klasy szyfrów należą wszelkiego rodzaju szyfry polialfabetyczne i monoalfabetyczne (np. GA-DE-RY-PO-LU-KI). Np. zdanie: Ala ma kota po zaszyfrowaniu ma postać GUG MG IPTG.

Szyfrowanie

Symetryczne szyfry blokowe – są to procedury, które szyfrują niewielkie bloki danych (64 lub 128 bitów). Algorytm wykonuje kilka prostych przekształceń na blokach np. operacje dodawania, XOR, mnożenia modulo. Wystarczy kilka takich rund aby dane były trudne do analizy ponieważ takie szyfrowanie zaburza jakikolwiek porządek. Algorytmy tej klasy to np: DES, 3DES, AES, Blowfish, IDEA. Tekst po zaszyfrowaniu może wyglądać następująco:

Input bits: 01110100 01100101 01110011 01110100 01110100 01100101 01110011 01110100

Szyfry asymetryczne – są to szyfry wykorzystujące dwa klucze (publiczny i prywatny). Jeden z tych kluczy służy do szyfrowania, a drugi do deszyfrowania. Metoda takiego szyfrowania opiera się na pewnych trudnych operacjach matematycznych jak na przykład szukanie logarytmu dyskretnego (stosowane w systemie ElGamal). W algorytmach RSA stosuje się zasadę, że o wiele łatwiej pomnożyć jest dwie duże liczby pierwsze niż rozłożyć jedną dużą liczbę na dwie liczby pierwsze. Typowe rozmiary kluczy dla takich algorytmów wahają się w granicach 512 – 4096 bitów.

Metoda takiego szyfrowanie została wynaleziona w 1976 roku przez cywilnych badaczy Martina Hellmana, Whitfielda Diffie i niezależnie przez Ralpha Merkle. Jednakże dopiero u schyłku XX wieku brytyjska służba wywiadu elektronicznego GCHQ dała do wiadomości, że metody szyfrowania z kluczem publicznym zostały opracowane w 1965 roku przez jej pracownika Jamesa Ellisa. Ogłosili również, że działający system został stworzony w 1973 roku. Autorem równeż był pracownik GCHQ – Clifforda Cocks. Mimo tego odkrycia te były objęte klauzulą tajności do 1997 roku.

Obecnie na rynku kryptografia asymetryczna jest szeroko stosowana do komunikacji i przesyłania danych poprzez kanały o bardzo niskiej poufności (np. Internet). Metoda ta jest również stosowana w systemach elektronicznego uwierzytelniania, obsługi podpisów cyfrowych, szyfrowania poczty (OpenPGP).

Historia

Phil Zimmermann

PGP zostało zapoczątkowane w 1991 roku przez Philipa Zimmermanna, a nad jego dalszym rozwojem pracowało mnóstwo programistów z całego świata. Projekt PGP był rewolucyjnym wydarzeniem na całym świecie. Po raz pierwszy zwykły użytkownik dostał do ręki narzędzie, które zapewniało prywatność, wobec którego pozostawały bezradne nawet najlepiej wyposażone służby wywiadowcze.

Program PGP był bardzo popularny z takiego względu, że działał on na wielu platformach (DOS, Unix, MacOS i wiele innych). Dodatkowym atutem pierwszych wersji PGP był fakt, że program był za darmo rozprowadzany wraz z kodem źródłowym. Pozwoliło to na szybki rozwój całego projektu. Niestety od wersji 5.0, PGP stało się produktem komercyjnym, a w ostateczności zaprzestano rozwijać jego wersje na platformy uniksowe. Na szczęście jednak powstał standard OpenPGP i dzięki niemu niezależna implementacja pod nazwą GNU Privacy Guard (GPG).

Pierwsze wersje – pierwsze problemy patentowe
Pierwszą wersją PGP, która była powszechnie znana i stosowana była wersja opatrzona numerem 2.3a. Została ona wypuszczona w roku 1993. Aż do wersji 5.0 algorytm, który zarządzał kluczami był algorytmem RSA (klucze o wielkości 1024 bitów), a jako szyfr symetryczny służył algorytm IDEA. Funkcją jednokierunkową była bardzo popularna do dziś suma kontrolna MD5.

Wkrótce po pojawieniu się wersji 2.3a oraz bardzo szerokiego jej rozpowszechniania spowodowało, że firma RSA DSI Inc., będąca właścicielem patentu na algorytm RSA (Rivest-Shamir-Adleman) wytoczyła proces twórcy projektu o naruszenie praw autorskich. Proces zakończył się obustronną ugodą i był bezpośrednią przyczyną do napisania i wypuszczenia wersji 2.5, która zamiast napisanej przez Zimmermana implementacja RSA została zastąpiona bardzo podobną funkcjonalnie implementacją RSAREF. Legalna wersja zawierała szereg ograniczeń mających zmniejszyć kompatybilność ze starszymi wersjami.

Licencja, która obejmowała RSAREF zezwalała na bezpłatne korzystanie z algorytmu tylko do celów niekomercyjnych dlatego równolegle powstał projekt o nazwie ViaCrypt PGP, od nazwy firmy, która ją sprzedawała. PGP od wersji 2.5 posiadał już wiele nowych funkcji. Poprawione zostały błędy oraz pozwalała na generowanie kluczy RSA o długości 2048 bitów. Niedługo po wersji 2.5 pojawiły się kolejne opatrzone numerami od 2.6 do 2.6.3. Poprawiono w nich wiele błędów. Wersja 2.6 przyniosła również rewolucję w świetle prawa. Zmieniła się licencja PGP. Program pod swoje skrzydła wziął Massachusetts Institute of Technology, zapewniając mu dystrybucję oraz ochronę prawną.

Wersja międzynarodowa
Norweg Ståle Schumacher zaczął tworzyć i rozwijać międzynarodową wersję PGP od wersji 2.6. Pozbawiona ona była ograniczeń jakie nakładało RSA na amerykańską wersję 2.5. Wersja międzynarodowa posiadała zatem szybszą wersję algorytmu RSA oraz co najważniejsze była kompatybilna z wersjami z serii 2.2 oraz 2.3. PGP od wersji 2.6.3 było już praktycznie międzynarodowym standardem, który oferował darmowe oprogramowanie szyfrujące.

Philip Zimmerman założył firmę PGP Inc., której głównym produktem była najnowsza wersja PGP oznaczona numerem 5.0. Posiadała ona wiele unowocześnień jak nowy algorytm DSS/Diffie-Hellman, nowe i mocniejsze szyfry 3DES i CAST oraz MD5 zostało zastąpione przez SHA-1. Algorytm Diffie-Hellman, którego patent wygasł w 1997 roku, zostawał dodawany ze względów na ograniczenia patentowe nakładane przez RSA.

Jak PGP wyjechało z USA?
PGP powstało w USA i jakimś sposobem trafiło do Europy. Różne dziwne procedury i przepisy eksportowe USA (ITAR) uniemożliwiły prosty eksport kodu źródłowego programu. Na szczęście przepisy te regulują tylko zakaz eksportu w postaci elektronicznej, nigdzie nie jest wspomniane o eksporcie źródeł w formie papierowej. Logicznym następstwem takich niedopatrzeń było wydrukowanie kodu źródłowego w formie 14-to tomowej księgi wypuszczonej przez PGP Inc., a następnie wysłanie poza granice USA.

Ståle Schumacher

Ståle Schumacher – główny koordynator wersji międzynarodowej wraz z ponad 70 osobową załogą ludzi z całej Europy zeskanował kod PGP z książki do komputera. Zajęło to ponad 1000 godzin, ale dzięki temu ominięto wszelakie dziwne procedury, które mogły zatrzymać tak gwałtowny rozwój PGP. Dzięki tym wszystkim problemom patentowym istnieją trzy wersje PGP:

  1. Wersja, która może być wykorzystywana tylko w USA. Opiera się ona kod RSA Data Security, Inc. Nie może ona być eksportowana poza granice USA. Została opracowana z udziałem Phila Zimmermanna w MIT.
  2. Wersja komercyjna, opracowana przez firmę ViaCrypt na podstawie licencji Phila Zimmermanna. Dostępna jest ona również tylko w USA.
  3. Wersja międzynarodowa opracowana przez Stale Schumachera. Opiera się ona na implementacji algorytmu RSA napisanej poza USA, niezależnie od firmy RSA. Jest to jedyna wersja, której można używać legalnie na całym świecie.

Każda z tych wersji jest między sobą zgodna.

Network Associates Inc. PGP
Pod koniec 1998 roku firma PGP Inc. założona przez Zimmermana zostaje wykupiona przez Network Associates Inc.. Nie zmienia to jednak polityki wobec darmowej wersji PGP. Wykupienie firmy przynosi wiele zmian dla projektu. PGP staje się czymś więcej niż programem do szyfrowania poczty elektronicznej. Umożliwia on tworzenie szyfrowanych wirtualnych sieci prywatnych (PGPnet, implementacja IPSec), obsługę systemu X.509 oraz szyfrowanie dysków logicznych (PGPdisk). PGP staje się kompleksowym produktem do różnych zadań.

W 1998 roku w sierpniu zostaje pokazany dokument RFC 1991. Podpisał go Zimmerman wraz z dwiema osobami ściśle związanymi z rozwojem PGP (W. Stallings oraz D. Atkins). Dokument o tytule “PGP Message Exchange Formats” zawiera formalne specyfikacje formatu używanego przez PGP w wersjach z serii 2. W listopadzie tego samego roku zostaje wydany dokument RFC 2440 podpisany przez 4 osoby (J. Callas, L. Donnerhacke, H. Finney, R. Thayer) o tytule “OpenPGP Message Format”. Dokument ten zawiera opis standardu “OpenPGP”, który jest kompatybilny z PGP 5.0 oraz ze starszymi wersjami. PGP w wersji 5.0 ukazało się w dwóch wersjach: komercyjnej (PGP for Privacy) oraz darmowej (PGP Freeware).

Ciesząca się do dziś ogromną popularnością wersja PGP 2.6.3 była dostępna na wiele systemów operacyjnych (kilkadziesiąt systemów Uniksowych, Windows, Amiga, Atart, BeOS, Macintosh, MSDOS, OS/2) natomiast pierwsza wersja 5.0 już tylko na Windowsa, Macintosha oraz systemy uniksowe. Każda następna wersja programu była już tylko dostępna na Windows i Macintosh. Wersja 5.0, która była dostępna między innymi na systemy Uniksowe zawierała wiele błędów. Poprawki jakie wyszły w wersji 5.5 nie zostały wydane na Uniksa. W 1999 została opublikowana wersja 6.5.1 dla Linuksa. Autorzy wrócili do starej koncepcji monolitycznego programu ze składnią poleceń bardzo podobną do tej, która była w wersji 2.6.3i.

Kolejne lata pracy firma NAI pracowała i tworzyła PGP z nastawieniem na klientów biznesowych. Wersje programu jakie się wtedy pojawiały zawierały szereg funkcji dodatkowych poza samym szyfrowaniem poczty. Wbudowano oprogramowanie do tworzenia VPNów oraz zabezpieczenia systemu Windows. PGP w wersji 7.0 było już produktem czysto biznesowym.

OpenPGP.org
W 2001 roku a dokładnie w maju Phil Zimmerman opuszcza NAI. Swoje odejście tłumaczy własnymi wizjami na temat przyszłości PGP. W tym samym roku zaczyna pracować w firmie Hush Communications, która oferuje klientom bezpieczne konta pocztowe. Phil tworzy niedochodowe stowarzyszenie firm i grup rozwijających kompatybilne z PGP oprogramowanie pod nazwą OpenPGP Alliance. Rok później NAI ogłasza koniec komercyjnego wsparcia dla PGP Desktop. Tego samego roku w sierpniu NAI sprzedaje swoje produkty nowo powstałej firmie PGP Corporation.

Nowa firma kontynuuje produkt i pracuje nad wersją PGP 8.0. Nowa wersja będzie posiadała pełne wsparcie dla systemów Windows XP oraz MacOS X. Sztandarowym produktem ma być PGPdisk. PGP Corporation oświadczyło, że program PGP ma być dostępny za darmo do zastosowań niekomercyjnych i dostarczany z całym kodem źródłowym.

Alternatywy
Natomiast od grudnia 1997 roku rozwijany jest program, który ma być powszechnie dostępną alternatywą dla komercyjnego PGP. Robocza nazwa projektu G10 przekształca się w GNU Privacy Guard. Projekt zostaje obięty ochrona prawną przez Free Software Foundation. GPG staje się do dziś najlepszą alternatywą dla PGP dla użytkowników uniksowych. Powstają również wersje pod Windows oraz różne nakładki graficzne i pluginy do programów pocztowych.

Prace nad pierwszą wersją GnuPG rozpoczął Werner Koch. Pierwsza oficjalna wersja ukazała się 7 września w 1999 roku. W 2000 roku Federal Ministry of Economics and Technology w Niemczech, wzięło opiekę nad projektem i przepisało GPG na systemy Windows. Wersja 1.4.4 została wydana 25 czerwca 2006 roku.

Co to jest PGP/GPG?

PGP (Pretty Good Privacy) – co w wolnym tłumaczeniu z języka angielskiego oznacza Całkiem Niezła Prywatność jest jednym z najpopularniejszych narzędzi do szyfrowania poczty elektronicznej, różnego rodzaju danych, informacji i przechowywania ich w postaci elektronicznej. Jest to bardzo zaawansowany system kryptograficzny przeznaczony dla wielu systemów operacyjnych (MS-DOS, UNIX, VAX/VMS, Windows i wiele innych).

PGP pozwala na szyfrowanie, deszyfrowanie, podpisywanie cyfrowo, weryfikowanie autentyczności nadawcy naszej poczty elektronicznej za pomocą technik podpisu cyfrowego. PGP pozwala nam również na zarządzanie kluczami publicznymi oraz prywatnymi. Obecnie istnieje wiele nakładek na PGP dodających programowi większe możliwości: szyfrowanie partycji na dysku. Powstało też wiele dodatków i pluginów do programów pocztowych, aby w prosty sposób z klienta poczty wysyłać i odbierać zaszyfrowane przy pomocy PGP wiadomości.

PGP może być wykorzystywane do celów darmowych jak i komercyjnych. PGP jest uznawane do dziś za jeden z najbardziej trudnych do złamania szyfrów i praktycznie do dziś nie udało się nikomu tego złamać Jest na tyle bezpiecznym systemem kryptograficznym, że do wymiany kluczy nie potrzebne są żadne bezpieczne kanały łączności.

GPG (GNU Privacy Guard) – co z języka angielskiego oznacza Strażnik Prywatności GNU jest wolnym odpowiednikiem udostępnianym na licencji GPL oprogramowania kryptograficznego PGP. GPG dzięki standardowi OpenPGP może bez problemu współpracować z PGP. Niestety nie wszystkie funkcje dodawane w nowszym oprogramowaniu są wspierane przez jego starsze wersje. GPG jest bardzo stabilnym programem dodawanym do wielu dystrybucji Linuksa oraz systemów BSD (FreeBSD, OpenBSD czy NetBSD).

GPG działa również na takich systemach jak Mac OS X (MacGPG oparty o interfejs OS X) i Microsoft Windows. GPG działa jako program uruchamiany z linii poleceń. Dla użytkowników lubiących graficzne interfejsy powstało wiele nakładek graficznych na przykład KGpg. GPG zostało także zintegrowane z wieloma programami pocztowymi takimi jak KMail i Evolution. Dla produktów Mozilli została stworzona wtyczka enigmail. Współpracuje ona z takimi programami jak Thunderbird, Seamonkey i Mozilla / Netscape.

Standard OpenPGP nie uwzględnia mechanizmu wtyczek a przy tworzeniu enigmail nie brali udziału twórcy GPG oraz OpenPGP, to istnieje możliwość utraty poziomu bezpieczeństwa jakie zapewnia nam GPG czy PGP.

GPG wykorzystuje troszkę inne algorytmy niż te, które są w PGP. Dzieję się tak dlatego, że GPG można dowolnie rozprowadzać zatem ze względów patentowych wykorzystanie algorytmu IDEA, który jest praktycznie od samego początku w PGP, jest niemożliwe. W zamian za to wykorzystuje się inne algorytmy takie jak 3DES. Istnieją wtyczki, które umożliwiają korzystanie z algorytmu IDEA, ale mogą one wpłynąć na bezpieczeństwo GPG, gdyż nie są opisane w standardzie OpenPGP. Niemniej jednak współczesne wersje programów przechodzą powoli na znacznie silniejszy i pozbawiony problemów patentowych algorytm AES.

Obsługiwane algorytmy:

  • funkcje skrótu: MD5, SHA-1, RIPEMD160, TIGER, SHA256, SHA384, SHA512
  • asymetryczne: RSA, ElGamal, DSA, RSA-E, RSA-S
  • symetryczne: AES, AES192, AES256, 3DES, Blowfish, Twofish, CAST5, IDEA (opcjonalnie)
  • kompresji: ZIP, ZLIB, BZIP2

Jak to działa?
W klasycznych szyfrach do utajnienia wykorzystuje się jeden klucz – hasło. Klucz taki musi być zatem znany obu stronom (osobie szyfrującej i deszyfrującej), aby umożliwić między nimi komunikację. Taki klucz musi być zatem przesłany z użyciem kanału bezpiecznego (zapewniającego poufność i integralność). W przeciwnym razie istnieje możliwość przechwycenia klucza przez osoby niepowołane, co w gruncie rzeczy daje możliwość tym osobom do odczytywania jak i podrabiania szyfrowanych wiadomości.

Metoda jaką wykorzystuje PGP / GPG jest zupełnie odmienna. Jeden klucz – hasło został zastąpiony przez parę kluczy: publiczny i prywatny. Jeden z nich służy do szyfrowania a drugi do deszyfracji. Znajomość klucza szyfrującego nie wystarczy do deszyfracji danych, ani do odtworzenia klucza deszyfrującego i na odwrót. Efekt taki osiągnięto dzięki bardzo dużym liczbom pierwszym. Klucz deszyfrujący bazuje na parze dużych liczb pierwszych, a klucz szyfrujący na ich iloczynie. Znajomość iloczynu tych liczb jest zbyt małą informacją by wyszukać te liczby. Dla najszybszych komputerów zajmuje to całe setki lat!

Klucz publiczny jest kluczem szyfrującym. Jego nazwa wzięła się z tytułu tego iż powinien być dostępny dla wszystkich. Osoba chcąca wysłać zaszyfrowaną wiadomość do właściciela klucza szyfruje ją kluczem publicznym. Wiadomość taką można rozszyfrować tylko odpowiednim kluczem prywatnym. Klucz publiczny i prywatny danego użytkownika stanowią unikalną parę, tak że nawet osoba szyfrująca list czyimś kluczem publicznym nie może go przeczytać. Przykładowy klucz publiczny wygląda następująco:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2 (GNU/Linux)

mQGiBEG1qFERBADB9rUSpJRCxbdGTJXqaY+EWMP3CyrK0dA0hnw125MCJplEIGzG
1GimIE1bn2YUg3lLBiLI6S2TN2y2kSAMOq/srbo9AdPCmxZ0qW7dLbhmlMttSBy2
qqZtA6ndgjv7O5BRCtrfsdRfHSa6Wqfaz6fPUYBXi/q8bUVf7+RAl2paBwCg/miQ
2+cyKNCEURTHL18bD6It0bkEAJXJHrJi/UxFrZUaHsa4vChfvYihiN0thixeL+I4
o11QRo0jaIVUD5/HuHsNp+i+ZDJwMq+G9piv6EWSNhDWDwXT0hsrc7jVL4P1Zycs
LXGQiX1YUqg9HtxZyLLogFw9S3kXmpoDyf/YO7LTSQpE/QLHX7cb1Rz2RcYsgBhY
u+HKA/9p+SFQrVAYeESS3lkLP64t8hBNWzwp7RB6dSO7wc7fqOlNtAo00gmu+jeY
bN3rqHpeoG6OLr8kDP7iSA/wS459Sk+pemFMBl+lPYLjfjtdBC8pKd4uqN4oVonA
g8CnOtCOIBYIyp/w6CK2Cp+4stXsHdjmneRz8KO3rvSI63UYjbQrS2FtaWwgUG9y
ZW1iacWEc2tpIDxwYXN6Y3pha0B0aGVjYW1lbHMub3JnPohbBBMRAgAbBQJBtahR
BgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEC+GBmpelKtEXgIAoJlpPlwv1JQdapEN
gSdSyASWadxzAKDTa62RUdEEZJO2L+YvgklLwcqlUIhbBBMRAgAbBQJBtahRBgsJ
CAcDAgMVAgMDFgIBAh4BAheAAAoJEC+GBmpelKtEXgIAn2n5SttPJde+9eap+URi
dIhwMkQpAJ4/hkKnILjVN1QdtMiSSzMSG9S11ohGBBARAgAGBQJEYPAAAAoJEMDC
IHnBylnuj4cAn0+pnNWdxC+FXKEQj199eTg0PMpvAJwPwLQ3ok2+pA/PD+5nfI7C
yPpxNIhGBBARAgAGBQJEaPLTAAoJELrXhGctbPVQm/oAmwdhpvcyUc3rSd3oS345
ujD0l/71AJwJ0hlkyusXb/Dg9X9XnmpmxvEKMrkBDQRBtahREAQAnN6u3kGgJ2ht
56wDx2s8JqxYM5zJvkrm4zJQgKCNks/MCTuPK7DrlMujR20c15CXV8eTubnop0wK
sJ8ZgcjLa+Gtr42+7cF219NcVtc4dcZ7IeKp8Y/dxi1PkxTZm/YrWrq55PpCV4in
KL/yHTdsiCig1edEp/qNK96xdAvRIRsAAwUD/18wkZzH73ZtZCq4pcwzOH9jJIgy
SRmky3VNxlZNwnJTyFOl1JP0MKtnIIdwA4lW79wMM0rJ72+owjX813CKe0rzRdEy
bT/5JenCpxT69RccnWq1FxhPFZPGoHYWZlr65kpD87EBtXr/KxJrcCT9QJfSJwS1
rqmPL4fKDkKyGPOfiEYEGBECAAYFAkG1qFEACgkQL4YGal6Uq0T4hwCeI5a95xhv
oxLNGlgQQVPrBx1CwUUAoPkga1y65EjlDNb9KM/A9ny5Hx8j
=gjG1
-----END PGP PUBLIC KEY BLOCK-----

Klucz prywatny wygląda bardzo podobnie:

-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1.4.2 (GNU/Linux)

lQHhBESq2wIRBACHP+TssoIVEYoSJq3iRgwOkR2/VEBJSd2q94zxNWtw7N4SHii/
BN0SexjW63g+kxRd7718u30z1GTUUJnG0MXwKPiY2WXTB2m+gFoqkH1H/uCYzE3R
y/jmxgI7DtZwIoV6yPooj9QUV7MviyAXdt8mLohVjYUuE8jiRnO1WiBVKwCgmeAR
3q5iMoYXEFDm8T2BBsMFv+8D/R7xuAAzjQnRsupbYt2ya08IC5vdaPevZcQlPRSN
S0Ss7j1C7fFNomzQDixs9UaBaRObh/fY2fSVZQahNkV28waxqX/twXHpIeLEKG7H
dTWsWlMnrl/ypLYHtln/lZbyi2BcOCUwKV6agFQR9ENdgc0/7Lo8prLrrAFa/Xfi
TMTIA/0T3wZWfXK8r6Qm1ExfIA+dG4ObPhPZTeXvv3vzldLLs5N7X93VaKkzhA6j
g+4t422j/iXokXYzjtDJTKl4fe/lZdrQ+tVWwQRY0qET6xe6wsKK2L4V3qo/NS51
2PCp/Jn18zO0XvPyFXSO1JOla/m+Xv4FDg/chwhB+958+2X88P4DAwJd21FeCL+K
OmAa/0cxoHIZLB8AywlfkX5fySfufLKNiZ3sRH0RXWGgIJNG1Ej4Sy/gqYg5xoHM
wfcUYLQca2x1Y3ogdGVzdG93eSA8dGVzdEB0ZXN0LnBsPohjBBMRAgAjBQJEqtsC
BQkAAVGABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ4/LXGUi3Xoo7NgCeLDuu
RVI9s4SeURjf316us8l5kRsAnA5XDzorZj/LhuCisb2nUz+ZPk8onQFYBESq2wMQ
BACQ9QEgqbWpQKxuLloVAGHCEKySu/ZIwJpCexBBkMsBIw3f49zLSRuh6UMHVc6s
0C421LhxNSBxni1b9lZ7rCb9Qg3x8FShxT6Ug0zFM+88PCnqvUWrExgyxLuApqbg
rLtMzDZm9Mk5f2LcqXQRSIGM22WWgQ2byK63VkPSEg8/BwADBQP7BCh0vcSgII6Z
11MvVxWKnrJgkXHkJJ4zGYb1oeNSRBWYSypiXugJC7kmelR0pcAzfn+jR5rTRnYp
+uvlkmluOxyFxPbj0XB3WlOXWGH8vR8ZsrMcQFLIepnDyaxcDJP9EgMDcUuH95Y3
BL3hnaewLf42Q6+Xph+vhXAD6USQeCf+AwMCXdtRXgi/ijpgwcmwu5CI6vou9+uD
aSeco5xOt4wIY+BRfoA3STdTA7LxQ3qPgId6g0KFDWwnyiCaxtWyzvdAChOSv5n5
nSyITAQYEQIADAUCRKrbAwUJAAFRgAAKCRDj8tcZSLdeinsIAJ0aBBCBXlj4AYPw
rOEEqesu/ZI5BQCfRd0jduhgaDWs3sQdCWsvmcaTIwA=
=Nt2l
-----END PGP PRIVATE KEY BLOCK-----

Każda para kluczy jest unikalna, pasującą tylko do siebie. Dzięki temu możliwe jest również cyfrowe podpisywanie listów. Kiedy w procesie szyfrowania wykorzystamy klucz prywatny to wiadomość będzie można odszyfrować tylko kluczem publicznym pasującym do klucza prywatnego. Dzięki temu odbiorca będzie pewien, że dostaje wiadomość od pożądanej przez niego osoby. Oczywiście nic nie stoi na przeszkodzie, aby obie funkcje: szyfrowanie i podpisanie cyfrowe, nie wykorzystać do jednej wiadomości. Najpierw list podpisuje się kluczem prywatnym nadawcy, a potem szyfruje się kluczem publicznym odbiorcy. Odbiorca odwraca ten proces. Wszystkie kroki wykonuje za nas program automatycznie.

Szyfrowanie kluczem publicznym mogłoby być bardzo wolną czynnością, dlatego dla zwiększenia szybkości wolnego algorytmu szyfrowania kluczem publicznym wykorzystuje się małą sztuczkę. Wiadomość jest szyfrowana znacznie szybszym szyfrem, który wykorzystuje jeden klucz. Losowana jest 128-bitowa liczba, tworzona za każdym razem, kiedy szyfrujemy w ten sposób wiadomość. Wiadomość jest szyfrowana na przykład za pomocą algorytmu IDEA. Następnie program szyfruje sam klucz za pomocą klucza prywatnego i dołącza go do zaszyfrowanej wiadomości. Odbiorca używając swojego klucza prywatnego odzyskuje losowy klucz, którym następnie może odszyfrować wiadomość.

Budowę klucza publicznego można przedstawić w następujący sposób:

[userID][datownik][właściwy klucz]

W pierwszym rzędzie mamy identyfikator użytkownika (userID). Najczęściej składa się on z imienia, nazwiska oraz adresu e-maol. Następnie mamy datownik określający czas stworzenia klucza, a na samym końcu właściwy klucz. Klucze prywatne mają taką samą budowę. Jedynie ze względów bezpieczeństwa są one zaszyfrowane hasłem. Chroni to klucz w przypadku kiedy dostanie się on w niepowołane ręce.

Klucze są przechowywane w dwóch bazach kluczy: publicznej i prywatnej. Możliwy jest eksport kluczy do postaci pliku, na przykład w celu wymiany kluczami publicznymi. Klucz jest również opisany za pomocą identyfikatora (liczby), która jest skrótem samego klucza (64 najmniej znaczące bity klucza). Podczas pracy z kluczami wyświetlane są tylko 32 bity identyfikatora. Często się zdarza, że różne klucze mogą mieć ten sam identyfikator (ponieważ widzimy tylko 32 bity identyfikatora), to w praktyce nie ma dwóch kluczy o tym samym identyfikatorze.

W przypadku tworzenia podpisów cyfrowych zwanych dalej sygnaturami PGP używa się algorytmu skracania tekstu (MD5), który jest jego 128 bitową funkcją jednokierunkową. Jest ona analogiczna w swoim działaniu do wszystkich algorytmów sum kontrolnych i CRC, jednoznacznie odzwierciedlających zawartość tekstu.

Nie jest możliwe zmienienie zawartości tekstu bez wprowadzania zmian w sygnaturze. Sygnatura jest szyfrowana tajnym kluczem autora tekstu. Taki dokument jest sygnowany przed dodanie na początku userID, skrót tekstu oraz datownik. Przy sprawdzaniu wiadomości przez odbiorcę program na podstawie identyfikatora klucza stwierdza autorstwo nadawcy. Każdy plik, który jest zaszyfrowany przy pomocy PGP / GPG, na swoim początku zawiera identyfikator klucza publicznego który został użyty do zaszyfrowania go. Dzięki temu program w łatwy i szybki sposób może odnaleźć klucz prywatny służący do deszyfracji. Pamiętajmy, że nic nie stoi nam na przeszkodzie, aby posiadać więcej niż jeden klucz prywatny

Zastosowanie
Aby zachować prywatność wysyłając listy do znajomych, dziewczyny, czy naszego pracownika. GGP daje Ci prywatność jakiej nie może zapewnić żadne inne darmowe oprogramowanie. Nieważne co wysyłasz pocztą. Czy są to kucharskie przepisy, czy tajne plany Twojej firmy, na pewno nie chciałbyś, by Twoja prywatna poczta elektroniczna była czytana przez kogoś innego. I nie ma w tym nic złego. Każdy chce zachować jakąś prywatność. Wysyłając list wkładamy go do koperty szczelnie zamykając, aby nikt go nie przeczytał.

A co robimy z naszą pocztą elektroniczną? Wysyłamy nie dbając o zachowanie prywatności. A przecież wystarczy sięgnąć po darmowe oprogramowanie, które w sposób bezpieczny gwarantuje, że przeczyta je tylko wskazany odbiorca. Ale to nie wszystko co możesz zyskać.

Programy tego typu pozwalają również na szyfrowanie plików lub całych folderów bez względu jaki one mają format. Dzięki temu możesz przesyłać zaszyfrowane załączniki, dokumenty lub trzymać je na dysku nie martwiąc się o to, że ktoś wykradnie z nich jakieś informacje.

PGP oraz GPG zapewniają również potwierdzenie autentyczności osoby, z którą korespondujesz. Czasem bardziej nam zależy, aby nasze informacje trafiły do danej osoby, niż zaszyfrowanie samej treści przekazu. Programy te umożliwiają składanie elektronicznego podpisu zapewniając wiarygodność rozmówcy.

Więcej można przeczytać na stronie: Pretty Good Privacy czyli kryptografia publiczna dla mas – Po co mi PGP?.

Jak zacząć?
PGP zarówno jak i GPG jest dostępne na wielu serwerach zwierciadlanych oraz na stronach domowych każdego projektu. Dostępne są wersje źródłowe jaki i gotowe pliki binarne. Na serwerach znajdziemy wersje dla Uniksa oraz VMS w postaci wersji źródłowej napisanej w C oraz wersje binarne dla MD-DOSa, czy Macintosha.

W niektórych dystrybucjach Linuksa, GPG jest dodawane domyślnie na płytach CD / DVD wraz z innymi pakietami. W takich dystrybucjach jak Ubuntu, Fedora czy Mandriva mamy menadżerów pakietów, którzy po wydaniu odpowiedniej komendy sami ściągną i zainstalują najnowszą wersję GPG.

Instalacja PGP / GPG nie różni się niczym od instalacji innych programów. Jeżeli ściągniemy wersję binarną musimy ją odpakować i skopiować do katalogu. Program jest gotowy do użycia. W przypadku paczek instalujemy je za pomocą menadżerów pakietów. Wersje źródłowe najpierw rozpakowujemy a potem należy je skompilować.

Bezpieczeństwo
Każdy użytkownik, który zdaje sobie sprawę z bezpieczeństwa wie, że nie ma idealnego systemu, którego nie da się złamać. Tak samo jest z PGP czy GPG. Najsłabszym punktem całego systemu jest jak zwykle głupota ludzka. Jeżeli użytkownik systemu nie dba we właściwy sposób o tajność swojego klucza prywatnego, założył na nie zbyt proste hasło lub przechowuje klucz na komputerze, do którego ma wiele osób dostęp to PGP / GPG nie zapewni mu prywatności.

Klucz prywatny możemy trzymać na zewnętrznych napędach takich jak dyskietka czy pendrive w celu zminimalizowania wykradzenia tego klucza. Ujawnianie hasła lub samo publikowanie klucza prywatnego jest poważnym błędem. Pamiętajmy, że przy każdej operacji przy pomocy klucza prywatnego jesteśmy proszeni o hasło. Bez niego operacja się nie uda. I to właśnie hasło jest jedyną rzeczą w całym systemie, której nie można zapisywać na kartkach papieru naklejonych na monitor, czy zapisywać na dysku twardym. Powinno ono zostać w naszej głowie, która jest ostateczną barierą chroniącą Twoją prywatność.

Potencjalnie najsłabszym punktem całego systemu są rzeczy, które nie są bezpośrednio związane z programem. Różnego rodzaju czynniki zewnętrzne jak: wirusy, robaki, konie trojańskie, keyloggery, sniffery i innego rodzaju złośliwe programy, które bez naszej wiedzy mogą zdobyć hasło do klucza prywatnego lub sam klucz. Wszelkiego rodzaju zagrożenia jakie wynikają z pracy na wielodostępowych maszynach, błędy zabezpieczenia sieci mogą przyczynić się do zmniejszenia bezpieczeństwa korzystania z PGP / GPG.

Bezpieczeństwo PGP zależy również w dużej mierze od nas samych. W czasie tworzenia pary kluczy mamy możliwość określenia ich wielkości od 768 do 4096 bitów. Wielkość ta określa z ilu znaków ma się składać klucz. Im jest ona większa tym klucz jest bezpieczniejszy. Próba złamania takiego klucza metodą brute force składa się na sprawdzeniu wszystkich możliwych kombinacji. Oczywiście im większy jest klucz tym większa liczba kombinacji, obliczeń musi być wykonana do złamania takiego klucza.

Rodzaj maszyny Czas potrzeby do rozszyfrowania klucza o długości
100 bitów 500 bitów 1000 i więcej bitów
stary PC (32 MB RAMu, CPU ~ 133 MHz) 50 dni 105lat 101000000 lat
wysokiej klasy PC (1024 MB RAMu, CPU ~ 2 GHz) kilka dni 5 000 lat 1012lat
komputer obliczeniowy kilka godzin 500 lat 108lat
superkomputer pokroju BlueGene kilkadziestąt minut 5 lat 105lat

Jak widać powyżej próby łamania małego klucza trwają bardzo długo, co w większości przypadków może zniechęcić do podglądania naszych informacji. Posiadanie klucza długości 1024 bitów lub większej praktycznie daje nam pewność, że nikt nie złamie naszej prywatności. Ten system szyfrowania daje nam za darmo bardzo potężną i praktycznie nie do złamania ochronę naszych informacji.

Metoda złamania szyfru RSA, która polega na odtworzeniu klucza prywatnego na podstawie klucza publicznego (który jest łatwo dostępny), polega na faktoryzacji, czyli rozłożenia dużej liczby, będącej iloczynem dwóch liczb pierwszych, na czynniki pierwsze. O ile w przypadku małych liczb (kilku cyfrowych) zadanie jest proste to w przypadku rzędu 150 i więcej cyfr, zadanie staje się matematycznie trudne.

Aktualnie znane metody matematyczne nie znają szybszej metody niż faktoryzacja. Również nie zostało jeszcze udowodnione, że to działanie musi być działaniem trudnym, stąd teoretycznie jest możliwe, że w dowolnej chwili możemy się przekonać, że istnieje metoda faktoryzacji znacznie szybsza i mniej czasochłonna.

Gdyby tak się okazało szyfr RSA, PGP, GPG stały by się znacznie mniej bezpieczne. Obecnie najszybszym algorytmem faktoryzacji jest algorytm GNFS (General Number Field Sieve), który posłużył do złamania liczby RSA-567 (193 cyfry dziesiętne). Niektórzy twierdzą, że National Security Agency (NSA) posiada metody szybszej faktoryzacji i stosuje je do własnych celów. Z drugiej jednak strony możliwe jest, że jakiś geniusz matematyczny udowodni, że faktoryzacja jest bardzo skomplikowanym działaniem, co praktycznie na zawsze pozwoli nam mówić, że szyfr RSA jest szyfrem nie do złamania.

Ale po co to całe łamanie szyfru RSA, jeżeli do odkodowania wiadomości wystarczy nam znajomość klucza. Wiadomość jest przecież szyfrowana klasycznym szyfrem z jednym tajnym kluczem. Na szczęście jednak tradycyjne algorytmy osiągnęły tak wysoki poziom doskonałości, że praktycznie nie poddają się żadnej znanej metodzie kryptoanalitycznej – na przykład porównywaniu tekstu zaszyfrowanego z tekstem jawnym. Jedyną metodą, która daje jakieś efekty jest już wcześniej wspomniana metoda Brute Force. Współczesne przeciętne komputery pozwalają na złamanie tych szyfrów przy krótkiej długości klucza, jednak kto stosuje takie klucze? O złamaniu 128 bitowego szyfru IDEA nie ma co marzyć, nie mówiąc już o 1024 bitowym kluczu RSA, dlatego do dziś PGP pozostaje najbezpieczniejszym szyfrem na świecie.

Ale czy na pewno? 20 marca 2001 roku grupa kryptologów z czeskiej firmy Decros ogłosiła odkrycie poważnego błędu w programie PGP. Błąd dotyczył możliwości ujawnienia klucza prywatnego, a właściwie jego części służącej do podpisywania wiadomości, przy spełnieniu odpowiednich i dość specyficznych warunków.

Błąd polega na fakcie, że program nie sprawdza integralności pliku z kluczem. Metoda odkrycia klucza polega na podmienieniu oryginalnego klucza, kluczem odpowiednio spreparowanym a następnie przechwycenie wiadomości, która użytkownik podpisał tym fałszywym kluczem. Na podstawie wiadomości można w ciągu kilku sekund obliczyć prawdziwy klucz. Niemniej jednak taka operacja jest trudna, gdyż wymaga szerokiego zakresu dostępu do komputera, na którym znajduje się klucz prywatny w celu jego podmiany.

Kolejnym krokiem jest przechwycenie wiadomości. Zastanawia mnie jeden fakt. Skoro, aby wyliczyć klucz prywatny należy mieć dostęp do komputera, gdzie on jest przetrzymywany, to czy nie prościej jest założyć keylogger, który przechwyci jego hasło a następnie wykraść sam klucz?

Dobrą metodą zabezpieczenia się przed tego typu atakami jest przechowywanie klucza na zabezpieczonym przed zapisem i schowanym w bezpiecznym miejscu pendrive. Taki sposób przechowywania klucza jest zalecany w dokumentacji PGP od pierwszych wersji. Działanie kryptologów z Decrosa ma na celu uświadomienie użytkowników, że klucze prywatne powinny być przechowywane w bezpiecznym miejscu. Co prawda kolejne wersje programu wyeliminowały ten problem, ale fakt bezpieczeństwa nadal zależy w głównej mierze od nas samych. Kryptolodzy pokazali, że ich metoda może być wykorzystana w każdym programie, który wykorzystuje podpisy elektroniczne oparte o algorytmy RSA i DSA.

W takim razie co robić kiedy doszło do ujawnienia naszego klucza prywatnego? W przypadku kiedy mamy podejrzenia, że ktoś zna nasze hasło PGP posiada odpowiednie mechanizmy reagowania na takie przypadki. Należy wygenerować odpowiednie zawiadomienie, które oznajmia, że dany klucz został odtajniony. Służy do tego odpowiednie polecenie:

pgp -kd nazwa_uzytkownika
gpg --gen-revoke nazwa_uzytkownika

Zostaniemy spytani o powód generowania certyfikatu unieważnienia klucza. GPG podaje sam kilka powodów:

  0 = nie podano przyczyny
  1 = klucz został skompromitowany
  2 = klucz został zastąpiony
  3 = klucz nie jest już używany
  Q = Anuluj

Na sam koniec zostaniemy poproszeni o hasło w celu odblokowania klucza prywatnego i wygenerowania certyfikatu. Certyfikat należy rozesłać do jak największej liczby osób, która może posiadać nasze klucze publiczne. Przykładowy certyfikat wygląda tak:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2 (GNU/Linux)
Comment: A revocation certificate should follow

iEkEIBECAAkFAkS3lIoCHQIACgkQzBZCpYdFX5AY+gCcCYIzT6szsGO4Q4L+sXpn
T+bGhO0An126wJzM2yI193H5CTdxWZkPgbbT
=2hMQ
-----END PGP PUBLIC KEY BLOCK-----

Każdy kto otrzyma taki certyfikat zablokuje kopię Twojego klucza publicznego przed ewentualnym użyciem. W przypadku odtajnienia klucza prywatnego dobrym posunięciem będzie wygenerowanie nowej pary kluczy. Tej samej metody można użyć do unieważnienia starego klucza lub w przypadku innych powodów. Jednak co robić w przypadku kiedy jedyna nasza kopia klucza prywatnego została uszkodzona w wyniku błędów systemu plików, lub przypadkiem skasowana.

Wygenerowanie certyfikatu unieważniającego klucze publiczne będzie niemożliwa, gdyż potrzebujemy do tego działającego klucza prywatnego. Pozostaje nam powiadomić słownie znajomych, aby w swojej bazie unieważnili klucze publiczne. Każdy z nich musi ręcznie zablokować kopię Twojego klucza publicznego. Taka operacja nie pozwoli już na odblokowanie klucza publicznego. Ma to na celu zatrzymaniu rozpowszechniania nieważnego klucza publicznego.

Zawsze możemy jednak ochronić nasze klucze publiczne przed sfałszowaniem. System kryptografii asymetrycznej cechuje się tym, że nie potrzeba chronić, czy szyfrować klucz publiczny a wręcz przeciwnie. Należy je wszędzie rozpowszechniać. Jedynym problemem jest zapewnienie im autentyczności i wiarygodności, że należy od rzeczywiście do osoby, której imię, nazwisko i mail figurują w kluczu. Jest to jeden ze słabszych punktów całego systemu, przed którym można się obronić dzięki Key Signing Party.

Ale nie wszystko jest tak niebezpieczne jak to malują. PGP bowiem samo potrafi sprawdzić wiarygodność klucza. Program sam sprawdzi, każdy klucz pod względem wiarygodnych sygnatur. Jedyne co należy do użytkownika to decydowanie, którym osobom chcemy i jak bardzo chcemy ufać. Program do ustalenia, które klucze są wiarygodne kieruje się dwoma odrębnymi kryteriami:

  1. Sprawdzenie, czy klucz rzeczywiście należy do tego, którego dane zapisane są w kluczu i czy został ten klucz podpisany przez zaufaną osobę.
  2. Czy klucz należy do osoby, której możesz zaufać jako sygnatorowi nowych kluczy?

O ile na pierwsze kryterium program sam potrafi udzielić odpowiedzi to na drugie potrzebuje już naszej pomocy. Na podstawie odpowiedzi jakie mu udzielimy, automatycznie zostaną uzupełnione również odpowiedzi na pierwsze pytania co do innych kluczy podpisanych przez posiadacza akurat sprawdzanego klucza. Klucz uznawany przez PGP/GPG za dobry i wiarygodny to taki, który został poświadczony przez zaufaną osobę jej kluczem prywatnym. Klucze publiczne tych zaufanych osób muszą być z koleji podpisane przez Ciebie lub inne zaufane osoby.

Zaufanie co do osoby świadczącej inne klucze nie ma na celu odzwierciedlać Twojej opinii na temat osoby a na jej kompetencji i odpowiedzialności do zarządzania kluczami. Program rozróżnia kilka typów zaufania:

  • Brak zaufania
  • Nieznane zaufanie
  • Marginalne
  • Pełne
  • Absolutne

Ponieważ poziom zaufania jest naszym prywatnym wyborem nie jest on kopiowany podczas eksportu kluczy. Każdy stopień zaufania ma swoją wagę (możemy te wagi zmieniać) na podstawie, których program wylicza wiarygodność klucza. Twój klucz prywatny ma zawsze status klucza w pełni zaufanego i nie potrzebuje dodatkowych podpisów od osób trzecich. Z biegiem czasu każdy z użytkowników zdobywa coraz większą liczbę kluczy publicznych oraz podpisów od innych osób. W ten sposób klucz publiczny jednej osoby jest podpisany przez wiele osób stając się bardziej zaufanym kluczem.

Podejście do poziomu zaufania jest zupełnie inne niż w przypadku Privacy Enhanced Mail, gdzie poziom zaufania ustalają Urzędnicy Certyfikujący pokazując komu masz ufać. W PGP / GPG sam możesz określać komu ufać a komu nie.

A co z kluczem prywatnym? Przecież to on jest najważniejszym punktem całego systemu a jego ochrona stanowi podstawowy warunek bezpieczeństwa Twoich danych. Jeżeli zdarzy się, że klucz prywatny zostanie ujawniony to ostatnią naszą barierą jest posiadanie trudnego hasła, które go chroni. Ale co zrobić, aby nie doszło do wykradzenia klucza? Dobrym pomysłem jest trzymanie go na własnym komputerze, do którego my mamy dostęp. Niebezpieczne jest przechowywanie klucza na zdalnych serwerach lub innych komputerach wielodostępowych. Każdy klucz prywatny powinien być zabezpieczony silnym hasłem, które trzeba zapamiętać i pod żadnym pozorem nie wolno zapisywać. Pamiętaj także o robieniu kopii kluczy. W przypadku utraty klucza prywatnego, wszystkie klucze publiczne stają się nieważne. Bezpieczeństwo zależy wyłącznie od Ciebie.

Więcej na temat bezpieczeństwa można przeczytać na stronie: Pretty Good Privacy czyli kryptografia publiczna dla mas – O złudnym poczuciu bezpieczeństwa.

Jak się tego używa?

Tak samo jak każdy inny pogram uruchamiany w konsoli PGP oraz GPG posiadają system pomocy uruchamiany w następujący sposób:

pgp -h
gpg -h

Dodatkowym źródłem pomocy jest obszerna dokumentacja i pomoc dodawana do obu programów.

Generowanie par kluczy
Jeżeli dopiero zaczynasz pracę z PGP lub GPG na samym początku powinieneś wygenerować sobie parę kluczy (publiczny i prywatny), aby móc korzystać z dobrodziejstw tego systemu. W zależności od tego jaki program posiadamy wywołujemy odpowiednią komendę:

pgp -kg
gpg --gen-key

W następnej kolejności zostaniemy spytani o:

  • Rodzaj algorytmu (RSA, DSA)
  • Długość klucza (504 – 4096 bitów)
  • Termin ważności klucza
  • Identyfikator postaci Imię Nazwisko <email-address> np. Jan Nowak <jan@nowak.pl>
    *GPG pyta najpierw o imię i nazwisko a potem o adres email.
  • Komentarz (opcjonalnie)
  • Passphrase – czyli hasło, którym zabezpieczymy klucz prywatny
    *Powinno być długie i alfanumeryczne

Ostatnim krokiem jest generowanie pary kluczy. Ponieważ komputer musi wygenerować dużo losowych bajtów, dobrym pomysłem aby pomóc komputerowi podczas generowania liczb pierszych jest wykonywanie w tym czasie innych działań (pisanie na klawiaturze, poruszanie myszką, odwołanie się do dysków) dzięki temu generator liczb losowych ma możliwość zebrania odpowiedniej ilości entropii.

Niektóre wersje programów poproszą o wprowadzenie przez Ciebie dowolnie losowych i przypadkowych znaków najlepiej zarówno pod względem częstotliwości uderzeń, jak i zawartości. Generowanie kluczy w zależności od długości samego klucza, rodzaju algorytmu jaki i mocy obliczeniowej komputera może trwać od kilku sekund do kilku minut. Po zakończeniu całej operacji dostaniemy wynik:

gpg: key 7DE0ACDA marked as ultimately trusted
klucz publiczny i prywatny (tajny) zostały utworzone i podpisane.

gpg: sprawdzanie bazy zaufania
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   4  signed:   3  trust: 0-, 0q, 0n, 0m, 0f, 4u
gpg: depth: 1  valid:   3  signed:   1  trust: 0-, 0q, 0n, 2m, 1f, 0u
gpg: następne sprawdzanie bazy odbędzie się 2008-04-17
pub   1024D/7DE0ACDA 2006-07-08
      Key fingerprint = B116 0B53 9418 A7D6 C096  B490 B572 8DFC 7DE0 ACDA
uid                  Jan Test <test@test.pl>
sub   1024g/5430616D 2006-07-08

Klucze zostaną umieszczone w odpowiednich dla siebie bazach kluczy. Proces generowania par kluczy może się nieznacznie różnić w zależnosci czy korzystamy z PGP, czy GPG oraz numeru ich wersji, jednakże powinien być on analogiczny do powyższego.

Wymiana kluczami publicznymi
Jeżeli chcesz korzystać z PGP / GPG wraz z innymi ludźmi musisz sprawić, aby Twój klucz pubiczny był naprawdę kluczem publicznym. Klucz ten musi być powszechnie znany u odbiorców Twoich listów, aby mogli je odczytać. Istnieje kilka metod, aby to zrobić:

  1. Umieszczenie klucza publicznego na stronie www na przykład: Klucz PGP | Version: GnuPG v1.2.4 (GNU/Linux).
  2. Małą czcionką umieścić swój klucz publiczny do sygnaturek na forach, listach, grupach dyskusyjnych.
  3. Wysłać klucz na jeden z tak zwanych key serwerów.
  4. Rozesłać klucze publiczne pocztą pantoflową.
  5. Umieszczać w dokumentacji własnych porgramów, projektów
  6. Umieścić klucz w pliku ~/.plan, którego zawartość jest wypisywana przez komendę finger login@host.

Metod rozpowszechniania jest wiele i zależy tylko od naszej inwencji twórczej w jaki sposób trafią one do naszych adresatów. Kolejnym krokiem jest zdobycie kluczy publicznych od naszych znajomych. Możemy przeszukać ich strony domowe, publiczne serwery kluczy, lub po prostu poprosić o udostepnienie klucza publicznego. Każde z tych rozwiązań niesie ze sobą ryzyko, że nie będziemy pewni co do wiarygodności klucza publicznego.

Nie jest problemem wygenerowanie klucza o identyfikatorze: Philip Zimmermann <prz@mit.edu>. Co prawda nie będzie to klucz publiczny Philipa Zimmermanna, ale osoby nieświadome mogę się na ten fakt nabrać. Dlatego zawsze najlepiej importować podpisane klucze od osób, co do których jesteśmy pewni. Zawsze możemy sprawdzić odcisk palca (Key fingerprint), który chcemy zaimportować. Jest to kilkanaście liczb przedstawionych w postaci heksadecymalnej:

Type  bits /keyID    Date       User ID
pub   1024D/5E94AB44 2004/12/07 Kamil Porembiński <paszczak@thecamels.org>
      Key fingerprint = E75A 07D 6D30 F1CE 0A01 ABD3 2F86 066A 5E94 AB44

O odcisk klucza możemy poprosić właściciela innym bezpieczeniejszym kanałem komunikacji na przykład poprzez rozmowę telefoniczną, wręczenie odsicku klucza na kartce papieru. Następnie porównujemy odciski kluczy i jeżeli się zgadza możemy być pewni, że posiadamy odpowiedni klucz.

Zarządzanie kluczami
Będąc w posiadaniu własnej pary klucz oraz kluczy publicznych naszych znajomych możemy rozpocząć pracę z programem. Kolejnym krokiem będzie dodanie kluczy naszych znajomych do bazy kluczy tak zwanego kółka kluczy – keyring.

pgp -ka plik_z_kluczem
gpg --import plik_z_kluczem

Na samym początku program sprawdzi bazę w celu wyszukania duplikatów kluczy. W następnej kolejności pojawi się pytanie czy chcesz podpisać klucz. W niektórych wersjach programy pytają o parametry zaufania klucza (trust parameters), jakie należy przypisać danemu kluczowi.

Mając klucze w bazie możemy je przeglądać. Służy do tego polecenie:

pgp -kv [nazwa_uzytkownika] [baza_kluczy]
gpg --list-keys [nazwa_uzytkownika] [baza_kluczy]

Polecenie pokaże nam wszystkie klucze, które są w bazie. Dodatkowym parametrem może być indentyfikator użytkownika jeżeli chcemy zobaczyć tylko jego klucze lub inna baza kluczy. Jeżeli chcemy obejżeć listę podpisów dla danego klucza wykonujemy polecenie:

pgp -kvv [nazwa_użytkownika] [baza_kluczy]
gpg --list-sigs [nazwa_użytkownika] [baza_kluczy]

Uzyskanie odcisków klucza jest możliwe po wykonaniu polecenia:

pgp -kvc [nazwa_użytkownika] [baza_kluczy]
gpg --fingerprint [nazwa_użytkownika] [baza_kluczy]

W GPG mamy jeszcze takie opcje jak:

     --verify                  sprawdzenie podpisu
     --list-keys               lista kluczy
     --list-sigs               lista kluczy i podpisów
     --check-sigs              list and check key signatures
     --fingerprint             lista kluczy i ich odcisków
 -K, --list-secret-keys        lista kluczy prywatnych

W celu skasowania kluczy z bazy danych mamy kilka poleceń w zależności do tego jaki chcemy kasować klucz.

gpg --delete-keys [nazwa_użytkownika] [baza_kluczy]
gpg --delete-secret-keys [nazwa_użytkownika] [baza_kluczy]

Pierwsze polecenie spowoduje usunięcie klucza ze zbioru kluczy publicznych a drugie usunięcie klucza ze zbioru kluczy prywatnych. W przypadku PGP mamy jedno polecenie:

pgp -kr nazwa_użytkownika [baza_kluczy]

Jeżeli nie podamy nazwy bazy z kluczami to domyślą bazą jest baza kluczy publicznych pubring.pgp. Jeżeli chcemy skasować klucz prywatny musimy podać jako bazę: secring.pgp. Jeżeli klucz, który chcesz skasować posiada więcej niż jeden identyfikator, program zapyta, czy chcesz skasować cały klucz, czy tylko wskazane identyfikatory. Jeżeli chcemy dokonać zmian w jakimś kluczu publicznym (zmienić parametry zaufania) lub zmienić hasło własnego klucza prywatnego wydajemy polecenie:

pgp -ke nazwa_użytkownika
gpg --edit-key nazwa_użytkownika

Jedną z najważnieszych rzeczy całego systemu jest eksportowanie kluczy publicznych w celu ich wymiany i rozpowszechnienia. W PGP mamy do dyspozycji dwa polecenia:

pgp -kx nazwa_użytkownika plik_z_kluczem [baza_kluczy]
pgp -kxa nazwa_użytkownika plik_z_kluczem [baza_kluczy]

Pierwsze polecenie skopiuje klucz z bazy do pliku wraz ze wszystkimi uwierzytelniającymi go sygnaturami. Ostatnie polecenie zakoduje klucz w znakach ASCII, który możemy wysyłać emailem. Różnica między powyższymi metodami eksportu jest znacząca. Pierwsze polecenie wyeksportuje klucz do postaci binarnej, natomiast drugie polecenie zapisze klucz w postaci znaków alfanumerycznych i przestankowych, dzięki czemu będzie można go bezproblemowo umieścić na stronie www, czy w treści wiadomości email. W GPG mamy możliwość wysłania dodatkowo klucza na domyślny serwer kluczy. Służą do tego odpowiednie parametry do programu:

-a, --armor               opakowanie ASCII pliku wynikowego
--export                  eksport kluczy do pliku
--send-keys               eksport kluczy do serwera kluczy
--search-keys             szukanie kluczy na serwerze
--refresh-keys            odświeżenie wszystkich kluczy z serwera

Podpisywanie i sprawdzanie sygnatur
Podpisywanie plików, listów ma na celu uniemożliwienia manipulacji zawartości danych jakie się w nich znajdują. PGP oraz GPG umożliwiają taką operację. Wystarczy wydać odpowiednią komendę:

pgp -s[a] plik
gpg -s, --sign plik

Następnie program spyta nas o hasło w celu odblokowania klucza prywatnego a następnie wygeneruje plik o nazie plik.pgp z sygnaturą (podpisem). Opcjonalnie parametr -a dla PGP a dla GPG -b, –detach-sign złoży podpis w pliku plik.asc skonwertowanym do znaków ASCII tak jak w przypadku eksportu klucza publicznego. Domyślnie program spróbuje skompresować plik zmniejszając jego objętość. Przydaje się ta opcja w przypadku archiwizacji danych, ale jeżeli chcemy taki plik lub wiadomość umieścić w formie czytelnej musimy skorzystać z opcji clearsign. Spowoduje ona dodanie sygnaturki pod dokumentem a sam plik nie ulegnie kompresji.

pgp -sta plik
gpg --clearsign plik

Plik taki jest gotowy do wysłania emailem i wygląda mniej więcej tak:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

To jest testowa wiadomość
podpisana moim kluczem
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)

iD8DBQFEsCHRL4YGal6Uq0QRAjxUAKCW2jJsfTucoHTsjXBZ6RF+aAVNAgCffVZl
9WN5RXAh1mWW73BbCEEI1B0=
=9Z6t
-----END PGP SIGNATURE-----

Sygnatura jest wyliczana na podstawie sumy kontrolnej listu oraz prywatnego klucza. Każdy użytkownik posiadający Twój klucz publiczny może sprawdzić, kto wysłał tę wiadomosć oraz mieć pewność, że nie została ona po drodze zmieniona. Oczywiście nic nie stoji na przeszkodzie, by sygnaturkę wysłać jako załącznik w pliku. Innym zastosowaniem podpisów jest tworzenie tak zwanych detached signatures, czyli sygnatur, które nie są cześcią dokumentu, lecz są zapisane w innym pliku.

Metoda ta jest po dziś dzień stosowana przez na przykład programistów w celu ochrony źródeł programów przed robakami internetowymi, koniami trojańskimi, czy zwykłą złośliwą ingerencją w kod. Do źródeł programu dokładany jest plik z sygnaturą, aby użytkownik mógł sprawdzić wiarygodność plików porgramów i mieć pewność, że nie zostały one zmodyfikowane. Aby wygenerować taką sygnaturkę wykonujemy odpowiednie polecenie:

pgp -sb plik
gpg -b, --detach-sign plik

Sprawdzenie sygnatury, czy odnosi się ona do danego pliku wywołujemy poleceniem:

pgp plik.sig plik

Szyfrowanie i deszyfrowanie
Głownym celem PGP oraz GPG było szyfrowanie wiadomości, w celu zachowania prywatności. Domyślnie program będzie starał się skompresować plik lub wiadomość. Dzięki temu kryptogram staje się mniejszy i trudniejszy do złamania. Szyfrowanie rozpoczynamy poprzez wydanie polecenia:

pgp -e plik adresat@mail.pl
gpg -e plik -r adresat@mail.pl

W ten sposób zostanie wygenerowany plik z rozszerzeniem .pgp lub .gpg. Będzie to plik binarny, który możemy przesłać jako załącznik w emailu. Natomiast jeżeli chcemy wysłać taką wiadomość w postaci ASCII musimy użyć parametru -a. Wiadomość po zaszyfrowaniu może wyglądać tak:

-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.2 (GNU/Linux)

hQEOA7RiinttKOQeEAP+PsPG9frXB/hDes+Z2ObUjUneqAvv8TvH8xqOPj8vPUtN
IGJ1HJf/qHcMZnzWEXjWzkOiyHdFIZEQfKB82b0lUy+hEgFX+QTU4nRzn9V3+ctb
ItMhb0KHhU7eyk6ssKbt0lerdKhQb6JsE+xhN0MOHKhuBTDNRKunahZpemOSI1gD
+wSPlTkrwMlbkkxs+9feto+seoa2yo3j84aTY2opGEor3LuoXaHTewnbrjumhEqY
Rx3padpMacPNgH1uHEz4QphDVqlPAMBMEHxKR9jVb1rXVapuzKsz0chPqHOwDAS3
jeG4pYL/islBtOZvSS+HBPpB/6joWm7OHlxj3l3zD0Ko0mIBmOd2xBKrWTJVznLh
fRkQhliK1DTsVykTA9VdxSSGGTqhYoepk3qVO2c+o7NphAyCgeZntsu9IvDNJVOr
6GQYViNJxU+MNsXfx0+VuBMuWaYHxd/w0nwOf16Xus2tQ2fV0g==
=doh5
-----END PGP MESSAGE-----

Jeżeli chcemy, aby plik zaszyfrowany został zapisany w innym pliku posłuży nam do tego parametr -o. Przykładowo polecenie do szyfrowania może wyglądać następująco:

pgp -ea list.txt adresat@mail.pl
gpg -r adresat@mail.pl -o plik_wyjsciowy -ea list.txt

Oczywiście nic nie stoji na przeszkodzie by dodać większą liczbą adresatów lub za jednym zamachem podpisać wiadomość korzystając z parametru -s. Jako adresatów naszej wiadomości możemy podać imiona lub nazwiska. Program sam wyszuka odpowiednich kluczy i zaszyfruje wiadomość. Nie zawsze jednak nam zależy na szyfrowaniu asymetrycznym.

Przykładowo gdy chcemy zabezpieczyć plik, który nigdzie nie będziemy wysyłać, jednym hasłem, tak aby osoby niepowołane nie miały do niego dostępu. Oba programy pozwalają nam szyfrować pliki za pomocą konwencjonalnej kryptografi symetrycznej. Ponieważ szyfrować i deszyfrować będzie ta sama osoba, użycie kryptografii publicznej nie jest potrzebne i jest niewygodne. Oczywiście plik tak zaszyfrowany zostanie skompresowany w celu utrudnienia deszyfracji oraz zmniejszenia objętości samego kryptogramu. Do szyfrowania tą metodą służą polecenia:

pgp -c plik
gpg -c plik

Program spyta Cię o hasło, którym chcesz zaszyfrować plik a następnie wygeneruje plik z rozszerzeniem .pgp lub .gpg w zależności od tego, z którego programu korzystamy. Oczywiście nic nie stoji na przeszkodze by zapisać plik w postaci ASCII przy pomocy parametru -a.

-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.2 (GNU/Linux)

jA0EAwMCRc6YJ9hLOQ9gyT0wkaLgvf/JqXoUN3mz7m9u4EyuoizmXikOvijAQCMJ
n5P6qTA1db2Pf3HtkLcmeQN1tFpheqNfJpxtZwvp
=y1f2
-----END PGP MESSAGE-----

Deszyfrowanie jest bardzo proste. Tak naprawdę sprowadza się do wywołania programu z nazwą pliku, który jest zaszyfrowany.

pgp zaszyftowane.txt.pgp [-o odszyfrowane.txt]
gpg zaszyfrowane.txt.gpg [-o odszyfrowane.txt]

Opcjonalny parametr -o definjuje nam plik, do którego ma być skopiowana rozszyfrowana wiadomość. Domyślnie program utworzy plik o tej samej nazwie tylko już bez rozszerzenia .pgp lub .gpg. W przypadku kiedy plik zaszyfrowany będzie posiadał sygnaturę nadawcy zostanie ona automatycznie sprawdzona po czym ukaże się nam na ekranie pełny identyfikator osoby podpisującej. Wszystkie czynności te są wykonywane automatycznie.

Program sam domyśla się co ma wykonać, czy będzie to rozszyfrowanie listu, czy sprawdzenie sygnatury, czy obie rzeczy naraz. Program również sam wyszukuje odpowiednich do tego zadania kluczy. Jedyne co leży w zadaniu użytkownika to podanie hasła w przypadku konieczności skorzystania z klucza prywatnego lub w przypadku deszyfrowania pliku, który był szyfrowany szyfrem symetrycznym.

Konfiguracja
Do pracy z tymi programami kryptograficznymi potrzebnych jest kilka rzeczy takich jak: baza kluczy publicznych (pubring.pgp, pubring.gpg), baza kluczy prywatnych (secring.pgp, secring.gpg), inicjalizatora liczb losowych (randseed.bin, random_seed) oraz pliku konfiguracyjnego. PGP wykorzystuje do tego celu plik config.txt (pgp.ini lub .pgprc) natomiast GPG plik gpg.conf.

Nazwę pliku konfiguracyjnego można bezproblemu zmienić i wskazać, aby program korzystał z innego pliku. Programy te mają mnóstwo opcji konfigurowalnych, które mogą nam jeszcze bardziej ułatwić pracę lub przyśpieszyć, niektóre zadania. W plikach tych możemy ustalić na przykład gdzie mają być tworzone pliki tymczasowe, jakiego języka używać, kodowanie znaków i wiele wiele innych parametrów.

Key Signing Party

Poniższy rozdział w krótki i dość prosty sposób charakteryzuje i opisuje przebieg spotkań Key Signing Party. Jeżeli chcesz sam przeprowadzić takie spotkanie to powinieneś zapoznać się z treścią GnuPG Keysigning Party HOWTO autorstwa V. Alex Brennen (codepoet@dublin.ie).

Czym jest Key Signing Party?
Key Signing Party jest imprezą, spotkaniem użytkowników protokołu OpenPGP zaimplementowanego w programach takich jak PGP czy GPG. Celem takich spotkań jest poszerzenie tzw. Web of Trust (Sieci Zaufania) poprzez wzajemne spotkanie w rzeczywistości, potwierdzenie tożsamości oraz podpisanie kluczy publicznych w celu zagwarantowania, że dany użytkownik jest właścicielem danego klucza. Takie podpisy mają na celu pomóc w weryfikacji i sprawdzeniu tożsamości osoby, z którą się kontaktujemy.

Możemy w prosty sposób stwierdzić, czy rozmówca, który podpisuje się danym kluczem jest faktycznie jego właścicielem. Sieć Zaufania jest bardzo pomocna w przypadku, gdy nigdy wcześniej nie mieliśmy kontaktu z daną osobą, ale nasi znajomi, lub osoby, którym podpisaliśmy klucze (po uprzedniej weryfikacji ich tożsamości) podpisali jego klucz. Gwarantują oni tym samym, że na pewno nasz rozmówca jest właścicielem danego klucza, a więc tym, za kogo się podaje. Znając Sąsiadów Zaufania oraz ufając im w dostateczny sposób, możemy z większym prawdopodobieństwem potwierdzić tożsamość nieznajomego nadawcy listu. Web of Trust jest odzwierciedleniem naszych naturalnych metod poznawania i ufania ludziom. Kolega naszego kolegi jest naszym kolegą. Sieć zaufana pozwala na dokładnie to samo.

Key Signing Party
Jak wziąć w tym udział i jak się do tego przygotować?

Key Signing Party często są organizowane przy okazji różnych konferencji informatycznych Wystarczy wyszukać taką imprezę i udać się tam przygotowywując wcześniej kilka rzeczy. Pierwszą z nich jest posiadanie pary kluczy PGP / GPG, przy czym tylko klucz publiczny będzie nam potrzeby do wzięcia udziału w spotkaniu. Następnym krokiem jest wysłanie klucza publicznego do koordynatora imprezy (informacje o tym kto jest koordynatorem są umieszczane na stronach czy listach dyskusyjnych takich spotkań).

Koordynator zbiera wszystkie klucze publiczne po czym na spotkaniu wręcza każdemu uczestnikowi najważniejsze informacje o każdym kluczu każdego uczestnika Key Signing Party w postaci wydrukowanej listy. Jadąć na takie spotkanie trzeba wcześniej gdzieś na kartce wydrukować lub napisać ręcznie najważniejsze informacje o swoim kluczu publicznym. Są to: ID klucza, jego rodzaj, rozmiar oraz odcisk (fingerprint). Wygląda to następująco:

Type  bits /keyID    Date       User ID
pub   1024D/5E94AB44 2004/12/07 Kamil Porembiński <paszczak@thecamels.org>
      Key fingerprint = E75A 07D 6D30 F1CE 0A01  ABD3 2F86 066A 5E94 AB44

Jeżeli posiadamy większą liczbę kluczy publicznych to wcześniej je przesyłamy do koordynatora po czym drukujemy odpowiednią listę informacji dla każdego z kluczy. Na tego typu imprezę konieczne jest również zabranie dwóch ważnych dowodów tożsamości ze zdjęciem (Dowód Osobisty, Paszport, Prawo Jazdy). Bardzo często przydaje się posiadanie również kartki i długopisu.

Przebieg spotkania
Na samym początku otrzymasz listę kluczy wszystkich współuczestników Key Signing Party. Koordynator będzie wywoływał po kolei każdego uczestnika, by ten porównał i sprawdził, czy informacje na liście, które dotyczą jego klucza są zgodne i prawdziwe. Jeżeli tak, to uczestnik na głos odczytuje odcisk swojego klucza. Pozostali członkowie imprezy sprawdzają dane na listach, które wcześniej otrzymali. Jeżeli wszystko się zgadza oznaczają taki klucz jako wiarygodny. Najczęściej stawiając przy nim tak zwanego ptaszka.

Kolejnym etapem jest ustawienie się w jednym rzędzie trzymająć przed sobą dowody tożsamości. Teraz, po kolei każdy z uczestników przejdzie wzdłuż rzędu i sprawdzi tożsamość danej osoby. Jeżeli wszystko się zgadza stawia się drugiego ptaszka oznaczając, że dany klucz nadaje się do podpisania. Samo podpisywanie kluczy odbywa się w miejscu, gdzie przechowywujemy nasz klucz prywatny (w domu, w biurze), gdyż jest on do tego niezbędny. Po podpisaniu klucza publicznego odsyłamy go do właściciela. Adresy mailowe są podane na liście z kluczami jaką wręczył Ci koordynator. Pamiętaj, aby nigdy nie podpisywać cudzego klucza, jeżeli nie masz pewności co do osoby lub autentyczności klucza. W przeciwym razie osoby, które otrzymają fałszywy klucz będą sądziły, że jest on autentyczny a Ty potwierdzasz jego wiarygodność.

Key Signing Party krok po kroku

  1. Wygenerowanie pary kluczy
  2. Przesłanie klucza publicznego do koordynatora spotkania
  3. Wydrukowanie informacji o Twoim kluczu publicznym:
    • Typ klucza
    • Rozmiar
    • keyID
    • Data
    • User ID
    • Key fingerprint
  4. Otrzymanie od koordynatora listy z kluczami każdego z uczestników spotkania
  5. Sprawdzenie i potwierdzenie autentyczności własnego klucza
  6. Sprawdzenie i potwierdzenie autentyczności pozostałych kluczy:
    • Sprawdzenie Key fingerprint innych kluczy
    • Sprawdzenie tożsamości na podstawie dowodów osobistych
  7. Podpisanie kluczy
  8. Odesłanie podpisanych kluczy do ich właścicieli

Podsumowanie

Jaki byłby świat gdyby każdy z nas nie miał tajemnic, a prywatność by nie istniała? Każdy z nas pewnie ma inne wyobrażenia o takim świecie. A co by było gdyby rządy i inne urzędy czytały naszą pocztę, podsłuchwiały nasze rozmowy?

Pełna inwigilacja w prywatność, jeżeli wtedy mogłoby być coś nazwane dobrem prywatnym. PGP oraz GPG daje nam coś, co inni próbują wykraść i poznać bez naszej wiedzy. Darmowe i proste w użyciu a jak skomplikowane w swojej budowie oporgramowanie pozwala nam czuć się bezpiecznie i mieć świadomość prywatności.

Jak już kiedyś powiedziano Mały krok dla człowieka, a wielki dla ludzkości tak PGP / GPG stworzone przez Philipa Zimmermanna ochrania nasze największe tajemnice przed niepowołanymi osobami. Zasługi również należą się nam samym, którzy kształtują nadal drogę jaką obiorą dalsze wersje. Program ten powstał dla ludzi, którzy sami dbają o swoje poczucie prywatności i nie liczą na innych w tej sprawie.

Bibliografia

Podobne artykuły

  • Michał Olber

    Super artykuł. Na pewno się tym zainteresuje :)

  • panjandrum

    Dobry, wyczerpujący artykuł. Oby takich więcej.

  • sof

    Również dziękuję za artykuł. Fajnie się czyta.

  • OldEnt

    Gratuluję artykułu. :')

  • Max

    Świetny artykuł, ale mam pytanie. Czy zawsze szyfrowane są wiadomości w trybie tekstowym? Dlaczego nie można wysyłać szyfrowanych wiadomości w formacie html bez konwersji na format tekstowy?

  • Jak nie można, jak można. HTML to przecież tekst (ACSII).

  • Max

    Tak, przy wysyłaniu wiadomości w html wyskakuje komunikat "Wiadomość zawiera informacje o formatowaniu w HTML, która zostanie utracona po konwersji do zwykłego tekstu przy podpisywaniu/szyfrowaniu." I po wysłaniu odbiorca dostaje sieczkę w txt :(

  • Pingback: Konkurs II – malinowe główkowanie | OSWorld.pl()

  • Pingback: Wyniki drugiego konkursu z maliną - Linux mint, centos, ubuntu - OSWorld.pl - mały świat wielkich systemów!()