Java and Security Cryptography, Symmetric Key, Public Key, Authentication, Digital Signatures, Message Digests.

Slides:



Advertisements
Similar presentations
Mobile Code Security Yurii Kuzmin. What is Mobile Code? Term used to describe general-purpose executables that run in remote locations. Web browsers come.
Advertisements

Public Key Infrastructure A Quick Look Inside PKI Technology Investigation Center 3/27/2002.
Copyright © 2005 David M. Wheeler, All Rights Reserved Desert Code Camp: Introduction to Cryptography David M. Wheeler May 6 th 2006 Phoenix, Arizona.
George Blank University Lecturer. Java Security Overview of Java Security features Java Technology uses three mechanisms to ensure safety. Language design.
An Introduction to Secure Sockets Layer (SSL). Overview Types of encryption SSL History Design Goals Protocol Problems Competing Technologies.
Java security (in a nutshell)
Applet Security Gunjan Vohra. What is Applet Security? One of the most important features of Java is its security model. It allows untrusted code, such.
COEN 351: E-Commerce Security
Java Security CS-328. JDK 1.0 Security Model Sandbox Java Virtual Machine Local Code Remote Code Local Host System Resources (File System, Sockets, Printers…)
Dan Sedlacek CTO, Systems Management Group Sterling Software Java Security and Encryption.
Java Security. Overview Hermetically Sealed vs. Networked Executable Content (Web Pages & ) Java Security on the Browser Java Security in the Enterprise.
Mobile Code Security Aviel D. Rubin, Daniel E. Geer, Jr. MOBILE CODE SECURITY, IEEE Internet Computing, 1998 Minkyu Lee
Web Security CS-431. HTTP Authentication Protect web content from those who don’t have a “need to know” Require users to authenticate using a userid/password.
Security CS-328. The need for security In most of the programming classes that we’ve taken the emphasis has always been on getting the “job” done and.
DESIGNING A PUBLIC KEY INFRASTRUCTURE
Java Security Model Lab#1 I. Omaima Al-Matrafi. Safety features built into the JVM Type-safe reference casting Structured memory access (no pointer arithmetic)
LAB#2 JAVA SECURITY OVERVIEW Prepared by: I.Raniah Alghamdi.
1 Extensible Security Architectures for Java Authors: Dan S.Wallch, Dirk Balfanz Presented by Moonjoo Kim.
1 Chapter 3 Programs and Packages. 2 Java Virtual Machine (JVM) Java programs execute on the JVM. The JVM is a virtual rather than a physical machine,
Lesson 18: Configuring Application Restriction Policies
APACHE SERVER By Innovationframes.com »
1 Homework Study Java Cryptography by Reading the rest of slides and accessing Sun ’ s Java website:
Page 1 Sandboxing & Signed Software Paul Krzyzanowski Distributed Systems Except as otherwise noted, the content of this presentation.
Cheng-Chia Chen September 1999
Java Security Updated May Topics Intro to the Java Sandbox Language Level Security Run Time Security Evolution of Security Sandbox Models The Security.
Secure Systems Research Group - FAU Patterns for Digital Signature using hashing Presented by Keiko Hashizume.
JSSE API University of Palestine Eng. Wisam Zaqoot April 2010.
CSCI 6962: Server-side Design and Programming
X.509 Certificate management in.Net By, Vishnu Kamisetty
Csci5233 Computer Security1 GS: Chapter 6 Using Java Cryptography for Authentication.
MT311 Java Application Development and Programming Languages Li Tak Sing ( 李德成 )
Java Security. Topics Intro to the Java Sandbox Language Level Security Run Time Security Evolution of Security Sandbox Models The Security Manager.
Security in Java Sunesh Kumra S
Java Security Shmuel Babad CEO MidLink Computing LTD
1 22 August 2001 The Security Architecture of the M&M Mobile Agent Framework P. Marques, N. Santos, L. Silva, J. Silva CISUC, University of Coimbra, Portugal.
Java Security Pingping Ma Nov 2 nd, Overview Platform Security Cryptography Authentication and Access Control Public Key Infrastructure (PKI)
Chapter 9: Using and Managing Keys Security+ Guide to Network Security Fundamentals Second Edition.
Java Security Nathan Moore CS 665. Overview Survey of Java Inherent Security Properties Java Runtime Environment Java Virtual Machine Java Security Model.
Java 2 security model Valentina Casola. Components of Java the development environment –development lifecycle –Java language features –class files and.
JAVA SECURITY BASIC NETWORKING MULTITHREATING Deniz HASTORUN
Section 11: Implementing Software Restriction Policies and AppLocker What Is a Software Restriction Policy? Creating a Software Restriction Policy Using.
Middleware for Secure Environments Presented by Kemal Altıntaş Hümeyra Topcu-Altıntaş Osman Şen.
Troubleshooting Security Issues Lesson 6. Skills Matrix Technology SkillObjective Domain SkillDomain # Monitoring and Troubleshooting with Event Viewer.
Copyright  2002 Urbancode Software Development, Inc. All Rights Reserved. Developing with JAAS Presented by Maciej Zawadzki
Csci5931 Web Security1 Java Security Model (GS: Ch. 7)
1 Session 3 Module 4: Java Security Module 5: Cryptography.
Jaas Introduction. Outline l General overview of Java security Java 2 security model How is security maintained by Java and JVM? How can a programmer.
Class Builder Tutorial Presented By- Amit Singh & Sylendra Prasad.
Java Security Session 19. Java Security / 2 of 23 Objectives Discuss Java cryptography Explain the Java Security Model Discuss each of the components.
1 Session 4 Module 6: Digital signatures. Digital Signatures / Session4 / 2 of 18 Module 4, 5 - Review (1)  Java 2 security model provides a consistent.
MT311 Java Application Development and Programming Languages Li Tak Sing ( 李德成 )
Chapter 11: Advanced Inheritance Concepts. Objectives Create and use abstract classes Use dynamic method binding Create arrays of subclass objects Use.
TCS Internal Security. 2 TCS Internal Objective Objective :  Android Platform Security Architecture.
4.1 © 2004 Pearson Education, Inc. Exam Managing and Maintaining a Microsoft® Windows® Server 2003 Environment Lesson 12: Implementing Security.
LAB#8 PKI & DIGITAL CERTIFICATE CPIT 425. Public Key Infrastructure PKI 2  Public key infrastructure is the term used to describe the laws, policies,
Java Cryptography Nick Pullman DSU-MSIA Citigroup Information Security
Java & The Android Stack: A Security Analysis Pragati Ogal Rai Mobile Technology Evangelist PayPal, eBay Java.
Web Security CS-431.
Inheritance and Polymorphism
Chapter 5: The Art of Ensuring Integrity
Java security (in a nutshell)
Instructor Materials Chapter 5: The Art of Ensuring Integrity
Topic: Java Security Models
ELECTRONIC MAIL SECURITY
ELECTRONIC MAIL SECURITY
Instructor Materials Chapter 5: The Art of Ensuring Integrity
Instructor Materials Chapter 5: Ensuring Integrity
Presentation transcript:

Java and Security Cryptography, Symmetric Key, Public Key, Authentication, Digital Signatures, Message Digests

What is Security?  The Java platform is emphasized as dynamic, extensible security architecture, standards-based and interoperable environment  The Java security model is based on a customizable "sandbox"  Java software programs can run safely without potential risk to systems or users

Evolution of Java Security: JDK 1.0  Sandbox Model is the original security model provided by the Java platform  Provided virtually no flexibility on a very restricted environment Run untrusted code obtained from the open network.  Local code is trusted to have full access to vital system resources, such as the file system. BUT:  Downloaded remote code (an applet) is not trusted  Access only the limited resources provided inside the sandbox.  A Security Manager is responsible in this and subsequent platforms for determining which resource accesses are allowed.

JDK 1.0 Security Model

Evolution of Java Security: JDK 1.1  JDK 1.1 introduced the signed applet to overcome the problem  A signed applet is an applet packaged as a Java Archive (JAR) file signed with a private key.  The signed applet enjoys unlimited access, just like a local application, provided the corresponding public key is trusted in the executing environment.  Unsigned applets default back to the sandbox model  JDK 1.1's security model is less restrictive than the sandbox model  More consistent treatment of applets and applications are provided.  This model have one major disadvantage  Applets either received unlimited access or  Confined to the sandbox There is no option for selective access to resources.

The JDK 1.1 Security Model

Evolution of Java Security: JDK 2  The Java 2 Security model, provides for a consistent and flexible policy for applets and applications.  While applications still run unrestricted by default, they can be subjected to the same policy as applets.  The security policy defines  the set of permissions available for code from various signers or locations and  can be configured by a user or a system administrator.  The runtime system organizes code into individual domains  each of them run in a restricted environment if the user or the administrator so chooses.  Applications run unrestricted, as before, by default but can optionally be subject to a security policy

Java 2 Security Model

Overview Java 2 Security

Java 2 Security Concepts  Byte-code verifier (referred to as a mini-theorem prover) tries to prove that a given series of Java byte codes are legal  In short, the verifier confirms or denies that the class file is consistent with the specifications.  Java code can be imported from anywhere in the network, it is critical to screen the code to be sure that it was produced by a trustworthy compiler.  ClassLoader loads Java byte codes into the JVM  It is an important link in the security chain.  It works in conjunction with the SecurityManager and the access controller to enforce security rules  Information about the URL from which the code originated and the code's signers is initially available to the ClassLoader.  It is possible to implement a customized ClassLoader or a subclass from java.security.SecureClassLoader to provide security features beyond those offered by the standard Java 2 Security model.

Java 2 Security Concepts  CodeSource  Since Java code can be downloaded over a network, the code's origin and author are critical to maintaining a secure environment.  Consequently, the object java.security.CodeSource fully describes a piece of code.  The CodeSource encapsulates the code's origin, which is specified as an URL,  The set of digital certificates containing public keys corresponding to the set of private keys used to sign the code.  Permissions Permission classes represent access to various resources such as files, sockets, and so on.  For example, permission may be given to read and write files in the /tmp directory.  Permission classes are additive in that they represent approvals, but not denials.  It's possible to explicitly permit the reading of a particular file, but not to explicitly deny the reading of that file.  A number of permission classes are subclasses of the abstract java.security.Permission class, include FilePermission, AWTPermission, and even customized protections like SendMailPermission

Java 2 Security Concepts  Protection Domains: It is flexible to group classes into protection domains and associate permissions with those domains. .For instance, system classes can be effectively grouped under the system domain.  This relationship between the class and the permissions via the protection domain provides for flexible implementation mechanisms.  Policy: The numerous mappings of permissions to classes are collectively referred to as policy.  A policy file is used to configure the policy for a particular implementation.  SecurityManager is concrete, with a public constructor and appropriate checks in place to ensure that it can be invoked in an authorized manner.  SecurityManager consists of a number of check methods.  For example, checkRead (String file) can determine read access to a file.  The checkPermission (Permission perm, Object context) method can check to see if the requested access has the given permission based on the policy.

Java 2 Security Concepts  AccessController: The java.security.AccessController class is used for three purposes:  To decide whether access to a critical system resource should be allowed or denied, based on the security policy currently in effect  To mark code as privileged, thus affecting subsequent access determinations  To obtain a snapshot of the current calling context, so access-control decisions from a different context can be made with respect to the saved context The keystore is a password-protected database that holds private keys and certificates.  The password is selected at the time of creation.  Each database entry can be guarded by its own password for extra security.  Certificates accepted into the keystore are considered to be trusted.  Keystore information can be used and updated by the security tools provided with the SDK.

Java Cryptography Architecture (JCA)  A framework for accessing and developing cryptographic functionality for the Java platform.  In JDK 1.1, the JCA included APIs for digital signatures and message digests.  Design principles are: Implementation independence Algorithm independence Algorithm extensibility Implementation interoperability  The Java 2 SDK significantly extended the JCA.

Java Cryptography Architecture (JCA) cont’d  Implementation independence and algorithm independence are complementary  We can use cryptographic services, such as digital signatures and message digests,  We don’t worry about the implementation details or even the algorithms that form the basis for these concepts.  JCA provides standardized, algorithm-specific APIs in case of impossibility of any complete algorithm- independence.  JCA allows the developers to indicate a specific implementation in case of the undesirability of implementation-independence.

Algorithm Independence & Algorithm Extensibility  Algorithm Independence is achieved by defining  The types of cryptographic "engines" (services),  Defines classes that provide the functionality of these cryptographic engines.  These classes are called engine classes. For example:  MessageDigest The functionality of cryptographically secure message digests such as SHA-1 (Secure Hash Algorithm) or MD5 is provided.  Signature: The functionality of a cryptographic digital signature algorithm such as DSA (Digital Signature Algorithm) or RSA (most commonly used public-key algorithm developed in 1997 by MIT professors Ron Rivest, Adi Shamir and Leonard Adleman) with MD5 is provided.  KeyFactory: Designed to provide conversions between opaque cryptographic keys (of type Key) and key specifications (transparent representations of the underlying key material).  KeyPairGenerator Generate pairs of public and private keys  Algorithm extensibility means that new algorithms that fit in one of the supported engine classes can be added easily.

Engine Classes Added into Java 2 SDK  CertificateFactory : Create public key certificates and Certificate Revocation Lists (CRLs).  KeyStore: create and manage a keystore.  A keystore is a database of keys.  Private keys in a keystore have a certificate chain associated with them, Authenticates the corresponding public key.  A keystore also contains certificates from trusted entities.  AlgorithmParameters: Manage the parameters for a particular algorithm, including parameter encoding and decoding.  AlgorithmParameterGenerator: used to generate a set of parameters suitable for a specified algorithm.  SecureRandom: used to generate random or pseudo-random numbers.  ……………………………..  ………………………………

Implementation Independence  Achieved using a "provider"-based architecture.  Cryptographic Service Provider (or only provider) supplies a concrete implementation of a subset of the cryptography aspects of the Security API  Cryptographic Service Provider refers to a package or a set of packages  One or more cryptographic services in JDK1.1 are implemented such as digital signature algorithms, message digest algorithms, and key conversion services. Random Number Generation algorithms (RNGs) are not provider- based; a particular algorithm was hard-coded in the JDK.  Java 2 SDK adds five additional types of services: key factories, keystore creation and management, algorithm parameter management, algorithm parameter generation, and certificate factories. Enables a provider to supply a RNG algorithm.

Implementation Independence cont’d  A program may simply request a particular type of object (such as a Signature object)  Implementing a particular service (such as the DSA signature algorithm) Can get an implementation from one of the installed providers.  A program may instead request an implementation from a specific provider.  Providers may be updated transparently to the application,

The SUN Provider Package  An implementation of the Digital Signature Algorithm (DSA), described in NIST FIPS 186.  An implementation of the MD5 (RFC 1321) and SHA-1 (NIST FIPS 180-1) message digest algorithms.  A DSA key pair generator for generating a pair of public and private keys suitable for the DSA algorithm.  A DSA algorithm parameter generator.  A DSA algorithm parameter manager.  A DSA key factory providing bi-directional conversions between (opaque) DSA private and public key objects and their underlying key material.  An implementation of the proprietary "SHA1PRNG" pseudo- random number generation algorithm, following the recommendations in the IEEE P1363 standard  ………………………………………….  …………………………………………

Security Providers  The cryptographic engines in Java that provide for digital signatures, message digests are provided as a set of abstract classes in the Java security package  Concrete implementations of these classes are provided by Sun in the JDK  The security provider abstracts two ideas: engines and algorithms  An algorithm defines how a particular operation should be executed.  An algorithm can be thought of as an implementation of an engine,  But there may be several implementations of an algorithm.

Security Providers cont’d  The Java security package knows about message digests.  A message digest is an engine:  it is an operation a programmer can perform.  The idea behind a message digest is independent of how any particular message digest may be calculated.  All message digests share certain features, and the class that abstracts T hese common features into a single interface is termed an engine. Engines are generally abstract, and are always independent of any particular algorithm.  A message digest may be implemented by a particular algorithm, such as MD5 or SHA (Secure Hash Algorithm ).  An algorithm is generally provided as a concrete class that extends an abstract engine class, completing the definition of the class.  However, there may be many classes that provide a particular algorithm  Both classes should provide the same results, but their internal implementations may be vastly different.

The Provider Class public abstract class Provider extends Properties  This class forms the basis of the security provider architecture  There is normally a standard subclass that implements a default security feature set;  other classes can be installed to implement other security algorithms.  The default provider class that comes with the reference JDK is the class Sun in the sun.security.provider package.

Steps to Implement and Integrate a Provider I.Write the Service Implementation Code We write the code supplying algorithm-specific implementations of the cryptographic services we want to support. For each cryptographic service, we need to create a subclass of the appropriate SPI class: SignatureSpi, MessageDigestSpi, KeyPairGeneratorSpi, SecureRandomSpi, AlgorithmParameterGeneratorSpi, AlgorithmParametersSpi, KeyFactorySpi, CertificateFactorySpi, or KeyStoreSpi.

Steps to Implement and Integrate a Provider cont’d II.Give the Provider a Name Decide on a name for the provider. This is the name to be used by client applications to refer to our provider. III: Write the "Master Class", a subclass of Provider  Create a subclass of the Provider class.  Our subclass should be a final class, and its constructor should call super,  s pecifying the provider name, version number, a string of information about the provider and algorithms it supports. super ("ACME", 1.0, "ACME provider v1.0, implementing " + "RSA signing and key generation, SHA-1 and MD5 message digests.");  Set the values of various properties that are required for the Java 2 Security API to look up the cryptographic services implemented by the provider. For example: Signature.algName, MessageDigest.algName, KeyPairGenerator.algName, SecureRandom.algName, KeyFactory.algName, CertificateFactory.certType KeyStore.storeType ……………………..

Steps to Implement and Integrate a Provider cont’d  As an example, the default provider named "SUN" implements the Digital Signature Algorithm (standard name is "SHA1withDSA") in a class named DSA in the sun.security.provider package  Its subclass of Provider (which is the Sun class in the sun.security.provider package) sets the Signature.SHA1withDSA property to have the value "sun.security.provider.DSA" as follows: put("Signature.SHA1withDSA","sun.security.provider. DSA")

Steps to Implement and Integrate a Provider cont’d  As an another example, the default provider named "SUN" implements the SHA1withDSA Digital Signature Algorithm in software.  In the master class for the provider "SUN", it sets the "Signature.SHA1withDSA ImplementedIn" to have the value "Software" via the following: put("Signature.SHA1withDSA ImplementedIn", "Software")

Steps to Implement and Integrate a Provider cont’d IV.Compile the Code  After we have created our implementation code (Step 1), given our provider a name (Step 2), and created the master class (Step 3), we use the compiler to compile the files. V.Prepare for Testing: Install the Provider  We ship our provider classes as a JAR (Java ARchive) or ZIP file.  Place a zip or JAR file containing the classes anywhere on your CLASSPATH.  The next step is to add the provider to our list of approved providers.  This is done statically by editing the security properties file \lib\security \java.security

Steps to Implement and Integrate a Provider cont’d  For the provider, this file should have a statement of the following form: security.provider.n= masterClassName  This declares a provider, and specifies its preference order n.  The preference order is the order in which providers are searched for requested algorithms when no specific provider is requested.  The order is 1-based; 1 is the most preferred, followed by 2, and so on. masterClassName must specify the fully qualified name of the provider's "master class", which we implemented in Step 3. This class is always a subclass of the Provider class.

Steps to Implement and Integrate a Provider cont’d  Whenever the Java 2 SDK is installed, it contains some built-in (default) providers, including the provider referred to as "SUN".  The java.security file includes the following provider specification for the "SUN" provider: security.provider.1=sun.security.provider.Sun  The "SUN" provider's master class is the Sun class in the sun.security.provider package.

Steps to Implement and Integrate a Provider cont’d  Suppose that our master class is the Acme class in the COM.acme.provider package, a  We would like to make our provider the second preferred provider.  To do so, add the following line to the java.security file below the line for the "SUN" provider, and increment the preference order numbers for all other providers whose numbers were greater than or equal to 2 before your addition: security.provider.2=COM.acme.provider. Acme  Providers may also be registered dynamically.  To do so, a program (such as your test program, to be written in Step 7 can call either the addProvider or insertProviderAt method in the Security class.  This type of registration is not persistent and can only be done by "trusted" programs.

Steps to Implement and Integrate a Provider cont’d VI: Write and Compile our Test Programs  The first tests are ones to ensure that our provider is found, and that its name, version number, and additional information is as expected.  To do so, you could write code like the following, substituting your provider name for "MyPro": import java.security.*; Provider p = ssecurity. getProvider ("MyPro"); System.out.println("MyPro provider name is " + p.getName()); System.out.println ("MyPro provider version # is " + p.getVersion()); System.out.println ("MyPro provider info is " + p.getInfo());

Steps to Implement and Integrate a Provider cont’d Next, we should ensure that our services are found. For instance, if we implemented a SHA-1 message digest algorithm, we could check to ensure it's found when requested by using the following code (again substituting your provider name for "MyPro"): MessageDigest sha = MessageDigest. getInstance ("SHA", "MyPro"); System.out.println ("My MessageDigest algorithm name is” +sha.getAlgorithm());

Steps to Implement and Integrate a Provider cont’d VII.Run our Test Programs Debug the code and continue testing as needed. If the Java 2 Security API cannot seem to find one of your algorithms, review the steps above and ensure they are all completed. VIII: Document your Provider and its Supported Services  The next-to-last step is to write documentation for our clients.  At the minimum, we need to specify  the name programs should use to the name programs should use to refer to our provider.  the types of algorithms and other services implemented by our provider.  instructions for installing the provider, similar to those provided in Step 5, except that the information and examples should be specific to your provider.

Steps to Implement and Integrate a Provider cont’d IX:Make the Class Files and Documentation Available to Clients  The final step is to make our class files and documentation available to clients in whatever form  (.class files, zip files, JAR files,...) and methods (web download, floppy, mail,...)

How Provider Implementations are Requested and Supplied  For each engine class in the API, a particular implementation is requested and instantiated by calling a getInstance method on the engine class  specifying the name of the desired algorithm and,  optionally, the name of the provider (or the Provider class) whose implementation is desired.  If no provider is specified, getInstance searches the registered providers  for an implementation of the requested cryptographic service associated with the named algorithm.  In any given Java Virtual Machine (JVM), providers are installed in a given preference order,  the order in which the provider list is searched if a specific provider is not requested.

How Provider Implementations are Requested and Supplied cont’d  For example, suppose there are two providers installed in a JVM: PROVIDER_1 and PROVIDER_2. Assume that:  PROVIDER_1 implements SHA1withDSA, SHA-1, MD5, DES, and DES3. PROVIDER_1 has preference order 1 (the highest priority).  PROVIDER_2 implements SHA1withDSA, MD5withRSA, MD2withRSA, MD2, MD5, RC4, RC5, DES, and RSA. PROVIDER_2 has preference order 2.

The Java Cryptography Extension (JCE)  A set of packages that provides a framework and implementations for  Encryption,  Key generation  Key agreement,  Message Authentication Code (MAC) algorithms.  Support for encryption includes  symmetric,  asymmetric,  block,  stream ciphers.  The software also supports secure streams and sealed objects.