Presentasjon JavaZone2014 Rolf Rander Næss

Download Report

Transcript Presentasjon JavaZone2014 Rolf Rander Næss

Hvordan konfigurere TLS
Eller: hva betyr egentlig TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
JavaZone, september 2014
Rolf Rander Næss
© Acando AB
Selv de store slurver med detaljene
© Acando AB
© Acando AB
Tilgjengelighet
Konfidensialitet
Integritet
Informasjonssikkerhet
Recover
Respond
Detect
Prevent
Identify
© Acando AB
Nettverk/teknologistack
SOAP
HTML
HTTPS/HTTP2/SPDY
IMAPS, SMTP-STARTTLS,
VPN
Transport Layer Security
TCP/IP
© Acando AB
UDP/IP
PKI/Sertifikat
Algoritmer og
matematikk
Nettverkskode i Java
● For å kommunisere over TCP/IP:
Socket s = SocketFactory.getDefault().createSocket(…)
● For å kommunisere med TLS:
Socket s = SSLSocketFactory.getDefault().createSocket(…)
© Acando AB
TLS 1.2
TLS 1.1
TLS 1.0
SSL 3.0
SSL 2.0
Har jeg sett dette før?
TLS 1.3
1995
1996
© Acando AB
1999
2006
2008
DHE
DH
ECDHE
ECDH
RSA
© Acando AB
DSA
RSA
ECDSA
RC4
AES
3DES
128
256
168
CBC
GCM
CCM
MD5
SHA-1
SHA256
SHA384
DHE
DH
ECDHE
ECDH
RSA
DSA
RSA
ECDSA
RC4
AES
3DES
Elliptiske kurver
© Acando AB
128
256
168
CBC
GCM
CCM
MD5
SHA-1
SHA256
SHA384
DHE
DH
ECDHE
ECDH
RSA
© Acando AB
DSA
RSA
ECDSA
RC4
AES
3DES
128
256
168
DH – Diffie-Hellman
ECDH – Elliptic Curve Diffie-Hellman
DHE, ECDHE – … Ephemeral
CBC
GCM
CCM
MD5
SHA-1
SHA256
SHA384
DHE
DH
DSA
ECDHE
RSA
ECDH
ECDSA
RSA
CBC
– Chained Block Cipher
BEAST
RC4
AES
3DES
GCM
– Galois/Counter
Mode
(Browser
Exploit Against
SSL/TLS)
CCM – Counter with CBC-MAC
© Acando AB
128
256
168
CBC
GCM
CCM
MD5
SHA-1
SHA256
SHA384
DHE
DH
ECDHE
ECDH
RSA
© Acando AB
DSA
RSA
ECDSA
RC4
AES
3DES
128
256
168
CBC
GCM
CCM
MD5
SHA-1
SHA256
SHA384
Reelle alternativer
● Noen tusen kombinasjoner som er teoretisk mulig
● 313 kombinasjoner er definert
● 85 er realistiske alternativ
● 24 er igjen etter noen rimelige begrensninger:
1. Perfect Forward Secrecy: nøkkelutveksling ECDHE > DHE > RSA
2. Autentisering: ECDSA > RSA
3. Integritet: SHA-256 > SHA-1, ikke MD5
4. Nøkkellengde: 256 > 128
© Acando AB
Anbefalt liste av cipher suites, prioritert rekkefølge
● TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
● TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
● TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
● TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
● TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
● TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
● TLS_DHE_RSA_WITH_AES_256_CBC_SHA384
● TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
● TLS_DHE_RSA_WITH_AES_256_CBC_SHA
● TLS_RSA_WITH_AES_256_GCM_SHA384
● TLS_RSA_WITH_AES_256_CBC_SHA384
● TLS_RSA_WITH_AES_256_CBC_SHA
© Acando AB
Andre parametre
● Renegotiation
 Renegotiation attack
 Secure renegotiation
● Compression
 «BREACH» (Browser Reconnaissance and Exfiltration via Adaptive Compression of Hypertext)
 «CRIME» (Compression Ratio Info-leak Made Easy)
● Heartbeat
 Heartbleed
© Acando AB
TLS-støtte i moderne browsere
TLS 1.1
TLS 1.2
Chrome
V 22 (sept 2012)
V 30 (okt 2013)
Firefox
V 27 (feb 2014)
V 27 (feb 2014)
IE
V 11 (okt 2013)
V 11 (okt 2013)
Opera
V 14 (jul 2013)
V 17 (aug 2013)
Safari, OSX
V 7 (jun 2013)
V 7 (jun 2013)
iOS
V 5 (okt 2011)
V 5 (okt 2011)
Android
V 4.4.2 (des 2013)
V 4.4.2 (des 2013)
© Acando AB
Oppsummert
Protokoll Nøkkelutveksling/ autentisering
TLS 1.2
Bulk kryptering Hash/integritet
Bruk ECDHE for «perfect forward secrecy» AES 256/128
GCM hvis mulig
RSA eller ECDSA for autentisering
● Slå av «renegotiation»
● Slå av «compression»
● Hvis tjenesten din er tilgjengelig via internett: test den på ssllabs.com
© Acando AB
TLS 1.2: SHA384/256
TLS 1.0/1.1: SHA1
Hva manglet hos Yahoo!?
● Manglet «Forward Secrecy»
● Støttet «RC4»
● Ingen beskyttelse mot «CRIME»
© Acando AB
Del 3: eksempelkode og –konfigurasjoner
● Java (Bouncy castle, JSSE)
● Apache HTTP
● Websphere
● Tomcat
● lighttpd
© Acando AB
OpenSSL
© Acando AB
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-ECDSA-AES256-SHA384
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES128-SHA256
ECDHE-ECDSA-AES256-SHA
ECDHE-ECDSA-AES128-SHA
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-SHA384
DHE-RSA-AES256-GCM-SHA384
DHE-RSA-AES256-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-SHA256
DHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES128-SHA256
ECDHE-RSA-AES256-SHA
DHE-RSA-AES256-SHA
ECDHE-RSA-AES128-SHA
DHE-RSA-AES128-SHA
AES256-GCM-SHA384
AES256-SHA256
AES128-GCM-SHA256
AES128-SHA256
AES256-SHA
AES128-SHA
Apache mod_ssl
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-…
SSLCompression off
SSLHonorCipherOrder on
SSLInsecureRenegotiation off
SSLProtocol TLSv1.2
© Acando AB
Tomcat
<Connector
protocol="HTTP/1.1"
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="${user.home}/.keystore" keystorePass="changeit"
clientAuth="false"
sslProtocol="TLS"
sslEnabledProtocols="TLSv1.2"
ciphers="…"
/>
© Acando AB
lighttpd
# /usr/share/doc/lighttpd/ssl.txt
$SERVER["socket"] == "0.0.0.0:443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/server.pem"
ssl.ca-file = "/etc/lighttpd/ca.pem"
ssl.cipher-list = "…"
ssl.honor-cipher-order = "enable"
ssl.use-sslv2 = "disable"
ssl.use-sslv3 = "disable"
}
© Acando AB
Java (JSSE, Java Secure Sockets Extension)
// Få tak i en socket
socketFactory = SSLContext.getInstance(sslCtxName, providerName).getSocketFactory();
socket = socketFactory.createSocket(host, port);
// Hvilke cipher suites er støttet
socket.getSupportedCipherSuites()
// Velge cipher suites
socket.setEnabledCipherSuites(String[]);
// Velge protokollversjon:
socket.setEnabledProtocols(new String[] {"TLSv1.2"})
© Acando AB
Hvem tilbyr EC-sertifikat?
● Symantec (Verisign)
● Comodo
● DigiCert
© Acando AB
Blogger og referanser
● https://www.imperialviolet.org/
● http://blog.ivanristic.com/
● https://www.ssllabs.com/
● http://www.securityfocus.com/
● http://en.wikipedia.org/wiki/Transport_Layer_Security
● https://tools.ietf.org/html/draft-sheffer-tls-bcp-01#section-4.1
● JCE unlimited policy:
 java 6: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
 java 7: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
● Tilsvarende fra IBM: https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=jcesdk
● Cipher suites støttet av:
 windows 7: http://msdn.microsoft.com/en-us/library/windows/desktop/aa374757(v=vs.85).aspx
 vista: http://msdn.microsoft.com/en-us/library/windows/desktop/ff468651(v=vs.85).aspx
© Acando AB