MCS 425

Codes and Cryptography Spring 2015
MWF 2:00 - 2:50 location TBA
Instructor Bonnie Saunders

MCS 425 course syllabus

This course will cover a broad selection of cryptography and coding theory topics including classical cryptography, DES and RSA algorithms, discrete logarithms, hash functions and error correcting codes. Topics will be presented from a mathematical point of view. The number theory covered will include modular arithmetic, linear diophantine equations, Fermat and Euler theorems, modular exponentiation and logarithms. Depending on the interest of the students, we may also discuss finite fields (mainly for the AES algorithm) and/or elliptic curve cryptography.

The topics require some computation and programming. We will be using the Python Programming Language. No previous experience is necessary. There will be an opportunity to do more programming for the interested student.

Required materials:

Introduction to Cryptography with Coding Theory
by Wade Trappe and Lawrence C. Washington
Pearson; (July 25, 2005)
ISBN-10: 0131862391 | ISBN-13: 978-0131862395
website for computer examples and errata

Introduction to Python Programming:

The Python Tutorial from the official Python webpages.
Think Python by Allen Downey
How to think like a computer scientist
Python and Coding Theory by David Joyner
Course Notes, Spring 2009-2010
Hacking Secret Ciphers with Python by Al Sweigart
A beginner's guide to cryptography and computer programming with Python
An Intro to Crypto Programming using Python by Jeffrey C. Dege
Computer-assisted cryptanalysis of classical ciphers using Python. (with the Monome-Dinome cipher)

Google for links to the following sources:

RSA Laboratories
NIST - National Institute of Standards and Technology
NSA - National Security Agency
Handbook of Applied Cryptology by Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone
Cipher - IEEE Electronic Newsletter of the Technical Commitee on Security & Privacy

Some pdf files of interest:

The RSA patent
Prime in P, M.Agrawal, N.Kayal, and N.Saxena (2004)
A Mathematical Theory of Communication, C. E. Shannon (1948)
The Miller-Rabin Randomized Primality Test, lecture notes, B. Kleinberg (2010)
A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications , Special Publication 800-22 from NIST (2010)

Other algorithms of interest:

Sieve of Atkins is used for finding prime numbers. Code for this sieve appears in this Wikipedia article:
The Tonelli-Shanks Algorithm is used to find square roots mod p, for any odd prime. Pseudo-code for this algorithm appears in the here. Experience with Legendre symbol helps to understand the algorithm.

Links to online activities:

Understanding Common Factor Attacks: An RSA-Cracking Puzzle.
A webpage with games, messages to crack and other activities for learning cryptography. These are activities for middle grade students but you might find them fun.

--Last updated December 2014 by Bonnie Saunders