|
|||||||||
Java is a trademark of Sun Microsystems, Inc. See here for more information. |
IAIK/Java (tm) VM for TCP Implementationsv0.1 1. IntroductionThe IAIK/Java VM for TCP Implementations is an amendment to the OpenJDK implementation realizing various services for the support of Trusted Computing functionality for legacy Java (tm) applications. It measures data according to the Trusted Computing Group (TCG) specifications using TPM functionality, thus allowing full integration of the Java VM into a Trusted Computing Platform (TCP) by extending a given chain-of-trust into the managed Java environment. The functionality is achieved through hooks in the code. IAIK/Java VM for TCP Implementations is deployed as a patch to the OpenJDK sources. The measurement architecture is named Integrity Service Provider
(ISP). The current implementation supports measurement of classes,
JAR-files and configuration files at run-time. A further feature is to
enforce that the Java VM runs only with known classes. There are two
modes this software can be run in:
The ISP uses a Trusted Software Stack (TSS) as defined by the TCG
specifications to perform the measurements. The Platform Configuration Register
(PCR) usage model is as follows:
The only way of configuring this behavior at the moment is through editing the source files. Development of the IAIK/Java VM for TCP Implementations is supported by the European Commission as part of the OpenTC project (Ref. Nr. 027635). For more information about the OpenTC project please refer to the OpenTC Project section below. The IAIK/Java VM for TCP Implementations package is developed and maintained at the Institute for Applied Information Processing and Communication (Institut fuer Angewandte Informationsverarbeitung und Kommunikation, IAIK), at Graz University of Technology (TU Graz). 1.1. OpenTC ProjectThe Open Trusted Computing (OpenTC) consortium is an R&D project focusing on the development of trusted and secure computing systems based on open source software. The project targets traditional computer platforms as well as embedded systems such as mobile phones. The goal of OpenTC is to reduce system-related threats, errors and malfunctions. The lack of platform security in today's computers has given rise to waves of successful attacks, resulting in severe damages to enterprises and potential failure of critical infrastructures. The OpenTC consortium will define and implement an open Trusted Computing framework. The architecture is based on security mechanisms provided by low level operating system layers with isolation properties and interfaces to Trusted Computing hardware. These layers make it possible to leverage enhanced trust and security properties of the platform for standard operating systems, middleware, and applications. For more information about the OpenTC project please refer to the OpenTC website. 1.2. A Word of CautionPlease note that the implementation is intended to be used for testing and experimentation purposes only. Moreover it has to be stressed that this is experimental software. Its main purpose currently is research and education. 1.3. LicenseIAIK/Java VM for TCP Implementations is using a dual licensing model:
2. Technical DocumentationThe following sections outline requirements, commands and usage examples for TCPVM. 2.1. RequirementsTCPVM require hardware as well as software support components to achieve full functionality. For some of the components there are several options. This section lists these options and provides some background information that helps to pick a suitable component. Naturally, a hardware TPM or a TPM emulator is a "must" requirement. Additionally, administrative (i.e. root) permissions are usually required to directly access the TPM device. 2.1.1. OpenJDK sourcesTo use the TCPVM you need to download the source code of OpenJDK as available on OpenJDK. The OpenJDK version used to develop this software is jdk7-b23. In some cases the patch may be successfully applied to other versions than jdk7-b23, however, this has not been tested. Note that the OpenJDK has numerous build requirements on its own which this documentation does not cover. Refer to OpenJDK Build and the README linked there to get an overview over the external dependencies and assistance in building the OpenJDK. 2.2. Compiling and InstallingThis section will guide you through the build and installation process. It covers the TPM Emulator from ETH, the TrouSerS TSS stack, the IAIK/OpenTC jTSS Wrapper and finally the IAIK/Java VM for TCP Implementations. 2.2.1. Building and Installing the TPM EmulatorIf you have a hardware TPM you can skip this step (but you have to make sure that you have a hardware driver installed for your TPM that is compatible with TrouSerS).
2.2.2. Building and Installing the TrouSerS TSS stack
2.2.3. TSS WrapperThe software requires the IAIK/OpenTC jTSS Wrapper for the build process to complete. This component has to be downloaded from the IAIK/OpenTC jTSS Wrapper download site and built accordingly. The version TCPVM has been tested with is IAIK/OpenTC jTSS Wrapper v. 0.3. It is recommended to execute the testcases shipped with the IAIK/OpenTC jTSS Wrapper to make sure that the TPM interface has been set up correctly. 2.2.4. Building and Installing the IAIK/Java VM for TCP ImplementationsThis section provides a step by step guide of the build process for the IAIK/Java VM for TCP Implementations. Download and unpack the OpenJDK source and setup the external requirements (system, compiler, dependencies, etc.) as described on OpenJDK Build. The downloads are available from OpenJDK. The two files containing the OpenJDK source are "openjdk-7-ea-src-b23-30_oct_2007.zip" and "jdk-7-ea-plug-b23-linux-i586-30_oct_2007.jar". A binary snapshot can be downloaded from OpenJDK Build and is needed for the build as well. At first skip the next step (the application of the patch files) and try to to create a clean, unmodfied build of the JDK to make sure that your environment is up to the task. After the unpatched build completes, erase the results as they will interfere with repeated builds. Apply the patch using commands similar to Check that the output contains no errors (i.e. that any of the hunks actually failed to be inserted). Differences in line numbers will probably occur - the output will say something like "Hunk #1 succeeded at 93 (offset -16 lines)." (for several of the hunks). Copy the binary files created by building the IAIK/OpenTC jTSS Wrapper
into the OpenJDK src tree at Open the build script (build.sh) with your favorite text editor and customize the following options:
Now save and close the build script. Build the TCPVM with Note: For linking, it is assumed that the libtspi library of TrouSerS is located in a path known to your linker. Furthermore the OpenSSL crypto library is needed as well. It is not possible to set the LD_LIBRARY_PATH variable as the OpenJDK build disallows this. After the build, you should have a working copy of OpenJDK in the output directory specified in the build script. You can test it by running the demo applications. 2.3. UsageThere is no special installation procedure required to use the IAIK/Java VM for TCP Implementations. For simple demonstration purposes, the demo programs in the output directory can be executed using the newly built java binary. To access the functionality provided with this patch, the following command-line arguments can be used:
Remember to start the TrouSerS CS daemon tcsd before using the TCPVM. 2.4. ExampleThis section provides an example for the usage of this software using a demo application provided with the OpenJDK. The TCPVM activates the security manager by default. To work with TCPVM and the demos, certain security permissions have to be set. The easiest way to do this is in a file ".java.policy" in your home directory. For the Metalworks demo that is used in the following paragraphs, the file should have the following contents: grant { permission java.util.PropertyPermission "sun.awt.noerasebackground", "read,write"; }; Move into the build directory as specified in the build script (see build instructions) and change into the demo/jfc/Metalworks directory.
3. SupportFor questions, bug reports, feature requests, patches, criticism or suggestions please use the following mailing list: trustedjava-support@lists.sourceforge.net. 4. TrademarksJava (tm) and all Java based marks are a trademark or registered trademark of Sun Microsystems, Inc, in the United States and other countries. All other trademarks and copyrights are property of their respective owners. 5. Revision History
|
||||||||