CS5430 Project: Spring 2009

CS5430 students are expected to participate in a group project to build an application that has non-trivial security content. Each group this semester will be implementing an electronic marketplace. This document outlines what is expected and offers some advice.

An Electronic Marketplace

Connecting buyers with sellers facilitates commerce. Once upon a time, such transactions were facilitated by having a well known venue where sellers would congregate and buyers could go to make purchases. In modern times, physical locations like the local auction house or a nation's stock market are being replaced by electronic marketplaces. eBay and NASDAQ are examples.

An electronic marketplace provides operations their clients can trust to facilitate buying and selling. Whether it is antiques or financial instruments (e.g., stocks, bonds, and even collateralized debt obligations), an electronic marketplace must support the following kinds of operations:

The protocol for matching a buyer and seller and for determining the terms of a transaction depends on the kind of market being implemented by the electronic marketplace. Perhaps the simplest protocol is where the buyer that is matched with an item (hence seller) is the buyer the makes the first offer exceeding the seller's reserve price. But protocols exist where the buyer matched to an item is the one offering the largest amount (that exceeds the reserve price) at the end of some interval (pre-specified by the buyer or by the electronic marketplace).

Besides implementing a protocol for matching buyers and sellers, your electronic marketplace must be a networked system that includes:

The buyer's app and seller's app might be implemented by the same program or by different programs. In fact, they might be implemented by a web browser (e.g., Firefox), perhaps augmented by an "extension". The backend servers might be implemented as stand-alone servers, they might be implemented using web servers, and/or they might be implemented using an on-line database system. Moreover, those interested in a real challenge might implement the backend servers in a decentralized, peer-to-peer fashion (perhaps incorporated into the application program that implements the buyer's and seller's apps).

In some markets, item availability and/or prices are highly volatile. The stock market is an example. Therefore, electronic markets sometimes support programmed trading. Buyers and sellers upload programs---which we will call trading agents---to the electronic marketplace. And the electronic marketplace provides an interface to execute trading agents, allowing them to monitor prices, update reserve prices, and make and withdraw purchase offers. In short, a trading agent "speaks for" (represents) a buyer or seller.

To support trading agents in an electronic marketplace is an ambitious undertaking, so don't attempt this unless you want a challenge. You would define a programming language that buyers and sellers can use for implementing their trading agents; this language might be general purpose (e.g., x86 assembly, C, Java, Perl, Python, or JavaScript) or special purpose (e.g., some interpreted language of your own design). And you would add suitable security features to the electronic marketplace. To wit, the existence of trading agents would mean the electronic marketplace would somehow have to be protected from

Such misbehavior might result from exploiting vulnerabilities in the electronic marketplace or by exploitung vulnerabilities in the execution engine (i.e., interpreter or run-time) used for trading agents.

The Project

As should now be clear, there is considerable latitude in what functionality an electronic marketplace supports and in how that functionality is implemented. Not surprisingly, for a CS5430 project, we are most interested in having you explore functionality that involves interesting security properties or that leads to interesting instantiations of security principles or deployment of security technology. Part of your project grade will, therefore, depend on what functionality you support, the design you create, and the security technology you deploy.


Deliverables for Each Phase

Phase I: Group Definition [Due 2/2 (10:00am)]
This phase is easy. Form a group of 1 to 5 CS5430 students, and submit a typeset document (.doc or .txt are best) that includes the following information. You may consult only with these group members and the course staff in building your project.

Profit from our past experience. Groups of size 3 seem to work best. Groups smaller than 3 almost always get lower grades on the project; groups larger than 3 sometimes have difficulty finding times that all participants can meet. One-person groups almost never finish and thus usually receive a terrible grade on the project. Why should this be so?

Savvy students also appreciate that after graduation you will likely work in a group. Thus, working in a group in CS5430 helps hone skills needed to be effective in the workplace and also impresses potential employers.

MEng project option. MEng students can use their CS5430 project as the basis for the required MEng project. If this is your intention, then your group must all be MEng students who are all electing to use the project in this manner. Your group is then not only expected to satisfy the project requirements outlined below but is also be expected to:

  1. Implement some additional functionality, as agreed upon between your group and the course staff.
  2. Provide a written "project report" for the entire project. This report should document the problem solved, the design alternatives, a rationale for design selected, the implementation, the testing strategy employed, and give instructions for both installation and use.
Plan to start these additional tasks after this semester ends and complete them before the Fall 2009 semester commences.

Phase II: Functional and Security Properties [Due 2/18 (10:00am)]
The description given above outlines functions the system must have and mentions additional features it might have. Thus, there is considerable latitude in what you might build as an electronic marketplace. The description given above also says little about security properties that such a system must enforce. Phase II of the CS5430 project is the point where your group pins those things down. So, for this phase, you should decide what kind of electronic marketplace you plan to build and describe that in a document (.doc is best) of at most 7 sides (11 point type, 8.5 x 11 inch pages).

Your Phase II submission should contain:

The document you submit should resemble what might be provided to students when assigning a course project in a (senior-level) undergraduate programming class. Thus, the document should describe the class of items (e.g., stocks vs antiques vs real estate) that can be sold using your electronic marketplace, how the system would be used by sellers and buyers, what its architecture is (centralized server versus peer to peer, etc), what functional and security properties it will satisfy, what assumptions are being made about the deployment environment and about clients, and what threats are of concern.

We will evaluate your Phase II submission against the following criteria.

Phase III: System Design and Rationale [Due 3/11 (10:00am)]
Extend the document you submitted for Phase II---adding at most 7 sides---and outline the design for your system. Devote more space to what you think are the tricky parts, explaining what the pitfalls are and how you will avoid them. Give citations for protocols you borrow; give specifications for protocols you invent (where the specification details the sequences of messages exchanged); give descriptions of all important program interfaces (at a level of detail suitable to convince the reader that your design is sensible). It is better to borrow (and perhaps modify) a protocol or idea from the literature (which therefore is likely to be correct) than to invent one yourself.

The augmented document should also describe the programming language(s) you will use, what components you plan to build from scratch, what off-the-shelf components you plan to modify, and what off-the-shelf components you plan to use as is. Detail the ways in which off-the-shelf components are being trusted.

We will evaluate your Phase II submission against the following criteria.

Phase IV: Implement and Present [Due 4/27 (10:00am)]
Sign-up. Decide where (CSUG or MEng Lab) you want to conduct your final presentation and when. Then, schedule a Presentation/Demo meeting slot for the week of April 27. Use the sign-up sheet posted on the door of Upson 4115 to schedule your meeting.

Preparing for the Presentation/Demo Meeting. The Presentation/Demo meeting encompasses an hour, and will be structured as follows.

What to Submit. You need not submit anything until the start of your Presentation/Demo meeting. At that time, you should provide us with:

Grading for Phase IV. Your grade for Phase IV will be computed as follows: