The purpose of the final project is to demonstrate some in-depth knowledge of a topic related to the class subject material. You can choose to write a research paper exploring some topic related to the class, or you may develop a programming project. (If you do both you can gain some extra credit; see me first.)
Projects and papers are due by 5pm April 30.
Research Paper
You may write a comprehensive survey paper on some topic related to cryptography, cryptanalysis, computer security, or communications security. The paper should be of the level and coverage of a paper in ACM Computing Surveys. You should analyze the work done by others on the topic, including a summary of points yet to be addressed by research.
Each paper will include appropriate citations to the literature. You would be advised to check Computing Abstracts and the science citation index (at least) for recent and relevent publications.
If you choose to do a paper, it must be done individually (no groups). You should clear your topic with me prior to beginning the paper.
Research Project
You may design and code a project, as an individual project, or as something done by a group. Two-person projects are encouraged; there will not be extra credit given for solo projects unless they are of exceptional difficulty.
Project proposals should be submitted to me by April 2, consisting of about two pages of text describing what you are going to do and why you think it is interesting. If the project will be done by more than one person, you also need to indicate how the work will be divided among the team members.
Each project should represent independent design, construction, and testing. You will turn in a design document, commented source code, and results of structured testing. You will also include a short document describing what you built, how it works, where it might be used, and what are the conditions under which it should not be used. You will also indicate any references used. I may also request that you schedule a short demonstration of your project.
You may code the project in any language you prefer, so long as it is on one of the PUCC or CS computers on the net (e.g., you must be able to demonstrate it from an xterm window in my office). Note that not every language is well-suited for the numeric manipulation necessary for some topics.
Here are some possible project topics; you can discuss ideas of your own with me:
-
Construct a program that will use DES and triple-DES on a text file or stream. It should have an interface that allows entry of any valid key. It should implement at least 3 separate modes including at least ECB and CBC.
(Here are the DES tables on-line.)
-
Construct a zero-knowledge proof system that allows a user to convince another user of identity. It should not be possible to break the system using simple computation. (E.g., if using factoring of a large number, use at least a 200-digit number.)
-
Write a key threshold system for escrowing some form of key. Assume the key to be protected is at least 256 bits long. Allow the user to specify the threshold count.
-
Design and build a file encryption program using the IDEA algorithm. It should have an interface that allows entry of any valid key. It should implement at least 3 separate modes including at least ECB and CBC.
-
Implement the RSA encryption system using 75 digit (decimal) primes. Support both encryption and decryption.
-
Build an RPC-based DES "guessing" system that uses multiple workstations (named in a configuration file) in parallel to brute-force DES keys. The code should include an evaluator that determines whether the guess results in likely ASCII text. (Here are the DES tables on-line.)
-
Investigate, build and test an encryption system of your own.
-
Build a system that will encipher and decipher messages using a Vigenère cipher, using an alphabet of 36 characters (26 letters and 10 digits). Then write a cryptanalysis program to determine the period of such a cipher, and (at least) compute the index of coincidence and perform a Kasiski analysis.
-
Implement the MITRE key distribution protocol.
I can provide some extended-prescision integer math routines if you
need them. See
Re-read the class policies and note my comments about grading standards for programs.
Gene Spafford