Electronic Voting System (Phase IV): Denial of Service

 

Due: 10:00am Thursday, May 6, 2004

General Instructions. Students are required to work together in groups of size 3 or 4. An assignment submitted on behalf of a "group" having fewer than 3 students will receive a grade of F. All members of the group are responsible for understanding the entire assignment and will receive the same grade.

You need not work in the same group for this phase as you did for Phase III.

No late assignments will be accepted.

Academic Integrity. Collaboration between groups is prohibited and will be treated as a violation of the University's academic integrity code.


Purpose of Assignment

Availability is perhaps the underrated security property. Yet for some systems, preventing a client from accessing the service can be more devastating than revealing a secret or corrupting data. A business cannot survive long without access to customers; a control system becomes impotent when signals don't reach actuators.

This assignment gives you the opportunity to explore vulnerabilities to denial of service attacks that might be present in an electronic voting system. Some will find the different character of the assignment to be refreshing; others will find it frustrating:

What to Do

Analyze a Phase II implementation built by some other group in CS513 this semester. Pick a group and ask them for a copy of the set of phase II files they submitted for grading. Thereafter, you are barred from having discussions with members of that group or any other group about the system you selected or how it works (or doesn't).

Once you have in hand such a target system, analyze it and identify vulnerabilities the server has to denial of service attacks. Ignore denial of service attacks aimed at the client; ignore denial of service attacks directed at incapacitating infrastructure, like the internet routing structure, the C# language run-time, or the operating system.

For each server vulnerability you identify, we ask that you:

  1. Describe an attack that would exploit the vulnerability and thereby prevent or delay the server from performing some or all of its job. Sketch a program that implements the attack.

  2. Explain how the voting protocols, client code, and/or server code might be modified in order to reduce or eliminate the vulnerability. If you believe the vulnerability cannot be addressed by such modifications, then explain why.

  3. [Optional Extra Credit. Do this only for one vulnerability.] Actually program your defense. Document its effectiveness by running experiments and presenting real data that shows the extent to which your programmed defense succeeds in blunting some interesting class of denial of service attacks.

Submission and Grading

Submission Procedure. Create a .zip file containing the files you wish us to grade. Then submit this .zip file using CMS. Your .zip should contain the following files (at least):

TEAM.txt which contains the names (and net-ids) for all team members. Also, for each team member, give a 1 or 2 paragraph description of the tasks this team member performed and the number of hours this required.

TARGET.txt which contains the names (and net-ids) of the team that wrote the system you chose to analyze for this assignment. No name should appear in both TEAM.txt and in TARGET.txt.

A set of files V (you may choose the names, but they must be txt files) which comprise a vulnerability analysis.  Each file F in V should contain an English description of some class of vulnerabilities present in the system you analyzed.  Limit yourself to at most 5 such files, by grouping vulnerabilities in a sensible way. If the target system you chose to analyze has too many different vulnerabilities than might naturally be accommodated in 5 files, then you need only treat the 5 most problematic classes of vulnerabilities.  The contents of each file should be structured in terms of the following elements.

VulIndex.txt which contains a list of the names of the files in V. For each file F in that list, give a few sentence summary of the class of vulnerabilities treated in depth within file F. In addition to giving this list of files, describe the methodology you employed to identify classes of vulnerabilities in the target system, and also give an explanation of the methodology you employed to select the 5 you treat in depth.

[Optional Extra Credit] For one file F listed in VulIndex.txt, include a file F.xtra in which you give:

Notice, we are not requesting the code for the modified system. However, we reserve the right to request the code and/or receive a demonstration of your enhanced system so that we can validate performance data or other experimental results you submit for Optional Extra Credit.

Grading. A good job on the Optional Extra Credit will earn at most a few points; but it will double or triple the amount of time you spend on this assignment. The extra credit in this phase is thus designed to be attempted by and challenge the very top students in the class; it is not a sensible way to increase your grade---time spent working on the main body of the assignment will have a higher grade pay-off.

Your grade on the required parts of the assignment is based on the following elements: