## Math 175

Mathematics of Cryptography: An Introduction

Classroom: 4106 Exploratory Hall, Mondays and Fridays 9-10:15am

Computer lab: 4107 Exploratory Hall, Wednesdays 9-10:15am

Office Hours: 4113 Exploratory Hal, Mondays and Wednesdays 4-5pm

Professor: Anton Lukyanenko

Email: alukyane@gmu.edu

## Course Description

Every day, 143,000 terabytes of data are transferred across the internet, including financial transactions, medical records, and sensitive client data.

Half of this traffic is secured through encryption, relying on mathematical algorithms such as the RSA to encode the data in a way that only the recipient can decode.

In this class, we will see how cryptography works first-hand. We will start with classical ciphers (Atbash and Caesar ciphers) and develop our mathematical techniques and programming abilities until we are able to implement RSA from scratch.

Topics covered in the course lead into the following majors: mathematics, computer science, electrical engineering, and cyber security engineering.

For Fall 2019, the course will satisfy the Math125 (Discrete Mathematics) requirement for the mathematics major. No guarantee is made for other majors.

## Registering

The course is intended for freshmen and sophomores interested in mathematics: all students should have recieved a B or better in a calculus course (or equivalent score on the AP exam), but should not have completed any formal proof classes (Math290 or above).

No additional background in mathematics or programming is expected, but students should be eager to develop their own mathematical theory and learn to code.

In the past, the class has had a mix of majors: mathematics, computer science, cyber security, business, and opera, to name a few. If you like math, come join us!

To register for the course, Christine Amaya (camaya@gmu.edu) or me an email expressing interest, and we will issue an override.

## Course Format

The course structure is set up to encourage maximal exploration of mathematics. In particular, the class size is limited to 20 people, there will be no lectures, and students will be encouraged to develop the course content as the semester goes along, presenting their ideas to each other during class and writing up their results as a "course textbook" instead of taking tests. In the computer lab, we will take the mathematical ideas and turn them into interactive code, breaking and creating encryption codes along the way.

## List of Worksheets

The course is worksheet-based, with each worksheet taking 1-4 class sessions to complete. The worksheets develop the background theory for cryptography as follows (these will be adjusted during the semester to conform more closely to Math125, including the introduction of a module on networking):

- Codes
- Numbers
- Addition and Multiplication
- Modular addition
- Shift ciphers
- Remainders
- Modular multiplication
- Multiplicative inverses
- Affine ciphers
- The Euclidean algorithm
- Extended Euclidean algorithm
- RSA encryption
- Prime numbers
- Fermat's and Euler's Little Theorems, RSA works!

## List of Labs

The worksheets above are supplemented by lab excercises, with each one taking 1-2 class sessions to complete. In labs, students study ciphers, implement some of the number theory developed in the worksheets, and work their way up to implementing the RSA algorithm (subject to change):

- Cracking codes
- Semi-Automatic Decoding
- Adding and Multiplying
- Frequency analysis
- Kid Krypto
- MyGCD and PositivePowerMod
- PowerMod and RSA