Math 116 Fall 2021

Introduction to Mathematical Cryptography.

About this course

Cryptography is the art of transmitting confidential information over a potentially monitored channel. Codes and ciphers are ancient tools, but in the modern digital age entirely new cryptographic paradigms became possible, and necessary. One of these paradigms, and the central object of study in this course, is public key cryptography, allowing the exchange of confidential information between two people who have never met! At the core of public key cryptography are marvelously clever and deep mathematical insights existing at the intersection of abstract algebra, number theory, and geometry, which we will introduce and explore.

This course will strike a balance between theory and practice. We will have to develop some mathematics, and along with that there will be some proof writing and abstract formulations. With these tools in hand we will be able to fully implement many of the modern cryptosystems we study, and start sending eachother confidential messages in a public forum!

Crucial Tidbits:

Instructor: Gabriel Dorfsman-Hopkins
Homework Grader: TBA
Email: gabrieldh[_at_]berkeley.edu
Class Hours:T-Th 5:00-6:30 in Dwinelle 109.
Instructor Office Hours: Mon 5-6:30 and Wed 9:30-11 in Evans 895, also available via Zoom.
Textbook:Introduction to Mathematical Cryptography, 2014 edition by Hoffstein, Pipher, Silverman [HPS] Digital copies available through the UC Berkeley Library
Computation Resources: You will each have folders on CoCalc to do computation and homework.
Discord: We have a discord server for discussion and for sending secret messages. Email me to get an invite.
Project 1: Due Tuesday 10/12
Project 2: Due Tuesday 11/23
Final Exam: Takehome. Due Thursday 12/16.
Syllabus: Can be found here
Homework: Due (almost) every Thursday on Gradescope.
Schedule: Below

Online Lectures

Assignments

Projects and takehomes

Announcements

Syllabus

Mathematics is not a spectator sport. Watching me do a algebraic computation may not be as useful as working it out yourself, and this is even more true for writing lines of code. For this reason I will have exercises embedded in the lectures for you to work out in groups. These could be proofs, but they could also involve writing code, so bring a laptop to class!

Although we are currently cleared to be in person, we must be prepared for a sudden switch to remote learning. If this happens I will post 2 recorded lectures a week, corresponding to our scheduled Tuesday-Thursday schedule, and hold office hours during those times. The first two lectures will be recorded. For this reason also all exams will be project based takehomes rather than in person exams.

I will have CourseCapture enabled, so that lectures will be posted to Kaltura (with captions). This way, if you miss a lecture you can catch up. If you are feeling under the weather, please stay home! You won't fall too far behind. (Note: Since part of the class is collaborative sessions during classtime, plan on attending whenever possible. But don't force it, let's get through this pandemic first).

CoCalc

Each one of you will have a shared folder with me on an online collaborative coding platform called CoCalc, which in particular runs SageMath, an open source mathematical software we will be making heavy use of this semester, that runs using the Python 3 syntax. Click here to get to cocalc. It is here where you will do in the computational parts of your homework assignments. You may also sometimes want to have a Jupyter notebook open in CoCalc during the lectures to be able to follow along and work out the computational in class exercises. During the first lecture I will walk you through setting this up.

Discord

There is a server on discord for this course. There will be a place to ask questions about lectures and homework, and to have and continue discussions. I will be active on discord, and will try to answer questions, but I also encourage you to participate in answering questions and continuing discussions as well. There will also be video channels with screensharing enabled if folks would like to have quick meetings or to ask for help debugging code.

Discord will also have an important role in several of the projects for this course. As you implement public key cryptosystems, it will simulate a space where you can communicate securely over an insecure channel. To do this, you can publicly post your ciphertext in the appropriate channel, and if you've done everything correctly, only your intended recipient will be able to decrypt the message! This should be a fun place to put our ideas into practice.

Invites to our discord server expire in 7 days, so if you need a fresh one write me an email!

Homework

The main portion of your grade will be homework assignments. There will be homework collected almost every week on Tuesdays. They will be assigned the week before they are due, and will tend to come in 2 parts.

Feel free to discuss homework in groups, but know that each one of you should be writing up your own assignment (no copying and pasting code will be allowed! Again, the time maching feature in cocalc will make this obvious).

Implementation Projects

There will be 2 larger implementation projects. These will look a lot like the your homework assignments, but with a larger implementation section, consisting of cohesive implementations of an entire cryptosystem we've been studying (rather than just single algorithms). A portion of these assignments will be sending encrypted messages to eachother on Discord. You are allowed to use algorithms written in homework assignments as peices of thse projects. You may also use the course text, as well as your course notes. You may not use the internet or your peers.

Warning! As the projects are specific implementations of things we are studying in class, these due dates may shift depending on course pace. I will give you as much notice as possible if there is any change.

Final Exam

There will be 1 final exam due Thursday 12/16, which will be a takehome assignment. It will look your homework assignments, but with more of a focus on the written portion. You may use the course text as well as your course notes and previous graded homework assignments. You may not use the internet or your peers.

Grading Scheme

Raw grades will be computed as follos:

Homework: 50%
Project 1: 15%
Project 2: 15%
Final: 20%

After evaluating the performance of the class over the entire semester, I will adjust the median grade accordingly. It has previously shaken out in the following general grade ranges, but it may be slightly different this time around.

A-Range: >88%
B-Range: 78-88%
C-Range: 68-78%
D-Range: 58-68%

Makeups and Extensions

If you need an extension on homework or the projects, let me know as soon as possible. I try to post solutions ASAP after assignments are turned in, and once they are posted I will no longer accept late assignments. I do understand that we are in the midst of a global pandemic, and things are unpredictable, so communicate with me early and often if you need more flexibility. I will be more flexible with homework assignments than I will with the projects or final.

Disabled Students' Program (DSP)

The University of California is committed to providing access, equal opportunity and reasonable accommodation in its services, programs, activities, education and employment for individuals with disabilities. These resources include exam proctoring and accommodations in distraction free environments and with extra time as well as note taking. To request disability accommodation contact the DSP Office at least ten days in advance at (510) 642-0518(V), (510) 642-6376(TTY), (510) 643-9686(FAX), or dsp@berkeley.edu.

If you have a letter from the Disabled Students Program (DSP) indicating that you have a disability which requires academic accommodations, please present the letter to me as soon as possible so we can discuss the accommodations you need.

Tentative Schedule

Below is a very rough schedule of the course, organized weekly. It is very difficult to predict pace for a course during a pandemic. We may go faster than is laid out over the first few weeks...or slower. We may cover all these things and more, or we may skip some sections due to time. Since projects are specific implementations, their due dates may shift due to timing issues. I will do my very best to keep it up to date as we progress through the semester.

Week 0 (8/26): Week 1 (8/31,9/2): Week 2 (9/7,9/9) Week 3 (9/14,9/16): Week 4 (9/21,9/23): Week 5 (9/28,9/30): Week 6 (10/5,10/7): Week 7 (10/12,10/14): Week 8 (10/19,10/21): Week 9 (10/26,10/28): Week 10 (11/2,11/4): Week 11 (11/9): Week 12 (11/16,11/18): Week 13 (11/23): Week 14 (11/30,12/2): Week 15 (12/6-12/10): Week 16 (12/13-12/17):

**Bonus Time**: We have a few lectures unnacounted for. This may serve as padding depending on pacing, but if the time allows this may be filled with one of the following.