Course Syllabus

CSCI 5471: Modern Cryptography

Fall 2023
3 credits
TTh 1:00-2:15pm
Akerman Hall 319

Course Staff

Instructor:
Nick Hopper
hoppernj@umn.edu

TA:
Qiuchen Yan
yanxx297@umn.edu

Office Hours can be found on the course google calendar.

Course Overview

This is a graduate course on Modern Cryptography. This course introduces basic concepts in cryptography and discusses both its theoretical foundations and practical applications. Various threats, attacks and countermeasures on cryptosystems, cryptographic protocols and their implementations will be addressed. The course will cover: brief history of cryptography, encryption (conventional and public key), digital signatures, hash functions, message authentication codes, identification, authentication, and their applications.

Goals and Objectives

At the end of the course you should be able to:

  • Evaluate evidence for the strength of a cryptographic primitive or protocol.
  • Produce evidence, by the standards of the field, for the strength of a cryptographic protocol.
  • Recognize common vulnerabilities in cryptographic protocols and implementations.
  • Choose or design appropriate cryptographic protocols and implementation tools for security tasks.

Prerequisites

The first listed prerequisite for this course is an undergraduate course in algorithms. At UMN, this course is CSci 4041. More generally, however, we will expect students to have the skills of someone who has (mostly) completed an undergraduate computer science major. In particular, students should be able to write and debug programs in some mainstream programming language by themselves - it is not a proper use of the instructor or TA's time to help get your code running.

The second listed prerequisite for this course is "familiarity with number theory or finite fields."  The courses that cover this material at UMN include MATH 4281, 5248, 5251, or 5285H.  Students must possess mathematical maturity, including the ability to understand and write mathematical arguments that span multiple pages of text: modern cryptography is fundamentally concerned with proofs, rigor, and mathematical models. We expect students to put in time outside of class to master the concepts presented in class; and we expect students to be resourceful: if a topic is mentioned in lecture along with a name, you can probably learn more using, e.g. google.

Lecture Schedule

The course canvas site includes a schedule of lectures and other deadlines for this course. The schedule includes the readings related to each class. Students are responsible for reading the appropriate materials before the lecture; we will not cover all of the reading material in the lecture but it will appear on homeworks and exams.  Lecture slides and recordings will be linked from the schedule shortly after the corresponding lecture.

The course will be divided into five subtopics:

  1. Introduction: historical versus modern cryptography, basics of number theory and probability, introduction to cryptographic security definitions and pseudorandomness.
  2. Symmetric Encryption: stream ciphers, block ciphers, chosen-plaintext attacks and modes of operation.
  3. Symmetric authentication: hash functions, message authentication codes, and security against chosen ciphertext attacks.
  4. Public-Key cryptography: Key exchange, Diffie-Hellman and discrete logarithms, Elgamal encryption, RSA function and factoring, Hybrid encryption and chosen-ciphertext security, post-quantum cryptosystems
  5. Signatures and protocols: RSA-based signatures, discrete log signature schemes, post-quantum signatures, certificates and network protocols, multiparty cryptography, zero-knowledge proofs.

Textbooks

There are two required textbooks for this class:

  1. Katz and Lindell, "Introduction to Modern Cryptography , 3rd edition" Routledge / CRC, 2020.  This is a traditional textbook, with exercises and examples, heavily biased toward the theoretical aspects of Cryptography.
  2. Menezes, van Oorschot, and Vanstone, "Handbook of Applied Cryptography ," CRC Press, 1997.  This is more of a reference work, with a slight bias toward applications.  It is somewhat dated, but is available for free on-line

Grading

Grading for this course will be based on the following components:

  • Homeworks: For each of the 5 lecture "sub-units" there will be a homework requiring you to apply the materials covered in this unit.  Successfully completing these homeworks will require both mathematical maturity and programming experience, and will require students to engage with materials not covered in lecture.  Homeworks and their due dates are posted on the class schedule.  Students may work in groups of size at most 3 on the homeworks, but be warned: you are responsible for the choice of your group.  This means that if someone else in your group "was supposed to turn in the assignment" and didn't, or "didn't finish part c" of an exercise, you will not receive any special consideration in grading.   Solutions must be electronically typeset and submitted via canvas.

    Late submissions:  Homeworks turned in by 11:59pm on the day following their due date are worth 50%, and after that they are worth 0.

    In order to accommodate unexpected absences or schedule conflicts, each student's lowest homework score will be dropped when computing their average.

  • Midterms: There will be 5 take-home midterm exams, the dates of which are already posted on the class schedule.  Each exam will potentially cover all materials covered in lectures and readings since the previous exam.  Exams will be released on the course Gradescope instance at 9am (central time) and be due by 9pm (central time). The exams are open-notes and open-book but no collaboration or use of internet resources will be allowed.

    Exams will not be rescheduled and no makeup exams will be offered.  In order to accommodate unexpected absences or schedule conflicts, each student's lowest exam score will be dropped when computing their average.

  • Course Projects. Each homework will include one "project question," which requires a longer response and typically some combination of mathematical and programming analysis.  These should be completed in the same group as the corresponding homework and submitted with the homework.   Each student must complete three project questions over the course of the semester (we will keep the highest three scores for students that submit more than three project responses).  The class canvas page includes a more detailed list of project grading criteria.

Final scores will be computed as a weighted average of the homework total (30%), Midterm total (50%), and projects score (20%).  Grades will be assigned strictly on the following scale:

Grade Minimum Score
A 90.00
A- 86.00
B+ 82.00
B 78.00
B- 74.00
C+ 70.00
C 66.00
C- 60.00
D+ 55.00
D 50.00
F 0

Classroom atmosphere expectations

I want this to be a class where everyone feels comfortable asking questions (which is how we learn!) and contributing to discussions.  In order for this to happen, it is important for us all to respect and learn from one another.  Here are some things to keep in mind when interacting with fellow students and course staff:

We all have different experience levels.  Some students may have encountered some materials in this class before, and might make it look like a problem is easy, where other students might find the material new and intimidating.  Please keep in mind that no one knows all of the material, and everyone struggles at some point.  When someone is struggling and you help them move forward, they will remember and you will learn more than if you try to hold them back.  When you are struggling, just remember that just because you haven't learned something yet doesn't mean you can't learn it now.

We all have different identities.  As part of respectful dialog, please think how your comments could impact others in your group. Refer to others as they prefer to be referred to (including, if referring to them in the third person, using any preferred pronoun they choose to indicate).

Part of respecting each other is helping to keep each other safe and healthy.  If you are not feeling well, please do not attend lecture.  All class lecture slides will be posted on Canvas, and lecture recordings will be posted to Canvas.

Academic Integrity Policy

We will occasionally encourage the use of online resources for completing assignments in this course, and of course it is permitted for students to discuss in general how to solve problems.  However, it is never acceptable to use someone else's work without acknowledging it.  Every source you use or modify for a homework or project must be explicitly acknowledged.   Failure to do so will be considered plagiarism.

The University Student Conduct Code defines scholastic dishonesty as: submission of false records of academic achievement; cheating on assignments or examinations; plagiarizing; altering, forging, or misusing a University academic record; taking, acquiring, or using test materials without faculty permission; acting alone or in cooperation with another to falsify records or to obtain dishonestly grades, honors, awards, or professional endorsement. In this course, a student responsible for scholastic dishonesty will be assigned a penalty of an "F" or "N" for the course. If you have any questions regarding the expectations for a specific assignment or exam, ask.

Student Workload Statement

Students should expect to spend 4 hours on course readings each week, 15-20 hours on each homework set, and 50-60 total hours on course projects over the course of the semester.

Required Syllabus Statements

This course conforms to the standard University policies on Student Conduct; Sexual Harrassment; Equity, Diversity, Equal Opportunity, and Affirmative Action; Disability Accommodations;  Mental Health and Stress Management; and Academic Freedom and Responsibility.

Course Summary:

Date Details Due