CS 120: Introduction to Cryptography
Fall 2006
PRELIMINARY SYLLABUS
Summary | Topics | Prerequisites | Grading | Problem Sets & Collaboration Policy | Sections | Readings
Lecturer: Prof. Salil Vadhan
and Dr. Alon Rosen
Teaching Fellow: Florin Ciocan
Course website: http://people.seas.harvard.edu/~salil/cs120
Staff e-mail: cs120@eecs.harvard.edu
Past CUE evalutions: Fall 01, Spring 03
Cryptography is the science of designing algorithms and protocols that guarantee privacy, authenticity, and integrity of data when parties are communicating or computing in an insecure environment. The recent explosion of electronic communication and commerce has expanded the significance of cryptography far beyond its historical military role into all of our daily lives. For example, cryptography provides the technology that allows you to use your credit card to make on-line purchases without allowing other people on the internet to learn your credit card number.
The past 25 years have also seen cryptography transformed from an ad hoc collection of mysterious tricks into a rigorous science based on firm complexity-theoretic foundations. It is this modern, complexity-theoretic approach to cryptography that will be the focus of this course. Specifically, we will see how cryptographic problems can be given precise mathematical definitions. Then we will construct algorithms which provably satisfy these definitions, under precisely stated and widely believed assumptions. For example, we will see how to prove statements of the flavor "Encryption algorithm X hides all information about the message being transmitted, under the assumption that factoring integers is computationally infeasible." (Of course, this kind of statement will be given a precise meaning.)
What can you hope to learn from this course?
What this course will NOT teach you:
The formal prerequisite for the course is one prior course in theoretical computer science, such as CS 121 or 124. (Students with strong math backgrounds may be able to manage with extra background reading and/or taking CS 124 concurrently; come to my office hours to discuss.) The main skills that will be assumed from these courses are:
It is also important that you are familiar with basic probability . Additional background that will be helpful:
While it is not necessary to have had exposure to all
of these topics prior to CS 120, familiarity with none will probably make it
quite difficult to keep up.
Your class participation grade is based on participation in
lecture, but can also be boosted by participation in section and/or coming to
office hours or section with "good" questions or comments. A
"good" question is one which is not just aimed to help you answer
questions on the problem set or exam. It is one that shows genuine
interest in the material and that you have been thinking about the course
material on your own. Do not be afraid of asking "stupid"
questions!
The course will have weekly problem sets, due TBA (in the box labelled CS 120 in the basement of Maxwell Dworkin.) You are allowed 6 late days for the semester, of which at most 2 can be used on any individual problem set. (1 late day = 24 hours exactly). In case of an emergency which requires an exception to these rules, please have your senior tutor call me.
Students are encouraged to discuss the course material and the homework
problems with each other in small groups (2-3 people).
Discussion of homework problems may include brainstorming and verbally walking
through possible solutions, but should not include one person telling the
others how to solve the problem. In addition, each person must write up
their solutions independently, and these write-ups should not be checked
against each other or passed around.
There will be weekly sections, which will be used to clarify
difficult points from lecture, review background material, go over previous
homework solutions, and sometimes provide interesting supplementary material.
There is no required text for the course other than the lecture notes, but you may find the following to be useful references (but beware that some of the notation, conventions, and definitions may differ slightly from lecture):
Other texts on cryptography take a much less careful approach to definitions and proofs of security than we do. Still, they can serve as good references for more examples of concrete cryptosystems used in practice and some high-level ideas. After this course, you should understand how to critically evaluate the merits or deficiencies of the cryptosystems described in the books below (and indeed we urge you to have a critical eye when reading them):
For background reading on probability, algorithms, complexity theory, and number theory, I recommend: