SlideShare a Scribd company logo
 SSL/TLS for Mortals (Devoxx)
T L S
Awesome Sauce, or...
Maarten Mulders (@mthmulders)#tlsformortals
H
Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed:
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)
at sun.security.ssl.ClientHandshaker.serverCertif cate(ClientHandshaker.java:1506)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
at sun.net. .protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net. .protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net. .protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1512)
at sun.net. .protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)
at sun.net. .protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at it.mulders.maarten.Demo.main(Demo.java:13)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExc
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
at sun.security.validator.Validator.validate(Validator.java:260)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
at sun.security.ssl.ClientHandshaker.serverCertif cate(ClientHandshaker.java:1488)
13 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to f nd valid certif cation path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:146)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:131)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
Maarten Mulders (@mthmulders)#tlsformortals
 SSL/TLS for Mortals (Devoxx)
7 L OSI M
data unit layers
Data
Data
Data
Segments
Packets
Application 
Network Process to Application
Presentation 
Data Representation 
and Encryption
Session 
Interhost Communication
Transport 
End­to­End Connections 
and Reliability
Network 
Path Determination and 
Host Layers
Maarten Mulders (@mthmulders)#tlsformortals
H SSL TLS
SSL 1.0 never released
SSL 2.0 1995 - 2011 (POODLE)
SSL 3.0 1996 - 2014 (POODLE)
TLS 1.0 1999 - 2011 (BEAST)
TLS 1.1 2006
TLS 1.2 2008
TLS 1.3 2018
Maarten Mulders (@mthmulders)#tlsformortals
D
What's the issue?!
Maarten Mulders (@mthmulders)#tlsformortals
H
1. public/private key encryption
2. signed certificates
3. certificate authorities
Maarten Mulders (@mthmulders)#tlsformortals
1 P P
K E
Maarten Mulders (@mthmulders)#tlsformortals
 SSL/TLS for Mortals (Devoxx)
 SSL/TLS for Mortals (Devoxx)
M
1. Select two prime numbers:
2. Calculate product:
3. Select random number < product:
4. Find d, so that
a.
b.
c.
d.
p = 11, q = 17
p ∗ q = 187
e = 3
(d ∗ e) − 1 mod (p − 1) ∗ (q − 1) = 0
(d ∗ 3) − 1 mod (10 ∗ 16) = 0
320 mod 160 = 0
(321 − 1) mod 160 = 0
(107 ∗ 3) = 321 ⇒ d = 107
Maarten Mulders (@mthmulders)#tlsformortals
N , P Q
1.
2. Find d, so that
Pretty hard without knowing and !
As soon as we know , calculating is trivial
(again).
p ∗ q = 299, e = 5
(d ∗ e) − 1 mod (p − 1) ∗ (q − 1) = 0
p q
p = 13, q = 23 d = 317
Maarten Mulders (@mthmulders)#tlsformortals
For big enough and , finding those factors will cost an
eternity!
So we can distribute and even !
p q
p ∗ q e
Maarten Mulders (@mthmulders)#tlsformortals
L "G"
p ∗ q = 187, e = 3, G ⇒ 7
= = 3437
e
7
3
343 mod 187 = 156
Maarten Mulders (@mthmulders)#tlsformortals
L "156"
Since we know and , we can calculatep q d = 107
= ≈ 4.6 ∗156
d
156
107
10
234
mod 187 = 7156
107
7 ⇒ G
Maarten Mulders (@mthmulders)#tlsformortals
 SSL/TLS for Mortals (Devoxx)
N
Client Server
1 ClientHello →
2 ← ServerHello
3 ← Certificate
4 ← ServerKeyExchange
5 ← ServerHelloDone
6 ClientKeyExchange →
7 ChangeCipherSpec →
8 Finished →
9 ← ChangeCipherSpec
10 ← Finished
Maarten Mulders (@mthmulders)#tlsformortals
D
No-one is eavesdropping!
Maarten Mulders (@mthmulders)#tlsformortals
2 S
C
Maarten Mulders (@mthmulders)#tlsformortals
A certificate contains:
Serial Number
Subject
Validity
Usage
Public Key
Fingerprint Algorithm
Fingerprint
Maarten Mulders (@mthmulders)#tlsformortals
But wait... anyone could create a certificate!
So we also need
Signature Algorithm
Signature
Issuer
... and a way to sign certificates.
Maarten Mulders (@mthmulders)#tlsformortals
 SSL/TLS for Mortals (Devoxx)
A signature is a mathematical relationship between a message
, a private key and a public key .
It consists of two functions:
1. signing function
2. verifying function
So, given and and knowing , we can tell if is indeed signed
by .
x sk pk
t = f (sk, x)
[accept, reject] = g(pk, t, x)
x t pk x
sk
Maarten Mulders (@mthmulders)#tlsformortals
3 C
A
Maarten Mulders (@mthmulders)#tlsformortals
An entity that issues digital certificates,
certifying the ownership of a public key
by the subject of the certificate.
Maarten Mulders (@mthmulders)#tlsformortals
I
John
?
Alice
So, who is John, anyway?
Many John's in todays browsers and operating systems!
“I can trust you, because I trust John, and
John trusts Alice, and Alice trusts you.
Maarten Mulders (@mthmulders)#tlsformortals
Top-notch security procedures, including "key ceremonies"
Maarten Mulders (@mthmulders)#tlsformortals
 SSL/TLS for Mortals (Devoxx)
 SSL/TLS for Mortals (Devoxx)
/** intentionally left blank */
Maarten Mulders (@mthmulders)#tlsformortals
W
Google blacklists 247 certificates in Chromium
Microsoft removes the DigiNotar root certificate from all
supported Windows-releases *
Mozilla revokes trust in the DigiNotar root certificate in all
supported versions
Apple issued Security Update 2011-005
Update Certificate Revocation Lists (although these are self-Maarten Mulders (@mthmulders)#tlsformortals
D
Trust (for what it's worth)
Maarten Mulders (@mthmulders)#tlsformortals
T , T T
Maarten Mulders (@mthmulders)#tlsformortals
Simple HTTP client with TLS support:
curl ­v ­k <address>
Troubleshoot trust issues and see certificates being used:
openssl s_client ­showcerts ­servername <address> ­
connect <address>:443
Troubleshoot supported protocols, ciphers, ...:
nmap ­­script ssl­enum­ciphers ­p 443 <address>
Maarten Mulders (@mthmulders)#tlsformortals
JVM S
­Djavax.net.ssl.trustStore=<file>
Denotes where a truststore can be found: a file that contains
trusted certs.
­Djavax.net.ssl.trustStorePassword=changeit
is the password to that file.
Maarten Mulders (@mthmulders)#tlsformortals
JVM S
­Djavax.net.ssl.keyStore=<file>
Denotes where a keystore can be found: a file that contains
public and/or private keys.
­Djavax.net.ssl.keyStorePassword=changeit
is the password to that file.
Maarten Mulders (@mthmulders)#tlsformortals
JVM S
­Djavax.net.debug=ssl[:flag]
Include debug logging for TLS handshake and connections.
Additional flags:
record session sessioncache pluggability plaintext
handshake defaultctx keymanager data packet
keygen sslctx trustmanager verbose
Maarten Mulders (@mthmulders)#tlsformortals
P
Maarten Mulders (@mthmulders)#tlsformortals
P -
1. Don't use SSL!
Use TLS v1.2 or v1.3.
2. Be careful whom you trust!
3. When in doubt, open your toolbox:
openssl, curl, nmap and Portecle
Maarten Mulders (@mthmulders)#tlsformortals
Q
P D
I
Router by unknown author Maarten Mulders (@mthmulders)#tlsformortals

More Related Content

PDF
SSL/TLS for Mortals (UtrechtJUG)
PDF
SSL/TLS for Mortals (Lockdown Lecture)
PDF
The Ring programming language version 1.7 book - Part 64 of 196
PDF
Guess the distribution
PDF
SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)
PDF
SSL/TLS for Mortals (Devoxx UK)
PDF
SSL/TLS for Mortals (JavaLand)
SSL/TLS for Mortals (UtrechtJUG)
SSL/TLS for Mortals (Lockdown Lecture)
The Ring programming language version 1.7 book - Part 64 of 196
Guess the distribution
SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)
SSL/TLS for Mortals (Devoxx UK)
SSL/TLS for Mortals (JavaLand)

Similar to SSL/TLS for Mortals (Devoxx) (20)

PDF
SSL/TLS for Mortals (JAX DE 2018)
PDF
SSL/TLS for Mortals (JavaZone)
PDF
SSL/TLS for Mortals (GOTO Berlin)
PDF
SSL/TLS for Mortals (JavaOne 2017)
PDF
SSL/TLS for Mortals (J-Fall)
PDF
SSL/TLS for Mortals (DevNexus)
PDF
SSL/TLS for Mortals (Devoxx FR 2018)
PDF
SSL/TLS for Mortals (Voxxed Days Luxembourg)
PDF
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
PDF
Securing Data in Transit -
PDF
TLS/SSL Internet Security Talk
PDF
SSL: Past, Present and Future
PDF
SSL: Past, Present and Future
PPTX
Certificate pinning in android applications
PDF
"The Sorry State of SSL" Hynek Schlawack, PyConRu 2014
PDF
wolfSSL and TLS 1.3
PDF
How ssl works
PPT
Ch12 Cryptographic Protocols and Public Key Infrastructure
PDF
SSL and TLS Theory and Practice 3rd Edition Rolf Oppliger
PDF
#MoreCrypto : Introduction to TLS
SSL/TLS for Mortals (JAX DE 2018)
SSL/TLS for Mortals (JavaZone)
SSL/TLS for Mortals (GOTO Berlin)
SSL/TLS for Mortals (JavaOne 2017)
SSL/TLS for Mortals (J-Fall)
SSL/TLS for Mortals (DevNexus)
SSL/TLS for Mortals (Devoxx FR 2018)
SSL/TLS for Mortals (Voxxed Days Luxembourg)
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
Securing Data in Transit -
TLS/SSL Internet Security Talk
SSL: Past, Present and Future
SSL: Past, Present and Future
Certificate pinning in android applications
"The Sorry State of SSL" Hynek Schlawack, PyConRu 2014
wolfSSL and TLS 1.3
How ssl works
Ch12 Cryptographic Protocols and Public Key Infrastructure
SSL and TLS Theory and Practice 3rd Edition Rolf Oppliger
#MoreCrypto : Introduction to TLS
Ad

More from Maarten Mulders (20)

PDF
What's cooking in Maven? (Devoxx FR)
PDF
Making Maven Marvellous (Devnexus)
PDF
Making Maven Marvellous (Java.il)
PDF
Making Maven Marvellous (JavaZone)
PDF
Dapr: Dinosaur or Developer's Dream? (v1)
PDF
Dapr: Dinosaur or Developer Dream? (J-Fall)
PDF
React in 40 minutes (Voxxed Days Romania)
PDF
React in 40 minutes (JCON)
PDF
React in 50 minutes (Bucharest Software Craftsmanship Community)
PDF
React in 50 Minutes (JNation)
PDF
Making Maven Marvellous (J-Fall)
PDF
Building a DSL with GraalVM (Oracle Groundbreaker APAC Virtual Tour)
PDF
Building a DSL with GraalVM (javaBin online)
PDF
React in 50 Minutes (OpenValue)
PDF
React in 50 Minutes (DevNexus)
PDF
React in 45 Minutes (Jfokus)
PDF
Building web applications with React (Jfokus)
PDF
Building a DSL with GraalVM (CodeOne)
PDF
Building a DSL with GraalVM (Full Stack Antwerpen)
PDF
Building a DSL with GraalVM (Devoxx PL)
What's cooking in Maven? (Devoxx FR)
Making Maven Marvellous (Devnexus)
Making Maven Marvellous (Java.il)
Making Maven Marvellous (JavaZone)
Dapr: Dinosaur or Developer's Dream? (v1)
Dapr: Dinosaur or Developer Dream? (J-Fall)
React in 40 minutes (Voxxed Days Romania)
React in 40 minutes (JCON)
React in 50 minutes (Bucharest Software Craftsmanship Community)
React in 50 Minutes (JNation)
Making Maven Marvellous (J-Fall)
Building a DSL with GraalVM (Oracle Groundbreaker APAC Virtual Tour)
Building a DSL with GraalVM (javaBin online)
React in 50 Minutes (OpenValue)
React in 50 Minutes (DevNexus)
React in 45 Minutes (Jfokus)
Building web applications with React (Jfokus)
Building a DSL with GraalVM (CodeOne)
Building a DSL with GraalVM (Full Stack Antwerpen)
Building a DSL with GraalVM (Devoxx PL)
Ad

Recently uploaded (20)

PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
A comparative analysis of optical character recognition models for extracting...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Tartificialntelligence_presentation.pptx
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
1. Introduction to Computer Programming.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Digital-Transformation-Roadmap-for-Companies.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Building Integrated photovoltaic BIPV_UPV.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Dropbox Q2 2025 Financial Results & Investor Presentation
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
NewMind AI Weekly Chronicles - August'25-Week II
Advanced methodologies resolving dimensionality complications for autism neur...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
A comparative analysis of optical character recognition models for extracting...
“AI and Expert System Decision Support & Business Intelligence Systems”
Tartificialntelligence_presentation.pptx
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
1. Introduction to Computer Programming.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Agricultural_Statistics_at_a_Glance_2022_0.pdf

SSL/TLS for Mortals (Devoxx)

  • 2. T L S Awesome Sauce, or... Maarten Mulders (@mthmulders)#tlsformortals
  • 3. H Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) at sun.security.ssl.ClientHandshaker.serverCertif cate(ClientHandshaker.java:1506) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) at sun.security.ssl.Handshaker.process_record(Handshaker.java:914) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) at sun.net. .protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) at sun.net. .protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at sun.net. .protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1512) at sun.net. .protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440) at sun.net. .protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254) at it.mulders.maarten.Demo.main(Demo.java:13) Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExc at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387) at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) at sun.security.validator.Validator.validate(Validator.java:260) at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) at sun.security.ssl.ClientHandshaker.serverCertif cate(ClientHandshaker.java:1488) 13 more Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to f nd valid certif cation path to requested target at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:146) at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:131) at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382) Maarten Mulders (@mthmulders)#tlsformortals
  • 5. 7 L OSI M data unit layers Data Data Data Segments Packets Application  Network Process to Application Presentation  Data Representation  and Encryption Session  Interhost Communication Transport  End­to­End Connections  and Reliability Network  Path Determination and  Host Layers Maarten Mulders (@mthmulders)#tlsformortals
  • 6. H SSL TLS SSL 1.0 never released SSL 2.0 1995 - 2011 (POODLE) SSL 3.0 1996 - 2014 (POODLE) TLS 1.0 1999 - 2011 (BEAST) TLS 1.1 2006 TLS 1.2 2008 TLS 1.3 2018 Maarten Mulders (@mthmulders)#tlsformortals
  • 7. D What's the issue?! Maarten Mulders (@mthmulders)#tlsformortals
  • 8. H 1. public/private key encryption 2. signed certificates 3. certificate authorities Maarten Mulders (@mthmulders)#tlsformortals
  • 9. 1 P P K E Maarten Mulders (@mthmulders)#tlsformortals
  • 12. M 1. Select two prime numbers: 2. Calculate product: 3. Select random number < product: 4. Find d, so that a. b. c. d. p = 11, q = 17 p ∗ q = 187 e = 3 (d ∗ e) − 1 mod (p − 1) ∗ (q − 1) = 0 (d ∗ 3) − 1 mod (10 ∗ 16) = 0 320 mod 160 = 0 (321 − 1) mod 160 = 0 (107 ∗ 3) = 321 ⇒ d = 107 Maarten Mulders (@mthmulders)#tlsformortals
  • 13. N , P Q 1. 2. Find d, so that Pretty hard without knowing and ! As soon as we know , calculating is trivial (again). p ∗ q = 299, e = 5 (d ∗ e) − 1 mod (p − 1) ∗ (q − 1) = 0 p q p = 13, q = 23 d = 317 Maarten Mulders (@mthmulders)#tlsformortals
  • 14. For big enough and , finding those factors will cost an eternity! So we can distribute and even ! p q p ∗ q e Maarten Mulders (@mthmulders)#tlsformortals
  • 15. L "G" p ∗ q = 187, e = 3, G ⇒ 7 = = 3437 e 7 3 343 mod 187 = 156 Maarten Mulders (@mthmulders)#tlsformortals
  • 16. L "156" Since we know and , we can calculatep q d = 107 = ≈ 4.6 ∗156 d 156 107 10 234 mod 187 = 7156 107 7 ⇒ G Maarten Mulders (@mthmulders)#tlsformortals
  • 18. N Client Server 1 ClientHello → 2 ← ServerHello 3 ← Certificate 4 ← ServerKeyExchange 5 ← ServerHelloDone 6 ClientKeyExchange → 7 ChangeCipherSpec → 8 Finished → 9 ← ChangeCipherSpec 10 ← Finished Maarten Mulders (@mthmulders)#tlsformortals
  • 19. D No-one is eavesdropping! Maarten Mulders (@mthmulders)#tlsformortals
  • 20. 2 S C Maarten Mulders (@mthmulders)#tlsformortals
  • 21. A certificate contains: Serial Number Subject Validity Usage Public Key Fingerprint Algorithm Fingerprint Maarten Mulders (@mthmulders)#tlsformortals
  • 22. But wait... anyone could create a certificate! So we also need Signature Algorithm Signature Issuer ... and a way to sign certificates. Maarten Mulders (@mthmulders)#tlsformortals
  • 24. A signature is a mathematical relationship between a message , a private key and a public key . It consists of two functions: 1. signing function 2. verifying function So, given and and knowing , we can tell if is indeed signed by . x sk pk t = f (sk, x) [accept, reject] = g(pk, t, x) x t pk x sk Maarten Mulders (@mthmulders)#tlsformortals
  • 25. 3 C A Maarten Mulders (@mthmulders)#tlsformortals
  • 26. An entity that issues digital certificates, certifying the ownership of a public key by the subject of the certificate. Maarten Mulders (@mthmulders)#tlsformortals
  • 27. I John ? Alice So, who is John, anyway? Many John's in todays browsers and operating systems! “I can trust you, because I trust John, and John trusts Alice, and Alice trusts you. Maarten Mulders (@mthmulders)#tlsformortals
  • 28. Top-notch security procedures, including "key ceremonies" Maarten Mulders (@mthmulders)#tlsformortals
  • 32. W Google blacklists 247 certificates in Chromium Microsoft removes the DigiNotar root certificate from all supported Windows-releases * Mozilla revokes trust in the DigiNotar root certificate in all supported versions Apple issued Security Update 2011-005 Update Certificate Revocation Lists (although these are self-Maarten Mulders (@mthmulders)#tlsformortals
  • 33. D Trust (for what it's worth) Maarten Mulders (@mthmulders)#tlsformortals
  • 34. T , T T Maarten Mulders (@mthmulders)#tlsformortals
  • 35. Simple HTTP client with TLS support: curl ­v ­k <address> Troubleshoot trust issues and see certificates being used: openssl s_client ­showcerts ­servername <address> ­ connect <address>:443 Troubleshoot supported protocols, ciphers, ...: nmap ­­script ssl­enum­ciphers ­p 443 <address> Maarten Mulders (@mthmulders)#tlsformortals
  • 36. JVM S ­Djavax.net.ssl.trustStore=<file> Denotes where a truststore can be found: a file that contains trusted certs. ­Djavax.net.ssl.trustStorePassword=changeit is the password to that file. Maarten Mulders (@mthmulders)#tlsformortals
  • 37. JVM S ­Djavax.net.ssl.keyStore=<file> Denotes where a keystore can be found: a file that contains public and/or private keys. ­Djavax.net.ssl.keyStorePassword=changeit is the password to that file. Maarten Mulders (@mthmulders)#tlsformortals
  • 38. JVM S ­Djavax.net.debug=ssl[:flag] Include debug logging for TLS handshake and connections. Additional flags: record session sessioncache pluggability plaintext handshake defaultctx keymanager data packet keygen sslctx trustmanager verbose Maarten Mulders (@mthmulders)#tlsformortals
  • 40. P - 1. Don't use SSL! Use TLS v1.2 or v1.3. 2. Be careful whom you trust! 3. When in doubt, open your toolbox: openssl, curl, nmap and Portecle Maarten Mulders (@mthmulders)#tlsformortals
  • 41. Q P D I Router by unknown author Maarten Mulders (@mthmulders)#tlsformortals