CO409 Cryptography Engineering

taught by Michael Huth

This course relies in part on the textbook "An Introduction to Cryptography" (3rd edition) by Nigel Smart, which you can find as PDF on CATE.

We will use the textbook to get a solid appreciation of the basics of cryptographic primitives: mathematical background, information theory and probability, symmetric key encryption, public key encryption, hash functions, MACs, and digital signatures.

We will then build on that learning to cover in some detail important concepts of modern cryptography -- such as security definitions and formal proofs of security and the insecurity of certain usage of cryptographic primitives.

Then we further build on that knowledge and acquired skills to study advanced protocols such as commitment schemes, oblivious transfer, and secure multi-party computation; we will demonstrate at least one practical application of such advanced protocols, for example we may present an electronic voting scheme.

This year we also plan to discuss how cryptography is used in Bitcoin to realize a trusted public ledger of transactions. Recommended reading for that is given on the course's internal Piazza page.

If you want to read up on that material already, I suggest to read Chapters 1 and 3 and, if you like, Chapters 5, 8-11, and 14.

Note that I will not cover elliptic curve cryptography (which comes up in various chapters for good reason) but only mention its benefits, due to a lack of time.

I plan to interleave lectures and tutorials and to ask occasional Mentimeter questions, so please have an internet capable device in the class room for answering Mentimeter questions. Lectures, tutorials, and questions will be recorded on Panopto. I will deliver lectures and exercises by writing with a SMART Ink pen on an empty PDF, which you can access on CATE, in addition to Panopto video feeds.