Protokol TLS, zabezpeŸen‚ pýipojen¡ Pozor, £tok!(3. d¡l) V r mci naçeho seri lu o bezpeŸnosti se tentokr t zamØý¡me na zabezpeŸen‚ pýipojen¡ a na protokol TLS, kterì umo§åuje bezpeŸn‚ finanŸn¡ transakce i zabezpeŸenou vìmØnu komerŸn¡ch dat v prostýed¡ internetu. évod V pýedchoz¡ch Ÿ stech seri lu vØnovan‚ho zabezpeŸen¡ pýenosu dat pýes internet jsme se dozvØdØli, §e HTTP protokol neposkytuje potýebn‚ bezpeŸ¡. Jakìkoliv program tor, kterì m  potýebn‚ znalosti v oblasti poŸ¡taŸovìch s¡t¡ a volnì pý¡stup k tØmto s¡t¡m, toti§ m…§e pýi troçe snahy prohl¡§et Ÿi modifikovat pýen çen  data vz jemnØ komunikuj¡c¡ch £Ÿastn¡k… spojen¡. Jednou z reakc¡ na tuto nemilou vlastnost HTTP transakc¡ byl zrod nØkolika bezpeŸnostn¡ch protokol…, jejich§ c¡lem bylo zajistit bezpeŸnost takto ohro§enìch dat. Minule jsme se sezn mili se z kladn¡mi informacemi o protokolu S-HTTP - o protokolu, kterì na çirç¡ vyu§it¡ a rozç¡ýen¡ teprve Ÿek . V dneçn¡m d¡lu si naopak pov¡me o relativnØ nov‚m protokolu TLS (Transport Layer Security), kterì je podobnØ jako protokol SSL (Secure Socket Layer) podporov n vØtçinou souŸasnìch prohl¡§eŸ…. Co je TLS? Prim rn¡m c¡lem TLS protokolu je umo§nit komunikuj¡c¡m aplikac¡m soukrom‚ spojen¡ a integritu pýen çenìch dat. TLS ve verzi 1.0 a SSL ve verzi 3.0 jsou v podstatØ shodn‚ protokoly. NovØjç¡ TLS toti§ vych z¡ z protokolu SSL a obsahuje menç¡ zmØny, kter‚ do nØj byly zakomponov ny. Nyn¡, kdy§ u§ jsme z¡skali obecn‚ znalosti o TLS, tedy koneŸnØ nahl‚dnØme "pod pokrìvku" vìvoj ý…m tohoto protokolu (IETF - viz infotipy) prozkoum n¡m jeho struktury. Architektura TLS Protokol TLS se skl d  ze dvou oddØlenìch vrstev: TLS Record Protocol a TLS Handshake Protocol. Na ni§ç¡ £rovni, le§¡c¡ na vhodn‚m transportn¡m protokolu - napý. na TCP (Transmission Control Protocolu) - se nach z¡ TLS Record Protocol (viz obr zek). Chceme-li se o tØchto dvou vrstv ch dozvØdØt v¡ce informac¡ a pochopit jejich funkce, je vhodn‚ se nejprve sezn mit s jejich charakteristickìmi vlastnostmi. Veçker  komunikace (vŸetnØ TLS Handshake Protocolu a datovìch zpr v) prob¡h  pomoc¡ ni§ç¡ vrstvy - TLS Record Protocolu - a je navr§ena takovìm zp…sobem, aby bylo nav zan‚ spojen¡ spojen¡m soukromìm. To je zajiçtØno pomoc¡ symetrick‚ho çifrov n¡ - data jsou zaçifrov na napý¡klad pomoc¡ DES. Pozn mka: Existuje i mo§nost nepou§¡t çifrov n¡ pro Record Protocol. Spolehlivost spojen¡ je zajiçtØna kontrolou integrity zpr vy pomoc¡ MAC (Message Authentication Code), co§ je v podstatØ kontroln¡ souŸet (checksum), kterì je odvozen z aplikovan‚ho ovØýovac¡ho sch‚matu a kl¡Ÿe na danou zpr vu. Pro vìpoŸet MAC jsou v tomto pý¡padØ vyu§¡v ny bezpeŸn‚ hashovac¡ funkce, napý¡klad MD5. Je tedy zýejm‚, §e TLS Record Protocol je pou§¡v n pro zapouzdýen¡ r…znìch vìçe polo§enìch vrstev protokol…. StejnØ tak je pomoc¡ TLS Record Protocolu zapouzdýena i vyçç¡ vrstva - TLS Handshake Protocol -, jej¡m§ c¡lem je umo§nit klientu a serveru jak vz jemnou autentizaci, tak vz jemnou domluvu na pou§it¡ çifrovac¡ch mechanism… jeçtØ pýedt¡m, ne§ jsou pýen çeny prvn¡ bajty dat. Ustaven¡ ka§d‚ho nov‚ho sezen¡ - "session" - probØhne nejdý¡ve pomoc¡ £vodn¡ vìmØny informac¡ - "handshake" (potýesen¡ rukou). Abychom si v¡ce objasnili posl n¡ TLS Handshake Protocolu, vyjmenujeme si stejnØ jako u pýedchoz¡ vrstvy jeho charakteristick‚ vlastnosti. Prvn¡ vlastnost¡ je skuteŸnost, §e identita u§ivatel… (klientu a serveru) m…§e bìt ovØýena u§it¡m asymetrick‚ho çifrov n¡, napý. RSA. ZjiçtØn¡ identity m…§e bìt voliteln‚, ale obecnØ je po§adov no alespoå u jednoho £Ÿastn¡ka spojen¡. Dalç¡ d…le§itou vlastnost¡ je, §e ovØýen‚ spojen¡ nem…§e bìt pýivlastnØno tzv. sl¡dilem ani v pý¡padØ, §e se nach z¡ ve stýedu spojen¡. Posledn¡ vìznamnou vlastnost¡ je skuteŸnost, §e ovØýen¡ je spolehliv‚. Tato vlastnost je zajiçtØna detekc¡ jak‚hokoliv pokusu o modifikaci ovØýovac¡ho spojen¡ n slednìm upozornØn¡m £Ÿastn¡k… spojen¡. Pr…bØh transakce Jeliko§ je nav z n¡ bezpeŸn‚ho spojen¡ podobn‚ jako u SSL (1. d¡l seri lu), je komunikace mezi klientem a serverem v n sleduj¡c¡m textu pops na zjednoduçenou formou, kter  vçak obsahuje vçechny podstatn‚ informace o pr…bØhu t‚to £vodn¡ transakce. V pý¡padØ, §e se prohl¡§eŸ (= klient) sna§¡ pýipojit k zabezpeŸen‚mu serveru, nejdý¡ve mu poçle zpr vu zvanou "ClientHello", co§ je obdoba § dosti na zý¡zen¡ HTTP spojen¡. V okam§iku, kdy server zpr vu ClientHello pýijme, zpracuje informace v n¡ obsa§en‚. Pro lepç¡ pochopen¡ obsahu zpr vy ClientHello je v n sleduj¡c¡m textu uvedena jej¡ programov  struktura: enum { null(0), (255) } CompressionMethod; struct { ProtocolVersion client_version; Random random; SessionID session_id; CipherSuite cipher_suites<2..2^16-1>; CompressionMethod compression_methods<1..2^8-1>; } ClientHello; Pokud je vçe v poý dku, zaçle server klientu zpr vu zvanou "ServerHello", kter  zpravidla obsahuje certifik t, £daje o kl¡Ÿ¡ch serveru a volitelnØ po§adavek certifikace klientu. Struktura zpr vy ServerHello a certifik tu je n sleduj¡c¡: struct { ProtocolVersion server_version; Random random; SessionID session_id; CipherSuite cipher_suite; CompressionMethod compression_method; } ServerHello; opaque ASN.1Cert<1..2^24-1>; struct { ASN.1Cert certificate_list<0..2^24-1>; } Certificate; Pot‚, co klient obdr§¡ zpr vu ServerHello, zaçle serveru £daje o svìch kl¡Ÿ¡ch, ovØý¡ pravost certifik tu serveru a v pý¡padØ neshody ukonŸ¡ spojen¡. Byl-li po§adov n jeho certifik t, zaçle jej spolu s vìbØrem Ÿ¡slic, pomoc¡ nØho§ je vytvoýen tzv. kl¡Ÿ relace. Po obdr§en¡ t‚to zpr vy vytvoý¡ server ze seznamu Ÿ¡slic kl¡Ÿ relace. Pak klient a server pýen çej¡ data, kter  jsou zaçifrov na pomoc¡ tohoto kl¡Ÿe relace. Pozn mka: Tvorba kl¡Ÿe relace m…§e probØhnout jak na stranØ klientu, tak na stranØ serveru. A jak se dozv¡me, zda jsme pýipojeni na bezpeŸnì server? StaŸ¡ se pod¡vat na URL serveru, a pokud zaŸ¡n  https:// (tedy stejnØ jako v pý¡padØ SSL), m…§eme bìt o nØco klidnØjç¡, proto§e naçe komunikace pýes port 443 prob¡h  bezpeŸnØ. Kompatibilita SSL a TLS Jak ji§ bylo zm¡nØno, oba protokoly jsou si velice podobn‚. Z historickìch d…vod…, aby se zabr nilo rozmaýil‚ spotýebØ rezervovanìch Ÿ¡sel port…, u§¡vaj¡ TLS 1.0, SSL 3.0 a SSL 2.0 stejnì spojovac¡ port. Komunikace klientu a serveru u§¡vaj¡c¡ protokoly ve verz¡ch TLS 1.0 a SSL 3.0 je struŸnØ pops na v n sleduj¡c¡m textu. Pokud se chce klient TLS 1.0 dohodnout se serverem SSL 3.0, poçle serveru zpr vu ClientHello u§it¡m record form tu SSL 3.0. Pokud server podporuje pouze SSL 3.0, odpov¡ SSL 3.0 ServerHello. Podporuje-li nav¡c i TLS, odpov¡ pomoc¡ TLS ServerHello. PodobnØ pokud TLS server komunikuje se SSL klientem, akceptuje ClientHello zpr vu ve form tu SSL 3.0 a odpov¡ ServerHello tak‚ ve form tu SSL. C¡le TLS Po objasnØn¡ funkc¡ TLS protokolu si ji§ m…§eme ý¡ci, proŸ byl vlastnØ tento protokol navr§en a jak‚ jsou jeho hlavn¡ c¡le. Nejd…le§itØjç¡m c¡lem je zajistit ustaven¡ bezpeŸn‚ho spojen¡ mezi £Ÿastn¡ky komunikaŸn¡ho procesu. Dalç¡m c¡lem je umo§nit program tor…m vytv ýet aplikace vyu§¡vaj¡c¡ vlastnost¡ TLS bez dalç¡ znalosti çifrovac¡ch mechanism…. Protokol TLS byl navr§en s ohledem na neust lì vìvoj metod zvyçuj¡c¡ch bezpeŸnost (çifrovac¡ch i jinìch). Umo§åuje tedy implementaci aktualizovanìch i zcela novìch bezpeŸnostn¡ch knihoven. Dalç¡m c¡lem bylo vyu§¡t st le rostouc¡ vìpoŸetn¡ vìkon CPU zejm‚na pro operace s veýejnìmi kl¡Ÿi a urychlit tak proces vìmØny informac¡ obsa§enìch ve zpr v ch. Z vØr TLS zahrnuje mechanismy pro zabezpeŸen¡ finanŸn¡ch transakc¡ i pro bezpeŸnou vìmØnu komerŸn¡ch dat pýes web. Je tedy dalç¡m protokolem, jeho§ pomoc¡ se m…§eme svØýit vçeobj¡maj¡c¡mu internetu bez pocitu strachu o bezpeŸnost priv tn¡ch dat. Pý¡çtØ si pov¡me o dalç¡ch zp…sobech, jak zvìçit bezpeŸnost svìch dat na internetu. Ing. Milan Pinte (pinte@kpv.zcu.cz)