In this module you will learn how cryptographic techniques can be used to design and implement secure communicating systems for a variety of different needs and applications, and to do so by considering all aspects from theory to more practical issues.
You will see how the various key concepts are used to support advanced secure communication systems or protocols, secret sharing schemes, commitment schemes, oblivious transfer, zero-knowledge proofs, and secure multi-party computation.
An important theme is the formal definition of security and you will also get to understand which cryptographic schemes have proven security and which ones rely on other assumptions such as those rooted in reductions to hard problems.
Current topical problems in cryptography will be used as exemplars and these may change from year to year.
Upon successful completion of this module you will be able to:
- determine appropriate public-key primitives and identity management methods to solve real-world problems in information security
- program real-world applications by making effective use of cryptographic primitives and protocols
- analyse the attack surface of a system in order to realize effective mitigation measures against threats
- critically analyse bespoke cryptographic methods and evaluate weaknesses
- exploit cryptography standards to create standards-complaint software and hardware systems
- Cryptographic primitives: pseudo-random number generators, block ciphers, pseudo-random functions, hash functions, message authentication codes, key derivation functions, public-key cryptography
- Symmetric key cryptography: perfect secrecy and the one-time pad, modes of operation for semantic security and authenticated encryption (e.g. encrypt-then-MAC, OCB, GCM), message integrity (e.g. CMAC, HMAC)
- Public key cryptography: trapdoor permutations (e.g. RSA), public key encryption (e.g. RSA, El Gamal), digital signatures, public-key infrastructures and certificates, hardness assumptions (e.g. integer factoring and Diffie-Hellmann), Elliptic Curve Cryptography
- Authenticated key exchange protocols (e.g. TLS)
- Cryptographic protocols: challenge-response authentication, zero-knowledge protocols, commitment schemes, oblivious transfer, secret sharing and applications, anonymity (may pick different protocols from that list in different instances of that module)
- Security definitions and attacks on cryptographic primitives: goals (e.g. indistinguishability, unforgability, collison-resistance, cryptographic games, etc.) and attacker capabilities (e.g. chosen message attacks for signatures, birthday attacks, side channel attacks, fault injection attacks.
- Advanced topics such as Secure Multi-Party Computations: secret sharing schemes and other techniques needed for defining such computations; presentation of one full scheme for secure two-party computations.
- Cryptographic standards and references implementations
(OPTIONAL) Quantum cryptography
Recommended: A basic understanding of algebra, modular arithmetic, and the ability to understand the very basic theory of finite cyclic groups.
The module uses an interactive mix of lectures and exercises, interleaving in relatively free form. Content will be delivered on a tablet with smart pen, so that mathematical things can be written down in real time, but also figures from textbooks and similar material can be annotated to support explanations in real-time. Mentimeter or equivalent tools will be used, particularly for reconnecting you with content from a past lesson.
We plan to deliver this course online with a mix of pre-recorded content and interactive sessions, including the ability for students to give feedback on course delivery. Q&A will mostly facilitated through the module's online forum, where we also plan to host links to all the recorded material.
The assessment will be in the form of (1) a take-home coursework and (2) an exam or functional online equivalent.