Protokol Secure Sockets Layer (SSL) pochází z dílen společnosti Netscape a postupem času se stal uznávaným standardem pro šifrovanou komunikaci, přičemž funguje přímo pod aplikační vrstvou. Kromě již zmiňovaného šifrovaného spojení poskytuje také možnost ověření pravosti jak serveru, tak i klienta, kontrolu integrity přenášených dat nebo snadnou rozšiřitelnost. Poslední verze protokolu SSL nese pořadové číslo 3.0 a posloužila jako základ pro TLS 1.0 (Transaction Layer Security), jehož detailní specifikaci můžete nalézt v RFC 2246. Rozdíly mezi SSL 3.0 a TLS 1.0 nepatří mezi příliš převratné, nicméně vzájemně oba protokoly kompatibilní nejsou.
Rozdíly mezi TLS 1.0 a SSL 3.0
|
Protokol SSL se ve skutečnosti skládá z několika dílčích protokolů, jmenovitě se jedná o:
- Handshake protocol – zajišťuje navázání šifrovaného a autentizovaného spojení mezi komunikujícími stranami.
- Record protocol – „připravuje“ data pro protokol vyšší vrstvy.
- Change cipher specification protocol – informuje o nastavení nových šifrovacích parametrů.
- Alert protocol – slouží k podávání informací o varováních a chybách.
Ze všeho nejdůležitější je prvně jmenovaný Handshake protocol, během kterého se komunikující strany dohodnou na použitém šifrovacím algoritmu a klíči. Klient nejprve pošle serveru zprávu ClientHello, obsahující základní informace o použité verzi, dostupných možnostech šifrování a náhodně generovaná data. Server na tento „pozdrav“ klientovi odpoví zasláním zprávy ServerHello, která obsahuje obdobné informace doplněné certifikátem, a předá mu aktivitu zprávou ServerHelloDone. Po ověření totožnosti serveru klient může volitelně prokázat svou identitu zasláním vlastního certifikátu, nicméně vždy musí reagovat zprávou ClientKeyExchange, která zahrnuje náhodná data šifrovaná veřejným klíčem serveru. Po provedení právě popsaných kroků nic nebrání započetí šifrované komunikace. Pokud již bylo spojení mezi klientem a serverem v minulosti vytvořeno, nemusí vždy nezbytně nutně probíhat celý Handshake protocol znovu, ale lze provést obnovení spojení pomocí identifikátoru existující relace.
Kryptografické algoritmy podporované SSL 3.0
|
Na druhém místě jmenovaný Record Protocol zajišťuje úpravu dat pro protokoly vyšších vrstev síťového modelu, například dobře známé HTTP. Dochází tak k rozdělování dat do bloků určité velikosti, jejich komprimaci (ta je nepovinná, případný algoritmus se dohodl během Handshake), výpočtu odpovídajícího MAC kódu (MD5, SHA) a samozřejmě také vlastnímu šifrování algoritmem dohodnutým během Handshake.
Change Cipher Specification Protocol představuje velice prostý nástroj obsahující zprávu, kterou se signalizuje, že byly nastaveny nové parametry šifrování a veškerá komunikace od této zprávy dále je již šifrována pomocí nového klíče. Konečně Alert Protocol slouží k tomu, aby jedna z komunikujících stran mohla informovat tu druhou, že došlo k nějaké chybě komunikace.
Certifikáty X.509V průběhu Handshake si každá z komunikujících stran může díky certifikátům ověřit identitu té druhé. Certifikáty totiž jednoznačně spojují šifrovací klíče s jejich vlastníky a dovolují v dostatečné míře ověřit, komu patří. Mezi nejčastěji používané certifikáty patří varianty označované jako X.509. Podle této normy musí certifikát obsahovat například číslo použité verze, sériové číslo, dobu platnosti, informace o vlastníkovi a řadu dalších podrobností, které uživateli umožní, aby si ověřil jeho pravost a platnost. |