Ochrana především SSL, https

Bezpečnost je jedním z nejsledovanějších faktorů v současném Internetu, který ovládá pojem e-commerce. Objem obchod...


Bezpečnost je jedním z nejsledovanějších faktorů v současném Internetu, který
ovládá pojem e-commerce. Objem obchodů uskutečněných po Internetu každým dnem
roste, a tím roste i potřeba bezpečného přenosu dat. Bohužel i v dnešní době se
po Síti přenášejí velice citlivá data nedostatečně zabezpečená. A riziko je
často velké, ukradené číslo kreditní karty, zcizené přístupové jméno a heslo na
váš server s citlivými daty, nejsou určitě žádné příjemné vyhlídky.
Je samozřejmé, že si tohoto problému všimli i tvůrci jednotlivých internetových
protokolů a pokusili se jej vyřešit. Asi nejúspěšnějším řešením je protokol
firmy Netscape SSL (Secure Sockets Layer) v současné době ve verzi 3.0. Právě
tento protokol je nejčastěji používán pro bezpečné posílání dat mezi webovým
serverem a vaším prohlížečem a pozná se podle malinké změny v URL místo http je
zde https.
Teoretické základy
Většina dat na současném Internetu je přenášena pomocí protokolů TCP/IP
(Transmission Control Protocol/Internet Protocol). Hlavním úkolem TCP/IP je
transport a směrování dat po Síti a ne zabezpečení dat. Ostatní, navazující
protokoly, jako je HTTP (HyperText Transport Protocol) nebo IMAP (Internet
Messaging Access Protocol), běží nad protokolem TCP/IP (používají ho pro
zajištění jimi poskytovaných služeb zobrazovaní webových stránek nebo
doručování e-mailů) a také nemají žádné zabezpečovací mechanismy. Protokol SSL
běží právě mezi těmito dvěma typy protokolů, tedy nad protokolem TCP/IP a pod
ostatními protokoly. Hlavním úkolem SSL je zajištění šifrované komunikace,
případně ověření serveru a klienta (ověření pravosti, že jsou opravdu tím, za
koho se vydávají).
Šifrované spojení
Komunikace po Internetu je velice lehce sledovatelná a v žádném případě nelze
hovořit o fyzickém zabezpečení přenosu. Nezbývá nám tedy nic jiného, než vložit
bezpečnost svých dat do rukou kryptologie. Tato věda se zabývá šifrováním a
dešifrováním dat a její nejnovější poznatky jsou použity právě v tomto
protokolu.
Hlavní slovo zde mají tzv. symetrické algoritmy a algoritmy veřejného klíče.
Oba používají "klíče" k zakódování textu zprávy do šifrované podoby a zpět k
jejímu dekódování. U moderních algoritmů je právě klíč tou jedinou důležitou
informací, která musí být držena v tajnosti.
Symetrické algoritmy, někdy označované jako konvenční, mají šifrovací klíč
odvoditelný z dešifrovacího klíče a naopak. Většinou jsou oba tyto klíče shodné
a bezpečnost algoritmu závisí zejména na délce klíče a jeho uchování v
tajnosti. Na druhou stranu algoritmy veřejného klíče (nebo také asymetrické)
používají pro šifrování a dešifrování jiné klíče. Oba klíče jsou samozřejmě
závislé, ale mělo by platit, že dešifrovací klíč se nedá odvodit ze šifrovacího
klíče (přinejmenším ve výpočetně rozumné době). Název algoritmů pak vyjadřuje
tu skutečnost, že jedna polovina klíče (ta, která bude použita pro šifrování)
může být zveřejněna. Každý má pak k tomuto klíči přístup a možnost s jeho
pomocí zašifrovat přenášenou zprávu. Tu ale bude moci rozšifrovat pouze držitel
druhé poloviny klíče (soukromého klíče), který jediný může zprávu rozšifrovat.
Modifikované algoritmy veřejného klíče se používají i pro tvorbu digitálních
podpisů.
Algoritmy veřejného klíče sice na první pohled vypadají daleko moderněji a
jejich používání se zdá být daleko výhodnější, mají ale jednu velice podstatnou
vadu, při stejné úrovni zabezpečení jsou daleko pomalejší než klasické
symetrické algoritmy. Právě proto je v protokolu SSL použito obou druhů,
algoritmy veřejného klíče jsou použity pro autentizaci, pro podpisy
jednotlivých zpráv a pro výměnu klíčů. Tyto vyměněné klíče jsou pak použity pro
šifrování dat pomocí rychlejších symetrických algoritmů.
V současné době se používají zejména následující algoritmy:
Pro přenos dat DES (Data Encryption Standard, a to i jeho trojnásobná verze),
RC 2 a RC 4 (Rivest encryption ciphers od firmy DSA)
Pro podepisování zpráv SHA--1 (Secure Hash Algorithm) a MD5 (Message Digest)
Pro úvodní výměnu klíčů RSA key exhange a KEA (Key Exchange Algorithm)
Jako nejbezpečnější je uvažována kombinace trojnásobného DESu (klíč o velikost
168 bitů) a SHA-1 algoritmu pro podepsání zprávy. Pro výměnu klíčů se
nejčastěji používá algoritmu RSA key exhange. Bohužel v současné době stále
ještě platí nařízení americké vlády ohledně exportu silný šifer mimo území USA.
Pro české firmy je tak k dispozici pouze slabé 40bitové šifrování pomocí
algoritmu RC2 a RC 4. I zde samozřejmě existují určité výjimky, například pro
banky je k dispozici i silnější 128bitová verze.
Ověření pravosti
Součástí komunikace je i autentizace jednotlivých účastníků, tedy alespoň jedné
strany. Server posílá svoji totožnost vždy, klient pouze na vyžádání. O
autentizaci jste si již na stránkách Computerworldu (viz CW 44/99) mohli
přečíst, a proto jen krátce a trochu neodborně. Certifikát je obdobou
občanského průkazu, který je vydán někým důvěryhodným (certifikační autoritou
CA). Padělání je kupodivu daleko složitější než u normální občanky.
Potřásání rukou popis protokolu
Při navazování komunikace a v jejím průběhu se musí obě strany řídit určitým
postupem. Asi nejzajímavější, ale i nejsložitější je úvod celé komunikace tzv.
SSL handshake. Ten lze nejlépe popsat pomocí těchto zjednodušených bodů:
1. Klient se pokusí navázat spojení se serverem, při té příležitosti mu kromě
jiného posílá číslo verze protokolu SSL, možné šifry a náhodně vygenerovaná
data pro použití při další komunikaci (právě v implementaci generování
náhodného klíče docházelo k některým chybám, a tím ke snížení bezpečnosti).
2. Server odpoví verzí jemu dostupného SSL protokolu, nastavením šifer, obdobně
vygenerovanými náhodnými daty. Posílá také svůj certifikát a případně požaduje
klientský certifikát.
3. Klient na základě certifikátu ověří totožnost serveru, uživatel je v případě
vypršení platnosti nebo neznámé certifikační autority varován a další
pokračování je na něm.
4. Klient zašifruje pomocí serverového veřejného klíče (součást certifikátu)
tzv. premaster secret pro dané spojení.
5. Pokud server požadoval autentizaci klienta, klient v komunikaci podepisuje
další blok dat, který posílá serveru.
6. Jestliže server požadoval autentizaci klienta, pokusí se jeho totožnost
ověřit, pokud se to nepodaří, server ukončí spojení. Pokud se ověření podařilo
nebo nebyla autentizace nutná, server získá od klienta premaster secret a
pomocí definované sekvence operací vytvoří master secret.
7. Tento master secret použijí obě strany pro vytvoření session klíčů. Tedy
klíčů určených pro symetrické šifrování, jedinečných pro dané spojení.
8. Klient poté informuje server, že všechna jeho další data budou již
šifrována. Po obdobné odpovědi ze serveru je komunikace navázána a probíhá již
v zakódované podobě.
Jsou data opravdu v bezpečí?
Na světě není nic dokonalé a neexistuje ani dokonalá šifra. Slovo dokonalá ale
můžeme lehce zaměnit za téměř dokonalá šifra. Při dostatečné délce klíče a
dobrém algoritmu se některé šifry při použití současné techniky prolomit
nedají. To platí ale pouze do té doby, než se současná technika ještě více
zdokonalí anebo než budou objeveny nové možnosti kryptoanalýzy. Přesto by šlo
většinu v SSL protokolu používaných šifer označit za bezpečné, problémem jsou
pouze ony zmiňované exportní předpisy. Při použití 40bitového klíče u algortimu
RC4 je jeho prolomení otázkou pouhých několika hodin. Student univerzity v
Berkeley Ian Goldberg prolomil, při využití počítačové sítě univerzity, tento
40bitový kód za 3,5 hodiny. Proto většina odborníků doporučuje jako minimální
délku klíče 90 bitů a jako optimum je uváděno 128 bitů. I přesto je 40bitové
šifrování pro většinu aplikací dostatečné, protože náklady spojené s prolomením
šifry se nevyplatí.
Budujeme sami
Vlastní spuštění zabezpečeného serveru není nic složitého. Váš fungující webový
server s největší pravděpodobností totiž podporuje i protokol SSL (podporován
je například u Apache, serverů firmy Netscape a Microsoft). Vlastní servis pak
běží na jiném portu než normální webový server, a to nejčastěji na portu 443.
Asi nejzajímavější jsou dostupné možnosti pro nejrozšířenější server Apache.
Pro tento server je totiž k dispozici i exportně neomezená varianta, a můžeme
tedy nabízet silné šifrování 128bitovými klíči. Implementace SSL pro server
Apache mají původ mimo USA, a proto pro ně neplatí exportní a patentová omezení
(na území Spojených států jsou totiž některé protokoly patentované firmou RSA).
U nás tyto patenty neplatí, a tak i přes exportní omezení jsme na tom lépe než
Američané. Po zvolení vhodné implementace musíme získat certifikát pro náš
server. Jeho získání od CA není složitá operace, případně si ho můžeme
vygenerovat sami (více se o této problematice dočtete v některém příštím
čísle). Poté co máme svůj certifikát, stačí jen vše správně nakonfigurovat, a
zabezpečení je hotovo. Obdobný postup platí i pro servery jiných výrobců, zde
ale budeme exportními zákony omezeni daleko více.
Pár slov na závěr
Zabezpečený server je samozřejmě výborná věc, ale jako všechno má i své stinné
stránky. Pro zákazníka se sice Web bude zdát důvěryhodnější a nebude se tolik
zdráhat poslat nám třeba číslo své kreditní karty, a nakoupit naše zboží. Nic
na světě ale není zadarmo, a tak je tomu i u zde. I když použijeme zdarma
dostupnou implementaci, objeví se nám jiné nákladové položky. Musíme zaplatit v
prvé řadě za certifikát pro náš Web od veřejně známe certifikační autority (asi
nejznámější je firma Verisign na www.verisign.com cena od 350, dolarů nebo v
Čechách pak 1. CA na www.ica.cz za 1 000 Kč) a vylepšit náš stávající hardware.
Šifrování dat je totiž náročná operace a počet obsloužených klientů bude ve
srovnání s normální provozem výrazně nižší. Další zvýšení zátěže je pak
generováno proxy servery, které SSL dokumenty necachují, a celý provoz tak
spíše brzdí. Stránky zabezpečené protokolem SSL by proto měly být co nejkratší
a s minimem grafiky.
Protokol SSL lze použít i pro jiné služby s podobnými klady a zápory. Výsledkem
je sice zvýšení bezpečnosti komunikace pro jednotlivé služby, nesmíme ale
zapomínat, že bezpečnost celého systému závisí na všech službách a útočník
zaútočí na nejslabší článek našeho systému. Takže až si zabezpečíte svůj Web
pomocí protokolu SSL, podívejte se určitě i na ten zbytek.
Užitečné odkazy:
http://home.netscape.com/eng/ssl3/ssl-toc.html
dokumentace SSL 3.0
http://info.pvt.net/prirucka/ssl/ssl.htm
česká dokumentace
http://webopedia.internet.com/TERMS/SSL.html
zajímavé odkazy
http://www.apache-ssl.org
SSL pro server Apache
9 3189 / als









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.