PGP (Pretty Good Privacy) vytvořil Američan P.R.Zimmerman. První verze PGP jsou z roku 1991.
PGP je určeno pro bezpečný přenos elektronické pošty běžnou "ne-bezpečnou" elektronickou cestou (tj. protokoly SMTP, POP, IMAP apod.) . PGP nezavádí nový síťový protokol - nezavádí prezentační vrstvu, používá běžné elektronické cesty. Nepotřebuje tedy rekonfigurovat počítač. Využijete to co pro komunikaci běžně používáte. Musíte si pouze obstarat program PGP a pomocí něj zprávu předem šifrovat i elektronicky podepisovat. Přijatou zprávu je třeba nejprve uložit do souboru, na který se následně aplikuje program PGP.
PGP používá:
Jádrem PGP je již zmíněný program pgp, kterým můžete:
Příjemce obdrží zašifrovaný soubor, který pomocí PGP dešifruje.
Odesilatel s příjemcem si může (v závislosti na charakteru utajení dat) vyměnit veřejné klíče osobně, faxem, pomocí key serveru (jakási obdoba CA, kde uživatel je identifikován jménem a svou mailovou adresou).
V praxi budete komunikovat s několika vzdálenými uživateli. Budete tedy potřebovat pro každého vzdáleného uživatele mít jeho veřejný klíč.
Aby se s klíči lépe pracovalo, ukládají se klíče (chcete-li navlékají) do kroužků pro klíče. Máme kroužek pro veřejné klíče (implicitně PUBRING.PGP) a kroužek pro tajné klíče (implicitně SECRING.PGP).
Na kroužek pro veřejné klíče se budou navlékat veřejné klíče (jak ostatních uživatelů, tak se tam bude archivovat i vlastní veřejný klíč). Pod navlékáním rozumíme nejen přihrání klíče do souboru, ale i jeho podepsání příslušným tajným klíčem. Podepsaný klíč se v PGP nazývá certifikátem (opět neexistuje spojitost s certifikáty X.509 popisovanými v předchozích kapitolách).
Na kroužek pro tajné klíče se navlékne vlastní tajný klíč (ostatní uživatelé své tajné klíče pochopitelně nevydají). Takže kroužek pro tajné klíče bude zpravidla obsahovat pouze jeden klíč. Není však žádný důvod k tomu, abychom si nevygenerovali více dvojic tajný/veřejný klíč, čili měli na kroužku více tajných klíčů. Tajné klíče se na kroužku uschovávají chráněny heslem (zašifrovány heslem), které je na uživateli vyžádáno při generování dvojice klíčů a pak pokaždé, kdy se manipuluje s tajným klíčem. Následně je pak vyžadováno vždy před použitím tajného hesla.
Na kroužky se vlastně nenavlékají klíče samotné, ale jejich certifikáty. Certifikát obsahuje:
Libor Dostalek <dostalek@pvt.net>
pgp -kvv [kroužek]
a snadno smysl certifikátu PGP pochopíte.
S klíčem se pracuje pak pomocí identifikace uživatele. Takže řekne-li se, že se má šifrovat veřejným klíčem uživatele Libor Dostalek (posílá-li se mu dopis), pak PGP projde kroužek s veřejnými klíči, není-li tam jeho veřejný klíč a samo jej použije. Není tedy třeba nějakou operací vyextrahovat klíč z kroužku a pak ručně nějak PGP podstrkovat - vše dělá PGP samo.
Je třeba upozornit na to, že použití je sice až geniálně jednoduché, ale nejprve se však laskavě seznamte s autorskými podmínkami, za kterých je možné PGP použít.
Stažený software rozpakujete do nějakého konkrétního adresáře. V případě MS-DOSu jej máte již připraven (zkompilován) k použití. V případě UNIXu jej musíte kompilovat. Dále budeme předpokládat, že používáme PGP v MS-DOSu. Syntaxe příkazu je údajně ve všech operačních systémech shodná. Existují však verze např. pro Windows 95, kde se PGP volá z oken, ale je i tam k dispozici řádkový příkaz pgp, o kterém bude déle řeč.
Před spuštěním je nutné v souboru AUTOEXEC.BAT nastavit min. dvě proměnné: PGPPATH a TZ. Proměnná PGPATH určuje cestu do adresáře se software PGP a proměnná TZ specifikuje místní časovou zónu. Příklad (s časovou zónou pro ČR):
SET PGPPATH=C:\PGP SET TZ=MET-1DST
Příklad:
C:\PGP>pgp -kg
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: 1996/08/15 09:47 GMT
Pick your RSA key size:
1) 512 bits- Low commercial grade, fast but less secure
2) 768 bits- High commercial grade, medium speed, good security
3) 1024 bits- "Military" grade, slow, highest security
Choose 1, 2, or 3, or enter desired number of bits:
Nyní jste dotázáni na déklu šifrovacího klíče (zvolíme např. 2, tj. klíč dlouhý 768 bitů):
Choose 1, 2, or 3, or enter desired number of bits: 2 Generating an RSA key with a 768-bit modulus. You need a user ID for your public key. The desired form for this user ID is your name, followed by your E-mail address enclosed in <angle brackets>, if you have an E-mail address. For example: John Q. Smith <12345.6789@compuserve.com> Enter a user ID for your public key:Nyní jste dotazováni na identifikaci uživatele. Zadáme např.:
Libor Dostalek <dostalek@pvt.net> You need a pass phrase to protect your RSA secret key. Your pass phrase can be any sentence or phrase and may have many words, spaces, punctuation, or any other printable characters.Nyní jste dotazováni na přístupové heslo k právě vygenerovanému tajnému klíči (následně se provádí verifikace):
Enter pass phrase: Enter same pass phrase again: Note that key generation is a lengthy process. We need to generate 432 random bits. This is done by measuring the time intervals between your keystrokes. Please enter some random text on your keyboard until you hear the beep:Pro správnou generaci klíče je třeba zadat řadu náhodných čísel, které se odvodí od času mezi stiskem libovolných kláves vaší klávesnice (číslo udává kolikrát ještě máte stisknout libovolnou klávesu):
432Už to stačí, děkuji.
0 * -Enough, thank you. .........................**** ..............**** Pass phrase is good. Just a moment.... Key signature certificate added. Key generation completed.Generování dvojice veřejný/tajný klíč je úspěšně hotovo. Příkazem pgp s parametrem kv si lze vypsat obsah kroužku (imlicitně PUBRING.PGP), kde je Váš první klíč:
C:\PGP>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: 1996/08/15 09:50 GMT Key ring: 'c:\pgp\pubring.pgp' Type Bits/KeyID Date User ID pub 768/2833AEA1 1996/08/15 Libor Dostalek <dostalek@pvt.net> 1 matching key found.Ve sloupci Type je typ klíče (pub - veřejný, sec - tajný), Bits určuje délku klíče. KeyID jeho identifikaci, Date časové razítko a User ID identifikaci uživatele. Obdobně lze vypsat příkazem pgp pro uživatele Libor Dostalek obsah kroužku s tajnými klíči. Identifikace uživatele se napíše jako první parametr a jméno souboru s kroužkem jako druhý parametr (přípona pgp je implicitní). Jelikož identifikace uživatele obsahuje mezeru, tak se musí uvést v uvozovkách:
C:\PGP>pgp -kv "Libor Dostalek" secring 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: 1996/08/15 10:12 GMT Key ring: 'secring.pgp', looking for user ID "Libor Dostalek". Type Bits/KeyID Date User ID sec 768/2833AEA1 1996/08/15 Libor Dostalek <dostalek@pvt.net> 1 matching key found.
C:\pgp> pgp -kvv
Key ring: 'pubring.pgp' Type Bits/KeyID Date User ID pub 512/544F4669 1997/06/14 Libor Dostalek <dostalek@pvt.net> sig 544F4669 Libor Dostalek <dostalek@pvt.net> 1 matching key found.Z příkladu je vidět, že na kroužku je klíč "Libor Dostálek" doplněný o mailovou adresu <dostalek@pvt.net>. Jelikož tato identifikace nemusí být jednoznačná ani v rámci kroužku, tak PGP přidělilo identifikaci 544F669. Jedná se o veřejný klíč (pub) podepsaný tajným klíčem (sec). Oba klíče mají stejnou identifikaci, takže tvoří pár soukromý/tajný klíč. Veřejný klíč na tomto kroužku je podepsán párovým tajným klíčem (sám sebou).
pgp soubor
získáme původní soubor. (PGP totiž obsahu souboru pozná oč se jedná.) Je-li soubor navíc elektronicky podepsán, pak bychom tímto příkazem přišli o elektronický podpis. Chceme-li zachovat elektronický podpis, pak použijeme příkaz:
pgp -d soubor
V případě, že bylo použito elektronického podpisu, pak vznikne soubor soubor.pgp který je sice dešifrován ale navíc ještě obsahuje (na počátku) elektronický podpis. Příkazem:
pgp -b soubor
je soubor soubor.pgp rozdělen na dva soubory: soubor soubor obsahující původní (dešifrovaný) text a soubor soubor.sig obsahující elektronický podpis.
pgp -s soubor
Subject: Tajna zprava
Date: Sat, 19 Apr 1997 17:16:27 +0200 From: Libor Dostalek <dostalek@pvt.cz> To: alena@pvt.net -----BEGIN PGP MESSAGE-----
hEwDVzIQ/0AACWUBAgCjg7Plko8fm4nrCZOn7LQprCvcMelrF7qr2N5S5adUHujQ
|
RFC2015 však zavádi typy:
Subject: Tajna zprava
Date: Sat, 19 Apr 1997 17:16:27 +0200 From: Libor Dostalek <dostalek@pvt.cz> To: alena@pvt.net Mime-Version: 1.0 Content-Type: multipart/encrypted; boundery=hranice;protocol=application/pgp-encrypted --hranice
Version: 1. --hranice
-----BEGIN PGP MESSAGE-----
hEwDVzIQ/0AACWUBAgCjg7Plko8fm4nrCZOn7LQprCvcMelrF7qr2N5S5adUHujQ
--hranice-- |
Za povšimnutí stojí, že první část nenese žádné kryptografické údaje - vše je v druhé části. První část je umělá, aby syntaxe vyhovovala MIME. Takže v budoucnu se možná budeme setkávat i s bezpečnými zprávami formátu PGP ve tvaru MIME.