# COMPGA18 - Cryptanalysis

This database contains the 2017-18 versions of syllabuses. Syllabuses from the 2016-17 session are available here.

Note: Whilst every effort is made to keep the syllabus and assessment records correct, the precise details must be checked with the lecturer(s).

Code COMPGA18 (Also taught as COMPM068) MSc Introduction to Cryptography COMPGA03 2 Nicolas Courtois (70%), Jonathan Bootle (15%) and Mary Maller (15%). Study of major topics in cryptanalysis. Showing a variety of ways to break, fix/repair and to measure/evaluate the security of cryptographic primitives. Understanding the maths, the security design principles, the internal structure and important properties of major cryptosystems. Study of major computational hard problems in cryptography (symmetric and public key). Step by step analysis of mathematical/algebraic/statistical attacks, methods and algorithms in cryptanalysis. Knowledge and understanding of how current cryptographic security technologies are built with individual components and their interaction, how they are (sometimes) defeated and how they can be designed or enhanced to be more robust. Understanding security goals, attacks and defences and other requirements in cryptographic systems.Understanding different types of attacks (e.g. key recovery vs. decryption). Learning how to evaluate the practical feasibility of attacks in terms of time, memory, pre-computation, data and the protocol / context in which they can be executed. Understanding the role of keyed operations, non-linearity, randomness, one-wayness, diffusion, side-channel vulnerabilities, permutations, security reductions, etc in the design of cryptographic protections. Discovering with software of key properties which are relevant to their security. Learning how to use standard crypto libraries, computer algebra software and software cryptanalysis tools. Learning how cryptosystems fail (theory/practice).

# Content

Historical cryptanalysis. LFSR-based stream ciphers. Modern block ciphers(DES/AES/other). Differential cryptanalysis, linear cryptanalysis, algebraic cryptanalysis in block and stream ciphers. Self-similarity attacks. Groups, finite fields. Number theory. Attacks on public key cryptosystems. RSA, factoring, discrete logarithms, elliptic curves, lattice attacks. Cryptographic explorations with software. Protocol/mode/initialization attacks. Side channel attacks.

# Method of Instruction

Tutor-led class sessions, problem-solving, student projects with programming, participation in code-breaking competitions, private study. Concepts will be illustrated by practical computations with software and computer explorations.

Students will execute individual small projects in which they will focus on study/analysis/discovery/implementation of particular cryptanalytic attacks.

# Assessment

There is NO written examination. The module has the following assessments:

• Coursework 1 (50%): Individual Exploratory Programming Project
• Coursework 2 (50%): Participation in a Code Breaking Competition (Jan-May 2017)

During our two courseworks students will work in small groups and organize/share their work in a Moodle forum. We will discover study and exploit vulnerabilities, plan and execute hacking/cryptanalysis tasks, do relevant literature search, reverse engineer and analyze security protocols their components and their source code, ask questions and find answers through mathematical proofs and software explorations, evaluate the complexity of attacks, learn how to build/develop or use computer algebra software and other tools for cryptanalysis, plan and execute series of computer simulations, generate datasets for cryptanalysis, learn from extrapolate and visualize the datasets, apply machine learning techniques, make ethical choices.

To pass this module, students must:

• Complete both the Individual Exploratory Programming Project; and Participation in a Code Breaking Competition; and
• Obtain a pass mark of 50% for the module overall

# Resources

Reading list available via the UCL Library catalogue.