SSL/TLS

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Imbox draft.png
Toto je projekt, na ktorom sa ešte stále pracuje!!

Aj keď sú v tomto dokumente použiteľné informácie, ešte nie je dokončený. Svoje návrhy môžete vyjadriť v diskusii o tejto stránke.

TLS - Transport Layer Security

Transport Layer Security (TLS) a jeho predchodca komunikačný protokol Secure Sockets Layer (SSL) sú oba protokoly, ktoré slúžia na šifrovanie dát. Protokoly slúžia na bezpečnú komunikáciu cez internet, hlavne na prehliadanie webu, odosielanie e-mailov, výmenu správ (tzv. instant messaging), alebo iné prenosy dát. Medzi TLS a SSL sú drobné rozdiely, ale v podstate protokol ostal ten istý.

Protokol TLS umožňuje aplikáciám komunikovať cez sieť spôsobom akým bol navrhnutý, aby predchádzal odpočúvaniu, manipulácií, falšovanie správ. TLS poskytuje koncovo bodovú autentifikáciu a súkromie v komunikácií cez internet používaním kryptografie. Typický len server je autorizovaný (to znamená že jeho identita je zaručená) zatiaľ čo klient ostáva neautorizovaný. To znamená, že koncový užívateľ, či už jednotlivec alebo aplikácia, si môže byť istý s kým komunikuje. Ďalšia úroveň zabezpečenia, v ktorej obidve strany "konverzácie" si môžu byť isté s kým komunikujú, je známa ako obojstranná autorizácia. Obojstranná autorizácia vyžaduje infraštruktúru verejného kľúča (public key infrastructure - PKI).

Obojstranná autorizácia

TLS klient a server dohodnú spojenie používaním procedúry tzv. podaním rúk , počas podania rúk sa klient a server dohodnú na rôznych parametroch používaných na vytvorenie bezpečnosti spojenia.

Parametre podania rúk (handshaking) sú nasledovné:

  • Podanie rúk začne vtedy, keď sa klient pripojí na server s povoleným TLS spojením a začne žiadať o bezpečné spojenie a poskytne zoznam podporovaných šifier a transformačných funkcií.
  • Server vyberie so zoznamu najsilnejšiu šifru a transformačnú funkciu, ktoré tiež podporuje a oznámi klientovi svoje rozhodnutie.
  • Server pošle späť svoju identifikáciu z digitálneho certifikátu. Certifikát obyčajne obsahuje meno serveru, dôveryhodnú certifikačnú autoritu a verejný šifrovací kľúč servera.
  • Klient môže kontaktovať server, ktorý vydal certifikát (certifikačnú autoritu) a overiť si ešte predtým ako začne proces, že certifikát je platný.
  • V objednávke musí server vygenerovať kryptografický kľúč pre bezpečné spojenie. Klient zašifruje náhodné číslo pomocou verejného kľúča servera a pošle výsledok serveru. Dešifrovať ho dokáže iba server pomocou svojho súkromného kľúča. To zabezpečí, že kľúč ostane pre tretiu stranu utajený, lebo iba klient a server majú prístup k týmto dátam.
  • Z náhodného čísla obe strany generujú materiál (kryptografické kľúče) na šifrovanie a dešifrovanie.

Posledný bod uzatvára podanie rúk a začína bezpečné spojenie, ktoré je šifrované a dešifrované vygenerovanými kryptografickými kľúčmi až pokiaľ sa spojenie neukončí.

Použitie protokolu TLS

Daný protokol sa napríklad používa v HTTPS (Hypertext Transfer Protokol Secure) čo je vlastne zabezpečená verzia HTTP, komunikačného protokolu www, (World Wide Webu). Bol vyvinutý firmou Netscape Communications Corporation pre poskytovanie overenia a šifrovanej komunikácie Namiesto používania jednoduchej textovej komunikácie, HTTPS šifruje prenos dát použitím SSL (Secure Socket Layer) protokolu alebo TLS (Transport Layer Security) protokolu a tým zaisťuje primeranú ochranu pred odpočúvaním komunikácie a pred útokom. Pre HTTPS komunikáciu sa štandardne používa TCP/IP port 443.Najslabším miestom HTTPS protokolu je závislosť vysokej bezpečnosti na digitálne podpísaných certifikátoch. Bez podpísaného certifikátu je tento protokol zraniteľný voči útokom. V praxi sú však často používané nepodpísané certifikáty, čím sa stráca bezpečnosť, ktorú HTTPS ponúka. Ďalej TLS beží vo vrstve pod aplikačným protokolom, ako sú (FTP, SMTP, NNTP či XMPP), a nad spoľahlivým transportným protokolom, napr. TCP, VPN, OPEnVPN, NAT ,VOIP. Dokáže pridať zabezpečenie ľubovoľnému protokolu používajúcemu spoľahlivé spojenia.

Úlohy a tok správ s autentifikáciou 802.1x pri použití protokolu EAP-TLS [1]

Princíp komunikácie a funkčnosti protokolov TLS

Protokol(y) TLS umožňujú aplikáciám komunikovať po sieti spôsobom, ktorý zabraňuje odpočúvanie alebo falšovaniu správ. Pomocou kryptografie poskytuje TLS koncovým bodom autentifikáciu a zabezpečenie pri komunikácií z Internetom. Typicky je autentizovaný iba server (vtedy je jeho totožnosť je zaručená), pokiaľ však klient ostáva stále neautentizovaný. To znamená, že koncový užívateľ ( človek alebo aplikácia, webový prehliadač) si môže byt istý s kým komunikuje. Ďalšia úroveň zabezpečenia kde oba konce „konverzácie“ majú istotu s kým komunikujú – je označovaná ako vzájomná autentifikácia. Vzájomná autentifikácia vyžaduje nasadenie infraštruktúry verejných kľúčov (PKI) pre klientov.

TLS zahrnuje tri základné fázy:

  1. dohoda účastníkov na podporovaných algoritmoch
  2. výmenou kľúčov založenou na šifrovaní s verejným kľúčom a autentifikáciou vychádzajúcou z certifikátov
  3. šifrovania prevádzky symetrickou šifrou. Behom prvej fáze sa klient a server dohodne na používaných kryptografických algoritmoch.

Súčasné implementácie podporujú nasledujúce možnosti:

  • pre kryptografiu s verejným kľúčom: RSA, Diffie-Hellman, DSA
  • pre symetrické šifrovanie: RC2, RC4, IDEA, DES, Triple DES, AES,
  • pre jednosmerné hašovanie: Message- Digest algorithm (MD2, MD4, MD5), Secure Hash Algorithm (SHA-1, SHA-2).

Systém funkčnosti TLS

Ako sme už spomínali, protokol TLS je založený na výmene záznamov. Každý záznam môže byť voliteľne komprimovaný, môže k nemu byť pripojený autentifikačný kód (message authentication code, MAC) a môže byť zašifrovaný. Každému záznamu je priradený typ obsahu, ktorý určuje protokol vyššej úrovne. Pri zahájení spojenia vrstva záznamov obaľuje iný protokol – inicializačný protokol .

Typická inicializácia prebieha následovne

  • Klient pošle správu ClientHello oznamující najvyšší verziu TLS, ktorú podporuje, náhodné číslo a zoznam doporučených šifrovacích sád a kompresných metód.
  • Server odpovie správou Server-Hello obsahujúcou zvolenú verziu protokolu, náhodné číslo, šifrovaciu a kompresnú metódu vybranú z klientom ponúknutého zoznamu.
  • Server pošle svoj certifikát (Certifikát), pokiaľ to zvolená šifra umožňuje. Súčasné certifikáty sú založené na X.509 protokole , ale existuje návrh na používanie certifikátov vychádzajúcich z Open PGP.
  • Server môže pomocou Certificate -Request vyžadovať certifikát od klienta, aby bolo spojenie autentizované spoločne.
  • Server pošle správu Server Hello Done, ktorá signalizuje, že či ukončil inicializačnú dohodu na používaných mechanizmoch.
  • Klient odpovie správou ClientKeyExchange, ktorá môže obsahovať PreMasterSecret, verejný kľuč (v závislosti na zvolenej šifre).
  • Klient a server následovne z náhodných čísel a PreMasterSecret pomocou pečlivo navrhnutej pseudonáhodné funkcie vypočítajú „master-secret“. Ostatné kľúče sú odvodené z generovaných náhodných hodnôt.
  • Klient odošle správu ChangeCipherSpec, ktorá v podstate nesie dáta od užívateľa ktoré budú šifrované. Je sám o sebe protokolom záznamové vrstvy .
  • Na záver klient pošle šifrovanú správu Finished obsahujúcu Hash a MAC predchádzajúcich inicializačných správ.
  • Server bude dešifrovať klientovu správu Finished a chce overiť MAC. Pokiaľ dešifrovanie či overenie havaruje, inicializácia je považovaná za neúspešnú a spojenie by malo byť ukončené.
  • Server pošle správy ChangeCipherSpec a svojou šifrovanou správou Finished prevedie analogické dešifrovanie a overenie.
  • V tomto okamžiku je inicializácia dokončená a je povolený aplikační protokol, ktorého typom obsahu je aplikačná správa vymenovaná medzi klientom a serverom budú zašifrované.

Bezpečnosť TLS

  • Klient používa verejný kľúč certifikačnej autority (CA) ku overeniu digitálneho podpisu v serverovom certifikáte. Ak sa dá CA overiť, klient prijme serverový certifikát ako platný certifikát vydaný dôveryhodnou CA.
  • Klient overuje, či je vydávajúci certifikačná autorita na zozname dôveryhodných CA.
  • Klient kontroluje dobu životnosti serverového certifikátu. Autentifikačný proces sa zastaví, pokiaľ doba jeho platnosti vypršala.
  • K ochrane pred útokmi typu Man-in-the-Middle porovnáva klient aktuálnu DNS a meno servera s menom z certifikátu.
  • Ochrana pred známymi útokmi (vrátane Man-in-the-Middle), ako je snaha o použití nižší (menej bezpečnej) verzie protokolu alebo slabšieho šifrovacieho algoritmu.
  • Používanie overovacieho kódu správy rozšírenej o klíč, tak že len vlastník kľúča dokáže MAC overiť.
  • Správa ukončujúca finalizáciu (Finished) obsahuje hash všetkých správ vymenených v rámci inicializácie oboma stranami.

SSL - Secure Socket Layer

Protokol Secure Socket Layer (SSL) poskytuje vysokú úroveň bezpečnosti pre internetovú komunikáciu. SSL zabezpečuje zašifrované komunikačné spojenie vášho webového prehliadača a webového servera. SSL pomáha počas on-line transakcií zaistiť dôvernosť citlivých informácií (napr. čísel kreditných kariet, zostatkov na účtoch a ďalších osobných a súkromných finančných údajov), ktoré sa posielajú cez internet medzi vašim webovým prehliadačom a webovým serverom. Protokol SSL je staršia verzia novšieho protokolu TSL.

Zabezpečenie servera pomocou SSL

SSL je protokol, navrhnutý pre zaistenie bezpečného prenosu dát cez počítačové siete. Túto bezpečnosť zaisťuje pomocou šifrovania. Všetky dáta prenášané medzi klientom a serverom sú pred odoslaním zašifrované a druhou stranou po prijatí opäť rozšifrované. Internetový server musí byť vybavený špeciálnym programom, ktorý sa stará o to, aby definovaná časť WWW stránok mohla byť klientskemu prehliadaču skrz internet predaná v zašifrovanej podobe. Stránku zabezpečenú pomocou protokolu SSL poznáte podľa: URL adresa obsahuje prefix https://v dolnej časti okna prehliadača je zobrazený symbol uzavretého zámku. Kliknutím na tento symbol získate podrobnejšie informácie (názov a ďalšie informácie o Certifikačnej autorite, dátum vystavenia a platnosť certifikátu, atd.)Certifikačná autorita ACTIVE 24 ponúka zabezpečenie pomocou SSL v týchto variantoch:

Server certifikát - štandardný certifikát

Obsahuje doménové meno, e-mail, názov organizácie, organizačnú jednotku. Umožňuje šifrovanie s kľúčom o sile 40/56/128 bitov podľa povoleného/podporovaného nastavenia klienta/prehliadača

128-bit Super Certifikát

SGC certifikát (obsahuje doménové meno, e-mail, názov organizácie, organizačnú jednotku), umožňuje šifrovanie s kľúčom o sile 128 bitov i v prehliadačoch, ktoré majú z dôvodov exportných obmedzení obmedzené šifrovanie na 40/56 bitov. Ide o prehliadače mimo USA cca do roku 2000, Windows 2000 SP1, Windows XP/MS IE 5.5 SP1 a vyššie už tieto obmedzenia neobsahujú.

SSL 123

Certifikát so zjednodušenou overovacou procedúrou (obsahuje len doménové meno)Zabezpečenie SSL pod certifikátom GeoTrust .

True BusinessID

Štandardný certifikát (obsahuje doménové meno, e-mail, názov organizácie, organizačnú jednotku), umožňuje šifrovanie s kľúčom o sile 40/56/128 bitov podľa povoleného/podporovaného nastavenia klienta/prehliadača

Quick SSL Premium

Certifikát so zjednodušenou overovacou procedúrou (obsahuje len doménové meno)

Jednosmerná SSL autentizácia

(z angl. one-way SSL authentication) Umožňuje SSL klientovi overiť identitu SSL servera, no SSL serveru neumožňuje overiť identitu SSL klienta. Tento spôsob SSL autentizácie využíva pri komunikácii prostredníctvom protokolu HTTPS väčšina verejne dostupných webových serverov, ktoré sprístupňujú aplikácie ako napríklad web mail či internet banking. Koncový používateľ svoju identitu týmto aplikáciám potvrdzuje až na aplikačnej vrstve zadaním mena a hesla, poprípade i ďalšieho prvku ako napríklad hodnota poľa z grid karty.

Obojsmerná SSL autentizácia

(z angl. two-way SSL authentication alebo tiež mutual SSL authentication) Umožňuje SSL klientovi overiť identitu SSL servera a zároveň umožňuje SSL serveru overiť identitu SSL klienta. Tento typ autentizácie sa nazýva aj klientskou autentizáciou, pretože SSL klient pri nej preukazuje svoju identitu SSL serveru klientskym certifikátom. Autentizácia klientskym certifikátom môže vhodne doplniť alebo dokonca úplne nahradiť klasické autentizačné metódy ako je napríklad zadanie mena a hesla.

Princíp komunikácie SSL protokolu

SSL protokol a prenos dát cez tento protokol je v blokovej schéme pomocou jednotlivých blokov možné vidieť na nasledujúcom obrázku:

Komunikácia pomocou SSL protokolu

SSL je doslova vrstva bezpečných socketov jeho protokol, resp. vrstva vložená medzi vrstvu transportnú (napr. TCP/IP) a aplikačnú (napr. HTTP), ktorá poskytuje zabezpečenie komunikácie šifrovaním a autentifikáciou komunikujúcich strán. SSL spojenie funguje na princípe asymetrické šifry, ktorá v každej z komunikujúcich strán má dvojicu šifrovacích kľúčov – verejný a súkromný. Verejný kľúč je možné zverejniť a pokiaľ týmto kľúčom ktokoľvek zašifruje nejakú správu, je zaistené že bude môcť rozšifrovať len majiteľ použitého verejného kľúča svojím súkromným kľúčom.

Komunikácia SSL

Komunikácia SSL prebieha nasledovne:

  1. Klient pošle serveru požiadavku na SSL spojenie, spolu s rôznymi doplňujúcimi informáciami (verzia SSL, nastavenie šifrovania atd.).
  2. Server pošle klientovi odpoveď na jeho požiadavku, ktorá obsahuje rovnaký typ informácie a hlavne certifikátu serveru.
  3. Podľa prijatého certifikátu si klient overí autentifikáciu servera. Certifikát taktiež obsahuje verejný kľuč servera.
  4. Na základe doposiaľ obdržaných informácií vygeneruje klient základ šifrovacieho kľúča , ktorým sa bude šifrovať následná komunikácia. Ten zašifruje verejným kľúčom serveru a pošle mu ho.
  5. Server použije svoj súkromný kľuč k rozšifrovaniu základu šifrovacieho kľúča. Z tohto základu vygenerujú ako aj server, tak aj klient hlavný šifrovací kľuč.
  6. Klient a server si navzájom potvrdí, že od teraz bude ich komunikácia šifrovaná týmto kľúčom. Fáza handshake týmto končí.
  7. Je dohodnuté zabezpečené spojenie šifrované vygenerovaným šifrovacím kľúčom.
  8. Aplikácie od teraz komunikujú cez šifrované spojenie. Počas prvej fáze ustanovenia bezpečného spojenia si klient a server dohodnú kryptografické algoritmy, ktoré budú použité. pre výmenu kľúčov.

Doplňujúce informácie

  • Adresy stránok zabezpečených pomocou SSL začínajú https://. Prehliadač taktiež zabezpečené stránky označuje ikonkou zámku v stavovej lište. Moderný prehliadač zobrazuje ikonku zámku riadku adresy a podfarbuje tento riadok rôznymi farbami (zelená pre plne vyhovujúcu, žltá alebo oranžová pre čiastočne vyhovujúce (napr. vyhovujúce certifikáty, ale vydané pre inú doménu), červená pre nevyhovujúce certifikáty).
  • Štandardný port pre komunikáciu cez HTTPS/SSL je 443, štandardní port HTTP je 80.
  • HTTPS/SSL dokáže zaistiť dôvernosť dát na ceste od klienta k serveru (a naopak). Je na prevádzkovateľovi servera, ako s dôvernými dátami po rozšifrovaní naloží. Výnimkou je uloženie v nešifrovanej podobe do nechránenej databázy

Referenicie