This lecture introduces some of the basic principles of cryptography and
explores **symmetric ciphers**, our primary tool for encrypting data.
It considers the requirements we have for cipher keys and examines the
feasibility of brute-force methods for finding keys. It also considers
the importance of selecting an appropriate **cipher mode** when encrypting
data.

A large part of the lecture is concerned with **AES**, the Advanced Encryption
Standard. A broad overview of how AES is works is given, then the lecture
concludes with an examination of how AES is integrated with message
authentication in **AEAD**: Authenticated Encryption with Associated Data.

- Lecture videos
- Slides (PDF)
- Code examples
- Exercises:
- Other resources:
- Cryptanalysis with COPACOBANA (PDF): paper on brute-forcing keys with FPGAs
- Sweet32: research into birthday attacks on 64-bit block ciphers