SlideShare a Scribd company logo
Java 9 security enhancements
in practice
Martin Toshev
Prague, 19-20 October 2017
Who am I
Software consultant (CoffeeCupConsulting)
BG JUG board member (http://jug.bg)
OpenJDK and Oracle RBDMS enthusiast
Twitter: @martin_fmi
Martin Toshev Prague, 19-20 October 2017
Agenda
TLS support in JDK
DTLS support in JDK 9
TLS ALPN extension in JDK 9
The rest at a glance …
Martin Toshev Prague, 19-20 October 2017
TLS support in JDK
Martin Toshev Prague, 19-20 October 2017
TLS and the JDK
•Up to JDK 9 TLS 1.0, 1.1 and 1.2 are supported via the JSSE API
•TLS 1.3 specification currently ongoing …
•typically used to secure most types of application protocols
•used for the implementation of SSL VPNs
Martin Toshev Prague, 19-20 October 2017
TLS handshake
client serve
r
1) Client “hello”(TLS version, ciphers)
2) Server “hello”(server cert, TLS version, cipher)
3) Verity server
cert and crypto
params
5) Send secret key
4) Send client cert
7) Client finished
8) Server finished
6) Verity client
cert
9) Exchange encryptedmessages
Martin Toshev Prague, 19-20 October 2017
Java Secure Socket Extension
•Implemented as JCA provider (SunJSSE)
•Core classes part of the javax.net and javax.net.ssl packages
•Provides APIs for blocking and non-blocking mode of operation
•javax.net.ssl.HttpsURLConnection used to simply HTTPs communication
Martin Toshev Prague, 19-20 October 2017
JSSE blocking mode
•Provided by the javax.net.ssl.SSLSocket class
•Used in the same manner as a regular socket
•Handshake might be triggered by:
o Calling startHandshake() on the socket
o Calling getSession() on the socket
o Reading/writing to the socket
Martin Toshev Prague, 19-20 October 2017
JSSE blocking mode (example)
Martin Toshev Prague, 19-20 October 2017
System.setProperty("javax.net.ssl.keyStore", "sample.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "sample");
SSLServerSocketFactory ssf = (SSLServerSocketFactory)
SSLServerSocketFactory.getDefault();
ServerSocket ss = ssf.createServerSocket(4444);
while (true) {
Socket s = ss.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintStream out = new PrintStream(s.getOutputStream());
String line = null;
while (((line = in.readLine()) != null)) { System.out.println(line); out.println("Hi, client"); }
in.close(); out.close(); s.close();
JSSE blocking mode (example)
Martin Toshev Prague, 19-20 October 2017
System.setProperty("javax.net.ssl.trustStore", "sample.pfx");
System.setProperty("javax.net.ssl.trustStorePassword", "sample");
SSLSocketFactory ssf = (SSLSocketFactory) SSLSocketFactory.getDefault();
Socket s = ssf.createSocket("127.0.0.1", 4444);
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
out.println("Hi, server.");
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
String x = in.readLine();
System.out.println(x);
out.close(); in.close(); s.close();
JSSE non-blocking mode
•Provided by the javax.net.ssl.SSLEngine
•The wrap() and unwrap() methods used to transfer data
•Handshake might be triggered by
o calling beginHandshake()
o calling wrap()
o calling unwrap()
Martin Toshev Prague, 19-20 October 2017
application byte
buffers
network byte
buffers
TLS handshakewrap unwrap
JSSE non-blocking mode
•Much more complex to use than the SSLSocket API
•Can be used along with the java.nio.channels.SocketChannel API
•The javax.net.debug system property might be very useful for debugging
Martin Toshev Prague, 19-20 October 2017
-
Djavax.net.debug=all
-Djavax.net.debug=SSL, handshake
DTLS support in JDK 9
Martin Toshev Prague, 19-20 October 2017
DTLS
• TLS over an unreliable transport protocol such as UDP
• Reliable and in-order delivery are not guaranteed
• Targets to secure unreliable protocols such as DNS or SIP etc.
• Follows TLS specifications (hence 1.3 in draft)
Martin Toshev Prague, 19-20 October 2017
DTLS vs TLS
• Added explicit sequence number field
• Dropped support for some ciphers (such as RC4)
• Added retransmission timer for resending of packets
• MAC verification failure triggers warning instead of failure
• Added HelloVerifyRequest message in order to identify sender
Martin Toshev Prague, 19-20 October 2017
DTLS in JDK 9
• Support for DTLS 1.0 and 1.2
• Implementation adapted to the JSSE API
• SSEngine typically used along with DatagramSocket
• Implementation based on the SSLEngine API
• … which makes it hard to use directly
Martin Toshev Prague, 19-20 October 2017
DTLS before JDK 9
• Pre-JDK 9 a third party provider such as BCJSSE could be used
• … or external libraries such as OpenSSL via JNI
Martin Toshev Prague, 19-20 October 2017
DTLS in JDK 9
•Ordered delivery provided automatically by SSLEngine
•Sequence number can be retrieved via SSLEngineResult.sequenceNumber()
•Redelivery of failed messages must be done by the application
•… in DTLS handshake messages must be delivered properly
Martin Toshev Prague, 19-20 October 2017
DTLS in JDK 9
• Good examples are provided by the JDK 9 test suite
Martin Toshev Prague, 19-20 October 2017
SSLContext sslContext = SSLContext.getInstance("DTLS");
sslContext.init(…)
SSLEngine engine = sslContext.createSSLEngine();
engine.setUseClientMode(false);
…
TLS ALPN extension in JDK 9
Martin Toshev Prague, 19-20 October 2017
Application Layer Protocol Extension
• Used to identify the application protocol during TLS handshake
• Does not require additional roundtrips (ClientHello message used)
• Allows the server to send different certificates for different protocols
• Typical use case is the HTTP 2 protocol
• … as e.g. HTTP 1.1 and HTTP/2 may both reside on the same TLS endpoint
Martin Toshev Prague, 19-20 October 2017
ALPN in JDK 9
• Before handshake set the supported protocols on the socket/engine:
Martin Toshev Prague, 19-20 October 2017
SSLParameters sslParams = sslSocket.getSSLParameters();
sslParams.setApplicationProtocols(…)
SSLParameters sslParams = sslEngine.getSSLParameters();
sslParams.setApplicationProtocols(…)
ALPN in JDK 9
• Trigger the handshake on the socket/engine – for example:
Martin Toshev Prague, 19-20 October 2017
sslSocket.startHandshake();
sslEngine.beginHandshake();
ALPN in JDK 9
• After handshake you can get the negotiated protocol:
Martin Toshev Prague, 19-20 October 2017
String protocol = sslSocket.getApplicationProtocol();
String protocol = sslEngine.getApplicationProtocol();
Advanced ALPN
• You can also specify custom protocol resolution
Martin Toshev Prague, 19-20 October 2017
sslSocket.setHandshakeApplicationProtocolSelector((serverSocket, clientProtocols) -> {
SSLSession handshakeSession = serverSocket.getHandshakeSession();
String cipher = handshakeSession.getCipherSuite();
int packetBufferSize = handshakeSession.getPacketBufferSize();
if("RC4".equals(cipher) && packetBufferSize > 1024) {
return "protocol1";
} else {
return "protocol2";
}
});
Demo: banking server
Martin Toshev Prague, 19-20 October 2017
FIX protocol integration
Banking server (plain Java)
Alpha protocol integration
Demo application
…
XMPP protocol
SIP protocol
The rest at a glance …
Martin Toshev Prague, 19-20 October 2017
OCSP Stapling for TCP
• Provides a capability for the server to check certificate revocation
• The server typically caches OCSP responses
• Done in order to reduce the number of responses from the OCSP server
• Must be enabled on both the client and the server
Martin Toshev Prague, 19-20 October 2017
-Djdk.tls.client.enableStatusRequestExtension=true
-Dcom.sun.net.ssl.checkRevocation=true
-
Djdk.tls.server.enableStatusRequestExtension=true
PKCS12 Keystores by default
•PKIX (PKCS12) is default type of store if no other is specified
•Replaces JKS as the default keystore
•PKCS12 provides support for stronger cryptographic algorithms
•Provides better interoperability with other systems
Martin Toshev Prague, 19-20 October 2017
Others
• DRBG-Based SecureRandom Implementations
• Utilization of CPU Instructions for GHASH and RSA
• SHA-1 Certificates disabled for certificate validation
• Implementation of the SHA-3 hash algorithms
Martin Toshev Prague, 19-20 October 2017
Summary
• JDK 9 introduces significant set of security features and enhancements
• The major part of them is related to TLS support
• Hopefully this tendency will continue with future releases …
Martin Toshev Prague, 19-20 October 2017
References
Java Platform, Standard Edition What’s New in Oracle JDK 9
https://docs.oracle.com/javase/9/whatsnew/
Java Platform, Standard Edition Security Developer’s Guide
https://docs.oracle.com/javase/9/security/
Martin Toshev Prague, 19-20 October 2017
References
JEP 219: Datagram Transport Layer Security
http://openjdk.java.net/jeps/219
JEP 244: TLS Application-Layer Protocol Negotiation Extension
http://openjdk.java.net/jeps/244
JDK 9 SSL test suite
https://github.com/netroby/jdk9-dev/tree/master/jdk/test/javax/net/ssl
Martin Toshev Prague, 19-20 October 2017
References
Bouncy Castle (D)TLS API and JSSE Provider
https://downloads.bouncycastle.org/fips-java/BC-FJA-(D)TLSUserGuide-
1.0.0.pdf
Introduction to DTLS
https://www.pixelstech.net/article/1459585203-Introduction-to-DTLS
%28Datagram-Transport-Layer-Security%29
DTLS implementation in JDK 9 (changeset)
http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/6721ff11d592
Martin Toshev Prague, 19-20 October 2017

More Related Content

What's hot

EKAW - Publishing with Triple Pattern Fragments
EKAW - Publishing with Triple Pattern FragmentsEKAW - Publishing with Triple Pattern Fragments
EKAW - Publishing with Triple Pattern FragmentsRuben Taelman
 
T6.6 Sensitive Data Activities
T6.6 Sensitive Data ActivitiesT6.6 Sensitive Data Activities
T6.6 Sensitive Data ActivitiesOpenAIRE
 
Alexander Sibiryakov- Frontera
Alexander Sibiryakov- FronteraAlexander Sibiryakov- Frontera
Alexander Sibiryakov- FronteraPyData
 
JCDL 2016 Doctoral Consortium - Web Archive Profiling
JCDL 2016 Doctoral Consortium - Web Archive ProfilingJCDL 2016 Doctoral Consortium - Web Archive Profiling
JCDL 2016 Doctoral Consortium - Web Archive ProfilingSawood Alam
 
Gh registry day_1_edited
Gh registry day_1_editedGh registry day_1_edited
Gh registry day_1_editedFrancis Amaning
 
iRODS UGM 2018 Fair data management and DISQOVERability
iRODS UGM 2018 Fair data management and DISQOVERabilityiRODS UGM 2018 Fair data management and DISQOVERability
iRODS UGM 2018 Fair data management and DISQOVERabilityMaarten Coonen
 
Datafying Bitcoins
Datafying BitcoinsDatafying Bitcoins
Datafying BitcoinsTariq Ahmad
 
Back to Basics Webinar 1: Introduction to NoSQL
Back to Basics Webinar 1: Introduction to NoSQLBack to Basics Webinar 1: Introduction to NoSQL
Back to Basics Webinar 1: Introduction to NoSQLMongoDB
 
Python and MongoDB as a Market Data Platform by James Blackburn
Python and MongoDB as a Market Data Platform by James BlackburnPython and MongoDB as a Market Data Platform by James Blackburn
Python and MongoDB as a Market Data Platform by James BlackburnPyData
 
Data pipelines observability: OpenLineage & Marquez
Data pipelines observability:  OpenLineage & MarquezData pipelines observability:  OpenLineage & Marquez
Data pipelines observability: OpenLineage & MarquezJulien Le Dem
 
Eagle6 Enterprise Situational Awareness
Eagle6 Enterprise Situational AwarenessEagle6 Enterprise Situational Awareness
Eagle6 Enterprise Situational AwarenessMongoDB
 
Poster GraphQL-LD: Linked Data Querying with GraphQL
Poster GraphQL-LD: Linked Data Querying with GraphQLPoster GraphQL-LD: Linked Data Querying with GraphQL
Poster GraphQL-LD: Linked Data Querying with GraphQLRuben Taelman
 
Open core summit: Observability for data pipelines with OpenLineage
Open core summit: Observability for data pipelines with OpenLineageOpen core summit: Observability for data pipelines with OpenLineage
Open core summit: Observability for data pipelines with OpenLineageJulien Le Dem
 
Expert Roundtable: The Future of Metadata After Hive Metastore
Expert Roundtable: The Future of Metadata After Hive MetastoreExpert Roundtable: The Future of Metadata After Hive Metastore
Expert Roundtable: The Future of Metadata After Hive MetastorelakeFS
 
Data Structures and Performance for Scientific Computing with Hadoop and Dumb...
Data Structures and Performance for Scientific Computing with Hadoop and Dumb...Data Structures and Performance for Scientific Computing with Hadoop and Dumb...
Data Structures and Performance for Scientific Computing with Hadoop and Dumb...Austin Benson
 
MongoDB Tick Data Presentation
MongoDB Tick Data PresentationMongoDB Tick Data Presentation
MongoDB Tick Data PresentationMongoDB
 

What's hot (20)

EKAW - Publishing with Triple Pattern Fragments
EKAW - Publishing with Triple Pattern FragmentsEKAW - Publishing with Triple Pattern Fragments
EKAW - Publishing with Triple Pattern Fragments
 
T6.6 Sensitive Data Activities
T6.6 Sensitive Data ActivitiesT6.6 Sensitive Data Activities
T6.6 Sensitive Data Activities
 
Alexander Sibiryakov- Frontera
Alexander Sibiryakov- FronteraAlexander Sibiryakov- Frontera
Alexander Sibiryakov- Frontera
 
JCDL 2016 Doctoral Consortium - Web Archive Profiling
JCDL 2016 Doctoral Consortium - Web Archive ProfilingJCDL 2016 Doctoral Consortium - Web Archive Profiling
JCDL 2016 Doctoral Consortium - Web Archive Profiling
 
MongoDB + Spring
MongoDB + SpringMongoDB + Spring
MongoDB + Spring
 
Elastic Search
Elastic SearchElastic Search
Elastic Search
 
Gh registry day_1_edited
Gh registry day_1_editedGh registry day_1_edited
Gh registry day_1_edited
 
iRODS UGM 2018 Fair data management and DISQOVERability
iRODS UGM 2018 Fair data management and DISQOVERabilityiRODS UGM 2018 Fair data management and DISQOVERability
iRODS UGM 2018 Fair data management and DISQOVERability
 
Datafying Bitcoins
Datafying BitcoinsDatafying Bitcoins
Datafying Bitcoins
 
Back to Basics Webinar 1: Introduction to NoSQL
Back to Basics Webinar 1: Introduction to NoSQLBack to Basics Webinar 1: Introduction to NoSQL
Back to Basics Webinar 1: Introduction to NoSQL
 
Python and MongoDB as a Market Data Platform by James Blackburn
Python and MongoDB as a Market Data Platform by James BlackburnPython and MongoDB as a Market Data Platform by James Blackburn
Python and MongoDB as a Market Data Platform by James Blackburn
 
Data pipelines observability: OpenLineage & Marquez
Data pipelines observability:  OpenLineage & MarquezData pipelines observability:  OpenLineage & Marquez
Data pipelines observability: OpenLineage & Marquez
 
Eagle6 Enterprise Situational Awareness
Eagle6 Enterprise Situational AwarenessEagle6 Enterprise Situational Awareness
Eagle6 Enterprise Situational Awareness
 
Poster GraphQL-LD: Linked Data Querying with GraphQL
Poster GraphQL-LD: Linked Data Querying with GraphQLPoster GraphQL-LD: Linked Data Querying with GraphQL
Poster GraphQL-LD: Linked Data Querying with GraphQL
 
Open core summit: Observability for data pipelines with OpenLineage
Open core summit: Observability for data pipelines with OpenLineageOpen core summit: Observability for data pipelines with OpenLineage
Open core summit: Observability for data pipelines with OpenLineage
 
Expert Roundtable: The Future of Metadata After Hive Metastore
Expert Roundtable: The Future of Metadata After Hive MetastoreExpert Roundtable: The Future of Metadata After Hive Metastore
Expert Roundtable: The Future of Metadata After Hive Metastore
 
Data Structures and Performance for Scientific Computing with Hadoop and Dumb...
Data Structures and Performance for Scientific Computing with Hadoop and Dumb...Data Structures and Performance for Scientific Computing with Hadoop and Dumb...
Data Structures and Performance for Scientific Computing with Hadoop and Dumb...
 
MongoDB Schema Design Tips & Tricks
MongoDB Schema Design Tips & TricksMongoDB Schema Design Tips & Tricks
MongoDB Schema Design Tips & Tricks
 
OAISRB
OAISRBOAISRB
OAISRB
 
MongoDB Tick Data Presentation
MongoDB Tick Data PresentationMongoDB Tick Data Presentation
MongoDB Tick Data Presentation
 

Similar to Java 9 Security Enhancements in Practice

OpenSSL Basic Function Call Flow
OpenSSL Basic Function Call FlowOpenSSL Basic Function Call Flow
OpenSSL Basic Function Call FlowWilliam Lee
 
Обнаружение вредоносного кода в зашифрованном с помощью TLS трафике (без деши...
Обнаружение вредоносного кода в зашифрованном с помощью TLS трафике (без деши...Обнаружение вредоносного кода в зашифрованном с помощью TLS трафике (без деши...
Обнаружение вредоносного кода в зашифрованном с помощью TLS трафике (без деши...Positive Hack Days
 
Securing TodoMVC Using the Web Cryptography API
Securing TodoMVC Using the Web Cryptography APISecuring TodoMVC Using the Web Cryptography API
Securing TodoMVC Using the Web Cryptography APIKevin Hakanson
 
Javascript Object Signing & Encryption
Javascript Object Signing & EncryptionJavascript Object Signing & Encryption
Javascript Object Signing & EncryptionAaron Zauner
 
Dns protocol design attacks and security
Dns protocol design attacks and securityDns protocol design attacks and security
Dns protocol design attacks and securityMichael Earls
 
maxbox starter72 multilanguage coding
maxbox starter72 multilanguage codingmaxbox starter72 multilanguage coding
maxbox starter72 multilanguage codingMax Kleiner
 
Monitoring at scale: Migrating to Prometheus at Fastly
Monitoring at scale: Migrating to Prometheus at FastlyMonitoring at scale: Migrating to Prometheus at Fastly
Monitoring at scale: Migrating to Prometheus at FastlyMarcus Barczak
 
Raspberry pi Part 23
Raspberry pi Part 23Raspberry pi Part 23
Raspberry pi Part 23Techvilla
 
Blockchain Explorer
Blockchain ExplorerBlockchain Explorer
Blockchain ExplorerRihusoft
 
Tsn linux elce17
Tsn linux elce17Tsn linux elce17
Tsn linux elce17henrikau
 
[Wroclaw #8] TLS all the things!
[Wroclaw #8] TLS all the things![Wroclaw #8] TLS all the things!
[Wroclaw #8] TLS all the things!OWASP
 
Networking and communications security – network architecture design
Networking and communications security – network architecture designNetworking and communications security – network architecture design
Networking and communications security – network architecture designEnterpriseGRC Solutions, Inc.
 
Cotopaxi - IoT testing toolkit (Black Hat Asia 2019 Arsenal)
Cotopaxi - IoT testing toolkit (Black Hat Asia 2019 Arsenal)Cotopaxi - IoT testing toolkit (Black Hat Asia 2019 Arsenal)
Cotopaxi - IoT testing toolkit (Black Hat Asia 2019 Arsenal)Jakub Botwicz
 
Python And The MySQL X DevAPI - PyCaribbean 2019
Python And The MySQL X DevAPI - PyCaribbean 2019Python And The MySQL X DevAPI - PyCaribbean 2019
Python And The MySQL X DevAPI - PyCaribbean 2019Dave Stokes
 
Scapy TLS: A scriptable TLS 1.3 stack
Scapy TLS: A scriptable TLS 1.3 stackScapy TLS: A scriptable TLS 1.3 stack
Scapy TLS: A scriptable TLS 1.3 stackAlexandre Moneger
 
Tamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher
 

Similar to Java 9 Security Enhancements in Practice (20)

OpenSSL Basic Function Call Flow
OpenSSL Basic Function Call FlowOpenSSL Basic Function Call Flow
OpenSSL Basic Function Call Flow
 
Обнаружение вредоносного кода в зашифрованном с помощью TLS трафике (без деши...
Обнаружение вредоносного кода в зашифрованном с помощью TLS трафике (без деши...Обнаружение вредоносного кода в зашифрованном с помощью TLS трафике (без деши...
Обнаружение вредоносного кода в зашифрованном с помощью TLS трафике (без деши...
 
SSL/TLS
SSL/TLSSSL/TLS
SSL/TLS
 
IoT Secure Bootsrapping : ideas
IoT Secure Bootsrapping : ideasIoT Secure Bootsrapping : ideas
IoT Secure Bootsrapping : ideas
 
Securing TodoMVC Using the Web Cryptography API
Securing TodoMVC Using the Web Cryptography APISecuring TodoMVC Using the Web Cryptography API
Securing TodoMVC Using the Web Cryptography API
 
Javascript Object Signing & Encryption
Javascript Object Signing & EncryptionJavascript Object Signing & Encryption
Javascript Object Signing & Encryption
 
Dns protocol design attacks and security
Dns protocol design attacks and securityDns protocol design attacks and security
Dns protocol design attacks and security
 
Pycon - Python for ethical hackers
Pycon - Python for ethical hackers Pycon - Python for ethical hackers
Pycon - Python for ethical hackers
 
maxbox starter72 multilanguage coding
maxbox starter72 multilanguage codingmaxbox starter72 multilanguage coding
maxbox starter72 multilanguage coding
 
Monitoring at scale: Migrating to Prometheus at Fastly
Monitoring at scale: Migrating to Prometheus at FastlyMonitoring at scale: Migrating to Prometheus at Fastly
Monitoring at scale: Migrating to Prometheus at Fastly
 
Raspberry pi Part 23
Raspberry pi Part 23Raspberry pi Part 23
Raspberry pi Part 23
 
Blockchain Explorer
Blockchain ExplorerBlockchain Explorer
Blockchain Explorer
 
Tsn linux elce17
Tsn linux elce17Tsn linux elce17
Tsn linux elce17
 
LogStash in action
LogStash in actionLogStash in action
LogStash in action
 
[Wroclaw #8] TLS all the things!
[Wroclaw #8] TLS all the things![Wroclaw #8] TLS all the things!
[Wroclaw #8] TLS all the things!
 
Networking and communications security – network architecture design
Networking and communications security – network architecture designNetworking and communications security – network architecture design
Networking and communications security – network architecture design
 
Cotopaxi - IoT testing toolkit (Black Hat Asia 2019 Arsenal)
Cotopaxi - IoT testing toolkit (Black Hat Asia 2019 Arsenal)Cotopaxi - IoT testing toolkit (Black Hat Asia 2019 Arsenal)
Cotopaxi - IoT testing toolkit (Black Hat Asia 2019 Arsenal)
 
Python And The MySQL X DevAPI - PyCaribbean 2019
Python And The MySQL X DevAPI - PyCaribbean 2019Python And The MySQL X DevAPI - PyCaribbean 2019
Python And The MySQL X DevAPI - PyCaribbean 2019
 
Scapy TLS: A scriptable TLS 1.3 stack
Scapy TLS: A scriptable TLS 1.3 stackScapy TLS: A scriptable TLS 1.3 stack
Scapy TLS: A scriptable TLS 1.3 stack
 
Tamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptx
 

More from Martin Toshev

Building highly scalable data pipelines with Apache Spark
Building highly scalable data pipelines with Apache SparkBuilding highly scalable data pipelines with Apache Spark
Building highly scalable data pipelines with Apache SparkMartin Toshev
 
Big data processing with Apache Spark and Oracle Database
Big data processing with Apache Spark and Oracle DatabaseBig data processing with Apache Spark and Oracle Database
Big data processing with Apache Spark and Oracle DatabaseMartin Toshev
 
Practical security In a modular world
Practical security In a modular worldPractical security In a modular world
Practical security In a modular worldMartin Toshev
 
Writing Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMSWriting Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMSMartin Toshev
 
Security Architecture of the Java platform
Security Architecture of the Java platformSecurity Architecture of the Java platform
Security Architecture of the Java platformMartin Toshev
 
Oracle Database 12c Attack Vectors
Oracle Database 12c Attack VectorsOracle Database 12c Attack Vectors
Oracle Database 12c Attack VectorsMartin Toshev
 
RxJS vs RxJava: Intro
RxJS vs RxJava: IntroRxJS vs RxJava: Intro
RxJS vs RxJava: IntroMartin Toshev
 
Security Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java PlatformSecurity Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java PlatformMartin Toshev
 
Writing Stored Procedures with Oracle Database 12c
Writing Stored Procedures with Oracle Database 12cWriting Stored Procedures with Oracle Database 12c
Writing Stored Procedures with Oracle Database 12cMartin Toshev
 
Concurrency Utilities in Java 8
Concurrency Utilities in Java 8Concurrency Utilities in Java 8
Concurrency Utilities in Java 8Martin Toshev
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message BrokerMartin Toshev
 
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)Martin Toshev
 
Modularity of The Java Platform Javaday (http://javaday.org.ua/)
Modularity of The Java Platform Javaday (http://javaday.org.ua/)Modularity of The Java Platform Javaday (http://javaday.org.ua/)
Modularity of The Java Platform Javaday (http://javaday.org.ua/)Martin Toshev
 
Writing Java Stored Procedures in Oracle 12c
Writing Java Stored Procedures in Oracle 12cWriting Java Stored Procedures in Oracle 12c
Writing Java Stored Procedures in Oracle 12cMartin Toshev
 
KDB database (EPAM tech talks, Sofia, April, 2015)
KDB database (EPAM tech talks, Sofia, April, 2015)KDB database (EPAM tech talks, Sofia, April, 2015)
KDB database (EPAM tech talks, Sofia, April, 2015)Martin Toshev
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in developmentMartin Toshev
 

More from Martin Toshev (20)

Building highly scalable data pipelines with Apache Spark
Building highly scalable data pipelines with Apache SparkBuilding highly scalable data pipelines with Apache Spark
Building highly scalable data pipelines with Apache Spark
 
Big data processing with Apache Spark and Oracle Database
Big data processing with Apache Spark and Oracle DatabaseBig data processing with Apache Spark and Oracle Database
Big data processing with Apache Spark and Oracle Database
 
Practical security In a modular world
Practical security In a modular worldPractical security In a modular world
Practical security In a modular world
 
Java 9 sneak peek
Java 9 sneak peekJava 9 sneak peek
Java 9 sneak peek
 
Writing Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMSWriting Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMS
 
Spring RabbitMQ
Spring RabbitMQSpring RabbitMQ
Spring RabbitMQ
 
Security Architecture of the Java platform
Security Architecture of the Java platformSecurity Architecture of the Java platform
Security Architecture of the Java platform
 
Oracle Database 12c Attack Vectors
Oracle Database 12c Attack VectorsOracle Database 12c Attack Vectors
Oracle Database 12c Attack Vectors
 
JVM++: The Graal VM
JVM++: The Graal VMJVM++: The Graal VM
JVM++: The Graal VM
 
RxJS vs RxJava: Intro
RxJS vs RxJava: IntroRxJS vs RxJava: Intro
RxJS vs RxJava: Intro
 
Security Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java PlatformSecurity Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java Platform
 
Spring RabbitMQ
Spring RabbitMQSpring RabbitMQ
Spring RabbitMQ
 
Writing Stored Procedures with Oracle Database 12c
Writing Stored Procedures with Oracle Database 12cWriting Stored Procedures with Oracle Database 12c
Writing Stored Procedures with Oracle Database 12c
 
Concurrency Utilities in Java 8
Concurrency Utilities in Java 8Concurrency Utilities in Java 8
Concurrency Utilities in Java 8
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message Broker
 
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)
Security Architecture of the Java Platform (BG OUG, Plovdiv, 13.06.2015)
 
Modularity of The Java Platform Javaday (http://javaday.org.ua/)
Modularity of The Java Platform Javaday (http://javaday.org.ua/)Modularity of The Java Platform Javaday (http://javaday.org.ua/)
Modularity of The Java Platform Javaday (http://javaday.org.ua/)
 
Writing Java Stored Procedures in Oracle 12c
Writing Java Stored Procedures in Oracle 12cWriting Java Stored Procedures in Oracle 12c
Writing Java Stored Procedures in Oracle 12c
 
KDB database (EPAM tech talks, Sofia, April, 2015)
KDB database (EPAM tech talks, Sofia, April, 2015)KDB database (EPAM tech talks, Sofia, April, 2015)
KDB database (EPAM tech talks, Sofia, April, 2015)
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in development
 

Recently uploaded

İTÜ CAD and Reverse Engineering Workshop
İTÜ CAD and Reverse Engineering WorkshopİTÜ CAD and Reverse Engineering Workshop
İTÜ CAD and Reverse Engineering WorkshopEmre Günaydın
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdfPratik Pawar
 
Halogenation process of chemical process industries
Halogenation process of chemical process industriesHalogenation process of chemical process industries
Halogenation process of chemical process industriesMuhammadTufail242431
 
Top 13 Famous Civil Engineering Scientist
Top 13 Famous Civil Engineering ScientistTop 13 Famous Civil Engineering Scientist
Top 13 Famous Civil Engineering Scientistgettygaming1
 
Democratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek AryaDemocratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek Aryaabh.arya
 
shape functions of 1D and 2 D rectangular elements.pptx
shape functions of 1D and 2 D rectangular elements.pptxshape functions of 1D and 2 D rectangular elements.pptx
shape functions of 1D and 2 D rectangular elements.pptxVishalDeshpande27
 
Online blood donation management system project.pdf
Online blood donation management system project.pdfOnline blood donation management system project.pdf
Online blood donation management system project.pdfKamal Acharya
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacksgerogepatton
 
Digital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdfDigital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdfAbrahamGadissa
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234AafreenAbuthahir2
 
Explosives Industry manufacturing process.pdf
Explosives Industry manufacturing process.pdfExplosives Industry manufacturing process.pdf
Explosives Industry manufacturing process.pdf884710SadaqatAli
 
The Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docx
The Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docxThe Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docx
The Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docxCenterEnamel
 
Event Management System Vb Net Project Report.pdf
Event Management System Vb Net  Project Report.pdfEvent Management System Vb Net  Project Report.pdf
Event Management System Vb Net Project Report.pdfKamal Acharya
 
Architectural Portfolio Sean Lockwood
Architectural Portfolio Sean LockwoodArchitectural Portfolio Sean Lockwood
Architectural Portfolio Sean Lockwoodseandesed
 
Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.PrashantGoswami42
 
Scaling in conventional MOSFET for constant electric field and constant voltage
Scaling in conventional MOSFET for constant electric field and constant voltageScaling in conventional MOSFET for constant electric field and constant voltage
Scaling in conventional MOSFET for constant electric field and constant voltageRCC Institute of Information Technology
 
fundamentals of drawing and isometric and orthographic projection
fundamentals of drawing and isometric and orthographic projectionfundamentals of drawing and isometric and orthographic projection
fundamentals of drawing and isometric and orthographic projectionjeevanprasad8
 
HYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generationHYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generationRobbie Edward Sayers
 
ENERGY STORAGE DEVICES INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES  INTRODUCTION UNIT-IENERGY STORAGE DEVICES  INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES INTRODUCTION UNIT-IVigneshvaranMech
 
Laundry management system project report.pdf
Laundry management system project report.pdfLaundry management system project report.pdf
Laundry management system project report.pdfKamal Acharya
 

Recently uploaded (20)

İTÜ CAD and Reverse Engineering Workshop
İTÜ CAD and Reverse Engineering WorkshopİTÜ CAD and Reverse Engineering Workshop
İTÜ CAD and Reverse Engineering Workshop
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
 
Halogenation process of chemical process industries
Halogenation process of chemical process industriesHalogenation process of chemical process industries
Halogenation process of chemical process industries
 
Top 13 Famous Civil Engineering Scientist
Top 13 Famous Civil Engineering ScientistTop 13 Famous Civil Engineering Scientist
Top 13 Famous Civil Engineering Scientist
 
Democratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek AryaDemocratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek Arya
 
shape functions of 1D and 2 D rectangular elements.pptx
shape functions of 1D and 2 D rectangular elements.pptxshape functions of 1D and 2 D rectangular elements.pptx
shape functions of 1D and 2 D rectangular elements.pptx
 
Online blood donation management system project.pdf
Online blood donation management system project.pdfOnline blood donation management system project.pdf
Online blood donation management system project.pdf
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
 
Digital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdfDigital Signal Processing Lecture notes n.pdf
Digital Signal Processing Lecture notes n.pdf
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
 
Explosives Industry manufacturing process.pdf
Explosives Industry manufacturing process.pdfExplosives Industry manufacturing process.pdf
Explosives Industry manufacturing process.pdf
 
The Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docx
The Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docxThe Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docx
The Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docx
 
Event Management System Vb Net Project Report.pdf
Event Management System Vb Net  Project Report.pdfEvent Management System Vb Net  Project Report.pdf
Event Management System Vb Net Project Report.pdf
 
Architectural Portfolio Sean Lockwood
Architectural Portfolio Sean LockwoodArchitectural Portfolio Sean Lockwood
Architectural Portfolio Sean Lockwood
 
Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.
 
Scaling in conventional MOSFET for constant electric field and constant voltage
Scaling in conventional MOSFET for constant electric field and constant voltageScaling in conventional MOSFET for constant electric field and constant voltage
Scaling in conventional MOSFET for constant electric field and constant voltage
 
fundamentals of drawing and isometric and orthographic projection
fundamentals of drawing and isometric and orthographic projectionfundamentals of drawing and isometric and orthographic projection
fundamentals of drawing and isometric and orthographic projection
 
HYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generationHYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generation
 
ENERGY STORAGE DEVICES INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES  INTRODUCTION UNIT-IENERGY STORAGE DEVICES  INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES INTRODUCTION UNIT-I
 
Laundry management system project report.pdf
Laundry management system project report.pdfLaundry management system project report.pdf
Laundry management system project report.pdf
 

Java 9 Security Enhancements in Practice

  • 1. Java 9 security enhancements in practice Martin Toshev Prague, 19-20 October 2017
  • 2. Who am I Software consultant (CoffeeCupConsulting) BG JUG board member (http://jug.bg) OpenJDK and Oracle RBDMS enthusiast Twitter: @martin_fmi Martin Toshev Prague, 19-20 October 2017
  • 3. Agenda TLS support in JDK DTLS support in JDK 9 TLS ALPN extension in JDK 9 The rest at a glance … Martin Toshev Prague, 19-20 October 2017
  • 4. TLS support in JDK Martin Toshev Prague, 19-20 October 2017
  • 5. TLS and the JDK •Up to JDK 9 TLS 1.0, 1.1 and 1.2 are supported via the JSSE API •TLS 1.3 specification currently ongoing … •typically used to secure most types of application protocols •used for the implementation of SSL VPNs Martin Toshev Prague, 19-20 October 2017
  • 6. TLS handshake client serve r 1) Client “hello”(TLS version, ciphers) 2) Server “hello”(server cert, TLS version, cipher) 3) Verity server cert and crypto params 5) Send secret key 4) Send client cert 7) Client finished 8) Server finished 6) Verity client cert 9) Exchange encryptedmessages Martin Toshev Prague, 19-20 October 2017
  • 7. Java Secure Socket Extension •Implemented as JCA provider (SunJSSE) •Core classes part of the javax.net and javax.net.ssl packages •Provides APIs for blocking and non-blocking mode of operation •javax.net.ssl.HttpsURLConnection used to simply HTTPs communication Martin Toshev Prague, 19-20 October 2017
  • 8. JSSE blocking mode •Provided by the javax.net.ssl.SSLSocket class •Used in the same manner as a regular socket •Handshake might be triggered by: o Calling startHandshake() on the socket o Calling getSession() on the socket o Reading/writing to the socket Martin Toshev Prague, 19-20 October 2017
  • 9. JSSE blocking mode (example) Martin Toshev Prague, 19-20 October 2017 System.setProperty("javax.net.ssl.keyStore", "sample.pfx"); System.setProperty("javax.net.ssl.keyStorePassword", "sample"); SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); ServerSocket ss = ssf.createServerSocket(4444); while (true) { Socket s = ss.accept(); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintStream out = new PrintStream(s.getOutputStream()); String line = null; while (((line = in.readLine()) != null)) { System.out.println(line); out.println("Hi, client"); } in.close(); out.close(); s.close();
  • 10. JSSE blocking mode (example) Martin Toshev Prague, 19-20 October 2017 System.setProperty("javax.net.ssl.trustStore", "sample.pfx"); System.setProperty("javax.net.ssl.trustStorePassword", "sample"); SSLSocketFactory ssf = (SSLSocketFactory) SSLSocketFactory.getDefault(); Socket s = ssf.createSocket("127.0.0.1", 4444); PrintWriter out = new PrintWriter(s.getOutputStream(), true); out.println("Hi, server."); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); String x = in.readLine(); System.out.println(x); out.close(); in.close(); s.close();
  • 11. JSSE non-blocking mode •Provided by the javax.net.ssl.SSLEngine •The wrap() and unwrap() methods used to transfer data •Handshake might be triggered by o calling beginHandshake() o calling wrap() o calling unwrap() Martin Toshev Prague, 19-20 October 2017 application byte buffers network byte buffers TLS handshakewrap unwrap
  • 12. JSSE non-blocking mode •Much more complex to use than the SSLSocket API •Can be used along with the java.nio.channels.SocketChannel API •The javax.net.debug system property might be very useful for debugging Martin Toshev Prague, 19-20 October 2017 - Djavax.net.debug=all -Djavax.net.debug=SSL, handshake
  • 13. DTLS support in JDK 9 Martin Toshev Prague, 19-20 October 2017
  • 14. DTLS • TLS over an unreliable transport protocol such as UDP • Reliable and in-order delivery are not guaranteed • Targets to secure unreliable protocols such as DNS or SIP etc. • Follows TLS specifications (hence 1.3 in draft) Martin Toshev Prague, 19-20 October 2017
  • 15. DTLS vs TLS • Added explicit sequence number field • Dropped support for some ciphers (such as RC4) • Added retransmission timer for resending of packets • MAC verification failure triggers warning instead of failure • Added HelloVerifyRequest message in order to identify sender Martin Toshev Prague, 19-20 October 2017
  • 16. DTLS in JDK 9 • Support for DTLS 1.0 and 1.2 • Implementation adapted to the JSSE API • SSEngine typically used along with DatagramSocket • Implementation based on the SSLEngine API • … which makes it hard to use directly Martin Toshev Prague, 19-20 October 2017
  • 17. DTLS before JDK 9 • Pre-JDK 9 a third party provider such as BCJSSE could be used • … or external libraries such as OpenSSL via JNI Martin Toshev Prague, 19-20 October 2017
  • 18. DTLS in JDK 9 •Ordered delivery provided automatically by SSLEngine •Sequence number can be retrieved via SSLEngineResult.sequenceNumber() •Redelivery of failed messages must be done by the application •… in DTLS handshake messages must be delivered properly Martin Toshev Prague, 19-20 October 2017
  • 19. DTLS in JDK 9 • Good examples are provided by the JDK 9 test suite Martin Toshev Prague, 19-20 October 2017 SSLContext sslContext = SSLContext.getInstance("DTLS"); sslContext.init(…) SSLEngine engine = sslContext.createSSLEngine(); engine.setUseClientMode(false); …
  • 20. TLS ALPN extension in JDK 9 Martin Toshev Prague, 19-20 October 2017
  • 21. Application Layer Protocol Extension • Used to identify the application protocol during TLS handshake • Does not require additional roundtrips (ClientHello message used) • Allows the server to send different certificates for different protocols • Typical use case is the HTTP 2 protocol • … as e.g. HTTP 1.1 and HTTP/2 may both reside on the same TLS endpoint Martin Toshev Prague, 19-20 October 2017
  • 22. ALPN in JDK 9 • Before handshake set the supported protocols on the socket/engine: Martin Toshev Prague, 19-20 October 2017 SSLParameters sslParams = sslSocket.getSSLParameters(); sslParams.setApplicationProtocols(…) SSLParameters sslParams = sslEngine.getSSLParameters(); sslParams.setApplicationProtocols(…)
  • 23. ALPN in JDK 9 • Trigger the handshake on the socket/engine – for example: Martin Toshev Prague, 19-20 October 2017 sslSocket.startHandshake(); sslEngine.beginHandshake();
  • 24. ALPN in JDK 9 • After handshake you can get the negotiated protocol: Martin Toshev Prague, 19-20 October 2017 String protocol = sslSocket.getApplicationProtocol(); String protocol = sslEngine.getApplicationProtocol();
  • 25. Advanced ALPN • You can also specify custom protocol resolution Martin Toshev Prague, 19-20 October 2017 sslSocket.setHandshakeApplicationProtocolSelector((serverSocket, clientProtocols) -> { SSLSession handshakeSession = serverSocket.getHandshakeSession(); String cipher = handshakeSession.getCipherSuite(); int packetBufferSize = handshakeSession.getPacketBufferSize(); if("RC4".equals(cipher) && packetBufferSize > 1024) { return "protocol1"; } else { return "protocol2"; } });
  • 26. Demo: banking server Martin Toshev Prague, 19-20 October 2017 FIX protocol integration Banking server (plain Java) Alpha protocol integration Demo application … XMPP protocol SIP protocol
  • 27. The rest at a glance … Martin Toshev Prague, 19-20 October 2017
  • 28. OCSP Stapling for TCP • Provides a capability for the server to check certificate revocation • The server typically caches OCSP responses • Done in order to reduce the number of responses from the OCSP server • Must be enabled on both the client and the server Martin Toshev Prague, 19-20 October 2017 -Djdk.tls.client.enableStatusRequestExtension=true -Dcom.sun.net.ssl.checkRevocation=true - Djdk.tls.server.enableStatusRequestExtension=true
  • 29. PKCS12 Keystores by default •PKIX (PKCS12) is default type of store if no other is specified •Replaces JKS as the default keystore •PKCS12 provides support for stronger cryptographic algorithms •Provides better interoperability with other systems Martin Toshev Prague, 19-20 October 2017
  • 30. Others • DRBG-Based SecureRandom Implementations • Utilization of CPU Instructions for GHASH and RSA • SHA-1 Certificates disabled for certificate validation • Implementation of the SHA-3 hash algorithms Martin Toshev Prague, 19-20 October 2017
  • 31. Summary • JDK 9 introduces significant set of security features and enhancements • The major part of them is related to TLS support • Hopefully this tendency will continue with future releases … Martin Toshev Prague, 19-20 October 2017
  • 32. References Java Platform, Standard Edition What’s New in Oracle JDK 9 https://docs.oracle.com/javase/9/whatsnew/ Java Platform, Standard Edition Security Developer’s Guide https://docs.oracle.com/javase/9/security/ Martin Toshev Prague, 19-20 October 2017
  • 33. References JEP 219: Datagram Transport Layer Security http://openjdk.java.net/jeps/219 JEP 244: TLS Application-Layer Protocol Negotiation Extension http://openjdk.java.net/jeps/244 JDK 9 SSL test suite https://github.com/netroby/jdk9-dev/tree/master/jdk/test/javax/net/ssl Martin Toshev Prague, 19-20 October 2017
  • 34. References Bouncy Castle (D)TLS API and JSSE Provider https://downloads.bouncycastle.org/fips-java/BC-FJA-(D)TLSUserGuide- 1.0.0.pdf Introduction to DTLS https://www.pixelstech.net/article/1459585203-Introduction-to-DTLS %28Datagram-Transport-Layer-Security%29 DTLS implementation in JDK 9 (changeset) http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/6721ff11d592 Martin Toshev Prague, 19-20 October 2017

Editor's Notes

  1. TLS being the predecessor of SSL is not interoperable with SSL …
  2. TLS being the predecessor of SSL is not interoperable with SSL …
  3. TLS being the predecessor of SSL is not interoperable with SSL …
  4. TLS being the predecessor of SSL is not interoperable with SSL …
  5. TLS being the predecessor of SSL is not interoperable with SSL …
  6. More complex that the SSLSocket API …
  7. TLS being the predecessor of SSL is not interoperable with SSL …
  8. You can also do the same on an SSLEngine instance …
  9. Every box on the diagram is a separate Jigsaw module