Cryptography provides a critical foundation upon which much of
computer security is based. Cryptography is necessary to provide both
integrity and confidentiality of the data that is exchanges in a
computer network. There are many methods of encryption, and each has
its stenrghts and weaknesses in terms of performance, security, and
requirements for management of secret information used to hide or
This course will provide an intensive overview of the field of
encryption, providing a historical perspective on early systems,
builting to the number theoretic foundations of modern day
cryptosystems. Students will learn how cryptosystems are designed,
and the to match cryptosystems to the needs of an application.
Students will also study basic cryptanalysis and will be presented
with real life breaches of common cryptosystems so that they better
understand the dangers that lurk in cryptosystem design and in the
design of systems that rely on crytopgraphy.
Relationships to CS 530 and
I have already received questions regarding the difference
between this class and the
class (CS 556).
CS 556 should be considered as an "advanced" cryptography
class with emphasis on the theoretic side of cryptography.
The Applied Cryptograph class is a more "introductory"
cryptography class with emphasis on the applied side of
cryptography (less emphasis on mathetical proofs). There
will be some overlap between the Applied Cryptograph class
and CS 530.
The long term plan for this class is to make it into a regular
(non-CS599) class to be taken either concurrently or before
Academic Integrity Policy
Please make sure you read the Academic
Integrity Policy of this course.
- A. J. Menezes, P. C. Van Oorschot, S. A. Vanstone,
Handbook of Applied Cryptography,
CRC Press, 1996.
(An online version of this book is available at
http://www.cacr.math.uwaterloo.ca/hac/. In order to save
some trees, please do not print out the whole book
because we are not covering the whole book!
Also, please make sure you follow the
Copyright Notice there.)
- B. Schneier,
Applied Cryptography: Protocols, Algorithms, and Source Code in C,
2nd Edition, Wiley, 1995.
Syllabus / Topics Covered
The following schedule and topics are tentative and are subject to
change without notice.
- Week 1: Introduction (Schneier Ch 1)
- Overview of Cryptography
- How cryptography is used in security systems.
- What does it mean to break a cryptosystem. Examples.
- Weeks 2 & 3: Classical Cryptography (Schneier Ch 1 & Ch 16)
- One way functions
- Hard-core predicates
- Randomized algorithms
- One time pads
- Visual cryptography
- Week 4: Pseudo random generators (Schneier Ch 16)
- Week 5: DES (Schneier Ch 12)
- Week 6: AES
- Week 7: Cryptographic Hash functions (Schneier Ch 18)
- Week 8: Cryptanalysis
- Recent breaks of hash functions
- What do these breaks mean
- Linear and differential Cryptanalysis
- Week 9: Primality testing (Schneier Ch 11)
- Fillings and preservings
- Miller-Rabin test
- Weeks 10 & 11: RSA & indistinguishability of encryptions
(Schneier Ch 19)
- Week 12: Rabin's functions; Blum's functions
- Week 13: Discrete Logarithm Problem (Schneier Ch 11)
- Week 14: Elliptic Curve Cryptography
A link to the
USC print $semester ?> web site is provided here for your convenience.
You can get information such as academic calendar there.
Most class related announcements will be done through e-mail via
an e-mail reflector setup by the instructor. Please see
instructions on how to get
on this list (you should do this as soon as possible).
Please do not ask the following types of questions in your e-mail
(although they are appropriate for office hours):
- Here is my understanding of X. Am I right (or is this correct)?
(You can do this for just about everything and in many different ways.
I do not have the bandwidth to deal with too many questions like this.)
- I don't understand X. Could you explain X to me?
(It's your responsiblity to come to lectures and ask questions
during lectures if there is something you do not understand.)
Lecture Slides from
This is the first time this class is taught. So, there is no
slides from previous semesters.
There will be 4-6 homework assignments consisting of problems
and small programming assignments.
Some problems will be based on readings and class discussions.
Written assignments should be in typed or computer-generated
output, with the exception of formulas, drawings, tables etc.,
which you are free to do by hand so long as they are neat and legible.
A midterm and a final examination will be given.
The date of the midterm examination will be posted near the
top of the class home page.
The date of the final examination is firm and it is also listed near the
top of the class home page.
Any schedule conflicts regarding the midterm exam date must
be resolved with the instructor at least one week
before the exam date.
The following adds up to be 90%. This is because the class project
has been removed.
Pleaes also note the following:
- The above percentages will be used to calculate your total score.
Final grades (A,B,C,D,or F) will be determined using a modified
curve (i.e., we won't necessarily assign an equal number of failing
grades as passing grades) based on this total score. No other methods
will be considered. (So, please do not ask the instructor to take how
much you have improved since the beginning of the semester into account.
You are expected to try your best from the beginning!)
Typically, if you score around the class average, you will get a B+.
- We will assign grades of C and below to individuals who do not
perform satisfactorily in the above areas. (i.e., you should not
assume a B- or even C if you perform unsatisfactorily.)
However, we hope that everyone will perform well.
- Your assignments are your own work! No group assignments are allowed
or will be tolerated. You are free to talk to other students about
assignments but no actual material (files, photocopies etc.) should
be shared. We will act harshly at any sign of copying.
- We will not assign incompletes unless it is
for a documented medical reason (in accordance with USC policy).
All homeworks must be turned in on time.
Late submissions will receive severe penalties. Due to clock skews,
electronic submissions of homework assignments will
be accepted within 15 minutes after the specified deadlines without
penalties. If your submission is beyond the 15 minutes grace period,
you will receive 75% of your grade if your submission
is 15 minutes late beyond the grace period;
you will receive 50% of your grade if your submission
is 30 minutes late beyond the grace period;
you will receive 25% of your grade if your submission
is 45 minutes late beyond the grace period;
and you will receive a score of zero otherwise.
Written homeworks are to be turned in at the end (when the
instructor leaves) of specified classes.
You may also leave written homeworks in the instructor's mailbox
(in SAL 349) by the end of specified classes at your own risk.
If you are unable to complete a homework or a programming assignment due
to illness or family emergency, please see the instructor as soon as
possible to get an extension. A doctor's note is required
as proof of illness or emergency.
All requests to change grading of homework or
exams must be submitted in writing within one week
of the time the initial grade was given. Requests must be specific
and explain why you feel your answer deserves additional credit.
A request to re-grade an assignment can result in the entire assignment
being re-evaluated and as a result the score of any part of
the assignment be increased or lowered as appropriate.
The instructor's office hours are held twice a week for one hour each.
The instructor will be at the designated office for the first 15 minutes.
If no students is waiting to see the instructor at the end of the first
15 minutes into the office hour, the instructor may cut the office hour
short. (The main reason this is done is that the instructor shares the
office with 4 other instructors and it can get crowded in there.)
You are always welcome to make an appointment (and reserve a timeslot)
to see the instructor. So, if you plan to show up after 15 minutes into
the office hour, you are better off making an appointment.
No extra credit assignments will be given for this class. So, there
is not need to ask. Try your best from the beginning!
Implicit Student Agreement
All work including homeworks, programming
assignments and exams must be that of the individual student. It is often
productive to study with other students. However, if any portions of homeworks
or programming assignments are found to be shared between two (or more)
students, zero credit will be given to all students concerned and all students
will be disciplined. This policy is in the interest of those students who
do their own work, which hopefully applies to all of you in this class.
This policy also holds for programming assignments. In
this class, we will use sophisticated automated program checkers to detect
cheating. Be aware that the program checkers have demonstrated very good
results and are widely used within the academic community. Any student
caught cheating will be given zero credit and will be disciplined.
It is the students responsibility to submit their assignments
to the TA in time.
For students who satisfied the CSci402 prerequisite at other universities
or through work experience, this course assumes that you understand concurrency,
synchronization, and UNIX programming. You should be able to write large
programs in C/C++. No special assistance or consideration will be offered
if your background is inadequate.
During the semester you are responsible for completing the assigned
readings, homeworks, programs, and exams.
You are expected to read all the papers in detail.
Not all details will be covered in class. We will assume knowledge
of material covered in EE450 and a C language programming proficiency from
CSci402 or its equivalent. If you covered the introductory material at some
other school it is YOUR responsibility to fill in any missing background.
Feel free to ask me for advice on appropriate introductory readings if
you feel your background is insufficient.
We expect you to attend every class meeting.
If you do happen to miss a session, you are responsible for finding out
what material was covered and if any administrative announcements were
made. You must do so BEFORE the next session (e.g., if there is an assignment
given during the missed session, you are still responsible for completing
it by the next week along with the other students). You are advised
to read the papers for a particular lecture before attending the lecture.
This will greatly enhance your understanding of the subject matter.
The instructor must treat all students equally and cannot
give special treatment to any particular student.
Therefore, please do not ask special favors from the
instructor because of your circumstances.
This may seem unfair to you because you believe that your
circumstances are special (understandably, everone
does). But the rule the instructor must follow is that whatever
he offers you, he must offer to the entire class.
Auditing is not permitted for this class.
- C Programming
(by Steve Holmes at the University of Strathclyde in Glasgow, England)
- includes notes on make, separate compilation,
file I/O, etc.
tutorial (at Indiana University)
- C/C++ at USC
from USC ISDWeb
- Steve's Software Trek
(by Steve Karg) - includes some useful C/C++ source code for string
manipulation, INI file manipulation, etc.