Bezpečné komunikační protokoly

Ačkoliv byly protokoly rodiny TCP/IP vyvíjeny pro Ministerstvo obrany USA, jejich hlavním cílem nebylo zajištění bezpe


Ačkoliv byly protokoly rodiny TCP/IP vyvíjeny pro Ministerstvo obrany USA,
jejich hlavním cílem nebylo zajištění bezpečné komunikace, ale hlavně co
největší odolnost proti výpadkům částí komunikačních sítí (v potenciální válce
by byly totiž nejdříve zničeny hlavní komunikační uzly).
Ve veřejné síti je proto nutné provozovat bezpečnostní protokoly až na vrstvách
vyšších, než je vrstva IP (privátní sítě mohou používat i bezpečnostní
protokoly na nižší úrovni než TCP/IP).
Bezpečnostní protokoly se musí vyrovnat v první řadě s následujícími úkoly:
lzajistit důvěrnost spojení,
lumožnit ověření identity komunikujících stran (autentizaci),
lzajistit integritu dat.
Secure Socket Layer
(SSL verze 3.0)
SSL je bezpečnostní protokol navržený firmou Netscape. Tento protokol je možné
zařadit do relační vrstvy modelu OSI. Je možné jej provozovat nad jakoukoliv
spolehlivou spojovou službou (např. TCP). SSL domlouvá bezpečnostní parametry
během ustavování spojení. Když spolu klient a server začínají komunikovat, musí
si dohodnout především kryptografické parametry, verzi protokolu, metodu
předání tajných klíčů pomocí šifrovacího algoritmu s veřejným klíčem a
volitelně se mohou autentizovat. Tato fáze se nazývá SSL Handshake protokol.
Předávání zpráv mezi klientem a serverem je ve standardizované podobě na
obrázku 1 a ve zjednodušené podobě na obrázku 2.
1. Klient pošle zprávu ClientHello. Zpráva obsahuje verzi protokolu, časové
razítko, náhodné číslo (o velikosti 28 bytů), identifikaci relace a seznam
podporovaných šifrovacích a kompresních metod. Server odpoví pomocí zprávy
ServerHello, která obsahuje verzi protokolu, identifikaci relace a zvolenou
metodu šifrování a komprese.
2. Server má možnost volitelně poslat 3 druhy zpráv:
Certificate v případě, že má být server autentizován, pošle své certifikáty
klientovi k ověření své identity.
CertificateRequest neanonymní server může požadovat po klientovi certifikáty
jeho identity, vydané různými certifikačními autoritami.
ServerKeyExchange tuto zprávu server posílá v případě, že nemá žádný
certifikát, nebo má certifikát použitelný pouze k podepisování. Obsahuje
identifikátor kryptografického algoritmu, který bude použit pro výměnu tajných
klíčů, a parametry tohoto algoritmu (veřejný klíč).
3. Server ukončí tuto fázi pomocí zprávy ServerHelloDone.
4. Klient vygeneruje tajný klíč relace a pošle zprávu ClientKeyExchange, která
tento klíč obsahuje (zašifrovaný pomocí algoritmu veřejného klíče).
5. Pokud server požadoval certifikáty, pak je zašle (zpráva Certificate). Pokud
má certifikát podepisovací schopnosti, pak pošle podepsaný obsah
předcházejících zpráv (zpráva CertificateVerify).
6. Klient pošle zprávu ChangeCypherSpec a nastaví šifrovací a podpisovací
algoritmy.
7. Klient pošle zprávu Finished již zašifrovanou tajným klíčem.
8. Server pošle zprávu ChangeCypherSpec a nastaví šifrovací a podpisovací
algoritmy.
9. Server pošle zprávu Finished již zašifrovanou tajným klíčem.
V této chvíli již probíhá mezi oběma stranami bezpečná komunikace. Protokol
umožňuje změnu způsobu šifrování a výměnu dalších certifikátů kdykoliv v
průběhu komunikace. (Certifikát je většinou veřejný klíč majitele, spolu s
dalšími informacemi identifikujícími vlastníka, podepsaný nějakou certifikační
autoritou. Certifikáty se bude zabývat některý z dalších dílů tohoto seriálu).
Protokol SSL neřeší ověřování platnosti certifikátů, tato záležitost může být
implementačně závislá.
Jak je vidět, protokol definuje rámec, kterým probíhá bezpečná komunikace.
Protokol nevyžaduje využití specifických šifrovacích a autentizačních metod.
Jsou zde definovány některé základní typy:
lvýměna klíčů: Diffie-Hellman a RSA v kombinaci s DSS (Digital Signature
Standard) nebo Fortezza (neveřejný algoritmus);
lsymetrické šifrovací algoritmy: IDEA, RC2, RC4, DES, 3-DES, Fortezza;
lhašovací funkce (použité pro kontrolu integrity dat): MD5, SHA nebo kombinace
obou.
V současnosti se SSL používá hlavně pro bezpečné http (https), je možné také
používat bezpečné SMTP (ssmtp) nebo NNTP (snntp). SSL však není omezen jen na
tyto služby.
Některé nedostatky
Bezpečnost tohoto protokolu záleží na tom, jaké parametry si spolu klient se
serverem dohodnou. V případě, že je umožněna neautentizovaná komunikace, je
bezpečnost ohrožena pomocí útoku typu man-in-the-middle. Navíc některé
šifrovací algoritmy používají pouze 40bitové klíče, což může vést ke snadnému
prolomení klíče.
Protokol také umožňuje přejít ke komunikaci pomocí starší verze (SSL 2.0).
Verze 2.0 umožňovala útočníkovi (man-in-the-middle) modifikovat některé zprávy
tak, aby si komunikující strany dohodly šifru s co nejmenším klíčem. Záleží
tedy pouze na aplikaci, zda povolí přechod k verzi 2.0 nebo ne. Výzva k
rozlomení SSL verze 2.0 byla úspěšně dokončena po 8 dnech rozlomením zprávy
hned dvěma týmy (v rozmezí 2 hodin). (http://pauillac.inria.fr/~doligez/ssl/).
Tento protokol také obsahuje patentované algoritmy (RSA), což může způsobit
problémy při implementaci. Platnost patentu pro algoritmus Diffie-Hellman však
již vypršela.
PCT (Private Communication Technology)
Je to velmi podobný protokol od firmy Microsoft. Používá stejný základní formát
jako SSL, takže server může rozlišit mezi těmito dvěma protokoly, pokud jsou
používány současně. Hlavní rozdíly jsou především ve výměně zpráv při Handshake
protokolu a oddělení autentizačních klíčů od šifrovacích.
SHTTP (verze 1.4)
Jedná se o protokol, kterým je možné zabezpečit komunikaci pomocí HTTP. Byl
vytvořen tak, aby byl snadno integrovatelný s HTTP a je s ním kompatibilní.
SHTTP je protokol na aplikační úrovni a je na rozdíl od SSL, který po celou
dobu komunikace udržuje spojení mezi stranami, protokol typu dotaz-odpověď (což
může být výhodné).
SHTTP zprávy jsou syntakticky stejné jako zprávy HTTP a skládají se z požadavku
nebo stavového řádku, následovaným hlavičkami a tělem zprávy.
SHTTP poskytuje pro zabezpečení zprávy 3 základní možnosti: digitální podpis,
autentizaci a šifrování. Protokol SHTTP není závislý na určitém druhu algoritmů
a umožňuje používat různé metody předávání klíčů a certifikátů.
Podepisování se dosahuje pomocí certifikátů, které mohou být součástí zprávy,
nebo mohou být doručeny nezávisle na zprávě. Agenti musí podporovat algoritmus
DSS (Digital Signature Standard).
Autentizace a integrita zprávy je zajištěna pomocí hašovací funkce (MAC).
Agenti musí podporovat algoritmus MD5 a RSA-MD5-HMAC (HMAC je bezpečnější
hašovací funkce).
Šifrování zprávy je zajištěno symetrickými šiframi. Použitelné jsou jak
proudové, tak blokové šifry. Blokové šifry se většinou používají v režimu CBC
(Cipher Block Chaining). Agenti musí podporovat DES-CBC.
Výměna klíčů může být zajištěna buď přímo pomocí algoritmů veřejného klíče,
nebo je možné tajný šifrovací klíč vyměnit jinými metodami nezávislými na
SHTTP. Jako algoritmy veřejného klíče se používají Diffie-Hellman a RSA.
Výhodou protokolu SHTTP je to, že protokol je navržen tak, aby bylo možno
použít proxy. Nevýhodou naopak zůstává, že tento protokol je svázán s
protokolem HTTP a nelze jej použít pro jiný druh přenosu.
Závěrem
Ačkoliv existují i další protokoly pro bezpečnou komunikaci, je zejména SSL
hojně používán a podporován hlavně ve webových aplikacích a zatím má podstatný
náskok před ostatními protokoly na své úrovni. Výraznější změny může v budoucnu
přinést protokol TLS (Transport Layer Security) připravovaný WWW konzorciem. My
se ale v příští části seriálu podíváme na specializovaný protokol SET pro
elektronické platby na bázi platebních karet.
Seriál je rovněž k dispozici na: www.idg.cz/computerworld/bvsk/
8 0719 / ram









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