Skryté vnady protokolu SSL

Protokol Secure Sockets Layer (SSL) se běžně používá pro šifrovanou komunikaci mezi dvěma počítači, tvoří tak nedílnou součást například internetového bankovnictví či jiných zabezpečených aplikací. Použití SSL ve webovém prohlížeči každý snadno pozná díky magické zkratce HTTPS namísto HTTP, co se ale ve skutečnosti skrývá pod jeho pokličkou?

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

  • TLS nepodporuje zprávu no_certificate
  • odlišný postup výpočtu MAC
  • rozdílný postup doplňování datových bloků při symetrickém šifrování
  • číslo verze

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.

CIF16

Kryptografické algoritmy podporované SSL 3.0

  • DES – Data Encryption Standard, dnes již poněkud stařičký šifrovací algoritmus.
  • DSA – Digital Signature Algorithm, algoritmus digitálního podpisu.
  • KEA – Key Exchange Algorithm, algoritmus pro výměnu šifrovacích klíčů skrze nechráněný komunikační kanál.
  • MD5 – Zástupce řady Message Digest algoritmů od R. Rivesta sloužící pro tvorbu kontrolních součtů.
  • RC2, RC4 – Rivest Cipher, blokové šifry vyvinuté R. Rivestem.
  • RSA – Asymetrická šifra R. Rivesta, A. Shamira a L. Adlemana pro šifrování i podpis. Součástí SSL je také algoritmus pro výměnu klíčů založený právě na RSA.
  • SHA-1 – Secure Hash Algorithm, člen rodiny hašovacích funkcí SHA.
  • Skipjack – Bloková šifra vyvinutá NSA.
  • Triple DES (3DES) – Bloková šifra aplikující klasickou DES šifru třikrát za sebou.

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.509

V 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.

Anketa

Studujete během surfování certifikáty navštívených serverů?

25 názorů Vstoupit do diskuse
poslední názor přidán 8. 6. 2005 19:12

Workshop: UX design v návrhu webu

  •  
    Rychlý a efektivní návrh rozhraní.
  • Metoda Design Studio.
  • Prototypy - proč a jak prototypujeme.

Detailní informace o workshopu UX designu »