Crypto Project 1
CS 463, Dr. Lawlor
The project is designed as a way for you to do handson work with
cryptographic systems in a field of your choice.
Each project should contain at least some of each of these three things:

Research: look up the prior work, to see what other people have done.
Prioritize books or PDF academic papers over HTML (blog posts, comments, Wikipedia).

Code: write some actual handson crypto code. Any language is fine, although
what you turn in should be structured nicely and well commented.

Analysis: check the statistics, histograms, or correlations of your output.
Or measure the runtime performance, in nanoseconds per byte or round.
Or *something* quantifiable and numeric.
Deadlines
Friday, February 15, in class: initial project topic discussion. Be prepared to talk about your project for about two minutes.
Friday, March 1: Turn in rough draft code & brief writeup.
Monday, March 4: Present initial results in class (about 5 minutes each).
Wednesday, March 6: Midterm exam
Spring break is March 917
Wednesday, March 20: Present final results in class (about 5 minutes each).
Friday, March 22: Turn in final draft code & brief writeup.
Suggested Topics
Feel free to pick one of these, combine two or more, or pick some unlisted topic!
 Implement a cryptanalytic attack, like brute force key enumeration (pick a managable
keyspace), meetinthemiddle hashtable attack for split keys, or any of the
many flavors of statistical analysis.
 Implement your own Feisteltype cipher, or a Feisteloid roundstyle cipher. Be sure to analyze the runtime performance, differential behavior, and statistical output of your cipher for varying keys and number of rounds.
 Implement your own roundbased cryptographic hash function, using a noninvertible round function. Again, analyze the statistics and differential output of your hash for varying number of rounds.
 Implement any decent existing cipher or hash (AES, DES, RC5, SHA1, SHA256 are all reasonable choices).
 Do something interesting in a (Galois) Finite Field. For example, it's likely that the highest performance GPU implementations of Finite Field operations will not use tables, but independently manipulate bits.