Math 458: Introduction to Mathematical Cryptography

Information for Dan Dugger's course, Spring 2019


Instructor: Daniel Dugger
Office: 215 Fenton
E-Mail: ddugger@math.uoregon.edu
Phone: (541)-346-8402

Office Hours: M 12-1, Tu 2-3, F 3-4.

Textbook: An Introduction to Mathematical Cryptography, second edition, by Hoffstein, Pipher, and Silverman.

Syllabus.

Grades:

There will be weekly homework, two midterms, and a comprehensive final exam.

30% Homework
20% Midterm 1
20% Midterm 2
30% Final.

Midterm 1 will be held Friday, April 26, in class.

Here is a review sheet for midterm 1. On the exam you are allowed to use a calculator and to have a 3 x 5 notecard.

Here are solutions to Midterm #1.

Midterm 2 will be held Friday, May 24, in class.

Here is a review sheet for midterm 2. On the exam you are allowed to use a calculator and to have a 3 x 5 notecard.

Here are solutions to Midterm #2.

The final will be held Monday, June 10, 2:45-4:45pm in 301 Deady.

Here is a final review sheet. On the exam you are allowed to use a calculator and to have a 3 x 5 notecard. I will hold office hours on Sunday, June 9, 2-4pm.

Reading assignments and Class Demos

Readings will typically be assigned before every class meeting.

Reading for Wednesday, April 3: Read up through Section 1.3.1 in the textbook. The output from the Sage demo we did in class is here.

Reading for Friday, April 5: If you have never seen the Binomial Theorem (or need a refresher), go read it about it at Wikipedia.

Class Demo from April 10.

Reading for Friday, April 12: Sections 2.1-2.3 (pages 61-69).

Reading for Monday, April 14: Sections 2.4-2.5 (this is mostly just a rehash of what we did on Friday).

Reading for Friday, April 19: Sections 2.6-2.8.

Reading for Wednesday, April 21: Section 2.9. Also, here is the example of the Pohlig-Hellmann algorithm that I didn't get a chance to do in class today.

Reading for Wednesday, May 1: Sections 3.1-3.2.

Reading for Friday, May 8: Here is the printout for the Sage work we did in Wednesday's lecture (skip over the initial commands until you find the break in the text). Also, here is a good article to read about primes and the Riemann Hypothesis. It is from 1971 and the typeface is horrible, but it is a very good article by a leading number theorist. If you ignore the incomprehensible stuff in the second column of page 1, it's not so bad until about page 12 or 13. Take a look!

Reading for Wednesday, May 29: You should have read Sections 6.1 and 6.2 by now; continue on with 6.3 and 6.4, which we have basically already talked about in class. Also, here are some extra notes on the classification of finite abelian groups.

Reading for Monday, June 3: Read these notes on quantum cryptography.

Reading for Friday, June 7: Here is the class demo on Fourier analysis that we talked through in class on Wednesday. Sorry about things being a bit out of order. If you want to play around with the Sage notebook yourself, here it is.

Homework assignments

Homework will be collected on Wednesdays, starting in Week 2. The assignments will be posted here.

Homework due Wednesday, April 10: Do the following problems from the textbook

Homework due Wednesday, April 17:

Some general instructions for this and future assignments. For problems involving Sage, I generally like to see your code and the output (not just the final answer copied onto a sheet of paper, which could have been copied from another person). The best way to do this is to print the output from your Sage session and hand it in with your homework. At the same time, I don't want you to have to print tons of pages because you tried lots of things and the output took up a lot of space (for example, problem #8 on this assignment). Feel free to hide big chunks of the output so they are not printed; as long as we can tell from what you *do* print that you are doing the work, we are happy.

For those of you who have done some Python coding before, much of this assignment will be very easy. For those of you who have not done Python coding, it will be more of a challenge (and one or two problems will be a big jump for you). Come talk to me if you get stuck and I will help get you up to speed.

Finally, if you want to download Sage and install it on your own computer you can find it at the main Sage site.

Homework due Wednesday, April 24: Do all the problems on this worksheet. For an example of the Pohlig-Hellmann algorithm, see the notes for our 4/22 class linked in the "Reading assignments" section above.

Homework due Wednesday, May 1: None. Rest up after the exam. BUT: Here is a Sage workbook called "dlp_collision3.ipynb" that has functions for finding primitive generators, performing Shanks's algorithm, finding large primes, and solving the DLP by brute force. Figure out how to get this file onto whatever version of Sage you are using and play with the functions a bit. Try to compare the time for solving DLP by brute force to the time with Shank's algorith, say for a 7-digit prime. In future homeworks you will need to use more and more Sage code that I provide, so take the time this week to figure out how to get this running on your system. Let me know if you need help.

Homework due Wednesday, May 8: Do all the problems on this worksheet. Some of the problems require Sage, and here is an accompanying notebook. If you some reason you can't get this loaded on your version of Sage, here is an html version which you could copy by hand.

Homework due Wednesday, May 15: Do all the problems on this worksheet. Most of the problems require Sage, and here is an accompanying notebook. If you some reason you can't get this loaded on your version of Sage, here is an html version which you could copy by hand.

Homework due Wednesday, May 22: Do all the problems on this worksheet. WARNING: I think this homework looks longer than it really is, but I still suggest not waiting until the last minute.

Homework due Wednesday, May 29: Do all the problems on this worksheet. Most of the problems require Sage, and here is an accompanying notebook. If you some reason you can't get this loaded on your version of Sage, here is an html version which you could copy by hand.

Homework due Wednesday, June 5: Do all the problems on this worksheet. Some of these require Sage functions, provided in this notebook. If you some reason you can't get this loaded on your version of Sage, here is an html version which you could copy by hand. Also, for more background on the ``quantum'' problems on this HW see the reading assignment for June 3 linked above.