This course explains the inner workings of cryptographic primitives and how to correctly use them. It teaches how to reason about the security of cryptographic constructions and how to apply this knowledge to real-world applications. The course begins with a detailed discussion of how two parties who have a shared secret key can communicate securely when a powerful adversary eavesdrops and tampers with traffic. It then examines many deployed protocols and analyzes mistakes in existing systems. Later parts of the course cover the relevant number theory, discuss public-key encryption and basic key-exchange, and expose students to many exciting open problems in the field.
This is a 6 weeks course. Each week, a set of videos with embedded in-video questions, a problem set and an optional programming assignment are released. Programming assignments introduce students to cryptanalysis, exploiting weaknesses in poorly designed ciphers and breaking ciphers.
This is a fun and engaging course, meant as a first introduction to cryptography and at the same time, exposes students to mathematics and concepts behind cryptographic primitives.