Moderne Cryptografie 2017/18

University of Amsterdam course, Sep/Oct 2017
part of Bachelor Informatica
Lecturer: Christian Schaffner (UvA / CWI / QuSoft; email)
Teaching assistant: Jan Czajkowski


9 October 2015: Here's a great site for picking secure passwords (in your favourite Language): Diceware!
Also use a password manager like LastPass or 1Password.
6 Feb 2017: website online

Contents of the course

This course will introduce you to the foundations of modern cryptography, with an eye toward practical applications. We will learn the importance of carefully defining security; of relying on a set of well-studied “hardness assumptions” (e.g., that factoring large numbers is hard, or that AES is a pseudorandom function); and of the possibility of proving security of complicated constructions based on low-level primitives. We will not only cover these ideas in theory, but will also explore their real-world impact. You will learn about cryptographic primitives in wide use today, and see how these can be combined to develop modern protocols for secure communication.

(from Jon Katz's online course on coursera whose contents we will closely follow, check out the course overview video !)

Intended learning outcomes

At the end of the course, you will be able to:


This course has a significant mathematical component. No advanced mathematics background is assumed, but students are expected to have "mathematical maturity" since many of the concepts will be abstract, rigorous definitions and proofs will be given, and some advanced mathematics (group theory, number theory) will be covered. Basic background in discrete mathematics (probability, modular arithmetic) and analysis of algorithms (big-O notation, reading pseudocode) is assumed.

Moreover, some of the homeworks will require programming. The choice of language is flexible, however some homeworks will have a networking component with the networking code provided for you in a particular language. It is assumed you can pick up what is needed in order to complete the assignments.


Katz-Lindell book We will mainly follow the following book: You can order it from or for approximately 50 EUR. The authors' web site has some minor errata and samples.

There will be material and research articles to read which are not in the book. Here is a useful list of other text books and references by Jon Katz.

Style, homework, exam, and grading

This course will be taught in flipped-classroom style , check this video or this infographic to learn more about it. For you as students, the biggest difference to conventional lectures is that you have to prepare yourself before attending classes , as it is assumed during classes that you have studied the material already. The advantage of this model is that we can spend the face-to-face time during the work sessions to talk about the studied material together, to recapitulate the most difficult and important aspects, and to strengthen our understanding by actually working on the relevant problems in small groups. The work sessions will be led by teacher and TA, with an active involvement of the students.

After studying video material and specified sections from the book, there are a number of online "reading questions" to answer before each work session which are held twice a week. The average grade of those reading questions counts 10% towards the final grade. At each work session (i.e. twice a week), we will work together on a problem set out of which some questions will be homework exercises that need to be handed in one week after the work session. Most homework exercises will be theoretical, but some involve programming as well. The average homework grade (dropping the worst grade) counts 30% towards the final grade. There will be a written mid-term exam (20%) and final exam (40%).

Comments and Questions

The course will be taught in English, homework should be handed in in English. Human interactions in Dutch are no problem.

Questions about the material are always welcome and can be addressed to Christian