FAQ for HW3, Part II

How do we run the project?

There are three main classes in the tarball: Router, Server and Client. The commands for running them are as follows: Run the programs in the same order as above. The port numbers must be positive integers greater than 1024. While running the Server (Client), use the same server (client) port number which you used in the Router. But server-port and client-port must be different values. If your Router is unable to listen at a port, someone else may be using it: try another value. After a single transaction, terminate the Router manually (by pressing Control-C); otherwise, the Router will run forever.

The account-number should be the last three digits of your dc cluster login (and not your last name as originally stated). If you are a team of two, run your code with the lesser of the two account numbers.

What do these classes do?

The Router simply forwards the messages between the Server and Client. As stated in the homework, the Client first authenticates the Server. Once the Server is authenticated, the Client then sends its credit card information, appropriately encrypted, to the Server.

What is the public key of the server?

The server's public key is contained in the file pk.txt that you can download as part of the code for the client/server/router.

How do we begin attacking the authentication protocol?

Use Router.java to eavesdrop on the conversation between the client and the server. Recall also that you have the server's public key (see previous question). You are also free to modify the source code for Router.java and generate your own Router.class; this will allow you to implement active attacks as discussed in class.

You are not supposed to use any other sort of attack; for example, you are not allowed to disassemble the java code (in the real world, the client and server would be running remotely, and you would not have direct access to the executables). If we have reason to believe you have done this, your homework submission may be disqualified.

Finally, a word of caution: both the Server and Client are currently set up to deal only with "good" Clients and Servers (i.e., the version provided in this project). Once you start modifying the Router, this might result in unpredictable behaviour!

How should we submit everything?

Keep everything in two directories, one for each part. The first portion of the homework should go in a directory named "part1" and the second in a directory named "part2".

For part 2, you should have the following files: