Vyšlo na Lupě, 21.3.2001
Vytištěno z adresy: http://www.earchiv.cz/b01/b0321001.php3

Prolomení elektronického podpisu? Ale kdepak!

Odborníci ze společnosti ICZ zjistili "závažnou bezpečnostní slabinu mezinárodního významu" ve formátu OpenPGP. O co přesně se jedná? Jaký to má vztah k elektronickým podpisům jako takovým? Přináší to nějaké důsledky pro zákon o elektronických podpisech?

Soudě podle některých titulků včerejších deníků nastal málem konec světa - došlo k prolomení elektronických podpisů, a nikdo si již nemůže být jist svou identitou v on-line světě, včetně svých osobních dat a přístupu k bankovních účtů. Bylo zajímavé sledovat, jak se původní informace při svém průchodu masovými médii postupně transformovala, až z toho vzniklo něco, co hraničí snad i s poplašnou zprávou. Nejdále asi zašli v Lidových novinách, kde to vzali opravdu zgruntu, když napsali že "dva experti jako první na světě sestavili program, který je schopen za několik vteřin nabourat elektronický podpis. Ten umožňuje "zakódovat" a "otevřít" důvěrné počítačové dokumenty při elektronickém obchodování a styku s úřady prostřednictvím internetu".

Mediálními aspekty celé této kauzy se zabývá samostatný článek, proto se zde zaměřím spíše na věcné aspekty - na to, o co vlastně jde, a co se lidem z ICZ podařilo najít.

Není elektronický podpis jako elektronický podpis

Elektronický podpis je něco, co lze přirovnat k efektu (konkrétně: dosažení identifikace a autentikace autora určitého dokumentu, jeho integrity a neodmítnutelnosti), s tím že tohoto efektu lze v principu dosáhnout více různými způsoby. Náš platný zákon o elektronickém podpisu, stejně jako prakticky všechny zahraniční zákony, poněkud zužuje možná řešení, když předpokládá že tato jsou založena na tzv. asymetrickém šifrování, neboli na použití dvojice vzájemně komplementárních klíčů (privátního a veřejného).

I zde by stále připadalo v úvahu více různých řešení. Jedním z nich je i systém PGP (Pretty Good Privacy), vyvinutý Philipem Zimmermannem v roce 1990 pro potřeby bezpečného přenosu prostřednictvím běžné (nezabezpečené) elektronické pošty. Lze s ním šifrovat přenášená data tak, aby se zajistila jejich důvěrnost, ale stejně tak jej lze použít i pro potřeby podepisování (zajištění autenticity, integrity a neodmítnutelnosti). Důležité ale je, že systém PGP opírá svou důvěryhodnost, přesněji důvěryhodnost svých certifikátů, o vyjádření důvěry od co největšího počtu dalších uživatelů (jejich výroky vytváří doslovnou "pavučinu důvěry", anglicky: web of trust). To je principiálně odlišný přístup od toho, který předpokládá (resp. vyžaduje) zákon o elektronickém podpisu - ten počítá s existencí tzv. certifikačních autorit, které budou vydávat příslušné certifikáty (v zásadě spojení veřejného klíče a identity konkrétní osoby) a budou ručit za jejich pravost (za správnost vazby mezi veřejným klíčem a identitou osoby). Z tohoto principiálního důvodu nemůže být systém PGP použit jako technologie pro elektronické podpisy ve smyslu platných zákonů. Tudíž ani elektronické podpisy vytvořené pomocí PGP nemohou mít právní relevanci, kterou zákon o elektronickém podpisu přináší. A tudíž ani případné problémy systému PGP nemohou mít vliv na vlastnosti elektronických podpisů "podle zákona".

Na druhou stranu to vůbec neznamená, že by systém PGP byl k ničemu. Nejlepším dokladem jeho smysluplnosti a užitečnosti je skutečnost, že se již více jak 10 let úspěšně používá, především pro zvýšení důvěryhodnosti komunikace prostřednictvím elektronické pošty, ale také pro jiné přenosy i pro uchovávání dokumentů či jiných dat která mají zůstat utajena nepovolaným a/nebo zabezpečena el. podpisem.

Navíc u systému PGP dnes již existuje více různých implementací - kromě tradiční freewarové existují i implementace komerční, vhodné pro komerční použití (protože používají patentované algoritmy, které nelze používat zdarma pro komerční účely). OpenPGP pak je freewarová verze založená na verzi PGP 5.0, připravovaná pro standardizaci v Internetu (tj. je na cestě stát se standardem Internetu).

Co se vlastně stalo?

Nález "závažné bezpečnostní slabiny mezinárodního významu" se týká formátu OpenPGP jako jedné konkrétní implementace - a je-li tato na cestě stát se internetovým standardem, jde určitě o velmi významný nález. Na druhou stranu je třeba správně porozumět tomu, kde a v čem se "slabina" nachází a co vlastně může být prolomeno.

Nalezená "slabina" se vůbec netýká fungování samotného PGP, přesněji prolomení šifrovacích algoritmů. Nalezená "slabina" se týká něčeho mnohem prozaičtějšího, co bych popsal pomocí následujícího příměru:

představme si trezor s pořádným zámkem a klíčem. Tento klíč je standardně umístěn v bezpečnostní schránce, která je také určitým způsobem chráněna, tak aby se do ní mohl dostat jen oprávněný vlastník, a proto může být umístěna na veřejně přístupném místě.

Slabinou, na kterou nyní přišli v ICZ, je možnost určitým konkrétním postupem získat otisk klíče z této bezpečnostní schránky.

Pokud se nyní vrátíme "do reálu", trezoru jako takovému obecně odpovídá zabezpečení dokumentů a jiných dat pomocí PGP jako takového, a klíči odpovídá privátní (podepisovací) klíč, používaný při podepisování (vytváření elektronického podpisu). PGP samozřejmě počítá s tím, že takovýto klíč musí být někde uložen, a tak (formát OpenPGP) přesně definuje v jakém tvaru a jak má být zašifrován v rámci vhodné datové položky (tzv. Secret Key Packet-u), aby k němu měl přístup jen jeho oprávněný vlastník a nikdo jiný.

Datový údaj s takto zašifrovaným privátním klíčem (Secret Key Packet) v našem příměru odpovídá bezpečnostní schránce, a díky zašifrování svého obsahu může být umístěn i na nějakém veřejně přístupném místě. V praxi například na sdíleném síťovém disku, ke kterému je možný přístup z více uzlových počítačů nějaké lokální sítě, a třeba i více uživateli.

Nyní ale k tomu co se stalo - odborníci z ICZ zjistili, že za určitých okolností lze z takovéto "bezpečnostní schránky" (Secret Key Packetu) odvodit hodnotu klíče, který je v ní obsažen - tedy privátního podepisovacího klíče. To pak má samozřejmě velmi nepříjemné důsledky v tom, že jeho aktuální vlastník se může začít podepisovat jménem oprávněného vlastníka klíče (ale ne elektronickým podpisem ve smyslu zákona, viz výše).

Jak probíhá útok?

Konkrétní způsob, jakým může být získán klíč z "bezpečnostní schránky", byl na včerejší tiskovce s novináři v hrubých rysech popsán. Postup, v terminologii kryptologů označovaný jako "útok", je následující:

  • útočník si zkopíruje aktuální stav "bezpečnostní schránky" (Secret Key Packetu) a poté určitým konkrétním způsobem modifikuje (naruší) jeho obsah
  • oprávněný majitel klíče jej musí alespoň jednou použít pro podepsání nějaké zprávy (tj. musí vzít klíč z takto pozměněného paketu a s jeho využitím podepsat nějakou zprávu).
  • útočník musí získat kopii podpisu takto podepsané zprávy (alespoň jedné)
  • útočník vezme podpis a dříve získanou kopii paketu (ještě před jeho modifikací) a tu předá jako vstup svému programu, který z těchto vstupních dat dokáže určit správnou hodnotu privátního podepisovacího klíče (ve velmi krátkém čase, např. do minuty).

Co je tedy původní příčinou celého problému, resp. slabiny? Opravdu nejde o žádné prolomení šifer, ale o nesprávné zašifrování a umístění jednotlivých položek v paketu (Secret Key Packet). Tak nešikovné, že vhodnou manipulací je možné odvodit původní obsah, aniž by bylo nutné cokoli dešifrovat.

Jaké je z toho ponaučení?

Praktická použitelnost celého tohoto postupu má několik nezbytných předpokladů, konkrétně:

  • uživatelé (vlastníci klíčů) musí nechávat své privátní podepisovací klíče na veřejně přístupném místě, byť v zašifrované podobě, kde si může útočník pořídit kopie paketu. Doposud to bylo považováno za vcelku únosné řešení, protože uživatelé věřili způsobu jakým je klíč v paketu zašifrován. Nalezení výše popsané slabiny by mělo být mementem a varováním vůči uživatelům, aby tak nečinili, a to zřejmě nejen do doby než bude slabina odstraněna novější verzí PGP, resp. paketu se zašifrovaným klíčem, případně než bude vytvořena dočasná záplata (patch) na stávající verze (vše bylo testováno na PGP verze 7.03.). Zopakujme si toto ponaučení ještě jednou - uživatelé by neměli nechávat svá citlivá data (včetně privátních klíčů) na veřejných místech, byť v zašifrované podobě, protože bez ohledu na spolehlivost či nespolehlivost jejich zašifrování tím zvyšují své potenciální ohrožení. Pokud by si uživatelé uchovávali své privátní klíče někde neveřejně, kam útočník nemá přístup - například na čipové kartě kterou nosí neustále u sebe - pak by je ani výše uvedená slabina nemohla ohrozit
  • poté, co útočník modifikuje paket s klíčem a oprávněný uživatel tento klíč použije, bude jeho podpis vyhodnocen jako nesprávný resp. neplatný (chybný). To by mělo být pro uživatele významným signálem, srovnatelným se zjištěním že jeho privátní klíč byl prozrazen. Chybný podpis sice může být způsoben nějakým technickým problémem, ale stejně tak mohl být způsoben narušením (modifikací) paketu a tudíž něčí snahou získat cizí klíč.

Jaké to má důsledky?

Bezpečnostní slabinu, kterou nalezli odborníci ze společnosti ICZ, rozhodně není možné brát na lehkou váhu. V dnešní době totiž formát OpenPGP používá v rámci různých aplikací významný počet uživatelů, kteří mohou mít své privátní podepisovací klíče umístěné ve "zranitelných" paketech na veřejně přístupných místech. I když se nebude jednat o elektronické podpisy "ze zákona", stále může případné zneužití těchto klíčů přinést jejich oprávněným vlastníkům určitou škodu či aspoň nepříjemnosti.

Na druhé straně není rozumné tuto slabinu přeceňovat a chybu v jedné konkrétní implementaci, která bude nejspíše velmi brzy napravena, rozšiřovat na celý systém elektronických podpisů jako takový a na jeho důvěryhodnost. To by bylo opravdu nešťastné.

Může se něco podobného stát elektronickým podpisům "ze zákona"?

Zajímavou otázkou jistě je, zda se může něco podobného stát i v případě elektronických podpisů "ze zákona", neboli těch které vyhovují podmínkám zákona a mají pak i příslušnou relevanci.

Zde je nutné si zdůraznit, že zákon o elektronickém podpisu vznáší konkrétní požadavky na spolehlivost prakticky všeho, co je v souvislosti s elektronickými podpisy používáno, a pamatuje také na konkrétní postupy, jak kontrolovat dodržení těchto požadavků. V praxi to znamená, že kromě certifikační autorit budou pečlivě zkoumány také vlastnosti nástrojů a prostředků, které budou používány, včetně používaných programů. Příprava prováděcích vyhlášek k elektronickému podpisu, dnes tolik kritizovaná za svou pomalost, je právě o tom jak přesně stanovit všechny požadavky a jak zajistit skutečně spolehlivou kontrolu jejich dodržování.