CS5430 Project: Spring 2012

This semester you will build a secure social networking system. This document gives an overview of the project. Further details about each phase -- as it is announced -- will be linked to the the items just below.


Required Functionality and System Components

A social-networking system allows a community of users to share content. The details of what and how content is shared typically differ from one system to another, reflecting the needs and values of some intended user community. All social-networking systems do seem to have certain things in common, though.

This defines a rather large design space. Choices left open include the following (along with others).

For Phase 1, you must decide on a social-networking system to build. We suggest that you identify a specific, well-defined community for your system to serve. Then, contemplate features and design choices that would be most useful for this community.

Requirements on System Components and Structure. Your social-networking system must exhibit the following structure or else it could be difficult to complete all of the project phases: There is a Client GUI that runs as a process and communicates with a Social Network Server that runs as another. Although the components of your system should be implemented as two processes running on separate computers, we suggest developing the system with both processes sharing a single computer.

For the Social Network Server, you may assume it executes on hardware that

The Social Network Server is responsible for (at least) the following functionality:

For the Client GUI component, you may assume that it executes on hardware that

The Client GUI is responsible for (at least) the following functionality.

This project is part of a class on computer security, so we make a few simplifying assumptions that will help focus attention on the interesting matters.

Extra Credit. Include functionality that allows any user to upload Java classes and execute methods at the Social Network Server, as follows.

This extra credit functionality is particularly challenging, because you must defend against objects that untrustworthy users design and deploy hoping to corrupt the Social Network Server or to circumvent the authorization it enforces. Projects will receive grade deductions if vulnerabilities are created by code you add for supporting the Extra Credit functionality. Know your limits---the grading scheme will punish those who do not. (Discretion is the better part of valor.)


General Technical Matters

Implement your system using code that can be found in the standard Java distribution. However, to level the playing field and to ensure that you spend your energies in ways that will contribute to your education, we impose the following additional ground rules about use of code that isn't written by members of your group.

Cryptographic Code. The following Java implementations of cryptographic functionality may be used in building your system:

The following Java implementations of cryptographic functionality (e.g, key exchange and authentication) may not be used because what they offer is too close to functionality we are expecting you to study.

Database. A database might be useful for storing content postings (though this is by no means required). Feel free to use a MySQL database, with the JDBC package to interface.

Keys and Secrets. Set-up assumptions for cryptographic keys and other secrets, because they are assumptions, can often be turned into exploitable vulnerabilities. Therefore, your system must satisfy the following restrictions.


Administrative Matters

Working in Groups. Projects are built by groups of at most 4 students. Working in groups offers various benefits:

Groups of size 2 or 3 have worked best for CS5430 projects. Groups larger than 3 often have difficulty coordinating among members---for example, finding times that all members can meet. No single-person group has ever delivered a CS5430 project that received a reasonable grade. (Maybe you will be the exception, but ...).

MEng Project Option. MEng students may use their CS5430 project as the basis for the required MEng project. If this is your intention, then: