TLS ve Windows
11.
ročník největší odborné
IT konference v ČR!
Ondřej Ševeček
MCM:Directory | MVP:Security | CEH
[email protected] | sevecek.com
Praha 2013
O čem bude řeč?
 Co je TLS a SSL
 Jaké používá algoritmy a jaké potřebuje
certifikáty
 Jakou má TLS podporu v operačních
systémech
 Útoky, záplaty a kompatibilita
 Implementace a příklady
 Ověřování klientským certifikátem
Co je TLS
 Transport Layer Security
– kryptografický protokol pro bezpečné přenášení dat
v aplikační vrstvě TCP/IP
• RSA, RC4, DES, AES, ECDH, MD5, …
– standardní forma staršího NetScape SSL
 Šifrování a ověření identity serveru
– HTTPS (SSTP, IPHTTPS), LDAPS, RDP, SMTPS,
Hyper-V Replication, 802.1x EAP
 Ověření uživatele (klienta)
– TLS client certificate authentication and logon
 Vyžaduje certifikát serveru
– RSA, DSA, ECDSA
Co je TLS
Application traffic
HTTP, LDAP, SMTP, RDP
Server
Certificate
Server
Client
TLS tunnel
Použití klientských certifikátů
TLS tunnel
Application traffic
HTTP, LDAP, SMTP, RDP
Server
Certificate
Server
Client
Client
Certificate
Certifikát serveru
 Přenos klíče
– RSA key exchange
– (EC)DH key exchange
 Ověření identity serveru
– Subject a SAN rozšíření certifikátů
– časová platnost
– důvěryhodný řetěz autorit
– CRL/OCSP
• by default až IE8
Historie TLS
 SSL 2.0 (1995) a SSL 3.0 (1996)
– not FIPS compliant
 TLS 1.0 (1999)
– IETF RFC 2246
– vyžadováno na kompatibilitu s FIPS
 TLS 1.1 (2006)
– až od Windows 7 a Windows 2008 R2
– vypnuto ve výchozím stavu
 TLS 1.2 (2008)
Schannel
 COM knihovna pro vytváření TLS spojení
 SCHANNEL Security Provider
– HKLM\System\CCS\Control\SecurityProviders\S
CHANNEL
 Group Policy
– Policies / Administrative Templates / Network /
SSL
SSL cipher suites





SSL_RC4_128_WITH_MD5
SSL_DES_192_EDE3_CBC_WITH_MD5
SSL_RC2_CBC_128_CBC_WITH_MD5
SSL_DES_64_CBC_WITH_MD5
SSL_RC4_128_EXPORT40_WITH_MD5
Windows XP/2003- TLS 1.0/SSL
cipher suites (no AES)













TLS_RSA_WITH_RC4_128_MD5
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_DES_CBC_SHA
TLS_DHE_DSS_WITH_DES_CBC_SHA
TLS_RSA_EXPORT1024_WITH_RC4_56_SHA
TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA
TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA
TLS_RSA_EXPORT_WITH_RC4_40_MD5
TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5
TLS_RSA_WITH_NULL_MD5
TLS_RSA_WITH_NULL_SHA




SSL_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_3DES_EDE_CBC_SHA
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
SSL_RSA_WITH_RC4_128_MD5
Windows Vista/2008+ TLS v1.0 cipher
suites (AES/EC/SHA1, no SHA2)












TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
TLS_DHE_DSS_WITH_AES_256_CBC_SHA
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_RC4_128_MD5




SSL_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_3DES_EDE_CBC_SHA
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
SSL_RSA_WITH_RC4_128_MD5
Podpora AES na Windows 2003
 http://support.microsoft.com/kb/948963
 TLS_RSA_WITH_AES_128_CBC_SHA
AES128-SHA
 TLS_RSA_WITH_AES_256_CBC_SHA
AES256-SHA
Windows 7/2008 R2+ TLS v1.1
cipher suites (AES/EC/SHA2)

















TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P2
56
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P2
56
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA384_P3
84
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA384_P3
84
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256













TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
TLS_DHE_DSS_WITH_AES_256_CBC_SHA
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_RC4_128_MD5
SSL_CK_RC4_128_WITH_MD5
SSL_CK_DES_192_EDE3_CBC_WITH_MD5
TLS_RSA_WITH_NULL_SHA256
TLS_RSA_WITH_NULL_SHA




SSL_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_3DES_EDE_CBC_SHA
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
SSL_RSA_WITH_RC4_128_MD5
FIPS kompatibilita
FIPS kompatibilita
 Zakazuje SSL 2.0 a SSL 3.0
 Umožňuje jen TLS 1.0 a novější
– RDP toto podporuje až od Windows 2003 SP1
– RDP klient 5.2+
 Nemůže používat RC4
 Nemůže používat MD5
15
Útoky
 SSL 2.0 kompletně diskreditováno
 TLS 1.0 a SSL 3.0 insecure renegotiation attack
– vypnuto dočasně úplně pomocí KB977377
– secure renegotiation zpátky zapnuto KB980436, který
implementuje RFC 5746
 TLS 1.0 BEAST attack
– útok pouze na klienta, na serverech to neovlivníte
– řeší KB2643584 a KB2638806
 DoS vulnerability
– server vcelku hodně pracuje oproti klientovi
– renegotiation je ještě o hodně náročnější na prostředky
 RC4 je příliš slabé (2013)
Ochrana proti renego útoku
(KB980436)

Nainstalujte KB980436
–
–
–
–

jak na servery tak klienty
tím pádem klienti i servery automaticky dělají secure renegotiation
servery i klienti přidávají do komunikace Renego Indication Extension, aby to druhá strana věděla
by default všichni dělají secure renego, ale přijímají i insecure renego
Pokud chcete vynutit secure renego, zapněte v registrech
–
–
HKLM\System\CCS\Control\SecurityProviders\SCHANNEL
na serveru: AllowInsecureRenegoClients = DWORD = 0
na klientovi: AllowInsecureRenegoServers = DWORD = 0
Klienti se nepřipojí na server, který neumí secure renego (RFC 5746)
•
–
Servery odmítnou klienty, kteří neumí secure renego
•

bez ohledu na to, jestli je nebo není potřeba renego
bez ohledu na to, jestli je nebo není potřeba renego
Pokud máte bez ohledu na registry problém, že se klienti nemohou někam připojit, i
když není zrovna renego vůbec potřeba, zapněte na klientech
–
–
UseScsvForTls = DWORD = 1
místo Renegotiation Indication Extension to posílá suitu 00FF, která neRFC5746 serverům nevadí
Ochrana proti BEAST útoku
(KB2643584)
 Nainstalujte KB2643584 nebo 2638806 (XP/2003)
– všechna klientova data chodí na více, než jeden paket
– ve výchozím stavu si to musí klientova aplikace vyžádat
(SendExtraRecord = 0)
– IE k tomu potřebuje další záplatu
 Můžete vynutit rozdělování na více paketů pro všechny
aplikace
– HKLM\System\CCS\Control\SecurityProviders\SCHANNEL
SendExtraRecord = DWORD = 1
– ale možná se na některé servery nedostanete
– RDP s NLA, SQL Server, SSTP
 Můžete to úplně vypnout
– SendExtraRecord = DWORD = 2
Jak poznám že mám záplatu
 PowerShell
 gwmi win32_quickfixengineering |
? { $_.HotfixId -eq 'KB980436' }
Jak vypnout SSL 2.0
 HKLM\System\CurrentControlSet\Control\Se
curityProviders \SCHANNEL\Protocols
– \PCT 1.0
– \SSL 2.0
• \Client
– Enabled = DWORD = 0
• \Server
– Enabled = DWORD = 0
Jak zapnout TLS 1.1 a 1.2
 HKLM\System\CurrentControlSet\Control\Se
curityProviders \SCHANNEL\Protocols
– \TLS 1.1
– \TLS 1.2
• \Client
– Enabled = DWORD = 1
– DisabledByDefault = DWORD = 0
• \Server
– Enabled = DWORD = 1
– DisabledByDefault = DWORD = 0
Omezení a prioritizace algoritmů (Vista+)
Omezení a prioritizace algoritmů (2003-)
 http://support.microsoft.com/kb/245030
 HKLM\System\CCS\Control\SecurityProvider
s\SCHANNEL\Ciphers
Testování TLS
 www.ssllabs.com
Certifikáty
 Buď RSA Exchange na serveru
– funguje i se SSL 3.0
– někdy vyžaduje i signature (LDAPS, Exchange)
 nebo RSA/ECDH Signature na serveru
 nebo DSA/DH Signature na serveru
– funguje i se SSL 3.0
 nebo ECDSA/ECDH Signature na serveru
Comparable Algorithm Strengths (SP800-57)
Strength
Symetric
RSA
ECDSA
SHA
80 bit
2TDEA
RSA 1024
ECDSA 160
SHA-1
112 bit
3TDEA
RSA 2048
ECDSA 224
SHA-224
128 bit
AES-128
RSA 3072
ECDSA 256
SHA-256
192 bit
AES-192
RSA 7680
ECDSA 384
SHA-384
256 bit
AES-256
RSA 15360
ECDSA 512
SHA-512
RSA certifikáty
 2048 široce podporováno na klientech
– 1024 je slabé
– menší než 1024 (například 1023) je blokováno
KB2661254
 SHA-1 stále lepší než 12 znaková komplexní hesla
– http://www.sevecek.com/Lists/Posts/Post.aspx?ID=145
 SHA-2
– serveru je to jedno (XP/2003 potřebují KB968730 kvůli
autoenrollmentu)
– klient to ověří od Windows XP SP3
– klient to ověří od KB938397 pro Windows 2003
 Alternate signature algorithm (PKCS#1 v2.1)
– vůbec použitelné až od Vista
HTTP.SYS a TLS
 IIS interface?
 NETSH HTTP SHOW SSLCERT
– DELETE SSLCERT
– ADD SSLCERT
 AppId
–
–
–
–
–
–
http://www.sevecek.com/Lists/Posts/Post.aspx?ID=9
IIS: {4dc3e181-e14b-4a21-b022-59fc669b0914}
SSTP: {ba195980-cd49-458b-9e23-c84ee0abcd75}
SQL RS: {1d40ebc7-1983-4ac5-82aa-1e17a7ae9a0e}
WinRM: {afebb9ad-9b97-4a91-9ab5-daf4d59122f6}
Hyper-V: ​{fed10a98-8cb9-41e2-8608-264b923c2623}
CSP vs. CNG
 IE a HTTP.SYS podporuje oboje CSP i CNG
 Windows 2003 Schannel a starší potřebuje
pouze
– RSA Schannel Cryptographic Service Provider
při použití RSA certifikátu serveru
– DH Schannel Cryptographic Service Provider při
použití DSA certifikátu serveru
Více web serverů a hlavička host
Server Certificate
www.gopas.cz
TLS tunnel
HTTP GET /uri.htm
User-Agent: Internet Explorer
Accept-Language: cs-cz
Host: www.gopas.cz
Server
Client
IP: 10.10.0.37
Více web serverů a hlavička host
Server Certificate
www.gopas.cz
TLS tunnel
HTTP GET /uri.htm
Host: www.sevecek.com
Server
HTTP GET /uri.htm
Host: www.gopas.cz
Server
Client
IP: 10.10.0.37
Více web serverů a hlavička host
Server Certificate
*.gopas.cz
TLS tunnel
HTTP GET /uri.htm
Host: kurzy.gopas.cz
Server
HTTP GET /uri.htm
Host: www.gopas.cz
Server
Client
IP: 10.10.0.37
Server Name Indication (SNI)
 Podporováno od serveru Windows 2012
– Schannel a HTTP.SYS
 Klienti alespoň Windows Vista/2008
–
–
–
–
–
–
–
–
musí to ale chtít aplikace
IE 7
Firefox 2.0
Opera 8.0
Opera Mobile 10.1
Chrome 6
Safari 2.1
Windows Phone 7
Ověření klientským certifikátem
 Nutno k ustavení TLS tunelu
– ještě dříve, než mohou vůbec projít aplikační
data, byť i jen jednoduché HTTP hlavičky např.
 Omezení anonymních pokusů o zkoušení
hesla
– možno použít přímo k ověřování uživatelů
 Komplikace použití z cizích strojů
– export certifikátu, čipová karta
Požadavky na klientský certifikát
 Digital signature
– je slušné nemít uvnitř nonrepudiation
 Přihlašování vůči AD
– SAN musí obsahovat UPN
– nebo musí být certifikát mapován na účet v AD
"ručně"
– issuing CA musí být NTAuth
 Není nutné, aby ho vydala stejná CA jako
certifikát serveru ($$$)
– veřejný certifikát serveru
– vlastní vnitřní certifikát uživatele
Certificate Trust List (CTL)
 Server zasílá klientům seznam svých
důvěryhodných root CA
 Pokud je jich moc, je to zbytečná zátěž kabelu
 Možno definovat omezení (OID) na klientský
certifikát
– CTL vlastní OID: 1.3.6.1.4.1.311.10.1
 Store in Intermediate CAs
 Apply with NETSH HTTP ADD SSLCERT
– SSLCTLIDENTIFIER = ctl name
– SSLCTLSTORENAME = CA
Reference
 Schannel cipher suites in Windows Vista
– http://msdn.microsoft.com/enus/library/windows/desktop/ff468651(v=vs.85).aspx
 Cipher suites in Schannel in Windows 7 and newer
– http://msdn.microsoft.com/enus/library/windows/desktop/aa374757(v=vs.85).aspx
 Cipher suites in Schannel in Windows XP and 2003
– http://msdn.microsoft.com/enus/library/windows/desktop/aa380512(v=vs.85).aspx
 AES support in Schannel in Windows 2003
– http://support.microsoft.com/kb/948963
Děkuji za pozornost!
 Příbuzné kurzy
 GOC173 - PKI deployment
Descargar

TechEd 2013 - Ševeček - Protokoly TLS a SSL ve Windows