SlideShare a Scribd company logo
voxxeddays.com/luxembourg/ #voxxeddaysLU
Security architecture
of the Java platform
Martin Toshev
@martin_fmi
voxxeddays.com/luxembourg/ #voxxeddaysLU
Who am I
Software consultant (CoffeeCupConsulting)
BG JUG board member (http://jug.bg)
OpenJDK and Oracle RBDMS enthusiast
voxxeddays.com/luxembourg/ #voxxeddaysLU
voxxeddays.com/luxembourg/ #voxxeddaysLU
Work in progress …
voxxeddays.com/luxembourg/ #voxxeddaysLU
Agenda
• Evolution of the Java security model
• Outside the sandbox: APIs for secure coding
• Designing and coding with security in mind
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the Java security model
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Traditionally - companies protect they assets using strict physical
and network access policies
• Tools such as anti-virus software, firewalls, IPS/IDS systems
facilitate this approach
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• With the introduction of various technologies for loading and
executing code on the client machine from the browser (such as
Applets) - a new range of concerns emerge related to client
security – this is when the Java security sandbox starts to evolve
…
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• The goal of the Java security sandbox is to allow untrusted code
from applets to be executed in a trusted environment such as the
user's browser
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• JDK 1.0 (when it all started …) – the original sandbox model was
introduced
Applet
(untrusted)
System code
(trusted)
JVM
Browser
http://voxxed.com/demoapplet
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Code executed by the JVM is divided in two domains – trusted
and untrusted
• Strict restriction are applied by default on the security model of
applets such as denial to read/write data from disk, connect to
the network and so on
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• JDK 1.1 (gaining trust …) – applet signing introduced
Applet
(untrusted)
System code
(trusted)
JVM
Browser
Signed Applet
(trusted)
http://voxxed.com/demoapplet
http://voxxed.com/trustedapplet
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Local code (as in JDK 1.0) and signed applet code (as of JDK 1.1)
are trusted
• Unsigned remote code (as in JDK 1.0) is not trusted
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Steps needed to sign and run an applet:
• Compile the applet
• Create a JAR file for the applet
• Generate a pair of public/private keys
• Sign the applet JAR with the private key
• Export a certificate for the public key
• Import the Certificate as a Trusted Certificate
• Create the policy file
• Load and run the applet
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• JDK 1.2 (gaining more trust …) – fine-grained access control
Applet
System code
JVM
Browser
grant codeBase http://voxxed.com/demoapplet {
permission java.io.FilePermisions “C:Windows” “delete”
}
security.policy
SecurityManager.checkPermission(…)
AccessController.checkPermission(…)
http://voxxed.com/demoapplet
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• The security model becomes code-centric
• Additional access control decisions are specified in a security
policy
• No more notion of trusted and untrusted code
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• The notion of protection domain introduced – determined by the
security policy
• Two types of protection domains – system and application
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• The protection domain is set during classloading and contains the
code source and the list of permissions for the class
applet.getClass().getProtectionDomain();
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• One permission can imply another permission
java.io.FilePermissions “C:Windows” “delete”
implies
java.io.FilePermissions “C:Windowssystem32” “delete”
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• One code source can imply another code source
codeBase http://voxxed.com/
implies
codeBase http://voxxed.com/demoapplet
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Since an execution thread may pass through classes loaded by
different classloaders (and hence – have different protection
domains) the following rule of thumb applies:
The permission set of an execution thread is considered to be the
intersection of the permissions of all protection domains traversed by the
execution thread
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• JDK 1.3, 1,4 (what about entities running the code … ?) – JAAS
Applet
System code
JVM
Browser
http://voxxed.com/demoapplet
grant principal javax.security.auth.x500.X500Principal "cn=Tom"
{ permission java.io.FilePermissions “C:Windows” “delete” }
security.policy
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• JAAS (Java Authentication and Authorization Service) extends the
security model with role-based permissions
• The protection domain of a class now may contain not only the
code source and the permissions but a list of principals
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• The authentication component of JAAS is independent of the
security sandbox in Java and hence is typically used in more wider
context (such as j2ee app servers)
• The authorization component is the one that extends the Java
security policy
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Core classes of JAAS:
• javax.security.auth.Subject - an authenticated subject
• java.security.Principal - identifying characteristic of a subject
• javax.security.auth.spi.LoginModule - interface for implementors of login (PAM)
modules
• javax.security.auth.login.LoginContext - creates objects used for authentication
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Up to JDK 1.4 the following is a typical flow for permission
checking:
1) upon system startup a security policy is set and a security manager is
installed
Policy.setPolicy(…)
System.setSecurityManager(…)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Up to JDK 1.4 the following is a typical flow for permission
checking:
2) during classloading (e.g. of a remote applet) bytecode verification is done
and the protection domain is set for the current classloader (along with
the code source, the set of permissions and the set of JAAS principals)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Up to JDK 1.4 the following is a typical flow for permission
checking:
3) when system code is invoked from the remote code the SecurityManager
is used to check against the intersection of protection domains based on
the chain of threads and their call stacks
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Up to JDK 1.4 the following is a typical flow for permission
checking:
SocketPermission permission = new
SocketPermission(“voxxed.com:8000-9000","connect,accept");
SecurityManager sm = System.getSecurityManager();
if (sm != null) sm.checkPermission(permission);
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Up to JDK 1.4 the following is a typical flow for permission
checking:
4) application code can also do permission checking against remote code
using a SecurityManager or an AccessController
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Up to JDK 1.4 the following is a typical flow for permission
checking:
SocketPermission permission = new
SocketPermission(“voxxed.com:8000-9000", "connect,accept");
AccessController.checkPermission(permission)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Up to JDK 1.4 the following is a typical flow for permission
checking:
5) application code can also do permission checking with all permissions of
the calling domain or a particular JAAS subject
AccessController.doPrivileged(…)
Subject.doAs(…)
Subject.doAsPrivileged(…)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• The security model defined by java.lang.SecurityManager is
customizable
• For example: Oracle JVM uses a custom SecurityManager with
additional permission classes where the code source is a database
schema (containing e.g. Java stored procedures)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• JDK 1.5, 1.6 (enhancing the model …) – new additions to the
sandbox model (e.g. LDAP support for JAAS)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• JDK 1.7, 1.8 (further enhancing the model …) – enhancements to
the sandbox model (e.g. AccessController.doPrivileged() for
checking against a subset of permissions)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• JDK 1.9 and beyond … (applying the model to modules …)
application module
system
module 1
JVM
Browser
http://voxxed.com/appmodule
security.policy
system
module 2
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• By modules we understand modules in JDK as defined by project
Jigsaw
• Modules must conform to the same security model as applets –
each module is loaded by a particular classloader (bootstrap,
extension or system)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Evolution of the
Java security model
• Modularization of the JDK system classes allows further to define fine-
grained access control permissions for classes in the system domain
• This is not currently allowed due to the monolithic nature of the JDK
voxxeddays.com/luxembourg/ #voxxeddaysLU
Outside the sandbox:
APIs for secure coding
voxxeddays.com/luxembourg/ #voxxeddaysLU
Outside the sandbox:
APIs for secure coding
• The security sandbox defines a strict model for execution of remote
code in the JVM
• The other side of the coin are the security APIs that provide utilities for
implementing the different aspects of application security …
voxxeddays.com/luxembourg/ #voxxeddaysLU
Outside the sandbox:
APIs for secure coding
• The additional set of APIs includes:
• JCA (Java Cryptography Architecture)
• PKI (Public Key Infrastructure) utilities
• JSSE (Java Secure Socket Extension)
• Java GSS API (Java Generic Security Services)
• Java SASL API (Java Simple Authentication and Security Layer)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Outside the sandbox:
APIs for secure coding
• JCA provides utilities for:
• creating digital signatures
• creating message digests
• using cryptographic ciphers (symetric/asymetric, block/stream)
• using different other types of cryptographic services and algorithms
voxxeddays.com/luxembourg/ #voxxeddaysLU
Outside the sandbox:
APIs for secure coding
• JCA has a pluggable architecture
• JCA is independent from particular cryptographic algorithms
• JCA continues to evolve (especially by providing stronger
cryptographic algorithms)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Outside the sandbox:
APIs for secure coding
• PKI utilities provide means for working with:
• certificates
• certificate revocation lists (CRL)
• OCSP (Online Certificate Status Protocol)
• key stores and trust stores (also based on the PKCS - public-key cryptography
standards)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Outside the sandbox:
APIs for secure coding
• PKI certificate revocation check (revision):
• PKI utilities continue to evolve (especially in providing more
support for managing certificates and keys)
certificate authority
revocation checking
OCSP
CRL
certificate
certificate
voxxeddays.com/luxembourg/ #voxxeddaysLU
Outside the sandbox:
APIs for secure coding
• JSSE provides an implementation of the TSL/SSL sockets for
working with remote communication
• JSSE continues to evolve (especially in the support for additional
features such as Server Name Identication)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Outside the sandbox:
APIs for secure coding
• Java GSS API provides an alternative of JSSE for secure communication
• Java GSS API is a framework for providing token-based security
services that is independent of the underlying protocols
voxxeddays.com/luxembourg/ #voxxeddaysLU
Outside the sandbox:
APIs for secure coding
• Java GSS API can be used along with JAAS for authentication purposes
• Java GSS API continues to evolve (especially in the support for
Kerberos authentication)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Outside the sandbox:
APIs for secure coding
• Java SASL defines a protocol for exchange of authentication data
• Java SASL is a framework where external providers give concrete
semantics to the authentication data being exchanged
voxxeddays.com/luxembourg/ #voxxeddaysLU
Outside the sandbox:
APIs for secure coding
• Java SASL continues to evolve (especially with support for additional
and enhanced properties for exchanging authentication data)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Designing and coding
with security in mind
voxxeddays.com/luxembourg/ #voxxeddaysLU
Designing and coding
with security in mind
• First of all - follow programing guidelines and best practices -
most are not bound to the Java programming language (input
validation, error handling, type safety, access modifiers, resource
cleanup, prepared SQL queries and whatever you can think of …)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Designing and coding
with security in mind
• Respect the SecurityManager - design libraries so that they work
in environments with installed SecurityManager
• Example: GSON library does not respect the SecurityManager and cannot be
used without additional reflective permissions in some scenarios
voxxeddays.com/luxembourg/ #voxxeddaysLU
Designing and coding
with security in mind
• Grant minimal permissions to code that requires them - the
principle of "least privilege"
• Copy-pasting, of course, increases the risk of security flows (if the
copied code is flawed)
voxxeddays.com/luxembourg/ #voxxeddaysLU
Designing and coding
with security in mind
• Sanitize exception messages from sensitive information - often
this results in an unintended exposal of exploitable information
• Let alone exception stacktraces … in many cases they convey a
wealth of information about the system
voxxeddays.com/luxembourg/ #voxxeddaysLU
Thank you
voxxeddays.com/luxembourg/ #voxxeddaysLU
References
• Java Security Overview (white paper)
http://www.oracle.com/technetwork/java/js-white-paper-149932.pdf
• Java SE Platform Security Architecture Spec
http://docs.oracle.com/javase/7/docs/technotes/guides/security/spec/s
ecurity-spec.doc.html
• Inside Java 2 Platform Security, 2nd edition
http://www.amazon.com/Inside-Java%C2%BF-Platform-Security-
Implementation/dp/0201787911
voxxeddays.com/luxembourg/ #voxxeddaysLU
References
• Java Security, 2nd edition, Scott Oaks
http://shop.oreilly.com/product/9780596001575.do
• Securing Java, Gary McGraw, Ed Felden
http://www.securingjava.com
• Secure Coding Guidelines for Java SE
http://www.oracle.com/technetwork/java/seccodeguide-139067.html#0
voxxeddays.com/luxembourg/ #voxxeddaysLU
References
• Java 2 Network Security
http://www.amazon.com/JAVA-Network-Security-2nd-
Edition/dp/0130155926
• Java Security Documentation
http://docs.oracle.com/javase/8/docs/technotes/guides/security/index.
html
voxxeddays.com/luxembourg/ #voxxeddaysLU
References
• Core Java Security: Class Loaders, Security Managers and
Encryption
http://www.informit.com/articles/article.aspx?p=1187967
• Overview of Java Security Models
http://docs.oracle.com/cd/E12839_01/core.1111/e10043/introjps.htm#
CHDCEJGH
Ad

More Related Content

What's hot (20)

Java Threads
Java ThreadsJava Threads
Java Threads
M Vishnuvardhan Reddy
 
Swift Tutorial Part 1. The Complete Guide For Swift Programming Language
Swift Tutorial Part 1. The Complete Guide For Swift Programming LanguageSwift Tutorial Part 1. The Complete Guide For Swift Programming Language
Swift Tutorial Part 1. The Complete Guide For Swift Programming Language
Hossam Ghareeb
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
Serhat Can
 
Java constructors
Java constructorsJava constructors
Java constructors
QUONTRASOLUTIONS
 
Java Programming
Java ProgrammingJava Programming
Java Programming
Anjan Mahanta
 
Basic of Java
Basic of JavaBasic of Java
Basic of Java
Ajeet Kumar Verma
 
Threads in JAVA
Threads in JAVAThreads in JAVA
Threads in JAVA
Haldia Institute of Technology
 
Training on Core java | PPT Presentation | Shravan Sanidhya
Training on Core java | PPT Presentation | Shravan SanidhyaTraining on Core java | PPT Presentation | Shravan Sanidhya
Training on Core java | PPT Presentation | Shravan Sanidhya
Shravan Sanidhya
 
Java features
Java featuresJava features
Java features
Prashant Gajendra
 
Java
JavaJava
Java
Tony Nguyen
 
Apache Presentation
Apache PresentationApache Presentation
Apache Presentation
Manish Bothra
 
Java tutorial PPT
Java tutorial PPTJava tutorial PPT
Java tutorial PPT
Intelligo Technologies
 
Learn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat ShahriyarLearn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat Shahriyar
Abir Mohammad
 
Programming paradigm
Programming paradigmProgramming paradigm
Programming paradigm
busyking03
 
History of java'
History of java'History of java'
History of java'
deepthisujithra
 
Java oops PPT
Java oops PPTJava oops PPT
Java oops PPT
kishu0005
 
Oop java
Oop javaOop java
Oop java
Minal Maniar
 
Polymorphism presentation in java
Polymorphism presentation in javaPolymorphism presentation in java
Polymorphism presentation in java
Ahsan Raja
 
Java multi threading
Java multi threadingJava multi threading
Java multi threading
Raja Sekhar
 
Introduction to java
Introduction to javaIntroduction to java
Introduction to java
Ajay Sharma
 

Viewers also liked (20)

Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
Martin Toshev
 
Java security
Java securityJava security
Java security
Ankush Kumar
 
java2days 2014: Attacking JavaEE Application Servers
java2days 2014: Attacking JavaEE Application Serversjava2days 2014: Attacking JavaEE Application Servers
java2days 2014: Attacking JavaEE Application Servers
Martin Toshev
 
JBoss Negotiation in AS7
JBoss Negotiation in AS7JBoss Negotiation in AS7
JBoss Negotiation in AS7
Josef Cacek
 
Jar signing
Jar signingJar signing
Jar signing
LearningTech
 
Chapter 01 Introduction to Java by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B KuteChapter 01 Introduction to Java by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B Kute
Tushar B Kute
 
Java Secure Coding Practices
Java Secure Coding PracticesJava Secure Coding Practices
Java Secure Coding Practices
OWASPKerala
 
Security Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java PlatformSecurity Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java Platform
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 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
Martin Toshev
 
Java Security Manager Reloaded - jOpenSpace Lightning Talk
Java Security Manager Reloaded - jOpenSpace Lightning TalkJava Security Manager Reloaded - jOpenSpace Lightning Talk
Java Security Manager Reloaded - jOpenSpace Lightning Talk
Josef Cacek
 
Writing Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMSWriting Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMS
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 12c
Martin Toshev
 
Modular Java
Modular JavaModular Java
Modular Java
Martin Toshev
 
RxJS vs RxJava: Intro
RxJS vs RxJava: IntroRxJS vs RxJava: Intro
RxJS vs RxJava: Intro
Martin Toshev
 
Spring RabbitMQ
Spring RabbitMQSpring RabbitMQ
Spring RabbitMQ
Martin 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 development
Martin Toshev
 
JVM++: The Graal VM
JVM++: The Graal VMJVM++: The Graal VM
JVM++: The Graal VM
Martin Toshev
 
OWASP Secure Coding
OWASP Secure CodingOWASP Secure Coding
OWASP Secure Coding
bilcorry
 
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
Security Architecture of the Java Platform (http://www.javaday.bg event - 14....
Martin Toshev
 
java2days 2014: Attacking JavaEE Application Servers
java2days 2014: Attacking JavaEE Application Serversjava2days 2014: Attacking JavaEE Application Servers
java2days 2014: Attacking JavaEE Application Servers
Martin Toshev
 
JBoss Negotiation in AS7
JBoss Negotiation in AS7JBoss Negotiation in AS7
JBoss Negotiation in AS7
Josef Cacek
 
Chapter 01 Introduction to Java by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B KuteChapter 01 Introduction to Java by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B Kute
Tushar B Kute
 
Java Secure Coding Practices
Java Secure Coding PracticesJava Secure Coding Practices
Java Secure Coding Practices
OWASPKerala
 
Security Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java PlatformSecurity Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java Platform
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 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
Martin Toshev
 
Java Security Manager Reloaded - jOpenSpace Lightning Talk
Java Security Manager Reloaded - jOpenSpace Lightning TalkJava Security Manager Reloaded - jOpenSpace Lightning Talk
Java Security Manager Reloaded - jOpenSpace Lightning Talk
Josef Cacek
 
Writing Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMSWriting Stored Procedures in Oracle RDBMS
Writing Stored Procedures in Oracle RDBMS
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 12c
Martin Toshev
 
RxJS vs RxJava: Intro
RxJS vs RxJava: IntroRxJS vs RxJava: Intro
RxJS vs RxJava: Intro
Martin 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 development
Martin Toshev
 
OWASP Secure Coding
OWASP Secure CodingOWASP Secure Coding
OWASP Secure Coding
bilcorry
 
Ad

Similar to Security Architecture of the Java platform (20)

Javantura v4 - Security architecture of the Java platform - Martin Toshev
Javantura v4 - Security architecture of the Java platform - Martin ToshevJavantura v4 - Security architecture of the Java platform - Martin Toshev
Javantura v4 - Security architecture of the Java platform - Martin Toshev
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
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
 
Martin Toshev - Java Security Architecture - Codemotion Rome 2019
Martin Toshev - Java Security Architecture - Codemotion Rome 2019Martin Toshev - Java Security Architecture - Codemotion Rome 2019
Martin Toshev - Java Security Architecture - Codemotion Rome 2019
Codemotion
 
Java Platform Security Architecture
Java Platform Security ArchitectureJava Platform Security Architecture
Java Platform Security Architecture
Ramesh Nagappan
 
From java to android a security analysis
From java to android  a security analysisFrom java to android  a security analysis
From java to android a security analysis
Pragati Rai
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTP
Rafal Gancarz
 
VB2013 - Security Research and Development Framework
VB2013 - Security Research and Development FrameworkVB2013 - Security Research and Development Framework
VB2013 - Security Research and Development Framework
Amr Thabet
 
Top Ten Proactive Web Security Controls v5
Top Ten Proactive Web Security Controls v5Top Ten Proactive Web Security Controls v5
Top Ten Proactive Web Security Controls v5
Jim Manico
 
Developing Micro-Services for Cloud using Java
Developing Micro-Services for Cloud using JavaDeveloping Micro-Services for Cloud using Java
Developing Micro-Services for Cloud using Java
WSO2
 
Chapter three Java_security.ppt
Chapter three Java_security.pptChapter three Java_security.ppt
Chapter three Java_security.ppt
HaymanotTadese
 
Tollas Ferenc - Java security
Tollas Ferenc - Java securityTollas Ferenc - Java security
Tollas Ferenc - Java security
veszpremimeetup
 
CDI and Seam 3: an Exciting New Landscape for Java EE Development
CDI and Seam 3: an Exciting New Landscape for Java EE DevelopmentCDI and Seam 3: an Exciting New Landscape for Java EE Development
CDI and Seam 3: an Exciting New Landscape for Java EE Development
Saltmarch Media
 
Docker Runtime Security
Docker Runtime SecurityDocker Runtime Security
Docker Runtime Security
Sysdig
 
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Sysdig
 
Road to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoopsRoad to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoops
Gianluca Varisco
 
Web security: Securing Untrusted Web Content in Browsers
Web security: Securing Untrusted Web Content in BrowsersWeb security: Securing Untrusted Web Content in Browsers
Web security: Securing Untrusted Web Content in Browsers
Phú Phùng
 
Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)
Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)
Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)
Codemotion
 
Lecture-2.pptx sensor design and signal processing using RF and THz sensing, ...
Lecture-2.pptx sensor design and signal processing using RF and THz sensing, ...Lecture-2.pptx sensor design and signal processing using RF and THz sensing, ...
Lecture-2.pptx sensor design and signal processing using RF and THz sensing, ...
MuhammadUsmanYaseen2
 
Building Secure OSGi Applications
Building Secure OSGi ApplicationsBuilding Secure OSGi Applications
Building Secure OSGi Applications
Marcel Offermans
 
Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...
Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...
Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...
Christian Schneider
 
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
 
Martin Toshev - Java Security Architecture - Codemotion Rome 2019
Martin Toshev - Java Security Architecture - Codemotion Rome 2019Martin Toshev - Java Security Architecture - Codemotion Rome 2019
Martin Toshev - Java Security Architecture - Codemotion Rome 2019
Codemotion
 
Java Platform Security Architecture
Java Platform Security ArchitectureJava Platform Security Architecture
Java Platform Security Architecture
Ramesh Nagappan
 
From java to android a security analysis
From java to android  a security analysisFrom java to android  a security analysis
From java to android a security analysis
Pragati Rai
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTP
Rafal Gancarz
 
VB2013 - Security Research and Development Framework
VB2013 - Security Research and Development FrameworkVB2013 - Security Research and Development Framework
VB2013 - Security Research and Development Framework
Amr Thabet
 
Top Ten Proactive Web Security Controls v5
Top Ten Proactive Web Security Controls v5Top Ten Proactive Web Security Controls v5
Top Ten Proactive Web Security Controls v5
Jim Manico
 
Developing Micro-Services for Cloud using Java
Developing Micro-Services for Cloud using JavaDeveloping Micro-Services for Cloud using Java
Developing Micro-Services for Cloud using Java
WSO2
 
Chapter three Java_security.ppt
Chapter three Java_security.pptChapter three Java_security.ppt
Chapter three Java_security.ppt
HaymanotTadese
 
Tollas Ferenc - Java security
Tollas Ferenc - Java securityTollas Ferenc - Java security
Tollas Ferenc - Java security
veszpremimeetup
 
CDI and Seam 3: an Exciting New Landscape for Java EE Development
CDI and Seam 3: an Exciting New Landscape for Java EE DevelopmentCDI and Seam 3: an Exciting New Landscape for Java EE Development
CDI and Seam 3: an Exciting New Landscape for Java EE Development
Saltmarch Media
 
Docker Runtime Security
Docker Runtime SecurityDocker Runtime Security
Docker Runtime Security
Sysdig
 
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Lions, Tigers and Deers: What building zoos can teach us about securing micro...
Sysdig
 
Road to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoopsRoad to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoops
Gianluca Varisco
 
Web security: Securing Untrusted Web Content in Browsers
Web security: Securing Untrusted Web Content in BrowsersWeb security: Securing Untrusted Web Content in Browsers
Web security: Securing Untrusted Web Content in Browsers
Phú Phùng
 
Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)
Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)
Gianluca Varisco - DevOoops (Increase awareness around DevOps infra security)
Codemotion
 
Lecture-2.pptx sensor design and signal processing using RF and THz sensing, ...
Lecture-2.pptx sensor design and signal processing using RF and THz sensing, ...Lecture-2.pptx sensor design and signal processing using RF and THz sensing, ...
Lecture-2.pptx sensor design and signal processing using RF and THz sensing, ...
MuhammadUsmanYaseen2
 
Building Secure OSGi Applications
Building Secure OSGi ApplicationsBuilding Secure OSGi Applications
Building Secure OSGi Applications
Marcel Offermans
 
Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...
Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...
Security DevOps - Staying secure in agile projects // OWASP AppSecEU 2015 - A...
Christian Schneider
 
Ad

More from Martin Toshev (13)

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
Martin 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 Database
Martin Toshev
 
Jdk 10 sneak peek
Jdk 10 sneak peekJdk 10 sneak peek
Jdk 10 sneak peek
Martin Toshev
 
Semantic Technology In Oracle Database 12c
Semantic Technology In Oracle Database 12cSemantic Technology In Oracle Database 12c
Semantic Technology In Oracle Database 12c
Martin Toshev
 
Practical security In a modular world
Practical security In a modular worldPractical security In a modular world
Practical security In a modular world
Martin Toshev
 
Java 9 Security Enhancements in Practice
Java 9 Security Enhancements in PracticeJava 9 Security Enhancements in Practice
Java 9 Security Enhancements in Practice
Martin Toshev
 
Java 9 sneak peek
Java 9 sneak peekJava 9 sneak peek
Java 9 sneak peek
Martin Toshev
 
Spring RabbitMQ
Spring RabbitMQSpring RabbitMQ
Spring RabbitMQ
Martin Toshev
 
Oracle Database 12c Attack Vectors
Oracle Database 12c Attack VectorsOracle Database 12c Attack Vectors
Oracle Database 12c Attack Vectors
Martin Toshev
 
Concurrency Utilities in Java 8
Concurrency Utilities in Java 8Concurrency Utilities in Java 8
Concurrency Utilities in Java 8
Martin Toshev
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message Broker
Martin Toshev
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Martin Toshev
 
New Features in JDK 8
New Features in JDK 8New Features in JDK 8
New Features in JDK 8
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 Spark
Martin 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 Database
Martin Toshev
 
Semantic Technology In Oracle Database 12c
Semantic Technology In Oracle Database 12cSemantic Technology In Oracle Database 12c
Semantic Technology In Oracle Database 12c
Martin Toshev
 
Practical security In a modular world
Practical security In a modular worldPractical security In a modular world
Practical security In a modular world
Martin Toshev
 
Java 9 Security Enhancements in Practice
Java 9 Security Enhancements in PracticeJava 9 Security Enhancements in Practice
Java 9 Security Enhancements in Practice
Martin Toshev
 
Oracle Database 12c Attack Vectors
Oracle Database 12c Attack VectorsOracle Database 12c Attack Vectors
Oracle Database 12c Attack Vectors
Martin Toshev
 
Concurrency Utilities in Java 8
Concurrency Utilities in Java 8Concurrency Utilities in Java 8
Concurrency Utilities in Java 8
Martin Toshev
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message Broker
Martin Toshev
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Martin Toshev
 
New Features in JDK 8
New Features in JDK 8New Features in JDK 8
New Features in JDK 8
Martin Toshev
 

Recently uploaded (20)

Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Orangescrum
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025Why Orangescrum Is a Game Changer for Construction Companies in 2025
Why Orangescrum Is a Game Changer for Construction Companies in 2025
Orangescrum
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 

Security Architecture of the Java platform

  • 1. voxxeddays.com/luxembourg/ #voxxeddaysLU Security architecture of the Java platform Martin Toshev @martin_fmi
  • 2. voxxeddays.com/luxembourg/ #voxxeddaysLU Who am I Software consultant (CoffeeCupConsulting) BG JUG board member (http://jug.bg) OpenJDK and Oracle RBDMS enthusiast
  • 5. voxxeddays.com/luxembourg/ #voxxeddaysLU Agenda • Evolution of the Java security model • Outside the sandbox: APIs for secure coding • Designing and coding with security in mind
  • 7. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Traditionally - companies protect they assets using strict physical and network access policies • Tools such as anti-virus software, firewalls, IPS/IDS systems facilitate this approach
  • 8. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • With the introduction of various technologies for loading and executing code on the client machine from the browser (such as Applets) - a new range of concerns emerge related to client security – this is when the Java security sandbox starts to evolve …
  • 9. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • The goal of the Java security sandbox is to allow untrusted code from applets to be executed in a trusted environment such as the user's browser
  • 10. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • JDK 1.0 (when it all started …) – the original sandbox model was introduced Applet (untrusted) System code (trusted) JVM Browser http://voxxed.com/demoapplet
  • 11. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Code executed by the JVM is divided in two domains – trusted and untrusted • Strict restriction are applied by default on the security model of applets such as denial to read/write data from disk, connect to the network and so on
  • 12. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • JDK 1.1 (gaining trust …) – applet signing introduced Applet (untrusted) System code (trusted) JVM Browser Signed Applet (trusted) http://voxxed.com/demoapplet http://voxxed.com/trustedapplet
  • 13. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Local code (as in JDK 1.0) and signed applet code (as of JDK 1.1) are trusted • Unsigned remote code (as in JDK 1.0) is not trusted
  • 14. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Steps needed to sign and run an applet: • Compile the applet • Create a JAR file for the applet • Generate a pair of public/private keys • Sign the applet JAR with the private key • Export a certificate for the public key • Import the Certificate as a Trusted Certificate • Create the policy file • Load and run the applet
  • 15. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • JDK 1.2 (gaining more trust …) – fine-grained access control Applet System code JVM Browser grant codeBase http://voxxed.com/demoapplet { permission java.io.FilePermisions “C:Windows” “delete” } security.policy SecurityManager.checkPermission(…) AccessController.checkPermission(…) http://voxxed.com/demoapplet
  • 16. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • The security model becomes code-centric • Additional access control decisions are specified in a security policy • No more notion of trusted and untrusted code
  • 17. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • The notion of protection domain introduced – determined by the security policy • Two types of protection domains – system and application
  • 18. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • The protection domain is set during classloading and contains the code source and the list of permissions for the class applet.getClass().getProtectionDomain();
  • 19. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • One permission can imply another permission java.io.FilePermissions “C:Windows” “delete” implies java.io.FilePermissions “C:Windowssystem32” “delete”
  • 20. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • One code source can imply another code source codeBase http://voxxed.com/ implies codeBase http://voxxed.com/demoapplet
  • 21. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Since an execution thread may pass through classes loaded by different classloaders (and hence – have different protection domains) the following rule of thumb applies: The permission set of an execution thread is considered to be the intersection of the permissions of all protection domains traversed by the execution thread
  • 22. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • JDK 1.3, 1,4 (what about entities running the code … ?) – JAAS Applet System code JVM Browser http://voxxed.com/demoapplet grant principal javax.security.auth.x500.X500Principal "cn=Tom" { permission java.io.FilePermissions “C:Windows” “delete” } security.policy
  • 23. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • JAAS (Java Authentication and Authorization Service) extends the security model with role-based permissions • The protection domain of a class now may contain not only the code source and the permissions but a list of principals
  • 24. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • The authentication component of JAAS is independent of the security sandbox in Java and hence is typically used in more wider context (such as j2ee app servers) • The authorization component is the one that extends the Java security policy
  • 25. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Core classes of JAAS: • javax.security.auth.Subject - an authenticated subject • java.security.Principal - identifying characteristic of a subject • javax.security.auth.spi.LoginModule - interface for implementors of login (PAM) modules • javax.security.auth.login.LoginContext - creates objects used for authentication
  • 26. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Up to JDK 1.4 the following is a typical flow for permission checking: 1) upon system startup a security policy is set and a security manager is installed Policy.setPolicy(…) System.setSecurityManager(…)
  • 27. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Up to JDK 1.4 the following is a typical flow for permission checking: 2) during classloading (e.g. of a remote applet) bytecode verification is done and the protection domain is set for the current classloader (along with the code source, the set of permissions and the set of JAAS principals)
  • 28. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Up to JDK 1.4 the following is a typical flow for permission checking: 3) when system code is invoked from the remote code the SecurityManager is used to check against the intersection of protection domains based on the chain of threads and their call stacks
  • 29. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Up to JDK 1.4 the following is a typical flow for permission checking: SocketPermission permission = new SocketPermission(“voxxed.com:8000-9000","connect,accept"); SecurityManager sm = System.getSecurityManager(); if (sm != null) sm.checkPermission(permission);
  • 30. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Up to JDK 1.4 the following is a typical flow for permission checking: 4) application code can also do permission checking against remote code using a SecurityManager or an AccessController
  • 31. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Up to JDK 1.4 the following is a typical flow for permission checking: SocketPermission permission = new SocketPermission(“voxxed.com:8000-9000", "connect,accept"); AccessController.checkPermission(permission)
  • 32. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Up to JDK 1.4 the following is a typical flow for permission checking: 5) application code can also do permission checking with all permissions of the calling domain or a particular JAAS subject AccessController.doPrivileged(…) Subject.doAs(…) Subject.doAsPrivileged(…)
  • 33. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • The security model defined by java.lang.SecurityManager is customizable • For example: Oracle JVM uses a custom SecurityManager with additional permission classes where the code source is a database schema (containing e.g. Java stored procedures)
  • 34. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • JDK 1.5, 1.6 (enhancing the model …) – new additions to the sandbox model (e.g. LDAP support for JAAS)
  • 35. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • JDK 1.7, 1.8 (further enhancing the model …) – enhancements to the sandbox model (e.g. AccessController.doPrivileged() for checking against a subset of permissions)
  • 36. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • JDK 1.9 and beyond … (applying the model to modules …) application module system module 1 JVM Browser http://voxxed.com/appmodule security.policy system module 2
  • 37. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • By modules we understand modules in JDK as defined by project Jigsaw • Modules must conform to the same security model as applets – each module is loaded by a particular classloader (bootstrap, extension or system)
  • 38. voxxeddays.com/luxembourg/ #voxxeddaysLU Evolution of the Java security model • Modularization of the JDK system classes allows further to define fine- grained access control permissions for classes in the system domain • This is not currently allowed due to the monolithic nature of the JDK
  • 39. voxxeddays.com/luxembourg/ #voxxeddaysLU Outside the sandbox: APIs for secure coding
  • 40. voxxeddays.com/luxembourg/ #voxxeddaysLU Outside the sandbox: APIs for secure coding • The security sandbox defines a strict model for execution of remote code in the JVM • The other side of the coin are the security APIs that provide utilities for implementing the different aspects of application security …
  • 41. voxxeddays.com/luxembourg/ #voxxeddaysLU Outside the sandbox: APIs for secure coding • The additional set of APIs includes: • JCA (Java Cryptography Architecture) • PKI (Public Key Infrastructure) utilities • JSSE (Java Secure Socket Extension) • Java GSS API (Java Generic Security Services) • Java SASL API (Java Simple Authentication and Security Layer)
  • 42. voxxeddays.com/luxembourg/ #voxxeddaysLU Outside the sandbox: APIs for secure coding • JCA provides utilities for: • creating digital signatures • creating message digests • using cryptographic ciphers (symetric/asymetric, block/stream) • using different other types of cryptographic services and algorithms
  • 43. voxxeddays.com/luxembourg/ #voxxeddaysLU Outside the sandbox: APIs for secure coding • JCA has a pluggable architecture • JCA is independent from particular cryptographic algorithms • JCA continues to evolve (especially by providing stronger cryptographic algorithms)
  • 44. voxxeddays.com/luxembourg/ #voxxeddaysLU Outside the sandbox: APIs for secure coding • PKI utilities provide means for working with: • certificates • certificate revocation lists (CRL) • OCSP (Online Certificate Status Protocol) • key stores and trust stores (also based on the PKCS - public-key cryptography standards)
  • 45. voxxeddays.com/luxembourg/ #voxxeddaysLU Outside the sandbox: APIs for secure coding • PKI certificate revocation check (revision): • PKI utilities continue to evolve (especially in providing more support for managing certificates and keys) certificate authority revocation checking OCSP CRL certificate certificate
  • 46. voxxeddays.com/luxembourg/ #voxxeddaysLU Outside the sandbox: APIs for secure coding • JSSE provides an implementation of the TSL/SSL sockets for working with remote communication • JSSE continues to evolve (especially in the support for additional features such as Server Name Identication)
  • 47. voxxeddays.com/luxembourg/ #voxxeddaysLU Outside the sandbox: APIs for secure coding • Java GSS API provides an alternative of JSSE for secure communication • Java GSS API is a framework for providing token-based security services that is independent of the underlying protocols
  • 48. voxxeddays.com/luxembourg/ #voxxeddaysLU Outside the sandbox: APIs for secure coding • Java GSS API can be used along with JAAS for authentication purposes • Java GSS API continues to evolve (especially in the support for Kerberos authentication)
  • 49. voxxeddays.com/luxembourg/ #voxxeddaysLU Outside the sandbox: APIs for secure coding • Java SASL defines a protocol for exchange of authentication data • Java SASL is a framework where external providers give concrete semantics to the authentication data being exchanged
  • 50. voxxeddays.com/luxembourg/ #voxxeddaysLU Outside the sandbox: APIs for secure coding • Java SASL continues to evolve (especially with support for additional and enhanced properties for exchanging authentication data)
  • 52. voxxeddays.com/luxembourg/ #voxxeddaysLU Designing and coding with security in mind • First of all - follow programing guidelines and best practices - most are not bound to the Java programming language (input validation, error handling, type safety, access modifiers, resource cleanup, prepared SQL queries and whatever you can think of …)
  • 53. voxxeddays.com/luxembourg/ #voxxeddaysLU Designing and coding with security in mind • Respect the SecurityManager - design libraries so that they work in environments with installed SecurityManager • Example: GSON library does not respect the SecurityManager and cannot be used without additional reflective permissions in some scenarios
  • 54. voxxeddays.com/luxembourg/ #voxxeddaysLU Designing and coding with security in mind • Grant minimal permissions to code that requires them - the principle of "least privilege" • Copy-pasting, of course, increases the risk of security flows (if the copied code is flawed)
  • 55. voxxeddays.com/luxembourg/ #voxxeddaysLU Designing and coding with security in mind • Sanitize exception messages from sensitive information - often this results in an unintended exposal of exploitable information • Let alone exception stacktraces … in many cases they convey a wealth of information about the system
  • 57. voxxeddays.com/luxembourg/ #voxxeddaysLU References • Java Security Overview (white paper) http://www.oracle.com/technetwork/java/js-white-paper-149932.pdf • Java SE Platform Security Architecture Spec http://docs.oracle.com/javase/7/docs/technotes/guides/security/spec/s ecurity-spec.doc.html • Inside Java 2 Platform Security, 2nd edition http://www.amazon.com/Inside-Java%C2%BF-Platform-Security- Implementation/dp/0201787911
  • 58. voxxeddays.com/luxembourg/ #voxxeddaysLU References • Java Security, 2nd edition, Scott Oaks http://shop.oreilly.com/product/9780596001575.do • Securing Java, Gary McGraw, Ed Felden http://www.securingjava.com • Secure Coding Guidelines for Java SE http://www.oracle.com/technetwork/java/seccodeguide-139067.html#0
  • 59. voxxeddays.com/luxembourg/ #voxxeddaysLU References • Java 2 Network Security http://www.amazon.com/JAVA-Network-Security-2nd- Edition/dp/0130155926 • Java Security Documentation http://docs.oracle.com/javase/8/docs/technotes/guides/security/index. html
  • 60. voxxeddays.com/luxembourg/ #voxxeddaysLU References • Core Java Security: Class Loaders, Security Managers and Encryption http://www.informit.com/articles/article.aspx?p=1187967 • Overview of Java Security Models http://docs.oracle.com/cd/E12839_01/core.1111/e10043/introjps.htm# CHDCEJGH

Editor's Notes

  • #18: The code source on the other hand contains the URL location, the list of signers and the list of certificates
  • #19: The code source on the other hand contains the URL location, the list of signers and the list of certificates
  • #20: The code source on the other hand contains the URL location, the list of signers and the list of certificates
  • #21: The code source on the other hand contains the URL location, the list of signers and the list of certificates
  • #22: The code source on the other hand contains the URL location, the list of signers and the list of certificates
  • #23: A typical scenario – in a single multiuser operating system we may have multiple users accessing the same applet from the browser – we may want to define permissions based on the currently logged-in user by providing integration with e.g. Kerberos (in case of a Windows OS)
  • #29: An AccessControlContext keeps the list of protection domains for the current thread
  • #30: An AccessControlContext keeps the list of protection domains for the current thread
  • #31: There are two main differences in using a SecurityManager and an AccessController: The SecurityManager needs to be installed while AccessController only provides static methods The SecurityManager can be customized while AccessController provides additional algorithms that can be used over the default security model
  • #32: There are two main differences in using a SecurityManager and an AccessController: The SecurityManager needs to be installed while AccessController only provides static methods The SecurityManager can be customized while AccessController provides additional algorithms that can be used over the default security model
  • #33: Calling code with a different JAAS subject is similar to the Unix setuid utility