Blog - Kodrla.eu

SSL inspekce aneb Koukáme do HTTPS

Při povídání o šifrovaném spojení HTTPS jsme narazili na pojem SSL terminace a SSL inspekce. Jde o možnost, jak se organizace může podívat do šifrovaného HTTPS provozu a chránit tak svá aktiva.

Při povídání o šifrovaném spojení HTTPS jsme narazili na pojem SSL terminace a SSL inspekce. Jde o možnost, jak se organizace může podívat do šifrovaného HTTPS provozu a chránit tak svá aktiva.

Poznámka: V článku používám termín SSL. Ačkoli protokol SSL byl už před dlouhou dobou nahrazen protokolem TLS, pojem SSL se vžil natolik, že se dodnes používá jako synonymum pro technicky jiný protokol. A asi nikdy jsem neslyšel "TLS terminace" nebo "TLS inspekce".

Jak funguje komunikace prohlížeče s webserverem

Nejprve je ale potřeba vědět něco málo o šifrování, zejména co je symetrické a asymetrické šifrování a jak probíhá. Pokud si v tom nejste jisti, doporučuji si zopakovat základy třeba z článku o Šifrování.

A co se teda používá na webu? Krátká, ale nepřesná odpověď – na webu se používá asymetrické. Webserver musí obsloužit spoustu poždavků a včas, proto se preferuje symetrické šifrování pro jeho rychlost a nenáročnost na prostředky. Jenže, k webserveru uživatel nemůže přijít, aby si vzájemně vyměnili šifrovací klíč. Proto se ve skutečnosti na webu používá kombinace obojího:

  • asymetrické šifrování slouží jen pro předání symetrického klíče,

  • po předání symetrického klíče se přejde na rychlejší symetrické šifrování.

Pojďme si ukázat, jak takový SSL handshake vypadá. (Popis je zjednodušený, ale pomůže nám pochopit, jak webserver a klient bezpečně získají symetrický klíč.)

Příklad průběhu:

  1. Klient se připojí na webserver.

  2. Server pošle pro ověření identity svůj certifikát s veřejným klíčem.

  3. Klient si certifikát ověří u certifikační autority.

  4. Klient vygeneruje náhodný symetrický klíč, zašifruje ho veřejným klíčem serveru a pošle ho na server.

  5. Server pomocí svého privátního klíče dešifruje předaný symetrický klíč.

Od této chvíle mají oba stejný symetrický klíč, kterým si šifrují celou další komunikaci.

Schéma komunikace bez SSL terminace

SSL terminace

Za běžných okolností sice SSL chrání před neoprávněným přístupem ke komunikaci, ale už jsme si řekli, že je možné do SSL komunikace vstoupit a podívat se na obsah. Takže jaká magie stojí za tou SSL terminací?

Při SSL terminaci klient ve skutečnosti nenavazuje komunikaci přímo s webserverem, ale s nějakým interním proxy serverem organizace, který požadavky klientů předává na webserver.

Klient naváže spojení s proxy serverem a vymění si s ním standardním způsobem klíč pro symetrické šifrování. Tento klíč je platný jen pro komunikaci mezi klientem a proxy serverem. Pak klient pošle požadavek na webovou stránku. Tento request proxy převezme a dešifruje klíčem, který si s klientem vyměnil.

V dalším kroku server proxy naváže komunikaci s webserverem, který klient požadoval, a domluví si s ním nový klíč. Tento klíč je platný jen pro komunikaci mezi proxy serverem a webserverem. Webserveru pak pošle požadavek od klienta, který zašifruje klíčem, který si s webserverem dohodnul.

Webserver požadavek od proxy zpracuje a odešle proxy serveru normální respone, kterou zašifruje klíčem pro komunikaci s ním. Proxy server response přijme a dešifruje ji klíčem, který má pro komunikaci s webserverem. Následně response zašifruje klíčem, který má pro komunikaci s klientem a odešle ji klientovi. Ten si ji dešifruje klíčem, který má domluvený s proxy serverem.

Jak je vidět, na proxy serveru je komunikace v obou směrech na chvíli dešifrovaná. To je prostor pro SSL inspekci. Server tak může komunikaci analyzovat, podívat se, co v daném provozu skutečně je, jestli tam není něco závadného, podle politiky konkrétní organizace. Poté komunikaci opět zašifruje a pošle dál.

Schéma komunikace se SSL terminací

Aby to fungovalo, organizace musí klientům nainstalovat certifikát proxy serveru mezi „důvěryhodné“ certifikáty. Kdyby to neudělala, prohlížeč by hned hlásil chybu „nedůvěryhodný certifikát“. Klientův prohlížeč by totiž očekával certifikát webserveru, ale dostal by certifikát vystavený pro firemní proxy server.

Takto lze tedy transparentně vstupovat do SSL komunikace, aniž by došlo k chybě šifrování.

Poznámka: Organizace obvykle ze SSL terminace vylučují citlivé servery, typicky elektronické bankovnictví, ale je vhodné zvažovat i další. A určitě by organizace tuto skutečnost měla dobře komunikovat zaměstnancům a dalším uživatelům sítě. Mimochodem, pokud nás nějaká síť vyzve k instalaci certifikátu, je to jasný signál, že naše komunikace nemusí být privátní.