University of Chicago, Autumn 2018
M W F 11:30am-12:20pm, Rosenwald Hall 015
Cryptography is the use of algorithms to protect information from adversaries. Though its origins are ancient, cryptography now underlies everyday technologies including the Internet, wifi, cell phones, payment systems, and more. This course is an introduction to the design and analysis of cryptography, including how "security" is defined, how practical cryptographic algorithms work, and how to exploit flaws in cryptography. The course will cover algorithms for symmetric-key and public-key encryption, authentication, digital signatures, hash functions, and other primitives. Weekly problem sets will include both theoretical problems and programming tasks. No experience in security is required.