Praktické implementace PKI

Využití infrastruktury veřejných klíčů (PKI) je obecně považováno za jednu z nejúčinnějších metod technologického zabezpečení základních atributů elektronické konfigurace (integrita, důvěrnost, autenticita, zodpovědnost) postavených na využití kryptografie.

S využitím metody PKI mohou být přenášené zprávy vybaveny při odeslání elektronickým podpisem a zašifrovány, při přijetí je zpráva dešifrována a elektronický podpis ověřen. Vedle přenosů dat a ověření zpráv je možno PKI využít i pro ověření identity uživatelů (autentizace) a pro ochranu komunikačních kanálů (SSL).

V rámci této kapitoly tedy bude pospán hlavní stavební kámen většiny praktických implementací PKI, kterým je protokol SSL/TLS. Ten je využíván protokoly různých vrstev ISO/OSI jako jsou např. protokol HTTPS (zabezpečení webových stránek), VPN (OpenVPN), SSH, FTP, SMTP, POP3 a dalších. Protokol SSL je rovněž využíván v případě autentizace uživatelů prostřednictvím PKI.

Zabezpečení komunikace šifrováním a autentizace komunikujících stran (SSL/TLS)

Hlavním stavebním kamenem většiny praktických implementací PKI je protokol SSL/TLS. Ten je využíván například protokoly HTTPS (zabezpečení webových stránek), VPN (OpenVPN), SSH, FTP, SMTP, POP3 a dalších. Také je SSL protokol využíván v případě autentizace uživatelů prostřednictvím PKI.

Protokol SSL byl vyvinut pro použití na webových stránkách kdy záleží na utajení přenášených dat. Například v aplikacích internetového bankovnictví či při zadávání uživatelského jména a hesla na webových stránkách. SSL je zkratka Secure Sockets Layer. Je to protokol/vrstva, vložená mezi vrstvu transportní (např. TCP/IP) a aplikační (http). Protokol SSL postupem času procházel vyvojém od verze 1 po SSL verze 3. Oficiálním protokolem internetu se však stal až protokol TLS (Transport Layer Security Protocol), také označován jako SSL verze 3.1. Z kryptografického hlediska se jedná o hybridní protokol, tj. používá symetrický i asymetrický kryptosystém. Z hlediska modelu OSI jej lze umístit do relační a prezentační vrstvy, SSL přebírá data od aplikace, v rámci prezentační vrstvy je rozdělí na segmenty, které zašifruje. Před přenosem v rámci relační vrstvy naváže spojení a provede vzájemnou autentizaci stanic. Poté využívá služeb transportní vrstvy k samotnému přenosu dat (tcp i udp na portu 443). Spojením HTTP + SSL vznikl název protokolu HTTPS.

Princip SSL spočívá ve vytvoření zabezpečeného kanálu mezi klientem (prohlížeč) a serverem. SSL umožňuje bezpečnou výměnu informací při inicializaci TCP/IP spojení, při kterém si klient a server ustavují konkrétní bezpečnostní parametry pro následný provoz a vzájemně se autentizují certifikáty. Po ustavení těchto parametrů je veškerá komunikace (http požadavky i http odpovědi) plně šifrována a to včetně URL, které klient požaduje, webových formulářů apod.

SSL protokol v sobě zahrnuje dva subprotokoly. Jedná se SSL Handshake Protocol a SSL Record Protocol. Pomocí SSL Record Protocol se definuje formát, jakým budou data přenášena a SSL Handshake Protocol slouží úvodní výměnu informací.

SSL Handshake Protocol

Protokol SSL používá kombinaci symetrického a asymetrického šifrování. Ve fázi handshake se používá šifrování asymetrické, které poskytuje lepší vlastnosti pro autentizaci. Jeho hlavní nevýhodou je, že je relativně pomalé a náročné na strojový čas ve srovnání se šifrováním symetrickým. Proto je použito jen ve fázi handshake a pro další přenos se používá šifrování symetrické. SSL Handshake zajišťuje autentičnost komunikujících a vyjednání klíčů, je také nazýván key-exchange protocol. Zajišťuje ustavení bezpečné cesty (session) mezi dvěma účastníky. Připravuje tedy parametry pro Record protokol.

Fáze handshake probíhá v následujících krocích:

  1. Klient odešle verzi SSL, informace o šifrách, které používá a náhodně generovaná data.
  2. Server odešle svoji verzi SSL, informace o šifrách, které používá, náhodně generovaná data a svůj certifikát.
  3. Klient pomocí získaného certifikátu ověří důvěryhodnost serveru, pokud tak nelze učinit, je o tom informován uživatel k rozhodnutí, zda spojení ukončit.
  4. Klient vytvoří z dat dosavadní komunikace tzv. premaster secret, zašifruje ho pomocí veřejného klíče serveru získaného z certifikátu a odešle ho serveru
  5. Server použije svůj privátní klíč k dešifrování premaster secret a vytvoří z něj master secret, ze kterého si vygeneruje klíč sezení
  6. Klient si rovněž vytvoří master secret a z něj vygeneruje klíč sezení
  7. Klient zašle zprávu serveru, že další data budou šifrována klíčem sezení a odešle zašifrované sdělení, že fáze handshake byla u něj skončena
  8. Server rovněž zašle, že další data budou šifrována klíčem sezení a odešle zašifrované potvrzení, že fáze handshake byla ukončena a může být zahájen Record Protocol

handshake.gif, 11kB

SSL Record Protocol

Record protocol provádí zapouzdření dat aplikačních protokolů - nejnižší SSL úroveň. Z hierarchicky vyšší OSI vrstvy (např. od HTTP) je převzata zpráva Z, která je zpracována tímto postupem:

  1. Fragmentace Z na segmenty SS o maximální délce 214 bajtů.
  2. Bezeztrátová komprimace segmentu SS do podoby S.
  3. Výpočet autentizačního kódu h segmentu S, kdy h = F(S, Autentizační_klíč) a F je hašovací fukce.
  4. Vytvoření bloku B = S || h.
  5. Zašifrování bloku B symetrickým klíčem sezení.
Zašifrovaný blok je opatřen služebními daty a předán transportní vrstvě k přenosu TCP protokolem. Na přijímací straně se provedou inverzní operace v opačném pořadí. Příjemce zároveň kontroluje jím vypočítané autentizační kódy s přijatými.

Autentizace serveru pomocí SSL/TLS protokolu

SSL umožňuje i komunikaci bez jakékoliv autentizace (tzv. plně anonymní komunikace). Ta se však v praxi téměř nepoužívá. V praxi aplikace téměř vždy vyžadují autentizaci serveru. K autentizaci využívají server i klient certifikáty. Jestliže strana nezašle svůj certifikát druhé straně, znamená to, že se nechce autentizovat.

V případě autentizace serveru zašle server klientovi svůj certifikát, ze kterého klient vyjme veřejný klíč serveru, kterým pak šifruje předběžné sdílené tajemství, které následně zašle serveru. Pomocí soukromého klíče server dešifruje toto předběžné sdílené tajemství, čímž se server zároveň i autentizuje (nikdo jiný než server nemá příslušný dešifrovací soukromý klíč).

V terminologii Handshake protokolu (HP) server zasílá svůj certifikát klientovi ve zprávě certifikát (Certificate)

Autentizace klienta pomocí SSL/TLS protokolu

Autentizace klienta je výrazně jednodušší. Pokud se chce klient autentizovat, zašle serveru postupně zprávy Certificate (obsahuje klientův certifikát) a CertificateVerify. CertificateVerify zašle elektronický podpis TLS z předchozí komunikace protokolem HP, který mj. obsahuje náhodná čísla generovaná klientem i serverem (client_random a server_random).

Server následně provede verifikaci tohoto elektronického podpisu TLS (nikdo jiný než klient nemá k dispozici soukromý klíč, kterým byl elektronický podpis TLS vytvořen).

Bezpečné DNS (DNSSEC)

DNSSEC je rozšíření doménového systému DNS, které umožní ověřit pravost informací získaných z DNS a předcházet tak např. phishingu či spamu. Principem DNS je překlad jmenných internetových adres, jako například www.vutbr.cz na IP adresy, pomocí nižchž dokáží zajistit zobrazování webových stránek, odesílání e-mailů, telefonování po internetu a další běžné internetové služby. DNSSEC zvyšuje bezpečnost při používání DNS tím, že zabraňuje podvržení falešných, pozměněných či neúplných údajů o doménových jménech.

DNSSEC je tedy systém doménových jmen chráněný ověřovacími certifikáty. Držitel domény vygeneruje dvojici soukromého a veřejného klíče. Svým soukromým klíčem pak elektronicky podepíše technické údaje, které o své doméně do DNS vkládá. Pomocí veřejného klíče je pak možné ověřit pravost tohoto podpisu. Aby byl tento klíč dostupný všem, publikuje jej držitel ke své doméně u nadřazené autority, kterou je pro všechny domény v rámci ČR registr domén .cz (CZ.NIC).

Zabezpečení autentizace WiMAX klientů

Standardu 802.16 definující bezdrátové sítě WiMAX definuje mj. protokol PKM (Privacy Key Management) sloužící k bezpečné autentizaci klientů pomocí PKI certifikátů. V průběhu autentiazace základnová stanice autentizuje klienta na základě digitálního certifikátu X.509, který klientská stanice obdrží při výrobě od výrobce. Certifikát obsahuje veřejný klíč a MAC adresu. Stanice musí certifikát předložit pro ověření základnovou stanicí a po úspěšné autorizaci dostane autorizační klíč zašifrovaný ověřeným veřejným klíčem.