Get your basic shit together
- Encrypt everything!
- even "internal" systems
- SPDY & HTTP/2 are TLS only for a reason
- No mixed content!
- HTTPS everywhere!
- HTTP Strict Transport Security (HSTS)
- Use TLS every time!
Get your basic shit together (2)
- Don't use broken protocol versions
- only use TLSv1+
- if there's some SSL, you're doing it wrong!
- Don't use broken ciphers
- ensure forward secrecy
- DHE, with strong parameters (2048+ bits)
- ECDHE if you're desperate
- only proven ciphers like AES
- lol, RC4, wtf, 3DES
- ensure forward secrecy
Get your basic shit together (3)
- Only Open Source libraries can be secure
- Looking at you, SChannel Remote Code Execution
- Update your crappy libraries
- Looking at you, openssl!
Get your advanced shit together
- Replace your crappy libraries
- libressl, drop-in openssl replacement
- HTTP Public Key Pinning (HPKP)
- the CA system is inherently broken
- Certificate Transparency (Google) is no solution
- use Let's Encrypt for trust on first connect
Get your advanced shit together (2)
- Don't use shady crypto
- TLS elliptic curves by NIST^WNSA are not secure
- P-224, P-256, secp256k, …
- used for ECDHE, use DHE
- used in ECDSA, use RSA
- use e.g. DJB curves instead: ed25519 (not in TLS)
- GCM is complex & difficult to implement safely
- Recommended ciphers:
- DHE-RSA-CHACHA20-POLY1309
- DHE-RSA-AES256-SHA256 (AES128, SHA fine too)
- TLS elliptic curves by NIST^WNSA are not secure
TLS, motherfucker, do you speak it?
By fpletz
TLS, motherfucker, do you speak it?
- 1,362