PGP.CZ HomePage
Public Key Server
PGP Background
Cíle projektu pgp.cz
Administrativní a
technický kontakt
Návrh zákona
o digitálním podpisu
Co je PGP
Úvod do šifrování
Historie a současnost
  Verze PGP
  Historie a legalita
  Jak PGP pracuje
  Používání PGP
  Jazyková podpora
  Integrace PGP
  Odkazy
  Phil Zimmermann
v Praze
  Zimmermann
versus Cimrman
Licence PGP
Download
Neomezená
komerční verze
Správa veřejných
klíčů PGP
Vyhledat klíč
Registrovat klíč
Zrušit klíč
Mail rozhraní serveru
Jak vygenerovat klíč
Podpora uživatelů
Často kladené dotazy
Novinky a informace
Mailing List
Máte dotaz?
Další informace
Zimmermann Telegram
Crypto-gram
                            .


Jak PGP pracuje

PGP je kombinovaný šifrovací systém. Navenek se jeví jako program s veřejným šifrovacím klíčem, plně využívající asymetrického šifrování. To se však ve skutečnosti používá pouze pro zakódování klíče symetrické šifry, kterou je pak zašifrována samotná zpráva.  Digitálním podpisem je kontrolní součet zprávy (angl. hash), který je zašifrován asymetrickou šifrou.

Ve verzích 2.x a při použití RSA klíče ve verzích 5.x jsou použity tyto algoritmy: RSA jako asymetrická šifra, IDEA jako symetrická šifra a MD5 pro kontrolní součty podpisu (hash). Použijete-li nový typ klíče DH/DSS, bude se šifrovat asymetrickým algoritmem Diffie-Hellman (ElGamalova varianta) a jako symetrickou šifru lze vybrat ze tří variant: IDEA (128 efektivních bitů klíče), TripleDES (168 bitů) nebo CAST (128 bitů). Při podepisování se používá asymetrickí šifra DSS a SHA-1 kontrolní součty (hash).

Symetrické šifrování

Symetrické šifrování je metoda, při které je otevřený text zašifrován s pomocí jistého klíče a může být obnoven jen se znalostí tohoto klíče. Symetrické šifrovací algoritmy se vyvíjejí doslova tisíce let. Většina moderních algoritmů je založena na matematické teorii čísel. Při symetrickém šifrování si musí autor a příjemce nějakým bezpečným způsobem vyměnit klíč. Samotné symetrické šifrování nemůže nikdy problém předání klíče vyřešit.

Rozhodujícím kritériem síly symetrické šifry je délka klíče. Zpráva totiž musí odolat tzv. útoku hrubou silou, který předpokládá prosté vyzkoušení všech možných klíčů. Délka se uvádí v počtu bitů binárního čísla. Má-li tedy šífra sílu 4 bity, je 2^4=16 možných klíčů. Je zřejmé, že tato síla neobstojí. Přestože přidáním jediného bitu se počet klíčů (a tedy šifrovací síla) zdvojnásobí, jsou 40tibitové klíče používané např. v prohlížečích firem Netscape a Microsoft určených pro vývoz z USA dnes poměrně snadno rozluštitelné. Americký bankvoní standard, šifru DES s 56 bity, je dnes již rozbít hrubou silou s vynaložením jen velmi malých prostředků. Dnes nejčastěji používané 128mibitové klíče zaručují odolnost proti útokům hrubou silou minimálně na několik desítek let dopředu.

Asymetrické šifrování

Teprve v 70. letech 20. století byl navržen první asymetrický šifrovací algoritmus. Jeho princip je jednoduchý: zpráva se zašifruje jedním klíčem, rozšifrovat se však musí jiným klíčem. Navíc ze znalosti prvního klíče nelze zjistit druhý. První klíč může být tedy dán ve známost komukoli (tzv. veřejný klíč nebo veřejná část klíče), zatímco druhý si uchovává vlastník v tajnosti (sokromý klíč nebo soukromá část klíče). Mezi nejznámější asymetrické šifry patří RSA, Diffie-Hellman a DSS.

Délka klíče asymetrické šifry má trochu jiný význam. Asymetrické šifry jsou většinou založeny na nějakých speciálních číslech (např. prvočíslech). Při útoku hrubou silou tedy stačí zkoumat jen tato speciální čísla. Dnes se běžně pracuje s délkou klíče 1024 bitů, avšak pro dlouhodobější použití je lépe zvolit 2048 bitů nebo více.

Jak pracuje RSA

Algoritmus je založen na jednoduché myšlence, že můžeme poměrně snadno vynásobit dvě velká čísla, je však časově velice náročné rozložit takový součin na prvočinitele.

Nalezneme dvě velká prvočísla p a q. Jejich součin označíme n:=p*q. Myšlenka je postavena na malé Fermatově větě, podle které vyjde m^(f(n)+1) mod n=m pro libovolné číslo m v intervalu 1,2,...,n-1, kde funkce f(n) dává počet čísel mezi 1,2,...,n-1 nesoudělných s n (tzv. Eulerova funkce). Indukcí se pak dá dokázat, že také m^(k*f(n)+1) mod n=m pro libovolné přirozené číslo k, protože m^(k*f(n)+1) mod n=m^f(n)*m^((k-1)*f(n)+1) mod n a to je podle indukčního předpokladu m^f(n)*m mod n=m^(f(n)+1) mod n=m. Protože v našem případě f(n)=f(p*q)=(p-1)*(q-1), najdeme dvojici čísel e, d takových, že e*d=1 mod (p-1)*(q-1). Dvojice (e,n) pak bude tvořit veřejný klíč, zatímco (d,n) je soukromá část klíče. Zašifrování zprávy m (maximální délky n) provedeme operací c:=m^e mod n, čímž dostaneme zašifrovanou zprávu c. Rozšifrování je operace m:=c^d mod n. K ověření správnosti algoritmu si stačí uvědomit, že e*d=k*f(n)+1 pro nějaké číslo k, a tedy m^(e*d) mod n=m^(k*f(n)+1) mod n=m.

Příklad: Vezmeme za p, q prvočísla 5, 11. Dostaneme n=5*11=55 a f(n)=4*10=40. Za šifrovací klíč můžeme volit čísla mezi 1-39 nesoudělná s f(n)=40. Zvolíme tedy např. e=17 a najdeme k němu multiplikativní inverzi modulo 40: d=33, e*d=561=14*40+1. Nechť nyní zpráva (může být mezi 1-54) je m=14, zakódujeme ji na 14^17 mod 55=30 491 346 729 331 195 904 mod 55=9. Dekódování pak proběhne podobně: 9^33 mod 55=309 031 543 826 326 123 611 920 641 803 529 mod 55=14.

Veřejnou část klíče znají všichni. Pokud by tedy šlo rozložit n snadno na prvočinitele, získalo by se tak p, q, z čehož by šel pak již odvodit soukromý klíč d. Tento úkol je však pro dostatečně velká čísla prakticky neproveditelný. Je známo, že klíč velikosti 384 bitů byl rozluštěn během několika měsíců neustálé práce několika desítek až stovek spolupracujících počítačů. Běžně používané velikosti klíče 1024 až 2048 bitů jsou dnes zatím bezpečné.

Princip šifry PGP

Jak je vidět z předchozího příkladu, RSA pracuje při poměrně malém základu s vysokými čísly. Šifrování velkých zpráv s pomocí RSA by bylo časově ohromně náročné. Stějně je tomu i u jiných asymetrických algoritmů. PGP tedy kóduje text symetrickým algoritmem, jehož implementace je mnohem rychlejší. PGP nejprve vygeneruje náhodný klíč pro symetrickou šifru, tento klíč zakóduje do zprávy s pomocí veřejného RSA nebo DH klíče příjemce, a celou zprávu pak zakóduje symetrickou šifrou. Příjemce nejprve s pomocí svého soukromého RSA nebo DH klíče zjistí klíč pro symetrickou šifru, s jehož pomocí pak rozkóduje samotnou zprávu.

Elektronické podpisy

PGP řeší také problém ověření obsahu a identifikace autora zprávy tzv. elektronickými podpisy. Nejprve je nutné zvolit nějaký vzor, který umožní ověřit, že zpráva nebyla změněna poté co ji autor sestavil. K tomu slouží algoritmus MD5  nebo SHA-1 pro vytvoření kontrolního součtu zprávy. Tento kontrolní součet, který by při jakékoli změně zprávy byl porušen, se pak přidá ke zprávě, zašifrovaný autorovým soukromým klíčem. Příjemce pak s pomocí autorova veřejného klíče rozkóduje kontrolní součet zprávy a ověří, jestli zpráva nebyla pozměněna (či podvržena).

Správa klíčů

Důležitou součástí PGP je správa klíčů. Uživatel musí mít alespoň jeden pár soukromý klíč-veřejný klíč. Soukromá část zůstává na disku počítače a je zabezpečena heslem. Anglický název passphrase (namísto obvyklého password) naznačuje, že heslo má být dlouhé a tedy nesnadno uhádnutelné. Je dobré použít dlouhé souvětí nebo i několik vět.
Měli byste si také zachovat kopii Vašeho soukromého klíče, protože jeho ztrátou přijdete o možnost přečíst zprávy Vám určené. Tuto kopii uložte na bezpečném místě (je ale také chráněna stejným heslem).

Při komunikaci s jinými osobami budete potřebovat jejich veřejné klíče. Takový klíč má několik atributů:

  1. ID - binární číslo, jednoznačná identifikace, např. 0x59159CF1
  2. User ID - identifikace osoby (skupiny osob), kterým klíč patří. Každý klíč může mít více takových uživatelskách jmen.
  3. Signature - podpis jiným klíčem, vyjádření jistoty jiné osoby, že klíč patří skutečně této osobě. Podpisů může být opět libovolné množství. Podepisují se jednotlivá User ID, dáváte tedy pouze najevo, že podepsané uvedené uživatelské jméno není podvrh.
  4. Photo - od verze 6.0 lze do klíčů vkládat fotografie uživatele ve formátech JPEG a BMP.
  5. Data - samotný klíč, obsah závisí na typu klíče.
Podepsáním cizího klíče vyjádříte jistotu, že daný klíč je pravý, tj. že připojené uživatelské jméno odpovídá skutečnému vlastníkovi klíče. Při práci s každým klíčem Vás PGP upozorní, jestli jste daný klíč podepsali nebo ne a tedy jakou máte v tento klíč důvěru. Pokud klíč podepíšete, můžete dále zvolit míru Vaší důvěry v tento klíč. Podepsaný klíč lze vystavit na Internetu, aby ho mohli používat jiní partneři dané osoby a aby měli od Vás potvrzeno, že máte Vy v tento klíč důvěru.
            1999, SkyNet a.s., Distributor produktů Network Associates, Inc.
            mailto:webmaster@pgp.cz