CS402 Cryptography (2017-18)

Lecturer: Graham Ellis

Module Description:

This is an introduction to cryptography suitable for students who have taken at least one module in linear algebra and who are willing to play with a computer. The module aims to cover enough of the textbook Cryptography, An Introduction (Third Edition) by Nigel Smart to provide students with the mathematical basis, and hopefully the motivation, to continue studying the book on their own. Material from the textbook is supplemented by Python programming problems, though no previous experience of programming is required, as a couple of lectures are devoted to the relevant elementary Python programming techniques.

In preparation for the module students should:
        # File: Hello.py
        print "Hello World!"

        and that you know how to run this file in Python. See here for details on how to do this.

Module coordinates:

Lectures take place
There are no tutorials scheduled since some lectures will take the form of tutorials.

Module Assessment:

There will be an end of semester 2-hour exam worth 70%, and there will be three homeworks each worth 10%.

Homeworks:

The online homeworks are available here.

Some Python material:

Some Python code relevant to this module can be found here.

Lectures:

My lecturing technique will be very old-fashioned: I'll write out everything on acetate projector sheets, and after the lecture I'll place a photocopy of the sheets below.

Lecture
Lecture summary
1
Introduced the Ceaser Cipher used by Julius Caser, the Enigma cipher used by the Germans in World War II, and the secure key two factor authentication used by HSBC online banking. Explained the general model for cryptosystems and Kerckhoff's Principle: "the enemy knows everything about the system, except for the choice of enciphering/deciphering key"
2
Explained that a cryptosystem consists of five components: 1) an alphabet, 2) an enciphering function, 3) a deciphering function, 4) an enciphering key, 5) a deciphering key. By Kerckhoff's Principle we assume that the adversary knows everything about (1), (2) and (3). In symmetric cryptosystems a knowledge of the enciphering key is, by definition, essentially equivalent to a knowledge of the deciphering key and so in such systems we assume that (4) and (5) are known only to the intended users. In public key cryptography a knowledge of the enciphering key does not yield a knowledge of the deciphering key; in such systems (4) is public knowledge and only (5) is kep secret. Talked more about the Caeser Cipher, HSBC secure key and Enigma Cipher. Introduced the affine cipher. Explained how to use the affine cipher in the Python file cs402.py .
3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

21

23

24