CS463: Cryptography and Data Security
Specialized study of cryptography and its application in securing data systems, with an emphasis on applied cryptography. Major topics include history of cryptography (such as the Ceaser and Vigenère ciphers) and cryptanalysis (such as frequency analysis or man in the middle attack), and the big three classes of work: symmetric ciphers, asymmetric ciphers, and hashing algorithms. Secret-key symmetric encryption schemes covered include RC5 or AES, private and public key asymmetric cryptography systems include RSA and the signature algorithms DSA and ECDSA, cryptographic hashes include MD5 and SHA-256. We will see how these are used for message authentication, key distribution and management, digital currencies, and cryptographically securing network protocols. The discrete math prerequisite, Math 307, is needed because cryptographic systems typically operate on large integer values, and a robust mathematical background is required to follow the proofs of why the systems work. No background in group theory is required, but we will cover work in prime fields such as RSA encryption, and elliptic curve theory and practice. The programming prerequisite, CS 311, is needed because we will be examining these systems by writing real code for real machines. Any programming language is acceptable, although most examples will be in C++ or Python.
(3,0 Credit hours)