Pretty Good Privacy
                             -=-=-=-=-=-=-=-=-=-=-

            Only great masters of style can succeed in being obtuse.
                                 -- Oscar Wilde

               Most UNIX programmers are great masters of style.
                            -- The Unnamed Usenetter

                           Petr Kolář, 10.března 1998

          Přestože    Internet   byl   vytvořen  na  zakázku    amerického
      ministerstva  obrany,  patřilo zabezpečení  přepravovaných  souborů,
      zpráv a hesel  proti  zneužití  cizími  osobami  k dosti  opomíjeným
      otázkám.  Pomocí klasických  protokolů, jako jsou telnet, FTP, SMTP,
      POP, HTTP a další, jsou informace včetně hesel přepravovány většinou
      nezašifrovaně  a s velmi  omezenými  možnostmi,  jak  ověřit  jejich
      pravost.  Přitom  odposlouchávání  provozu v sítích je  principiálně
      možné a o tom,  nakolik je využíváno,  kolují  děsivé  fámy. O mnoho
      lepší  není  ani  zabezpečení  souborů  uložených v  počítačích  ---
      i když víceuživatelské systémy poskytují ochranu souborů, ve většině
      systémů včetně téměř všech odrůd UNIXu má správce počítače neomezený
      přístup ke všemu.

          Se stále  širším  používáním  sítí a s komercializací  Internetu
      začalo  být  zabezpečení  přenášených i uložených  dat  nezbytností.
      Stále  více  počítačů je  připojeno k Internetu,  který je  používán
      k osobní i firemní  korespondenci jako  doplněk či náhrada  telefonu
      a faxu.  Po  síti  se  přenášejí i tak  citlivá  data  jako  příkazy
      k platbám, čísla účtů a kreditních karet.

          V roce 1991 byl v USA navržen  zákon,  podle  kterého  mohou být
      vyráběna  pouze taková  šifrovací  zařízení, která  umožní vládě USA
      (při splnění  podmínek  daných dalšími  zákony)  dešifrování  zpráv.
      Zároveň  byla  zahájena   výroba   čipů  Clipper,  ve  kterých  jsou
      zabudovány  "tajné  dveře", které toto dešifrování  umožňují.  Každá
      zpráva  zašifrovaná  (jinak  údajně  velmi  kvalitní  šifrou)  čipem
      Clipper  totiž  obsahuje  použitý  klíč.  Tento klíč je (samozřejmě)
      zašifrován  klíčem  daného  čipu,  který je uložen  rozdělený na dvě
      části u dvou  nezávislých  organizací.  Vláda  USA  může  na základě
      soudního   rozhodnutí  získat   komponenty  klíče  konkrétního  čipu
      a s  jejich  pomocí  dešifrovat  všechny  zprávy  zašifrované  tímto
      čipem.  Návrh  zákona  vyvolal  obrovskou  kampaň  proti  zasahování
      státu do  soukromí  jednotlivce  vedenou  pod  heslem  "jestliže  se
      soukromí  postaví  mimo  zákon, pak pouze ti, co stojí  mimo  zákon,
      budou mít soukromí".  Jedním z produktů  této kampaně bylo vytvoření
      programu  PGP  (Pretty  Good  Privacy, v překladu  něco  jako  "dost
      slušné  soukromí"), který zpřístupňuje silné šifrování a autentizaci
      informací každému.

                Klasické šifrování a šifrování s veřejným klíčem

          "Bezpečnost"   nejstarších   "šifer"   byla   založena  na  tom,
      že  algoritmus  šifrování i  dešifrování  byl  udržován v  tajnosti.
      "Šifrování"  často  spočívalo  pouze  ve  zvláštním  způsobu  zápisu
      jednotlivých  znaků či slov  zprávy,  proto se nejednalo o šifrování
      v pravém slova smyslu, ale o pouhé kódování.

          O  skutečném   šifrování   lze   mluvit  až u  postupů,  u nichž
      zašifrovaný   výstup  závisí  nejen  na  obsahu  vstupního   souboru
      (nazývaného  otevřený  text), ale také na parametru  nazývaném klíč.
      Pokud  se pro  šifrování i dešifrování  používá  stejný  klíč,  musí
      být udržován v tajnosti a proto mluvíme o šifrování s tajným  klíčem
      nebo o symetrickém  kryptosystému. Nevýhodou tohoto systému je fakt,
      že tajný klíč musí mít odesílatel i příjemce zprávy.

          Díky tomu, že šifrovaný  výstup  závisí na tajném  klíči,  mohou
      být  algoritmy  šifrování a dešifrování  zveřejněny.  Jejich  trvalé
      utajování  je  prakticky  nemožné a pokud  jsou  skutečně  kvalitní,
      jejich  znalost při dešifrování  zpráv  (pokud se nepodařilo  získat
      klíč nebo pokud není proveditelné  vyzkoušet  všechny  možné  klíče)
      příliš  nepomůže.  Pokud některé firmy přesvědčují  zákazníky o tom,
      že  jejich  šifra  je  bezpečná,  protože je tajná  (někdy  je tento
      přístup  nazýván  "security by obscurity"), bývá to často  způsobeno
      tím, že šifra je ve skutečnosti velmi  slabá a proto musí být tajná.
      Kvalitní  šifra je taková,  která je delší  dobu  známá,  používaná,
      a přesto odolává pokusům o luštění a zlomení.

          Problémy s nutností udržovat klíč v tajnosti a zároveň zajistit,
      aby  byl  k  dispozici  odesílateli  i  příjemci  zpráv,  odstraňují
      asymetrické   kryptosystémy,   které   používají   pro  šifrování  a
      dešifrování   dvojici  různých  klíčů.  Existence  těchto  metod  je
      založena  na  algoritmech,  které  na  základě   jednoho  nebo  více
      náhodných   vstupních   parametrů,  jež  se  po  výpočtu  zapomenou,
      spočítají  dvojici  klíčů. Ovšem i při znalosti  algoritmu a jednoho
      z klíčů je zjištění  druhého  klíče  daleko mimo  možnosti  současné
      výpočetní techniky.

          Každý z uživatelů  asymetrického  kryptosystému  tak má  dvojici
      klíčů, z nichž  jeden  (soukromý  klíč)  udržuje  v tajnosti a druhý
      zveřejní. Proto se tento  způsob  šifrování také nazývá  šifrování s
      veřejným  klíčem. Díky tomu, že je možné šifrovat  libovolným klíčem
      z dvojice a dešifrovat druhým, existují dva způsoby použití:

          Zprávu  zašifrovat  použitím  cizího  veřejného  klíče.  Tím  se
      zajistí  utajení  zprávy,  protože ji může dešifrovat pouze vlastník
      příslušného soukromého klíče.

          Zprávu  šifrovat  použitím  vlastního  soukromého  klíče. Tím se
      utajení  nezajistí,  protože pro dešifrování zprávy se používá klíč,
      který je veřejně  přístupný.  Dosáhne se však autentizace --- zpráva
      po dešifrování  určitým  veřejným  klíčem  dává smysl  právě  tehdy,
      když  ji  zašifroval   vlastník   odpovídajícího  soukromého  klíče.
      Protože v tomto  případě není cílem  utajení  zprávy, je možné místo
      zašifrování  připojit ke zprávě pouze (soukromým klíčem) zašifrovaný
      kontrolní součet textu zprávy, tak zvaný digitální  podpis.  Kdokoli
      může spočítat  kontrolní součet zprávy a porovnat jej s dešifrovaným
      podpisem.  Jestliže  kontrolní  součet  závisí na obsahu  zprávy tak
      nepředvídatelným  způsobem, že není možné zprávu  upravit aniž by se
      součet  změnil, pak souhlas  kontrolních součtů  zaručuje, že zprávu
      skutečně podepisoval člověk, který vlastní příslušný  soukromý klíč,
      a že od té doby nebyla zpráva změněna.

          S použitím  asymetrického  kryptosystému lze přes  nezabezpečený
      komunikační kanál  provádět i další zdánlivě  nemožné věci (viz CHIP
      1995/08).

                                  Program PGP

          PGP je program pro šifrování a autentizaci textových i binárních
      souborů. Byl vytvořen  Philipem  Zimmermannem v roce 1991.  Autorovi
      vynesl PGP soudní řízení a díky zákazu vývozu bezpečných šifrovacích
      technologií z USA je nadále  vyvíjen ve dvou kompatibilních  řadách,
      jedné  pro  USA,  druhé  pro  zbytek  světa.  Stal  se  neoficiálním
      standardem  pro  šifrování  a autentizaci  e-poštovních a  newsových
      zpráv.  Je k dispozici  ftp://ftp.ifi.uio.no/pub/pgp/  ve  zdrojovém
      i binárním  tvaru pro  všechny  běžné  platformy  --- MS DOS,  OS/2,
      UNIXy, VMS, Macintosh, Amiga, Atari ST.

          Nejnovější  verzí na počátku  roku 1998 je PGP 5.5,  ovšem  díky
      nevyjasněným  otázkám   kompatibility,   licencí,  apod.,  je  zatím
      doporučována verze 2.6.3i.

          PGP šifruje  vlastní  zprávu  nebo  soubor  rychlou  symetrickou
      šifrou IDEA s náhodně  vygenerovaným tajným klíčem.  Použitý klíč je
      zašifrován  asymetrickou šifrou RSA a uložen do výsledného  souboru.
      Tím  se  získají  výhody  šifrování s tajným  klíčem  při  rychlosti
      šifrování tajným klíčem. Pro vytváření digitálních podpisů je použit
      algoritmus MD-5.

                                Úvodní nastavení

          Pokud   nevyhovuje   implicitní   umístění   souborů   s  klíči,
      konfiguračního souboru  config.txt a další souborů v adresáři /.pgp,
      je třeba před použitím PGP nastavit  proměnnou  prostředí PGPPATH na
      cestu k adresáři, kde budou tyto soubory.

          Proměnnou PGPPATH bude třeba obvykle nastavit v jiných systémech
      než je UNIX, stejně jako proměnnou TZ, která musí obsahovat správnou
      časovou zónu (v České republice stačí  hodnota -1 pro zimní a -2 pro
      letní čas).

                        Vytvoření vlastní dvojice klíčů

          Pro  práci s PGP je nutné  nejdříve  vygenerovat  svoji  vlastní
      dvojici klíčů:

      pgp -kg

          Program  PGP  se  zeptá  na  počet  bitů  klíče  (v  současnosti
      je  doporučována  délka  1024  bitů),  vaši  identifikaci  -- jméno,
      příjmení a něco, co zajistí jednoznačnost (nejlépe  e-mailová adresa
      -- bývá  zvykem ji psát mezi <>;  pokud ji nemáte, pak například
      telefonní  číslo),  pak se  zeptá  na  heslo  (pass  phrase),  které
      zabraňuje, aby cizí osoba, která se dostane k vašemu počítači, mohla
      používat váš soukromý  klíč, a na závěr vás požádá o mačkání  kláves
      a vygeneruje  dvojici klíčů podle časových  intervalů, které uplynou
      mezi stisky kláves a podle stisknutých  kláves.  Přístupové heslo si
      musíte pamatovat. Neexistuje způsob, jak zapomenuté přístupové heslo
      zjistit!

          Soukromý  klíč  udržujte v tajnosti,  veřejný  v  textové  formě
      (získané příkazem pgp -kxa) zveřejněte (uložte jej do souboru .plan,
      aby jej bylo  možné  zjistit  službou  finger,  umístěte jej na svou
      WWW stránku, umístěte jej na server PGP klíčů http://wwwkeys.pgp.net
      nebo   http://www.pgp.cz/pgpnet/,   rozešlete  jej  svým   partnerům
      e-poštou, apod.).

          Soukromé klíče jsou uloženy v souboru  .pgp/secring.pgp, veřejné
      v /.pgp/pubring.pgp.

                               Šifrování souboru

          Pro zašifrování  souboru  musí být použit  veřejný  klíč  osoby,
      která bude soubor dešifrovat:

pgp -e soubor ID_adresáta
pgp -ea soubor ID_adresáta

          Jako ID_adresáta stačí uvést libovolný podřetězec  identifikace
      adresáta.  První  příkaz  vytvoří  binární  soubor  a uloží  jej  do
      souboru  soubor.pgp, druhý vytvoří  textový  soubor  (který je možné
      poslat například e-poštou) a uloží jej do souboru soubor.asc. Výstup
      v textovém tvaru můžete také vyžádat uvedením řádku

armor=on

          v souboru  config.txt.  Součástí  šifrování  je i komprimace  --
      binární  soubor, který vznikne  zašifrovaním bývá kratší než původní
      soubor.  Pokud se šifruje  textový  soubor, který má být přenesen na
      systém,  který používá  odlišné  znaky pro konec  řádku, je třeba do
      voleb  doplnit  písmeno t. Parametrem -m požádáme, aby soubor  nebyl
      při  pozdějším  dešifrování  ukládán na disk, ale pouze  zobrazován;
      účelem  volby je zabránit  tomu,  aby  nezkušený  příjemce  zanechal
      rozšifrovaný  soubor  někde na disku,  nikoli  aby zkušený  uživatel
      nemohl zprávu uložit do souboru.

          Soubor je také možné příkazem

pgp -c soubor

          pouze zašifrovat (pro uložení na disku) symetrickou šifrou IDEA.

                               Podepsání souboru

          Příkazy

pgp -s soubor [ -u váš_ID ]
pgp -st soubor [ -u váš_ID ]
pgp -sa soubor [ -u váš_ID ]
pgp -sta soubor [ -u váš_ID ]

          podepíšou soubor vaším soukromým klíčem. Je-li uvedena volba -a,
      bude  výsledný  soubor  textový  se jménem  soubor.asc,  jinak  bude
      binární se jménem soubor.pgp. Parametr -u váš_ID se použije, máte-li
      více  soukromých  klíčů.  Volba -t  oznamuje,  že vstupní  soubor je
      textový a že znaky konce řádků mají být konvertovány podle zvyklostí
      příslušného  systému. Pouze poslední z příkazů  vyprodukuje  čitelný
      soubor s podpisem.

          Příkazy pro zašifrování a podepsání je možné spojit:

pgp -es[t][a] soubor ID_adresáta [-u váš_ID]

          Ve všech  předchozích  případech je možné  pomocí  parametru  -o
      soubor  stanovit  jiné  jméno  výstupního  souboru   (není-li  jméno
      s příponou, doplní se .pgp nebo .asc).

                         Dešifrování a ověření podpisu

          K dešifrování,  případně  autentizaci  souboru nebo došlé zprávy
      slouží jediný příkaz:

\begin{verbatim}
pgp zpráva -o výstup
\end{verbatim}

          Program PGP sám rozpozná, jaké operace má provést.

                         Podepisování binárních souborů

          PGP umožňuje  podepisovat binární soubory tak, že soubor zůstane
      nezměněn, a podpis se uloží do zvláštního souboru:

pgp -bs soubor
pgp -bsa soubor

          V prvním případě se uloží binární podpis do souboru  soubor.sig,
      ve  druhém  textový do souboru  soubor.asc.  Autentizace  souboru se
      provede takto:

pgp soubor.asc soubor
pgp soubor.pgp soubor


                                 Práce s klíči

          Jako  nutné  zlo s sebou  PGP  přináší  potřebu  práce s  klíči.
      Příkazy

pgp -k
pgp -kv [ ID ]

          vypíší  po  řadě  nápovědu  pro  práci  s klíči  a seznam  klíčů
      (jejichž  identifikace  obsahuje  řetězec  ID)  obsažených  ve vašem
      souboru  veřejných  klíčů. Pro výměnu  klíčů jsou  potřeba  příkazy,
      které  umožní  vypsání klíče do souboru a načtení  klíče ze souboru.
      Vypsání zajistí jeden z příkazů

pgp -kx ID soubor
pgp -kxa ID soubor

          První příkaz zkopíruje klíč jehož identifikátor obsahuje řetězec
      ID ze  souboru  veřejných  klíčů a uloží  jej do  binárního  souboru
      soubor.pgp, druhý  zkopíruje klíč do textového  souboru  soubor.asc.
      Klíč samozřejmě v souboru veřejných klíčů zůstává.

          Přidání klíčů do souboru veřejných klíčů zajistí příkaz

pgp -ka soubor

          Zadaný soubor  obsahující jeden nebo více veřejných  klíčů, může
      být textový i binární.

          V nesymetrických  kryptosystémech je sice možné předávat veřejné
      klíče po nezabezpečeném  komunikačním kanálu, je však nezbytně nutné
      zabránit  zcizení vašeho soukromého klíče, ale také zaručit  pravost
      klíčů!  Pokud byste  chtěli  komunikovat s osobou B a osoba C by vám
      poskytla  svůj klíč,  který by vydávala za klíč osoby B, bude moci C
      luštit vaše zprávy pro B.

          Protože ne vždy je možné  získat  veřejný  klíč  přímo  od  jeho
      majitele a o klíči  získaném ze sítě nemůžeme mít nikdy stoprocentní
      jistotu, že není  podvržený,  PGP umožňuje  vypsání  "otisku  klíče"
      -- šestnáctibytové hodnoty zapsané v šestnáctkové soustavě, který je
      možné přidat do podpisu v e-poště, vytisknout na vizitku nebo ověřit
      telefonicky:

pgp -kvc ID

          Kromě  toho  existuje   mechanismus  podepisování  klíčů,  který
      umožňuje, aby kdokoli, kdo  bezpečně  (tj.  pokud  možno při osobním
      kontaktu)  získal  něčí klíč,  podepsal  tento klíč umístěný ve svém
      souboru veřejných klíčů příkazem

pgp -ks ID

          Pokud   získáte   klíče   podepsané   někým,  komu   důvěřujete,
      že podepisuje  pouze  ověřené  klíče,  můžete  tyto klíče  považovat
      za pravé.

          Vypuštění  klíče se zadaným ID ze  souboru  veřejných a případně
      i soukromých klíčů provede příkaz:

pgp -kr ID

          Neprovádějte  tento  příkaz na vlastní  klíč  (uložený v souboru
      soukromých klíčů), pokud jej chcete ještě někdy použít!

          Jestliže dojde k prozrazení  vašeho  soukromého  klíče, je nutné
      příkazem

pgp -kd váš_ID

          vygenerovat  potvrzení,  že  klíč  se  zadaným  ID je  neplatný.
      Potvrzení je třeba  rozeslat  lidem,  kteří  mají váš veřejný  klíč,
      aby si jej přidali do svého souboru  veřejných klíčů pomocí pgp -ka,
      a tím váš klíč zneplatnili.

          Základní informace o PGP naleznete na adrese http://www.pgp.cz.


            výheň