# 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

#### News:

9 October 2015: Here's a great site for picking secure passwords (in your favourite Language): Diceware!
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:
• distinguish modern-day cryptography from ancient cryptography
• understand the difference between encryption and authentication
• understand the difference between private- and public-key cryptography
• compare different security notions (indistinguishability, CPA, CCA) for private- and public-key encryption
• apply security notions for private- and public-key authentication
• follow cryptographic security proofs by reduction
• recognize the discrepancy between theoretically secure and practically used cryptography
• recognize aspects of number theory which are relevant to cryptography
• understand basic computational problems that are important for cryptography such as the factoring problem, the RSA problem, the discrete-logarithm problem.

## Prerequisites

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.

## Material

We will mainly follow the following book:
You can order it from bol.com or amazon.co.uk 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%).