Java Security Concepts Within I nsecure Networks
|
|
|
- Gregory Beasley
- 9 years ago
- Views:
Transcription
1 Diplom a Thesis Java Security Concepts Within I nsecure Networks I n the case of the SASI I project Author: Jürgen Leitner Markt Türnitz Examiner: Prof. Mag. Otto Reichel Period: September 2001 May 2002
2 Statement Statement With m y signature, I assure, that this diplom a thesis, with the topic Java Security Concepts Within I nsecure Networks, was com pletely written by m e. I also assure that I only used the mentioned sources, not others. Any copies, partly or full, or any other reprint or use of this diploma thesis, for non educational purpose, is only allowed with the written permission of the author. Juxi Leitner [email protected] Author: Juxi Leitner
3 Acknowledgement Dedicated to freedom and privacy This diplom a thesis is dedicated to freedom of speech, freedom of dream s and thoughts and the freedom of the internet. I t is also dedicated to the privacy, and not military, purpose of cryptography and encryption. Special thanks I would like to thank the following persons for their help and contribution to this diploma thesis: Prof. Mag. Otto Reichel: for his guidance and supervision of the SAS I I project and this diplom a thesis, also for his education in programming and the Java language Andreas Lehrbaum : for his inspiration, m otivation and help for this diplom a thesis and m y whole life, his brilliant work on SAS I I and his company Andreas Fellnhofer and David Rigler: for their ideas in the SAS II technology team and their inspirations for life Florian Freistetter and Matthias Pölzinger: for their awesom e work on the SAS II project I also want to thank the rest of the SAS I I team and all people that helped m e to find bugs, typos and gram m ar faults in my first blueprints. Author: Juxi Leitner
4 Picture Index Table of Contents Abstract, English Version... 1 Abstract. German Version Introduction PREFACE JAVA AND SECURITY W HAT IS SECURITY? THE SAS II PROJECT & SECURITY Application Security I NTRODUCTION WHAT IS AN APPLICATION? JAVA SANDBOX ANATOMY OF A JAVA APPLICATION JAVA LANGUAGE SECURITY JAVA MEMORY SECURITY THE BYTECODE VERIFIER THE CLASS LOADER Coordination with the Java Security Manager and the Access Controller Enforcing the Java Namespace Rules JAVA SECURITY M ANAGER THE ACCESS CONTROLLER CRYPTOGRAPHY JAVA SECURITY PACKAGE AUTHENTICATION Author Authentication Data Authentication The Role of Authentication ENGINE CLASSES Message Digests Keys & Certificates Key Management ENCRYPTION Block Ciphers Algorithms Cipher streams Hybrid Systems SIGNED CLASSES & DIGITAL SIGNATURES SAS II: JAKARTA- TOMCAT SECURITY...44 Author: Juxi Leitner
5 3. Servlet Security W HAT IS A SERVLET? SERVLET LIFECYCLE SERVLET OUTPUT (HTML) SERVLET I NPUT (PARAMETERS) COOKIES AND SESSIONS COOKIES SESSIONS With Cookies With URL rewriting SERVLET SECURITY CONCEPTS HTTP AUTHENTICATION FORM-BASED AUTHENTICATION CUSTOM AUTHENTICATION SECURE SOCKETS LAYER (SSL) SECURE HYPER TEXT TRANSFER PROTOCOL (HTTPS) DIGITAL CERTIFICATES SECURITY FEATURES SAS II: SERVLET SECURITY Epilogue & Future Outlook Author: Juxi Leitner Page IV
6 Abstract [English] Abstract, English Version This diplom a thesis deals with security concepts, designed to m ake insecure network more secure in handling and usage. My point of view is from Java s concepts for security, but also is based on the evaluation of security concepts for the SASII project. Java has in the last years developed to an often used m ultim edia extension for HTML pages. I t is said to be secure, but what does that m ean? I am trying to give a look at what it could m ean, for developers and for users with this diploma thesis. This diplom a thesis is separated into two m ain parts (Application Security and Servlet Security) and com pleted with an I ntroduction and a Future Outlook. Java, of course, consists of m ore then just Applications and Servlets, but those two m ain parts are resulting from the considerations during the planning phase of the SASII project One section deals with Cryptography. At the m om ent that is a very often used word, especially in the com puter business. Cryptography deals a lot with freedom and privacy. There are also a lot of political discussion about that at the m om ent and Cryptography is m ostly linked with espionage, m ilitary and Top Secret. I hope to show that Cryptography is only a tool, which can be used for everything, from allowing users to make secure bank transactions to military use. Author: Juxi Leitner
7 Abstract [German] Abstract, Germ an Version Diese Diplom arbeit beschäftigt sich hauptsächlich m it Sicherheitskonzepten, die dazu dienen unsicher Netze sichere zu m achen, sowohl in Verwendung als auch im Um gang m it ihnen. I ch betrachte es vom Standpunkt der Programmiersprache Java aus, jedoch auch auf Basis der durchgeführten Studien bezüglich unseres Schulprojekts SAS II. Java hat sich in den letzten Jahren zu einer oft genutzten Multim edia Erweiterung für statische HTML Seiten entwickelt. Es wird behauptet Java sei sicher, aber was ist dam it gem eint? I ch versuche m it dieser Diplomarbeit einen Blick darauf zu geben, was sicher für Benutzer sowie Programmierer bedeuten kann. Diese Diplom arbeit ist aufgeteilt in zwei Hauptpunkte (Application Security und Servlet Security), sowie Einleitung und Zukunftsaussichten, der Sicherheitskonzepte. Java bedeutet natürlich nicht nur Applikationen und Servlets, aber diese zwei Hauptpunkte haben sich bei der Evaluierung der Lösungen für das SAS I I Projekt herauskristallisiert. Auch ein Kapitel Kryptographie ist in dieser Diplom arbeit zu finden. Kryptographie ist im Mom ent ein ziem lich oft gebrauchtes Wort, nicht nur bei Program m ierern und Com puterfachleuten, da sie auch sehr stark m it Freiheit und Privatsphäre zusam m enhängt. Es gibt auch viele Diskussion in der Politik, da Kryptographie m eistens m it Spionage, Militär beziehungsweise Top Secret gleichgesetzt wird. I ch versuche m it dieser Diplom arbeit zu zeigen, dass Kryptographie nur ein Author: Juxi Leitner
8 Hilfsm ittel ist, welches sehr vielseitig verwendet werden kann, vom sicheren Einkaufen im Internet bis hin zu militärischen Zwecken. Author: Juxi Leitner Page 3
9 Introduction 1. Introduction Security is m ostly a superstition. I t does not exist in nature, nor do the children of m en as a whole experience it. Avoiding danger is no safer in the long run than outright exposure. Life is either a daring adventure, or nothing. - Helen Keller 1.1 Preface With the raising num ber of internet users and the increasing use of "dynam ic" web content (e.g. Java Applets, Servlets, Java Server Pages...), a lot of webm asters try to m ake their servers and applications m ore secure. One of Java s m ain features is the ability to let code transfer over a network and then run on the local PC. This has pros and cons, it is positive for generating dynam ic web content as used in Java Applets, but a disadvantage is that there could be security bugs. To keep them at a m inim um Sun Microsystem s, the designer of Java, included som e security concepts. With Java Developm ent Kit (JDK) 1.2 and 1.4 major changes to these concepts were introduced. This diplom a thesis covers the application side from the Java viewpoint. I n this paper security concepts within JDK 1.2 and 1.4 are explained. Another chapter in this diplom a thesis covers security concepts for Java Servlets, defined in the JSDK (Java Servlet Developm ent Kit). These concepts are m ainly for secure transfer and identifying users (and com puters) and they are used in secure web-applications like web shops or net-banking. Author: Juxi Leitner
10 Introduction Security is not a clearly defined term ; therefore the first few pages are about how to define the word security and how to use security concepts within Java to generate more secure applications. 1.2 Java and Security Java has a lot of security features but the problem is how to utilize them in applications. Som e of these features are autom atically components of all Java program s, m any are not. Different ways are given to make them a part of a Java application. 1.3 What is security? 1 1 As already m entioned security m eans different things to different people. Developers had different expectations of Java s security than the designers of Java. Different expectations would lead to expect that Java programs might be: No m alevolent program s: programs should not harm the users com puter environm ents. This includes viruses, Trojan horses and others. Non intrusive: program s should not be allowed to get private information on the host computer or host computers network Authenticated: The identity of parties involved in the program s processes should be verified Encrypted: Data transfers over unsecured connections should not be interpreted by third parties Audited: sensitive operations (or special users) should be logged Well-defined: strict regulations for security should have to be followed Author: Juxi Leitner Page 5
11 Introduction Verified: operation rules should be declared and checked Well-behaved: program s should not use too m any system resources, or force computers to crash I n the starting version of Java, Java 1.0 just 2 points were part of the security model, with later versions some others were added, but still not all of these points are available. With all updates the basic security m odel is designed to protect information on a com puter and its network from being accessed or even modified while still allowing the program to run on that computer. The founding of the I nternet created new requirem ents for program s, like being free of viruses and Trojan horses. The introduction of Java as parts of dynam ical web pages, could m ultiply the problem s with wide spread viruses, because those Java program s were downloaded autom atically, frequently and without the knowing of the user. Hence, the early security concepts were focused on these problems. These requirem ents lead to the security concepts described in this diplom a thesis, m ainly in chapter 2. These security concepts include the Java Sandbox, signed classes and m any m ore. Chapter 3 deals with Servlet security, which is connected to the standard Java security, but has some specialized concepts, especially for network data transfer. 1.4 The SAS II project & security The SAS I I (school/ pupils adm inistration software) project allows teachers and other school staff the updating and viewing of specific pupil inform ation. (E.g. The teachers can enter their pupils m arks and also print the school reports at the end of each sem ester.) The software Author: Juxi Leitner Page 6
12 Introduction is distributed, with the data saved in a database on one server for each school. The teachers are able to connect through the schools com puter network (m ostly Local Area Network - LAN, but also Wide Area Network -WAN). This project is realized with Java. After defining the database system, the biggest question was how to m ake secure connections in these networks. Available options with Java are: Server: (a Linux operated computer) A self-written server, either with HTTP or a self-made protocol The Apache HTTP Server The Tomcat Servlet Engine Client: (mostly a MS Windows operated computer) A self-written client A commercial web browser (e.g. Opera, Netscape, ) See picture 3.a Our decision was to have an Apache/ Tom cat com bined server, and a com m ercial web browser client. More about the decision finding for server side technologies can be found in the diplom a thesis Evaluation of Server-Side Technologies I n The Case of SAS I I by Andreas Lehrbaum, also written in , at the HTBLuVA St. Pölten, 1 deptartment EDVO 00. The transaction security concepts are defined within the Java Servlets. More about the security concepts in Java Servlets can be found in the respective chapters. Author: Juxi Leitner Page 7
13 Introduction The current user and his rights are stored in the session data (an exam ple can be seen in the Servlet security part of this diplom a thesis) and on the database system (which is PostgreSQL). The database allows reducing the written lines of code for security in the Servlets, because checking whether a user is a valid one or not is com pletely done by the PostgreSQL database. Also the data transferred to the user, via JDBC (Java Database Connectivity) drivers, are retrieved by views. That is a database concept to restrict and/ or com bine the access to one or m ore tables. More inform ation about the view-concepts in 6 PostgreSQL can be found in the PostgreSQL docum entation and the SQL definition standard. The connection security is defined as secure Hyper Text Transfer Protocol (HTTPS) - Secure Sockets Layer (SSL) connection, which encodes the whole data transfer between server and client. More information about SSL can be found in the Servlet chapter. Picture 1.a: The SAS II project Author: Juxi Leitner Page 8
14 Application Security 2. Application Security 2.1 Introduction What is an Application? Applications are usually written with the JDK as a main interface. Mainly there are 2 bigger groups of Applications: Stand-Alone Applications: programs for doing several tasks on the user s m achine. Com parable to any other program running on the user s computer. Applets: Java program s that are im plem ented in web pages, to provide m ore functionality than the standard HTML code. They usually have no or very restricted access to files, hardware, network connections Both of these types need the Java Runtim e Environm ent (JRE) installed on the computer they should run. The security concepts are the same in all Java program s, though the program m er has the possibility to implem ent new ones. The basic security concepts are described in this chapter Java Sandbox Most Java Security discussions concentrate on the idea of a sandbox m odel. Behind this m odel there is the idea that when program s are hosted on a com puter, they get som e, not all, abilities and functions provided by the system. This environm ent provided to the program s, varies with different com puters, different users, and also different system s. Within this environm ent the program runs, (com pared to a kid Author: Juxi Leitner
15 Application Security playing in his environm ent), but there are certain boundaries around it (like the boundaries around a sandbox). The environm ent m ay include som e functions (i.e. toys for the kids) and system resources, but it is lim ited. This analogy works better, for close relative (not own) kids playing in a sandbox. They are safe in the sandbox (because it is a sm all, lim ited area), but also the things outside the sandbox are safe from the kids (like glass or com puters, things kids should not touch, because there is a high risk of damaging). Picture 2.a: Resources of a computer The resources of a com puter are protected by the Java Sandbox. I t does so at a number of levels. There is access to: The internal, local memory (the Random Access Memory (RAM)) The file system of the local machine Other computers connected over a LAN Applets also have access to the web server they are loaded from. This server could be in the LAN or WAN (the internet). The data can flow through the whole m odel, from the user s m achine through the network to the hard disk. Each of these resources needs to be protected, and these protections are the basis for Java s security concepts. Author: Juxi Leitner Page 10
16 Application Security The Sandbox can have different sizes, from sm all (i.e. restrictive) to big (i.e. not restrictive) environments. The minimal Sandbox has access to: The Central Processing Unit (CPU) The screen The keyboard and mouse To its own memory Without these a Java program is not able to run. A m inim al sandbox consists of just enough resources to let a program run. The default state of a usual Applet sandbox includes: The Central Processing Unit (CPU) Its own memory Access to the web server, it was loaded from Som e applets m ight draw to the screen although they do not have the perm issions to do so, but that is not a real screen resource, it is the web browser s screen and so not of interest to the Java sandbox. The sandbox, then, is not a one-size-fits-all m odel. Expanding the boundaries of the sandbox is always based on the elem ent of trust: in som e cases, program s are trusted to access the file system ; in other cases, they are trusted to access only part of the file system; and in still other cases, they are not trusted to access the file system at all Anatomy of a Java Application A sim ple Java application consists of just one class, writing to the display. The called HelloWorld example shows that: Author: Juxi Leitner Page 11
17 Application Security /** * The HelloWorld class implements an application that * simply displays "Hello World!" to the standard output. */ class HelloWorld { public static void main(string[] args) { //Display the string. System.out.println("Hello World!"); } } I n this exam ple there is no need for security, although there is of course the Java Sandbox involved. Also the built-in Java Application Security is running when this application is executed. The built-in Java Application Security m odel is based on the inform ation in the user s CLASSPATH. I t contains classes that m ay be loaded; in particular it uses the access controller to provide that security. Picture 2.b: Anatomy of Java applications Author: Juxi Leitner Page 12
18 Application Security In this figure the typical anatomy of a Java application can be seen. This diplom a thesis concentrates on security, so the rectangles play a role in the Java sandbox concept. These elements are in particular: The bytecode verifier The class loader The security manager The access controller The security package The key database (cryptography engine) More about these elements can be found in their respective chapters. 2.2 Java Language Security This chapter describes the Java language concepts for security, and how they are enforced. These security concepts consist of: Memory security: It ensures that Java applications will not discern inform ation in the user s m em ory. This also m eans that Java applications have their own memory to use and operate. Environm ent security: These are m ainly the features of the bytecode verifier and the class loader. They usually enforce some of Java s security concepts. The following chapters do just apply if the language used is Java. I f there is for exam ple native C+ + code used, this C+ + code m ight be able to do nearly everything on the user s machine. Author: Juxi Leitner Page 13
19 Application Security Java Memory Security Within Java every entity every object reference, every prim itive data type has an access level assigned. These access levels may be: private: The entity can only be accessed by code, contained within the class that defines the entity. default (or package): The entity can be accessed by code, contained within the class that defines the entity, and also by code that is contained in a class that is within the sam e package as the class defining the entity. protected: The entity can be accessed by code, contained within the class that defines the entity, by code that is contained in a class that is within the sam e package as the class defining the entity, and also by code that is contained in a class that is a subclass, that m eans derived class, of the class defining the entity. public: The entity can be accessed by code in any class. Assigning access levels to entities is not an exclusive to Java; every object-oriented program m ing language has that concept implemented. Java, because it is very sim ilar to C+ +, uses the C+ + notations of access levels, though there are som e slight differences in the m eanings of these. Java ensures that entities in m em ory can only be accessed, if permitted. This also prevents these entities from being som ehow corrupted. For that reason Java always enforces the following rules: Access m ethods are strictly adhered to: I n Java, private entities m ay be treated like private entities; the intentions of the program m er m ust always be respected. The only exception is object serialization. Author: Juxi Leitner Page 14
20 Application Security No access of arbitrary m em ory location: Java does not have pointers, so this one is easy to ensure. For exam ple: I t is not allowed to convert (cast) an int entity into an Object entity. Final entities: Entities declared final are considered constant. The problems that could occur if a final entity was changed: o I f a public final variable could be changed, an Applet could for exam ple change the variables EAST and WEST in the GridBagConstraints class could be changed, every new Applet would than look com pletely different. This exam ple just shows what could happen; there are of course things that are m uch bigger security flaws. o A subclass could overwrite a final m ethod, changing the behavior of it. For exam ple if the final setpriority() m ethod of the Thread class, would be overwritten, it would defeat that security mechanism. o A subclass of a final class could be created, with sim ilar problems. I nitializing of variables: Reading an uninitialized variable has the sam e effect as reading random m em ory locations. A m alicious program could then declare a lot of big variables to read the data from the com puter s m em ory to prevent that all local variables have to be initialized before use. All instance variables are automatically initialized to a default value. Array boundaries: The m ain effect of checking array boundaries leads Java program s open to fewer bugs and m ore robust program s. I t also has security benefits: Writing out of the boundaries of an array will change the following variable (in the com puters m em ory), which could lead to crashes or also at t acks from int ruders. ( This securit y leak is not t oo farfetched. Netscape once had problems with longer URLs put into Author: Juxi Leitner Page 15
21 Application Security the Go to line, which then overwrote then other variables and caused the program to crash.) Casting into other objects: I f casts were allowed from every class to every other class, a rogue program extension could just cast the secret inform ation into a class it is allowed to read. There are 2 layers of checking those casts: o The Java Com piler: Java does not allow casting in other classes than its subclasses or superclasses. I n the following exam ple the com piler recognizes the wrong cast and complains about it: CreditCard cc = Wallet.getCreditCard(); CreditCardSnoop ccsnoop = (CreditCardSnoop) cc; System.out.println( Your CC#: + ccsnoop.ccnumber); o The Java Virtual Machine: I f we would change the example above to: Object cc = Wallet.getCreditCard(); CreditCardSnoop ccsnoop = (CreditCardSnoop) cc; System.out.println( Your CC#: + ccsnoop.ccnumber); The com piler could not recognize the wrong cast, but the Java Virtual Machine, which knows the real class of the cc object, will throw a ClassCastException when the snoop object is assigned to the cc object The Bytecode Verifier After the com piler generates a Java program from our source code, the Java bytecode of the program has to be run. This bytecode could be transferred over the I nternet or a local network, like it does with Java Author: Juxi Leitner Page 16
22 Application Security Applets. But how do we know that the bytecodes we received are actually legal? Here com es in the need of the Java Bytecode Verifier. Norm ally it is the second chain (after the com piler) to check and enforce the Java Language Rules. I f for exam ple an evil com piler generated bytecode, that exploits security holes by bypassing Java Language Rules, it is still not allowed to run if the Bytecode Verifier did not verify the code. Such attacks are very difficult to achieve, because the attacker needs knowledge in writing a Java Compiler. There are other ways that show why it m akes Java necessary to have a Bytecode Verifier. For exam ple if the java.lang.string source file (e.g. setting the array holding the string data public instead of private) is changed, compiled and put back in the JDK folder. The Bytecode verifier is an internal part of the Java Virtual Machine and has no interface: program m ers can not access it and users cannot interact with it. The verifier exam ines autom atically m ost bytecodes as they are built into class objects by the class loader. Picture 2.c: The Bytecode Verifier Author: Juxi Leitner Page 17
23 Application Security The Byt ecode Verifier, which Sun nam ed in som e of it s papers m initheorem prover, can prove only one thing: Are the given series of Java bytecodes representing a legal set of Java instructions? 1 Specifically the Bytecode Verifier can prove the following things: The class file has the correct form at. The full definition of the class file form at m ay be found in the Java virtual m achine specification; the bytecode verifier is responsible for m aking sure that the class file has the right length and other characteristics, which define that this is a valid class. Final classes are not subclassed, and final m ethods are not overridden. Every class has a single superclass. (exception:java.lang.object) There is no illegal data conversion of prim itive data types (e.g., int to Object). No illegal data conversion of objects occurs. Because the casting of a superclass to its subclass m ay be a valid operation (depending on the actual type of the object being cast), the verifier cannot ensure that such casting is not attem pted - it can only ensure that before each such attem pt is m ade, the legality of the cast is tested. There are no operand stack overflows or underflows. I n Java, there are two stacks for each thread. One stack holds a series of m ethod fram es, where each m ethod fram e holds the local variables and other storage for a particular m ethod invocation. This stack is known as the data. The bytecode verifier cannot prevent overflow of this stack--an infinitely recursive m ethod call will cause this stack to overflow. However, each m ethod invocation requires a second stack ( which itself is allocated on the data stack) that is referred to as the operand stack; the operand stack holds the values that the Java bytecodes Author: Juxi Leitner Page 18
24 Application Security operate on. This secondary stack is the stack that the bytecode verifier can ensure will not overflow or underflow. After the Bytecode Verifier com pletes his job the Java bytecode is correct, which m eans it follows the rules and constraints of the Java language. Of course som e rules rem ain unchecked but they will be checked during runtime. The Bytecode Verifier seems like a really great thing because it prevents m alicious attackers from violating Java language rules. But it does not check every class! The Bytecode Verifier in Java 1.1 deem ed classes located at the CLASSPATH for trusted classes and did not check them. In Java 1.2 it changed and all classes except the ones in Java s core API (Application Program Interface) are checked The class loader The two main roles the class loader plays are: Coordinate with the Java Security Manager and/ or the Access Controller Enforce Java language rules about the nam espace Java classes use Coordination w ith the Java Security Manager and the Access Controller I n order to determ ine the security policy of a Java program the class loader has to coordinate with the Java Security Manager and/ or the access controller. For exam ple if a Java Applet is run in a web browser Author: Juxi Leitner Page 19
25 Application Security such as the HotJava (HotJava is a good exam ple because it is also written in Java), it is (norm ally) not perm itted to read a file from the local file system. Picture 2.d: The HotJava web browser The browser, HotJava, is allowed to, though it uses the sam e classes from the Java API. So there has to be som ething that tells the java.io classes to fail in one try but to work in the other case. A by-product of the class loader is the differentiation between these two cases: the class loader gives inform ation about the classes to the Java Security Manager, which is then able to apply the different security policies. More about these different security policies can be read in the Java Security Manager chapter. The class loader, since it loaded the class, knows where the class cam e from (network or local file system ), if the class was delivered with a digital signature, and it also knows the exact location from which the Author: Juxi Leitner Page 20
26 Application Security class was loaded. All these facts m ay be used by the Java Security Manager and the access control to define the security policy Enforcing the Java Namespace Rules The second role has to do with Java s nam espace rules. These rules say that the full nam e of a Java class is qualified by the nam e of the package to which the class belongs. This m eans there is no class called String in the Java API, but there is a class called java.lang.string. But Java classes do not always have to belong to packages these are m ostly referred to as classes of the default package, though this nam e is a little bit misleading. The problem is sim ple: I f a user goes to a web page and loads a class file (e.g. for an applet), goes to the next site and loads a different class but with the same fully qualified name (which means that they are in no package (or m aybe even the sam e)). How should the Java Virtual Machine know what class to execute? The answer lies in the internal working of the class loader. The class loader is not just one class, which is instantiated and then run in the background of the Virtual Machine. Merely the class loader is every class that is derived from the ClassLoader class. When the Java Virtual Machine needs a particular class (e.g. the Car class from the sun site in the following picture) it m akes a new instance of one of the class loader classes, which then loads the class and provides information. Author: Juxi Leitner Page 21
27 Application Security Picture 2.e: Different instances of the class loader help to disambiguate the class names This m eans that in the exam ple above two instances of the class loader are working; each representing one of the Car classes. Though the exam ple above m ight be a good reason for class loaders, it could also be solved without them. For exam ple if every com pany had to use its dom ain nam e in reverse order (i.e. com.sun for Sun Microsystem s) for the start of their package nam es, there would not be such problem s. There is another reason why Java uses a class loader in its security concepts: Classes that are m em bers of a package have other privileges than classes without a package have. This m eans that if all web pages would use their package (as shown above with com.sun), evil program s on the web pages could use the sam e package. Without the class loaders it would have the privilege to access data from other com.sun classes!! Another idea would be to sign every class, with inform ation that authenticated that it did in fact com e from the right site. Though Author: Juxi Leitner Page 22
28 Application Security authenticated classes are used in Java, it would not be m anageable to add authentication to all classes. 2.3 Java Security Manager The Java Security Manager is what most people think of when they hear Java security. I t is of course a big point in Java s security concept, but as shown here it is not the only one. On one hand, the Java Security Manager is often sum m arized by saying that it is there to prevent Java (Applets) from accessing the user s local disc drives or local network connections. On the other hand, the story is m ore com plicated, which leads to a m isunderstanding of the Java security concept. The Java Security Manager is responsible for determining whether many particular operations of a Java program should be permitted or rejected. I n general Java applications do not have a security m anager, unless the program m er added one, but Java Applets do have one! This leads to a very big misconception: Since Java is said to be secure, users may think every Java program is just as secure as any other, no m atter if it is installed locally or running in a web browser. Nothing is further from the truth! Beginning in JDK 1.2 it is m uch easier to provide security concepts from t he program m er side, t han it was in Java 1.1. A default, userconfigurable Java Security Manager has been introduced. This default is started with a command line argument when starting the application. Author: Juxi Leitner Page 23
29 Application Security To make that point clear, take a look at the following example: public class MaliciousApplet extends Applet { public void init() { try { Runtime.getRuntime().exex( rm rf / ); } catch(exception e) {} } public static void main(string args[]) { MaliciousApplet ma = new MaliciousApplet(); ma.init(); } } If this code is compiled, put on a web server as an Applet and visited by a user, an error will occur reflecting the security violation. I f on the other hand it is run by for exam ple the web adm in locally on the (Linux or UNI X) web server all files will be deleted! This exam ple shows that it is very crucial for the user to know which Security Manager is in place when a Java program is run. 2.4 The Access Controller The Access Controller is the m echanism the Security Manager actually uses to enforce its protection policies. The Access Controller can do what the Security Manager can do, so the purpose of it is slightly redundant. This is because the Access Controller was first introduced in JDK 1.2. Before that the Security Manager had to enforce the rules alone. The Access Controller is a m uch m ore flexible m echanism for determ ining policies; it also gives a m uch sim pler m ethod of granting fine-grained, specific perm issions to specific classes. That should have also been possible with the Security Manager, but it was just too hard to implement. Author: Juxi Leitner Page 24
30 Application Security Picture 2.f: Relationship of the Java Security Manager and the Access Controller The operation typically starts through the Program Code into the Java API, through the Security Manager and the Access Controller to finally reach the operating system. I n som e cases the Security Manager can bypass the Access Controller. The Java Native Libraries are outside the domain of the Security Manager or Access Controller. 1 The Access Controller is built upon four concepts: Code Sources: an encapsulation of the location from which Java classes were loaded Permissions: an encapsulation of a request to perform a particular operation Policies: an encapsulation of all specific perm issions, granted to specific code sources Protection dom ains: an encapsulation of the code source and the permissions granted to it Author: Juxi Leitner Page 25
31 Application Security 2.5 Cryptography Cryptography is featured in the Java security package. These classes provide additional concepts and layers of security beyond the standard im plem entations. These classes play a role in the signing of Java classes. This signing of Java classes and with it the expanding of the Java Sandbox concept, which is the key goal of Java s security concepts, is just one role. These classes m ay play other roles in secure applications and in the Sandbox concept. A digital signature, allows authentication of Java classes. A signed class has different security policy than "standard" classes. A signed class usually has bigger latitude in the operations it can perform. Digital Signatures do have another useful ability: executable code with a digital signature m eans that the com pany that produced the code (and of course the signature) "vouches for it" in som e sense, they indicate a degree of insurance. In order to use the classes of the security package, programmers do not need a deep understanding of cryptographic theory. On the other hand, one feature of the security package is that different im plem entations of different algorithm s m ay be provided by third-party vendors, whose program m ers do of course need to know the ideas behind the algorithms. On the JavaOne Conference in 1997, the Java security architect, Li Gong, gave a list of five inequalities within Java s security concept, which might be of interest for programmers: 9 9 Author: Juxi Leitner Page 26
32 Application Security Security!= cryptography: Adding cryptography to an application will not m ake it secure, it is just a tool for building secure systems. Correct security m odel!= bug-free im plem entation: Even with great security designs, bugs in the im plem entation can be exploited by attackers. Testing!= form al verification: Testing is a great idea, but it will not prove that the system is secure. Com ponent security!= overall system security: The system security is a chain where every link can be broken. Java security!= applet containm ent: A lot of people think about the applet sandbox concept when they hear Java security. I n truth this is only a small part of the Java security Java Security Package Much of the Java security package is made up of a collection of engines. As a unit, these engines allow us prim arily to create digital signatures-- a useful notion that authenticates a particular piece of data. A digital signature can authenticate a Java class file, which provides the basis for a security m anager to consider a class to be trusted, even though the class was loaded from the network. The security package, like m any Java API s, is actually a fairly abstract interface that several im plem entations m ay be plugged into. Hence, another feature of the security package is its infrastructure to support these differing implementations. Author: Juxi Leitner Page 27
33 Application Security Authentication The prim ary goal of the java.security classes is authentication. For exam ple if a class is loaded over a network the Java API has to assure two things: The site the class was loaded from (author authentication) The class was not m odified during the transfer (for exam ple from a cracker) over the network (data authentication) Java, by default, assum es that classes loaded from a network source are not trusted. Their perm issions are set in correspondence to that assumption. When a class is transferred over the internet, the Java application that loads the class (and any other application), does not know how the data got through the internet. This is why in nearly all network plans and other network figures, the internet is represented by a cloud. Every com puter, router or other network com ponents on the data s route might change it. Picture 2.g: Data flow within the internet Author: Juxi Leitner Page 28
34 Application Security Java does want to know if the data is still the sam e as it was when it was sent from the server. Therefore it has to verify it with the two types of authentication mentioned above Author Authentication With Author Authentication the Java program tries to ensure that the data (and class) received was really sent from the server it claim s to be. I ntruders in I nternet Service Providers (I SPs) could change the Dom ain Nam e Service (DNS) server/ table to fool users. By changing this entry data, which should go to a specific server, goes to them, so they can send back data, where they can claim it is com ing from the original server. This so called I P or DNS spoofing is an easy way for malicious users to send their data to fooled users. This is just one reason why Java never trusts classes loaded from networks, by default. Classes, changed like that can with this security policy just annoy the users, because they are different than expected, but can not harm the computers they are running on. I n order to trust a class from a network source, it has to be verified by a digital signature that is sent with the class data, which just states that this class is truly coming from the original server Data Authentication Other problem s can also occur when data is transm itted over the internet. For exam ple it could be changed by any network com ponent on the data s route. If an Applet for a web shop sends information about Author: Juxi Leitner Page 29
35 Application Security the products a user will buy, the data that reaches the server should be the sam e as the one the user sent. I ntruders at any point of the route could intercept, change and send the other data to the server (or back to the Applet). Therefore Java has to be sure that the data was not changed during the network transfer. This is usually done by a digital fingerprint sent with the data. This does not prevent snoopers from only reading the data transm itted; therefore Java has the ability to encrypt data. Hence, Data Authentication prevents writing of data, but not reading it, by third parties! The Role of Authentication Not all classes signed and fingerprinted are totally trustworthy. Everybody could sign a class. Hence, Java Authentication is not to allow special perm issions to every signed class. I t provides m ore inform ation about the class for the user or adm inistrator, so that they m ight then know which policy they use for the class. For exam ple that any classes, that come from have the right to read all files in the home directory of the user, but only the files in the home directory. Authentication does NOT solve any problem; it is just a tool for pursuing solutions to those security problems. Author: Juxi Leitner Page 30
36 Application Security Engine Classes Picture 2.h: What is an engine? To allow encryption, for authentication or any other purpose in a Java application, Java provides various engines. An engine is a class or part of the class, that gets input data, (and som etim es a key), encodes it with a cryptographic algorithm, and puts back the encoded output data. Cryptographic engines can have the following features: Get input data Sometimes get a key Send back the output data Non sym m etric output (which m eans that the output data can not be converted back to the input data, with the same engine) Differences in the size of input and output data I n the Java security package, there are two standard cryptographic engines: a m essage digest engine and a digital signature engine. I n addition, for som e users, an optional engine is available to perform encryption. Finally, because keys are central to the use of most of these engines, there is a wide set of classes that operate on keys, including engines that can be used to generate certain types of keys. The term "engine" is also used within the security package to refer to other classes that support these operations Author: Juxi Leitner Page 31
37 Application Security Message Digests Message Digests are the sim plest of the standard engines, provided by Sun, and so a good start for exam ination. They also are the first link in creating and verifying a digital signature, but there are certain limitations on the security of a m essage digest that is transm itted along with the data it represents. Sun provided one single class for m essage digests in its API : public abstract class MessageDigest extends MessageDigestSpi (in Java 1.1 MessageDigest is just derived from Object), which im plem ents operations to create and verify a Message Digest. Like all engines in the java.security package, MessageDigest is abstract; it just defines an interface that all m essage digests m ust have. With that the concept program m ers can m ake new engines with just this interface im plem ented, but the usage (from the application) will still be the same. The m essage digest by itself gives som e com fort about the state of the data it represents, but it does not provide a com pletely secure system. The m essage digest could be used with a pass phrase to m ake it m ore secure (that is also called Message Authentication Code - MAC). Example: // define the input data byte [] MessageDigest md = MessageDigest.getInstance("SHA"); md.update(inputdata); byte []digest = md.digest(); //after the digest call the md obj. is reset and can be used again Author: Juxi Leitner Page 32
38 Application Security Message Digests could be used to transfer passwords from clients to servers, instead of sending the plaintext password over the network. Another use of m essage digests is in the DigestInputStream and the DigestOutputStream. These high level stream s allow the usage of one message digest for the whole data transfer Keys & Certificates Keys are necessary com ponents in m any cryptographic algorithm s in fact keys are required to create and verify digital signatures. Today private and public keys are mostly used in a digital signature. Certificates are used to authenticate keys; if keys are transferred electronically they are often em bedded within certificates. I n the following picture a PGP (Pretty Good Privacy) m essage is decrypted and verified. The first lines state the signer and the signature; this is the certificate. Author: Juxi Leitner Page 33
39 Application Security Picture 2.i: Certificate of a PGP message Keys and certificates are norm ally associated with a specific person or com pany, to authenticate them. How keys are stored, transm itted and shared is an important topic in Java s security package. There are two engines that operate on keys in the Java API: The KeyPairGenerator class: can produce one or m ore pairs of keys The KeyFactory class: translates between key objects and their external representations. Author: Juxi Leitner Page 34
40 Application Security Picture 2.j: The key classes in Java Various classes support the notion of keys within Java: The Key I nterface: represents the key m odel. I t provides standard m ethods for getting inform ation about the key, and extends the Serializable interface. There are two additional interfaces, PrivatKey and PublicKey, both extend Key. There is no difference; those classes are just for type convenience. The KeyPair class: contains a private and a public key. I t is the only class in the Java standard API that extends the abstraction of Key. The sim ple constructor just gets a private and a public key. A key pair should always be initialized with both keys, but nothing prevents the program m er from sending null as parameter for one of the keys. The KeyPairGenerator class: Generation of key pairs (private and public key) is integrated in the standard API of Java. Because the generation is a very tim e-consum ing operation, it is not perform ed very often; but it does not have to be done very often either. I nitialize the key pair generator to generate keys of the defined strength. Typically that is the num ber of bits used for the key. Key pairs usually also require a random seed to assist them. I n Java the standard is the SecureRandom Author: Juxi Leitner Page 35
41 Application Security class, which provides those random num bers for the key generation. KeyPairGenerator kpg = KeyPairGenerator.getInstance ("DSA"); kpg.initialize(512); KeyPair kp = kpg.generatekeypair(); The KeyFactory class: More often than generating own keys, program m ers are confronted with obtaining them from the local file system or a network. This class provides functionality to convert a key object to a known external representation. When public and private keys are generated, the public key needs to be published. If a document is digitally signed (using your private key), the recipient of the data needs your public key to verify the signature. Certificates solve this problem by having a well-known entity (certificate authority, or CA) that is able to verify the public key sent over the network. A certificate can give assurance that the public key does indeed belong to the entity that the CA says it does. However, the certificate only validates the public key it contains. I t does not say anything about how trustworthy the entity is! 1 A certificate contains three pieces of information: The name of the entity The public key associated with the entity A digital signature (from the issuer of the certificate) But how are the digital signatures of the CA s authenticated? This is a problem that has not been solved yet! The web browsers solve it with Author: Juxi Leitner Page 36
42 Application Security providing digital signatures with their installation, so that those digital signatures of CA s are already on the user s com puter. The problem is that this solution is not airtight, what m eans if the data is changed when you download a browser, m alicious users or program s could use that security leak. There are som e proposals in solving this problem, but for now this is the only way. I n Java 1.1 Certificates were stored within an interface in the java.security package. With the release of Java 1.2 this interface becam e deprecated and a new class was introduced java.security.cert.certificates, which is now the standard class for any certificates Key Management The problem with key m anagem ent turns out to be a hard one to solve: there is no universally accepted approach to key m anagem ent. Java provides features to assist key m anagem ent, but all key m anagement techniques rem ain very m uch work in progress. Key m anagem ent remains application specific. The purpose of the key m anagem ent is two-fold. When a program needs to sign data, the key m anagem ent needs to provide the private key for the code that creates the data. When the application needs to verify a digital signature it needs a public key that will be used for authentication. A key m anagem ent exists prim arily to provide these services mentioned. There are 3 elements in a key management system: Keys Author: Juxi Leitner Page 37
43 Application Security Certificates Entities: implemented by the Identity class With Java 1.2 there is a tool called keytool, that allows to store individual private and public keys in a database, usually referred to as keystore. Identity Class The Identity class im plem ents the interfaces Principal, an interface that only abstracts the idea that principals have a nam e, and the Serializable interface. I t only holds public keys; private keys are stored in another object ( Signer object). The inform ation, Identity objects then hold, are: A name (from the Principal interface) A public key An information string (optional) An identity scope (optional, not used in Java 1.2) A list of certificates Signers I n order to create a digital signature the program needs a private key. An object that holds a private key is the java.security.signer class, which extends the Identity class. I t has just 2 m ore functions than an Identity: public PrivateKey getprivatekey() public final void setkeypair(keypair kp) The KeyStore class Author: Juxi Leitner Page 38
44 Application Security The keytool program operates upon a file ( or other storage system ) containing private keys and certificates for those keys. This file contains a set of entries, with the following attributes: An alias, for easier reference One or more certificates that vouch for the identity A private key (optional) Picture 2.k: The role of the keytool database, in the creation and execution of a signed JAR file The class in a Java program that represents the keytool database is the KeyStore class. The local keytool database is stored in the user s hom e directory, in the file.keystore. Though this is the standard, the KeyStore class does not autom atically load it, when it is generated by the getinstance() m ethod. A KeyStore object is created em pty. To load data the program m er has to call the load(inputstream is, String pwd) m ethod. To write it back to the hard disc a call of store(outputstream os, String pwd) is necessary. Author: Juxi Leitner Page 39
45 Application Security Encryption Encryption is a tool to protect secrets and to provide m ore security. Java program s can encrypt data, or rather stream s, that write to hard discs or network sockets. Java classes that provide m ethods and solutions are m ostly im plem ented in Java s Cryptographic Engine (JCE), which is strictly lim ited by US export restrictions. Cryptography has always been part of military use, so the US government has made those restrictions for any encryption algorithm or anything that has to do with it. One of the most used terms in encryption is cipher. A cipher encrypts or decrypts data. They are categorized in: Algorithm based Ciphers: o Sym m etric or private key ciphers: data encrypted with this cipher can also be decrypted with it o Asym m etric or public key ciphers: data encrypted with this cipher cannot be decrypted with it Hybrid Ciphers: are protocol based. They use private and public key algorithms for en/decryption. Ciphers are usually used as block ciphers or stream ciphers (or block ciphers used in stream cipher m ode (CFB)). For exam ple asym m etric ciphers are usually block ciphers Block Ciphers A block cipher splits the data to en/ decrypt up into blocks of fixed size (usually 64 bits). Problem s occur because m ostly the data will not fit in those blocks (the last block will not be filled com pletely). Therefore block ciphers need padding. Author: Juxi Leitner Page 40
46 Application Security Padding schem es specify exactly how the last block of data is filled before it is encrypted. A standard for padding is for exam ple the public key cryptography standard number 5 (PKCS#5). Block ciphers have various m odes, to determ ine how these blocks are en/ decrypted. For exam ple: the electronic code book (ECB) m ode, the cipher block chaining (CBC) m ode, the propagating cipher block chaining (PCBC) mode, Algorithms With its class abstraction and encapsulation Java allows programmers to change the algorithm s for en/ decryption by just changing one parameter in their program. They do not have to com pletely rewrite the program. Sun s JCE comes with three predefined algorithms. The class that encapsulates the cipher algorithm s is java.crypto.cipher, which im plem ents the Cloneable interface. I t can encapsulate both asymmetric and symmetric algorithms. To use a cipher 3 steps have to be done: Get an instance of a cipher by calling the getinstance() method I nitialize the cipher object for encryption or decryption, by calling the init() method Encrypt or decrypt the data by using the update() or dofinal() method Author: Juxi Leitner Page 41
47 Application Security Cipher streams Stream ciphers do not encode blocks, they encode every single character. They are used where it would be inconvenient or im possible to wait for the data to get into buffers to encode or decode it then. Cipher stream s are realized in the classes CipherOutputStream and CipherInputStream. There a cipher object is associated with an input or output stream Hybrid Systems Hybrid system s com bine the strengths of sym m etric and asym m etric ciphers. I n a hybrid system, an asym m etric cipher is generated for authentication and data integrity, and a sym m etric cipher is used for confidentiality. Sym m etric ciphers are faster then asym m etric ciphers, so it makes sense to mostly use symmetric ciphers for messages and/or conversations. Likewise, asym m etric ciphers are well suited to authentication and session key exchange. Author: Juxi Leitner Page 42
48 Application Security The most widespread hybrid standards are: Pretty Good Privacy (PGP): PGP is software that tried to bring strong cryptography to the m asses. I t encrypts m essages by using a com bination of sym m etric and asym m etric ciphers. I t provides safe transport of those encrypted m essages over an insecure network. PGP provides authentication, data integrity, and confidentiality. Secure/ Multipurpose I nternet Mail Extensions (S/ MI ME): S/ MI ME is a standard for cryptographically enhanced em ail. I t places the m essage in a digital envelope. The m essage itself is encrypted used a sym m etric cipher, while the session key is created by an asymmetric cipher. Secure Sockets Layer (SSL): see chapter Secure Electronic Transaction (SET): The SET standard was developed by VI SA and MasterCard to encourage e-commerce. In theory it works like SSL, while implementations differ a lot. 2.6 Signed Classes & Digital Signatures 1 1 One of the prim ary applications of digital signatures in Java program s is to create and verify signed classes. Signed classes allow the expansion of the Java sandbox in 2 ways: The policy file can define, that classes com ing from a specific source have to be signed by a particular entity, before the access controller will grant perm issions to it. Such an entry in the policy file would look like: (grants perm ission to read and write any local files to classes com ing from http: / / juxi.dyndns.org/ only if the classes were signed by JL ) Author: Juxi Leitner Page 43
49 Application Security grant signed by JL, codebase { java.io.filepermission -, read,write ; } The security m anager can cooperate with the class loader, to determ ine whether the class is signed or not. The security manager is then free to grant perm issions based on its internal policy. There are three parts needed to expand the Java sandbox with signed classes: Functionality to create signed classes (e.g. jarsigner) A class loader that is able to deal with digital signatures (e.g. URLClassLoader) A security m anager or access controller that grants the permissions based on the digital signature. (e.g. the default access controller) 2.7 SAS II: Jakarta- Tomcat security I n our project Application security was not a m ain problem. Of course a stable and not m alevolent program would be the best, but the functionality played a much bigger role. We decided to use a tool named Jakarta-Tom cat, as our Servlet environm ent. I t s produced by the Apache Software Foundation ( The m ain security concepts in this project were used for the connection, the Servlets and the database. Author: Juxi Leitner Page 44
50 Application Security Reasons for selecting the Jakarta Tom cat Engine can be found in the diplom a thesis Evaluation of Server- Side Technologies I n The Case of SAS I I by Andreas Lehrbaum, also written in at the 1 HTBLuVA St. Pölten, Abteilung EDVO 00. Author: Juxi Leitner Page 45
51 Java Security Concepts Within Insecure Networks' Servlet Security 3. Servlet Security Servlet security is focused on authentication, confidentiality, and integrity. Those m ain points are split up in various im plem entation concepts. Those concepts are presented and explained on the following pages. How we use them in our project is also m entioned at the end of this chapter. 3.1 What is a Servlet? The m ain question to be answered in this topic will be, What is a Servlet?. The easy answer would be, sm all Java program s running on a web-server, but that is not all Java Servlets can do. They are protocol- and platform -independent enabled com ponents for servers. They have built in support for the request-response paradigm. Usually they are used for generating dynam ic HTML content, data viewing and changing ability, and web page generation techniques. Servlets run inside the server so they do not need a graphical user interface (GUI ). But they are also known as counterpart to Java Applets on the server side. Those Applets are Java program s, which are downloaded, on demand, to the server part which needs them. Clients for Java Servlets can range from sim ple HTML form s (like we used in our project) to highly-sophisticated Java Applets. Servlets usually use som e kind of data storage, such as files or databases. We use both files and databases in our project. Author: Juxi Leitner
52 Servlet Security Picture 3.a: Servlet Architecture The files are in use for XSLT (the Style sheet Transform ers for XML Extended Markup Language) [ m ore about that can be read in the diplom a thesis Evaluierung webbasierter Drucklösungen in Bezugnahme auf das Projekt SAS II by Andreas Fellnhofer, also written at the HTBLuVA St. Pölten, Abt. EDVO, in 2002] and static HTML pages, whereas the PostgreSQL database is used for saving the data (about 1 pupils, schools, teachers and grades) 00, and security purpose too, as already m entioned in chapter 1 they com pletely cover the user authentication process. Servlet are flexible enough to provide standardized services such as static HTML files provided through HTTP (or HTTPS) protocols, proxy servicing, and custom ized m ulti user services ( especially used at web shops or other costum er based services). They are also able to provide dynam ic content to use in e.g. search engines, web based order entry or other database saved content viewing. Java Servlets are used for m iddle tiers of distributed applications too. I f so they turn into clients for other services, written in any language. Author: Juxi Leitner Page 47
53 Servlet Security Servlets are for example regularly used in connection with JDBC TM (Java Data Base Connectivity), to access data from relational databases. Com m unicating with other services m ay call for alternate software packages, as required by those applications. All those packages should be signed classes. Other security concepts like the Sandbox or the Class Loader also ensure that those connections will not harm the server, e.g. force to crash it or include security leaks, e.g. no user authentication. The Java Servlet API (Application Program interface) is a Standard Java Extension API. This m eans that while it is not part of the core Java fram ework, which m ust always be part of all products bearing the Java brand, it will be m ade available with such products by their vendors as an add-on package. Sun has provided a package which m ay be used to em bed Servlet support in other web servers, including Apache and Microsoft's I I S. Servlets were initially supported in the Java Web Server 2 from Sun. Servlets can also be used in different m odes such as (not all servers support those): Filter chains: Servers can chain Servlets together Specialization: Servlets m ay be specialized to support protocols such as HTTP HTTP based applications: m ore efficient, portable, com plete replacement for CGI Server Side Includes: Servlets may be used with HTML server side includes I n all those m odes security leaks can occur, but are m ainly covered by the concepts already described in chapter 2. Author: Juxi Leitner Page 48
54 Servlet Security Servlet Lifecycle Servlets are dynam ically loaded, although usually the servers provide adm inistrative options to force the loading at the start of the server. The Servlets are loaded like any other Java classes, which m ay be loaded from trusted internet sources or the local file system. This allows increased flexibility and easier distribution of them in a network. Servers vary in the way how and when they load Servlets. Usually following a request to the web server, the request will be m apped to a 2 Servlet, which may be loaded first. The usual way to map is: Server adm inistrators m ight specify that som e kinds of client requests always m ap to a particular Servlet. For exam ple, one which talks to a particular database. Server adm inistrators m ight specify that part of the client request is the nam e of the Servlet, as found in an adm inistered Servlets directory. At m any sites, that directory would be shared between servers which share the load of processing for the site's clients. At the SAS I I project we use that directory mapping, but not with the multi server feature. Som e servers m ay be able to autom atically invoke Servlets to filter the output of other Servlets, based on their adm inistrative configuration. For exam ple, particular types of Servlet output m ay trigger post processing by other Servlets, perhaps to perform format conversions. Properly authorized clients m ight specify the Servlet which is to be invoked, without administrative intervention. Author: Juxi Leitner Page 49
55 Servlet Security After invoking a Servlet there are usually 3 m ethods called during the 2 life cycle of the Servlet: init: Servlets are activated by the server through an init call. Servlets can, if needed, provide their own im plem entation of this call, to perform potentially costly (usually, I / O intensive) setup only once, rather than once per request. Exam ples of such setup include initializing sessions with other network services or getting access to their persistent data (stored in a database or file). Requests: After initialization, Servlets handle m any requests. Each client request generates one service up call. These requests m ay be at the sam e tim e; this allows Servlets to coordinate activities am ong m any clients. Class-static state may be used to share data between requests. Picture 3.b: Service calls to Servlets destroy: Requests are processed until the Servlet is explicitly shut down by the web server, by calling the destroy m ethod. The Servlet s class m ay then be rem oved from m em ory by the garbage collector. Author: Juxi Leitner Page 50
56 Servlet Security 3.2 Servlet Output (HTML) Usually Servlets generate HTML text directly, since it is easy to do so with standard Java Output classes such as java.io.printwriter. Norm ally there is no need to dynam ically m odify or generate HTML pages. Other Java HTML generation approaches could also be used, such as Multi-Language Sites, which serve pages in m ore than one language (e.g. English and Germ an) to localize the web page, or other dynam ic web content generation packages, which could be im plem ented by them selves. Servlets m ay also be invoked by Servers with Server Side I ncludes (SSI ) functionality. This m eans that the Servlet is called by a specific tag in the.shtml file. Param eters are provided by tags too, similar to the standard HTML4.0 <embed> tag. The output of the Servlet is then directly into the HTML file, which m eans that the ability to include tags is given but the standard HTML start tags are already set. Using these facilities, HTML-aware Servlets can generate arbitrary dynamic web pages. 3.3 Servlet Input (Parameters) 2 2 Typical Servlets will accept input param eters from various resources, such as: The input stream of a request, perhaps from an applet In the URI (Unified Resource Identification) of the request From some other Servlet or network service By using param eters passed from an HTML form (like we did in the SAS II project) Author: Juxi Leitner Page 51
57 Servlet Security Those param eters will be used to generate HTML-form atted responses. The Servlet will often connect one or m ore databases, or other data with which the Servlet has been configured, when deciding what exact data to return with the response. 3.4 Cookies and Sessions The HTTP is a generic, stateless, protocol which can be used for m any tasks beyond its use for hypertext. One of the m ain problem s with it is to provide authentication and the ability to have special user data. That is also a security problem, because custom ers do not want to transfer e.g. their credit card num ber over the internet, without security. Therefore the concepts of Cookies and Sessions were introduced to the Java Servlet Developm ent Kit (JSDK). With these features, Java now has the ability to store user inform ation at the server and identify a special user. Also security has been included to provide authentication and the ability to transfer data via HTTPS Cookies Cookies are a general m echanism which server side connections (such as Java Servlets, CGI scripts, etc.) can use to both store and retrieve inform ation on the client side of the connection. The addition of a sim ple, persistent, client-side state significantly extends the capabilities 4 of Web-based client/server applications. Cookies are just a mesh of data, transferred from the server to the local web browsing client. Once transferred to the client, it is used in every Author: Juxi Leitner Page 52
58 Servlet Security client request on the server. This concept allows the identifying and the logging the user s actions on the server. The basic buildup of Cookies exists of: name value optional parameters, like comments or the validation period Cookies also have som e disadvantages. They are very insecure, because they are just stored on the client com puter, and so m ay be easy manipulated by the client or malicious programs. Furthermore they are restricted by am ount and size by m ost of the clients. And they are usually just transferred with the HTTP GET statem ent, which is easy to intercept. I n Java Cookies can be generated with the javax.servlet.http.cookie class. Nam es of Cookies are restricted by RFC 2109, a standard, defining that nam es can only be alpha-num eric, and m ay not start with a $-sign and may not include any white-space characters, like spaces or tabulators. A m uch bigger disadvantage is that they were used to track user activities and also patterns. Those actions were officially attacked by organizations trying to protect the privacy of page visitors and customers. Therefore they should NOT be used for dynamic web content anymore. Problem s with Cookies can also occur if used with cached HTTP servers or Proxy Connections. Author: Juxi Leitner Page 53
59 Servlet Security Sessions When an HTTP client interacts with a Servlet, the state inform ation associated with a series of client requests is represented as an HTTP session and identified by a session I D. The Session Manager, in our project im plem ented within the Tom cat Jakarta Servlet Runner, is responsible for m anaging HTTP sessions, providing storage for session data, allocating session IDs, and tracking the session ID associated with each client request through the use of cookies or URL rewriting techniques. The Session Manager can store session-related inform ation in m em ory in two ways: I n application server m em ory (the default). This inform ation cannot be shared with other application servers. In a database shared by all application servers. This is also known as persistent sessions or session clustering. Persistent sessions are essential for using HTTP sessions with a load distribution facility. When an application server receives a request associated with a session I D that it currently does not have in m em ory, it can obtain the required session state by accessing the session database. I f persistent sessions are not enabled, an application server cannot access session inform ation for HTTP requests that are sent to servers other than the one where the session was originally created. The Session Manager im plem ents caching optim izations to m inim ize the overhead of accessing the session database, especially when consecutive requests are routed to the same application server. Storing session states in a persistent database also provides a degree of fault tolerance. I f an application server goes offline, the state of its Author: Juxi Leitner Page 54
60 Servlet Security current sessions is still available in the session database. This enables other application servers to continue processing subsequent client requests associated with that session. 5 5 A big advantage of sessions in com parison to Cookies is that big data and or information can be accessed and stored. There is no limit of data stored in a session. Also the data is NOT transferred, as with Cookies, it is stored at the server, so no m alicious program s can access it on the user s computer. A problem with sessions could be that the session objects are only term inated if the whole session is term inated. This m eans if users do not log out and destroy the session, the data is usually stored for half an hour (after that tim e unused sessions will be destroyed by the Servlet environm ent e.g. the Tom cat Servlet Engine), which could block the servers memory if there is much data stored and if there are a lot of different sessions opened. This problem is usually bigger during implem entation and testing of the produced program (the term program m ight be a little m isused for the dynam ically generated web pages. Try to imagine an online banking system or an online shop), so if there are no problem s during these phases, there should be none while the system is running. To transfer the needed session ID from the server to the client and back 3 two concepts are used: Sending it with a cookie Sending it with URL rewriting Author: Juxi Leitner Page 55
61 Servlet Security With Cookies The session I D is stored in a Cookie at the Client com puter. The nam e of the Cookie is JSESSI ONI D. With every client request to the server this Cookie is sent. I f a new session is generated, because there is no old one or the old one is not valid anym ore, it is only valid from the tim e where the client sends back (and im plicit accepts) the generated, new I D to the server. The program m er is not allowed to generate this Cookie; it is an integrated m echanism in the Servlet concepts. To check if there is a session a program m er just has to call the function getsession() with the parameter true, which then creates a new one if none existed, with the parameter false it returns whether there is a valid session or not. Problem s with this m ethod occur when the client does not support cookies. More about cookie generation and parsing can be found in the chapter Cookies (3.4.1) With URL rewriting At sessions the client and server have to transfer the session I D, which is just a long, unique num ber and character key, which identifies the session on the server. This inform ation has to be transferred from the server to the client and the other way round. I have just discussed the m ethod based on Cookies. The m ethods for the URL rewriting are the same, but the session ID is not stored in a Cookie, it is just a part of the URL sent from the Client to the Server and back. Such an URL m ight then look like: Author: Juxi Leitner Page 56
62 Servlet Security For automatically generating such URL s Java provided some methods in its Java Servlet API. One of these m ethods is encoderedirecturl(string). The reason why URL rewriting did not succeed in bigger projects, although it is the cleaner and better concept, is that it is very extravagant, and if just one program m er forgets to use encoded URLs the whole session is lost for the client. Another fact is that m ost of the newer browser generations understand and accept Cookies. 3.5 Servlet Security Concepts One of the m ain points of a Java Servlet is its access to user specific data. This data is NOT the data stored at the user's computer, examples for user specific data are the user nam e, used during login at a web page, or a basket or cart, at e-shopping web pages. Servlets usually do not have access to the user's com puter and file system, the only exception m ight seem Cookies, but that is no real file system access by Servlets. The file system access for Cookies is controlled by web browsers. One problem of the internet is that it has its share of fiendish rogues. As com panies place m ore and m ore em phasis on online com m erce and begin to load their intranets with sensitive inform ation, security has becom e one of the m ost im portant topics in web program m ing. I nternet users, try to get into a com pany s network to get inform ation about their inform ation. This could just be com pany data like accounting or m arket data, but could also be custom er data, like credit card num bers and solvency. One thing those intruders use to get data are just dynam ically generated web pages, e.g. by Servlets, CGI scripts, active Author: Juxi Leitner Page 57
63 Servlet Security server pages (ASP), and various other concepts. They som etim es get data they want but should not be allowed to view by just changing the param eters they send to such program s. That is a very easy task, but it is also very easy to m inim ize that problem. Concepts for solving such problems are described in this chapter. I f Servlets are used with secure protocols such as SSL, the identifying of the peer is reliable. Servlets, based on the HTTP protocol, do also have the abilities to access various HTTP authentication types, but they do not have secure data traffic on the network HTTP Authentication The HTTP protocol provides built-in authentication support called basic authentication based on a sim ple challenge/ response, usernam e/ password m odel. With this technique, the web server m aintains a database of usernam es and passwords and identifies certain resources (files, directories, Servlets, etc.) as protected. When a user requests access to a protected resource, the server responds with a request for the client's usernam e and password. At this point, the browser usually pops up a dialog box where the user enters the information, and that input is sent back to the server as part of a second authorized request. I f the subm itted usernam e and password m atch the inform ation in the server's database, access is granted. The whole authentication process is handled by the server itself. Author: Juxi Leitner Page 58
64 Servlet Security Picture 3.c: A basic http authentication dialog (Opera 6.01) Though the user has to authenticate to get the data, the data traffic is NOT secured, which m eans that any interceptor can read the data, because it is just in plain text, but com bined with the HTTPS techniques, which encode the whole data traffic it is a sim ple way to secure the access to data Form- Based Authentication Servlets can also perform authentication without relying on HTTP authentication, by using HTML form s instead. Using this technique allows users to enter a site through a well-designed, descriptive and friendly login page. I t has the sam e concepts as the HTTP (basic) authentication, but allows the web page designers to m ake the login procedure look like the corporate identity of the web page. Author: Juxi Leitner Page 59
65 Servlet Security Custom Authentication Norm ally, client authentication is handled by the web server. The deploym ent descriptor tells the server which resources are to be restricted to which roles, and the server som ehow m anages the user/ group to role m apping. Custom Authentication allows the program m ers to im plem ent their authentication concepts in their Servlets, CGI-scripts Secure Sockets Layer (SSL) secure Hyper Text Transfer Protocol (HTTPS) Digital certificates encrypt data using Secure Sockets Layer (SSL) technology, the industry-standard m ethod for protecting web communications developed by Netscape Com m unications Corporation. The SSL security protocol provides data encryption, server authentication, m essage integrity, and optional client authentication for a TCP/ I P connection. Because SSL is built into all m ajor browsers and web servers, sim ply installing a digital certificate turns on their SSL capabilities. The SSL standard is an extension to the standard HTTP protocol and uses the Private Key I nfrastructure (PKI ) to assure secure internet transactions. Read m ore about the PKI in the Cryptography chapter. A m easurem ent of the strength of the SSL encryption is the length of the key that is used. The longer the key the harder it is for hackers, crackers or other interceptors to break the encryption. The two m ost used strengths are 40 bit and 128 bit. 128 bit encrypted transactions are trillions of times stronger (i.e. harder to break) than 40-bit sessions. Author: Juxi Leitner Page 60
66 Servlet Security To ensure to customers that the server is from the company it claims to be, com panies can use global server certificates. Those certificates are generated by those com panies and can be verified from the custom ers at their web pages. Installed digital certificates on a web server provide: Authentication of the web site: A digital certificate on a server autom atically com m unicates the site's authenticity to visitors' web browsers, confirm ing that the visitor is actually communicating with the right server, and not with a fraudulent site stealing credit card numbers or personal information. Privacy of private com m unications: Digital certificates encrypt the data visitors exchange with sites, to keep it safe from interception or tam pering using SSL (Secure Sockets Layer) technology, the industry-standard m ethod for protecting web communications. Nearly all web servers and all web browser are SSL capable, so it is an industry standard nowadays, which servers (com panies) and clients (customers) can rely on Digital Certificates More about them can be found in chapter Security features Servlets have, like every other Java application, the following advantage: m em ory access violations and strong typing violations are Author: Juxi Leitner Page 61
67 Servlet Security not possible; this m akes it nearly im possible for faulty Servlets to crash servers, like it is com m on in m ost C language server extension environments. Unlike any other current server extension API, Java Servlets provide strong security policy support. This is because all Java environm ents provide a Security Manager which can be used to control whether actions such as network or file access are to be perm itted. By default, all Servlets are "untrusted", and are not allowed to perform operations 2 such as accessing network services or local files. "Built into" the server Servlets, or digitally signed Servlets, m ay be trusted and therefore granted m ore perm ission by the Security Manager. A digital signature on the Java code m eans that the organization that signed the code "vouches for it" in som e sense. More about digital signature can be found in the chapter Cryptography. More about it can be found in chapter SAS II: Servlet security For our project we needed quite a lot of security. The concepts we used were the SSL technology for the whole data transferring between server and client. Therefore we configured the Apache web server application on our Linux server, to only allow SSL connections. The SSL key was generated by OpenSSL for Linux and used by m od_ssl for Apache. With SSL no data transfer to the server from any internet/ intranet client was in plain text, which m eans that even if the data was intercepted, the interceptor could not read the data, without the generated keys, which are usually not transferred. Author: Juxi Leitner Page 62
68 Servlet Security For Servlet security we used the session concepts. During login a session was created which then got an object assigned. The object was from a self-written class SessionData, which stored the m ain things needed for our application on the server. Those things were the username, the full XML menu structure and lots more. The code of the SessionData class can be found in Appendix B. All Servlets are inherited by SASI I Servlet, which contains the m ain security checks, like checking if there is an active session, if the user is allowed to access that Servlet and so on. Only if the security check allows access, the overloaded securedoget( ) or securedopost( ) is called. The security check is im plem ented in the function securitycheck() of the class SASIIServlet: A part of the SASIIServlet, where security is an issue: import java.lang.*; public abstract class SASIIServlet extends HttpServlet { /** * überprüft ob der aktuelle Zugriff(GET) erlaubt ist. * Ist er erlaubt wird securedoget aufgerufen. * Ist er NICHT erlaubt wird onerror aufgerufen */ public final void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { Author: Juxi Leitner Page 63
69 Servlet Security //res.setheader("pragma","no-cache"); } HttpSession session = req.getsession(false); int err = securitycheck(session); try{ if (err == SASIIException.ERR_NOTLOGGEDIN) throw new SASIIException(err, "Sie sind nicht eingeloggt"); if (err == SASIIException.ERR_NOPERMISSION) throw new SASIIException(err, "Sie haben keine Berechtigung dieses Servlet auszführen"); // Send Forbidden Error if (err == 0) securedoget(req, res); // session is OK, call derived securedoget } catch(sasiiexception se){ onerror(req, res, se); } /** * überprüft ob der aktuelle Zugriff(POST) erlaubt ist. * Ist er erlaubt wird securedopost aufgerufen. * Ist er NICHT erlaubt wird onerror aufgerufen */ public final void dopost(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { //res.setheader("pragma","no-cache"); HttpSession session = req.getsession(false); Author: Juxi Leitner Page 64
70 Servlet Security } int err = securitycheck(session); try{ if (err == SASIIException.ERR_NOTLOGGEDIN) throw new SASIIException(err,"Sie sind nicht eingeloggt"); if (err == SASIIException.ERR_NOPERMISSION) throw new SASIIException(err,"Sie haben keine Berechtigung dieses Servlet auszführen"); // Send Forbidden Error if (err == 0) securedopost(req, res); // session is OK, call derived securedopost } catch(sasiiexception se){ onerror(req, res, se); } /** * überpruft die aktuelle Session auf Gültigkeit * und Zugriffsrechte */ private int securitycheck (HttpSession session) { // Muß noch überprüfen if(session == null) { System.out.println ("session = null"); return SASIIException.ERR_NOTLOGGEDIN; } SessionData sd = (SessionData) session.getattribute ("SessionData"); if(sd!= null) { String cf = this.getclass().tostring(); if(sd.isclassfileallowed(cf.substring(cf.indexof Author: Juxi Leitner Page 65
71 Servlet Security } (" ")+1))) { return SASIIException.ERR_NOERROR; } else { return SASIIException.ERR_NOPERMISSION; } } else { System.out.println ("Session ungültig (" + sd); return SASIIException.ERR_NOTLOGGEDIN; } /** * sichere DoGet */ public void securedoget (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException, SASIIException{ throw new SASIIException (SASIIException. ERR_METHOD NOTSUPPORTED, "GET"); } /** * sichere DoPost */ public void securedopost (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException, SASIIException{ throw new SASIIException (SASIIException. ERR_METHODNOT SUPPORTED,"POST"); } /** * zeigt Fehler an. Author: Juxi Leitner Page 66
72 Servlet Security * Achtung!!! Hier darf kein getsessiondata() verwendet * werden. Es gibt also keine Möglichkeit auf die Session * oder die DB zuzugreifen. */ public void onerror (HttpServletRequest req, HttpServletResponse res, SASIIException error) throws ServletException, IOException { } } Author: Juxi Leitner Page 67
73 Java Security Concepts Within Insecure Networks' Epilogue 4. Epilogue & Future Outlook The m ore you seek security, the less of it you have. But the m ore you seek opportunity, the m ore likely it is that you will achieve the security that you desire. - Brian Tracy There will never be one-hundred percent security, but security leaks can be m inim ized. When program s are published over the internet, m illions of users can access them and contribute to them. Security leaks can be found by one of those, and the m ore people the higher is the chance to find those bugs or leaks. And the faster the leaks can be found the fast they can be eliminated. This tends to open source software. A change to open source would also a change the com puter com panies. They will not sell products anym ore they would sell services, like m aintenance of the software. This is similar to the change economy has gone through in the last century. Sun with its open source Java API tends to go this way. A lot of people use and therefore check Sun s source codes. I f bugs of leaks are found, program m ers first try to im plem ent solutions in their applications, and m aybe one out of hundred m ails Sun about the problem. Sun then adds this solution in the next release or the next update of their API, m aybe they even add it to their concepts, so that every application is then secured. At the moment Sun is working at: Users, authentication, and credentials: this m eans that Java should ext end it s securit y concept s t o include running- onbehalf-of concepts Author: Juxi Leitner
74 Epilogue Resource consum ption m anagem ent: to prevent Denial of Service (DoS) attacks, and e.g. to reduce the crashes of com puters, because too many windows are opened Grouping of perm issions: e.g. generate m yperm ission which includes FilePermissions and SocketPermissions, for easier usage and management of the permissions. Object level protection: sim ilar to the protection of SignedObject or SealedObject objects Signed content: How to ensure that m ultim edia content of an applet does not harm any policies? At the m om ent all im ages or sounds can be loaded. There are approaches to m ake secure applications, but they will never be one-hundred percent secure! Author: Juxi Leitner Page 69
75 Java Security Concepts Within Insecure Networks' Appendix Appendix A) Sources, Bibliography Java Security by Scott Oaks ISBN: The Java Servlet API from [Feb. 2002] Java Server Pages und Servlets by Brantner, Schmidt, Wabnitz, Wabnitz ISBN: Client Side State - HTTP Cookies from cookie_spec.html [March 2002] HTTP sessions, Servlets, and the session manager: WebSphere Application Server at doc/v35/ae/infocenter/was/ html 2002] [March PostgreSQL Database Documentation at 7.2/postgres/ [April 2002] SSL Documentation Technical Support at [April 2002] Secure Sockets Layer at [April 2002] Java Cryptography by Jonathan Knudsen ISBN: Evaluation of Server- Side Technologies In The Case of Sas II by Andreas Lehrbaum Diploma thesis at the HTBLuVA St. Pölten, Abt. EDVO [2002] Author: Juxi Leitner
76 Appendix B) Picture Index Picture 1.a: The SAS II project... 8 Picture 2.a: Resources of a computer Picture 2.b: Anatomy of Java applications Picture 2.c: The Bytecode Verifier Picture 2.d: The HotJava web browser Picture 2.e: Different instances of the class loader help to disam biguate the class names Picture 2.f: Relationship of the Java Security Manager and the Access Controller Picture 2.g: Data flow within the internet Picture 2.h: What is an engine? Picture 2.i: Certificate of a PGP message Picture 2.j: The key classes in Java Picture 2.k: The role of the keytool database, in the creation and execution of a signed JAR file Picture 3.a: Servlet Architecture Picture 3.b: Service calls to Servlets Picture 3.c: A basic http authentication dialog (Opera 6.01) Author: Juxi Leitner Page b
77 Appendix C) The SessionData class in the SAS II project import java.lang.*; import java.sql.*; import java.util.*; /** * Diese Klasse stellt die Daten die in der Session gespeichert * werden dar. **/ public class SessionData extends Object { private Connection dbcon; private Menu menu; // Objekt der XML Menüstruktur private String userloginname; private String username; private Vector useramt; private String ip; protected Vector classfiles; /** * Der Konstruktor erhält als Parameter die wichtigsten * gespeicherten Werte. uln user Login Name un user real name ua user Amt menu XML Menu Objekt dbcon DB Connection **/ SessionData(String uln, String un, Vector ua, Menu menu, Connection dbcon, String ip) { userloginname = uln; username = un; useramt = ua; this.menu = menu; this.dbcon = dbcon; this.ip = ip; //dbcon.setautocommit(false); classfiles = new Vector(); System.out.println ("eine SessionData wurde erzeugt: " + this); } /** * Der Destruktor soll dazu dienen die Speicherauslastung zu * minimieren. **/ public void finalize() { try{ if(dbcon!=null) dbcon.close(); }catch(sqlexception e) {} Author: Juxi Leitner Page c
78 Appendix } System.out.println ("Eine Session wurde zerstört (" + ip + ")" + this.hashcode()); /** * Zum hinzufügen dieser Java Klasse zum Vector der erlaubten * Klassen. cf Klassenname **/ public void addclassfile(string cf) { if(cf!= null) classfiles.add(cf); } /** * Funktion zum überprüfen, ob das Aufrufen dieser Klasse, * für diesen user erlaubt ist. * cf Klassenname Ob der Aufruf erlaubt ist(true) oder nicht(false) **/ public boolean isclassfileallowed(string cf) { if(cf == null) return false; } boolean back = false; Enumeration e = classfiles.elements(); while(e.hasmoreelements()){ String st = (String) e.nextelement(); if(st!= null && st.equals(cf)) back = true; } return back; /** * Zugriffsfunktion auf den User Login Name der User Login Name **/ public String getuserloginname() { return userloginname; } /** * Zugriffsfunktion auf den User Name der User Name */ public String getusername() { return username; } /** * Zugriffsfunktion auf den User Login Name der User Login Name Author: Juxi Leitner Page d
79 Appendix **/ public boolean hasuseramt(string ua) { return useramt.contains(ua); } /** * Zugriffsfunktion auf die DB Connection die DB Connection **/ public Connection getdbcon() { return dbcon; } /** * Zugriffsfunktion auf das Menü Objekt * das Menü Objekt */ public Menu getmenu() { return menu; } public String getcomputername() { return ip; //"[email protected]"; } public String getlicensenumber() { return " "; } public String getversionnumber() { return "v 0.1 pre-alpha"; } } public String tostring() { return "SessionData: " + userloginname + " " + username + " IP:" + ip; } Author: Juxi Leitner Page e
Homeland Security Red Teaming
Homeland Security Red Teaming Directs intergovernmental coordination Specifies Red Teaming Viewing systems from the perspective of a potential adversary Target hardening Looking for weakness in existing
Project Plan. 1.0 Introduction. 2.0 Roles and Responsibilities. 3.0 Project Development Model
Project Plan 1.0 Introduction This docum ent seeks to outline the planning, resources, scheduling and approach that will be used throughout the development of the VisiNet project. 2.0 Roles and Responsibilities
JAVA 2 Network Security
JAVA 2 Network Security M A R C O PISTOIA DUANE F. RELLER DEEPAK GUPTA MILIND NAGNUR ASHOK K. RAMANI PTR, UPPER http://www.phptr.com PRENTICE HALL SADDLE RIVER, NEW JERSEY 07458 Contents Foreword Preface
E-Commerce Security. The Client-Side Vulnerabilities. Securing the Data Transaction LECTURE 7 (SECURITY)
E-Commerce Security An e-commerce security system has four fronts: LECTURE 7 (SECURITY) Web Client Security Data Transport Security Web Server Security Operating System Security A safe e-commerce system
Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives
Introduction to Programming and Algorithms Module 1 CS 146 Sam Houston State University Dr. Tim McGuire Module Objectives To understand: the necessity of programming, differences between hardware and software,
Guide to Intel Rapid Storage
Guide to Intel Rapid Storage Overview I ntel Rapid Storage Technology provides new levels of protection, perform ance, and expandability for desktop and m obile platform s. Whether using one or m ultiple
Application Design and Development
C H A P T E R9 Application Design and Development Practice Exercises 9.1 What is the main reason why servlets give better performance than programs that use the common gateway interface (CGI), even though
Law, Ka Yee (2009) CRM adoption and its impact on organisational performance. PhD thesis, University of Nottingham.
Law, Ka Yee (2009) CRM adoption and its impact on organisational performance. PhD thesis, University of Nottingham. Access from the University of Nottingham repository: http://eprints.nottingham.ac.uk/10787/6/5-chapter_1.pdf
Java and Java Virtual Machine Security
Java and Java Virtual Machine Security Vulnerabilities and their Exploitation Techniques by Last Stage of Delirium Research Group http://lsd-pl.net Version: 1.0.0 Updated: October 2nd, 2002 Copyright c
E-commerce. Security. Learning objectives. Internet Security Issues: Overview. Managing Risk-1. Managing Risk-2. Computer Security Classifications
Learning objectives E-commerce Security Threats and Protection Mechanisms. This lecture covers internet security issues and discusses their impact on an e-commerce. Nov 19, 2004 www.dcs.bbk.ac.uk/~gmagoulas/teaching.html
CMSC 421, Operating Systems. Fall 2008. Security. URL: http://www.csee.umbc.edu/~kalpakis/courses/421. Dr. Kalpakis
CMSC 421, Operating Systems. Fall 2008 Security Dr. Kalpakis URL: http://www.csee.umbc.edu/~kalpakis/courses/421 Outline The Security Problem Authentication Program Threats System Threats Securing Systems
WEB SECURITY. Oriana Kondakciu 0054118 Software Engineering 4C03 Project
WEB SECURITY Oriana Kondakciu 0054118 Software Engineering 4C03 Project The Internet is a collection of networks, in which the web servers construct autonomous systems. The data routing infrastructure
INTRODUCTION TO SOA GATEWAYS: BEST PRACTICES, BENEFITS & REQUIREMENTS
INTRODUCTION TO SOA GATEWAYS: BEST PRACTICES, BENEFITS & REQUIREMENTS Learn best practices and common deployment scenarios of SOA Gateways and why they are an essential component of a secure, robust and
Enabling SSL and Client Certificates on the SAP J2EE Engine
Enabling SSL and Client Certificates on the SAP J2EE Engine Angel Dichev RIG, SAP Labs SAP AG 1 Learning Objectives As a result of this session, you will be able to: Understand the different SAP J2EE Engine
Agent Languages. Overview. Requirements. Java. Tcl/Tk. Telescript. Evaluation. Artificial Intelligence Intelligent Agents
Agent Languages Requirements Overview Java Tcl/Tk Telescript Evaluation Franz J. Kurfess, Cal Poly SLO 211 Requirements for agent Languages distributed programming large-scale (tens of thousands of computers)
What is Web Security? Motivation
[email protected] http://www.brucker.ch/ Information Security ETH Zürich Zürich, Switzerland Information Security Fundamentals March 23, 2004 The End Users View The Server Providers View What is Web
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
Securing your Online Data Transfer with SSL
Securing your Online Data Transfer with SSL A GUIDE TO UNDERSTANDING SSL CERTIFICATES, how they operate and their application 1. Overview 2. What is SSL? 3. How to tell if a Website is Secure 4. What does
CSC 551: Web Programming. Spring 2004
CSC 551: Web Programming Spring 2004 Java Overview Design goals & features platform independence, portable, secure, simple, object-oriented, Programming models applications vs. applets vs. servlets intro
Is your data safe out there? -A white Paper on Online Security
Is your data safe out there? -A white Paper on Online Security Introduction: People should be concerned of sending critical data over the internet, because the internet is a whole new world that connects
Last update: February 23, 2004
Last update: February 23, 2004 Web Security Glossary The Web Security Glossary is an alphabetical index of terms and terminology relating to web application security. The purpose of the Glossary is to
Crash Course in Java
Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J. Johns also: Java in a Nutshell Java Network Programming and Distributed Computing Netprog 2002 Java Intro 1 What is
Securing your Online Data Transfer with SSL A GUIDE TO UNDERSTANDING SSL CERTIFICATES, how they operate and their application INDEX 1. Overview 2. What is SSL? 3. How to tell if a Website is Secure 4.
Security Goals Services
1 2 Lecture #8 2008 Freedom from danger, risk, etc.; safety. Something that secures or makes safe; protection; defense. Precautions taken to guard against crime, attack, sabotage, espionage, etc. An assurance;
HP ProtectTools Embedded Security Guide
HP ProtectTools Embedded Security Guide Document Part Number: 364876-001 May 2004 This guide provides instructions for using the software that allows you to configure settings for the HP ProtectTools Embedded
Overview of CSS SSL. SSL Cryptography Overview CHAPTER
CHAPTER 1 Secure Sockets Layer (SSL) is an application-level protocol that provides encryption technology for the Internet, ensuring secure transactions such as the transmission of credit card numbers
SBClient SSL. Ehab AbuShmais
SBClient SSL Ehab AbuShmais Agenda SSL Background U2 SSL Support SBClient SSL 2 What Is SSL SSL (Secure Sockets Layer) Provides a secured channel between two communication endpoints Addresses all three
Java Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
Using EMC Unisphere in a Web Browsing Environment: Browser and Security Settings to Improve the Experience
Using EMC Unisphere in a Web Browsing Environment: Browser and Security Settings to Improve the Experience Applied Technology Abstract The Web-based approach to system management taken by EMC Unisphere
Information Security
Information Security Dr. Vedat Coşkun Malardalen September 15th, 2009 08:00 10:00 [email protected] www.isikun.edu.tr/~vedatcoskun What needs to be secured? With the rapid advances in networked
Three attacks in SSL protocol and their solutions
Three attacks in SSL protocol and their solutions Hong lei Zhang Department of Computer Science The University of Auckland [email protected] Abstract Secure Socket Layer (SSL) and Transport Layer
Cloud Computing. Up until now
Cloud Computing Lecture 11 Virtualization 2011-2012 Up until now Introduction. Definition of Cloud Computing Grid Computing Content Distribution Networks Map Reduce Cycle-Sharing 1 Process Virtual Machines
Lecture 9: Application of Cryptography
Lecture topics Cryptography basics Using SSL to secure communication links in J2EE programs Programmatic use of cryptography in Java Cryptography basics Encryption Transformation of data into a form that
JAVA WEB START OVERVIEW
JAVA WEB START OVERVIEW White Paper May 2005 Sun Microsystems, Inc. Table of Contents Table of Contents 1 Introduction................................................................. 1 2 A Java Web Start
Enterprise Security Critical Standards Summary
Enterprise Security Critical Standards Summary The following is a summary of key points in the Orange County Government Board of County Commissioners (OCGBCC) security standards. It is necessary for vendors
BlackBerry Enterprise Service 10. Secure Work Space for ios and Android Version: 10.1.1. Security Note
BlackBerry Enterprise Service 10 Secure Work Space for ios and Android Version: 10.1.1 Security Note Published: 2013-06-21 SWD-20130621110651069 Contents 1 About this guide...4 2 What is BlackBerry Enterprise
Java Programming. Binnur Kurt [email protected]. Istanbul Technical University Computer Engineering Department. Java Programming. Version 0.0.
Java Programming Binnur Kurt [email protected] Istanbul Technical University Computer Engineering Department Java Programming 1 Version 0.0.4 About the Lecturer BSc İTÜ, Computer Engineering Department,
S y s t e m A r c h i t e c t u r e
S y s t e m A r c h i t e c t u r e V e r s i o n 5. 0 Page 1 Enterprise etime automates and streamlines the management, collection, and distribution of employee hours, and eliminates the use of manual
Name: 1. CSE331: Introduction to Networks and Security Fall 2003 Dec. 12, 2003 1 /14 2 /16 3 /16 4 /10 5 /14 6 /5 7 /5 8 /20 9 /35.
Name: 1 CSE331: Introduction to Networks and Security Final Fall 2003 Dec. 12, 2003 1 /14 2 /16 3 /16 4 /10 5 /14 6 /5 7 /5 8 /20 9 /35 Total /135 Do not begin the exam until you are told to do so. You
DeskNow. Ventia Pty. Ltd. Advanced setup. Version : 3.2 Date : 4 January 2007
Ventia Pty. Ltd. DeskNow Advanced setup Version : 3.2 Date : 4 January 2007 Ventia Pty Limited A.C.N. 090 873 662 Web : http://www.desknow.com Email : [email protected] Overview DeskNow is a computing platform
SSL/TLS: The Ugly Truth
SSL/TLS: The Ugly Truth Examining the flaws in SSL/TLS protocols, and the use of certificate authorities. Adrian Hayter CNS Hut 3 Team [email protected] Contents Introduction to SSL/TLS Cryptography
Restraining Execution Environments
Restraining Execution Environments Segurança em Sistemas Informáticos André Gonçalves Contents Overview Java Virtual Machine: Overview The Basic Parts Security Sandbox Mechanisms Sandbox Memory Native
Transport Layer Security Protocols
SSL/TLS 1 Transport Layer Security Protocols Secure Socket Layer (SSL) Originally designed to by Netscape to secure HTTP Version 2 is being replaced by version 3 Subsequently became Internet Standard known
Introduction...3 Terms in this Document...3 Conditions for Secure Operation...3 Requirements...3 Key Generation Requirements...
Hush Encryption Engine White Paper Introduction...3 Terms in this Document...3 Conditions for Secure Operation...3 Requirements...3 Key Generation Requirements...4 Passphrase Requirements...4 Data Requirements...4
Adobe Flash Player and Adobe AIR security
Adobe Flash Player and Adobe AIR security Both Adobe Flash Platform runtimes Flash Player and AIR include built-in security and privacy features to provide strong protection for your data and privacy,
7 Network Security. 7.1 Introduction 7.2 Improving the Security 7.3 Internet Security Framework. 7.5 Absolute Security?
7 Network Security 7.1 Introduction 7.2 Improving the Security 7.3 Internet Security Framework 7.4 Firewalls 7.5 Absolute Security? 7.1 Introduction Security of Communications data transport e.g. risk
Risks with web programming technologies. Steve Branigan Lucent Technologies
Risks with web programming technologies Steve Branigan Lucent Technologies Risks with web programming technologies Abstract Java applets and their kind are bringing new life to the World Wide Web. Through
Web Payment Security. A discussion of methods providing secure communication on the Internet. Zhao Huang Shahid Kahn
Web Payment Security A discussion of methods providing secure communication on the Internet Group Members: Peter Heighton Zhao Huang Shahid Kahn 1. Introduction Within this report the methods taken to
Understanding digital certificates
Understanding digital certificates Mick O Brien and George R S Weir Department of Computer and Information Sciences, University of Strathclyde Glasgow G1 1XH [email protected], [email protected]
OOo Digital Signatures. Malte Timmermann Technical Architect Sun Microsystems GmbH
OOo Digital Signatures Malte Timmermann Technical Architect Sun Microsystems GmbH About the Speaker Technical Architect in OpenOffice.org/StarOffice development OOo/StarOffice developer since 1991/94 Main
Content Teaching Academy at James Madison University
Content Teaching Academy at James Madison University 1 2 The Battle Field: Computers, LANs & Internetworks 3 Definitions Computer Security - generic name for the collection of tools designed to protect
APPLETS AND NETWORK SECURITY: A MANAGEMENT OVERVIEW
84-10-25 DATA SECURITY MANAGEMENT APPLETS AND NETWORK SECURITY: A MANAGEMENT OVERVIEW Al Berg INSIDE Applets and the Web, The Security Issue, Java: Secure Applets, Java: Holes and Bugs, Denial-of-Service
Threat Modeling. Frank Piessens ([email protected] ) KATHOLIEKE UNIVERSITEIT LEUVEN
Threat Modeling Frank Piessens ([email protected] ) Secappdev 2007 1 Overview Introduction Key Concepts Threats, Vulnerabilities, Countermeasures Example Microsoft s Threat Modeling Process
Xerox DocuShare Security Features. Security White Paper
Xerox DocuShare Security Features Security White Paper Xerox DocuShare Security Features Businesses are increasingly concerned with protecting the security of their networks. Any application added to a
You re FREE Guide SSL. (Secure Sockets Layer) webvisions www.webvisions.com +65 6868 1168 [email protected]
SSL You re FREE Guide to (Secure Sockets Layer) What is a Digital Certificate? SSL Certificates, also known as public key certificates or Digital Certificates, are essential to secure Internet browsing.
Sync Security and Privacy Brief
Introduction Security and privacy are two of the leading issues for users when transferring important files. Keeping data on-premises makes business and IT leaders feel more secure, but comes with technical
Is Drupal secure? A high-level perspective on web vulnerabilities, Drupal s solutions, and how to maintain site security
Is Drupal secure? A high-level perspective on web vulnerabilities, Drupal s solutions, and how to maintain site security Presented 2009-05-29 by David Strauss Thinking Securely Security is a process, not
by New Media Solutions 37 Walnut Street Wellesley, MA 02481 p 781-235-0128 f 781-235-9408 www.avitage.com Avitage IT Infrastructure Security Document
Avitage IT Infrastructure Security Document The purpose of this document is to detail the IT infrastructure security policies that are in place for the software and services that are hosted by Avitage.
Secure Network Communications FIPS 140 2 Non Proprietary Security Policy
Secure Network Communications FIPS 140 2 Non Proprietary Security Policy 21 June 2010 Table of Contents Introduction Module Specification Ports and Interfaces Approved Algorithms Test Environment Roles
SecureDoc Disk Encryption Cryptographic Engine
SecureDoc Disk Encryption Cryptographic Engine FIPS 140-2 Non-Proprietary Security Policy Abstract: This document specifies Security Policy enforced by SecureDoc Cryptographic Engine compliant with the
This guide will go through the common ways that a user can make their computer more secure.
A beginners guide in how to make a Laptop/PC more secure. This guide will go through the common ways that a user can make their computer more secure. Here are the key points covered: 1) Device Password
Chapter 8. Network Security
Chapter 8 Network Security Cryptography Introduction to Cryptography Substitution Ciphers Transposition Ciphers One-Time Pads Two Fundamental Cryptographic Principles Need for Security Some people who
Java and Java Virtual Machine security vulnerabilities and their exploitation techniques
Java and Java Virtual Machine security vulnerabilities and their exploitation techniques by Last Stage of Delirium Research Group http://lsd-pl.net Version: 1.0 Updated: September 3 rd, 2002 Copyright
CS 356 Lecture 27 Internet Security Protocols. Spring 2013
CS 356 Lecture 27 Internet Security Protocols Spring 2013 Review Chapter 1: Basic Concepts and Terminology Chapter 2: Basic Cryptographic Tools Chapter 3 User Authentication Chapter 4 Access Control Lists
Key Management Interoperability Protocol (KMIP)
(KMIP) Addressing the Need for Standardization in Enterprise Key Management Version 1.0, May 20, 2009 Copyright 2009 by the Organization for the Advancement of Structured Information Standards (OASIS).
What is network security?
Network security Network Security Srinidhi Varadarajan Foundations: what is security? cryptography authentication message integrity key distribution and certification Security in practice: application
Plain English Guide To Common Criteria Requirements In The. Field Device Protection Profile Version 0.75
Plain English Guide To Common Criteria Requirements In The Field Device Protection Profile Version 0.75 Prepared For: Process Control Security Requirements Forum (PCSRF) Prepared By: Digital Bond, Inc.
ITSC Training Courses Student IT Competence Programme SIIS1 Information Security
ITSC Training Courses Student IT Competence Programme SI1 2012 2013 Prof. Chan Yuen Yan, Rosanna Department of Engineering The Chinese University of Hong Kong SI1-1 Course Outline What you should know
TEXAS BOARD OF NURSING 3.4.1.a. EDUCATION GUIDELINE Approval Process for a New Dean/Director/Coordinator, or New Interim Dean/Director/Coordinator
TEXAS BOARD OF NURSING 3.4.1.a. EDUCATION GUIDELINE Approval Process for a New Dean/Director/Coordinator, or New Interim Dean/Director/Coordinator Revised: 01/02/2013 Rule 214.6 sets forth the requirements
Certificates for computers, Web servers, and Web browser users
Entrust Managed Services PKI Certificates for computers, Web servers, and Web browser users Document issue: 3.0 Date of issue: June 2009 Copyright 2009 Entrust. All rights reserved. Entrust is a trademark
Chapter 17. Transport-Level Security
Chapter 17 Transport-Level Security Web Security Considerations The World Wide Web is fundamentally a client/server application running over the Internet and TCP/IP intranets The following characteristics
(n)code Solutions CA A DIVISION OF GUJARAT NARMADA VALLEY FERTILIZERS COMPANY LIMITED P ROCEDURE F OR D OWNLOADING
(n)code Solutions CA A DIVISION OF GUJARAT NARMADA VALLEY FERTILIZERS COMPANY LIMITED P ROCEDURE F OR D OWNLOADING a Class IIIc SSL Certificate using BEA Weblogic V ERSION 1.0 Page 1 of 8 Procedure for
CrashPlan Security SECURITY CONTEXT TECHNOLOGY
TECHNICAL SPECIFICATIONS CrashPlan Security CrashPlan is a continuous, multi-destination solution engineered to back up mission-critical data whenever and wherever it is created. Because mobile laptops
Chapter 1 Fundamentals of Java Programming
Chapter 1 Fundamentals of Java Programming Computers and Computer Programming Writing and Executing a Java Program Elements of a Java Program Features of Java Accessing the Classes and Class Members The
Keep Yourself Safe from the Prying Eyes of Hackers and Snoopers!
Protect Your Privacy Online P 7/1 Keep Yourself Safe from the Prying Eyes of Hackers and Snoopers! With the information in this article you can: Find out what secret information your PC is sharing with
Network Security and Firewall 1
Department/program: Networking Course Code: CPT 224 Contact Hours: 96 Subject/Course WEB Access & Network Security: Theoretical: 2 Hours/week Year Two Semester: Two Prerequisite: NET304 Practical: 4 Hours/week
Figure 9-1: General Application Security Issues. Application Security: Electronic Commerce and E-Mail. Chapter 9
Figure 9-1: General Application Application Security: Electronic Commerce and E-Mail Chapter 9 Panko, Corporate Computer and Network Security Copyright 2004 Prentice-Hall Executing Commands with the Privileges
Contents Introduction xxvi Chapter 1: Understanding the Threats: E-mail Viruses, Trojans, Mail Bombers, Worms, and Illicit Servers
Contents Introduction xxvi Chapter 1: Understanding the Threats: E-mail Viruses, Trojans, Mail Bombers, Worms, and Illicit Servers 1 Introduction 2 Essential Concepts 3 Servers, Services, and Clients 3
New Features... 1 Installation... 3 Upgrade Changes... 3 Fixed Limitations... 4 Known Limitations... 5 Informatica Global Customer Support...
Informatica Corporation B2B Data Exchange Version 9.5.0 Release Notes June 2012 Copyright (c) 2006-2012 Informatica Corporation. All rights reserved. Contents New Features... 1 Installation... 3 Upgrade
Using etoken for SSL Web Authentication. SSL V3.0 Overview
Using etoken for SSL Web Authentication Lesson 12 April 2004 etoken Certification Course SSL V3.0 Overview Secure Sockets Layer protocol, version 3.0 Provides communication privacy over the internet. Prevents
Java History. Java History (cont'd)
Java History Created by James Gosling et. al. at Sun Microsystems in 1991 "The Green Team" Were to investigate "convergence" technologies Gosling created a processor-independent language for '*7', a 2-way
SSL VPN vs. IPSec VPN
SSL VPN vs. IPSec VPN White Paper 254 E. Hacienda Avenue Campbell, CA 95008 www.arraynetworks.net (408) 378-6800 1 SSL VPN vs. IPSec VPN Copyright 2002 Array Networks, Inc. SSL VPN vs. IPSec VPN White
Internet Programming. Security
Internet Programming Security Introduction Security Issues in Internet Applications A distributed application can run inside a LAN Only a few users have access to the application Network infrastructures
Certify your Software Integrity with thawte Code Signing Certificates
Certify your Software Integrity with thawte Code Signing Certificates Sign your code and active content for secure online distribution... 1. Overview 2. Why a thawte Code Signing Certificate? 3. Who needs
www.virtualians.pk CS506 Web Design and Development Solved Online Quiz No. 01 www.virtualians.pk
CS506 Web Design and Development Solved Online Quiz No. 01 Which of the following is a general purpose container? JFrame Dialog JPanel JApplet Which of the following package needs to be import while handling
Chapter 8 Security. IC322 Fall 2014. Computer Networking: A Top Down Approach. 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012
Chapter 8 Security IC322 Fall 2014 Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012 All material copyright 1996-2012 J.F Kurose and K.W. Ross, All
Example of Standard API
16 Example of Standard API System Call Implementation Typically, a number associated with each system call System call interface maintains a table indexed according to these numbers The system call interface
mod_ssl Cryptographic Techniques
mod_ssl Overview Reference The nice thing about standards is that there are so many to choose from. And if you really don t like all the standards you just have to wait another year until the one arises
Bypassing Memory Protections: The Future of Exploitation
Bypassing Memory Protections: The Future of Exploitation Alexander Sotirov [email protected] About me Exploit development since 1999 Research into reliable exploitation techniques: Heap Feng Shui in JavaScript
EUCIP - IT Administrator. Module 5 IT Security. Version 2.0
EUCIP - IT Administrator Module 5 IT Security Version 2.0 Module 5 Goals Module 5 Module 5, IT Security, requires the candidate to be familiar with the various ways of protecting data both in a single
Chapter 7: Network security
Chapter 7: Network security Foundations: what is security? cryptography authentication message integrity key distribution and certification Security in practice: application layer: secure e-mail transport
ERserver. iseries. Secure Sockets Layer (SSL)
ERserver iseries Secure Sockets Layer (SSL) ERserver iseries Secure Sockets Layer (SSL) Copyright International Business Machines Corporation 2000, 2002. All rights reserved. US Government Users Restricted
Lecture 9 - Message Authentication Codes
Lecture 9 - Message Authentication Codes Boaz Barak March 1, 2010 Reading: Boneh-Shoup chapter 6, Sections 9.1 9.3. Data integrity Until now we ve only been interested in protecting secrecy of data. However,
