maximizing performance with spdy and ssl

49
Maximizing Performance with SPDY & SSL Billy Hoffman [email protected] @zoompf

Upload: zoompf

Post on 15-May-2015

4.948 views

Category:

Technology


3 download

DESCRIPTION

Billy Hoffman from Zoompf shows how to improve the performance of your website using SPDY and SSL

TRANSCRIPT

Page 1: Maximizing Performance with SPDY and SSL

Maximizing Performance with SPDY & SSL

Billy [email protected] @zoompf

Page 2: Maximizing Performance with SPDY and SSL

What is SPDY?

Page 3: Maximizing Performance with SPDY and SSL

Massive Browser Support

Page 4: Maximizing Performance with SPDY and SSL

Massive Server Support

Page 5: Maximizing Performance with SPDY and SSL

Cast of Characters

• TCP• HTTP• SSL• X.509 Certificate• Cryptography (asymmetric & symmetric) • SPDY

Page 6: Maximizing Performance with SPDY and SSL

HTTP/HTTPS

Page 7: Maximizing Performance with SPDY and SSL

HTTP/SPDY/SSL Sandwich

• SPDY encapsulates HTTP requests– Single Multiplexed stream

• Transmits contents over SSL channel

Page 8: Maximizing Performance with SPDY and SSL

Today’s Focus

• Setting the Stage for SPDY– Can speak SSL with a server– Can create a valid SSL connection– Client and Server agree to use SPDY

• Optimizing SPDY– Optimizing SSL– Optimizing SPDY– Avoiding optimizations that hurt SPDY

• Tools to help

Page 9: Maximizing Performance with SPDY and SSL

SETTING THE STAGE FOR SPDY

Page 10: Maximizing Performance with SPDY and SSL

SSL Connectivity

• Hostname resolves• IP is reachable• Web server is listening on SSL port• Web server understands SSL• Web server knows which site you want

– Shared Hosting and SNI

Page 11: Maximizing Performance with SPDY and SSL

Listener on 443 is speaking SSL?

Page 12: Maximizing Performance with SPDY and SSL

Creating a Valid SSL connection

• Agreement on crypto algorithms

• X.509 certificate is valid

Page 13: Maximizing Performance with SPDY and SSL

X.509 Cert: Correct Domain?

Page 14: Maximizing Performance with SPDY and SSL

X.509 Cert: Valid Time Period?

Page 15: Maximizing Performance with SPDY and SSL

X.509 Cert: Is it Trusted?

Page 16: Maximizing Performance with SPDY and SSL

X.509 Cert: Is it Trusted?

• Do I trust the issuer?– If not, was it signed by someone I trust?

• Has it been revoked?– CRL lists– Online Certificate Status Protocol (OCSP)

Page 17: Maximizing Performance with SPDY and SSL

Agreeing to Use SPDY

• Client tells server it supports SPDY• Server tells client it supports SPDY• Client sends SPDY over SSL• Else, falls back to HTTP over SSL

Page 18: Maximizing Performance with SPDY and SSL

SSL Handshake

Microsoft Technet: Host TLS/SSL Workshttp://bit.ly/16Zx0en

Page 19: Maximizing Performance with SPDY and SSL

Announcing SPDY support in the SSL Handshake

Microsoft Technet: Host TLS/SSL Workshttp://bit.ly/16Zx0en

+ Ext:13172/AL

PN

+ NPN/ALPN

+ Ext:13172/ALPN

Page 20: Maximizing Performance with SPDY and SSL

ClientHello with Extension 13172

Page 21: Maximizing Performance with SPDY and SSL

ServerHello with NPN

Page 22: Maximizing Performance with SPDY and SSL

Review: Speaking SPDY

• Client resolves and connects to SSL port• Client announces SPDY support inside

ClientHello • Server announces SPDY support in

ServerHello• Client validates X.509 cert, finalized SSL

connection• SPDY conversation happens

Page 23: Maximizing Performance with SPDY and SSL

OPTIMIZING SSL/SPDY

Page 24: Maximizing Performance with SPDY and SSL

The SSL Tarpits

• SSL handshake requires 2 round trips• Certificates can be large• Certificates need to be validated• Keys can be too large• Algorithms can be slow

Page 25: Maximizing Performance with SPDY and SSL

The SSL Handshake is Costly!

Microsoft Technet: Host TLS/SSL Workshttp://bit.ly/16Zx0en

Page 26: Maximizing Performance with SPDY and SSL

Resume SSL Session

• Avoid regenerating keys• Avoid unneeded trips• 2 methods

Microsoft Technet: Host TLS/SSL Workshttp://bit.ly/16Zx0en

Page 27: Maximizing Performance with SPDY and SSL

• Both sides keep state/cache• Reuse based on id• Widely supported

Microsoft Technet: Host TLS/SSL Workshttp://bit.ly/16Zx0en

sessionid: 3a8a…

Big cache of all ids given

out, and associated

keys/ciphers

Session Identifiers

Page 28: Maximizing Performance with SPDY and SSL

• Client stores “Magic Ticket”• RFC 5077, optional• No IIS support

Microsoft Technet: Host TLS/SSL Workshttp://bit.ly/16Zx0en

Encrypted summary of keys/ciphers, signed by

server

Verifies summary is valid, uses

values

Session Tickets

Page 29: Maximizing Performance with SPDY and SSL

SSL False Start

Page 30: Maximizing Performance with SPDY and SSL

False Start: Not Gone

• “The Failure of False Start”• Chrome still does it!

– Desktop and mobile• Any server that supports NPN! (with

forward secure)– Any server with SPDY support…– Or SSL + NPN, but only announces HTTP/1.1!

Page 31: Maximizing Performance with SPDY and SSL

Minimize the Certificate Chain

Page 32: Maximizing Performance with SPDY and SSL

OCSP Validation causes delays

Page 33: Maximizing Performance with SPDY and SSL

OCSP Stapling

• Good in theory, bad in practice• Browsers are moving away from OSCP

Page 34: Maximizing Performance with SPDY and SSL

Oversized Asymmetric Keys

• 1024 is fine• 2048 for banks• Anything more is

overkill

Page 35: Maximizing Performance with SPDY and SSL

Cipher Order/Choice Matters

• RC4 is the best• Unless on a

machine with AES-NI– Intel i7, Xeons,

some AMD– Not most virtual

machines!!!• First match wins

http://zombe.es/post/4078724716

Page 36: Maximizing Performance with SPDY and SSL

Is SSL really helping you?

• SSL doesn’t “secure” your website– Prevents eavesdropping, tampering– Not XSS, CSRF, SQL Injection, Unpatched/out-

of-date software, RCE, LFI, etc.• Consider: NULL-MD5, NULL-SHA• SSL with no encryption

Page 37: Maximizing Performance with SPDY and SSL

“Does this really matter?”

• Seriously?• 1024 more bytes in key?• 2 more kilobytes in the X.509 cert?• Accidently using AES-256?• Really?

Page 38: Maximizing Performance with SPDY and SSL

“Does this really matter?”

OMG WTF MS?

Page 39: Maximizing Performance with SPDY and SSL

SPDY Optimization

• SPDY only works over SSL• Ensure that all your traffic if over SSL• HTTP 301 direct for http: to https:

– Add a cache-control header!• HTTP Strict Transport Security (HSTS)

– Like the browser’s cache, but for protocol access. Make (semi) far future

– Wide support (>90% of SPDY capable browsers)

Page 40: Maximizing Performance with SPDY and SSL

Avoid These Optimizations

• Domain Sharding– Hack to request multiplexing, not needed– Hurts SPDY by spreading requests out

• JavaScript CDNs– These are a horrible blight on the web!– http://statichtml.com/2011/google-ajax-

libraries-caching.html– https://github.com/h5bp/html5-boilerplate/

pull/1327

Page 41: Maximizing Performance with SPDY and SSL

TOOLS

Page 42: Maximizing Performance with SPDY and SSL

SSL Labs

Page 43: Maximizing Performance with SPDY and SSL

SPDYCheck.org

Page 44: Maximizing Performance with SPDY and SSL

Now on Github, GPL licensed!

Page 45: Maximizing Performance with SPDY and SSL

SSL/SPDY Optimization Check List

• Website responds over SSL/443• Website has NPN extension (even without

SPDY for False Start)• X.509 certificate is valid• X.509 chain is short• SSL Asymmetric keys are <= 2048• Cipher is RC4 (or AES-128 if supports

dedicated instructions)

Page 46: Maximizing Performance with SPDY and SSL

SSL/SPDY Optimization Check List

• SSL session resumption is enabled (both identifiers and tickets)

• No SSL compression• Website is using latest version of SPDY• HTTP permanently (301) redirects to

HTTPS (including cache header)• HTTPS sends HTTP Strict Transport

Security header

Page 47: Maximizing Performance with SPDY and SSL

Great Resources

• Ivan Ristic (blog.ivanristic.com)• Adam Langley (www.imperialviolet.org)• Mark Nottingham (www.mnot.net/blog/)

• Qualys SSL Labs (ssllabs.com)• SPDYCheck (spdycheck.org)

Page 48: Maximizing Performance with SPDY and SSL

Free Performance Assessmentzoompf.com/free

Page 49: Maximizing Performance with SPDY and SSL

Maximizing Performance with SPDY & SSL

Billy [email protected] @zoompf