SlideShare a Scribd company logo
SSL/TLS FOR MORTALS
@mthmuldersmaartenm@infosupport.com
Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun
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.serverCertificate(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.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1512)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at com.infosupport.maartenm.Demo.main(Demo.java:13)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExcepti
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.serverCertificate(ClientHandshaker.java:1488)
... 13 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification 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)
... 19 more
WHY BOTHER?
Using SSL/TLS correctly is o en hard to achieve
...and understand!
Crucial for secure connection between systems
Globally deployed (intra-)cloud applications
data unit layers
Data
Data
Data
Segments
Packets
Frames
Bits
Application 
Network Process to Application
Presentation 
Data Representation 
and Encryption
Session 
Interhost Communication
Transport 
End­to­End Connections 
and Reliability
Network 
Path Determination and 
Logical Addressing (IP)
Data Link 
Physical Addressing 
(MAC and LLC)
Physical 
Media, Signal and 
Binary Transmission
Host LayersMedia Layers
 
SSL 1.0
never released
SSL 2.0
1995 - POODLE (2011)
SSL 3.0
1996 - POODLE (2014)
TLS 1.0
1999 - BEAST (2011)
TLS 1.1
2006
TLS 1.2
2008
TLS 1.3
dra
DEMO TIME!
What's the issue?
HOW TO PREVENT
THIS?
1. public/private key encryption
2. signed certificates
3. certificate authorities
PUBLIC/PRIVATE KEY
ENCRYPTION
 
Math time!
p = 11, q = 17 // two prime numbers
modulus = 187 // p * q
e = 3 // random number between 1 and modulus
// find d, so that (d * e) - 1 % (p - 1) * (q - 1) is zero
320 % 160 = 0
(321 - 1) % (10 * 16) = 0
(107 * 3) = 321 → d = 107
Note that d varies with e:
e = 7
// find d, so that (d * e) - 1 % (p - 1) * (q - 1) is zero
1280 % 160 = 0
(1281 - 1) % (10 * 16) = 0
(183 * 7) = 1281 → d = 183
Now, what if and are unknown?p q
p = 13 // prime number
q = 23 // prime number
modulus = 299 // p * q
e = 5 // random number between 1 and modulus
// find d, so that (d * e) - 1 % (p - 1) * (q - 1) is zero
1584 % 264 == 0
(1585 - 1) % (12 * 22) = 0
(317 * 5) = 1585 → d = 317
Turns out this is pretty hard!
For big enough and , finding those factors will cost an
eternity!
p q
So we can distribute ( p * q ) and even e!
d = 107
LET'S ENCRYPT THE LETTER 'G'
G → 7
7e → 73 → 343
343 % 187 → 156
LET'S DECRYPT THE MESSAGE '156'
156107 → 4.6 * 10234
156107 % 187 → 7
7 → G
 
Negotiating a secure
connection
Client   Server
1 ClientHello →  
2   ← ServerHello
3   ← Certificate
4   ← ServerKeyExchange
5   ← ServerHelloDone
6 ClientKeyExchange →  
7 ChangeCipherSpec →  
8 Finished →  
9   ← ChangeCipherSpec
10   ← Finished
DEMO TIME!
No-one is eavesdropping!
SIGNED CERTIFICATES
Certificate contents
Serial Number
Subject
Validity
Usage
Public Key
Fingerprint Algorithm
Fingerprint
But wait... anyone could create a certificate!
So we also need
Signature Algorithm
Signature
Issuer
... and a way to sign stuff
 
A is a mathematical relationship between a
message , a private key and a public key .
signature
x sk pk
 
It consists of two functions:
1. signing function
2. verifying function
t = f (sk, x)
[accept, reject] = g(pk, t, x)
 
So, given x and t and knowing pk,
we can tell if x is indeed signed by sk.
CERTIFICATE
AUTHORITIES
An entity that issues digital certificates, certifying the
ownership of a public key by the subject of the certificate.
"I can trust you, because I trust John, and John trusts Alice,
and Alice trusts you"
I
John
?
Alice
Who knows who "John" is?
Many "John"'s in todays browsers and operating systems!
Top-notch security procedures, including "key ceremonies"
And yet...
FAIRYTALE TIME!
Once upon a time, a Dutch certificate
authority named DigiNotar was living
happily and carefree in the town of
Beverwijk.
But on a bad day, evil hurt it...
Real hard.
An attacker compromised a webserver of
DigiNotar due to a vulnerability that is
present within the DotNetNuke so ware.
DotNetNuke version 4.8.2.0 is installed on
host winsrv119. This version is affected by a
file upload vulnerability.
Due to the weak security of Windows
passwords it must be assumed that the
attacker was able to compromise the
passwords [...] of the accounts found on the
system. On the system, [...] the domain
administrator account [...] is present.
The attacker was able to traverse the
infrastructure and obtain access to at least
two CA's that were used to generate
certificates.
/** intentionally le blank */
Google blacklists 247 certificates in Chromium
Microso 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 (except these are
self-signed)
DEMO TIME!
Trust (for what it's worth)
TOOLS
curl -v -k <address>
openssl s_client -showcerts -servername
<address> -connect <address>:443
Denotes where a can be found: a file that contains
.
is the password to that file.
JVM SETTINGS (1)
-Djavax.net.ssl.trustStore=<file>
truststore
trusted certs
-Djavax.net.ssl.trustStorePassword=...
Denotes where a can be found: a file that contains
.
is the password to that file.
JVM SETTINGS (2)
-Djavax.net.ssl.keyStore=<file>
keystore
private keys
-Djavax.net.ssl.keyStorePassword=...
Include debug logging for TLS handshake and connections.
JVM SETTINGS (3)
-Djavax.net.debug=all
Portecle
SO LONG
AND THANKS FOR ALL THE FISH
IMAGE ATTRIBUTIONS
Beverwijk by @ .Gerard Hogervorst Wikimedia Commons

More Related Content

PDF
SSL/TLS for Mortals (DevNexus)
PDF
SSL/TLS for Mortals (JAX DE 2018)
PDF
SSL/TLS for Mortals (Devoxx FR 2018)
PDF
PLNOG 5: Eric Ziegast, Zbigniew Jasinski - DNSSEC
PPTX
Zeus Dissected
PDF
Dissecting ZeuS malware
PDF
SSL/TLS for Mortals (Lockdown Lecture)
PDF
Android Recoverable Keystore
SSL/TLS for Mortals (DevNexus)
SSL/TLS for Mortals (JAX DE 2018)
SSL/TLS for Mortals (Devoxx FR 2018)
PLNOG 5: Eric Ziegast, Zbigniew Jasinski - DNSSEC
Zeus Dissected
Dissecting ZeuS malware
SSL/TLS for Mortals (Lockdown Lecture)
Android Recoverable Keystore

What's hot (20)

PPT
WiFi practical hacking "Show me the passwords!"
PDF
OSSEC @ ISSA Jan 21st 2010
PDF
Carlos García - Pentesting Active Directory Forests [rooted2019]
PDF
Security as Code in Docker Ecosystem for Cloud Native Apps
PPTX
Malware’s Most Wanted: NightHunter. A Massive Campaign to Steal Credentials R...
PDF
SSL/TLS for Mortals (Devoxx UK)
PDF
SSL/TLS for Mortals (JavaLand)
PPTX
Threat hunting != Throwing arrow! Hunting for adversaries in your it environment
PDF
Geth important commands
PDF
Nagios Conference 2006 | Nagios 3.0 and beyond by Ethan Galstad
PDF
Dodging WebCrypto API Landmines
PPTX
WannaCry ransomware outbreak - what you need to know
PDF
Ransomware for fun and non-profit
PPTX
Openssl
PPTX
Dissecting Cryptowall
PPTX
Living off the land and fileless attack techniques
PDF
Ssh and sshfp dns records v04
PDF
DrupalCamp London 2017 - Web site insecurity
PDF
Hacking Exposed LIVE: Attacking in the Shadows
PDF
Cryptography (under)engineering
WiFi practical hacking "Show me the passwords!"
OSSEC @ ISSA Jan 21st 2010
Carlos García - Pentesting Active Directory Forests [rooted2019]
Security as Code in Docker Ecosystem for Cloud Native Apps
Malware’s Most Wanted: NightHunter. A Massive Campaign to Steal Credentials R...
SSL/TLS for Mortals (Devoxx UK)
SSL/TLS for Mortals (JavaLand)
Threat hunting != Throwing arrow! Hunting for adversaries in your it environment
Geth important commands
Nagios Conference 2006 | Nagios 3.0 and beyond by Ethan Galstad
Dodging WebCrypto API Landmines
WannaCry ransomware outbreak - what you need to know
Ransomware for fun and non-profit
Openssl
Dissecting Cryptowall
Living off the land and fileless attack techniques
Ssh and sshfp dns records v04
DrupalCamp London 2017 - Web site insecurity
Hacking Exposed LIVE: Attacking in the Shadows
Cryptography (under)engineering
Ad

Similar to SSL/TLS for Mortals (JavaOne 2017) (20)

PDF
SSL/TLS for Mortals (JavaZone)
PDF
SSL/TLS for Mortals (GOTO Berlin)
PDF
SSL/TLS for Mortals (J-Fall)
PDF
SSL/TLS for Mortals (Devoxx)
PDF
SSL/TLS for Mortals (Voxxed Days Luxembourg)
PDF
SSL/TLS for Mortals (UtrechtJUG)
PDF
SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)
PDF
TLS/SSL Internet Security Talk
PPT
Ch12 Cryptographic Protocols and Public Key Infrastructure
PDF
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
PDF
Java security
PPT
المحاضرة_التاسعة_المفتاح العام هيكلية_PKI.ppt
PPTX
SSL/TLS Introduction with Practical Examples Including Wireshark Captures
PDF
Recover A RSA Private key from a TLS session with perfect forward secrecy
PPTX
Secure socket layer
 
PPT
Jerad Bates - Public Key Infrastructure.ppt
PPT
Jerad Bates - Public Key Infrastructure.ppt
PPT
Jerad Bates - Public Key Infrastructure (1).ppt
PPTX
SSL/TLS 101
PDF
SSL/TLS 101
SSL/TLS for Mortals (JavaZone)
SSL/TLS for Mortals (GOTO Berlin)
SSL/TLS for Mortals (J-Fall)
SSL/TLS for Mortals (Devoxx)
SSL/TLS for Mortals (Voxxed Days Luxembourg)
SSL/TLS for Mortals (UtrechtJUG)
SSL/TLS for Mortals (Oracle Groundbreaker EMEA Virtual Tour)
TLS/SSL Internet Security Talk
Ch12 Cryptographic Protocols and Public Key Infrastructure
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
Java security
المحاضرة_التاسعة_المفتاح العام هيكلية_PKI.ppt
SSL/TLS Introduction with Practical Examples Including Wireshark Captures
Recover A RSA Private key from a TLS session with perfect forward secrecy
Secure socket layer
 
Jerad Bates - Public Key Infrastructure.ppt
Jerad Bates - Public Key Infrastructure.ppt
Jerad Bates - Public Key Infrastructure (1).ppt
SSL/TLS 101
SSL/TLS 101
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)

Recently uploaded (20)

PDF
Mushroom cultivation and it's methods.pdf
PDF
Approach and Philosophy of On baking technology
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
A Presentation on Artificial Intelligence
PDF
Empathic Computing: Creating Shared Understanding
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PPTX
1. Introduction to Computer Programming.pptx
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
cloud_computing_Infrastucture_as_cloud_p
PPTX
Tartificialntelligence_presentation.pptx
PDF
Heart disease approach using modified random forest and particle swarm optimi...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
Mushroom cultivation and it's methods.pdf
Approach and Philosophy of On baking technology
Building Integrated photovoltaic BIPV_UPV.pdf
Machine learning based COVID-19 study performance prediction
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
A Presentation on Artificial Intelligence
Empathic Computing: Creating Shared Understanding
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
1. Introduction to Computer Programming.pptx
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Programs and apps: productivity, graphics, security and other tools
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Group 1 Presentation -Planning and Decision Making .pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Encapsulation_ Review paper, used for researhc scholars
cloud_computing_Infrastucture_as_cloud_p
Tartificialntelligence_presentation.pptx
Heart disease approach using modified random forest and particle swarm optimi...
Digital-Transformation-Roadmap-for-Companies.pptx

SSL/TLS for Mortals (JavaOne 2017)

  • 2. Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun 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.serverCertificate(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.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1512) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254) at com.infosupport.maartenm.Demo.main(Demo.java:13) Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExcepti 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.serverCertificate(ClientHandshaker.java:1488) ... 13 more Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification 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) ... 19 more
  • 3. WHY BOTHER? Using SSL/TLS correctly is o en hard to achieve ...and understand! Crucial for secure connection between systems Globally deployed (intra-)cloud applications
  • 5. SSL 1.0 never released SSL 2.0 1995 - POODLE (2011) SSL 3.0 1996 - POODLE (2014) TLS 1.0 1999 - BEAST (2011) TLS 1.1 2006 TLS 1.2 2008 TLS 1.3 dra
  • 7. HOW TO PREVENT THIS? 1. public/private key encryption 2. signed certificates 3. certificate authorities
  • 9.  
  • 10. Math time! p = 11, q = 17 // two prime numbers modulus = 187 // p * q e = 3 // random number between 1 and modulus // find d, so that (d * e) - 1 % (p - 1) * (q - 1) is zero 320 % 160 = 0 (321 - 1) % (10 * 16) = 0 (107 * 3) = 321 → d = 107 Note that d varies with e: e = 7 // find d, so that (d * e) - 1 % (p - 1) * (q - 1) is zero 1280 % 160 = 0 (1281 - 1) % (10 * 16) = 0 (183 * 7) = 1281 → d = 183
  • 11. Now, what if and are unknown?p q p = 13 // prime number q = 23 // prime number modulus = 299 // p * q e = 5 // random number between 1 and modulus // find d, so that (d * e) - 1 % (p - 1) * (q - 1) is zero 1584 % 264 == 0 (1585 - 1) % (12 * 22) = 0 (317 * 5) = 1585 → d = 317 Turns out this is pretty hard!
  • 12. For big enough and , finding those factors will cost an eternity! p q So we can distribute ( p * q ) and even e!
  • 13. d = 107 LET'S ENCRYPT THE LETTER 'G' G → 7 7e → 73 → 343 343 % 187 → 156 LET'S DECRYPT THE MESSAGE '156' 156107 → 4.6 * 10234 156107 % 187 → 7 7 → G
  • 14.  
  • 15. Negotiating a secure connection Client   Server 1 ClientHello →   2   ← ServerHello 3   ← Certificate 4   ← ServerKeyExchange 5   ← ServerHelloDone 6 ClientKeyExchange →   7 ChangeCipherSpec →   8 Finished →   9   ← ChangeCipherSpec 10   ← Finished
  • 16. DEMO TIME! No-one is eavesdropping!
  • 19. But wait... anyone could create a certificate! So we also need Signature Algorithm Signature Issuer ... and a way to sign stuff
  • 20.  
  • 21. A is a mathematical relationship between a message , a private key and a public key . signature x sk pk   It consists of two functions: 1. signing function 2. verifying function t = f (sk, x) [accept, reject] = g(pk, t, x)   So, given x and t and knowing pk, we can tell if x is indeed signed by sk.
  • 23. An entity that issues digital certificates, certifying the ownership of a public key by the subject of the certificate.
  • 24. "I can trust you, because I trust John, and John trusts Alice, and Alice trusts you" I John ? Alice Who knows who "John" is? Many "John"'s in todays browsers and operating systems!
  • 25. Top-notch security procedures, including "key ceremonies" And yet...
  • 26. FAIRYTALE TIME! Once upon a time, a Dutch certificate authority named DigiNotar was living happily and carefree in the town of Beverwijk. But on a bad day, evil hurt it... Real hard.
  • 27. An attacker compromised a webserver of DigiNotar due to a vulnerability that is present within the DotNetNuke so ware. DotNetNuke version 4.8.2.0 is installed on host winsrv119. This version is affected by a file upload vulnerability.
  • 28. Due to the weak security of Windows passwords it must be assumed that the attacker was able to compromise the passwords [...] of the accounts found on the system. On the system, [...] the domain administrator account [...] is present.
  • 29. The attacker was able to traverse the infrastructure and obtain access to at least two CA's that were used to generate certificates.
  • 31. Google blacklists 247 certificates in Chromium Microso 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 (except these are self-signed)
  • 32. DEMO TIME! Trust (for what it's worth)
  • 33. TOOLS curl -v -k <address> openssl s_client -showcerts -servername <address> -connect <address>:443
  • 34. Denotes where a can be found: a file that contains . is the password to that file. JVM SETTINGS (1) -Djavax.net.ssl.trustStore=<file> truststore trusted certs -Djavax.net.ssl.trustStorePassword=...
  • 35. Denotes where a can be found: a file that contains . is the password to that file. JVM SETTINGS (2) -Djavax.net.ssl.keyStore=<file> keystore private keys -Djavax.net.ssl.keyStorePassword=...
  • 36. Include debug logging for TLS handshake and connections. JVM SETTINGS (3) -Djavax.net.debug=all
  • 38. SO LONG AND THANKS FOR ALL THE FISH IMAGE ATTRIBUTIONS Beverwijk by @ .Gerard Hogervorst Wikimedia Commons