Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The first few milliseconds of HTTPS - phpnz14
Search
Joshua Thijssen
August 28, 2014
230
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
The first few milliseconds of HTTPS - phpnz14
Joshua Thijssen
August 28, 2014
More Decks by Joshua Thijssen
See All by Joshua Thijssen
RAFT: A story on how clusters of computers keep your data in sync
jaytaph
0
73
The first few milliseconds of HTTPS
jaytaph
0
300
Paradoxes and theorems every developer should know
jaytaph
0
350
Paradoxes and theorems every developer should know
jaytaph
0
790
The first few milliseconds of HTTPS - PHPNW16
jaytaph
1
290
compiler_-_php010.pdf
jaytaph
0
160
Paradoxes and theorems every developer should know
jaytaph
0
290
Introduction into interpreters, compilers and JIT
jaytaph
1
380
Paradoxes and theorems every developer should know
jaytaph
1
980
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
610
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
210
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
270
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
290
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Google's AI Overviews - The New Search
badams
0
1k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
Chasing Engaging Ingredients in Design
codingconduct
0
220
Transcript
The first 200 milliseconds of HTTPS 1 Joshua Thijssen jaytaph
2
➡ What’s happening in the first 200+ milliseconds in a
initial HTTPS connection. 2
➡ What’s happening in the first 200+ milliseconds in a
initial HTTPS connection. ➡ Give tips and hints on hardening your setup. 2
➡ What’s happening in the first 200+ milliseconds in a
initial HTTPS connection. ➡ Give tips and hints on hardening your setup. ➡ Give you insights in new and upcoming technologies. 2
➡ What’s happening in the first 200+ milliseconds in a
initial HTTPS connection. ➡ Give tips and hints on hardening your setup. ➡ Give you insights in new and upcoming technologies. ➡ Show you things to you (probably) didn’t knew. 2
This talk is inspired by a blogpost from Jeff Moser
http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html Unknown fact! 3
HTTPS == HTTP on top of TLS 4
Transport Layer Security (TLS) 5
Secure Socket Layer (SSL) 6 A short and scary history
then now 7
then now SSL 1.0 Vaporware 1994 7
then now feb 1995 SSL 2.0 Not-so-secure-socket-layer SSL 1.0 Vaporware
1994 7
then now feb 1995 SSL 2.0 Not-so-secure-socket-layer jun 1996 SSL
3.0 Something stable! SSL 1.0 Vaporware 1994 7
then now feb 1995 SSL 2.0 Not-so-secure-socket-layer jun 1996 SSL
3.0 Something stable! jan 1999 TLS 1.0 SSL 3.1 SSL 1.0 Vaporware 1994 7
then now feb 1995 SSL 2.0 Not-so-secure-socket-layer jun 1996 SSL
3.0 Something stable! jan 1999 TLS 1.0 SSL 3.1 apr 2006 TLS 1.1 SSL 1.0 Vaporware 1994 7
then now feb 1995 SSL 2.0 Not-so-secure-socket-layer jun 1996 SSL
3.0 Something stable! jan 1999 TLS 1.0 SSL 3.1 apr 2006 TLS 1.1 TLS 1.2 aug 2008 SSL 1.0 Vaporware 1994 7
https://www.trustworthyinternet.org/ssl-pulse/ 25,7% 99,6% 99,3% 18,2% 20,7% SSL 2.0 SSL 3.0
TLS 1.0 TLS 1.1 TLS 1.2 8 November 2013
https://www.trustworthyinternet.org/ssl-pulse/ 25,7% 99,6% 99,3% 18,2% 20,7% SSL 2.0 SSL 3.0
TLS 1.0 TLS 1.1 TLS 1.2 8 20,5% 98,5% 99,3% 38,4% 40,8% SSL 2.0 SSL 3.0 TLS 1.0 TLS 1.1 TLS 1.2 November 2013 Aug 2014
RFC 5246 (TLS v1.2) 9
10 Record Layer
10 Record Layer Type Version Length
10 Record Layer Type Version Length Protocol
10 Record Layer Type Version Length Protocol Protocol Protocol
10 Record Layer Type Version Length Protocol Protocol Protocol Record
Layer Type Version Length Protocol
➡ Handshake protocol records ➡ Setup communication ➡ Change Cipher
Spec protocol records ➡ Change communication ➡ Alert protocol records ➡ Errors ➡ Application Data protocol records ➡ Actual data transfers 11
12 https://github.com/vincentbernat/rfc5077/blob/master/ssl-handshake.svg
Attention: (live) wiresharking up ahead 13
14
15
Generating randomness is HARD 16
entropy (uncertainty) 17
TIME is NOT random thus not a very good entropy
source 18
PHP is bad when it comes to entropy 19 Unknown
fact!
srand(microtime()) 20 Unknown fact!
rand() mt_rand() uniqid() 21
22
openssl_pseudo_random_bytes() 22
openssl_pseudo_random_bytes() read from /dev/(u)random 22
openssl_pseudo_random_bytes() read from /dev/(u)random Use a HRNG 22
openssl_pseudo_random_bytes() read from /dev/(u)random Use a HRNG “A million random
digits” 22
openssl_pseudo_random_bytes() read from /dev/(u)random Use a HRNG “A million random
digits” https://github.com/ircmaxell/RandomLib 22
23
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 24
TLS ECDHE_ECDSA WITH AES_128_GCM SHA256 25
TLS ECDHE_ECDSA WITH AES_128_GCM SHA256 Cipher for exchanging key information
25
TLS ECDHE_ECDSA WITH AES_128_GCM SHA256 Cipher for exchanging key information
Cipher for authenticating key information 25
TLS ECDHE_ECDSA WITH AES_128_GCM SHA256 Cipher for exchanging key information
Cipher for authenticating key information Actual cipher (and length) used for communication 25
TLS ECDHE_ECDSA WITH AES_128_GCM SHA256 Cipher for exchanging key information
Cipher for authenticating key information Hash algo for message authenticating Actual cipher (and length) used for communication 25
TLS_RSA_WITH_AES_256_CBC_SHA256 26
TLS_NULL_WITH_NULL_NULL 27
Client gives cipher options, Server ultimately decides on cipher! 28
THIS IS WHY YOU SHOULD ALWAYS CONFIGURE YOUR CIPHERS ON
YOUR WEB SERVER! 29 Unknown fact!
SSLProtocol all -SSLv2 -SSLv3 SSLHonorCipherOrder on SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384
\ EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \ EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS" ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \ EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \ EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"; Apache Nginx 30 https://community.qualys.com/blogs/securitylabs/2013/08/05/configuring-apache-nginx-and-openssl-for-forward-secrecy
https://www.ssllabs.com/ssltest/ 31
32
33
34
35
36
37
38 New Zealand,
39
40 ➡ SNI (Server Name Indication) ➡ Extension 0x0000 ➡
Pretty much every decent browser / server. ➡ IE6, Win XP, Blackberry, Android 2.x ➡ So no worries!
41
42
What an SSL certificate is NOT: 43 ➡ SSL certificate
(but a X.509 certificate) ➡ Automatically secure ➡ Automatically trustworthy ➡ In any way better self-signed certificates ➡ Cheap
What an SSL certificate is: 44 ➡ The best way
(but not perfect) to prove authenticity ➡ A way to bootstrap encrypted communication ➡ Misleading ➡ (Too) Expensive
45
45 ➡ X.509 Certificate
45 ➡ X.509 Certificate ➡ Owner info (who is this
owner)
45 ➡ X.509 Certificate ➡ Owner info (who is this
owner) ➡ Domain info (for which domain(s) is this certificate valid)
45 ➡ X.509 Certificate ➡ Owner info (who is this
owner) ➡ Domain info (for which domain(s) is this certificate valid) ➡ Expiry info (from when to when is this certificate valid)
46 yourdomain.com
46 yourdomain.com Intermediate CA
46 yourdomain.com Intermediate CA
46 yourdomain.com Root CA Intermediate CA
46 yourdomain.com Root CA Intermediate CA
46 yourdomain.com Root CA Intermediate CA
47 IMPLIED TRU$T
➡ (Root) Certificate Authorities ➡ They are built into your
browser / OS and you will automatically trust them. 48
49 wget http://mxr.mozilla.org/mozilla-central/source/security/nss/lib/ckfw/builtins/certdata.txt\?raw\=1 -O - -q | grep Issuer |
sort | uniq | wc -l
49 wget http://mxr.mozilla.org/mozilla-central/source/security/nss/lib/ckfw/builtins/certdata.txt\?raw\=1 -O - -q | grep Issuer |
sort | uniq | wc -l 181 And rising...
50
50 ➡ X.509 certificates are used to authenticate the server.
50 ➡ X.509 certificates are used to authenticate the server.
➡ Servers can ask clients to authenticate themselves as well.
50 ➡ X.509 certificates are used to authenticate the server.
➡ Servers can ask clients to authenticate themselves as well. ➡ APIs
51
52
53 Generating secrets:
53 pre master secret server rand client rand Generating secrets:
+ +
53 pre master secret server rand client rand master secret
Generating secrets: + +
53 pre master secret server rand client rand master secret
master secret server rand client rand Generating secrets: + + + +
53 pre master secret server rand client rand master secret
master secret server rand client rand key buffer Generating secrets: + + + +
53 pre master secret server rand client rand master secret
client MAC client KEY client IV server MAC server KEY server IV master secret server rand client rand key buffer Generating secrets: + + + +
https://github.com/jaytaph/TLS-decoder 54 http://www.adayinthelifeof.nl/2013/12/30/decoding-tls-with-php/ Try it yourself, php style:
55
56
57
58
59 Wireshark CAN decrypt your HTTPS traffic Unknown fact! SSLKEYLOGFILE
https://isc.sans.edu/forums/diary/Psst+Your+Browser+Knows+All+Your+Secrets+/16415
60 launchctl setenv SSLKEYLOGFILE /tmp/keylog.secret on a mac:
61
➡ TLS has overhead in computation and transfers. But definitely
worth it. ➡ Google likes it. ➡ Some ciphersuites are better, but slower. ➡ Speed / Security compromise ➡ (try: “openssl speed”) 62
Are we safe yet? 63
euh,.. no :/ 64
65 PRE MASTER SECRET
What if somebody* got hold of the site private key?
66
67
68
69
70
(PERFECT) FORWARDING SECRECY 71
Compromising the pre-master secret does not compromise our communication. 72
PFS: Can’t compromise other keys with a compromised key. 73
Unfortunately.. 74
75 PFS needs server AND browser support
76 http://news.netcraft.com/archives/2013/06/25/ssl-intercepted-today-decrypted-tomorrow.html
77 http://news.netcraft.com/archives/2013/06/25/ssl-intercepted-today-decrypted-tomorrow.html
Update your cipher suite list and place PFS ciphers at
the top 78
But beware: heavy computations 79
80 SSL Test https://www.ssllabs.com/ssltest/
-ETOOMUCHINFO 81
82 https://www.ssllabs.com/projects/best-practices/index.html
http://farm1.static.flickr.com/73/163450213_18478d3aa6_d.jpg 83
84 Find me on twitter: @jaytaph Find me for development
and training: www.noxlogic.nl Find me on email:
[email protected]
Find me for blogs: www.adayinthelifeof.nl