Historie

Podle dostupných komentářů ve zdrojovým kódu od samotného autora Phila Zimmermanna, se zjistilo, že na šifrovacím programu se začalo pracovat již v roce 1988. Až o 3 roky později, tedy v roce 1991, byla vydána první oficiální verze tohoto kryptografického programu, jehož zdrojový kód Phil Zimmermann zpřístupnil na veřejně dostupném FTP serveru volně ke stažení. Jednalo se o první široce dostupný program implementující asymetrickou kryptografii. První původní verze programu PGP byla vystavěna na šifře Bass-O-Matic, kterou nadesignoval samotný autor. Poté co však bylo poukázáno na několik vážných slabin šifry Bass-O-Matic, tak ji Zimmermann nahradil algoritmem IDEA.

V roce 1993, krátce po rozšíření kódu PGP i za hranice Spojených státu amerických, začala Phila Zimmermanna vyšetřovat FBI. V té době zákony Spojených státu totiž přísně zakazovaly vývoz silného kryptografického softwaru v elektronické podobě za své hranice. Na kryptografii se aplikovala stejná pravidla jako na zbraně, tudíž bylo velmi náročné získat povolení pro vývoz takovéto silné kryptografie. Nicméně tuto přísnou regulaci Zimmermann dokázal nápaditě obejít tím, že zdrojový kód vydal skrze nakladatelství MIT Press ve formě tištěné knihy, které se již přes hranice USA mohly převážet zcela legálně. Tím šifrovací program rozšířil do celého světa. Americké vládě tedy nezbývalo nic jiného než stíhání pozastavit, jelikož výše zmíněná regulace se vztahovala v té době pouze na software v elektronické podobě. Po celém světě se pak nalezl dostatek dobrovolníků, kteří 6000 stran kódu naskenovali a přepsali.

Poté co byl program volně zpřístupněn, okamžitě získal nespočetné množství uživatelů po celém světě. PGP si získalo svou funkčností a bezpečností i podporovatelé z řad disidentů v totalitních zemích, novinářů, aktivistů. Bruce Schneier (známý americký odborník na kryptografii) roku 1996 označil tehdejší verzi PGP jako „volně dostupný kryptosystém, který je nejblíže kryptosystémům vojenské úrovně“ [SCHNEIER, 1995, s. 587]

Šifrování zpráv

Diagram ilustrující fungování PGP

PGP kombinuje nejlepší vlastnosti jak konvenční (symetrické) kryptografie, tak i kryptografie s veřejným klíčem. Matematicky je systém PGP extrémně komplikovaný, dá se však shrnout pro obecnou představu následovně:

Chce-li odesílatel zprávu zašifrovat, PGP nejdříve zkomprimuje otevřený text. Důvod této komprimace není nijak překvapující, komprese šetří čas přenosu dat (což bylo aktuální především v době vzniku PGP), šetří místo na disku a zároveň posiluje bezpečnost kryptografie. V případě, že je zpráva příliš krátká, komprese je vynechána. Následně je vygenerován tzv. „session key“, který je vytvořen z náhodných 128-bitových čísel. Jedná se o jednorázový tajný klíč, který bezpečným a rychlým algoritmem (vychází z algoritmu CAST-128, IDEA nebo 3DES) zašifruje zkomprimovaný otevřený text. Tento „session key“ je poté připojen k zašifrované zprávě a celý obsah zprávy (tedy zašifrovaný a zkomprimovaný text + „session key“) projde dalším šifrováním pomocí veřejného klíče příjemce zprávy.

Pro přehlednost se šifrovací část dá shrnout do 5 následujících bodů:

  1. Komprese otevřeného textu
  2. PGP vytvoří jednorázový náhodný klíč nazývaný „session key“
  3. Pomocí „session key“ je otevřený text zašifrován
  4. Tento klíč („session key“) je přiložen k zašifrované zprávě
  5. To vše (zašifrovaný text + „seassion key“) je zašifrováno veřejným klíčem příjemce

Dešifrování pak pracuje v opačném pořadí. Příjemce použije svůj soukromý klíč k obnovení „session key“, který software PGP poté použije k dešifrování zkomprimované zprávy. Zpráva je následně dekomprimována a příjemce získá původní otevřený text.

Digitální podepisování

Diagram ilustrující digitální podepisování

Digitální podpis umožní příjemci zprávy ověřit, zda zpráva dorazila od odesílatele bez jediné sebemenší změny. Digitální podpis tak poskytuje autenticitu a zároveň integritu dat. Tyto vlastnosti jsou v některých případech nezbytně nutné a PGP nabízí způsob, jak je zajistit.

  1. Odesílatel vytvoří zprávu
  2. Pomocí algoritmu SHA-1 se vygeneruje 160-bitový hash kód zprávy, který je jedinečný pro konkrétní zprávu (pokud by se změnil jediný bit ve zprávě, kompletně se změní i celý hash kód)
  3. Hash kód je zašifrován pomocí RSA nebo DSS s použitím soukromého klíče odesílatele
  4. Tento zašifrovaný hash kód je přiložen ke zprávě
  5. Příjemce použije odesílatelův veřejný klíč pro dešifrování a obnovení hash kódu
  6. Následně příjemce vygeneruje nový hash kód pro zprávu a porovná ho s dešifrovaným hash kódem přiloženým odesílatelem
  7. Pokud se tyto dva kódy shodují, zpráva nebyla pozměněna

Síť důvěry

Koncept sítě důvěry (anglicky Web of trust) byl popsán Philem Zimmermannem v roce 1992 v manuálu pro PGP verze 2.0. Jedná se o ověřování důvěryhodnosti veřejných klíčů v PGP kryptografických systémech.

V malých, uzavřených systémech (například malá firma) je snadné zjistit, zdali veřejný klíč opravdu patří člověku, který o něm prohlašuje, že je jeho. Funguje zde totiž přímá důvěra – model kdy se uživatelé přímo znají a veřejný klíče si mohou přímo vyměnit. Nebo zde funguje jistá hierarchie, tedy autorita, která se zaručuje za pravost klíčů. Nicméně v případě, že uživatelé musí komunikovat s lidmi, se kterými se nikdy v životě neviděli, nelze model přímé důvěry použít. Alternativou k certifikační agentuře pak může být právě decentralizovaná síť důvěry. Principem je, že uživatel se může spoléhat na ověření totožnosti nejen tam, kde ho provedl on sám, ale i tam, kde ho provedli jiní.

Uživatel si může nechat podepsat svůj veřejný klíč jinými lidmi. Čím víc podpisů získá, tím je pravděpodobnější, že je tím, za koho se vydává. Tento koncept navíc počítá s tím, že úroveň důvěry si určuje vždy sám uživatel. Je však nepraktické snažit se shromažďovat obrovské množství ověření svého klíče. Proto v dobře fungující síti důvěry stačí jen několik málo ověření, podle určitých pravidel. Jednotlivé klíče totiž disponují různými úrovněmi.

Existuje 5 úrovní důvěryhodnosti, které může veřejný klíč získat:

  • Unknown - neznámá úroveň (jedná se o výchozí úroveň každého nového klíče)
  • None – nedůvěryhodný klíč
  • Marginal – částečně důvěryhodný klíč (vhodné nastavit těm, za které se nemůžete plně zaručit)
  • Full – zcela důvěryhodný klíč (vhodné nastavit těm klíčům, kterým daný uživatel plně důvěřuje a důvěřuje i počínáním jejich vlastníků)
  • Ultimate – bezmezně důvěryhodný klíč (jedná se uživatelův klíč)

Pro ověření cizího veřejného klíče musí být splněny dvě podmínky:

  1. Klíč musí být podepsán vaším klíčem, zcela důvěryhodným klíčem nebo třemi částečně důvěryhodnými klíči
  2. Zpětná cesta v síti od daného klíče k tomu vašemu smí být nejvýše pět kroků

Dnešní nedostatky PGP

Aktuálně PGP již začíná nepostačovat nárokům dnešní doby a většina jeho uživatelů od něj odchází k jiným službám. Jedním z důvodů může být i to, že výzkumníci z Munster University of Applied Sciences po provedené analýze zveřejnili podrobnosti o bezpečnostní chybě nazývané EFail, díky které se po odcizení poštovních schránek podařilo dešifrovat zprávy. Ačkoliv odborníci argumentují, že se nejedná o příliš závažnou chybu, kterou by šlo snadno využít, částečně to PGP ubírá na důvěryhodnosti. Dalším faktem je, že PGP bylo vyvinuto již v roce 1991 a věda o kryptografii od té doby dramaticky pokročila, nicméně tento kryptografický software se příliš nezměnil. Všechny nové implementace PGP totiž musí zůstat stále kompatibilní i s funkcemi starších nástrojů, což PGP dělá zranitelným. Jednou z nevýhod je, že pokud teoreticky dojde k porušení bezpečnosti, toto porušení potenciálně útočníkovi otevírá veškerou dřívější šifrovanou komunikaci uživatele, a ne pouze samotnou napadenou zprávu jak by tomu bylo například u některých moderních kryptografických softwaru (za předpokladu, že uživatel nezměnil svoje klíče).

Hlavní problém PGP však spočívá jinde než v jeho bezpečnosti, a to především v jeho nízké uživatelské přívětivosti. Jednak je velice obtížné používat PGP software se stejnými klíči na více různých zařízeních. Dále pak e-mailová komunikace v dnešní době již není dominantní a uživatele spíše využívají tzv. instant messaging komunikátory, u kterých je značně nepraktické zprávu pomocí PGP šifrovat „ručně“ a poté zašifrovaný text překopírovat do jiného komunikátoru.

Současně již existují pokročilejší a zároveň přívětivější služby, které nabízejí například i šifrování hlasových hovorů, či videochatu. Ať už se jedná služby s end-to-end šifrováním jako je například WhatsApp, Telegram anebo stále více oblíbenější služba Signal.

Ukázka zakodované zprávy pomocí PGP

BEGIN PGP MESSAGE

Version: PGPfreeware 7.0.3 for non-commercial use hQCMAySfJ/WKduXtAQP+LozPuin1w7vWqUGVsLREgXlSlY5i9aKbMpo8j4e/LUYA 6msX7CQudmdkI3ZkAWu7wISpHbYLvphV0D7cMHj6+ajE9e0nUM7crLjt6cHy2SUs 1HY0YlScV7WS92s8UGHSWJtJLJMaDeI4nhlKu6eKjbg5rqhzx9Hu0EUkV2/Am0Wk HNGEseHcbdqJmwpuhgFvcXPE3a5sP1MKZqWToD8= =sT+H

END PGP MESSAGE