Writing secure code is a challenging, since one has to make sure that
attackers cannot interfere with the program execution in order to
steal confidential data or to perform unauthorized, security-critical
operations. This task is particularly hard for various reasons:
cryptography is often required to protect messages while
in transit over the network,
programming languages (e.g., JavaScript) often feature a sophisticated and not clearly
defined semantics, and development environments (e.g., mobile OS,
web platforms, and smart contracts) are extremely complex and offer a large attack
surface.
In this course, students will learn the semantic foundations of
computer security. In particular, they will study the state-of-the-art
formal methods for the analysis of security and privacy properties in
cryptographic protocols and programming languages.
For instance, students will study and have hands-on experience on F*,
a programming language for verification that has been recently used to
program the first verified TLS 1.3 implementation as well as the
cryptographic libraries embedded in Firefox, thereby showing the
practical impact of formal methods for security and privacy in today's
software and systems (see also https://project-everest.github.io).
This is a research-oriented course, so it is particularly (but not
exclusively) indicated to those students who are potentially
interested in doing research at the intersection between logic &
verification and security & privacy, or to learn the state-of-the-art
in security and privacy verification.
- Analysis of Cryptographic Protocols via SMT solving (Applied
Pi-Calculus and ProVerif)
- Language-based Security (Non-Interference, Hyperproperties, and Side Channels)
- Secure JavaScript Programming (Semantics and Security Type Systems for
JavaScript)
- Foundations of Security Static Analysis (Taint Analysis, Symbolic
Execution, Predicate Abstraction)
- Formal Security Analysis of Bytecode (Android, Ethereum Virtual Machine)
ECTS Breakdown:
30h lectures, tutorials, exam
40h self-study
80h projects and exercises
Additional Info:
The study committee will discuss on March 14th the approval of this lecture (with validity already in the current term) as a regular course in the following master programs:
- Logic and Computation
- Software Engineering & Internet Computing
- Technische Informatik
- Computational Logic
Students will be promtly notified about the decision.
Some background in verification and security is ideal, but motivated students without this background are also welcome to the course. However, we would expect some more spirited efforts from you.