This course examines modern cryptography from a theoretical perspective, with an emphasis on “provable security.” The course looks particularly at cryptographic primitives that are the building blocks of various cryptographic applications. The course studies notions of security for a given cryptographic primitive, its various constructions and respective security analysis based on the security notion. The cryptographic primitives covered include pseudorandom functions, symmetric encryption (block ciphers), hash functions and random oracles, message authentication code, asymmetric encryption and digital signatures. Time permitting, the course covers how to build secure cryptographic protocols for authenticated key exchange, using the primitives studied. Also covered: various number-theoretic assumptions upon which cryptography is based.
Prerequisite: Graduate standing