Operační program Vzdělávání pro konkurenceschopnost Projekt: Vzdělávání pro bezpečnostní systém státu (reg. č.: CZ.1.01/2.2.00/ ) Bezpečnostní technologie I Úvod do problematiky SSL/TLS Josef Kaderka
Otázky bezpečnosti Soukromí Kdokoliv může zjistit obsah Integrita Kdokoliv může změnit obsah Autentizace Není jasné, s kým komunikujeme
TLS: Transport Layer Security dříve SSL: Secure Sockets Layer Zabývá se otázkami soukromi, integrity a autentizace Co je to? Jak to řeší uvedené otázky? Jak to používat?
Co je TLS? Protokol, vložený mezi transportní a aplikační vrstvu Vyžaduje spolehlivý protokol transportní vrstvy (např. TCP) Podporuje jakýkoliv protokol aplikační vrstvy TLS TCP IP HTTPTelnetFTPLDAP
TLS: Soukromí Šifruje zprávy, takže je nelze (libovolněú číst Používá konvenční kryptografické metody se sdíleným klíčem DES, 3DES RC2, RC4 IDEA Zpráva$#A&F!Zpráva
TLS: Výměna klíče Potřeba bezpečné metody pro výměnu tajného klíče Použije se šifrování pomocí veřejného klíče je vytvořen pár klíčů – jeden pro šifrování, druhý pro dešifrování pomalejší nežli konvenční (symetrické) šifrovací postupy jeden klíč z daného páru je zveřejněn, druhý utajen Volby jsou RSA nebo Diffie-Hellman
TLS: Integrita Vypočítá se Message Authentication Code (MAC) pevné délky Zahrnuje hash zprávy Zahrnuje sdílené tajemství Zahrnuje pořadové číslo MAC je vyslán se zprávou
TLS: Integrita Příjemce vytvoří nový MAC měl by odpovídat vyslanému MAC TLS umožňuje použít MD5 nebo SHA-1 AB Message’ MAC’ MAC =? Message MAC
TLS: Autentizace Ověřuje se identita účastníků komunikace Autentizace klienta je volitelná Pro přidružení identity k veřejnému klíči (či jiným atributům) se používá certifikát A Certifikát B
TLS: Přehled Navázání spojení Dohoda na algoritmech Předání sdíleného tajemství Autentizace Přenos aplikačních dat Zajišťuje soukromí a integritu
TLS: Architektura TLS pro přenos aplikačních a TLS informací definuje tzv. Record Protocol Relace je navázána pomocí Handshake Protocol TLS Record Protocol Handshake protokol Protokol výstrahy Výměna specifikace šifry
TLS: Record Protocol
TLS: Handshake Vyjednání (tj. dohoda) šifrovacích algoritmech Která symetrická šifra se použije Metoda výměny klíče Jaká se hashovací metoda se použije Vytvoření a sdílení hlavního tajemství (master secret) Volitelná autentizace servere a klienta
Handshake - fáze Zpráva Hello Zprávb Výměna certifikátů a klíčů Zpráva Specifikace šifrovací metody a Závěr
TLS: Hello Klient pomocí “Hello” – zahajuje relaci Navrhne verzi protokolu Navrhne šifrovací metodu Server si zvolí protokol a metodu Klient může vyžádat použití dříve uložené relace Server rozhodne, zda této žádosti vyhovět
TLS: Výměna klíče Server odešle certifikát obsahující veřejný klíč (RSA) nebo parametry pro vyjednávání algoritmem Diffie- Hellman Klient odešle šifrované předběžné tajemství (“pre-master” secret) serveru pomocí zprávy Client Key Exchange Je vypočteno hlavní tajemství (Master secret) Použijí se náhodné hodnoty předané v Hello zprávách klienta a serveru
Certifikáty a veřejný klíč Certifikáty X.509 přidružují veřejný klíč k identitě Certifikační autorita (CA) vytvoří certifikát V souladu s politikami a a po ověření identity Podepíše certifikát Uživatel certifikátu musí zajistit, aby tento byl platný
Validace Certifikátu V certifikačním řetězci (hierrarchii) musí být nalezena odpovídající CA Jedna CA smí vydat certifikát pro jinou CA Musí být ověřeno, že platnost certifikátu nebyla zrušena (tj. že nebyl revokován) CA vydává seznam neplatných certifikátů (Certificate Revocation List - CRL)
X.509: Obsah certifikátu Version Serial Number Signature Algorithm Identifier Object Identifier (OID) e.g. id-dsa: {iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 1} Issuer (CA) X.500 name Validity Period (Start,End) Subject X.500 name Subject Public Key Algorithm Value Issuer Unique Id (Version 2,3) Subject Unique Id (Version 2,3) Extensions (version 3) optional CA digital Signature
Jména subjektů X.500 používá tzv. odlišovací jméno (Distinguished Name - DN) Je asociováno s uzlem v rámci hierarchického adresáře (X.500) Každá uzel má tzv. relativní odlišovací jméno (Relative Distinguished Name - RDN) Cesta k nadřazenému uzlu Unikátní množina párů atribut/hodnota pro tento uzel
Příklad jména subjektu Na nejvyšší úrovni leží stát (např. US) Na další úrovni se typicky nalézají organizace (např. CertCo) Ještě níže leží osoby (např. Common Name “Elizabeth” s identifikátorem ID = 1) DN = { C=US; O=CertCo; CN=Elizabeth, ID=1}
Certifikáty verze 3 Certifikáty X.509 verze 3 podporují alternativní formáty jména ve formě rozšíření (doplňků) X.500 jména Internetová doménová jména ové adresy URL Certifikát může obsahovat i více než jedno jméno
Podpis certifikátu RSA podpis Vytvoří se hash certifikátu Zašifruje se pomocí privátního klíče certifikační autority Ověření podpisu Dešifruje se pomocí veřejného klíče certifikační autority Ověří se hash
TLS: ServerKeyExchange Klient ClientHello Server ServerHello Certificate ServerKeyExchange
TLS: Žádost o certifikát Client ClientHello Server ServerHello Certifikát ServerKeyExchange CertificateRequest
TLS: Certifikát klienta Klient ClientHello ClientCertificate ClientKeyExchange Server ServerHello Certifikát ServerKeyExchange CertificateRequest
TLS: Změna specifikace šifry, konec Klient [ChangeCipherSpec] Finished Aplikační data Server [ChangeCipherSpec] Finished Aplikační data
TLS: Změna specifikace šifry, konec Změna specifikace šifry, Oznámí přechod na vyjednané algoritmy a hodnoty Konec (Finished) Pošle kopii handshake pomocí nové relace Povolí ověření handshake
TLS: Použití relace Klient ClientHello (Session #) [ChangeCipherSpec] Finished Aplikační data Server ServerHello (Session #) [ChangeCipherSpec] Finished Aplikační data
Změny mezi SSL 3.0 a TLS Odstraněna podpora mechanismu Fortezza Přidány dodatečné výstrahy Modifikace výpočtů hashů Protokol verze 3.1 v ClientHello, ServerHello
TLS: Aplikace v HTTP HTTP je nejčastější TLS aplikací Vyžaduje webový server podporující TLS Vyžaduje webový prohlížeč podporující TLS Mozilla Firefox Opera Chrome Internet Explorer
Webové servery Apache-SSL Apache mod_ssl Stronghold Roxen iNetStore
Jiné aplikace Telnet FTP LDAP POP SSLrsh Komerční proxy
TLS: Implementace Kryptografické knihovny RSARef, BSAFE TLS/SSL balíčky SSLeay SSLRef
Diskuse problémů certifikátů X.509 Správa certifikátů je složitá Hierarchie certifikačních autorit Mechanismy pro vyžadování, vydávání a zneplatňování certifikátů X.500 jména jsou složitá Popisy formatů jsou záhadné (ASN.1)
Alternativa k X.509: SDSI SDSI: Simple Distributed Security Infrastructure (Rivest, Lampson) V rámci SDSI 2.0 sloučeno s IETF SPKI: Simple Public-Key Infrastructure Eliminace jmen X.500 – používá se DNS a text Každý je sobě certifikační autoritou Místo ASN.1 se používají S-výrazy (S-expressions”) a jednoduchá syntax Jména a autorizace certifikátů
Alternativy TLS S-HTTP: bezpečný HTTP protocol, shttp:// IPSec: bezpečná verzeIP SET: Secure Electronic Transaction Protokol a infrastruktura pro platby kartami SASL: Simple Authentication and Security Layer (RFC 2222)
Závěr SSL/TLS řeší potřebu zabezpečení komunikace v Internetu Soukromí – konvenční (symetrické) šifrování Integrita - Message Authentication Code Authentizace – certifikáty X.509 Se SSL se lze dnes nejčastěji potkat při komunikaci webových prohlížečů s příslušnými servery