CS 341: Cryptography
Final project
Proposal due via e-mail by Friday, Feb 25. Presentations in class March 7 and 9.
Deliverables (depending on nature of the project) due 5:00PM Monday, March 14 via e-mail
or the Courses folder.
You may work in groups of one to three people.
For the final project, you will pick a cryptographic topic and do something
interesting with it. This could mean that you write an in-depth paper on the
topic, or that you write a web-based or command-line implementation of a
cryptographic algorithm or protocol, or something else along those lines.
You will definitely create a 10-minute presentation on your topic, which could
involve demos, explanations, etc. But otherwise, the nature of your project
is up to you.
The main criterion for these projects is that they be interesting. How can you
tell whether a topic is interesting? Ask yourself some questions: are you eager to work on it?
if you describe the project to your roommate, does s/he say "that sounds interesting"?
can you imagine the shape of your presentation, and seeing people awake and eager
to ask you questions? If the answers are all "yes", then you have an interesting project.
Here are some ideas.
Create an interactive web-based illustration of a variety
of key-exchange protocols. For example, you might include a page that walks the
reader through a Diffie-Hellman exchange, where the reader can enter choices
for the numbers used by the parties. This illustration could also include a
demonstration of how a man-in-the-middle might subvert the process.
Note that a project like this is not just a matter of writing a paragraph
and drawing a picture and putting them on a website. Rather, you're trying
to design a step-by-step demonstration in which the reader actively participates
in such a way as to get a better understanding of how the protocol achieves its
goals (and how it might be attacked). This kind of project could get you involved in
writing Javascript to provide the interactivity.
- Study Kerberos. Prepare a presentation that explains what
it's for and how it works, discusses how (if at all) it relates to public key cryptography,
demonstrates typical interactions between the relevant parties, etc.
- Create a detailed, visual timeline showing all the information
exchanged between an Access Point and a client machine in a wireless interaction
using, say, WPA2. This would be a much more in-depth version of the story than
we had time for in class, and would unify several of the sub-reports. I could imagine
the timeline itself being a single high-resolution image, or a visually annotated
expandable/collapsible outline structure, or something like that. I'm not sure what
software tool would be best for creating such a thing. But the test of a really good
outline would be if your readers/viewers wanted to play with it. For example, you might
show the high-level view, and someone in the audience would say "hey, zoom in
on the part where they're doing the ARP stuff"--if you can then show the sub-steps of
the ARP by a zoom or the expansion of a chunk of the outline, that's cool.
- Do a historical report on some interesting cryptographic topic,
but with concrete examples. For example, a typical history of Alan Turing, Bletchley Park,
and the Colossus focuses on who did what when, with little or no technical detail.
But a detailed description of the Enigma algorithm and a step-by-step explanation
of how the Colossus was used to crack it (and what data they would enter into the
Colossus) would be interesting. This sort of report could also have an interactive
component if, say, you wanted to implement the algorithms in question and enable
your reader/user to enter test data.
- A technical analysis of Firesheep and the tools developed to
thwart it (e.g. HTTPS Everywhere).
- Differential cryptanalysis and the breaking of DES.
- Zero-knowledge proofs, secret sharing, and playing poker over the phone.
- [I'll add more ideas here as I think of them.]
Due dates and deliverables
- By Friday, Feb 25, send me an e-mail briefly describing your topic.
Tell me who you are working with, and what you will hand in at the end of the project.
- On either Monday, March 7 or Wednesday, March 9, you should have
a presentation prepared for class. Plan for 10 minutes of presentation plus 5 minutes
of questions. Have your visual aids ready (Powerpoint or other presentation software,
web site, command-line demo, diagrams for the blackboard, or whatever). Practice
your presentation so you know how long it actually takes, not just how long you
think it might take.
- By 5:00PM Monday, March 14, hand in whatever code, data, slides,
documentation, written reports, etc. are relevant for your project. This should include
materials you used in your presentation. If you hand in multiple documents, make
sure to include a readme file to help me make sense of things.