Copyright © 1997 RNDr. Libor Dostálek

PGP

PGP nepřináší fylozoficky nic nového. Vzniklo z iniciativy jednoho člověka, jehož snahou bylo vytvořit uživatelsky jednoduchý program dostupný nejširší veřejnosti. Tohoto cíle bezpochyby dosáhl. Dodnes je PGP nejrozšířenější prostředek pro zpracování bezpečných zpráv. Proto v této kapitole se nebudeme věnovat bezpečným zprávam teoreticky, ale popíšeme si jednotlivé příkazy PGP. Zájemce o podrobnější popis odkážeme na RFC1991. Na závěr kapitoly ještě uvedeme poznámku o vztahu PGP a MIME.

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:

Nejprve si pořídíte soubor (např. textovým editorem), pak jej pomocí PGP zašifrujete (případně elektronicky podepíšete) a pak jej může bez obav poslat přes Internet. Můžete však jej zašifrovaný nahrát na disketu, kterou pak pošlete v obálce šnečí poštou. Prostě PGP se sítí (Internetem) v podstatě nijak nesouvisí.

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).

Svazky klíčů (certifiátů)

V PGP se místo slova soukromý klíč (soukromý je opak ke slovu veřejný) používá často slovo tajný klíč. Budu toto označení používat v celé kapitole, i když je pravdou, že je to zavádějící, protože tajným klíčem se všude jinde rozumí symetrický klíč.

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:

Obsah kroužku si vypište příkazem

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.

Instalace

Pomocí ftp si můžete obstarat PGP na Ingternetu.

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

Generování dvojice veřejný/tajný klíč

Dvojici veřejný/tajný klíč si můžete vygenerovat pomocí příkazu pgp s parametrem -kg. Tento příkaz vygenerované klíče přímo navlékne na kroužky. Neexistují-li kroužky, tak je vytvoří.

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):
 432
Už 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.

Práce s klíči

Konečně si můžeme uvést příklad výpisu obsahu kroužku:
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).

Šifrování souboru veřejným klíčem příjemce

Šifrování souboru symetrickou šifrou

pgp -c soubor

Dešifrování s kontrolou elektronického podpisu

Dešifrování souboru včetně verifikace elektronického podpisu se provede příkazem:

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.

Elektronický podpis souboru

Samostatné elektronické podepsání lze provést příkazem:

pgp -s soubor

MIME a PGP

PGP nepoužívá MIME. Veškeré informace ukládá do datové části zprávy. Např:
 
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-----
Version: 2.6.3i

hEwDVzIQ/0AACWUBAgCjg7Plko8fm4nrCZOn7LQprCvcMelrF7qr2N5S5adUHujQ
hiUmcIMDK8zx+Cvm52lD68NZxKybexuaAESa+fMgpgAAALFXB4DlbeEWRHe6GwDz
vYMsWPbK7+UFC9ZXeHsKc+c6iPokzMG/NWHf76/OLJXV3iKIKrfRFycA77Pu1G/X
IccoMlAIfC29cqT7Y//q5TvYAwDoqpfIjoVaqz8dIjqy2G/2rf+acb4nyitLEtwL
NE0huVXKsgenm39MqQp9A5W+dWzC8OcB2uHTzdzpQgNzJJ5JYf1/L75XZ0la3jyA 
t7HvXV6IPqQPIw0s0uChsEaKDPI=
-----END PGP MESSAGE-----

RFC2015 však zavádi typy:

Takže náš příklad může vypadat např. následovně:
 
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
Contentn-Type: application/pgp-encrypted

Version: 1.

--hranice
Content-Type: application/octet-stream

-----BEGIN PGP MESSAGE-----
Version: 2.6.3i

hEwDVzIQ/0AACWUBAgCjg7Plko8fm4nrCZOn7LQprCvcMelrF7qr2N5S5adUHujQ
hiUmcIMDK8zx+Cvm52lD68NZxKybexuaAESa+fMgpgAAALFXB4DlbeEWRHe6GwDz
vYMsWPbK7+UFC9ZXeHsKc+c6iPokzMG/NWHf76/OLJXV3iKIKrfRFycA77Pu1G/X
IccoMlAIfC29cqT7Y//q5TvYAwDoqpfIjoVaqz8dIjqy2G/2rf+acb4nyitLEtwL
NE0huVXKsgenm39MqQp9A5W+dWzC8OcB2uHTzdzpQgNzJJ5JYf1/L75XZ0la3jyA 
t7HvXV6IPqQPIw0s0uChsEaKDPI=
-----END PGP MESSAGE-----

--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.