CS5430 Project: Spring 2010

CS5430 students are expected to participate in a group project to build a system that has non-trivial security functionality, as follows:

MEng Project Option. MEng students may use their CS5430 project as the basis for the required MEng project. If this is your intention, then your group members must all be MEng students who are all electing to use the project in this manner. Your group will then not only be expected to satisfy the project requirements outlined below but will 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, 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 MEng-project tasks after this semester ends, and plan to complete them before next semester starts.

Forming a Group. Groups of size 3 seem to work best. Groups smaller than 3 almost always produce lower-quality projects and, consequently, get lower grades; groups larger than 3 have difficulty coordinating among members---for example, finding times that all members can meet.

Beyond these pragmatics, working in groups offers other benefits:

Project Choices

You have considerable flexibility in choosing what system to build. But because the course project is intended to provide an opportunity for you to use the material we cover in lectures, projects are acceptable only if the following elements are necessary for the system to fulfill its mission:

Your system should also involve other security functionality. Most systems, for example, will provide infrastructure for audit or other means of establishing accountability for actions. So the list above defines only a subset of the security functionality your project must implement. What is the rest of that functionality? Answering that question is one of the tasks in Phase 1.

Here are sketches for a few example systems that could involve all of the above required elements. Each sketch has important elements missing, as befits a sketch. Nevertheless, we are confident that each could be refined into an acceptable course project, and you should feel free to do so. But also feel free to invent your own project idea if none of the sketches is appealing.

Choice of Tools. Select a programming environment, programming language, and target platform that makes sense for your project. Our evaluation of what you build will be based, in part, on your choice of tools (and our ability to understand your source code, so don't pick anything too obscure). Java and C# are safe choices.

If you elect to program in C or C++ then we will be interested in how you ensure that buffer overflows and other vulnerabilities that frequent C programs have been eliminated. There are tools for analyzing C and C++ source code for vulnerabilities, but running these tools (if you can get access to them) is a non-trivial undertaking.

When building a system in industry, it is generally a good idea to extend existing components rather than build your own. For example, there are many 3rd-party systems and tools available for building web services (including web servers) and for implementing databases. But using these tools in CS5430 would preclude activities the project is supposed to cover. This is because, when you use a 3rd-party tool, you must: (i) accept somebody else's choices about what is useful security functionality and (ii) accept somebody else's assurance argument. We therefore impose the following rules about using code or systems written by others:


Phase I Deliverables

The deliverable for this phase is a relatively short document that describes the system your group will build. This document serves two purposes.

  1. It allows the course staff to check that what you plan to build is a sensible system and is sufficiently (but not overly) ambitious for a course project. Where there are obvious problems, we will ask questions or make suggestions about how to proceed. If there are severe problems then we may invite you to submit a revised document, which we will also review.

  2. It defines what you will be building and establishes the baseline against which your system will be evaluated. If, in the end, you don't deliver a project with your stated functionality then your grade will suffer. However, you will not receive a higher grade for implementing more functionality than is specified in this document.

Your Phase I deliverable should be prepared in Microsoft Word and submitted to CMS as a .doc or .docx. Use 10 point font or larger, "single" line spacing, and at least 1 inch margins. The entire document should be at most 5 pages (single-sided). A document that does not follow these standards will be returned unread to its authors for re-formatting and receive a grade deduction. (Success in life depends, to a surprising degree, on knowing when to follow instructions and then following them.)

Structure your document as follows.

The smart way to proceed is to develop a detailed system design before attempting to write your Phase I deliverable. Few, if any, of these details would appear in your Phase I deliverable, but knowing those details increases the chances that what you do describe is something that you can build and that will work. In particular:

We will evaluate your Phase I submission against criteria listed below.

In addition, clarity and correct American or British language style and usage counts throughout, just as it does in the real world. So non-native speakers are urged to have somebody critique their prose.


Phase II Deliverables

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 26. Use the sign-up sheet posted on the door of Upson 4115 to schedule your meeting.

The sign-up sheet will be available on or before Monday, April 19 at 9:00am.
Your group must sign-up before Friday, April 23, at 4pm.

Preparing for the Presentation/Demo Meeting. The Presentation/Demo meeting encompasses an hour, and it 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 II. Your grade for Phase II will be calculated as follows: