[ Sameer Ajmani : Home
: Projects : TEP ]
Due to changes in the Cryptix crypto library, this code no longer
compiles (and I can't seem to find the old Cryptix library). If you are
interested in using this code, let me know and I may port it to use the
new Cryptix library.
This page provides access to the implementation of TEP, a Trusted
Execution Platform for multiparty computation. This distribution is
provided for those who wish to explore the design.
The Source
The source, makefile, and test scripts for TEP can be found here. Unzip this file in the directory where you
want the source to reside. Edit the variables at the top of the make file
to match your environment. To build the source, just type make in
the root source directory.
This file includes four test programs in the apps subdirectory.
To build each of the test programs, type make in each of the
directories under the apps directory. The test script t
runs each of these programs and outputs timing data.
Several public and private key pairs and a SPKI certificate cache are
included in the spki subdirectory. Use the SDSI/SPKI Certificate
Tool, described below, to examine this data.
Required Packages
You will need to have each of these JAR files in your CLASSPATH to run
TEP:
- rt.jar: JRE
1.2: The Java Runtime Environment
- tep.jar: TEP: The Trusted Execution
Platform Implementation. This can also be built from the source.
- junit.jar: JUnit: A Java Testing
Framework by Kent Beck and Erich Gamma
- sdsi.jar: SDSI/SPKI: A Certificate
and Public Key Management Tool
- cryptix-jce-provider.jar: Cryptix JCE: A clean-room
implementation of the Java Cryptography Extension, used for HMAC-MD5 message
authentication codes
- jce.zip: Open JCE: A
clean-room implementation of the Java Cryptography Extension, used for
RSA/ECB/PKCS1Padding encryption, RSAwithMD5 signatures, and RC4 (RSA's
patent expires on September 21, 2000)
The Programs
TEP uses a number of programs to implement various features. Each
program has its own main class; run them using java at the command
line:
- sdsi.SDSIMainFrame: SDSI/SPKI Certificate Management program:
This program allows you to generate public keys, certificates, and proofs
(certificate chains). Save these objects to files for use by TEP.
- tep.TepClient: the TEP client: The main method in this class
allows you to run any of the test programs provided with the source. To
create custom client behavior, you should edit the
tep.TepClient.run() method.
- tep.TepServer: the TEP server: this server needs to know TEP's
public and private keys and the host where the Environment Prover server is
running.
- tep.ProverServer: the Environment Prover server : this server
generates proofs from a SDSI certificate cache.
- tep.DataServer: the Data server : this server accepts
connections from the programs that run on TEP and is designed to support the
test applications. To customize its behavior, you will need to modify
tep.DataServerThread.readRequests(). This server needs to know the
data server's public and private keys, the name by which its referred in the
test programs (currently "dns data"), and TEP's public key. The test
programs currently expect the data server to be running on the same host as
TEP.
- tep.TepTestMain: TEP test suite : this program runs a number of
unit tests and example programs on TEP. This test suite runs all the
necessary servers and clients as Java threads. The tests must be run
from the root source directory. The test script t runs the
suite with the minimal classpath and policies required by TEP, but expects
to find all the necessary JAR files in the root source directory.