# CS409: Cryptography

## Course Syllabus for "CS409: Cryptography"

Cryptography is essentially the science of writing in secret code.  In data and telecommunications, cryptography has specific security requirements, such as authentication, privacy or confidentiality, integrity, and non-repudiation.  To meet these security requirements, we employ secret key (or symmetric) cryptography, public-key (or asymmetric) cryptography, and hash functions. In the first part of the course, we will review a number of different ciphers that were used before World War II.  These ciphers would be easily broken nowadays, since cryptography has advanced quickly over the past couple of decades with the advent of modern computers.  We will cover block cipher algorithms and describe the advanced encryption standard for a symmetric-key encryption adopted by the U.S. government.  We will also learn about the important MD5 and SHA-1 hash functions as well as the message authentication code. This course will focus on public key cryptography, which is best exemplified by the RSA algorithm (named after the algorithm inventors Rivest, Shamir, and Adleman).  The RSA algorithm is considered particularly strong due to the fact that it relies on prime factorization, a computationally difficult process. We will take a careful look at this algorithm in this course.  We will also learn about elliptic curves, another important mathematical function in cryptography, as well as the Diffie-Hellman key exchange and the elliptic curve discrete logarithm problem. In the final part of the course, we will cover key exchange methods, study signature schemes, and provide an overview and discussion of public key infrastructure. Note: It is strongly recommended that you complete Abstract Algebra I (MA231) before taking this course.

### Learning Outcomes

Upon successful completion of this course, students will be able to:

• Explain how symmetric and asymmetric key ciphers work.
• List and define cryptography’s goals.
• List and define the most common classical ciphers.
• Explain the workings of mechanical ciphers Enigma and Lorenz.
• Describe the principles of substitution-permutation networks.
• Describe the algorithms for data encryption and the advanced encryption standard.
• Describe and use the MD5 and SHA-1 hash functions.
• Explain the idea behind public key cryptography.
• Use the RSA cryptography system by applying it to practical problems.
• Test whether the large integer is prime with the mathematical tools presented in this course.
• Define the elliptic curve and use it in cryptography.
• Explain the Diffie-Hellman key exchange.
• Describe the most common signature and autokey identity schemes.
• Describe the conceptual workings of public key infrastructure.

### Course Requirements

In order to take this course you must: