Kryptografický program Pretty Good Privacy (Velmi dobré soukromí) řadí sám sebe do kategorie tzv. "forbidden freeware". Freeware proto, že je volně k dispozici (na Internetu již existují jeho verze pro MS-DOS, Unix, OS/2, VAX/VMS a další operační systémy); forbidden proto, že jeho používání může být přijímáno s velkou nelibostí ze strany různých vládních institucí, tajných služeb či policejních složek. Znemožňuje jim totiž "odposlech" tímto programem zabezpečených zpráv přenášených po - jinak velmi snadno monitorovatelných - elektronických kanálech.
PGP vznikl ve Spojených státech, kde již delší dobu probíhá urputný zápas mezi zastánci práva na soukromí (zakotveného mimo jiné přímo v americké ústavě) a vládními institucemi snažícími se prosadit zákony, které by přinutily výrobce komunikačních zařízení a systémů povinně zabudovávat do svých zabezpečovacích systémů "zadní vrátka", na jejichž základě by vláda (FBI) mohla číst jakékoliv kódované zprávy. Autor PGP k těmto snahám říká: "Pokud bude soukromí mimo zákon, pak pouze ti, kteří stojí mimo zákon, budou mít soukromí... PGP pomáhá lidem vzít soukromí do vlastních rukou. Společenská potřeba zajištění soukromí vzrůstá - a proto jsem PGP napsal."
V seriálu o elektronické poště v dřívějších číslech Zpravodaje byl také článek o tom, jaké nebezpečí může přinést použití elektronické pošty. Tyto problémy je možné odstranit použitím vhodných programů, jimiž lze přenášené zprávy zakódovat a doplnit k nim digitální podpis, umožňující ověřit totožnost odesílatele. Jedním z těchto programů je Pretty Good Privacy, napsaný Philipem Zimmermannem s pomocí dalších autorů v roce 1990 a vyvíjený do současnosti. PGP dovoluje používat elektronickou poštu se zárukou soukromí, autenticity a pohodlí. Soukromí je zaručeno zakódováním zprávy tak, že ji může přečíst jen určený adresát. Autenticita je zajištěna digitálním podpisem, který jednoznačně určuje odesílatele. Využití těchto vlastností je poměrně pohodlné, protože není nutné předávat žádná hesla bezpečným kanálem nebo osobně. PGP používá metodu veřejných klíčů (public key cryptography).
V konvenčním kryptografickém systému je pro zakódování i rozkódování informace použit jeden klíč, který musí odesílatel předat příjemci pomocí bezpečného kanálu. V kryptografickém systému s veřejnými klíči má každý uživatel dvojici klíčů. Každým je možné rozkódovat zprávu, která byla zakódovaná druhým z nich. Jeden z klíčů je veřejný a může být zveřejněn a libovolně rozšířen v síti. Při jeho předávání adresátovi není třeba využívat žádný chráněný kanál. Druhý klíč je tajný, nesmí jej znát nikdo jiný než jeho majitel. Chceme-li někomu poslat zakódovanou zprávu, musíme mít k dispozici jeho veřejný klíč. Zprávu zakódujeme tímto klíčem a příjemce ji rozkóduje pomocí svého tajného klíče. Bez tajného klíče nemůže nikdo zprávu rozkódovat, ani ten, kdo ji zakódoval. Autenticitu zprávy zajistíme připojením digitálního podpisu. Ten vytvoříme pomocí svého tajného klíče. Příjemce může podpis ověřit pomocí našeho veřejného klíče. Rozkódováním klíče si ověří, že zpráva skutečně pochází od uvedeného odesílatele a že nebyla po cestě modifikována. Při odesílání zpráv můžeme využít jednu z těchto možností nebo obě spojit dohromady. V tom případě nejprve podepíšeme zprávu svým tajným klíčem a potom ji zakódujeme pomocí adresátova veřejného klíče. Adresát nejprve zprávu rozkóduje svým tajným klíčem a potom ověří podpis naším veřejným klíčem. Tyto akce jsou ovšem automaticky provedeny programem.
Veřejné klíče jsou uloženy v souboru klíčů, který ke každému klíči obsahuje identifikaci uživatele, čas vytvoření dvojice klíčů a vlastní klíč. Tajné klíče jsou uloženy v podobném souboru, ale každý klíč je zakódován vlastním heslem, aby nemohl být zneužit ani v případě odcizení souboru. Při vytváření podpisů využívá PGP funkci zobrazující zprávu do 128-bitového klíče, analogického kontrolní sumě. Pro případného útočníka je ovšem výpočetně neproveditelné nalézt jinou zprávu, která by měla stejný klíč. Klíč zprávy po zakódování tajným klíčem vytváří digitální podpis, jehož součástí je identifikace klíče, kterým byl vytvořen, a čas vytvoření. Program příjemce automaticky hledá příslušný klíč v jeho souboru veřejných klíčů, a pokud jej nalezne, vypíše informaci o tom, kdo a kdy zprávu podepsal a zda je zpráva neporušená. Zakódované soubory obsahují identifikaci veřejného klíče, kterým byly zakódovány. Program dekódující zprávu hledá v souboru tajných klíčů příslušný klíč pro rozšifrování zprávy.
Chce-li uživatel začít používat PGP, musí si nejdříve vytvořit svou dvojici klíčů. Po zadání příkazu
pgp -kg |
nabídne program na výběr délku klíče. Doporučené délky jsou 384, 512 a 1024 bitů. S rostoucí délkou roste bezpečnost, ale také čas potřebný pro kódování. Po určení délky je třeba zadat identifikaci klíče. Zde je vhodné zadat celé jméno uživatele a přidat ještě jednoznačnou identifikaci, např. elektronickou adresu, aby nemohlo dojít k záměně klíče. Dále se požaduje zadání hesla pro ochranu tajného klíče. Může to být text složený z libovolných znaků včetně mezer. Bez znalosti tohoto hesla nemůže nikdo tajný klíč zneužít, protoze zadání hesla je nutné při každém použití klíče. Heslo nesmí uživatel zapomenout, protože neexistuje způsob, jak je obnovit. Pokud uživatel heslo opravdu nechce, může zadat pouze <Enter>, ale toto řešení není vhodné. Dvojice klíčů je generována ze skutečně náhodných čísel odvozených z časových intervalů mezi stiskem kláves. Proto program vyzve k psaní náhodného textu tak dlouho, dokud nepípne. Na textu nezáleží, ale protože jsou náhodná čísla odvozena i z jeho znaků, nedoporučuje se psát opakovaně stejné písmeno. Vytvořená dvojice klíčů bude umístěna do souborů uzivatelských veřejných a tajných klíčů.
Veřejný klíč může uživatel ze souboru veřejných klíčů zkopírovat do souboru určeného k distribuci svým partnerům příkazem
pgp -kx userid keyfile [keyring] |
kde userid je identifikace uživatele v souboru klíčů, keyfile je jméno souboru, do kterého má být klíč zapsán, a keyring je jméno souboru obsahujícího veřejné klíče. Default jména souborů klíčů jsou pubring.pgp a secring.pgp. Svůj tajný klíč ovšem nikdy nesmí uživatel nikomu předat, ani nesmí generovat klíče pro své přátele. Pokud je to možné, uschová klíč na svém osobním počítači. Když dostanete příjemce soubor obsahující jeden nebo více veřejných klíčů, které ještě nemá ve svém souboru veřejných klíčů, může je tam doplnit příkazem
pgp -ka keyfile [keyring] |
kde keyfile je soubor s novými veřejnými klíči. PGP doplní do souboru veřejných klíčů všechny klíče ze souboru, které tam ještě nebyly. Obsah souboru veřejných klíčů lze vypsat příkazem
pgp -kv [userid] [keyring] |
kde userid je libovolný podřetěz identifikace uživatele. Příkaz vypíše seznam všech klíčů, v jejichž poli UserID se vyskytuje daný řetěz, případně všechny klíče, pokud userid nebylo zadáno. Výsledkem je např. výpis:
aragorn$ pgp -kv moucka Pretty Good Privacy 2.6ui - Public-key encryption for the masses. (c) 1990-1993 Philip Zimmermann, Phil's Pretty Good Software. 27 May 94 Date: 1995/03/21 08:47 GMT Key ring: 'pubring.pgp' Type bits/keyID Date User ID pub 384/29718CC1 1995/03/20 Bohuslav Moucka <moucka@municz> 1 key(s) examined. |
Pro každý klíč je uvedeno, zda jde o veřejný nebo tajný klíč, dále jeho délka, identifikace (posledních 32 bitů) a datum vytvoření a identifikace uživatele. Pokud chce uživatel využívat PGP pro kódování zpráv zasílaných poštou a chce, aby dopisy, které jen podepíše, byly čitelné pro všechny, je vhodné vytvořit soubor config.txt s obsahem
armor=on clearsig=on textmode=on |
a do proměnné PGPPATH vložit jméno adresáře, ve kterém je umístěn. Ve stejném adresáři budou také soubory klíčů. Pro zakódování zprávy veřejným klíčem slouží příkaz
pgp -e dopis adresat |
kde dopis je soubor obsahující zprávu a adresat je identifikace uživatele v souboru veřejných klíčů. PGP vytvoří soubor soubor.asc obsahující zakódovanou zprávu v čitelném tvaru, kterou lze poslat poštou. Je-li cílem odesílatele jen zajistit autenticitu a zprávu není třeba kódovat, může k dopisu jen připojit svůj digitální podpis příkazem
pgp -s dopis -u user |
kde dopis je soubor obsahující zprávu a user je identifikace uživatele v souboru tajných klíčů. PGP vytvoří soubor dopis.asc, který se od původního liší tím, že na konci má připojen podpis např. ve tvaru:
-----BEGIN PGP SIGNATURE----- Version: 2.6 iQBFAgUBL26ReNAfxXXabxKtAQFAKQF /RPt5iBSlCdOa5g1uSulu3EOYsuB8rvng /tisrOrhw9bJf12wpavBicHEA6Etx8iT =hYPn -----END PGP SIGNATURE----- |
Obě předchozí možnosti lze spojit dohromady příkazem
pgp -es adresat [-u user] |
Příjemce podepsaného nebo zakódovaného dopisu může rozšifrovat text nebo ověřit podpis příkazem
pgp sifra [-o dopis] |
kde sifra je soubor obsahující zprávu, která přišla poštou a dopis je soubor, do něhož PGP uloží rozšifrovaný dopis bez podpisu. Program zjistí, jaké operace je třeba provést. Pokud je dopis zašifrován, je příjemce vyzván k zadání hesla svého tajného klíče, a jestliže obsahuje podpis, ověří program, nebyla-li zpráva při přepravě porušena, a podá o tom zprávu.
Informace o PGP jsou vystaveny na adrese: http://draco.centerline.com:8080/franl/pgp/